UNPKG

cerceis-lib

Version:

Contains list of quality of life functions that is written in TypeScript and es6

1 lines 12.1 kB
{"version":3,"sources":["../../src/validator/locales/en.ts","../../src/validator/locales/ja.ts","../../src/validator/index.ts"],"sourcesContent":["export const localeEn = {\n min: (min: string): string => `Min ${min}`,\n max: (max: string): string => `Max ${max}`,\n isEmail: \"Invalid Email\",\n required: \"Required\",\n alphanumeric: \"Value needs to be alphanumeric ( 0~9, a~Z )\",\n noSpecials: \"Must not contain special symbols (!@$%...etc)\",\n isUUIDv4: \"Value needs to be a v4 UUID\",\n isSameAs: \"Value does not match\",\n};\n","export const localeJa = {\n min: (min: string): string => `最小 ${min}`,\n max: (max: string): string => `最大 ${max}`,\n isEmail: \"無効なメールです\",\n required: \"必要項目です\",\n alphanumeric: \"半角英文字・数字を入れてください ( 0~9, a~Z )\",\n noSpecials: \"特殊記号は使えません (!@$%...など)\",\n isUUIDv4: \"無効なUUIDv4\",\n isSameAs: \"再確認できませんでした\",\n};\n","import { localeEn } from \"./locales/en\";\nimport { localeJa } from \"./locales/ja\";\n\ninterface ValidationError {\n errored: unknown;\n code: string;\n label?: string;\n}\n\nexport type Locale = \"en\" | \"ja\";\n\nconst errorMsg: Record<Locale, typeof localeEn> = {\n en: localeEn,\n ja: localeJa,\n};\n\nexport class Validator {\n private locale: Locale = \"en\";\n public inputValue: unknown;\n private currentErrorName = \"\";\n public errorMap: Record<string, ValidationError[]> = {};\n private pristineMap: Record<string, boolean> = {};\n private valueMap: Record<string, unknown> = {};\n\n public setLocale(locale: Locale): void {\n this.locale = locale;\n }\n\n public value(inputValue: unknown): this {\n this.inputValue = inputValue;\n return this;\n }\n\n /**\n * Name the current value for grouping errors in errorMap.\n * Must be chained after value().\n */\n public as(inputName: string): this {\n this.currentErrorName = inputName;\n if (this.pristineMap[inputName] === undefined) {\n this.pristineMap[inputName] = true;\n } else if (this.valueMap[inputName] !== this.inputValue) {\n this.pristineMap[inputName] = false;\n }\n this.errorMap[inputName] = [];\n this.valueMap[inputName] = this.inputValue;\n return this;\n }\n\n private _addError(err: ValidationError): void {\n if (!this.currentErrorName) return;\n if (this.pristineMap[this.currentErrorName]) return;\n if (!this.errorMap[this.currentErrorName])\n this.errorMap[this.currentErrorName] = [];\n this.errorMap[this.currentErrorName].push(err);\n }\n\n // Static type guards\n public static isDefined = (x: unknown): boolean => x !== undefined && x !== null;\n public static isUndefined = (x: unknown): boolean => x === undefined;\n public static isArray = Array.isArray;\n public static isString = (x: unknown): boolean => typeof x === \"string\" || x instanceof String;\n public static isObject = (x: unknown): boolean => Object.prototype.toString.call(x) === \"[object Object]\";\n public static isNumber = (x: unknown): boolean => Object.prototype.toString.call(x) === \"[object Number]\";\n public static isBoolean = (x: unknown): boolean => Object.prototype.toString.call(x) === \"[object Boolean]\";\n\n /**\n * Check minimum length (strings/arrays) or minimum value (numbers).\n * Does not check for null/undefined — use required() for that.\n */\n public min(min: number): this {\n if (!this.inputValue) return this;\n if (Validator.isArray(this.inputValue) || Validator.isString(this.inputValue)) {\n if ((this.inputValue as string | unknown[]).length < min)\n this._addError({ errored: this.inputValue, code: \"MinReachedS\", label: errorMsg[this.locale].min(String(min)) });\n } else if (Validator.isNumber(this.inputValue)) {\n if ((this.inputValue as number) < min)\n this._addError({ errored: this.inputValue, code: \"MinReachedN\", label: errorMsg[this.locale].min(String(min)) });\n }\n return this;\n }\n\n public max(max: number): this {\n if (!this.inputValue) return this;\n if (Validator.isArray(this.inputValue) || Validator.isString(this.inputValue)) {\n if ((this.inputValue as string | unknown[]).length > max)\n this._addError({ errored: this.inputValue, code: \"MaxReachedS\", label: errorMsg[this.locale].max(String(max)) });\n } else if (Validator.isNumber(this.inputValue)) {\n if ((this.inputValue as number) > max)\n this._addError({ errored: this.inputValue, code: \"MaxReachedN\", label: errorMsg[this.locale].max(String(max)) });\n }\n return this;\n }\n\n public isEmail(): this {\n if (!this.inputValue) return this;\n if (!/.+@.+\\..+/.test(String(this.inputValue)))\n this._addError({ errored: this.inputValue, code: \"InvalidEmail\", label: errorMsg[this.locale].isEmail });\n return this;\n }\n\n public required(): this {\n if (this.inputValue === \"\" || this.inputValue === null || this.inputValue === undefined)\n this._addError({ errored: this.inputValue, code: \"REQUIRED\", label: errorMsg[this.locale].required });\n return this;\n }\n\n public alphanumeric(): this {\n if (!this.inputValue) throw new Error(\"Please provide a value\");\n if (!/^[0-9a-zA-Z]+$/.test(String(this.inputValue)))\n this._addError({ errored: this.inputValue, code: \"ALPHANUM\", label: errorMsg[this.locale].alphanumeric });\n return this;\n }\n\n public noSpecials(space: boolean = true, extendJpn: boolean | null = false): this {\n if (!this.inputValue) return this;\n let format = /[`!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?~]/;\n if (!space) format = /[ `!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?~]/;\n if (extendJpn) format = /[`!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?~`!@#$%^&*()_+ー=「」『』;':\"\|、。<>・?〜]/;\n if (!space && extendJpn) format = /[ `!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?~ `!@#$%^&*()_+ー=「」『』;':\"\|、。<>・?〜]/;\n if (format.test(String(this.inputValue)))\n this._addError({ errored: this.inputValue, code: \"SPESYMBOL\", label: errorMsg[this.locale].noSpecials });\n return this;\n }\n\n public isUUIDv4(): this {\n if (!this.inputValue) throw new Error(\"Please provide a value\");\n if (!/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i.test(String(this.inputValue)))\n this._addError({ errored: this.inputValue, code: \"INVALID_UUIDV4\", label: errorMsg[this.locale].isUUIDv4 });\n return this;\n }\n\n public isSameAs(value: unknown): this {\n if (!this.inputValue) throw new Error(\"Please provide a value\");\n if (this.inputValue !== value)\n this._addError({ errored: this.inputValue, code: \"NOT_SAME\", label: errorMsg[this.locale].isSameAs });\n return this;\n }\n\n public verify(returnErrors: boolean = false): boolean | Record<string, ValidationError[]> {\n const hasErrors = Object.values(this.errorMap).some((errs) => errs.length > 0);\n if (hasErrors) return returnErrors ? this.errorMap : false;\n return true;\n }\n\n public hasError(): boolean {\n return Object.values(this.errorMap).some((errs) => errs.length > 0);\n }\n\n public reset(): void {\n this.inputValue = null;\n this.errorMap = {};\n this.currentErrorName = \"\";\n this.pristineMap = {};\n this.valueMap = {};\n }\n}\n\nexport const validator = new Validator();\n"],"mappings":";AAAO,IAAM,WAAW;AAAA,EACpB,KAAK,CAAC,QAAwB,OAAO,GAAG;AAAA,EACxC,KAAK,CAAC,QAAwB,OAAO,GAAG;AAAA,EACxC,SAAS;AAAA,EACT,UAAU;AAAA,EACV,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,UAAU;AACd;;;ACTO,IAAM,WAAW;AAAA,EACpB,KAAK,CAAC,QAAwB,gBAAM,GAAG;AAAA,EACvC,KAAK,CAAC,QAAwB,gBAAM,GAAG;AAAA,EACvC,SAAS;AAAA,EACT,UAAU;AAAA,EACV,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,UAAU;AACd;;;ACEA,IAAM,WAA4C;AAAA,EAC9C,IAAI;AAAA,EACJ,IAAI;AACR;AAEO,IAAM,aAAN,MAAM,WAAU;AAAA,EAAhB;AACH,SAAQ,SAAiB;AAEzB,SAAQ,mBAAmB;AAC3B,SAAO,WAA8C,CAAC;AACtD,SAAQ,cAAuC,CAAC;AAChD,SAAQ,WAAoC,CAAC;AAAA;AAAA,EAEtC,UAAU,QAAsB;AACnC,SAAK,SAAS;AAAA,EAClB;AAAA,EAEO,MAAM,YAA2B;AACpC,SAAK,aAAa;AAClB,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMO,GAAG,WAAyB;AAC/B,SAAK,mBAAmB;AACxB,QAAI,KAAK,YAAY,SAAS,MAAM,QAAW;AAC3C,WAAK,YAAY,SAAS,IAAI;AAAA,IAClC,WAAW,KAAK,SAAS,SAAS,MAAM,KAAK,YAAY;AACrD,WAAK,YAAY,SAAS,IAAI;AAAA,IAClC;AACA,SAAK,SAAS,SAAS,IAAI,CAAC;AAC5B,SAAK,SAAS,SAAS,IAAI,KAAK;AAChC,WAAO;AAAA,EACX;AAAA,EAEQ,UAAU,KAA4B;AAC1C,QAAI,CAAC,KAAK,iBAAkB;AAC5B,QAAI,KAAK,YAAY,KAAK,gBAAgB,EAAG;AAC7C,QAAI,CAAC,KAAK,SAAS,KAAK,gBAAgB;AACpC,WAAK,SAAS,KAAK,gBAAgB,IAAI,CAAC;AAC5C,SAAK,SAAS,KAAK,gBAAgB,EAAE,KAAK,GAAG;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA,EAeO,IAAI,KAAmB;AAC1B,QAAI,CAAC,KAAK,WAAY,QAAO;AAC7B,QAAI,WAAU,QAAQ,KAAK,UAAU,KAAK,WAAU,SAAS,KAAK,UAAU,GAAG;AAC3E,UAAK,KAAK,WAAkC,SAAS;AACjD,aAAK,UAAU,EAAE,SAAS,KAAK,YAAY,MAAM,eAAe,OAAO,SAAS,KAAK,MAAM,EAAE,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;AAAA,IACvH,WAAW,WAAU,SAAS,KAAK,UAAU,GAAG;AAC5C,UAAK,KAAK,aAAwB;AAC9B,aAAK,UAAU,EAAE,SAAS,KAAK,YAAY,MAAM,eAAe,OAAO,SAAS,KAAK,MAAM,EAAE,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;AAAA,IACvH;AACA,WAAO;AAAA,EACX;AAAA,EAEO,IAAI,KAAmB;AAC1B,QAAI,CAAC,KAAK,WAAY,QAAO;AAC7B,QAAI,WAAU,QAAQ,KAAK,UAAU,KAAK,WAAU,SAAS,KAAK,UAAU,GAAG;AAC3E,UAAK,KAAK,WAAkC,SAAS;AACjD,aAAK,UAAU,EAAE,SAAS,KAAK,YAAY,MAAM,eAAe,OAAO,SAAS,KAAK,MAAM,EAAE,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;AAAA,IACvH,WAAW,WAAU,SAAS,KAAK,UAAU,GAAG;AAC5C,UAAK,KAAK,aAAwB;AAC9B,aAAK,UAAU,EAAE,SAAS,KAAK,YAAY,MAAM,eAAe,OAAO,SAAS,KAAK,MAAM,EAAE,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;AAAA,IACvH;AACA,WAAO;AAAA,EACX;AAAA,EAEO,UAAgB;AACnB,QAAI,CAAC,KAAK,WAAY,QAAO;AAC7B,QAAI,CAAC,YAAY,KAAK,OAAO,KAAK,UAAU,CAAC;AACzC,WAAK,UAAU,EAAE,SAAS,KAAK,YAAY,MAAM,gBAAgB,OAAO,SAAS,KAAK,MAAM,EAAE,QAAQ,CAAC;AAC3G,WAAO;AAAA,EACX;AAAA,EAEO,WAAiB;AACpB,QAAI,KAAK,eAAe,MAAM,KAAK,eAAe,QAAQ,KAAK,eAAe;AAC1E,WAAK,UAAU,EAAE,SAAS,KAAK,YAAY,MAAM,YAAY,OAAO,SAAS,KAAK,MAAM,EAAE,SAAS,CAAC;AACxG,WAAO;AAAA,EACX;AAAA,EAEO,eAAqB;AACxB,QAAI,CAAC,KAAK,WAAY,OAAM,IAAI,MAAM,wBAAwB;AAC9D,QAAI,CAAC,iBAAiB,KAAK,OAAO,KAAK,UAAU,CAAC;AAC9C,WAAK,UAAU,EAAE,SAAS,KAAK,YAAY,MAAM,YAAY,OAAO,SAAS,KAAK,MAAM,EAAE,aAAa,CAAC;AAC5G,WAAO;AAAA,EACX;AAAA,EAEO,WAAW,QAAiB,MAAM,YAA4B,OAAa;AAC9E,QAAI,CAAC,KAAK,WAAY,QAAO;AAC7B,QAAI,SAAS;AACb,QAAI,CAAC,MAAO,UAAS;AACrB,QAAI,UAAW,UAAS;AACxB,QAAI,CAAC,SAAS,UAAW,UAAS;AAClC,QAAI,OAAO,KAAK,OAAO,KAAK,UAAU,CAAC;AACnC,WAAK,UAAU,EAAE,SAAS,KAAK,YAAY,MAAM,aAAa,OAAO,SAAS,KAAK,MAAM,EAAE,WAAW,CAAC;AAC3G,WAAO;AAAA,EACX;AAAA,EAEO,WAAiB;AACpB,QAAI,CAAC,KAAK,WAAY,OAAM,IAAI,MAAM,wBAAwB;AAC9D,QAAI,CAAC,yEAAyE,KAAK,OAAO,KAAK,UAAU,CAAC;AACtG,WAAK,UAAU,EAAE,SAAS,KAAK,YAAY,MAAM,kBAAkB,OAAO,SAAS,KAAK,MAAM,EAAE,SAAS,CAAC;AAC9G,WAAO;AAAA,EACX;AAAA,EAEO,SAAS,OAAsB;AAClC,QAAI,CAAC,KAAK,WAAY,OAAM,IAAI,MAAM,wBAAwB;AAC9D,QAAI,KAAK,eAAe;AACpB,WAAK,UAAU,EAAE,SAAS,KAAK,YAAY,MAAM,YAAY,OAAO,SAAS,KAAK,MAAM,EAAE,SAAS,CAAC;AACxG,WAAO;AAAA,EACX;AAAA,EAEO,OAAO,eAAwB,OAAoD;AACtF,UAAM,YAAY,OAAO,OAAO,KAAK,QAAQ,EAAE,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC;AAC7E,QAAI,UAAW,QAAO,eAAe,KAAK,WAAW;AACrD,WAAO;AAAA,EACX;AAAA,EAEO,WAAoB;AACvB,WAAO,OAAO,OAAO,KAAK,QAAQ,EAAE,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC;AAAA,EACtE;AAAA,EAEO,QAAc;AACjB,SAAK,aAAa;AAClB,SAAK,WAAW,CAAC;AACjB,SAAK,mBAAmB;AACxB,SAAK,cAAc,CAAC;AACpB,SAAK,WAAW,CAAC;AAAA,EACrB;AACJ;AAAA;AA5Ia,WA0CK,YAAY,CAAC,MAAwB,MAAM,UAAa,MAAM;AA1CnE,WA2CK,cAAc,CAAC,MAAwB,MAAM;AA3ClD,WA4CK,UAAU,MAAM;AA5CrB,WA6CK,WAAW,CAAC,MAAwB,OAAO,MAAM,YAAY,aAAa;AA7C/E,WA8CK,WAAW,CAAC,MAAwB,OAAO,UAAU,SAAS,KAAK,CAAC,MAAM;AA9C/E,WA+CK,WAAW,CAAC,MAAwB,OAAO,UAAU,SAAS,KAAK,CAAC,MAAM;AA/C/E,WAgDK,YAAY,CAAC,MAAwB,OAAO,UAAU,SAAS,KAAK,CAAC,MAAM;AAhDtF,IAAM,YAAN;AA8IA,IAAM,YAAY,IAAI,UAAU;","names":[]}