Comparing version 0.0.1-5 to 0.0.1-6
@@ -95,4 +95,5 @@ import { ParentMetaData, MethodMetaData, ClassMetaData } from "kecubung"; | ||
identifierResolver?: IdentifierResolver; | ||
validators?: ValidatorCommand[]; | ||
validators?: Array<ValidatorCommand | string>; | ||
errorHandler?: (err: HttpError) => void; | ||
getStorage?: () => MetaDataStorage; | ||
} | ||
@@ -99,0 +100,0 @@ export interface MetaDataStorage { |
import * as Core from "./core"; | ||
export declare class Kamboja { | ||
private engine; | ||
private static facade; | ||
static getFacade(): Core.Facade; | ||
private options; | ||
private log; | ||
private storage; | ||
constructor(engine: Core.Engine, options?: Core.KambojaOption); | ||
@@ -9,0 +8,0 @@ private loadModels(); |
import * as Core from "../core"; | ||
import { JsonActionResult } from "../controller"; | ||
import { Validator } from "../validator"; | ||
export declare class ApiControllerExecutor implements Core.ExecutorCommand { | ||
private facade; | ||
private validator; | ||
private resolver; | ||
private routeInfo; | ||
private request; | ||
private binder; | ||
constructor(facade: Core.Facade, routeInfo: Core.RouteInfo, request: Core.HttpRequest); | ||
constructor(validator: Validator, resolver: Core.DependencyResolver, routeInfo: Core.RouteInfo, request: Core.HttpRequest); | ||
execute(): Promise<JsonActionResult>; | ||
} |
import * as Core from "../core"; | ||
import { Validator } from "../validator"; | ||
export declare class ControllerExecutor implements Core.ExecutorCommand { | ||
private facade; | ||
private validator; | ||
private resolver; | ||
private routeInfo; | ||
private request; | ||
private binder; | ||
constructor(facade: Core.Facade, routeInfo: Core.RouteInfo, request: Core.HttpRequest); | ||
constructor(validator: Validator, resolver: Core.DependencyResolver, routeInfo: Core.RouteInfo, request: Core.HttpRequest); | ||
execute(): Promise<Core.ActionResult>; | ||
} |
import * as Core from "../core"; | ||
export declare class RequestHandler { | ||
private facade; | ||
private metaDataStorage; | ||
private resolver; | ||
private validators; | ||
private routeInfo; | ||
@@ -8,4 +10,4 @@ private response; | ||
private controllerCommand; | ||
constructor(facade: Core.Facade, routeInfo: Core.RouteInfo, request: Core.HttpRequest, response: Core.HttpResponse); | ||
constructor(metaDataStorage: Core.MetaDataStorage, resolver: Core.DependencyResolver, validators: Array<Core.ValidatorCommand | string>, routeInfo: Core.RouteInfo, request: Core.HttpRequest, response: Core.HttpResponse); | ||
execute(): Promise<void>; | ||
} |
@@ -5,9 +5,10 @@ /// <reference types="node" /> | ||
private paths; | ||
private facade; | ||
private idResolver; | ||
private metadataStorage; | ||
private fileReader; | ||
private pathResolver; | ||
private routes; | ||
constructor(paths: string[], facade: Core.Facade, fileReader: (path: string) => Buffer); | ||
constructor(paths: string[], idResolver: Core.IdentifierResolver, metadataStorage: Core.MetaDataStorage, fileReader: (path: string) => Buffer); | ||
private getFiles(); | ||
getRoutes(): Core.RouteInfo[]; | ||
} |
import * as Kecubung from "kecubung"; | ||
import * as Core from "../core"; | ||
export declare class Validator implements Core.Validator { | ||
private metaDataStorage; | ||
private parameters; | ||
private meta; | ||
private metaDataStorage; | ||
private errors; | ||
private validators; | ||
private errors; | ||
constructor(parameters: any[], meta: Kecubung.MethodMetaData, metaDataStorage: Core.MetaDataStorage, validators: Core.ValidatorCommand[]); | ||
constructor(metaDataStorage: Core.MetaDataStorage, validators: Core.ValidatorCommand[]); | ||
setValue(parameters: any[], meta: Kecubung.MethodMetaData): void; | ||
isValid(): boolean; | ||
getValidationErrors(): Core.ValidationError[]; | ||
} |
@@ -5,3 +5,2 @@ "use strict"; | ||
var resolver_1 = require("./resolver"); | ||
var validator_1 = require("./validator"); | ||
var route_generator_1 = require("./route-generator"); | ||
@@ -15,2 +14,3 @@ var Fs = require("fs"); | ||
function Kamboja(engine, options) { | ||
var _this = this; | ||
this.engine = engine; | ||
@@ -28,22 +28,10 @@ this.options = Lodash.assign({ | ||
}, options); | ||
var defaultValidators = [ | ||
new validator_1.RangeValidator(), | ||
new validator_1.RequiredValidator(), | ||
new validator_1.EmailValidator() | ||
]; | ||
if (this.options.validators && this.options.validators.length > 0) { | ||
defaultValidators = defaultValidators.concat(this.options.validators); | ||
} | ||
Kamboja.facade = { | ||
idResolver: this.options.identifierResolver, | ||
metadataStorage: new metadata_storage_1.MetaDataStorage(this.options.identifierResolver), | ||
resolver: this.options.dependencyResolver, | ||
validators: defaultValidators, | ||
this.storage = new metadata_storage_1.MetaDataStorage(this.options.identifierResolver); | ||
this.options.getStorage = function () { | ||
return _this.storage; | ||
}; | ||
this.log = new logger_1.Logger(this.options.showConsoleLog ? "Info" : "Error"); | ||
} | ||
Kamboja.getFacade = function () { | ||
return Kamboja.facade; | ||
}; | ||
Kamboja.prototype.loadModels = function () { | ||
var _this = this; | ||
var pathResolver = new resolver_1.PathResolver(); | ||
@@ -60,3 +48,3 @@ var path = pathResolver.resolve(this.options.modelPath); | ||
var meta = Kecubung.transform("ASTree", ast, pathResolver.relative(x)); | ||
Kamboja.facade.metadataStorage.save(meta); | ||
_this.options.getStorage().save(meta); | ||
}); | ||
@@ -85,3 +73,3 @@ return true; | ||
Kamboja.prototype.generateRoutes = function () { | ||
var route = new route_generator_1.RouteGenerator(this.options.controllerPaths, Kamboja.facade, Fs.readFileSync); | ||
var route = new route_generator_1.RouteGenerator(this.options.controllerPaths, this.options.identifierResolver, this.options.getStorage(), Fs.readFileSync); | ||
var infos = route.getRoutes(); | ||
@@ -88,0 +76,0 @@ if (infos.length == 0) { |
@@ -5,6 +5,6 @@ "use strict"; | ||
var controller_1 = require("../controller"); | ||
var validator_1 = require("../validator"); | ||
var ApiControllerExecutor = (function () { | ||
function ApiControllerExecutor(facade, routeInfo, request) { | ||
this.facade = facade; | ||
function ApiControllerExecutor(validator, resolver, routeInfo, request) { | ||
this.validator = validator; | ||
this.resolver = resolver; | ||
this.routeInfo = routeInfo; | ||
@@ -20,5 +20,6 @@ this.request = request; | ||
case 0: | ||
controller = this.facade.resolver.resolve(this.routeInfo.classId); | ||
controller = this.resolver.resolve(this.routeInfo.classId); | ||
parameters = this.binder.getParameters(); | ||
controller.validator = new validator_1.Validator(parameters, this.routeInfo.methodMetaData, this.facade.metadataStorage, this.facade.validators); | ||
this.validator.setValue(parameters, this.routeInfo.methodMetaData); | ||
controller.validator = this.validator; | ||
method = controller[this.routeInfo.methodMetaData.name]; | ||
@@ -25,0 +26,0 @@ methodResult = method.apply(controller, parameters); |
"use strict"; | ||
var tslib_1 = require("tslib"); | ||
var parameter_binder_1 = require("../parameter-binder"); | ||
var validator_1 = require("../validator"); | ||
var ControllerExecutor = (function () { | ||
function ControllerExecutor(facade, routeInfo, request) { | ||
this.facade = facade; | ||
function ControllerExecutor(validator, resolver, routeInfo, request) { | ||
this.validator = validator; | ||
this.resolver = resolver; | ||
this.routeInfo = routeInfo; | ||
@@ -16,5 +16,6 @@ this.request = request; | ||
return tslib_1.__generator(this, function (_a) { | ||
controller = this.facade.resolver.resolve(this.routeInfo.classId); | ||
controller = this.resolver.resolve(this.routeInfo.classId); | ||
parameters = this.binder.getParameters(); | ||
controller.validator = new validator_1.Validator(parameters, this.routeInfo.methodMetaData, this.facade.metadataStorage, this.facade.validators); | ||
this.validator.setValue(parameters, this.routeInfo.methodMetaData); | ||
controller.validator = this.validator; | ||
method = controller[this.routeInfo.methodMetaData.name]; | ||
@@ -21,0 +22,0 @@ result = method.apply(controller, parameters); |
@@ -6,9 +6,22 @@ "use strict"; | ||
var controller_executor_1 = require("./controller-executor"); | ||
var validator_1 = require("../validator/validator"); | ||
var RequestHandler = (function () { | ||
function RequestHandler(facade, routeInfo, request, response) { | ||
this.facade = facade; | ||
function RequestHandler(metaDataStorage, resolver, validators, routeInfo, request, response) { | ||
this.metaDataStorage = metaDataStorage; | ||
this.resolver = resolver; | ||
this.validators = validators; | ||
this.routeInfo = routeInfo; | ||
this.response = response; | ||
this.apiCommand = new api_controller_executor_1.ApiControllerExecutor(facade, routeInfo, request); | ||
this.controllerCommand = new controller_executor_1.ControllerExecutor(facade, routeInfo, request); | ||
var commands = []; | ||
validators.forEach(function (x) { | ||
if (typeof x == "string") { | ||
var validator_2 = resolver.resolve(x); | ||
commands.push(validator_2); | ||
} | ||
else | ||
commands.push(x); | ||
}); | ||
var validator = new validator_1.Validator(metaDataStorage, commands); | ||
this.apiCommand = new api_controller_executor_1.ApiControllerExecutor(validator, resolver, routeInfo, request); | ||
this.controllerCommand = new controller_executor_1.ControllerExecutor(validator, resolver, routeInfo, request); | ||
} | ||
@@ -15,0 +28,0 @@ RequestHandler.prototype.execute = function () { |
@@ -9,5 +9,6 @@ "use strict"; | ||
var RouteGenerator = (function () { | ||
function RouteGenerator(paths, facade, fileReader) { | ||
function RouteGenerator(paths, idResolver, metadataStorage, fileReader) { | ||
this.paths = paths; | ||
this.facade = facade; | ||
this.idResolver = idResolver; | ||
this.metadataStorage = metadataStorage; | ||
this.fileReader = fileReader; | ||
@@ -46,5 +47,5 @@ this.pathResolver = new path_resolver_1.PathResolver(); | ||
var route = infos_1[_a]; | ||
route.classId = this.facade.idResolver.getClassId(route.qualifiedClassName); | ||
route.classId = this.idResolver.getClassId(route.qualifiedClassName); | ||
} | ||
this.facade.metadataStorage.save(meta); | ||
this.metadataStorage.save(meta); | ||
routeInfos.push.apply(routeInfos, infos); | ||
@@ -51,0 +52,0 @@ } |
"use strict"; | ||
var parameter_validator_1 = require("./parameter-validator"); | ||
var required_validator_1 = require("./required-validator"); | ||
var email_validator_1 = require("./email-validator"); | ||
var range_validator_1 = require("./range-validator"); | ||
var Validator = (function () { | ||
function Validator(parameters, meta, metaDataStorage, validators) { | ||
this.parameters = parameters; | ||
this.meta = meta; | ||
function Validator(metaDataStorage, validators) { | ||
this.metaDataStorage = metaDataStorage; | ||
this.errors = []; | ||
this.validators = validators; | ||
this.errors = []; | ||
this.validators.push(new email_validator_1.EmailValidator()); | ||
this.validators.push(new range_validator_1.RangeValidator()); | ||
this.validators.push(new required_validator_1.RequiredValidator()); | ||
} | ||
Validator.prototype.setValue = function (parameters, meta) { | ||
this.parameters = parameters; | ||
this.meta = meta; | ||
}; | ||
Validator.prototype.isValid = function () { | ||
@@ -12,0 +20,0 @@ var parameterValidator = new parameter_validator_1.ParameterValidator(this.metaDataStorage, this.validators); |
{ | ||
"name": "kamboja", | ||
"version": "0.0.1-5", | ||
"version": "0.0.1-6", | ||
"description": "MVC Framework powered by TypeScript", | ||
@@ -5,0 +5,0 @@ "main": "lib/source/index.js", |
113443
2531