𝗕𝘂𝗶𝗹𝗱𝗶𝗻𝗴 𝗬𝗼𝘂𝗿 𝗢𝘄𝗻 𝗖𝘁𝗿𝗼𝗘𝗻𝘃 𝗩𝗮𝗹𝗶𝗱𝗮𝘁𝗼𝗿𝘀
CtroEnv ನಲ್ಲಿರುವ ಬಿಲ್ಟ್-ಇನ್ ವ್ಯಾಲಿಡೇಟರ್ಗಳು ಮೂಲಭೂತ ಅಂಶಗಳನ್ನು ಒಳಗೊಂಡಿವೆ. ನೀವು string, number, boolean, ಮತ್ತು pick ಅನ್ನು ಪಡೆಯಬಹುದು. ಆದರೆ ಕೆಲವೊಮ್ಮೆ ನಿಮಗೆ ಹೆಚ್ಚಿನವುಗಳ ಅಗತ್ಯವಿರುತ್ತದೆ. ನನಗೆ ಒಂದು IPv6 ವ್ಯಾಲಿಡೇಟರ್ ಬೇಕಾಗಿತ್ತು. ಅದು ಅಲ್ಲಿ ಇರಲಿಲ್ಲ. ಆದ್ದರಿಂದ ನಾನು ಅದನ್ನು ನಿರ್ಮಿಸಿದೆ.
ನಾನು ಬಳಸುವ ಅದೇ ಪರಿಕರಗಳನ್ನು (tools) ಬಳಸಿ ನೀವು ನಿಮ್ಮದೇ ಆದ ವ್ಯಾಲಿಡೇಟರ್ಗಳನ್ನು ನಿರ್ಮಿಸಬಹುದು.
ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂಬುದು ಇಲ್ಲಿದೆ.
ವ್ಯಾಲಿಡೇಟರ್ ಎಂಬುದು ಒಂದು parse function ಮತ್ತು metadata ಹೊಂದಿರುವ ಒಂದು object ಆಗಿದೆ. parse function ಎಂಬುದು raw input ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು success ಅಥವಾ failure ಅನ್ನು ನೀಡುತ್ತದೆ.
ಪ್ರಾರಂಭಿಸಲು ನೀವು createValidator ಅನ್ನು ಬಳಸಬಹುದು. ಇದು ಅತ್ಯಂತ ಸರಳವಾದ ಮಾರ್ಗವಾಗಿದೆ.
ಆದಾಗ್ಯೂ, ಕೇವಲ ಒಂದು ವ್ಯಾಲಿಡೇಟರ್ನಲ್ಲಿ helper methods ಇರುವುದಿಲ್ಲ. ಅದರಲ್ಲಿ .default() ಅಥವಾ .optional() ಇರುವುದಿಲ್ಲ. ಈ methodಗಳನ್ನು ಸೇರಿಸಲು ನೀವು applyChain ಅನ್ನು ಬಳಸಲೇಬೇಕು.
ನೀವು string ಗಳಿಗೆ .min() ನಂತಹ ನಿರ್ದಿಷ್ಟ ಲಾಜಿಕ್ ಅನ್ನು ಸೇರಿಸಲು ಬಯಸಿದರೆ, ನೀವು ವ್ಯಾಲಿಡೇಟರ್ ಅನ್ನು extend ಮಾಡಬೇಕು. ಇದು ಮೂಲ ಲಾಜಿಕ್ ಅನ್ನು ಸುತ್ತುವರಿಯಲು (wrap) ಮತ್ತು ಹೊಸ ನಿಯಮಗಳನ್ನು ಸೇರಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.
ಕಸ್ಟಮ್ ಲಾಜಿಕ್ ಅನ್ನು ಸೇರಿಸಲು ಎರಡು ಮುಖ್ಯ ಮಾರ್ಗಗಳಿವೆ:
createValidatorಬಳಸಿ ಮೊದಲಿನಿಂದම ಹೊಸ ವ್ಯಾಲಿಡೇಟರ್ ಅನ್ನು ರಚಿಸಿ.- ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ವ್ಯಾಲಿಡೇಟರ್ ಅನ್ನು ಸುತ್ತುವರಿಯುವ (wrap) ಒಂದು refinement ಅನ್ನು ರಚಿಸಿ. Hex colors ಅಥವಾ email formats ನಂತಹ ವಿಷಯಗಳಿಗೆ refinements ಉತ್ತಮವಾಗಿವೆ.
ನೀವು ಬಳಸಬಹುದಾದ ಪರಿಕರಗಳ ಸಾರಾಂಶ ಇಲ್ಲಿದೆ:
• createValidator: ಕಸ್ಟಮ್ ಲಾಜಿಕ್ ಹೊಂದಿರುವ ಬೇಸ್ ವ್ಯಾಲಿಡೇಟರ್ ಅನ್ನು ರಚಿಸಿ.
• applyChain: .optional(), .default(), ಮತ್ತು .describe() ಅನ್ನು ಸೇರಿಸಿ.
• parseOk: ಯಶಸ್ವಿ ಫಲಿತಾಂಶವನ್ನು ನೀಡುತ್ತದೆ.
• singleError: ವಿಫಲ ಫಲಿತಾಂಶವನ್ನು ನೀಡುತ್ತದೆ.
• errType ಮತ್ತು errInvalid: ನಿರ್ದಿಷ್ಟ ಎರರ್ ಮೆಸೇಜ್ಗಳನ್ನು ರಚಿಸಿ.
ನೀವು ನಿಮ್ಮದೇ ಆದ ವ್ಯಾಲಿಡೇಟರ್ಗಳನ್ನು ಕಮ್ಯುನಿಟಿ ಪ್ಯಾಕೇಜ್ಗಳಾಗಿ (community packages) ಪ್ರಕಟಿಸಬಹುದು. @ctroenv/community- ಪ್ರಿಫಿಕ್ಸ್ ಅನ್ನು ಬಳಸಿ. ನಿಮ್ಮ ಪ್ಯಾಕೇಜ್ಗೆ @ctroenv/core ಕೇವಲ ಒಂದು dependency ಆಗಿದ್ದರೆ ಸಾಕು.
ನೀವು ಯಾವುದಾದರೂ ಉಪಯುಕ್ತವಾದದ್ದನ್ನು ನಿರ್ಮಿಸಿದರೆ, ದಯವಿಟ್ಟು ಅದನ್ನು ಹಂಚಿಕೊಳ್ಳಿ. ನೀವು PR ಅನ್ನು ಓಪನ್ ಮಾಡಬಹುದು ಅಥವಾ ಇತರರು ಬಳಸಲು ಅದನ್ನು ಪ್ರಕಟಿಸಬಹುದು.
Source: https://dev.to/ctrotech/building-your-own-ctroenv-validators-19h8