- v1.1.1Latest
- v1.1.0
- v1.0.0
- v0.38.0
- v0.37.0
- v0.36.0
- v0.35.3
- v0.35.2
- v0.35.1
- v0.35.0
- v0.34.0
- v0.33.1
- v0.33.0
- v0.32.0
- v0.31.1
- v0.31.0
- v0.30.1
- v0.30.0
- v0.29.3
- v0.29.2
- v0.29.1
- v0.29.0
- v0.28.0
- v0.27.0
- v0.26.0
- v0.25.0
- v0.24.1
- v0.24.0
- v0.23.0
- v0.21.2
- v0.21.1
- v0.21.0
- v0.20.0
- v0.19.4
- v0.19.3
- v0.19.2
- v0.19.1
- v0.19.0
- v0.18.1
- v0.18.0
- v0.17.0
- v0.16.2
- v0.16.1
- v0.16.0
- v0.15.0
- v0.14.0
- v0.13.0
- v0.12.2
- v0.12.1
- v0.12.0
- v0.11.1
- v0.11.0
- v0.10.0
- v0.9.0
- v0.8.0
- v0.7.2
- v0.7.1
- v0.7.0
- v0.6.2
- v0.6.1
- v0.6.0
- v0.5.2
- v0.5.1
- v0.5.0
- v0.4.0
- v0.3.0
- v0.2.0
- v0.1.1
- v0.1.0
Alosaur 🦖
Alosaur - Deno web framework 🦖.
- Area - these are the modules of your application.
- Controller - are responsible for controlling the flow of the application execution.
- Middlware - provide a convenient mechanism for filtering HTTP requests entering your application.
- Decorators - for query, cookie, parametrs, routes and etc.
- Dependency Injection - for all controllers by default from
microsoft/TSyringe
(more about alosaur injection)
Simple example:
Controller:
import { Controller, Get, Area, App } from 'https://deno.land/x/alosaur/src/mod.ts';
@Controller('/home')
export class HomeController {
@Get('/text')
text() {
return 'Hello world';
}
@Get('/json')
json() {
return { text: 'test' };
}
}
// Declare module
@Area({
controllers: [HomeController],
})
export class HomeArea {}
// Create alosaur application
const app = new App({
areas: [HomeArea],
});
app.listen();
tsconfig.app.json:
{
"compilerOptions": {
"experimentalDecorators": true,
"emitDecoratorMetadata": true
}
}
And run
deno run --allow-net --allow-read --config ./src/tsconfig.app.json app.ts
TODO
Add render views: dejs
Add return value JSON
Add decorators:
-
@Area
-
-
@QueryParam
-
-
@Param
param from url:/:id
-
-
@Body
-
-
@Cookie
-
-
@Req
-
-
@Res
-
-
@Middleware
with regex route
-
-
@Cache
Cache to actions {duration: number} number in ms
-
Add middleware
Add static middleware (example: app.useStatic)
Add CORS middleware
Add SPA middleware
Add DI
Add std exceptions
Add CI with minimal tests.
Add OpenAPI v3 generator (see /examples/basic/openapi.ts)
Add OpenAPI type reference
Add GraphQl
Add WebSocket
Add validators example class-validator
Add microservice connector with wasm
Add benchmarks
Transfer to Alosaur github organization
Add docs and more examples
Plugins & modules
- Add angular template parser
- Add CLI with schematics (https://github.com/alosaur/alosaur-schematics)
- Add validator decorators
- Add porting TypeORM to deno
Examples
- Add basic example
- Add di example
- Add static serve example
- Add dejs view render example
- Add example with sql drivers (postgres)
- Add basic example in Docker container
- Add websockets example
- Add example with wasm
OpenAPI v3
Example in examples/basic/openapi.ts
Generate openAPI file:
deno run -A --config ./src/tsconfig.lib.json examples/basic/openapi.ts
Middlware
You can create middlware and register it in area or all application layer.
@Middlware(new RegExp('/'))
export class Log implements MiddlwareTarget {
date: Date = new Date();
onPreRequest(request: ServerRequest, responce: ServerResponse) {
return new Promise((resolve, reject) => {
this.date = new Date();
resolve();
});
}
onPostRequest(request: ServerRequest, responce: ServerResponse) {
return new Promise((resolve, reject) => {
console.log(new Date().getTime() - this.date.getTime());
resolve();
});
}
}
Register in app settings
const settings: AppSettings = {
areas: [HomeArea, InfoArea],
middlewares: [Log],
};
or in app
const app = new App(settings);
app.use(/\//, new Log());