api: cors, jwt and extended logging for express
Pedro Lucas Porcellis porcellis@eletrotupi.com · 6 months ago
e5b1e91e859c14b9fe2e27d04601f3dd809c9e29 Browse filesParents
f09fe61Changed files
2
Additions
+161
Deletions
-4
api/package-lock.json
1 1
{
2 2
"name": "orbit-api",
3 3
"version": "0.0.0",
4 4
"lockfileVersion": 3,
5 5
"requires": true,
9 9
"version": "0.0.0",
10 10
"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",
21 25
"@types/express": "^5.0.6",
22 26
"@types/node": "^25.5.0",
600 604
"license": "MIT",
601 605
"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",
608 621
"integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
609 622
"dev": true,
639 652
"resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz",
640 653
"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"
652 680
}
653 681
},
1159 1187
"dependencies": {
1160 1188
"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",
1167 1201
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
1168 1202
"license": "MIT",
1630 1664
"resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz",
1631 1665
"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",
1638 1689
"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
1639 1690
"dev": true,
1876 1927
"version": "0.2.0",
1877 1928
"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",
1884 1944
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
1885 1945
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
2940 3000
},
2941 3001
"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",
2948 3051
"integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
2949 3052
"devOptional": true,
2968 3071
"node_modules/lodash": {
2969 3072
"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": {
2976 3121
"version": "5.3.2",
2977 3122
"resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz",
3427 3572
"version": "0.2.1",
3428 3573
"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",
3435 3589
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
3436 3590
"integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
4952 5106
},
4953 5107
"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": {
4961 5114
"version": "0.3.0",
4962 5115
"resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
5338 5491
"graphmatch": "^1.1.0"
5339 5492
}
5340 5493
}
5341 5494
}
5342 5495
}
api/package.json
1 1
{
2 2
"name": "orbit-api",
3 3
"version": "0.0.0",
4 4
"description": "",
5 5
"license": "ISC",
14 14
"test": "npx ava"
15 15
},
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",
26 30
"@types/express": "^5.0.6",
27 31
"@types/node": "^25.5.0",
31 35
"ts-node": "^10.9.2",
32 36
"tsc-alias": "^1.8.16",
33 37
"tsconfig-paths": "^4.2.0"
34 38
}
35 39
}