Merge pull request #16595 from AJamesPhillips/FixJoiValidationObject

[hapi] Correct JoiValidationObject for route validate option.  Correct inject result.
This commit is contained in:
Arthur Ozga
2017-05-18 16:58:24 -07:00
committed by GitHub
4 changed files with 31 additions and 6 deletions
+8 -5
View File
@@ -35,8 +35,11 @@ import domain = require("domain");
import * as Boom from 'boom';
import {
ValidationOptions as JoiValidationOptions,
Schema as JoiValidationObject,
SchemaMap as JoiSchemaMap,
Schema as JoiSchema,
} from 'joi';
// TODO check JoiValidationObject is correct for "a Joi validation object"
type JoiValidationObject = JoiSchema | JoiSchemaMap | (JoiSchema | JoiSchemaMap)[];
import * as Catbox from 'catbox';
import {MimosOptions} from 'mimos';
@@ -701,7 +704,7 @@ export interface InjectedRequestOptions extends Shot.RequestOptions {
*/
export interface InjectedResponseObject extends Shot.ResponseObject {
/** the raw handler response (e.g. when not a stream or a view) before it is serialized for transmission. If not available, the value is set to payload. Useful for inspection and reuse of the internal objects returned (instead of parsing the response string). */
result: Shot.ResponseObject | string;
result: Object | string;
/** the request object. */
request: InjectedRequestOptions;
}
@@ -1350,7 +1353,7 @@ export interface RouteResponseConfigurationObject {
* and
* For context see RouteAdditionalConfigurationOptions > response > status
*/
export type RouteResponseConfigurationScheme = boolean | JoiValidationObject | ValidationFunctionForRouteReponse;
export type RouteResponseConfigurationScheme = boolean | JoiValidationObject | ValidationFunctionForRouteResponse;
/**
* see RouteResponseConfigurationScheme
@@ -1359,7 +1362,7 @@ export type RouteResponseConfigurationScheme = boolean | JoiValidationObject | V
* TODO check `options: JoiValidationOptions` is correct
* Also see ValidationFunctionForRouteValidate
*/
export interface ValidationFunctionForRouteReponse {
export interface ValidationFunctionForRouteResponse {
(value: Response, options: JoiValidationOptions, next: ContinuationFunction): void;
}
@@ -1445,7 +1448,7 @@ export interface RouteValidationConfigurationObject {
* TODO check `value: Response` is correct as it says "**the object containing** the response object." not just "the response object".
* TODO check `options: JoiValidationOptions` is correct
* TODO type of the returned value?
* Also see ValidationFunctionForRouteReponse
* Also see ValidationFunctionForRouteResponse
* @param value - the object containing the request headers.
* @param options - the server validation options.
* @param next(err, value) - the callback function called when validation is completed.
+20
View File
@@ -0,0 +1,20 @@
// Added from: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/16065#issuecomment-302216131
import * as Hapi from 'hapi';
import * as Joi from 'joi';
const validate: Hapi.RouteValidationConfigurationObject = {
headers: true,
params: {
id: Joi.string(),
},
payload: Joi.object().required(),
query: {
providerId: Joi.string(),
},
};
const config: Hapi.RouteAdditionalConfigurationOptions = {
validate,
};
+2 -1
View File
@@ -13,6 +13,7 @@ const handler: Hapi.RouteHandler = function (request, reply) {
server.route({ method: 'GET', path: '/', handler: handler });
server.inject('/', (res) => {
const num: number = res.statusCode;
const result = res.result as {aField: string};
console.log(res.result);
});
+1
View File
@@ -48,6 +48,7 @@
"test/route/plugins.ts",
"test/route/prerequisites.ts",
"test/route/public-interface.ts",
"test/route/validate.ts",
"test/server/app.ts",
"test/server/auth.ts",
"test/server/bind.ts",