@koala-ts/framework 0.1.0 → 0.1.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/README.md +12 -27
- package/dist/core/application.d.ts +1 -1
- package/dist/core/application.d.ts.map +1 -1
- package/dist/core/application.js +6 -9
- package/dist/core/application.js.map +1 -1
- package/dist/core/route.js +5 -8
- package/dist/core/route.js.map +1 -1
- package/dist/core/types.d.ts +3 -3
- package/dist/core/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,29 +1,14 @@
|
|
|
1
|
-
# Framework
|
|
1
|
+
# KoalaTs Framework 🐨
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
KoalaTs is a NodeJs, TypeScript-first framework with expressive syntax. KoalaTS is crafted for the laziest backend
|
|
4
|
+
developers because nothing pairs better with clean APIs than a good nap. The NodeJs ecosystem is vast and full of
|
|
5
|
+
sparse solutions that doesn't always play well together. KoalaTs aims to provide a cohesive and opinionated solution
|
|
6
|
+
that is easy to use and understand.
|
|
4
7
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
+ [x] Create responses from views
|
|
13
|
-
+ [x] Access request data
|
|
14
|
-
- [ ] Configuration
|
|
15
|
-
- [ ] Database
|
|
16
|
-
- [ ] Caching
|
|
17
|
-
- [ ] Task scheduling
|
|
18
|
-
- [ ] Queues
|
|
19
|
-
- [ ] Logging
|
|
20
|
-
- [ ] Events
|
|
21
|
-
- [ ] Security
|
|
22
|
-
+ [ ] Authentication
|
|
23
|
-
+ [ ] Authorization
|
|
24
|
-
+ [ ] Encryption and Hashing
|
|
25
|
-
+ [ ] Helmet
|
|
26
|
-
+ [ ] CORS
|
|
27
|
-
+ [ ] Rate limiting
|
|
28
|
-
- [ ] Console commands
|
|
29
|
-
- [x] Testing
|
|
8
|
+
## Documentation
|
|
9
|
+
|
|
10
|
+
You can find the documentation [here](https://koala-ts.github.io/docs/)
|
|
11
|
+
|
|
12
|
+
## License
|
|
13
|
+
|
|
14
|
+
KoalaTs is [MIT licensed](/LICENSE).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/core/application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAkB,MAAM,SAAS,CAAC;AAIvD,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/core/application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAkB,MAAM,SAAS,CAAC;AAIvD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,MAAM,CAAC,CAAC,EAAE,YAAY,GAAG,YAAY,CAcpD"}
|
package/dist/core/application.js
CHANGED
|
@@ -5,15 +5,12 @@ import { koaBody } from 'koa-body';
|
|
|
5
5
|
export function create(_) {
|
|
6
6
|
const app = new Koa();
|
|
7
7
|
const router = new Router();
|
|
8
|
-
getRoutes().forEach((
|
|
9
|
-
const middlewareStack = [...
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
router[method](route.path, ...middlewareStack);
|
|
16
|
-
}
|
|
8
|
+
getRoutes().forEach(({ methods, path, middleware, handler, parseBody }) => {
|
|
9
|
+
const middlewareStack = [...middleware, handler];
|
|
10
|
+
methods.forEach(method => {
|
|
11
|
+
const routeMiddleware = parseBody ? [koaBody(), ...middlewareStack] : middlewareStack;
|
|
12
|
+
router[method](path, ...routeMiddleware);
|
|
13
|
+
});
|
|
17
14
|
});
|
|
18
15
|
app.use(router.routes());
|
|
19
16
|
return app;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../src/core/application.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,MAAM,UAAU,MAAM,CAAC,CAAe;IAClC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../src/core/application.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,MAAM,UAAU,MAAM,CAAC,CAAe;IAClC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;IACtB,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAE5B,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAkB,EAAE,EAAE;QACtF,MAAM,eAAe,GAAG,CAAC,GAAG,UAAU,EAAE,OAAO,CAAC,CAAC;QACjD,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACrB,MAAM,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;YACtF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,eAAe,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACzB,OAAO,GAAG,CAAC;AACf,CAAC"}
|
package/dist/core/route.js
CHANGED
|
@@ -6,7 +6,7 @@ export function Route({ method, path, parseBody = true, middleware = [] }) {
|
|
|
6
6
|
routes.push({
|
|
7
7
|
path,
|
|
8
8
|
methods: qualifyMethod(method),
|
|
9
|
-
handler:
|
|
9
|
+
handler: qualifyHandler(target, propertyKey),
|
|
10
10
|
parseBody: parseBody,
|
|
11
11
|
middleware: middleware
|
|
12
12
|
});
|
|
@@ -14,16 +14,13 @@ export function Route({ method, path, parseBody = true, middleware = [] }) {
|
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
16
|
export function getRoutes() {
|
|
17
|
-
return Reflect.getMetadata(key, Reflect)
|
|
17
|
+
return Reflect.getMetadata(key, Reflect);
|
|
18
18
|
}
|
|
19
19
|
function qualifyMethod(method) {
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
return ['get', 'post', 'put', 'patch', 'delete', 'options', 'head'];
|
|
23
|
-
}
|
|
24
|
-
return [lowerMethod];
|
|
20
|
+
const methods = Array.isArray(method) ? method : [method];
|
|
21
|
+
return methods.flatMap(m => ['any', 'all'].includes(m.toLowerCase()) ? ['all'] : [m.toLowerCase()]);
|
|
25
22
|
}
|
|
26
|
-
function
|
|
23
|
+
function qualifyHandler(target, propertyKey) {
|
|
27
24
|
if (typeof target === 'function') {
|
|
28
25
|
return target;
|
|
29
26
|
}
|
package/dist/core/route.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../src/core/route.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAG1B,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAE5B,MAAM,UAAU,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,EAAE,UAAU,GAAG,EAAE,EAAiB;IACpF,OAAO,UAAU,MAAc,EAAE,WAA4B;QACzD,MAAM,MAAM,GAAqB,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QACzE,MAAM,CAAC,IAAI,CAAC;YACR,IAAI;YACJ,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC;YAC9B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../src/core/route.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAG1B,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAE5B,MAAM,UAAU,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,EAAE,UAAU,GAAG,EAAE,EAAiB;IACpF,OAAO,UAAU,MAAc,EAAE,WAA4B;QACzD,MAAM,MAAM,GAAqB,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QACzE,MAAM,CAAC,IAAI,CAAC;YACR,IAAI;YACJ,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC;YAC9B,OAAO,EAAE,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC;YAC5C,SAAS,EAAE,SAAS;YACpB,UAAU,EAAE,UAAU;SACzB,CAAC,CAAC;QACH,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,SAAS;IACrB,OAAO,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,aAAa,CAAC,MAAmC;IACtD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC1D,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAmB,CAAC,CAAC,CAAC;AACzH,CAAC;AAED,SAAS,cAAc,CAAC,MAAe,EAAE,WAA4B;IACjE,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;QAC/B,OAAO,MAAiB,CAAC;IAC7B,CAAC;IAED,OAAQ,MAAc,CAAC,WAAW,CAAY,CAAC;AACnD,CAAC"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -26,8 +26,8 @@ export interface INext extends Next {
|
|
|
26
26
|
}
|
|
27
27
|
export interface Handler extends Middleware {
|
|
28
28
|
}
|
|
29
|
-
export type THttpMethod = 'get' | 'post' | 'put' | 'patch' | 'delete' | 'options' | 'head' | 'any' | 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD' | 'ANY';
|
|
30
|
-
export type TRouterMethod = 'get' | 'post' | 'put' | 'patch' | 'delete' | 'options' | 'head';
|
|
29
|
+
export type THttpMethod = 'get' | 'post' | 'put' | 'patch' | 'delete' | 'options' | 'head' | 'any' | 'all' | 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD' | 'ANY' | 'ALL';
|
|
30
|
+
export type TRouterMethod = 'get' | 'post' | 'put' | 'patch' | 'delete' | 'options' | 'head' | 'all';
|
|
31
31
|
export interface IRouteMetadata {
|
|
32
32
|
path: string;
|
|
33
33
|
methods: TRouterMethod[];
|
|
@@ -37,7 +37,7 @@ export interface IRouteMetadata {
|
|
|
37
37
|
}
|
|
38
38
|
export interface IRouteOptions {
|
|
39
39
|
path: string;
|
|
40
|
-
method: THttpMethod;
|
|
40
|
+
method: THttpMethod | THttpMethod[];
|
|
41
41
|
parseBody?: boolean;
|
|
42
42
|
middleware?: Middleware[];
|
|
43
43
|
}
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAG,MAAM,KAAK,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAEhE,MAAM,WAAW,YAAY;IACzB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE9B,QAAQ,IAAI,CAAC,GAAG,EAAE,eAAe,GAAG,kBAAkB,EAAE,GAAG,EAAE,cAAc,GAAG,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvH;AAED,MAAM,WAAW,QAAS,SAAQ,OAAO;IACrC,IAAI,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CACjC;AAED,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC1C,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CAChC;AAED,MAAM,WAAW,MAAO,SAAQ,OAAO;IACnC,OAAO,EAAE,QAAQ,GAAG,YAAY,CAAC;CACpC;AAED,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC3C,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,KAAM,SAAQ,IAAI;CAClC;AAGD,MAAM,WAAW,OAAQ,SAAQ,UAAU;CAC1C;AAED,MAAM,MAAM,WAAW,GACnB,KAAK,GACH,MAAM,GACN,KAAK,GACL,OAAO,GACP,QAAQ,GACR,SAAS,GACT,MAAM,GACN,KAAK,GACL,KAAK,GACL,MAAM,GACN,KAAK,GACL,OAAO,GACP,QAAQ,GACR,SAAS,GACT,MAAM,GACN,KAAK,CAAC;AAEZ,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAG,MAAM,KAAK,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAEhE,MAAM,WAAW,YAAY;IACzB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE9B,QAAQ,IAAI,CAAC,GAAG,EAAE,eAAe,GAAG,kBAAkB,EAAE,GAAG,EAAE,cAAc,GAAG,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvH;AAED,MAAM,WAAW,QAAS,SAAQ,OAAO;IACrC,IAAI,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CACjC;AAED,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC1C,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CAChC;AAED,MAAM,WAAW,MAAO,SAAQ,OAAO;IACnC,OAAO,EAAE,QAAQ,GAAG,YAAY,CAAC;CACpC;AAED,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC3C,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,KAAM,SAAQ,IAAI;CAClC;AAGD,MAAM,WAAW,OAAQ,SAAQ,UAAU;CAC1C;AAED,MAAM,MAAM,WAAW,GACnB,KAAK,GACH,MAAM,GACN,KAAK,GACL,OAAO,GACP,QAAQ,GACR,SAAS,GACT,MAAM,GACN,KAAK,GACL,KAAK,GACL,KAAK,GACL,MAAM,GACN,KAAK,GACL,OAAO,GACP,QAAQ,GACR,SAAS,GACT,MAAM,GACN,KAAK,GACL,KAAK,CAAC;AAEZ,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,CAAC;AAErG,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC;IACpC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC;CAC7B"}
|