api: cors, jwt and extended logging for express

Pedro Lucas Porcellis porcellis@eletrotupi.com 2 months ago e5b1e91e859c14b9fe2e27d04601f3dd809c9e29
Parents: f09fe61
2 file(s) changed
  • api/package-lock.json +156 -3
  • api/package.json +5 -1
api/package-lock.json
@@ -11,10 +11,14 @@ "license": "ISC",
11 11 "dependencies": {
12 12 "@prisma/adapter-better-sqlite3": "^7.5.0",
13 13 "@prisma/client": "^7.5.0",
14 + "@types/cors": "^2.8.19",
15 + "@types/jsonwebtoken": "^9.0.10",
14 16 "bcryptjs": "^3.0.3",
15 17 "better-sqlite3": "^12.5.0",
18 + "cors": "^2.8.6",
16 19 "date-fns": "^4.1.0",
17 - "express": "^5.2.1"
20 + "express": "^5.2.1",
21 + "jsonwebtoken": "^9.0.3"
18 22 },
19 23 "devDependencies": {
20 24 "@types/better-sqlite3": "^7.6.13",
@@ -602,6 +606,15 @@ "dependencies": {
602 606 "@types/node": "*"
603 607 }
604 608 },
609 + "node_modules/@types/cors": {
610 + "version": "2.8.19",
611 + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz",
612 + "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==",
613 + "license": "MIT",
614 + "dependencies": {
615 + "@types/node": "*"
616 + }
617 + },
605 618 "node_modules/@types/estree": {
606 619 "version": "1.0.8",
607 620 "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
@@ -641,11 +654,26 @@ "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==",
641 654 "dev": true,
642 655 "license": "MIT"
643 656 },
657 + "node_modules/@types/jsonwebtoken": {
658 + "version": "9.0.10",
659 + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.10.tgz",
660 + "integrity": "sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==",
661 + "license": "MIT",
662 + "dependencies": {
663 + "@types/ms": "*",
664 + "@types/node": "*"
665 + }
666 + },
667 + "node_modules/@types/ms": {
668 + "version": "2.1.0",
669 + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
670 + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
671 + "license": "MIT"
672 + },
644 673 "node_modules/@types/node": {
645 674 "version": "25.5.0",
646 675 "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz",
647 676 "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==",
648 - "dev": true,
649 677 "license": "MIT",
650 678 "dependencies": {
651 679 "undici-types": "~7.18.0"
@@ -1161,6 +1189,12 @@ "base64-js": "^1.3.1",
1161 1189 "ieee754": "^1.1.13"
1162 1190 }
1163 1191 },
1192 + "node_modules/buffer-equal-constant-time": {
1193 + "version": "1.0.1",
1194 + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
1195 + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
1196 + "license": "BSD-3-Clause"
1197 + },
1164 1198 "node_modules/bytes": {
1165 1199 "version": "3.1.2",
1166 1200 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
@@ -1632,6 +1666,23 @@ "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==",
1632 1666 "dev": true,
1633 1667 "license": "MIT"
1634 1668 },
1669 + "node_modules/cors": {
1670 + "version": "2.8.6",
1671 + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz",
1672 + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==",
1673 + "license": "MIT",
1674 + "dependencies": {
1675 + "object-assign": "^4",
1676 + "vary": "^1"
1677 + },
1678 + "engines": {
1679 + "node": ">= 0.10"
1680 + },
1681 + "funding": {
1682 + "type": "opencollective",
1683 + "url": "https://opencollective.com/express"
1684 + }
1685 + },
1635 1686 "node_modules/create-require": {
1636 1687 "version": "1.1.1",
1637 1688 "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
@@ -1878,6 +1929,15 @@ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
1878 1929 "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
1879 1930 "dev": true,
1880 1931 "license": "MIT"
1932 + },
1933 + "node_modules/ecdsa-sig-formatter": {
1934 + "version": "1.0.11",
1935 + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
1936 + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
1937 + "license": "Apache-2.0",
1938 + "dependencies": {
1939 + "safe-buffer": "^5.0.1"
1940 + }
1881 1941 },
1882 1942 "node_modules/ee-first": {
1883 1943 "version": "1.1.1",
@@ -2942,6 +3002,49 @@ "engines": {
2942 3002 "node": ">=6"
2943 3003 }
2944 3004 },
3005 + "node_modules/jsonwebtoken": {
3006 + "version": "9.0.3",
3007 + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz",
3008 + "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==",
3009 + "license": "MIT",
3010 + "dependencies": {
3011 + "jws": "^4.0.1",
3012 + "lodash.includes": "^4.3.0",
3013 + "lodash.isboolean": "^3.0.3",
3014 + "lodash.isinteger": "^4.0.4",
3015 + "lodash.isnumber": "^3.0.3",
3016 + "lodash.isplainobject": "^4.0.6",
3017 + "lodash.isstring": "^4.0.1",
3018 + "lodash.once": "^4.0.0",
3019 + "ms": "^2.1.1",
3020 + "semver": "^7.5.4"
3021 + },
3022 + "engines": {
3023 + "node": ">=12",
3024 + "npm": ">=6"
3025 + }
3026 + },
3027 + "node_modules/jwa": {
3028 + "version": "2.0.1",
3029 + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz",
3030 + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==",
3031 + "license": "MIT",
3032 + "dependencies": {
3033 + "buffer-equal-constant-time": "^1.0.1",
3034 + "ecdsa-sig-formatter": "1.0.11",
3035 + "safe-buffer": "^5.0.1"
3036 + }
3037 + },
3038 + "node_modules/jws": {
3039 + "version": "4.0.1",
3040 + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz",
3041 + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==",
3042 + "license": "MIT",
3043 + "dependencies": {
3044 + "jwa": "^2.0.1",
3045 + "safe-buffer": "^5.0.1"
3046 + }
3047 + },
2945 3048 "node_modules/lilconfig": {
2946 3049 "version": "2.1.0",
2947 3050 "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
@@ -2970,6 +3073,48 @@ "version": "4.17.21",
2970 3073 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
2971 3074 "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
2972 3075 "devOptional": true,
3076 + "license": "MIT"
3077 + },
3078 + "node_modules/lodash.includes": {
3079 + "version": "4.3.0",
3080 + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
3081 + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==",
3082 + "license": "MIT"
3083 + },
3084 + "node_modules/lodash.isboolean": {
3085 + "version": "3.0.3",
3086 + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
3087 + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==",
3088 + "license": "MIT"
3089 + },
3090 + "node_modules/lodash.isinteger": {
3091 + "version": "4.0.4",
3092 + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
3093 + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==",
3094 + "license": "MIT"
3095 + },
3096 + "node_modules/lodash.isnumber": {
3097 + "version": "3.0.3",
3098 + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
3099 + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==",
3100 + "license": "MIT"
3101 + },
3102 + "node_modules/lodash.isplainobject": {
3103 + "version": "4.0.6",
3104 + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
3105 + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
3106 + "license": "MIT"
3107 + },
3108 + "node_modules/lodash.isstring": {
3109 + "version": "4.0.1",
3110 + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
3111 + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
3112 + "license": "MIT"
3113 + },
3114 + "node_modules/lodash.once": {
3115 + "version": "4.1.1",
3116 + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
3117 + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
2973 3118 "license": "MIT"
2974 3119 },
2975 3120 "node_modules/long": {
@@ -3429,6 +3574,15 @@ "resolved": "https://registry.npmjs.org/citty/-/citty-0.2.1.tgz",
3429 3574 "integrity": "sha512-kEV95lFBhQgtogAPlQfJJ0WGVSokvLr/UEoFPiKKOXF7pl98HfUVUD0ejsuTCld/9xH9vogSywZ5KqHzXrZpqg==",
3430 3575 "devOptional": true,
3431 3576 "license": "MIT"
3577 + },
3578 + "node_modules/object-assign": {
3579 + "version": "4.1.1",
3580 + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
3581 + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
3582 + "license": "MIT",
3583 + "engines": {
3584 + "node": ">=0.10.0"
3585 + }
3432 3586 },
3433 3587 "node_modules/object-inspect": {
3434 3588 "version": "1.13.4",
@@ -4954,7 +5108,6 @@ "node_modules/undici-types": {
4954 5108 "version": "7.18.2",
4955 5109 "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz",
4956 5110 "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==",
4957 - "dev": true,
4958 5111 "license": "MIT"
4959 5112 },
4960 5113 "node_modules/unicorn-magic": {
api/package.json
@@ -16,10 +16,14 @@ },
16 16 "dependencies": {
17 17 "@prisma/adapter-better-sqlite3": "^7.5.0",
18 18 "@prisma/client": "^7.5.0",
19 + "@types/cors": "^2.8.19",
20 + "@types/jsonwebtoken": "^9.0.10",
19 21 "bcryptjs": "^3.0.3",
20 22 "better-sqlite3": "^12.5.0",
23 + "cors": "^2.8.6",
21 24 "date-fns": "^4.1.0",
22 - "express": "^5.2.1"
25 + "express": "^5.2.1",
26 + "jsonwebtoken": "^9.0.3"
23 27 },
24 28 "devDependencies": {
25 29 "@types/better-sqlite3": "^7.6.13",