From 20e5eb64c3cfe7a30d82c48a2583c88781993b07 Mon Sep 17 00:00:00 2001 From: Bas Meeuwissen Date: Fri, 16 Oct 2026 13:48:14 +0200 Subject: [PATCH 01/26] #530: updated dependencies --- package-lock.json | 1060 ++++++++++++++++++++++----------------------- package.json | 44 +- 2 files changed, 552 insertions(+), 552 deletions(-) diff --git a/package-lock.json b/package-lock.json index 876597dd..804c2dfc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "comify", - "version": "0.2.3", + "version": "0.2.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "comify", - "version": "0.2.3", + "version": "0.2.5", "workspaces": [ "development/common", "development/insights", @@ -18,12 +18,12 @@ "testing/social" ], "dependencies": { - "@jitar-plugins/authentication": "^0.2.0", - "@jitar-plugins/database": "^0.2.0", - "@jitar-plugins/events": "^0.2.0", - "@jitar-plugins/files": "^0.2.0", - "@jitar-plugins/http": "^0.2.0", - "@jitar-plugins/notification": "^0.2.0", + "@jitar-plugins/authentication": "^0.2.1", + "@jitar-plugins/database": "^0.2.1", + "@jitar-plugins/events": "^0.2.1", + "@jitar-plugins/files": "^0.2.1", + "@jitar-plugins/http": "^0.2.1", + "@jitar-plugins/notification": "^0.2.1", "@maskingtech/designsystem": "^0.1.0", "@maskingtech/react-toolkit": "^0.0.5", "@theshelf/authentication": "^0.6.0", @@ -42,31 +42,31 @@ "@theshelf/validation": "^0.6.0", "@theshelf/validation-driver-zod": "^0.6.0", "dayjs": "^1.11.23", - "jitar": "^0.11.3", - "react": "^19.2.7", - "react-dom": "^19.2.7", - "react-router-dom": "^7.17.0" + "jitar": "^0.12.0", + "react": "^19.3.0", + "react-dom": "^19.3.0", + "react-router-dom": "^7.18.4" }, "devDependencies": { "@eslint/js": "^9.39.5", - "@jitar/plugin-vite": "^0.11.3", - "@types/node": "^24.10.4", - "@types/react": "^19.2.14", - "@types/react-dom": "^19.2.3", + "@jitar/plugin-vite": "^0.12.0", + "@types/node": "^24.19.1", + "@types/react": "^19.3.0", + "@types/react-dom": "^19.3.0", "@vitejs/plugin-react": "^5.1.4", - "@vitest/coverage-v8": "^5.0.0", - "cpx2": "^9.0.0", + "@vitest/coverage-v8": "^5.0.3", + "cpx2": "^9.0.3", "eslint-plugin-import": "^2.32.0", "eslint-plugin-react": "^7.37.5", - "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-hooks": "^7.1.1", "pm2": "^7.0.4", "rimraf": "^6.1.3", - "tsc-alias": "^1.8.16", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.0", - "vite": "^8.2.2", + "tsc-alias": "^1.9.7", + "typescript": "^6.0.3", + "typescript-eslint": "^8.71.0", + "vite": "^8.3.4", "vite-plugin-pwa": "^1.2.0", - "vitest": "^5.0.0" + "vitest": "^5.0.3" }, "engines": { "node": ">=24" @@ -106,14 +106,14 @@ } }, "node_modules/@aws-sdk/checksums": { - "version": "3.1001.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/checksums/-/checksums-3.1001.1.tgz", - "integrity": "sha512-x12Q17KYlJAd3nKf8LV5LV0vt8sh8/6YfQLGPtrGnQf/tW4jqxPGq5GPpuVitpQYM3eUR4XB7CbxZf751NMbLw==", + "version": "3.1001.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/checksums/-/checksums-3.1001.3.tgz", + "integrity": "sha512-CcAkVyEUKGngbEqJdVdSc53Iy52+XzVL5NIcTen2BlK8UByNC1DThVtf5VKSrNzyA+SqyTvs+3S+knVBbOUizQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.1", + "@aws-sdk/core": "^3.978.3", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.0", + "@smithy/core": "^3.35.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -122,18 +122,18 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.1146.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1146.0.tgz", - "integrity": "sha512-WY0YCBzxc4muFfY6UbGpA+oib0nGT/Px2aEPGYX7pp1la2OmDLChnK81mu8H7LdYvwGU1pLAsLIa/qgad0Wd7g==", + "version": "3.1151.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1151.0.tgz", + "integrity": "sha512-Kg20OP7F+rrWMFjPv/aCsNUt/qDbvh1bLJFQM8k/8fnxowR/DA67qL5KHzWWN5gwJCYplS3KQde6P/knOB+lxg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/checksums": "^3.1001.1", - "@aws-sdk/core": "^3.978.1", - "@aws-sdk/credential-provider-node": "^3.972.84", - "@aws-sdk/middleware-sdk-s3": "^3.972.77", - "@aws-sdk/signature-v4-multi-region": "^3.996.47", + "@aws-sdk/checksums": "^3.1001.3", + "@aws-sdk/core": "^3.978.3", + "@aws-sdk/credential-provider-node": "^3.972.86", + "@aws-sdk/middleware-sdk-s3": "^3.972.79", + "@aws-sdk/signature-v4-multi-region": "^3.996.48", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.0", + "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", @@ -144,16 +144,16 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.978.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.978.1.tgz", - "integrity": "sha512-LbY9aGsEiznDWmUc30Nwv3aIX/+dbwTx8KfS0yOC3NPYMO+O91e6jkT1azf34FwjOndq8/Q+RcVVZz5xnerwdg==", + "version": "3.978.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.978.3.tgz", + "integrity": "sha512-nslpzUCTI9b2IQMWSd6mSAXldBexPc8rr0d3dXUutXYFLFaTdsHa2GD7sJdsn3PhyjK0O5K8ypd6zi+RXXPVlg==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.974.6", "@aws-sdk/xml-builder": "^3.972.41", "@aws/lambda-invoke-store": "^0.3.0", - "@smithy/core": "^3.35.0", - "@smithy/signature-v4": "^5.7.3", + "@smithy/core": "^3.35.2", + "@smithy/signature-v4": "^5.7.4", "@smithy/types": "^4.19.0", "bowser": "^2.11.0", "tslib": "^2.6.2" @@ -163,14 +163,14 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.972.72", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.72.tgz", - "integrity": "sha512-xTKO/FWJPozTIXbozVnVGoNBhaGba8TBcx+KyUjRVeOlXE+dUc7GTR1cLvu0uTdIdmemzaFbqqCshXeZA1fZew==", + "version": "3.972.74", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.74.tgz", + "integrity": "sha512-rsRJcW2iFUhCgclyD6OSbMEaPl8Eu0qSeRZb2uuCK1ViZ66hl5wOe/p6Vr6MO3b+ydyKgFeqza2p6tZThvILlw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.1", + "@aws-sdk/core": "^3.978.3", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.0", + "@smithy/core": "^3.35.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -179,14 +179,14 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.972.74", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.74.tgz", - "integrity": "sha512-u91E/hT8f4d1xy0Jl7VG4nVKJ3lxbrZkoBTeSVoJdWBiSEUMwMS/9+e0H/aJVQV//Lt5wuzP+E69v4aRSsNTmw==", + "version": "3.972.76", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.76.tgz", + "integrity": "sha512-pnKdh0Br7OJPj+7qKjzgTfDTFW0RhEMKXNDR2jv9CAM4oHuG/4z3hRh8KtutLfpmItuRtDbKBmwWkDqHwwAWXw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.1", + "@aws-sdk/core": "^3.978.3", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.0", + "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", @@ -197,21 +197,21 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.973.17", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.973.17.tgz", - "integrity": "sha512-ged4KXdBkvIC81bLvNHHuQKdKak/VXhQTR1NWYTTqW0474nlmsxy9O/vlgTIohDDWH3xpBdtVMZRyjb+DnocDA==", + "version": "3.973.19", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.973.19.tgz", + "integrity": "sha512-kcjvAxqQEV8yuwkX58RelNn3ne65o7JgRWf3Z/gVvbi7Xuw1qSDLJlatrLD76+40cmRxmNkLxBoyp/vAQChQ5g==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.1", - "@aws-sdk/credential-provider-env": "^3.972.72", - "@aws-sdk/credential-provider-http": "^3.972.74", - "@aws-sdk/credential-provider-login": "^3.972.79", - "@aws-sdk/credential-provider-process": "^3.972.72", - "@aws-sdk/credential-provider-sso": "^3.973.16", - "@aws-sdk/credential-provider-web-identity": "^3.972.78", - "@aws-sdk/nested-clients": "^3.997.46", + "@aws-sdk/core": "^3.978.3", + "@aws-sdk/credential-provider-env": "^3.972.74", + "@aws-sdk/credential-provider-http": "^3.972.76", + "@aws-sdk/credential-provider-login": "^3.972.81", + "@aws-sdk/credential-provider-process": "^3.972.74", + "@aws-sdk/credential-provider-sso": "^3.973.18", + "@aws-sdk/credential-provider-web-identity": "^3.972.80", + "@aws-sdk/nested-clients": "^3.997.48", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.0", + "@smithy/core": "^3.35.2", "@smithy/credential-provider-imds": "^4.5.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" @@ -221,15 +221,15 @@ } }, "node_modules/@aws-sdk/credential-provider-login": { - "version": "3.972.79", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.79.tgz", - "integrity": "sha512-L+Z85anONJd8MaiuraO4wRxATCdEejBZ3K3eymzWI5JPXa9sOS9CkIm72PBKqXKX+Z9p9NGMX5AIMXm0LEflgw==", + "version": "3.972.81", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.81.tgz", + "integrity": "sha512-CeQHSbE2CnVdaHIJ/NayRaCecIER+Pm9faUPkmRATO54rCoMTEPSbVieGHzEwvm1dZM2HIs6qQZCznhayNTWJQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.1", - "@aws-sdk/nested-clients": "^3.997.46", + "@aws-sdk/core": "^3.978.3", + "@aws-sdk/nested-clients": "^3.997.48", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.0", + "@smithy/core": "^3.35.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -238,19 +238,19 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.972.84", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.84.tgz", - "integrity": "sha512-oHt854odINVwzwsh+c5x69j0ajm4DbqqqVJ+O1ECsCIZeMDAbzFpXItaqP7UZstJj/ATdTk/KFSH0LaNAgV+kA==", + "version": "3.972.86", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.86.tgz", + "integrity": "sha512-WNttSyr6e8innPtBSty//CdnqJcgZN6eAbtw3v/CR2IObz6MYZEo8eusdtuCHJ2ujwFqC2bSPHVyhXGHx8HruQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "^3.972.72", - "@aws-sdk/credential-provider-http": "^3.972.74", - "@aws-sdk/credential-provider-ini": "^3.973.17", - "@aws-sdk/credential-provider-process": "^3.972.72", - "@aws-sdk/credential-provider-sso": "^3.973.16", - "@aws-sdk/credential-provider-web-identity": "^3.972.78", + "@aws-sdk/credential-provider-env": "^3.972.74", + "@aws-sdk/credential-provider-http": "^3.972.76", + "@aws-sdk/credential-provider-ini": "^3.973.19", + "@aws-sdk/credential-provider-process": "^3.972.74", + "@aws-sdk/credential-provider-sso": "^3.973.18", + "@aws-sdk/credential-provider-web-identity": "^3.972.80", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.0", + "@smithy/core": "^3.35.2", "@smithy/credential-provider-imds": "^4.5.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" @@ -260,14 +260,14 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.972.72", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.72.tgz", - "integrity": "sha512-rLIp2xbMjX/k9/od7APpqq1ZgXXnV0pOL1Th3ZsL8Wu0TRtBsDTVS8iPqcfRFcHakFxPvR04OSTv2ka2qOb/2A==", + "version": "3.972.74", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.74.tgz", + "integrity": "sha512-Yj6kZFJQdbR+PygTkqdVLPHHpdDpOS9GCYVcDCuweCRRig9LF24ELQBMfyUw1vspvrZJUfnOGVyMjhaL094ahw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.1", + "@aws-sdk/core": "^3.978.3", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.0", + "@smithy/core": "^3.35.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -276,16 +276,16 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.973.16", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.973.16.tgz", - "integrity": "sha512-IGihaJfFZYacJJr/odqILCoK7W/mvrZ7cuK7ECn3sAu4vLC6u0V8bS7mCGbdugJ8Aum2tnvqmx0F2MRFp2rn9g==", + "version": "3.973.18", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.973.18.tgz", + "integrity": "sha512-FnpPhdY4qUGtX/8X6eKxh+uD+9Y19i9FYibgk4SBe0M935s9vocHkHzaxaMNk+YkHmvzgdu8cHA5SCoeU+kkew==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.1", - "@aws-sdk/nested-clients": "^3.997.46", - "@aws-sdk/token-providers": "3.1138.0", + "@aws-sdk/core": "^3.978.3", + "@aws-sdk/nested-clients": "^3.997.48", + "@aws-sdk/token-providers": "3.1150.0", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.0", + "@smithy/core": "^3.35.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -294,15 +294,15 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.972.78", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.78.tgz", - "integrity": "sha512-/y9WvNtlcPBGLR0qc1a+9J/xtYZfVczvLUOuXaVWylzttH7ewsxwHtjmiJSolNrVSDorIxHGHMU61CbonRkmwA==", + "version": "3.972.80", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.80.tgz", + "integrity": "sha512-TJF25Ndwy2HxcVj6oxMgp8qVlJAawlExHYBXqhuC6Zt2m+A7WpdkjBD6QglNbiArlteYljZHEY3R7KKmno6ISA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.1", - "@aws-sdk/nested-clients": "^3.997.46", + "@aws-sdk/core": "^3.978.3", + "@aws-sdk/nested-clients": "^3.997.48", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.0", + "@smithy/core": "^3.35.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -311,15 +311,15 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.972.77", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.77.tgz", - "integrity": "sha512-E7W2UOeUoc+lg3uIfR/dM7ZwusHwhBQrKMnlkRv4EXRR+C0YtV1pg25xC7GdZIhXH+NAMgZPCbE7o5to2cjFiw==", + "version": "3.972.79", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.79.tgz", + "integrity": "sha512-UfgAQosf4IEXldMsyntVuHsJnaQzlH6pmkOr6dQy7CaOYSlGz3mWiW4Di7XfQ/kPJP6xE7oMshz1V0E8RqGdRg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.1", - "@aws-sdk/signature-v4-multi-region": "^3.996.47", + "@aws-sdk/core": "^3.978.3", + "@aws-sdk/signature-v4-multi-region": "^3.996.48", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.0", + "@smithy/core": "^3.35.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -328,15 +328,15 @@ } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.997.46", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.46.tgz", - "integrity": "sha512-oRxtBcka/JGHGs9l9p9IVajGoTP8vTPmoAzdHGy4Qcy9P5vPnDf6nhIeM/COQNY9k/OahImTRaLkHftoXvfcmQ==", + "version": "3.997.48", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.48.tgz", + "integrity": "sha512-B01jdXJtAW/XOiUzGdI2mz67WyEHbGEc9X6Euzw3bjLAa+txTqdZDER4X2FsIEcXzV2ABqudVZ5thali8tCCzQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.1", - "@aws-sdk/signature-v4-multi-region": "^3.996.47", + "@aws-sdk/core": "^3.978.3", + "@aws-sdk/signature-v4-multi-region": "^3.996.48", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.0", + "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", @@ -347,13 +347,13 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.996.47", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.47.tgz", - "integrity": "sha512-Zk08macMvQTHzQJCLJVkOlviVoqwYMrpXv4lmLN7b7sAbiMoOK7Go0NYdR5UeF+MW8LIbRmwrNy9u/5VvX1U5g==", + "version": "3.996.48", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.48.tgz", + "integrity": "sha512-cFDXfEbXaGwbnpvR/DyqfxfjxpjXVRVthQLgkwvcfDS5u3+8G9WSj1X1Ag/pTRg/QOeOno1Tq3ycEdrKsCUcOA==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.974.6", - "@smithy/signature-v4": "^5.7.3", + "@smithy/signature-v4": "^5.7.4", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -362,15 +362,15 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.1138.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1138.0.tgz", - "integrity": "sha512-GpyAr0DD63YOEmYFM6Df+gJuIgC92MMTiBK4FTKfxii5MJ9ge20epR7LyroulscYlG89J+ZB2ivFDPjvfQhzdw==", + "version": "3.1150.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1150.0.tgz", + "integrity": "sha512-wDU36ofhabZYu+d2KSriyDbwzxNoaOp+4dG0p3qkabk7HeALR5nIWyQbjoyJZLn3iqWkv/xNdyUfbfevDVDzzg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.1", - "@aws-sdk/nested-clients": "^3.997.46", + "@aws-sdk/core": "^3.978.3", + "@aws-sdk/nested-clients": "^3.997.48", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.0", + "@smithy/core": "^3.35.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -539,14 +539,14 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.29.7.tgz", - "integrity": "sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==", + "version": "7.29.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.29.10.tgz", + "integrity": "sha512-/YY9soQuWa8TURtHXHT+GbklpbAA+dZErxFGHIr6qgDg96xuGWrTAs1+MfjgVJPF0YLQsOVsOYs8lhgsPbOinQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.29.7", - "regexpu-core": "^6.3.1", + "regexpu-core": "^6.5.3", "semver": "^6.3.1" }, "engines": { @@ -574,14 +574,14 @@ } }, "node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve": { - "version": "1.22.12", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", - "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", + "version": "1.22.13", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.13.tgz", + "integrity": "sha512-Dj/cW9zBV2aRj6XzCxuGIs3ESZKv02jixne3q6jFZYZ3/Tg09gHHviSMDL4kObh9pqSahdRHEnDoaP2gn8YLhA==", "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "is-core-module": "^2.16.1", + "is-core-module": "^2.17.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -770,14 +770,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", - "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "version": "7.29.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.10.tgz", + "integrity": "sha512-EMCx3AGZ3WfAl6ht7AyQoPm2Lh+BGYEMdc4Q6Hf7uSCDOZFuLq44qNwL+iaim8VlyYhRAo4X43+weadK8ZB4Yg==", "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.29.7", - "@babel/types": "^7.29.7" + "@babel/types": "^7.29.8" }, "engines": { "node": ">=6.9.0" @@ -1952,9 +1952,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", - "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", + "version": "7.29.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.10.tgz", + "integrity": "sha512-NpugTzbKgGrNe45Ui32cN8vCFFMxVtP/9rtfwv0nP5FRDAjvYBxJcLVpYA9mr1jxP6cnIT7x9LUzuDTbWYYNRA==", "dev": true, "license": "MIT", "engines": { @@ -1977,16 +1977,16 @@ } }, "node_modules/@babel/traverse": { - "version": "7.29.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz", - "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==", + "version": "7.29.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.10.tgz", + "integrity": "sha512-B3lYAs2nkKskbgQ1nfy8Ma9ao9Q1rntTAQHrzzyDuj+TSO+X3le6PfWwqDvodsb+OumE10eMFfuMCTQSQ5iuIQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.8", "@babel/helper-globals": "^7.29.7", - "@babel/parser": "^7.29.8", + "@babel/parser": "^7.29.9", "@babel/template": "^7.29.7", "@babel/types": "^7.29.8", "debug": "^4.3.1" @@ -2388,66 +2388,66 @@ } }, "node_modules/@jitar-plugins/authentication": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@jitar-plugins/authentication/-/authentication-0.2.0.tgz", - "integrity": "sha512-VzTjkSl/8SgPQ/KwHXTjIDvXYqMYOUqrXMqMk/F4Mxt/58GeR94YdTKMfrvgiwaIguMuvsJ6RtHKtn44ja6u0g==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@jitar-plugins/authentication/-/authentication-0.2.1.tgz", + "integrity": "sha512-crc4bP4eeG7hNSI5yEoJGIByeidF9u5xON5Qas0VdxWBD8CCKYiLwMOF4StlWN2AgfDx7NSPJsvdSEOasVbrrg==", "peerDependencies": { "@theshelf/authentication": "^0.6.0", - "jitar": "^0.11.0" + "jitar": "^0.11.0 || ^0.12.0" } }, "node_modules/@jitar-plugins/database": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@jitar-plugins/database/-/database-0.2.0.tgz", - "integrity": "sha512-mSeXtVXqJDoyeu4H7COAROiQ4mXXIWNfyfQMFjD/V6njUfXjgMx4Xrh+FGk8Ed88AqWQjIxQhMRQ2l1Kzt3VKw==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@jitar-plugins/database/-/database-0.2.1.tgz", + "integrity": "sha512-t3+7/LFE+OtPPi+uytuBYjbrGAjSfichcoQy3c7ekpbZCLODNGWiUic4eDvNzkFQbabUJ6p4oMAWM/kSEBNnhg==", "peerDependencies": { "@theshelf/database": "^0.6.0", - "jitar": "^0.11.0" + "jitar": "^0.11.0 || ^0.12.0" } }, "node_modules/@jitar-plugins/events": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@jitar-plugins/events/-/events-0.2.0.tgz", - "integrity": "sha512-LQmfNyQO/yIRnhedYOj1wsteiwK++lSwCYBbLedhnNkzDzoY3QxCqaJb1RV0I54++M7GhlPmnB2AKzwXvKrVoA==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@jitar-plugins/events/-/events-0.2.1.tgz", + "integrity": "sha512-7uEawCyAlb2S19bANyN5OISzuXAAlZ+IRxMbloCE4nqIOTDrvjrz54Nxic7+Qw5pRTsjWjpJWKREsFEs7w3pqQ==", "peerDependencies": { "@theshelf/events": "^0.6.0", - "jitar": "^0.11.0" + "jitar": "^0.11.0 || ^0.12.0" } }, "node_modules/@jitar-plugins/files": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@jitar-plugins/files/-/files-0.2.0.tgz", - "integrity": "sha512-d3UX6cNdmlmHdmfESmCEBXwwahLm3JECzOTzryiRZ4dc966yiVm85Bivx0vZ3AmayJ/4v/yCYyNNY4Rqb/W7WA==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@jitar-plugins/files/-/files-0.2.1.tgz", + "integrity": "sha512-3oi1ZieXUHjtxj5D87JDv9RMnk/yQuBCMVvorCkJdULOy1rtY8tmzhFfoDBwTvoT0vcdwNx8sEKFTM84Sx02YA==", "peerDependencies": { "@theshelf/files": "^0.6.0", - "jitar": "^0.11.0" + "jitar": "^0.11.0 || ^0.12.0" } }, "node_modules/@jitar-plugins/http": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@jitar-plugins/http/-/http-0.2.0.tgz", - "integrity": "sha512-wvIXhseBp/2I9rEON+uX9JMXsKFkYJBHMPVlbfxt6yuuLWgzgFjx8KeQHiryqSIwN0GWvWobqhPy8iwuKz5WPA==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@jitar-plugins/http/-/http-0.2.1.tgz", + "integrity": "sha512-uCQ+5k8PHJ8T/PyMvWosrbXfUEkTwU0Cs6jEHPn706g6SCOU1dXuY8jCGFJ723B4zBJoIV+2fSMQaaqEWNniPA==", "peerDependencies": { - "jitar": "^0.11.0" + "jitar": "^0.11.0 || ^0.12.0" } }, "node_modules/@jitar-plugins/notification": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@jitar-plugins/notification/-/notification-0.2.0.tgz", - "integrity": "sha512-7qoDd1PLY9GKcC5tAuMx8Fuh6eUSMxraMtVSg/U+xF/aOM/KtEQopn3smRlZVK1qzpwpPsj0crQSfV0K6iEExg==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@jitar-plugins/notification/-/notification-0.2.1.tgz", + "integrity": "sha512-HIXJ3hYc37RyZcPMqLrDMMKzoFXxf2003nuoYt7vzVRIdyJ7ykvDSpN0pnl6SyBC01b4bxnEODw95zhr4boUCQ==", "peerDependencies": { "@theshelf/notification": "^0.6.0", - "jitar": "^0.11.0" + "jitar": "^0.11.0 || ^0.12.0" } }, "node_modules/@jitar/plugin-vite": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/@jitar/plugin-vite/-/plugin-vite-0.11.3.tgz", - "integrity": "sha512-DUqPLrrGiKi8wjQxGWkvP0leMLUWFUtAJirzeemSVqWZTuo3wsiHTTAvDIHAwRHq11e/7D9quh2XBIhvhi+yaA==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@jitar/plugin-vite/-/plugin-vite-0.12.0.tgz", + "integrity": "sha512-h1XQGgOwOeBrmSZa1w7hdnE5OgXvBeA3e5PoOcBF8zrAsuROjuTGa+E02Vy//6j9p0dKfo4z0j6diTnKQJGIvw==", "dev": true, "license": "MIT", "peerDependencies": { - "jitar": "^0.11.0", + "jitar": "^0.12.0", "vite": ">=7" }, "peerDependenciesMeta": { @@ -2543,9 +2543,9 @@ } }, "node_modules/@mongodb-js/saslprep": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.5.5.tgz", - "integrity": "sha512-0PV4mvjGd2Q2/viDvXuoSNzTjQngHvtuWUry1vqvcK4Q/CTeO1zEKMf9set01DMocJnogl/pyNAdvyk+Pe0kQA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.6.0.tgz", + "integrity": "sha512-19jGXfpctLDJUELLUZGJ5BllcLT7rHdF+gTTaN2jzqu0bGkUhpdcYtgK2Vux+g3zuBAa0TM/W666QMIjYhYujw==", "license": "MIT", "dependencies": { "sparse-bitfield": "^3.0.3" @@ -2859,9 +2859,9 @@ } }, "node_modules/@oxc-project/types": { - "version": "0.152.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.152.0.tgz", - "integrity": "sha512-oM/5rLBm2tPkg0iBgkH/FOeR3PCDpY19GTgAZjMFM8h9WI9VW7cLgzp6nwtarYKmovavIQZ+Fe/RKX/8C8O/Rw==", + "version": "0.154.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.154.0.tgz", + "integrity": "sha512-KYOUGQFlLWR+s4QMV2Q9ko38TZm7EdO87Qm7rvZLqk/webse/cDjtyxKhg/47l0byCbs/k46LT8qc4PKjAikzA==", "dev": true, "license": "MIT", "funding": { @@ -2869,45 +2869,45 @@ } }, "node_modules/@platformatic/dynamic-buffer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@platformatic/dynamic-buffer/-/dynamic-buffer-0.3.1.tgz", - "integrity": "sha512-xQD5JSkQc4D15suOk7FezGDmh6Vb5e4phDoFZ/ASpa3Ft+3fOVwFOENmHtC1561zm/xHnKwI91NbMF8inpbk0Q==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@platformatic/dynamic-buffer/-/dynamic-buffer-0.4.0.tgz", + "integrity": "sha512-eCL++LyBjSsqalm4I67dl+gVqLSKd6gPYCieD72S5KqqAkmSAgAYNHt+lL+iVXssWPSfbuIJ5PEwpn5JVD73Xw==", "license": "Apache-2.0", "engines": { "node": ">= 22.19.0" } }, "node_modules/@platformatic/kafka": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/@platformatic/kafka/-/kafka-2.13.0.tgz", - "integrity": "sha512-60zeFX9vXPsnv6ikCyNNRucgTwvgirjrrkI4e9GFAY8TFHF/4j8C1pMZlHka0Uz7SClUPHm3qsgXqtXTxZFvng==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/@platformatic/kafka/-/kafka-2.14.0.tgz", + "integrity": "sha512-FvPnGuvxk3otCKQL515X1C2yMPAAjlmGEe9JQ2YiKCz0F90K+6zrWhExZ7DCBYIyPfo1O555hsI2D/R2MnmRUQ==", "license": "Apache-2.0", "dependencies": { - "@platformatic/dynamic-buffer": "^0.3.1", - "@platformatic/wasm-utils": "^0.2.1", - "ajv": "^8.17.1", + "@platformatic/dynamic-buffer": "^0.4.0", + "@platformatic/wasm-utils": "^0.3.0", + "ajv": "^8.20.0", "ajv-draft-04": "^1.0.0", "avsc": "^5.7.9", "debug": "^4.4.3", - "fastq": "^1.19.1", - "mnemonist": "^0.40.3", + "fastq": "^1.20.3", + "mnemonist": "^0.40.5", "scule": "^1.3.0" }, "engines": { "node": ">= 22.22.0 || >= 24.6.0" }, "optionalDependencies": { - "@node-rs/crc32": "^1.10.6", - "protobufjs": "^8.0.0" + "@node-rs/crc32": "^1.10.8", + "protobufjs": "^8.8.0" } }, "node_modules/@platformatic/wasm-utils": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@platformatic/wasm-utils/-/wasm-utils-0.2.1.tgz", - "integrity": "sha512-5rNl4h5n+hZG4LjiItQ7bVfHBqTypjldP46NXrOYW64cZr87ahngK1s9nEtCpByWg7WWjRLSxyCytgJK5gNdwQ==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@platformatic/wasm-utils/-/wasm-utils-0.3.0.tgz", + "integrity": "sha512-tK7M2HMtVQrHBuQ/TSaDIk3YCEV6+EUQcConDrIH1kbQ7ZQiCWGrp7Jn+vd0FxoAsq2O8ZXGhANxwNpkPR8Maw==", "license": "Apache-2.0", "dependencies": { - "@platformatic/dynamic-buffer": "^0.3.1" + "@platformatic/dynamic-buffer": "^0.4.0" }, "engines": { "node": ">= 22.19.0" @@ -2982,9 +2982,9 @@ } }, "node_modules/@rolldown/binding-android-arm-eabi": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.12.tgz", - "integrity": "sha512-dB/a1214qKfHMXCpgqR4OZT+jS4kTyEXbQGJPqzobt5EwH5rX080pxE37alt3RzvR1bf1Yz/yGqRfrYAxuPw0A==", + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.14.tgz", + "integrity": "sha512-aWR+XKH9+rW7m5fWq/5360J3mHycrx/o6xZM2DQFdJnTMdyP7/WzxPjhtLbVWdKo2y612/4U1bWqb3HQhiF7vg==", "cpu": [ "arm" ], @@ -2999,9 +2999,9 @@ } }, "node_modules/@rolldown/binding-android-arm64": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.12.tgz", - "integrity": "sha512-7KHFgQ5VJxIHcLlrwrc3Xbds7oTNQT7Pgi9gQCJKrd2VGab/UksIOYp6VD8MzCstGxOKMgNamPwUCfxPdP1OHg==", + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.14.tgz", + "integrity": "sha512-QiVxHofl6A8lQU7WAtOUY4QMVZXohxwz7WJJoeh8NBEUyKfIkMRKhYyq8az/1RypNiIXzNTtiS6KwHz0erxYRQ==", "cpu": [ "arm64" ], @@ -3016,9 +3016,9 @@ } }, "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.12.tgz", - "integrity": "sha512-3YIhqHD96nA5SaYNRBR16HnGv4oavZvXfD/ayHM+oYZ0WD/8lBAtf6zQua4kEyAvpqrluKXl0lnOBoiNby7x9w==", + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.14.tgz", + "integrity": "sha512-lTQOzHuBIooh3jIr5XINQkjPGEuGy+Dsy0meXDr6Sjty0b99kYgGh4uBC/8mJX1T0kC8d6S0aPP1Y+bHkh6aBw==", "cpu": [ "arm64" ], @@ -3033,9 +3033,9 @@ } }, "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.12.tgz", - "integrity": "sha512-UuuJ35MFw4gmFOrE9pEqIV+K3syIKveph+Qc1/ljHZVdoDW4pz/JHR/eMVom+TZGl/5OOvGJOWaOCVt3ZfqhxA==", + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.14.tgz", + "integrity": "sha512-hyMKEGatjmBYCs/Q4sbIcL/GqpFEqsX3wc+HYVQ/85A4rxc1o7rPm4DUI4GV4k/h0ITddwFSGpqQunI14GXjTA==", "cpu": [ "x64" ], @@ -3050,9 +3050,9 @@ } }, "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.12.tgz", - "integrity": "sha512-uMvssit0a4W+/7D8CbHUvG719mH3R2jwXAlh/XcPvuHTE0g++LymF88DCGNX0HM2rBOn0xrzgXktIB6fLSJBTQ==", + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.14.tgz", + "integrity": "sha512-u371GbXoVXrEgP20PwzoGNOdAOqAMhzo19JzzY+V4YmmnC+DTOoqdbMu+O+54emM59Mik/UdrtWgcuEDKWRPKA==", "cpu": [ "x64" ], @@ -3067,9 +3067,9 @@ } }, "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.12.tgz", - "integrity": "sha512-XcFu0R0xWnwzSf4IQgFH1rJIckPN1pLy2R+4r9IDB7Yfu/ys9cVqfa4pBrMHj7a3gl8mIR4nRNPg0e5IvEVs6g==", + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.14.tgz", + "integrity": "sha512-BqwKsdZQf6EqVWr8fv2MrDYzAvOZ7+NYFSJESRGs87fkseEhs0TU9TXgRJTkZoRRkxTizyEg1LKUXfU3/78uqg==", "cpu": [ "arm" ], @@ -3084,9 +3084,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.12.tgz", - "integrity": "sha512-260UrKgn8tz39ak+SMDOirKzr7V04M9dWPw5llW00SwBivCZoWcRBKV1d8cXnRkUmSZA3BdiUmBHWk7734Ulpw==", + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.14.tgz", + "integrity": "sha512-SD9kY8M009x/7s57Z1dgUVlP5+uYBgKQK0Tkr1WIWngrtUJmRCW1RJFMY7QDla2khXhmg2i5Io7MUjcmZNZ/KQ==", "cpu": [ "arm64" ], @@ -3104,9 +3104,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.12.tgz", - "integrity": "sha512-5YK1I9SqDkbPgc1IA8BgDl34suqUS2q0KWnBrirm0E51YjOs6eo6dV6jbQfNE/argHRSvd0QUGgtpIoYx+WWpw==", + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.14.tgz", + "integrity": "sha512-BJ2CL19M6uuWesMgnqJzgxoI+N+eV7b0A9O9vLV42y+gitC41fNa8KElau1tHVzuLWX5GzEuxMPhAO0tQXQMkg==", "cpu": [ "arm64" ], @@ -3124,9 +3124,9 @@ } }, "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.12.tgz", - "integrity": "sha512-Rkcrmp7eFRg74yL5fXEU91JEWbdEPLevWwGtXpmhbjlD1StScbWTmO94Bhly+Mo+ketKYkdmM1vNUKeWSlx8cQ==", + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.14.tgz", + "integrity": "sha512-4+Kl8daPV8NDHaD7mfCcc1pRM+Qg7ab8DyMm5FG5WoZgv4h2i3KFN1CybYBNbQqmuYm7ftJLvmMI1eHYJ22S/Q==", "cpu": [ "ppc64" ], @@ -3144,9 +3144,9 @@ } }, "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.12.tgz", - "integrity": "sha512-qvK4DuAsQc2BSjlx+Xr+IzOIvvxbGZqxFwdWfG6F518Erj0GGISyQbJ6pIappnOxlNPzNHvo/L0BwB30GZ+zVw==", + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.14.tgz", + "integrity": "sha512-V/h8ePq1fKDrmtFMz6xcCN3DKvuvMRrwwD1q0PkBeeo4DpK64biaKvqWGVxqCeYKqeRk7gE7/iKPxLCn08O97A==", "cpu": [ "s390x" ], @@ -3164,9 +3164,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.12.tgz", - "integrity": "sha512-Q9uLBO53Xd4QIq1WOycVQyPP1O4HhraEV2qqb3uTrnVw6QZih9duY4vNXOivL1xoUS1/z+W8eF4NMfl2a8Sdjw==", + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.14.tgz", + "integrity": "sha512-WxalXzgrLVpKC93xfpaJ3gCXUWzeCr+FRCbDVD2mUAy4L6Vo3lNVz0epUEUpxPWJkLNYUwM4OSIikv36OJ9mLg==", "cpu": [ "x64" ], @@ -3184,9 +3184,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.12.tgz", - "integrity": "sha512-3IBxWFMjbOZskDPKv8Lf9BCnahlKuHthWkYnyIxOH/QcJrFcS4EmcenthApkwr/5+nEqZlLzeYbxeMaX7A5u4g==", + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.14.tgz", + "integrity": "sha512-3G3tnAmTpdk9jO3GQtyHXqeFD2SlecfTws/Y3M2mmj9nMBwwuLT4kur8sZKeu7ENUHSpVO3cIsm5A52LEWWwlg==", "cpu": [ "x64" ], @@ -3204,9 +3204,9 @@ } }, "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.12.tgz", - "integrity": "sha512-xtX61xg4LKPkPWilZU1ynKClz5Gj4bf74LML4r3eVLWumKnGjoEr1OSHQhMdbBDoYTi+yjrujvpZe2pUnqCrrA==", + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.14.tgz", + "integrity": "sha512-qyr5XiNGxm2ytx17vvtcJ9nXn6v1gENETi503bJx3OGwZ1tSonj7BosxbMa/xeAfSl5iS9X6KjEWYXLu6v1L7Q==", "cpu": [ "arm64" ], @@ -3221,9 +3221,9 @@ } }, "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.12.tgz", - "integrity": "sha512-At7fPB6PCaIjzgIhEZFxuT+BBFqiQibJDT4d3PhiR3f4E7bbMZF4aKblbFfEM3sETRDd1YiQx/+U/g/B/ou5Ew==", + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.14.tgz", + "integrity": "sha512-oA4o5o0S2yB199YyYXDzKUv1Z56Rc+mgOjwm7Z/vJ9Z8igiDPYvoOuDyo6g7AK/ZaF09nPhDKVnGBcYHO11GXA==", "cpu": [ "arm64" ], @@ -3238,9 +3238,9 @@ } }, "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.12.tgz", - "integrity": "sha512-WIw2haVKwjuYdXkHaoC0mF8Le71TuCBxjrdKqLbJGctbBABj+ClfmNvtbOnzpq3RokNo5+V1qhtSzJyXorsklQ==", + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.14.tgz", + "integrity": "sha512-9mE94bf2GZUaR/fUSXCMpBoWkctu421Mi0ORpm4zqfbkjKep7RxzPFa5etcGs5h+2KApoWBOA/hAJa/7saGgEQ==", "cpu": [ "x64" ], @@ -3314,14 +3314,14 @@ } }, "node_modules/@rollup/plugin-node-resolve/node_modules/resolve": { - "version": "1.22.12", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", - "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", + "version": "1.22.13", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.13.tgz", + "integrity": "sha512-Dj/cW9zBV2aRj6XzCxuGIs3ESZKv02jixne3q6jFZYZ3/Tg09gHHviSMDL4kObh9pqSahdRHEnDoaP2gn8YLhA==", "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "is-core-module": "^2.16.1", + "is-core-module": "^2.17.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -3434,9 +3434,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.64.0.tgz", - "integrity": "sha512-FLLpX941CD/7aBvX3GqLGBM9OvY5PGXTryPJkG5r5/OuBpZpV5k45Uo3RxAvqd35tsyc3hH1bhtz921IKzoIzg==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.64.6.tgz", + "integrity": "sha512-FkO19Fowv/OQeJZPVfdetJaI3/VpbZmBsnmAlR/rQ+b3QwfiGQiOpVegpSRH331kelvHTVw9hXYG3DwjAaRzyQ==", "cpu": [ "arm" ], @@ -3448,9 +3448,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.64.0.tgz", - "integrity": "sha512-iI32XM/jnDYJsvx5ai/za/7gWO9XoSeFFtU06/ZCaRgyilfJOjaopD3nOpk2WrTCGOyeDt4hleUiGOAnd5tHNg==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.64.6.tgz", + "integrity": "sha512-si5/Etm6MphPc2xYHnk455Shls/hoMjTy3mhXge4OPmvCw7TwC4KP4fKokAlKLV4XaQvLvgSHfafPcblLMYYdQ==", "cpu": [ "arm64" ], @@ -3462,9 +3462,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.64.0.tgz", - "integrity": "sha512-dRBZlbt2sEtF8Mn4MODThze9fIPdDoOhVSlXMAKy5dQbOYK9pOOoPY4Fat3OTtr0+8zbJo5TTZwlsfxY/kDNJg==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.64.6.tgz", + "integrity": "sha512-PQCl3q7b0BgvVt72i2xrWM6I5KliwwVe4GpWW5QDGyUQawDS9aPZss/aGyFqBmxdRxlE8wDc9CaxiQ5DHRSp/Q==", "cpu": [ "arm64" ], @@ -3476,9 +3476,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.64.0.tgz", - "integrity": "sha512-Y3whrJOMucfkhgNkvcM93M6j8C53iEAMmPMYD99C6G1kUy4ELigLWk9ar2/4aCBSRgsql0zdlOemLgW2m5GZgQ==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.64.6.tgz", + "integrity": "sha512-l9DFl1Itb1YYdSrP1K3U8ih44AOHa/p+Q4WMMDfGvH5qVWp+ajfgS1DlYo4yCRh8wJ2ZJv0Fqccf+ULAmMFjmg==", "cpu": [ "x64" ], @@ -3490,9 +3490,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.64.0.tgz", - "integrity": "sha512-S6S1GEzPjFF6IONYJX3AKt/799+8RgBgCcwRnUo+Ep1IvBxUbw5M51iU0TDdK2NWWVnSvCQ8yi6Em0fGASMOng==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.64.6.tgz", + "integrity": "sha512-bR4GR3205N9+od0+l5Dd9/iZTDpJkIe6d6Ydp2qbcQZJLmKBdYQQRp8gbWpbMt92twKJY66o1vK4NkoKQODIrA==", "cpu": [ "arm64" ], @@ -3504,9 +3504,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.64.0.tgz", - "integrity": "sha512-Ed1DPoFENkXj4IGzSB12SesV40iP6LxCCrbTIkSGIQBpOOxpBM+0kj62lmaeIHfMWTDoddqTOtqc7s8LYfn+Pw==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.64.6.tgz", + "integrity": "sha512-XTVNaDzcFl2TeBglvxdGgsCv9JGtAGRAoJENmGBR/XvDH2mA2K0IXc2aMfP0dR8mexSXSKifJ85FixoXX1wfTw==", "cpu": [ "x64" ], @@ -3518,9 +3518,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.64.0.tgz", - "integrity": "sha512-J/6xhutJPtFyIkmHdf4olOdHHKH5kOJNumojdWn+Elv5ICEYTVOa362Vw27TxsK0BLzb1le3EDlO3UbvFK1lnQ==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.64.6.tgz", + "integrity": "sha512-qWc6qbc+25ugG9vqPR9P422KJBbVfZ05mjcMggoq8tsfWP+eRfC+/tiDdIlRF5VL2pDVZWN9zAhWsmu7R1+7Dw==", "cpu": [ "arm" ], @@ -3535,9 +3535,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.64.0.tgz", - "integrity": "sha512-G4L/Nnx59d2LvDoV/P4S5lZ7oVLT6hodOHMacqjiq2LL2gts86KbkEBTYL53+fBt0odhf7XPIbIATGoYiJctxg==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.64.6.tgz", + "integrity": "sha512-V4Nwkp8844X/Xnww3PI1LYS0YPei8XQEVG70R+5MPZGO7AhYoun4hCN7Svs4U3wbQLZbwiz+9xRFhUZZdRl8Ww==", "cpu": [ "arm" ], @@ -3552,9 +3552,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.64.0.tgz", - "integrity": "sha512-zF16pvJDEUksGYRbfnXne7pdklAyj2XDmJeYKgP93oq0cUyX9Y8O7lUo1R+IY1GagP/YBvCEDCe7eEcAKpw//g==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.64.6.tgz", + "integrity": "sha512-xb72A1aPaaIsp+a88VtRae/ovIEXislbUMyp7b9AQQU7ZkP2m/+ik6DW9TQcJyw5R8/RIailF9zExYwkjR++UA==", "cpu": [ "arm64" ], @@ -3569,9 +3569,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.64.0.tgz", - "integrity": "sha512-nIggWn8n+w12+R5lsV+PYYoUY8vuObxPAQqJI7WES+9v0qspYuAHoZMfYM0yLxlipasT5BY9ht5W8t5c/rSCkg==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.64.6.tgz", + "integrity": "sha512-pbcs1BVBwC43hZkjhjlF8Rx8m5G0KnhLZs9Azy/gqccP6UsNSzJr0hKGIAVPqzAH1O/NdPxxC9GVGb4msQg/aw==", "cpu": [ "arm64" ], @@ -3586,9 +3586,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.64.0.tgz", - "integrity": "sha512-WLOTiHPzszP0dxIMsHpFeDSOSB5I49Mj8K4+yKE3H1X/D0JRG5XZ5jrctJLMjnUc/LUzaKiwq6EHWNJ8pup8PA==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.64.6.tgz", + "integrity": "sha512-EKOC8os6Vsg487ZLKUqzLF99Jsmnq6tu7O7mAELakNpcA+8KadktFf/JYdRuHe/DzCUXmN38pUKu4XBcKlqGbQ==", "cpu": [ "loong64" ], @@ -3603,9 +3603,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.64.0.tgz", - "integrity": "sha512-35RK9aRhh7g7Pmeu5gQ01aCvrhXzj9LoBE6xtUcEH1ns+nyTaSzxSpADmBQINu4QiTDGvmQYwo1j5hlg1rRXFw==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.64.6.tgz", + "integrity": "sha512-v/SQ68GnSlr/HyjB79sNXesGDwkOPu9JjbHfmWaymCiM+nZsQ9TstG1KfA4MuEvTr2d3PoY8PhFxj9bt0e32JA==", "cpu": [ "loong64" ], @@ -3620,9 +3620,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.64.0.tgz", - "integrity": "sha512-RqTfnpoTjuWfPAmqK5p2edt2AMCDJWm6oTn7sKfmyx+6tRga0ip05SJ977o6udTcIiDeF/CJMUfkaN4gtWt6Aw==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.64.6.tgz", + "integrity": "sha512-G3pmliMQ7r15zFFNwBlaT/xTdSLi4lfgI7CUrQueyKYheNVhrd8JrWCE6Ll8xf4AA1RZFqq+mNJYntiElsVOyA==", "cpu": [ "ppc64" ], @@ -3637,9 +3637,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.64.0.tgz", - "integrity": "sha512-RQjZPigjxFvFZDijG6rjlSXxhRaTf9zLYVpGK+lVcga64oMqP1GbgVqCb46eHTTceSIgp89Ja0y5aPe3GFBYHg==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.64.6.tgz", + "integrity": "sha512-XQTB/IPoB/wG6x/wu9uomAt8YH61IAr5iZTubMiad/lu88sotq2ocz9hJd556+Jz2kIkF7ZQZIsUuWE3OWqtcA==", "cpu": [ "ppc64" ], @@ -3654,9 +3654,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.64.0.tgz", - "integrity": "sha512-tjL58mgQcTRnDRpeky+Sth1MKQeYi2Ct6r3Luq9E5aTSjnM/i/JbozqZkKqp9thM5+oDSZxo+05f9kdQedfTGA==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.64.6.tgz", + "integrity": "sha512-O5mpokth6+ydMuwiGtY8fIjvOBfH7u6SzmDNmZ3k6GK5C6iEAC2q2ZN/T5L9jYILx0IcCT0KnfMDihQ5yQFSBw==", "cpu": [ "riscv64" ], @@ -3671,9 +3671,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.64.0.tgz", - "integrity": "sha512-ictoRyVaoZ8C67myHef+8hhCa6IplXJJ/xUCkVCxziV4zxMZh+jvhkhGsPBLqj1S72fnqD0QH5zL4lcaa4X7DQ==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.64.6.tgz", + "integrity": "sha512-aIFxbAD9v3TvIaEDsKmukjcDg1JS4/tFXw8SHyQQgzOwzWCQ4cyDK7Ju1pQKqUXDFkEu/BZCFDCDATsKhQcB/Q==", "cpu": [ "riscv64" ], @@ -3688,9 +3688,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.64.0.tgz", - "integrity": "sha512-8aVvZ2hfr9RLFzBQkQNmYeHLDja8fLeQAmLt757zdKN/B+8L809KlLJKctQjS22wZotptV8G6o7fVPuAs8S1tQ==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.64.6.tgz", + "integrity": "sha512-fuNo1UwBc6BxnHDOxxguQL/InhheMN3RJcJMb0b4xP8r5Q3CNCrJbVg0eCIFuJ4e/zAfjR2gYbOfbzO/G7CIyw==", "cpu": [ "s390x" ], @@ -3705,9 +3705,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.64.0.tgz", - "integrity": "sha512-2dEF8GAcDKwshUfydD+GhosppNyBzhVUHkdFF3CXd3FpOkzj/RZzF5aoEtzklujklT5qFVRU2GK/cFeLaTNKVg==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.64.6.tgz", + "integrity": "sha512-05v6wFKDKJPZs9xlytVrrRu6IbRuoSvlH9xNwEOafXsKyjBFZPvAcZz2VIAB/M+lblYeKa9iOYC4RDVdfcAAaw==", "cpu": [ "x64" ], @@ -3721,9 +3721,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.64.0.tgz", - "integrity": "sha512-3XHTvoo2hKkh0MiOfS7SkhHjMaaWF7P4F3drocZZaho/Z8w7h/jpnuBHm91BOQLfvrKHs1yR+zir4E8RI3XzTQ==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.64.6.tgz", + "integrity": "sha512-wJXKcdMjvkc/FaavZXNP1yW4i0pfOmhZAIWRSLG2yJ0PB0TWi7dkLErhX0u0vptDcXKKO/m1Y/YTeuyvb2MXwg==", "cpu": [ "x64" ], @@ -3738,9 +3738,9 @@ ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.64.0.tgz", - "integrity": "sha512-HKtkzodL4a3KFWDXDoO61cRynAWTR3LnAE0oGtfG9lcNFpNuVYUFOByxDgNqEvic9rvaQbAj+SFwTEWDptRaIw==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.64.6.tgz", + "integrity": "sha512-cwg7/h0ThvJwy8CBkmACdiHAxRWpbsCmIsjOt+Zzx0hTnIcSUmKYEV03bGg+hD827OnwUsbKh1ZZDW754xWyBA==", "cpu": [ "x64" ], @@ -3752,9 +3752,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.64.0.tgz", - "integrity": "sha512-JBsxqiY16uyyCujtoC3s7zL+SrYyNElptD7K4V+KUoJ2V8/XG3hPWpheK+SuPwNh1cikJvIZmIdsrYXvD6PLJw==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.64.6.tgz", + "integrity": "sha512-T0RkYIJbdYXJEQFw+tMBO09KDFdgmNxkHsof3wWAABrvnx15Yh8RytmrgYy9+q9cBeBNZF66MMQZC+5nzEz6vg==", "cpu": [ "arm64" ], @@ -3766,9 +3766,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.64.0.tgz", - "integrity": "sha512-S5Qrijh37qhnUYQ0ay8WN3LuWeKjow7wTUyCOPMZtnXiBXYXdsZETI6ZLfYnQAKovltckPLBFdNeD61P2rJc7g==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.64.6.tgz", + "integrity": "sha512-KlfpmF1AAIdAWxt8QQNClbpLFlAUfYOzqIuJ7IXEStMHpFRuH78RG6FjqPb3Rqhh0K89F5npvG+/i3Fjl6IveQ==", "cpu": [ "arm64" ], @@ -3780,9 +3780,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.64.0.tgz", - "integrity": "sha512-zbZ6iMmLFEsCtTdc2/y1F/cDFVNNCPF7Ae8PCT/wdPE//hGwYp6r+MyCLMFX+kOeIe09Pz6ASfnnfpSTN1FJQQ==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.64.6.tgz", + "integrity": "sha512-MrTLjd7Jlt9/ZavJZYG61KQv9Iy9bzbY+yXy73Xvwoa2uP66wvDShkyBr5Chz/yrE6lbD/zHMuTmKQVNQqBApg==", "cpu": [ "ia32" ], @@ -3794,9 +3794,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.64.0.tgz", - "integrity": "sha512-L6Hw69oNpuYaOr1zCG30v0/DqKYCSRwodPGwIcVZ/6f8SOzq9rxtL/xNVI5MO4wjli+Ko0ErK9uHJL3mNPt8wQ==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.64.6.tgz", + "integrity": "sha512-8fWDH1CkPI8GdBKAxzHDza7UmgficsKo2+MVbvUgOGhB0629w5sHMg3Qu5y7TZsrYKHHWpz8fla4KvoT7WsO3Q==", "cpu": [ "x64" ], @@ -3808,9 +3808,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.64.0.tgz", - "integrity": "sha512-nl+CTWIgOGszQmUz/kanfgrfFZ4qiwxKIfT/ryl3N3Ewk5tqizmYtNXiqb7Bu/fDtNgu1kyxdFiAUJNur3iysg==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.64.6.tgz", + "integrity": "sha512-9/c9PWdr5GCIHkkxiHM1HjNBQMVdftP4O8QTcoUAaRza2FSqJ4axbf8QAnBuE6BIGQDl71SaRPeDdDYid5ecTw==", "cpu": [ "x64" ], @@ -3829,9 +3829,9 @@ "license": "MIT" }, "node_modules/@smithy/core": { - "version": "3.35.1", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.35.1.tgz", - "integrity": "sha512-i4YPS4B6ts7bjn7UwLnGjiZdprOvHvgGobFZsYK3GIY3E5hIqtj0rReU69BcTpGp+fvtraSNXeG1l+jtJvF55w==", + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.36.0.tgz", + "integrity": "sha512-3hJiwG1F5t1SoXqp/yOCmYXziyx7ZVqF63S5W6YU201e/qwVaHPex+E/3vvyY9a3ORq/b+BydeNZpP2saQ9X2g==", "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.19.0", @@ -4176,9 +4176,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.19.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.19.1.tgz", - "integrity": "sha512-aS3/DG0oM05K0RIXXP+hKjinGG5IgSSVGzswZxW3O0sS3pH4/fycXundUC9XsszgKCk4gHXylTEK6hyFxVxnoQ==", + "version": "24.19.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.19.2.tgz", + "integrity": "sha512-93d49wCWJkCyN87MxLpNN6KXPCwFw7bVUg79mGUV1OS40JGWwVCr8n61DXCSqz7CV6/VfPkb7xec7uP2M+QHWQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4235,17 +4235,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.71.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.71.0.tgz", - "integrity": "sha512-pqcS9c1HxZTHt7End4nXqd0s5lJrrFzrgCkKFJrsbUnaL6M3+6oBFZaslg6Gjsl3argl2DDRFROnXARaZ2e4Nw==", + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.71.2.tgz", + "integrity": "sha512-K72/pvT7qpm8q3k8G5u93NCSN1RcLxX5h7Gw0bQpbMXviBHeY6Nx1WEwmk9wP+eKTSQ8ecxvcgt/ZX/rB938xQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.71.0", - "@typescript-eslint/type-utils": "8.71.0", - "@typescript-eslint/utils": "8.71.0", - "@typescript-eslint/visitor-keys": "8.71.0", + "@typescript-eslint/scope-manager": "8.71.2", + "@typescript-eslint/type-utils": "8.71.2", + "@typescript-eslint/utils": "8.71.2", + "@typescript-eslint/visitor-keys": "8.71.2", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" @@ -4258,22 +4258,22 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.71.0", + "@typescript-eslint/parser": "^8.71.2", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.71.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.71.0.tgz", - "integrity": "sha512-CG4nPk1f2zc8yw4pALqHsFYH2hdo+h1T9daSp21+Hnxi9LOE3GT9hAfTKJCBXVNM2GmYs1eMEP615wPoeOgk3A==", + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.71.2.tgz", + "integrity": "sha512-aTtmZjp/x3gsGHkDs04/1I8kNogBJkpQaeGaN0PfiG43NzDEmW2n+OP5im9wfsvyX0yP1UZWBrAGtDBfH9jEVw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.71.0", - "@typescript-eslint/types": "8.71.0", - "@typescript-eslint/typescript-estree": "8.71.0", - "@typescript-eslint/visitor-keys": "8.71.0", + "@typescript-eslint/scope-manager": "8.71.2", + "@typescript-eslint/types": "8.71.2", + "@typescript-eslint/typescript-estree": "8.71.2", + "@typescript-eslint/visitor-keys": "8.71.2", "debug": "^4.4.3" }, "engines": { @@ -4289,14 +4289,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.71.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.71.0.tgz", - "integrity": "sha512-aABjw5rjBacYONVPaPiWOCjJu0vEF4a25iQuodlmQYL1trtLZ0X/y+2Vzl3BKI1odM4LnwLE1oUDXYp1wzx1TQ==", + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.71.2.tgz", + "integrity": "sha512-Pd68GsLVh5ZXlcEccFPdhSOvtHZ/2WU0XsA8zmXOS3F158lVlcTLhfQ6qvtL1RzbMie0Kp8xtbVwAg4nejKPHw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.71.0", - "@typescript-eslint/types": "^8.71.0", + "@typescript-eslint/tsconfig-utils": "^8.71.2", + "@typescript-eslint/types": "^8.71.2", "debug": "^4.4.3" }, "engines": { @@ -4311,14 +4311,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.71.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.71.0.tgz", - "integrity": "sha512-gWF0BhUcnjZxSpLE8ngS/59n2SB0J3YqRxvX1+2aoRJk9hNtHSLOV+TcarFiOr5ipXm3yc1QrI4c9YZc8zyCxw==", + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.71.2.tgz", + "integrity": "sha512-YF4wgg5iUX5Obywoac27B56FhozMNFhdJSbh11H5GBAwmBtfyRhmgTQqW9tRNNmHDvsZ2CX6UGzoz+YfYn2Leg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.71.0", - "@typescript-eslint/visitor-keys": "8.71.0" + "@typescript-eslint/types": "8.71.2", + "@typescript-eslint/visitor-keys": "8.71.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4329,9 +4329,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.71.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.71.0.tgz", - "integrity": "sha512-Z1UlWHADEK2Mlb9NpWfDeSjqoZ5EyrOv4R3eQpbkzqn/EwaIdOpXXupEA1+0ZIOSJSZZDBHG0BrQyN8zUG6Pwg==", + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.71.2.tgz", + "integrity": "sha512-jz49TAWokm/7yWD9/o837nYax9DyALxIPOImdImvVzo6canBCZYzin8zJyqNR5k1j9K1DE0bVvr0XYB+99uAdg==", "dev": true, "license": "MIT", "engines": { @@ -4346,15 +4346,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.71.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.71.0.tgz", - "integrity": "sha512-i8uO1qbdxeKgRnS5sCRt6On3/nfo2d2DwQe3Yvjx543zLy7r8ySqRuPPiIIXAhS03U0v5NfAFx+rUgxFzKKwNw==", + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.71.2.tgz", + "integrity": "sha512-cC8UaalCViJkb3rH/xLIvidEwoFRtMZMUqDjjJMGEKaTFwYRHYBcoczlEGHuvkHEO8svRDrgZ0yQgOArFmwang==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.71.0", - "@typescript-eslint/typescript-estree": "8.71.0", - "@typescript-eslint/utils": "8.71.0", + "@typescript-eslint/types": "8.71.2", + "@typescript-eslint/typescript-estree": "8.71.2", + "@typescript-eslint/utils": "8.71.2", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, @@ -4371,9 +4371,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.71.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.71.0.tgz", - "integrity": "sha512-cJ4OoxPGWvFnBTnSZyaU+qJzGTqPTGJY+gDchj6cRyLRdmIdt4rcsE4twj+zPfrNiWuVi38wijHzShL++Z9atQ==", + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.71.2.tgz", + "integrity": "sha512-y5Ukl3oVp7e/VGxqIoEXoeb/Roj71PAJ4WG/N/RGj+eeDvKRLM15kGr9MijLbN0i03S52zxu31Z98E5gWChJKw==", "dev": true, "license": "MIT", "engines": { @@ -4385,16 +4385,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.71.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.71.0.tgz", - "integrity": "sha512-PEEF4G5sLLWAS5BpPrUvms4ySZkiBQQZM4z+3ReI46axK5Vqr/vXBQatJQIZZOYdGyPUAKTtsrWzpqKuU+3DEw==", + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.71.2.tgz", + "integrity": "sha512-DgNOEsl4pdYzwSL+N/Cl33tX1Hlw3FvId73LnKXfq7jnrF2viOEn7X+P7RBkkSWCVm92gnWd28GIC5vJuLREeA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.71.0", - "@typescript-eslint/tsconfig-utils": "8.71.0", - "@typescript-eslint/types": "8.71.0", - "@typescript-eslint/visitor-keys": "8.71.0", + "@typescript-eslint/project-service": "8.71.2", + "@typescript-eslint/tsconfig-utils": "8.71.2", + "@typescript-eslint/types": "8.71.2", + "@typescript-eslint/visitor-keys": "8.71.2", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", @@ -4426,16 +4426,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.71.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.71.0.tgz", - "integrity": "sha512-pKR/tEMVrXZG23UFKUn5BQf3zfmfk7KQceI2cGzywZ5nxM5Eu3hEJU1utjWzydtzBbcJAQhHN8iPCxobHpPcZQ==", + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.71.2.tgz", + "integrity": "sha512-RyKa1G1M9rKHDhrk+HJtiF1MvLD5Ux2JW3TSkzw+02pRALdpJb+QzG1Y5em+LvCgzGwgg8H7mBRFKljNz7ImPw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.71.0", - "@typescript-eslint/types": "8.71.0", - "@typescript-eslint/typescript-estree": "8.71.0" + "@typescript-eslint/scope-manager": "8.71.2", + "@typescript-eslint/types": "8.71.2", + "@typescript-eslint/typescript-estree": "8.71.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4450,13 +4450,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.71.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.71.0.tgz", - "integrity": "sha512-8eQ9R218XORK+KLosnf4bu/QsUXvUyVwTbArg7/0NMB1Pu87OJKvj4nhFblkYE8gQV73mW1dx1ptlPCkwRGa7A==", + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.71.2.tgz", + "integrity": "sha512-zozlN0UA32bSG2zkKAgQyRYSbEISVoyU6vvkKYo2aSny74D8Jh4e+POkJ6Lk0dlezZi5x7TtD+88Xb06IB8nhg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.71.0", + "@typescript-eslint/types": "8.71.2", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -4502,27 +4502,27 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-5.0.3.tgz", - "integrity": "sha512-+klsyz7BvT1vCU28Zkfzms1Ia78XD0V41U3FUtRaa3S+vOr/EXvK1O6BvVD7l1RzEjm6SONR2aybOvDDf9u0mQ==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-5.0.4.tgz", + "integrity": "sha512-P5YcQY8Y6RmoE9xRXI38rT8pssbcubEzqtYTM2XQoxOXMDn04nRaTI1SM8qCl9/NfW3ag9GlzdSXu7IwO5Ft8A==", "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^1.0.2", - "@vitest/istanbul-lib-coverage": "^1.0.0", - "@vitest/istanbul-lib-report": "^1.0.0", - "ast-v8-to-istanbul": "^1.0.5", - "magicast": "^0.5.4", - "obug": "^2.1.4", - "std-env": "^4.2.0", - "tinyrainbow": "^3.1.1" + "@vitest/istanbul-lib-coverage": "^1.0.2", + "@vitest/istanbul-lib-report": "^1.0.2", + "ast-v8-to-istanbul": "^1.0.7", + "magicast": "^0.5.5", + "obug": "^3.0.0", + "std-env": "^4.3.0", + "tinyrainbow": "^3.2.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "5.0.3", - "vitest": "5.0.3" + "@vitest/browser": "5.0.4", + "vitest": "5.0.4" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -4554,22 +4554,22 @@ } }, "node_modules/@vitest/mocker": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-5.0.3.tgz", - "integrity": "sha512-T8sWAIbkSyAjkwTcaEc3Iu0o9A27X1/kdXrizhZkGuSKScRQtRzclfAMpOTcGdXCsqxeWlpGy3XjqaW8CpLORg==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-5.0.4.tgz", + "integrity": "sha512-tqAlrYWce4iUxhr3ncNohejtCTOcHeE8XWrSNZY3OhPoDn01yeGv+gnaBy64ATp7o6pb03eIbBAjzmibpc9vIQ==", "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "0.3.31", - "@vitest/spy": "5.0.3", + "@vitest/spy": "5.0.4", "estree-walker": "^3.0.3", - "magic-string": "^1.2.3" + "magic-string": "^1.4.3" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "msw": "^2.4.9", + "msw": "^2.4.9 || ^3.0.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { @@ -4582,9 +4582,9 @@ } }, "node_modules/@vitest/spy": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-5.0.3.tgz", - "integrity": "sha512-XhFysQTB8AZ+P4gMi+Lpo99vg2AZi0qKpaB9yXQl37+CaMEAPO3iH/wGVnSyL5MPERiLezpqTVtrR6UZH5GCXg==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-5.0.4.tgz", + "integrity": "sha512-MZKk/gSkm2q+ICobMxCpH1mA+cCAWm8WV7UhxlqGjq/sJ3AGc1BqFOs5CRVXxH78wQtme9q/NAAgBquj4AcyMw==", "dev": true, "license": "MIT", "funding": { @@ -4605,9 +4605,9 @@ } }, "node_modules/acorn": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz", - "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.19.0.tgz", + "integrity": "sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw==", "dev": true, "license": "MIT", "bin": { @@ -5048,9 +5048,9 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.11.27", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.27.tgz", - "integrity": "sha512-ElY12DaROGuan+lMmZ8Cvo/ZUbXPe7Enc/9VU/b1T3Kp4dwytRcNdR8DoSJN5SNJT/CuvcCA0DHDVmMOCePdRQ==", + "version": "2.11.28", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.28.tgz", + "integrity": "sha512-br0LOmjJqr6Rt4AEkadbcNf67Zpo7EPwKsWbjnRrJIa1QYFHQBqM4C7F2WTbV8ahTEcg1Eo+Y0aWjjORInYFyA==", "dev": true, "license": "Apache-2.0", "bin": { @@ -5270,9 +5270,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001814", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001814.tgz", - "integrity": "sha512-/Uaf1lAzr59XcMpW0o96WoEfr+VXK2OX4U9AgFoiSHsVJ4HppnIFUjtYzsyDH2+tgANaQb2/oxYGwCPapN1FpA==", + "version": "1.0.30001816", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001816.tgz", + "integrity": "sha512-+8Yx7BXCoqk6IF8yTicjfUR6D/ldJzdlsodlEOiOSPmhK844WIgk67/zIQaGAOxNkZyyvBlrRFnLvqKIoqbAFw==", "dev": true, "funding": [ { @@ -5882,9 +5882,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.444", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.444.tgz", - "integrity": "sha512-5ss/uJfoDYDHT0lfJzT6FbcskIzROIOPf0BbbFkGcvDzoJU7i//9GDrwwIHQVmIsrAGiF3ihpADBRIsrEFt1rQ==", + "version": "1.5.456", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.456.tgz", + "integrity": "sha512-8hboqI6xesozteFb8aa7OGknvxUtTeRJLz0FoePysUEh/oWbddykIGdgpEJRbPRg/nIMfBf2DFos+H2MtvJl2A==", "dev": true, "license": "ISC" }, @@ -7581,9 +7581,9 @@ } }, "node_modules/ip-address": { - "version": "10.7.3", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.3.tgz", - "integrity": "sha512-A1kdq/tSb5QjvKvAMgIoEvDBIgL7qaqVP/jkvSwYYRZ9iEzvPpopxp2wQfu3SuZRHtpHNxMn8Fs0bS+gf5Xmwg==", + "version": "10.7.4", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.4.tgz", + "integrity": "sha512-DWBMKyeM25D70nrIiTkgQth59/G+naKOTep6huF9j+GmeK3DMD60Zvxg5d5qQnz+38AHgou6ean2LECX+lrKDg==", "devOptional": true, "license": "MIT", "engines": { @@ -8142,9 +8142,9 @@ } }, "node_modules/jitar": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/jitar/-/jitar-0.11.3.tgz", - "integrity": "sha512-AdwVC5XZxZU7VjRmzr/TQKRsJPpx0Vv8CQip64MyorcnR6VOn29fvbfqXu7N3TNAc3CGKT00X2ZCq7rMYenClQ==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/jitar/-/jitar-0.12.0.tgz", + "integrity": "sha512-Bb7U8+nKOxeeieo+Qb8bpfhPQn2QJbGSKTxFo5zud1D3azGa+iMR4GiVHL4JkGRYn83BWXVXwD2MyUfzJlM+Bw==", "license": "MIT", "dependencies": { "dotenv": "17.4.2", @@ -8826,9 +8826,9 @@ } }, "node_modules/mnemonist": { - "version": "0.40.5", - "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.40.5.tgz", - "integrity": "sha512-egXDkYJsKZCizjk8FydZ3g8TOigBwt+dIaehgKcQSAE3DCkCTWG4N94trvwR1ZYeAHo1exxE+ZhZOUuj01HdNw==", + "version": "0.40.6", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.40.6.tgz", + "integrity": "sha512-c4mbin5HCz77Srw1L3nwThCH/0hLVYuY3oMF2plP2tKfp/gqzSgHP63qRUOpL8jutYWNNCr49LUlKSt7exkaww==", "license": "MIT", "dependencies": { "obliterator": "^2.0.4" @@ -8914,9 +8914,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.19", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.19.tgz", - "integrity": "sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==", + "version": "3.3.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.20.tgz", + "integrity": "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==", "funding": [ { "type": "github", @@ -8997,9 +8997,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.57", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.57.tgz", - "integrity": "sha512-kQK9LGGFiHtrWiNhZtA7Qbw17AQz+dmsEKODRIVTXA9+e5MS/2gZEBhYJt13GrAz5/IOZKddH/0Z3TP/Zgo+yw==", + "version": "2.0.58", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.58.tgz", + "integrity": "sha512-BdiKAgbfRlvfMq/XzO/AF9NPmaA8a+YpLAyAFTVFBj3gARrAIfWvNq7Q7NE4se3KgFu0KkrvQMxTS0XVnsGzHg==", "dev": true, "license": "MIT", "engines": { @@ -9154,9 +9154,9 @@ "license": "MIT" }, "node_modules/obug": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/obug/-/obug-2.2.1.tgz", - "integrity": "sha512-XrsrhT5sybtKI6wakr2SPOlGZWWYbUXZ7a0jT8/QOeAPau+1X/bSegNe5YR75oJmEZQbKningirmGOEJCIk61Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/obug/-/obug-3.0.0.tgz", + "integrity": "sha512-5vvB5+W7ePv+p3uqxi+RcW1XAzLW0/hxt3/4X4Lc4qHudzOhmBiBwOY6DRob4WnanAEGvNcLjF+KNOufrUoEQw==", "dev": true, "funding": [ "https://github.com/sponsors/sxzz", @@ -9274,9 +9274,9 @@ } }, "node_modules/p-map": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.8.tgz", - "integrity": "sha512-MitaVsCuCFIvOLLPIU7NnfrZvS9H9h7kwMUkDo+T2pEISaJD48IV9S8iIdXB7PsvvdxyYcsSTTrr90XKsbulNw==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.1.1.tgz", + "integrity": "sha512-6Lh3jQPLthYujSrlw6ccWXBGZTkoTCz27Hd92g79LH/kjAbgoEu0t442cCCNbegPSJsA0lwDX8z0bcKtkpA32g==", "dev": true, "license": "MIT", "engines": { @@ -9582,9 +9582,9 @@ } }, "node_modules/postcss": { - "version": "8.5.28", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.28.tgz", - "integrity": "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==", + "version": "8.5.30", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.30.tgz", + "integrity": "sha512-zkd+e9S1AQHhmaBKye9zlFHWjOwVgqXl1q3ECYy8561K7qxR2cREf/STLskulBFd78k6AOFeA+ff1TtEzk9bAA==", "funding": [ { "type": "opencollective", @@ -9601,9 +9601,9 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.18", + "nanoid": "^3.3.20", "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" + "source-map-js": "^1.2.2" }, "engines": { "node": "^10 || ^12 || >=14" @@ -9646,9 +9646,9 @@ } }, "node_modules/protobufjs": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-8.8.0.tgz", - "integrity": "sha512-N3xhQ5yyBx3vQq4gubBfASzYhJGNzeDbjqBpu61g7UVylsN/qyffU96TKWD3GbbLOKF82VGNRNvv1+BFgE31Eg==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-8.8.1.tgz", + "integrity": "sha512-d9e9179bjXSJdpJ3+R9fP8hzXsnKLyxTjHLG1dUzje8a27pPyXCe6PrcRtgx2rjoM3IZzHd2vAs+6J/BsO1k7Q==", "license": "BSD-3-Clause", "optional": true, "dependencies": { @@ -9963,13 +9963,13 @@ } }, "node_modules/regexpu-core": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.5.2.tgz", - "integrity": "sha512-zkmVH92DlzjSFc4xKGZp/2BXIFrDIdBQBC8gUXKCsMgKYb1bkCkxfSuoW1werDjaTEMTbULkHtKFHe1L+Abnaw==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.5.3.tgz", + "integrity": "sha512-E8VgUoSK+LMQrLboDxavm76MTBGrQhx9RiNuomRmYnZ10Uw12HrI8fkxOOncktb2hBpzIZ9SV/347euQHG5z+g==", "dev": true, "license": "MIT", "dependencies": { - "regenerate": "^1.4.2", + "regenerate": "^1.5.0", "regenerate-unicode-properties": "^10.3.0", "regjsgen": "^0.8.0", "regjsparser": "^0.13.0", @@ -9988,9 +9988,9 @@ "license": "MIT" }, "node_modules/regjsparser": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.3.tgz", - "integrity": "sha512-ycwFAS14Jw4mppvmK4GR/J6u3WpWpjkEApehuHtLc/8VpPNpDMbQ4WjqwplXifGeyKOzHSFLmSPqzksDQE2Sfg==", + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.4.tgz", + "integrity": "sha512-EWV80YgFaVgFrjGCAsV7oybp4GOxbls5RzBg8OB0nKEVXsBJR1JlV8Di1JhCROg3MzTfe1RI8yitIm1eOs68iA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -10085,13 +10085,13 @@ } }, "node_modules/rolldown": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.12.tgz", - "integrity": "sha512-8wafseiaG80xmXSfqidUNqZcylTlhmPZZt+za2m+js2sFZ8dTNlhIOV2WcbIPx2hgwPBJpEUGFAMZ9bgBBLTSQ==", + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.14.tgz", + "integrity": "sha512-eTBTTqMR6uHKLgcUqpJP8ntzDI6V4LYA8negAMBEI7gkgVvOdrx6VsvS2Ym+83KhOPdLCHWJu0w7UQFJZhHKNw==", "dev": true, "license": "MIT", "dependencies": { - "@oxc-project/types": "=0.152.0", + "@oxc-project/types": "=0.154.0", "@rolldown/pluginutils": "^1.0.0" }, "bin": { @@ -10101,21 +10101,21 @@ "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rolldown/binding-android-arm-eabi": "1.2.12", - "@rolldown/binding-android-arm64": "1.2.12", - "@rolldown/binding-darwin-arm64": "1.2.12", - "@rolldown/binding-darwin-x64": "1.2.12", - "@rolldown/binding-freebsd-x64": "1.2.12", - "@rolldown/binding-linux-arm-gnueabihf": "1.2.12", - "@rolldown/binding-linux-arm64-gnu": "1.2.12", - "@rolldown/binding-linux-arm64-musl": "1.2.12", - "@rolldown/binding-linux-ppc64-gnu": "1.2.12", - "@rolldown/binding-linux-s390x-gnu": "1.2.12", - "@rolldown/binding-linux-x64-gnu": "1.2.12", - "@rolldown/binding-linux-x64-musl": "1.2.12", - "@rolldown/binding-openharmony-arm64": "1.2.12", - "@rolldown/binding-win32-arm64-msvc": "1.2.12", - "@rolldown/binding-win32-x64-msvc": "1.2.12" + "@rolldown/binding-android-arm-eabi": "1.2.14", + "@rolldown/binding-android-arm64": "1.2.14", + "@rolldown/binding-darwin-arm64": "1.2.14", + "@rolldown/binding-darwin-x64": "1.2.14", + "@rolldown/binding-freebsd-x64": "1.2.14", + "@rolldown/binding-linux-arm-gnueabihf": "1.2.14", + "@rolldown/binding-linux-arm64-gnu": "1.2.14", + "@rolldown/binding-linux-arm64-musl": "1.2.14", + "@rolldown/binding-linux-ppc64-gnu": "1.2.14", + "@rolldown/binding-linux-s390x-gnu": "1.2.14", + "@rolldown/binding-linux-x64-gnu": "1.2.14", + "@rolldown/binding-linux-x64-musl": "1.2.14", + "@rolldown/binding-openharmony-arm64": "1.2.14", + "@rolldown/binding-win32-arm64-msvc": "1.2.14", + "@rolldown/binding-win32-x64-msvc": "1.2.14" } }, "node_modules/rolldown/node_modules/@rolldown/pluginutils": { @@ -10126,9 +10126,9 @@ "license": "MIT" }, "node_modules/rollup": { - "version": "4.64.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.64.0.tgz", - "integrity": "sha512-gjA/kFeDfffII8COoPsvLPvE16hWDTEc1+0QKQNKUkuV8iJjqsC4xXs8/FzuL0v9EV39kuxTbAgcFoTRyy2TGQ==", + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.64.6.tgz", + "integrity": "sha512-fX1Vy+UNKdXn+xKDnu/HBXbHVr1AY8cSdQj9BU4kLv5aFCMqGpvrVbyUMmjN3DdzWhSAuTbcX8PCNEVaumthYA==", "dev": true, "license": "MIT", "dependencies": { @@ -10143,31 +10143,31 @@ }, "optionalDependencies": { "@napi-rs/lzma-linux-x64-gnu": "1.5.1", - "@rollup/rollup-android-arm-eabi": "4.64.0", - "@rollup/rollup-android-arm64": "4.64.0", - "@rollup/rollup-darwin-arm64": "4.64.0", - "@rollup/rollup-darwin-x64": "4.64.0", - "@rollup/rollup-freebsd-arm64": "4.64.0", - "@rollup/rollup-freebsd-x64": "4.64.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.64.0", - "@rollup/rollup-linux-arm-musleabihf": "4.64.0", - "@rollup/rollup-linux-arm64-gnu": "4.64.0", - "@rollup/rollup-linux-arm64-musl": "4.64.0", - "@rollup/rollup-linux-loong64-gnu": "4.64.0", - "@rollup/rollup-linux-loong64-musl": "4.64.0", - "@rollup/rollup-linux-ppc64-gnu": "4.64.0", - "@rollup/rollup-linux-ppc64-musl": "4.64.0", - "@rollup/rollup-linux-riscv64-gnu": "4.64.0", - "@rollup/rollup-linux-riscv64-musl": "4.64.0", - "@rollup/rollup-linux-s390x-gnu": "4.64.0", - "@rollup/rollup-linux-x64-gnu": "4.64.0", - "@rollup/rollup-linux-x64-musl": "4.64.0", - "@rollup/rollup-openbsd-x64": "4.64.0", - "@rollup/rollup-openharmony-arm64": "4.64.0", - "@rollup/rollup-win32-arm64-msvc": "4.64.0", - "@rollup/rollup-win32-ia32-msvc": "4.64.0", - "@rollup/rollup-win32-x64-gnu": "4.64.0", - "@rollup/rollup-win32-x64-msvc": "4.64.0", + "@rollup/rollup-android-arm-eabi": "4.64.6", + "@rollup/rollup-android-arm64": "4.64.6", + "@rollup/rollup-darwin-arm64": "4.64.6", + "@rollup/rollup-darwin-x64": "4.64.6", + "@rollup/rollup-freebsd-arm64": "4.64.6", + "@rollup/rollup-freebsd-x64": "4.64.6", + "@rollup/rollup-linux-arm-gnueabihf": "4.64.6", + "@rollup/rollup-linux-arm-musleabihf": "4.64.6", + "@rollup/rollup-linux-arm64-gnu": "4.64.6", + "@rollup/rollup-linux-arm64-musl": "4.64.6", + "@rollup/rollup-linux-loong64-gnu": "4.64.6", + "@rollup/rollup-linux-loong64-musl": "4.64.6", + "@rollup/rollup-linux-ppc64-gnu": "4.64.6", + "@rollup/rollup-linux-ppc64-musl": "4.64.6", + "@rollup/rollup-linux-riscv64-gnu": "4.64.6", + "@rollup/rollup-linux-riscv64-musl": "4.64.6", + "@rollup/rollup-linux-s390x-gnu": "4.64.6", + "@rollup/rollup-linux-x64-gnu": "4.64.6", + "@rollup/rollup-linux-x64-musl": "4.64.6", + "@rollup/rollup-openbsd-x64": "4.64.6", + "@rollup/rollup-openharmony-arm64": "4.64.6", + "@rollup/rollup-win32-arm64-msvc": "4.64.6", + "@rollup/rollup-win32-ia32-msvc": "4.64.6", + "@rollup/rollup-win32-x64-gnu": "4.64.6", + "@rollup/rollup-win32-x64-msvc": "4.64.6", "fsevents": "~2.3.2" } }, @@ -10961,9 +10961,9 @@ "license": "MIT" }, "node_modules/tinybench": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-6.2.0.tgz", - "integrity": "sha512-78U2TlB2CnVenajOFzf3BKSm0J6oz5L0NV7g32LCPccvYc0lbWvys4d3uUUCS2B1N8PAf2+aekR8i1KbC3HO7Q==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-6.2.2.tgz", + "integrity": "sha512-nIZ2N2dFpjBsg2hgitKu7mA+FvsIJuGJOwysRngmVRRmWgR/UyPjwJj8c/fT/dhm8EkHnF5EOogRf+0Z2qrimA==", "dev": true, "license": "MIT", "engines": { @@ -11318,9 +11318,9 @@ } }, "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -11332,16 +11332,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.71.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.71.0.tgz", - "integrity": "sha512-fBdHYiqQ14RW6mOMXD14Svn82ZsCYAoQSzGRzyEjR59S5A2Krh/l7fGTOQ7iCr8gGy/mHVXtEF7s5fgjEdV0Pw==", + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.71.2.tgz", + "integrity": "sha512-Rz4effbMy2g9wnvOJZG6SbVavX313Lap1vNEbk1RUochzickvzP8P4HB+bkNg5e50eVz1hQGjh9K1omI1xB4Bw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.71.0", - "@typescript-eslint/parser": "8.71.0", - "@typescript-eslint/typescript-estree": "8.71.0", - "@typescript-eslint/utils": "8.71.0" + "@typescript-eslint/eslint-plugin": "8.71.2", + "@typescript-eslint/parser": "8.71.2", + "@typescript-eslint/typescript-estree": "8.71.2", + "@typescript-eslint/utils": "8.71.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11469,9 +11469,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.3.tgz", - "integrity": "sha512-pJ2sYawQS0R/WI928Gj5GlPhTGzbMelq0+4INtSYNDV9ErKJcX6xjGWkoG/VnB3dpUm00zALaqkrUD77pO5TDQ==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.4.tgz", + "integrity": "sha512-t8wonIOdQyOjtPd2VktlBu6QjTVTks6v8bSi7kd0r2Vll8TK1JYDZtRRdbmCHOAMphkZgrzK+L+vXK4pyZ8t4A==", "dev": true, "funding": [ { @@ -11520,16 +11520,16 @@ } }, "node_modules/vite": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.3.2.tgz", - "integrity": "sha512-SQr1x6W5vVSbROg7vsyXIaxK9b0G7zsT68acdWWRmnBUsgDieLCRG+Rep9WdZgcposvv/GSnr4GUUBqB3vXq6w==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.3.4.tgz", + "integrity": "sha512-IftLE8phJhdNRIGNEV4JCCvfNScoZQVfcXaN8TQropWGJtOHcu+iAB9pHcuGvmEb/kddw0LBe/jS8ztdC6xdiQ==", "dev": true, "license": "MIT", "dependencies": { "lightningcss": "^1.33.0", "picomatch": "^4.0.7", - "postcss": "^8.5.28", - "rolldown": "~1.2.11", + "postcss": "^8.5.29", + "rolldown": "~1.2.12", "tinyglobby": "^0.2.17" }, "bin": { @@ -11642,23 +11642,23 @@ } }, "node_modules/vitest": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-5.0.3.tgz", - "integrity": "sha512-xMw97S3rjdtj5dkVat7jCsqWBpvchs3RlpQctUqwJD0KkERk40vz2fJ77lDwW/Vzh/pk18eItYAzkodhSes3jQ==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-5.0.4.tgz", + "integrity": "sha512-z0WxZRV2Sg48wF0FSgMq3TFG8JS38/Qr96vZVZdX6+Em9raQTvnXQvdTFJe2m3rfyJnEHeHQ/snceIdi8D1pVg==", "dev": true, "license": "MIT", "dependencies": { "@types/chai": "^5.2.2", - "@vitest/mocker": "5.0.3", - "chai": "^6.2.2", + "@vitest/mocker": "5.0.4", + "chai": "^6.3.0", "es-module-lexer": "^2.3.2", "expect-type": "^1.4.0", - "magic-string": "^1.2.3", - "obug": "^2.1.4", + "magic-string": "^1.4.3", + "obug": "^3.0.0", "picomatch": "^4.0.7", - "std-env": "^4.2.0", - "tinybench": "^6.1.4", - "tinyexec": "^1.3.0", + "std-env": "^4.3.0", + "tinybench": "^6.2.2", + "tinyexec": "^1.3.1", "tinyglobby": "^0.2.17", "why-is-node-running": "3.2.1" }, @@ -11675,12 +11675,12 @@ "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "5.0.3", - "@vitest/browser-preview": "5.0.3", + "@vitest/browser-playwright": "5.0.4", + "@vitest/browser-preview": "5.0.4", "@vitest/browser-webdriverio": "^5.0.0-beta.5 || >=5.0.0", - "@vitest/coverage-istanbul": "5.0.3", - "@vitest/coverage-v8": "5.0.3", - "@vitest/ui": "5.0.3", + "@vitest/coverage-istanbul": "5.0.4", + "@vitest/coverage-v8": "5.0.4", + "@vitest/ui": "5.0.4", "happy-dom": "*", "jsdom": "*", "vite": "^6.4.0 || ^7.0.0 || ^8.0.0" @@ -12193,9 +12193,9 @@ } }, "node_modules/zod": { - "version": "4.6.5", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.5.tgz", - "integrity": "sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q==", + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.7.tgz", + "integrity": "sha512-g8W2D2kU6a8untc053fX1uVBKzM7yqAxW/3zwk83+6RyF2+SKOuV+c0wBDhUwzV1PaGapmZH+rmcUzPf+3CGwg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" diff --git a/package.json b/package.json index f2c2e69b..680ff6a4 100644 --- a/package.json +++ b/package.json @@ -59,12 +59,12 @@ "testing/social" ], "dependencies": { - "@jitar-plugins/authentication": "^0.2.0", - "@jitar-plugins/database": "^0.2.0", - "@jitar-plugins/events": "^0.2.0", - "@jitar-plugins/files": "^0.2.0", - "@jitar-plugins/http": "^0.2.0", - "@jitar-plugins/notification": "^0.2.0", + "@jitar-plugins/authentication": "^0.2.1", + "@jitar-plugins/database": "^0.2.1", + "@jitar-plugins/events": "^0.2.1", + "@jitar-plugins/files": "^0.2.1", + "@jitar-plugins/http": "^0.2.1", + "@jitar-plugins/notification": "^0.2.1", "@maskingtech/designsystem": "^0.1.0", "@maskingtech/react-toolkit": "^0.0.5", "@theshelf/authentication": "^0.6.0", @@ -83,31 +83,31 @@ "@theshelf/validation": "^0.6.0", "@theshelf/validation-driver-zod": "^0.6.0", "dayjs": "^1.11.23", - "jitar": "^0.11.3", - "react": "^19.2.7", - "react-dom": "^19.2.7", - "react-router-dom": "^7.17.0" + "jitar": "^0.12.0", + "react": "^19.3.0", + "react-dom": "^19.3.0", + "react-router-dom": "^7.18.4" }, "devDependencies": { "@eslint/js": "^9.39.5", - "@jitar/plugin-vite": "^0.11.3", - "@types/node": "^24.10.4", - "@types/react": "^19.2.14", - "@types/react-dom": "^19.2.3", + "@jitar/plugin-vite": "^0.12.0", + "@types/node": "^24.19.1", + "@types/react": "^19.3.0", + "@types/react-dom": "^19.3.0", "@vitejs/plugin-react": "^5.1.4", - "@vitest/coverage-v8": "^5.0.0", - "cpx2": "^9.0.0", + "@vitest/coverage-v8": "^5.0.3", + "cpx2": "^9.0.3", "eslint-plugin-import": "^2.32.0", "eslint-plugin-react": "^7.37.5", - "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-hooks": "^7.1.1", "pm2": "^7.0.4", "rimraf": "^6.1.3", - "tsc-alias": "^1.8.16", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.0", - "vite": "^8.2.2", + "tsc-alias": "^1.9.7", + "typescript": "^6.0.3", + "typescript-eslint": "^8.71.0", + "vite": "^8.3.4", "vite-plugin-pwa": "^1.2.0", - "vitest": "^5.0.0" + "vitest": "^5.0.3" }, "overrides": { "@rollup/plugin-terser": "^1.0.0" From 2bacf6e33d65661b648fbfcb1aac24fe1a98955e Mon Sep 17 00:00:00 2001 From: Bas Meeuwissen Date: Fri, 16 Oct 2026 13:48:44 +0200 Subject: [PATCH 02/26] #530: jitar changes --- deployment/services/demonstration/social.json | 2 +- deployment/services/production/insights-app.json | 2 +- deployment/services/production/moderation-app.json | 2 +- deployment/services/production/social-app.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/deployment/services/demonstration/social.json b/deployment/services/demonstration/social.json index 778d8bf2..91387f34 100644 --- a/deployment/services/demonstration/social.json +++ b/deployment/services/demonstration/social.json @@ -35,7 +35,7 @@ "social.writes" ], - "serveIndexOnNotFound": true, + "fallback": "index.html", "assetRoot": "./social/app", "assets": ["index.html", "appicon32.png", "assets/**/*", "registerSW.js", "sw.js", "workbox-*.js", "manifest.webmanifest"] } diff --git a/deployment/services/production/insights-app.json b/deployment/services/production/insights-app.json index 66e58da1..e07f563c 100644 --- a/deployment/services/production/insights-app.json +++ b/deployment/services/production/insights-app.json @@ -2,7 +2,7 @@ "url": "http://127.0.0.1:1000", "repository": { - "serveIndexOnNotFound": true, + "fallback": "index.html", "assetRoot": "./insights/app", "assets": ["index.html", "appicon32.png", "assets/**/*", "registerSW.js", "sw.js", "workbox-*.js", "manifest.webmanifest" ] } diff --git a/deployment/services/production/moderation-app.json b/deployment/services/production/moderation-app.json index a555f21d..9aceabae 100644 --- a/deployment/services/production/moderation-app.json +++ b/deployment/services/production/moderation-app.json @@ -2,7 +2,7 @@ "url": "http://127.0.0.1:1000", "repository": { - "serveIndexOnNotFound": true, + "fallback": "index.html", "assetRoot": "./moderation/app", "assets": ["index.html", "assets/**/*", "registerSW.js", "sw.js", "workbox-*.js", "manifest.webmanifest" ] } diff --git a/deployment/services/production/social-app.json b/deployment/services/production/social-app.json index 3e66ae03..6b601544 100644 --- a/deployment/services/production/social-app.json +++ b/deployment/services/production/social-app.json @@ -2,7 +2,7 @@ "url": "http://127.0.0.1:1000", "repository": { - "serveIndexOnNotFound": true, + "fallback": "index.html", "assetRoot": "./social/app", "assets": ["index.html", "appicon32.png", "assets/**/*", "registerSW.js", "sw.js", "workbox-*.js", "manifest.webmanifest" ] } From 9f29b554a6e4c5fab5ee2d3809d4224e6e9ed25c Mon Sep 17 00:00:00 2001 From: Bas Meeuwissen Date: Fri, 16 Oct 2026 13:50:24 +0200 Subject: [PATCH 03/26] #530: update keycloack image --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 7f618f48..e3663b9f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -84,7 +84,7 @@ services: - seaweedfs-filer keycloak: - image: quay.io/keycloak/keycloak:26.2 + image: quay.io/keycloak/keycloak:26.5.2 container_name: keycloak restart: always volumes: From 66af1cc6c28c49614da570bc66852cccad8384f1 Mon Sep 17 00:00:00 2001 From: Bas Meeuwissen Date: Fri, 16 Oct 2026 14:58:39 +0200 Subject: [PATCH 04/26] #530: added missing stylesheet --- development/social/app/public/comify.it.css | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 development/social/app/public/comify.it.css diff --git a/development/social/app/public/comify.it.css b/development/social/app/public/comify.it.css new file mode 100644 index 00000000..e69de29b From c975d770b751b2d2eac3c6ed7349ff6d195e6ea5 Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Fri, 16 Oct 2026 15:26:42 +0200 Subject: [PATCH 05/26] #530: config updates --- deployment/segments/social.notification.json | 6 +++++- deployment/segments/social.reads.json | 19 ++++++++++++++++--- deployment/segments/social.writes.json | 2 +- .../services/production/notification.json | 6 ++++-- 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/deployment/segments/social.notification.json b/deployment/segments/social.notification.json index 63b97db7..8faac7d4 100644 --- a/deployment/segments/social.notification.json +++ b/deployment/segments/social.notification.json @@ -1,3 +1,7 @@ { - "./social/domain/notification/subscriptions": { "default": { "access": "private" } } + "./social/domain/notification/getRecent/retrieve": { "default": { "access": "protected" } }, + + "./social/domain/notification/subscriptions": { "default": { "access": "private" } }, + "./social/domain/notification/_create": { "default": { "access": "private" } }, + "./social/domain/notification/removeByPost": { "default": { "access": "private" } } } \ No newline at end of file diff --git a/deployment/segments/social.reads.json b/deployment/segments/social.reads.json index bed86d93..32582c03 100644 --- a/deployment/segments/social.reads.json +++ b/deployment/segments/social.reads.json @@ -2,32 +2,45 @@ "./social/domain/creator/create/makeNickname/retrieveByNickname": { "default": { "access": "protected" } }, "./social/domain/creator/create/makeNickname/retrieveByStartNickname": { "default": { "access": "protected" } }, "./social/domain/creator/getByNickname/retrieve": { "default": { "access": "protected" } }, + "./social/domain/creator/getById/retrieve": { "default": { "access": "protected" } }, "./social/domain/creator/getIdByEmail/retrieve": { "default": { "access": "protected" } }, + "./social/domain/creator/getManyById/retrieve": { "default": { "access": "protected" } }, "./social/domain/creator/getOtherIds/retrieve": { "default": { "access": "protected" } }, + "./social/domain/creator/updateNickname/checkAvailability": { "default": { "access": "protected" } }, "./social/domain/creator/updateNickname/retrieveByNickname": { "default": { "access": "protected" } }, "./social/domain/creator.metrics/_retrieveByCreator": { "default": { "access": "protected" } }, + "./social/domain/creator.metrics/get/retrieveExisting": { "default": { "access": "protected" } }, + "./social/domain/creator.metrics/getMany/retrieveExisting": { "default": { "access": "protected" } }, - "./social/domain/image/getById": { "default": { "access": "protected" } }, + "./social/domain/image/getById/retrieveRecord": { "default": { "access": "protected" } }, + "./social/domain/image/getManyById/retrieveRecords": { "default": { "access": "protected" } }, "./social/domain/post/_retrieveById": { "default": { "access": "protected" } }, "./social/domain/post/explore/retrieve": { "default": { "access": "protected" } }, "./social/domain/post/getByCreator/retrieve": { "default": { "access": "protected" } }, "./social/domain/post/getByFollowing/retrieve": { "default": { "access": "protected" } }, "./social/domain/post/getByParent/retrieve": { "default": { "access": "protected" } }, + "./social/domain/post/getManyById/retrieve": { "default": { "access": "protected" } }, "./social/domain/post/getRecommended/retrieve": { "default": { "access": "protected" } }, "./social/domain/post.comic/_retrieveById": { "default": { "access": "protected" } }, + "./social/domain/post.comic/getManyById/retrieve": { "default": { "access": "protected" } }, "./social/domain/post.comment/getById/retrieve": { "default": { "access": "protected" } }, + "./social/domain/post.comment/getManyById/retrieve": { "default": { "access": "protected" } }, "./social/domain/post.metrics/_retrieveByPost": { "default": { "access": "protected" } }, + "./social/domain/post.metrics/get/retrieveExisting": { "default": { "access": "protected" } }, + "./social/domain/post.metrics/getMany/retrieveExisting": { "default": { "access": "protected" } }, "./social/domain/post.rating/exists/retrieve": { "default": { "access": "protected" } }, + "./social/domain/post.rating/existsMany/retrieve": { "default": { "access": "protected" } }, "./social/domain/post.rating/toggle/retrieve": { "default": { "access": "protected" } }, "./social/domain/relation/_retrieve": { "default": { "access": "protected" } }, "./social/domain/relation/_retrieveFollowing": { "default": { "access": "protected" } }, - "./social/domain/relation/establish/exists": { "default": { "access": "protected" } }, - "./social/domain/relation/getFollowers/retrieve": { "default": { "access": "protected" } } + "./social/domain/relation/establish/exists/retrieve": { "default": { "access": "protected" } }, + "./social/domain/relation/getFollowers/retrieve": { "default": { "access": "protected" } }, + "./social/domain/relation/getMany/retrieveEstablished": { "default": { "access": "protected" } } } \ No newline at end of file diff --git a/deployment/segments/social.writes.json b/deployment/segments/social.writes.json index 5de3ef70..a0a77085 100644 --- a/deployment/segments/social.writes.json +++ b/deployment/segments/social.writes.json @@ -9,7 +9,7 @@ "./social/domain/creator.metrics/updateFollowing/persist": { "default": { "access": "protected" } }, "./social/domain/creator.metrics/updatePosts/persist": { "default": { "access": "protected" } }, - "./social/domain/image/_save": { "default": { "access": "protected" } }, + "./social/domain/image/_save/persist": { "default": { "access": "protected" } }, "./social/domain/image/remove": { "default": { "access": "protected" } }, "./social/domain/post/_create/persist": { "default": { "access": "protected" } }, diff --git a/deployment/services/production/notification.json b/deployment/services/production/notification.json index e48fb644..2cb4441b 100644 --- a/deployment/services/production/notification.json +++ b/deployment/services/production/notification.json @@ -1,10 +1,12 @@ { "url": "http://127.0.0.1:4001", "setUp": [ - "./common/integrations/database/setUp" + "./common/integrations/database/setUp", + "./common/integrations/events/setUp" ], "tearDown": [ - "./common/integrations/database/tearDown" + "./common/integrations/database/tearDown", + "./common/integrations/events/tearDown" ], "healthChecks": [ "./common/integrations/database/healthCheck" From 0e07305d0ba62fae41f62489bbdc150a17e8a628 Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Fri, 16 Oct 2026 16:01:32 +0200 Subject: [PATCH 06/26] #530: more config updates --- deployment/segments/social.reads.json | 3 +++ deployment/segments/social.writes.json | 1 + 2 files changed, 4 insertions(+) diff --git a/deployment/segments/social.reads.json b/deployment/segments/social.reads.json index 32582c03..bd093465 100644 --- a/deployment/segments/social.reads.json +++ b/deployment/segments/social.reads.json @@ -13,7 +13,10 @@ "./social/domain/creator.metrics/get/retrieveExisting": { "default": { "access": "protected" } }, "./social/domain/creator.metrics/getMany/retrieveExisting": { "default": { "access": "protected" } }, + "./social/domain/image/_save/fileExists": { "default": { "access": "protected" } }, + "./social/domain/image/getById/retrieveFile": { "default": { "access": "protected" } }, "./social/domain/image/getById/retrieveRecord": { "default": { "access": "protected" } }, + "./social/domain/image/getManyById/retrieveFiles": { "default": { "access": "protected" } }, "./social/domain/image/getManyById/retrieveRecords": { "default": { "access": "protected" } }, "./social/domain/post/_retrieveById": { "default": { "access": "protected" } }, diff --git a/deployment/segments/social.writes.json b/deployment/segments/social.writes.json index a0a77085..b9313201 100644 --- a/deployment/segments/social.writes.json +++ b/deployment/segments/social.writes.json @@ -9,6 +9,7 @@ "./social/domain/creator.metrics/updateFollowing/persist": { "default": { "access": "protected" } }, "./social/domain/creator.metrics/updatePosts/persist": { "default": { "access": "protected" } }, + "./social/domain/image/_save/insertFile": { "default": { "access": "protected" } }, "./social/domain/image/_save/persist": { "default": { "access": "protected" } }, "./social/domain/image/remove": { "default": { "access": "protected" } }, From f628f948ed9a02421a2959f1f82839a2b585b421 Mon Sep 17 00:00:00 2001 From: Bas Meeuwissen Date: Sat, 17 Oct 2026 21:49:25 +0200 Subject: [PATCH 07/26] #530: removed pwa dep --- package-lock.json | 4343 ++++++++------------------------------------- package.json | 1 - 2 files changed, 722 insertions(+), 3622 deletions(-) diff --git a/package-lock.json b/package-lock.json index 804c2dfc..c0a3b46b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -65,7 +65,6 @@ "typescript": "^6.0.3", "typescript-eslint": "^8.71.0", "vite": "^8.3.4", - "vite-plugin-pwa": "^1.2.0", "vitest": "^5.0.3" }, "engines": { @@ -88,23 +87,6 @@ "name": "@comify/social", "version": "0.0.1" }, - "node_modules/@apideck/better-ajv-errors": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.7.tgz", - "integrity": "sha512-TajUJwGWbDwkCx/CZi7tRE8PVB7simCvKJfHUsSdvps+aTM/PDPP4gkLmKnc+x3CE//y9i/nj74GqdL/hwk7Iw==", - "dev": true, - "license": "MIT", - "dependencies": { - "jsonpointer": "^5.0.1", - "leven": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "ajv": ">=8" - } - }, "node_modules/@aws-sdk/checksums": { "version": "3.1001.3", "resolved": "https://registry.npmjs.org/@aws-sdk/checksums/-/checksums-3.1001.3.tgz", @@ -486,19 +468,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz", - "integrity": "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-compilation-targets": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", @@ -516,85 +485,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz", - "integrity": "sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.29.7", - "@babel/helper-member-expression-to-functions": "^7.29.7", - "@babel/helper-optimise-call-expression": "^7.29.7", - "@babel/helper-replace-supers": "^7.29.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", - "@babel/traverse": "^7.29.7", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.29.10", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.29.10.tgz", - "integrity": "sha512-/YY9soQuWa8TURtHXHT+GbklpbAA+dZErxFGHIr6qgDg96xuGWrTAs1+MfjgVJPF0YLQsOVsOYs8lhgsPbOinQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.29.7", - "regexpu-core": "^6.5.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", - "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "debug": "^4.4.3", - "lodash.debounce": "^4.0.8", - "resolve": "^1.22.11" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve": { - "version": "1.22.13", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.13.tgz", - "integrity": "sha512-Dj/cW9zBV2aRj6XzCxuGIs3ESZKv02jixne3q6jFZYZ3/Tg09gHHviSMDL4kObh9pqSahdRHEnDoaP2gn8YLhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "is-core-module": "^2.17.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/@babel/helper-globals": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", @@ -605,20 +495,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz", - "integrity": "sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.29.7", - "@babel/types": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-module-imports": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", @@ -651,19 +527,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz", - "integrity": "sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-plugin-utils": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", @@ -674,56 +537,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.29.7.tgz", - "integrity": "sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.29.7", - "@babel/helper-wrap-function": "^7.29.7", - "@babel/traverse": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz", - "integrity": "sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.29.7", - "@babel/helper-optimise-call-expression": "^7.29.7", - "@babel/traverse": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz", - "integrity": "sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.29.7", - "@babel/types": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-string-parser": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", @@ -754,21 +567,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.29.7.tgz", - "integrity": "sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.29.7", - "@babel/traverse": "^7.29.7", - "@babel/types": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helpers": { "version": "7.29.10", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.10.tgz", @@ -799,27 +597,10 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.29.7.tgz", - "integrity": "sha512-j8SrR0zLZrRsC09DlszEx8FpMiwukKffYXMK0d5LmOglO7vGG6sz/BR/20yHqWH+Lnn31JTt2PE3hIWNgM2J6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/traverse": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "node_modules/@babel/plugin-transform-react-jsx-self": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.29.7.tgz", - "integrity": "sha512-r8j8escF+U2FUHo0KOhPUdMzUO+jp9fInva6+ACVAF3Y97Ev+5iNZwiqTghmzNeWwDkOPlYuTcfb1vDaoZKmAQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz", + "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==", "dev": true, "license": "MIT", "dependencies": { @@ -829,13 +610,13 @@ "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "node_modules/@babel/plugin-transform-react-jsx-source": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.29.7.tgz", - "integrity": "sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz", + "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==", "dev": true, "license": "MIT", "dependencies": { @@ -845,2252 +626,710 @@ "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": { + "node_modules/@babel/template": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.7.tgz", - "integrity": "sha512-oBNVCvnO5tND+xSopWvV8WNGfpTfgP4Zr/YXXSj8zfmcPktp5Ku/aZlsIowgSD4fjmgHn6sGmB9APVsU5zOdhA==", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.29.7.tgz", - "integrity": "sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw==", + "node_modules/@babel/traverse": { + "version": "7.29.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.10.tgz", + "integrity": "sha512-B3lYAs2nkKskbgQ1nfy8Ma9ao9Q1rntTAQHrzzyDuj+TSO+X3le6PfWwqDvodsb+OumE10eMFfuMCTQSQ5iuIQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", - "@babel/plugin-transform-optional-chaining": "^7.29.7" + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.8", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.9", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.8", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" } }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.29.7.tgz", - "integrity": "sha512-pn6QacGLgvCcwc+syUhKE/qSjV2D1IHDB84RNxWYSt1mW3K/SCtjinZ2p0cETJxAWBjPy3K/1lHwG5BjjPxNlw==", + "node_modules/@babel/types": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/traverse": "^7.29.7" + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "node_modules/@bcoe/v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", "dev": true, "license": "MIT", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.29.7.tgz", - "integrity": "sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw==", + "node_modules/@comify/common": { + "resolved": "development/common", + "link": true + }, + "node_modules/@comify/common-test": { + "resolved": "testing/common", + "link": true + }, + "node_modules/@comify/insights": { + "resolved": "development/insights", + "link": true + }, + "node_modules/@comify/insights-test": { + "resolved": "testing/insights", + "link": true + }, + "node_modules/@comify/moderation": { + "resolved": "development/moderation", + "link": true + }, + "node_modules/@comify/moderation-test": { + "resolved": "testing/moderation", + "link": true + }, + "node_modules/@comify/social": { + "resolved": "development/social", + "link": true + }, + "node_modules/@comify/social-test": { + "resolved": "testing/social", + "link": true + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.10.1.tgz", + "integrity": "sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.29.7.tgz", - "integrity": "sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.29.7.tgz", - "integrity": "sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ==", + "node_modules/@eslint/config-array": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.5" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.7.tgz", - "integrity": "sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==", + "node_modules/@eslint/config-array/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/helper-remap-async-to-generator": "^7.29.7", - "@babel/traverse": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "peer": true }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.29.7.tgz", - "integrity": "sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==", + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.21.tgz", + "integrity": "sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@babel/helper-module-imports": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/helper-remap-async-to-generator": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.29.7.tgz", - "integrity": "sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA==", + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, - "license": "MIT", + "license": "ISC", + "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "*" } }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.29.7.tgz", - "integrity": "sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==", + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" + "@eslint/core": "^0.17.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.29.7.tgz", - "integrity": "sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==", + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" + "@types/json-schema": "^7.0.15" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.29.7.tgz", - "integrity": "sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==", + "node_modules/@eslint/eslintrc": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.7.tgz", + "integrity": "sha512-F42g89Qd5oAWtp0k0nnSrjziAKza7w8SVT4mStc18LZMaRb4J1HQAHLCalEtDCxrTuksx7NU9qsmeLwpOfPqWw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" + "ajv": "^6.14.0", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.3.2", + "minimatch": "^3.1.5", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=6.9.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "@babel/core": "^7.12.0" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.29.7.tgz", - "integrity": "sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==", + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.29.7", - "@babel/helper-compilation-targets": "^7.29.7", - "@babel/helper-globals": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/helper-replace-supers": "^7.29.7", - "@babel/traverse": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.29.7.tgz", - "integrity": "sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA==", + "node_modules/@eslint/eslintrc/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/template": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "peer": true }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.29.7.tgz", - "integrity": "sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==", + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.21.tgz", + "integrity": "sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/traverse": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.29.7.tgz", - "integrity": "sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ==", + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" - }, + "peer": true, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">= 4" } }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.29.7.tgz", - "integrity": "sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ==", + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT", + "peer": true + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "*" } }, - "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.7.tgz", - "integrity": "sha512-2wiIyo2BjtgU7HufSeDnL9L2O7zr8jmhFKuSr65VpRkUiRKRNpb0mdlk56+XPPKoIrfHqzbMuglDvZun0RISsA==", + "node_modules/@eslint/js": { + "version": "9.39.5", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.5.tgz", + "integrity": "sha512-QywQuszQh77pIXCsq998c8hbhSTI/azTty1Z6N53dmAudKHhy573j3yvRLsX2BSp8YpLtoCEG8E9DJe+8zUh4A==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" - }, "engines": { - "node": ">=6.9.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "funding": { + "url": "https://eslint.org/donate" } }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.29.7.tgz", - "integrity": "sha512-giOlEm/EFjfjr+te9NsdjkUo2v4f8rS/SXPumRVHAtbNcyNlvtREkU1dZzaIDclNpnaVhlCqRdFKhJBjBikzLg==", + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, + "license": "Apache-2.0", + "peer": true, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@babel/plugin-transform-explicit-resource-management": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.29.7.tgz", - "integrity": "sha512-Rstj7coNz8sE+7Ju7ihpHLI564lsK5pUpNNlvptCIC/16E/S5hbl6n3kESPKdNRmqEWlpn5xpS5Q2dvXBsySLw==", + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/plugin-transform-destructuring": "^7.29.7" + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.29.7.tgz", - "integrity": "sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ==", + "node_modules/@humanfs/core": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", + "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" + "@humanfs/types": "^0.15.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.18.0" } }, - "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.29.7.tgz", - "integrity": "sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==", + "node_modules/@humanfs/node": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", + "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" + "@humanfs/core": "^0.19.2", + "@humanfs/types": "^0.15.0", + "@humanwhocodes/retry": "^0.4.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.18.0" } }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.29.7.tgz", - "integrity": "sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==", + "node_modules/@humanfs/types": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", + "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" - }, + "license": "Apache-2.0", + "peer": true, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.18.0" } }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.29.7.tgz", - "integrity": "sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg==", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/traverse": "^7.29.7" - }, + "license": "Apache-2.0", + "peer": true, "engines": { - "node": ">=6.9.0" + "node": ">=12.22" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.29.7.tgz", - "integrity": "sha512-RRnE2+eon1rJAq8MnoF1b5kTpY1vU88twHcvcKMrsqP/jxIRqDVs9iJB5fqPuqyeFAW0wJo4MlUIPpQCq/aRsg==", + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, + "license": "Apache-2.0", + "peer": true, "engines": { - "node": ">=6.9.0" + "node": ">=18.18" }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jitar-plugins/authentication": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@jitar-plugins/authentication/-/authentication-0.2.1.tgz", + "integrity": "sha512-crc4bP4eeG7hNSI5yEoJGIByeidF9u5xON5Qas0VdxWBD8CCKYiLwMOF4StlWN2AgfDx7NSPJsvdSEOasVbrrg==", "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@theshelf/authentication": "^0.6.0", + "jitar": "^0.11.0 || ^0.12.0" } }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.29.7.tgz", - "integrity": "sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, + "node_modules/@jitar-plugins/database": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@jitar-plugins/database/-/database-0.2.1.tgz", + "integrity": "sha512-t3+7/LFE+OtPPi+uytuBYjbrGAjSfichcoQy3c7ekpbZCLODNGWiUic4eDvNzkFQbabUJ6p4oMAWM/kSEBNnhg==", "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@theshelf/database": "^0.6.0", + "jitar": "^0.11.0 || ^0.12.0" } }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.29.7.tgz", - "integrity": "sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, + "node_modules/@jitar-plugins/events": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@jitar-plugins/events/-/events-0.2.1.tgz", + "integrity": "sha512-7uEawCyAlb2S19bANyN5OISzuXAAlZ+IRxMbloCE4nqIOTDrvjrz54Nxic7+Qw5pRTsjWjpJWKREsFEs7w3pqQ==", "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@theshelf/events": "^0.6.0", + "jitar": "^0.11.0 || ^0.12.0" } }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.29.7.tgz", - "integrity": "sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, + "node_modules/@jitar-plugins/files": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@jitar-plugins/files/-/files-0.2.1.tgz", + "integrity": "sha512-3oi1ZieXUHjtxj5D87JDv9RMnk/yQuBCMVvorCkJdULOy1rtY8tmzhFfoDBwTvoT0vcdwNx8sEKFTM84Sx02YA==", "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@theshelf/files": "^0.6.0", + "jitar": "^0.11.0 || ^0.12.0" } }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.29.7.tgz", - "integrity": "sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, + "node_modules/@jitar-plugins/http": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@jitar-plugins/http/-/http-0.2.1.tgz", + "integrity": "sha512-uCQ+5k8PHJ8T/PyMvWosrbXfUEkTwU0Cs6jEHPn706g6SCOU1dXuY8jCGFJ723B4zBJoIV+2fSMQaaqEWNniPA==", "peerDependencies": { - "@babel/core": "^7.0.0-0" + "jitar": "^0.11.0 || ^0.12.0" } }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.29.7.tgz", - "integrity": "sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, + "node_modules/@jitar-plugins/notification": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@jitar-plugins/notification/-/notification-0.2.1.tgz", + "integrity": "sha512-HIXJ3hYc37RyZcPMqLrDMMKzoFXxf2003nuoYt7vzVRIdyJ7ykvDSpN0pnl6SyBC01b4bxnEODw95zhr4boUCQ==", "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@theshelf/notification": "^0.6.0", + "jitar": "^0.11.0 || ^0.12.0" } }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.29.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.8.tgz", - "integrity": "sha512-6iSnEK0zlkLKU4heofK/AdmRD4e2SHVpJMtrwnTCzhnaM98ria4rTrOXBBi45BTTYnJtO8txnPsX4fChYXkmeA==", + "node_modules/@jitar/plugin-vite": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@jitar/plugin-vite/-/plugin-vite-0.12.0.tgz", + "integrity": "sha512-h1XQGgOwOeBrmSZa1w7hdnE5OgXvBeA3e5PoOcBF8zrAsuROjuTGa+E02Vy//6j9p0dKfo4z0j6diTnKQJGIvw==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/helper-validator-identifier": "^7.29.7", - "@babel/traverse": "^7.29.8" - }, - "engines": { - "node": ">=6.9.0" - }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "jitar": "^0.12.0", + "vite": ">=7" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } } }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.29.7.tgz", - "integrity": "sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.7.tgz", - "integrity": "sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==", + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.29.7.tgz", - "integrity": "sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.29.7.tgz", - "integrity": "sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz", + "integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.29.7.tgz", - "integrity": "sha512-zR7fv/z14OjgHl4AgRtkDBvBMhIzCxqV/qN/2BCRC7LjFwvuzjYe7gDWxC4Wl/SNsLM6SE1IWvRPYMgSJaUvNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.29.7.tgz", - "integrity": "sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/plugin-transform-destructuring": "^7.29.7", - "@babel/plugin-transform-parameters": "^7.29.7", - "@babel/traverse": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.29.7.tgz", - "integrity": "sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/helper-replace-supers": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.29.7.tgz", - "integrity": "sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.29.7.tgz", - "integrity": "sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.29.7.tgz", - "integrity": "sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.29.7.tgz", - "integrity": "sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.29.7.tgz", - "integrity": "sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.29.7", - "@babel/helper-create-class-features-plugin": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.29.7.tgz", - "integrity": "sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz", - "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz", - "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.29.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.8.tgz", - "integrity": "sha512-0UpIXPtdDtMXfnV2OJAVMLpj3H/92vmkA6lpSRakmycJvj3VUy6Xs1dM8tXRugupykr5WB+LpiVl0J8LMVg2mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regexp-modifiers": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.29.7.tgz", - "integrity": "sha512-mB5Fs0VWrJ42ZCmc8114v60qetdaUVNkj9PmSZRmanCZM3S9hm0CFRLjRmYIsuXav14l2jvZ+4T8iiCGnhj3nQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.29.7.tgz", - "integrity": "sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "license": "MIT" }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.29.7.tgz", - "integrity": "sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg==", + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.29.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.8.tgz", - "integrity": "sha512-4S9ksMGVWUshvgK0mKfvZky7leuG5/uoFVwMpAomJ8bMoDJiNHRVmc1EglwW/CmGVSqqWpEbXm9FmbRit22qoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" - }, + "node_modules/@maskingtech/designsystem": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@maskingtech/designsystem/-/designsystem-0.1.0.tgz", + "integrity": "sha512-rfVjeau73+omy+oIEE1N1qW4XjeDi0imO4PAPKc4LQZdsI5iJPw3us2+Q42vf7T315sgXcPwQ0GtvCyil3NxCg==", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.29.7.tgz", - "integrity": "sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" + "node": ">=24" }, - "engines": { - "node": ">=6.9.0" + "optionalDependencies": { + "@rollup/rollup-linux-x64-gnu": "^4.63.4" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "react": "^19" } }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.29.7.tgz", - "integrity": "sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" + "node_modules/@maskingtech/react-toolkit": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@maskingtech/react-toolkit/-/react-toolkit-0.0.5.tgz", + "integrity": "sha512-0izR4au1jOW2JvbaMoqVC7BZ6aEIgkKMPkmq12CBaTt7lt5HCOmaHY4iTQbuabPPzAhLnwkVxMmYhpWBNmiWoA==", + "optionalDependencies": { + "@rollup/rollup-linux-x64-gnu": "^4.56.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.29.7.tgz", - "integrity": "sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.29.7.tgz", - "integrity": "sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.29.7.tgz", - "integrity": "sha512-OgZ+zoAJgZLUCunsTRQ5LAjOywDv5zzZ2/hQ5aMw1pGXyY2rtE8/chXYUmu3AlVHKpm10KEdG9aMwbI/K76ZGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.29.7.tgz", - "integrity": "sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.29.7.tgz", - "integrity": "sha512-BLOhLht9DOJwIxlmp91wHvkXv1lguuHS3/FwUO8HL1H0u8s4hR1gASVFyilu9iGtcTRYqjTZmlsFFeQletntEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.7.tgz", - "integrity": "sha512-GYzX36n1nsciIb0uyH0GHwxwtNwPQIcpxSeiVLDtG/B7jB5xXgchnmL1f/jCX5o+pwnaDBtO60ONSJhEBJfxYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.29.7", - "@babel/helper-compilation-targets": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/helper-validator-option": "^7.29.7", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.29.7", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.29.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.29.7", - "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": "^7.29.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.29.7", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.29.7", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.29.7", - "@babel/plugin-syntax-import-attributes": "^7.29.7", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.29.7", - "@babel/plugin-transform-async-generator-functions": "^7.29.7", - "@babel/plugin-transform-async-to-generator": "^7.29.7", - "@babel/plugin-transform-block-scoped-functions": "^7.29.7", - "@babel/plugin-transform-block-scoping": "^7.29.7", - "@babel/plugin-transform-class-properties": "^7.29.7", - "@babel/plugin-transform-class-static-block": "^7.29.7", - "@babel/plugin-transform-classes": "^7.29.7", - "@babel/plugin-transform-computed-properties": "^7.29.7", - "@babel/plugin-transform-destructuring": "^7.29.7", - "@babel/plugin-transform-dotall-regex": "^7.29.7", - "@babel/plugin-transform-duplicate-keys": "^7.29.7", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.7", - "@babel/plugin-transform-dynamic-import": "^7.29.7", - "@babel/plugin-transform-explicit-resource-management": "^7.29.7", - "@babel/plugin-transform-exponentiation-operator": "^7.29.7", - "@babel/plugin-transform-export-namespace-from": "^7.29.7", - "@babel/plugin-transform-for-of": "^7.29.7", - "@babel/plugin-transform-function-name": "^7.29.7", - "@babel/plugin-transform-json-strings": "^7.29.7", - "@babel/plugin-transform-literals": "^7.29.7", - "@babel/plugin-transform-logical-assignment-operators": "^7.29.7", - "@babel/plugin-transform-member-expression-literals": "^7.29.7", - "@babel/plugin-transform-modules-amd": "^7.29.7", - "@babel/plugin-transform-modules-commonjs": "^7.29.7", - "@babel/plugin-transform-modules-systemjs": "^7.29.7", - "@babel/plugin-transform-modules-umd": "^7.29.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.7", - "@babel/plugin-transform-new-target": "^7.29.7", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.29.7", - "@babel/plugin-transform-numeric-separator": "^7.29.7", - "@babel/plugin-transform-object-rest-spread": "^7.29.7", - "@babel/plugin-transform-object-super": "^7.29.7", - "@babel/plugin-transform-optional-catch-binding": "^7.29.7", - "@babel/plugin-transform-optional-chaining": "^7.29.7", - "@babel/plugin-transform-parameters": "^7.29.7", - "@babel/plugin-transform-private-methods": "^7.29.7", - "@babel/plugin-transform-private-property-in-object": "^7.29.7", - "@babel/plugin-transform-property-literals": "^7.29.7", - "@babel/plugin-transform-regenerator": "^7.29.7", - "@babel/plugin-transform-regexp-modifiers": "^7.29.7", - "@babel/plugin-transform-reserved-words": "^7.29.7", - "@babel/plugin-transform-shorthand-properties": "^7.29.7", - "@babel/plugin-transform-spread": "^7.29.7", - "@babel/plugin-transform-sticky-regex": "^7.29.7", - "@babel/plugin-transform-template-literals": "^7.29.7", - "@babel/plugin-transform-typeof-symbol": "^7.29.7", - "@babel/plugin-transform-unicode-escapes": "^7.29.7", - "@babel/plugin-transform-unicode-property-regex": "^7.29.7", - "@babel/plugin-transform-unicode-regex": "^7.29.7", - "@babel/plugin-transform-unicode-sets-regex": "^7.29.7", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.15", - "babel-plugin-polyfill-corejs3": "^0.14.0", - "babel-plugin-polyfill-regenerator": "^0.6.6", - "core-js-compat": "^3.48.0", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.29.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.10.tgz", - "integrity": "sha512-NpugTzbKgGrNe45Ui32cN8vCFFMxVtP/9rtfwv0nP5FRDAjvYBxJcLVpYA9mr1jxP6cnIT7x9LUzuDTbWYYNRA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", - "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.7", - "@babel/parser": "^7.29.7", - "@babel/types": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.29.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.10.tgz", - "integrity": "sha512-B3lYAs2nkKskbgQ1nfy8Ma9ao9Q1rntTAQHrzzyDuj+TSO+X3le6PfWwqDvodsb+OumE10eMFfuMCTQSQ5iuIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.7", - "@babel/generator": "^7.29.8", - "@babel/helper-globals": "^7.29.7", - "@babel/parser": "^7.29.9", - "@babel/template": "^7.29.7", - "@babel/types": "^7.29.8", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.29.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", - "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.29.7", - "@babel/helper-validator-identifier": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", - "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@comify/common": { - "resolved": "development/common", - "link": true - }, - "node_modules/@comify/common-test": { - "resolved": "testing/common", - "link": true - }, - "node_modules/@comify/insights": { - "resolved": "development/insights", - "link": true - }, - "node_modules/@comify/insights-test": { - "resolved": "testing/insights", - "link": true - }, - "node_modules/@comify/moderation": { - "resolved": "development/moderation", - "link": true - }, - "node_modules/@comify/moderation-test": { - "resolved": "testing/moderation", - "link": true - }, - "node_modules/@comify/social": { - "resolved": "development/social", - "link": true - }, - "node_modules/@comify/social-test": { - "resolved": "testing/social", - "link": true - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.10.1.tgz", - "integrity": "sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", - "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/config-array": { - "version": "0.21.2", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", - "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@eslint/object-schema": "^2.1.7", - "debug": "^4.3.1", - "minimatch": "^3.1.5" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/config-array/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "1.1.21", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.21.tgz", - "integrity": "sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", - "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@eslint/core": "^0.17.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", - "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.7.tgz", - "integrity": "sha512-F42g89Qd5oAWtp0k0nnSrjziAKza7w8SVT4mStc18LZMaRb4J1HQAHLCalEtDCxrTuksx7NU9qsmeLwpOfPqWw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ajv": "^6.14.0", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.3.2", - "minimatch": "^3.1.5", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", - "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@eslint/eslintrc/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.21", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.21.tgz", - "integrity": "sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/js": { - "version": "9.39.5", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.5.tgz", - "integrity": "sha512-QywQuszQh77pIXCsq998c8hbhSTI/azTty1Z6N53dmAudKHhy573j3yvRLsX2BSp8YpLtoCEG8E9DJe+8zUh4A==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", - "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", - "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@eslint/core": "^0.17.0", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@humanfs/core": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", - "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@humanfs/types": "^0.15.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.8", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", - "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@humanfs/core": "^0.19.2", - "@humanfs/types": "^0.15.0", - "@humanwhocodes/retry": "^0.4.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/types": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", - "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@isaacs/cliui": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", - "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@jitar-plugins/authentication": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@jitar-plugins/authentication/-/authentication-0.2.1.tgz", - "integrity": "sha512-crc4bP4eeG7hNSI5yEoJGIByeidF9u5xON5Qas0VdxWBD8CCKYiLwMOF4StlWN2AgfDx7NSPJsvdSEOasVbrrg==", - "peerDependencies": { - "@theshelf/authentication": "^0.6.0", - "jitar": "^0.11.0 || ^0.12.0" - } - }, - "node_modules/@jitar-plugins/database": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@jitar-plugins/database/-/database-0.2.1.tgz", - "integrity": "sha512-t3+7/LFE+OtPPi+uytuBYjbrGAjSfichcoQy3c7ekpbZCLODNGWiUic4eDvNzkFQbabUJ6p4oMAWM/kSEBNnhg==", - "peerDependencies": { - "@theshelf/database": "^0.6.0", - "jitar": "^0.11.0 || ^0.12.0" - } - }, - "node_modules/@jitar-plugins/events": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@jitar-plugins/events/-/events-0.2.1.tgz", - "integrity": "sha512-7uEawCyAlb2S19bANyN5OISzuXAAlZ+IRxMbloCE4nqIOTDrvjrz54Nxic7+Qw5pRTsjWjpJWKREsFEs7w3pqQ==", - "peerDependencies": { - "@theshelf/events": "^0.6.0", - "jitar": "^0.11.0 || ^0.12.0" - } - }, - "node_modules/@jitar-plugins/files": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@jitar-plugins/files/-/files-0.2.1.tgz", - "integrity": "sha512-3oi1ZieXUHjtxj5D87JDv9RMnk/yQuBCMVvorCkJdULOy1rtY8tmzhFfoDBwTvoT0vcdwNx8sEKFTM84Sx02YA==", - "peerDependencies": { - "@theshelf/files": "^0.6.0", - "jitar": "^0.11.0 || ^0.12.0" - } - }, - "node_modules/@jitar-plugins/http": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@jitar-plugins/http/-/http-0.2.1.tgz", - "integrity": "sha512-uCQ+5k8PHJ8T/PyMvWosrbXfUEkTwU0Cs6jEHPn706g6SCOU1dXuY8jCGFJ723B4zBJoIV+2fSMQaaqEWNniPA==", - "peerDependencies": { - "jitar": "^0.11.0 || ^0.12.0" - } - }, - "node_modules/@jitar-plugins/notification": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@jitar-plugins/notification/-/notification-0.2.1.tgz", - "integrity": "sha512-HIXJ3hYc37RyZcPMqLrDMMKzoFXxf2003nuoYt7vzVRIdyJ7ykvDSpN0pnl6SyBC01b4bxnEODw95zhr4boUCQ==", - "peerDependencies": { - "@theshelf/notification": "^0.6.0", - "jitar": "^0.11.0 || ^0.12.0" - } - }, - "node_modules/@jitar/plugin-vite": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@jitar/plugin-vite/-/plugin-vite-0.12.0.tgz", - "integrity": "sha512-h1XQGgOwOeBrmSZa1w7hdnE5OgXvBeA3e5PoOcBF8zrAsuROjuTGa+E02Vy//6j9p0dKfo4z0j6diTnKQJGIvw==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "jitar": "^0.12.0", - "vite": ">=7" - }, - "peerDependenciesMeta": { - "vite": { - "optional": true - } - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz", - "integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@maskingtech/designsystem": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@maskingtech/designsystem/-/designsystem-0.1.0.tgz", - "integrity": "sha512-rfVjeau73+omy+oIEE1N1qW4XjeDi0imO4PAPKc4LQZdsI5iJPw3us2+Q42vf7T315sgXcPwQ0GtvCyil3NxCg==", - "engines": { - "node": ">=24" - }, - "optionalDependencies": { - "@rollup/rollup-linux-x64-gnu": "^4.63.4" - }, - "peerDependencies": { - "react": "^19" - } - }, - "node_modules/@maskingtech/react-toolkit": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@maskingtech/react-toolkit/-/react-toolkit-0.0.5.tgz", - "integrity": "sha512-0izR4au1jOW2JvbaMoqVC7BZ6aEIgkKMPkmq12CBaTt7lt5HCOmaHY4iTQbuabPPzAhLnwkVxMmYhpWBNmiWoA==", - "optionalDependencies": { - "@rollup/rollup-linux-x64-gnu": "^4.56.0" - }, - "peerDependencies": { - "react": "^19.2.3" - } - }, - "node_modules/@mongodb-js/saslprep": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.6.0.tgz", - "integrity": "sha512-19jGXfpctLDJUELLUZGJ5BllcLT7rHdF+gTTaN2jzqu0bGkUhpdcYtgK2Vux+g3zuBAa0TM/W666QMIjYhYujw==", - "license": "MIT", - "dependencies": { - "sparse-bitfield": "^3.0.3" - } - }, - "node_modules/@napi-rs/lzma-linux-x64-gnu": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz", - "integrity": "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^22.20 || ^24.12 || >=25" - } - }, - "node_modules/@node-rs/crc32": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/@node-rs/crc32/-/crc32-1.10.8.tgz", - "integrity": "sha512-gOYKFwkojSdWrSmreCcGocRcAXSpRkNZYxv6nscmtddSWBKVGypdMbfLxu5qgmymdaCNApajuwZblYEfs7HswA==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "optionalDependencies": { - "@node-rs/crc32-android-arm-eabi": "1.10.8", - "@node-rs/crc32-android-arm64": "1.10.8", - "@node-rs/crc32-darwin-arm64": "1.10.8", - "@node-rs/crc32-darwin-x64": "1.10.8", - "@node-rs/crc32-freebsd-x64": "1.10.8", - "@node-rs/crc32-linux-arm-gnueabihf": "1.10.8", - "@node-rs/crc32-linux-arm64-gnu": "1.10.8", - "@node-rs/crc32-linux-arm64-musl": "1.10.8", - "@node-rs/crc32-linux-x64-gnu": "1.10.8", - "@node-rs/crc32-linux-x64-musl": "1.10.8", - "@node-rs/crc32-win32-arm64-msvc": "1.10.8", - "@node-rs/crc32-win32-ia32-msvc": "1.10.8", - "@node-rs/crc32-win32-x64-msvc": "1.10.8" - } - }, - "node_modules/@node-rs/crc32-android-arm-eabi": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm-eabi/-/crc32-android-arm-eabi-1.10.8.tgz", - "integrity": "sha512-Ed2P9uQAOlOSveuPKSlmCctcZ73+9VIBTD84F8MjfKU26q33Y0hYlcl9vlzfc9UQX7LLMGEZhOuU1xxYtx49tg==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@node-rs/crc32-android-arm64": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm64/-/crc32-android-arm64-1.10.8.tgz", - "integrity": "sha512-gvEOdU8tkSwK2McdlMeXDoyqtvJFPYShNopJtGaGMNoltN5EzFOsM/7XKF3rk9JLQ9GnZHQrCxur0Cksonow2A==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@node-rs/crc32-darwin-arm64": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-arm64/-/crc32-darwin-arm64-1.10.8.tgz", - "integrity": "sha512-ylDspj/s3i+FCdTGoLZtOBsbR2PvAsI5taJDE5Pl7kDgeKX7IywdAYQtkh2orvTs0RqCjcnIBxrCDI/O/r+z1g==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@node-rs/crc32-darwin-x64": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-x64/-/crc32-darwin-x64-1.10.8.tgz", - "integrity": "sha512-DVTORLWomcx7F0CxQxlfBszAcMh8IkNGx/hgYHQ4iDnuf/uVjhs7l1hoVBghPymdFxP129+I/+b1WoQBbTJzaQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@node-rs/crc32-freebsd-x64": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-freebsd-x64/-/crc32-freebsd-x64-1.10.8.tgz", - "integrity": "sha512-ZzuW7RS9VFy7zD64YUFI2dK6tJrlAFfe1NBuNx/ouKZ6SK+NHW5F8hxZNrZCkv2XB7QyZk9wZ53oJ20PKylQTw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@node-rs/crc32-linux-arm-gnueabihf": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm-gnueabihf/-/crc32-linux-arm-gnueabihf-1.10.8.tgz", - "integrity": "sha512-5/2kW7V4KMV3o37ApvcnF4Pk11luzLnd38kQZowVCw5D/xGlCByEQOODfJHX9pv0C+4hp+8Dosul06RODjPEUw==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@node-rs/crc32-linux-arm64-gnu": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-gnu/-/crc32-linux-arm64-gnu-1.10.8.tgz", - "integrity": "sha512-Vr1P3+WF+RsUVI8CNLiunl1vuzdpgTR1sf9PxgQFr3o//hh2KdqJeU4zZsFVTn+GbGZtqvRoba0wi8nKMzRLeg==", - "cpu": [ - "arm64" - ], - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@node-rs/crc32-linux-arm64-musl": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-musl/-/crc32-linux-arm64-musl-1.10.8.tgz", - "integrity": "sha512-eS8YXANJLBqdOzf5jCNVEXiDI4wjXVqQybaJextJJINvHhnhhOXPar8402GMagewOxGxYsy4C69G8rBIzqL4cg==", - "cpu": [ - "arm64" - ], - "libc": [ - "musl" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@node-rs/crc32-linux-x64-gnu": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-gnu/-/crc32-linux-x64-gnu-1.10.8.tgz", - "integrity": "sha512-DFd0eV47MAykz4PQDcBSlEvY3CtXqPt2gkBpvPngCpOUoIJgEk9tKtPjEgUwLatMkvsy4fEvAg7gckGickOyEw==", - "cpu": [ - "x64" - ], - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@node-rs/crc32-linux-x64-musl": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-musl/-/crc32-linux-x64-musl-1.10.8.tgz", - "integrity": "sha512-U7fP8FjDQuOb61YoT8EoWDIJ9x40ZrCzM6OcAH1wqYiu9Z94U14S+i8KwTC7YorotGtICdYZ/APn1eI8vNne5w==", - "cpu": [ - "x64" - ], - "libc": [ - "musl" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@node-rs/crc32-win32-arm64-msvc": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-arm64-msvc/-/crc32-win32-arm64-msvc-1.10.8.tgz", - "integrity": "sha512-VJezyT9OWnMPnArDR5ok0ARLemiL83LLNYh4MC++oHoLegqzyBllqNlO8fVp2PmczGkn+rfKkZbtG4w3MQ6BbQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@node-rs/crc32-win32-ia32-msvc": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-ia32-msvc/-/crc32-win32-ia32-msvc-1.10.8.tgz", - "integrity": "sha512-01HooQK7WiG07/vvp0XzRnqSC5cvXvQ1MsQwlH9wwMWZ9qqHRO1j08cSeSt7DM4eALNisfX83bjqqrHzSKI9Iw==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@node-rs/crc32-win32-x64-msvc": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-x64-msvc/-/crc32-win32-x64-msvc-1.10.8.tgz", - "integrity": "sha512-4O6G7yme7s98LUGwiqW7q2QqYmWD2IRQvV+q7+S4vjkUWiXUMbP8QEPYP9cF2WEQSdXCkyDEqDW10zeUdniPRA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@oxc-project/types": { - "version": "0.154.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.154.0.tgz", - "integrity": "sha512-KYOUGQFlLWR+s4QMV2Q9ko38TZm7EdO87Qm7rvZLqk/webse/cDjtyxKhg/47l0byCbs/k46LT8qc4PKjAikzA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/oxc-project" - } - }, - "node_modules/@platformatic/dynamic-buffer": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@platformatic/dynamic-buffer/-/dynamic-buffer-0.4.0.tgz", - "integrity": "sha512-eCL++LyBjSsqalm4I67dl+gVqLSKd6gPYCieD72S5KqqAkmSAgAYNHt+lL+iVXssWPSfbuIJ5PEwpn5JVD73Xw==", - "license": "Apache-2.0", - "engines": { - "node": ">= 22.19.0" - } - }, - "node_modules/@platformatic/kafka": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/@platformatic/kafka/-/kafka-2.14.0.tgz", - "integrity": "sha512-FvPnGuvxk3otCKQL515X1C2yMPAAjlmGEe9JQ2YiKCz0F90K+6zrWhExZ7DCBYIyPfo1O555hsI2D/R2MnmRUQ==", - "license": "Apache-2.0", - "dependencies": { - "@platformatic/dynamic-buffer": "^0.4.0", - "@platformatic/wasm-utils": "^0.3.0", - "ajv": "^8.20.0", - "ajv-draft-04": "^1.0.0", - "avsc": "^5.7.9", - "debug": "^4.4.3", - "fastq": "^1.20.3", - "mnemonist": "^0.40.5", - "scule": "^1.3.0" - }, - "engines": { - "node": ">= 22.22.0 || >= 24.6.0" - }, - "optionalDependencies": { - "@node-rs/crc32": "^1.10.8", - "protobufjs": "^8.8.0" - } - }, - "node_modules/@platformatic/wasm-utils": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@platformatic/wasm-utils/-/wasm-utils-0.3.0.tgz", - "integrity": "sha512-tK7M2HMtVQrHBuQ/TSaDIk3YCEV6+EUQcConDrIH1kbQ7ZQiCWGrp7Jn+vd0FxoAsq2O8ZXGhANxwNpkPR8Maw==", - "license": "Apache-2.0", - "dependencies": { - "@platformatic/dynamic-buffer": "^0.4.0" - }, - "engines": { - "node": ">= 22.19.0" - } - }, - "node_modules/@pm2/blessed": { - "version": "0.1.81", - "resolved": "https://registry.npmjs.org/@pm2/blessed/-/blessed-0.1.81.tgz", - "integrity": "sha512-ZcNHqQjMuNRcQ7Z1zJbFIQZO/BDKV3KbiTckWdfbUaYhj7uNmUwb+FbdDWSCkvxNr9dBJQwvV17o6QBkAvgO0g==", - "dev": true, - "license": "MIT", - "bin": { - "blessed": "bin/tput.js" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/@pm2/js-api": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@pm2/js-api/-/js-api-0.8.1.tgz", - "integrity": "sha512-n9tDOz1ojyDOs05XthEXrLFVQYbbh2oAN19UakLPyEZDrUyEq05h8wIZU8+dNXBQY/KeFlWMLVA76nnX52ofRg==", - "dev": true, - "license": "Apache-2", - "dependencies": { - "async": "^2.6.3", - "debug": "~4.3.1", - "eventemitter2": "^6.3.1", - "extrareqp2": "^1.0.0", - "ws": "^8.21.0" - }, - "engines": { - "node": ">=4.0" + "react": "^19.2.3" } }, - "node_modules/@pm2/js-api/node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, + "node_modules/@mongodb-js/saslprep": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.6.0.tgz", + "integrity": "sha512-19jGXfpctLDJUELLUZGJ5BllcLT7rHdF+gTTaN2jzqu0bGkUhpdcYtgK2Vux+g3zuBAa0TM/W666QMIjYhYujw==", "license": "MIT", "dependencies": { - "lodash": "^4.17.14" + "sparse-bitfield": "^3.0.3" } }, - "node_modules/@pm2/js-api/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "dev": true, + "node_modules/@node-rs/crc32": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/@node-rs/crc32/-/crc32-1.10.8.tgz", + "integrity": "sha512-gOYKFwkojSdWrSmreCcGocRcAXSpRkNZYxv6nscmtddSWBKVGypdMbfLxu5qgmymdaCNApajuwZblYEfs7HswA==", "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, + "optional": true, "engines": { - "node": ">=6.0" + "node": ">= 10" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@pm2/pm2-version-check": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@pm2/pm2-version-check/-/pm2-version-check-1.0.4.tgz", - "integrity": "sha512-SXsM27SGH3yTWKc2fKR4SYNxsmnvuBQ9dd6QHtEWmiZ/VqaOYPAIlS8+vMcn27YLtAEBGvNRSh3TPNvtjZgfqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.1" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@node-rs/crc32-android-arm-eabi": "1.10.8", + "@node-rs/crc32-android-arm64": "1.10.8", + "@node-rs/crc32-darwin-arm64": "1.10.8", + "@node-rs/crc32-darwin-x64": "1.10.8", + "@node-rs/crc32-freebsd-x64": "1.10.8", + "@node-rs/crc32-linux-arm-gnueabihf": "1.10.8", + "@node-rs/crc32-linux-arm64-gnu": "1.10.8", + "@node-rs/crc32-linux-arm64-musl": "1.10.8", + "@node-rs/crc32-linux-x64-gnu": "1.10.8", + "@node-rs/crc32-linux-x64-musl": "1.10.8", + "@node-rs/crc32-win32-arm64-msvc": "1.10.8", + "@node-rs/crc32-win32-ia32-msvc": "1.10.8", + "@node-rs/crc32-win32-x64-msvc": "1.10.8" } }, - "node_modules/@rolldown/binding-android-arm-eabi": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.14.tgz", - "integrity": "sha512-aWR+XKH9+rW7m5fWq/5360J3mHycrx/o6xZM2DQFdJnTMdyP7/WzxPjhtLbVWdKo2y612/4U1bWqb3HQhiF7vg==", + "node_modules/@node-rs/crc32-android-arm-eabi": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm-eabi/-/crc32-android-arm-eabi-1.10.8.tgz", + "integrity": "sha512-Ed2P9uQAOlOSveuPKSlmCctcZ73+9VIBTD84F8MjfKU26q33Y0hYlcl9vlzfc9UQX7LLMGEZhOuU1xxYtx49tg==", "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 10" } }, - "node_modules/@rolldown/binding-android-arm64": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.14.tgz", - "integrity": "sha512-QiVxHofl6A8lQU7WAtOUY4QMVZXohxwz7WJJoeh8NBEUyKfIkMRKhYyq8az/1RypNiIXzNTtiS6KwHz0erxYRQ==", + "node_modules/@node-rs/crc32-android-arm64": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm64/-/crc32-android-arm64-1.10.8.tgz", + "integrity": "sha512-gvEOdU8tkSwK2McdlMeXDoyqtvJFPYShNopJtGaGMNoltN5EzFOsM/7XKF3rk9JLQ9GnZHQrCxur0Cksonow2A==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 10" } }, - "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.14.tgz", - "integrity": "sha512-lTQOzHuBIooh3jIr5XINQkjPGEuGy+Dsy0meXDr6Sjty0b99kYgGh4uBC/8mJX1T0kC8d6S0aPP1Y+bHkh6aBw==", + "node_modules/@node-rs/crc32-darwin-arm64": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-arm64/-/crc32-darwin-arm64-1.10.8.tgz", + "integrity": "sha512-ylDspj/s3i+FCdTGoLZtOBsbR2PvAsI5taJDE5Pl7kDgeKX7IywdAYQtkh2orvTs0RqCjcnIBxrCDI/O/r+z1g==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 10" } }, - "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.14.tgz", - "integrity": "sha512-hyMKEGatjmBYCs/Q4sbIcL/GqpFEqsX3wc+HYVQ/85A4rxc1o7rPm4DUI4GV4k/h0ITddwFSGpqQunI14GXjTA==", + "node_modules/@node-rs/crc32-darwin-x64": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-x64/-/crc32-darwin-x64-1.10.8.tgz", + "integrity": "sha512-DVTORLWomcx7F0CxQxlfBszAcMh8IkNGx/hgYHQ4iDnuf/uVjhs7l1hoVBghPymdFxP129+I/+b1WoQBbTJzaQ==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 10" } }, - "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.14.tgz", - "integrity": "sha512-u371GbXoVXrEgP20PwzoGNOdAOqAMhzo19JzzY+V4YmmnC+DTOoqdbMu+O+54emM59Mik/UdrtWgcuEDKWRPKA==", + "node_modules/@node-rs/crc32-freebsd-x64": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-freebsd-x64/-/crc32-freebsd-x64-1.10.8.tgz", + "integrity": "sha512-ZzuW7RS9VFy7zD64YUFI2dK6tJrlAFfe1NBuNx/ouKZ6SK+NHW5F8hxZNrZCkv2XB7QyZk9wZ53oJ20PKylQTw==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 10" } }, - "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.14.tgz", - "integrity": "sha512-BqwKsdZQf6EqVWr8fv2MrDYzAvOZ7+NYFSJESRGs87fkseEhs0TU9TXgRJTkZoRRkxTizyEg1LKUXfU3/78uqg==", + "node_modules/@node-rs/crc32-linux-arm-gnueabihf": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm-gnueabihf/-/crc32-linux-arm-gnueabihf-1.10.8.tgz", + "integrity": "sha512-5/2kW7V4KMV3o37ApvcnF4Pk11luzLnd38kQZowVCw5D/xGlCByEQOODfJHX9pv0C+4hp+8Dosul06RODjPEUw==", "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 10" } }, - "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.14.tgz", - "integrity": "sha512-SD9kY8M009x/7s57Z1dgUVlP5+uYBgKQK0Tkr1WIWngrtUJmRCW1RJFMY7QDla2khXhmg2i5Io7MUjcmZNZ/KQ==", + "node_modules/@node-rs/crc32-linux-arm64-gnu": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-gnu/-/crc32-linux-arm64-gnu-1.10.8.tgz", + "integrity": "sha512-Vr1P3+WF+RsUVI8CNLiunl1vuzdpgTR1sf9PxgQFr3o//hh2KdqJeU4zZsFVTn+GbGZtqvRoba0wi8nKMzRLeg==", "cpu": [ "arm64" ], - "dev": true, "libc": [ "glibc" ], @@ -3100,17 +1339,16 @@ "linux" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 10" } }, - "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.14.tgz", - "integrity": "sha512-BJ2CL19M6uuWesMgnqJzgxoI+N+eV7b0A9O9vLV42y+gitC41fNa8KElau1tHVzuLWX5GzEuxMPhAO0tQXQMkg==", + "node_modules/@node-rs/crc32-linux-arm64-musl": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-musl/-/crc32-linux-arm64-musl-1.10.8.tgz", + "integrity": "sha512-eS8YXANJLBqdOzf5jCNVEXiDI4wjXVqQybaJextJJINvHhnhhOXPar8402GMagewOxGxYsy4C69G8rBIzqL4cg==", "cpu": [ "arm64" ], - "dev": true, "libc": [ "musl" ], @@ -3120,17 +1358,16 @@ "linux" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 10" } }, - "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.14.tgz", - "integrity": "sha512-4+Kl8daPV8NDHaD7mfCcc1pRM+Qg7ab8DyMm5FG5WoZgv4h2i3KFN1CybYBNbQqmuYm7ftJLvmMI1eHYJ22S/Q==", + "node_modules/@node-rs/crc32-linux-x64-gnu": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-gnu/-/crc32-linux-x64-gnu-1.10.8.tgz", + "integrity": "sha512-DFd0eV47MAykz4PQDcBSlEvY3CtXqPt2gkBpvPngCpOUoIJgEk9tKtPjEgUwLatMkvsy4fEvAg7gckGickOyEw==", "cpu": [ - "ppc64" + "x64" ], - "dev": true, "libc": [ "glibc" ], @@ -3140,19 +1377,18 @@ "linux" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 10" } }, - "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.14.tgz", - "integrity": "sha512-V/h8ePq1fKDrmtFMz6xcCN3DKvuvMRrwwD1q0PkBeeo4DpK64biaKvqWGVxqCeYKqeRk7gE7/iKPxLCn08O97A==", + "node_modules/@node-rs/crc32-linux-x64-musl": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-musl/-/crc32-linux-x64-musl-1.10.8.tgz", + "integrity": "sha512-U7fP8FjDQuOb61YoT8EoWDIJ9x40ZrCzM6OcAH1wqYiu9Z94U14S+i8KwTC7YorotGtICdYZ/APn1eI8vNne5w==", "cpu": [ - "s390x" + "x64" ], - "dev": true, "libc": [ - "glibc" + "musl" ], "license": "MIT", "optional": true, @@ -3160,283 +1396,222 @@ "linux" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 10" } }, - "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.14.tgz", - "integrity": "sha512-WxalXzgrLVpKC93xfpaJ3gCXUWzeCr+FRCbDVD2mUAy4L6Vo3lNVz0epUEUpxPWJkLNYUwM4OSIikv36OJ9mLg==", + "node_modules/@node-rs/crc32-win32-arm64-msvc": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-arm64-msvc/-/crc32-win32-arm64-msvc-1.10.8.tgz", + "integrity": "sha512-VJezyT9OWnMPnArDR5ok0ARLemiL83LLNYh4MC++oHoLegqzyBllqNlO8fVp2PmczGkn+rfKkZbtG4w3MQ6BbQ==", "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "glibc" + "arm64" ], "license": "MIT", "optional": true, "os": [ - "linux" + "win32" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 10" } }, - "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.14.tgz", - "integrity": "sha512-3G3tnAmTpdk9jO3GQtyHXqeFD2SlecfTws/Y3M2mmj9nMBwwuLT4kur8sZKeu7ENUHSpVO3cIsm5A52LEWWwlg==", + "node_modules/@node-rs/crc32-win32-ia32-msvc": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-ia32-msvc/-/crc32-win32-ia32-msvc-1.10.8.tgz", + "integrity": "sha512-01HooQK7WiG07/vvp0XzRnqSC5cvXvQ1MsQwlH9wwMWZ9qqHRO1j08cSeSt7DM4eALNisfX83bjqqrHzSKI9Iw==", "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "musl" + "ia32" ], "license": "MIT", "optional": true, "os": [ - "linux" + "win32" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 10" } }, - "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.14.tgz", - "integrity": "sha512-qyr5XiNGxm2ytx17vvtcJ9nXn6v1gENETi503bJx3OGwZ1tSonj7BosxbMa/xeAfSl5iS9X6KjEWYXLu6v1L7Q==", + "node_modules/@node-rs/crc32-win32-x64-msvc": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-x64-msvc/-/crc32-win32-x64-msvc-1.10.8.tgz", + "integrity": "sha512-4O6G7yme7s98LUGwiqW7q2QqYmWD2IRQvV+q7+S4vjkUWiXUMbP8QEPYP9cF2WEQSdXCkyDEqDW10zeUdniPRA==", "cpu": [ - "arm64" + "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ - "openharmony" + "win32" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 10" } }, - "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.14.tgz", - "integrity": "sha512-oA4o5o0S2yB199YyYXDzKUv1Z56Rc+mgOjwm7Z/vJ9Z8igiDPYvoOuDyo6g7AK/ZaF09nPhDKVnGBcYHO11GXA==", - "cpu": [ - "arm64" - ], + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 8" } }, - "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.14.tgz", - "integrity": "sha512-9mE94bf2GZUaR/fUSXCMpBoWkctu421Mi0ORpm4zqfbkjKep7RxzPFa5etcGs5h+2KApoWBOA/hAJa/7saGgEQ==", - "cpu": [ - "x64" - ], + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 8" } }, - "node_modules/@rolldown/pluginutils": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz", - "integrity": "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rollup/plugin-babel": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.1.0.tgz", - "integrity": "sha512-dFZNuFD2YRcoomP4oYf+DvQNSUA9ih+A3vUqopQx5EdtPGo3WBnQcI/S8pwpz91UsGfL0HsMSOlaMld8HrbubA==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@rollup/pluginutils": "^5.0.1" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "@types/babel__core": "^7.1.9", - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "@types/babel__core": { - "optional": true - }, - "rollup": { - "optional": true - } + "node": ">= 8" } }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.3.tgz", - "integrity": "sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==", + "node_modules/@oxc-project/types": { + "version": "0.154.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.154.0.tgz", + "integrity": "sha512-KYOUGQFlLWR+s4QMV2Q9ko38TZm7EdO87Qm7rvZLqk/webse/cDjtyxKhg/47l0byCbs/k46LT8qc4PKjAikzA==", "dev": true, "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/oxc-project" + } + }, + "node_modules/@platformatic/dynamic-buffer": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@platformatic/dynamic-buffer/-/dynamic-buffer-0.4.0.tgz", + "integrity": "sha512-eCL++LyBjSsqalm4I67dl+gVqLSKd6gPYCieD72S5KqqAkmSAgAYNHt+lL+iVXssWPSfbuIJ5PEwpn5JVD73Xw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 22.19.0" + } + }, + "node_modules/@platformatic/kafka": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/@platformatic/kafka/-/kafka-2.14.0.tgz", + "integrity": "sha512-FvPnGuvxk3otCKQL515X1C2yMPAAjlmGEe9JQ2YiKCz0F90K+6zrWhExZ7DCBYIyPfo1O555hsI2D/R2MnmRUQ==", + "license": "Apache-2.0", "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "@types/resolve": "1.20.2", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.22.1" + "@platformatic/dynamic-buffer": "^0.4.0", + "@platformatic/wasm-utils": "^0.3.0", + "ajv": "^8.20.0", + "ajv-draft-04": "^1.0.0", + "avsc": "^5.7.9", + "debug": "^4.4.3", + "fastq": "^1.20.3", + "mnemonist": "^0.40.5", + "scule": "^1.3.0" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.78.0||^3.0.0||^4.0.0" + "node": ">= 22.22.0 || >= 24.6.0" }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } + "optionalDependencies": { + "@node-rs/crc32": "^1.10.8", + "protobufjs": "^8.8.0" } }, - "node_modules/@rollup/plugin-node-resolve/node_modules/resolve": { - "version": "1.22.13", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.13.tgz", - "integrity": "sha512-Dj/cW9zBV2aRj6XzCxuGIs3ESZKv02jixne3q6jFZYZ3/Tg09gHHviSMDL4kObh9pqSahdRHEnDoaP2gn8YLhA==", - "dev": true, - "license": "MIT", + "node_modules/@platformatic/wasm-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@platformatic/wasm-utils/-/wasm-utils-0.3.0.tgz", + "integrity": "sha512-tK7M2HMtVQrHBuQ/TSaDIk3YCEV6+EUQcConDrIH1kbQ7ZQiCWGrp7Jn+vd0FxoAsq2O8ZXGhANxwNpkPR8Maw==", + "license": "Apache-2.0", "dependencies": { - "es-errors": "^1.3.0", - "is-core-module": "^2.17.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "@platformatic/dynamic-buffer": "^0.4.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 22.19.0" } }, - "node_modules/@rollup/plugin-replace": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-6.0.3.tgz", - "integrity": "sha512-J4RZarRvQAm5IF0/LwUUg+obsm+xZhYnbMXmXROyoSE1ATJe3oXSb9L5MMppdxP2ylNSjv6zFBwKYjcKMucVfA==", + "node_modules/@pm2/blessed": { + "version": "0.1.81", + "resolved": "https://registry.npmjs.org/@pm2/blessed/-/blessed-0.1.81.tgz", + "integrity": "sha512-ZcNHqQjMuNRcQ7Z1zJbFIQZO/BDKV3KbiTckWdfbUaYhj7uNmUwb+FbdDWSCkvxNr9dBJQwvV17o6QBkAvgO0g==", "dev": true, "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "magic-string": "^0.30.3" + "bin": { + "blessed": "bin/tput.js" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } + "node": ">= 0.8.0" } }, - "node_modules/@rollup/plugin-replace/node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "node_modules/@pm2/js-api": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@pm2/js-api/-/js-api-0.8.1.tgz", + "integrity": "sha512-n9tDOz1ojyDOs05XthEXrLFVQYbbh2oAN19UakLPyEZDrUyEq05h8wIZU8+dNXBQY/KeFlWMLVA76nnX52ofRg==", "dev": true, - "license": "MIT", + "license": "Apache-2", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" + "async": "^2.6.3", + "debug": "~4.3.1", + "eventemitter2": "^6.3.1", + "extrareqp2": "^1.0.0", + "ws": "^8.21.0" + }, + "engines": { + "node": ">=4.0" } }, - "node_modules/@rollup/plugin-terser": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-1.0.0.tgz", - "integrity": "sha512-FnCxhTBx6bMOYQrar6C8h3scPt8/JwIzw3+AJ2K++6guogH5fYaIFia+zZuhqv0eo1RN7W1Pz630SyvLbDjhtQ==", + "node_modules/@pm2/js-api/node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "license": "MIT", "dependencies": { - "serialize-javascript": "^7.0.3", - "smob": "^1.0.0", - "terser": "^5.17.4" - }, - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "rollup": "^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } + "lodash": "^4.17.14" } }, - "node_modules/@rollup/pluginutils": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.4.0.tgz", - "integrity": "sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==", + "node_modules/@pm2/js-api/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^4.0.2" + "ms": "^2.1.3" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + "node": ">=6.0" }, "peerDependenciesMeta": { - "rollup": { + "supports-color": { "optional": true } } }, - "node_modules/@rollup/pluginutils/node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rollup/pluginutils/node_modules/picomatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", - "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", + "node_modules/@pm2/pm2-version-check": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@pm2/pm2-version-check/-/pm2-version-check-1.0.4.tgz", + "integrity": "sha512-SXsM27SGH3yTWKc2fKR4SYNxsmnvuBQ9dd6QHtEWmiZ/VqaOYPAIlS8+vMcn27YLtAEBGvNRSh3TPNvtjZgfqA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "dependencies": { + "debug": "^4.3.1" } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.64.6.tgz", - "integrity": "sha512-FkO19Fowv/OQeJZPVfdetJaI3/VpbZmBsnmAlR/rQ+b3QwfiGQiOpVegpSRH331kelvHTVw9hXYG3DwjAaRzyQ==", + "node_modules/@rolldown/binding-android-arm-eabi": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.14.tgz", + "integrity": "sha512-aWR+XKH9+rW7m5fWq/5360J3mHycrx/o6xZM2DQFdJnTMdyP7/WzxPjhtLbVWdKo2y612/4U1bWqb3HQhiF7vg==", "cpu": [ "arm" ], @@ -3445,54 +1620,15 @@ "optional": true, "os": [ "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.64.6.tgz", - "integrity": "sha512-si5/Etm6MphPc2xYHnk455Shls/hoMjTy3mhXge4OPmvCw7TwC4KP4fKokAlKLV4XaQvLvgSHfafPcblLMYYdQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.64.6.tgz", - "integrity": "sha512-PQCl3q7b0BgvVt72i2xrWM6I5KliwwVe4GpWW5QDGyUQawDS9aPZss/aGyFqBmxdRxlE8wDc9CaxiQ5DHRSp/Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.64.6.tgz", - "integrity": "sha512-l9DFl1Itb1YYdSrP1K3U8ih44AOHa/p+Q4WMMDfGvH5qVWp+ajfgS1DlYo4yCRh8wJ2ZJv0Fqccf+ULAmMFjmg==", - "cpu": [ - "x64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.64.6.tgz", - "integrity": "sha512-bR4GR3205N9+od0+l5Dd9/iZTDpJkIe6d6Ydp2qbcQZJLmKBdYQQRp8gbWpbMt92twKJY66o1vK4NkoKQODIrA==", + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.14.tgz", + "integrity": "sha512-QiVxHofl6A8lQU7WAtOUY4QMVZXohxwz7WJJoeh8NBEUyKfIkMRKhYyq8az/1RypNiIXzNTtiS6KwHz0erxYRQ==", "cpu": [ "arm64" ], @@ -3500,131 +1636,86 @@ "license": "MIT", "optional": true, "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.64.6.tgz", - "integrity": "sha512-XTVNaDzcFl2TeBglvxdGgsCv9JGtAGRAoJENmGBR/XvDH2mA2K0IXc2aMfP0dR8mexSXSKifJ85FixoXX1wfTw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.64.6.tgz", - "integrity": "sha512-qWc6qbc+25ugG9vqPR9P422KJBbVfZ05mjcMggoq8tsfWP+eRfC+/tiDdIlRF5VL2pDVZWN9zAhWsmu7R1+7Dw==", - "cpu": [ - "arm" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.64.6.tgz", - "integrity": "sha512-V4Nwkp8844X/Xnww3PI1LYS0YPei8XQEVG70R+5MPZGO7AhYoun4hCN7Svs4U3wbQLZbwiz+9xRFhUZZdRl8Ww==", - "cpu": [ - "arm" - ], - "dev": true, - "libc": [ - "musl" + "android" ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.64.6.tgz", - "integrity": "sha512-xb72A1aPaaIsp+a88VtRae/ovIEXislbUMyp7b9AQQU7ZkP2m/+ik6DW9TQcJyw5R8/RIailF9zExYwkjR++UA==", + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.14.tgz", + "integrity": "sha512-lTQOzHuBIooh3jIr5XINQkjPGEuGy+Dsy0meXDr6Sjty0b99kYgGh4uBC/8mJX1T0kC8d6S0aPP1Y+bHkh6aBw==", "cpu": [ "arm64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ - "linux" - ] + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.64.6.tgz", - "integrity": "sha512-pbcs1BVBwC43hZkjhjlF8Rx8m5G0KnhLZs9Azy/gqccP6UsNSzJr0hKGIAVPqzAH1O/NdPxxC9GVGb4msQg/aw==", + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.14.tgz", + "integrity": "sha512-hyMKEGatjmBYCs/Q4sbIcL/GqpFEqsX3wc+HYVQ/85A4rxc1o7rPm4DUI4GV4k/h0ITddwFSGpqQunI14GXjTA==", "cpu": [ - "arm64" + "x64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ - "linux" - ] + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.64.6.tgz", - "integrity": "sha512-EKOC8os6Vsg487ZLKUqzLF99Jsmnq6tu7O7mAELakNpcA+8KadktFf/JYdRuHe/DzCUXmN38pUKu4XBcKlqGbQ==", + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.14.tgz", + "integrity": "sha512-u371GbXoVXrEgP20PwzoGNOdAOqAMhzo19JzzY+V4YmmnC+DTOoqdbMu+O+54emM59Mik/UdrtWgcuEDKWRPKA==", "cpu": [ - "loong64" + "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ - "linux" - ] + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.64.6.tgz", - "integrity": "sha512-v/SQ68GnSlr/HyjB79sNXesGDwkOPu9JjbHfmWaymCiM+nZsQ9TstG1KfA4MuEvTr2d3PoY8PhFxj9bt0e32JA==", + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.14.tgz", + "integrity": "sha512-BqwKsdZQf6EqVWr8fv2MrDYzAvOZ7+NYFSJESRGs87fkseEhs0TU9TXgRJTkZoRRkxTizyEg1LKUXfU3/78uqg==", "cpu": [ - "loong64" + "arm" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.64.6.tgz", - "integrity": "sha512-G3pmliMQ7r15zFFNwBlaT/xTdSLi4lfgI7CUrQueyKYheNVhrd8JrWCE6Ll8xf4AA1RZFqq+mNJYntiElsVOyA==", + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.14.tgz", + "integrity": "sha512-SD9kY8M009x/7s57Z1dgUVlP5+uYBgKQK0Tkr1WIWngrtUJmRCW1RJFMY7QDla2khXhmg2i5Io7MUjcmZNZ/KQ==", "cpu": [ - "ppc64" + "arm64" ], "dev": true, "libc": [ @@ -3634,14 +1725,17 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.64.6.tgz", - "integrity": "sha512-XQTB/IPoB/wG6x/wu9uomAt8YH61IAr5iZTubMiad/lu88sotq2ocz9hJd556+Jz2kIkF7ZQZIsUuWE3OWqtcA==", + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.14.tgz", + "integrity": "sha512-BJ2CL19M6uuWesMgnqJzgxoI+N+eV7b0A9O9vLV42y+gitC41fNa8KElau1tHVzuLWX5GzEuxMPhAO0tQXQMkg==", "cpu": [ - "ppc64" + "arm64" ], "dev": true, "libc": [ @@ -3651,14 +1745,17 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.64.6.tgz", - "integrity": "sha512-O5mpokth6+ydMuwiGtY8fIjvOBfH7u6SzmDNmZ3k6GK5C6iEAC2q2ZN/T5L9jYILx0IcCT0KnfMDihQ5yQFSBw==", + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.14.tgz", + "integrity": "sha512-4+Kl8daPV8NDHaD7mfCcc1pRM+Qg7ab8DyMm5FG5WoZgv4h2i3KFN1CybYBNbQqmuYm7ftJLvmMI1eHYJ22S/Q==", "cpu": [ - "riscv64" + "ppc64" ], "dev": true, "libc": [ @@ -3668,29 +1765,15 @@ "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.64.6.tgz", - "integrity": "sha512-aIFxbAD9v3TvIaEDsKmukjcDg1JS4/tFXw8SHyQQgzOwzWCQ4cyDK7Ju1pQKqUXDFkEu/BZCFDCDATsKhQcB/Q==", - "cpu": [ - "riscv64" - ], - "dev": true, - "libc": [ - "musl" ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.64.6.tgz", - "integrity": "sha512-fuNo1UwBc6BxnHDOxxguQL/InhheMN3RJcJMb0b4xP8r5Q3CNCrJbVg0eCIFuJ4e/zAfjR2gYbOfbzO/G7CIyw==", + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.14.tgz", + "integrity": "sha512-V/h8ePq1fKDrmtFMz6xcCN3DKvuvMRrwwD1q0PkBeeo4DpK64biaKvqWGVxqCeYKqeRk7gE7/iKPxLCn08O97A==", "cpu": [ "s390x" ], @@ -3702,15 +1785,19 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.64.6.tgz", - "integrity": "sha512-05v6wFKDKJPZs9xlytVrrRu6IbRuoSvlH9xNwEOafXsKyjBFZPvAcZz2VIAB/M+lblYeKa9iOYC4RDVdfcAAaw==", + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.14.tgz", + "integrity": "sha512-WxalXzgrLVpKC93xfpaJ3gCXUWzeCr+FRCbDVD2mUAy4L6Vo3lNVz0epUEUpxPWJkLNYUwM4OSIikv36OJ9mLg==", "cpu": [ "x64" ], + "dev": true, "libc": [ "glibc" ], @@ -3718,12 +1805,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.64.6.tgz", - "integrity": "sha512-wJXKcdMjvkc/FaavZXNP1yW4i0pfOmhZAIWRSLG2yJ0PB0TWi7dkLErhX0u0vptDcXKKO/m1Y/YTeuyvb2MXwg==", + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.14.tgz", + "integrity": "sha512-3G3tnAmTpdk9jO3GQtyHXqeFD2SlecfTws/Y3M2mmj9nMBwwuLT4kur8sZKeu7ENUHSpVO3cIsm5A52LEWWwlg==", "cpu": [ "x64" ], @@ -3735,26 +1825,15 @@ "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.64.6.tgz", - "integrity": "sha512-cwg7/h0ThvJwy8CBkmACdiHAxRWpbsCmIsjOt+Zzx0hTnIcSUmKYEV03bGg+hD827OnwUsbKh1ZZDW754xWyBA==", - "cpu": [ - "x64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.64.6.tgz", - "integrity": "sha512-T0RkYIJbdYXJEQFw+tMBO09KDFdgmNxkHsof3wWAABrvnx15Yh8RytmrgYy9+q9cBeBNZF66MMQZC+5nzEz6vg==", + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.14.tgz", + "integrity": "sha512-qyr5XiNGxm2ytx17vvtcJ9nXn6v1gENETi503bJx3OGwZ1tSonj7BosxbMa/xeAfSl5iS9X6KjEWYXLu6v1L7Q==", "cpu": [ "arm64" ], @@ -3763,12 +1842,15 @@ "optional": true, "os": [ "openharmony" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.64.6.tgz", - "integrity": "sha512-KlfpmF1AAIdAWxt8QQNClbpLFlAUfYOzqIuJ7IXEStMHpFRuH78RG6FjqPb3Rqhh0K89F5npvG+/i3Fjl6IveQ==", + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.14.tgz", + "integrity": "sha512-oA4o5o0S2yB199YyYXDzKUv1Z56Rc+mgOjwm7Z/vJ9Z8igiDPYvoOuDyo6g7AK/ZaF09nPhDKVnGBcYHO11GXA==", "cpu": [ "arm64" ], @@ -3777,26 +1859,15 @@ "optional": true, "os": [ "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.64.6.tgz", - "integrity": "sha512-MrTLjd7Jlt9/ZavJZYG61KQv9Iy9bzbY+yXy73Xvwoa2uP66wvDShkyBr5Chz/yrE6lbD/zHMuTmKQVNQqBApg==", - "cpu": [ - "ia32" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.64.6.tgz", - "integrity": "sha512-8fWDH1CkPI8GdBKAxzHDza7UmgficsKo2+MVbvUgOGhB0629w5sHMg3Qu5y7TZsrYKHHWpz8fla4KvoT7WsO3Q==", + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.14.tgz", + "integrity": "sha512-9mE94bf2GZUaR/fUSXCMpBoWkctu421Mi0ORpm4zqfbkjKep7RxzPFa5etcGs5h+2KApoWBOA/hAJa/7saGgEQ==", "cpu": [ "x64" ], @@ -3805,20 +1876,32 @@ "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz", + "integrity": "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==", + "dev": true, + "license": "MIT" }, - "node_modules/@rollup/rollup-win32-x64-msvc": { + "node_modules/@rollup/rollup-linux-x64-gnu": { "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.64.6.tgz", - "integrity": "sha512-9/c9PWdr5GCIHkkxiHM1HjNBQMVdftP4O8QTcoUAaRza2FSqJ4axbf8QAnBuE6BIGQDl71SaRPeDdDYid5ecTw==", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.64.6.tgz", + "integrity": "sha512-05v6wFKDKJPZs9xlytVrrRu6IbRuoSvlH9xNwEOafXsKyjBFZPvAcZz2VIAB/M+lblYeKa9iOYC4RDVdfcAAaw==", "cpu": [ "x64" ], - "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ - "win32" + "linux" ] }, "node_modules/@rtsao/scc": { @@ -4064,32 +2147,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@trickfilm400/rollup-plugin-off-main-thread": { - "version": "3.0.0-pre1", - "resolved": "https://registry.npmjs.org/@trickfilm400/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-3.0.0-pre1.tgz", - "integrity": "sha512-/67zpWDBLV+oYAEL682s1ktXL0HgqX76f6gaVGkGnVZlBbm1zd0v4Bz8MFF2GGhoX9rvfq3KSQHubFHwa6w6/Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "ejs": "^3.1.10", - "json5": "^2.2.3", - "magic-string": "^0.30.21", - "string.prototype.matchall": "^4.0.12" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@trickfilm400/rollup-plugin-off-main-thread/node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -4205,20 +2262,6 @@ "@types/react": "^19.3.0" } }, - "node_modules/@types/resolve": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", - "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/webidl-conversions": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", @@ -4610,6 +2653,7 @@ "integrity": "sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4961,16 +3005,6 @@ "node": ">= 0.4" } }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -4983,59 +3017,17 @@ "engines": { "node": ">= 0.4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/avsc": { - "version": "5.7.9", - "resolved": "https://registry.npmjs.org/avsc/-/avsc-5.7.9.tgz", - "integrity": "sha512-yOA4wFeI7ET3v32Di/sUybQ+ttP20JHSW3mxLuNGeO0uD6PPcvLrIQXSvy/rhJOWU5JrYh7U4OHplWMmtAtjMg==", - "license": "MIT", - "engines": { - "node": ">=0.11" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.17", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", - "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-define-polyfill-provider": "^0.6.8", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz", - "integrity": "sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.8", - "core-js-compat": "^3.48.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", - "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", - "dev": true, + "node_modules/avsc": { + "version": "5.7.9", + "resolved": "https://registry.npmjs.org/avsc/-/avsc-5.7.9.tgz", + "integrity": "sha512-yOA4wFeI7ET3v32Di/sUybQ+ttP20JHSW3mxLuNGeO0uD6PPcvLrIQXSvy/rhJOWU5JrYh7U4OHplWMmtAtjMg==", "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.8" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "engines": { + "node": ">=0.11" } }, "node_modules/balanced-match": { @@ -5194,13 +3186,6 @@ "node": ">=20.19.0" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT" - }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -5409,16 +3394,6 @@ "dev": true, "license": "MIT" }, - "node_modules/common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -5473,23 +3448,6 @@ "node": ">=6.6.0" } }, - "node_modules/core-js-compat": { - "version": "3.50.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.50.0.tgz", - "integrity": "sha512-XGpFGbMLHwSt74YLTKho7Ib242qi6O8MSX+sRokV4oz7iKXvQWGYZthjIhjRGMxjzVkAubBO512dKGYcefmX3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.28.7" - }, - "engines": { - "node": ">=6.4.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/cpx2": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/cpx2/-/cpx2-9.0.3.tgz", @@ -5527,6 +3485,7 @@ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -5536,16 +3495,6 @@ "node": ">= 8" } }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/csstype": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", @@ -5865,22 +3814,6 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "license": "MIT" }, - "node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/electron-to-chromium": { "version": "1.5.456", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.456.tgz", @@ -6627,19 +4560,6 @@ "node": ">=0.10.0" } }, - "node_modules/eta": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eta/-/eta-4.6.0.tgz", - "integrity": "sha512-lW6is4T1NFOYnmqGZIfvixqj7A7sSvScF+DN8EK6K58xI5MZ5UvYe0GjopxOXQtZvUn4eDdVuZ8XSoYWTMEKwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/bgub/eta?sponsor=1" - } - }, "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -6767,7 +4687,8 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", @@ -6816,46 +4737,6 @@ "node": ">=16.0.0" } }, - "node_modules/filelist": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.6.tgz", - "integrity": "sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.7.tgz", - "integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", - "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -6975,23 +4856,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -7010,22 +4874,6 @@ "node": ">= 0.8" } }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -7128,13 +4976,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", - "dev": true, - "license": "ISC" - }, "node_modules/get-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", @@ -7311,13 +5152,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, "node_modules/has-bigints": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", @@ -7513,13 +5347,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/idb": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", - "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", - "dev": true, - "license": "ISC" - }, "node_modules/ignore": { "version": "7.0.12", "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.12.tgz", @@ -7835,13 +5662,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "dev": true, - "license": "MIT" - }, "node_modules/is-negative-zero": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", @@ -7882,16 +5702,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-plain-object": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.1.0.tgz", @@ -7926,16 +5736,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-set": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", @@ -7965,19 +5765,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-string": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", @@ -8087,7 +5874,8 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/iterator.prototype": { "version": "1.1.5", @@ -8107,40 +5895,6 @@ "node": ">= 0.4" } }, - "node_modules/jackspeak": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", - "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^9.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jake": { - "version": "10.9.4", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", - "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "async": "^3.2.6", - "filelist": "^1.0.4", - "picocolors": "^1.1.1" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/jitar": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/jitar/-/jitar-0.12.0.tgz", @@ -8254,29 +6008,6 @@ "node": ">=6" } }, - "node_modules/jsonfile": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonpointer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", - "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", @@ -8313,16 +6044,6 @@ "dayjs": "^1.11.23" } }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -8635,13 +6356,6 @@ "dev": true, "license": "MIT" }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true, - "license": "MIT" - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -9373,6 +7087,7 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -9620,19 +7335,6 @@ "node": ">= 0.8.0" } }, - "node_modules/pretty-bytes": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz", - "integrity": "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -9921,26 +7623,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regenerate": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.5.0.tgz", - "integrity": "sha512-1s+CxXjJ71i7LNVy8nYwg47XV4y6lAnOEhsMtSKq3WpmPfhl9LuKlTqKIn/3yUpE8lBz+W+TT88Bxyhnr0U4yw==", - "dev": true, - "license": "MIT" - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.3.0.tgz", - "integrity": "sha512-9ns8odR8e9q3otKeHj3DE80jZYKg6zVeZKE+zQmRKXFoVUcuiTGeO6iusDhPRoIQQPVPRvH+SfBhrTud4eczuw==", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/regexp.prototype.flags": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", @@ -9962,44 +7644,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpu-core": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.5.3.tgz", - "integrity": "sha512-E8VgUoSK+LMQrLboDxavm76MTBGrQhx9RiNuomRmYnZ10Uw12HrI8fkxOOncktb2hBpzIZ9SV/347euQHG5z+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerate": "^1.5.0", - "regenerate-unicode-properties": "^10.3.0", - "regjsgen": "^0.8.0", - "regjsparser": "^0.13.0", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.2.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/regjsparser": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.4.tgz", - "integrity": "sha512-EWV80YgFaVgFrjGCAsV7oybp4GOxbls5RzBg8OB0nKEVXsBJR1JlV8Di1JhCROg3MzTfe1RI8yitIm1eOs68iA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "jsesc": "~3.1.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -10125,52 +7769,6 @@ "dev": true, "license": "MIT" }, - "node_modules/rollup": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.64.6.tgz", - "integrity": "sha512-fX1Vy+UNKdXn+xKDnu/HBXbHVr1AY8cSdQj9BU4kLv5aFCMqGpvrVbyUMmjN3DdzWhSAuTbcX8PCNEVaumthYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.9" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@napi-rs/lzma-linux-x64-gnu": "1.5.1", - "@rollup/rollup-android-arm-eabi": "4.64.6", - "@rollup/rollup-android-arm64": "4.64.6", - "@rollup/rollup-darwin-arm64": "4.64.6", - "@rollup/rollup-darwin-x64": "4.64.6", - "@rollup/rollup-freebsd-arm64": "4.64.6", - "@rollup/rollup-freebsd-x64": "4.64.6", - "@rollup/rollup-linux-arm-gnueabihf": "4.64.6", - "@rollup/rollup-linux-arm-musleabihf": "4.64.6", - "@rollup/rollup-linux-arm64-gnu": "4.64.6", - "@rollup/rollup-linux-arm64-musl": "4.64.6", - "@rollup/rollup-linux-loong64-gnu": "4.64.6", - "@rollup/rollup-linux-loong64-musl": "4.64.6", - "@rollup/rollup-linux-ppc64-gnu": "4.64.6", - "@rollup/rollup-linux-ppc64-musl": "4.64.6", - "@rollup/rollup-linux-riscv64-gnu": "4.64.6", - "@rollup/rollup-linux-riscv64-musl": "4.64.6", - "@rollup/rollup-linux-s390x-gnu": "4.64.6", - "@rollup/rollup-linux-x64-gnu": "4.64.6", - "@rollup/rollup-linux-x64-musl": "4.64.6", - "@rollup/rollup-openbsd-x64": "4.64.6", - "@rollup/rollup-openharmony-arm64": "4.64.6", - "@rollup/rollup-win32-arm64-msvc": "4.64.6", - "@rollup/rollup-win32-ia32-msvc": "4.64.6", - "@rollup/rollup-win32-x64-gnu": "4.64.6", - "@rollup/rollup-win32-x64-msvc": "4.64.6", - "fsevents": "~2.3.2" - } - }, "node_modules/router": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", @@ -10380,16 +7978,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/serialize-javascript": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.1.2.tgz", - "integrity": "sha512-GL2BWwVa6JydKO6l/ljVgjAZF4QJ3S7dWDWi53s5GZT8PJzD2fNxi67HANQGKAqPrwEpL5ba7gUBGi0Ls/sEoQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=20.0.0" - } - }, "node_modules/serve-static": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", @@ -10476,6 +8064,7 @@ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -10489,6 +8078,7 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -10578,19 +8168,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -10612,16 +8189,6 @@ "npm": ">= 3.0.0" } }, - "node_modules/smob": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/smob/-/smob-1.6.2.tgz", - "integrity": "sha512-RQsvleCbF8cVHEv+xuDGaA4pOizFqJ0GgjtMSRo6oP8pnN7WsigHgVGey6aILRBKv4W2YOMHLqbKdnB6hpB9fw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.0.0" - } - }, "node_modules/socks": { "version": "2.8.10", "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.10.tgz", @@ -10658,6 +8225,7 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", + "optional": true, "engines": { "node": ">=0.10.0" } @@ -10671,17 +8239,6 @@ "node": ">=0.10.0" } }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, "node_modules/sparse-bitfield": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", @@ -10820,21 +8377,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -10845,16 +8387,6 @@ "node": ">=4" } }, - "node_modules/strip-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", - "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -10905,61 +8437,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/tempy": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", - "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser": { - "version": "5.51.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.51.2.tgz", - "integrity": "sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.15.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "license": "MIT" - }, "node_modules/tinybench": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-6.2.2.tgz", @@ -11196,19 +8673,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/type-is": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.1.0.tgz", @@ -11381,73 +8845,6 @@ "dev": true, "license": "MIT" }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", - "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", - "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", - "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -11457,17 +8854,6 @@ "node": ">= 0.8" } }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4", - "yarn": "*" - } - }, "node_modules/update-browserslist-db": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.4.tgz", @@ -11597,37 +8983,6 @@ } } }, - "node_modules/vite-plugin-pwa": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-1.3.0.tgz", - "integrity": "sha512-c5kMgN+ITrOtHXp8PAtk2uOIEea6XjP/unCGxOWWBzQ6qa65qj/awHg0wf+QF9E/2u9vh86LqxPwzEPNbM2r5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.6", - "pretty-bytes": "^6.1.1", - "tinyglobby": "^0.2.10", - "workbox-build": "^7.4.1", - "workbox-window": "^7.4.1" - }, - "engines": { - "node": ">=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vite-pwa/assets-generator": "^1.0.0", - "vite": "^3.1.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", - "workbox-build": "^7.4.1", - "workbox-window": "^7.4.1" - }, - "peerDependenciesMeta": { - "@vite-pwa/assets-generator": { - "optional": true - } - } - }, "node_modules/vite/node_modules/picomatch": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", @@ -11765,6 +9120,7 @@ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "isexe": "^2.0.0" }, @@ -11888,261 +9244,6 @@ "node": ">=0.10.0" } }, - "node_modules/workbox-background-sync": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-7.4.1.tgz", - "integrity": "sha512-HhT7KE8tOWDm02wRNshXUnUPofMlhenF2DBdUnDPOubhizzPeItkYTmAB6td1Z2cjYPa98vzEiPLEuzn5hN66g==", - "dev": true, - "license": "MIT", - "dependencies": { - "idb": "^7.0.1", - "workbox-core": "7.4.1" - } - }, - "node_modules/workbox-broadcast-update": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-7.4.1.tgz", - "integrity": "sha512-uAlgslKLvbQY+suirIdnBCSYrcgBhjp81Nj4l1lj/Jmj0MJO2CJERnCJjT0GFVwmReV0N+zs78K6gqd5gr9/+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "workbox-core": "7.4.1" - } - }, - "node_modules/workbox-build": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-7.4.1.tgz", - "integrity": "sha512-SDhxIvEAde9Gy/5w4Yo1Jh/M49Z0qE3q0oteyE8zGq0DScxFqVBcCtIXFuLtmtxRQZCMbf0prco4VyEu3KBQuw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@apideck/better-ajv-errors": "^0.3.1", - "@babel/core": "^7.24.4", - "@babel/preset-env": "^7.11.0", - "@babel/runtime": "^7.11.2", - "@rollup/plugin-babel": "^6.1.0", - "@rollup/plugin-node-resolve": "^16.0.3", - "@rollup/plugin-replace": "^6.0.3", - "@rollup/plugin-terser": "^1.0.0", - "@trickfilm400/rollup-plugin-off-main-thread": "^3.0.0-pre1", - "ajv": "^8.6.0", - "common-tags": "^1.8.0", - "eta": "^4.5.1", - "fast-json-stable-stringify": "^2.1.0", - "fs-extra": "^9.0.1", - "glob": "^11.0.1", - "pretty-bytes": "^5.3.0", - "rollup": "^4.53.3", - "source-map": "^0.8.0-beta.0", - "stringify-object": "^3.3.0", - "strip-comments": "^2.0.1", - "tempy": "^0.6.0", - "upath": "^1.2.0", - "workbox-background-sync": "7.4.1", - "workbox-broadcast-update": "7.4.1", - "workbox-cacheable-response": "7.4.1", - "workbox-core": "7.4.1", - "workbox-expiration": "7.4.1", - "workbox-google-analytics": "7.4.1", - "workbox-navigation-preload": "7.4.1", - "workbox-precaching": "7.4.1", - "workbox-range-requests": "7.4.1", - "workbox-recipes": "7.4.1", - "workbox-routing": "7.4.1", - "workbox-strategies": "7.4.1", - "workbox-streams": "7.4.1", - "workbox-sw": "7.4.1", - "workbox-window": "7.4.1" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/workbox-build/node_modules/glob": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", - "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "foreground-child": "^3.3.1", - "jackspeak": "^4.1.1", - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/workbox-build/node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/workbox-build/node_modules/source-map": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0.tgz", - "integrity": "sha512-d8EqvL+k/SOXCreS/SUzg2ciyHqBBLcN/yuRjFsbvVhHTE2pgei7oAhmPM7kWFbkX6OSMQfUq4KbkF3au9lhYQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 12" - } - }, - "node_modules/workbox-cacheable-response": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-7.4.1.tgz", - "integrity": "sha512-8xaFoJdDc2OjrlbbL3gEeBO1WKcMwRqwLRupgqahYXu75yXajPLuwrbXMrIGZuWYXrQwk0xDjOxZ/ujCy/oJYw==", - "dev": true, - "license": "MIT", - "dependencies": { - "workbox-core": "7.4.1" - } - }, - "node_modules/workbox-core": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-7.4.1.tgz", - "integrity": "sha512-DT+vu46eh/2vRsSHTY4Xmc32Z1rr9PRlQUXr1Dx30ZuXRWwOsvZgGgcwxcasubQLQmbTNYZjv44LkBAQ4tT5tQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/workbox-expiration": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-7.4.1.tgz", - "integrity": "sha512-lRKUF7b+OGbeXkQk1s6MHXOa3d7Xxf7Of31W6c6hCfipfIyrtdWZ89stq21AHZMaoG7VNFoHply4Ox+rU31TWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "idb": "^7.0.1", - "workbox-core": "7.4.1" - } - }, - "node_modules/workbox-google-analytics": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-7.4.1.tgz", - "integrity": "sha512-Mks1JwLEt++ZAkF6sS1OpSh9RtAMIsiDgRpK+codiHGIPXeaUOgi4cPc3GFadUl8V5QPeypEk8Oxgl3HlwVzHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "workbox-background-sync": "7.4.1", - "workbox-core": "7.4.1", - "workbox-routing": "7.4.1", - "workbox-strategies": "7.4.1" - } - }, - "node_modules/workbox-navigation-preload": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-7.4.1.tgz", - "integrity": "sha512-C4KVsjPcYKJOhr631AxR9XoG2rLF3QiTk5aMv36MXOjtWvm8axwNFAtKUPGsWUwLXXAMgYM1En7fsvndaXeXRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "workbox-core": "7.4.1" - } - }, - "node_modules/workbox-precaching": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-7.4.1.tgz", - "integrity": "sha512-cdr/9qByww7yzEp7zg/qI4ukUrrNjQLgN+ONQRpjy/VqGQXwkgHwr00KksGJK8v0VifwDXBb8a4cWNZH71jn3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "workbox-core": "7.4.1", - "workbox-routing": "7.4.1", - "workbox-strategies": "7.4.1" - } - }, - "node_modules/workbox-range-requests": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-7.4.1.tgz", - "integrity": "sha512-7i2oxAUE82gHdAJBCAQ04JzNOdRPqzuOzGfoUyJpFSmeqBNYGPrAH8GPoPjUQTfp+NycwrD2H68VtuF8qxv0vQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "workbox-core": "7.4.1" - } - }, - "node_modules/workbox-recipes": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-7.4.1.tgz", - "integrity": "sha512-gnbVfmV4/TtmQaM4x9AtuXhcdstJsep3XMVeztOrQVPT+R6+6DeBjGTCQ7fFCXm+4GEHUA5VEBTyi5+4gWGeog==", - "dev": true, - "license": "MIT", - "dependencies": { - "workbox-cacheable-response": "7.4.1", - "workbox-core": "7.4.1", - "workbox-expiration": "7.4.1", - "workbox-precaching": "7.4.1", - "workbox-routing": "7.4.1", - "workbox-strategies": "7.4.1" - } - }, - "node_modules/workbox-routing": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-7.4.1.tgz", - "integrity": "sha512-yubJGErZOusuidAenaL5ypfhQOa7urxP/f8E0ws7FPb4039RiWXUWBAyUkmUoOL/BcQGen3h0J8872d51IYxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "workbox-core": "7.4.1" - } - }, - "node_modules/workbox-strategies": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-7.4.1.tgz", - "integrity": "sha512-GZxpaw9NbmOelj7667uZ2kpk5BFpOGbO4X0qjwh5ls8XQ8C+Lha5LQchTiUzsTFSS+NlUpftYAyOVXvQUrcqOQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "workbox-core": "7.4.1" - } - }, - "node_modules/workbox-streams": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-7.4.1.tgz", - "integrity": "sha512-HWWtraKUbJknd9kgqGcpQ3G114HOPYvqs8HaJMDs2ebLNAimDkVDaWfAXE6Ybl+m8U6KsCE6pWyLYuigWmnAXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "workbox-core": "7.4.1", - "workbox-routing": "7.4.1" - } - }, - "node_modules/workbox-sw": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-7.4.1.tgz", - "integrity": "sha512-fez5f2DUlDJWTFYkCWQpY10N8gtztd849NswCbVFk0QlcSM4HT5A8x4g4ii650yem4I8tHY0R7JZahwp3ltIPw==", - "dev": true, - "license": "MIT" - }, - "node_modules/workbox-window": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-7.4.1.tgz", - "integrity": "sha512-notZDH2u8VXaqyuD7xaqIfEFi6SRM4SUSd7ewe9PDsVqADuepxX2ZMY3uvuZGxzY5ZOsGC/vD3A/3smFtJt4/A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/trusted-types": "^2.0.2", - "workbox-core": "7.4.1" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index 680ff6a4..09df5501 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,6 @@ "typescript": "^6.0.3", "typescript-eslint": "^8.71.0", "vite": "^8.3.4", - "vite-plugin-pwa": "^1.2.0", "vitest": "^5.0.3" }, "overrides": { From b1d9f24fc7b3c64352ed1937e91ed4899081fb8d Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Wed, 21 Oct 2026 20:12:35 +0200 Subject: [PATCH 08/26] #530: updated segments --- deployment/segments/social.reads.json | 1 - deployment/segments/social.writes.json | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/deployment/segments/social.reads.json b/deployment/segments/social.reads.json index bd093465..a0adf51c 100644 --- a/deployment/segments/social.reads.json +++ b/deployment/segments/social.reads.json @@ -13,7 +13,6 @@ "./social/domain/creator.metrics/get/retrieveExisting": { "default": { "access": "protected" } }, "./social/domain/creator.metrics/getMany/retrieveExisting": { "default": { "access": "protected" } }, - "./social/domain/image/_save/fileExists": { "default": { "access": "protected" } }, "./social/domain/image/getById/retrieveFile": { "default": { "access": "protected" } }, "./social/domain/image/getById/retrieveRecord": { "default": { "access": "protected" } }, "./social/domain/image/getManyById/retrieveFiles": { "default": { "access": "protected" } }, diff --git a/deployment/segments/social.writes.json b/deployment/segments/social.writes.json index b9313201..5de3ef70 100644 --- a/deployment/segments/social.writes.json +++ b/deployment/segments/social.writes.json @@ -9,8 +9,7 @@ "./social/domain/creator.metrics/updateFollowing/persist": { "default": { "access": "protected" } }, "./social/domain/creator.metrics/updatePosts/persist": { "default": { "access": "protected" } }, - "./social/domain/image/_save/insertFile": { "default": { "access": "protected" } }, - "./social/domain/image/_save/persist": { "default": { "access": "protected" } }, + "./social/domain/image/_save": { "default": { "access": "protected" } }, "./social/domain/image/remove": { "default": { "access": "protected" } }, "./social/domain/post/_create/persist": { "default": { "access": "protected" } }, From 5c578272fa604407573800bbe2d540f47a0fbdef Mon Sep 17 00:00:00 2001 From: Bas Meeuwissen Date: Thu, 22 Oct 2026 13:57:31 +0200 Subject: [PATCH 09/26] #530: update dependencies --- package-lock.json | 626 ++++++++++++++++++++-------------------------- package.json | 16 +- tsconfig.json | 2 +- 3 files changed, 278 insertions(+), 366 deletions(-) diff --git a/package-lock.json b/package-lock.json index c0a3b46b..76ac8390 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,29 +43,29 @@ "@theshelf/validation-driver-zod": "^0.6.0", "dayjs": "^1.11.23", "jitar": "^0.12.0", - "react": "^19.3.0", - "react-dom": "^19.3.0", + "react": "^19.3.1", + "react-dom": "^19.3.1", "react-router-dom": "^7.18.4" }, "devDependencies": { "@eslint/js": "^9.39.5", "@jitar/plugin-vite": "^0.12.0", - "@types/node": "^24.19.1", + "@types/node": "^24.19.2", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", - "@vitejs/plugin-react": "^5.1.4", - "@vitest/coverage-v8": "^5.0.3", + "@vitejs/plugin-react": "^6.1.2", + "@vitest/coverage-v8": "^5.0.5", "cpx2": "^9.0.3", "eslint-plugin-import": "^2.32.0", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^7.1.1", "pm2": "^7.0.4", "rimraf": "^6.1.3", - "tsc-alias": "^1.9.7", + "tsc-alias": "^1.9.8", "typescript": "^6.0.3", - "typescript-eslint": "^8.71.0", + "typescript-eslint": "^8.72.0", "vite": "^8.3.4", - "vitest": "^5.0.3" + "vitest": "^5.0.5" }, "engines": { "node": ">=24" @@ -88,14 +88,14 @@ "version": "0.0.1" }, "node_modules/@aws-sdk/checksums": { - "version": "3.1001.3", - "resolved": "https://registry.npmjs.org/@aws-sdk/checksums/-/checksums-3.1001.3.tgz", - "integrity": "sha512-CcAkVyEUKGngbEqJdVdSc53Iy52+XzVL5NIcTen2BlK8UByNC1DThVtf5VKSrNzyA+SqyTvs+3S+knVBbOUizQ==", + "version": "3.1001.4", + "resolved": "https://registry.npmjs.org/@aws-sdk/checksums/-/checksums-3.1001.4.tgz", + "integrity": "sha512-H8BiG/2DnfwydVxD1uDPLa1s1sfhRnVTbD2OwzfTr3WlJzgbIzICDXxBTlTMjbWNNCe4VS9X55fco+JI34L9kw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.3", + "@aws-sdk/core": "^3.978.4", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -104,18 +104,18 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.1151.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1151.0.tgz", - "integrity": "sha512-Kg20OP7F+rrWMFjPv/aCsNUt/qDbvh1bLJFQM8k/8fnxowR/DA67qL5KHzWWN5gwJCYplS3KQde6P/knOB+lxg==", + "version": "3.1153.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1153.0.tgz", + "integrity": "sha512-h0VScQZPfBApg1Qi4AedsOUSMZ7m758kZIg0JO0B5HtwSzQhB7Tgh6h1JoGEXELgrWADPusYMpMBDmrRAEx2yw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/checksums": "^3.1001.3", - "@aws-sdk/core": "^3.978.3", - "@aws-sdk/credential-provider-node": "^3.972.86", - "@aws-sdk/middleware-sdk-s3": "^3.972.79", + "@aws-sdk/checksums": "^3.1001.4", + "@aws-sdk/core": "^3.978.4", + "@aws-sdk/credential-provider-node": "^3.972.87", + "@aws-sdk/middleware-sdk-s3": "^3.972.80", "@aws-sdk/signature-v4-multi-region": "^3.996.48", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", @@ -126,15 +126,15 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.978.3", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.978.3.tgz", - "integrity": "sha512-nslpzUCTI9b2IQMWSd6mSAXldBexPc8rr0d3dXUutXYFLFaTdsHa2GD7sJdsn3PhyjK0O5K8ypd6zi+RXXPVlg==", + "version": "3.978.4", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.978.4.tgz", + "integrity": "sha512-JvGp6y9sPX8FSs2K/EmFMZcUfdkHxqGE45+oxwGC75OIh50j2e4cbx7zcR3BwNs2DSGqJdBja5h6Vy89iIDmRQ==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.974.6", "@aws-sdk/xml-builder": "^3.972.41", "@aws/lambda-invoke-store": "^0.3.0", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/signature-v4": "^5.7.4", "@smithy/types": "^4.19.0", "bowser": "^2.11.0", @@ -145,14 +145,14 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.972.74", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.74.tgz", - "integrity": "sha512-rsRJcW2iFUhCgclyD6OSbMEaPl8Eu0qSeRZb2uuCK1ViZ66hl5wOe/p6Vr6MO3b+ydyKgFeqza2p6tZThvILlw==", + "version": "3.972.75", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.75.tgz", + "integrity": "sha512-nc8Epg98PcYoKNx0VFlwtmZSCP+tuJ1FLWqpslET/gp4h/WYuULSJqtxppM6ywKKDdzNJPvLD7ceRfmxm3Qdxw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.3", + "@aws-sdk/core": "^3.978.4", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -161,14 +161,14 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.972.76", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.76.tgz", - "integrity": "sha512-pnKdh0Br7OJPj+7qKjzgTfDTFW0RhEMKXNDR2jv9CAM4oHuG/4z3hRh8KtutLfpmItuRtDbKBmwWkDqHwwAWXw==", + "version": "3.972.77", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.77.tgz", + "integrity": "sha512-KkYFdIQwuw9IOHfEzK78slxmVWuhcm1w6YgE3V3WVxAeRRj9q5J9jlwzpY/oszWxd4SD96FTFkDdRGBdMFF2Mw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.3", + "@aws-sdk/core": "^3.978.4", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", @@ -179,21 +179,21 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.973.19", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.973.19.tgz", - "integrity": "sha512-kcjvAxqQEV8yuwkX58RelNn3ne65o7JgRWf3Z/gVvbi7Xuw1qSDLJlatrLD76+40cmRxmNkLxBoyp/vAQChQ5g==", + "version": "3.973.20", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.973.20.tgz", + "integrity": "sha512-OSl2R/0zLkoeKEIy6oP2tu/bsSdY+DGgro2eOffMD2CcP8POv7rS14FY5Jzc5bjnqB1G9wv/aM1akHC2mdlhZw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.3", - "@aws-sdk/credential-provider-env": "^3.972.74", - "@aws-sdk/credential-provider-http": "^3.972.76", - "@aws-sdk/credential-provider-login": "^3.972.81", - "@aws-sdk/credential-provider-process": "^3.972.74", - "@aws-sdk/credential-provider-sso": "^3.973.18", - "@aws-sdk/credential-provider-web-identity": "^3.972.80", - "@aws-sdk/nested-clients": "^3.997.48", + "@aws-sdk/core": "^3.978.4", + "@aws-sdk/credential-provider-env": "^3.972.75", + "@aws-sdk/credential-provider-http": "^3.972.77", + "@aws-sdk/credential-provider-login": "^3.972.82", + "@aws-sdk/credential-provider-process": "^3.972.75", + "@aws-sdk/credential-provider-sso": "^3.973.19", + "@aws-sdk/credential-provider-web-identity": "^3.972.81", + "@aws-sdk/nested-clients": "^3.997.49", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/credential-provider-imds": "^4.5.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" @@ -203,15 +203,15 @@ } }, "node_modules/@aws-sdk/credential-provider-login": { - "version": "3.972.81", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.81.tgz", - "integrity": "sha512-CeQHSbE2CnVdaHIJ/NayRaCecIER+Pm9faUPkmRATO54rCoMTEPSbVieGHzEwvm1dZM2HIs6qQZCznhayNTWJQ==", + "version": "3.972.82", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.82.tgz", + "integrity": "sha512-8jyDPtf1WPxeQ/5xlNpyxAD6P7YKwkYeNk8B2vFEDwkPWDvb7c3tQJG5/jbNWbF2yTMIH9tDTueBkdfovYIAPw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.3", - "@aws-sdk/nested-clients": "^3.997.48", + "@aws-sdk/core": "^3.978.4", + "@aws-sdk/nested-clients": "^3.997.49", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -220,19 +220,19 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.972.86", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.86.tgz", - "integrity": "sha512-WNttSyr6e8innPtBSty//CdnqJcgZN6eAbtw3v/CR2IObz6MYZEo8eusdtuCHJ2ujwFqC2bSPHVyhXGHx8HruQ==", + "version": "3.972.87", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.87.tgz", + "integrity": "sha512-TKj2C0x4IMPSSOAlmeryX8fCPvvPS2pFJz2ikV9IGqyh6Ehsg4leMalCTVfV2rvMTrlGAe7X7nK0HZ3P0KZR9g==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "^3.972.74", - "@aws-sdk/credential-provider-http": "^3.972.76", - "@aws-sdk/credential-provider-ini": "^3.973.19", - "@aws-sdk/credential-provider-process": "^3.972.74", - "@aws-sdk/credential-provider-sso": "^3.973.18", - "@aws-sdk/credential-provider-web-identity": "^3.972.80", + "@aws-sdk/credential-provider-env": "^3.972.75", + "@aws-sdk/credential-provider-http": "^3.972.77", + "@aws-sdk/credential-provider-ini": "^3.973.20", + "@aws-sdk/credential-provider-process": "^3.972.75", + "@aws-sdk/credential-provider-sso": "^3.973.19", + "@aws-sdk/credential-provider-web-identity": "^3.972.81", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/credential-provider-imds": "^4.5.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" @@ -242,14 +242,14 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.972.74", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.74.tgz", - "integrity": "sha512-Yj6kZFJQdbR+PygTkqdVLPHHpdDpOS9GCYVcDCuweCRRig9LF24ELQBMfyUw1vspvrZJUfnOGVyMjhaL094ahw==", + "version": "3.972.75", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.75.tgz", + "integrity": "sha512-ZNm8T/HJNhpS8MikDVAsym8QyUSUuOUGiCkmI3TTya7G6xhOgfRLd2iK91HhQQyvRM36eo6Xm845hHVyfToA2w==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.3", + "@aws-sdk/core": "^3.978.4", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -258,16 +258,16 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.973.18", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.973.18.tgz", - "integrity": "sha512-FnpPhdY4qUGtX/8X6eKxh+uD+9Y19i9FYibgk4SBe0M935s9vocHkHzaxaMNk+YkHmvzgdu8cHA5SCoeU+kkew==", + "version": "3.973.19", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.973.19.tgz", + "integrity": "sha512-qHGDAGesyWtRw3BapyFkYSUzVNrC1CWPS6+S2lf/MLMEkWB2gR3Bl6imVHy1nhImXKS+gcuUDzbu39BnsHJc1Q==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.3", - "@aws-sdk/nested-clients": "^3.997.48", - "@aws-sdk/token-providers": "3.1150.0", + "@aws-sdk/core": "^3.978.4", + "@aws-sdk/nested-clients": "^3.997.49", + "@aws-sdk/token-providers": "3.1153.0", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -276,15 +276,15 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.972.80", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.80.tgz", - "integrity": "sha512-TJF25Ndwy2HxcVj6oxMgp8qVlJAawlExHYBXqhuC6Zt2m+A7WpdkjBD6QglNbiArlteYljZHEY3R7KKmno6ISA==", + "version": "3.972.81", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.81.tgz", + "integrity": "sha512-nHkgkMIC6NHgqfI6UAQq5cCS4bUkNxkT+r9fXCq/X4IKfX/DHGZ8UM3T4b78OXpWK5OlzEzN4kxwyax0W/MUCA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.3", - "@aws-sdk/nested-clients": "^3.997.48", + "@aws-sdk/core": "^3.978.4", + "@aws-sdk/nested-clients": "^3.997.49", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -293,15 +293,15 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.972.79", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.79.tgz", - "integrity": "sha512-UfgAQosf4IEXldMsyntVuHsJnaQzlH6pmkOr6dQy7CaOYSlGz3mWiW4Di7XfQ/kPJP6xE7oMshz1V0E8RqGdRg==", + "version": "3.972.80", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.80.tgz", + "integrity": "sha512-zX3lXN/9XOUAuGpxgt3wXwZrXhTjQYEgRsqa856PbZWpOtleUWmCMbhlkLfusPuhW24cOC/8JYR8hnRalrrIkQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.3", + "@aws-sdk/core": "^3.978.4", "@aws-sdk/signature-v4-multi-region": "^3.996.48", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -310,15 +310,15 @@ } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.997.48", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.48.tgz", - "integrity": "sha512-B01jdXJtAW/XOiUzGdI2mz67WyEHbGEc9X6Euzw3bjLAa+txTqdZDER4X2FsIEcXzV2ABqudVZ5thali8tCCzQ==", + "version": "3.997.49", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.49.tgz", + "integrity": "sha512-zjqIqzTYLRKhT7TPJDUreK9vG9PjhmnfLCaTaqArkRT7j+Ogl0tuXB7MpSd8rlRfRT+xTOeyNFWaOfyNcf51hg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.3", + "@aws-sdk/core": "^3.978.4", "@aws-sdk/signature-v4-multi-region": "^3.996.48", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", @@ -344,15 +344,15 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.1150.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1150.0.tgz", - "integrity": "sha512-wDU36ofhabZYu+d2KSriyDbwzxNoaOp+4dG0p3qkabk7HeALR5nIWyQbjoyJZLn3iqWkv/xNdyUfbfevDVDzzg==", + "version": "3.1153.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1153.0.tgz", + "integrity": "sha512-6bKJ2OfLboxhzeJ3hBDeB8L6emCYf9DfdrjBAharLrY42J1RV/6jA6G8jvfNghzID8Yb40BdSY7jQMtWx9Ot0Q==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.3", - "@aws-sdk/nested-clients": "^3.997.48", + "@aws-sdk/core": "^3.978.4", + "@aws-sdk/nested-clients": "^3.997.49", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -410,6 +410,13 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/code-frame/node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@babel/compat-data": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", @@ -527,16 +534,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", - "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-string-parser": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", @@ -597,38 +594,6 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz", - "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz", - "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/template": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", @@ -1190,9 +1155,9 @@ } }, "node_modules/@mongodb-js/saslprep": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.6.0.tgz", - "integrity": "sha512-19jGXfpctLDJUELLUZGJ5BllcLT7rHdF+gTTaN2jzqu0bGkUhpdcYtgK2Vux+g3zuBAa0TM/W666QMIjYhYujw==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.6.1.tgz", + "integrity": "sha512-D4CQtk9IwjCLAvCf1xvHEod3960q8XMUzfmdRU9qjUNlHnesGuTOvJcOTaPm9koZ1caUKA2aTbszZiAkcmSgmg==", "license": "MIT", "dependencies": { "sparse-bitfield": "^3.0.3" @@ -1882,16 +1847,16 @@ } }, "node_modules/@rolldown/pluginutils": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz", - "integrity": "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", "dev": true, "license": "MIT" }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.64.6.tgz", - "integrity": "sha512-05v6wFKDKJPZs9xlytVrrRu6IbRuoSvlH9xNwEOafXsKyjBFZPvAcZz2VIAB/M+lblYeKa9iOYC4RDVdfcAAaw==", + "version": "4.64.12", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.64.12.tgz", + "integrity": "sha512-mkbjxPqpR91u1JD7xY4aLZhr/Mqka4/RqGcG4WNGgN/lC1o7TzyCyqJoSJXp9qVVxMwpJGFlEF1VlERb+Ghw1Q==", "cpu": [ "x64" ], @@ -2147,51 +2112,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.2" - } - }, "node_modules/@types/chai": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", @@ -2278,17 +2198,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.71.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.71.2.tgz", - "integrity": "sha512-K72/pvT7qpm8q3k8G5u93NCSN1RcLxX5h7Gw0bQpbMXviBHeY6Nx1WEwmk9wP+eKTSQ8ecxvcgt/ZX/rB938xQ==", + "version": "8.72.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.72.0.tgz", + "integrity": "sha512-aysKgysPX9XOv/dk95UkvUDe++Q3n3dJPG9CEWT3RUccxfkPJ+Qn6nhKPDhZXU6Ofo9kgwGWwKyQCnZIXTgngg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.71.2", - "@typescript-eslint/type-utils": "8.71.2", - "@typescript-eslint/utils": "8.71.2", - "@typescript-eslint/visitor-keys": "8.71.2", + "@typescript-eslint/scope-manager": "8.72.0", + "@typescript-eslint/type-utils": "8.72.0", + "@typescript-eslint/utils": "8.72.0", + "@typescript-eslint/visitor-keys": "8.72.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" @@ -2301,22 +2221,22 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.71.2", + "@typescript-eslint/parser": "^8.72.0", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.71.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.71.2.tgz", - "integrity": "sha512-aTtmZjp/x3gsGHkDs04/1I8kNogBJkpQaeGaN0PfiG43NzDEmW2n+OP5im9wfsvyX0yP1UZWBrAGtDBfH9jEVw==", + "version": "8.72.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.72.0.tgz", + "integrity": "sha512-0O+x3ynciD6zuXb1CKSu165haQV6ey53DKhHHUnujP7U+XlltJG+/keT0Xhd1HXCze+IHf7Tvt39ovyepX/LNw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.71.2", - "@typescript-eslint/types": "8.71.2", - "@typescript-eslint/typescript-estree": "8.71.2", - "@typescript-eslint/visitor-keys": "8.71.2", + "@typescript-eslint/scope-manager": "8.72.0", + "@typescript-eslint/types": "8.72.0", + "@typescript-eslint/typescript-estree": "8.72.0", + "@typescript-eslint/visitor-keys": "8.72.0", "debug": "^4.4.3" }, "engines": { @@ -2332,14 +2252,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.71.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.71.2.tgz", - "integrity": "sha512-Pd68GsLVh5ZXlcEccFPdhSOvtHZ/2WU0XsA8zmXOS3F158lVlcTLhfQ6qvtL1RzbMie0Kp8xtbVwAg4nejKPHw==", + "version": "8.72.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.72.0.tgz", + "integrity": "sha512-bzHngBbmIgzj6TsTjVUCntGx6FFLgE7mPjpO0PzHycOaZHXqS43XnrkFIHRS16LLr/xO6FHSXG3GJFo/F4bSBQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.71.2", - "@typescript-eslint/types": "^8.71.2", + "@typescript-eslint/tsconfig-utils": "^8.72.0", + "@typescript-eslint/types": "^8.72.0", "debug": "^4.4.3" }, "engines": { @@ -2354,14 +2274,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.71.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.71.2.tgz", - "integrity": "sha512-YF4wgg5iUX5Obywoac27B56FhozMNFhdJSbh11H5GBAwmBtfyRhmgTQqW9tRNNmHDvsZ2CX6UGzoz+YfYn2Leg==", + "version": "8.72.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.72.0.tgz", + "integrity": "sha512-JewPyJOYcXBSAS7PIgufscHOwZqhTGyBRiQJhhuDln66tMchxvvt7nJ90JKKIoOelmdHA3kAQbm9cEUHc4JSEA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.71.2", - "@typescript-eslint/visitor-keys": "8.71.2" + "@typescript-eslint/types": "8.72.0", + "@typescript-eslint/visitor-keys": "8.72.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2372,9 +2292,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.71.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.71.2.tgz", - "integrity": "sha512-jz49TAWokm/7yWD9/o837nYax9DyALxIPOImdImvVzo6canBCZYzin8zJyqNR5k1j9K1DE0bVvr0XYB+99uAdg==", + "version": "8.72.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.72.0.tgz", + "integrity": "sha512-0vbxCf7xLVPSjcOdm6eQbgViH8EDJ8xnl1laLT9yoqSz2YmcSfSg5Vdl0JUvZf6rcuJ0ZivJIuMD4edTg8obaA==", "dev": true, "license": "MIT", "engines": { @@ -2389,15 +2309,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.71.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.71.2.tgz", - "integrity": "sha512-cC8UaalCViJkb3rH/xLIvidEwoFRtMZMUqDjjJMGEKaTFwYRHYBcoczlEGHuvkHEO8svRDrgZ0yQgOArFmwang==", + "version": "8.72.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.72.0.tgz", + "integrity": "sha512-gEXxmmbSTSOVTC37IYYvremOM31v+UN2W772bJxmVYPhAOPSUxtacyb7wkm1EhkYKU6KzFJsdU44DCV4to0LWw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.71.2", - "@typescript-eslint/typescript-estree": "8.71.2", - "@typescript-eslint/utils": "8.71.2", + "@typescript-eslint/types": "8.72.0", + "@typescript-eslint/typescript-estree": "8.72.0", + "@typescript-eslint/utils": "8.72.0", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, @@ -2414,9 +2334,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.71.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.71.2.tgz", - "integrity": "sha512-y5Ukl3oVp7e/VGxqIoEXoeb/Roj71PAJ4WG/N/RGj+eeDvKRLM15kGr9MijLbN0i03S52zxu31Z98E5gWChJKw==", + "version": "8.72.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.72.0.tgz", + "integrity": "sha512-Adfoy59kxNEjT5E5fnyrp7GpHYuWs8ONbdohu4ez6IU46qDq8LltG90tLmkucZB2uhYL8mqBjtXqGd8yhfjXqQ==", "dev": true, "license": "MIT", "engines": { @@ -2428,16 +2348,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.71.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.71.2.tgz", - "integrity": "sha512-DgNOEsl4pdYzwSL+N/Cl33tX1Hlw3FvId73LnKXfq7jnrF2viOEn7X+P7RBkkSWCVm92gnWd28GIC5vJuLREeA==", + "version": "8.72.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.72.0.tgz", + "integrity": "sha512-gwLfFgWcw15tN2KXDCJvxEOQjPn+P3j/n3eSqkZ5sX4VpW9Cosodr+tWwBZRvJT3TcKx6HnPRGZMCNAiP1Xhug==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.71.2", - "@typescript-eslint/tsconfig-utils": "8.71.2", - "@typescript-eslint/types": "8.71.2", - "@typescript-eslint/visitor-keys": "8.71.2", + "@typescript-eslint/project-service": "8.72.0", + "@typescript-eslint/tsconfig-utils": "8.72.0", + "@typescript-eslint/types": "8.72.0", + "@typescript-eslint/visitor-keys": "8.72.0", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", @@ -2469,16 +2389,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.71.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.71.2.tgz", - "integrity": "sha512-RyKa1G1M9rKHDhrk+HJtiF1MvLD5Ux2JW3TSkzw+02pRALdpJb+QzG1Y5em+LvCgzGwgg8H7mBRFKljNz7ImPw==", + "version": "8.72.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.72.0.tgz", + "integrity": "sha512-0up3oArJZBYnzOaEXKo8DmI43QvMZyPoFEt9LWzRJcyl/RcJjfKKPebknN1VbTgXBf3M/KggUh5uUMdURLnseg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.71.2", - "@typescript-eslint/types": "8.71.2", - "@typescript-eslint/typescript-estree": "8.71.2" + "@typescript-eslint/scope-manager": "8.72.0", + "@typescript-eslint/types": "8.72.0", + "@typescript-eslint/typescript-estree": "8.72.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2493,13 +2413,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.71.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.71.2.tgz", - "integrity": "sha512-zozlN0UA32bSG2zkKAgQyRYSbEISVoyU6vvkKYo2aSny74D8Jh4e+POkJ6Lk0dlezZi5x7TtD+88Xb06IB8nhg==", + "version": "8.72.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.72.0.tgz", + "integrity": "sha512-E2mroviasaWecDzTGiGMtuEguuLVOeRggnrIn93CJuxYJzQBHbyymlT08aVQydbBal5538o+JkBKXh2sRuCyIA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.71.2", + "@typescript-eslint/types": "8.72.0", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -2524,30 +2444,39 @@ } }, "node_modules/@vitejs/plugin-react": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.2.0.tgz", - "integrity": "sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.1.2.tgz", + "integrity": "sha512-fhJNGUdscQa4HkI0xFxwonWyhnVReCPDbXI7FH7jmzpnVCrFQI7PRrhWecO263610vOrs9tr2Y4xcf8uAdFxbw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.29.0", - "@babel/plugin-transform-react-jsx-self": "^7.27.1", - "@babel/plugin-transform-react-jsx-source": "^7.27.1", - "@rolldown/pluginutils": "1.0.0-rc.3", - "@types/babel__core": "^7.20.5", - "react-refresh": "^0.18.0" + "@rolldown/pluginutils": "^1.0.1" }, "engines": { "node": "^20.19.0 || >=22.12.0" }, "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", + "babel-plugin-react-compiler": "^1.0.0", + "oxc-transform-react": "^0.152.0", + "vite": "^8.0.0" + }, + "peerDependenciesMeta": { + "@rolldown/plugin-babel": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "oxc-transform-react": { + "optional": true + } } }, "node_modules/@vitest/coverage-v8": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-5.0.4.tgz", - "integrity": "sha512-P5YcQY8Y6RmoE9xRXI38rT8pssbcubEzqtYTM2XQoxOXMDn04nRaTI1SM8qCl9/NfW3ag9GlzdSXu7IwO5Ft8A==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-5.0.5.tgz", + "integrity": "sha512-4KpkGdIrSqBihx/JyP/e+S+IKB98etg1XDQiLAxksLfcShnwi1VReGeOT9NI43hLHbknosKp/1CCLn9Zgcs8mg==", "dev": true, "license": "MIT", "dependencies": { @@ -2564,8 +2493,8 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "5.0.4", - "vitest": "5.0.4" + "@vitest/browser": "5.0.5", + "vitest": "5.0.5" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -2597,14 +2526,14 @@ } }, "node_modules/@vitest/mocker": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-5.0.4.tgz", - "integrity": "sha512-tqAlrYWce4iUxhr3ncNohejtCTOcHeE8XWrSNZY3OhPoDn01yeGv+gnaBy64ATp7o6pb03eIbBAjzmibpc9vIQ==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-5.0.5.tgz", + "integrity": "sha512-xLL3lkDegJZw+MGoGaCCsFayDZthGgpAtr3Vziyfc4p7xH89K7KRPcRBBh/kEYm0Aqkt5DtTmkYpBtRV/FrHZg==", "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "0.3.31", - "@vitest/spy": "5.0.4", + "@vitest/spy": "5.0.5", "estree-walker": "^3.0.3", "magic-string": "^1.4.3" }, @@ -2625,9 +2554,9 @@ } }, "node_modules/@vitest/spy": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-5.0.4.tgz", - "integrity": "sha512-MZKk/gSkm2q+ICobMxCpH1mA+cCAWm8WV7UhxlqGjq/sJ3AGc1BqFOs5CRVXxH78wQtme9q/NAAgBquj4AcyMw==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-5.0.5.tgz", + "integrity": "sha512-lwJRExuH417257Q5wv9QYugN9IMJkoxcrKrYxGPQkBzl7wlNpTUxD/5yNX4ESKVUIShKPgkGchYPFMWOOk0wzw==", "dev": true, "license": "MIT", "funding": { @@ -2981,13 +2910,6 @@ "js-tokens": "^10.0.0" } }, - "node_modules/ast-v8-to-istanbul/node_modules/js-tokens": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", - "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", - "dev": true, - "license": "MIT" - }, "node_modules/async": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", @@ -3040,9 +2962,9 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.11.28", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.28.tgz", - "integrity": "sha512-br0LOmjJqr6Rt4AEkadbcNf67Zpo7EPwKsWbjnRrJIa1QYFHQBqM4C7F2WTbV8ahTEcg1Eo+Y0aWjjORInYFyA==", + "version": "2.11.30", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.30.tgz", + "integrity": "sha512-YJs6Pz17RMNv8HoyKREtCY38E3BV1nPkWVmIb+XN1uHC1Vqt3KZCH/uJH9ZKRoiKb/icZ6tvehyee6RZNbFfRA==", "dev": true, "license": "Apache-2.0", "bin": { @@ -3144,9 +3066,9 @@ } }, "node_modules/browserslist": { - "version": "4.29.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.29.3.tgz", - "integrity": "sha512-1R4kiYKXGViqEN0CnoDrXc1StD9niAwu+j2dukWzrD4bJgsD4lDmEp0CRbc6E/vYJIfTHwPmwyaKtVSudICdPA==", + "version": "4.29.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.29.4.tgz", + "integrity": "sha512-2TcbbiwXEq+N0kD36tykpCfyyQigUXmuwNQbnPp4Xk4PX9JOqVIKjJlIDjpH7uY6tmRGoAd+apeT1p60T8wsdA==", "dev": true, "funding": [ { @@ -3164,11 +3086,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.11.26", - "caniuse-lite": "^1.0.30001813", - "electron-to-chromium": "^1.5.439", - "node-releases": "^2.0.57", - "update-browserslist-db": "^1.3.3" + "baseline-browser-mapping": "^2.11.29", + "caniuse-lite": "^1.0.30001816", + "electron-to-chromium": "^1.5.459", + "node-releases": "^2.0.59", + "update-browserslist-db": "^1.3.4" }, "bin": { "browserslist": "cli.js" @@ -3255,9 +3177,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001816", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001816.tgz", - "integrity": "sha512-+8Yx7BXCoqk6IF8yTicjfUR6D/ldJzdlsodlEOiOSPmhK844WIgk67/zIQaGAOxNkZyyvBlrRFnLvqKIoqbAFw==", + "version": "1.0.30001817", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001817.tgz", + "integrity": "sha512-uZ1JG80BwhtMalIAGPxPfmNhHyd/B/nTdr3hITWlRamSyAdUStP1Gop01e7SD5q6J90ixJvWDbvmiFVfDgn4bw==", "dev": true, "funding": [ { @@ -3815,9 +3737,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.456", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.456.tgz", - "integrity": "sha512-8hboqI6xesozteFb8aa7OGknvxUtTeRJLz0FoePysUEh/oWbddykIGdgpEJRbPRg/nIMfBf2DFos+H2MtvJl2A==", + "version": "1.5.461", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.461.tgz", + "integrity": "sha512-3WZFARz1By+/rYcqQ0OLj4UcEdhd6tz2LEcDtKBUq7ey77EeJ1OtetY/5hjSUxw7dC5r5mA7FfkhRbqO9vnTCg==", "dev": true, "license": "ISC" }, @@ -4699,9 +4621,9 @@ "peer": true }, "node_modules/fast-uri": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.8.tgz", - "integrity": "sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.9.tgz", + "integrity": "sha512-hS/0Wt3Ya043oKXs0sIxrMpKQITXhMLIrVAKKXi4gozGC9v7YRWVnXIZzjNPTO02M9BdxLCWqK1yRXgNziVyJQ==", "funding": [ { "type": "github", @@ -5348,9 +5270,9 @@ } }, "node_modules/ignore": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.12.tgz", - "integrity": "sha512-/8UvqAPU9DGTI9k4mxtf49U37Isfwr8Uts96+SBHIkFxPJnHS0Ew4f00sM4Scd8V8EjM0jUNtVDdv1kPdt35lg==", + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.13.tgz", + "integrity": "sha512-2E8Q6rh+1RRSq/YdaGsNfXsEZy9FVqv6BSSrkmZJP7BnaoPnRfKL+YaofPvP+5rzdk144qSm6i4+hvPgUcbV4Q==", "dev": true, "license": "MIT", "engines": { @@ -5914,18 +5836,18 @@ } }, "node_modules/jose": { - "version": "6.2.12", - "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.12.tgz", - "integrity": "sha512-9NiFmJEex0sy2Dk58j2UGBSHgUs2ypF9eZSu4L6vjOX3Dp96Sw1F3uL+H+D1sx02jZZdzUT0HgvCy59CuvXcWw==", + "version": "6.2.13", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.13.tgz", + "integrity": "sha512-7TIg10ZE1x82YediN+lcrPNvGMKge9yFHQD+Qho/b8y2adfugU3AsvvHfxV0fzyFllT6l9xCjf4RWY9g/Z9PJQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/panva" } }, "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", "dev": true, "license": "MIT" }, @@ -6384,6 +6306,13 @@ "loose-envify": "cli.js" } }, + "node_modules/loose-envify/node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -6711,9 +6640,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.58", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.58.tgz", - "integrity": "sha512-BdiKAgbfRlvfMq/XzO/AF9NPmaA8a+YpLAyAFTVFBj3gARrAIfWvNq7Q7NE4se3KgFu0KkrvQMxTS0XVnsGzHg==", + "version": "2.0.59", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.59.tgz", + "integrity": "sha512-5qr2okC4ItAI0hG5SaV0HoYMpnM/Y6+Oqr7AmPYy/2uEoGvS+GbSKLeRxSS1uAdu59yz0ouzcuXievSgg///WA==", "dev": true, "license": "MIT", "engines": { @@ -7297,9 +7226,9 @@ } }, "node_modules/postcss": { - "version": "8.5.30", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.30.tgz", - "integrity": "sha512-zkd+e9S1AQHhmaBKye9zlFHWjOwVgqXl1q3ECYy8561K7qxR2cREf/STLskulBFd78k6AOFeA+ff1TtEzk9bAA==", + "version": "8.5.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.31.tgz", + "integrity": "sha512-YUbWYCgErwnMAVkjUnYa+KlMBzGpHwiIt/DE7f0G33AuX2LH9UcTk6KgWxd3zRU+pN3u/C+Xl3EnMLM4Hea7Sg==", "funding": [ { "type": "opencollective", @@ -7424,9 +7353,9 @@ } }, "node_modules/qs": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.16.0.tgz", - "integrity": "sha512-h6fhOIaRrID2CbEY2fqs+7t+UXZo+MLAnU5gRIq85uFtdiUPCdsApMlHhXogKVM4HM2DVbIjGNTTYH2OcmP1vA==", + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.16.1.tgz", + "integrity": "sha512-5Px6J7rfHBAGUhNQ3es4YzcOdBBw0SDcVtThJml4RdnKw4tKs2epA0kPZ+K8X+WiHktT93RHVcQ/3ym5aTCgtg==", "license": "BSD-3-Clause", "dependencies": { "es-define-property": "^1.0.1", @@ -7499,24 +7428,24 @@ } }, "node_modules/react": { - "version": "19.3.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.3.0.tgz", - "integrity": "sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==", + "version": "19.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-19.3.1.tgz", + "integrity": "sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/react-dom": { - "version": "19.3.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.3.0.tgz", - "integrity": "sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==", + "version": "19.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.3.1.tgz", + "integrity": "sha512-Y0bARz53lhEC1NMCASs0/j+faB/zqt3R8hpvg1e8+61ZVJ4UL0UdC4cBbXfZMcIuhrfgeILTLe+ZeBCavQPtKQ==", "license": "MIT", "dependencies": { "scheduler": "^0.28.0" }, "peerDependencies": { - "react": "^19.3.0" + "react": "^19.3.1" } }, "node_modules/react-is": { @@ -7526,16 +7455,6 @@ "dev": true, "license": "MIT" }, - "node_modules/react-refresh": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", - "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/react-router": { "version": "7.18.4", "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.18.4.tgz", @@ -7762,13 +7681,6 @@ "@rolldown/binding-win32-x64-msvc": "1.2.14" } }, - "node_modules/rolldown/node_modules/@rolldown/pluginutils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", - "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", - "dev": true, - "license": "MIT" - }, "node_modules/router": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", @@ -8563,9 +8475,9 @@ } }, "node_modules/tsc-alias": { - "version": "1.9.7", - "resolved": "https://registry.npmjs.org/tsc-alias/-/tsc-alias-1.9.7.tgz", - "integrity": "sha512-nGOOLMkaociegx2Y9J1lnbqrledf1EfSq3Ds4H4CLySG5RyD58KrR4ahFIAgpeMVJz4BIhJND3ETt02o9zKQAw==", + "version": "1.9.8", + "resolved": "https://registry.npmjs.org/tsc-alias/-/tsc-alias-1.9.8.tgz", + "integrity": "sha512-od5fOkQV3Awws6HuoW+hbampmmMz+U9denraxuAwwT2Q4ZFSAJ4LWPYnyVQfCKOquGlRyk7xQTdjCZ3THTsImw==", "dev": true, "license": "MIT", "dependencies": { @@ -8796,16 +8708,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.71.2", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.71.2.tgz", - "integrity": "sha512-Rz4effbMy2g9wnvOJZG6SbVavX313Lap1vNEbk1RUochzickvzP8P4HB+bkNg5e50eVz1hQGjh9K1omI1xB4Bw==", + "version": "8.72.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.72.0.tgz", + "integrity": "sha512-r26Fkc8As+mZvqp7SLsMmNFyYUup/6CjK7/eHBHmhOw6GH6n6YFxHVFrG0jN1c5CMpDzelLPxvgeCOzx7BjN+A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.71.2", - "@typescript-eslint/parser": "8.71.2", - "@typescript-eslint/typescript-estree": "8.71.2", - "@typescript-eslint/utils": "8.71.2" + "@typescript-eslint/eslint-plugin": "8.72.0", + "@typescript-eslint/parser": "8.72.0", + "@typescript-eslint/typescript-estree": "8.72.0", + "@typescript-eslint/utils": "8.72.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8997,14 +8909,14 @@ } }, "node_modules/vitest": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-5.0.4.tgz", - "integrity": "sha512-z0WxZRV2Sg48wF0FSgMq3TFG8JS38/Qr96vZVZdX6+Em9raQTvnXQvdTFJe2m3rfyJnEHeHQ/snceIdi8D1pVg==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-5.0.5.tgz", + "integrity": "sha512-cPODOMF8YnkiiYtDdHo6n4wWmBrOBBbOIYH2d33M4l3CdNn72h+qMmO6uXffUN6A5AZFXNND/d+krS9mgkXRfg==", "dev": true, "license": "MIT", "dependencies": { "@types/chai": "^5.2.2", - "@vitest/mocker": "5.0.4", + "@vitest/mocker": "5.0.5", "chai": "^6.3.0", "es-module-lexer": "^2.3.2", "expect-type": "^1.4.0", @@ -9030,12 +8942,12 @@ "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "5.0.4", - "@vitest/browser-preview": "5.0.4", + "@vitest/browser-playwright": "5.0.5", + "@vitest/browser-preview": "5.0.5", "@vitest/browser-webdriverio": "^5.0.0-beta.5 || >=5.0.0", - "@vitest/coverage-istanbul": "5.0.4", - "@vitest/coverage-v8": "5.0.4", - "@vitest/ui": "5.0.4", + "@vitest/coverage-istanbul": "5.0.5", + "@vitest/coverage-v8": "5.0.5", + "@vitest/ui": "5.0.5", "happy-dom": "*", "jsdom": "*", "vite": "^6.4.0 || ^7.0.0 || ^8.0.0" diff --git a/package.json b/package.json index 09df5501..772b8cf9 100644 --- a/package.json +++ b/package.json @@ -84,29 +84,29 @@ "@theshelf/validation-driver-zod": "^0.6.0", "dayjs": "^1.11.23", "jitar": "^0.12.0", - "react": "^19.3.0", - "react-dom": "^19.3.0", + "react": "^19.3.1", + "react-dom": "^19.3.1", "react-router-dom": "^7.18.4" }, "devDependencies": { "@eslint/js": "^9.39.5", "@jitar/plugin-vite": "^0.12.0", - "@types/node": "^24.19.1", + "@types/node": "^24.19.2", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", - "@vitejs/plugin-react": "^5.1.4", - "@vitest/coverage-v8": "^5.0.3", + "@vitejs/plugin-react": "^6.1.2", + "@vitest/coverage-v8": "^5.0.5", "cpx2": "^9.0.3", "eslint-plugin-import": "^2.32.0", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^7.1.1", "pm2": "^7.0.4", "rimraf": "^6.1.3", - "tsc-alias": "^1.9.7", + "tsc-alias": "^1.9.8", "typescript": "^6.0.3", - "typescript-eslint": "^8.71.0", + "typescript-eslint": "^8.72.0", "vite": "^8.3.4", - "vitest": "^5.0.3" + "vitest": "^5.0.5" }, "overrides": { "@rollup/plugin-terser": "^1.0.0" diff --git a/tsconfig.json b/tsconfig.json index 2825f22b..a9cc965e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,11 +7,11 @@ "isolatedModules": true, "noEmit": false, "declaration": true, + "removeComments": true, "useDefineForClassFields": true, "allowJs": false, "skipLibCheck": true, "allowSyntheticDefaultImports": true, - "strict": true, "forceConsistentCasingInFileNames": true } } \ No newline at end of file From 189c12f7e588f0a70c4219d8ac5485f0b7e52b65 Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Thu, 22 Oct 2026 15:57:49 +0200 Subject: [PATCH 10/26] #530: config updates --- deployment/services/production/reads.json | 2 +- deployment/services/production/reads2.json | 2 +- deployment/services/production/writes.json | 2 +- example.env | 4 ++-- package.json | 8 ++++---- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/deployment/services/production/reads.json b/deployment/services/production/reads.json index d95d22e0..4c6c6818 100644 --- a/deployment/services/production/reads.json +++ b/deployment/services/production/reads.json @@ -16,6 +16,6 @@ { "gateway": "http://127.0.0.1:2000", "trustKey": "${JITAR_TRUST_KEY}", - "segments": ["common.reads", "social.reads"] + "segments": ["common.reads", "common.errors", "social.reads", "social.errors"] } } \ No newline at end of file diff --git a/deployment/services/production/reads2.json b/deployment/services/production/reads2.json index e2950ada..2b6778c5 100644 --- a/deployment/services/production/reads2.json +++ b/deployment/services/production/reads2.json @@ -16,6 +16,6 @@ { "gateway": "http://127.0.0.1:2000", "trustKey": "${JITAR_TRUST_KEY}", - "segments": ["common.reads", "social.reads"] + "segments": ["common.reads", "common.errors", "social.reads", "social.errors"] } } \ No newline at end of file diff --git a/deployment/services/production/writes.json b/deployment/services/production/writes.json index 55c5085a..8145eb1f 100644 --- a/deployment/services/production/writes.json +++ b/deployment/services/production/writes.json @@ -16,6 +16,6 @@ { "gateway": "http://127.0.0.1:2000", "trustKey": "${JITAR_TRUST_KEY}", - "segments": ["social.writes"] + "segments": ["social.writes", "social.errors"] } } \ No newline at end of file diff --git a/example.env b/example.env index 4f0f4bfd..f8816059 100644 --- a/example.env +++ b/example.env @@ -16,7 +16,7 @@ EVENT_BROKER_DRIVER="kafka" KAFKA_BROKER="localhost:9092" KAFKA_GROUP_ID="comify.development" KAFKA_CLIENT_ID="comify.development.consumers" -KAFKA_AUTOCREATE_TOPICS=false +KAFKA_AUTOCREATE_TOPICS=true # FILE STORE (memory | s3) FILE_STORE_DRIVER="s3" @@ -35,7 +35,7 @@ OPENID_CLIENT_SECRET="" OPENID_REDIRECT_PATH="/rpc/social/security/authentication/login" OPENID_SIGNING_SECRET="development" OPENID_LOGIN_TTL=1800000 -OPENID_ALLOW_INSECURE_REQUESTS=false +OPENID_ALLOW_INSECURE_REQUESTS=true # HTTP (fetch | mapped) HTTP_DRIVER="fetch" diff --git a/package.json b/package.json index 772b8cf9..e332d80a 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "version": "0.2.5", "type": "module", "scripts": { - "clean": "npm run clean --workspaces --if-present", + "clean": "rimraf artifacts", "clean-build": "rimraf artifacts/build", "clean-dist": "rimraf artifacts/dist", @@ -16,8 +16,8 @@ "bundle": "npm run clean-dist && jitar build && npm run copy", "copy": "npm run copy-apps && npm run copy-assets", - "copy-apps": "cpx 'artifacts/build/*/app/**/*' 'artifacts/dist'", - "copy-assets": "cpx 'artifacts/build/*/assets/**/*' 'artifacts/dist'", + "copy-apps": "cpx \"artifacts/build/*/app/**/*\" \"artifacts/dist\"", + "copy-assets": "cpx \"artifacts/build/*/assets/**/*\" \"artifacts/dist\"", "test": "vitest run", "test-coverage": "vitest run --coverage", @@ -26,7 +26,7 @@ "docker-up": "docker compose --env-file development.env up -d", "docker-down": "docker compose --env-file development.env down", - + "dev": "jitar start --env-file=development.env --service=deployment/services/development/worker.json --http-body-limit=512000", "demo": "jitar start --env-file=development.env --service=deployment/services/demonstration/social.json --http-body-limit=512000", From 036b94273becfa9a8565604dbcdb188ece1328b2 Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Fri, 23 Oct 2026 22:43:17 +0200 Subject: [PATCH 11/26] #530: updated Jitar dependency --- package-lock.json | 106 ++++++++++++++++------------------------------ package.json | 4 +- 2 files changed, 39 insertions(+), 71 deletions(-) diff --git a/package-lock.json b/package-lock.json index 76ac8390..7879bc77 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,14 +42,14 @@ "@theshelf/validation": "^0.6.0", "@theshelf/validation-driver-zod": "^0.6.0", "dayjs": "^1.11.23", - "jitar": "^0.12.0", + "jitar": "^0.12.1", "react": "^19.3.1", "react-dom": "^19.3.1", "react-router-dom": "^7.18.4" }, "devDependencies": { "@eslint/js": "^9.39.5", - "@jitar/plugin-vite": "^0.12.0", + "@jitar/plugin-vite": "^0.12.1", "@types/node": "^24.19.2", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", @@ -1064,9 +1064,9 @@ } }, "node_modules/@jitar/plugin-vite": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@jitar/plugin-vite/-/plugin-vite-0.12.0.tgz", - "integrity": "sha512-h1XQGgOwOeBrmSZa1w7hdnE5OgXvBeA3e5PoOcBF8zrAsuROjuTGa+E02Vy//6j9p0dKfo4z0j6diTnKQJGIvw==", + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@jitar/plugin-vite/-/plugin-vite-0.12.1.tgz", + "integrity": "sha512-mnmpb2Aeua19Y+by5C4xW1nDcf9KUu+tw9IXXrhgKjtc3FjXc83csHK5eGtdSm4gkyMZQL2ezVLEa1ikt6uWjA==", "dev": true, "license": "MIT", "peerDependencies": { @@ -3021,19 +3021,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/body-parser/node_modules/content-type": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", - "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/bowser": { "version": "2.14.1", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.14.1.tgz", @@ -3324,9 +3311,9 @@ "license": "MIT" }, "node_modules/content-disposition": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", - "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-2.0.1.tgz", + "integrity": "sha512-e+H0ZXHSWYrENhQzw1LPuP4oF5MzVKmDU6d3hxlvaPEYLLg62MxtQNPRx4SYSuYJSBUgnQIG4HIN2tEtNv7Dog==", "license": "MIT", "engines": { "node": ">=18" @@ -3337,12 +3324,16 @@ } }, "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", + "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/convert-source-map": { @@ -3705,10 +3696,13 @@ } }, "node_modules/dotenv": { - "version": "17.4.2", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.2.tgz", - "integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==", + "version": "18.0.8", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-18.0.8.tgz", + "integrity": "sha512-2KDeoFoK/zRtcnbunCDlLG5VWVMcyqeQc6iK65o231nfNAcuGrKoqUQfJFUtBI+QlShk5HKIHxwebBtUl3rEfA==", "license": "BSD-2-Clause", + "bin": { + "dotenv": "dist/index.cjs" + }, "engines": { "node": ">=12" }, @@ -4509,15 +4503,15 @@ } }, "node_modules/express": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", - "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.3.0.tgz", + "integrity": "sha512-qCqy1xSoaugxOD4IVHb1ZWdkvCF2W3aE2okKouWj8VwJ+ztskSiXoBnCSJqfKT+cVPJhuJqe9YLbY425+Zh00g==", "license": "MIT", "dependencies": { "accepts": "^2.0.0", - "body-parser": "^2.2.1", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", + "body-parser": "^2.3.0", + "content-disposition": "^2.0.1", + "content-type": "^2.0.0", "cookie": "^0.7.1", "cookie-signature": "^1.2.1", "debug": "^4.4.0", @@ -4533,14 +4527,14 @@ "on-finished": "^2.4.1", "once": "^1.4.0", "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", + "proxy-addr": "^2.0.8", + "qs": "^6.16.0", "range-parser": "^1.2.1", "router": "^2.2.0", "send": "^1.1.0", "serve-static": "^2.2.0", "statuses": "^2.0.1", - "type-is": "^2.0.1", + "type-is": "^2.1.0", "vary": "^1.1.2" }, "engines": { @@ -5818,13 +5812,13 @@ } }, "node_modules/jitar": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/jitar/-/jitar-0.12.0.tgz", - "integrity": "sha512-Bb7U8+nKOxeeieo+Qb8bpfhPQn2QJbGSKTxFo5zud1D3azGa+iMR4GiVHL4JkGRYn83BWXVXwD2MyUfzJlM+Bw==", + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/jitar/-/jitar-0.12.1.tgz", + "integrity": "sha512-Da5Yi/kWDzSXLsZ7CmZQAkVxdJGfIRBy1Q4fvArGHOM6ICMXcfmHYjDPVK8fnDM5UVq0EeeI9UjPK0JCUb+tAQ==", "license": "MIT", "dependencies": { - "dotenv": "17.4.2", - "express": "5.2.1", + "dotenv": "18.0.8", + "express": "5.3.0", "glob": "13.0.6", "mime-types": "3.0.2" }, @@ -5832,7 +5826,7 @@ "jitar": "dist/cli.js" }, "engines": { - "node": ">=20.0" + "node": ">=22" } }, "node_modules/jose": { @@ -6597,19 +6591,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/negotiator/node_modules/content-type": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", - "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/netmask": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.1.1.tgz", @@ -8603,19 +8584,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/type-is/node_modules/content-type": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", - "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/typed-array-buffer": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", diff --git a/package.json b/package.json index e332d80a..a757a415 100644 --- a/package.json +++ b/package.json @@ -83,14 +83,14 @@ "@theshelf/validation": "^0.6.0", "@theshelf/validation-driver-zod": "^0.6.0", "dayjs": "^1.11.23", - "jitar": "^0.12.0", + "jitar": "^0.12.1", "react": "^19.3.1", "react-dom": "^19.3.1", "react-router-dom": "^7.18.4" }, "devDependencies": { "@eslint/js": "^9.39.5", - "@jitar/plugin-vite": "^0.12.0", + "@jitar/plugin-vite": "^0.12.1", "@types/node": "^24.19.2", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", From 21432dc2c5a4d6a2c765fae6b3e9d42e0d6e695e Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Fri, 23 Oct 2026 22:45:08 +0200 Subject: [PATCH 12/26] #530: corrected notification segment --- deployment/segments/social.notification.json | 1 - 1 file changed, 1 deletion(-) diff --git a/deployment/segments/social.notification.json b/deployment/segments/social.notification.json index 8faac7d4..b3554733 100644 --- a/deployment/segments/social.notification.json +++ b/deployment/segments/social.notification.json @@ -2,6 +2,5 @@ "./social/domain/notification/getRecent/retrieve": { "default": { "access": "protected" } }, "./social/domain/notification/subscriptions": { "default": { "access": "private" } }, - "./social/domain/notification/_create": { "default": { "access": "private" } }, "./social/domain/notification/removeByPost": { "default": { "access": "private" } } } \ No newline at end of file From bbcbc11a29471c8aabfc23b82bb34a1d570ccc56 Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Fri, 23 Oct 2026 22:59:56 +0200 Subject: [PATCH 13/26] #530: updated docker image --- deployment/docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployment/docker/Dockerfile b/deployment/docker/Dockerfile index dee18c9a..226223ca 100644 --- a/deployment/docker/Dockerfile +++ b/deployment/docker/Dockerfile @@ -1,7 +1,7 @@ # Comify Docker Image # Build this image from the project root directory -FROM node:24.12-alpine3.22 +FROM node:24.22.1-alpine3.23 # Init root RUN mkdir /opt/app From 4d7aa8ff5c8fde8084174209518dd6f4a1041a06 Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Fri, 23 Oct 2026 23:27:47 +0200 Subject: [PATCH 14/26] #530: bumped version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a757a415..63264f2d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "comify", "private": true, - "version": "0.2.5", + "version": "0.2.6", "type": "module", "scripts": { "clean": "rimraf artifacts", From a076c21f0325203a39a30deaf7d509646e3836ce Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Tue, 27 Oct 2026 14:25:34 +0100 Subject: [PATCH 15/26] #532: initial AGENTS.md --- AGENTS.md | 182 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 AGENTS.md diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000..a410f9a8 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,182 @@ +# AGENTS.md + +## Project Overview + +Comify is an open-source social media platform that leverages comics for communication. The concept: take or upload a picture, add speech bubbles, and share with others. Comics can be liked, and users can react with comments or other comics. + +**Tech Stack:** +- **Runtime:** Jitar (distributed runtime) +- **Backend:** Node.js with TypeScript (strict mode) +- **Frontend:** React 19 with React Router DOM 7 +- **Database:** MongoDB (via @theshelf/database) +- **Authentication:** Keycloak (OpenID Connect via @theshelf/authentication) +- **File Storage:** SeaweedFS (S3-compatible via @theshelf/files) +- **Event Broker:** Kafka (via @theshelf/events) +- **Bundler:** Vite +- **Testing:** Vitest with coverage (V8) + +**Key Dependencies:** +- `jitar` — core distributed runtime +- `@jitar-plugins/*` — authentication, database, events, files, http, notification +- `@theshelf/*` — authentication, connection, database, events, files, http, logging, notification, validation +- `@maskingtech/*` — designsystem, react-toolkit + +## Prerequisites + +- **Node.js** version 24+ (enforced via `engines` in package.json) +- **Docker** and **docker-compose** for local services +- **npm** package manager (v11.16.0) + +## Setup Commands + +### Initial Setup + +```bash +# 1. Copy environment configuration +cp example.env development.env + +# 2. Install dependencies +npm install + +# 3. Start Docker services +npm run docker-up +``` + +### Build & Run + +```bash +# Build the project (compile + bundle) +npm run build + +# Start the demo application (port 3000) +npm run demo +``` + +### Development + +```bash +# Start backend in development mode +npm run dev + +# Start frontend in development mode (same for other packages) +cd development/social +npm run dev +``` + +### Production Deployment + +```bash +# Build and create distribution +npm run build +npm run dist + +# Start with PM2 using ecosystem config +npm run prod-start + +# Other PM2 commands +npm run prod-stop # Stop all services +npm run prod-down # Delete PM2 process group +npm run prod-list # List running processes +npm run prod-monitor # Monitor resource usage +``` + +## Project Structure + +``` +artifacts/ +├── build/ # Compiled TypeScript code to JavaScript +└── dist/ # Distributable bundles + +deployment/ +├── docker/ # Service configurations (Keycloak, MongoDB, SeaweedFS, Kafka) +├── resources/ # Configuration for shared resource between segments (Jitar) +├── segments/ # Segment configuration for creating the distributable bundles (Jitar) +└── services/ # Service configuration for running the distributable bundles (Jitar) + +development/ +├── common/ # Shared utilities and core modules +├── insights/ # Bounded context for insights/analytics +├── social/ # Bounded context for social features (main app) +├── moderation/ # Bounded context for content moderation +└── */ # Other bounded contexts with source code + +documentation/ +└── diagrams/ # Design diagrams + +testing/ +├── common/ # Tests for shared utilities +├── insights/ # Tests for insights bounded context +├── social/ # Tests for social bounded context +├── moderation/ # Tests for moderation bounded context +└── */ # Mirrors development/ structure +``` + +## Docker Services + +When you run `npm run docker-up`, the following services start: + +| Service | Port | Purpose | +|---------|------|---------| +| Keycloak | 8080 | Authentication (OpenID Connect) | +| MongoDB | 27017 | Data persistence | +| SeaweedFS | 8888 | File/image storage (S3-compatible) | +| Kafka | 9092 | Event streaming | + +Configuration is in `docker-compose.yml`. +Services expose ports on localhost, and data persists via Docker volumes. + +## Code Style + +### General Rules + +- **TypeScript strict mode** enabled +- **Single quotes** only, no semicolons +- **Functional patterns** preferred (pure functions, immutable data) +- **Higher-order functions** (`map`, `filter`, `reduce`) over loops +- **Composition** over inheritance +- **Consistent formatting** via ESLint + Prettier +- **Import ordering**: Built-in → External → Internal → Relative (case-insensitive, alphabetically sorted) +- **No duplicate imports** +- **One blank line** after imports +- **Inline type imports** preferred + +### Linting + +- **ESLint** with TypeScript parser (`@typescript-eslint`) +- **Imports plugin** for module resolution +- **React** hooks and JSX linting +- **Vitest** plugin for test file linting +- **Jitar** plugin for framework-specific rules + +## Testing + +### Framework + +- **Vitest** — Fast unit and integration testing framework +- **Testing Library** — Component testing with React hooks +- **Node** environment for backend tests + +### Running Tests + +```bash +npm run test # Run all tests (logic + app) +``` + +### Test Conventions + +- **Naming:** `.spec.ts` (e.g., `toggle.spec.ts`, `create.spec.ts`, `login.spec.ts`) +- **Structure:** `describe` → `it` → setup → act → assert +- **Mocks:** Use `vi.mock()` for external dependencies (Keycloak, MongoDB, SeaweedFS, etc.) +- **Domain imports:** Import the specific domain function being tested (e.g., `create`, `toggleRating`, `establishRelation`) +- **Async code:** Use `await` with standard Vitest assertions (e.g., `expect(...).resolves`, `expect(...).rejects`) +- **Fixtures:** Keep test data in separate files or inline factories +- **Coverage:** Aim for high coverage on use-cases + +### Environment Variables + +Required variables in `development.env`: + +- `KEYCLOAK_*` — Keycloak authentication settings (URL, realm, client ID, secret) +- `MONGODB_*` — MongoDB connection details (host, port, database name) +- `SEAWEDFS_*` — SeaweedFS storage settings (host, port, bucket name) +- `KAFKA_*` — Kafka broker configuration (host, port, topic names) From cc1118aeaaaf4d76dd92d0686cc076f711e96e91 Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Wed, 28 Oct 2026 12:26:29 +0100 Subject: [PATCH 16/26] #532: initial code-review skill --- .agents/skills/code-review/SKILL.md | 53 +++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 .agents/skills/code-review/SKILL.md diff --git a/.agents/skills/code-review/SKILL.md b/.agents/skills/code-review/SKILL.md new file mode 100644 index 00000000..f1f972ac --- /dev/null +++ b/.agents/skills/code-review/SKILL.md @@ -0,0 +1,53 @@ +--- +name: code-review +description: Review code changes for bugs, regressions, security issues, and missing tests. +--- + +# Code Review Skill + +## Overview + +This skill guides thorough code reviews for the Comify project, an open-source social media platform that leverages comics for communication. Reviews should validate TypeScript compliance, architectural integrity, and adherence to project conventions defined in `AGENTS.md`. + +## Setup + +Review against the active `AGENTS.md` in the repository root. Reference the project structure: +- `development/` — Bounded contexts (`social`, `insights`, `moderation`, etc.) +- `testing/` — Mirrors `development/` structure for test files +- `deployment/` — Jitar runtime configuration (services, segments, resources) +- `common/` — Shared utilities and core modules + +--- + +## 1. TypeScript & Language Compliance + +### Strict Mode +- **TypeScript strict mode** is enabled — all `noImplicit*` flags are on. +- **No `any` types** without explicit justification and a comment explaining why. +- Prefer `unknown` over `any` when the type is truly untyped. +- Use type guards or narrowing instead of `as` assertions where possible. + +### Formatting Rules +- **Single quotes** only (`'text'`, not `"text"`). +- **Always use a semicolon** at end of statements. +- **No unused variables** or imports. + +### Import Ordering +Imports must follow this exact order, alphabetically sorted within each group, case-insensitive: +1. Built-in Node.js modules +2. External packages +3. Internal `@theshelf/*` packages +4. Internal `@jitar-plugins/*` packages +5. Internal project imports (`common/`, context-specific modules) +6. Relative imports + +No duplicate imports. One blank line after the import block. Inline type imports preferred (e.g., `import type { Foo } from 'bar'`). + +### Review Checklist +- [ ] TypeScript strict mode enforced +- [ ] No unjustified `any` types +- [ ] Single quotes used, no semicolons +- [ ] Imports properly ordered, sorted, no duplicates +- [ ] One blank line after imports +- [ ] One blank at the start of the file +- [ ] One blank at the end of the file From 2193368ccac6312da5b3b841dd60ce955edc1998 Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Wed, 28 Oct 2026 12:57:42 +0100 Subject: [PATCH 17/26] #532: initial domain implementation skill --- .agents/skills/domain-implementation/SKILL.md | 310 ++++++++++++++++++ 1 file changed, 310 insertions(+) create mode 100644 .agents/skills/domain-implementation/SKILL.md diff --git a/.agents/skills/domain-implementation/SKILL.md b/.agents/skills/domain-implementation/SKILL.md new file mode 100644 index 00000000..407ba582 --- /dev/null +++ b/.agents/skills/domain-implementation/SKILL.md @@ -0,0 +1,310 @@ +# Domain Feature Implementation + +## Overview + +This skill guides the implementation of new features within a bounded context in the Comify project. It covers the full lifecycle from domain analysis through to tested, production-ready code following project conventions. + +## When to Use + +Invoke this skill when: +- A new feature needs to be added to an existing bounded context (e.g., `social`, `insights`, `moderation`) +- A new bounded context needs to be scaffolded and populated with initial domain logic +- An existing feature requires extension with new domain rules or use cases + +## Prerequisites + +Before starting implementation, ensure you have: + +1. **Clear requirement** — What the feature should do, its boundaries, and success criteria +2. **Domain knowledge** — Understanding of the relevant bounded context and its existing models +3. **Dependency awareness** — Knowledge of which shared services (Keycloak, MongoDB, SeaweedFS, Kafka) the feature interacts with + +## Implementation Workflow + +### Step 1: Domain Analysis + +1. **Identify the bounded context** — Determine which context the feature belongs to (`social`, `insights`, `moderation`, or a new one). +2. **Map domain entities** — Identify the core domain objects, their properties, and relationships. +3. **Define use cases** — Break down the feature into atomic use-case functions (e.g., `create`, `read`, `update`, `delete`, `toggleRating`). +4. **Identify external dependencies** — Note which shared services are required (authentication, database, file storage, event streaming). + +> **Rule:** Each use-case function should be pure, focused on a single responsibility, and independently testable. + +### Step 2: Domain Model Design + +1. **Define TypeScript types** for both the **Record** (database layer) and the **Domain Model** (business layer). +2. **Establish validation rules** using `@theshelf/validation` or custom validators. +3. **Define error types** specific to the domain (use domain-specific error classes, not generic errors). +4. **Document invariants** — invariants that must hold true for the domain model. + +#### Record vs Domain Model + +The implementation maintains a clear separation between the **Record** (database/storage layer) and the **Domain Model** (business layer): + +- **Record**: Represents the raw database document. Use `string` for IDs (as stored in MongoDB), include tenant scoping, soft-delete flags, and foreign keys to related entities. +- **Domain Model**: Represents the business entity presented to callers. Use `Identifier` for IDs, resolve relationships into rich domain objects (`Relation`, `Comic`, `Comment`), and expose computed properties (`hasParent`, `isRated`). + +```typescript +// Example: development/social/domain/post/definitions.ts +import { type Identifier } from '@comify/common/primitives/identifier'; + +import { type Comic } from '~/post.comic'; +import { type Comment } from '~/post.comment'; +import { type Metrics } from '~/post.metrics'; +import { type Relation } from '~/relation'; + +import { type BaseRecord } from '../definitions'; + +export type Record = BaseRecord & { + readonly tenantId: string; + readonly id: string; + readonly creatorId: string; + readonly comicId?: string; + readonly commentId?: string; + readonly parentId?: string; + readonly createdAt: string; + readonly deleted: boolean; +}; + +export type Post = { + readonly id: Identifier; + readonly parentId?: Identifier; + readonly createdAt: Date; + readonly creator: Relation; + readonly comic?: Comic; + readonly comment?: Comment; + readonly hasParent: boolean; + readonly metrics: Metrics; + readonly isRated: boolean; +}; + +export const RECORD_TYPE = 'post'; +``` + +#### Key Conventions + +- **Record IDs** are `string` (raw MongoDB `_id` values); **Domain Model IDs** are `Identifier` instances. +- **Relationships** in the Record are foreign key strings (`creatorId`, `comicId`, `parentId`); in the Domain Model they are resolved objects (`creator: Relation`, `comic?: Comic`, `comment?: Comment`). +- **Computed properties** (`hasParent`, `isRated`) are derived from the data and do not exist in the Record. +- **`RECORD_TYPE`** constant is exported for use by database queries (`database.searchRecords(RECORD_TYPE, ...)`). +- **Soft-delete** is indicated by a `deleted: boolean` flag in the Record. +- **Tenant scoping** is always present via `tenantId` for multi-tenant isolation. + +### Step 3: Use-Case Implementation + +Implement each use-case function following these conventions: + +1. **File location:** `development//domain///index.ts` — each use case gets its own **directory** with an `index.ts` as the public entry point. +2. **Naming (public use cases):** PascalCase directory names (`establish`, `explore`, `get`, `getFollowers`, `getFollowing`, `getMany`). +3. **Naming (internal helpers):** `_camelCase` subdirectories for private/internal helpers (`_retrieve`, `_toModel`, `_toModels`, `_translateMany`, `_retrieveFollowing`). +4. **Pure functions** where possible; side effects (DB, external APIs) should be explicit and isolated. +5. **Error handling:** Domain-specific error classes extending `@comify/common/integrations/errors` types (e.g., `BadRequest`, `NotFound`). +6. **Type imports** inline: `import type { Post } from '../types'` +7. **Single quotes**, no semicolons. + +```typescript +// Example: development/social/domain/establish/index.ts +import { type Requester } from '@comify/common/security'; + +import { type RelationKey } from '../definitions'; +import { logger } from '../integrations'; + +import create from './create'; +import exists from './exists'; +import publish from './publish'; +import RelationAlreadyExists from './RelationAlreadyExists'; +import remove from './remove'; + +export default async function (requester: Requester, followingId: string): Promise +{ + const key: RelationKey = { followerId: requester.principalId, followingId }; + + const relationExists = await exists(key); + + if (relationExists) + { + throw new RelationAlreadyExists(); + } + + await create(key); + + try + { + await publish(requester, key); + } + catch (error) + { + logger.error('Failed to establish relation', error); + + await remove(key); + + throw error; + } +} + +export { RelationAlreadyExists }; +``` + +#### Record vs Model Separation + +The actual implementation maintains a clear separation between the **Record** (database/storage layer) and the **Model** (domain layer): + +- **Record**: `{ id: string | undefined, followerId: string, followingId: string }` — represents the raw database document. The `id` is `undefined` for unestablished relations. +- **Model**: `{ following: Creator, established: boolean, self: boolean }` — represents the domain object presented to callers. + +Conversion functions (`_toModel`, `_toModels`) bridge the two layers, fetching related entities (e.g., `Creator`) and computing derived properties (`established`, `self`). + +```typescript +// Example: development/social/domain/_toModel/index.ts +import { type TenantId } from '@comify/common/domain/tenant'; + +import getCreator from '~/creator/getById'; + +import { type Record, type Relation } from '../definitions'; + +import createModel from './createModel'; + +export default async function (tenantId: TenantId, record: Record): Promise +{ + const creator = await getCreator(tenantId, record.followingId); + + return createModel(record, creator); +} +``` + +#### Database Integration + +Instead of a repository interface, the actual implementation uses the `database` module from `@comify/common/integrations/database` with methods like `readRecord` and `searchRecords`. Queries use a query statement format: + +```typescript +// Example: database query +import database from '@comify/common/integrations/database'; + +const result = await database.searchRecords(RECORD_TYPE, { + followerId: { EQUALS: followerId } +}, undefined, undefined, limit, offset); + +return result.records; +``` + +### Step 4: API Layer (If Applicable) + +1. **File location:** `development//app/api/.ts` +2. **Route definitions** using the Jitar HTTP plugin (`@jitar-plugins/http`). +3. **Middleware chain:** Authentication → Validation → Domain call → Response serialization. +4. **Error mapping:** Convert domain errors to appropriate HTTP status codes. + +```typescript +// Example: development/social/app/api/posts.ts +import { post } from '@jitar-plugins/http'; +import { authenticate } from '@theshelf/authentication'; +import { validate } from '@theshelf/validation'; +import { createPost } from '../../domain/create'; + +export const postRoutes = [ + post('/api/posts', authenticate, validate, async (request) => { + const payload = request.body as CreatePostPayload; + const post = await createPost(payload, getPostRepository()); + return { status: 201, body: post }; + }), +]; +``` + +### Step 5: Testing + +1. **File location:** `testing///.spec.ts` +2. **Test naming:** `describe('', () => { it('should ', () => { ... }) })` +3. **Mock external dependencies** using `vi.mock()` for: + - Keycloak authentication + - MongoDB repository + - SeaweedFS file storage + - Kafka event publishing +4. **Test categories:** + - **Happy path** — Valid input, expected output + - **Error cases** — Invalid input, repository failures, constraint violations + - **Edge cases** — Empty collections, boundary values, race conditions +5. **Coverage target:** Aim for high line and branch coverage on use-case logic. + +```typescript +// Example: testing/social/create.spec.ts +import { describe, it, expect, vi } from 'vitest'; +import { createPost } from '../../development/social/domain/create'; +import type { PostRepository } from '../../development/social/domain/repositories'; + +vi.mock('@common/utils', () => ({ + generateId: () => 'mocked-id-123', +})); + +describe('createPost', () => { + it('should create a post with valid payload', async () => { + const mockRepo: PostRepository = { + save: vi.fn().mockResolvedValue(undefined), + }; + + const payload = { + authorId: 'user-1', + imageUrl: 'https://example.com/image.jpg', + bubbles: [{ text: 'Hello', position: { x: 10, y: 20 } }], + }; + + const result = await createPost(payload, mockRepo); + + expect(result.id).toBe('mocked-id-123'); + expect(result.authorId).toBe('user-1'); + expect(mockRepo.save).toHaveBeenCalledTimes(1); + }); +}); +``` + +### Step 6: Event Publishing (If Applicable) + +1. **File location:** Same as the use-case or a dedicated event module. +2. **Use `@theshelf/events`** for publishing domain events to Kafka. +3. **Event naming:** Past-tense, domain-language (`PostCreated`, `RatingToggled`, `CommentAdded`). +4. **Fire-and-forget** — Don't block the primary use-case on event publishing; handle failures gracefully. + +```typescript +// Example: development/social/domain/events.ts +import { publishEvent } from '@theshelf/events'; + +export async function publishPostCreated(post: Post): Promise { + await publishEvent('posts.created', { + postId: post.id, + authorId: post.authorId, + imageUrl: post.imageUrl, + timestamp: post.createdAt, + }); +} +``` + +## Checklist + +Before marking the feature as complete, verify: + +- [ ] Domain models are well-typed with full TypeScript strict mode compliance +- [ ] All use-case functions are pure or explicitly handle side effects +- [ ] Domain-specific error types are used instead of generic errors +- [ ] API endpoints (if any) include authentication, validation, and error mapping +- [ ] Frontend components/hooks (if any) use React 19 patterns +- [ ] Tests cover happy path, error cases, and edge cases +- [ ] External dependencies (Keycloak, MongoDB, SeaweedFS, Kafka) are properly mocked in tests +- [ ] Event publishing (if any) follows the fire-and-forget pattern +- [ ] Code follows project conventions: single quotes, no semicolons, inline type imports, import ordering +- [ ] Feature is documented in the relevant bounded context's README + +## Common Pitfalls + +1. **Impure functions with implicit side effects** — Always make DB calls, API calls, and event publishing explicit in the function signature. +2. **Generic error handling** — Use domain-specific error classes for clarity and better debugging. +3. **Tight coupling between contexts** — Respect bounded context boundaries; communicate via events, not direct calls. +4. **Missing test mocks** — Never test against real external services; always mock Keycloak, MongoDB, SeaweedFS, and Kafka. +5. **Skipping validation** — Validate all inputs at the API boundary and within use-case functions. +6. **Semicolons or double quotes** — Enforce the project's formatting rules via ESLint; do not manually override. + +## References + +- [Project AGENTS.md](../../AGENTS.md) — Full project conventions and setup +- [@theshelf/validation](https://www.npmjs.com/package/@theshelf/validation) — Validation library +- [@theshelf/events](https://www.npmjs.com/package/@theshelf/events) — Event publishing via Kafka +- [@theshelf/authentication](https://www.npmjs.com/package/@theshelf/authentication) — Keycloak/OIDC authentication +- [Vitest documentation](https://vitest.dev/) — Testing framework From 48da719ffe1dcb61dee12c973fc533a6b43d336d Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Wed, 28 Oct 2026 15:42:50 +0100 Subject: [PATCH 18/26] #532: initial app implementation skill --- .agents/skills/app-implementation/SKILL.md | 254 +++++++++++++++++++++ 1 file changed, 254 insertions(+) create mode 100644 .agents/skills/app-implementation/SKILL.md diff --git a/.agents/skills/app-implementation/SKILL.md b/.agents/skills/app-implementation/SKILL.md new file mode 100644 index 00000000..9d7234d6 --- /dev/null +++ b/.agents/skills/app-implementation/SKILL.md @@ -0,0 +1,254 @@ +# App Implementation Skill + +## Purpose + +This skill guides the implementation of **UI features** for the Comify application. It covers: + +- ✅ **Frontend-only** feature implementation (React components, hooks, routing) +- ✅ User interface, interactions, local/global state, domain data integration +- ✅ Testing UI components and behaviors + +> **Scope:** UI feature implementation only. Domain logic (use-cases, gateways, repositories) is handled by the `domain-implementation` skill. + +--- + +## Scope: UI Feature Implementation + +This skill is for implementing **user-facing features** — anything the user sees or interacts with in the browser, under `development//app`. + +### What's IN scope + +| Category | Examples | +|----------|----------| +| **Components** | Panels, forms, lists, modals, tabs, menus, loading/result containers | +| **Pages/Routes** | Timeline, explore, post details, create post, creator profile, account settings | +| **Hooks** | `usePost`, `useTogglePostRating`, `useExplorePosts`, `useEstablish` | +| **Domain data integration** | Calling domain use-case functions (e.g. `^/domain/post/getById`) via the shared `requester` | +| **State** | Local component state, `AppContext` (identity, app state), URL/route state | +| **Routing** | React Router routes composed per feature (`Routes.tsx`), `ProtectedRoute`, layouts | +| **Forms** | Submission via the shared `Form` component and `useForm` hook, native field validation | +| **Accessibility** | Relies on `@maskingtech/designsystem` primitives for accessible building blocks | + +### What's OUT of scope + +| Category | Handled by | +|----------|-----------| +| **Domain logic / use-cases** | `domain-implementation` skill | +| **Database operations** | Backend services (`@theshelf/database`) | +| **Authentication** | `@theshelf/authentication` (consumed via `ProtectedRoute` / `AppContext`) | +| **File uploads** | `@theshelf/files` | +| **Event publishing** | `@theshelf/events` | +| **Backend API routes** | Backend services | + +--- + +## Prerequisites + +Before implementing a UI feature, ensure: + +- The domain logic (use-case function, domain model/types) is already implemented under `development//domain` (see `domain-implementation` skill) +- The feature name and requirements are clear, and you know which bounded sub-feature it belongs to (see naming convention below) +- Design system components from `@maskingtech/designsystem` and helper hooks from `@maskingtech/react-toolkit` are identified for reuse + +--- + +## Workflow + +### 1. Feature Discovery + +1. **Read the feature specification** — understand the user story and acceptance criteria +2. **Check existing UI patterns** — browse `development//app/components` for a similar feature folder to mirror (e.g. `post.rating` for a toggle-style engagement, `creator.account` for forms) +3. **Identify domain dependencies** — find the use-case function(s) under `development//domain/` that the UI needs to call, and the domain model types they return +4. **Determine state needs** — most data is server state fetched on demand via `useLoadData`/`usePagination` from `@maskingtech/react-toolkit`; only identity/app-wide state goes through `AppContext` + +### 2. Feature Scaffolding + +Real app features live directly under `development//app/components`, named per bounded sub-feature using **dot notation** when a feature is a satellite of a larger one (e.g. `post` + `post.rating` + `post.comic` + `post.reaction`, or `creator` + `creator.account` + `creator.profile`): + +``` +development//app/components// +├── .tsx # Top-level route components (Main, Create, Details, Routes, ...) +├── Routes.tsx # React Router tree for this feature, exported as default +├── components/ +│ ├── .tsx # Sub-components used by the route components +│ ├── elements/ +│ │ └── .tsx # Small leaf/presentational components +│ └── hooks/ +│ └── use.ts # Hooks scoped to a single sub-component +├── hooks/ +│ └── use.ts # Feature-level hooks (data fetching, mutations, navigation) +└── index.ts # Barrel export (components/hooks used by other features + default Routes) +``` + +Real examples from `development/social/app/components`: + +- `post/` — `Create.tsx`, `Details.tsx`, `Explore.tsx`, `Following.tsx`, `Highlight.tsx`, `Main.tsx`, `Reactions.tsx`, `Recommended.tsx`, `Remove.tsx`, `Routes.tsx`, plus `components/` (`DetailsPanel.tsx`, `LargePanel.tsx`, `PanelGrid.tsx`, `PanelList.tsx`, `SmallPanel.tsx`, `elements/EngagementRow.tsx`) and `hooks/` (`usePost.ts`, `useCreatorPosts.ts`, `useExplorePosts.ts`, `useRemovePost.ts`, ...) +- `post.rating/` — `components/Engagement.tsx`, `components/elements/Icon.tsx`, `components/hooks/useEngagement.ts`, `hooks/useTogglePostRating.ts` +- `creator.account/` — `Edit.tsx`, `Main.tsx`, `Routes.tsx`, `components/FullNameForm.tsx`, `components/NicknameForm.tsx`, `components/hooks/useFullNameFormHandler.ts`, `hooks/useUpdateFullName.ts` + +There is **no `api/`, `types/`, or `validation/` folder** in the app layer. Data shapes are imported straight from the domain package (see below), and submissions are validated by domain use-cases plus native HTML form attributes (`required`, `limit`, ...). + +### 3. Path Aliases & Domain Integration + +The app layer never implements its own API client — it calls domain use-case functions directly, passing a shared `requester`: + +```typescript +// development/social/app/components/post/hooks/usePost.ts + +import { useLoadData } from '@maskingtech/react-toolkit'; +import { useCallback } from 'react'; +import { useParams } from 'react-router-dom'; + +import { requester } from '@comify/common/security'; + +import getPost from '^/domain/post/getById'; + +export default function usePost() +{ + const { postId } = useParams(); + + const getData = useCallback(async () => + { + return postId !== undefined + ? getPost(requester, postId) + : undefined; + }, [postId]); + + return useLoadData(getData, [postId]); +} +``` + +Path aliases (configured in `development//app/tsconfig.json`): + +- `^/*` → the bounded context root (so `^/domain/post`, `^/domain/relation`, ...) +- `~/*` → the app folder itself (so `~/components/common`, `~/components/application`, ...) +- `@comify/common/*` → the shared `development/common` package (e.g. `@comify/common/security` for `requester`) + +Domain types (e.g. `Post`, `Relation`, `Creator`) are imported with `import { type X } from '^/domain/'` and reused as-is for component props — there is no separate app-level type layer. + + +### 4. Component Conventions + +Components use **anonymous default-exported functions** with an inline, readonly `Props` type — not named exports or `interface`: + +```typescript +// development/social/app/components/post.rating/components/Engagement.tsx + +import { ClickArea, Row } from '@maskingtech/designsystem'; + +import { CompactNumber } from '~/components/common'; + +import Icon from './elements/Icon'; +import useEngagement, { type EngageHandler } from './hooks/useEngagement'; + +type Props = { + readonly isEngaged: boolean; + readonly count: number; + readonly onClick: EngageHandler; +}; + +export default function ({ isEngaged, count, onClick }: Props) +{ + const [isRated, ratingCount, handleClick] = useEngagement(isEngaged, count, onClick); + + return + + + + + ; +} +``` + +Page/route components follow the same pattern but typically have no props and read from `useParams`/`useOutletContext` instead (e.g. `post/Details.tsx`, `creator.account/Edit.tsx`). + +### 5. Routing Conventions + +Each feature exports its route tree as a JSX `` fragment (not a React Router object config), composed bottom-up: + +```typescript +// development/social/app/components/post/Routes.tsx + +import { Route } from 'react-router-dom'; + +import reactionRoutes from '~/components/post.reaction'; + +import Create from './Create'; +import Details from './Details'; +import Highlight from './Highlight'; +import Main from './Main'; +import Remove from './Remove'; + +export default }> + } /> + }> + {reactionRoutes} + }> + + }> + }> + +; +``` + +These per-feature `Routes.tsx` are mounted under a path prefix in the top-level `development//app/components/Routes.tsx`, inside a `ProtectedRoute` + `ApplicationLayout` wrapper for authenticated areas, or a `GuestLayout`/`LegalLayout` for public ones. There is no router-level lazy loading or route-guard HOC beyond `ProtectedRoute`, which simply renders `` when `identity` is `undefined` in `AppContext`. + + +### 6. State Management + +- **Server/data state:** fetched on-demand via `@maskingtech/react-toolkit` hooks — `useLoadData` for single-resource loads, `usePagination` for infinite lists — wrapping a domain use-case call +- **Global app state:** `AppContext` (React Context) exposes `identity` (the current `Creator`), `setIdentity`, and a generic `appState` map; provided once by `AppContextProvider` in `App.tsx` +- **Local UI state:** plain `useState` inside small hooks colocated with the component that needs it (e.g. `post.rating/components/hooks/useEngagement.ts` for optimistic rating counts, `relation/components/hooks/useEstablish.ts` for a follow-button's pending state) +- **Forms:** the shared `Form` component (`~/components/common`) wraps `@maskingtech/designsystem`'s `Form` and the `useForm` hook from `@maskingtech/react-toolkit`, which tracks `dirty`/`submitting` state and calls `onSubmit(data: FormData)` + +No Zustand, Jotai, React Query, Tailwind, CSS modules, or styled-components are used anywhere in the app layer — styling is limited to `@maskingtech/designsystem` components plus two global stylesheets (`components/theme.css`, `components/main.css`). + +### 7. Barrel Exports + +Every feature folder has an `index.ts` that re-exports the pieces other features are allowed to consume, and — by convention — the feature's `Routes.tsx` as the default export: + +```typescript +// development/social/app/components/post.rating/index.ts + +export { default as Engagement } from './components/Engagement'; + +export { default as useToggle } from './hooks/useTogglePostRating'; +``` + +```typescript +// development/social/app/components/post/index.ts + +export { default as Creator } from './Creator'; +export { default as Explore } from './Explore'; +export { default as Following } from './Following'; +export { default as Recommended } from './Recommended'; + +export { default } from './Routes'; +``` + +Cross-feature imports always go through this barrel (`~/components/post.rating`), never by reaching into another feature's internal folders. + +### 8. Testing + +There are currently **no UI test files** under `development//app` or `testing/`. When adding tests for app code, follow the project-wide convention from `AGENTS.md` and mirror the structure used for domain tests: + +- Place tests under `testing//app/...`, mirroring the `development//app/...` path of the file under test +- Name test files `.spec.ts(x)`, structured `describe` → `it` → setup → act → assert +- Mock `@comify/common/security` (`requester`) and domain use-case functions with `vi.mock()` rather than hitting real Keycloak/MongoDB/SeaweedFS/Kafka +- Run tests with `npm run test` (Vitest) from the repo root + +--- + +## Checklist + +Before marking a UI feature complete, verify: + +- [ ] The feature folder follows the dot-notation convention and sits under `development//app/components` +- [ ] Data is fetched/mutated by calling domain use-case functions with `requester` from `@comify/common/security` — no bespoke `api/` client was created +- [ ] Domain types are imported from `^/domain/`, not redeclared +- [ ] Components use anonymous default exports with an inline `readonly` `Props` type +- [ ] New routes are exported as a `` JSX fragment from the feature's `Routes.tsx` and mounted in the parent `Routes.tsx` +- [ ] Reusable pieces are re-exported from the feature's `index.ts`; other features import only through that barrel +- [ ] Styling relies on `@maskingtech/designsystem`, not ad-hoc CSS/Tailwind/styled-components +- [ ] Code follows project conventions: single quotes, Allman brace style, one blank line after imports, import ordering (built-in → external → internal → relative, alphabetized) + From dbb1be6e0786518381aa10ead5eaba1ce7ac5326 Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Wed, 28 Oct 2026 16:13:42 +0100 Subject: [PATCH 19/26] #532: refined the domain implementation skill --- .agents/skills/domain-implementation/SKILL.md | 276 ++++++++++++------ 1 file changed, 179 insertions(+), 97 deletions(-) diff --git a/.agents/skills/domain-implementation/SKILL.md b/.agents/skills/domain-implementation/SKILL.md index 407ba582..55ff1140 100644 --- a/.agents/skills/domain-implementation/SKILL.md +++ b/.agents/skills/domain-implementation/SKILL.md @@ -33,7 +33,7 @@ Before starting implementation, ensure you have: ### Step 2: Domain Model Design 1. **Define TypeScript types** for both the **Record** (database layer) and the **Domain Model** (business layer). -2. **Establish validation rules** using `@theshelf/validation` or custom validators. +2. **Establish validation rules** via the shared `validator` singleton (`@comify/common/integrations/validation`, which wraps `@theshelf/validation`) or custom validators. 3. **Define error types** specific to the domain (use domain-specific error classes, not generic errors). 4. **Document invariants** — invariants that must hold true for the domain model. @@ -94,16 +94,16 @@ export const RECORD_TYPE = 'post'; Implement each use-case function following these conventions: -1. **File location:** `development//domain///index.ts` — each use case gets its own **directory** with an `index.ts` as the public entry point. -2. **Naming (public use cases):** PascalCase directory names (`establish`, `explore`, `get`, `getFollowers`, `getFollowing`, `getMany`). -3. **Naming (internal helpers):** `_camelCase` subdirectories for private/internal helpers (`_retrieve`, `_toModel`, `_toModels`, `_translateMany`, `_retrieveFollowing`). +1. **File location:** `development//domain///index.ts` — each use case gets its own **directory** with an `index.ts` as the public entry point. A use case may be a single file instead of a directory when it has no helpers of its own (e.g. `development/social/domain/post/getById/index.ts`). +2. **Naming (public use cases):** camelCase directory names (`establish`, `explore`, `get`, `getById`, `getByCreator`, `getByFollowing`, `getByParent`, `getFollowers`, `getFollowing`, `getMany`, `getManyById`, `getRecommended`, `createWithComic`, `createWithComment`, `remove`). +3. **Naming (internal helpers):** `_camelCase` subdirectories for private/internal helpers (`_create`, `_retrieveById`, `_toModel`, `_toModels`, `_translateMany`, `_retrieveFollowing`). These are not use cases themselves but are shared building blocks consumed by one or more public use cases (e.g. `post/_create` is the shared creation logic used by both `post/createWithComic` and `post/createWithComment`). 4. **Pure functions** where possible; side effects (DB, external APIs) should be explicit and isolated. 5. **Error handling:** Domain-specific error classes extending `@comify/common/integrations/errors` types (e.g., `BadRequest`, `NotFound`). 6. **Type imports** inline: `import type { Post } from '../types'` 7. **Single quotes**, no semicolons. ```typescript -// Example: development/social/domain/establish/index.ts +// Example: development/social/domain/relation/establish/index.ts import { type Requester } from '@comify/common/security'; import { type RelationKey } from '../definitions'; @@ -155,7 +155,7 @@ The actual implementation maintains a clear separation between the **Record** (d Conversion functions (`_toModel`, `_toModels`) bridge the two layers, fetching related entities (e.g., `Creator`) and computing derived properties (`established`, `self`). ```typescript -// Example: development/social/domain/_toModel/index.ts +// Example: development/social/domain/relation/_toModel/index.ts import { type TenantId } from '@comify/common/domain/tenant'; import getCreator from '~/creator/getById'; @@ -187,93 +187,174 @@ const result = await database.searchRecords(RECORD_TYPE, { return result.records; ``` -### Step 4: API Layer (If Applicable) +### Step 4: Exposing Use Cases (Jitar Segments) -1. **File location:** `development//app/api/.ts` -2. **Route definitions** using the Jitar HTTP plugin (`@jitar-plugins/http`). -3. **Middleware chain:** Authentication → Validation → Domain call → Response serialization. -4. **Error mapping:** Convert domain errors to appropriate HTTP status codes. +There is no separate REST API layer / route file to write. Jitar directly exposes the exported domain functions as remotely callable procedures; the frontend (or another bounded context) calls them like regular async functions (e.g. `import remove from '^/domain/post/remove'`, then `await remove(requester, id)`). What you need to do instead is **register the new use case(s) in the segment configuration** so Jitar knows how (and whether) to expose them: -```typescript -// Example: development/social/app/api/posts.ts -import { post } from '@jitar-plugins/http'; -import { authenticate } from '@theshelf/authentication'; -import { validate } from '@theshelf/validation'; -import { createPost } from '../../domain/create'; - -export const postRoutes = [ - post('/api/posts', authenticate, validate, async (request) => { - const payload = request.body as CreatePostPayload; - const post = await createPost(payload, getPostRepository()); - return { status: 201, body: post }; - }), -]; +1. **File location:** `deployment/segments/..json` — segments group functions by access pattern, e.g. `social.bff.json` (functions callable from the browser/BFF), `social.reads.json` / `social.writes.json` (internal read/write helpers callable between segments), `social.errors.json` (error classes that must be serializable across segment boundaries). +2. **Access levels:** `"public"` (callable directly from the client), `"protected"` (callable between segments/services but not from the client), `"private"` (not implemented here, reserved for segment-local only). +3. **Public use cases** (the top-level `index.ts` of a use-case directory, e.g. `./social/domain/post/createWithComic`) are registered as `"access": "public"` in the relevant `*.bff.json` segment. +4. **Internal helpers** that perform the actual DB/file reads or writes (e.g. `./social/domain/post/_create/persist`, `./social/domain/post/explore/retrieve`) are registered as `"access": "protected"` in the relevant `*.reads.json` / `*.writes.json` segment so they can run in a separate (e.g. database-adjacent) deployment segment. +5. **Domain-specific error classes** that can be thrown back across a segment boundary (e.g. `PostNotFound`, `InvalidPost`) must be registered in the context's `*.errors.json` segment so Jitar can (de)serialize them correctly. +6. **Authentication, validation, error mapping** all happen inside the domain layer itself (see Step 3) — there is no separate middleware chain per route. Jitar services apply cross-cutting middleware (origin, authentication, tenancy) globally, configured once per service in `deployment/services/**/*.json`. + +```json +// Example additions to deployment/segments/social.bff.json +"./social/domain/post/createWithComic": { "default": { "access": "public" } }, +"./social/domain/post/getById": { "default": { "access": "public" } } + +// Example additions to deployment/segments/social.reads.json +"./social/domain/post/_retrieveById": { "default": { "access": "protected" } } + +// Example additions to deployment/segments/social.writes.json +"./social/domain/post/_create/persist": { "default": { "access": "protected" } } + +// Example addition to deployment/segments/social.errors.json +"./social/domain/post/_retrieveById/PostNotFound": { "default": {} } ``` ### Step 5: Testing -1. **File location:** `testing///.spec.ts` -2. **Test naming:** `describe('', () => { it('should ', () => { ... }) })` -3. **Mock external dependencies** using `vi.mock()` for: - - Keycloak authentication - - MongoDB repository - - SeaweedFS file storage - - Kafka event publishing -4. **Test categories:** - - **Happy path** — Valid input, expected output - - **Error cases** — Invalid input, repository failures, constraint violations - - **Edge cases** — Empty collections, boundary values, race conditions -5. **Coverage target:** Aim for high line and branch coverage on use-case logic. +Tests are **integration tests**, not isolated unit tests with mocked collaborators. They run against real `database`, `eventBroker`, and `fileStore` integrations (backed by the Docker services from `AGENTS.md`), connecting once per file and reseeding fixture data before each test. Nothing is mocked with `vi.mock()` in this codebase's domain tests. + +1. **File location:** `testing//domain//.spec.ts` (mirrors `development//domain//`), e.g. `testing/social/domain/post/createWithComic.spec.ts`. +2. **Test naming:** a single top-level `describe('index', () => { it('should ', async () => { ... }) })` per public use case being tested — the `describe` name is `'index'`, not the use-case name. +3. **Connect/disconnect real integrations** in `beforeAll` / `afterAll`, only for the integrations the use case actually touches (`database`, `eventBroker`, `fileStore`): ```typescript -// Example: testing/social/create.spec.ts -import { describe, it, expect, vi } from 'vitest'; -import { createPost } from '../../development/social/domain/create'; -import type { PostRepository } from '../../development/social/domain/repositories'; - -vi.mock('@common/utils', () => ({ - generateId: () => 'mocked-id-123', -})); - -describe('createPost', () => { - it('should create a post with valid payload', async () => { - const mockRepo: PostRepository = { - save: vi.fn().mockResolvedValue(undefined), - }; - - const payload = { - authorId: 'user-1', - imageUrl: 'https://example.com/image.jpg', - bubbles: [{ text: 'Hello', position: { x: 10, y: 20 } }], - }; - - const result = await createPost(payload, mockRepo); - - expect(result.id).toBe('mocked-id-123'); - expect(result.authorId).toBe('user-1'); - expect(mockRepo.save).toHaveBeenCalledTimes(1); - }); +beforeAll(async () => +{ + await Promise.all([ + database.connect(), + eventBroker.connect() + ]); +}); + +afterAll(async () => +{ + await Promise.all([ + database.disconnect(), + eventBroker.disconnect() + ]); +}); +``` + +4. **Seed fixture data** in `beforeEach` using the shared seed helpers exported from `testing//fixtures` (e.g. `seedPosts`, `fullySeedPosts`, `fullySeedCreators`). Fixture records and pre-built `Requester`s (`REQUESTERS.ALICE`, etc.) live in `testing//fixtures/data/*.fixture.ts`. +5. **Assert against real side effects** — read the record back via `database.readRecord`/`searchRecords`, or assert a rejected promise against a domain error class (`expect(promise).rejects.toThrow(PostNotFound)` or `.rejects.toStrictEqual(new RelationAlreadyExists())`). +6. **Test categories:** + - **Happy path** — Valid input, record persisted/returned as expected + - **Error cases** — Domain-specific errors thrown (e.g. `PostNotFound`, `RelationAlreadyExists`) + - **Authorization/ownership cases** — e.g. a requester who doesn't own a resource cannot modify it +7. **Coverage target:** Aim for high line and branch coverage on use-case logic (`npm run test-coverage`). + +```typescript +// Example: testing/social/domain/post/remove.spec.ts +import { beforeAll, afterAll, beforeEach, describe, expect, it } from 'vitest'; + +import database from '@comify/common/integrations/database'; +import eventBroker from '@comify/common/integrations/events'; + +import { PostNotFound, RECORD_TYPE, type Record } from '@comify/social/domain/post'; +import remove from '@comify/social/domain/post/remove'; + +import { REQUESTERS, POST_RECORDS, seedPosts } from '../../fixtures'; + +beforeAll(async () => +{ + await Promise.all([ + database.connect(), + eventBroker.connect() + ]); +}); + +afterAll(async () => +{ + await Promise.all([ + database.disconnect(), + eventBroker.disconnect() + ]); +}); + +beforeEach(async () => +{ + await seedPosts(); +}); + +describe('index', () => +{ + it('should soft delete a post', async () => + { + await remove(REQUESTERS.ALICE, POST_RECORDS.SECOND.id); + + const result = await database.readRecord(RECORD_TYPE, { id: { EQUALS: POST_RECORDS.SECOND.id } }); + + expect(result.record?.deleted).toBeTruthy(); + }); + + it('should not delete a post from another creator', async () => + { + await remove(REQUESTERS.BOB, POST_RECORDS.FIRST.id); + + const result = await database.readRecord(RECORD_TYPE, { id: { EQUALS: POST_RECORDS.FIRST.id } }); + + expect(result.record?.deleted).toBeFalsy(); + }); }); ``` ### Step 6: Event Publishing (If Applicable) -1. **File location:** Same as the use-case or a dedicated event module. -2. **Use `@theshelf/events`** for publishing domain events to Kafka. -3. **Event naming:** Past-tense, domain-language (`PostCreated`, `RatingToggled`, `CommentAdded`). -4. **Fire-and-forget** — Don't block the primary use-case on event publishing; handle failures gracefully. +Shared cross-context event contracts (topic, event name, payload shape, `publish`/`subscribe` functions) live in `development/common/domain///` and wrap the `eventBroker` integration (`@comify/common/integrations/events`, itself backed by `@theshelf/events` with a Kafka or in-memory driver). The social (or other context) domain layer only ever imports and calls the already-defined `publish` function for that event — it does not call `eventBroker` directly, and it does not define new event infrastructure per feature. + +1. **Shared event module location:** `development/common/domain///{definitions,index,publish,subscribe}.ts`, e.g. `development/common/domain/post/added`. `definitions.ts` holds `EVENT_NAME`; the entity-level `../definitions.ts` holds the shared `EVENT_TOPIC` and `EventData` shape for that entity. +2. **Calling from the domain layer:** a dedicated `publish.ts` next to the use-case imports the shared `publish` function (aliased), fills in `contextId` (the bounded context's `CONTEXT_ID`), `principalId`, `tenantId`, and the entity-specific fields, and is invoked **after** the state-changing persistence step — it is awaited, not fire-and-forget. +3. **Event naming:** past-tense, domain-language (`added`, `removed`, `established`, `unestablished`), scoped under an entity topic (`common.post`, `common.relation`). +4. **Compensating action on failure** — if publishing fails, the use case logs the error, **rolls back** the just-applied state change (e.g. delete the just-created record, or flip `deleted` back to `false`), and re-throws the error. This is the opposite of "fire-and-forget": the call is awaited and its failure is treated as the whole use case failing. + +```typescript +// Example: development/social/domain/post/_create/publish.ts +import { publish as publishPostAdded } from '@comify/common/domain/post/added'; +import { type TenantId } from '@comify/common/domain/tenant'; +import { type Identifier } from '@comify/common/primitives/identifier'; + +import { CONTEXT_ID } from '~/definitions'; + +export default async function (tenantId: TenantId, principalId: Identifier, postId: Identifier, parentId?: Identifier): Promise +{ + return publishPostAdded({ + contextId: CONTEXT_ID, + principalId, + tenantId, + postId, + parentId + }); +} +``` ```typescript -// Example: development/social/domain/events.ts -import { publishEvent } from '@theshelf/events'; - -export async function publishPostCreated(post: Post): Promise { - await publishEvent('posts.created', { - postId: post.id, - authorId: post.authorId, - imageUrl: post.imageUrl, - timestamp: post.createdAt, - }); +// Example: development/social/domain/post/_create/index.ts — awaited publish with compensating rollback +export default async function (requester: Requester, data: CreateData): Promise +{ + validate(data); + + const record = createRecord(requester.tenantId, data.creatorId, data.comicId, data.commentId, data.parentId); + + const postId = await persist(record); + + try + { + await publish(requester.tenantId, requester.principalId, record.id, record.parentId); + + return postId; + } + catch (error) + { + logger.error('Failed to create post', error); + + await remove(postId); + + throw error; + } } ``` @@ -281,30 +362,31 @@ export async function publishPostCreated(post: Post): Promise { Before marking the feature as complete, verify: -- [ ] Domain models are well-typed with full TypeScript strict mode compliance -- [ ] All use-case functions are pure or explicitly handle side effects -- [ ] Domain-specific error types are used instead of generic errors -- [ ] API endpoints (if any) include authentication, validation, and error mapping -- [ ] Frontend components/hooks (if any) use React 19 patterns -- [ ] Tests cover happy path, error cases, and edge cases -- [ ] External dependencies (Keycloak, MongoDB, SeaweedFS, Kafka) are properly mocked in tests -- [ ] Event publishing (if any) follows the fire-and-forget pattern -- [ ] Code follows project conventions: single quotes, no semicolons, inline type imports, import ordering -- [ ] Feature is documented in the relevant bounded context's README +- [ ] Domain models are well-typed with full TypeScript strict mode compliance, with a clear `Record` (storage) vs. domain model (e.g. `Post`, `Relation`) split +- [ ] All use-case functions make side effects (DB, file store, event publishing) explicit via small, composed helper functions (`_create`, `_retrieveById`, `persist`, `publish`, etc.) +- [ ] Domain-specific error types extend `@comify/common/integrations/errors` (`BadRequest`, `NotFound`, `ValidationError`) instead of generic errors +- [ ] New public use cases (and any protected helpers/errors they need) are registered in the relevant `deployment/segments/.*.json` files with the correct `access` level +- [ ] Tests are added under `testing//domain//.spec.ts`, using real `database`/`eventBroker`/`fileStore` connections and fixture seed helpers, covering happy path, domain-error cases, and ownership/authorization cases +- [ ] State-changing use cases that publish an event await the publish and roll back (compensate) on failure rather than firing-and-forgetting +- [ ] Code follows project conventions: single quotes, no semicolons, inline type imports, import ordering, `RECORD_TYPE` export per Record type +- [ ] `npm run test` (and `npm run lint`) pass for the affected workspace ## Common Pitfalls -1. **Impure functions with implicit side effects** — Always make DB calls, API calls, and event publishing explicit in the function signature. -2. **Generic error handling** — Use domain-specific error classes for clarity and better debugging. -3. **Tight coupling between contexts** — Respect bounded context boundaries; communicate via events, not direct calls. -4. **Missing test mocks** — Never test against real external services; always mock Keycloak, MongoDB, SeaweedFS, and Kafka. -5. **Skipping validation** — Validate all inputs at the API boundary and within use-case functions. -6. **Semicolons or double quotes** — Enforce the project's formatting rules via ESLint; do not manually override. +1. **Hidden side effects** — Keep DB calls, file store calls, and event publishing in their own small named functions (`persist`, `publish`, `retrieve`) composed by the use case's `index.ts`, rather than inlined ad hoc. +2. **Generic error handling** — Use domain-specific error classes (extending `BadRequest`/`NotFound`/`ValidationError`) for clarity and correct segment (de)serialization. +3. **Tight coupling between contexts** — Respect bounded context boundaries; cross-context communication goes through the shared `development/common/domain//` event contracts, not direct imports between `social`/`insights`/`moderation` domains. +4. **Forgetting segment registration** — A new public use case or a newly extracted protected helper that isn't added to the right `deployment/segments/*.json` file won't be callable (or won't run in the intended segment) even though the code compiles and local tests pass. +5. **Treating event publishing as fire-and-forget** — In this codebase, failed event publishing after a persisted change must trigger a compensating rollback and a re-thrown error, not a silently swallowed failure. +6. **Mocking in domain tests** — Domain `.spec.ts` tests connect to real `database`/`eventBroker`/`fileStore` integrations and reseed fixtures; don't introduce `vi.mock()` for these, follow the existing integration-test pattern instead. +7. **Semicolons or double quotes** — Enforce the project's formatting rules via ESLint; do not manually override. ## References -- [Project AGENTS.md](../../AGENTS.md) — Full project conventions and setup -- [@theshelf/validation](https://www.npmjs.com/package/@theshelf/validation) — Validation library -- [@theshelf/events](https://www.npmjs.com/package/@theshelf/events) — Event publishing via Kafka +- [Project AGENTS.md](../../../AGENTS.md) — Full project conventions and setup +- [testing/social/domain-tests.md](../../../testing/social/domain-tests.md) — Documented behavior of existing social domain tests +- [@theshelf/validation](https://www.npmjs.com/package/@theshelf/validation) — Validation library (wrapped by `@comify/common/integrations/validation`) +- [@theshelf/events](https://www.npmjs.com/package/@theshelf/events) — Event publishing via Kafka/in-memory driver (wrapped by `@comify/common/integrations/events`) - [@theshelf/authentication](https://www.npmjs.com/package/@theshelf/authentication) — Keycloak/OIDC authentication +- [Jitar](https://jitar.dev) — Distributed runtime responsible for exposing domain functions as remote procedures via segment configuration - [Vitest documentation](https://vitest.dev/) — Testing framework From 8c5dcbaf083c243e8c5b628ee211117f5018e642 Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Fri, 30 Oct 2026 10:31:34 +0100 Subject: [PATCH 20/26] #532: initial domain testing skill --- .agents/skills/domain-testing/SKILL.md | 382 +++++++++++++++++++++++++ 1 file changed, 382 insertions(+) create mode 100644 .agents/skills/domain-testing/SKILL.md diff --git a/.agents/skills/domain-testing/SKILL.md b/.agents/skills/domain-testing/SKILL.md new file mode 100644 index 00000000..dcb8cbee --- /dev/null +++ b/.agents/skills/domain-testing/SKILL.md @@ -0,0 +1,382 @@ +# Domain Feature Testing + +## Overview + +This skill guides writing **integration tests** for domain use cases within a bounded context in the Comify project (`social`, `insights`, `moderation`, etc.). It is the testing counterpart to the `domain-implementation` skill (see `.agents/skills/domain-implementation/SKILL.md`) and documents the exact conventions already used by the ~20 spec files under `testing/social/domain`. + +Tests in this codebase are **integration tests, not isolated unit tests**. They run against real `database`, `eventBroker`, `fileStore` and `http` integrations (backed by in-memory/mapped drivers in the test environment) and reseed fixture data before each test. Nothing is mocked with `vi.mock()`. + +## When to Use + +Invoke this skill when: +- A new public use case was added under `development//domain//` and needs a corresponding `.spec.ts` +- An existing use case gained new branches (validation rule, error case, ownership check) that need test coverage +- You need to add or extend fixture data to support a new test scenario +- You are asked to improve coverage on an existing domain feature + +> **Scope:** This skill covers `testing//domain/**/*.spec.ts` only. UI/component tests are out of scope (see `app-implementation`); it does not cover implementing the use case itself (see `domain-implementation`). + +## Prerequisites + +Before writing tests, ensure you have: + +1. **The use case already implemented** — its `index.ts`, exported error classes, and `RECORD_TYPE`/`Record` type are in place under `development//domain/`. +2. **Knowledge of which integrations it touches** — look at the use case's imports: does it call `database` (directly or via `~/integrations`), `eventBroker` (via a `publish.ts` helper), or `fileStore`/`http` (via image creation/download)? +3. **Familiarity with the available fixtures** — `testing//fixtures` (shared across the context) and, if present, a feature-local `testing//domain//fixtures` folder for data the shared fixtures don't cover. + +## Test File Anatomy + +### File location & naming + +- **Location:** `testing//domain//.spec.ts` — mirrors `development//domain//`, but as a **flat file**, not a directory (e.g. `development/social/domain/post/remove/index.ts` → `testing/social/domain/post/remove.spec.ts`). +- **One spec file per public use case.** Internal helpers (`_create`, `_toModel`, etc.) are exercised indirectly through the public use case's tests, except where a helper is directly imported and tested in isolation (e.g. `testing/social/domain/notification/create.spec.ts` imports `@comify/social/domain/notification/_create` directly because that helper has no separate public wrapper used standalone). +- **Describe block:** always a single top-level `describe('index', () => { ... })` — the literal string `'index'`, never the use-case name: + +```typescript +describe('index', () => +{ + it('should create a post', async () => + { + // ... + }); +}); +``` + +- **Imports are grouped and ordered** exactly like production code: external (`vitest`) → `@theshelf/*`/`@comify/*` (alphabetized, blank line between distinct groups) → the use case + its domain types → relative fixtures import last. A blank line (empty first line) opens every file, matching the rest of the codebase. + +```typescript +// Pattern observed across every spec file +import { beforeAll, afterAll, beforeEach, describe, expect, it } from 'vitest'; + +import database from '@comify/common/integrations/database'; +import eventBroker from '@comify/common/integrations/events'; + +import { PostNotFound, RECORD_TYPE, type Record } from '@comify/social/domain/post'; +import remove from '@comify/social/domain/post/remove'; + +import { REQUESTERS, POST_RECORDS, seedPosts } from '../../fixtures'; +``` + +### Connecting real integrations + +Connect **only** the integrations the use case under test actually exercises, in `beforeAll`, and tear them down in `afterAll`. Decide which ones to include by tracing the use case's dependencies: + +| Use case touches... | Connect | +|---|---| +| Reads/writes records (almost always) | `database` | +| Publishes a domain event (`publish.ts` helper) | `eventBroker` | +| Creates/downloads/reads images | `fileStore` | +| Downloads from an external URL | `fileStore` (the mapped `http` driver is seeded via fixtures, not connected explicitly) | + +```typescript +beforeAll(async () => +{ + await Promise.all([ + database.connect(), + eventBroker.connect() + ]); +}); + +afterAll(async () => +{ + await Promise.all([ + database.disconnect(), + eventBroker.disconnect() + ]); +}); +``` + +When only one integration is needed, skip `Promise.all` entirely: + +```typescript +beforeAll(async () => +{ + await database.connect(); +}); + +afterAll(async () => +{ + await database.disconnect(); +}); +``` + +### Seeding fixture data + +Reseed fixture data in `beforeEach` using the helpers exported from `testing//fixtures` (barrel of `data/` + `setup/`). Prefer the **narrowest** seed helper(s) that satisfy the use case's preconditions: + +| Helper | Seeds | +|---|---| +| `seedCreators()`, `seedPosts()`, `seedRatings()`, `seedRelations()`, `seedNotifications()`, `seedComics()`, `seedComments()`, `seedCreatorMetrics()`, `seedPostMetrics()`, `seedImages()` | A single record type (granular) | +| `fullySeedCreators()` | Creators + Creator Metrics + Relations | +| `fullySeedPosts()` | `fullySeedCreators()` + Images + Comics + Comments + Posts + Post Metrics + Ratings | +| `fullySeedNotifications()` | `fullySeedPosts()` + Notifications | + +```typescript +beforeEach(async () => +{ + await seedPosts(); +}); + +// or combine multiple independent seeds: +beforeEach(async () => +{ + await Promise.all([ + seedPosts(), + seedRatings() + ]); +}); +``` + +Some use cases need **no** seeding at all (stateless creation from arbitrary input, e.g. `post.comic/create.spec.ts`, `post.comment/create.spec.ts`) — in that case omit `beforeEach` entirely. + +### Feature-local fixtures + +When the shared `testing//fixtures` data isn't enough (e.g. malformed/edge-case input values, or mocked HTTP responses specific to one feature), add a **feature-local fixtures folder** next to the spec files, mirroring `testing/social/domain/image/fixtures/`: + +``` +testing/social/domain/image/fixtures/ +├── data.fixture.ts # URLs / data URLs / mock Response objects specific to image tests +├── setup.fixture.ts # seedImages(): configures the mapped http driver +└── index.ts # export * from './data.fixture'; export * from './setup.fixture'; +``` + +```typescript +// testing/social/domain/image/fixtures/setup.fixture.ts +import { HttpMethods } from '@theshelf/http'; +import type { MappedDriver } from '@theshelf/http'; + +import { driver } from '@comify/common/integrations/http'; + +import { URLS, RESPONSES } from './data.fixture'; + +export function seedImages(): void +{ + const mappedDriver = driver as MappedDriver; + + mappedDriver.clear(); + + mappedDriver.setMapping(HttpMethods.HEAD, URLS.VALID.toString(), RESPONSES.VALID); + mappedDriver.setMapping(HttpMethods.GET, URLS.VALID.toString(), RESPONSES.VALID); + mappedDriver.setMapping(HttpMethods.HEAD, URLS.INVALID_TYPE.toString(), RESPONSES.INVALID_TYPE); + mappedDriver.setMapping(HttpMethods.HEAD, URLS.INVALID_SIZE.toString(), RESPONSES.INVALID_SIZE); + mappedDriver.setMapping(HttpMethods.HEAD, URLS.NONEXISTING.toString(), RESPONSES.NONEXISTING); +} +``` + +Import feature-local fixtures with a relative `./fixtures` path, and shared fixtures with `../../fixtures`, never mixing the two re-export surfaces. + +### Shared fixture data conventions (when extending `testing//fixtures`) + +If a new feature needs fixture **records** that other tests could also reuse (not one-off edge-case values), extend the shared fixtures instead of duplicating data locally: + +1. Add/extend a `testing//fixtures/data/.fixture.ts` exporting a `Record` keyed by scenario name (e.g. `ALICE`, `FIRST`, `BOB_ALICE`), re-exported from `testing//fixtures/data/index.ts`. +2. Add a `seed()` function to `testing//fixtures/setup/database.fixture.ts` using the shared `seed(type, records)` helper (which deletes all existing records of that type, then recreates them from `Object.values(...)`), and re-export it from `testing//fixtures/setup/index.ts`. +3. If the new entity should be part of an existing composite helper (`fullySeedPosts`, etc.), add it there too — composites always run their sub-seeds via `Promise.all`. +4. If you need a `Requester`, don't hand-roll one — `REQUESTERS` is derived automatically from `CREATOR_RECORDS` keys (`{ principalId: record.id, tenantId: record.tenantId }`), so adding a creator fixture automatically gives you `REQUESTERS.`. + +## Writing Assertions + +### Happy path — assert the real side effect, not the return value alone + +Read the record back from `database` (or the file from `fileStore`) rather than trusting only the use case's return value: + +```typescript +it('should create a post', async () => +{ + const id = await createWithComic(REQUESTERS.ALICE, { imageDataUrl: IMAGE_DATA_URLS.COMIC }); + + const result = await database.readRecord(RECORD_TYPE, { id: { EQUALS: id } }); + + expect(result.record).toBeDefined(); + expect(result.record?.creatorId).toBe(REQUESTERS.ALICE.principalId); + expect(result.record?.comicId).toBeDefined(); + expect(result.record?.createdAt).toBeDefined(); +}); +``` + +For list/query use cases, assert both length and ordering explicitly (most domain lists are sorted by recency): + +```typescript +it('should get posts from everyone followed by the requester', async () => +{ + const posts = await getByFollowing(REQUESTERS.CHARLIE, { offset: 0, limit: 7 }); + + expect(posts).toHaveLength(2); + expect(posts[0].id).toBe(POST_RECORDS.SECOND.id); + expect(posts[1].id).toBe(POST_RECORDS.FIRST.id); +}); +``` + +### Error cases — pick the right matcher + +- Use `.rejects.toThrow(ErrorClass)` when only the error **type** matters: + +```typescript +const promise = remove(REQUESTERS.HENRY, POST_RECORDS.DELETED.id); + +await expect(promise).rejects.toThrow(PostNotFound); +``` + +- Use `.rejects.toStrictEqual(new ErrorClass(...))` when the error carries **data** that must also match (e.g. validation message maps), or when you want an exact-instance check: + +```typescript +const messages = new Map([['mimeType', 'Invalid mime type']]); + +const promise = create('invalid_type', DATA_URLS.INVALID_TYPE); + +await expect(promise).rejects.toStrictEqual(new InvalidImage(messages)); +``` + +```typescript +const promise = establish(REQUESTERS.BOB, CREATOR_RECORDS.ALICE.id); + +await expect(promise).rejects.toStrictEqual(new RelationAlreadyExists()); +``` + +### Authorization / ownership cases — assert the *absence* of a side effect + +When a requester doesn't own the resource, the use case typically resolves silently (the mutation is skipped) rather than throwing — assert the record is **unchanged**: + +```typescript +it('should not delete a post from another creator', async () => +{ + await remove(REQUESTERS.BOB, POST_RECORDS.FIRST.id); + + const result = await database.readRecord(RECORD_TYPE, { id: { EQUALS: POST_RECORDS.FIRST.id } }); + + expect(result.record?.deleted).toBeFalsy(); +}); +``` + +## Test Categories Checklist (per use case) + +For every public use case being tested, cover as many of the following as apply: + +- [ ] **Happy path** — valid input produces the expected persisted/returned result +- [ ] **Validation errors** — invalid input (too long, malformed, wrong type/size) throws the domain-specific error +- [ ] **Not-found errors** — operating on a non-existent or already soft-deleted record throws the `*NotFound` error +- [ ] **Duplicate/conflict errors** — creating something that already exists throws the `*AlreadyExists` error +- [ ] **Ownership/authorization** — a requester who doesn't own the resource cannot mutate it (and no error is thrown unless the domain defines one) +- [ ] **Exclusion/filtering behavior** — e.g. recommended posts exclude the requester's own posts, following lists only include relevant tenants +- [ ] **Ordering/pagination** — list results come back in the documented order (usually most-recent-first) and respect `limit`/`offset` +- [ ] **Search/partial-match behavior** — for use cases that accept a search term, cover no-match, full-name match, nickname match, and partial/split-name match as applicable + +Not every use case needs every category — match the categories to the branches actually present in the implementation (see the use case's `index.ts` and its helper files for the branches to cover). + +## Worked Example + +This is a **fictional** illustration using a hypothetical `creator.badge` feature (not an existing path in the repo) to show how the pieces fit together — a use case `development/social/domain/creator.badge/award/index.ts` that awards a badge to a creator, owned by `requester`, and throws `BadgeAlreadyAwarded` on a duplicate: + +```typescript + +import { beforeAll, afterAll, beforeEach, describe, expect, it } from 'vitest'; + +import database from '@comify/common/integrations/database'; +import eventBroker from '@comify/common/integrations/events'; + +import { RECORD_TYPE, type Record } from '@comify/social/domain/creator.badge'; +import award, { BadgeAlreadyAwarded } from '@comify/social/domain/creator.badge/award'; + +import { REQUESTERS, seedCreatorBadges } from '../../fixtures'; + +beforeAll(async () => +{ + await Promise.all([ + database.connect(), + eventBroker.connect() + ]); +}); + +afterAll(async () => +{ + await Promise.all([ + database.disconnect(), + eventBroker.disconnect() + ]); +}); + +beforeEach(async () => +{ + await seedCreatorBadges(); +}); + +describe('index', () => +{ + it('should award a badge to a creator', async () => + { + await award(REQUESTERS.ALICE, 'early-adopter'); + + const result = await database.readRecord(RECORD_TYPE, { + creatorId: { EQUALS: REQUESTERS.ALICE.principalId }, + badge: { EQUALS: 'early-adopter' } + }); + + expect(result.record).toBeDefined(); + }); + + it('should NOT award a duplicate badge', async () => + { + const promise = award(REQUESTERS.BOB, 'top-commenter'); + + await expect(promise).rejects.toStrictEqual(new BadgeAlreadyAwarded()); + }); +}); +``` + +> This is illustrative only — before writing a real test, always read the real `index.ts`, its helpers, and its exported error classes for the use case under test, and seed/assert against **its** actual signature and behavior rather than assuming the shape shown here. + +## Running & Validating Tests + +```bash +# Run the full test suite +npm run test + +# Run only social domain tests +npm run test -- testing/social/domain/ + +# Run a single feature's tests +npm run test -- testing/social/domain/post/ + +# Run a single spec file +npm run test -- testing/social/domain/post/remove.spec.ts + +# Check coverage +npm run test-coverage +``` + +Always run the affected spec file(s) after writing or changing a test, and run `npm run lint` on the touched workspace (`testing/`) to confirm import ordering, quote style, and formatting rules are satisfied. + +## Checklist + +Before marking test coverage complete, verify: + +- [ ] Spec file is placed at `testing//domain//.spec.ts`, mirroring the use case's directory under `development//domain//` +- [ ] A single `describe('index', () => { ... })` wraps all `it` blocks +- [ ] Only the integrations the use case actually touches are connected/disconnected (`database`, `eventBroker`, `fileStore`) +- [ ] Fixtures are reseeded in `beforeEach` using the narrowest applicable shared seed helper(s), or a feature-local `fixtures/` folder when shared data doesn't cover the scenario +- [ ] Happy path assertions read back real state via `database.readRecord`/`searchRecords` (or `fileStore.readFile`), not just the use case's return value +- [ ] Error cases use `.rejects.toThrow(ErrorClass)` for type-only checks or `.rejects.toStrictEqual(new ErrorClass(...))` when error data matters +- [ ] Ownership/authorization branches are covered by asserting the resource is unchanged for non-owners +- [ ] List-returning use cases assert both length and element ordering +- [ ] No `vi.mock()` is used for `database`/`eventBroker`/`fileStore`/`http` — only the mapped/memory drivers already wired up for the test environment +- [ ] Code follows project conventions: single quotes, no semicolons, inline type imports, import ordering, blank line after imports +- [ ] `npm run test` (and `npm run lint`) pass for the affected workspace + +## Common Pitfalls + +1. **Wrong `describe` name** — it must be `'index'`, not the use-case or feature name; this is a hard convention across every existing spec file. +2. **Over-seeding** — pulling in `fullySeedPosts()` when a narrower `seedCreators()`/`seedPosts()` would do makes tests slower and obscures what the test actually depends on. +3. **Connecting unused integrations** — only connect what the use case under test touches; e.g. a pure read from `database` doesn't need `eventBroker.connect()`. +4. **Trusting the return value only** — always read the record back (or query related records) to prove the side effect actually happened, especially for void-returning use cases like `remove`/`establish`. +5. **Using `toThrow` when the error carries data** — validation errors like `InvalidImage(messages)` need `toStrictEqual(new InvalidImage(messages))` to actually verify the message map, not just the error type. +6. **Mocking collaborators** — don't introduce `vi.mock()` for `database`/`eventBroker`/`fileStore`/`http`; use the existing fixture/seed pattern against the real (in-memory/mapped) drivers instead. +7. **Forgetting ordering assertions** — a list test that only checks `toHaveLength(n)` without checking element order/identity can silently hide a broken sort. +8. **Duplicating fixture data inline** — reuse `testing//fixtures` (or a feature-local `fixtures/` folder for truly feature-specific edge cases) instead of hardcoding new records inside the spec file. + +## References + +- [`.agents/skills/domain-implementation/SKILL.md`](../domain-implementation/SKILL.md) — Step 5 "Testing" section this skill expands on, plus the full use-case implementation conventions these tests exercise +- [Project AGENTS.md](../../../AGENTS.md) — Full project conventions and setup +- [testing/social/domain-tests.md](../../../testing/social/domain-tests.md) — Documented behavior of existing social domain tests (categories, fixtures, error types) +- [testing/social/fixture-data.md](../../../testing/social/fixture-data.md) — Full reference of the shared fixture data model and relationships +- [Vitest documentation](https://vitest.dev/) — Testing framework (`describe`/`it`/`beforeAll`/`beforeEach`/`expect`) From 3acc28cbcc49893fa19a1b62e24a74c55ab15dc0 Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Fri, 30 Oct 2026 11:19:07 +0100 Subject: [PATCH 21/26] #532: refined agent and skill files --- .agents/skills/app-implementation/SKILL.md | 34 ++++---- .agents/skills/code-review/SKILL.md | 79 +++++++++---------- .agents/skills/domain-implementation/SKILL.md | 18 +++-- .agents/skills/domain-testing/SKILL.md | 13 +-- AGENTS.md | 49 +++++++----- 5 files changed, 105 insertions(+), 88 deletions(-) diff --git a/.agents/skills/app-implementation/SKILL.md b/.agents/skills/app-implementation/SKILL.md index 9d7234d6..03bd7265 100644 --- a/.agents/skills/app-implementation/SKILL.md +++ b/.agents/skills/app-implementation/SKILL.md @@ -1,20 +1,19 @@ -# App Implementation Skill +--- +name: app-implementation +description: Implement frontend/UI features (React components, hooks, routing) under development//app in Comify. Use when adding or extending user-facing features in the social app or another bounded context's app layer. +--- -## Purpose +# App Implementation -This skill guides the implementation of **UI features** for the Comify application. It covers: +## Overview -- ✅ **Frontend-only** feature implementation (React components, hooks, routing) -- ✅ User interface, interactions, local/global state, domain data integration -- ✅ Testing UI components and behaviors +Guides the implementation of **UI features** for the Comify application — frontend-only feature implementation (React components, hooks, routing), user interface, interactions, local/global state, and domain data integration, under `development//app`. Code style (quotes, semicolons, brace style, import ordering) follows the repository root [`AGENTS.md`](../../../AGENTS.md); this skill documents the app-layer-specific architecture on top of it. > **Scope:** UI feature implementation only. Domain logic (use-cases, gateways, repositories) is handled by the `domain-implementation` skill. ---- - -## Scope: UI Feature Implementation +## When to Use -This skill is for implementing **user-facing features** — anything the user sees or interacts with in the browser, under `development//app`. +Invoke this skill when implementing **user-facing features** — anything the user sees or interacts with in the browser, under `development//app`. ### What's IN scope @@ -40,8 +39,6 @@ This skill is for implementing **user-facing features** — anything the user se | **Event publishing** | `@theshelf/events` | | **Backend API routes** | Backend services | ---- - ## Prerequisites Before implementing a UI feature, ensure: @@ -50,8 +47,6 @@ Before implementing a UI feature, ensure: - The feature name and requirements are clear, and you know which bounded sub-feature it belongs to (see naming convention below) - Design system components from `@maskingtech/designsystem` and helper hooks from `@maskingtech/react-toolkit` are identified for reuse ---- - ## Workflow ### 1. Feature Discovery @@ -237,8 +232,6 @@ There are currently **no UI test files** under `development//app` or `t - Mock `@comify/common/security` (`requester`) and domain use-case functions with `vi.mock()` rather than hitting real Keycloak/MongoDB/SeaweedFS/Kafka - Run tests with `npm run test` (Vitest) from the repo root ---- - ## Checklist Before marking a UI feature complete, verify: @@ -250,5 +243,12 @@ Before marking a UI feature complete, verify: - [ ] New routes are exported as a `` JSX fragment from the feature's `Routes.tsx` and mounted in the parent `Routes.tsx` - [ ] Reusable pieces are re-exported from the feature's `index.ts`; other features import only through that barrel - [ ] Styling relies on `@maskingtech/designsystem`, not ad-hoc CSS/Tailwind/styled-components -- [ ] Code follows project conventions: single quotes, Allman brace style, one blank line after imports, import ordering (built-in → external → internal → relative, alphabetized) +- [ ] Code follows the formatting rules in `AGENTS.md` (single quotes, semicolons, Allman braces, import ordering, leading/trailing blank lines) + +## References + +- [Project AGENTS.md](../../../AGENTS.md) — Full project conventions and setup +- [`.agents/skills/domain-implementation/SKILL.md`](../domain-implementation/SKILL.md) — Implementing the domain use cases this skill's UI consumes +- [React Router documentation](https://reactrouter.com/) — Route composition patterns used in `Routes.tsx` +- [Vitest documentation](https://vitest.dev/) — Testing framework diff --git a/.agents/skills/code-review/SKILL.md b/.agents/skills/code-review/SKILL.md index f1f972ac..88356423 100644 --- a/.agents/skills/code-review/SKILL.md +++ b/.agents/skills/code-review/SKILL.md @@ -1,53 +1,48 @@ --- name: code-review -description: Review code changes for bugs, regressions, security issues, and missing tests. +description: Review code changes for bugs, regressions, security issues, convention drift, and missing tests. Use when reviewing a pull request or diff in the Comify codebase. --- -# Code Review Skill +# Code Review ## Overview -This skill guides thorough code reviews for the Comify project, an open-source social media platform that leverages comics for communication. Reviews should validate TypeScript compliance, architectural integrity, and adherence to project conventions defined in `AGENTS.md`. +Reviews TypeScript changes across Comify's bounded contexts (`development/`, `testing/`, `deployment/`) for correctness, architectural integrity, and adherence to the conventions in the repository root [`AGENTS.md`](../../../AGENTS.md). For domain or UI code specifically, also cross-check against the `domain-implementation`, `domain-testing`, and `app-implementation` skills — this skill focuses on the cross-cutting checks that apply to every change. -## Setup +## When to Use -Review against the active `AGENTS.md` in the repository root. Reference the project structure: -- `development/` — Bounded contexts (`social`, `insights`, `moderation`, etc.) -- `testing/` — Mirrors `development/` structure for test files -- `deployment/` — Jitar runtime configuration (services, segments, resources) -- `common/` — Shared utilities and core modules +Invoke this skill when asked to review a diff, pull request, or set of staged changes. ---- +## Review Checklist + +### TypeScript & formatting + +- [ ] TypeScript strict mode compliance — no unjustified `any` (prefer `unknown` with narrowing); no new `as` assertions where a type guard would do +- [ ] Single quotes, semicolons on every statement, Allman brace style (see `AGENTS.md` → Code Style) +- [ ] One leading blank line at the top of the file, one blank line after the import block, one trailing blank line at EOF +- [ ] Imports ordered built-in → external → internal (`^/*`) → parent (`~/*`) → relative, alphabetized case-insensitively, no duplicates +- [ ] Inline type imports (`import { type Foo } from 'bar'`) rather than a separate `import type` statement +- [ ] No unused variables/imports, no stray `console.*` calls (use the shared `logger`) + +### Architecture + +- [ ] Bounded context boundaries are respected — no direct imports between `social`/`insights`/`moderation` domains; cross-context communication goes through `development/common/domain//` event contracts +- [ ] Domain logic doesn't leak into the app layer, and UI concerns don't leak into domain use cases +- [ ] New/changed domain use cases are registered with the correct `access` level in the relevant `deployment/segments/.*.json` file +- [ ] Side effects (DB, file store, event publishing) are isolated in small, named helper functions rather than inlined +- [ ] State-changing use cases that publish an event `await` the publish and roll back on failure instead of firing-and-forgetting + +### Tests + +- [ ] New/changed public use cases have a matching `testing//domain//.spec.ts` +- [ ] Domain tests use real `database`/`eventBroker`/`fileStore` integrations and fixture seed helpers — no `vi.mock()` +- [ ] App/UI tests (if any) mock the domain layer and `requester` with `vi.mock()` rather than hitting real integrations +- [ ] Happy path, error, and ownership/authorization cases are covered where applicable +- [ ] `npm run test` and `npm run lint` pass for every affected workspace + +## References -## 1. TypeScript & Language Compliance - -### Strict Mode -- **TypeScript strict mode** is enabled — all `noImplicit*` flags are on. -- **No `any` types** without explicit justification and a comment explaining why. -- Prefer `unknown` over `any` when the type is truly untyped. -- Use type guards or narrowing instead of `as` assertions where possible. - -### Formatting Rules -- **Single quotes** only (`'text'`, not `"text"`). -- **Always use a semicolon** at end of statements. -- **No unused variables** or imports. - -### Import Ordering -Imports must follow this exact order, alphabetically sorted within each group, case-insensitive: -1. Built-in Node.js modules -2. External packages -3. Internal `@theshelf/*` packages -4. Internal `@jitar-plugins/*` packages -5. Internal project imports (`common/`, context-specific modules) -6. Relative imports - -No duplicate imports. One blank line after the import block. Inline type imports preferred (e.g., `import type { Foo } from 'bar'`). - -### Review Checklist -- [ ] TypeScript strict mode enforced -- [ ] No unjustified `any` types -- [ ] Single quotes used, no semicolons -- [ ] Imports properly ordered, sorted, no duplicates -- [ ] One blank line after imports -- [ ] One blank at the start of the file -- [ ] One blank at the end of the file +- [Project AGENTS.md](../../../AGENTS.md) — Full project conventions and setup +- [`.agents/skills/domain-implementation/SKILL.md`](../domain-implementation/SKILL.md) +- [`.agents/skills/domain-testing/SKILL.md`](../domain-testing/SKILL.md) +- [`.agents/skills/app-implementation/SKILL.md`](../app-implementation/SKILL.md) diff --git a/.agents/skills/domain-implementation/SKILL.md b/.agents/skills/domain-implementation/SKILL.md index 55ff1140..45865601 100644 --- a/.agents/skills/domain-implementation/SKILL.md +++ b/.agents/skills/domain-implementation/SKILL.md @@ -1,8 +1,13 @@ -# Domain Feature Implementation +--- +name: domain-implementation +description: Implement domain use cases (business logic, records/models, segment registration) within a Comify bounded context. Use when adding or extending backend domain features in social, insights, or moderation. +--- + +# Domain Implementation ## Overview -This skill guides the implementation of new features within a bounded context in the Comify project. It covers the full lifecycle from domain analysis through to tested, production-ready code following project conventions. +Guides the implementation of new domain features within a bounded context in the Comify project — from domain analysis through to tested, production-ready code following project conventions. Code style (quotes, semicolons, brace style, import ordering) follows the repository root [`AGENTS.md`](../../../AGENTS.md); this skill documents the domain-layer-specific architecture on top of it. It is the implementation counterpart to the `domain-testing` skill. ## When to Use @@ -99,8 +104,8 @@ Implement each use-case function following these conventions: 3. **Naming (internal helpers):** `_camelCase` subdirectories for private/internal helpers (`_create`, `_retrieveById`, `_toModel`, `_toModels`, `_translateMany`, `_retrieveFollowing`). These are not use cases themselves but are shared building blocks consumed by one or more public use cases (e.g. `post/_create` is the shared creation logic used by both `post/createWithComic` and `post/createWithComment`). 4. **Pure functions** where possible; side effects (DB, external APIs) should be explicit and isolated. 5. **Error handling:** Domain-specific error classes extending `@comify/common/integrations/errors` types (e.g., `BadRequest`, `NotFound`). -6. **Type imports** inline: `import type { Post } from '../types'` -7. **Single quotes**, no semicolons. +6. **Type imports** inline: `import { type Post } from '../definitions'` +7. Follow the formatting rules in `AGENTS.md` (single quotes, semicolons, Allman braces, import ordering, leading/trailing blank lines). ```typescript // Example: development/social/domain/relation/establish/index.ts @@ -368,7 +373,8 @@ Before marking the feature as complete, verify: - [ ] New public use cases (and any protected helpers/errors they need) are registered in the relevant `deployment/segments/.*.json` files with the correct `access` level - [ ] Tests are added under `testing//domain//.spec.ts`, using real `database`/`eventBroker`/`fileStore` connections and fixture seed helpers, covering happy path, domain-error cases, and ownership/authorization cases - [ ] State-changing use cases that publish an event await the publish and roll back (compensate) on failure rather than firing-and-forgetting -- [ ] Code follows project conventions: single quotes, no semicolons, inline type imports, import ordering, `RECORD_TYPE` export per Record type +- [ ] A `RECORD_TYPE` constant is exported alongside each Record type +- [ ] Code follows the formatting rules in `AGENTS.md` (single quotes, semicolons, Allman braces, inline type imports, import ordering) - [ ] `npm run test` (and `npm run lint`) pass for the affected workspace ## Common Pitfalls @@ -379,7 +385,7 @@ Before marking the feature as complete, verify: 4. **Forgetting segment registration** — A new public use case or a newly extracted protected helper that isn't added to the right `deployment/segments/*.json` file won't be callable (or won't run in the intended segment) even though the code compiles and local tests pass. 5. **Treating event publishing as fire-and-forget** — In this codebase, failed event publishing after a persisted change must trigger a compensating rollback and a re-thrown error, not a silently swallowed failure. 6. **Mocking in domain tests** — Domain `.spec.ts` tests connect to real `database`/`eventBroker`/`fileStore` integrations and reseed fixtures; don't introduce `vi.mock()` for these, follow the existing integration-test pattern instead. -7. **Semicolons or double quotes** — Enforce the project's formatting rules via ESLint; do not manually override. +7. **Ignoring formatting rules** — Don't drop semicolons or switch to double quotes; let ESLint (`npm run lint`) enforce the rules in `AGENTS.md` rather than manually overriding them. ## References diff --git a/.agents/skills/domain-testing/SKILL.md b/.agents/skills/domain-testing/SKILL.md index dcb8cbee..55fd9e7c 100644 --- a/.agents/skills/domain-testing/SKILL.md +++ b/.agents/skills/domain-testing/SKILL.md @@ -1,10 +1,13 @@ -# Domain Feature Testing +--- +name: domain-testing +description: Write integration tests for domain use cases (testing//domain/**/*.spec.ts) in a Comify bounded context. Use when adding, extending, or improving coverage for domain-layer tests. +--- -## Overview +# Domain Testing -This skill guides writing **integration tests** for domain use cases within a bounded context in the Comify project (`social`, `insights`, `moderation`, etc.). It is the testing counterpart to the `domain-implementation` skill (see `.agents/skills/domain-implementation/SKILL.md`) and documents the exact conventions already used by the ~20 spec files under `testing/social/domain`. +## Overview -Tests in this codebase are **integration tests, not isolated unit tests**. They run against real `database`, `eventBroker`, `fileStore` and `http` integrations (backed by in-memory/mapped drivers in the test environment) and reseed fixture data before each test. Nothing is mocked with `vi.mock()`. +Guides writing **integration tests, not isolated unit tests**, for domain use cases within a bounded context in the Comify project (`social`, `insights`, `moderation`, etc.). Tests run against real `database`, `eventBroker`, `fileStore` and `http` integrations (backed by in-memory/mapped drivers in the test environment) and reseed fixture data before each test — nothing is mocked with `vi.mock()`. This is the testing counterpart to the `domain-implementation` skill (see [`../domain-implementation/SKILL.md`](../domain-implementation/SKILL.md)) and documents the exact conventions already used by the ~20 spec files under `testing/social/domain`. Formatting (quotes, semicolons, import ordering) follows the repository root [`AGENTS.md`](../../../AGENTS.md). ## When to Use @@ -359,7 +362,7 @@ Before marking test coverage complete, verify: - [ ] Ownership/authorization branches are covered by asserting the resource is unchanged for non-owners - [ ] List-returning use cases assert both length and element ordering - [ ] No `vi.mock()` is used for `database`/`eventBroker`/`fileStore`/`http` — only the mapped/memory drivers already wired up for the test environment -- [ ] Code follows project conventions: single quotes, no semicolons, inline type imports, import ordering, blank line after imports +- [ ] Code follows the formatting rules in `AGENTS.md` (single quotes, semicolons, Allman braces, inline type imports, import ordering, blank line after imports) - [ ] `npm run test` (and `npm run lint`) pass for the affected workspace ## Common Pitfalls diff --git a/AGENTS.md b/AGENTS.md index a410f9a8..56087f91 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -21,6 +21,17 @@ Comify is an open-source social media platform that leverages comics for communi - `@theshelf/*` — authentication, connection, database, events, files, http, logging, notification, validation - `@maskingtech/*` — designsystem, react-toolkit +## Agent Skills + +Task-specific guidance lives under `.agents/skills/`. Use the matching skill instead of re-deriving conventions: + +| Skill | Use for | +|-------|---------| +| `domain-implementation` | Implementing domain use cases (business logic, records/models, segment registration) | +| `domain-testing` | Writing/extending `testing//domain/**/*.spec.ts` integration tests | +| `app-implementation` | Implementing frontend/UI features under `development//app` | +| `code-review` | Reviewing code changes for convention, correctness, and test coverage | + ## Prerequisites - **Node.js** version 24+ (enforced via `engines` in package.json) @@ -130,46 +141,48 @@ Services expose ports on localhost, and data persists via Docker volumes. ### General Rules - **TypeScript strict mode** enabled -- **Single quotes** only, no semicolons +- **Single quotes** only, **always use semicolons** +- **Allman brace style** — opening brace on its own line for functions, conditionals, loops, etc. (`{ ... }` single-line blocks are allowed) - **Functional patterns** preferred (pure functions, immutable data) - **Higher-order functions** (`map`, `filter`, `reduce`) over loops - **Composition** over inheritance -- **Consistent formatting** via ESLint + Prettier -- **Import ordering**: Built-in → External → Internal → Relative (case-insensitive, alphabetically sorted) +- **No `console.*` calls** (`no-console` is an ESLint error); use the shared `logger` instead +- **One leading blank line** at the top of every file, before the first import +- **One blank line** after the import block +- **One trailing blank line** at the end of file (`eol-last`) - **No duplicate imports** -- **One blank line** after imports -- **Inline type imports** preferred +- **Inline type imports** preferred (e.g. `import { type Foo } from 'bar'`) +- **Import ordering**: Built-in → External (includes all `@theshelf/*`, `@jitar-plugins/*`, `@maskingtech/*`, `vitest`, etc.) → Internal (`^/*` alias) → Parent (`~/*` alias, and `../`) → Relative (`./`), alphabetized case-insensitively within each group, with a blank line between groups ### Linting -- **ESLint** with TypeScript parser (`@typescript-eslint`) -- **Imports plugin** for module resolution -- **React** hooks and JSX linting -- **Vitest** plugin for test file linting -- **Jitar** plugin for framework-specific rules +- **ESLint** (flat config, `eslint.config.js`) with `@typescript-eslint` (strict + stylistic presets) +- **eslint-plugin-import** for import ordering and module resolution +- **eslint-plugin-react** / **eslint-plugin-react-hooks** for React/JSX linting +- Run with `npm run lint` (per-workspace via `--workspaces`) ## Testing ### Framework -- **Vitest** — Fast unit and integration testing framework -- **Testing Library** — Component testing with React hooks -- **Node** environment for backend tests +- **Vitest** — unit and integration testing framework, run in the **Node** environment +- Tests live under `testing//...`, mirroring the structure of `development//...` ### Running Tests ```bash -npm run test # Run all tests (logic + app) +npm run test # Run the full suite across all workspaces +npm run test-coverage # Run with V8 coverage ``` ### Test Conventions -- **Naming:** `.spec.ts` (e.g., `toggle.spec.ts`, `create.spec.ts`, `login.spec.ts`) +- **Naming:** `.spec.ts(x)` (e.g., `toggle.spec.ts`, `create.spec.ts`, `login.spec.ts`) - **Structure:** `describe` → `it` → setup → act → assert -- **Mocks:** Use `vi.mock()` for external dependencies (Keycloak, MongoDB, SeaweedFS, etc.) -- **Domain imports:** Import the specific domain function being tested (e.g., `create`, `toggleRating`, `establishRelation`) +- **Domain tests** (`testing//domain/**`) are **integration tests**: they connect to the real `database`/`eventBroker`/`fileStore` integrations (backed by in-memory/mapped drivers in the test environment), reseed fixture data in `beforeEach`, and never use `vi.mock()`. See the `domain-testing` skill for the full convention. +- **App/UI tests** (`testing//app/**`) mock domain use-case calls and the shared `requester` with `vi.mock()` rather than hitting real integrations. See the `app-implementation` skill. - **Async code:** Use `await` with standard Vitest assertions (e.g., `expect(...).resolves`, `expect(...).rejects`) -- **Fixtures:** Keep test data in separate files or inline factories +- **Fixtures:** Shared fixtures live in `testing//fixtures`; feature-local fixtures live in a `fixtures/` folder next to the spec files - **Coverage:** Aim for high coverage on use-cases ### Environment Variables From 5e5ed6cd19ca77062b1156f5b682287eeb0b42e8 Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Fri, 30 Oct 2026 11:26:00 +0100 Subject: [PATCH 22/26] #532: added planning skill --- .agents/skills/planning/SKILL.md | 155 +++++++++++++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 .agents/skills/planning/SKILL.md diff --git a/.agents/skills/planning/SKILL.md b/.agents/skills/planning/SKILL.md new file mode 100644 index 00000000..101e9cc0 --- /dev/null +++ b/.agents/skills/planning/SKILL.md @@ -0,0 +1,155 @@ +--- +name: planning +description: Turn a feature request, bug report, or refactor into a concrete, reviewable implementation plan before writing code. Use at the start of any non-trivial task in Comify, especially while in plan mode, before handing off to domain-implementation, app-implementation, domain-testing, or code-review. +--- + +# Planning + +## Overview + +Guides turning a vague request ("add X", "fix Y", "support Z") into a concrete, scoped, and reviewable plan for the Comify codebase **before** any code is written. A good plan identifies the bounded context(s) affected, the layers touched (domain, app, tests, deployment segments), the exact files to add/change, the order of operations, and the open questions that need an answer first. This skill is the entry point that feeds into `domain-implementation`, `app-implementation`, `domain-testing`, and `code-review` — it does not duplicate their conventions, it sequences them. + +> **Scope:** Producing and validating a plan. Writing the actual domain/app/test code is out of scope — once a plan is agreed, hand off to the matching implementation skill. + +## When to Use + +Invoke this skill: +- At the start of any task that touches more than one file, more than one layer (domain/app/tests), or more than one bounded context +- Whenever operating in **plan mode** (explore, analyze, align — no edits), before any `act`/`yolo` mode work begins +- When a request is ambiguous about scope, bounded context ownership, or acceptance criteria +- Before a refactor or migration that could ripple across `development/common` and multiple contexts +- When asked to "plan", "design", "scope", or "break down" a feature, or to review an existing plan for gaps + +Skip it only for truly trivial, single-file, single-layer changes (typo fixes, a one-line config tweak) where the implementation skill's own workflow is enough. + +## Prerequisites + +Before producing a plan, gather: + +1. **The raw request** — the user's own words; don't paraphrase away constraints or examples they gave +2. **Repository conventions** — [`AGENTS.md`](../../../AGENTS.md) for code style, project structure, and testing conventions +3. **The relevant implementation skill(s)** — skim `domain-implementation`, `app-implementation`, and `domain-testing` so the plan's steps map onto their actual workflows instead of inventing new ones +4. **Current mode** — plan mode means the output of this skill is the deliverable (no edits); act/yolo mode means the plan is a short internal step before implementing + +## Workflow + +### 1. Clarify the Ask + +1. Restate the goal in one or two sentences and identify the **type** of change: new feature, extension of an existing feature, bug fix, or refactor +2. List any **ambiguities** that materially change scope or design (e.g. "should this be visible to non-owners?", "does this need a new event?", "which bounded context owns this?") +3. If an ambiguity has more than one reasonable answer and picking wrong means rework, use the `ask_question` tool with concrete options instead of assuming — do this **before** exploring further, not after a plan is half-written +4. If the ambiguity is minor (naming, ordering) or has an obvious convention-driven answer, resolve it yourself by following existing patterns and note the assumption in the plan instead of asking + +### 2. Map the Request onto the Codebase + +1. **Identify the bounded context(s)** — `social`, `insights`, `moderation`, `common`, or a new one — using the Project Structure section of `AGENTS.md` and the context map in `documentation/diagrams/context.cml` / `workspace.dsl` if the boundary is unclear +2. **Find the closest existing analog** — search `development//domain` and `development//app/components` for a feature that is structurally similar (same shape of CRUD, same kind of relationship, same kind of form) to mirror rather than invent from scratch +3. **Identify every layer touched**, and only those: + + | Layer | Touched when... | Skill to use | + |-------|------------------|--------------| + | Domain (`development//domain`) | New/changed business logic, records, use cases, events | `domain-implementation` | + | Domain tests (`testing//domain`) | Any new/changed public use case | `domain-testing` | + | App (`development//app`) | New/changed UI, routes, hooks | `app-implementation` | + | Shared (`development/common`) | Cross-context event contracts, shared primitives/utilities | `domain-implementation` conventions, used read-only by other contexts | + | Deployment (`deployment/segments/.*.json`) | Any new/changed public use case or protected helper | Registration step inside `domain-implementation` | + +4. **Check bounded context boundaries** — if the feature seems to need direct access to another context's domain code, it doesn't; route it through a `development/common/domain//` event contract instead (see `domain-implementation`'s Step 6) +5. **Trace dependencies** — note which shared services the feature touches (Keycloak, MongoDB, SeaweedFS, Kafka) and which existing use cases/components it will call or extend, so the plan can sequence "build the thing it depends on" before "build the thing" + +### 3. Decompose into Steps + +Break the work into an ordered, numbered list of concrete steps, each scoped to a single file or tightly-related group of files. Order matters — downstream layers depend on upstream ones: + +1. Domain model/record changes (`definitions.ts`) — if the shape of data is changing +2. Domain use case(s) — one step per use case, inner-to-outer (helpers like `_create`/`_toModel` before the public use case that composes them) +3. Event contract (if a new cross-context event is needed) — defined in `development/common/domain//` before any context publishes/subscribes to it +4. Segment registration — add the new public use case (and any newly extracted protected helper) to the correct `deployment/segments/.*.json` +5. Domain tests — one `.spec.ts` per new/changed public use case, covering happy path, error cases, and ownership/authorization +6. App layer — hooks first (data fetching/mutation), then components, then routes, then barrel (`index.ts`) exports +7. App tests, if introduced for the touched area +8. Manual verification — `npm run lint` and `npm run test` for every affected workspace + +For a small bug fix or single-use-case addition, this list collapses to 2-4 steps; don't pad it artificially. For a multi-context feature, group steps under a subheading per bounded context. + +### 4. Define Acceptance Criteria + +For each major capability in the plan, write a short, checkable acceptance criterion (what should be true when it's done — not how). Reuse the relevant implementation skill's checklist as the baseline instead of restating its contents: + +- Domain work is "done" when `domain-implementation`'s checklist passes +- Tests are "done" when `domain-testing`'s checklist passes +- UI work is "done" when `app-implementation`'s checklist passes +- The whole change is "done" when `code-review`'s checklist passes + +### 5. Surface Risks and Open Questions + +Call out explicitly, rather than glossing over: + +- **Breaking changes** — renamed/removed fields on a `Record` or domain model that existing callers rely on +- **Event compensation** — any new state-changing use case that publishes an event must roll back on publish failure; flag if this adds a new rollback path +- **Migration needs** — new required fields on an existing `Record` type need either a default, a migration step, or an optional (`?`) marker +- **Scope creep candidates** — adjacent improvements that are tempting but not part of this request; list them as "out of scope" rather than silently doing or silently dropping them + +### 6. Present the Plan + +Present the plan using the template below. In **plan mode**, this is the full deliverable — stop here and wait for approval or answers to open questions; do not start editing files. In **act/yolo mode**, present a condensed version (steps + acceptance criteria) inline and proceed directly into execution using the matching implementation skills. + +## Plan Document Template + +```markdown +## Goal + + +## Context +- Bounded context(s): +- Closest existing analog: +- Layers touched: + +## Assumptions / Resolved Ambiguities +- + +## Open Questions +- + +## Steps +1. — +2. ... + +## Acceptance Criteria +- + +## Risks / Out of Scope +- +``` + +## Checklist + +Before presenting a plan as ready, verify: + +- [ ] The request's ambiguities were either resolved via `ask_question` (when consequential) or stated as explicit assumptions (when minor) +- [ ] Every bounded context the plan touches is named, and no step reaches across contexts except through a `development/common/domain//` contract +- [ ] Every step maps to exactly one implementation skill (`domain-implementation`, `app-implementation`, `domain-testing`) and is ordered so dependencies come first +- [ ] Segment registration (`deployment/segments/.*.json`) is called out as a step whenever a new public use case or protected helper is introduced +- [ ] Test coverage (domain `.spec.ts`, and app tests if applicable) is an explicit step, not an afterthought +- [ ] Acceptance criteria are checkable and reuse the implementation skills' own checklists rather than re-describing them +- [ ] Risks (breaking changes, event-publish compensation, migrations) and explicitly out-of-scope adjacent work are called out +- [ ] In plan mode, no files were edited and no state-changing commands were run while producing the plan + +## Common Pitfalls + +1. **Planning in isolation from the codebase** — writing steps from memory instead of first finding the closest existing analog leads to plans that fight the project's conventions (dot-notation features, Record/Domain Model split, barrel exports). +2. **Skipping segment registration** — a plan that adds a use case but forgets the `deployment/segments/*.json` step produces code that compiles and passes local tests but isn't callable. +3. **Under-specifying tests** — "add tests" is not a step; name the spec file path and the scenarios (happy path, error, ownership) it must cover. +4. **Asking too many or too few questions** — batch genuinely blocking ambiguities into one `ask_question` call with concrete options; don't ask about things the codebase's own conventions already answer. +5. **Conflating plan mode with analysis paralysis** — a plan should be proportional to the task; a one-file bug fix doesn't need the full template, just a short restatement and a 2-3 step list. +6. **Ignoring bounded context boundaries in the plan** — a step that says "import from `social` domain into `moderation`" is a design smell the plan should catch and reroute through an event contract, not something to defer to code review. +7. **Treating the plan as a scope guarantee** — if new information discovered mid-implementation invalidates the plan (e.g. the "closest analog" turns out not to fit), revise and re-present it rather than silently diverging. + +## References + +- [Project AGENTS.md](../../../AGENTS.md) — Full project conventions, structure, and setup +- [`.agents/skills/domain-implementation/SKILL.md`](../domain-implementation/SKILL.md) — Domain use-case implementation, consumed by plan steps for backend work +- [`.agents/skills/domain-testing/SKILL.md`](../domain-testing/SKILL.md) — Domain integration test conventions, consumed by plan steps for test coverage +- [`.agents/skills/app-implementation/SKILL.md`](../app-implementation/SKILL.md) — UI feature implementation, consumed by plan steps for frontend work +- [`.agents/skills/code-review/SKILL.md`](../code-review/SKILL.md) — Cross-cutting checklist used to validate the plan's acceptance criteria +- [`documentation/diagrams/context.cml`](../../../documentation/diagrams/context.cml) / [`workspace.dsl`](../../../documentation/diagrams/workspace.dsl) — Bounded context map for unclear ownership questions From 8e0ba6dd1f0a38986b1915f82dfec5b84641c2c0 Mon Sep 17 00:00:00 2001 From: Peter van Vliet Date: Fri, 30 Oct 2026 12:54:15 +0100 Subject: [PATCH 23/26] #532: first AI implemented issue (#405) --- deployment/segments/moderation.bff.json | 3 + deployment/segments/moderation.errors.json | 3 + deployment/segments/moderation.writes.json | 3 + deployment/services/demonstration/social.json | 3 + deployment/services/development/worker.json | 3 + deployment/services/production/bff.json | 2 +- deployment/services/production/writes.json | 2 +- development/moderation/domain/definitions.ts | 7 ++ development/moderation/domain/integrations.ts | 4 + .../domain/report/create/InvalidReport.ts | 7 ++ .../domain/report/create/createRecord.ts | 20 +++++ .../domain/report/create/definitions.ts | 10 +++ .../moderation/domain/report/create/index.ts | 19 +++++ .../domain/report/create/persist.ts | 11 +++ .../domain/report/create/validate.ts | 22 ++++++ .../moderation/domain/report/definitions.ts | 40 ++++++++++ development/moderation/domain/report/index.ts | 12 +++ .../moderation/domain/report/integrations.ts | 4 + .../common/components/ReportOption.tsx | 13 ++++ .../social/app/components/common/index.ts | 1 + .../post.report/components/Form.tsx | 30 +++++++ .../components/hooks/useReportHandler.ts | 35 +++++++++ .../app/components/post.report/index.ts | 2 + .../social/app/components/post/Details.tsx | 3 + .../social/app/components/post/Highlight.tsx | 3 + .../social/app/components/post/Report.tsx | 22 ++++++ .../social/app/components/post/Routes.tsx | 3 + .../post/components/DetailsPanel.tsx | 7 +- .../post/hooks/useConfirmPostReport.ts | 9 +++ .../components/post/hooks/useReportPost.ts | 26 +++++++ development/social/app/tsconfig.json | 3 +- development/social/app/vite.config.ts | 2 +- .../moderation/domain/report/create.spec.ts | 78 +++++++++++++++++++ testing/moderation/dummy.spec.ts | 12 --- 34 files changed, 405 insertions(+), 19 deletions(-) create mode 100644 deployment/segments/moderation.bff.json create mode 100644 deployment/segments/moderation.errors.json create mode 100644 deployment/segments/moderation.writes.json create mode 100644 development/moderation/domain/integrations.ts create mode 100644 development/moderation/domain/report/create/InvalidReport.ts create mode 100644 development/moderation/domain/report/create/createRecord.ts create mode 100644 development/moderation/domain/report/create/definitions.ts create mode 100644 development/moderation/domain/report/create/index.ts create mode 100644 development/moderation/domain/report/create/persist.ts create mode 100644 development/moderation/domain/report/create/validate.ts create mode 100644 development/moderation/domain/report/definitions.ts create mode 100644 development/moderation/domain/report/index.ts create mode 100644 development/moderation/domain/report/integrations.ts create mode 100644 development/social/app/components/common/components/ReportOption.tsx create mode 100644 development/social/app/components/post.report/components/Form.tsx create mode 100644 development/social/app/components/post.report/components/hooks/useReportHandler.ts create mode 100644 development/social/app/components/post.report/index.ts create mode 100644 development/social/app/components/post/Report.tsx create mode 100644 development/social/app/components/post/hooks/useConfirmPostReport.ts create mode 100644 development/social/app/components/post/hooks/useReportPost.ts create mode 100644 testing/moderation/domain/report/create.spec.ts delete mode 100644 testing/moderation/dummy.spec.ts diff --git a/deployment/segments/moderation.bff.json b/deployment/segments/moderation.bff.json new file mode 100644 index 00000000..8677ad04 --- /dev/null +++ b/deployment/segments/moderation.bff.json @@ -0,0 +1,3 @@ +{ + "./moderation/domain/report/create": { "default": { "access": "public" } } +} diff --git a/deployment/segments/moderation.errors.json b/deployment/segments/moderation.errors.json new file mode 100644 index 00000000..5909bbca --- /dev/null +++ b/deployment/segments/moderation.errors.json @@ -0,0 +1,3 @@ +{ + "./moderation/domain/report/create/InvalidReport": { "default": {} } +} diff --git a/deployment/segments/moderation.writes.json b/deployment/segments/moderation.writes.json new file mode 100644 index 00000000..f563016d --- /dev/null +++ b/deployment/segments/moderation.writes.json @@ -0,0 +1,3 @@ +{ + "./moderation/domain/report/create/persist": { "default": { "access": "protected" } } +} diff --git a/deployment/services/demonstration/social.json b/deployment/services/demonstration/social.json index 778d8bf2..4008a00f 100644 --- a/deployment/services/demonstration/social.json +++ b/deployment/services/demonstration/social.json @@ -28,6 +28,9 @@ "common.bff", "common.errors", "common.reads", + "moderation.bff", + "moderation.errors", + "moderation.writes", "social.bff", "social.errors", "social.notification", diff --git a/deployment/services/development/worker.json b/deployment/services/development/worker.json index 2619445c..a89c48b5 100644 --- a/deployment/services/development/worker.json +++ b/deployment/services/development/worker.json @@ -28,6 +28,9 @@ "common.bff", "common.errors", "common.reads", + "moderation.bff", + "moderation.errors", + "moderation.writes", "social.bff", "social.errors", "social.notification", diff --git a/deployment/services/production/bff.json b/deployment/services/production/bff.json index 3a83ef98..e0590ec0 100644 --- a/deployment/services/production/bff.json +++ b/deployment/services/production/bff.json @@ -20,6 +20,6 @@ { "gateway": "http://127.0.0.1:2000", "trustKey": "${JITAR_TRUST_KEY}", - "segments": ["common.bff", "common.errors", "social.bff", "social.errors"] + "segments": ["common.bff", "common.errors", "moderation.bff", "moderation.errors", "social.bff", "social.errors"] } } \ No newline at end of file diff --git a/deployment/services/production/writes.json b/deployment/services/production/writes.json index 55c5085a..d79e0642 100644 --- a/deployment/services/production/writes.json +++ b/deployment/services/production/writes.json @@ -16,6 +16,6 @@ { "gateway": "http://127.0.0.1:2000", "trustKey": "${JITAR_TRUST_KEY}", - "segments": ["social.writes"] + "segments": ["moderation.writes", "social.writes"] } } \ No newline at end of file diff --git a/development/moderation/domain/definitions.ts b/development/moderation/domain/definitions.ts index e69de29b..5a9551d7 100644 --- a/development/moderation/domain/definitions.ts +++ b/development/moderation/domain/definitions.ts @@ -0,0 +1,7 @@ + +export type BaseRecord = { + readonly id: string; +}; + +export const CONTEXT_ID = 'moderation'; + diff --git a/development/moderation/domain/integrations.ts b/development/moderation/domain/integrations.ts new file mode 100644 index 00000000..785e8da9 --- /dev/null +++ b/development/moderation/domain/integrations.ts @@ -0,0 +1,4 @@ + +import appLogger from '@comify/common/integrations/logging'; + +export const domainLogger = appLogger.for('Moderation').for('Domain'); diff --git a/development/moderation/domain/report/create/InvalidReport.ts b/development/moderation/domain/report/create/InvalidReport.ts new file mode 100644 index 00000000..85bd70aa --- /dev/null +++ b/development/moderation/domain/report/create/InvalidReport.ts @@ -0,0 +1,7 @@ + +import { ValidationError } from '@comify/common/integrations/errors'; + +export default class InvalidReport extends ValidationError +{ + +} diff --git a/development/moderation/domain/report/create/createRecord.ts b/development/moderation/domain/report/create/createRecord.ts new file mode 100644 index 00000000..e2717699 --- /dev/null +++ b/development/moderation/domain/report/create/createRecord.ts @@ -0,0 +1,20 @@ + +import { type TenantId } from '@comify/common/domain/tenant'; +import { type Identifier } from '@comify/common/primitives/identifier'; +import generateId from '@comify/common/primitives/identifier/generate'; + +import { type Reason, type Record, type Remark } from '../definitions'; + +export default function (tenantId: TenantId, reporterId: Identifier, postId: Identifier, reason: Reason, remark?: Remark): Record +{ + return { + id: generateId(), + tenantId, + postId, + reporterId, + reason, + remark, + reviewed: false, + createdAt: new Date().toISOString() + }; +} diff --git a/development/moderation/domain/report/create/definitions.ts b/development/moderation/domain/report/create/definitions.ts new file mode 100644 index 00000000..d869e982 --- /dev/null +++ b/development/moderation/domain/report/create/definitions.ts @@ -0,0 +1,10 @@ + +import { type Identifier } from '@comify/common/primitives/identifier'; + +import { type Reason, type Remark } from '../definitions'; + +export type CreateData = { + readonly postId: Identifier; + readonly reason: Reason; + readonly remark?: Remark; +}; diff --git a/development/moderation/domain/report/create/index.ts b/development/moderation/domain/report/create/index.ts new file mode 100644 index 00000000..a4082776 --- /dev/null +++ b/development/moderation/domain/report/create/index.ts @@ -0,0 +1,19 @@ + +import { type Identifier } from '@comify/common/primitives/identifier'; +import { type Requester } from '@comify/common/security'; + +import createRecord from './createRecord'; +import { type CreateData } from './definitions'; +import persist from './persist'; +import validate from './validate'; + +export default async function (requester: Requester, data: CreateData): Promise +{ + validate(data); + + const record = createRecord(requester.tenantId, requester.principalId, data.postId, data.reason, data.remark); + + return persist(record); +} + +export { default as InvalidReport } from './InvalidReport'; diff --git a/development/moderation/domain/report/create/persist.ts b/development/moderation/domain/report/create/persist.ts new file mode 100644 index 00000000..39296b39 --- /dev/null +++ b/development/moderation/domain/report/create/persist.ts @@ -0,0 +1,11 @@ + +import database from '@comify/common/integrations/database'; + +import { RECORD_TYPE, type Record } from '../definitions'; + +export default async function (record: Record): Promise +{ + const result = await database.createRecord(RECORD_TYPE, record); + + return result.recordId; +} diff --git a/development/moderation/domain/report/create/validate.ts b/development/moderation/domain/report/create/validate.ts new file mode 100644 index 00000000..399d67b0 --- /dev/null +++ b/development/moderation/domain/report/create/validate.ts @@ -0,0 +1,22 @@ + +import validator from '@comify/common/integrations/validation'; +import { identifierValidation } from '@comify/common/primitives/identifier'; + +import { reasonValidation, remarkValidation } from '../definitions'; + +import { type CreateData } from './definitions'; +import InvalidReport from './InvalidReport'; + +export default function (data: CreateData): void +{ + const result = validator.validate(data, { + postId: identifierValidation, + reason: reasonValidation, + remark: remarkValidation + }); + + if (result.invalid) + { + throw new InvalidReport(result.messages); + } +} diff --git a/development/moderation/domain/report/definitions.ts b/development/moderation/domain/report/definitions.ts new file mode 100644 index 00000000..be2624a1 --- /dev/null +++ b/development/moderation/domain/report/definitions.ts @@ -0,0 +1,40 @@ + +import { type Validation } from '@theshelf/validation'; + +import { type BaseRecord } from '../definitions'; + +export type Record = BaseRecord & { + readonly tenantId: string; + readonly postId: string; + readonly reporterId: string; + readonly reason: string; + readonly remark?: string; + readonly reviewed: boolean; + readonly createdAt: string; +}; + +export const Reasons = { + SCAM_FRAUD_OR_SPAM: 'scam-fraud-or-spam', + INAPPROPRIATE_CONTENT: 'inappropriate-content' +} as const; + +type ReasonKeys = keyof typeof Reasons; + +export type Reason = typeof Reasons[ReasonKeys]; + +export type Remark = string; + +export const RECORD_TYPE = 'report'; +export const REMARK_MAX_LENGTH = 1000; + +export const reasonValidation: Validation = { + message: 'Value is missing or not a valid reason', + required: true, + ENUM: { values: Object.values(Reasons) } +}; + +export const remarkValidation: Validation = { + message: 'Value is too long', + required: false, + STRING: { maxLength: REMARK_MAX_LENGTH } +}; diff --git a/development/moderation/domain/report/index.ts b/development/moderation/domain/report/index.ts new file mode 100644 index 00000000..1bf4119e --- /dev/null +++ b/development/moderation/domain/report/index.ts @@ -0,0 +1,12 @@ + +export +{ + RECORD_TYPE, + REMARK_MAX_LENGTH, + Reasons, + type Record, + type Reason, + type Remark +} from './definitions'; + +export { default as InvalidReport } from './create/InvalidReport'; diff --git a/development/moderation/domain/report/integrations.ts b/development/moderation/domain/report/integrations.ts new file mode 100644 index 00000000..26008a6d --- /dev/null +++ b/development/moderation/domain/report/integrations.ts @@ -0,0 +1,4 @@ + +import { domainLogger } from '../integrations'; + +export const logger = domainLogger.for('Report'); diff --git a/development/social/app/components/common/components/ReportOption.tsx b/development/social/app/components/common/components/ReportOption.tsx new file mode 100644 index 00000000..8ab051ad --- /dev/null +++ b/development/social/app/components/common/components/ReportOption.tsx @@ -0,0 +1,13 @@ + +import { ClickArea, Icon } from '@maskingtech/designsystem'; + +type Props = { + readonly onClick: () => void; +}; + +export default function ({ onClick }: Props) +{ + return + + ; +} diff --git a/development/social/app/components/common/index.ts b/development/social/app/components/common/index.ts index 7b6bdacd..312b646f 100644 --- a/development/social/app/components/common/index.ts +++ b/development/social/app/components/common/index.ts @@ -2,6 +2,7 @@ // Components export { default as RemoveOption } from './components/RemoveOption'; +export { default as ReportOption } from './components/ReportOption'; export { default as Modal } from './components/Modal'; diff --git a/development/social/app/components/post.report/components/Form.tsx b/development/social/app/components/post.report/components/Form.tsx new file mode 100644 index 00000000..f8708151 --- /dev/null +++ b/development/social/app/components/post.report/components/Form.tsx @@ -0,0 +1,30 @@ + +import { Button, Column, Panel, Row, Select, TextArea } from '@maskingtech/designsystem'; + +import useReportHandler, { type CancelHandler, type ReportHandler } from './hooks/useReportHandler'; + +type Props = { + readonly remarkLimit?: number; + readonly onReport: ReportHandler; + readonly onCancel: CancelHandler; +}; + +const REASON_OPTIONS = new Map(); +REASON_OPTIONS.set('scam-fraud-or-spam', 'Scam, fraud or spam'); +REASON_OPTIONS.set('inappropriate-content', 'Inappropriate content'); + +export default function ({ remarkLimit, onReport, onCancel }: Props) +{ + const [reasonRef, remarkRef, reporting, handleReport, handleCancel] = useReportHandler(onReport, onCancel); + + return + +