@haskou/ddd-kernel 2.0.2 → 2.0.4
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/{DomainMessageBus-CQSFU6A6.d.cts → DomainMessageBus-BHnBQZvI.d.cts} +1 -1
- package/dist/{DomainMessageBus-kjMVNGfv.d.ts → DomainMessageBus-DbctRnBy.d.ts} +1 -1
- package/dist/{HandlerContext-DUUExVo3.d.ts → HandlerContext-BT0RLBRT.d.ts} +1 -1
- package/dist/{HandlerContext-Lm89pSeG.d.cts → HandlerContext-CdX28Pr5.d.cts} +1 -1
- package/dist/{MessageBus-BtUXnd0Y.d.cts → MessageBus-BTy_hVua.d.cts} +2 -2
- package/dist/{MessageBus-oQ9BnW84.d.ts → MessageBus-BkHiX3LI.d.ts} +2 -2
- package/dist/{NoFailedMessagesError-z-6ffelK.d.ts → NoFailedMessagesError-C6wMAOvs.d.ts} +2 -2
- package/dist/{NoFailedMessagesError-Dm5AFcJV.d.cts → NoFailedMessagesError-De3UfABY.d.cts} +2 -2
- package/dist/{PublisherHookErrorPolicy-DSsCNE6O.d.ts → PublisherHookErrorPolicy-Bfh_QLs7.d.ts} +1 -1
- package/dist/{PublisherHookErrorPolicy-CjouTcSR.d.cts → PublisherHookErrorPolicy-BgSvNZBD.d.cts} +1 -1
- package/dist/{RetryPredicate-BFGD3FUP.d.cts → RetryPredicate-2f09m_NF.d.cts} +1 -1
- package/dist/{RetryPredicate-CuL59f8-.d.ts → RetryPredicate-B5jR8Nhs.d.ts} +1 -1
- package/dist/{Scheduler-BW-U5Ccg.d.cts → Scheduler-JFwOYxSp.d.cts} +1 -0
- package/dist/{Scheduler-BW-U5Ccg.d.ts → Scheduler-JFwOYxSp.d.ts} +1 -0
- package/dist/{ServiceClass-Cv5KbUSf.d.cts → ServiceClass-D_0gCcMr.d.cts} +3 -1
- package/dist/{ServiceClass-DXDAxvao.d.ts → ServiceClass-IInu6j5L.d.ts} +3 -1
- package/dist/{ServiceResolver-D2Jz-l_Z.d.cts → ServiceResolver-CQGmbk-X.d.cts} +1 -0
- package/dist/{ServiceResolver-D2Jz-l_Z.d.ts → ServiceResolver-CQGmbk-X.d.ts} +1 -0
- package/dist/{ShutdownHook-dvsrwsQi.d.ts → ShutdownHook-C3Zb9-5R.d.ts} +2 -2
- package/dist/{ShutdownHook-6-YKfmzG.d.cts → ShutdownHook-DnzfGgAA.d.cts} +2 -2
- package/dist/{Subscription-vtF0lEHP.d.ts → Subscription-BdLdP_5-.d.ts} +1 -1
- package/dist/{Subscription-4vuAAxax.d.cts → Subscription-DY3nBVkU.d.cts} +1 -1
- package/dist/adapters/index.cjs +59 -6
- package/dist/adapters/index.cjs.map +1 -1
- package/dist/adapters/index.d.cts +10 -10
- package/dist/adapters/index.d.ts +10 -10
- package/dist/adapters/index.js +58 -6
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/pubsub/amqp/index.cjs +6 -0
- package/dist/adapters/pubsub/amqp/index.cjs.map +1 -1
- package/dist/adapters/pubsub/amqp/index.d.cts +8 -8
- package/dist/adapters/pubsub/amqp/index.d.ts +8 -8
- package/dist/adapters/pubsub/amqp/index.js +6 -0
- package/dist/adapters/pubsub/amqp/index.js.map +1 -1
- package/dist/adapters/pubsub/in-memory/index.d.cts +4 -4
- package/dist/adapters/pubsub/in-memory/index.d.ts +4 -4
- package/dist/adapters/pubsub/index.cjs +6 -0
- package/dist/adapters/pubsub/index.cjs.map +1 -1
- package/dist/adapters/pubsub/index.d.cts +9 -9
- package/dist/adapters/pubsub/index.d.ts +9 -9
- package/dist/adapters/pubsub/index.js +6 -0
- package/dist/adapters/pubsub/index.js.map +1 -1
- package/dist/adapters/ui/express/index.cjs +53 -6
- package/dist/adapters/ui/express/index.cjs.map +1 -1
- package/dist/adapters/ui/express/index.d.cts +17 -5
- package/dist/adapters/ui/express/index.d.ts +17 -5
- package/dist/adapters/ui/express/index.js +52 -6
- package/dist/adapters/ui/express/index.js.map +1 -1
- package/dist/adapters/ui/index.cjs +59 -6
- package/dist/adapters/ui/index.cjs.map +1 -1
- package/dist/adapters/ui/index.d.cts +5 -5
- package/dist/adapters/ui/index.d.ts +5 -5
- package/dist/adapters/ui/index.js +58 -6
- package/dist/adapters/ui/index.js.map +1 -1
- package/dist/adapters/ui/routes/index.cjs +6 -0
- package/dist/adapters/ui/routes/index.cjs.map +1 -1
- package/dist/adapters/ui/routes/index.js +6 -0
- package/dist/adapters/ui/routes/index.js.map +1 -1
- package/dist/contracts/index.d.cts +9 -9
- package/dist/contracts/index.d.ts +9 -9
- package/dist/contracts/kernel/index.d.cts +6 -6
- package/dist/contracts/kernel/index.d.ts +6 -6
- package/dist/contracts/pubsub/index.d.cts +7 -7
- package/dist/contracts/pubsub/index.d.ts +7 -7
- package/dist/contracts/ui/index.d.cts +2 -2
- package/dist/contracts/ui/index.d.ts +2 -2
- package/dist/domain/index.d.cts +5 -5
- package/dist/domain/index.d.ts +5 -5
- package/dist/index.cjs +6 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9 -9
- package/dist/index.d.ts +9 -9
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/dependency-injection/index.cjs +6 -0
- package/dist/infrastructure/dependency-injection/index.cjs.map +1 -1
- package/dist/infrastructure/dependency-injection/index.d.cts +2 -2
- package/dist/infrastructure/dependency-injection/index.d.ts +2 -2
- package/dist/infrastructure/dependency-injection/index.js +6 -0
- package/dist/infrastructure/dependency-injection/index.js.map +1 -1
- package/dist/infrastructure/express/index.cjs +53 -6
- package/dist/infrastructure/express/index.cjs.map +1 -1
- package/dist/infrastructure/express/index.d.cts +5 -5
- package/dist/infrastructure/express/index.d.ts +5 -5
- package/dist/infrastructure/express/index.js +52 -6
- package/dist/infrastructure/express/index.js.map +1 -1
- package/dist/infrastructure/scheduler/index.cjs +15 -1
- package/dist/infrastructure/scheduler/index.cjs.map +1 -1
- package/dist/infrastructure/scheduler/index.d.cts +2 -2
- package/dist/infrastructure/scheduler/index.d.ts +2 -2
- package/dist/infrastructure/scheduler/index.js +15 -1
- package/dist/infrastructure/scheduler/index.js.map +1 -1
- package/package.json +7 -6
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { M as Message } from './HandlerContext-
|
|
2
|
-
import { a as PublisherHook, M as MessageHandler, S as Subscription } from './Subscription-
|
|
1
|
+
import { M as Message } from './HandlerContext-CdX28Pr5.cjs';
|
|
2
|
+
import { a as PublisherHook, M as MessageHandler, S as Subscription } from './Subscription-DY3nBVkU.cjs';
|
|
3
3
|
|
|
4
4
|
interface MessageBus {
|
|
5
5
|
publish<TMessage extends Message>(topic: string, message: TMessage): Promise<void>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { M as Message } from './HandlerContext-
|
|
2
|
-
import { a as PublisherHook, M as MessageHandler, S as Subscription } from './Subscription-
|
|
1
|
+
import { M as Message } from './HandlerContext-BT0RLBRT.js';
|
|
2
|
+
import { a as PublisherHook, M as MessageHandler, S as Subscription } from './Subscription-BdLdP_5-.js';
|
|
3
3
|
|
|
4
4
|
interface MessageBus {
|
|
5
5
|
publish<TMessage extends Message>(topic: string, message: TMessage): Promise<void>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as PublisherHook } from './Subscription-
|
|
2
|
-
import { P as PublisherHookErrorPolicy } from './PublisherHookErrorPolicy-
|
|
1
|
+
import { a as PublisherHook } from './Subscription-BdLdP_5-.js';
|
|
2
|
+
import { P as PublisherHookErrorPolicy } from './PublisherHookErrorPolicy-Bfh_QLs7.js';
|
|
3
3
|
import { L as Log } from './Log-36L3Z84a.js';
|
|
4
4
|
import { Channel } from 'amqplib';
|
|
5
5
|
import { D as DomainEvent } from './DomainEvent-mXWEtr_J.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as PublisherHook } from './Subscription-
|
|
2
|
-
import { P as PublisherHookErrorPolicy } from './PublisherHookErrorPolicy-
|
|
1
|
+
import { a as PublisherHook } from './Subscription-DY3nBVkU.cjs';
|
|
2
|
+
import { P as PublisherHookErrorPolicy } from './PublisherHookErrorPolicy-BgSvNZBD.cjs';
|
|
3
3
|
import { L as Log } from './Log-36L3Z84a.cjs';
|
|
4
4
|
import { Channel } from 'amqplib';
|
|
5
5
|
import { D as DomainEvent } from './DomainEvent-mXWEtr_J.cjs';
|
|
@@ -14,6 +14,7 @@ interface SchedulerErrorPolicy {
|
|
|
14
14
|
|
|
15
15
|
declare abstract class Scheduler {
|
|
16
16
|
private readonly errorPolicy;
|
|
17
|
+
private readonly executionSemaphore;
|
|
17
18
|
constructor(errorPolicy?: SchedulerErrorPolicy);
|
|
18
19
|
private parseCronExpression;
|
|
19
20
|
abstract execute(): Promise<void>;
|
|
@@ -14,6 +14,7 @@ interface SchedulerErrorPolicy {
|
|
|
14
14
|
|
|
15
15
|
declare abstract class Scheduler {
|
|
16
16
|
private readonly errorPolicy;
|
|
17
|
+
private readonly executionSemaphore;
|
|
17
18
|
constructor(errorPolicy?: SchedulerErrorPolicy);
|
|
18
19
|
private parseCronExpression;
|
|
19
20
|
abstract execute(): Promise<void>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as ServiceResolver } from './ServiceResolver-
|
|
1
|
+
import { S as ServiceResolver } from './ServiceResolver-CQGmbk-X.cjs';
|
|
2
2
|
|
|
3
3
|
type DependencyOverrideToken = unknown;
|
|
4
4
|
|
|
@@ -43,6 +43,7 @@ declare class DependencyInjection implements ServiceResolver {
|
|
|
43
43
|
private ensureFolderExists;
|
|
44
44
|
private getServiceClassName;
|
|
45
45
|
private getOverrideId;
|
|
46
|
+
private hasDirectService;
|
|
46
47
|
private ensureSyntheticService;
|
|
47
48
|
private parentMatchesService;
|
|
48
49
|
private serviceIdMatchesService;
|
|
@@ -63,6 +64,7 @@ declare class DependencyInjection implements ServiceResolver {
|
|
|
63
64
|
private registerParentAliases;
|
|
64
65
|
compile(): Promise<void>;
|
|
65
66
|
getService<T>(serviceName: unknown): T;
|
|
67
|
+
hasService(serviceName: unknown): boolean;
|
|
66
68
|
}
|
|
67
69
|
|
|
68
70
|
type ServiceClass<T> = {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as ServiceResolver } from './ServiceResolver-
|
|
1
|
+
import { S as ServiceResolver } from './ServiceResolver-CQGmbk-X.js';
|
|
2
2
|
|
|
3
3
|
type DependencyOverrideToken = unknown;
|
|
4
4
|
|
|
@@ -43,6 +43,7 @@ declare class DependencyInjection implements ServiceResolver {
|
|
|
43
43
|
private ensureFolderExists;
|
|
44
44
|
private getServiceClassName;
|
|
45
45
|
private getOverrideId;
|
|
46
|
+
private hasDirectService;
|
|
46
47
|
private ensureSyntheticService;
|
|
47
48
|
private parentMatchesService;
|
|
48
49
|
private serviceIdMatchesService;
|
|
@@ -63,6 +64,7 @@ declare class DependencyInjection implements ServiceResolver {
|
|
|
63
64
|
private registerParentAliases;
|
|
64
65
|
compile(): Promise<void>;
|
|
65
66
|
getService<T>(serviceName: unknown): T;
|
|
67
|
+
hasService(serviceName: unknown): boolean;
|
|
66
68
|
}
|
|
67
69
|
|
|
68
70
|
type ServiceClass<T> = {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { D as DomainEvent } from './DomainEvent-mXWEtr_J.js';
|
|
2
2
|
import { DotenvConfigOutput } from 'dotenv';
|
|
3
|
-
import { b as DependencyOverride, D as DependencyInjection, S as ServiceClass } from './ServiceClass-
|
|
3
|
+
import { b as DependencyOverride, D as DependencyInjection, S as ServiceClass } from './ServiceClass-IInu6j5L.js';
|
|
4
4
|
import { Initializer, Runtime } from './infrastructure/lifecycle/index.js';
|
|
5
|
-
import { a as Scheduler } from './Scheduler-
|
|
5
|
+
import { a as Scheduler } from './Scheduler-JFwOYxSp.js';
|
|
6
6
|
import { K as KernelLogger } from './KernelLogger-BESOFrpW.js';
|
|
7
7
|
import { K as KernelRoute } from './KernelRoute-B7mVPrEx.js';
|
|
8
8
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { D as DomainEvent } from './DomainEvent-mXWEtr_J.cjs';
|
|
2
2
|
import { DotenvConfigOutput } from 'dotenv';
|
|
3
|
-
import { b as DependencyOverride, D as DependencyInjection, S as ServiceClass } from './ServiceClass-
|
|
3
|
+
import { b as DependencyOverride, D as DependencyInjection, S as ServiceClass } from './ServiceClass-D_0gCcMr.cjs';
|
|
4
4
|
import { Initializer, Runtime } from './infrastructure/lifecycle/index.cjs';
|
|
5
|
-
import { a as Scheduler } from './Scheduler-
|
|
5
|
+
import { a as Scheduler } from './Scheduler-JFwOYxSp.cjs';
|
|
6
6
|
import { K as KernelLogger } from './KernelLogger-BESOFrpW.cjs';
|
|
7
7
|
import { K as KernelRoute } from './KernelRoute-B7mVPrEx.cjs';
|
|
8
8
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { M as Message, H as HandlerContext, D as DomainEvent } from './HandlerContext-
|
|
1
|
+
import { M as Message, H as HandlerContext, D as DomainEvent } from './HandlerContext-BT0RLBRT.js';
|
|
2
2
|
import { D as DomainEvent$1 } from './DomainEvent-mXWEtr_J.js';
|
|
3
3
|
|
|
4
4
|
type MessageHandler<TMessage extends Message = Message, TResult = unknown> = (message: TMessage, context: HandlerContext) => TResult | Promise<TResult>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { M as Message, H as HandlerContext, D as DomainEvent } from './HandlerContext-
|
|
1
|
+
import { M as Message, H as HandlerContext, D as DomainEvent } from './HandlerContext-CdX28Pr5.cjs';
|
|
2
2
|
import { D as DomainEvent$1 } from './DomainEvent-mXWEtr_J.cjs';
|
|
3
3
|
|
|
4
4
|
type MessageHandler<TMessage extends Message = Message, TResult = unknown> = (message: TMessage, context: HandlerContext) => TResult | Promise<TResult>;
|
package/dist/adapters/index.cjs
CHANGED
|
@@ -35,6 +35,7 @@ __export(adapters_exports, {
|
|
|
35
35
|
ConsumerMiddlewarePipeline: () => ConsumerMiddlewarePipeline,
|
|
36
36
|
CorrelationConsumerMiddleware: () => CorrelationConsumerMiddleware,
|
|
37
37
|
DefaultPublisherHookErrorPolicy: () => DefaultPublisherHookErrorPolicy,
|
|
38
|
+
ExpressControllerResolver: () => ExpressControllerResolver,
|
|
38
39
|
ExpressKernelServer: () => ExpressKernelServer,
|
|
39
40
|
HttpErrorHandler: () => HttpErrorHandler,
|
|
40
41
|
IdempotencyConsumerMiddleware: () => IdempotencyConsumerMiddleware,
|
|
@@ -198,6 +199,9 @@ var DependencyInjection = class _DependencyInjection {
|
|
|
198
199
|
const tokenName = this.getServiceClassName(token) ?? String(token);
|
|
199
200
|
return `ddd-kernel.override.${prefix}.${tokenName}`;
|
|
200
201
|
}
|
|
202
|
+
hasDirectService(serviceName) {
|
|
203
|
+
return typeof serviceName === "string" && (this.definitions.has(serviceName) || this.aliases.has(serviceName));
|
|
204
|
+
}
|
|
201
205
|
ensureSyntheticService(id, value) {
|
|
202
206
|
const definition = this.container.register(id);
|
|
203
207
|
definition.public = true;
|
|
@@ -398,6 +402,9 @@ var DependencyInjection = class _DependencyInjection {
|
|
|
398
402
|
}
|
|
399
403
|
return this.container.get(serviceName);
|
|
400
404
|
}
|
|
405
|
+
hasService(serviceName) {
|
|
406
|
+
return this.overrideTokenIds.has(serviceName) || this.findAliasServiceId(serviceName) !== void 0 || this.findConcreteChildServiceId(serviceName) !== void 0 || this.findRegisteredServiceId(serviceName) !== void 0 || this.hasDirectService(serviceName);
|
|
407
|
+
}
|
|
401
408
|
};
|
|
402
409
|
|
|
403
410
|
// src/kernel/KernelEnvironmentValidationError.ts
|
|
@@ -1074,6 +1081,45 @@ var InMemoryPubSub = class {
|
|
|
1074
1081
|
}
|
|
1075
1082
|
};
|
|
1076
1083
|
|
|
1084
|
+
// src/adapters/ui/express/ExpressControllerResolver.ts
|
|
1085
|
+
var ExpressControllerResolver = class {
|
|
1086
|
+
constructor(kernel, controllers) {
|
|
1087
|
+
this.kernel = kernel;
|
|
1088
|
+
this.controllers = new Set(controllers);
|
|
1089
|
+
}
|
|
1090
|
+
kernel;
|
|
1091
|
+
controllerInstances = /* @__PURE__ */ new Map();
|
|
1092
|
+
controllers;
|
|
1093
|
+
createControllerInstance(ClassDefinition) {
|
|
1094
|
+
const Controller = ClassDefinition;
|
|
1095
|
+
return new Controller();
|
|
1096
|
+
}
|
|
1097
|
+
getCachedController(ClassDefinition) {
|
|
1098
|
+
const cached = this.controllerInstances.get(ClassDefinition);
|
|
1099
|
+
if (cached) {
|
|
1100
|
+
return cached;
|
|
1101
|
+
}
|
|
1102
|
+
const instance = this.createControllerInstance(ClassDefinition);
|
|
1103
|
+
this.controllerInstances.set(ClassDefinition, instance);
|
|
1104
|
+
return instance;
|
|
1105
|
+
}
|
|
1106
|
+
isKnownController(ClassDefinition) {
|
|
1107
|
+
return this.controllers.has(ClassDefinition);
|
|
1108
|
+
}
|
|
1109
|
+
canResolveService(ClassDefinition) {
|
|
1110
|
+
return this.kernel.di.hasService?.(ClassDefinition) === true;
|
|
1111
|
+
}
|
|
1112
|
+
get(ClassDefinition) {
|
|
1113
|
+
if (!this.canResolveService(ClassDefinition)) {
|
|
1114
|
+
if (this.isKnownController(ClassDefinition)) {
|
|
1115
|
+
return this.getCachedController(ClassDefinition);
|
|
1116
|
+
}
|
|
1117
|
+
return void 0;
|
|
1118
|
+
}
|
|
1119
|
+
return this.kernel.di.getService(ClassDefinition);
|
|
1120
|
+
}
|
|
1121
|
+
};
|
|
1122
|
+
|
|
1077
1123
|
// src/adapters/ui/express/ExpressKernelServer.ts
|
|
1078
1124
|
var import_node_module = require("module");
|
|
1079
1125
|
var import_node_path3 = __toESM(require("path"), 1);
|
|
@@ -1112,16 +1158,19 @@ var ExpressKernelServer = class {
|
|
|
1112
1158
|
copy(items) {
|
|
1113
1159
|
return [...items ?? []];
|
|
1114
1160
|
}
|
|
1115
|
-
configureControllerContainer() {
|
|
1161
|
+
configureControllerContainer(controllers) {
|
|
1116
1162
|
const { useContainer } = this.getRoutingControllers();
|
|
1163
|
+
const resolver = new ExpressControllerResolver(
|
|
1164
|
+
this.options.kernel,
|
|
1165
|
+
controllers
|
|
1166
|
+
);
|
|
1117
1167
|
useContainer(
|
|
1118
1168
|
{
|
|
1119
|
-
|
|
1120
|
-
get: (ClassDefinition) => this.options.kernel.di.getService(ClassDefinition)
|
|
1169
|
+
get: (ClassDefinition) => resolver.get(ClassDefinition)
|
|
1121
1170
|
},
|
|
1122
1171
|
{
|
|
1123
1172
|
fallback: true,
|
|
1124
|
-
fallbackOnErrors:
|
|
1173
|
+
fallbackOnErrors: false
|
|
1125
1174
|
}
|
|
1126
1175
|
);
|
|
1127
1176
|
}
|
|
@@ -1139,8 +1188,11 @@ var ExpressKernelServer = class {
|
|
|
1139
1188
|
}
|
|
1140
1189
|
defaultErrorHandler() {
|
|
1141
1190
|
return (error, request, response, next) => {
|
|
1142
|
-
void next;
|
|
1143
1191
|
void request;
|
|
1192
|
+
if (response.headersSent) {
|
|
1193
|
+
next(error);
|
|
1194
|
+
return;
|
|
1195
|
+
}
|
|
1144
1196
|
response.status(500).json({
|
|
1145
1197
|
error: error instanceof Error ? error.message : String(error)
|
|
1146
1198
|
});
|
|
@@ -1251,7 +1303,7 @@ var ExpressKernelServer = class {
|
|
|
1251
1303
|
this.applyMiddlewares(app, this.preControllerMiddlewares);
|
|
1252
1304
|
await this.runHooks(this.beforeControllersHooks, app);
|
|
1253
1305
|
await this.runPhaseHooks("beforeControllers", app);
|
|
1254
|
-
this.configureControllerContainer();
|
|
1306
|
+
this.configureControllerContainer(controllers);
|
|
1255
1307
|
useExpressServer(app, {
|
|
1256
1308
|
...this.options.routingControllersOptions,
|
|
1257
1309
|
controllers,
|
|
@@ -1441,6 +1493,7 @@ var Route = class extends KernelRoute {
|
|
|
1441
1493
|
ConsumerMiddlewarePipeline,
|
|
1442
1494
|
CorrelationConsumerMiddleware,
|
|
1443
1495
|
DefaultPublisherHookErrorPolicy,
|
|
1496
|
+
ExpressControllerResolver,
|
|
1444
1497
|
ExpressKernelServer,
|
|
1445
1498
|
HttpErrorHandler,
|
|
1446
1499
|
IdempotencyConsumerMiddleware,
|