@midwayjs/validate 3.0.3 → 3.0.4-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +9 -10
- package/dist/config/config.default.js.map +0 -1
- package/dist/configuration.js.map +0 -1
- package/dist/constants.js.map +0 -1
- package/dist/decorator/rule.js.map +0 -1
- package/dist/decorator/validate.js.map +0 -1
- package/dist/dtoHelper.js.map +0 -1
- package/dist/error.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/service.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@midwayjs/validate",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.4-beta.1",
|
|
4
4
|
"description": "Midway Component for mongoose",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "index.d.ts",
|
|
@@ -16,23 +16,22 @@
|
|
|
16
16
|
"dist/**/*.js",
|
|
17
17
|
"dist/**/*.d.ts",
|
|
18
18
|
"locales",
|
|
19
|
-
"index.d.ts"
|
|
20
|
-
"dist/**/*.js.map"
|
|
19
|
+
"index.d.ts"
|
|
21
20
|
],
|
|
22
21
|
"engines": {
|
|
23
22
|
"node": ">=12"
|
|
24
23
|
},
|
|
25
24
|
"license": "MIT",
|
|
26
25
|
"dependencies": {
|
|
27
|
-
"@midwayjs/i18n": "^3.0.
|
|
26
|
+
"@midwayjs/i18n": "^3.0.4-beta.1",
|
|
28
27
|
"joi": "^17.2.1"
|
|
29
28
|
},
|
|
30
29
|
"devDependencies": {
|
|
31
|
-
"@midwayjs/core": "^3.0.
|
|
32
|
-
"@midwayjs/decorator": "^3.0.
|
|
33
|
-
"@midwayjs/express": "^3.0.
|
|
34
|
-
"@midwayjs/koa": "^3.0.
|
|
35
|
-
"@midwayjs/mock": "^3.0.
|
|
30
|
+
"@midwayjs/core": "^3.0.4-beta.1",
|
|
31
|
+
"@midwayjs/decorator": "^3.0.4-beta.1",
|
|
32
|
+
"@midwayjs/express": "^3.0.4-beta.1",
|
|
33
|
+
"@midwayjs/koa": "^3.0.4-beta.1",
|
|
34
|
+
"@midwayjs/mock": "^3.0.4-beta.1"
|
|
36
35
|
},
|
|
37
|
-
"gitHead": "
|
|
36
|
+
"gitHead": "52bc37e7a570806c121b33a0e8ac1cd084445f5d"
|
|
38
37
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.default.js","sourceRoot":"","sources":["../../src/config/config.default.ts"],"names":[],"mappings":";;;AAEa,QAAA,QAAQ,GAAoB;IACvC,iBAAiB,EAAE,EAAE;IACrB,WAAW,EAAE,GAAG;CACjB,CAAC;AAEW,QAAA,IAAI,GAAG;IAClB,WAAW,EAAE;QACX,KAAK,EAAE;YACL,QAAQ,EAAE,OAAO,CAAC,0BAA0B,CAAC;SAC9C;QACD,KAAK,EAAE;YACL,QAAQ,EAAE,OAAO,CAAC,0BAA0B,CAAC;SAC9C;KACF;CACF,CAAC","sourcesContent":["import { ValidateOptions } from '../decorator/validate';\n\nexport const validate: ValidateOptions = {\n validationOptions: {},\n errorStatus: 422,\n};\n\nexport const i18n = {\n localeTable: {\n en_US: {\n validate: require('../../locales/en_US.json'),\n },\n zh_CN: {\n validate: require('../../locales/zh_CN.json'),\n },\n },\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAK6B;AAC7B,yCAA6E;AAC7E,2CAA2C;AAC3C,6BAA6B;AAC7B,yDAAyD;AACzD,uCAA4C;AAC5C,uCAAuC;AAEvC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAW5C,IAAa,qBAAqB,GAAlC,MAAa,qBAAqB;IAOhC,KAAK,CAAC,OAAO;QACX,KAAK,CAAC,mCAAmC,wBAAY,YAAY,CAAC,CAAC;QACnE,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,wBAAY,EAAE,OAAO,CAAC,EAAE;;YAClE,8BAA8B;YAC9B,MAAM,UAAU,GAAG,IAAA,+BAAmB,EACpC,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,YAAY,CACrB,CAAC;YAEF,MAAM,eAAe,GAAG,MAAA,OAAO,CAAC,QAAQ,0CAAE,OAAO,CAAC;YAElD,oBAAoB;YACpB,OAAO;gBACL,MAAM,EAAE,CAAC,SAAoB,EAAE,EAAE;oBAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAC1C,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;4BAC3B,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,0BAAmB,CAAC,CAAC;4BACvD,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE;gCAChC,eAAe,CAAC,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;6BAC/D;yBACF;wBACD,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;wBAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAC1C,IAAI,EACJ,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EACjB,eAAe,CAChB,CAAC;wBACF,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE;4BAC1B,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;yBAClC;qBACF;gBACH,CAAC;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAxCC;IADC,IAAA,kBAAM,GAAE;8BACS,6BAAsB;+DAAC;AAGzC;IADC,IAAA,kBAAM,GAAE;8BACQ,yBAAe;8DAAC;AALtB,qBAAqB;IATjC,IAAA,yBAAa,EAAC;QACb,SAAS,EAAE,UAAU;QACrB,OAAO,EAAE,CAAC,IAAI,CAAC;QACf,aAAa,EAAE;YACb;gBACE,OAAO,EAAE,aAAa;aACvB;SACF;KACF,CAAC;GACW,qBAAqB,CA0CjC;AA1CY,sDAAqB","sourcesContent":["import {\n Configuration,\n Inject,\n getMethodParamTypes,\n JoinPoint,\n} from '@midwayjs/decorator';\nimport { MidwayDecoratorService, REQUEST_OBJ_CTX_KEY } from '@midwayjs/core';\nimport { VALIDATE_KEY } from './constants';\nimport * as util from 'util';\nimport * as DefaultConfig from './config/config.default';\nimport { ValidateService } from './service';\nimport * as i18n from '@midwayjs/i18n';\n\nconst debug = util.debuglog('midway:debug');\n\n@Configuration({\n namespace: 'validate',\n imports: [i18n],\n importConfigs: [\n {\n default: DefaultConfig,\n },\n ],\n})\nexport class ValidateConfiguration {\n @Inject()\n decoratorService: MidwayDecoratorService;\n\n @Inject()\n validateService: ValidateService;\n\n async onReady() {\n debug(`[validate]: Register @validate \"${VALIDATE_KEY}\" handler\"`);\n this.decoratorService.registerMethodHandler(VALIDATE_KEY, options => {\n // get param types from method\n const paramTypes = getMethodParamTypes(\n options.target,\n options.propertyName\n );\n\n const validateOptions = options.metadata?.options;\n\n // add aspect method\n return {\n before: (joinPoint: JoinPoint) => {\n for (let i = 0; i < paramTypes.length; i++) {\n if (!validateOptions.locale) {\n const maybeCtx = joinPoint.target[REQUEST_OBJ_CTX_KEY];\n if (maybeCtx && maybeCtx.getAttr) {\n validateOptions.locale = maybeCtx.getAttr(i18n.I18N_ATTR_KEY);\n }\n }\n const item = paramTypes[i];\n const result = this.validateService.validate(\n item,\n joinPoint.args[i],\n validateOptions\n );\n if (result && result.value) {\n joinPoint.args[i] = result.value;\n }\n }\n },\n };\n });\n }\n}\n"]}
|
package/dist/constants.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG,cAAc,CAAC;AAC3B,QAAA,YAAY,GAAG,iBAAiB,CAAC","sourcesContent":["export const RULES_KEY = 'common:rules';\nexport const VALIDATE_KEY = 'common:validate';\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rule.js","sourceRoot":"","sources":["../../src/decorator/rule.ts"],"names":[],"mappings":";;;AAAA,2BAA2B;AAwDX,uBAAQ;AAvDxB,mDAK6B;AAC7B,4CAAyC;AAQzC,SAAgB,IAAI,CAAC,IAAI,EAAE,UAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;IAClE,OAAO,UAAU,GAAG,IAAI;QACtB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;YACX,QAAQ;YACR,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACvB,IAAI,GAAG,GAAG;qBACP,MAAM,CAAC,IAAA,4BAAgB,EAAC,qBAAS,EAAE,IAAI,CAAC,CAAC;qBACzC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3B,IAAI,IAAA,2BAAe,EAAC,MAAM,EAAE,WAAW,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;oBACzD,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC/B,IAAI,OAAO,CAAC,GAAG,EAAE;wBACf,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;qBAC9B;oBACD,IAAI,OAAO,CAAC,GAAG,EAAE;wBACf,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;qBAC9B;iBACF;gBACD,IAAI,OAAO,CAAC,QAAQ,EAAE;oBACpB,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;iBACxB;aACF;YAED,IAAA,+BAAmB,EAAC,qBAAS,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;SAC3D;aAAM;YACL,OAAO;YACP,MAAM,KAAK,GAAG,IAAA,4BAAgB,EAAC,qBAAS,EAAE,IAAI,CAAC,CAAC;YAChD,IAAI,KAAK,EAAE;gBACT,IAAI,WAAW,GAAG,IAAA,4BAAgB,EAAC,qBAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvD,WAAW,GAAG,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;wBACtB,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;qBACjC;gBACH,CAAC,CAAC,CAAC;gBACH,IAAA,6BAAiB,EAAC,qBAAS,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aACpD;SACF;IACH,CAAC,CAAC;AACJ,CAAC;AAvCD,oBAuCC","sourcesContent":["import * as joi from 'joi';\nimport {\n attachClassMetadata,\n getClassMetadata,\n getPropertyType,\n saveClassMetadata,\n} from '@midwayjs/decorator';\nimport { RULES_KEY } from '../constants';\n\nexport interface RuleOptions {\n required?: boolean;\n min?: number;\n max?: number;\n}\n\nexport function Rule(rule, options: RuleOptions = { required: true }) {\n return function (...args) {\n if (args[1]) {\n // 函数装饰器\n const [target, propertyKey] = args;\n if (!joi.isSchema(rule)) {\n rule = joi\n .object(getClassMetadata(RULES_KEY, rule))\n .meta({ id: rule.name });\n if (getPropertyType(target, propertyKey).name === 'Array') {\n rule = joi.array().items(rule);\n if (options.min) {\n rule = rule.min(options.min);\n }\n if (options.max) {\n rule = rule.max(options.max);\n }\n }\n if (options.required) {\n rule = rule.required();\n }\n }\n\n attachClassMetadata(RULES_KEY, rule, target, propertyKey);\n } else {\n //类的装饰器\n const rules = getClassMetadata(RULES_KEY, rule);\n if (rules) {\n let currentRule = getClassMetadata(RULES_KEY, args[0]);\n currentRule = currentRule ?? {};\n Object.keys(rules).map(item => {\n if (!currentRule[item]) {\n currentRule[item] = rules[item];\n }\n });\n saveClassMetadata(RULES_KEY, currentRule, args[0]);\n }\n }\n };\n}\n\nexport { joi as RuleType };\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/decorator/validate.ts"],"names":[],"mappings":";;;AAAA,mDAAkE;AAClE,4CAA4C;AAS5C,SAAgB,QAAQ,CAAC,UAA2B,EAAE;IACpD,OAAO,IAAA,uCAA2B,EAAC,wBAAY,EAAE;QAC/C,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAJD,4BAIC","sourcesContent":["import { createCustomMethodDecorator } from '@midwayjs/decorator';\nimport { VALIDATE_KEY } from '../constants';\nimport * as Joi from 'joi';\n\nexport interface ValidateOptions {\n errorStatus?: number;\n locale?: string;\n validationOptions?: Joi.ValidationOptions;\n}\n\nexport function Validate(options: ValidateOptions = {}) {\n return createCustomMethodDecorator(VALIDATE_KEY, {\n options,\n });\n}\n"]}
|
package/dist/dtoHelper.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dtoHelper.js","sourceRoot":"","sources":["../src/dtoHelper.ts"],"names":[],"mappings":";;;AAAA,mDAG6B;AAC7B,2CAAwC;AAMxC,SAAgB,OAAO,CACrB,GAAW,EACX,IAAS;IAET,MAAM,SAAS,GAAQ,cAAa,CAAC,CAAC;IACtC,SAAS,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;IACpC,MAAM,UAAU,GAAG,IAAA,oCAAwB,EAAC,qBAAS,EAAE,GAAG,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAQ,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACtB,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;YACnB,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;SACnC;KACF;IACD,IAAA,6BAAiB,EAAC,qBAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IACpD,OAAO,SAA8C,CAAC;AACxD,CAAC;AAfD,0BAeC;AAED,SAAgB,OAAO,CACrB,GAAW,EACX,IAAS;IAET,MAAM,SAAS,GAAQ,cAAa,CAAC,CAAC;IACtC,SAAS,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;IACpC,MAAM,UAAU,GAAG,IAAA,oCAAwB,EAAC,qBAAS,EAAE,GAAG,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAQ,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACtD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACtB,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;KACxB;IACD,IAAA,6BAAiB,EAAC,qBAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IACpD,OAAO,SAA8C,CAAC;AACxD,CAAC;AAbD,0BAaC","sourcesContent":["import {\n getClassExtendedMetadata,\n saveClassMetadata,\n} from '@midwayjs/decorator';\nimport { RULES_KEY } from './constants';\n\nexport interface Dto<T> extends Function {\n new (): T;\n}\n\nexport function PickDto<T, K extends keyof T>(\n dto: Dto<T>,\n keys: K[]\n): Dto<Pick<T, typeof keys[number]>> {\n const pickedDto: any = function () {};\n pickedDto.prototype = dto.prototype;\n const fatherRule = getClassExtendedMetadata(RULES_KEY, dto);\n const pickedRule: any = {};\n for (const key of keys) {\n if (fatherRule[key]) {\n pickedRule[key] = fatherRule[key];\n }\n }\n saveClassMetadata(RULES_KEY, pickedRule, pickedDto);\n return pickedDto as Dto<Pick<T, typeof keys[number]>>;\n}\n\nexport function OmitDto<T, K extends keyof T>(\n dto: Dto<T>,\n keys: K[]\n): Dto<Omit<T, typeof keys[number]>> {\n const pickedDto: any = function () {};\n pickedDto.prototype = dto.prototype;\n const fatherRule = getClassExtendedMetadata(RULES_KEY, dto);\n const pickedRule: any = Object.assign({}, fatherRule);\n for (const key of keys) {\n delete pickedRule[key];\n }\n saveClassMetadata(RULES_KEY, pickedRule, pickedDto);\n return pickedDto as Dto<Omit<T, typeof keys[number]>>;\n}\n"]}
|
package/dist/error.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":";;;AAAA,yCAAoE;AAEpE,MAAM,iBAAiB,GAAG,IAAA,wBAAiB,EAAC,UAAU,EAAE;IACtD,aAAa,EAAE,KAAK;CACZ,CAAC,CAAC;AAEZ,MAAa,qBAAsB,SAAQ,sBAAe;IACxD,YAAY,OAAO,EAAE,MAAM,EAAE,KAAK;QAChC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,CAAC,aAAa,EAAE;YACtD,KAAK;SACN,CAAC,CAAC;IACL,CAAC;CACF;AAND,sDAMC","sourcesContent":["import { MidwayHttpError, registerErrorCode } from '@midwayjs/core';\n\nconst ValidateErrorCode = registerErrorCode('validate', {\n VALIDATE_FAIL: 10000,\n} as const);\n\nexport class MidwayValidationError extends MidwayHttpError {\n constructor(message, status, cause) {\n super(message, status, ValidateErrorCode.VALIDATE_FAIL, {\n cause,\n });\n }\n}\n"]}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,iDAAyE;AAAhE,8GAAA,qBAAqB,OAAiB;AAC/C,mDAAiC;AACjC,uDAAqC;AACrC,8CAA4B;AAC5B,4CAA0B;AAC1B,0CAAwB","sourcesContent":["export { ValidateConfiguration as Configuration } from './configuration';\nexport * from './decorator/rule';\nexport * from './decorator/validate';\nexport * from './dtoHelper';\nexport * from './service';\nexport * from './error';\n"]}
|
package/dist/service.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Config,\n getClassExtendedMetadata,\n Provide,\n Scope,\n ScopeEnum,\n Inject,\n Init,\n} from '@midwayjs/decorator';\nimport * as DefaultConfig from './config/config.default';\nimport { RULES_KEY } from './constants';\nimport * as Joi from 'joi';\nimport { MidwayI18nServiceSingleton, formatLocale } from '@midwayjs/i18n';\nimport { MidwayValidationError } from './error';\nimport { ObjectSchema } from 'joi';\n\n@Provide()\n@Scope(ScopeEnum.Singleton)\nexport class ValidateService {\n @Config('validate')\n protected validateConfig: typeof DefaultConfig.validate;\n\n @Config('i18n')\n protected i18nConfig;\n\n @Inject()\n protected i18nService: MidwayI18nServiceSingleton;\n\n protected messages = {};\n\n @Init()\n protected async init() {\n const locales = Object.keys(DefaultConfig.i18n.localeTable);\n locales.forEach(locale => {\n this.messages[formatLocale(locale)] = Object.fromEntries(\n this.i18nService.getLocaleMapping(locale, 'validate')\n );\n });\n }\n\n public validate<T extends new (...args) => any>(\n ClzType: T,\n value: any,\n options: {\n errorStatus?: number;\n locale?: string;\n validationOptions?: Joi.ValidationOptions;\n } = {}\n ): Joi.ValidationResult<T> {\n options.validationOptions = options.validationOptions || {};\n options.validationOptions.errors = options.validationOptions.errors || {};\n options.validationOptions.errors.language = formatLocale(\n this.i18nService.getAvailableLocale(\n options.validationOptions.errors.language ||\n options.locale ||\n this.i18nConfig.defaultLocale,\n 'validate'\n )\n );\n\n const rules = getClassExtendedMetadata(RULES_KEY, ClzType);\n if (rules) {\n const schema = Joi.object(rules);\n const result = schema.validate(\n value,\n Object.assign(\n this.validateConfig.validationOptions ?? {},\n {\n messages: this.messages,\n },\n options.validationOptions ?? {}\n )\n );\n if (result.error) {\n throw new MidwayValidationError(\n result.error.message,\n options?.errorStatus ?? this.validateConfig.errorStatus,\n result.error\n );\n } else {\n return result;\n }\n }\n }\n\n public validateWithSchema<T>(\n schema: ObjectSchema<any>,\n value: any,\n options: {\n errorStatus?: number;\n locale?: string;\n validationOptions?: Joi.ValidationOptions;\n } = {}\n ): Joi.ValidationResult<T> {\n options.validationOptions = options.validationOptions || {};\n options.validationOptions.errors = options.validationOptions.errors || {};\n options.validationOptions.errors.language = formatLocale(\n this.i18nService.getAvailableLocale(\n options.validationOptions.errors.language ||\n options.locale ||\n this.i18nConfig.defaultLocale,\n 'validate'\n )\n );\n\n const result = schema.validate(\n value,\n Object.assign(\n this.validateConfig.validationOptions ?? {},\n {\n messages: this.messages,\n },\n options.validationOptions ?? {}\n )\n );\n if (result.error) {\n throw new MidwayValidationError(\n result.error.message,\n options?.errorStatus ?? this.validateConfig.errorStatus,\n result.error\n );\n } else {\n return result;\n }\n }\n\n public getSchema<T extends new (...args) => any>(\n ClzType: T\n ): ObjectSchema<any> {\n const rules = getClassExtendedMetadata(RULES_KEY, ClzType);\n if (rules) {\n return Joi.object(rules);\n }\n }\n}\n"]}
|