Skip to content

Commit 64c108b

Browse files
committed
feat: add file type
1 parent f438929 commit 64c108b

File tree

3 files changed

+10
-5
lines changed

3 files changed

+10
-5
lines changed

src/api/files.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { isAudio, isFile, isImage, isVideo } from '../rules'
2+
import { File } from '../types'
23
import { VCore } from './core'
34

4-
export class VFile extends VCore<any> {
5+
export class VFile extends VCore<File> {
56
constructor (err?: string) {
67
super()
78
this.addTyping(isFile(err))

src/rules/files.ts

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,31 @@
11
import { isInvalid, isValid, makeRule } from '../utils/rules'
2+
import { File } from '../types'
23
import Mimes from './mimes.json'
34

45
export const fileMimeTypes = Object.keys(Mimes)
56
export const videoMimeTypes = fileMimeTypes.filter((mime) => mime.startsWith('video/'))
67
export const audioMimeTypes = fileMimeTypes.filter((mime) => mime.startsWith('audio/'))
78
export const imageMimeTypes = fileMimeTypes.filter((mime) => mime.startsWith('image/'))
89

9-
export const isImage = (error = 'is not a recognized image file') => makeRule<any>((file) => {
10+
export const isImage = (error = 'is not a recognized image file') => makeRule<File>((file) => {
1011
const val = file as any
1112
if (imageMimeTypes.includes(val?.type)) return isValid(val)
1213
return isInvalid([error], val)
1314
})
1415

15-
export const isAudio = (error = 'is not a recognized audio file') => makeRule<any>((file) => {
16+
export const isAudio = (error = 'is not a recognized audio file') => makeRule<File>((file) => {
1617
const val = file as any
1718
if (audioMimeTypes.includes(val?.type)) return isValid(val)
1819
return isInvalid([error], val)
1920
})
2021

21-
export const isVideo = (error = 'is not a recognized video file') => makeRule<any>((file) => {
22+
export const isVideo = (error = 'is not a recognized video file') => makeRule<File>((file) => {
2223
const val = file as any
2324
if (videoMimeTypes.includes(val?.type)) return isValid(val)
2425
return isInvalid([error], val)
2526
})
2627

27-
export const isFile = (error = 'is not a recognized file') => makeRule<any>((file) => {
28+
export const isFile = (error = 'is not a recognized file') => makeRule<File>((file) => {
2829
const val = file as any
2930
if (fileMimeTypes.includes(val?.type)) return isValid(val)
3031
return isInvalid([error], val)

src/types.ts

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export interface File {
2+
type: string
3+
}

0 commit comments

Comments
 (0)