- Docker infrastructure (Dockerfile, docker-compose.yml, genieacs-sim) - AdonisJS v7 app with Inertia.js + Vue 3 - MongoDB integration - CWMP/TR-069 state machine engine - Configuration engine with compliance tracking - Branding: ADAM ACS (favicon, navbar, locales) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
46 lines
1.6 KiB
TypeScript
46 lines
1.6 KiB
TypeScript
import vine from '@vinejs/vine'
|
|
|
|
export const createFirmwareEntryValidator = vine.compile(
|
|
vine.object({
|
|
identifier: vine.string().trim().regex(/^[a-z0-9]+(-[a-z0-9]+)*$/),
|
|
productClass: vine.string().trim().minLength(1),
|
|
version: vine.string().trim().minLength(1),
|
|
downloadUrl: vine.string().trim().url(),
|
|
checksum: vine.string().trim().minLength(1),
|
|
checksumType: vine.enum(['md5', 'sha256']),
|
|
fileSize: vine.number().min(0),
|
|
})
|
|
)
|
|
|
|
export const updateFirmwareEntryValidator = vine.compile(
|
|
vine.object({
|
|
productClass: vine.string().trim().minLength(1).optional(),
|
|
version: vine.string().trim().minLength(1).optional(),
|
|
downloadUrl: vine.string().trim().url().optional(),
|
|
checksum: vine.string().trim().minLength(1).optional(),
|
|
checksumType: vine.enum(['md5', 'sha256']).optional(),
|
|
fileSize: vine.number().min(0).optional(),
|
|
})
|
|
)
|
|
|
|
export const createMigrationRouteValidator = vine.compile(
|
|
vine.object({
|
|
identifier: vine.string().trim().regex(/^[a-z0-9]+(-[a-z0-9]+)*$/),
|
|
productClass: vine.string().trim().minLength(1),
|
|
sourceVersionPattern: vine.string().trim().minLength(1),
|
|
targetVersion: vine.string().trim().minLength(1),
|
|
downloadUrl: vine.string().trim().url(),
|
|
priority: vine.number().min(0),
|
|
})
|
|
)
|
|
|
|
export const updateMigrationRouteValidator = vine.compile(
|
|
vine.object({
|
|
productClass: vine.string().trim().minLength(1).optional(),
|
|
sourceVersionPattern: vine.string().trim().minLength(1).optional(),
|
|
targetVersion: vine.string().trim().minLength(1).optional(),
|
|
downloadUrl: vine.string().trim().url().optional(),
|
|
priority: vine.number().min(0).optional(),
|
|
})
|
|
)
|