@morojs/moro 1.0.0 → 1.0.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 +1 -1
- package/dist/core/config/index.d.ts +5 -5
- package/dist/core/config/index.js +1 -1
- package/dist/core/config/index.js.map +1 -1
- package/dist/core/config/loader.d.ts +1 -1
- package/dist/core/config/loader.js +58 -82
- package/dist/core/config/loader.js.map +1 -1
- package/dist/core/config/schema.d.ts +1 -1
- package/dist/core/config/schema.js +52 -111
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/config/utils.d.ts +2 -2
- package/dist/core/config/utils.js +18 -18
- package/dist/core/config/utils.js.map +1 -1
- package/dist/core/database/adapters/drizzle.d.ts +1 -1
- package/dist/core/database/adapters/drizzle.js +39 -55
- package/dist/core/database/adapters/drizzle.js.map +1 -1
- package/dist/core/database/adapters/index.d.ts +7 -7
- package/dist/core/database/adapters/index.js +11 -11
- package/dist/core/database/adapters/index.js.map +1 -1
- package/dist/core/database/adapters/mongodb.d.ts +1 -1
- package/dist/core/database/adapters/mongodb.js +19 -23
- package/dist/core/database/adapters/mongodb.js.map +1 -1
- package/dist/core/database/adapters/mysql.d.ts +1 -1
- package/dist/core/database/adapters/mysql.js +31 -27
- package/dist/core/database/adapters/mysql.js.map +1 -1
- package/dist/core/database/adapters/postgresql.d.ts +1 -1
- package/dist/core/database/adapters/postgresql.js +27 -35
- package/dist/core/database/adapters/postgresql.js.map +1 -1
- package/dist/core/database/adapters/redis.d.ts +1 -1
- package/dist/core/database/adapters/redis.js +24 -24
- package/dist/core/database/adapters/redis.js.map +1 -1
- package/dist/core/database/adapters/sqlite.d.ts +1 -1
- package/dist/core/database/adapters/sqlite.js +36 -36
- package/dist/core/database/adapters/sqlite.js.map +1 -1
- package/dist/core/database/index.d.ts +2 -2
- package/dist/core/docs/index.d.ts +7 -7
- package/dist/core/docs/index.js +13 -15
- package/dist/core/docs/index.js.map +1 -1
- package/dist/core/docs/openapi-generator.d.ts +5 -5
- package/dist/core/docs/openapi-generator.js +93 -94
- package/dist/core/docs/openapi-generator.js.map +1 -1
- package/dist/core/docs/simple-docs.d.ts +1 -1
- package/dist/core/docs/simple-docs.js +25 -28
- package/dist/core/docs/simple-docs.js.map +1 -1
- package/dist/core/docs/swagger-ui.d.ts +2 -2
- package/dist/core/docs/swagger-ui.js +46 -51
- package/dist/core/docs/swagger-ui.js.map +1 -1
- package/dist/core/docs/zod-to-openapi.d.ts +1 -1
- package/dist/core/docs/zod-to-openapi.js +115 -125
- package/dist/core/docs/zod-to-openapi.js.map +1 -1
- package/dist/core/events/event-bus.d.ts +1 -1
- package/dist/core/events/event-bus.js +15 -21
- package/dist/core/events/event-bus.js.map +1 -1
- package/dist/core/events/index.d.ts +2 -2
- package/dist/core/framework.d.ts +5 -5
- package/dist/core/framework.js +55 -60
- package/dist/core/framework.js.map +1 -1
- package/dist/core/http/http-server.d.ts +2 -2
- package/dist/core/http/http-server.js +228 -261
- package/dist/core/http/http-server.js.map +1 -1
- package/dist/core/http/index.d.ts +3 -3
- package/dist/core/http/router.d.ts +1 -1
- package/dist/core/http/router.js +15 -17
- package/dist/core/http/router.js.map +1 -1
- package/dist/core/logger/filters.d.ts +1 -1
- package/dist/core/logger/filters.js +16 -16
- package/dist/core/logger/filters.js.map +1 -1
- package/dist/core/logger/index.d.ts +3 -3
- package/dist/core/logger/logger.d.ts +1 -1
- package/dist/core/logger/logger.js +48 -59
- package/dist/core/logger/logger.js.map +1 -1
- package/dist/core/logger/outputs.d.ts +4 -4
- package/dist/core/logger/outputs.js +16 -20
- package/dist/core/logger/outputs.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cache/file.d.ts +1 -1
- package/dist/core/middleware/built-in/adapters/cache/file.js +19 -19
- package/dist/core/middleware/built-in/adapters/cache/file.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cache/index.d.ts +4 -4
- package/dist/core/middleware/built-in/adapters/cache/index.js +3 -3
- package/dist/core/middleware/built-in/adapters/cache/index.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cache/memory.d.ts +1 -1
- package/dist/core/middleware/built-in/adapters/cache/memory.js +5 -5
- package/dist/core/middleware/built-in/adapters/cache/memory.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cache/redis.d.ts +1 -1
- package/dist/core/middleware/built-in/adapters/cache/redis.js +18 -18
- package/dist/core/middleware/built-in/adapters/cache/redis.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cdn/azure.d.ts +1 -1
- package/dist/core/middleware/built-in/adapters/cdn/azure.js +8 -8
- package/dist/core/middleware/built-in/adapters/cdn/azure.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cdn/cloudflare.d.ts +1 -1
- package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js +14 -14
- package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cdn/cloudfront.d.ts +1 -1
- package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js +13 -15
- package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cdn/index.d.ts +4 -4
- package/dist/core/middleware/built-in/adapters/cdn/index.js +3 -3
- package/dist/core/middleware/built-in/adapters/index.d.ts +4 -4
- package/dist/core/middleware/built-in/auth.d.ts +1 -1
- package/dist/core/middleware/built-in/auth.js +14 -14
- package/dist/core/middleware/built-in/cache.d.ts +2 -2
- package/dist/core/middleware/built-in/cache.js +43 -45
- package/dist/core/middleware/built-in/cache.js.map +1 -1
- package/dist/core/middleware/built-in/cdn.d.ts +2 -2
- package/dist/core/middleware/built-in/cdn.js +27 -29
- package/dist/core/middleware/built-in/cdn.js.map +1 -1
- package/dist/core/middleware/built-in/cookie.d.ts +2 -2
- package/dist/core/middleware/built-in/cookie.js +17 -17
- package/dist/core/middleware/built-in/cookie.js.map +1 -1
- package/dist/core/middleware/built-in/cors.d.ts +1 -1
- package/dist/core/middleware/built-in/cors.js +13 -13
- package/dist/core/middleware/built-in/csp.d.ts +1 -1
- package/dist/core/middleware/built-in/csp.js +22 -25
- package/dist/core/middleware/built-in/csp.js.map +1 -1
- package/dist/core/middleware/built-in/csrf.d.ts +1 -1
- package/dist/core/middleware/built-in/csrf.js +21 -24
- package/dist/core/middleware/built-in/csrf.js.map +1 -1
- package/dist/core/middleware/built-in/error-tracker.js +2 -2
- package/dist/core/middleware/built-in/index.d.ts +14 -14
- package/dist/core/middleware/built-in/performance-monitor.js +2 -2
- package/dist/core/middleware/built-in/rate-limit.d.ts +1 -1
- package/dist/core/middleware/built-in/rate-limit.js +12 -12
- package/dist/core/middleware/built-in/request-logger.js.map +1 -1
- package/dist/core/middleware/built-in/session.d.ts +5 -5
- package/dist/core/middleware/built-in/session.js +35 -38
- package/dist/core/middleware/built-in/session.js.map +1 -1
- package/dist/core/middleware/built-in/sse.d.ts +1 -1
- package/dist/core/middleware/built-in/sse.js +20 -22
- package/dist/core/middleware/built-in/sse.js.map +1 -1
- package/dist/core/middleware/built-in/validation.d.ts +1 -1
- package/dist/core/middleware/built-in/validation.js +13 -13
- package/dist/core/middleware/index.d.ts +5 -5
- package/dist/core/middleware/index.js +16 -16
- package/dist/core/middleware/index.js.map +1 -1
- package/dist/core/modules/auto-discovery.d.ts +2 -2
- package/dist/core/modules/auto-discovery.js +12 -13
- package/dist/core/modules/auto-discovery.js.map +1 -1
- package/dist/core/modules/index.d.ts +2 -2
- package/dist/core/modules/index.js.map +1 -1
- package/dist/core/modules/modules.d.ts +3 -3
- package/dist/core/modules/modules.js +3 -6
- package/dist/core/modules/modules.js.map +1 -1
- package/dist/core/networking/index.d.ts +2 -2
- package/dist/core/networking/index.js.map +1 -1
- package/dist/core/networking/service-discovery.d.ts +2 -2
- package/dist/core/networking/service-discovery.js +27 -27
- package/dist/core/networking/service-discovery.js.map +1 -1
- package/dist/core/networking/websocket-manager.d.ts +3 -3
- package/dist/core/networking/websocket-manager.js +15 -16
- package/dist/core/networking/websocket-manager.js.map +1 -1
- package/dist/core/routing/app-integration.d.ts +2 -2
- package/dist/core/routing/app-integration.js +13 -13
- package/dist/core/routing/app-integration.js.map +1 -1
- package/dist/core/routing/index.d.ts +3 -3
- package/dist/core/routing/index.js +43 -52
- package/dist/core/routing/index.js.map +1 -1
- package/dist/core/runtime/aws-lambda-adapter.d.ts +3 -3
- package/dist/core/runtime/aws-lambda-adapter.js +14 -16
- package/dist/core/runtime/aws-lambda-adapter.js.map +1 -1
- package/dist/core/runtime/base-adapter.d.ts +2 -2
- package/dist/core/runtime/base-adapter.js +11 -12
- package/dist/core/runtime/base-adapter.js.map +1 -1
- package/dist/core/runtime/cloudflare-workers-adapter.d.ts +3 -3
- package/dist/core/runtime/cloudflare-workers-adapter.js +20 -21
- package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
- package/dist/core/runtime/index.d.ts +9 -9
- package/dist/core/runtime/index.js +4 -4
- package/dist/core/runtime/index.js.map +1 -1
- package/dist/core/runtime/node-adapter.d.ts +5 -5
- package/dist/core/runtime/node-adapter.js +35 -35
- package/dist/core/runtime/node-adapter.js.map +1 -1
- package/dist/core/runtime/vercel-edge-adapter.d.ts +3 -3
- package/dist/core/runtime/vercel-edge-adapter.js +12 -15
- package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
- package/dist/core/utilities/circuit-breaker.js +6 -6
- package/dist/core/utilities/container.d.ts +1 -1
- package/dist/core/utilities/container.js +17 -22
- package/dist/core/utilities/container.js.map +1 -1
- package/dist/core/utilities/hooks.d.ts +3 -3
- package/dist/core/utilities/hooks.js +11 -11
- package/dist/core/utilities/hooks.js.map +1 -1
- package/dist/core/utilities/index.d.ts +4 -4
- package/dist/core/validation/index.d.ts +3 -3
- package/dist/core/validation/index.js +15 -15
- package/dist/core/validation/index.js.map +1 -1
- package/dist/index.d.ts +31 -30
- package/dist/index.js +28 -1
- package/dist/index.js.map +1 -1
- package/dist/moro.d.ts +14 -14
- package/dist/moro.js +79 -88
- package/dist/moro.js.map +1 -1
- package/dist/types/cache.d.ts +1 -1
- package/dist/types/core.d.ts +2 -2
- package/dist/types/events.d.ts +19 -19
- package/dist/types/hooks.d.ts +1 -1
- package/dist/types/http.d.ts +2 -2
- package/dist/types/logger.d.ts +3 -3
- package/dist/types/module.d.ts +2 -2
- package/dist/types/runtime.d.ts +2 -2
- package/dist/types/session.d.ts +4 -4
- package/package.json +180 -164
- package/src/core/config/index.ts +7 -9
- package/src/core/config/loader.ts +86 -158
- package/src/core/config/schema.ts +59 -122
- package/src/core/config/utils.ts +27 -45
- package/src/core/database/adapters/drizzle.ts +53 -75
- package/src/core/database/adapters/index.ts +26 -29
- package/src/core/database/adapters/mongodb.ts +31 -54
- package/src/core/database/adapters/mysql.ts +40 -50
- package/src/core/database/adapters/postgresql.ts +32 -42
- package/src/core/database/adapters/redis.ts +31 -36
- package/src/core/database/adapters/sqlite.ts +43 -51
- package/src/core/database/index.ts +2 -2
- package/src/core/docs/index.ts +25 -39
- package/src/core/docs/openapi-generator.ts +104 -117
- package/src/core/docs/simple-docs.ts +29 -39
- package/src/core/docs/swagger-ui.ts +57 -76
- package/src/core/docs/zod-to-openapi.ts +121 -153
- package/src/core/events/event-bus.ts +22 -45
- package/src/core/events/index.ts +2 -2
- package/src/core/framework.ts +119 -197
- package/src/core/http/http-server.ts +260 -360
- package/src/core/http/index.ts +3 -8
- package/src/core/http/router.ts +19 -31
- package/src/core/logger/filters.ts +19 -22
- package/src/core/logger/index.ts +3 -3
- package/src/core/logger/logger.ts +59 -100
- package/src/core/logger/outputs.ts +23 -27
- package/src/core/middleware/built-in/adapters/cache/file.ts +21 -23
- package/src/core/middleware/built-in/adapters/cache/index.ts +11 -14
- package/src/core/middleware/built-in/adapters/cache/memory.ts +7 -7
- package/src/core/middleware/built-in/adapters/cache/redis.ts +21 -24
- package/src/core/middleware/built-in/adapters/cdn/azure.ts +10 -18
- package/src/core/middleware/built-in/adapters/cdn/cloudflare.ts +19 -36
- package/src/core/middleware/built-in/adapters/cdn/cloudfront.ts +17 -26
- package/src/core/middleware/built-in/adapters/cdn/index.ts +10 -10
- package/src/core/middleware/built-in/adapters/index.ts +4 -4
- package/src/core/middleware/built-in/auth.ts +16 -16
- package/src/core/middleware/built-in/cache.ts +50 -67
- package/src/core/middleware/built-in/cdn.ts +34 -61
- package/src/core/middleware/built-in/cookie.ts +23 -28
- package/src/core/middleware/built-in/cors.ts +17 -17
- package/src/core/middleware/built-in/csp.ts +25 -31
- package/src/core/middleware/built-in/csrf.ts +24 -29
- package/src/core/middleware/built-in/error-tracker.ts +3 -3
- package/src/core/middleware/built-in/index.ts +28 -28
- package/src/core/middleware/built-in/performance-monitor.ts +4 -4
- package/src/core/middleware/built-in/rate-limit.ts +15 -15
- package/src/core/middleware/built-in/request-logger.ts +1 -3
- package/src/core/middleware/built-in/session.ts +47 -70
- package/src/core/middleware/built-in/sse.ts +23 -28
- package/src/core/middleware/built-in/validation.ts +15 -15
- package/src/core/middleware/index.ts +26 -37
- package/src/core/modules/auto-discovery.ts +21 -31
- package/src/core/modules/index.ts +2 -5
- package/src/core/modules/modules.ts +11 -20
- package/src/core/networking/index.ts +2 -6
- package/src/core/networking/service-discovery.ts +41 -61
- package/src/core/networking/websocket-manager.ts +27 -36
- package/src/core/routing/app-integration.ts +19 -32
- package/src/core/routing/index.ts +57 -88
- package/src/core/runtime/aws-lambda-adapter.ts +20 -30
- package/src/core/runtime/base-adapter.ts +17 -27
- package/src/core/runtime/cloudflare-workers-adapter.ts +28 -42
- package/src/core/runtime/index.ts +21 -33
- package/src/core/runtime/node-adapter.ts +59 -73
- package/src/core/runtime/vercel-edge-adapter.ts +18 -29
- package/src/core/utilities/circuit-breaker.ts +7 -7
- package/src/core/utilities/container.ts +52 -89
- package/src/core/utilities/hooks.ts +17 -23
- package/src/core/utilities/index.ts +4 -4
- package/src/core/validation/index.ts +25 -51
- package/src/index.ts +58 -60
- package/src/moro.ts +119 -191
- package/src/types/cache.ts +1 -1
- package/src/types/core.ts +2 -2
- package/src/types/database.ts +2 -10
- package/src/types/events.ts +23 -31
- package/src/types/hooks.ts +1 -1
- package/src/types/http.ts +5 -8
- package/src/types/logger.ts +7 -23
- package/src/types/module.ts +2 -2
- package/src/types/runtime.ts +6 -21
- package/src/types/session.ts +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare-workers-adapter.js","sourceRoot":"","sources":["../../../src/core/runtime/cloudflare-workers-adapter.ts"],"names":[],"mappings":";;;AAAA,qCAAqC;AACrC,iDAAoD;AAapD,MAAa,wBAAyB,SAAQ,iCAAkB;IAAhE;;QACW,SAAI,GAAG,oBAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"cloudflare-workers-adapter.js","sourceRoot":"","sources":["../../../src/core/runtime/cloudflare-workers-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export { BaseRuntimeAdapter } from
|
|
2
|
-
export { NodeRuntimeAdapter } from
|
|
3
|
-
export { VercelEdgeAdapter } from
|
|
4
|
-
export { AWSLambdaAdapter } from
|
|
5
|
-
export { CloudflareWorkersAdapter } from
|
|
6
|
-
export type { RuntimeType, RuntimeAdapter, RuntimeConfig, RuntimeMoroOptions, RuntimeHttpResponse, } from
|
|
7
|
-
export type { LambdaEvent, LambdaContext, LambdaResponse
|
|
8
|
-
export type { WorkersEnv, WorkersContext } from
|
|
9
|
-
import { RuntimeType, RuntimeAdapter } from
|
|
1
|
+
export { BaseRuntimeAdapter } from './base-adapter';
|
|
2
|
+
export { NodeRuntimeAdapter } from './node-adapter';
|
|
3
|
+
export { VercelEdgeAdapter } from './vercel-edge-adapter';
|
|
4
|
+
export { AWSLambdaAdapter } from './aws-lambda-adapter';
|
|
5
|
+
export { CloudflareWorkersAdapter } from './cloudflare-workers-adapter';
|
|
6
|
+
export type { RuntimeType, RuntimeAdapter, RuntimeConfig, RuntimeMoroOptions, RuntimeHttpResponse, } from '../../types/runtime';
|
|
7
|
+
export type { LambdaEvent, LambdaContext, LambdaResponse } from './aws-lambda-adapter';
|
|
8
|
+
export type { WorkersEnv, WorkersContext } from './cloudflare-workers-adapter';
|
|
9
|
+
import { RuntimeType, RuntimeAdapter } from '../../types/runtime';
|
|
10
10
|
export declare function createRuntimeAdapter(type: RuntimeType): RuntimeAdapter;
|
|
11
11
|
export declare function createNodeHandler(handler: (req: any, res: any) => Promise<void>): import("../http").MoroHttpServer;
|
|
12
12
|
export declare function createEdgeHandler(handler: (req: any, res: any) => Promise<void>): (request: Request) => Promise<Response>;
|
|
@@ -24,13 +24,13 @@ const aws_lambda_adapter_2 = require("./aws-lambda-adapter");
|
|
|
24
24
|
const cloudflare_workers_adapter_2 = require("./cloudflare-workers-adapter");
|
|
25
25
|
function createRuntimeAdapter(type) {
|
|
26
26
|
switch (type) {
|
|
27
|
-
case
|
|
27
|
+
case 'node':
|
|
28
28
|
return new node_adapter_2.NodeRuntimeAdapter();
|
|
29
|
-
case
|
|
29
|
+
case 'vercel-edge':
|
|
30
30
|
return new vercel_edge_adapter_2.VercelEdgeAdapter();
|
|
31
|
-
case
|
|
31
|
+
case 'aws-lambda':
|
|
32
32
|
return new aws_lambda_adapter_2.AWSLambdaAdapter();
|
|
33
|
-
case
|
|
33
|
+
case 'cloudflare-workers':
|
|
34
34
|
return new cloudflare_workers_adapter_2.CloudflareWorkersAdapter();
|
|
35
35
|
default:
|
|
36
36
|
throw new Error(`Unsupported runtime type: ${type}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/runtime/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/runtime/index.ts"],"names":[],"mappings":";;;AA2BA,oDAaC;AAGD,8CAGC;AAED,8CAGC;AAED,kDAGC;AAED,kDAGC;AA7DD,0BAA0B;AAC1B,+CAAoD;AAA3C,kHAAA,kBAAkB,OAAA;AAC3B,+CAAoD;AAA3C,kHAAA,kBAAkB,OAAA;AAC3B,6DAA0D;AAAjD,wHAAA,iBAAiB,OAAA;AAC1B,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA;AACzB,2EAAwE;AAA/D,sIAAA,wBAAwB,OAAA;AAejC,4BAA4B;AAC5B,iDAAoD;AACpD,+DAA0D;AAC1D,6DAAwD;AACxD,6EAAwE;AAGxE,SAAgB,oBAAoB,CAAC,IAAiB;IACpD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,OAAO,IAAI,iCAAkB,EAAE,CAAC;QAClC,KAAK,aAAa;YAChB,OAAO,IAAI,uCAAiB,EAAE,CAAC;QACjC,KAAK,YAAY;YACf,OAAO,IAAI,qCAAgB,EAAE,CAAC;QAChC,KAAK,oBAAoB;YACvB,OAAO,IAAI,qDAAwB,EAAE,CAAC;QACxC;YACE,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED,+DAA+D;AAC/D,SAAgB,iBAAiB,CAAC,OAA8C;IAC9E,MAAM,OAAO,GAAG,IAAI,iCAAkB,EAAE,CAAC;IACzC,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,iBAAiB,CAAC,OAA8C;IAC9E,MAAM,OAAO,GAAG,IAAI,uCAAiB,EAAE,CAAC;IACxC,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,mBAAmB,CAAC,OAA8C;IAChF,MAAM,OAAO,GAAG,IAAI,qCAAgB,EAAE,CAAC;IACvC,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,mBAAmB,CAAC,OAA8C;IAChF,MAAM,OAAO,GAAG,IAAI,qDAAwB,EAAE,CAAC;IAC/C,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { IncomingMessage, ServerResponse } from
|
|
2
|
-
import { BaseRuntimeAdapter } from
|
|
3
|
-
import { HttpRequest, HttpResponse } from
|
|
4
|
-
import { RuntimeHttpResponse } from
|
|
5
|
-
import { MoroHttpServer } from
|
|
1
|
+
import { IncomingMessage, ServerResponse } from 'http';
|
|
2
|
+
import { BaseRuntimeAdapter } from './base-adapter';
|
|
3
|
+
import { HttpRequest, HttpResponse } from '../../types/http';
|
|
4
|
+
import { RuntimeHttpResponse } from '../../types/runtime';
|
|
5
|
+
import { MoroHttpServer } from '../http/http-server';
|
|
6
6
|
export declare class NodeRuntimeAdapter extends BaseRuntimeAdapter {
|
|
7
7
|
readonly type: "node";
|
|
8
8
|
adaptRequest(req: IncomingMessage): Promise<HttpRequest>;
|
|
@@ -39,13 +39,13 @@ const http_server_1 = require("../http/http-server");
|
|
|
39
39
|
class NodeRuntimeAdapter extends base_adapter_1.BaseRuntimeAdapter {
|
|
40
40
|
constructor() {
|
|
41
41
|
super(...arguments);
|
|
42
|
-
this.type =
|
|
42
|
+
this.type = 'node';
|
|
43
43
|
}
|
|
44
44
|
async adaptRequest(req) {
|
|
45
|
-
const { pathname, query } = this.parseUrl(req.url ||
|
|
45
|
+
const { pathname, query } = this.parseUrl(req.url || '/');
|
|
46
46
|
// Parse body for POST/PUT/PATCH requests
|
|
47
47
|
let body;
|
|
48
|
-
if ([
|
|
48
|
+
if (['POST', 'PUT', 'PATCH'].includes(req.method)) {
|
|
49
49
|
body = await this.parseRequestBody(req);
|
|
50
50
|
}
|
|
51
51
|
const baseRequest = {
|
|
@@ -63,7 +63,7 @@ class NodeRuntimeAdapter extends base_adapter_1.BaseRuntimeAdapter {
|
|
|
63
63
|
body,
|
|
64
64
|
ip: this.getClientIP(req),
|
|
65
65
|
params: {},
|
|
66
|
-
requestId:
|
|
66
|
+
requestId: '',
|
|
67
67
|
cookies: {},
|
|
68
68
|
files: {},
|
|
69
69
|
};
|
|
@@ -78,8 +78,8 @@ class NodeRuntimeAdapter extends base_adapter_1.BaseRuntimeAdapter {
|
|
|
78
78
|
const httpServer = new http_server_1.MoroHttpServer();
|
|
79
79
|
// Replace the default request handler with our runtime-aware handler
|
|
80
80
|
const originalServer = httpServer.getServer();
|
|
81
|
-
originalServer.removeAllListeners(
|
|
82
|
-
originalServer.on(
|
|
81
|
+
originalServer.removeAllListeners('request');
|
|
82
|
+
originalServer.on('request', async (req, res) => {
|
|
83
83
|
try {
|
|
84
84
|
const moroReq = await this.adaptRequest(req);
|
|
85
85
|
const moroRes = this.enhanceResponse(res);
|
|
@@ -88,11 +88,11 @@ class NodeRuntimeAdapter extends base_adapter_1.BaseRuntimeAdapter {
|
|
|
88
88
|
catch (error) {
|
|
89
89
|
if (!res.headersSent) {
|
|
90
90
|
res.statusCode = 500;
|
|
91
|
-
res.setHeader(
|
|
91
|
+
res.setHeader('Content-Type', 'application/json');
|
|
92
92
|
res.end(JSON.stringify({
|
|
93
93
|
success: false,
|
|
94
|
-
error:
|
|
95
|
-
message: error instanceof Error ? error.message :
|
|
94
|
+
error: 'Internal server error',
|
|
95
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
96
96
|
}));
|
|
97
97
|
}
|
|
98
98
|
}
|
|
@@ -105,35 +105,35 @@ class NodeRuntimeAdapter extends base_adapter_1.BaseRuntimeAdapter {
|
|
|
105
105
|
// Helper methods
|
|
106
106
|
async parseRequestBody(req) {
|
|
107
107
|
return new Promise((resolve, reject) => {
|
|
108
|
-
let body =
|
|
109
|
-
req.on(
|
|
108
|
+
let body = '';
|
|
109
|
+
req.on('data', chunk => {
|
|
110
110
|
body += chunk.toString();
|
|
111
111
|
});
|
|
112
|
-
req.on(
|
|
112
|
+
req.on('end', () => {
|
|
113
113
|
try {
|
|
114
|
-
const contentType = req.headers[
|
|
114
|
+
const contentType = req.headers['content-type'] || '';
|
|
115
115
|
resolve(this.parseBody(body, contentType));
|
|
116
116
|
}
|
|
117
117
|
catch (error) {
|
|
118
118
|
reject(error);
|
|
119
119
|
}
|
|
120
120
|
});
|
|
121
|
-
req.on(
|
|
121
|
+
req.on('error', reject);
|
|
122
122
|
});
|
|
123
123
|
}
|
|
124
124
|
getClientIP(req) {
|
|
125
|
-
const forwarded = req.headers[
|
|
125
|
+
const forwarded = req.headers['x-forwarded-for'];
|
|
126
126
|
if (forwarded) {
|
|
127
|
-
return forwarded.split(
|
|
127
|
+
return forwarded.split(',')[0].trim();
|
|
128
128
|
}
|
|
129
|
-
return req.socket.remoteAddress ||
|
|
129
|
+
return req.socket.remoteAddress || 'unknown';
|
|
130
130
|
}
|
|
131
131
|
enhanceResponse(res) {
|
|
132
132
|
const enhanced = res;
|
|
133
133
|
// Add MoroJS response methods if they don't exist
|
|
134
134
|
if (!enhanced.json) {
|
|
135
135
|
enhanced.json = function (data) {
|
|
136
|
-
this.setHeader(
|
|
136
|
+
this.setHeader('Content-Type', 'application/json');
|
|
137
137
|
this.end(JSON.stringify(data));
|
|
138
138
|
};
|
|
139
139
|
}
|
|
@@ -151,49 +151,49 @@ class NodeRuntimeAdapter extends base_adapter_1.BaseRuntimeAdapter {
|
|
|
151
151
|
if (!enhanced.cookie) {
|
|
152
152
|
enhanced.cookie = function (name, value, options) {
|
|
153
153
|
const cookieString = `${name}=${value}`;
|
|
154
|
-
this.setHeader(
|
|
154
|
+
this.setHeader('Set-Cookie', cookieString);
|
|
155
155
|
return this;
|
|
156
156
|
};
|
|
157
157
|
}
|
|
158
158
|
if (!enhanced.clearCookie) {
|
|
159
159
|
enhanced.clearCookie = function (name, options) {
|
|
160
|
-
this.setHeader(
|
|
160
|
+
this.setHeader('Set-Cookie', `${name}=; expires=Thu, 01 Jan 1970 00:00:00 GMT`);
|
|
161
161
|
return this;
|
|
162
162
|
};
|
|
163
163
|
}
|
|
164
164
|
if (!enhanced.redirect) {
|
|
165
165
|
enhanced.redirect = function (url, status) {
|
|
166
166
|
this.statusCode = status || 302;
|
|
167
|
-
this.setHeader(
|
|
167
|
+
this.setHeader('Location', url);
|
|
168
168
|
this.end();
|
|
169
169
|
};
|
|
170
170
|
}
|
|
171
171
|
if (!enhanced.sendFile) {
|
|
172
172
|
enhanced.sendFile = async function (filePath) {
|
|
173
|
-
const fs = await Promise.resolve().then(() => __importStar(require(
|
|
174
|
-
const path = await Promise.resolve().then(() => __importStar(require(
|
|
173
|
+
const fs = await Promise.resolve().then(() => __importStar(require('fs')));
|
|
174
|
+
const path = await Promise.resolve().then(() => __importStar(require('path')));
|
|
175
175
|
try {
|
|
176
176
|
const data = await fs.promises.readFile(filePath);
|
|
177
177
|
const ext = path.extname(filePath);
|
|
178
178
|
// Basic content type detection
|
|
179
179
|
const contentTypes = {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
180
|
+
'.html': 'text/html',
|
|
181
|
+
'.js': 'application/javascript',
|
|
182
|
+
'.css': 'text/css',
|
|
183
|
+
'.json': 'application/json',
|
|
184
|
+
'.png': 'image/png',
|
|
185
|
+
'.jpg': 'image/jpeg',
|
|
186
|
+
'.jpeg': 'image/jpeg',
|
|
187
|
+
'.gif': 'image/gif',
|
|
188
|
+
'.svg': 'image/svg+xml',
|
|
189
189
|
};
|
|
190
|
-
const contentType = contentTypes[ext] ||
|
|
191
|
-
this.setHeader(
|
|
190
|
+
const contentType = contentTypes[ext] || 'application/octet-stream';
|
|
191
|
+
this.setHeader('Content-Type', contentType);
|
|
192
192
|
this.end(data);
|
|
193
193
|
}
|
|
194
194
|
catch (error) {
|
|
195
195
|
this.statusCode = 404;
|
|
196
|
-
this.end(
|
|
196
|
+
this.end('File not found');
|
|
197
197
|
}
|
|
198
198
|
};
|
|
199
199
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-adapter.js","sourceRoot":"","sources":["../../../src/core/runtime/node-adapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,iDAAoD;AAGpD,qDAAqD;AAErD,MAAa,kBAAmB,SAAQ,iCAAkB;IAA1D;;QACW,SAAI,GAAG,MAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"node-adapter.js","sourceRoot":"","sources":["../../../src/core/runtime/node-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { BaseRuntimeAdapter } from
|
|
2
|
-
import { HttpRequest, HttpResponse } from
|
|
3
|
-
import { RuntimeHttpResponse } from
|
|
1
|
+
import { BaseRuntimeAdapter } from './base-adapter';
|
|
2
|
+
import { HttpRequest, HttpResponse } from '../../types/http';
|
|
3
|
+
import { RuntimeHttpResponse } from '../../types/runtime';
|
|
4
4
|
export declare class VercelEdgeAdapter extends BaseRuntimeAdapter {
|
|
5
5
|
readonly type: "vercel-edge";
|
|
6
6
|
adaptRequest(request: Request): Promise<HttpRequest>;
|
|
@@ -6,16 +6,16 @@ const base_adapter_1 = require("./base-adapter");
|
|
|
6
6
|
class VercelEdgeAdapter extends base_adapter_1.BaseRuntimeAdapter {
|
|
7
7
|
constructor() {
|
|
8
8
|
super(...arguments);
|
|
9
|
-
this.type =
|
|
9
|
+
this.type = 'vercel-edge';
|
|
10
10
|
}
|
|
11
11
|
async adaptRequest(request) {
|
|
12
12
|
const url = new URL(request.url);
|
|
13
13
|
const { pathname, query } = this.parseUrl(request.url);
|
|
14
14
|
// Parse body for POST/PUT/PATCH requests
|
|
15
15
|
let body;
|
|
16
|
-
if ([
|
|
17
|
-
const contentType = request.headers.get(
|
|
18
|
-
if (contentType.includes(
|
|
16
|
+
if (['POST', 'PUT', 'PATCH'].includes(request.method)) {
|
|
17
|
+
const contentType = request.headers.get('content-type') || '';
|
|
18
|
+
if (contentType.includes('application/json')) {
|
|
19
19
|
try {
|
|
20
20
|
body = await request.json();
|
|
21
21
|
}
|
|
@@ -41,7 +41,7 @@ class VercelEdgeAdapter extends base_adapter_1.BaseRuntimeAdapter {
|
|
|
41
41
|
headers,
|
|
42
42
|
ip: this.getClientIP(headers),
|
|
43
43
|
params: {},
|
|
44
|
-
requestId:
|
|
44
|
+
requestId: '',
|
|
45
45
|
cookies: {},
|
|
46
46
|
files: {},
|
|
47
47
|
};
|
|
@@ -54,8 +54,7 @@ class VercelEdgeAdapter extends base_adapter_1.BaseRuntimeAdapter {
|
|
|
54
54
|
let status = runtimeResponse.statusCode || 200;
|
|
55
55
|
const headers = runtimeResponse.headers || {};
|
|
56
56
|
// If it's a real HttpResponse, we need to extract the data differently
|
|
57
|
-
if (
|
|
58
|
-
typeof moroResponse.statusCode === "number") {
|
|
57
|
+
if ('statusCode' in moroResponse && typeof moroResponse.statusCode === 'number') {
|
|
59
58
|
status = moroResponse.statusCode;
|
|
60
59
|
}
|
|
61
60
|
// Convert headers to Headers object
|
|
@@ -64,9 +63,9 @@ class VercelEdgeAdapter extends base_adapter_1.BaseRuntimeAdapter {
|
|
|
64
63
|
responseHeaders.set(key, value);
|
|
65
64
|
});
|
|
66
65
|
// Handle different body types
|
|
67
|
-
if (typeof body ===
|
|
66
|
+
if (typeof body === 'object' && body !== null) {
|
|
68
67
|
body = JSON.stringify(body);
|
|
69
|
-
responseHeaders.set(
|
|
68
|
+
responseHeaders.set('Content-Type', 'application/json');
|
|
70
69
|
}
|
|
71
70
|
return new Response(body, {
|
|
72
71
|
status,
|
|
@@ -85,11 +84,11 @@ class VercelEdgeAdapter extends base_adapter_1.BaseRuntimeAdapter {
|
|
|
85
84
|
catch (error) {
|
|
86
85
|
return new Response(JSON.stringify({
|
|
87
86
|
success: false,
|
|
88
|
-
error:
|
|
89
|
-
message: error instanceof Error ? error.message :
|
|
87
|
+
error: 'Internal server error',
|
|
88
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
90
89
|
}), {
|
|
91
90
|
status: 500,
|
|
92
|
-
headers: {
|
|
91
|
+
headers: { 'Content-Type': 'application/json' },
|
|
93
92
|
});
|
|
94
93
|
}
|
|
95
94
|
};
|
|
@@ -97,9 +96,7 @@ class VercelEdgeAdapter extends base_adapter_1.BaseRuntimeAdapter {
|
|
|
97
96
|
// Vercel Edge doesn't have a listen method - it's handled by the platform
|
|
98
97
|
// listen method is optional in the interface
|
|
99
98
|
getClientIP(headers) {
|
|
100
|
-
return
|
|
101
|
-
headers["x-real-ip"] ||
|
|
102
|
-
"unknown");
|
|
99
|
+
return headers['x-forwarded-for']?.split(',')[0]?.trim() || headers['x-real-ip'] || 'unknown';
|
|
103
100
|
}
|
|
104
101
|
}
|
|
105
102
|
exports.VercelEdgeAdapter = VercelEdgeAdapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel-edge-adapter.js","sourceRoot":"","sources":["../../../src/core/runtime/vercel-edge-adapter.ts"],"names":[],"mappings":";;;AAAA,8BAA8B;AAC9B,iDAAoD;AAIpD,MAAa,iBAAkB,SAAQ,iCAAkB;IAAzD;;QACW,SAAI,GAAG,aAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"vercel-edge-adapter.js","sourceRoot":"","sources":["../../../src/core/runtime/vercel-edge-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,14 +7,14 @@ class CircuitBreaker {
|
|
|
7
7
|
this.options = options;
|
|
8
8
|
this.failures = 0;
|
|
9
9
|
this.lastFailTime = 0;
|
|
10
|
-
this.state =
|
|
10
|
+
this.state = 'CLOSED';
|
|
11
11
|
}
|
|
12
12
|
async execute(fn) {
|
|
13
|
-
if (this.state ===
|
|
13
|
+
if (this.state === 'OPEN') {
|
|
14
14
|
if (Date.now() - this.lastFailTime < this.options.resetTimeout) {
|
|
15
|
-
throw new Error(
|
|
15
|
+
throw new Error('Circuit breaker is OPEN');
|
|
16
16
|
}
|
|
17
|
-
this.state =
|
|
17
|
+
this.state = 'HALF_OPEN';
|
|
18
18
|
}
|
|
19
19
|
try {
|
|
20
20
|
const result = await fn();
|
|
@@ -28,13 +28,13 @@ class CircuitBreaker {
|
|
|
28
28
|
}
|
|
29
29
|
onSuccess() {
|
|
30
30
|
this.failures = 0;
|
|
31
|
-
this.state =
|
|
31
|
+
this.state = 'CLOSED';
|
|
32
32
|
}
|
|
33
33
|
onFailure() {
|
|
34
34
|
this.failures++;
|
|
35
35
|
this.lastFailTime = Date.now();
|
|
36
36
|
if (this.failures >= this.options.failureThreshold) {
|
|
37
|
-
this.state =
|
|
37
|
+
this.state = 'OPEN';
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
}
|
|
@@ -23,7 +23,7 @@ var ServiceScope;
|
|
|
23
23
|
})(ServiceScope || (exports.ServiceScope = ServiceScope = {}));
|
|
24
24
|
// Higher-order functions for service composition
|
|
25
25
|
const withLogging = (logger) => (factory) => (deps, ctx) => {
|
|
26
|
-
logger.debug(`Creating service with dependencies: ${Object.keys(deps).join(
|
|
26
|
+
logger.debug(`Creating service with dependencies: ${Object.keys(deps).join(', ')}`);
|
|
27
27
|
const start = Date.now();
|
|
28
28
|
const result = factory(deps, ctx);
|
|
29
29
|
logger.debug(`Service created in ${Date.now() - start}ms`);
|
|
@@ -33,7 +33,7 @@ exports.withLogging = withLogging;
|
|
|
33
33
|
const withCaching = (ttl = 300000) => (factory) => {
|
|
34
34
|
const cache = new Map();
|
|
35
35
|
return async (deps, ctx) => {
|
|
36
|
-
const key = `${ctx?.requestId ||
|
|
36
|
+
const key = `${ctx?.requestId || 'global'}_${JSON.stringify(deps)}`;
|
|
37
37
|
const cached = cache.get(key);
|
|
38
38
|
if (cached && cached.expires > Date.now()) {
|
|
39
39
|
return cached.value;
|
|
@@ -53,7 +53,7 @@ const withRetry = (maxRetries = 3, delay = 1000) => (factory) => async (deps, ct
|
|
|
53
53
|
catch (error) {
|
|
54
54
|
lastError = error;
|
|
55
55
|
if (i < maxRetries) {
|
|
56
|
-
await new Promise(
|
|
56
|
+
await new Promise(resolve => setTimeout(resolve, delay * Math.pow(2, i)));
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
}
|
|
@@ -189,9 +189,7 @@ class FunctionalContainer extends events_1.EventEmitter {
|
|
|
189
189
|
tags: service.metadata.tags,
|
|
190
190
|
lifecycle: instance?.lifecycle || ServiceLifecycle.UNINITIALIZED,
|
|
191
191
|
accessCount: instance?.accessCount || 0,
|
|
192
|
-
lastAccessed: instance?.lastAccessed
|
|
193
|
-
? new Date(instance.lastAccessed).toISOString()
|
|
194
|
-
: null,
|
|
192
|
+
lastAccessed: instance?.lastAccessed ? new Date(instance.lastAccessed).toISOString() : null,
|
|
195
193
|
};
|
|
196
194
|
}
|
|
197
195
|
return info;
|
|
@@ -209,7 +207,7 @@ class FunctionalContainer extends events_1.EventEmitter {
|
|
|
209
207
|
}
|
|
210
208
|
catch (error) {
|
|
211
209
|
instance.lifecycle = ServiceLifecycle.ERROR;
|
|
212
|
-
this.emit(
|
|
210
|
+
this.emit('disposeError', { name, error });
|
|
213
211
|
}
|
|
214
212
|
}
|
|
215
213
|
}
|
|
@@ -241,11 +239,11 @@ class FunctionalContainer extends events_1.EventEmitter {
|
|
|
241
239
|
await service.metadata.lifecycle.init();
|
|
242
240
|
}
|
|
243
241
|
instance.lifecycle = ServiceLifecycle.INITIALIZED;
|
|
244
|
-
this.emit(
|
|
242
|
+
this.emit('serviceCreated', { name, instance });
|
|
245
243
|
}
|
|
246
244
|
catch (error) {
|
|
247
245
|
instance.lifecycle = ServiceLifecycle.ERROR;
|
|
248
|
-
this.emit(
|
|
246
|
+
this.emit('serviceError', { name, error });
|
|
249
247
|
// Try fallback if available
|
|
250
248
|
if (service.metadata.fallback) {
|
|
251
249
|
instance.value = service.metadata.fallback();
|
|
@@ -305,9 +303,9 @@ class FunctionalContainer extends events_1.EventEmitter {
|
|
|
305
303
|
getScopeKey(serviceName, scope, context) {
|
|
306
304
|
switch (scope) {
|
|
307
305
|
case ServiceScope.REQUEST:
|
|
308
|
-
return `${serviceName}:${context?.requestId ||
|
|
306
|
+
return `${serviceName}:${context?.requestId || 'default-request'}`;
|
|
309
307
|
case ServiceScope.MODULE:
|
|
310
|
-
return `${serviceName}:${context?.moduleId ||
|
|
308
|
+
return `${serviceName}:${context?.moduleId || 'default-module'}`;
|
|
311
309
|
default:
|
|
312
310
|
return serviceName; // Each singleton service gets its own key
|
|
313
311
|
}
|
|
@@ -315,14 +313,14 @@ class FunctionalContainer extends events_1.EventEmitter {
|
|
|
315
313
|
getInstanceMap(scope, context) {
|
|
316
314
|
switch (scope) {
|
|
317
315
|
case ServiceScope.REQUEST: {
|
|
318
|
-
const requestId = context?.requestId ||
|
|
316
|
+
const requestId = context?.requestId || 'default-request';
|
|
319
317
|
if (!this.requestScopes.has(requestId)) {
|
|
320
318
|
this.requestScopes.set(requestId, new Map());
|
|
321
319
|
}
|
|
322
320
|
return this.requestScopes.get(requestId);
|
|
323
321
|
}
|
|
324
322
|
case ServiceScope.MODULE: {
|
|
325
|
-
const moduleId = context?.moduleId ||
|
|
323
|
+
const moduleId = context?.moduleId || 'default-module';
|
|
326
324
|
if (!this.moduleScopes.has(moduleId)) {
|
|
327
325
|
this.moduleScopes.set(moduleId, new Map());
|
|
328
326
|
}
|
|
@@ -349,7 +347,7 @@ class FunctionalContainer extends events_1.EventEmitter {
|
|
|
349
347
|
const now = Date.now();
|
|
350
348
|
const timeout = 30 * 60 * 1000; // 30 minutes
|
|
351
349
|
for (const [requestId, scope] of this.requestScopes) {
|
|
352
|
-
const hasRecentActivity = Array.from(scope.values()).some(
|
|
350
|
+
const hasRecentActivity = Array.from(scope.values()).some(instance => now - instance.lastAccessed < timeout);
|
|
353
351
|
if (!hasRecentActivity) {
|
|
354
352
|
this.clearRequestScope(requestId);
|
|
355
353
|
}
|
|
@@ -369,12 +367,12 @@ class FunctionalContainer extends events_1.EventEmitter {
|
|
|
369
367
|
this.moduleScopes.clear();
|
|
370
368
|
this.instances.clear();
|
|
371
369
|
this.services.clear();
|
|
372
|
-
this.emit(
|
|
370
|
+
this.emit('containerDestroyed');
|
|
373
371
|
}
|
|
374
372
|
// Internal registration method
|
|
375
373
|
_registerService(name, definition) {
|
|
376
374
|
this.services.set(name, definition);
|
|
377
|
-
this.emit(
|
|
375
|
+
this.emit('serviceRegistered', { name, metadata: definition.metadata });
|
|
378
376
|
return this;
|
|
379
377
|
}
|
|
380
378
|
// Check if service exists
|
|
@@ -416,10 +414,7 @@ class ServiceRegistrationBuilder {
|
|
|
416
414
|
}
|
|
417
415
|
// Dependencies
|
|
418
416
|
dependsOn(...deps) {
|
|
419
|
-
this.metadata.dependencies = [
|
|
420
|
-
...(this.metadata.dependencies || []),
|
|
421
|
-
...deps,
|
|
422
|
-
];
|
|
417
|
+
this.metadata.dependencies = [...(this.metadata.dependencies || []), ...deps];
|
|
423
418
|
return this;
|
|
424
419
|
}
|
|
425
420
|
optionalDependsOn(...deps) {
|
|
@@ -465,7 +460,7 @@ class ServiceRegistrationBuilder {
|
|
|
465
460
|
}
|
|
466
461
|
compose(...compositionFns) {
|
|
467
462
|
if (!this._factory) {
|
|
468
|
-
throw new Error(
|
|
463
|
+
throw new Error('Factory must be set before composition');
|
|
469
464
|
}
|
|
470
465
|
this._factory = compositionFns.reduce((acc, fn) => fn(acc), this._factory);
|
|
471
466
|
return this;
|
|
@@ -511,7 +506,7 @@ class Container {
|
|
|
511
506
|
register(name, factory, singleton = false) {
|
|
512
507
|
this.functionalContainer
|
|
513
508
|
.register(name)
|
|
514
|
-
.factory(() => factory())[singleton ?
|
|
509
|
+
.factory(() => factory())[singleton ? 'singleton' : 'transient']()
|
|
515
510
|
.build();
|
|
516
511
|
}
|
|
517
512
|
resolve(name) {
|