stratal 0.0.4 → 0.0.6
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 -7
- package/dist/application.d.ts +15 -5
- package/dist/application.d.ts.map +1 -1
- package/dist/application.js +34 -11
- package/dist/application.js.map +1 -1
- package/dist/di/container.d.ts +2 -4
- package/dist/di/container.d.ts.map +1 -1
- package/dist/di/container.js +4 -14
- package/dist/di/container.js.map +1 -1
- package/dist/di/tokens.d.ts +0 -1
- package/dist/di/tokens.d.ts.map +1 -1
- package/dist/di/tokens.js +0 -1
- package/dist/di/tokens.js.map +1 -1
- package/dist/events/constants.d.ts +11 -0
- package/dist/events/constants.d.ts.map +1 -0
- package/dist/events/constants.js +11 -0
- package/dist/events/constants.js.map +1 -0
- package/dist/events/decorators/index.d.ts +3 -0
- package/dist/events/decorators/index.d.ts.map +1 -0
- package/dist/events/decorators/index.js +3 -0
- package/dist/events/decorators/index.js.map +1 -0
- package/dist/events/decorators/listener.decorator.d.ts +24 -0
- package/dist/events/decorators/listener.decorator.d.ts.map +1 -0
- package/dist/events/decorators/listener.decorator.js +33 -0
- package/dist/events/decorators/listener.decorator.js.map +1 -0
- package/dist/events/decorators/on.decorator.d.ts +28 -0
- package/dist/events/decorators/on.decorator.d.ts.map +1 -0
- package/dist/events/decorators/on.decorator.js +41 -0
- package/dist/events/decorators/on.decorator.js.map +1 -0
- package/dist/events/event-registry.d.ts +26 -0
- package/dist/events/event-registry.d.ts.map +1 -0
- package/dist/events/event-registry.js +156 -0
- package/dist/events/event-registry.js.map +1 -0
- package/dist/events/index.d.ts +5 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +4 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/types.d.ts +116 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +23 -0
- package/dist/events/types.js.map +1 -0
- package/dist/i18n/messages/en/errors.d.ts +2 -0
- package/dist/i18n/messages/en/errors.d.ts.map +1 -1
- package/dist/i18n/messages/en/errors.js +2 -0
- package/dist/i18n/messages/en/errors.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/module/module-registry.d.ts +9 -0
- package/dist/module/module-registry.d.ts.map +1 -1
- package/dist/module/module-registry.js +21 -0
- package/dist/module/module-registry.js.map +1 -1
- package/dist/stratal.d.ts +48 -0
- package/dist/stratal.d.ts.map +1 -0
- package/dist/stratal.js +90 -0
- package/dist/stratal.js.map +1 -0
- package/package.json +8 -8
- package/CHANGELOG.md +0 -115
- package/dist/worker/index.d.ts +0 -2
- package/dist/worker/index.d.ts.map +0 -1
- package/dist/worker/index.js +0 -2
- package/dist/worker/index.js.map +0 -1
- package/dist/worker/stratal-worker.d.ts +0 -49
- package/dist/worker/stratal-worker.d.ts.map +0 -1
- package/dist/worker/stratal-worker.js +0 -89
- package/dist/worker/stratal-worker.js.map +0 -1
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
import { inject } from 'tsyringe';
|
|
14
|
+
import { Transient } from '../di/decorators';
|
|
15
|
+
import { DI_TOKENS } from '../di/tokens';
|
|
16
|
+
import { LOGGER_TOKENS } from '../logger';
|
|
17
|
+
let EventRegistry = class EventRegistry {
|
|
18
|
+
ctx;
|
|
19
|
+
logger;
|
|
20
|
+
handlers = new Map();
|
|
21
|
+
constructor(ctx, logger) {
|
|
22
|
+
this.ctx = ctx;
|
|
23
|
+
this.logger = logger;
|
|
24
|
+
}
|
|
25
|
+
on(event, handler, options) {
|
|
26
|
+
const registered = {
|
|
27
|
+
handler: handler,
|
|
28
|
+
priority: options?.priority ?? 0,
|
|
29
|
+
blocking: options?.blocking
|
|
30
|
+
};
|
|
31
|
+
const existingHandlers = this.handlers.get(event) ?? [];
|
|
32
|
+
existingHandlers.push(registered);
|
|
33
|
+
this.handlers.set(event, existingHandlers);
|
|
34
|
+
this.logger.debug('Event handler registered', {
|
|
35
|
+
event,
|
|
36
|
+
priority: registered.priority,
|
|
37
|
+
blocking: registered.blocking
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
async emit(event, context) {
|
|
41
|
+
// Build full context with caller-provided fields
|
|
42
|
+
const fullContext = {
|
|
43
|
+
...context
|
|
44
|
+
};
|
|
45
|
+
// Find matching handlers using pattern matching
|
|
46
|
+
const matchingHandlers = this.findMatchingHandlers(event);
|
|
47
|
+
if (matchingHandlers.length === 0) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
// Sort by priority (higher first)
|
|
51
|
+
const sortedHandlers = [...matchingHandlers].sort((a, b) => b.priority - a.priority);
|
|
52
|
+
// Determine if we should use waitUntil
|
|
53
|
+
const shouldUseWaitUntil = this.shouldUseWaitUntil(event, sortedHandlers);
|
|
54
|
+
// Execute handlers
|
|
55
|
+
const promises = sortedHandlers.map((registered) => this.executeHandler(registered.handler, fullContext, event));
|
|
56
|
+
if (shouldUseWaitUntil) {
|
|
57
|
+
// Non-blocking: use ctx.waitUntil
|
|
58
|
+
this.ctx.waitUntil(Promise.all(promises));
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
// Blocking: await all handlers
|
|
62
|
+
await Promise.all(promises);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
off(event, handler) {
|
|
66
|
+
const existingHandlers = this.handlers.get(event);
|
|
67
|
+
if (!existingHandlers)
|
|
68
|
+
return;
|
|
69
|
+
const filtered = existingHandlers.filter((h) => h.handler !== handler);
|
|
70
|
+
if (filtered.length > 0) {
|
|
71
|
+
this.handlers.set(event, filtered);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
this.handlers.delete(event);
|
|
75
|
+
}
|
|
76
|
+
this.logger.debug('Event handler unregistered', { event });
|
|
77
|
+
}
|
|
78
|
+
once(event, handler, options) {
|
|
79
|
+
const wrappedHandler = (async (context) => {
|
|
80
|
+
await handler(context);
|
|
81
|
+
this.off(event, wrappedHandler);
|
|
82
|
+
});
|
|
83
|
+
this.on(event, wrappedHandler, options);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Find all handlers matching the event using pattern matching.
|
|
87
|
+
* Order: exact match -> model wildcard -> operation wildcard -> global wildcard
|
|
88
|
+
*/
|
|
89
|
+
findMatchingHandlers(event) {
|
|
90
|
+
const handlers = [];
|
|
91
|
+
const parts = event.split('.');
|
|
92
|
+
if (parts.length === 3) {
|
|
93
|
+
// Database event: "phase.model.operation"
|
|
94
|
+
const [phase, model, operation] = parts;
|
|
95
|
+
// 1. Exact match: "after.user.create"
|
|
96
|
+
handlers.push(...(this.handlers.get(event) ?? []));
|
|
97
|
+
// 2. Model wildcard: "after.user"
|
|
98
|
+
handlers.push(...(this.handlers.get(`${phase}.${model}`) ?? []));
|
|
99
|
+
// 3. Operation wildcard: "after.create"
|
|
100
|
+
handlers.push(...(this.handlers.get(`${phase}.${operation}`) ?? []));
|
|
101
|
+
// 4. Global wildcard: "after"
|
|
102
|
+
handlers.push(...(this.handlers.get(phase) ?? []));
|
|
103
|
+
}
|
|
104
|
+
else if (parts.length === 2) {
|
|
105
|
+
// Could be wildcard like "after.user" or custom event like "auth.verified"
|
|
106
|
+
handlers.push(...(this.handlers.get(event) ?? []));
|
|
107
|
+
if (parts[0] === 'before' || parts[0] === 'after') {
|
|
108
|
+
handlers.push(...(this.handlers.get(parts[0]) ?? []));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
handlers.push(...(this.handlers.get(event) ?? []));
|
|
113
|
+
}
|
|
114
|
+
return handlers;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Determine if we should use ctx.waitUntil (non-blocking) or await (blocking)
|
|
118
|
+
*/
|
|
119
|
+
shouldUseWaitUntil(event, handlers) {
|
|
120
|
+
const hasBlockingHandler = handlers.some((h) => h.blocking === true);
|
|
121
|
+
if (hasBlockingHandler)
|
|
122
|
+
return false;
|
|
123
|
+
const hasNonBlockingHandler = handlers.some((h) => h.blocking === false);
|
|
124
|
+
if (hasNonBlockingHandler)
|
|
125
|
+
return true;
|
|
126
|
+
const phase = event.split('.')[0];
|
|
127
|
+
if (phase === 'before')
|
|
128
|
+
return false;
|
|
129
|
+
if (phase === 'after')
|
|
130
|
+
return true;
|
|
131
|
+
return false; // Custom events block by default
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Execute a single handler with error isolation
|
|
135
|
+
*/
|
|
136
|
+
async executeHandler(handler, context, event) {
|
|
137
|
+
try {
|
|
138
|
+
await handler(context);
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
this.logger.error('Event handler error', {
|
|
142
|
+
event,
|
|
143
|
+
error: error instanceof Error ? error.message : String(error),
|
|
144
|
+
stack: error instanceof Error ? error.stack : undefined,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
EventRegistry = __decorate([
|
|
150
|
+
Transient(),
|
|
151
|
+
__param(0, inject(DI_TOKENS.ExecutionContext)),
|
|
152
|
+
__param(1, inject(LOGGER_TOKENS.LoggerService)),
|
|
153
|
+
__metadata("design:paramtypes", [Object, Function])
|
|
154
|
+
], EventRegistry);
|
|
155
|
+
export { EventRegistry };
|
|
156
|
+
//# sourceMappingURL=event-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-registry.js","sourceRoot":"","sources":["../../src/events/event-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { LISTENER_METADATA_KEYS } from './constants';
|
|
2
|
+
export { Listener, isListener, On, getListenerHandlers } from './decorators';
|
|
3
|
+
export { EventRegistry } from './event-registry';
|
|
4
|
+
export type { CustomEventContext, CustomEventRegistry, EventContext, EventHandler, EventName, EventOptions, IEventRegistry, ListenerHandlerMetadata, RegisteredHandler, } from './types';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core Event System Types
|
|
3
|
+
*
|
|
4
|
+
* Provides a generic, augmentable event system for Stratal.
|
|
5
|
+
* Core owns the base types; framework's database module augments
|
|
6
|
+
* `CustomEventRegistry` with richly typed database event contexts.
|
|
7
|
+
*
|
|
8
|
+
* ## Custom Events
|
|
9
|
+
*
|
|
10
|
+
* Custom application events can be added via module augmentation:
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* declare module 'stratal/events' {
|
|
15
|
+
* interface CustomEventRegistry {
|
|
16
|
+
* 'user.verified': CustomEventContext<{ userId: string; email: string }>
|
|
17
|
+
* 'email.sent': CustomEventContext<{ to: string; subject: string }>
|
|
18
|
+
* }
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Augmentable event registry.
|
|
24
|
+
* Maps event name -> full context type.
|
|
25
|
+
*
|
|
26
|
+
* Framework's database module augments this with `DatabaseEvents<K>`.
|
|
27
|
+
* Users augment for custom events using `CustomEventContext<TData>`.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* declare module 'stratal/events' {
|
|
32
|
+
* interface CustomEventRegistry {
|
|
33
|
+
* 'user.verified': CustomEventContext<{ userId: string; email: string }>
|
|
34
|
+
* }
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export interface CustomEventRegistry {
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* All valid event names.
|
|
42
|
+
* Falls back to `string` when no events are registered in CustomEventRegistry.
|
|
43
|
+
*/
|
|
44
|
+
export type EventName = keyof CustomEventRegistry extends never ? string : Extract<keyof CustomEventRegistry, string>;
|
|
45
|
+
/**
|
|
46
|
+
* Helper for user-defined custom events.
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* declare module 'stratal/events' {
|
|
51
|
+
* interface CustomEventRegistry {
|
|
52
|
+
* 'user.verified': CustomEventContext<{ userId: string; email: string }>
|
|
53
|
+
* }
|
|
54
|
+
* }
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export interface CustomEventContext<TData = unknown> {
|
|
58
|
+
data: TData;
|
|
59
|
+
metadata?: Record<string, unknown>;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Event context — looks up the full context type from CustomEventRegistry.
|
|
63
|
+
* For database events, this includes typed data and result from ZenStack schema.
|
|
64
|
+
* Falls back to a generic context shape for unregistered events.
|
|
65
|
+
*/
|
|
66
|
+
export type EventContext<E extends EventName = EventName> = E extends keyof CustomEventRegistry ? CustomEventRegistry[E] : {
|
|
67
|
+
data?: unknown;
|
|
68
|
+
result?: unknown;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Options for registering event handlers
|
|
72
|
+
*/
|
|
73
|
+
export interface EventOptions {
|
|
74
|
+
/** Handler execution priority. Higher values execute first. @default 0 */
|
|
75
|
+
priority?: number;
|
|
76
|
+
/**
|
|
77
|
+
* Whether to force blocking (await) vs non-blocking (waitUntil) behavior.
|
|
78
|
+
*
|
|
79
|
+
* Default behavior:
|
|
80
|
+
* - `before.*` events: Always blocking (true)
|
|
81
|
+
* - `after.*` events: Non-blocking via waitUntil (false)
|
|
82
|
+
* - Custom events: Blocking (true)
|
|
83
|
+
*/
|
|
84
|
+
blocking?: boolean;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Event handler function signature with typed context
|
|
88
|
+
*/
|
|
89
|
+
export type EventHandler<E extends EventName = EventName> = (context: EventContext<E>) => Promise<void> | void;
|
|
90
|
+
/**
|
|
91
|
+
* Internal structure for storing registered handlers
|
|
92
|
+
* @internal
|
|
93
|
+
*/
|
|
94
|
+
export interface RegisteredHandler {
|
|
95
|
+
handler: EventHandler;
|
|
96
|
+
priority: number;
|
|
97
|
+
blocking?: boolean;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* EventRegistry interface — main API for event system
|
|
101
|
+
*/
|
|
102
|
+
export interface IEventRegistry {
|
|
103
|
+
on<E extends EventName>(event: E, handler: EventHandler<E>, options?: EventOptions): void;
|
|
104
|
+
emit<E extends EventName>(event: E, context?: Partial<EventContext<E>>): Promise<void>;
|
|
105
|
+
off<E extends EventName>(event: E, handler: EventHandler<E>): void;
|
|
106
|
+
once<E extends EventName>(event: E, handler: EventHandler<E>, options?: EventOptions): void;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Metadata stored by `@On()` decorator for each handler method
|
|
110
|
+
*/
|
|
111
|
+
export interface ListenerHandlerMetadata {
|
|
112
|
+
methodName: string;
|
|
113
|
+
event: string;
|
|
114
|
+
options?: EventOptions;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/events/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,mBAAmB;CAAI;AAExC;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,mBAAmB,SAAS,KAAK,GAC3D,MAAM,GACN,OAAO,CAAC,MAAM,mBAAmB,EAAE,MAAM,CAAC,CAAA;AAM9C;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,kBAAkB,CAAC,KAAK,GAAG,OAAO;IACjD,IAAI,EAAE,KAAK,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED;;;;GAIG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,IACtD,CAAC,SAAS,MAAM,mBAAmB,GACjC,mBAAmB,CAAC,CAAC,CAAC,GACtB;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAMxC;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,IAAI,CAC1D,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,KACrB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;AAEzB;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,YAAY,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,CAAC,SAAS,SAAS,EACpB,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EACxB,OAAO,CAAC,EAAE,YAAY,GACrB,IAAI,CAAA;IAEP,IAAI,CAAC,CAAC,SAAS,SAAS,EACtB,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC,CAAA;IAEhB,GAAG,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IAElE,IAAI,CAAC,CAAC,SAAS,SAAS,EACtB,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EACxB,OAAO,CAAC,EAAE,YAAY,GACrB,IAAI,CAAA;CACR;AAMD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,YAAY,CAAA;CACvB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core Event System Types
|
|
3
|
+
*
|
|
4
|
+
* Provides a generic, augmentable event system for Stratal.
|
|
5
|
+
* Core owns the base types; framework's database module augments
|
|
6
|
+
* `CustomEventRegistry` with richly typed database event contexts.
|
|
7
|
+
*
|
|
8
|
+
* ## Custom Events
|
|
9
|
+
*
|
|
10
|
+
* Custom application events can be added via module augmentation:
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* declare module 'stratal/events' {
|
|
15
|
+
* interface CustomEventRegistry {
|
|
16
|
+
* 'user.verified': CustomEventContext<{ userId: string; email: string }>
|
|
17
|
+
* 'email.sent': CustomEventContext<{ to: string; subject: string }>
|
|
18
|
+
* }
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/events/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG"}
|
|
@@ -87,7 +87,9 @@ export declare const errors: {
|
|
|
87
87
|
readonly accountAlreadyExists: "An account with this email already exists";
|
|
88
88
|
readonly failedToCreateUser: "Failed to create user account. Please try again.";
|
|
89
89
|
readonly failedToCreateSession: "Failed to create session. Please try again.";
|
|
90
|
+
readonly failedToGetSession: "Failed to retrieve session. Please try again.";
|
|
90
91
|
readonly failedToUpdateUser: "Failed to update user information. Please try again.";
|
|
92
|
+
readonly failedToGetUserInfo: "Failed to retrieve user information. Please try again.";
|
|
91
93
|
readonly socialAccountLinked: "This social account is already linked to another user";
|
|
92
94
|
readonly providerNotFound: "Authentication provider not found";
|
|
93
95
|
readonly userEmailNotFound: "User email address not found";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/i18n/messages/en/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/i18n/messages/en/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqIT,CAAA"}
|
|
@@ -102,7 +102,9 @@ export const errors = {
|
|
|
102
102
|
accountAlreadyExists: 'An account with this email already exists',
|
|
103
103
|
failedToCreateUser: 'Failed to create user account. Please try again.',
|
|
104
104
|
failedToCreateSession: 'Failed to create session. Please try again.',
|
|
105
|
+
failedToGetSession: 'Failed to retrieve session. Please try again.',
|
|
105
106
|
failedToUpdateUser: 'Failed to update user information. Please try again.',
|
|
107
|
+
failedToGetUserInfo: 'Failed to retrieve user information. Please try again.',
|
|
106
108
|
socialAccountLinked: 'This social account is already linked to another user',
|
|
107
109
|
providerNotFound: 'Authentication provider not found',
|
|
108
110
|
userEmailNotFound: 'User email address not found',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/i18n/messages/en/errors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/i18n/messages/en/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,iBAAiB;IACjB,aAAa,EAAE,4BAA4B;IAC3C,QAAQ,EAAE,oBAAoB;IAC9B,YAAY,EAAE,+BAA+B;IAC7C,SAAS,EAAE,eAAe;IAE1B,gBAAgB;IAChB,uBAAuB,EAAE,2EAA2E;IACpG,mBAAmB,EAAE,mEAAmE;IACxF,aAAa,EAAE,kCAAkC;IACjD,iBAAiB,EAAE,oBAAoB;IACvC,wBAAwB,EAAE,mDAAmD;IAC7E,sBAAsB,EAAE,0DAA0D;IAElF,iBAAiB;IACjB,qBAAqB,EAAE,kCAAkC;IACzD,oBAAoB,EAAE,2BAA2B;IACjD,uBAAuB,EAAE,iDAAiD;IAC1E,8BAA8B,EAAE,4CAA4C;IAC5E,+BAA+B,EAAE,2IAA2I;IAC5K,0BAA0B,EAAE,oIAAoI;IAEhK,uBAAuB;IACvB,oBAAoB,EAAE,gDAAgD;IAEtE,gBAAgB;IAChB,uBAAuB,EAAE,2CAA2C;IACpE,wBAAwB,EAAE,kEAAkE;IAC5F,wBAAwB,EAAE,uCAAuC;IACjE,qBAAqB,EAAE,mDAAmD;IAE1E,kBAAkB;IAClB,eAAe,EAAE,yBAAyB;IAC1C,sBAAsB,EAAE,8BAA8B;IACtD,wBAAwB,EAAE,uBAAuB;IACjD,4BAA4B,EAAE,0BAA0B;IACxD,wBAAwB,EAAE,+BAA+B;IACzD,eAAe,EAAE,wBAAwB;IACzC,sBAAsB,EAAE,2BAA2B;IACnD,0BAA0B,EAAE,+BAA+B;IAC3D,2BAA2B,EAAE,kCAAkC;IAC/D,wBAAwB,EAAE,oCAAoC;IAC9D,qBAAqB,EAAE,oDAAoD;IAC3E,sBAAsB,EAAE,kDAAkD;IAC1E,oBAAoB,EAAE,4CAA4C;IAClE,qBAAqB,EAAE,kCAAkC;IAEzD,eAAe;IACf,oBAAoB,EAAE,oDAAoD;IAC1E,yBAAyB,EAAE,iFAAiF;IAE5G,cAAc;IACd,mBAAmB,EAAE,8DAA8D;IAEnF,cAAc;IACd,kBAAkB,EAAE,2EAA2E;IAC/F,kBAAkB,EAAE,0DAA0D;IAE9E,2BAA2B;IAC3B,gBAAgB,EAAE,0BAA0B;IAE5C,iBAAiB;IACjB,iBAAiB,EAAE,sCAAsC;IACzD,wBAAwB,EAAE,mDAAmD;IAE7E,eAAe;IACf,KAAK,EAAE;QACL,mBAAmB,EAAE,+EAA+E;QACpG,wBAAwB,EAAE,gEAAgE;QAC1F,eAAe,EAAE,+EAA+E;QAChG,oBAAoB,EAAE,wDAAwD;QAC9E,eAAe,EAAE,kBAAkB;QACnC,oBAAoB,EAAE,2EAA2E;KAClG;IAED,iBAAiB;IACjB,OAAO,EAAE;QACP,YAAY,EAAE,qCAAqC;QACnD,WAAW,EAAE,yCAAyC;QACtD,eAAe,EAAE,uCAAuC;QACxD,YAAY,EAAE,4DAA4D;QAC1E,yBAAyB,EAAE,gDAAgD;QAC3E,iBAAiB,EAAE,iCAAiC;QACpD,oBAAoB,EAAE,gDAAgD;QACtE,mBAAmB,EAAE,8CAA8C;KACpE;IAED,eAAe;IACf,KAAK,EAAE;QACL,SAAS,EAAE,qDAAqD;QAChE,SAAS,EAAE,gDAAgD;QAC3D,YAAY,EAAE,mDAAmD;QACjE,UAAU,EAAE,2BAA2B;KACxC;IAED,wBAAwB;IACxB,IAAI,EAAE;QACJ,aAAa,EAAE,gCAAgC;QAC/C,YAAY,EAAE,uCAAuC;QACrD,kBAAkB,EAAE,wCAAwC;QAC5D,YAAY,EAAE,gDAAgD;QAC9D,kBAAkB,EAAE,2BAA2B;QAC/C,eAAe,EAAE,kBAAkB;QACnC,YAAY,EAAE,uBAAuB;QACrC,cAAc,EAAE,iDAAiD;QACjE,gBAAgB,EAAE,oDAAoD;QACtE,gBAAgB,EAAE,kDAAkD;QACpE,eAAe,EAAE,iDAAiD;QAClE,oBAAoB,EAAE,2CAA2C;QACjE,kBAAkB,EAAE,kDAAkD;QACtE,qBAAqB,EAAE,6CAA6C;QACpE,kBAAkB,EAAE,+CAA+C;QACnE,kBAAkB,EAAE,sDAAsD;QAC1E,mBAAmB,EAAE,wDAAwD;QAC7E,mBAAmB,EAAE,uDAAuD;QAC5E,gBAAgB,EAAE,mCAAmC;QACrD,iBAAiB,EAAE,8BAA8B;QACjD,eAAe,EAAE,mBAAmB;QACpC,yBAAyB,EAAE,8BAA8B;QACzD,uBAAuB,EAAE,iCAAiC;QAC1D,sBAAsB,EAAE,iCAAiC;QACzD,oBAAoB,EAAE,8CAA8C;QACpE,YAAY,EAAE,8EAA8E;KAC7F;IAED,mBAAmB;IACnB,SAAS,EAAE;QACT,MAAM,EAAE,2CAA2C;QACnD,gBAAgB,EAAE,sFAAsF;QACxG,cAAc,EAAE,oDAAoD;QACpE,QAAQ,EAAE,qCAAqC;KAChD;CACO,CAAA"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -33,6 +33,7 @@ export declare class ModuleRegistry {
|
|
|
33
33
|
private allControllers;
|
|
34
34
|
private allConsumers;
|
|
35
35
|
private allJobs;
|
|
36
|
+
private allListeners;
|
|
36
37
|
private allMiddlewareConfigs;
|
|
37
38
|
constructor(container: Container, logger: LoggerService);
|
|
38
39
|
/**
|
|
@@ -61,6 +62,10 @@ export declare class ModuleRegistry {
|
|
|
61
62
|
* Get all jobs registered from all modules
|
|
62
63
|
*/
|
|
63
64
|
getAllJobs(): Constructor[];
|
|
65
|
+
/**
|
|
66
|
+
* Get all listeners registered from all modules
|
|
67
|
+
*/
|
|
68
|
+
getAllListeners(): Constructor[];
|
|
64
69
|
/**
|
|
65
70
|
* Get all middleware configurations from all modules
|
|
66
71
|
*/
|
|
@@ -97,5 +102,9 @@ export declare class ModuleRegistry {
|
|
|
97
102
|
* Register a single provider in the container
|
|
98
103
|
*/
|
|
99
104
|
private registerProvider;
|
|
105
|
+
/**
|
|
106
|
+
* Check if a class is a `@Listener()` and collect it for auto-wiring
|
|
107
|
+
*/
|
|
108
|
+
private collectIfListener;
|
|
100
109
|
}
|
|
101
110
|
//# sourceMappingURL=module-registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-registry.d.ts","sourceRoot":"","sources":["../../src/module/module-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"module-registry.d.ts","sourceRoot":"","sources":["../../src/module/module-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAGhD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAEL,KAAK,qBAAqB,EAE3B,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAE3C,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EAMZ,MAAM,SAAS,CAAA;AAShB;;;;;;;;;;;GAWG;AACH,qBAAa,cAAc;IAavB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAbzB,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,iBAAiB,CAAyB;IAClD,OAAO,CAAC,WAAW,CAAQ;IAG3B,OAAO,CAAC,cAAc,CAAoB;IAC1C,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,oBAAoB,CAA8B;gBAGvC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,aAAa;IAGxC;;;;OAIG;IACH,QAAQ,CAAC,eAAe,EAAE,WAAW,GAAG,aAAa,GAAG,IAAI;IAsD5D;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,CAAC,WAAW,GAAG,aAAa,CAAC,EAAE,GAAG,IAAI;IAM3D;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoCjC;;OAEG;IACH,iBAAiB,IAAI,WAAW,EAAE;IAIlC;;OAEG;IACH,eAAe,IAAI,WAAW,EAAE;IAIhC;;OAEG;IACH,UAAU,IAAI,WAAW,EAAE;IAI3B;;OAEG;IACH,eAAe,IAAI,WAAW,EAAE;IAIhC;;OAEG;IACH,uBAAuB,IAAI,qBAAqB,EAAE;IAIlD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB/B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IASjC;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IA4BrB;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA6BxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAQ1B"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { instancePerContainerCachingFactory } from 'tsyringe';
|
|
11
11
|
import { Scope } from '../di/types';
|
|
12
|
+
import { isListener } from '../events';
|
|
12
13
|
import { createMiddlewareConsumer, } from '../middleware';
|
|
13
14
|
import { getModuleOptions } from './module.decorator';
|
|
14
15
|
/**
|
|
@@ -33,6 +34,7 @@ export class ModuleRegistry {
|
|
|
33
34
|
allControllers = [];
|
|
34
35
|
allConsumers = [];
|
|
35
36
|
allJobs = [];
|
|
37
|
+
allListeners = [];
|
|
36
38
|
allMiddlewareConfigs = [];
|
|
37
39
|
constructor(container, logger) {
|
|
38
40
|
this.container = container;
|
|
@@ -148,6 +150,12 @@ export class ModuleRegistry {
|
|
|
148
150
|
getAllJobs() {
|
|
149
151
|
return this.allJobs;
|
|
150
152
|
}
|
|
153
|
+
/**
|
|
154
|
+
* Get all listeners registered from all modules
|
|
155
|
+
*/
|
|
156
|
+
getAllListeners() {
|
|
157
|
+
return this.allListeners;
|
|
158
|
+
}
|
|
151
159
|
/**
|
|
152
160
|
* Get all middleware configurations from all modules
|
|
153
161
|
*/
|
|
@@ -248,10 +256,12 @@ export class ModuleRegistry {
|
|
|
248
256
|
if (typeof provider === 'function') {
|
|
249
257
|
// Class-only provider - transient by default
|
|
250
258
|
this.container.register(provider);
|
|
259
|
+
this.collectIfListener(provider);
|
|
251
260
|
}
|
|
252
261
|
else if ('useClass' in provider) {
|
|
253
262
|
// ClassProvider with optional scope
|
|
254
263
|
this.container.register(provider.provide, provider.useClass, provider.scope);
|
|
264
|
+
this.collectIfListener(provider.useClass);
|
|
255
265
|
}
|
|
256
266
|
else if ('useValue' in provider) {
|
|
257
267
|
// ValueProvider - no scope needed (values are inherently singleton)
|
|
@@ -274,5 +284,16 @@ export class ModuleRegistry {
|
|
|
274
284
|
this.container.registerExisting(provider.provide, provider.useExisting);
|
|
275
285
|
}
|
|
276
286
|
}
|
|
287
|
+
/**
|
|
288
|
+
* Check if a class is a `@Listener()` and collect it for auto-wiring
|
|
289
|
+
*/
|
|
290
|
+
collectIfListener(providerClass) {
|
|
291
|
+
if (isListener(providerClass)) {
|
|
292
|
+
// Re-register as singleton so the same instance is used across all event registrations
|
|
293
|
+
this.container.register(providerClass, providerClass, Scope.Singleton);
|
|
294
|
+
this.allListeners.push(providerClass);
|
|
295
|
+
this.logger.debug(`Collected listener: ${providerClass.name}`);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
277
298
|
}
|
|
278
299
|
//# sourceMappingURL=module-registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-registry.js","sourceRoot":"","sources":["../../src/module/module-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,kCAAkC,EAAE,MAAM,UAAU,CAAA;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"module-registry.js","sourceRoot":"","sources":["../../src/module/module-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { Application, type ApplicationConfig } from './application';
|
|
3
|
+
import type { StratalEnv } from './env';
|
|
4
|
+
/**
|
|
5
|
+
* Stratal — Hono-style entry point for Cloudflare Workers.
|
|
6
|
+
*
|
|
7
|
+
* Lazily initializes the Application on the first handler call and caches it
|
|
8
|
+
* for all subsequent invocations. A concurrent-init guard prevents double
|
|
9
|
+
* initialization from simultaneous requests.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { Stratal } from 'stratal'
|
|
14
|
+
* import { AppModule } from './app.module'
|
|
15
|
+
*
|
|
16
|
+
* export default new Stratal({ module: AppModule })
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare class Stratal<Env extends StratalEnv = StratalEnv> {
|
|
20
|
+
private readonly config;
|
|
21
|
+
private app;
|
|
22
|
+
private initPromise;
|
|
23
|
+
constructor(config: ApplicationConfig);
|
|
24
|
+
/**
|
|
25
|
+
* Handle HTTP requests via RouterService.
|
|
26
|
+
*/
|
|
27
|
+
fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response>;
|
|
28
|
+
/**
|
|
29
|
+
* Handle queue batches.
|
|
30
|
+
*/
|
|
31
|
+
queue(batch: MessageBatch, env: Env, ctx: ExecutionContext): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Handle scheduled cron triggers.
|
|
34
|
+
*/
|
|
35
|
+
scheduled(controller: ScheduledController, env: Env, ctx: ExecutionContext): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Get or lazily initialize the Application singleton.
|
|
38
|
+
* The first call's `env`/`ctx` are used for initialization;
|
|
39
|
+
* subsequent calls return the cached instance.
|
|
40
|
+
*/
|
|
41
|
+
getApplication(env: Env, ctx: ExecutionContext): Promise<Application>;
|
|
42
|
+
/**
|
|
43
|
+
* Shut down the application and release all resources.
|
|
44
|
+
*/
|
|
45
|
+
shutdown(): Promise<void>;
|
|
46
|
+
private initializeApp;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=stratal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stratal.d.ts","sourceRoot":"","sources":["../src/stratal.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAA;AAEzB,OAAO,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAGvC;;;;;;;;;;;;;;GAcG;AACH,qBAAa,OAAO,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU;IAI1C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,GAAG,CAA2B;IACtC,OAAO,CAAC,WAAW,CAAoC;gBAE1B,MAAM,EAAE,iBAAiB;IAMtD;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMjF;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhF;;OAEG;IACG,SAAS,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhG;;;;OAIG;IACG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAsB3E;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YAOjB,aAAa;CAK5B"}
|