5 Commits

12 changed files with 1650 additions and 1681 deletions

View File

@ -16,7 +16,7 @@ jobs:
language: ['javascript'] language: ['javascript']
steps: steps:
- uses: 'actions/checkout@v3.5.2' - uses: 'actions/checkout@v3.5.3'
- name: 'Initialize CodeQL' - name: 'Initialize CodeQL'
uses: 'github/codeql-action/init@v2' uses: 'github/codeql-action/init@v2'

View File

@ -10,7 +10,7 @@ jobs:
build: build:
runs-on: 'ubuntu-latest' runs-on: 'ubuntu-latest'
steps: steps:
- uses: 'actions/checkout@v3.5.2' - uses: 'actions/checkout@v3.5.3'
- name: 'Setup Node.js' - name: 'Setup Node.js'
uses: 'actions/setup-node@v3.6.0' uses: 'actions/setup-node@v3.6.0'

View File

@ -10,7 +10,7 @@ jobs:
lint: lint:
runs-on: 'ubuntu-latest' runs-on: 'ubuntu-latest'
steps: steps:
- uses: 'actions/checkout@v3.5.2' - uses: 'actions/checkout@v3.5.3'
- name: 'Setup Node.js' - name: 'Setup Node.js'
uses: 'actions/setup-node@v3.6.0' uses: 'actions/setup-node@v3.6.0'

View File

@ -8,7 +8,7 @@ jobs:
release: release:
runs-on: 'ubuntu-latest' runs-on: 'ubuntu-latest'
steps: steps:
- uses: 'actions/checkout@v3.5.2' - uses: 'actions/checkout@v3.5.3'
with: with:
fetch-depth: 0 fetch-depth: 0
persist-credentials: false persist-credentials: false

View File

@ -10,7 +10,7 @@ jobs:
test: test:
runs-on: 'ubuntu-latest' runs-on: 'ubuntu-latest'
steps: steps:
- uses: 'actions/checkout@v3.5.2' - uses: 'actions/checkout@v3.5.3'
- name: 'Setup Node.js' - name: 'Setup Node.js'
uses: 'actions/setup-node@v3.6.0' uses: 'actions/setup-node@v3.6.0'

1
.swcrc
View File

@ -1,4 +1,5 @@
{ {
"sourceMaps": true,
"jsc": { "jsc": {
"parser": { "parser": {
"syntax": "typescript", "syntax": "typescript",

View File

@ -60,7 +60,7 @@ representative at an online or offline event.
Instances of abusive, harassing, or otherwise unacceptable behavior may be Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at reported to the community leaders responsible for enforcement at
<contact@divlo.fr>. <contact@theoludwig.fr>.
All complaints will be reviewed and investigated promptly and fairly. All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the All community leaders are obligated to respect the privacy and security of the

View File

@ -1,15 +1,15 @@
FROM node:18.16.0 AS dependencies FROM node:18.16.1 AS dependencies
WORKDIR /usr/src/app WORKDIR /usr/src/app
COPY ./package*.json ./ COPY ./package*.json ./
RUN npm install RUN npm install
FROM node:18.16.0 AS builder FROM node:18.16.1 AS builder
WORKDIR /usr/src/app WORKDIR /usr/src/app
COPY --from=dependencies /usr/src/app/node_modules ./node_modules COPY --from=dependencies /usr/src/app/node_modules ./node_modules
COPY ./ ./ COPY ./ ./
RUN npm run prisma:generate && npm run build RUN npm run prisma:generate && npm run build
FROM node:18.16.0 AS runner FROM node:18.16.1 AS runner
WORKDIR /usr/src/app WORKDIR /usr/src/app
ENV NODE_ENV=production ENV NODE_ENV=production
COPY --from=builder /usr/src/app/node_modules ./node_modules COPY --from=builder /usr/src/app/node_modules ./node_modules

View File

@ -18,7 +18,7 @@
Thream's Application Programming Interface (API) to stay close with your friends and communities. Thream's Application Programming Interface (API) to stay close with your friends and communities.
It uses [Thream/file-uploads-api](https://github.com/Thream/file-uploads-api) [v1.1.4](https://github.com/Thream/file-uploads-api/releases/tag/v1.1.4). It uses [Thream/file-uploads-api](https://github.com/Thream/file-uploads-api) [v1.1.5](https://github.com/Thream/file-uploads-api/releases/tag/v1.1.5).
## ⚙️ Getting Started ## ⚙️ Getting Started
@ -32,7 +32,7 @@ It uses [Thream/file-uploads-api](https://github.com/Thream/file-uploads-api) [v
```sh ```sh
# Clone the repository # Clone the repository
git clone https://github.com/Thream/api.git git clone git@github.com:Thream/api.git
# Go to the project root # Go to the project root
cd api cd api

3219
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "@thream/api", "name": "@thream/api",
"version": "1.2.6", "version": "1.2.7",
"description": "Thream's application programming interface to stay close with your friends and communities.", "description": "Thream's application programming interface to stay close with your friends and communities.",
"private": true, "private": true,
"type": "module", "type": "module",
@ -18,17 +18,17 @@
"scripts": { "scripts": {
"build": "rimraf ./build && swc ./src --out-dir ./build", "build": "rimraf ./build && swc ./src --out-dir ./build",
"build:typescript": "tsc", "build:typescript": "tsc",
"start": "node build/index.js", "start": "node --enable-source-maps build/index.js",
"dev:build": "swc ./src --out-dir ./build --watch", "dev:build": "swc ./src --out-dir ./build --watch",
"dev": "concurrently --kill-others --names \"TypeScript,Node,Maildev,Prisma Studio\" \"npm run dev:build\" \"cross-env NODE_ENV=development nodemon build/index.js\" \"npm run maildev\" \"npm run prisma:studio\"", "dev": "concurrently --kill-others --names \"TypeScript,Node,Maildev,Prisma Studio\" \"npm run dev:build\" \"cross-env NODE_ENV=development node --watch --enable-source-maps build/index.js\" \"npm run maildev\" \"npm run prisma:studio\"",
"maildev": "maildev", "maildev": "maildev",
"generate": "plop", "generate": "plop",
"generate:jwt-secret": "node ./build/scripts/generate-jwt-secret.js", "generate:jwt-secret": "node --enable-source-maps ./build/scripts/generate-jwt-secret.js",
"lint:commit": "commitlint", "lint:commit": "commitlint",
"lint:editorconfig": "editorconfig-checker", "lint:editorconfig": "editorconfig-checker",
"lint:markdown": "markdownlint-cli2", "lint:markdown": "markdownlint-cli2",
"lint:eslint": "eslint \".\" --ignore-path \".gitignore\"", "lint:eslint": "eslint . --ignore-path .gitignore",
"lint:prettier": "prettier \".\" --check --ignore-path \".gitignore\"", "lint:prettier": "prettier . --check --ignore-path .gitignore",
"lint:staged": "lint-staged", "lint:staged": "lint-staged",
"test": "cross-env NODE_ENV=test c8 tap", "test": "cross-env NODE_ENV=test c8 tap",
"prisma:validate": "prisma validate", "prisma:validate": "prisma validate",
@ -40,37 +40,37 @@
"postinstall": "husky install" "postinstall": "husky install"
}, },
"dependencies": { "dependencies": {
"@fastify/cors": "8.2.1", "@fastify/cors": "8.3.0",
"@fastify/helmet": "10.1.1", "@fastify/helmet": "11.0.0",
"@fastify/multipart": "7.6.0", "@fastify/multipart": "7.7.0",
"@fastify/rate-limit": "8.0.0", "@fastify/rate-limit": "8.0.1",
"@fastify/sensible": "5.2.0", "@fastify/sensible": "5.2.0",
"@fastify/swagger": "8.3.1", "@fastify/swagger": "8.6.0",
"@fastify/swagger-ui": "1.8.1", "@fastify/swagger-ui": "1.9.2",
"@prisma/client": "4.14.0", "@prisma/client": "4.16.2",
"@sinclair/typebox": "0.28.10", "@sinclair/typebox": "0.29.0",
"@thream/socketio-jwt": "3.1.0", "@thream/socketio-jwt": "3.1.1",
"axios": "1.4.0", "axios": "1.4.0",
"bcryptjs": "2.4.3", "bcryptjs": "2.4.3",
"dotenv": "16.0.3", "dotenv": "16.3.1",
"ejs": "3.1.9", "ejs": "3.1.9",
"fastify": "4.17.0", "fastify": "4.19.1",
"fastify-plugin": "4.5.0", "fastify-plugin": "4.5.0",
"form-data": "4.0.0", "form-data": "4.0.0",
"http-errors": "2.0.0", "http-errors": "2.0.0",
"jsonwebtoken": "9.0.0", "jsonwebtoken": "9.0.0",
"ms": "2.1.3", "ms": "2.1.3",
"nodemailer": "6.9.2", "nodemailer": "6.9.3",
"read-pkg": "8.0.0", "read-pkg": "8.0.0",
"socket.io": "4.6.1" "socket.io": "4.7.1"
}, },
"devDependencies": { "devDependencies": {
"@commitlint/cli": "17.6.3", "@commitlint/cli": "17.6.6",
"@commitlint/config-conventional": "17.6.3", "@commitlint/config-conventional": "17.6.6",
"@saithodev/semantic-release-backmerge": "3.2.0", "@saithodev/semantic-release-backmerge": "3.2.0",
"@semantic-release/git": "10.0.1", "@semantic-release/git": "10.0.1",
"@swc/cli": "0.1.62", "@swc/cli": "0.1.62",
"@swc/core": "1.3.57", "@swc/core": "1.3.67",
"@tsconfig/strictest": "2.0.1", "@tsconfig/strictest": "2.0.1",
"@types/bcryptjs": "2.4.2", "@types/bcryptjs": "2.4.2",
"@types/busboy": "1.5.0", "@types/busboy": "1.5.0",
@ -78,36 +78,35 @@
"@types/http-errors": "2.0.1", "@types/http-errors": "2.0.1",
"@types/jsonwebtoken": "9.0.2", "@types/jsonwebtoken": "9.0.2",
"@types/ms": "0.7.31", "@types/ms": "0.7.31",
"@types/node": "20.1.4", "@types/node": "20.3.3",
"@types/nodemailer": "6.4.7", "@types/nodemailer": "6.4.8",
"@types/sinon": "10.0.14", "@types/sinon": "10.0.15",
"@types/tap": "15.0.8", "@types/tap": "15.0.8",
"@typescript-eslint/eslint-plugin": "5.59.5", "@typescript-eslint/eslint-plugin": "5.60.1",
"@typescript-eslint/parser": "5.59.5", "@typescript-eslint/parser": "5.60.1",
"c8": "7.13.0", "c8": "8.0.0",
"concurrently": "8.0.1", "concurrently": "8.2.0",
"cross-env": "7.0.3", "cross-env": "7.0.3",
"editorconfig-checker": "5.0.1", "editorconfig-checker": "5.1.1",
"eslint": "8.40.0", "eslint": "8.44.0",
"eslint-config-conventions": "9.0.0", "eslint-config-conventions": "10.0.0",
"eslint-config-prettier": "8.8.0", "eslint-config-prettier": "8.8.0",
"eslint-plugin-import": "2.27.5", "eslint-plugin-import": "2.27.5",
"eslint-plugin-prettier": "4.2.1", "eslint-plugin-prettier": "4.2.1",
"eslint-plugin-promise": "6.1.1", "eslint-plugin-promise": "6.1.1",
"eslint-plugin-unicorn": "47.0.0", "eslint-plugin-unicorn": "47.0.0",
"husky": "8.0.3", "husky": "8.0.3",
"lint-staged": "13.2.2", "lint-staged": "13.2.3",
"maildev": "2.0.5", "maildev": "2.0.5",
"markdownlint-cli2": "0.7.1", "markdownlint-cli2": "0.8.1",
"markdownlint-rule-relative-links": "1.2.0", "markdownlint-rule-relative-links": "2.1.0",
"nodemon": "2.0.22",
"plop": "3.1.2", "plop": "3.1.2",
"prettier": "2.8.8", "prettier": "2.8.8",
"prisma": "4.14.0", "prisma": "4.16.2",
"rimraf": "5.0.0", "rimraf": "5.0.1",
"semantic-release": "21.0.2", "semantic-release": "21.0.6",
"sinon": "15.0.4", "sinon": "15.2.0",
"tap": "16.3.4", "tap": "16.3.7",
"typescript": "5.0.4" "typescript": "5.0.4"
} }
} }

View File

@ -54,8 +54,8 @@ declare module 'fastify' {
export default fastifyPlugin( export default fastifyPlugin(
async (fastify) => { async (fastify) => {
await fastify.decorateRequest('user', null) fastify.decorateRequest('user', undefined)
await fastify.addHook('onRequest', async (request) => { fastify.addHook('onRequest', async (request) => {
const { authorization } = request.headers const { authorization } = request.headers
const user = await getUserWithBearerToken(authorization) const user = await getUserWithBearerToken(authorization)
request.user = user request.user = user