stratal 0.0.2 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/CHANGELOG.md +121 -0
  2. package/dist/application.d.ts +6 -0
  3. package/dist/application.d.ts.map +1 -1
  4. package/dist/application.js +27 -2
  5. package/dist/application.js.map +1 -1
  6. package/dist/di/container.d.ts +2 -4
  7. package/dist/di/container.d.ts.map +1 -1
  8. package/dist/di/container.js +4 -14
  9. package/dist/di/container.js.map +1 -1
  10. package/dist/di/decorators/inject-param.decorator.d.ts.map +1 -1
  11. package/dist/di/decorators/inject-param.decorator.js +1 -1
  12. package/dist/di/decorators/inject-param.decorator.js.map +1 -1
  13. package/dist/di/tokens.d.ts +0 -1
  14. package/dist/di/tokens.d.ts.map +1 -1
  15. package/dist/di/tokens.js +0 -1
  16. package/dist/di/tokens.js.map +1 -1
  17. package/dist/errors/application-error.d.ts +6 -0
  18. package/dist/errors/application-error.d.ts.map +1 -1
  19. package/dist/errors/application-error.js +8 -1
  20. package/dist/errors/application-error.js.map +1 -1
  21. package/dist/errors/global-error-handler.d.ts.map +1 -1
  22. package/dist/errors/global-error-handler.js +4 -6
  23. package/dist/errors/global-error-handler.js.map +1 -1
  24. package/dist/events/constants.d.ts +11 -0
  25. package/dist/events/constants.d.ts.map +1 -0
  26. package/dist/events/constants.js +11 -0
  27. package/dist/events/constants.js.map +1 -0
  28. package/dist/events/decorators/index.d.ts +3 -0
  29. package/dist/events/decorators/index.d.ts.map +1 -0
  30. package/dist/events/decorators/index.js +3 -0
  31. package/dist/events/decorators/index.js.map +1 -0
  32. package/dist/events/decorators/listener.decorator.d.ts +24 -0
  33. package/dist/events/decorators/listener.decorator.d.ts.map +1 -0
  34. package/dist/events/decorators/listener.decorator.js +33 -0
  35. package/dist/events/decorators/listener.decorator.js.map +1 -0
  36. package/dist/events/decorators/on.decorator.d.ts +28 -0
  37. package/dist/events/decorators/on.decorator.d.ts.map +1 -0
  38. package/dist/events/decorators/on.decorator.js +41 -0
  39. package/dist/events/decorators/on.decorator.js.map +1 -0
  40. package/dist/events/event-registry.d.ts +26 -0
  41. package/dist/events/event-registry.d.ts.map +1 -0
  42. package/dist/events/event-registry.js +156 -0
  43. package/dist/events/event-registry.js.map +1 -0
  44. package/dist/events/index.d.ts +5 -0
  45. package/dist/events/index.d.ts.map +1 -0
  46. package/dist/events/index.js +4 -0
  47. package/dist/events/index.js.map +1 -0
  48. package/dist/events/types.d.ts +116 -0
  49. package/dist/events/types.d.ts.map +1 -0
  50. package/dist/events/types.js +23 -0
  51. package/dist/events/types.js.map +1 -0
  52. package/dist/guards/types.d.ts.map +1 -1
  53. package/dist/guards/types.js +1 -1
  54. package/dist/guards/types.js.map +1 -1
  55. package/dist/i18n/messages/en/errors.d.ts +2 -0
  56. package/dist/i18n/messages/en/errors.d.ts.map +1 -1
  57. package/dist/i18n/messages/en/errors.js +2 -0
  58. package/dist/i18n/messages/en/errors.js.map +1 -1
  59. package/dist/i18n/services/i18n.service.d.ts +1 -13
  60. package/dist/i18n/services/i18n.service.d.ts.map +1 -1
  61. package/dist/i18n/services/i18n.service.js +3 -39
  62. package/dist/i18n/services/i18n.service.js.map +1 -1
  63. package/dist/i18n/services/message-loader.service.d.ts +18 -0
  64. package/dist/i18n/services/message-loader.service.d.ts.map +1 -1
  65. package/dist/i18n/services/message-loader.service.js +56 -2
  66. package/dist/i18n/services/message-loader.service.js.map +1 -1
  67. package/dist/module/module-registry.d.ts +9 -0
  68. package/dist/module/module-registry.d.ts.map +1 -1
  69. package/dist/module/module-registry.js +21 -0
  70. package/dist/module/module-registry.js.map +1 -1
  71. package/dist/module/module.decorator.d.ts.map +1 -1
  72. package/dist/module/module.decorator.js +1 -1
  73. package/dist/module/module.decorator.js.map +1 -1
  74. package/dist/router/constants.js +6 -6
  75. package/dist/router/constants.js.map +1 -1
  76. package/package.json +10 -9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listener.decorator.js","sourceRoot":"","sources":["../../../src/events/decorators/listener.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAErD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,UAAiC,MAAS;QAC/C,SAAS,EAAE,CAAC,MAAM,CAAC,CAAA;QACnB,OAAO,CAAC,cAAc,CAAC,sBAAsB,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QACxE,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAAmB;IAC5C,OAAO,OAAO,CAAC,WAAW,CAAC,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,IAAI,CAAA;AACjF,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { EventName, EventOptions, ListenerHandlerMetadata } from '../types';
2
+ /**
3
+ * Register a method as an event handler within a `@Listener()` class.
4
+ *
5
+ * Accumulates handler metadata on the class so the framework can
6
+ * auto-wire handlers with the EventRegistry at bootstrap time.
7
+ *
8
+ * @param event - Event name to listen for (fully typed with autocomplete)
9
+ * @param options - Optional handler options (priority, blocking)
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * @Listener()
14
+ * export class AuditListener {
15
+ * @On('after.User.create')
16
+ * async logCreate(context: EventContext<'after.User.create'>) { ... }
17
+ *
18
+ * @On('after.User.delete', { priority: 10 })
19
+ * async logDelete(context: EventContext<'after.User.delete'>) { ... }
20
+ * }
21
+ * ```
22
+ */
23
+ export declare function On<E extends EventName>(event: E, options?: EventOptions): (target: object, propertyKey: string, _descriptor: PropertyDescriptor) => void;
24
+ /**
25
+ * Get all `@On()` handler metadata from a listener class
26
+ */
27
+ export declare function getListenerHandlers(target: object): ListenerHandlerMetadata[];
28
+ //# sourceMappingURL=on.decorator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"on.decorator.d.ts","sourceRoot":"","sources":["../../../src/events/decorators/on.decorator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAA;AAEhF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,EAAE,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,IAEpE,QAAQ,MAAM,EACd,aAAa,MAAM,EACnB,aAAa,kBAAkB,UAiBlC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,uBAAuB,EAAE,CAG7E"}
@@ -0,0 +1,41 @@
1
+ import { LISTENER_METADATA_KEYS } from '../constants';
2
+ /**
3
+ * Register a method as an event handler within a `@Listener()` class.
4
+ *
5
+ * Accumulates handler metadata on the class so the framework can
6
+ * auto-wire handlers with the EventRegistry at bootstrap time.
7
+ *
8
+ * @param event - Event name to listen for (fully typed with autocomplete)
9
+ * @param options - Optional handler options (priority, blocking)
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * @Listener()
14
+ * export class AuditListener {
15
+ * @On('after.User.create')
16
+ * async logCreate(context: EventContext<'after.User.create'>) { ... }
17
+ *
18
+ * @On('after.User.delete', { priority: 10 })
19
+ * async logDelete(context: EventContext<'after.User.delete'>) { ... }
20
+ * }
21
+ * ```
22
+ */
23
+ export function On(event, options) {
24
+ return function (target, propertyKey, _descriptor) {
25
+ const existingHandlers = Reflect.getMetadata(LISTENER_METADATA_KEYS.EVENT_HANDLERS, target.constructor) ?? [];
26
+ existingHandlers.push({
27
+ methodName: propertyKey,
28
+ event: event,
29
+ options,
30
+ });
31
+ Reflect.defineMetadata(LISTENER_METADATA_KEYS.EVENT_HANDLERS, existingHandlers, target.constructor);
32
+ };
33
+ }
34
+ /**
35
+ * Get all `@On()` handler metadata from a listener class
36
+ */
37
+ export function getListenerHandlers(target) {
38
+ const metadataTarget = typeof target === 'function' ? target : target.constructor;
39
+ return Reflect.getMetadata(LISTENER_METADATA_KEYS.EVENT_HANDLERS, metadataTarget) ?? [];
40
+ }
41
+ //# sourceMappingURL=on.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"on.decorator.js","sourceRoot":"","sources":["../../../src/events/decorators/on.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAGrD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,EAAE,CAAsB,KAAQ,EAAE,OAAsB;IACtE,OAAO,UACL,MAAc,EACd,WAAmB,EACnB,WAA+B;QAE/B,MAAM,gBAAgB,GACnB,OAAO,CAAC,WAAW,CAAC,sBAAsB,CAAC,cAAc,EAAE,MAAM,CAAC,WAAW,CAA2C,IAAI,EAAE,CAAA;QAEjI,gBAAgB,CAAC,IAAI,CAAC;YACpB,UAAU,EAAE,WAAW;YACvB,KAAK,EAAE,KAAe;YACtB,OAAO;SACR,CAAC,CAAA;QAEF,OAAO,CAAC,cAAc,CACpB,sBAAsB,CAAC,cAAc,EACrC,gBAAgB,EAChB,MAAM,CAAC,WAAW,CACnB,CAAA;IACH,CAAC,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,MAAM,cAAc,GAAG,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAA;IACjF,OAAQ,OAAO,CAAC,WAAW,CAAC,sBAAsB,CAAC,cAAc,EAAE,cAAc,CAA2C,IAAI,EAAE,CAAA;AACpI,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { type LoggerService } from '../logger';
2
+ import type { EventContext, EventHandler, EventName, EventOptions, IEventRegistry } from './types';
3
+ export declare class EventRegistry implements IEventRegistry {
4
+ private readonly ctx;
5
+ private readonly logger;
6
+ private handlers;
7
+ constructor(ctx: ExecutionContext, logger: LoggerService);
8
+ on<E extends EventName>(event: E, handler: EventHandler<E>, options?: EventOptions): void;
9
+ emit<E extends EventName>(event: E, context?: Partial<EventContext<E>>): Promise<void>;
10
+ off<E extends EventName>(event: E, handler: EventHandler<E>): void;
11
+ once<E extends EventName>(event: E, handler: EventHandler<E>, options?: EventOptions): void;
12
+ /**
13
+ * Find all handlers matching the event using pattern matching.
14
+ * Order: exact match -> model wildcard -> operation wildcard -> global wildcard
15
+ */
16
+ private findMatchingHandlers;
17
+ /**
18
+ * Determine if we should use ctx.waitUntil (non-blocking) or await (blocking)
19
+ */
20
+ private shouldUseWaitUntil;
21
+ /**
22
+ * Execute a single handler with error isolation
23
+ */
24
+ private executeHandler;
25
+ }
26
+ //# sourceMappingURL=event-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-registry.d.ts","sourceRoot":"","sources":["../../src/events/event-registry.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,WAAW,CAAA;AAC7D,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,cAAc,EAEf,MAAM,SAAS,CAAA;AAEhB,qBACa,aAAc,YAAW,cAAc;IAIZ,OAAO,CAAC,QAAQ,CAAC,GAAG;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJ9D,OAAO,CAAC,QAAQ,CAAyC;gBAGF,GAAG,EAAE,gBAAgB,EACpB,MAAM,EAAE,aAAa;IAG7E,EAAE,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI;IAkBnF,IAAI,CAAC,CAAC,SAAS,SAAS,EAC5B,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC;IAmChB,GAAG,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;IAclE,IAAI,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI;IAS3F;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAkC5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;YACW,cAAc;CAe7B"}
@@ -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,4 @@
1
+ export { LISTENER_METADATA_KEYS } from './constants';
2
+ export { Listener, isListener, On, getListenerHandlers } from './decorators';
3
+ export { EventRegistry } from './event-registry';
4
+ //# sourceMappingURL=index.js.map
@@ -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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/guards/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAE3C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAChE;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC,CAAA;AAEjD;;;GAGG;AACH,MAAM,MAAM,KAAK,GAAG,UAAU,GAAG,WAAW,CAAA;AAE5C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,KAAK,EAAE,CAAA;CAChB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,eAAmB,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/guards/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAE3C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAChE;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC,CAAA;AAEjD;;;GAGG;AACH,MAAM,MAAM,KAAK,GAAG,UAAU,GAAG,WAAW,CAAA;AAE5C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,KAAK,EAAE,CAAA;CAChB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,eAA+B,CAAA"}
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * Metadata key for guard storage
3
3
  */
4
- export const GUARD_METADATA_KEY = Symbol('guards');
4
+ export const GUARD_METADATA_KEY = Symbol.for('stratal:guards');
5
5
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/guards/types.ts"],"names":[],"mappings":"AA6DA;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/guards/types.ts"],"names":[],"mappings":"AA6DA;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA"}
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmIT,CAAA"}
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":"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,sDAAsD;QAC1E,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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/i18n/messages/en/errors.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  *
4
4
  * Request-scoped service for translations.
5
5
  * Injects RouterContext to access request-specific locale.
6
+ * Uses pre-built CoreContext from MessageLoaderService (singleton) for zero-cost lookups.
6
7
  */
7
8
  import { RouterContext } from '../../router';
8
9
  import type { II18nService, MessageKeys, MessageParams } from '../i18n.types';
@@ -30,7 +31,6 @@ import type { MessageLoaderService } from './message-loader.service';
30
31
  export declare class I18nService implements II18nService {
31
32
  private readonly loader;
32
33
  private readonly routerContext?;
33
- private intlContext;
34
34
  constructor(loader: MessageLoaderService, routerContext?: RouterContext | undefined);
35
35
  /**
36
36
  * Translate a message key
@@ -46,17 +46,5 @@ export declare class I18nService implements II18nService {
46
46
  * @returns Current locale code from RouterContext or default locale
47
47
  */
48
48
  getLocale(): string;
49
- /**
50
- * Get or create intlify CoreContext
51
- * Lazily initializes on first translation call
52
- */
53
- private getIntlContext;
54
- /**
55
- * Flatten nested messages to dot-notation
56
- *
57
- * Converts { auth: { login: { title: 'Sign In' } } }
58
- * to { 'auth.login.title': 'Sign In' }
59
- */
60
- private flattenMessages;
61
49
  }
62
50
  //# sourceMappingURL=i18n.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.service.d.ts","sourceRoot":"","sources":["../../../src/i18n/services/i18n.service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAiB,aAAa,EAAE,MAAM,cAAc,CAAA;AAE3D,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAEpE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBACa,WAAY,YAAW,YAAY;IAIT,OAAO,CAAC,QAAQ,CAAC,MAAM;IACC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAJ5F,OAAO,CAAC,WAAW,CAAyB;gBAGU,MAAM,EAAE,oBAAoB,EACJ,aAAa,CAAC,EAAE,aAAa,YAAA;IAI3G;;;;;;OAMG;IACH,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM;IAUnD;;;;OAIG;IACH,SAAS,IAAI,MAAM;IAInB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAgBtB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;CAiBxB"}
1
+ {"version":3,"file":"i18n.service.d.ts","sourceRoot":"","sources":["../../../src/i18n/services/i18n.service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAAiB,aAAa,EAAE,MAAM,cAAc,CAAA;AAE3D,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAEpE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBACa,WAAY,YAAW,YAAY;IAET,OAAO,CAAC,QAAQ,CAAC,MAAM;IACC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;gBADtC,MAAM,EAAE,oBAAoB,EACJ,aAAa,CAAC,EAAE,aAAa,YAAA;IAI3G;;;;;;OAMG;IACH,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM;IAUnD;;;;OAIG;IACH,SAAS,IAAI,MAAM;CAGpB"}
@@ -3,6 +3,7 @@
3
3
  *
4
4
  * Request-scoped service for translations.
5
5
  * Injects RouterContext to access request-specific locale.
6
+ * Uses pre-built CoreContext from MessageLoaderService (singleton) for zero-cost lookups.
6
7
  */
7
8
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
8
9
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -16,7 +17,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
16
17
  var __param = (this && this.__param) || function (paramIndex, decorator) {
17
18
  return function (target, key) { decorator(target, key, paramIndex); }
18
19
  };
19
- import { createCoreContext, translate } from '@intlify/core-base';
20
+ import { translate } from '@intlify/core-base';
20
21
  import { inject } from 'tsyringe';
21
22
  import { Transient } from '../../di/decorators';
22
23
  import { ROUTER_TOKENS, RouterContext } from '../../router';
@@ -44,7 +45,6 @@ import { I18N_TOKENS } from '../i18n.tokens';
44
45
  let I18nService = class I18nService {
45
46
  loader;
46
47
  routerContext;
47
- intlContext;
48
48
  constructor(loader, routerContext) {
49
49
  this.loader = loader;
50
50
  this.routerContext = routerContext;
@@ -57,7 +57,7 @@ let I18nService = class I18nService {
57
57
  * @returns Translated string
58
58
  */
59
59
  t(key, params) {
60
- const context = this.getIntlContext();
60
+ const context = this.loader.getCoreContext(this.getLocale());
61
61
  const result = params !== undefined
62
62
  ? translate(context, key, params)
63
63
  : translate(context, key);
@@ -71,42 +71,6 @@ let I18nService = class I18nService {
71
71
  getLocale() {
72
72
  return this.routerContext?.getLocale() ?? 'en';
73
73
  }
74
- /**
75
- * Get or create intlify CoreContext
76
- * Lazily initializes on first translation call
77
- */
78
- getIntlContext() {
79
- if (!this.intlContext) {
80
- const locale = this.getLocale();
81
- const messages = this.loader.getMessages(locale);
82
- this.intlContext = createCoreContext({
83
- locale,
84
- messages: { [locale]: this.flattenMessages(messages) },
85
- missingWarn: false,
86
- fallbackWarn: false
87
- });
88
- }
89
- return this.intlContext;
90
- }
91
- /**
92
- * Flatten nested messages to dot-notation
93
- *
94
- * Converts { auth: { login: { title: 'Sign In' } } }
95
- * to { 'auth.login.title': 'Sign In' }
96
- */
97
- flattenMessages(messages, prefix = '') {
98
- return Object.keys(messages).reduce((acc, key) => {
99
- const value = messages[key];
100
- const newKey = prefix ? `${prefix}.${key}` : key;
101
- if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
102
- Object.assign(acc, this.flattenMessages(value, newKey));
103
- }
104
- else {
105
- acc[newKey] = String(value);
106
- }
107
- return acc;
108
- }, {});
109
- }
110
74
  };
111
75
  I18nService = __decorate([
112
76
  Transient(I18N_TOKENS.I18nService),
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.service.js","sourceRoot":"","sources":["../../../src/i18n/services/i18n.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i18n.service.js","sourceRoot":"","sources":["../../../src/i18n/services/i18n.service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;;;;;;;;;;;;;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAI5C;;;;;;;;;;;;;;;;;;;GAmBG;AAEI,IAAM,WAAW,GAAjB,MAAM,WAAW;IAEgC;IACwB;IAF9E,YACsD,MAA4B,EACJ,aAA6B;QADrD,WAAM,GAAN,MAAM,CAAsB;QACJ,kBAAa,GAAb,aAAa,CAAgB;IAE3G,CAAC;IAED;;;;;;OAMG;IACH,CAAC,CAAC,GAAgB,EAAE,MAAsB;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;QAE5D,MAAM,MAAM,GAAG,MAAM,KAAK,SAAS;YACjC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC;YACjC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QAE3B,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAA;IAClD,CAAC;IAED;;;;OAIG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,IAAI,CAAA;IAChD,CAAC;CACF,CAAA;AAhCY,WAAW;IADvB,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC;IAG9B,WAAA,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAA;IACjC,WAAA,MAAM,CAAC,aAAa,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;+CAAkC,aAAa;GAHhG,WAAW,CAgCvB"}