mirror of
https://github.com/Myxelium/Bridge-Multi.git
synced 2026-04-11 14:19:38 +00:00
- Update API
- Add Chart Preview - Add Drum Type dropdown when the "drums" instrument is selected - Add Min/Max Year to advanced search - Add Track Hash to advanced search - Add "Download Video Backgrounds" setting - Updated and improved detected chart issues
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { z } from 'zod'
|
||||
|
||||
import { difficulties, instruments } from './UtilFunctions'
|
||||
import { difficulties, drumTypeNames, instruments } from './UtilFunctions.js'
|
||||
|
||||
export const GeneralSearchSchema = z.object({
|
||||
search: z.string(),
|
||||
@@ -8,14 +8,17 @@ export const GeneralSearchSchema = z.object({
|
||||
page: z.number().positive(),
|
||||
instrument: z.enum(instruments).nullable(),
|
||||
difficulty: z.enum(difficulties).nullable(),
|
||||
drumType: z.enum(drumTypeNames).nullable(),
|
||||
})
|
||||
export type GeneralSearch = z.infer<typeof GeneralSearchSchema>
|
||||
|
||||
const md5Validator = z.string().regex(/^[a-f0-9]{32}$/, 'Invalid MD5 hash')
|
||||
const blakeValidator = z.string().regex(/^[A-Za-z0-9-_]+={0,2}$/, 'Invalid hash')
|
||||
|
||||
export const AdvancedSearchSchema = z.object({
|
||||
instrument: z.enum(instruments).nullable(),
|
||||
difficulty: z.enum(difficulties).nullable(),
|
||||
drumType: z.enum(drumTypeNames).nullable(),
|
||||
name: z.object({ value: z.string(), exact: z.boolean(), exclude: z.boolean() }),
|
||||
artist: z.object({ value: z.string(), exact: z.boolean(), exclude: z.boolean() }),
|
||||
album: z.object({ value: z.string(), exact: z.boolean(), exclude: z.boolean() }),
|
||||
@@ -30,6 +33,8 @@ export const AdvancedSearchSchema = z.object({
|
||||
maxAverageNPS: z.number().nullable(),
|
||||
minMaxNPS: z.number().nullable(),
|
||||
maxMaxNPS: z.number().nullable(),
|
||||
minYear: z.number().nullable(),
|
||||
maxYear: z.number().nullable(),
|
||||
modifiedAfter: z.string().regex(/^\d+-\d{2}-\d{2}$/, 'Invalid date').or(z.coerce.date()).or(z.literal('')).nullable(),
|
||||
hash: z.string().transform(data =>
|
||||
data === '' || data.split(',').every(hash => md5Validator.safeParse(hash).success) ? data : 'invalid'
|
||||
@@ -37,6 +42,9 @@ export const AdvancedSearchSchema = z.object({
|
||||
chartHash: z.string().transform(data =>
|
||||
data === '' || data.split(',').every(hash => md5Validator.safeParse(hash).success) ? data : 'invalid'
|
||||
).nullable().optional(),
|
||||
trackHash: z.string().transform(data =>
|
||||
data === '' || data.split(',').every(hash => blakeValidator.safeParse(hash).success) ? data : 'invalid'
|
||||
).nullable().optional(),
|
||||
hasSoloSections: z.boolean().nullable(),
|
||||
hasForcedNotes: z.boolean().nullable(),
|
||||
hasOpenNotes: z.boolean().nullable(),
|
||||
@@ -70,6 +78,8 @@ export const advancedSearchNumberProperties = [
|
||||
'maxAverageNPS',
|
||||
'minMaxNPS',
|
||||
'maxMaxNPS',
|
||||
'minYear',
|
||||
'maxYear',
|
||||
] as const
|
||||
|
||||
export const advancedSearchBooleanProperties = [
|
||||
|
||||
Reference in New Issue
Block a user