@kurdel/core 0.1.0-beta.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/LICENSE +21 -0
- package/README.md +54 -0
- package/lib/app/app-config.d.ts +9 -0
- package/lib/app/app-config.js +2 -0
- package/lib/app/app-config.js.map +1 -0
- package/lib/app/app-module.d.ts +75 -0
- package/lib/app/app-module.js +2 -0
- package/lib/app/app-module.js.map +1 -0
- package/lib/app/app-tokens.d.ts +4 -0
- package/lib/app/app-tokens.js +6 -0
- package/lib/app/app-tokens.js.map +1 -0
- package/lib/app/application.d.ts +23 -0
- package/lib/app/application.js +2 -0
- package/lib/app/application.js.map +1 -0
- package/lib/app/index.d.ts +6 -0
- package/lib/app/index.js +7 -0
- package/lib/app/index.js.map +1 -0
- package/lib/app/lifecycle.d.ts +3 -0
- package/lib/app/lifecycle.js +2 -0
- package/lib/app/lifecycle.js.map +1 -0
- package/lib/app/module-priority.d.ts +33 -0
- package/lib/app/module-priority.js +35 -0
- package/lib/app/module-priority.js.map +1 -0
- package/lib/db/index.d.ts +1 -0
- package/lib/db/index.js +2 -0
- package/lib/db/index.js.map +1 -0
- package/lib/db/model.d.ts +23 -0
- package/lib/db/model.js +17 -0
- package/lib/db/model.js.map +1 -0
- package/lib/http/errors/http-error.d.ts +5 -0
- package/lib/http/errors/http-error.js +9 -0
- package/lib/http/errors/http-error.js.map +1 -0
- package/lib/http/errors/index.d.ts +2 -0
- package/lib/http/errors/index.js +3 -0
- package/lib/http/errors/index.js.map +1 -0
- package/lib/http/errors/validation-error.d.ts +9 -0
- package/lib/http/errors/validation-error.js +12 -0
- package/lib/http/errors/validation-error.js.map +1 -0
- package/lib/http/http-context.d.ts +107 -0
- package/lib/http/http-context.js +2 -0
- package/lib/http/http-context.js.map +1 -0
- package/lib/http/http-module.d.ts +61 -0
- package/lib/http/http-module.js +2 -0
- package/lib/http/http-module.js.map +1 -0
- package/lib/http/http-tokens.d.ts +10 -0
- package/lib/http/http-tokens.js +11 -0
- package/lib/http/http-tokens.js.map +1 -0
- package/lib/http/index.d.ts +9 -0
- package/lib/http/index.js +10 -0
- package/lib/http/index.js.map +1 -0
- package/lib/http/middleware/index.d.ts +3 -0
- package/lib/http/middleware/index.js +4 -0
- package/lib/http/middleware/index.js.map +1 -0
- package/lib/http/middleware/middleware-registration.d.ts +25 -0
- package/lib/http/middleware/middleware-registration.js +2 -0
- package/lib/http/middleware/middleware-registration.js.map +1 -0
- package/lib/http/middleware/middleware-registry.d.ts +15 -0
- package/lib/http/middleware/middleware-registry.js +2 -0
- package/lib/http/middleware/middleware-registry.js.map +1 -0
- package/lib/http/middleware/middleware.d.ts +2 -0
- package/lib/http/middleware/middleware.js +2 -0
- package/lib/http/middleware/middleware.js.map +1 -0
- package/lib/http/response/action-result.d.ts +69 -0
- package/lib/http/response/action-result.js +2 -0
- package/lib/http/response/action-result.js.map +1 -0
- package/lib/http/response/http-results.d.ts +17 -0
- package/lib/http/response/http-results.js +46 -0
- package/lib/http/response/http-results.js.map +1 -0
- package/lib/http/response/index.d.ts +3 -0
- package/lib/http/response/index.js +4 -0
- package/lib/http/response/index.js.map +1 -0
- package/lib/http/response/response-renderer.d.ts +6 -0
- package/lib/http/response/response-renderer.js +2 -0
- package/lib/http/response/response-renderer.js.map +1 -0
- package/lib/http/routing/controller-config.d.ts +24 -0
- package/lib/http/routing/controller-config.js +2 -0
- package/lib/http/routing/controller-config.js.map +1 -0
- package/lib/http/routing/controller-resolver.d.ts +5 -0
- package/lib/http/routing/controller-resolver.js +2 -0
- package/lib/http/routing/controller-resolver.js.map +1 -0
- package/lib/http/routing/controller.d.ts +22 -0
- package/lib/http/routing/controller.js +47 -0
- package/lib/http/routing/controller.js.map +1 -0
- package/lib/http/routing/index.d.ts +7 -0
- package/lib/http/routing/index.js +8 -0
- package/lib/http/routing/index.js.map +1 -0
- package/lib/http/routing/route-match.d.ts +27 -0
- package/lib/http/routing/route-match.js +2 -0
- package/lib/http/routing/route-match.js.map +1 -0
- package/lib/http/routing/route-schema.d.ts +16 -0
- package/lib/http/routing/route-schema.js +2 -0
- package/lib/http/routing/route-schema.js.map +1 -0
- package/lib/http/routing/route.d.ts +112 -0
- package/lib/http/routing/route.js +21 -0
- package/lib/http/routing/route.js.map +1 -0
- package/lib/http/routing/router.d.ts +27 -0
- package/lib/http/routing/router.js +2 -0
- package/lib/http/routing/router.js.map +1 -0
- package/lib/http/server/index.d.ts +2 -0
- package/lib/http/server/index.js +3 -0
- package/lib/http/server/index.js.map +1 -0
- package/lib/http/server/running-server.d.ts +8 -0
- package/lib/http/server/running-server.js +2 -0
- package/lib/http/server/running-server.js.map +1 -0
- package/lib/http/server/server-adapter.d.ts +82 -0
- package/lib/http/server/server-adapter.js +2 -0
- package/lib/http/server/server-adapter.js.map +1 -0
- package/lib/http/types.d.ts +10 -0
- package/lib/http/types.js +2 -0
- package/lib/http/types.js.map +1 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.js +6 -0
- package/lib/index.js.map +1 -0
- package/lib/template/index.d.ts +2 -0
- package/lib/template/index.js +3 -0
- package/lib/template/index.js.map +1 -0
- package/lib/template/template-engine.d.ts +3 -0
- package/lib/template/template-engine.js +2 -0
- package/lib/template/template-engine.js.map +1 -0
- package/lib/template/template-tokens.d.ts +2 -0
- package/lib/template/template-tokens.js +3 -0
- package/lib/template/template-tokens.js.map +1 -0
- package/lib/tokens/index.d.ts +1 -0
- package/lib/tokens/index.js +2 -0
- package/lib/tokens/index.js.map +1 -0
- package/lib/tokens/tokens.d.ts +12 -0
- package/lib/tokens/tokens.js +9 -0
- package/lib/tokens/tokens.js.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export const ROUTE_META = Symbol('@kurdel/core:route-meta');
|
|
2
|
+
/* ──────────────────────────────────────────────────────────────────────────
|
|
3
|
+
* route(meta)(handler)
|
|
4
|
+
* Attaches metadata to a handler AND preserves the handler's identity.
|
|
5
|
+
*
|
|
6
|
+
* Important: handler is NOT wrapped.
|
|
7
|
+
* RuntimeControllerPipe calls handler.call(controller, ctx),
|
|
8
|
+
* so the function MUST be the original method reference.
|
|
9
|
+
* ────────────────────────────────────────────────────────────────────────── */
|
|
10
|
+
/**
|
|
11
|
+
* Decorates the given handler with metadata (method, path, schema).
|
|
12
|
+
*
|
|
13
|
+
* Typing also narrows ctx.params based on meta.path automatically.
|
|
14
|
+
*/
|
|
15
|
+
export function route(meta) {
|
|
16
|
+
return function (fn) {
|
|
17
|
+
fn[ROUTE_META] = meta;
|
|
18
|
+
return fn;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../src/http/routing/route.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAwI5D;;;;;;;gFAOgF;AAEhF;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAA4B,IAAO;IACtD,OAAO,UAGL,EAA0B;QACzB,EAAU,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Container } from '@kurdel/ioc';
|
|
2
|
+
import type { Method, ControllerConfig, ControllerResolver, RouteMatch } from '../../http/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* A minimal HTTP router contract.
|
|
5
|
+
*
|
|
6
|
+
* Responsibilities:
|
|
7
|
+
* - Register routes at bootstrap (`init`)
|
|
8
|
+
* - Resolve a request (method + path) to an executable handler
|
|
9
|
+
* - Leave actual execution (middlewares, controller action, rendering)
|
|
10
|
+
* to higher orchestration layers.
|
|
11
|
+
*/
|
|
12
|
+
export interface Router {
|
|
13
|
+
/**
|
|
14
|
+
* Initializes the routing table and prepares route lookup.
|
|
15
|
+
* Called exactly once during application bootstrap.
|
|
16
|
+
*/
|
|
17
|
+
init(resolver: ControllerResolver, controllerConfigs: ControllerConfig[]): void;
|
|
18
|
+
/**
|
|
19
|
+
* Attempts to resolve a route for the given HTTP method and URL.
|
|
20
|
+
*
|
|
21
|
+
* Returns a {@link RouteMatch} describing which controller/action to execute,
|
|
22
|
+
* or `null` if no route matches.
|
|
23
|
+
*
|
|
24
|
+
* The returned object is later executed by RuntimeRequestOrchestrator.
|
|
25
|
+
*/
|
|
26
|
+
resolve(method: Method, url: string, scope: Container): RouteMatch | null;
|
|
27
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/http/routing/router.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/http/server/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"running-server.js","sourceRoot":"","sources":["../../../src/http/server/running-server.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { HttpRequest, HttpResponse } from '@kurdel/common';
|
|
2
|
+
/**
|
|
3
|
+
* A unified abstraction over different HTTP runtime environments.
|
|
4
|
+
*
|
|
5
|
+
* The `ServerAdapter` interface allows the Kurdel runtime to operate
|
|
6
|
+
* in both long-running (Node.js) and request-scoped (Web/Edge) contexts
|
|
7
|
+
* using a shared contract.
|
|
8
|
+
*
|
|
9
|
+
* Implementations may bridge native platform primitives
|
|
10
|
+
* (e.g. Node’s `IncomingMessage`, Fetch API `Request`, etc.)
|
|
11
|
+
* into the framework-agnostic `HttpRequest` / `HttpResponse` types.
|
|
12
|
+
*
|
|
13
|
+
* ---
|
|
14
|
+
* ### Adapter responsibilities:
|
|
15
|
+
* - Translate platform-specific request/response objects.
|
|
16
|
+
* - Delegate execution to the runtime pipeline (middlewares + controller).
|
|
17
|
+
* - Manage platform-specific server lifecycle (optional).
|
|
18
|
+
*
|
|
19
|
+
* ### Typical Implementations:
|
|
20
|
+
* - **Node.js** → `NativeHttpServerAdapter` (uses `listen` / `close`)
|
|
21
|
+
* - **Web / Edge** → `WebHttpServerAdapter` (uses `handle`)
|
|
22
|
+
*
|
|
23
|
+
* ---
|
|
24
|
+
*/
|
|
25
|
+
export interface ServerAdapter<R = HttpRequest, S = HttpResponse> {
|
|
26
|
+
/**
|
|
27
|
+
* Registers the platform-independent request handler.
|
|
28
|
+
*
|
|
29
|
+
* The runtime calls this once to connect the main execution pipeline.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* adapter.on(async (req, res) => {
|
|
33
|
+
* await router.dispatch(req, res);
|
|
34
|
+
* });
|
|
35
|
+
*/
|
|
36
|
+
on(handler: (req: R, res: S) => void | Promise<void>): void;
|
|
37
|
+
/**
|
|
38
|
+
* Handles a single incoming request.
|
|
39
|
+
*
|
|
40
|
+
* This method is primarily used by environments that expose a Fetch-like API
|
|
41
|
+
* (such as Cloudflare Workers, Deno Deploy, Bun, or Vercel Edge).
|
|
42
|
+
*
|
|
43
|
+
* Implementations should adapt the incoming request object and return
|
|
44
|
+
* a platform-compatible response.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* const response = await adapter.handle(request);
|
|
48
|
+
*/
|
|
49
|
+
handle?(request: unknown, ...args: unknown[]): Promise<unknown> | unknown;
|
|
50
|
+
/**
|
|
51
|
+
* Starts listening for incoming connections.
|
|
52
|
+
*
|
|
53
|
+
* Used by long-running environments (e.g., Node.js, Bun’s TCP mode).
|
|
54
|
+
* May be a no-op in serverless / edge environments.
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* adapter.listen(3000, () => console.log('Server started'));
|
|
58
|
+
*/
|
|
59
|
+
listen?(port: number, hostOrCb?: string | (() => void), cb?: () => void): void | Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Gracefully closes the underlying server.
|
|
62
|
+
*
|
|
63
|
+
* Optional. Typically used in tests or controlled shutdowns.
|
|
64
|
+
*/
|
|
65
|
+
close?(): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* Returns the underlying platform-native server instance.
|
|
68
|
+
*
|
|
69
|
+
* This is a low-level escape hatch for advanced integrations
|
|
70
|
+
* (e.g., attaching WebSocket handlers, inspecting connections).
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* const nodeServer = adapter.raw<import('../../http').Server>();
|
|
74
|
+
*/
|
|
75
|
+
raw?<T = unknown>(): T | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* Returns the effective base URL of the server, if applicable.
|
|
78
|
+
*
|
|
79
|
+
* Useful for testing, introspection, or constructing self-referential links.
|
|
80
|
+
*/
|
|
81
|
+
url?(): string;
|
|
82
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-adapter.js","sourceRoot":"","sources":["../../../src/http/server/server-adapter.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type Method = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS';
|
|
2
|
+
export type Route = {
|
|
3
|
+
method: Method;
|
|
4
|
+
path: string;
|
|
5
|
+
handler: Function;
|
|
6
|
+
};
|
|
7
|
+
export type Query = Readonly<Record<string, string | string[]>>;
|
|
8
|
+
export type JsonValue = string | number | boolean | null | undefined | JsonValue[] | {
|
|
9
|
+
[k: string]: JsonValue;
|
|
10
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/http/types.ts"],"names":[],"mappings":""}
|
package/lib/index.d.ts
ADDED
package/lib/index.js
ADDED
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AACxC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/template/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-engine.js","sourceRoot":"","sources":["../../src/template/template-engine.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-tokens.js","sourceRoot":"","sources":["../../src/template/template-tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAiB,8BAA8B,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './tokens.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tokens/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const TOKENS: {
|
|
2
|
+
TemplateEngineToken: import("@kurdel/ioc").InjectionToken<import("../template/index.js").TemplateEngine>;
|
|
3
|
+
OnStart: import("@kurdel/ioc").InjectionToken<import("../app/index.js").LifecycleHook[]>;
|
|
4
|
+
OnShutdown: import("@kurdel/ioc").InjectionToken<import("../app/index.js").LifecycleHook[]>;
|
|
5
|
+
ServerAdapter: import("@kurdel/ioc").InjectionToken<import("../http/index.js").ServerAdapter<import("@kurdel/common").HttpRequest, import("@kurdel/common").HttpResponse>>;
|
|
6
|
+
Router: import("@kurdel/ioc").InjectionToken<import("../http/index.js").Router>;
|
|
7
|
+
ControllerClasses: import("@kurdel/ioc").InjectionToken<import("../http/index.js").Controller<{}>[]>;
|
|
8
|
+
ControllerConfigs: import("@kurdel/ioc").InjectionToken<import("../http/index.js").ControllerConfig[]>;
|
|
9
|
+
MiddlewareRegistry: import("@kurdel/ioc").InjectionToken<import("../http/index.js").MiddlewareRegistry>;
|
|
10
|
+
ControllerResolver: import("@kurdel/ioc").InjectionToken<import("../http/index.js").ControllerResolver>;
|
|
11
|
+
ResponseRenderer: import("@kurdel/ioc").InjectionToken<import("../http/index.js").ResponseRenderer>;
|
|
12
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { HTTP_TOKENS } from '../http/index.js';
|
|
2
|
+
import { APP_TOKENS } from '../app/index.js';
|
|
3
|
+
import { TemplateEngineToken } from '../template/index.js';
|
|
4
|
+
export const TOKENS = {
|
|
5
|
+
...HTTP_TOKENS,
|
|
6
|
+
...APP_TOKENS,
|
|
7
|
+
TemplateEngineToken,
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/tokens/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,GAAG,WAAW;IACd,GAAG,UAAU;IACb,mBAAmB;CACpB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@kurdel/core",
|
|
3
|
+
"version": "0.1.0-beta.1",
|
|
4
|
+
"description": "Core HTTP, routing, controller, and model abstractions for Kurdel",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": "./lib/index.js",
|
|
8
|
+
"./http": "./lib/http/index.js",
|
|
9
|
+
"./app": "./lib/app/index.js",
|
|
10
|
+
"./db": "./lib/db/index.js",
|
|
11
|
+
"./template": "./lib/template/index.js",
|
|
12
|
+
"./tokens": "./lib/tokens/index.js"
|
|
13
|
+
},
|
|
14
|
+
"main": "./lib/index.js",
|
|
15
|
+
"types": "./lib/index.d.ts",
|
|
16
|
+
"files": [
|
|
17
|
+
"lib"
|
|
18
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"prepack": "npm run build",
|
|
21
|
+
"test": "vitest run",
|
|
22
|
+
"test:ui": "vitest",
|
|
23
|
+
"test:watch": "vitest --watch",
|
|
24
|
+
"coverage": "vitest run --coverage",
|
|
25
|
+
"clean": "rimraf lib ../../.cache/tsconfig.core.build.tsbuildinfo",
|
|
26
|
+
"build": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json",
|
|
27
|
+
"build:force": "npm run clean && tsc -p tsconfig.build.json --force && tsc-alias -p tsconfig.build.json"
|
|
28
|
+
},
|
|
29
|
+
"keywords": [
|
|
30
|
+
"kurdel",
|
|
31
|
+
"framework",
|
|
32
|
+
"http",
|
|
33
|
+
"routing",
|
|
34
|
+
"typescript"
|
|
35
|
+
],
|
|
36
|
+
"author": "Andrii Sorokin",
|
|
37
|
+
"license": "MIT",
|
|
38
|
+
"engines": {
|
|
39
|
+
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
|
|
40
|
+
},
|
|
41
|
+
"repository": {
|
|
42
|
+
"type": "git",
|
|
43
|
+
"url": "git+https://github.com/ignorantic/kurdel.git",
|
|
44
|
+
"directory": "packages/core"
|
|
45
|
+
},
|
|
46
|
+
"homepage": "https://github.com/ignorantic/kurdel/tree/main/packages/core#readme",
|
|
47
|
+
"bugs": {
|
|
48
|
+
"url": "https://github.com/ignorantic/kurdel/issues"
|
|
49
|
+
},
|
|
50
|
+
"publishConfig": {
|
|
51
|
+
"access": "public",
|
|
52
|
+
"tag": "beta"
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"@types/node": "^20.9.0",
|
|
56
|
+
"@types/supertest": "^6.0.3",
|
|
57
|
+
"@vitest/coverage-v8": "^3.2.4",
|
|
58
|
+
"rimraf": "^6.0.1",
|
|
59
|
+
"supertest": "^7.1.4",
|
|
60
|
+
"tsc-alias": "^1.8.16"
|
|
61
|
+
},
|
|
62
|
+
"dependencies": {
|
|
63
|
+
"@kurdel/common": "0.1.0-beta.1",
|
|
64
|
+
"@kurdel/db": "0.1.0-beta.1",
|
|
65
|
+
"@kurdel/ioc": "0.1.0-beta.1"
|
|
66
|
+
}
|
|
67
|
+
}
|