Natural Push Machine

    @neushimmer/joi
    TypeScript icon, indicating that this package has built-in type declarations

    0.0.7-beta9 • Public • Published

    Shimmer Joi Pulgin

    A Typescript Pulgin of @hapi/joi

    How To Use

    import { Joi,TypeOf } from '@neushimmer/joi';
    type SuccessedGet = {
        success:true,
        data:any
    }
    type FailedGet = {
        success:false,
        message:any,
        code:number
    }
    export type InterfaceGet = SuccessedGet|FailedGet
    export interface Service {
        getTickets():Promise<Ticket[]>
        getSeats(ticket:Ticket):Promise<Seat[][]>
        postInfo(info:TicketPost):Promise<InterfaceGet>
        postError(errorInfo:any):Promise<InterfaceGet>
    }
    var TicketQuestionSchema = Joi.object({
        id:Joi.number().required(),
        type:Joi.string().valid('select','radio','text').required(),
        title:Joi.string().required(),
        description:Joi.string().required(),
        optionList:Joi.when(Joi.ref('type'),{is:['select','radio'],then:Joi.array().items('string')})
    })
    var TicketModuleSchema = Joi.object({
        id:Joi.number().required(),
        title:Joi.string().required(),
        questionList:Joi.array().items(TicketQuestionSchema).required()
    })
    var TicketSchema = Joi.object({
        id:Joi.number().required(),
        title:Joi.string().required(),
        baseInfos:Joi.array().items(TicketQuestionSchema),
        description:Joi.string().required(),
        remainingQuantity:Joi.number().min(0).required(),
        price:Joi.number().min(0).required(),
        type:Joi.string().valid('normal','moreinfo').default('normal'),
        modules:Joi.when(Joi.ref('type'),{is:'moreinfo',then:Joi.array().items(TicketModuleSchema).required()})
    })
    
    var TicketPostInfoQuestionSchema = Joi.object({
        title:Joi.string().required(),
        answer:Joi.string().required()
    })
    var TicketPostInfoModuleSchema = Joi.object({
        id:Joi.number().required(),
        questionList:Joi.array().items(TicketPostInfoQuestionSchema)
    })
    
    var ErrorPostSchema = Joi.object({
        message:Joi.string().required(),
        env:Joi.string()
    })
    var SeatInfoSchema = Joi.object({
        position:Joi.object({
            x:Joi.number().min(0).required(),
            y:Joi.number().min(0).required()
        }).required(),
        status:Joi.string().valid('enable','disable','lock','used').required()
    })
    var TicketPostInfoTickets = Joi.object({
        id:Joi.number().required(),
        baseInfos:Joi.array().items(TicketPostInfoQuestionSchema),
        type:Joi.string().valid('normal','moreinfo').default('normal'),
        moduleInfos:Joi.when(Joi.ref('type'),{is:'moreinfo',then:Joi.array().items(TicketPostInfoModuleSchema).required()})
    })
    var TicketPostInfoSchema = Joi.object({
        tickets:Joi.array().items(TicketPostInfoTickets).min(1),
        lockedSeat:Joi.array().items(SeatInfoSchema),
        totalInfo:Joi.object({
            totalTickets:Joi.number().min(0),
            totalPrice:Joi.number().min(0)
        })
        
    })
    
    export var Ticket = TicketSchema;
    export type Ticket = TypeOf<typeof TicketSchema>
    
    export var TicketQuestion = TicketQuestionSchema;
    export type TicketQuestion = TypeOf<typeof TicketQuestionSchema>
    
    export var TicketModule = TicketModuleSchema;
    export type TicketModule = TypeOf<typeof TicketModuleSchema>
    
    export var Seat = SeatInfoSchema;
    export type Seat = TypeOf<typeof SeatInfoSchema>
    
    export var TicketPost = TicketPostInfoSchema;
    export type TicketPost = TypeOf<typeof TicketPostInfoSchema>
    
    export var TicketPostTickets = TicketPostInfoTickets;
    export type TicketPostTickets = TypeOf<typeof TicketPostInfoTickets>
    
    export var TicketPostModule = TicketPostInfoModuleSchema;
    export type TicketPostModule = TypeOf<typeof TicketPostInfoModuleSchema>
    
    export var TicketPostQuestion = TicketPostInfoQuestionSchema;
    export type TicketPostQuestion = TypeOf<typeof TicketPostInfoQuestionSchema>
    
    export var ErrorPost = ErrorPostSchema;
    export type ErrorPost = TypeOf<typeof ErrorPostSchema>

    Install

    npm i @neushimmer/joi

    DownloadsWeekly Downloads

    0

    Version

    0.0.7-beta9

    License

    MIT

    Unpacked Size

    33.7 kB

    Total Files

    19

    Last publish

    Collaborators

    • fenyu
    • shuangya
    • tangtsz