From 403b9ce1994f050b7ba734dfecb33511dc762ac0 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 19 Sep 2025 21:29:17 +0300 Subject: [PATCH 1/4] Remove node.js 21 and 23 from CI, update engines/node --- .github/workflows/test.yml | 2 -- package-lock.json | 2 +- package.json | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 68b464b0..d085c933 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -8,9 +8,7 @@ jobs: node: - 18 - 20 - - 21 - 22 - - 23 - 24 os: - ubuntu-latest diff --git a/package-lock.json b/package-lock.json index 21a725a3..5a6867d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,7 @@ "typescript": "^5.8.3" }, "engines": { - "node": "18 || 20 || 21 || 22 || 23 || 24" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { diff --git a/package.json b/package.json index 770faa2c..ff7ff286 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "db": "metasql c" }, "engines": { - "node": "18 || 20 || 21 || 22 || 23 || 24" + "node": ">=18" }, "devDependencies": { "@types/node": "^22.15.30", From ae93d022dd97960659d7f475ba3e6188b0a7d022 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Fri, 19 Sep 2025 22:02:42 +0300 Subject: [PATCH 2/4] Update dependencies --- package-lock.json | 437 ++++++++++++++++++++++------------------------ package.json | 20 +-- 2 files changed, 223 insertions(+), 234 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5a6867d0..c68d9d51 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,28 +9,28 @@ "version": "3.0.0", "license": "MIT", "dependencies": { - "impress": "^3.0.18", - "metasql": "^3.0.0-alpha.3", - "pg": "^8.16.0", - "redis": "^5.5.6" + "impress": "^3.1.0", + "metasql": "^3.0.0-alpha.4", + "pg": "^8.16.3", + "redis": "^5.8.2" }, "devDependencies": { - "@types/node": "^22.15.30", - "@types/pg": "^8.15.4", + "@types/node": "^24.5.2", + "@types/pg": "^8.15.5", "@types/ws": "^8.18.1", - "eslint": "^9.28.0", - "eslint-config-metarhia": "^9.1.2", - "prettier": "^3.3.3", - "typescript": "^5.8.3" + "eslint": "^9.36.0", + "eslint-config-metarhia": "^9.1.3", + "prettier": "^3.6.2", + "typescript": "^5.9.2" }, "engines": { "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", - "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", "dev": true, "license": "MIT", "dependencies": { @@ -70,9 +70,9 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz", - "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==", + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -85,9 +85,9 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.2.tgz", - "integrity": "sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz", + "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -95,9 +95,9 @@ } }, "node_modules/@eslint/core": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", - "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", + "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -132,9 +132,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.28.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.28.0.tgz", - "integrity": "sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg==", + "version": "9.36.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.36.0.tgz", + "integrity": "sha512-uhCbYtYynH30iZErszX78U+nR3pJU3RHGQ57NXy5QupD4SBVwDeU8TNBy+MjMngc1UyIW9noKqsRqfjQTBU2dw==", "dev": true, "license": "MIT", "engines": { @@ -155,13 +155,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz", - "integrity": "sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", + "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.14.0", + "@eslint/core": "^0.15.2", "levn": "^0.4.1" }, "engines": { @@ -179,33 +179,19 @@ } }, "node_modules/@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" + "@humanwhocodes/retry": "^0.4.0" }, "engines": { "node": ">=18.18.0" } }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -235,9 +221,9 @@ } }, "node_modules/@pkgr/core": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.7.tgz", - "integrity": "sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==", + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", "dev": true, "license": "MIT", "engines": { @@ -248,21 +234,21 @@ } }, "node_modules/@redis/bloom": { - "version": "5.5.6", - "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-5.5.6.tgz", - "integrity": "sha512-bNR3mxkwtfuCxNOzfV8B3R5zA1LiN57EH6zK4jVBIgzMzliNuReZXBFGnXvsi80/SYohajn78YdpYI+XNpqL+A==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-5.8.2.tgz", + "integrity": "sha512-855DR0ChetZLarblio5eM0yLwxA9Dqq50t8StXKp5bAtLT0G+rZ+eRzzqxl37sPqQKjUudSYypz55o6nNhbz0A==", "license": "MIT", "engines": { "node": ">= 18" }, "peerDependencies": { - "@redis/client": "^5.5.6" + "@redis/client": "^5.8.2" } }, "node_modules/@redis/client": { - "version": "5.5.6", - "resolved": "https://registry.npmjs.org/@redis/client/-/client-5.5.6.tgz", - "integrity": "sha512-M3Svdwt6oSfyfQdqEr0L2HOJH2vK7GgCFx1NfAQvpWAT4+ljoT1L5S5cKT3dA9NJrxrOPDkdoTPWJnIrGCOcmw==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-5.8.2.tgz", + "integrity": "sha512-WtMScno3+eBpTac1Uav2zugXEoXqaU23YznwvFgkPwBQVwEHTDgOG7uEAObtZ/Nyn8SmAMbqkEubJaMOvnqdsQ==", "license": "MIT", "dependencies": { "cluster-key-slot": "1.1.2" @@ -272,45 +258,45 @@ } }, "node_modules/@redis/json": { - "version": "5.5.6", - "resolved": "https://registry.npmjs.org/@redis/json/-/json-5.5.6.tgz", - "integrity": "sha512-AIsoe3SsGQagqAmSQHaqxEinm5oCWr7zxPWL90kKaEdLJ+zw8KBznf2i9oK0WUFP5pFssSQUXqnscQKe2amfDQ==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/@redis/json/-/json-5.8.2.tgz", + "integrity": "sha512-uxpVfas3I0LccBX9rIfDgJ0dBrUa3+0Gc8sEwmQQH0vHi7C1Rx1Qn8Nv1QWz5bohoeIXMICFZRcyDONvum2l/w==", "license": "MIT", "engines": { "node": ">= 18" }, "peerDependencies": { - "@redis/client": "^5.5.6" + "@redis/client": "^5.8.2" } }, "node_modules/@redis/search": { - "version": "5.5.6", - "resolved": "https://registry.npmjs.org/@redis/search/-/search-5.5.6.tgz", - "integrity": "sha512-JSqasYqO0mVcHL7oxvbySRBBZYRYhFl3W7f0Da7BW8M/r0Z9wCiVrdjnN4/mKBpWZkoJT/iuisLUdPGhpKxBew==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/@redis/search/-/search-5.8.2.tgz", + "integrity": "sha512-cNv7HlgayavCBXqPXgaS97DRPVWFznuzsAmmuemi2TMCx5scwLiP50TeZvUS06h/MG96YNPe6A0Zt57yayfxwA==", "license": "MIT", "engines": { "node": ">= 18" }, "peerDependencies": { - "@redis/client": "^5.5.6" + "@redis/client": "^5.8.2" } }, "node_modules/@redis/time-series": { - "version": "5.5.6", - "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-5.5.6.tgz", - "integrity": "sha512-jkpcgq3NOI3TX7xEAJ3JgesJTxAx7k0m6lNxNsYdEM8KOl+xj7GaB/0CbLkoricZDmFSEAz7ClA1iK9XkGHf+Q==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-5.8.2.tgz", + "integrity": "sha512-g2NlHM07fK8H4k+613NBsk3y70R2JIM2dPMSkhIjl2Z17SYvaYKdusz85d7VYOrZBWtDrHV/WD2E3vGu+zni8A==", "license": "MIT", "engines": { "node": ">= 18" }, "peerDependencies": { - "@redis/client": "^5.5.6" + "@redis/client": "^5.8.2" } }, "node_modules/@types/estree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true, "license": "MIT" }, @@ -322,19 +308,19 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "version": "24.5.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.5.2.tgz", + "integrity": "sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.21.0" + "undici-types": "~7.12.0" } }, "node_modules/@types/pg": { - "version": "8.15.4", - "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.15.4.tgz", - "integrity": "sha512-I6UNVBAoYbvuWkkU3oosC8yxqH21f4/Jc4DK71JLG3dT2mdlGe1z+ep/LQGXaKaOgcvUrsQoPRqfgtMcvZiJhg==", + "version": "8.15.5", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.15.5.tgz", + "integrity": "sha512-LF7lF6zWEKxuT3/OR8wAZGzkg4ENGXFNyiV/JeOt9z5B+0ZVwbql9McqX5c/WStFq1GaGso7H1AzP/qSzmlCKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -354,9 +340,9 @@ } }, "node_modules/acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", "bin": { @@ -424,9 +410,9 @@ "license": "MIT" }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -498,12 +484,12 @@ "license": "MIT" }, "node_modules/concolor": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/concolor/-/concolor-1.1.2.tgz", - "integrity": "sha512-LBt7Il/JkGolv5uVRX+YgOp1kmPsJvw/i232hvXzEjGxYqWC3GqL2+txYOv8ArPBnBg7s0/ZIb+1UTUXKajcxw==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/concolor/-/concolor-1.1.3.tgz", + "integrity": "sha512-jr+xdyBVfxtOS1oyuwmZiAnj99g6KEv2HkO4MKpZkuzlPVDZA6Gr71dJiTcL8dZdHYCwBLzLsp4solYXK6d7Tw==", "license": "MIT", "engines": { - "node": "18 || 20 || 21 || 22 || 23 || 24" + "node": ">=18" }, "funding": { "type": "patreon", @@ -526,9 +512,9 @@ } }, "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { @@ -564,20 +550,20 @@ } }, "node_modules/eslint": { - "version": "9.28.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.28.0.tgz", - "integrity": "sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ==", + "version": "9.36.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.36.0.tgz", + "integrity": "sha512-hB4FIzXovouYzwzECDcUkJ4OcfOEkXTv2zRY6B9bkwjx/cprAq0uvm1nl7zvQ0/TsUk0zQiN4uPfJpB9m+rPMQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.20.0", - "@eslint/config-helpers": "^0.2.1", - "@eslint/core": "^0.14.0", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.3.1", + "@eslint/core": "^0.15.2", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.28.0", - "@eslint/plugin-kit": "^0.3.1", + "@eslint/js": "9.36.0", + "@eslint/plugin-kit": "^0.3.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", @@ -588,9 +574,9 @@ "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.3.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -625,16 +611,16 @@ } }, "node_modules/eslint-config-metarhia": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/eslint-config-metarhia/-/eslint-config-metarhia-9.1.2.tgz", - "integrity": "sha512-KSt3eYbM4sII4+v0Tb1D1krGAtKSnfZ/2ndPNdDEdlSjT19ga/mZ7Y5q6E9HHkFKmmlRA/1XYw0ZkIeAj4rMEw==", + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/eslint-config-metarhia/-/eslint-config-metarhia-9.1.3.tgz", + "integrity": "sha512-do2FegACEZDSR4Hai6A5sPL3g1NSoj5dKkafXjKl2HNiuzbawRezsnOXpd2DSu0tnux4AbWl/pLRI+jL/DHp6Q==", "dev": true, "license": "MIT", "dependencies": { - "eslint": "^9.28.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-prettier": "^5.4.1", - "prettier": "^3.5.3" + "eslint": "^9.34.0", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-prettier": "^5.5.4", + "prettier": "^3.6.2" }, "engines": { "node": "18 || 20 || 21 || 22 || 23 || 24" @@ -645,22 +631,25 @@ } }, "node_modules/eslint-config-prettier": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, "peerDependencies": { "eslint": ">=7.0.0" } }, "node_modules/eslint-plugin-prettier": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.4.1.tgz", - "integrity": "sha512-9dF+KuU/Ilkq27A8idRP7N2DH8iUR6qXcjF3FR2wETY21PZdBrIjwCau8oboyGj9b7etWmTGEeM8e7oOed6ZWg==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", + "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", "dev": true, "license": "MIT", "dependencies": { @@ -689,9 +678,9 @@ } }, "node_modules/eslint-scope": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", - "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -706,9 +695,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -719,15 +708,15 @@ } }, "node_modules/espree": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", - "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.14.0", + "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.0" + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -925,21 +914,21 @@ } }, "node_modules/impress": { - "version": "3.0.18", - "resolved": "https://registry.npmjs.org/impress/-/impress-3.0.18.tgz", - "integrity": "sha512-FhihyXlKRzz9MmsaK9ch8Fnk3oQqDk4FGCz1GlITajkC6hW9Bo3KWaDesz6qq40rgxuZoBvmt5ZhCyDm6tbr9w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/impress/-/impress-3.1.0.tgz", + "integrity": "sha512-7XvdGZQ+FT04DYSbbvpmggAWCZnDKTSYl7PIlZGeULOV4PuTfNh8S8YXqBpVAMCR0dNpWdFg0PrZvuwqtVVRMg==", "license": "MIT", "dependencies": { - "metacom": "^3.2.5", - "metaconfiguration": "^3.0.2", - "metalog": "^3.1.16", + "metacom": "^3.2.6", + "metaconfiguration": "^3.0.3", + "metalog": "^3.1.17", "metaschema": "^2.2.2", - "metautil": "^5.2.5", - "metavm": "^1.4.4", - "metawatch": "^1.2.3" + "metautil": "^5.4.0", + "metavm": "^1.4.5", + "metawatch": "^1.2.4" }, "engines": { - "node": "^18.15 || 20 || 21 || 22 || 23 || 24" + "node": ">=18.15" }, "funding": { "type": "patreon", @@ -1068,16 +1057,16 @@ "license": "MIT" }, "node_modules/metacom": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/metacom/-/metacom-3.2.5.tgz", - "integrity": "sha512-NxLLPK/wY3vCmlsHvhMmeOeb2aq3RYJO+dCQHOodizWJ69eTX9d2c9mIgmvcDLVflIjrPtTSmLU6RfIGbghPIQ==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/metacom/-/metacom-3.2.6.tgz", + "integrity": "sha512-FH95J0PHv1AmvP1PfeALHFkWsWRRP2vv8FeAvBE51jf97Mq1smy0Of+JkRpmTg0azhMBiW1sa2NVXJdtS4/JSw==", "license": "MIT", "dependencies": { - "metautil": "5.2.5", - "ws": "^8.18.2" + "metautil": "^5.4.0", + "ws": "^8.18.3" }, "engines": { - "node": "18 || 20 || 21 || 22 || 23 || 24" + "node": ">=18" }, "funding": { "type": "patreon", @@ -1085,15 +1074,15 @@ } }, "node_modules/metaconfiguration": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/metaconfiguration/-/metaconfiguration-3.0.2.tgz", - "integrity": "sha512-Epcb6twjgiHEiEMKyMVpQDm3IYTvpcVX7DfJb2ZaIrpn/v6fLDsS1BMEuxHkk6rVoR2dEYS8rEbD9qLus9lzTA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/metaconfiguration/-/metaconfiguration-3.0.3.tgz", + "integrity": "sha512-qp9KEe0PTEhXjVprHgCZDBPcBwPnD6wB5+DXofAOaBxkb0B7Z9SbP6kURHPsr/T+NH+QsOu3WvsUKuu7eRKgig==", "license": "MIT", "dependencies": { - "metavm": "^1.4.4" + "metavm": "^1.4.5" }, "engines": { - "node": "18 || 20 || 21 || 22 || 23 || 24" + "node": ">=18" }, "funding": { "type": "patreon", @@ -1101,15 +1090,15 @@ } }, "node_modules/metadomain": { - "version": "2.0.0-alpha.2", - "resolved": "https://registry.npmjs.org/metadomain/-/metadomain-2.0.0-alpha.2.tgz", - "integrity": "sha512-J7bws0HFsOTCttiPfIFmY9hAPBBX4dZFgxMsDcL8ZS53nsh/7OYvpWR7z33kW0nvjIfsr4WvjVrdb6CMSWvFCw==", + "version": "2.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/metadomain/-/metadomain-2.0.0-alpha.3.tgz", + "integrity": "sha512-OUw6ufbo62f2e2DG8DegB5/PHKUOxxbnpXlquLIShqzFbzFYb04oqlLUgYWZKtqjtqj00JX509CnwT+CbSunHg==", "license": "MIT", "dependencies": { - "metaschema": "^2.2.1" + "metaschema": "^2.2.2" }, "engines": { - "node": "18 || 20 || 21 || 22" + "node": "18 || 20 || 21 || 22 || 23 || 24" }, "funding": { "type": "patreon", @@ -1117,16 +1106,16 @@ } }, "node_modules/metalog": { - "version": "3.1.16", - "resolved": "https://registry.npmjs.org/metalog/-/metalog-3.1.16.tgz", - "integrity": "sha512-GU0xlr3w+AIQ/vKJ9s8lP3u43NyMhcueqr6Ewh50Tnp3crWolSYAqKu8DXGrhNkWD78DUaQjIVMjngP8FwqqJg==", + "version": "3.1.17", + "resolved": "https://registry.npmjs.org/metalog/-/metalog-3.1.17.tgz", + "integrity": "sha512-6k0RYQrQEiPLnC9x/8ta70SKZnN5pSNCJH7hePV7ada/+t3BY9b5m7b/hTG/gc1EABFKOQg7BQ/cMX4MSxenQQ==", "license": "MIT", "dependencies": { - "concolor": "^1.1.2", - "metautil": "^5.2.5" + "concolor": "^1.1.3", + "metautil": "^5.3.0" }, "engines": { - "node": "18 || 20 || 21 || 22 || 23 || 24" + "node": ">=18" }, "funding": { "type": "patreon", @@ -1151,30 +1140,30 @@ } }, "node_modules/metasql": { - "version": "3.0.0-alpha.3", - "resolved": "https://registry.npmjs.org/metasql/-/metasql-3.0.0-alpha.3.tgz", - "integrity": "sha512-FsSXvYNPVtsXIs+fNVW3j/UkHpW8DLwq/BGJ/oSb4shx3znJD2riErUpBj1Rhmx1zLcATBsma5ah1OYFg6vtUA==", + "version": "3.0.0-alpha.4", + "resolved": "https://registry.npmjs.org/metasql/-/metasql-3.0.0-alpha.4.tgz", + "integrity": "sha512-vrzUzUBKJdOmV2gVcK0EqeuWBlV3d3AzY6nzJQW18tgaFGqcjZImLxZnmnAcV+w/lAQc7RwLJEAH+Dr6LsNMFw==", "license": "MIT", "dependencies": { - "metadomain": "^2.0.0-alpha.1", - "metaschema": "^2.2.0", - "metavm": "^1.4.1", - "pg": "^8.11.3" + "metadomain": "^2.0.0-alpha.3", + "metaschema": "^2.2.2", + "metavm": "^1.4.5", + "pg": "^8.16.3" }, "bin": { "metasql": "bin/cli.js" }, "engines": { - "node": "18 || 20 || 21 || 22" + "node": ">=18" } }, "node_modules/metautil": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/metautil/-/metautil-5.2.5.tgz", - "integrity": "sha512-ZVLbxo0BK0AZRTGJGd7wf6PsnT3MIGBDejlgYOrgHw5cL3Dz2UrMQjUPTtS1aMN9eStTBKeVkvhbPAM9613dfg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/metautil/-/metautil-5.4.0.tgz", + "integrity": "sha512-xs5gtY4yL1bGAnyTdkz7cikYb1BV4RLeSfSJCs8iXkUJybgF2hNJTTW+TirnjW4HXKXhX5duTWdxegB5P64NZA==", "license": "MIT", "engines": { - "node": "18 || 20 || 21 || 22 || 23 || 24" + "node": ">=18" }, "funding": { "type": "patreon", @@ -1182,12 +1171,12 @@ } }, "node_modules/metavm": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/metavm/-/metavm-1.4.4.tgz", - "integrity": "sha512-NRBnmYFWSnpiWlJPYskuxhMacftPHswoZKqqXG2nHO9rGQhO7f89b5PBSnVokNvNcwvIWGbPFSSJBVLD3oV12A==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/metavm/-/metavm-1.4.5.tgz", + "integrity": "sha512-ukgNC1YFdKQNNoZIep1KtQIOwgd0WuEsUMmQ5HoJZlhxaiPE2MXB9KSJVEjoN9hFfTsDdAS0fmlP1IOsg50LVQ==", "license": "MIT", "engines": { - "node": "18 || 19 || 20 || 21 || 22 || 23 || 24" + "node": ">=18" }, "funding": { "type": "patreon", @@ -1195,12 +1184,12 @@ } }, "node_modules/metawatch": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/metawatch/-/metawatch-1.2.3.tgz", - "integrity": "sha512-IO9Ir/D0Lv0GcoBSpAa+X/DwUJ9RaXTky8+z2Jhd9MLrC8xkFQU3qUgGZxS2AdMFjmsL1DE7TMKlfd5zB39vig==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/metawatch/-/metawatch-1.2.4.tgz", + "integrity": "sha512-ciq1UX5UGBlSQt25RLrdRW9UBWe0aG3ouS7kMnCwGAgseI+/RBV0BjnK540gxjtGv2PsH5QrCG17FV0heT5t3g==", "license": "MIT", "engines": { - "node": "18 || 20 || 21 || 22 || 23 || 24" + "node": ">=18" }, "funding": { "type": "patreon", @@ -1318,22 +1307,22 @@ } }, "node_modules/pg": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.16.0.tgz", - "integrity": "sha512-7SKfdvP8CTNXjMUzfcVTaI+TDzBEeaUnVwiVGZQD1Hh33Kpev7liQba9uLd4CfN8r9mCVsD0JIpq03+Unpz+kg==", + "version": "8.16.3", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.16.3.tgz", + "integrity": "sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==", "license": "MIT", "dependencies": { - "pg-connection-string": "^2.9.0", - "pg-pool": "^3.10.0", - "pg-protocol": "^1.10.0", + "pg-connection-string": "^2.9.1", + "pg-pool": "^3.10.1", + "pg-protocol": "^1.10.3", "pg-types": "2.2.0", "pgpass": "1.0.5" }, "engines": { - "node": ">= 8.0.0" + "node": ">= 16.0.0" }, "optionalDependencies": { - "pg-cloudflare": "^1.2.5" + "pg-cloudflare": "^1.2.7" }, "peerDependencies": { "pg-native": ">=3.0.1" @@ -1345,16 +1334,16 @@ } }, "node_modules/pg-cloudflare": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.2.5.tgz", - "integrity": "sha512-OOX22Vt0vOSRrdoUPKJ8Wi2OpE/o/h9T8X1s4qSkCedbNah9ei2W2765be8iMVxQUsvgT7zIAT2eIa9fs5+vtg==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.2.7.tgz", + "integrity": "sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==", "license": "MIT", "optional": true }, "node_modules/pg-connection-string": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.9.0.tgz", - "integrity": "sha512-P2DEBKuvh5RClafLngkAuGe9OUlFV7ebu8w1kmaaOgPcpJd1RIFh7otETfI6hAR8YupOLFTY7nuvvIn7PLciUQ==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.9.1.tgz", + "integrity": "sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==", "license": "MIT" }, "node_modules/pg-int8": { @@ -1367,18 +1356,18 @@ } }, "node_modules/pg-pool": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.10.0.tgz", - "integrity": "sha512-DzZ26On4sQ0KmqnO34muPcmKbhrjmyiO4lCCR0VwEd7MjmiKf5NTg/6+apUEu0NF7ESa37CGzFxH513CoUmWnA==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.10.1.tgz", + "integrity": "sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==", "license": "MIT", "peerDependencies": { "pg": ">=8.0" } }, "node_modules/pg-protocol": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.0.tgz", - "integrity": "sha512-IpdytjudNuLv8nhlHs/UrVBhU0e78J0oIS/0AVdTbWxSOkFUVdsHC/NrorO6nXsQNDTT1kzDSOMJubBQviX18Q==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.3.tgz", + "integrity": "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==", "license": "MIT" }, "node_modules/pg-types": { @@ -1456,9 +1445,9 @@ } }, "node_modules/prettier": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", - "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "dev": true, "license": "MIT", "bin": { @@ -1495,16 +1484,16 @@ } }, "node_modules/redis": { - "version": "5.5.6", - "resolved": "https://registry.npmjs.org/redis/-/redis-5.5.6.tgz", - "integrity": "sha512-hbpqBfcuhWHOS9YLNcXcJ4akNr7HFX61Dq3JuFZ9S7uU7C7kvnzuH2PDIXOP62A3eevvACoG8UacuXP3N07xdg==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/redis/-/redis-5.8.2.tgz", + "integrity": "sha512-31vunZj07++Y1vcFGcnNWEf5jPoTkGARgfWI4+Tk55vdwHxhAvug8VEtW7Cx+/h47NuJTEg/JL77zAwC6E0OeA==", "license": "MIT", "dependencies": { - "@redis/bloom": "5.5.6", - "@redis/client": "5.5.6", - "@redis/json": "5.5.6", - "@redis/search": "5.5.6", - "@redis/time-series": "5.5.6" + "@redis/bloom": "5.8.2", + "@redis/client": "5.8.2", + "@redis/json": "5.8.2", + "@redis/search": "5.8.2", + "@redis/time-series": "5.8.2" }, "engines": { "node": ">= 18" @@ -1579,13 +1568,13 @@ } }, "node_modules/synckit": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.8.tgz", - "integrity": "sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", + "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", "dev": true, "license": "MIT", "dependencies": { - "@pkgr/core": "^0.2.4" + "@pkgr/core": "^0.2.9" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -1608,9 +1597,9 @@ } }, "node_modules/typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", + "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", "dev": true, "license": "Apache-2.0", "bin": { @@ -1622,9 +1611,9 @@ } }, "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.12.0.tgz", + "integrity": "sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ==", "dev": true, "license": "MIT" }, @@ -1665,9 +1654,9 @@ } }, "node_modules/ws": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", - "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "license": "MIT", "engines": { "node": ">=10.0.0" diff --git a/package.json b/package.json index ff7ff286..ea59ae02 100644 --- a/package.json +++ b/package.json @@ -54,18 +54,18 @@ "node": ">=18" }, "devDependencies": { - "@types/node": "^22.15.30", - "@types/pg": "^8.15.4", + "@types/node": "^24.5.2", + "@types/pg": "^8.15.5", "@types/ws": "^8.18.1", - "eslint": "^9.28.0", - "eslint-config-metarhia": "^9.1.2", - "prettier": "^3.3.3", - "typescript": "^5.8.3" + "eslint": "^9.36.0", + "eslint-config-metarhia": "^9.1.3", + "prettier": "^3.6.2", + "typescript": "^5.9.2" }, "dependencies": { - "impress": "^3.0.18", - "metasql": "^3.0.0-alpha.3", - "pg": "^8.16.0", - "redis": "^5.5.6" + "impress": "^3.1.0", + "metasql": "^3.0.0-alpha.4", + "pg": "^8.16.3", + "redis": "^5.8.2" } } From b3e72a97e63164673e44bacea528c076612bf95d Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 20 Sep 2025 13:45:42 +0300 Subject: [PATCH 3/4] Update docker setup --- Dockerfile | 19 ++++++++++----- README.md | 60 +++++++++++++++++++++++++++++++++++++++++++--- docker-compose.yml | 25 +++++++++---------- 3 files changed, 81 insertions(+), 23 deletions(-) diff --git a/Dockerfile b/Dockerfile index ed687eb1..a5993210 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,16 @@ -FROM node:20-alpine +FROM node:18-alpine + WORKDIR /usr/server -COPY package*.json . -RUN npm ci --only=production + +COPY package*.json ./ + +RUN npm ci --only=production && npm cache clean --force + COPY . . -EXPOSE 8000 -EXPOSE 8001 -EXPOSE 8002 + +EXPOSE 8000 8001 8002 + +HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ + CMD node -e "require('http').get('http://localhost:8000/health', (res) => { process.exit(res.statusCode === 200 ? 0 : 1) }).on('error', () => process.exit(1))" + CMD ["node", "server.js"] diff --git a/README.md b/README.md index eee3dccf..65ef4ad7 100644 --- a/README.md +++ b/README.md @@ -52,15 +52,69 @@ let's start with ## Usage -- You need node.js 18.x or 20.x +- You need Node.js 18.x or higher (24.x preferred) - Fork and clone this repository (optionally subscribe to repo changes) - Run `npm i` to install dependencies and generate RSA certificate - Remove unneeded dependencies if your project doesn't require them - Add your license to `LICENSE` file but don't remove starter kit license - Start your project modifying this starter kit -- If you have Docker and Docker Compose installed to run the project, use the command: `docker-compose up` + +## Docker Usage + +The easiest way to run this application is using Docker and Docker Compose: + +### Prerequisites + +- Docker and Docker Compose installed +- No need to install PostgreSQL or Redis locally +- Uses PostgreSQL 17 (latest stable) and Redis 8 + +### Quick Start + +```bash +# Start all services (API, PostgreSQL, Redis) +docker-compose up + +# Start services in background (detached mode) +docker-compose up -d + +# Stop all services +docker-compose down + +# View logs +docker-compose logs + +# View logs for specific service +docker-compose logs api-example +docker-compose logs pg-example +docker-compose logs redis-example + +# Rebuild and start services +docker-compose up --build -d +``` + +### Access Points + +- **Main Application**: http://localhost:8002/ (Metarhia Console) +- **API Endpoints**: http://localhost:8001/api/ +- **Load Balancer**: http://localhost:8000/ (redirects to 8002) + +### Service Status + +```bash +# Check running services +docker-compose ps + +# Restart a specific service +docker-compose restart api-example +``` + +## Manual Installation (Alternative) + +If you prefer to run without Docker: + - Before running server initialize the DB: - - First of all, make sure you have PostgreSQL installed (preferably 12.x to 16.x). + - First of all, make sure you have PostgreSQL installed (preferably 15.x to 17.x). - Run database initialization script: `database/setup.sh` - Run project: `node server.js` and stop with Ctrl+C - Ask questions in Telegram https://t.me/nodeua (node.js related) or diff --git a/docker-compose.yml b/docker-compose.yml index e4af98c7..572966a6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,3 @@ -version: '3' - services: api-example: build: @@ -9,39 +7,38 @@ services: environment: - DB_HOST=pg-example - REDIS_HOST=redis-example - volumes: - - ./application:/usr/server/application depends_on: - pg-example - redis-example ports: - - 127.0.0.1:8000:8000 - - 127.0.0.1:8001:8001 - - 127.0.0.1:8002:8002 + - "127.0.0.1:8000:8000" + - "127.0.0.1:8001:8001" + - "127.0.0.1:8002:8002" restart: always pg-example: - image: postgres:16.1-alpine3.19 + image: postgres:17-alpine container_name: pg-example environment: - POSTGRES_USER=marcus - POSTGRES_PASSWORD=marcus - POSTGRES_DB=application volumes: - - ./data/postgres/:/var/lib/postgresql/data - - ./database/structure.sql:/docker-entrypoint-initdb.d/1.sql - - ./database/data.sql:/docker-entrypoint-initdb.d/2.sql + - postgres_data:/var/lib/postgresql/data ports: - - 127.0.0.1:5432:5432 + - "127.0.0.1:5432:5432" restart: always redis-example: - image: redis:7-alpine + image: redis:8-alpine container_name: redis-example ports: - - 127.0.0.1:6379:6379 + - "127.0.0.1:6379:6379" restart: always +volumes: + postgres_data: + networks: default: name: api-example-network From e6ef6b535b9339a9a480884977dc8f4f6d938451 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 20 Sep 2025 16:05:06 +0300 Subject: [PATCH 4/4] Version 3.1.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index c68d9d51..9308d505 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "metarhia", - "version": "3.0.0", + "version": "3.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "metarhia", - "version": "3.0.0", + "version": "3.1.0", "license": "MIT", "dependencies": { "impress": "^3.1.0", diff --git a/package.json b/package.json index ea59ae02..5567c89b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "metarhia", - "version": "3.0.0", + "version": "3.1.0", "author": "Timur Shemsedinov ", "description": "Metarhia Application Example", "license": "MIT",