stratal 0.0.21 → 0.0.22
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 +1 -1
- package/dist/{base-email.provider-CfQCA08m.mjs → base-email.provider-BWZHIjt8.mjs} +1 -1
- package/dist/{base-email.provider-CfQCA08m.mjs.map → base-email.provider-BWZHIjt8.mjs.map} +1 -1
- package/dist/bin/quarry.mjs +46 -109
- package/dist/bin/quarry.mjs.map +1 -1
- package/dist/cache/index.d.mts +6 -46
- package/dist/cache/index.d.mts.map +1 -1
- package/dist/cache/index.mjs +20 -67
- package/dist/cache/index.mjs.map +1 -1
- package/dist/{cache.service-DsnKuNyO.d.mts → cache.service-e34gV6tz.d.mts} +8 -8
- package/dist/{cache.service-DsnKuNyO.d.mts.map → cache.service-e34gV6tz.d.mts.map} +1 -1
- package/dist/{cache.tokens-B7Rw1C9Q.mjs → cache.tokens-ovi_c52J.mjs} +1 -1
- package/dist/{cache.tokens-B7Rw1C9Q.mjs.map → cache.tokens-ovi_c52J.mjs.map} +1 -1
- package/dist/{colors-DJaRDXoS.mjs → colors-axmupKdp.mjs} +1 -1
- package/dist/{colors-DJaRDXoS.mjs.map → colors-axmupKdp.mjs.map} +1 -1
- package/dist/{command-BgSlsS4M.mjs → command-BU4ApTo5.mjs} +2 -3
- package/dist/command-BU4ApTo5.mjs.map +1 -0
- package/dist/{command-Cmmf0oHX.d.mts → command-wXfvHbBZ.d.mts} +3 -2
- package/dist/command-wXfvHbBZ.d.mts.map +1 -0
- package/dist/config/index.d.mts +24 -11
- package/dist/config/index.d.mts.map +1 -1
- package/dist/config/index.mjs +31 -57
- package/dist/config/index.mjs.map +1 -1
- package/dist/{consumer-registry-B7yUNh0q.d.mts → consumer-registry-DHQtypr1.d.mts} +1 -1
- package/dist/{consumer-registry-B7yUNh0q.d.mts.map → consumer-registry-DHQtypr1.d.mts.map} +1 -1
- package/dist/container-storage-GpNNz79X.mjs +52 -0
- package/dist/container-storage-GpNNz79X.mjs.map +1 -0
- package/dist/{controller.decorator-B9vwn0zK.mjs → controller.decorator-DIUazNU7.mjs} +8 -8
- package/dist/controller.decorator-DIUazNU7.mjs.map +1 -0
- package/dist/cron/index.d.mts +26 -5
- package/dist/cron/index.d.mts.map +1 -1
- package/dist/cron/index.mjs +1 -1
- package/dist/{cron-manager-DQSK8uoV.mjs → cron-manager-9bpN9bu4.mjs} +35 -15
- package/dist/cron-manager-9bpN9bu4.mjs.map +1 -0
- package/dist/{cron-manager-CmTimEjf.d.mts → cron-manager-CSTIBPcM.d.mts} +6 -13
- package/dist/cron-manager-CSTIBPcM.d.mts.map +1 -0
- package/dist/decorate-HgTKAYK8.mjs +16 -0
- package/dist/deep-merge-C8NgcXw4.mjs +18 -0
- package/dist/deep-merge-C8NgcXw4.mjs.map +1 -0
- package/dist/di/index.d.mts +2 -2
- package/dist/di/index.mjs +4 -3
- package/dist/di-BO1QIb5H.mjs +415 -0
- package/dist/di-BO1QIb5H.mjs.map +1 -0
- package/dist/email/index.d.mts +14 -89
- package/dist/email/index.d.mts.map +1 -1
- package/dist/email/index.mjs +25 -125
- package/dist/email/index.mjs.map +1 -1
- package/dist/en-BPP6h6y5.mjs +202 -0
- package/dist/en-BPP6h6y5.mjs.map +1 -0
- package/dist/{env-D1rcZ8_r.d.mts → env-DKSbuBi5.d.mts} +1 -1
- package/dist/env-DKSbuBi5.d.mts.map +1 -0
- package/dist/errors/index.d.mts +2 -2
- package/dist/errors/index.mjs +4 -2
- package/dist/errors-BBZTnjdq.mjs +333 -0
- package/dist/errors-BBZTnjdq.mjs.map +1 -0
- package/dist/events/index.d.mts +2 -2
- package/dist/events/index.d.mts.map +1 -1
- package/dist/events/index.mjs +1 -1
- package/dist/{events-CzCV8jI8.mjs → events-D1KdDaiP.mjs} +11 -11
- package/dist/events-D1KdDaiP.mjs.map +1 -0
- package/dist/exception-context-B4kM-M53.mjs +429 -0
- package/dist/exception-context-B4kM-M53.mjs.map +1 -0
- package/dist/{gateway-context-CXmXtaUP.mjs → gateway-context-CFe6a9gz.mjs} +19 -31
- package/dist/gateway-context-CFe6a9gz.mjs.map +1 -0
- package/dist/guards/index.d.mts +3 -3
- package/dist/guards/index.d.mts.map +1 -1
- package/dist/guards/index.mjs +1 -1
- package/dist/{guards-DU1_J9YA.mjs → guards-Ced-uNIF.mjs} +6 -5
- package/dist/guards-Ced-uNIF.mjs.map +1 -0
- package/dist/{http-method.decorator-BrgHMdLQ.mjs → http-method.decorator-CdjKFJZZ.mjs} +7 -6
- package/dist/http-method.decorator-CdjKFJZZ.mjs.map +1 -0
- package/dist/i18n/index.d.mts +238 -3
- package/dist/i18n/index.d.mts.map +1 -0
- package/dist/i18n/index.mjs +39 -3
- package/dist/i18n/index.mjs.map +1 -0
- package/dist/i18n/messages/en/index.d.mts +2 -2
- package/dist/i18n/messages/en/index.mjs +2 -2
- package/dist/i18n/utils/index.d.mts +4 -26
- package/dist/i18n/utils/index.d.mts.map +1 -1
- package/dist/i18n/utils/index.mjs +2 -2
- package/dist/i18n/validation/index.d.mts +3 -2
- package/dist/i18n/validation/index.mjs +4 -2
- package/dist/i18n.module-BlXrtAlV.mjs +219 -0
- package/dist/i18n.module-BlXrtAlV.mjs.map +1 -0
- package/dist/i18n.tokens-hwRpmjRq.mjs +19 -0
- package/dist/i18n.tokens-hwRpmjRq.mjs.map +1 -0
- package/dist/{index-7-hU3GTV.d.mts → index-B4UBK-2T.d.mts} +1 -1
- package/dist/{index-7-hU3GTV.d.mts.map → index-B4UBK-2T.d.mts.map} +1 -1
- package/dist/index-BtlE9RuO.d.mts +124 -0
- package/dist/index-BtlE9RuO.d.mts.map +1 -0
- package/dist/{index-DUzWs0z7.d.mts → index-CW1YHSft.d.mts} +71 -167
- package/dist/index-CW1YHSft.d.mts.map +1 -0
- package/dist/{index-ByOyTmqf.d.mts → index-DEncMcC6.d.mts} +554 -2237
- package/dist/index-DEncMcC6.d.mts.map +1 -0
- package/dist/index-Dj5IMwtr.d.mts +44 -0
- package/dist/index-Dj5IMwtr.d.mts.map +1 -0
- package/dist/{index-C1KvMncZ.d.mts → index-KMgSCSM7.d.mts} +3 -108
- package/dist/index-KMgSCSM7.d.mts.map +1 -0
- package/dist/index.d.mts +5 -43
- package/dist/index.mjs +1 -1
- package/dist/{is-command-C6a7WTPw.mjs → is-command-CX5rAfZW.mjs} +2 -2
- package/dist/{is-command-C6a7WTPw.mjs.map → is-command-CX5rAfZW.mjs.map} +1 -1
- package/dist/{is-seeder-CebjZCDn.mjs → is-seeder-CYCtELlm.mjs} +1 -1
- package/dist/{is-seeder-CebjZCDn.mjs.map → is-seeder-CYCtELlm.mjs.map} +1 -1
- package/dist/logger/index.d.mts +2 -2
- package/dist/logger/index.mjs +170 -2
- package/dist/logger/index.mjs.map +1 -0
- package/dist/macroable/index.d.mts +1 -1
- package/dist/macroable/index.mjs +1 -1
- package/dist/{macroable-BmufBshB.mjs → macroable-DzlfzT50.mjs} +1 -1
- package/dist/{macroable-BmufBshB.mjs.map → macroable-DzlfzT50.mjs.map} +1 -1
- package/dist/metadata-BVkc4aUu.mjs +39 -0
- package/dist/metadata-BVkc4aUu.mjs.map +1 -0
- package/dist/module/index.d.mts +6 -24
- package/dist/module/index.d.mts.map +1 -1
- package/dist/module/index.mjs +2 -2
- package/dist/module-xYoHba6B.mjs +422 -0
- package/dist/module-xYoHba6B.mjs.map +1 -0
- package/dist/openapi/index.d.mts +3 -3
- package/dist/openapi/index.d.mts.map +1 -1
- package/dist/openapi/index.mjs +1 -2
- package/dist/openapi-C6lm0RmV.mjs +483 -0
- package/dist/openapi-C6lm0RmV.mjs.map +1 -0
- package/dist/{openapi.service-Bt9bCIrd.d.mts → openapi.service-CrLlsXAd.d.mts} +3 -3
- package/dist/openapi.service-CrLlsXAd.d.mts.map +1 -0
- package/dist/quarry/index.d.mts +5 -163
- package/dist/quarry/index.d.mts.map +1 -1
- package/dist/quarry/index.mjs +5 -5
- package/dist/quarry/runner.d.mts +184 -0
- package/dist/quarry/runner.d.mts.map +1 -0
- package/dist/quarry/runner.mjs +775 -0
- package/dist/quarry/runner.mjs.map +1 -0
- package/dist/quarry-registry-D4hIGScf.d.mts +69 -0
- package/dist/quarry-registry-D4hIGScf.d.mts.map +1 -0
- package/dist/quarry-registry-DkraZNwn.mjs +311 -0
- package/dist/quarry-registry-DkraZNwn.mjs.map +1 -0
- package/dist/queue/index.d.mts +3 -3
- package/dist/queue/index.mjs +26 -28
- package/dist/queue/index.mjs.map +1 -1
- package/dist/{queue.module-BhCjZp6H.mjs → queue.module-DeWJ0tQM.mjs} +59 -113
- package/dist/queue.module-DeWJ0tQM.mjs.map +1 -0
- package/dist/{r2-storage.provider-DuonKeYm.mjs → r2-storage.provider-Hfm6LdZQ.mjs} +5 -5
- package/dist/r2-storage.provider-Hfm6LdZQ.mjs.map +1 -0
- package/dist/{rate-limit.decorator-6qzNcSOt.mjs → rate-limit.decorator-D69zdZbp.mjs} +6 -11
- package/dist/rate-limit.decorator-D69zdZbp.mjs.map +1 -0
- package/dist/rate-limiter/index.d.mts +11 -50
- package/dist/rate-limiter/index.d.mts.map +1 -1
- package/dist/rate-limiter/index.mjs +16 -30
- package/dist/rate-limiter/index.mjs.map +1 -1
- package/dist/{resend.provider-DB4IlFjG.mjs → resend.provider-Ur6tU7fK.mjs} +7 -7
- package/dist/resend.provider-Ur6tU7fK.mjs.map +1 -0
- package/dist/router/index.d.mts +2 -2
- package/dist/router/index.mjs +8 -7
- package/dist/{i18n.module-CzXLW9Hy.mjs → router-Cy6DjkvP.mjs} +171 -851
- package/dist/router-Cy6DjkvP.mjs.map +1 -0
- package/dist/seeder/index.d.mts +6 -11
- package/dist/seeder/index.d.mts.map +1 -1
- package/dist/seeder/index.mjs +3 -3
- package/dist/{seeder-zoEfEw9i.mjs → seeder-BADTig4n.mjs} +14 -22
- package/dist/seeder-BADTig4n.mjs.map +1 -0
- package/dist/{signed-url-BQPbv2In.mjs → signed-url-BqUqt5dF.mjs} +1 -1
- package/dist/{signed-url-BQPbv2In.mjs.map → signed-url-BqUqt5dF.mjs.map} +1 -1
- package/dist/{smtp.provider-B6D7zuWX.mjs → smtp.provider-C129sNBT.mjs} +6 -6
- package/dist/smtp.provider-C129sNBT.mjs.map +1 -0
- package/dist/storage/index.d.mts +15 -39
- package/dist/storage/index.d.mts.map +1 -1
- package/dist/storage/index.mjs +3 -3
- package/dist/storage/providers/index.d.mts +2 -2
- package/dist/storage/providers/index.mjs +1 -1
- package/dist/{storage-D8CBP72Z.mjs → storage-BA3ppVYM.mjs} +65 -59
- package/dist/storage-BA3ppVYM.mjs.map +1 -0
- package/dist/{storage-provider.interface-Bd6vA4ak.d.mts → storage-provider.interface-DQMtT42e.d.mts} +2 -3
- package/dist/storage-provider.interface-DQMtT42e.d.mts.map +1 -0
- package/dist/storage.error-C6FY037a.mjs +8 -0
- package/dist/storage.error-C6FY037a.mjs.map +1 -0
- package/dist/{stratal-CNwpbSZl.mjs → stratal-Bdq4IdB3.mjs} +31 -185
- package/dist/stratal-Bdq4IdB3.mjs.map +1 -0
- package/dist/stratal-BsKmvP6J.d.mts +43 -0
- package/dist/stratal-BsKmvP6J.d.mts.map +1 -0
- package/dist/{types-cySNS_lp.d.mts → types-BaeHi67f.d.mts} +1 -1
- package/dist/types-BaeHi67f.d.mts.map +1 -0
- package/dist/{usage-generator-BUdlhnCK.mjs → usage-generator-DTqaUMR9.mjs} +6 -3
- package/dist/usage-generator-DTqaUMR9.mjs.map +1 -0
- package/dist/validation-DUzcjb8Q.mjs +49 -0
- package/dist/validation-DUzcjb8Q.mjs.map +1 -0
- package/dist/validation.context-XTysWJ3b.mjs +117 -0
- package/dist/validation.context-XTysWJ3b.mjs.map +1 -0
- package/dist/websocket/index.d.mts +7 -14
- package/dist/websocket/index.d.mts.map +1 -1
- package/dist/websocket/index.mjs +2 -2
- package/dist/workers/index.d.mts +2 -2
- package/dist/workers/index.mjs +3 -2
- package/dist/workers/index.mjs.map +1 -1
- package/dist/{index-Bnpfq6uk.d.mts → zod-DvWTfRpI.d.mts} +58 -133
- package/dist/zod-DvWTfRpI.d.mts.map +1 -0
- package/dist/zod-hMa3rSHV.mjs +72 -0
- package/dist/zod-hMa3rSHV.mjs.map +1 -0
- package/package.json +10 -10
- package/dist/command-BgSlsS4M.mjs.map +0 -1
- package/dist/command-Cmmf0oHX.d.mts.map +0 -1
- package/dist/controller.decorator-B9vwn0zK.mjs.map +0 -1
- package/dist/cron-manager-CmTimEjf.d.mts.map +0 -1
- package/dist/cron-manager-DQSK8uoV.mjs.map +0 -1
- package/dist/en-DSH_bhh6.mjs +0 -308
- package/dist/en-DSH_bhh6.mjs.map +0 -1
- package/dist/env-D1rcZ8_r.d.mts.map +0 -1
- package/dist/errors-COW9-Mar.mjs +0 -1739
- package/dist/errors-COW9-Mar.mjs.map +0 -1
- package/dist/errors-ORxu1-Bb.mjs +0 -74
- package/dist/errors-ORxu1-Bb.mjs.map +0 -1
- package/dist/events-CzCV8jI8.mjs.map +0 -1
- package/dist/gateway-context-CXmXtaUP.mjs.map +0 -1
- package/dist/guards-DU1_J9YA.mjs.map +0 -1
- package/dist/http-method.decorator-BrgHMdLQ.mjs.map +0 -1
- package/dist/i18n.module-CzXLW9Hy.mjs.map +0 -1
- package/dist/index-Bnpfq6uk.d.mts.map +0 -1
- package/dist/index-ByOyTmqf.d.mts.map +0 -1
- package/dist/index-C1KvMncZ.d.mts.map +0 -1
- package/dist/index-DBd_2wv8.d.mts +0 -263
- package/dist/index-DBd_2wv8.d.mts.map +0 -1
- package/dist/index-DUzWs0z7.d.mts.map +0 -1
- package/dist/index.d.mts.map +0 -1
- package/dist/logger-DlV7NtvD.mjs +0 -440
- package/dist/logger-DlV7NtvD.mjs.map +0 -1
- package/dist/module-BzLg57FK.mjs +0 -866
- package/dist/module-BzLg57FK.mjs.map +0 -1
- package/dist/openapi-tools.service-Zs-Ewv7F.mjs +0 -200
- package/dist/openapi-tools.service-Zs-Ewv7F.mjs.map +0 -1
- package/dist/openapi.service-Bt9bCIrd.d.mts.map +0 -1
- package/dist/quarry-registry-BwY2hOxm.mjs +0 -699
- package/dist/quarry-registry-BwY2hOxm.mjs.map +0 -1
- package/dist/queue.module-BhCjZp6H.mjs.map +0 -1
- package/dist/r2-storage.provider-DuonKeYm.mjs.map +0 -1
- package/dist/rate-limit.decorator-6qzNcSOt.mjs.map +0 -1
- package/dist/resend.provider-DB4IlFjG.mjs.map +0 -1
- package/dist/seeder-zoEfEw9i.mjs.map +0 -1
- package/dist/setup-CefZKV_e.mjs +0 -37
- package/dist/setup-CefZKV_e.mjs.map +0 -1
- package/dist/smtp.provider-B6D7zuWX.mjs.map +0 -1
- package/dist/storage-D8CBP72Z.mjs.map +0 -1
- package/dist/storage-provider.interface-Bd6vA4ak.d.mts.map +0 -1
- package/dist/stratal-CNwpbSZl.mjs.map +0 -1
- package/dist/types-cySNS_lp.d.mts.map +0 -1
- package/dist/usage-generator-BUdlhnCK.mjs.map +0 -1
- package/dist/validation-DtJwAv7O.mjs +0 -248
- package/dist/validation-DtJwAv7O.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.module-BlXrtAlV.mjs","names":[],"sources":["../src/i18n/services/i18n.service.ts","../src/i18n/messages/index.ts","../src/i18n/services/message-loader.service.ts","../src/i18n/services/message-registry.ts","../src/i18n/i18n.module.ts"],"sourcesContent":["import { inject } from '../../di'\nimport { Request } from '../../di/decorators'\nimport { ROUTER_TOKENS, type RouterContext } from '../../router'\nimport { I18N_TOKENS } from '../i18n.tokens'\nimport type { II18nService, MessageKeys, MessageParams } from '../i18n.types'\nimport type { MessageLoaderService } from './message-loader.service'\n\n@Request(I18N_TOKENS.I18nService)\nexport class I18nService implements II18nService {\n constructor(\n @inject(I18N_TOKENS.MessageLoader) private readonly loader: MessageLoaderService,\n @inject(ROUTER_TOKENS.RouterContext, { isOptional: true }) private readonly routerContext?: RouterContext\n ) {\n }\n\n t(key: MessageKeys, params?: MessageParams): string {\n return this.loader.translate(this.getLocale(), key, params as Record<string, unknown>)\n }\n\n getLocale(): string {\n return this.routerContext?.getLocale() ?? 'en'\n }\n}\n","/**\n * Core Messages\n *\n * Messages used by packages/modules infrastructure.\n * These are automatically merged with application-specific messages.\n */\n\nimport * as en from './en'\n\n/**\n * All locale messages\n * Explicitly import and export (no filesystem scanning - Cloudflare Workers compatible)\n */\nexport const messages = { en } as const\n\n/**\n * Type for all messages\n */\nexport type Messages = typeof messages\n\n/**\n * Get messages for all locales\n */\nexport function getMessages(): Record<string, Record<string, unknown>> {\n return messages\n}\n\n/**\n * Get available locales\n */\nexport function getLocales(): string[] {\n return Object.keys(messages)\n}\n","import IntlMessageFormat from 'intl-messageformat'\nimport { inject } from '../../di'\nimport { Singleton } from '../../di/decorators'\nimport type { I18nModuleOptions } from '../i18n.options'\nimport type { MessageKeyPrefix } from '../i18n.types'\nimport { I18N_TOKENS } from '../i18n.tokens'\nimport { getLocales, getMessages } from '../messages'\nimport { deepMerge } from '../utils/deep-merge'\nimport type { MessageRegistry } from './message-registry'\n\ntype CompiledMessages = Record<string, (params?: Record<string, unknown>) => string>\n\n@Singleton(I18N_TOKENS.MessageLoader)\nexport class MessageLoaderService {\n private readonly cache: Map<string, Record<string, unknown>>\n private readonly compiledCache: Map<string, CompiledMessages>\n private readonly locales: string[]\n private readonly defaultLocale: string\n\n constructor(\n @inject(I18N_TOKENS.MessageRegistry) private readonly registry: MessageRegistry,\n @inject(I18N_TOKENS.Options, { isOptional: true })\n private readonly options?: I18nModuleOptions\n ) {\n this.defaultLocale = this.options?.defaultLocale ?? 'en'\n this.cache = new Map()\n this.compiledCache = new Map()\n\n const coreMessages = getMessages()\n const coreLocales = getLocales()\n\n const registryMessages = this.registry.getMergedMessages()\n const registryLocales = Object.keys(registryMessages)\n\n const allLocales = [...new Set([...coreLocales, ...registryLocales])]\n this.locales = allLocales\n\n for (const locale of allLocales) {\n const coreLocaleMessages = coreMessages[locale] ?? {}\n const registryLocaleMessages = registryMessages[locale] ?? {}\n\n const merged = deepMerge(coreLocaleMessages, registryLocaleMessages)\n this.cache.set(locale, merged)\n }\n }\n\n translate(locale: string, key: string, params?: Record<string, unknown>): string {\n const compiled = this.getCompiledMessages(locale)\n const fn = compiled[key]\n if (!fn) return key\n return fn(params)\n }\n\n getMessages(locale: string): Record<string, unknown> {\n return this.cache.get(locale) ?? this.cache.get(this.defaultLocale) ?? {}\n }\n\n getAvailableLocales(): string[] {\n return this.locales\n }\n\n isLocaleSupported(locale: string): boolean {\n return this.cache.has(locale)\n }\n\n getDefaultLocale(): string {\n return this.defaultLocale\n }\n\n getFilteredMessages(\n locale: string,\n options?: { only?: MessageKeyPrefix[] }\n ): Record<string, string> {\n const messages = this.getMessages(locale)\n const flattened = this.flattenMessages(messages)\n\n if (!options?.only?.length) return flattened\n\n const result: Record<string, string> = {}\n for (const [key, value] of Object.entries(flattened)) {\n if (options.only.some((prefix) => key === prefix || key.startsWith(`${prefix}.`))) {\n result[key] = value\n }\n }\n return result\n }\n\n private getCompiledMessages(locale: string): CompiledMessages {\n const effectiveLocale = this.cache.has(locale) ? locale : this.defaultLocale\n\n const cached = this.compiledCache.get(effectiveLocale)\n if (cached) return cached\n\n const messages = this.cache.get(effectiveLocale) ?? {}\n const flattened = this.flattenMessages(messages)\n\n const compiled: CompiledMessages = {}\n for (const [key, value] of Object.entries(flattened)) {\n const msg = new IntlMessageFormat(value, effectiveLocale)\n compiled[key] = (params) => String(msg.format(params as Record<string, string | number | boolean>))\n }\n\n this.compiledCache.set(effectiveLocale, compiled)\n return compiled\n }\n\n private flattenMessages(\n messages: Record<string, unknown>,\n prefix = ''\n ): Record<string, string> {\n const result: Record<string, string> = {}\n\n for (const key of Object.keys(messages)) {\n const value = messages[key]\n const newKey = prefix ? `${prefix}.${key}` : key\n\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n Object.assign(result, this.flattenMessages(value as Record<string, unknown>, newKey))\n } else {\n result[newKey] = String(value)\n }\n }\n\n return result\n }\n}\n","import { Singleton } from '../../di/decorators'\nimport { I18N_TOKENS } from '../i18n.tokens'\nimport { deepMerge } from '../utils/deep-merge'\n\n/**\n * Global key for the shared contributions array.\n *\n * When stratal is installed via portal/symlink (e.g., in monorepos), bundlers\n * like esbuild may inline multiple copies of this module. Each copy gets its\n * own static class fields, so messages registered by one copy are invisible\n * to another. Using a `Symbol.for()` key on `globalThis` ensures all copies\n * share the same contributions array.\n */\nconst CONTRIBUTIONS_KEY = Symbol.for('stratal:i18n:message-registry:contributions')\n\ntype Contributions = Record<string, Record<string, unknown>>[]\n\nfunction getContributions(): Contributions {\n const g = globalThis as Record<symbol, unknown>\n g[CONTRIBUTIONS_KEY] ??= [];\n return g[CONTRIBUTIONS_KEY] as Contributions\n}\n\n/**\n * Message Registry\n *\n * Accumulates i18n messages from multiple `I18nModule.registerMessages()` calls.\n * Messages are collected statically (at module import time) and deep-merged\n * when `getMergedMessages()` is called by `MessageLoaderService`.\n *\n * Later registrations override earlier ones at leaf level.\n */\n@Singleton(I18N_TOKENS.MessageRegistry)\nexport class MessageRegistry {\n /**\n * Add messages (called statically by I18nModule.registerMessages)\n */\n static addMessages(messages: Record<string, Record<string, unknown>>): void {\n if (Boolean(messages) && typeof messages === 'object' && Object.keys(messages).length > 0) {\n getContributions().push(messages)\n }\n }\n\n /**\n * Get all messages deep-merged in registration order\n */\n getMergedMessages(): Record<string, Record<string, unknown>> {\n const merged: Record<string, Record<string, unknown>> = {}\n\n for (const contribution of getContributions()) {\n for (const locale of Object.keys(contribution)) {\n merged[locale] = deepMerge(\n (merged[locale] ?? {}),\n contribution[locale],\n )\n }\n }\n\n return merged\n }\n\n /**\n * Reset registry (for testing)\n * @internal\n */\n static reset(): void {\n (globalThis as Record<symbol, unknown>)[CONTRIBUTIONS_KEY] = []\n }\n}\n","import { Module } from '../module'\nimport type { DynamicModule, ModuleContext, OnInitialize } from '../module/types'\nimport type { I18nModuleOptions } from './i18n.options'\nimport { I18N_TOKENS } from './i18n.tokens'\nimport { I18nService } from './services/i18n.service'\nimport { MessageLoaderService } from './services/message-loader.service'\nimport { MessageRegistry } from './services/message-registry'\nimport { zodErrorMap } from './validation/validation.context'\nimport { z } from './validation/zod'\n\n@Module({\n providers: [\n { provide: I18N_TOKENS.MessageRegistry, useClass: MessageRegistry },\n { provide: I18N_TOKENS.MessageLoader, useClass: MessageLoaderService },\n { provide: I18N_TOKENS.I18nService, useClass: I18nService },\n ],\n})\nexport class I18nModule implements OnInitialize {\n onInitialize(_context: ModuleContext): void {\n z.config({ customError: zodErrorMap })\n }\n\n static forRoot(options: I18nModuleOptions = {}): DynamicModule {\n return {\n module: I18nModule,\n providers: [\n { provide: I18N_TOKENS.Options, useValue: options },\n ],\n }\n }\n\n static registerMessages(messages: Record<string, Record<string, unknown>>): DynamicModule {\n MessageRegistry.addMessages(messages)\n return {\n module: I18nModule,\n providers: [],\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/i18n/i18n.tokens.ts
|
|
2
|
+
/**
|
|
3
|
+
* I18n Module DI Tokens
|
|
4
|
+
* Symbol-based tokens to avoid string collisions
|
|
5
|
+
*/
|
|
6
|
+
const I18N_TOKENS = {
|
|
7
|
+
/** MessageLoaderService - loads and caches locale messages */
|
|
8
|
+
MessageLoader: Symbol.for("stratal:i18n:message:loader"),
|
|
9
|
+
/** I18nService - request-scoped translation service */
|
|
10
|
+
I18nService: Symbol.for("stratal:i18n:service"),
|
|
11
|
+
/** I18nModuleOptions - configuration options from forRoot() */
|
|
12
|
+
Options: Symbol.for("stratal:i18n:options"),
|
|
13
|
+
/** MessageRegistry - singleton accumulator for registerMessages() contributions */
|
|
14
|
+
MessageRegistry: Symbol.for("stratal:i18n:message:registry")
|
|
15
|
+
};
|
|
16
|
+
//#endregion
|
|
17
|
+
export { I18N_TOKENS as t };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=i18n.tokens-hwRpmjRq.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.tokens-hwRpmjRq.mjs","names":[],"sources":["../src/i18n/i18n.tokens.ts"],"sourcesContent":["/**\n * I18n Module DI Tokens\n * Symbol-based tokens to avoid string collisions\n */\n\nexport const I18N_TOKENS = {\n /** MessageLoaderService - loads and caches locale messages */\n MessageLoader: Symbol.for('stratal:i18n:message:loader'),\n /** I18nService - request-scoped translation service */\n I18nService: Symbol.for('stratal:i18n:service'),\n /** I18nModuleOptions - configuration options from forRoot() */\n Options: Symbol.for('stratal:i18n:options'),\n /** MessageRegistry - singleton accumulator for registerMessages() contributions */\n MessageRegistry: Symbol.for('stratal:i18n:message:registry'),\n} as const\n"],"mappings":";;;;;AAKA,MAAa,cAAc;;CAEzB,eAAe,OAAO,IAAI,8BAA8B;;CAExD,aAAa,OAAO,IAAI,uBAAuB;;CAE/C,SAAS,OAAO,IAAI,uBAAuB;;CAE3C,iBAAiB,OAAO,IAAI,gCAAgC;CAC7D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-B4UBK-2T.d.mts","names":[],"sources":["../src/macroable/types.ts","../src/macroable/macroable.ts"],"mappings":";KACY,aAAA,IAAiB,IAAA,UAAc,IAAA;;;KCEtC,WAAA,oBAA+B,IAAA;;;;;;;;AAHQ;;;;;AA+B5C;;;;;;;;;;;;;;uBAAsB,SAAA;EAAA,CACnB,GAAA;EAwE8D;;;;EAAA,iBAnE9C,cAAA,EAAc,GAAA;;;;EAyFsB;;;EAAA,iBApFpC,UAAA,EAAU,GAAA;EAuFL;;;EAAA,iBAlFL,WAAA,EAAW,GAAA;EAqFsB;;;;EAAA,eA/EnC,UAAA;EAhBgB;;;;;;;;;EAAA,OA6BxB,KAAA,WAAgB,WAAA,kBAA6B,YAAA,CAAa,CAAA,EAAA,CAC/D,IAAA,EAAM,CAAA,EACN,IAAA,EAAM,CAAA,EACN,KAAA,EAAO,YAAA,CAAa,CAAA,EAAG,CAAA;EAAA,OAElB,KAAA,CAAM,IAAA,mBAAuB,KAAA;EALA;;;;;;;;;EAAA,OAsC7B,gBAAA,WAA2B,WAAA,kBAA6B,YAAA,CAAa,CAAA,EAAA,CAC1E,IAAA,EAAM,CAAA,EACN,IAAA,EAAM,CAAA,EACN,KAAA,EAAO,YAAA,CAAa,CAAA,EAAG,CAAA;EAAA,OAElB,gBAAA,CAAiB,IAAA,mBAAuB,KAAA;EAtCxC;;;;;;;EAAA,OAuDA,MAAA,WAAiB,WAAA,kBAA6B,YAAA,CAAa,CAAA,EAAA,CAChE,IAAA,EAAM,CAAA,EACN,IAAA,EAAM,CAAA,EACN,WAAA,GAAc,IAAA,EAAM,YAAA,CAAa,CAAA,MAAO,YAAA,CAAa,CAAA,EAAG,CAAA,GACxD,SAAA;EAAA,OAEK,MAAA,CAAO,IAAA,mBAAuB,WAAA,EAAa,aAAA,EAAe,SAAA;EA3BzD;;;;;EAAA,OA+DD,QAAA,CAAS,IAAA;EA7DS;;;;EAAA,OA2ElB,WAAA,CAAA"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
//#region src/logger/logger.tokens.d.ts
|
|
2
|
+
declare const LOGGER_TOKENS: {
|
|
3
|
+
readonly LoggerService: symbol;
|
|
4
|
+
readonly Formatter: symbol;
|
|
5
|
+
readonly LogLevelOptions: symbol;
|
|
6
|
+
};
|
|
7
|
+
//#endregion
|
|
8
|
+
//#region src/logger/contracts/log-level.d.ts
|
|
9
|
+
/**
|
|
10
|
+
* Log severity levels
|
|
11
|
+
* Ordered from least to most severe
|
|
12
|
+
*/
|
|
13
|
+
declare enum LogLevel {
|
|
14
|
+
DEBUG = "debug",
|
|
15
|
+
INFO = "info",
|
|
16
|
+
WARN = "warn",
|
|
17
|
+
ERROR = "error"
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Map log levels to numeric priorities (for filtering)
|
|
21
|
+
* Higher numbers = more severe = higher priority
|
|
22
|
+
*/
|
|
23
|
+
declare const LOG_LEVEL_PRIORITY: Record<LogLevel, number>;
|
|
24
|
+
//#endregion
|
|
25
|
+
//#region src/logger/contracts/log-context.d.ts
|
|
26
|
+
/**
|
|
27
|
+
* Structured metadata attached to log entries
|
|
28
|
+
* Supports arbitrary key-value pairs for context enrichment
|
|
29
|
+
*/
|
|
30
|
+
type LogContext = Record<string, unknown>;
|
|
31
|
+
/**
|
|
32
|
+
* Internal context automatically added by LoggerService
|
|
33
|
+
* Contains request metadata, etc.
|
|
34
|
+
*/
|
|
35
|
+
interface InternalLogContext extends LogContext {
|
|
36
|
+
userId?: string;
|
|
37
|
+
timestamp: number;
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
//#region src/logger/contracts/log-entry.d.ts
|
|
41
|
+
/**
|
|
42
|
+
* Complete log entry structure passed to transports
|
|
43
|
+
* Combines message, level, and enriched context
|
|
44
|
+
*/
|
|
45
|
+
interface LogEntry {
|
|
46
|
+
level: LogLevel;
|
|
47
|
+
message: string;
|
|
48
|
+
context: InternalLogContext;
|
|
49
|
+
error?: {
|
|
50
|
+
message: string;
|
|
51
|
+
stack?: string;
|
|
52
|
+
name?: string;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
//#endregion
|
|
56
|
+
//#region src/logger/formatters/formatter.interface.d.ts
|
|
57
|
+
/**
|
|
58
|
+
* Formatter contract
|
|
59
|
+
* Transforms LogEntry into string representation for transport output
|
|
60
|
+
*/
|
|
61
|
+
interface ILogFormatter {
|
|
62
|
+
/**
|
|
63
|
+
* Format log entry into string
|
|
64
|
+
* @param entry - Complete log entry with context
|
|
65
|
+
* @returns Formatted string ready for transport
|
|
66
|
+
*/
|
|
67
|
+
format(entry: LogEntry): string;
|
|
68
|
+
}
|
|
69
|
+
//#endregion
|
|
70
|
+
//#region src/logger/services/logger.service.d.ts
|
|
71
|
+
declare class LoggerService {
|
|
72
|
+
private readonly logLevel;
|
|
73
|
+
private readonly formatter;
|
|
74
|
+
constructor(logLevel: LogLevel, formatter: ILogFormatter);
|
|
75
|
+
debug(message: string, context?: LogContext): void;
|
|
76
|
+
info(message: string, context?: LogContext): void;
|
|
77
|
+
warn(message: string, context?: LogContext): void;
|
|
78
|
+
error(message: string, error: Error, context?: LogContext): void;
|
|
79
|
+
error(message: string, context?: LogContext): void;
|
|
80
|
+
private log;
|
|
81
|
+
private writeToConsole;
|
|
82
|
+
private enrichContext;
|
|
83
|
+
private serializeError;
|
|
84
|
+
}
|
|
85
|
+
//#endregion
|
|
86
|
+
//#region src/logger/formatters/json-formatter.d.ts
|
|
87
|
+
/**
|
|
88
|
+
* JSON Formatter
|
|
89
|
+
*
|
|
90
|
+
* Produces structured JSON logs for production environments.
|
|
91
|
+
* Optimized for log aggregation systems (Cloudflare Analytics, Datadog, etc.)
|
|
92
|
+
*
|
|
93
|
+
* Output format:
|
|
94
|
+
* {
|
|
95
|
+
* "level": "info",
|
|
96
|
+
* "message": "User logged in",
|
|
97
|
+
* "timestamp": 1234567890,
|
|
98
|
+
* "userId": "user_456",
|
|
99
|
+
* "error": { "message": "...", "stack": "..." }
|
|
100
|
+
* }
|
|
101
|
+
*/
|
|
102
|
+
declare class JsonFormatter implements ILogFormatter {
|
|
103
|
+
format(entry: LogEntry): string;
|
|
104
|
+
}
|
|
105
|
+
//#endregion
|
|
106
|
+
//#region src/logger/formatters/pretty-formatter.d.ts
|
|
107
|
+
/**
|
|
108
|
+
* Pretty Formatter
|
|
109
|
+
*
|
|
110
|
+
* Human-readable colored output for development environments.
|
|
111
|
+
* Uses ANSI color codes for terminal output.
|
|
112
|
+
*
|
|
113
|
+
* Output format:
|
|
114
|
+
* [2024-01-15 10:30:45] INFO: User logged in
|
|
115
|
+
* userId: user_456
|
|
116
|
+
*/
|
|
117
|
+
declare class PrettyFormatter implements ILogFormatter {
|
|
118
|
+
private readonly colors;
|
|
119
|
+
private readonly reset;
|
|
120
|
+
format(entry: LogEntry): string;
|
|
121
|
+
}
|
|
122
|
+
//#endregion
|
|
123
|
+
export { InternalLogContext as a, LogLevel as c, LogEntry as i, LOGGER_TOKENS as l, JsonFormatter as n, LogContext as o, LoggerService as r, LOG_LEVEL_PRIORITY as s, PrettyFormatter as t };
|
|
124
|
+
//# sourceMappingURL=index-BtlE9RuO.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-BtlE9RuO.d.mts","names":[],"sources":["../src/logger/logger.tokens.ts","../src/logger/contracts/log-level.ts","../src/logger/contracts/log-context.ts","../src/logger/contracts/log-entry.ts","../src/logger/formatters/formatter.interface.ts","../src/logger/services/logger.service.ts","../src/logger/formatters/json-formatter.ts","../src/logger/formatters/pretty-formatter.ts"],"mappings":";cAAa,aAAA;EAAA;;;;;;;AAAb;;;aCIY,QAAA;EACV,KAAA;EACA,IAAA;EACA,IAAA;EACA,KAAA;AAAA;;;;AAJF;cAWa,kBAAA,EAAoB,MAAA,CAAO,QAAA;;;;ADfxC;;;KEIY,UAAA,GAAa,MAAA;;;;;UAMR,kBAAA,SAA2B,UAAA;EAC1C,MAAA;EACA,SAAA;AAAA;;;;;;;UCLe,QAAA;EACf,KAAA,EAAO,QAAA;EACP,OAAA;EACA,OAAA,EAAS,kBAAA;EACT,KAAA;IACE,OAAA;IACA,KAAA;IACA,IAAA;EAAA;AAAA;;;AHdJ;;;;AAAA,UIMiB,aAAA;;;;;;EAMf,MAAA,CAAO,KAAA,EAAO,QAAA;AAAA;;;cCJH,aAAA;EAAA,iBAGQ,QAAA;EAAA,iBAGA,SAAA;cAHA,QAAA,EAAU,QAAA,EAGV,SAAA,EAAW,aAAA;EAG9B,KAAA,CAAM,OAAA,UAAiB,OAAA,GAAU,UAAA;EAIjC,IAAA,CAAK,OAAA,UAAiB,OAAA,GAAU,UAAA;EAIhC,IAAA,CAAK,OAAA,UAAiB,OAAA,GAAU,UAAA;EAIhC,KAAA,CAAM,OAAA,UAAiB,KAAA,EAAO,KAAA,EAAO,OAAA,GAAU,UAAA;EAC/C,KAAA,CAAM,OAAA,UAAiB,OAAA,GAAU,UAAA;EAAA,QAezB,GAAA;EAAA,QAqBA,cAAA;EAAA,QAiBA,aAAA;EAAA,QAOA,cAAA;AAAA;;;;;;;;;;;;;;AJtFV;;;;cKca,aAAA,YAAyB,aAAA;EACpC,MAAA,CAAO,KAAA,EAAO,QAAA;AAAA;;;;;;;;;;;;;cCLH,eAAA,YAA2B,aAAA;EAAA,iBACrB,MAAA;EAAA,iBAOA,KAAA;EAEjB,MAAA,CAAO,KAAA,EAAO,QAAA;AAAA"}
|
|
@@ -1,93 +1,30 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as StratalEnv } from "./env-
|
|
3
|
-
import {
|
|
4
|
-
import { r as
|
|
1
|
+
import { Sn as AsyncModuleOptions, wn as DynamicModule, xr as ApplicationError } from "./index-DEncMcC6.mjs";
|
|
2
|
+
import { t as StratalEnv } from "./env-DKSbuBi5.mjs";
|
|
3
|
+
import { p as II18nService } from "./zod-DvWTfRpI.mjs";
|
|
4
|
+
import { r as LoggerService } from "./index-BtlE9RuO.mjs";
|
|
5
|
+
import { r as QueueMessage, t as ConsumerRegistry } from "./consumer-registry-DHQtypr1.mjs";
|
|
5
6
|
|
|
6
7
|
//#region src/queue/queue-manager.d.ts
|
|
7
|
-
/**
|
|
8
|
-
* Queue Manager
|
|
9
|
-
*
|
|
10
|
-
* Singleton service for processing queue message batches.
|
|
11
|
-
* Routes messages to consumers based on message type.
|
|
12
|
-
*
|
|
13
|
-
* **Message Routing:**
|
|
14
|
-
* - Consumers declare message types they handle (e.g., ['email.send'])
|
|
15
|
-
* - When a message arrives, consumers matching the message type are invoked
|
|
16
|
-
* - A consumer can handle messages from ANY queue (routing is by type, not queue)
|
|
17
|
-
*
|
|
18
|
-
* **Note:** For sending messages to queues, use IQueueSender instances
|
|
19
|
-
* obtained via @InjectQueue('queue-name') or module bindings.
|
|
20
|
-
*
|
|
21
|
-
* @example Processing a queue batch
|
|
22
|
-
* ```typescript
|
|
23
|
-
* // In Cloudflare Worker queue handler
|
|
24
|
-
* await queueManager.processBatch('notifications-queue', batch)
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
8
|
declare class QueueManager {
|
|
28
9
|
private readonly registry;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
*
|
|
33
|
-
* Routes messages to registered consumers based on message type.
|
|
34
|
-
* Uses ConsumerRegistry to find matching consumers.
|
|
35
|
-
*
|
|
36
|
-
* @param _queueName - Name of the queue (for logging, not used for routing)
|
|
37
|
-
* @param batch - Batch of messages from Cloudflare Queue
|
|
38
|
-
*/
|
|
39
|
-
processBatch(_queueName: string, batch: MessageBatch): Promise<void>;
|
|
10
|
+
private readonly logger;
|
|
11
|
+
constructor(registry: ConsumerRegistry, logger: LoggerService);
|
|
12
|
+
processBatch(queueName: string, batch: MessageBatch): Promise<void>;
|
|
40
13
|
}
|
|
41
14
|
//#endregion
|
|
42
|
-
//#region src/queue/queue-
|
|
15
|
+
//#region src/queue/queue-binding.d.ts
|
|
43
16
|
/**
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
* This file provides a type-safe queue naming system using module augmentation.
|
|
47
|
-
* Applications augment the QueueNames interface to get autocomplete for queue names.
|
|
48
|
-
*
|
|
49
|
-
* @example In apps/backend/src/types/queues.ts:
|
|
50
|
-
* ```typescript
|
|
51
|
-
* declare module 'stratal' {
|
|
52
|
-
* interface QueueNames {
|
|
53
|
-
* 'notifications-queue': true
|
|
54
|
-
* 'batch-notifications-queue': true
|
|
55
|
-
* }
|
|
56
|
-
* }
|
|
57
|
-
* ```
|
|
58
|
-
*
|
|
59
|
-
* When QueueNames is augmented, QueueName provides autocomplete.
|
|
60
|
-
* When not augmented, QueueName falls back to string for flexibility.
|
|
61
|
-
*/
|
|
62
|
-
/**
|
|
63
|
-
* Augmentable interface for queue names.
|
|
64
|
-
*
|
|
65
|
-
* Applications extend this interface via module augmentation to define
|
|
66
|
-
* their queue names. The keys become the valid queue name union type.
|
|
67
|
-
*
|
|
68
|
-
* @example
|
|
69
|
-
* ```typescript
|
|
70
|
-
* // In your application's type declarations
|
|
71
|
-
* declare module 'stratal' {
|
|
72
|
-
* interface QueueNames {
|
|
73
|
-
* 'notifications-queue': true
|
|
74
|
-
* 'batch-notifications-queue': true
|
|
75
|
-
* }
|
|
76
|
-
* }
|
|
77
|
-
* ```
|
|
17
|
+
* String keys of `StratalEnv` whose value type is `Queue`.
|
|
78
18
|
*/
|
|
79
|
-
|
|
19
|
+
type QueueBindingFromEnv = Extract<{ [K in keyof StratalEnv]: StratalEnv[K] extends Queue ? K : never }[keyof StratalEnv], string>;
|
|
80
20
|
/**
|
|
81
|
-
*
|
|
21
|
+
* Type-safe queue binding identifier.
|
|
82
22
|
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
* When QueueNames is empty (not augmented), falls back to string
|
|
88
|
-
* for flexibility during development or in non-typed contexts.
|
|
23
|
+
* Resolves to the union of `Queue`-typed binding keys on the augmented
|
|
24
|
+
* `StratalEnv`. Falls back to `string` when no `Queue` bindings are visible
|
|
25
|
+
* (e.g. library code compiled outside an app's env context).
|
|
89
26
|
*/
|
|
90
|
-
type
|
|
27
|
+
type QueueBinding = [QueueBindingFromEnv] extends [never] ? string : QueueBindingFromEnv;
|
|
91
28
|
//#endregion
|
|
92
29
|
//#region src/queue/queue-sender.interface.d.ts
|
|
93
30
|
/**
|
|
@@ -149,7 +86,7 @@ interface IQueueSender {
|
|
|
149
86
|
* @example Implementing a custom provider
|
|
150
87
|
* ```typescript
|
|
151
88
|
* export class CustomQueueProvider implements IQueueProvider {
|
|
152
|
-
* async send<T>(
|
|
89
|
+
* async send<T>(binding: string, message: QueueMessage<T>): Promise<void> {
|
|
153
90
|
* // Custom implementation
|
|
154
91
|
* }
|
|
155
92
|
* }
|
|
@@ -160,30 +97,27 @@ interface IQueueProvider {
|
|
|
160
97
|
* Send a message to a queue
|
|
161
98
|
*
|
|
162
99
|
* Provider handles the actual delivery mechanism:
|
|
163
|
-
* - CloudflareQueueProvider:
|
|
100
|
+
* - CloudflareQueueProvider: Looks up the binding on env and calls queue.send()
|
|
164
101
|
* - SyncQueueProvider: Finds matching consumers and calls handle() directly
|
|
165
102
|
*
|
|
166
|
-
* @param
|
|
103
|
+
* @param binding - Queue binding identifier
|
|
167
104
|
* @param message - Complete message with id, timestamp, and metadata
|
|
168
105
|
*/
|
|
169
|
-
send<T>(
|
|
106
|
+
send<T>(binding: string, message: QueueMessage<T>): Promise<void>;
|
|
170
107
|
}
|
|
171
108
|
//#endregion
|
|
172
109
|
//#region src/queue/providers/cloudflare-queue.provider.d.ts
|
|
173
110
|
/**
|
|
174
111
|
* Cloudflare Queue Provider
|
|
175
112
|
*
|
|
176
|
-
* Sends messages to Cloudflare Queues by resolving
|
|
177
|
-
* Used in production environments where Cloudflare Workers
|
|
178
|
-
*
|
|
179
|
-
* **Binding Resolution:**
|
|
180
|
-
* Queue names are converted to binding names:
|
|
181
|
-
* - `notifications-queue` → `NOTIFICATIONS_QUEUE`
|
|
113
|
+
* Sends messages to Cloudflare Queues by resolving the binding directly on
|
|
114
|
+
* the worker's `env`. Used in production environments where Cloudflare Workers
|
|
115
|
+
* handle queue processing.
|
|
182
116
|
*
|
|
183
117
|
* @example
|
|
184
118
|
* ```typescript
|
|
185
119
|
* const provider = new CloudflareQueueProvider(env)
|
|
186
|
-
* await provider.send('
|
|
120
|
+
* await provider.send('NOTIFICATIONS_QUEUE', message)
|
|
187
121
|
* ```
|
|
188
122
|
*/
|
|
189
123
|
declare class CloudflareQueueProvider implements IQueueProvider {
|
|
@@ -192,21 +126,11 @@ declare class CloudflareQueueProvider implements IQueueProvider {
|
|
|
192
126
|
/**
|
|
193
127
|
* Send a message to a Cloudflare Queue
|
|
194
128
|
*
|
|
195
|
-
* @param
|
|
129
|
+
* @param binding - Queue binding identifier (e.g., 'NOTIFICATIONS_QUEUE')
|
|
196
130
|
* @param message - Complete message with id, timestamp, and payload
|
|
197
|
-
* @throws {
|
|
198
|
-
*/
|
|
199
|
-
send<T>(queueName: string, message: QueueMessage<T>): Promise<void>;
|
|
200
|
-
/**
|
|
201
|
-
* Resolve queue binding from Cloudflare environment
|
|
202
|
-
*
|
|
203
|
-
* Converts kebab-case queue name to UPPER_SNAKE_CASE binding name.
|
|
204
|
-
*
|
|
205
|
-
* @param queueName - Queue name (e.g., 'notifications-queue')
|
|
206
|
-
* @returns Cloudflare Queue binding
|
|
207
|
-
* @throws {QueueBindingNotFoundError} If binding not found in env
|
|
131
|
+
* @throws {QueueError} If the binding is not configured on env
|
|
208
132
|
*/
|
|
209
|
-
|
|
133
|
+
send<T>(binding: string, message: QueueMessage<T>): Promise<void>;
|
|
210
134
|
}
|
|
211
135
|
//#endregion
|
|
212
136
|
//#region src/queue/providers/sync-queue.provider.d.ts
|
|
@@ -230,7 +154,7 @@ declare class CloudflareQueueProvider implements IQueueProvider {
|
|
|
230
154
|
* @example Testing with sync provider
|
|
231
155
|
* ```typescript
|
|
232
156
|
* const provider = new SyncQueueProvider(registry)
|
|
233
|
-
* await provider.send('
|
|
157
|
+
* await provider.send('NOTIFICATIONS_QUEUE', {
|
|
234
158
|
* id: '123',
|
|
235
159
|
* timestamp: Date.now(),
|
|
236
160
|
* type: 'email.send',
|
|
@@ -248,19 +172,19 @@ declare class SyncQueueProvider implements IQueueProvider {
|
|
|
248
172
|
* Finds all matching consumers by message type and calls their handle() method.
|
|
249
173
|
* If any consumer throws, onError() is called and the error is re-thrown.
|
|
250
174
|
*
|
|
251
|
-
* @param
|
|
175
|
+
* @param _binding - Queue binding (not used for routing, consumers match by message type)
|
|
252
176
|
* @param message - Complete message with id, timestamp, and payload
|
|
253
177
|
* @throws Re-throws any error from consumer.handle() after calling onError()
|
|
254
178
|
*/
|
|
255
|
-
send<T>(
|
|
179
|
+
send<T>(_binding: string, message: QueueMessage<T>): Promise<void>;
|
|
256
180
|
}
|
|
257
181
|
//#endregion
|
|
258
182
|
//#region src/queue/queue-sender.d.ts
|
|
259
183
|
/**
|
|
260
184
|
* Queue Sender
|
|
261
185
|
*
|
|
262
|
-
* Implementation of IQueueSender bound to a specific queue
|
|
263
|
-
* Created by QueueRegistry for each registered
|
|
186
|
+
* Implementation of IQueueSender bound to a specific queue binding.
|
|
187
|
+
* Created by QueueRegistry for each registered binding.
|
|
264
188
|
*
|
|
265
189
|
* Automatically enriches messages with:
|
|
266
190
|
* - `id`: UUID generated via crypto.randomUUID()
|
|
@@ -270,7 +194,7 @@ declare class SyncQueueProvider implements IQueueProvider {
|
|
|
270
194
|
* @example
|
|
271
195
|
* ```typescript
|
|
272
196
|
* // Created by QueueRegistry, not directly instantiated
|
|
273
|
-
* const sender = registry.getQueue('
|
|
197
|
+
* const sender = registry.getQueue('NOTIFICATIONS_QUEUE')
|
|
274
198
|
*
|
|
275
199
|
* await sender.dispatch({
|
|
276
200
|
* type: 'email.send',
|
|
@@ -279,10 +203,10 @@ declare class SyncQueueProvider implements IQueueProvider {
|
|
|
279
203
|
* ```
|
|
280
204
|
*/
|
|
281
205
|
declare class QueueSender implements IQueueSender {
|
|
282
|
-
private readonly
|
|
206
|
+
private readonly binding;
|
|
283
207
|
private readonly provider;
|
|
284
208
|
private readonly i18n;
|
|
285
|
-
constructor(
|
|
209
|
+
constructor(binding: string, provider: IQueueProvider, i18n: II18nService);
|
|
286
210
|
/**
|
|
287
211
|
* Dispatch a message to this queue.
|
|
288
212
|
*
|
|
@@ -324,24 +248,26 @@ declare class QueueModule {
|
|
|
324
248
|
*/
|
|
325
249
|
static forRootAsync(options: AsyncModuleOptions<QueueModuleOptions>): DynamicModule;
|
|
326
250
|
/**
|
|
327
|
-
* Register a queue for injection.
|
|
251
|
+
* Register a queue binding for injection.
|
|
328
252
|
*
|
|
329
|
-
* The
|
|
330
|
-
*
|
|
253
|
+
* The binding name doubles as the DI injection token and the
|
|
254
|
+
* `env`-lookup key. Binding names are typed against `StratalEnv`
|
|
255
|
+
* (autocomplete works once an app augments `StratalEnv` with its
|
|
256
|
+
* Cloudflare bindings).
|
|
331
257
|
*
|
|
332
|
-
* @param
|
|
258
|
+
* @param binding - Queue binding identifier (e.g. `NOTIFICATIONS_QUEUE`).
|
|
333
259
|
* @returns Dynamic module that provides the queue sender
|
|
334
260
|
*
|
|
335
261
|
* @example
|
|
336
262
|
* ```typescript
|
|
337
263
|
* // In AppModule imports
|
|
338
|
-
* QueueModule.registerQueue('
|
|
264
|
+
* QueueModule.registerQueue('NOTIFICATIONS_QUEUE')
|
|
339
265
|
*
|
|
340
|
-
* // Then inject using the
|
|
341
|
-
* constructor(@InjectQueue('
|
|
266
|
+
* // Then inject using the binding name
|
|
267
|
+
* constructor(@InjectQueue('NOTIFICATIONS_QUEUE') private queue: IQueueSender) {}
|
|
342
268
|
* ```
|
|
343
269
|
*/
|
|
344
|
-
static registerQueue(
|
|
270
|
+
static registerQueue(binding: QueueBinding): DynamicModule;
|
|
345
271
|
}
|
|
346
272
|
//#endregion
|
|
347
273
|
//#region src/queue/services/queue-provider-factory.d.ts
|
|
@@ -377,7 +303,7 @@ declare class QueueProviderFactory {
|
|
|
377
303
|
* Create a queue provider based on module configuration
|
|
378
304
|
*
|
|
379
305
|
* @returns Queue provider instance
|
|
380
|
-
* @throws {
|
|
306
|
+
* @throws {QueueError} If provider type is not supported
|
|
381
307
|
*/
|
|
382
308
|
create(): IQueueProvider;
|
|
383
309
|
}
|
|
@@ -387,10 +313,10 @@ declare class QueueProviderFactory {
|
|
|
387
313
|
* Queue Registry
|
|
388
314
|
*
|
|
389
315
|
* Request-scoped factory service for creating QueueSender instances.
|
|
390
|
-
* Caches senders per
|
|
316
|
+
* Caches senders per binding within the request scope.
|
|
391
317
|
*
|
|
392
318
|
* This service is used internally by QueueModule.registerQueue() to provide
|
|
393
|
-
* IQueueSender instances for each registered
|
|
319
|
+
* IQueueSender instances for each registered binding.
|
|
394
320
|
*
|
|
395
321
|
* **Why request-scoped?**
|
|
396
322
|
* - Needs access to I18nService for locale-aware message metadata
|
|
@@ -400,12 +326,12 @@ declare class QueueProviderFactory {
|
|
|
400
326
|
* @example
|
|
401
327
|
* ```typescript
|
|
402
328
|
* // Used internally by QueueModule.registerQueue()
|
|
403
|
-
* QueueModule.registerQueue('
|
|
329
|
+
* QueueModule.registerQueue('NOTIFICATIONS_QUEUE')
|
|
404
330
|
*
|
|
405
331
|
* // The module creates a factory provider:
|
|
406
332
|
* {
|
|
407
|
-
* provide: '
|
|
408
|
-
* useFactory: (registry: QueueRegistry) => registry.getQueue('
|
|
333
|
+
* provide: 'NOTIFICATIONS_QUEUE',
|
|
334
|
+
* useFactory: (registry: QueueRegistry) => registry.getQueue('NOTIFICATIONS_QUEUE'),
|
|
409
335
|
* inject: [QUEUE_TOKENS.QueueRegistry],
|
|
410
336
|
* }
|
|
411
337
|
* ```
|
|
@@ -416,34 +342,34 @@ declare class QueueRegistry {
|
|
|
416
342
|
private readonly senders;
|
|
417
343
|
constructor(providerFactory: QueueProviderFactory, i18n: II18nService);
|
|
418
344
|
/**
|
|
419
|
-
* Get or create a QueueSender for the specified
|
|
345
|
+
* Get or create a QueueSender for the specified binding.
|
|
420
346
|
*
|
|
421
|
-
* Senders are cached per
|
|
347
|
+
* Senders are cached per binding within the request scope.
|
|
422
348
|
*
|
|
423
|
-
* @param
|
|
424
|
-
* @returns QueueSender bound to the specified
|
|
349
|
+
* @param binding - The queue binding to get a sender for
|
|
350
|
+
* @returns QueueSender bound to the specified binding
|
|
425
351
|
*/
|
|
426
|
-
getQueue(
|
|
352
|
+
getQueue(binding: string): IQueueSender;
|
|
427
353
|
}
|
|
428
354
|
//#endregion
|
|
429
355
|
//#region src/queue/decorators/inject-queue.decorator.d.ts
|
|
430
356
|
/**
|
|
431
|
-
* Inject a queue sender by name.
|
|
357
|
+
* Inject a queue sender by binding name.
|
|
432
358
|
*
|
|
433
|
-
*
|
|
434
|
-
*
|
|
359
|
+
* The binding name matches the `binding` field declared under `queues.producers`
|
|
360
|
+
* in `wrangler.jsonc` (e.g. `BACKGROUND_QUEUE`). Stratal looks the binding up
|
|
361
|
+
* directly on the worker's `env`; the underlying Cloudflare queue can be any
|
|
362
|
+
* env-specific name (e.g. `background-queue-dev`) without affecting code.
|
|
435
363
|
*
|
|
436
|
-
* @param
|
|
364
|
+
* @param binding - Queue binding identifier (typed against `StratalEnv`).
|
|
437
365
|
* @returns Parameter decorator for constructor injection
|
|
438
366
|
*
|
|
439
367
|
* @example
|
|
440
368
|
* ```typescript
|
|
441
|
-
* // Direct injection by queue name
|
|
442
369
|
* constructor(
|
|
443
|
-
* @InjectQueue('
|
|
370
|
+
* @InjectQueue('NOTIFICATIONS_QUEUE') private queue: IQueueSender
|
|
444
371
|
* ) {}
|
|
445
372
|
*
|
|
446
|
-
* // Usage
|
|
447
373
|
* await this.queue.dispatch({
|
|
448
374
|
* type: 'email.send',
|
|
449
375
|
* payload: { to: 'user@example.com', subject: 'Hello' }
|
|
@@ -451,11 +377,11 @@ declare class QueueRegistry {
|
|
|
451
377
|
* ```
|
|
452
378
|
*
|
|
453
379
|
* @remarks
|
|
454
|
-
* The
|
|
455
|
-
* For module-internal
|
|
456
|
-
* `useExisting` provider binding instead.
|
|
380
|
+
* The binding must be registered via `QueueModule.registerQueue(binding)`
|
|
381
|
+
* before injection. For module-internal bindings (e.g. EmailModule),
|
|
382
|
+
* use `@inject(TOKEN)` with `useExisting` provider binding instead.
|
|
457
383
|
*/
|
|
458
|
-
declare function InjectQueue(
|
|
384
|
+
declare function InjectQueue(binding: QueueBinding): ParameterDecorator;
|
|
459
385
|
//#endregion
|
|
460
386
|
//#region src/queue/queue.tokens.d.ts
|
|
461
387
|
declare const QUEUE_TOKENS: {
|
|
@@ -465,30 +391,8 @@ declare const QUEUE_TOKENS: {
|
|
|
465
391
|
};
|
|
466
392
|
type QueueToken = (typeof QUEUE_TOKENS)[keyof typeof QUEUE_TOKENS];
|
|
467
393
|
//#endregion
|
|
468
|
-
//#region src/queue/
|
|
469
|
-
|
|
470
|
-
* QueueBindingNotFoundError
|
|
471
|
-
*
|
|
472
|
-
* Thrown when attempting to access a Cloudflare Queue binding that hasn't been configured.
|
|
473
|
-
* This typically indicates that the queue binding is missing from wrangler.jsonc
|
|
474
|
-
* or the environment variables are not properly set.
|
|
475
|
-
*/
|
|
476
|
-
declare class QueueBindingNotFoundError extends ApplicationError {
|
|
477
|
-
constructor(queueName: string, bindingName: string);
|
|
478
|
-
}
|
|
479
|
-
//#endregion
|
|
480
|
-
//#region src/queue/errors/queue-provider-not-supported.error.d.ts
|
|
481
|
-
/**
|
|
482
|
-
* QueueProviderNotSupportedError
|
|
483
|
-
*
|
|
484
|
-
* Thrown when attempting to use a queue provider that is not supported.
|
|
485
|
-
* Valid providers are: 'cloudflare', 'sync'
|
|
486
|
-
*
|
|
487
|
-
* This typically indicates an invalid QUEUE_PROVIDER environment variable.
|
|
488
|
-
*/
|
|
489
|
-
declare class QueueProviderNotSupportedError extends ApplicationError {
|
|
490
|
-
constructor(provider: string);
|
|
491
|
-
}
|
|
394
|
+
//#region src/queue/queue.error.d.ts
|
|
395
|
+
declare class QueueError extends ApplicationError {}
|
|
492
396
|
//#endregion
|
|
493
|
-
export {
|
|
494
|
-
//# sourceMappingURL=index-
|
|
397
|
+
export { QueueRegistry as a, QueueModuleOptions as c, CloudflareQueueProvider as d, IQueueProvider as f, QueueManager as g, QueueBinding as h, InjectQueue as i, QueueSender as l, IQueueSender as m, QUEUE_TOKENS as n, QueueProviderFactory as o, DispatchMessage as p, QueueToken as r, QueueModule as s, QueueError as t, SyncQueueProvider as u };
|
|
398
|
+
//# sourceMappingURL=index-CW1YHSft.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-CW1YHSft.d.mts","names":[],"sources":["../src/queue/queue-manager.ts","../src/queue/queue-binding.ts","../src/queue/queue-sender.interface.ts","../src/queue/providers/queue-provider.interface.ts","../src/queue/providers/cloudflare-queue.provider.ts","../src/queue/providers/sync-queue.provider.ts","../src/queue/queue-sender.ts","../src/queue/queue.module.ts","../src/queue/services/queue-provider-factory.ts","../src/queue/queue-registry.ts","../src/queue/decorators/inject-queue.decorator.ts","../src/queue/queue.tokens.ts","../src/queue/queue.error.ts"],"mappings":";;;;;;;cAQa,YAAA;EAAA,iBAE4C,QAAA;EAAA,iBACC,MAAA;cADD,QAAA,EAAU,gBAAA,EACT,MAAA,EAAQ,aAAA;EAG1D,YAAA,CAAa,SAAA,UAAmB,KAAA,EAAO,YAAA,GAAe,OAAA;AAAA;;;;;;KCUzD,mBAAA,GAAsB,OAAA,eACX,UAAA,GAAa,UAAA,CAAW,CAAA,UAAW,KAAA,GAAQ,CAAA,iBAAkB,UAAA;;;;;;;;KAWjE,YAAA,IAAgB,mBAAA,6BAExB,mBAAA;;;;;;;;;KC9BQ,eAAA,gBAA+B,IAAA,CAAK,YAAA,CAAa,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;UA0B5C,YAAA;EDVZ;;;;;;;;;;ECqBH,QAAA,IAAY,OAAA,EAAS,eAAA,CAAgB,CAAA,IAAK,OAAA;AAAA;;;;;;;;;AFtC5C;;;;;;;;;;;;;UGciB,cAAA;EHViD;;;;;;;;;;EGqBhE,IAAA,IAAQ,OAAA,UAAiB,OAAA,EAAS,YAAA,CAAa,CAAA,IAAK,OAAA;AAAA;;;;;;;AHzBtD;;;;;;;;;cIea,uBAAA,YAAmC,cAAA;EAAA,iBAEM,GAAA;cAAA,GAAA,EAAK,UAAA;EJdQ;;;;;;;EIwB3D,IAAA,GAAA,CAAQ,OAAA,UAAiB,OAAA,EAAS,YAAA,CAAa,CAAA,IAAK,OAAA;AAAA;;;;;;;AJ3B5D;;;;;;;;;;;;;;;;;;;;;;;;;cK8Ba,iBAAA,YAA6B,cAAA;EAAA,iBAEe,QAAA;cAAA,QAAA,EAAU,gBAAA;;;;;;;;;;;EAa3D,IAAA,GAAA,CAAQ,QAAA,UAAkB,OAAA,EAAS,YAAA,CAAa,CAAA,IAAK,OAAA;AAAA;;;;;;;AL7C7D;;;;;;;;;;;;;;;;;;cMoBa,WAAA,YAAuB,YAAA;EAAA,iBAEf,OAAA;EAAA,iBACA,QAAA;EAAA,iBACA,IAAA;cAFA,OAAA,UACA,QAAA,EAAU,cAAA,EACV,IAAA,EAAM,YAAA;;;;ALZa;;EKoBhC,QAAA,GAAA,CAAY,OAAA,EAAS,eAAA,CAAgB,CAAA,IAAK,OAAA;AAAA;;;;;;UCCjC,kBAAA;;ANrBuB;;;;EM2BtC,QAAA;AAAA;AAAA,cAUW,WAAA;EN/B8C;;;;;;;;;;;;;;;AAW3D;;;EAX2D,OMkDlD,YAAA,CAAa,OAAA,EAAS,kBAAA,CAAmB,kBAAA,IAAsB,aAAA;ENrCjD;;;;AC9BvB;;;;;;;;;;;;;;AA0BA;;EDIuB,OMsEd,aAAA,CAAc,OAAA,EAAS,YAAA,GAAe,aAAA;AAAA;;;;;;APrG/C;;;;;;;;;;;;;;;;;;;;cQ2Ba,oBAAA;EAAA,iBAEyC,GAAA;EAAA,iBACG,QAAA;EAAA,iBAC2B,OAAA;cAF9B,GAAA,EAAK,UAAA,EACF,QAAA,EAAU,gBAAA,EACiB,OAAA,GAAU,kBAAA;;APnBtD;;;;;EO4BtC,MAAA,CAAA,GAAU,cAAA;AAAA;;;;;;;ARxCZ;;;;;;;;;;;;;;;;;;;;;;;cS+Ba,aAAA;EAAA,iBAMyC,IAAA;EAAA,iBALnC,QAAA;EAAA,iBACA,OAAA;cAG4B,eAAA,EAAiB,oBAAA,EACV,IAAA,EAAM,YAAA;;;;;;;;;EAa1D,QAAA,CAAS,OAAA,WAAkB,YAAA;AAAA;;;;;;;;;ATlD7B;;;;;;;;;;;;;;;;;;;;;;iBUwBgB,WAAA,CAAY,OAAA,EAAS,YAAA,GAAe,kBAAA;;;cC/BvC,YAAA;EAAA;;;;KAMD,UAAA,WAAqB,YAAA,eAA2B,YAAA;;;cCJ/C,UAAA,SAAmB,gBAAA"}
|