{"version":3,"sources":["../../src/yup/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import * as yup from 'yup';\r\nimport {\r\n    isValidAadhaar,\r\n    isValidPAN,\r\n    isValidGSTIN,\r\n    isValidIFSC,\r\n    isValidPincode,\r\n    isValidTAN,\r\n    isValidUAN,\r\n    isValidVoterID,\r\n    isValidDrivingLicense,\r\n    isValidPassport,\r\n    isValidUPI,\r\n    isValidIndianPhone,\r\n    isValidMSME,\r\n} from '../validators';\r\n\r\ntype PramanaYupMethod = (this: yup.StringSchema, message?: string) => yup.StringSchema;\r\ntype PramanaValidator = (value: unknown) => boolean;\r\n\r\nconst createMethod = (\r\n    testName: string,\r\n    defaultMessage: string,\r\n    validator: PramanaValidator,\r\n): PramanaYupMethod => {\r\n    return function pramanaStringMethod(\r\n        this: yup.StringSchema,\r\n        message = defaultMessage,\r\n    ): yup.StringSchema {\r\n        return this.test(testName, message, (value) => {\r\n            if (!value) return true;\r\n            return validator(value);\r\n        });\r\n    };\r\n};\r\n\r\nexport function aadhaarMethod(message = 'Invalid Aadhaar number'): PramanaYupMethod {\r\n    return createMethod('pramana-aadhaar', message, isValidAadhaar);\r\n}\r\n\r\nexport function panMethod(message = 'Invalid PAN number'): PramanaYupMethod {\r\n    return createMethod('pramana-pan', message, isValidPAN);\r\n}\r\n\r\nexport function gstinMethod(message = 'Invalid GSTIN'): PramanaYupMethod {\r\n    return createMethod('pramana-gstin', message, isValidGSTIN);\r\n}\r\n\r\nexport function ifscMethod(message = 'Invalid IFSC code'): PramanaYupMethod {\r\n    return createMethod('pramana-ifsc', message, isValidIFSC);\r\n}\r\n\r\nexport function pincodeMethod(message = 'Invalid pincode'): PramanaYupMethod {\r\n    return createMethod('pramana-pincode', message, isValidPincode);\r\n}\r\n\r\nexport function tanMethod(message = 'Invalid TAN'): PramanaYupMethod {\r\n    return createMethod('pramana-tan', message, isValidTAN);\r\n}\r\n\r\nexport function uanMethod(message = 'Invalid UAN'): PramanaYupMethod {\r\n    return createMethod('pramana-uan', message, isValidUAN);\r\n}\r\n\r\nexport function voterIdMethod(message = 'Invalid voter ID'): PramanaYupMethod {\r\n    return createMethod('pramana-voter-id', message, isValidVoterID);\r\n}\r\n\r\nexport function dlMethod(message = 'Invalid driving license'): PramanaYupMethod {\r\n    return createMethod('pramana-dl', message, isValidDrivingLicense);\r\n}\r\n\r\nexport function passportMethod(message = 'Invalid passport number'): PramanaYupMethod {\r\n    return createMethod('pramana-passport', message, isValidPassport);\r\n}\r\n\r\nexport function upiMethod(message = 'Invalid UPI ID'): PramanaYupMethod {\r\n    return createMethod('pramana-upi', message, isValidUPI);\r\n}\r\n\r\nexport function phoneMethod(message = 'Invalid Indian phone number'): PramanaYupMethod {\r\n    return createMethod('pramana-phone', message, isValidIndianPhone);\r\n}\r\n\r\nexport function msmeMethod(message = 'Invalid MSME number'): PramanaYupMethod {\r\n    return createMethod('pramana-msme', message, isValidMSME);\r\n}\r\n\r\n/**\r\n * @example\r\n * import * as yup from 'yup'\r\n * import { setupPramanaYup } from '@prashanttiw/pramana/yup'\r\n * setupPramanaYup()\r\n *\r\n * const KYCSchema = yup.object({\r\n *   name: yup.string().required(),\r\n *   aadhaar: yup.string().required().aadhaar(),\r\n *   pan: yup.string().required().pan(),\r\n *   gstin: yup.string().gstin(),  // optional field\r\n * })\r\n */\r\nexport function setupPramanaYup(): void {\r\n    yup.addMethod(yup.string, 'aadhaar', aadhaarMethod());\r\n    yup.addMethod(yup.string, 'pan', panMethod());\r\n    yup.addMethod(yup.string, 'gstin', gstinMethod());\r\n    yup.addMethod(yup.string, 'ifsc', ifscMethod());\r\n    yup.addMethod(yup.string, 'pincode', pincodeMethod());\r\n    yup.addMethod(yup.string, 'tan', tanMethod());\r\n    yup.addMethod(yup.string, 'uan', uanMethod());\r\n    yup.addMethod(yup.string, 'voterId', voterIdMethod());\r\n    yup.addMethod(yup.string, 'dl', dlMethod());\r\n    yup.addMethod(yup.string, 'passport', passportMethod());\r\n    yup.addMethod(yup.string, 'upi', upiMethod());\r\n    yup.addMethod(yup.string, 'phone', phoneMethod());\r\n    yup.addMethod(yup.string, 'msme', msmeMethod());\r\n}\r\n\r\ndeclare module 'yup' {\r\n    interface StringSchema<\r\n        TType extends yup.Maybe<string> = string | undefined,\r\n        TContext = yup.AnyObject,\r\n        TDefault = undefined,\r\n        TFlags extends yup.Flags = '',\r\n    > {\r\n        aadhaar(message?: string): StringSchema<TType, TContext, TDefault, TFlags>;\r\n        pan(message?: string): StringSchema<TType, TContext, TDefault, TFlags>;\r\n        gstin(message?: string): StringSchema<TType, TContext, TDefault, TFlags>;\r\n        ifsc(message?: string): StringSchema<TType, TContext, TDefault, TFlags>;\r\n        pincode(message?: string): StringSchema<TType, TContext, TDefault, TFlags>;\r\n        tan(message?: string): StringSchema<TType, TContext, TDefault, TFlags>;\r\n        uan(message?: string): StringSchema<TType, TContext, TDefault, TFlags>;\r\n        voterId(message?: string): StringSchema<TType, TContext, TDefault, TFlags>;\r\n        dl(message?: string): StringSchema<TType, TContext, TDefault, TFlags>;\r\n        passport(message?: string): StringSchema<TType, TContext, TDefault, TFlags>;\r\n        upi(message?: string): StringSchema<TType, TContext, TDefault, TFlags>;\r\n        phone(message?: string): StringSchema<TType, TContext, TDefault, TFlags>;\r\n        msme(message?: string): StringSchema<TType, TContext, TDefault, TFlags>;\r\n    }\r\n}\r\n"]}