Feature: Migrate to Typescript7 & AdonisJs7

This commit is contained in:
Igor Martyniuk
2026-07-17 08:05:15 +00:00
parent e98a1e85f0
commit bbdf4a3312
22 changed files with 3182 additions and 2324 deletions
+3 -3
View File
@@ -1,5 +1,5 @@
# Adonis v6 backend (development mode)
FROM node:22-alpine3.20
# Adonis v7 backend (development mode)
FROM node:24-alpine3.22
WORKDIR /app
@@ -7,7 +7,7 @@ WORKDIR /app
COPY package.json package-lock.json ./
# Install workspace dependencies (monorepo-aware)
RUN npm ci
RUN npm ci --force
# Copy backend source
COPY backend ./backend
@@ -1,12 +1,14 @@
import vine from '@vinejs/vine'
import type { Request } from '@adonisjs/core/http'
import type { HttpContext } from '@adonisjs/core/http'
import { pathSchema } from '#base_modules/FileManager/validator/schemas'
import { ROOT_PATH } from '#base_modules/FileManager/config/general'
import PathService from '#base_modules/FileManager/services/path_service'
const pathService = new PathService()
export default async function getValidatedPathFromRequest(request: Request): Promise<string> {
export default async function getValidatedPathFromRequest(
request: HttpContext['request']
): Promise<string> {
const segments = request.param('*', [ROOT_PATH])
const path = pathService.join(...segments.map(decodeURIComponent))
return vine.compile(pathSchema).validate(path)
@@ -6,7 +6,7 @@ const FileManagerController = () =>
router
.group(() => {
router.get('/', [FileManagerController, 'index'])
router.get('/', [FileManagerController, 'index']).as('root')
router.put('/entries/rename', [FileManagerController, 'rename'])
router.post('/folders', [FileManagerController, 'createFolder'])
@@ -19,7 +19,7 @@ router
router.get('/search', [FileManagerController, 'search'])
router.delete('/*', [FileManagerController, 'destroy'])
router.get('/*', [FileManagerController, 'index'])
router.get('/*', [FileManagerController, 'index']).as('nested')
})
.prefix('/file-manager')
.use([middleware.auth()])
@@ -1,4 +1,4 @@
import { cuid } from '@adonisjs/core/helpers'
import { randomUUID } from 'node:crypto'
import { posix } from 'node:path'
export interface FileNameMeta {
@@ -74,7 +74,7 @@ export default class PathService {
counter++
if (counter > 5) {
newName = `${cuid()}${ext}`
newName = `${randomUUID()}${ext}`
break
}
}
+14
View File
@@ -0,0 +1,14 @@
import { defineConfig, drivers } from '@adonisjs/core/encryption'
import env from '#start/env'
const encryptionConfig = defineConfig({
default: 'app',
list: {
app: drivers.aes256gcm({
id: 'app',
keys: [env.get('APP_KEY')],
}),
},
})
export default encryptionConfig
+7 -1
View File
@@ -1,2 +1,8 @@
import { configApp } from '@adonisjs/eslint-config'
export default configApp()
export default [
{
ignores: ['.adonisjs/**', 'database/schema.ts'],
},
...configApp(),
]
+15 -15
View File
@@ -9,7 +9,7 @@
"build": "node ace build",
"dev": "node ace serve --hmr",
"test": "node ace test",
"lint": "eslint .",
"lint": "node ../scripts/eslint-with-typescript6.cjs .",
"format": "prettier --write .",
"typecheck": "tsc --noEmit"
},
@@ -35,32 +35,32 @@
"#base_modules/*": "./app/base_modules/*.js"
},
"devDependencies": {
"@adonisjs/assembler": "^7.8.2",
"@adonisjs/tsconfig": "^1.4.0",
"@japa/api-client": "^3.1.0",
"@adonisjs/assembler": "^8.4.0",
"@adonisjs/tsconfig": "^2.0.0",
"@japa/api-client": "^3.2.1",
"@japa/assert": "^4.0.1",
"@japa/plugin-adonisjs": "^4.0.0",
"@japa/runner": "^4.4.0",
"@japa/plugin-adonisjs": "^5.2.0",
"@japa/runner": "^5.3.0",
"@japa/spec-reporter": "^1.3.3",
"@poppinss/ts-exec": "^1.4.4",
"@swc/core": "1.11.24",
"@types/luxon": "^3.6.2",
"@types/supertest": "^6.0.3",
"hot-hook": "^0.4.0",
"pino-pretty": "^13.0.0",
"pino-pretty": "^13.1.3",
"supertest": "^7.1.4",
"ts-node-maintained": "^10.9.5"
},
"dependencies": {
"@adonisjs/auth": "^9.4.0",
"@adonisjs/bouncer": "^3.1.6",
"@adonisjs/core": "^6.18.0",
"@adonisjs/cors": "^2.2.1",
"@adonisjs/drive": "^3.4.1",
"@adonisjs/lucid": "^21.6.1",
"@adonisjs/validator": "^13.0.2",
"@adonisjs/auth": "^10.1.0",
"@adonisjs/bouncer": "^4.0.0",
"@adonisjs/core": "^7.3.5",
"@adonisjs/cors": "^3.0.0",
"@adonisjs/drive": "^4.0.0",
"@adonisjs/lucid": "^22.4.2",
"@aws-sdk/client-s3": "^3.1064.0",
"@aws-sdk/s3-request-presigner": "^3.1064.0",
"@vinejs/vine": "^3.0.1",
"@vinejs/vine": "^4.0.1",
"adonis-autoswagger": "^3.73.0",
"handlebars": "^4.7.8",
"luxon": "^3.6.1",
+3 -4
View File
@@ -4,11 +4,10 @@
"jsx": "react",
"rootDir": "./",
"outDir": "./build",
"baseUrl": ".",
"paths": {
"#modules/*": ["modules/*"],
"#Modules/*": ["modules/*"],
"#base_modules/*": ["app/base_modules/*"]
"#modules/*": ["./modules/*"],
"#Modules/*": ["./modules/*"],
"#base_modules/*": ["./app/base_modules/*"]
},
"types": ["@japa/runner", "supertest"]
}