Feature: Migrate to Typescript7 & AdonisJs7
This commit is contained in:
+3
-3
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
@@ -1,2 +1,8 @@
|
||||
import { configApp } from '@adonisjs/eslint-config'
|
||||
export default configApp()
|
||||
|
||||
export default [
|
||||
{
|
||||
ignores: ['.adonisjs/**', 'database/schema.ts'],
|
||||
},
|
||||
...configApp(),
|
||||
]
|
||||
|
||||
+15
-15
@@ -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",
|
||||
|
||||
@@ -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"]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user