@azure-net/kit 3.1.0 → 3.9.2
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 +2 -2
- package/dist/core/delivery/index.d.ts +1 -4
- package/dist/core/delivery/index.js +1 -4
- package/dist/core/delivery/injectableDependencies/AsyncHelpers.d.ts +28 -30
- package/dist/core/delivery/injectableDependencies/AsyncHelpers.js +80 -116
- package/dist/core/delivery/injectableDependencies/ErrorHandler.d.ts +3 -21
- package/dist/core/delivery/injectableDependencies/ErrorHandler.js +11 -42
- package/dist/core/delivery/schema/Schema.d.ts +8 -1
- package/dist/core/delivery/schema/Schema.js +12 -3
- package/dist/core/delivery.d.ts +5 -0
- package/dist/core/delivery.js +5 -0
- package/dist/core/errors.d.ts +4 -0
- package/dist/core/errors.js +4 -0
- package/dist/core/index.d.ts +7 -8
- package/dist/core/index.js +7 -8
- package/dist/core/infra/datasource/BaseDatasource.d.ts +11 -11
- package/dist/core/infra/datasource/BaseDatasource.js +4 -4
- package/dist/core/infra/httpService/HttpServiceInstance.d.ts +90 -0
- package/dist/core/infra/httpService/HttpServiceInstance.js +340 -0
- package/dist/core/infra/httpService/index.d.ts +1 -1
- package/dist/core/infra/httpService/index.js +1 -1
- package/dist/core/infra/query/QueryBuilder.d.ts +9 -21
- package/dist/core/infra/query/QueryBuilder.js +63 -50
- package/dist/core/infra/response/BaseResponse.js +3 -2
- package/dist/core/infra.d.ts +6 -0
- package/dist/core/infra.js +6 -0
- package/dist/core/shared/appError/AppError.d.ts +30 -0
- package/dist/core/shared/appError/AppError.js +66 -0
- package/dist/core/shared/appEventBus/EventBus.d.ts +1 -1
- package/dist/core/shared/appEventBus/EventBus.js +3 -3
- package/dist/core/shared/boundaryProvider/Provider.d.ts +2 -2
- package/dist/core/shared/boundaryProvider/Provider.js +16 -9
- package/dist/core/shared/classMirror/ClassMirror.d.ts +7 -2
- package/dist/core/shared/classMirror/ClassMirror.js +34 -15
- package/dist/core/shared/cookie/UniversalCookie.js +9 -11
- package/dist/core/shared/middleware/Middleware.js +12 -8
- package/dist/core/svelte/ActiveForm/ActiveForm.svelte.d.ts +10 -6
- package/dist/core/svelte/ActiveForm/ActiveForm.svelte.js +47 -41
- package/dist/core/svelte/AsyncSignal/AsyncSignal.svelte.d.ts +0 -1
- package/dist/core/svelte/AsyncSignal/AsyncSignal.svelte.js +21 -30
- package/dist/core/svelte/Query/Query.svelte.d.ts +11 -12
- package/dist/core/svelte/Query/Query.svelte.js +43 -55
- package/dist/core/ui/onClickOutside/OnClickOutside.js +1 -1
- package/dist/core/ui/scrollTo/index.js +2 -2
- package/dist/edges/context/index.d.ts +1 -1
- package/dist/edges/context/index.js +1 -1
- package/dist/edges/dev/index.d.ts +1 -1
- package/dist/edges/dev/index.js +1 -1
- package/dist/edges/index.d.ts +1 -1
- package/dist/edges/index.js +1 -1
- package/dist/edges/plugin/index.d.ts +1 -1
- package/dist/edges/plugin/index.js +1 -1
- package/dist/edges/server/index.d.ts +1 -1
- package/dist/edges/server/index.js +1 -1
- package/dist/edges/state/index.d.ts +1 -1
- package/dist/edges/state/index.js +1 -1
- package/dist/i18n/index.d.ts +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/tools/index.d.ts +2 -1
- package/dist/tools/index.js +2 -1
- package/package.json +45 -47
- package/dist/core/delivery/serverAction/CreateServerAction.d.ts +0 -15
- package/dist/core/delivery/serverAction/CreateServerAction.js +0 -22
- package/dist/core/delivery/serverAction/index.d.ts +0 -1
- package/dist/core/delivery/serverAction/index.js +0 -1
- package/dist/core/infra/httpService/HttpService.d.ts +0 -74
- package/dist/core/infra/httpService/HttpService.js +0 -164
- package/dist/core/shared/eventBus/EventBus.d.ts +0 -87
- package/dist/core/shared/eventBus/EventBus.js +0 -227
- package/dist/core/shared/eventBus/index.d.ts +0 -1
- package/dist/core/shared/eventBus/index.js +0 -1
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
export interface IEvent<T = unknown> {
|
|
2
|
-
aggregateId: string;
|
|
3
|
-
eventType: string;
|
|
4
|
-
eventVersion: number;
|
|
5
|
-
occurredAt: Date;
|
|
6
|
-
metadata: IEventMetadata;
|
|
7
|
-
busName?: string;
|
|
8
|
-
payload: T;
|
|
9
|
-
}
|
|
10
|
-
export interface IEventMetadata {
|
|
11
|
-
userId?: string;
|
|
12
|
-
correlationId: string;
|
|
13
|
-
causationId?: string;
|
|
14
|
-
sessionId?: string;
|
|
15
|
-
[key: string]: unknown;
|
|
16
|
-
}
|
|
17
|
-
export type DomainEventHandler<T = unknown> = (event: IEvent<T>) => void | Promise<void>;
|
|
18
|
-
export interface IEventSubscription {
|
|
19
|
-
unsubscribe(): void;
|
|
20
|
-
}
|
|
21
|
-
export declare class EventBus<TEventMap extends object> {
|
|
22
|
-
private options;
|
|
23
|
-
private handlers;
|
|
24
|
-
private wildcardHandlers;
|
|
25
|
-
private middleware;
|
|
26
|
-
private eventQueue;
|
|
27
|
-
private isProcessing;
|
|
28
|
-
private eventHistory;
|
|
29
|
-
private priorities;
|
|
30
|
-
private readonly debug;
|
|
31
|
-
private readonly maxHistorySize;
|
|
32
|
-
private readonly busName?;
|
|
33
|
-
constructor(options?: {
|
|
34
|
-
busName?: string;
|
|
35
|
-
enableHistory?: boolean;
|
|
36
|
-
maxHistorySize?: number;
|
|
37
|
-
enableAsyncProcessing?: boolean;
|
|
38
|
-
debug?: boolean;
|
|
39
|
-
});
|
|
40
|
-
publish<K extends keyof TEventMap>(eventType: K, payload: TEventMap[K], metadata?: Partial<IEventMetadata>): void;
|
|
41
|
-
publishBatch<K extends keyof TEventMap>(events: Array<{
|
|
42
|
-
type: K;
|
|
43
|
-
payload: TEventMap[K];
|
|
44
|
-
metadata?: Partial<IEventMetadata>;
|
|
45
|
-
}>): void;
|
|
46
|
-
subscribe<K extends keyof TEventMap>(eventType: K, handler: DomainEventHandler<TEventMap[K]>, options?: {
|
|
47
|
-
priority?: number;
|
|
48
|
-
}): IEventSubscription;
|
|
49
|
-
subscribeMany<K extends keyof TEventMap>(eventTypes: K[], handler: DomainEventHandler<TEventMap[K]>): IEventSubscription;
|
|
50
|
-
subscribeAll(handler: DomainEventHandler): IEventSubscription;
|
|
51
|
-
use(middleware: <T = unknown>(event: IEvent<T>, next: () => Promise<void>) => Promise<void>): void;
|
|
52
|
-
private processEvent;
|
|
53
|
-
private executeHandlers;
|
|
54
|
-
private safeExecuteHandler;
|
|
55
|
-
private getHandlersForEvent;
|
|
56
|
-
private processQueue;
|
|
57
|
-
private addToHistory;
|
|
58
|
-
getHistory(filter?: {
|
|
59
|
-
eventType?: keyof TEventMap;
|
|
60
|
-
aggregateId?: string;
|
|
61
|
-
}): IEvent[];
|
|
62
|
-
waitForCompletion(): Promise<void>;
|
|
63
|
-
clear(): void;
|
|
64
|
-
private generateAggregateId;
|
|
65
|
-
private generateCorrelationId;
|
|
66
|
-
}
|
|
67
|
-
export declare const loggingMiddleware: (event: IEvent, next: () => Promise<void>) => Promise<void>;
|
|
68
|
-
export declare const createEventBus: <TEventMap extends object>(opts: {
|
|
69
|
-
history?: boolean;
|
|
70
|
-
asyncProcessing?: boolean;
|
|
71
|
-
historySize?: number;
|
|
72
|
-
middlewares?: (<T = unknown>(event: IEvent<T>, next: () => Promise<void>) => Promise<void>)[];
|
|
73
|
-
debug?: boolean;
|
|
74
|
-
busName?: string;
|
|
75
|
-
}) => {
|
|
76
|
-
eventBus: EventBus<TEventMap>;
|
|
77
|
-
CreateEvent: <K extends keyof TEventMap>(eventName: K, data: TEventMap[K]) => void;
|
|
78
|
-
CreateBatch: <K extends keyof TEventMap>(events: Array<{
|
|
79
|
-
type: K;
|
|
80
|
-
payload: TEventMap[K];
|
|
81
|
-
metadata?: Partial<IEventMetadata>;
|
|
82
|
-
}>) => void;
|
|
83
|
-
CreateSubscriber: <K extends keyof TEventMap>(eventType: K, handler: DomainEventHandler<TEventMap[K]>, options?: {
|
|
84
|
-
priority?: number;
|
|
85
|
-
}) => IEventSubscription;
|
|
86
|
-
CreateSubscribers: <K extends keyof TEventMap>(eventTypes: K[], handler: DomainEventHandler<TEventMap[K]>) => IEventSubscription;
|
|
87
|
-
};
|
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
export class EventBus {
|
|
2
|
-
options;
|
|
3
|
-
handlers = new Map();
|
|
4
|
-
wildcardHandlers = new Set();
|
|
5
|
-
middleware = [];
|
|
6
|
-
eventQueue = [];
|
|
7
|
-
isProcessing = false;
|
|
8
|
-
eventHistory = [];
|
|
9
|
-
priorities = new Map();
|
|
10
|
-
debug = false;
|
|
11
|
-
maxHistorySize = 1000;
|
|
12
|
-
busName;
|
|
13
|
-
constructor(options = { debug: false }) {
|
|
14
|
-
this.options = options;
|
|
15
|
-
this.busName = options.busName ?? undefined;
|
|
16
|
-
this.debug = options.debug ?? false;
|
|
17
|
-
if (options.maxHistorySize) {
|
|
18
|
-
this.maxHistorySize = options.maxHistorySize;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
publish(eventType, payload, metadata) {
|
|
22
|
-
const event = {
|
|
23
|
-
aggregateId: this.generateAggregateId(String(eventType), payload),
|
|
24
|
-
eventType: String(eventType),
|
|
25
|
-
eventVersion: 1,
|
|
26
|
-
occurredAt: new Date(),
|
|
27
|
-
metadata: {
|
|
28
|
-
correlationId: this.generateCorrelationId(),
|
|
29
|
-
...metadata
|
|
30
|
-
},
|
|
31
|
-
busName: this.busName,
|
|
32
|
-
payload
|
|
33
|
-
};
|
|
34
|
-
void this.processEvent(event);
|
|
35
|
-
}
|
|
36
|
-
publishBatch(events) {
|
|
37
|
-
const domainEvents = events.map(({ type, payload, metadata }) => ({
|
|
38
|
-
aggregateId: this.generateAggregateId(type, payload),
|
|
39
|
-
eventType: type,
|
|
40
|
-
eventVersion: 1,
|
|
41
|
-
occurredAt: new Date(),
|
|
42
|
-
busName: this.busName,
|
|
43
|
-
metadata: {
|
|
44
|
-
correlationId: this.generateCorrelationId(),
|
|
45
|
-
...metadata
|
|
46
|
-
},
|
|
47
|
-
payload
|
|
48
|
-
}));
|
|
49
|
-
domainEvents.forEach((event) => this.processEvent(event));
|
|
50
|
-
}
|
|
51
|
-
subscribe(eventType, handler, options) {
|
|
52
|
-
if (!this.handlers.has(eventType)) {
|
|
53
|
-
this.handlers.set(eventType, new Set());
|
|
54
|
-
}
|
|
55
|
-
const handlers = this.handlers.get(eventType);
|
|
56
|
-
handlers.add(handler);
|
|
57
|
-
if (options?.priority !== undefined) {
|
|
58
|
-
this.priorities.set(eventType, options.priority);
|
|
59
|
-
}
|
|
60
|
-
return {
|
|
61
|
-
unsubscribe: () => {
|
|
62
|
-
handlers.delete(handler);
|
|
63
|
-
if (handlers.size === 0) {
|
|
64
|
-
this.handlers.delete(eventType);
|
|
65
|
-
this.priorities.delete(eventType);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
subscribeMany(eventTypes, handler) {
|
|
71
|
-
const subscriptions = eventTypes.map((type) => this.subscribe(type, handler));
|
|
72
|
-
return {
|
|
73
|
-
unsubscribe: () => {
|
|
74
|
-
subscriptions.forEach((sub) => sub.unsubscribe());
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
subscribeAll(handler) {
|
|
79
|
-
this.wildcardHandlers.add(handler);
|
|
80
|
-
return {
|
|
81
|
-
unsubscribe: () => {
|
|
82
|
-
this.wildcardHandlers.delete(handler);
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
use(middleware) {
|
|
87
|
-
this.middleware.push(middleware);
|
|
88
|
-
}
|
|
89
|
-
async processEvent(event) {
|
|
90
|
-
if (this.options.enableHistory) {
|
|
91
|
-
this.addToHistory(event);
|
|
92
|
-
}
|
|
93
|
-
const handlers = this.getHandlersForEvent(event);
|
|
94
|
-
if (!this.debug && handlers.size === 0 && this.wildcardHandlers.size === 0) {
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
if (this.options.enableAsyncProcessing) {
|
|
98
|
-
this.eventQueue.push({ event, handlers });
|
|
99
|
-
if (!this.isProcessing) {
|
|
100
|
-
void this.processQueue();
|
|
101
|
-
}
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
await this.executeHandlers(event, handlers);
|
|
105
|
-
}
|
|
106
|
-
async executeHandlers(event, handlers) {
|
|
107
|
-
const allHandlers = [...handlers, ...this.wildcardHandlers];
|
|
108
|
-
let index = -1;
|
|
109
|
-
const dispatch = async (i) => {
|
|
110
|
-
if (i <= index) {
|
|
111
|
-
throw new Error('next() called multiple times');
|
|
112
|
-
}
|
|
113
|
-
index = i;
|
|
114
|
-
if (i === this.middleware.length) {
|
|
115
|
-
await Promise.all(allHandlers.map((handler) => this.safeExecuteHandler(handler, event)));
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
const middleware = this.middleware[i];
|
|
119
|
-
await middleware(event, () => dispatch(i + 1));
|
|
120
|
-
};
|
|
121
|
-
await dispatch(0);
|
|
122
|
-
}
|
|
123
|
-
async safeExecuteHandler(handler, event) {
|
|
124
|
-
try {
|
|
125
|
-
await handler(event);
|
|
126
|
-
}
|
|
127
|
-
catch (error) {
|
|
128
|
-
console.error(`Error handling event ${event.eventType}:`, error);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
getHandlersForEvent(event) {
|
|
132
|
-
const handlers = this.handlers.get(event.eventType);
|
|
133
|
-
return handlers || new Set();
|
|
134
|
-
}
|
|
135
|
-
async processQueue() {
|
|
136
|
-
if (this.isProcessing || this.eventQueue.length === 0) {
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
this.isProcessing = true;
|
|
140
|
-
this.eventQueue.sort((a, b) => {
|
|
141
|
-
const priorityA = this.priorities.get(a.event.eventType) || 0;
|
|
142
|
-
const priorityB = this.priorities.get(b.event.eventType) || 0;
|
|
143
|
-
return priorityB - priorityA;
|
|
144
|
-
});
|
|
145
|
-
while (this.eventQueue.length > 0) {
|
|
146
|
-
const batch = this.eventQueue.splice(0, 10);
|
|
147
|
-
await Promise.all(batch.map(({ event, handlers }) => this.executeHandlers(event, handlers)));
|
|
148
|
-
}
|
|
149
|
-
this.isProcessing = false;
|
|
150
|
-
}
|
|
151
|
-
addToHistory(event) {
|
|
152
|
-
this.eventHistory.push(event);
|
|
153
|
-
if (this.eventHistory.length > this.maxHistorySize) {
|
|
154
|
-
this.eventHistory.shift();
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
getHistory(filter) {
|
|
158
|
-
if (!filter)
|
|
159
|
-
return [...this.eventHistory];
|
|
160
|
-
return this.eventHistory.filter((event) => {
|
|
161
|
-
switch (true) {
|
|
162
|
-
case filter.eventType && event.eventType !== filter.eventType:
|
|
163
|
-
return false;
|
|
164
|
-
case filter.aggregateId && event.aggregateId !== filter.aggregateId:
|
|
165
|
-
return false;
|
|
166
|
-
default:
|
|
167
|
-
return true;
|
|
168
|
-
}
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
async waitForCompletion() {
|
|
172
|
-
while (this.isProcessing || this.eventQueue.length > 0) {
|
|
173
|
-
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
clear() {
|
|
177
|
-
this.handlers.clear();
|
|
178
|
-
this.wildcardHandlers.clear();
|
|
179
|
-
this.eventQueue = [];
|
|
180
|
-
this.eventHistory = [];
|
|
181
|
-
}
|
|
182
|
-
generateAggregateId(eventType, payload) {
|
|
183
|
-
const maybeEventPayload = payload;
|
|
184
|
-
if (typeof maybeEventPayload === 'object' && maybeEventPayload?.id)
|
|
185
|
-
return String(maybeEventPayload.id);
|
|
186
|
-
if (typeof maybeEventPayload === 'object' && maybeEventPayload?.aggregateId)
|
|
187
|
-
return String(maybeEventPayload.aggregateId);
|
|
188
|
-
return `${eventType}-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
|
|
189
|
-
}
|
|
190
|
-
generateCorrelationId() {
|
|
191
|
-
return `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
export const loggingMiddleware = async (event, next) => {
|
|
195
|
-
console.log(`[${event.busName ?? ''}Event] ${event.eventType} at ${event.occurredAt.toISOString()}`);
|
|
196
|
-
console.log(`[${event.busName ?? ''}Event] data:`, event);
|
|
197
|
-
const start = performance.now();
|
|
198
|
-
await next();
|
|
199
|
-
const duration = performance.now() - start;
|
|
200
|
-
console.log(`[${event.busName ?? ''}Event] ${event.eventType} processed in ${duration.toFixed(2)}ms`);
|
|
201
|
-
};
|
|
202
|
-
export const createEventBus = (opts) => {
|
|
203
|
-
const { history = true, asyncProcessing = true, historySize = 1000, middlewares = [], debug = false } = opts;
|
|
204
|
-
const eventBus = new EventBus({
|
|
205
|
-
busName: opts.busName,
|
|
206
|
-
enableHistory: history,
|
|
207
|
-
enableAsyncProcessing: asyncProcessing,
|
|
208
|
-
maxHistorySize: historySize,
|
|
209
|
-
debug
|
|
210
|
-
});
|
|
211
|
-
middlewares.forEach((value) => {
|
|
212
|
-
eventBus.use(value);
|
|
213
|
-
});
|
|
214
|
-
const CreateEvent = (eventName, data) => {
|
|
215
|
-
eventBus.publish(eventName, data);
|
|
216
|
-
};
|
|
217
|
-
const CreateBatch = (events) => {
|
|
218
|
-
eventBus.publishBatch(events);
|
|
219
|
-
};
|
|
220
|
-
const CreateSubscriber = (eventType, handler, options) => {
|
|
221
|
-
return eventBus.subscribe(eventType, handler, options);
|
|
222
|
-
};
|
|
223
|
-
const CreateSubscribers = (eventTypes, handler) => {
|
|
224
|
-
return eventBus.subscribeMany(eventTypes, handler);
|
|
225
|
-
};
|
|
226
|
-
return { eventBus, CreateEvent, CreateBatch, CreateSubscriber, CreateSubscribers };
|
|
227
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './EventBus.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './EventBus.js';
|