@haskou/ddd-kernel 1.2.0 → 2.0.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/README.md +3 -0
- package/dist/{DomainEventConsumer-Bg-bOwmh.d.cts → DomainEventConsumer-BiTSbfMw.d.cts} +5 -1
- package/dist/{DomainEventConsumer-BroJmVty.d.ts → DomainEventConsumer-D1P4oXoj.d.ts} +5 -1
- package/dist/{DomainMessageBus-OyliPu3Z.d.cts → DomainMessageBus-CQSFU6A6.d.cts} +1 -1
- package/dist/{DomainMessageBus-3jYk7TPw.d.ts → DomainMessageBus-kjMVNGfv.d.ts} +1 -1
- package/dist/KernelRoute-B7mVPrEx.d.cts +5 -0
- package/dist/KernelRoute-B7mVPrEx.d.ts +5 -0
- package/dist/{NoFailedMessagesError-BjxYoKTR.d.cts → NoFailedMessagesError-Dm5AFcJV.d.cts} +2 -3
- package/dist/{NoFailedMessagesError-BLpGI-G4.d.ts → NoFailedMessagesError-z-6ffelK.d.ts} +2 -3
- package/dist/{RetryPredicate-Bl3SMnbL.d.ts → RetryPredicate-CD9n6cE8.d.ts} +1 -1
- package/dist/{RetryPredicate-ZjioTYXn.d.cts → RetryPredicate-DNdxY_KR.d.cts} +1 -1
- package/dist/{ShutdownHook-B03Mcke-.d.ts → ShutdownHook-CUl7zYwd.d.ts} +44 -30
- package/dist/{ShutdownHook-BsEGvnEf.d.cts → ShutdownHook-D23WfIIc.d.cts} +44 -30
- package/dist/adapters/index.cjs +20 -3
- package/dist/adapters/index.cjs.map +1 -1
- package/dist/adapters/index.d.cts +7 -7
- package/dist/adapters/index.d.ts +7 -7
- package/dist/adapters/index.js +20 -3
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/pubsub/amqp/index.cjs +15 -2
- package/dist/adapters/pubsub/amqp/index.cjs.map +1 -1
- package/dist/adapters/pubsub/amqp/index.d.cts +5 -6
- package/dist/adapters/pubsub/amqp/index.d.ts +5 -6
- package/dist/adapters/pubsub/amqp/index.js +15 -2
- package/dist/adapters/pubsub/amqp/index.js.map +1 -1
- package/dist/adapters/pubsub/index.cjs +15 -2
- package/dist/adapters/pubsub/index.cjs.map +1 -1
- package/dist/adapters/pubsub/index.d.cts +19 -8
- package/dist/adapters/pubsub/index.d.ts +19 -8
- package/dist/adapters/pubsub/index.js +15 -2
- package/dist/adapters/pubsub/index.js.map +1 -1
- package/dist/adapters/ui/express/index.d.cts +2 -3
- package/dist/adapters/ui/express/index.d.ts +2 -3
- package/dist/adapters/ui/index.cjs +20 -3
- package/dist/adapters/ui/index.cjs.map +1 -1
- package/dist/adapters/ui/index.d.cts +2 -2
- package/dist/adapters/ui/index.d.ts +2 -2
- package/dist/adapters/ui/index.js +20 -3
- package/dist/adapters/ui/index.js.map +1 -1
- package/dist/adapters/ui/routes/index.cjs +20 -3
- package/dist/adapters/ui/routes/index.cjs.map +1 -1
- package/dist/adapters/ui/routes/index.d.cts +3 -1
- package/dist/adapters/ui/routes/index.d.ts +3 -1
- package/dist/adapters/ui/routes/index.js +20 -3
- package/dist/adapters/ui/routes/index.js.map +1 -1
- package/dist/contracts/index.cjs +8 -2
- package/dist/contracts/index.cjs.map +1 -1
- package/dist/contracts/index.d.cts +3 -4
- package/dist/contracts/index.d.ts +3 -4
- package/dist/contracts/index.js +6 -1
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/kernel/index.cjs +15 -0
- package/dist/contracts/kernel/index.cjs.map +1 -1
- package/dist/contracts/kernel/index.d.cts +3 -4
- package/dist/contracts/kernel/index.d.ts +3 -4
- package/dist/contracts/kernel/index.js +6 -0
- package/dist/contracts/kernel/index.js.map +1 -1
- package/dist/domain/index.d.cts +2 -3
- package/dist/domain/index.d.ts +2 -3
- package/dist/index.cjs +21 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -4
- package/dist/index.d.ts +3 -4
- package/dist/index.js +20 -2
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/express/index.d.cts +2 -3
- package/dist/infrastructure/express/index.d.ts +2 -3
- package/dist/infrastructure/scheduler/index.cjs +15 -2
- package/dist/infrastructure/scheduler/index.cjs.map +1 -1
- package/dist/infrastructure/scheduler/index.js +15 -2
- package/dist/infrastructure/scheduler/index.js.map +1 -1
- package/package.json +12 -12
- package/dist/Constructor-fyZLLIh8.d.cts +0 -5
- package/dist/Constructor-fyZLLIh8.d.ts +0 -5
package/README.md
CHANGED
|
@@ -65,6 +65,9 @@ according to the source branch prefix:
|
|
|
65
65
|
| `feat/*` | Minor |
|
|
66
66
|
| `break/*` | Major |
|
|
67
67
|
|
|
68
|
+
Renovate runtime dependency PRs use `renovate/*` branches. They publish a patch
|
|
69
|
+
release only when the PR title starts with `fix(`.
|
|
70
|
+
|
|
68
71
|
Other branch names run validation only and do not publish.
|
|
69
72
|
|
|
70
73
|
## License
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { D as DomainEvent } from './DomainEvent-mXWEtr_J.cjs';
|
|
2
2
|
|
|
3
|
+
type Constructor<T> = {
|
|
4
|
+
new (...args: unknown[]): T;
|
|
5
|
+
};
|
|
6
|
+
|
|
3
7
|
interface DomainEventConsumerContext {
|
|
4
8
|
readonly metadata: Readonly<Record<string, unknown>>;
|
|
5
9
|
}
|
|
@@ -8,4 +12,4 @@ declare abstract class DomainEventConsumer {
|
|
|
8
12
|
abstract consume(queueName: string, bindingKey: string, domainEvent: typeof DomainEvent, exchange: string, handler: (event: DomainEvent, context?: DomainEventConsumerContext) => Promise<void>): Promise<void>;
|
|
9
13
|
}
|
|
10
14
|
|
|
11
|
-
export { DomainEventConsumer as D, type DomainEventConsumerContext as a };
|
|
15
|
+
export { type Constructor as C, DomainEventConsumer as D, type DomainEventConsumerContext as a };
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { D as DomainEvent } from './DomainEvent-mXWEtr_J.js';
|
|
2
2
|
|
|
3
|
+
type Constructor<T> = {
|
|
4
|
+
new (...args: unknown[]): T;
|
|
5
|
+
};
|
|
6
|
+
|
|
3
7
|
interface DomainEventConsumerContext {
|
|
4
8
|
readonly metadata: Readonly<Record<string, unknown>>;
|
|
5
9
|
}
|
|
@@ -8,4 +12,4 @@ declare abstract class DomainEventConsumer {
|
|
|
8
12
|
abstract consume(queueName: string, bindingKey: string, domainEvent: typeof DomainEvent, exchange: string, handler: (event: DomainEvent, context?: DomainEventConsumerContext) => Promise<void>): Promise<void>;
|
|
9
13
|
}
|
|
10
14
|
|
|
11
|
-
export { DomainEventConsumer as D, type DomainEventConsumerContext as a };
|
|
15
|
+
export { type Constructor as C, DomainEventConsumer as D, type DomainEventConsumerContext as a };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { M as MessageBus } from './MessageBus-BtUXnd0Y.cjs';
|
|
2
|
-
import { D as DomainEventConsumer } from './DomainEventConsumer-
|
|
2
|
+
import { D as DomainEventConsumer } from './DomainEventConsumer-BiTSbfMw.cjs';
|
|
3
3
|
import { D as DomainEvent } from './DomainEvent-mXWEtr_J.cjs';
|
|
4
4
|
|
|
5
5
|
declare abstract class DomainEventPublisher {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { M as MessageBus } from './MessageBus-oQ9BnW84.js';
|
|
2
|
-
import { D as DomainEventConsumer } from './DomainEventConsumer-
|
|
2
|
+
import { D as DomainEventConsumer } from './DomainEventConsumer-D1P4oXoj.js';
|
|
3
3
|
import { D as DomainEvent } from './DomainEvent-mXWEtr_J.js';
|
|
4
4
|
|
|
5
5
|
declare abstract class DomainEventPublisher {
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { a as PublisherHook } from './Subscription-4vuAAxax.cjs';
|
|
2
|
-
import { L as Log } from './Log-36L3Z84a.cjs';
|
|
3
2
|
import { P as PublisherHookErrorPolicy } from './PublisherHookErrorPolicy-CjouTcSR.cjs';
|
|
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';
|
|
6
|
-
import { C as Constructor } from './
|
|
7
|
-
import { a as DomainEventConsumerContext } from './DomainEventConsumer-Bg-bOwmh.cjs';
|
|
6
|
+
import { a as DomainEventConsumerContext, C as Constructor } from './DomainEventConsumer-BiTSbfMw.cjs';
|
|
8
7
|
|
|
9
8
|
type AmqpMessage = {
|
|
10
9
|
readonly aggregate_id: string;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { a as PublisherHook } from './Subscription-vtF0lEHP.js';
|
|
2
|
-
import { L as Log } from './Log-36L3Z84a.js';
|
|
3
2
|
import { P as PublisherHookErrorPolicy } from './PublisherHookErrorPolicy-DSsCNE6O.js';
|
|
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';
|
|
6
|
-
import { C as Constructor } from './
|
|
7
|
-
import { a as DomainEventConsumerContext } from './DomainEventConsumer-BroJmVty.js';
|
|
6
|
+
import { a as DomainEventConsumerContext, C as Constructor } from './DomainEventConsumer-D1P4oXoj.js';
|
|
8
7
|
|
|
9
8
|
type AmqpMessage = {
|
|
10
9
|
readonly aggregate_id: string;
|
|
@@ -1,24 +1,10 @@
|
|
|
1
1
|
import { D as DomainEvent } from './DomainEvent-mXWEtr_J.js';
|
|
2
2
|
import { DotenvConfigOutput } from 'dotenv';
|
|
3
|
-
import { D as DomainEventConsumer } from './DomainEventConsumer-BroJmVty.js';
|
|
4
|
-
import { Route } from './adapters/ui/routes/index.js';
|
|
5
3
|
import { b as DependencyOverride, D as DependencyInjection, S as ServiceClass } from './ServiceClass-Bq_fBC5R.js';
|
|
6
4
|
import { Initializer, Runtime } from './infrastructure/lifecycle/index.js';
|
|
7
5
|
import { a as Scheduler } from './Scheduler-BW-U5Ccg.js';
|
|
8
6
|
import { K as KernelLogger } from './KernelLogger-BESOFrpW.js';
|
|
9
|
-
|
|
10
|
-
declare abstract class Consumer {
|
|
11
|
-
private readonly consumer;
|
|
12
|
-
constructor(consumer: DomainEventConsumer);
|
|
13
|
-
private runMiddleware;
|
|
14
|
-
abstract get domainEvent(): typeof DomainEvent;
|
|
15
|
-
abstract get eventName(): string;
|
|
16
|
-
abstract get exchange(): string;
|
|
17
|
-
abstract get queueName(): string;
|
|
18
|
-
abstract handler(event: DomainEvent): Promise<void>;
|
|
19
|
-
init(): Promise<void>;
|
|
20
|
-
get<T>(service: unknown): T;
|
|
21
|
-
}
|
|
7
|
+
import { K as KernelRoute } from './KernelRoute-B7mVPrEx.js';
|
|
22
8
|
|
|
23
9
|
interface KernelDependencyInjectionOptions {
|
|
24
10
|
readonly containerBuild?: boolean;
|
|
@@ -33,9 +19,12 @@ type KernelEnvironmentVariableType = 'boolean' | 'number' | 'string';
|
|
|
33
19
|
|
|
34
20
|
type KernelEnvironmentVariablePrimitive<TType extends KernelEnvironmentVariableType> = TType extends 'boolean' ? boolean : TType extends 'number' ? number : string;
|
|
35
21
|
|
|
36
|
-
interface KernelEnvironmentVariableDefinition<TType extends KernelEnvironmentVariableType = KernelEnvironmentVariableType, TRequired extends boolean = boolean> {
|
|
37
|
-
readonly
|
|
22
|
+
interface KernelEnvironmentVariableDefinition<TType extends KernelEnvironmentVariableType = KernelEnvironmentVariableType, TRequired extends boolean = boolean, TChoices extends readonly KernelEnvironmentVariablePrimitive<TType>[] | undefined = readonly KernelEnvironmentVariablePrimitive<TType>[] | undefined> {
|
|
23
|
+
readonly choices?: TChoices;
|
|
24
|
+
readonly defaultValue?: TChoices extends readonly KernelEnvironmentVariablePrimitive<TType>[] ? TChoices[number] : KernelEnvironmentVariablePrimitive<TType>;
|
|
25
|
+
readonly description?: string;
|
|
38
26
|
readonly required?: TRequired;
|
|
27
|
+
readonly sensitive?: boolean;
|
|
39
28
|
readonly type: TType;
|
|
40
29
|
}
|
|
41
30
|
|
|
@@ -43,9 +32,15 @@ type KernelEnvironmentSchema = Readonly<Record<string, KernelEnvironmentVariable
|
|
|
43
32
|
|
|
44
33
|
type KernelEnvironmentValue = boolean | number | string;
|
|
45
34
|
|
|
46
|
-
type
|
|
35
|
+
type KernelEnvironmentVariableResolvedValue<TDefinition extends KernelEnvironmentVariableDefinition> = TDefinition extends {
|
|
36
|
+
readonly choices: readonly (infer TChoice extends KernelEnvironmentValue)[];
|
|
37
|
+
} ? TChoice : TDefinition extends KernelEnvironmentVariableDefinition<infer TType extends KernelEnvironmentVariableType> ? KernelEnvironmentVariablePrimitive<TType> : never;
|
|
38
|
+
|
|
39
|
+
type KernelEnvironmentVariable<TDefinition extends KernelEnvironmentVariableDefinition> = TDefinition extends {
|
|
47
40
|
readonly defaultValue: unknown;
|
|
48
|
-
} ?
|
|
41
|
+
} ? KernelEnvironmentVariableResolvedValue<TDefinition> : TDefinition extends {
|
|
42
|
+
readonly required: true;
|
|
43
|
+
} ? KernelEnvironmentVariableResolvedValue<TDefinition> : KernelEnvironmentVariableResolvedValue<TDefinition> | undefined;
|
|
49
44
|
|
|
50
45
|
type KernelEnvironment<TSchema extends KernelEnvironmentSchema> = {
|
|
51
46
|
readonly [key: string]: KernelEnvironmentValue | undefined;
|
|
@@ -55,15 +50,28 @@ type KernelEnvironment<TSchema extends KernelEnvironmentSchema> = {
|
|
|
55
50
|
|
|
56
51
|
type KernelEnvironmentForSchema<TSchema extends KernelEnvironmentSchema | undefined> = TSchema extends KernelEnvironmentSchema ? KernelEnvironment<TSchema> : KernelDefaultEnvironment;
|
|
57
52
|
|
|
53
|
+
type KernelEnvironmentSchemaInput<TSchema extends KernelEnvironmentSchema> = {
|
|
54
|
+
readonly [TKey in keyof TSchema]: TSchema[TKey] extends {
|
|
55
|
+
readonly choices: infer TChoices extends readonly KernelEnvironmentVariablePrimitive<TSchema[TKey]['type']>[];
|
|
56
|
+
readonly type: infer TType extends KernelEnvironmentVariableType;
|
|
57
|
+
} ? KernelEnvironmentVariableDefinition<TType, TSchema[TKey] extends {
|
|
58
|
+
readonly required: true;
|
|
59
|
+
} ? true : boolean, TChoices> : TSchema[TKey] extends {
|
|
60
|
+
readonly type: infer TType extends KernelEnvironmentVariableType;
|
|
61
|
+
} ? KernelEnvironmentVariableDefinition<TType, TSchema[TKey] extends {
|
|
62
|
+
readonly required: true;
|
|
63
|
+
} ? true : boolean> : never;
|
|
64
|
+
};
|
|
65
|
+
|
|
58
66
|
interface KernelEnvironmentVariablesOptions<TSchema extends KernelEnvironmentSchema | undefined = undefined> {
|
|
59
67
|
readonly override?: boolean;
|
|
60
68
|
readonly path?: string;
|
|
61
|
-
readonly schema?: TSchema;
|
|
69
|
+
readonly schema?: TSchema extends KernelEnvironmentSchema ? TSchema & KernelEnvironmentSchemaInput<TSchema> : TSchema;
|
|
62
70
|
}
|
|
63
71
|
|
|
64
72
|
interface KernelOptions<TEnvironmentSchema extends KernelEnvironmentSchema | undefined = undefined> {
|
|
65
73
|
readonly di?: DependencyInjection;
|
|
66
|
-
readonly environmentSchema?: TEnvironmentSchema;
|
|
74
|
+
readonly environmentSchema?: TEnvironmentSchema extends KernelEnvironmentSchema ? TEnvironmentSchema & KernelEnvironmentSchemaInput<TEnvironmentSchema> : TEnvironmentSchema;
|
|
67
75
|
readonly logger?: KernelLogger;
|
|
68
76
|
readonly servicesYamlPath?: string;
|
|
69
77
|
readonly sourceDirectory?: string;
|
|
@@ -82,18 +90,19 @@ declare class Kernel<TEnvironmentSchema extends KernelEnvironmentSchema | undefi
|
|
|
82
90
|
private environmentVariables;
|
|
83
91
|
private static get state();
|
|
84
92
|
static get configDirectory(): string;
|
|
85
|
-
static get consumers():
|
|
93
|
+
static get consumers(): KernelConsumer[];
|
|
86
94
|
static get consumerMiddleware(): ConsumerMiddleware[];
|
|
87
95
|
static get di(): DependencyInjection;
|
|
88
96
|
static get environment(): NodeJS.ProcessEnv;
|
|
89
97
|
static get logger(): KernelLogger;
|
|
90
98
|
static get active(): Kernel<KernelEnvironmentSchema | undefined>;
|
|
91
99
|
static get rootDirectory(): string;
|
|
92
|
-
static get routes(): ServiceClass<
|
|
100
|
+
static get routes(): ServiceClass<KernelRoute>[];
|
|
93
101
|
static get schedulers(): Scheduler[];
|
|
94
102
|
static get sourceDirectory(): string;
|
|
95
103
|
private static getActiveKernel;
|
|
96
104
|
private static assertRequiredEnvironmentVariable;
|
|
105
|
+
private static assertEnvironmentVariableChoice;
|
|
97
106
|
private static getEnvironmentVariablesPath;
|
|
98
107
|
private static parseBooleanEnvironmentVariable;
|
|
99
108
|
private static parseNumberEnvironmentVariable;
|
|
@@ -106,21 +115,21 @@ declare class Kernel<TEnvironmentSchema extends KernelEnvironmentSchema | undefi
|
|
|
106
115
|
private getInitializerFromClass;
|
|
107
116
|
private getRuntimeFromClass;
|
|
108
117
|
private getSchedulerFromClass;
|
|
109
|
-
get consumers():
|
|
118
|
+
get consumers(): KernelConsumer[];
|
|
110
119
|
get consumerMiddleware(): ConsumerMiddleware[];
|
|
111
120
|
get di(): DependencyInjection;
|
|
112
121
|
get environment(): KernelEnvironmentForSchema<TEnvironmentSchema>;
|
|
113
122
|
get logger(): KernelLogger;
|
|
114
|
-
get routes(): ServiceClass<
|
|
123
|
+
get routes(): ServiceClass<KernelRoute>[];
|
|
115
124
|
get schedulers(): Scheduler[];
|
|
116
125
|
private getDependencyInjectionOptions;
|
|
117
126
|
dependencyInjection(options?: KernelDependencyInjectionOptions): Promise<void>;
|
|
118
127
|
loadEnvironmentVariables(environment?: string, options?: KernelEnvironmentVariablesOptions<KernelEnvironmentSchema | undefined>): DotenvConfigOutput;
|
|
119
|
-
getRoutes(): ServiceClass<
|
|
128
|
+
getRoutes(): ServiceClass<KernelRoute>[];
|
|
120
129
|
registerConsumerMiddleware(...middlewares: ConsumerMiddleware[]): void;
|
|
121
|
-
registerConsumers(...ClassDefinitions: ServiceClass<
|
|
122
|
-
registerConsumerInstances(...consumers:
|
|
123
|
-
registerRoutes(...ClassDefinitions: ServiceClass<
|
|
130
|
+
registerConsumers(...ClassDefinitions: ServiceClass<KernelConsumer>[]): void;
|
|
131
|
+
registerConsumerInstances(...consumers: KernelConsumer[]): void;
|
|
132
|
+
registerRoutes(...ClassDefinitions: ServiceClass<KernelRoute>[]): void;
|
|
124
133
|
registerSchedulers(...ClassDefinitions: ServiceClass<Scheduler>[]): void;
|
|
125
134
|
registerSchedulerInstances(...schedulers: Scheduler[]): void;
|
|
126
135
|
registerShutdownHook(hook: ShutdownHook): void;
|
|
@@ -154,6 +163,11 @@ interface ConsumerMiddleware {
|
|
|
154
163
|
handle(event: DomainEvent, next: ConsumerNext, context: ConsumerExecutionContext): Promise<void>;
|
|
155
164
|
}
|
|
156
165
|
|
|
166
|
+
interface KernelConsumer {
|
|
167
|
+
readonly queueName: string;
|
|
168
|
+
init(): Promise<void>;
|
|
169
|
+
}
|
|
170
|
+
|
|
157
171
|
type ShutdownHook = () => Promise<void> | void;
|
|
158
172
|
|
|
159
|
-
export {
|
|
173
|
+
export { type ConsumerExecutionContext as C, type KernelConsumer as K, type ShutdownHook as S, type ConsumerMiddleware as a, type ConsumerNext as b, Kernel as c, type KernelDefaultEnvironment as d, type KernelDependencyInjectionOptions as e, type KernelEnvironment as f, type KernelEnvironmentForSchema as g, type KernelEnvironmentSchema as h, type KernelEnvironmentSchemaInput as i, type KernelEnvironmentValue as j, type KernelEnvironmentVariableDefinition as k, type KernelEnvironmentVariablePrimitive as l, type KernelEnvironmentVariableResolvedValue as m, type KernelEnvironmentVariableType as n, type KernelEnvironmentVariablesOptions as o, type KernelOptions as p, createKernel as q };
|
|
@@ -1,24 +1,10 @@
|
|
|
1
1
|
import { D as DomainEvent } from './DomainEvent-mXWEtr_J.cjs';
|
|
2
2
|
import { DotenvConfigOutput } from 'dotenv';
|
|
3
|
-
import { D as DomainEventConsumer } from './DomainEventConsumer-Bg-bOwmh.cjs';
|
|
4
|
-
import { Route } from './adapters/ui/routes/index.cjs';
|
|
5
3
|
import { b as DependencyOverride, D as DependencyInjection, S as ServiceClass } from './ServiceClass-BkEHcXDi.cjs';
|
|
6
4
|
import { Initializer, Runtime } from './infrastructure/lifecycle/index.cjs';
|
|
7
5
|
import { a as Scheduler } from './Scheduler-BW-U5Ccg.cjs';
|
|
8
6
|
import { K as KernelLogger } from './KernelLogger-BESOFrpW.cjs';
|
|
9
|
-
|
|
10
|
-
declare abstract class Consumer {
|
|
11
|
-
private readonly consumer;
|
|
12
|
-
constructor(consumer: DomainEventConsumer);
|
|
13
|
-
private runMiddleware;
|
|
14
|
-
abstract get domainEvent(): typeof DomainEvent;
|
|
15
|
-
abstract get eventName(): string;
|
|
16
|
-
abstract get exchange(): string;
|
|
17
|
-
abstract get queueName(): string;
|
|
18
|
-
abstract handler(event: DomainEvent): Promise<void>;
|
|
19
|
-
init(): Promise<void>;
|
|
20
|
-
get<T>(service: unknown): T;
|
|
21
|
-
}
|
|
7
|
+
import { K as KernelRoute } from './KernelRoute-B7mVPrEx.cjs';
|
|
22
8
|
|
|
23
9
|
interface KernelDependencyInjectionOptions {
|
|
24
10
|
readonly containerBuild?: boolean;
|
|
@@ -33,9 +19,12 @@ type KernelEnvironmentVariableType = 'boolean' | 'number' | 'string';
|
|
|
33
19
|
|
|
34
20
|
type KernelEnvironmentVariablePrimitive<TType extends KernelEnvironmentVariableType> = TType extends 'boolean' ? boolean : TType extends 'number' ? number : string;
|
|
35
21
|
|
|
36
|
-
interface KernelEnvironmentVariableDefinition<TType extends KernelEnvironmentVariableType = KernelEnvironmentVariableType, TRequired extends boolean = boolean> {
|
|
37
|
-
readonly
|
|
22
|
+
interface KernelEnvironmentVariableDefinition<TType extends KernelEnvironmentVariableType = KernelEnvironmentVariableType, TRequired extends boolean = boolean, TChoices extends readonly KernelEnvironmentVariablePrimitive<TType>[] | undefined = readonly KernelEnvironmentVariablePrimitive<TType>[] | undefined> {
|
|
23
|
+
readonly choices?: TChoices;
|
|
24
|
+
readonly defaultValue?: TChoices extends readonly KernelEnvironmentVariablePrimitive<TType>[] ? TChoices[number] : KernelEnvironmentVariablePrimitive<TType>;
|
|
25
|
+
readonly description?: string;
|
|
38
26
|
readonly required?: TRequired;
|
|
27
|
+
readonly sensitive?: boolean;
|
|
39
28
|
readonly type: TType;
|
|
40
29
|
}
|
|
41
30
|
|
|
@@ -43,9 +32,15 @@ type KernelEnvironmentSchema = Readonly<Record<string, KernelEnvironmentVariable
|
|
|
43
32
|
|
|
44
33
|
type KernelEnvironmentValue = boolean | number | string;
|
|
45
34
|
|
|
46
|
-
type
|
|
35
|
+
type KernelEnvironmentVariableResolvedValue<TDefinition extends KernelEnvironmentVariableDefinition> = TDefinition extends {
|
|
36
|
+
readonly choices: readonly (infer TChoice extends KernelEnvironmentValue)[];
|
|
37
|
+
} ? TChoice : TDefinition extends KernelEnvironmentVariableDefinition<infer TType extends KernelEnvironmentVariableType> ? KernelEnvironmentVariablePrimitive<TType> : never;
|
|
38
|
+
|
|
39
|
+
type KernelEnvironmentVariable<TDefinition extends KernelEnvironmentVariableDefinition> = TDefinition extends {
|
|
47
40
|
readonly defaultValue: unknown;
|
|
48
|
-
} ?
|
|
41
|
+
} ? KernelEnvironmentVariableResolvedValue<TDefinition> : TDefinition extends {
|
|
42
|
+
readonly required: true;
|
|
43
|
+
} ? KernelEnvironmentVariableResolvedValue<TDefinition> : KernelEnvironmentVariableResolvedValue<TDefinition> | undefined;
|
|
49
44
|
|
|
50
45
|
type KernelEnvironment<TSchema extends KernelEnvironmentSchema> = {
|
|
51
46
|
readonly [key: string]: KernelEnvironmentValue | undefined;
|
|
@@ -55,15 +50,28 @@ type KernelEnvironment<TSchema extends KernelEnvironmentSchema> = {
|
|
|
55
50
|
|
|
56
51
|
type KernelEnvironmentForSchema<TSchema extends KernelEnvironmentSchema | undefined> = TSchema extends KernelEnvironmentSchema ? KernelEnvironment<TSchema> : KernelDefaultEnvironment;
|
|
57
52
|
|
|
53
|
+
type KernelEnvironmentSchemaInput<TSchema extends KernelEnvironmentSchema> = {
|
|
54
|
+
readonly [TKey in keyof TSchema]: TSchema[TKey] extends {
|
|
55
|
+
readonly choices: infer TChoices extends readonly KernelEnvironmentVariablePrimitive<TSchema[TKey]['type']>[];
|
|
56
|
+
readonly type: infer TType extends KernelEnvironmentVariableType;
|
|
57
|
+
} ? KernelEnvironmentVariableDefinition<TType, TSchema[TKey] extends {
|
|
58
|
+
readonly required: true;
|
|
59
|
+
} ? true : boolean, TChoices> : TSchema[TKey] extends {
|
|
60
|
+
readonly type: infer TType extends KernelEnvironmentVariableType;
|
|
61
|
+
} ? KernelEnvironmentVariableDefinition<TType, TSchema[TKey] extends {
|
|
62
|
+
readonly required: true;
|
|
63
|
+
} ? true : boolean> : never;
|
|
64
|
+
};
|
|
65
|
+
|
|
58
66
|
interface KernelEnvironmentVariablesOptions<TSchema extends KernelEnvironmentSchema | undefined = undefined> {
|
|
59
67
|
readonly override?: boolean;
|
|
60
68
|
readonly path?: string;
|
|
61
|
-
readonly schema?: TSchema;
|
|
69
|
+
readonly schema?: TSchema extends KernelEnvironmentSchema ? TSchema & KernelEnvironmentSchemaInput<TSchema> : TSchema;
|
|
62
70
|
}
|
|
63
71
|
|
|
64
72
|
interface KernelOptions<TEnvironmentSchema extends KernelEnvironmentSchema | undefined = undefined> {
|
|
65
73
|
readonly di?: DependencyInjection;
|
|
66
|
-
readonly environmentSchema?: TEnvironmentSchema;
|
|
74
|
+
readonly environmentSchema?: TEnvironmentSchema extends KernelEnvironmentSchema ? TEnvironmentSchema & KernelEnvironmentSchemaInput<TEnvironmentSchema> : TEnvironmentSchema;
|
|
67
75
|
readonly logger?: KernelLogger;
|
|
68
76
|
readonly servicesYamlPath?: string;
|
|
69
77
|
readonly sourceDirectory?: string;
|
|
@@ -82,18 +90,19 @@ declare class Kernel<TEnvironmentSchema extends KernelEnvironmentSchema | undefi
|
|
|
82
90
|
private environmentVariables;
|
|
83
91
|
private static get state();
|
|
84
92
|
static get configDirectory(): string;
|
|
85
|
-
static get consumers():
|
|
93
|
+
static get consumers(): KernelConsumer[];
|
|
86
94
|
static get consumerMiddleware(): ConsumerMiddleware[];
|
|
87
95
|
static get di(): DependencyInjection;
|
|
88
96
|
static get environment(): NodeJS.ProcessEnv;
|
|
89
97
|
static get logger(): KernelLogger;
|
|
90
98
|
static get active(): Kernel<KernelEnvironmentSchema | undefined>;
|
|
91
99
|
static get rootDirectory(): string;
|
|
92
|
-
static get routes(): ServiceClass<
|
|
100
|
+
static get routes(): ServiceClass<KernelRoute>[];
|
|
93
101
|
static get schedulers(): Scheduler[];
|
|
94
102
|
static get sourceDirectory(): string;
|
|
95
103
|
private static getActiveKernel;
|
|
96
104
|
private static assertRequiredEnvironmentVariable;
|
|
105
|
+
private static assertEnvironmentVariableChoice;
|
|
97
106
|
private static getEnvironmentVariablesPath;
|
|
98
107
|
private static parseBooleanEnvironmentVariable;
|
|
99
108
|
private static parseNumberEnvironmentVariable;
|
|
@@ -106,21 +115,21 @@ declare class Kernel<TEnvironmentSchema extends KernelEnvironmentSchema | undefi
|
|
|
106
115
|
private getInitializerFromClass;
|
|
107
116
|
private getRuntimeFromClass;
|
|
108
117
|
private getSchedulerFromClass;
|
|
109
|
-
get consumers():
|
|
118
|
+
get consumers(): KernelConsumer[];
|
|
110
119
|
get consumerMiddleware(): ConsumerMiddleware[];
|
|
111
120
|
get di(): DependencyInjection;
|
|
112
121
|
get environment(): KernelEnvironmentForSchema<TEnvironmentSchema>;
|
|
113
122
|
get logger(): KernelLogger;
|
|
114
|
-
get routes(): ServiceClass<
|
|
123
|
+
get routes(): ServiceClass<KernelRoute>[];
|
|
115
124
|
get schedulers(): Scheduler[];
|
|
116
125
|
private getDependencyInjectionOptions;
|
|
117
126
|
dependencyInjection(options?: KernelDependencyInjectionOptions): Promise<void>;
|
|
118
127
|
loadEnvironmentVariables(environment?: string, options?: KernelEnvironmentVariablesOptions<KernelEnvironmentSchema | undefined>): DotenvConfigOutput;
|
|
119
|
-
getRoutes(): ServiceClass<
|
|
128
|
+
getRoutes(): ServiceClass<KernelRoute>[];
|
|
120
129
|
registerConsumerMiddleware(...middlewares: ConsumerMiddleware[]): void;
|
|
121
|
-
registerConsumers(...ClassDefinitions: ServiceClass<
|
|
122
|
-
registerConsumerInstances(...consumers:
|
|
123
|
-
registerRoutes(...ClassDefinitions: ServiceClass<
|
|
130
|
+
registerConsumers(...ClassDefinitions: ServiceClass<KernelConsumer>[]): void;
|
|
131
|
+
registerConsumerInstances(...consumers: KernelConsumer[]): void;
|
|
132
|
+
registerRoutes(...ClassDefinitions: ServiceClass<KernelRoute>[]): void;
|
|
124
133
|
registerSchedulers(...ClassDefinitions: ServiceClass<Scheduler>[]): void;
|
|
125
134
|
registerSchedulerInstances(...schedulers: Scheduler[]): void;
|
|
126
135
|
registerShutdownHook(hook: ShutdownHook): void;
|
|
@@ -154,6 +163,11 @@ interface ConsumerMiddleware {
|
|
|
154
163
|
handle(event: DomainEvent, next: ConsumerNext, context: ConsumerExecutionContext): Promise<void>;
|
|
155
164
|
}
|
|
156
165
|
|
|
166
|
+
interface KernelConsumer {
|
|
167
|
+
readonly queueName: string;
|
|
168
|
+
init(): Promise<void>;
|
|
169
|
+
}
|
|
170
|
+
|
|
157
171
|
type ShutdownHook = () => Promise<void> | void;
|
|
158
172
|
|
|
159
|
-
export {
|
|
173
|
+
export { type ConsumerExecutionContext as C, type KernelConsumer as K, type ShutdownHook as S, type ConsumerMiddleware as a, type ConsumerNext as b, Kernel as c, type KernelDefaultEnvironment as d, type KernelDependencyInjectionOptions as e, type KernelEnvironment as f, type KernelEnvironmentForSchema as g, type KernelEnvironmentSchema as h, type KernelEnvironmentSchemaInput as i, type KernelEnvironmentValue as j, type KernelEnvironmentVariableDefinition as k, type KernelEnvironmentVariablePrimitive as l, type KernelEnvironmentVariableResolvedValue as m, type KernelEnvironmentVariableType as n, type KernelEnvironmentVariablesOptions as o, type KernelOptions as p, createKernel as q };
|
package/dist/adapters/index.cjs
CHANGED
|
@@ -444,6 +444,14 @@ var Kernel = class _Kernel {
|
|
|
444
444
|
);
|
|
445
445
|
}
|
|
446
446
|
}
|
|
447
|
+
static assertEnvironmentVariableChoice(name, value, schema) {
|
|
448
|
+
const choices = schema[name]?.choices;
|
|
449
|
+
if (choices && !choices.includes(value)) {
|
|
450
|
+
throw new KernelEnvironmentValidationError(
|
|
451
|
+
`Environment variable "${name}" must be one of: ${choices.join(", ")}.`
|
|
452
|
+
);
|
|
453
|
+
}
|
|
454
|
+
}
|
|
447
455
|
static getEnvironmentVariablesPath(environment, options) {
|
|
448
456
|
return import_node_path2.default.resolve(
|
|
449
457
|
_Kernel.rootDirectory,
|
|
@@ -478,11 +486,16 @@ var Kernel = class _Kernel {
|
|
|
478
486
|
static parseEnvironmentVariable(name, value, schema) {
|
|
479
487
|
const definition = schema[name];
|
|
480
488
|
if (definition.type === "boolean") {
|
|
481
|
-
|
|
489
|
+
const parsedValue = _Kernel.parseBooleanEnvironmentVariable(name, value);
|
|
490
|
+
_Kernel.assertEnvironmentVariableChoice(name, parsedValue, schema);
|
|
491
|
+
return parsedValue;
|
|
482
492
|
}
|
|
483
493
|
if (definition.type === "number") {
|
|
484
|
-
|
|
494
|
+
const parsedValue = _Kernel.parseNumberEnvironmentVariable(name, value);
|
|
495
|
+
_Kernel.assertEnvironmentVariableChoice(name, parsedValue, schema);
|
|
496
|
+
return parsedValue;
|
|
485
497
|
}
|
|
498
|
+
_Kernel.assertEnvironmentVariableChoice(name, value, schema);
|
|
486
499
|
return value;
|
|
487
500
|
}
|
|
488
501
|
static validateEnvironmentVariables(schema) {
|
|
@@ -1349,8 +1362,12 @@ var RoutePrefix = class _RoutePrefix {
|
|
|
1349
1362
|
}
|
|
1350
1363
|
};
|
|
1351
1364
|
|
|
1365
|
+
// src/contracts/kernel/KernelRoute.ts
|
|
1366
|
+
var KernelRoute = class {
|
|
1367
|
+
};
|
|
1368
|
+
|
|
1352
1369
|
// src/adapters/ui/routes/Route.ts
|
|
1353
|
-
var Route = class {
|
|
1370
|
+
var Route = class extends KernelRoute {
|
|
1354
1371
|
get(service) {
|
|
1355
1372
|
return Kernel.di.getService(service);
|
|
1356
1373
|
}
|