@haskou/ddd-kernel 2.0.2 → 2.0.3

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.
Files changed (89) hide show
  1. package/dist/{DomainMessageBus-CQSFU6A6.d.cts → DomainMessageBus-BHnBQZvI.d.cts} +1 -1
  2. package/dist/{DomainMessageBus-kjMVNGfv.d.ts → DomainMessageBus-DbctRnBy.d.ts} +1 -1
  3. package/dist/{HandlerContext-DUUExVo3.d.ts → HandlerContext-BT0RLBRT.d.ts} +1 -1
  4. package/dist/{HandlerContext-Lm89pSeG.d.cts → HandlerContext-CdX28Pr5.d.cts} +1 -1
  5. package/dist/{MessageBus-BtUXnd0Y.d.cts → MessageBus-BTy_hVua.d.cts} +2 -2
  6. package/dist/{MessageBus-oQ9BnW84.d.ts → MessageBus-BkHiX3LI.d.ts} +2 -2
  7. package/dist/{NoFailedMessagesError-z-6ffelK.d.ts → NoFailedMessagesError-C6wMAOvs.d.ts} +2 -2
  8. package/dist/{NoFailedMessagesError-Dm5AFcJV.d.cts → NoFailedMessagesError-De3UfABY.d.cts} +2 -2
  9. package/dist/{PublisherHookErrorPolicy-DSsCNE6O.d.ts → PublisherHookErrorPolicy-Bfh_QLs7.d.ts} +1 -1
  10. package/dist/{PublisherHookErrorPolicy-CjouTcSR.d.cts → PublisherHookErrorPolicy-BgSvNZBD.d.cts} +1 -1
  11. package/dist/{RetryPredicate-BFGD3FUP.d.cts → RetryPredicate-CqvyqG9g.d.cts} +1 -1
  12. package/dist/{RetryPredicate-CuL59f8-.d.ts → RetryPredicate-DTeTm450.d.ts} +1 -1
  13. package/dist/{ServiceClass-Cv5KbUSf.d.cts → ServiceClass-D_0gCcMr.d.cts} +3 -1
  14. package/dist/{ServiceClass-DXDAxvao.d.ts → ServiceClass-IInu6j5L.d.ts} +3 -1
  15. package/dist/{ServiceResolver-D2Jz-l_Z.d.cts → ServiceResolver-CQGmbk-X.d.cts} +1 -0
  16. package/dist/{ServiceResolver-D2Jz-l_Z.d.ts → ServiceResolver-CQGmbk-X.d.ts} +1 -0
  17. package/dist/{ShutdownHook-6-YKfmzG.d.cts → ShutdownHook-C48hH6-x.d.cts} +1 -1
  18. package/dist/{ShutdownHook-dvsrwsQi.d.ts → ShutdownHook-CWTm9Lkn.d.ts} +1 -1
  19. package/dist/{Subscription-vtF0lEHP.d.ts → Subscription-BdLdP_5-.d.ts} +1 -1
  20. package/dist/{Subscription-4vuAAxax.d.cts → Subscription-DY3nBVkU.d.cts} +1 -1
  21. package/dist/adapters/index.cjs +59 -6
  22. package/dist/adapters/index.cjs.map +1 -1
  23. package/dist/adapters/index.d.cts +9 -9
  24. package/dist/adapters/index.d.ts +9 -9
  25. package/dist/adapters/index.js +58 -6
  26. package/dist/adapters/index.js.map +1 -1
  27. package/dist/adapters/pubsub/amqp/index.cjs +6 -0
  28. package/dist/adapters/pubsub/amqp/index.cjs.map +1 -1
  29. package/dist/adapters/pubsub/amqp/index.d.cts +8 -8
  30. package/dist/adapters/pubsub/amqp/index.d.ts +8 -8
  31. package/dist/adapters/pubsub/amqp/index.js +6 -0
  32. package/dist/adapters/pubsub/amqp/index.js.map +1 -1
  33. package/dist/adapters/pubsub/in-memory/index.d.cts +4 -4
  34. package/dist/adapters/pubsub/in-memory/index.d.ts +4 -4
  35. package/dist/adapters/pubsub/index.cjs +6 -0
  36. package/dist/adapters/pubsub/index.cjs.map +1 -1
  37. package/dist/adapters/pubsub/index.d.cts +8 -8
  38. package/dist/adapters/pubsub/index.d.ts +8 -8
  39. package/dist/adapters/pubsub/index.js +6 -0
  40. package/dist/adapters/pubsub/index.js.map +1 -1
  41. package/dist/adapters/ui/express/index.cjs +53 -6
  42. package/dist/adapters/ui/express/index.cjs.map +1 -1
  43. package/dist/adapters/ui/express/index.d.cts +16 -4
  44. package/dist/adapters/ui/express/index.d.ts +16 -4
  45. package/dist/adapters/ui/express/index.js +52 -6
  46. package/dist/adapters/ui/express/index.js.map +1 -1
  47. package/dist/adapters/ui/index.cjs +59 -6
  48. package/dist/adapters/ui/index.cjs.map +1 -1
  49. package/dist/adapters/ui/index.d.cts +4 -4
  50. package/dist/adapters/ui/index.d.ts +4 -4
  51. package/dist/adapters/ui/index.js +58 -6
  52. package/dist/adapters/ui/index.js.map +1 -1
  53. package/dist/adapters/ui/routes/index.cjs +6 -0
  54. package/dist/adapters/ui/routes/index.cjs.map +1 -1
  55. package/dist/adapters/ui/routes/index.js +6 -0
  56. package/dist/adapters/ui/routes/index.js.map +1 -1
  57. package/dist/contracts/index.d.cts +8 -8
  58. package/dist/contracts/index.d.ts +8 -8
  59. package/dist/contracts/kernel/index.d.cts +5 -5
  60. package/dist/contracts/kernel/index.d.ts +5 -5
  61. package/dist/contracts/pubsub/index.d.cts +7 -7
  62. package/dist/contracts/pubsub/index.d.ts +7 -7
  63. package/dist/contracts/ui/index.d.cts +2 -2
  64. package/dist/contracts/ui/index.d.ts +2 -2
  65. package/dist/domain/index.d.cts +5 -5
  66. package/dist/domain/index.d.ts +5 -5
  67. package/dist/index.cjs +6 -0
  68. package/dist/index.cjs.map +1 -1
  69. package/dist/index.d.cts +8 -8
  70. package/dist/index.d.ts +8 -8
  71. package/dist/index.js +6 -0
  72. package/dist/index.js.map +1 -1
  73. package/dist/infrastructure/dependency-injection/index.cjs +6 -0
  74. package/dist/infrastructure/dependency-injection/index.cjs.map +1 -1
  75. package/dist/infrastructure/dependency-injection/index.d.cts +2 -2
  76. package/dist/infrastructure/dependency-injection/index.d.ts +2 -2
  77. package/dist/infrastructure/dependency-injection/index.js +6 -0
  78. package/dist/infrastructure/dependency-injection/index.js.map +1 -1
  79. package/dist/infrastructure/express/index.cjs +53 -6
  80. package/dist/infrastructure/express/index.cjs.map +1 -1
  81. package/dist/infrastructure/express/index.d.cts +4 -4
  82. package/dist/infrastructure/express/index.d.ts +4 -4
  83. package/dist/infrastructure/express/index.js +52 -6
  84. package/dist/infrastructure/express/index.js.map +1 -1
  85. package/dist/infrastructure/scheduler/index.cjs +6 -0
  86. package/dist/infrastructure/scheduler/index.cjs.map +1 -1
  87. package/dist/infrastructure/scheduler/index.js +6 -0
  88. package/dist/infrastructure/scheduler/index.js.map +1 -1
  89. package/package.json +4 -4
@@ -2,26 +2,26 @@ export { InMemoryRepository } from './db/in-memory/index.js';
2
2
  export { MongoDocumentMapper, MongoRepository } from './db/mongo/index.js';
3
3
  export { ConsoleKernelLogger } from './kernel/console/index.js';
4
4
  export { Consumer, ConsumerMiddlewarePipeline, CorrelationConsumerMiddleware, CorrelationConsumerMiddlewareOptions, DefaultPublisherHookErrorPolicy, IdempotencyConsumerMiddleware, IdempotencyConsumerMiddlewareOptions, InMemoryIdempotencyStore, PublisherHookPipeline, RetryConsumerMiddleware, RetryConsumerMiddlewareOptions } from './pubsub/index.js';
5
- export { A as AmqpMessage, a as AmqpMessageBusAdapterOptions, C as ConsumerContext, D as DomainEventHandler, I as InvalidDomainEventError, N as NoFailedMessagesError } from '../NoFailedMessagesError-z-6ffelK.js';
5
+ export { A as AmqpMessage, a as AmqpMessageBusAdapterOptions, C as ConsumerContext, D as DomainEventHandler, I as InvalidDomainEventError, N as NoFailedMessagesError } from '../NoFailedMessagesError-C6wMAOvs.js';
6
6
  export { InMemoryEventBus, InMemoryPubSub } from './pubsub/in-memory/index.js';
7
- export { ErrorExplanation, ErrorResponseHandler, ExpressAppHook, ExpressController, ExpressHookPhase, ExpressKernelServer, ExpressKernelServerOptions, ExpressPhaseHook, FormattedValidationError, HttpApp, HttpErrorHandler, HttpErrorHandlerOptions, HttpErrorLike, HttpErrorResponse, HttpServer, PayloadTooLargeError, RoutePrefix, ValidationError } from './ui/express/index.js';
7
+ export { ErrorExplanation, ErrorResponseHandler, ExpressAppHook, ExpressController, ExpressControllerResolver, ExpressHookPhase, ExpressKernelServer, ExpressKernelServerOptions, ExpressPhaseHook, FormattedValidationError, HttpApp, HttpErrorHandler, HttpErrorHandlerOptions, HttpErrorLike, HttpErrorResponse, HttpServer, PayloadTooLargeError, RoutePrefix, ValidationError } from './ui/express/index.js';
8
8
  export { Route } from './ui/routes/index.js';
9
9
  import '../Repository-D9CuAyCV.js';
10
10
  import 'mongodb';
11
11
  import '../KernelLogger-BESOFrpW.js';
12
12
  import '../DomainEvent-mXWEtr_J.js';
13
13
  import '../DomainEventConsumer-D1P4oXoj.js';
14
- import '../ShutdownHook-dvsrwsQi.js';
14
+ import '../ShutdownHook-CWTm9Lkn.js';
15
15
  import 'dotenv';
16
- import '../ServiceClass-DXDAxvao.js';
17
- import '../ServiceResolver-D2Jz-l_Z.js';
16
+ import '../ServiceClass-IInu6j5L.js';
17
+ import '../ServiceResolver-CQGmbk-X.js';
18
18
  import '../infrastructure/lifecycle/index.js';
19
19
  import '../Scheduler-BW-U5Ccg.js';
20
20
  import '../KernelRoute-B7mVPrEx.js';
21
- import '../Subscription-vtF0lEHP.js';
22
- import '../HandlerContext-DUUExVo3.js';
23
- import '../PublisherHookErrorPolicy-DSsCNE6O.js';
24
- import '../RetryPredicate-CuL59f8-.js';
21
+ import '../Subscription-BdLdP_5-.js';
22
+ import '../HandlerContext-BT0RLBRT.js';
23
+ import '../PublisherHookErrorPolicy-Bfh_QLs7.js';
24
+ import '../RetryPredicate-DTeTm450.js';
25
25
  import '../Log-36L3Z84a.js';
26
26
  import 'amqplib';
27
27
  import 'express';
@@ -149,6 +149,9 @@ var DependencyInjection = class _DependencyInjection {
149
149
  const tokenName = this.getServiceClassName(token) ?? String(token);
150
150
  return `ddd-kernel.override.${prefix}.${tokenName}`;
151
151
  }
152
+ hasDirectService(serviceName) {
153
+ return typeof serviceName === "string" && (this.definitions.has(serviceName) || this.aliases.has(serviceName));
154
+ }
152
155
  ensureSyntheticService(id, value) {
153
156
  const definition = this.container.register(id);
154
157
  definition.public = true;
@@ -349,6 +352,9 @@ var DependencyInjection = class _DependencyInjection {
349
352
  }
350
353
  return this.container.get(serviceName);
351
354
  }
355
+ hasService(serviceName) {
356
+ return this.overrideTokenIds.has(serviceName) || this.findAliasServiceId(serviceName) !== void 0 || this.findConcreteChildServiceId(serviceName) !== void 0 || this.findRegisteredServiceId(serviceName) !== void 0 || this.hasDirectService(serviceName);
357
+ }
352
358
  };
353
359
 
354
360
  // src/kernel/KernelEnvironmentValidationError.ts
@@ -1025,6 +1031,45 @@ var InMemoryPubSub = class {
1025
1031
  }
1026
1032
  };
1027
1033
 
1034
+ // src/adapters/ui/express/ExpressControllerResolver.ts
1035
+ var ExpressControllerResolver = class {
1036
+ constructor(kernel, controllers) {
1037
+ this.kernel = kernel;
1038
+ this.controllers = new Set(controllers);
1039
+ }
1040
+ kernel;
1041
+ controllerInstances = /* @__PURE__ */ new Map();
1042
+ controllers;
1043
+ createControllerInstance(ClassDefinition) {
1044
+ const Controller = ClassDefinition;
1045
+ return new Controller();
1046
+ }
1047
+ getCachedController(ClassDefinition) {
1048
+ const cached = this.controllerInstances.get(ClassDefinition);
1049
+ if (cached) {
1050
+ return cached;
1051
+ }
1052
+ const instance = this.createControllerInstance(ClassDefinition);
1053
+ this.controllerInstances.set(ClassDefinition, instance);
1054
+ return instance;
1055
+ }
1056
+ isKnownController(ClassDefinition) {
1057
+ return this.controllers.has(ClassDefinition);
1058
+ }
1059
+ canResolveService(ClassDefinition) {
1060
+ return this.kernel.di.hasService?.(ClassDefinition) === true;
1061
+ }
1062
+ get(ClassDefinition) {
1063
+ if (!this.canResolveService(ClassDefinition)) {
1064
+ if (this.isKnownController(ClassDefinition)) {
1065
+ return this.getCachedController(ClassDefinition);
1066
+ }
1067
+ return void 0;
1068
+ }
1069
+ return this.kernel.di.getService(ClassDefinition);
1070
+ }
1071
+ };
1072
+
1028
1073
  // src/adapters/ui/express/ExpressKernelServer.ts
1029
1074
  import { createRequire } from "module";
1030
1075
  import path3 from "path";
@@ -1063,16 +1108,19 @@ var ExpressKernelServer = class {
1063
1108
  copy(items) {
1064
1109
  return [...items ?? []];
1065
1110
  }
1066
- configureControllerContainer() {
1111
+ configureControllerContainer(controllers) {
1067
1112
  const { useContainer } = this.getRoutingControllers();
1113
+ const resolver = new ExpressControllerResolver(
1114
+ this.options.kernel,
1115
+ controllers
1116
+ );
1068
1117
  useContainer(
1069
1118
  {
1070
- /* c8 ignore next */
1071
- get: (ClassDefinition) => this.options.kernel.di.getService(ClassDefinition)
1119
+ get: (ClassDefinition) => resolver.get(ClassDefinition)
1072
1120
  },
1073
1121
  {
1074
1122
  fallback: true,
1075
- fallbackOnErrors: true
1123
+ fallbackOnErrors: false
1076
1124
  }
1077
1125
  );
1078
1126
  }
@@ -1090,8 +1138,11 @@ var ExpressKernelServer = class {
1090
1138
  }
1091
1139
  defaultErrorHandler() {
1092
1140
  return (error, request, response, next) => {
1093
- void next;
1094
1141
  void request;
1142
+ if (response.headersSent) {
1143
+ next(error);
1144
+ return;
1145
+ }
1095
1146
  response.status(500).json({
1096
1147
  error: error instanceof Error ? error.message : String(error)
1097
1148
  });
@@ -1202,7 +1253,7 @@ var ExpressKernelServer = class {
1202
1253
  this.applyMiddlewares(app, this.preControllerMiddlewares);
1203
1254
  await this.runHooks(this.beforeControllersHooks, app);
1204
1255
  await this.runPhaseHooks("beforeControllers", app);
1205
- this.configureControllerContainer();
1256
+ this.configureControllerContainer(controllers);
1206
1257
  useExpressServer(app, {
1207
1258
  ...this.options.routingControllersOptions,
1208
1259
  controllers,
@@ -1393,6 +1444,7 @@ export {
1393
1444
  ConsumerMiddlewarePipeline,
1394
1445
  CorrelationConsumerMiddleware,
1395
1446
  DefaultPublisherHookErrorPolicy,
1447
+ ExpressControllerResolver,
1396
1448
  ExpressKernelServer,
1397
1449
  HttpErrorHandler,
1398
1450
  IdempotencyConsumerMiddleware,