@koala-ts/framework 2.2.4 → 2.4.0
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/dist/Application/ApplicationFactory.d.ts.map +1 -1
- package/dist/Application/ApplicationFactory.js +19 -1
- package/dist/Application/ApplicationFactory.js.map +1 -1
- package/dist/Application/ApplicationFactory.test.js +13 -0
- package/dist/Application/ApplicationFactory.test.js.map +1 -1
- package/dist/Config/types.d.ts +4 -0
- package/dist/Config/types.d.ts.map +1 -1
- package/dist/Event/EventBus.d.ts +7 -0
- package/dist/Event/EventBus.d.ts.map +1 -0
- package/dist/Event/EventBus.js +15 -0
- package/dist/Event/EventBus.js.map +1 -0
- package/dist/Event/EventBus.test.d.ts +2 -0
- package/dist/Event/EventBus.test.d.ts.map +1 -0
- package/dist/Event/EventBus.test.js +32 -0
- package/dist/Event/EventBus.test.js.map +1 -0
- package/dist/Event/index.d.ts +3 -0
- package/dist/Event/index.d.ts.map +1 -0
- package/dist/Event/index.js +3 -0
- package/dist/Event/index.js.map +1 -0
- package/dist/Event/types.d.ts +10 -0
- package/dist/Event/types.d.ts.map +1 -0
- package/dist/Event/types.js +1 -0
- package/dist/Event/types.js.map +1 -0
- package/dist/Http/Error/index.d.ts +2 -0
- package/dist/Http/Error/index.d.ts.map +1 -0
- package/dist/Http/Error/index.js +2 -0
- package/dist/Http/Error/index.js.map +1 -0
- package/dist/Http/Error/types.d.ts +4 -0
- package/dist/Http/Error/types.d.ts.map +1 -0
- package/dist/Http/Error/types.js +4 -0
- package/dist/Http/Error/types.js.map +1 -0
- package/dist/Http/Files/StaticFilesMiddleware.d.ts +4 -0
- package/dist/Http/Files/StaticFilesMiddleware.d.ts.map +1 -0
- package/dist/Http/Files/StaticFilesMiddleware.js +18 -0
- package/dist/Http/Files/StaticFilesMiddleware.js.map +1 -0
- package/dist/Http/Files/StaticFilesMiddleware.test.d.ts +2 -0
- package/dist/Http/Files/StaticFilesMiddleware.test.d.ts.map +1 -0
- package/dist/Http/Files/StaticFilesMiddleware.test.js +33 -0
- package/dist/Http/Files/StaticFilesMiddleware.test.js.map +1 -0
- package/dist/Http/Files/index.d.ts +3 -0
- package/dist/Http/Files/index.d.ts.map +1 -0
- package/dist/Http/Files/index.js +3 -0
- package/dist/Http/Files/index.js.map +1 -0
- package/dist/Http/Files/types.d.ts +5 -0
- package/dist/Http/Files/types.d.ts.map +1 -0
- package/dist/Http/Files/types.js +1 -0
- package/dist/Http/Files/types.js.map +1 -0
- package/dist/Http/types.d.ts +4 -0
- package/dist/Http/types.d.ts.map +1 -0
- package/dist/Http/types.js +1 -0
- package/dist/Http/types.js.map +1 -0
- package/package.json +5 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplicationFactory.d.ts","sourceRoot":"","sources":["../../src/Application/ApplicationFactory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"ApplicationFactory.d.ts","sourceRoot":"","sources":["../../src/Application/ApplicationFactory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAK5C,wBAAgB,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAiBvD"}
|
|
@@ -2,6 +2,7 @@ import Router from '@koa/router';
|
|
|
2
2
|
import Koa from 'koa';
|
|
3
3
|
import { koaBody } from 'koa-body';
|
|
4
4
|
import { extendResponse } from '../Application/Response.js';
|
|
5
|
+
import { serveStaticFiles } from '../Http/Files/index.js';
|
|
5
6
|
import { getRoutes } from '../Routing/index.js';
|
|
6
7
|
export function create(config) {
|
|
7
8
|
const app = new Koa();
|
|
@@ -9,7 +10,12 @@ export function create(config) {
|
|
|
9
10
|
app.use(extendResponse);
|
|
10
11
|
if (undefined !== config.globalMiddleware)
|
|
11
12
|
registerGlobalMiddleware(app, config.globalMiddleware);
|
|
12
|
-
app.use(
|
|
13
|
+
app.use(serveStaticFiles(config.staticFiles));
|
|
14
|
+
// Register routes
|
|
15
|
+
const router = createRouter();
|
|
16
|
+
app.use(router.routes());
|
|
17
|
+
app.use(router.allowedMethods());
|
|
18
|
+
registerEventSubscribers(app, config.eventSubscribers);
|
|
13
19
|
return app;
|
|
14
20
|
}
|
|
15
21
|
function createRouter() {
|
|
@@ -28,4 +34,16 @@ function registerGlobalMiddleware(app, middleware) {
|
|
|
28
34
|
app.use(mw);
|
|
29
35
|
}
|
|
30
36
|
}
|
|
37
|
+
function registerEventSubscribers(app, map) {
|
|
38
|
+
if (undefined === map)
|
|
39
|
+
return;
|
|
40
|
+
for (const [event, subscribers] of Object.entries(map)) {
|
|
41
|
+
if (Array.isArray(subscribers)) {
|
|
42
|
+
for (const subscriber of subscribers)
|
|
43
|
+
app.on(event, subscriber);
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
app.on(event, subscribers);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
31
49
|
//# sourceMappingURL=ApplicationFactory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplicationFactory.js","sourceRoot":"","sources":["../../src/Application/ApplicationFactory.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,GAAgE,MAAM,KAAK,CAAC;AACnF,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,UAAU,MAAM,CAAC,MAAmB;IACxC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAiB,CAAC;IACrC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC;IAExB,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACxB,IAAI,SAAS,KAAK,MAAM,CAAC,gBAAgB;QAAE,wBAAwB,CAAC,GAAG,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ApplicationFactory.js","sourceRoot":"","sources":["../../src/Application/ApplicationFactory.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,GAAgE,MAAM,KAAK,CAAC;AACnF,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,UAAU,MAAM,CAAC,MAAmB;IACxC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAiB,CAAC;IACrC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC;IAExB,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACxB,IAAI,SAAS,KAAK,MAAM,CAAC,gBAAgB;QAAE,wBAAwB,CAAC,GAAG,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAElG,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IAE9C,kBAAkB;IAClB,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACzB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IAEjC,wBAAwB,CAAC,GAAG,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAEvD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAE5B,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,EAAE,CAAC;QAChC,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAE/D,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;YAC7G,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,GAAI,eAA0E,CAAC,CAAC;QAC7G,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,wBAAwB,CAAC,GAAgB,EAAE,UAA4B;IAC9E,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,GAAgB,EAAE,GAAoC;IACtF,IAAI,SAAS,KAAK,GAAG;QAAE,OAAO;IAE9B,KAAK,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvD,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,KAAK,MAAM,UAAU,IAAI,WAAW;gBAAE,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YAChE,SAAS;QACX,CAAC;QAED,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC"}
|
|
@@ -161,4 +161,17 @@ describe('Global Middleware', () => {
|
|
|
161
161
|
expect(middlewareFn).toHaveBeenCalled();
|
|
162
162
|
});
|
|
163
163
|
});
|
|
164
|
+
describe('Serving Static Files', () => {
|
|
165
|
+
test('it should serve public static files', async () => {
|
|
166
|
+
const config = {
|
|
167
|
+
staticFiles: {
|
|
168
|
+
root: 'tests/fixtures',
|
|
169
|
+
},
|
|
170
|
+
};
|
|
171
|
+
const testAgent = createTestAgent(config);
|
|
172
|
+
const response = await testAgent.get('/sample.txt');
|
|
173
|
+
expect(response.status).toBe(200);
|
|
174
|
+
expect(response.text).toBe('Howdy!\n');
|
|
175
|
+
});
|
|
176
|
+
});
|
|
164
177
|
//# sourceMappingURL=ApplicationFactory.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplicationFactory.test.js","sourceRoot":"","sources":["../../src/Application/ApplicationFactory.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ApplicationFactory.test.js","sourceRoot":"","sources":["../../src/Application/ApplicationFactory.test.ts"],"names":[],"mappings":"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"}
|
package/dist/Config/types.d.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
import { type EventSubscriber } from '../Event/index.js';
|
|
1
2
|
import { type HttpMiddleware } from '../Http/index.js';
|
|
3
|
+
import { type StaticFilesOptions } from '../Http/Files/index.js';
|
|
2
4
|
export type Controller = new (...args: unknown[]) => unknown;
|
|
3
5
|
export interface KoalaConfig {
|
|
4
6
|
controllers: Controller[];
|
|
5
7
|
globalMiddleware?: HttpMiddleware[];
|
|
8
|
+
staticFiles?: StaticFilesOptions;
|
|
9
|
+
eventSubscribers?: Record<string, EventSubscriber | EventSubscriber[]>;
|
|
6
10
|
}
|
|
7
11
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/Config/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/Config/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,MAAM,UAAU,GAAG,KAAI,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAE5D,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,gBAAgB,CAAC,EAAE,cAAc,EAAE,CAAC;IACpC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,EAAE,CAAC,CAAC;CACxE"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type EventBusStorage, type EventEmitter } from '../Event/types.js';
|
|
2
|
+
import { type HttpRequest, type HttpResponse, type HttpScope, type NextMiddleware, type ScopeStore } from '../Http/index.js';
|
|
3
|
+
export declare function eventBusMiddleware(scope: HttpScope, next: NextMiddleware, storage?: ScopeStore<EventBusStorage>): Promise<void>;
|
|
4
|
+
export declare function useEmit(storage?: ScopeStore<EventBusStorage>): EventEmitter;
|
|
5
|
+
export declare function useRequest(storage?: ScopeStore<EventBusStorage>): HttpRequest;
|
|
6
|
+
export declare function useResponse(storage?: ScopeStore<EventBusStorage>): HttpResponse;
|
|
7
|
+
//# sourceMappingURL=EventBus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventBus.d.ts","sourceRoot":"","sources":["../../src/Event/EventBus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAe,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AAIhI,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,cAAc,EACpB,OAAO,GAAE,UAAU,CAAC,eAAe,CAAmB,GACrD,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAgB,OAAO,CAAC,OAAO,GAAE,UAAU,CAAC,eAAe,CAAmB,GAAG,YAAY,CAE5F;AAED,wBAAgB,UAAU,CAAC,OAAO,GAAE,UAAU,CAAC,eAAe,CAAmB,GAAG,WAAW,CAE9F;AAED,wBAAgB,WAAW,CAAC,OAAO,GAAE,UAAU,CAAC,eAAe,CAAmB,GAAG,YAAY,CAEhG"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createStore } from '../Http/index.js';
|
|
2
|
+
const eventBusStorage = createStore();
|
|
3
|
+
export async function eventBusMiddleware(scope, next, storage = eventBusStorage) {
|
|
4
|
+
await storage.run({ eventEmitter: scope.app, scope }, next);
|
|
5
|
+
}
|
|
6
|
+
export function useEmit(storage = eventBusStorage) {
|
|
7
|
+
return storage.get('eventEmitter');
|
|
8
|
+
}
|
|
9
|
+
export function useRequest(storage = eventBusStorage) {
|
|
10
|
+
return storage.get('scope').request;
|
|
11
|
+
}
|
|
12
|
+
export function useResponse(storage = eventBusStorage) {
|
|
13
|
+
return storage.get('scope').response;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=EventBus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventBus.js","sourceRoot":"","sources":["../../src/Event/EventBus.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAA6F,MAAM,QAAQ,CAAC;AAEhI,MAAM,eAAe,GAAG,WAAW,EAAmB,CAAC;AAEvD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAgB,EAChB,IAAoB,EACpB,UAAuC,eAAe;IAEtD,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,UAAuC,eAAe;IAC5E,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,UAAuC,eAAe;IAC/E,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,UAAuC,eAAe;IAChF,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventBus.test.d.ts","sourceRoot":"","sources":["../../src/Event/EventBus.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { describe, expect, test, vi } from 'vitest';
|
|
2
|
+
import { eventBusMiddleware, useEmit, useRequest, useResponse } from '../Event/EventBus.js';
|
|
3
|
+
describe('Event bus', () => {
|
|
4
|
+
test('middleware should init storage', async () => {
|
|
5
|
+
const scope = { app: vi.fn() };
|
|
6
|
+
const next = vi.fn();
|
|
7
|
+
const storage = { run: vi.fn() };
|
|
8
|
+
await eventBusMiddleware(scope, next, storage);
|
|
9
|
+
expect(storage.run).toHaveBeenCalledWith({ eventEmitter: scope.app, scope }, next);
|
|
10
|
+
});
|
|
11
|
+
test('useEmit should return emitter from storage', () => {
|
|
12
|
+
const storage = { get: vi.fn().mockReturnValue('eventEmitter') };
|
|
13
|
+
const emitter = useEmit(storage);
|
|
14
|
+
expect(storage.get).toHaveBeenCalledWith('eventEmitter');
|
|
15
|
+
expect(emitter).toBe('eventEmitter');
|
|
16
|
+
});
|
|
17
|
+
test('useRequest should return request from storage', () => {
|
|
18
|
+
const request = { headers: { host: 'localhost' } };
|
|
19
|
+
const storage = { get: vi.fn().mockReturnValue({ request }) };
|
|
20
|
+
const req = useRequest(storage);
|
|
21
|
+
expect(storage.get).toHaveBeenCalledWith('scope');
|
|
22
|
+
expect(req).toBe(request);
|
|
23
|
+
});
|
|
24
|
+
test('useResponse should return response from storage', () => {
|
|
25
|
+
const response = { status: 200, body: 'OK' };
|
|
26
|
+
const storage = { get: vi.fn().mockReturnValue({ response }) };
|
|
27
|
+
const res = useResponse(storage);
|
|
28
|
+
expect(storage.get).toHaveBeenCalledWith('scope');
|
|
29
|
+
expect(res).toBe(response);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=EventBus.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventBus.test.js","sourceRoot":"","sources":["../../src/Event/EventBus.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIxF,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,IAAI,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;QAEjC,MAAM,kBAAkB,CAAC,KAA6B,EAAE,IAAI,EAAE,OAAiD,CAAC,CAAC;QAEjH,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACtD,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;QAEjE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAiD,CAAC,CAAC;QAE3E,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QACzD,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACzD,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QAE9D,MAAM,GAAG,GAAG,UAAU,CAAC,OAAiD,CAAC,CAAC;QAE1E,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC3D,MAAM,QAAQ,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QAE/D,MAAM,GAAG,GAAG,WAAW,CAAC,OAAiD,CAAC,CAAC;QAE3E,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Event/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Event/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type HttpScope } from '../Http/index.js';
|
|
2
|
+
export interface EventEmitter {
|
|
3
|
+
emit(event: string, ...args: unknown[]): void;
|
|
4
|
+
}
|
|
5
|
+
export interface EventBusStorage {
|
|
6
|
+
eventEmitter: EventEmitter;
|
|
7
|
+
scope: HttpScope;
|
|
8
|
+
}
|
|
9
|
+
export type EventSubscriber = (...args: unknown[]) => void;
|
|
10
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/Event/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/Event/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Http/Error/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Http/Error/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/Http/Error/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,KAAK,CAAC;AAEhD,qBAAa,SAAU,SAAQ,YAAY;CAC1C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/Http/Error/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,KAAK,CAAC;AAEhD,MAAM,OAAO,SAAU,SAAQ,YAAY;CAC1C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StaticFilesMiddleware.d.ts","sourceRoot":"","sources":["../../../src/Http/Files/StaticFilesMiddleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAuC,MAAM,QAAQ,CAAC;AAElF,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAO7D,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,cAAc,CAS7E"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { send } from '@koa/send';
|
|
2
|
+
const defaultOptions = {
|
|
3
|
+
root: 'public',
|
|
4
|
+
index: 'index.html',
|
|
5
|
+
};
|
|
6
|
+
export function serveStaticFiles(options) {
|
|
7
|
+
return async function staticFilesMiddleware(scope, next) {
|
|
8
|
+
try {
|
|
9
|
+
await send(scope, scope.path, options ?? defaultOptions);
|
|
10
|
+
}
|
|
11
|
+
catch (error) {
|
|
12
|
+
if (error.status !== 404)
|
|
13
|
+
throw error;
|
|
14
|
+
await next();
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=StaticFilesMiddleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StaticFilesMiddleware.js","sourceRoot":"","sources":["../../../src/Http/Files/StaticFilesMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC,MAAM,cAAc,GAAuB;IACzC,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,YAAY;CACpB,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,OAA4B;IAC3D,OAAO,KAAK,UAAU,qBAAqB,CAAC,KAAgB,EAAE,IAAoB;QAChF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,IAAI,cAAc,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAAmB,CAAC,MAAM,KAAK,GAAG;gBAAE,MAAM,KAAK,CAAC;YACrD,MAAM,IAAI,EAAE,CAAC;QACf,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StaticFilesMiddleware.test.d.ts","sourceRoot":"","sources":["../../../src/Http/Files/StaticFilesMiddleware.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import { serveStaticFiles } from '../../Http/Files/StaticFilesMiddleware.js';
|
|
3
|
+
vi.mock('@koa/send', () => ({
|
|
4
|
+
send: vi.fn(),
|
|
5
|
+
}));
|
|
6
|
+
describe('Static Files middleware', () => {
|
|
7
|
+
it('should delegate calls to koa send', async () => {
|
|
8
|
+
const { send } = await import('@koa/send');
|
|
9
|
+
const scope = { path: '/test-path' };
|
|
10
|
+
const next = vi.fn();
|
|
11
|
+
const defaultOptions = { root: 'public', index: 'index.html' };
|
|
12
|
+
await serveStaticFiles()(scope, next);
|
|
13
|
+
expect(send).toHaveBeenCalledWith(scope, scope.path, defaultOptions);
|
|
14
|
+
expect(next).not.toHaveBeenCalled();
|
|
15
|
+
});
|
|
16
|
+
it('should rethrow non-404 errors', async () => {
|
|
17
|
+
const { send } = await import('@koa/send');
|
|
18
|
+
send.mockRejectedValueOnce({ status: 500 });
|
|
19
|
+
const scope = { path: '/test-path' };
|
|
20
|
+
const next = vi.fn();
|
|
21
|
+
await expect(serveStaticFiles()(scope, next)).rejects.toEqual({ status: 500 });
|
|
22
|
+
expect(next).not.toHaveBeenCalled();
|
|
23
|
+
});
|
|
24
|
+
it('should call next on 404 errors', async () => {
|
|
25
|
+
const { send } = await import('@koa/send');
|
|
26
|
+
send.mockRejectedValueOnce({ status: 404 });
|
|
27
|
+
const scope = { path: '/test-path' };
|
|
28
|
+
const next = vi.fn();
|
|
29
|
+
await serveStaticFiles()(scope, next);
|
|
30
|
+
expect(next).toHaveBeenCalled();
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=StaticFilesMiddleware.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StaticFilesMiddleware.test.js","sourceRoot":"","sources":["../../../src/Http/Files/StaticFilesMiddleware.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAa,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAEtE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1B,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;CACd,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,YAAY,EAAe,CAAC;QAClD,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACrB,MAAM,cAAc,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;QAE/D,MAAM,gBAAgB,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAEtC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QACrE,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAa,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,YAAY,EAAe,CAAC;QAClD,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAErB,MAAM,MAAM,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/E,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAa,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,YAAY,EAAe,CAAC;QAClD,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAErB,MAAM,gBAAgB,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAEtC,MAAM,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Http/Files/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Http/Files/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/Http/Files/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/Http/Files/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/Http/types.ts"],"names":[],"mappings":"AAAA,mBAAmB,WAAW,CAAC;AAC/B,mBAAmB,YAAY,CAAC;AAChC,mBAAmB,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/Http/types.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@koala-ts/framework",
|
|
3
3
|
"main": "dist/index.js",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "2.
|
|
5
|
+
"version": "2.4.0",
|
|
6
6
|
"description": "A NodeJS framework for lazy developers",
|
|
7
7
|
"keywords": [
|
|
8
8
|
"koala",
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@koa/router": "^14.0.0",
|
|
40
|
+
"@koa/send": "^6.0.0",
|
|
40
41
|
"@types/koa": "^3.0.0",
|
|
41
42
|
"@types/koa__router": "^12.0.4",
|
|
42
43
|
"@types/stack-trace": "^0.0.33",
|
|
@@ -44,7 +45,7 @@
|
|
|
44
45
|
"dotenv": "^17.2.3",
|
|
45
46
|
"dotenv-expand": "^12.0.3",
|
|
46
47
|
"koa": "^3.0.3",
|
|
47
|
-
"koa-body": "^
|
|
48
|
+
"koa-body": "^7.0.0",
|
|
48
49
|
"reflect-metadata": "^0.2.2",
|
|
49
50
|
"supertest": "^7.1.4"
|
|
50
51
|
},
|
|
@@ -52,7 +53,7 @@
|
|
|
52
53
|
"@arethetypeswrong/cli": "^0.18.2",
|
|
53
54
|
"@eslint/js": "^9.38.0",
|
|
54
55
|
"@stylistic/eslint-plugin": "^5.5.0",
|
|
55
|
-
"@vitest/coverage-v8": "^
|
|
56
|
+
"@vitest/coverage-v8": "^4.0.12",
|
|
56
57
|
"eslint": "^9.38.0",
|
|
57
58
|
"eslint-plugin-import": "^2.32.0",
|
|
58
59
|
"eslint-plugin-n": "^17.23.1",
|
|
@@ -63,7 +64,7 @@
|
|
|
63
64
|
"tsx": "^4.20.6",
|
|
64
65
|
"typescript": "^5.9.3",
|
|
65
66
|
"typescript-eslint": "^8.46.2",
|
|
66
|
-
"vitest": "^
|
|
67
|
+
"vitest": "^4.0.10"
|
|
67
68
|
},
|
|
68
69
|
"publishConfig": {
|
|
69
70
|
"access": "public",
|