api: add bullmq
Parents:
3dd5c9c2 file(s) changed
- api/package-lock.json +256 -4
- api/package.json +1 -0
api/package-lock.json
@@ -17,6 +17,7 @@ "@types/jsonwebtoken": "^9.0.10",
17 17 "bcryptjs": "^3.0.3",
18 18 "better-sqlite3": "^12.5.0",
19 19 "body-parser": "^2.2.2",
20 + "bullmq": "^5.76.7",
20 21 "cors": "^2.8.6",
21 22 "date-fns": "^4.1.0",
22 23 "express": "^5.2.1",
@@ -592,6 +593,12 @@ "peerDependencies": {
592 593 "hono": "^4"
593 594 }
594 595 },
596 + "node_modules/@ioredis/commands": {
597 + "version": "1.5.1",
598 + "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.5.1.tgz",
599 + "integrity": "sha512-JH8ZL/ywcJyR9MmJ5BNqZllXNZQqQbnVZOqpPQqE1vHiFgAw4NHbvE0FOduNU8IX9babitBT46571OnPTT0Zcw==",
600 + "license": "MIT"
601 + },
595 602 "node_modules/@isaacs/cliui": {
596 603 "version": "8.0.2",
597 604 "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
@@ -712,6 +719,84 @@ "engines": {
712 719 "node": ">=16"
713 720 }
714 721 },
722 + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": {
723 + "version": "3.0.3",
724 + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz",
725 + "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==",
726 + "cpu": [
727 + "arm64"
728 + ],
729 + "license": "MIT",
730 + "optional": true,
731 + "os": [
732 + "darwin"
733 + ]
734 + },
735 + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": {
736 + "version": "3.0.3",
737 + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz",
738 + "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==",
739 + "cpu": [
740 + "x64"
741 + ],
742 + "license": "MIT",
743 + "optional": true,
744 + "os": [
745 + "darwin"
746 + ]
747 + },
748 + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": {
749 + "version": "3.0.3",
750 + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz",
751 + "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==",
752 + "cpu": [
753 + "arm"
754 + ],
755 + "license": "MIT",
756 + "optional": true,
757 + "os": [
758 + "linux"
759 + ]
760 + },
761 + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": {
762 + "version": "3.0.3",
763 + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz",
764 + "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==",
765 + "cpu": [
766 + "arm64"
767 + ],
768 + "license": "MIT",
769 + "optional": true,
770 + "os": [
771 + "linux"
772 + ]
773 + },
774 + "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": {
775 + "version": "3.0.3",
776 + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz",
777 + "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==",
778 + "cpu": [
779 + "x64"
780 + ],
781 + "license": "MIT",
782 + "optional": true,
783 + "os": [
784 + "linux"
785 + ]
786 + },
787 + "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": {
788 + "version": "3.0.3",
789 + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz",
790 + "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==",
791 + "cpu": [
792 + "x64"
793 + ],
794 + "license": "MIT",
795 + "optional": true,
796 + "os": [
797 + "win32"
798 + ]
799 + },
715 800 "node_modules/@noble/hashes": {
716 801 "version": "1.8.0",
717 802 "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
@@ -2771,6 +2856,23 @@ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
2771 2856 "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
2772 2857 "license": "BSD-3-Clause"
2773 2858 },
2859 + "node_modules/bullmq": {
2860 + "version": "5.76.7",
2861 + "resolved": "https://registry.npmjs.org/bullmq/-/bullmq-5.76.7.tgz",
2862 + "integrity": "sha512-gIvW1FlRYY+QeVe4HIgzxzty8uT9Au0NmGW2yGzGagcsgMyfz0IUtUk0gZPrl5ADXAcO31bauRJ06YwvXDzf6w==",
2863 + "license": "MIT",
2864 + "dependencies": {
2865 + "cron-parser": "4.9.0",
2866 + "ioredis": "5.10.1",
2867 + "msgpackr": "2.0.1",
2868 + "node-abort-controller": "3.1.1",
2869 + "semver": "7.8.0",
2870 + "tslib": "2.8.1"
2871 + },
2872 + "engines": {
2873 + "node": ">=12.22.0"
2874 + }
2875 + },
2774 2876 "node_modules/bytes": {
2775 2877 "version": "3.1.2",
2776 2878 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
@@ -3075,6 +3177,15 @@ "funding": {
3075 3177 "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
3076 3178 }
3077 3179 },
3180 + "node_modules/cluster-key-slot": {
3181 + "version": "1.1.2",
3182 + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz",
3183 + "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==",
3184 + "license": "Apache-2.0",
3185 + "engines": {
3186 + "node": ">=0.10.0"
3187 + }
3188 + },
3078 3189 "node_modules/code-excerpt": {
3079 3190 "version": "4.0.0",
3080 3191 "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-4.0.0.tgz",
@@ -3289,6 +3400,18 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
3289 3400 "dev": true,
3290 3401 "license": "MIT"
3291 3402 },
3403 + "node_modules/cron-parser": {
3404 + "version": "4.9.0",
3405 + "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz",
3406 + "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==",
3407 + "license": "MIT",
3408 + "dependencies": {
3409 + "luxon": "^3.2.1"
3410 + },
3411 + "engines": {
3412 + "node": ">=12.0.0"
3413 + }
3414 + },
3292 3415 "node_modules/cross-spawn": {
3293 3416 "version": "7.0.6",
3294 3417 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
@@ -3503,7 +3626,6 @@ "node_modules/denque": {
3503 3626 "version": "2.1.0",
3504 3627 "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz",
3505 3628 "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==",
3506 - "devOptional": true,
3507 3629 "license": "Apache-2.0",
3508 3630 "engines": {
3509 3631 "node": ">=0.10"
@@ -4743,6 +4865,30 @@ "dependencies": {
4743 4865 "loose-envify": "^1.0.0"
4744 4866 }
4745 4867 },
4868 + "node_modules/ioredis": {
4869 + "version": "5.10.1",
4870 + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.10.1.tgz",
4871 + "integrity": "sha512-HuEDBTI70aYdx1v6U97SbNx9F1+svQKBDo30o0b9fw055LMepzpOOd0Ccg9Q6tbqmBSJaMuY0fB7yw9/vjBYCA==",
4872 + "license": "MIT",
4873 + "dependencies": {
4874 + "@ioredis/commands": "1.5.1",
4875 + "cluster-key-slot": "^1.1.0",
4876 + "debug": "^4.3.4",
4877 + "denque": "^2.1.0",
4878 + "lodash.defaults": "^4.2.0",
4879 + "lodash.isarguments": "^3.1.0",
4880 + "redis-errors": "^1.2.0",
4881 + "redis-parser": "^3.0.0",
4882 + "standard-as-callback": "^2.1.0"
4883 + },
4884 + "engines": {
4885 + "node": ">=12.22.0"
4886 + },
4887 + "funding": {
4888 + "type": "opencollective",
4889 + "url": "https://opencollective.com/ioredis"
4890 + }
4891 + },
4746 4892 "node_modules/ipaddr.js": {
4747 4893 "version": "1.9.1",
4748 4894 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
@@ -5056,10 +5202,22 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
5056 5202 "devOptional": true,
5057 5203 "license": "MIT"
5058 5204 },
5205 + "node_modules/lodash.defaults": {
5206 + "version": "4.2.0",
5207 + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
5208 + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==",
5209 + "license": "MIT"
5210 + },
5059 5211 "node_modules/lodash.includes": {
5060 5212 "version": "4.3.0",
5061 5213 "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
5062 5214 "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==",
5215 + "license": "MIT"
5216 + },
5217 + "node_modules/lodash.isarguments": {
5218 + "version": "3.1.0",
5219 + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
5220 + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==",
5063 5221 "license": "MIT"
5064 5222 },
5065 5223 "node_modules/lodash.isboolean": {
@@ -5141,6 +5299,15 @@ "type": "github",
5141 5299 "url": "https://github.com/sponsors/wellwelwel"
5142 5300 }
5143 5301 },
5302 + "node_modules/luxon": {
5303 + "version": "3.7.2",
5304 + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz",
5305 + "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==",
5306 + "license": "MIT",
5307 + "engines": {
5308 + "node": ">=12"
5309 + }
5310 + },
5144 5311 "node_modules/make-error": {
5145 5312 "version": "1.3.6",
5146 5313 "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
@@ -5449,6 +5616,37 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
5449 5616 "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
5450 5617 "license": "MIT"
5451 5618 },
5619 + "node_modules/msgpackr": {
5620 + "version": "2.0.1",
5621 + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-2.0.1.tgz",
5622 + "integrity": "sha512-9J+tqTEsbHqY8YohazYgty7LgerFIWxvMLpUjqETSmjHojtJm2WnX2kK/2a1fLI7CO7ERP1YSEUXMucz4j+yBA==",
5623 + "license": "MIT",
5624 + "optionalDependencies": {
5625 + "msgpackr-extract": "^3.0.2"
5626 + }
5627 + },
5628 + "node_modules/msgpackr-extract": {
5629 + "version": "3.0.3",
5630 + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz",
5631 + "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==",
5632 + "hasInstallScript": true,
5633 + "license": "MIT",
5634 + "optional": true,
5635 + "dependencies": {
5636 + "node-gyp-build-optional-packages": "5.2.2"
5637 + },
5638 + "bin": {
5639 + "download-msgpackr-prebuilds": "bin/download-prebuilds.js"
5640 + },
5641 + "optionalDependencies": {
5642 + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3",
5643 + "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3",
5644 + "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3",
5645 + "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3",
5646 + "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3",
5647 + "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3"
5648 + }
5649 + },
5452 5650 "node_modules/mylas": {
5453 5651 "version": "2.1.14",
5454 5652 "resolved": "https://registry.npmjs.org/mylas/-/mylas-2.1.14.tgz",
@@ -5524,6 +5722,12 @@ "engines": {
5524 5722 "node": ">=10"
5525 5723 }
5526 5724 },
5725 + "node_modules/node-abort-controller": {
5726 + "version": "3.1.1",
5727 + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz",
5728 + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==",
5729 + "license": "MIT"
5730 + },
5527 5731 "node_modules/node-fetch": {
5528 5732 "version": "2.7.0",
5529 5733 "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
@@ -5562,6 +5766,21 @@ "bin": {
5562 5766 "node-gyp-build": "bin.js",
5563 5767 "node-gyp-build-optional": "optional.js",
5564 5768 "node-gyp-build-test": "build-test.js"
5769 + }
5770 + },
5771 + "node_modules/node-gyp-build-optional-packages": {
5772 + "version": "5.2.2",
5773 + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz",
5774 + "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==",
5775 + "license": "MIT",
5776 + "optional": true,
5777 + "dependencies": {
5778 + "detect-libc": "^2.0.1"
5779 + },
5780 + "bin": {
5781 + "node-gyp-build-optional-packages": "bin.js",
5782 + "node-gyp-build-optional-packages-optional": "optional.js",
5783 + "node-gyp-build-optional-packages-test": "build-test.js"
5565 5784 }
5566 5785 },
5567 5786 "node_modules/nodemon": {
@@ -6518,6 +6737,27 @@ "type": "individual",
6518 6737 "url": "https://paulmillr.com/funding/"
6519 6738 }
6520 6739 },
6740 + "node_modules/redis-errors": {
6741 + "version": "1.2.0",
6742 + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz",
6743 + "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==",
6744 + "license": "MIT",
6745 + "engines": {
6746 + "node": ">=4"
6747 + }
6748 + },
6749 + "node_modules/redis-parser": {
6750 + "version": "3.0.0",
6751 + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz",
6752 + "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==",
6753 + "license": "MIT",
6754 + "dependencies": {
6755 + "redis-errors": "^1.0.0"
6756 + },
6757 + "engines": {
6758 + "node": ">=4"
6759 + }
6760 + },
6521 6761 "node_modules/regenerate": {
6522 6762 "version": "1.4.2",
6523 6763 "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
@@ -6754,9 +6994,9 @@ "license": "MIT",
6754 6994 "peer": true
6755 6995 },
6756 6996 "node_modules/semver": {
6757 - "version": "7.7.3",
6758 - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
6759 - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
6997 + "version": "7.8.0",
6998 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz",
6999 + "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==",
6760 7000 "license": "ISC",
6761 7001 "bin": {
6762 7002 "semver": "bin/semver.js"
@@ -7094,6 +7334,12 @@ "license": "MIT",
7094 7334 "engines": {
7095 7335 "node": ">=8"
7096 7336 }
7337 + },
7338 + "node_modules/standard-as-callback": {
7339 + "version": "2.1.0",
7340 + "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz",
7341 + "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==",
7342 + "license": "MIT"
7097 7343 },
7098 7344 "node_modules/statuses": {
7099 7345 "version": "2.0.2",
@@ -7643,6 +7889,12 @@ },
7643 7889 "engines": {
7644 7890 "node": ">=6"
7645 7891 }
7892 + },
7893 + "node_modules/tslib": {
7894 + "version": "2.8.1",
7895 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
7896 + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
7897 + "license": "0BSD"
7646 7898 },
7647 7899 "node_modules/tsx": {
7648 7900 "version": "4.21.0",
api/package.json
@@ -27,6 +27,7 @@ "@types/jsonwebtoken": "^9.0.10",
27 27 "bcryptjs": "^3.0.3",
28 28 "better-sqlite3": "^12.5.0",
29 29 "body-parser": "^2.2.2",
30 + "bullmq": "^5.76.7",
30 31 "cors": "^2.8.6",
31 32 "date-fns": "^4.1.0",
32 33 "express": "^5.2.1",