stratal 0.0.19 → 0.0.20
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/dist/{base-email.provider-mjynzewK.mjs → base-email.provider-CfQCA08m.mjs} +1 -1
- package/dist/{base-email.provider-mjynzewK.mjs.map → base-email.provider-CfQCA08m.mjs.map} +1 -1
- package/dist/bin/quarry.mjs +6 -0
- package/dist/bin/quarry.mjs.map +1 -1
- package/dist/cache/index.d.mts +2 -154
- package/dist/cache/index.d.mts.map +1 -1
- package/dist/cache/index.mjs +3 -5
- package/dist/cache/index.mjs.map +1 -1
- package/dist/cache.service-DsnKuNyO.d.mts +156 -0
- package/dist/cache.service-DsnKuNyO.d.mts.map +1 -0
- package/dist/cache.tokens-B7Rw1C9Q.mjs +6 -0
- package/dist/cache.tokens-B7Rw1C9Q.mjs.map +1 -0
- package/dist/{command-DsQq56Lp.d.mts → command-Bu-PjJrX.d.mts} +2 -2
- package/dist/{command-DsQq56Lp.d.mts.map → command-Bu-PjJrX.d.mts.map} +1 -1
- package/dist/config/index.d.mts +3 -3
- package/dist/config/index.mjs +2 -2
- package/dist/{consumer-registry-Doom7BEh.d.mts → consumer-registry-B7yUNh0q.d.mts} +1 -1
- package/dist/{consumer-registry-Doom7BEh.d.mts.map → consumer-registry-B7yUNh0q.d.mts.map} +1 -1
- package/dist/{controller.decorator-LZY9aHYG.mjs → controller.decorator-DQzenvSN.mjs} +2 -2
- package/dist/{controller.decorator-LZY9aHYG.mjs.map → controller.decorator-DQzenvSN.mjs.map} +1 -1
- package/dist/cron/index.d.mts +2 -2
- package/dist/cron/index.mjs +1 -1
- package/dist/{cron-manager-C30t9UZM.mjs → cron-manager-7Symz_TE.mjs} +2 -2
- package/dist/{cron-manager-C30t9UZM.mjs.map → cron-manager-7Symz_TE.mjs.map} +1 -1
- package/dist/{cron-manager-RuPtFVLy.d.mts → cron-manager-BEsH1mjW.d.mts} +3 -3
- package/dist/{cron-manager-RuPtFVLy.d.mts.map → cron-manager-BEsH1mjW.d.mts.map} +1 -1
- package/dist/di/index.d.mts +1 -1
- package/dist/di/index.mjs +1 -1
- package/dist/email/index.d.mts +3 -3
- package/dist/email/index.mjs +7 -7
- package/dist/{en-rHmW6vD9.mjs → en-DSH_bhh6.mjs} +7 -1
- package/dist/en-DSH_bhh6.mjs.map +1 -0
- package/dist/{env-CamWD-U1.d.mts → env-D1rcZ8_r.d.mts} +1 -1
- package/dist/env-D1rcZ8_r.d.mts.map +1 -0
- package/dist/errors/index.d.mts +1 -1
- package/dist/errors/index.mjs +1 -1
- package/dist/{errors-B4pYgYON.mjs → errors-BdyV5PnY.mjs} +20 -9
- package/dist/errors-BdyV5PnY.mjs.map +1 -0
- package/dist/{errors-BUyUfr2Z.mjs → errors-Da3Pz2X7.mjs} +2 -2
- package/dist/{errors-BUyUfr2Z.mjs.map → errors-Da3Pz2X7.mjs.map} +1 -1
- package/dist/events/index.d.mts +2 -2
- package/dist/{gateway-context-cqZ8wMoi.mjs → gateway-context-CdJjpUCW.mjs} +4 -8
- package/dist/{gateway-context-cqZ8wMoi.mjs.map → gateway-context-CdJjpUCW.mjs.map} +1 -1
- package/dist/guards/index.d.mts +3 -3
- package/dist/guards/index.mjs +1 -1
- package/dist/{guards-DMbsAxSX.mjs → guards-DUk_Kzst.mjs} +1 -1
- package/dist/{guards-DMbsAxSX.mjs.map → guards-DUk_Kzst.mjs.map} +1 -1
- package/dist/{http-method.decorator-BT3ufnz8.mjs → http-method.decorator-DXwxAfb_.mjs} +3 -3
- package/dist/{http-method.decorator-BT3ufnz8.mjs.map → http-method.decorator-DXwxAfb_.mjs.map} +1 -1
- package/dist/i18n/index.d.mts +2 -2
- package/dist/i18n/index.mjs +2 -2
- package/dist/i18n/messages/en/index.d.mts +1 -1
- package/dist/i18n/messages/en/index.mjs +1 -1
- package/dist/i18n/utils/index.mjs +1 -1
- package/dist/i18n/validation/index.d.mts +2 -2
- package/dist/i18n/validation/index.mjs +2 -2
- package/dist/{i18n.module-CI_prYFD.mjs → i18n.module-BBlNNlcG.mjs} +191 -39
- package/dist/i18n.module-BBlNNlcG.mjs.map +1 -0
- package/dist/{index-SHx31sBJ.d.mts → index-7-hU3GTV.d.mts} +1 -1
- package/dist/{index-SHx31sBJ.d.mts.map → index-7-hU3GTV.d.mts.map} +1 -1
- package/dist/{index-B437eK7p.d.mts → index-Bnpfq6uk.d.mts} +58 -10
- package/dist/index-Bnpfq6uk.d.mts.map +1 -0
- package/dist/{index-DFhEeFfC.d.mts → index-C1KvMncZ.d.mts} +7 -1
- package/dist/{index-DFhEeFfC.d.mts.map → index-C1KvMncZ.d.mts.map} +1 -1
- package/dist/{index-Dnqm9ZB6.d.mts → index-CjaQ6_tZ.d.mts} +5 -5
- package/dist/{index-Dnqm9ZB6.d.mts.map → index-CjaQ6_tZ.d.mts.map} +1 -1
- package/dist/{index-DPFqRs8L.d.mts → index-D0US0X14.d.mts} +313 -204
- package/dist/index-D0US0X14.d.mts.map +1 -0
- package/dist/{index-CWRS7Ri3.d.mts → index-DBd_2wv8.d.mts} +1 -1
- package/dist/{index-CWRS7Ri3.d.mts.map → index-DBd_2wv8.d.mts.map} +1 -1
- package/dist/index.d.mts +3 -3
- package/dist/index.mjs +1 -1
- package/dist/logger/index.d.mts +1 -1
- package/dist/macroable/index.d.mts +1 -1
- package/dist/module/index.d.mts +2 -2
- package/dist/module/index.mjs +1 -1
- package/dist/{module-qGE_1duv.mjs → module-Dk2qTa77.mjs} +132 -4
- package/dist/module-Dk2qTa77.mjs.map +1 -0
- package/dist/openapi/index.d.mts +3 -3
- package/dist/openapi/index.mjs +2 -2
- package/dist/{openapi-tools.service-CYWGuhue.mjs → openapi-tools.service-Zs-Ewv7F.mjs} +1 -1
- package/dist/{openapi-tools.service-CYWGuhue.mjs.map → openapi-tools.service-Zs-Ewv7F.mjs.map} +1 -1
- package/dist/{openapi.service-Bv_NioM9.d.mts → openapi.service-BLgvn3hJ.d.mts} +3 -3
- package/dist/{openapi.service-Bv_NioM9.d.mts.map → openapi.service-BLgvn3hJ.d.mts.map} +1 -1
- package/dist/quarry/index.d.mts +6 -6
- package/dist/quarry/index.mjs +2 -2
- package/dist/{quarry-registry-DFfRRkA7.mjs → quarry-registry-DNEej-Db.mjs} +5 -5
- package/dist/{quarry-registry-DFfRRkA7.mjs.map → quarry-registry-DNEej-Db.mjs.map} +1 -1
- package/dist/queue/index.d.mts +2 -2
- package/dist/queue/index.mjs +1 -1
- package/dist/{queue.module-P-G-nCYz.mjs → queue.module-BCdCiySt.mjs} +3 -3
- package/dist/{queue.module-P-G-nCYz.mjs.map → queue.module-BCdCiySt.mjs.map} +1 -1
- package/dist/{r2-storage.provider-LdzK9tfG.mjs → r2-storage.provider-Co6F0ZYV.mjs} +3 -3
- package/dist/{r2-storage.provider-LdzK9tfG.mjs.map → r2-storage.provider-Co6F0ZYV.mjs.map} +1 -1
- package/dist/rate-limit.decorator--o6Q6p9w.mjs +55 -0
- package/dist/rate-limit.decorator--o6Q6p9w.mjs.map +1 -0
- package/dist/rate-limiter/index.d.mts +420 -0
- package/dist/rate-limiter/index.d.mts.map +1 -0
- package/dist/rate-limiter/index.mjs +365 -0
- package/dist/rate-limiter/index.mjs.map +1 -0
- package/dist/{resend.provider-bwILp0WI.mjs → resend.provider-M6qRLrcy.mjs} +2 -2
- package/dist/{resend.provider-bwILp0WI.mjs.map → resend.provider-M6qRLrcy.mjs.map} +1 -1
- package/dist/router/index.d.mts +2 -2
- package/dist/router/index.mjs +6 -6
- package/dist/seeder/index.d.mts +3 -3
- package/dist/seeder/index.mjs +1 -1
- package/dist/{seeder-BcqIFa2X.mjs → seeder-CJAOHEIo.mjs} +2 -2
- package/dist/{seeder-BcqIFa2X.mjs.map → seeder-CJAOHEIo.mjs.map} +1 -1
- package/dist/{setup-CtekcwuO.mjs → setup-CefZKV_e.mjs} +1 -1
- package/dist/{setup-CtekcwuO.mjs.map → setup-CefZKV_e.mjs.map} +1 -1
- package/dist/{signed-url-COX7cCWR.mjs → signed-url-BQPbv2In.mjs} +1 -1
- package/dist/{signed-url-COX7cCWR.mjs.map → signed-url-BQPbv2In.mjs.map} +1 -1
- package/dist/{smtp.provider-B07yuARi.mjs → smtp.provider-w0Ve52Xg.mjs} +2 -2
- package/dist/{smtp.provider-B07yuARi.mjs.map → smtp.provider-w0Ve52Xg.mjs.map} +1 -1
- package/dist/storage/index.d.mts +3 -3
- package/dist/storage/index.mjs +2 -2
- package/dist/storage/providers/index.d.mts +2 -2
- package/dist/storage/providers/index.mjs +1 -1
- package/dist/{storage-P6X4h9So.mjs → storage-1zw-6Yiz.mjs} +8 -8
- package/dist/{storage-P6X4h9So.mjs.map → storage-1zw-6Yiz.mjs.map} +1 -1
- package/dist/{storage-provider.interface-CC1nniHk.d.mts → storage-provider.interface-Bd6vA4ak.d.mts} +2 -2
- package/dist/{storage-provider.interface-CC1nniHk.d.mts.map → storage-provider.interface-Bd6vA4ak.d.mts.map} +1 -1
- package/dist/{stratal-BCiwCFN9.mjs → stratal-DeEcGgdq.mjs} +8 -8
- package/dist/stratal-DeEcGgdq.mjs.map +1 -0
- package/dist/{types-DIWemRad.d.mts → types-cySNS_lp.d.mts} +1 -1
- package/dist/types-cySNS_lp.d.mts.map +1 -0
- package/dist/{usage-generator-MBcRo0Q2.mjs → usage-generator-BUdlhnCK.mjs} +1 -1
- package/dist/{usage-generator-MBcRo0Q2.mjs.map → usage-generator-BUdlhnCK.mjs.map} +1 -1
- package/dist/{validation-Dbg3ehdP.mjs → validation-DtJwAv7O.mjs} +62 -8
- package/dist/validation-DtJwAv7O.mjs.map +1 -0
- package/dist/websocket/index.d.mts +8 -3
- package/dist/websocket/index.d.mts.map +1 -1
- package/dist/websocket/index.mjs +1 -1
- package/dist/workers/index.d.mts +2 -2
- package/dist/workers/index.mjs +1 -1
- package/package.json +10 -6
- package/dist/en-rHmW6vD9.mjs.map +0 -1
- package/dist/env-CamWD-U1.d.mts.map +0 -1
- package/dist/errors-B4pYgYON.mjs.map +0 -1
- package/dist/i18n.module-CI_prYFD.mjs.map +0 -1
- package/dist/index-B437eK7p.d.mts.map +0 -1
- package/dist/index-DPFqRs8L.d.mts.map +0 -1
- package/dist/module-qGE_1duv.mjs.map +0 -1
- package/dist/stratal-BCiwCFN9.mjs.map +0 -1
- package/dist/types-DIWemRad.d.mts.map +0 -1
- package/dist/validation-Dbg3ehdP.mjs.map +0 -1
package/dist/config/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Cn as
|
|
2
|
-
import { t as Macroable } from "../index-
|
|
3
|
-
import { o as z } from "../index-
|
|
1
|
+
import { Cn as ModuleContext, En as OnInitialize, bn as FactoryProvider, vn as DynamicModule } from "../index-D0US0X14.mjs";
|
|
2
|
+
import { t as Macroable } from "../index-7-hU3GTV.mjs";
|
|
3
|
+
import { o as z } from "../index-Bnpfq6uk.mjs";
|
|
4
4
|
import { InjectionToken } from "tsyringe";
|
|
5
5
|
|
|
6
6
|
//#region src/config/config.tokens.d.ts
|
package/dist/config/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { A as Scope, H as ApplicationError, k as ERROR_CODES } from "../errors-
|
|
1
|
+
import { A as Scope, H as ApplicationError, k as ERROR_CODES } from "../errors-BdyV5PnY.mjs";
|
|
2
2
|
import { a as __decorate, f as DI_TOKENS, o as __decorateParam, p as Transient, s as __decorateMetadata } from "../logger-V6Ms3QnQ.mjs";
|
|
3
3
|
import { t as Macroable } from "../macroable-BmufBshB.mjs";
|
|
4
|
-
import {
|
|
4
|
+
import { k as Module } from "../module-Dk2qTa77.mjs";
|
|
5
5
|
import { inject } from "tsyringe";
|
|
6
6
|
//#region src/config/config.tokens.ts
|
|
7
7
|
const CONFIG_TOKENS = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumer-registry-
|
|
1
|
+
{"version":3,"file":"consumer-registry-B7yUNh0q.d.mts","names":[],"sources":["../src/queue/queue-consumer.ts","../src/queue/consumer-registry.ts"],"mappings":";;AAMA;;;;;UAAiB,YAAA;EAIf;EAFA,EAAA;EAMA;EAJA,SAAA;EAMA;EAJA,IAAA;EAMG;EAJH,OAAA,EAAS,CAAA;EAIK;EAFd,QAAA;IACE,MAAA;IAAA,CACC,GAAA;EAAA;AAAA;;;;;;;;;;;;;;;;;;;UAsBY,cAAA;EAsBQ;;;;;;EAAA,SAfd,YAAA;ECXE;;;;;EDkBX,MAAA,CAAO,OAAA,EAAS,YAAA,CAAa,CAAA,IAAK,OAAA;ECqDD;;;;;;ED7CjC,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,OAAA,EAAS,YAAA,CAAa,CAAA,IAAK,OAAA;AAAA;;;AAxDpD;;;;;;;;;;;;;;;AAkCA;;;;;;;;;;;;;;;;AAlCA,cC8Ba,gBAAA;EDkBJ;EAAA,QChBC,eAAA;EDwBR;EAAA,QCrBQ,YAAA;EDqBC;;;;;;;ECZT,QAAA,CAAS,QAAA,EAAU,cAAA;;;AAfrB;;;;;;;;EAuCE,YAAA,CAAa,WAAA,WAAsB,cAAA;EAjC3B;;;;;;EAgDR,YAAA,CAAa,WAAA;EAAb;;;;;EASA,eAAA,CAAA;EASiC;;;;;EAAjC,eAAA,CAAA,GAAmB,cAAA;AAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { f as ROUTE_METADATA_KEYS } from "./errors-
|
|
1
|
+
import { f as ROUTE_METADATA_KEYS } from "./errors-BdyV5PnY.mjs";
|
|
2
2
|
import { p as Transient } from "./logger-V6Ms3QnQ.mjs";
|
|
3
3
|
//#region src/router/decorators/controller.decorator.ts
|
|
4
4
|
const CONTROLLER_ROUTE_KEY = ROUTE_METADATA_KEYS.CONTROLLER_ROUTE;
|
|
@@ -63,4 +63,4 @@ function getControllerVersion(target) {
|
|
|
63
63
|
//#endregion
|
|
64
64
|
export { getControllerVersion as i, getControllerOptions as n, getControllerRoute as r, Controller as t };
|
|
65
65
|
|
|
66
|
-
//# sourceMappingURL=controller.decorator-
|
|
66
|
+
//# sourceMappingURL=controller.decorator-DQzenvSN.mjs.map
|
package/dist/{controller.decorator-LZY9aHYG.mjs.map → controller.decorator-DQzenvSN.mjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.decorator-
|
|
1
|
+
{"version":3,"file":"controller.decorator-DQzenvSN.mjs","names":[],"sources":["../src/router/decorators/controller.decorator.ts"],"sourcesContent":["import { Transient } from '../../di/decorators'\nimport { type Constructor } from '../../types'\nimport { ROUTE_METADATA_KEYS } from '../constants'\nimport { type ControllerOptions } from '../types'\n\nconst CONTROLLER_ROUTE_KEY = ROUTE_METADATA_KEYS.CONTROLLER_ROUTE\n\n/**\n * Base controller decorator for route registration\n *\n * This is the core controller decorator that handles:\n * - Transient scope registration (request-scoped)\n * - Route metadata storage\n * - Controller options (tags, security schemes, hideFromDocs)\n *\n * @param route - Base route for this controller (e.g., '/api/v1/users')\n * @param options - Optional configuration (tags, security schemes, hideFromDocs)\n *\n * @example\n * ```typescript\n * import { Controller } from 'stratal/router'\n *\n * @Controller('/api/v1/users', { tags: ['Users'] })\n * export class UsersController implements IController {\n * // All routes accessible\n * }\n * ```\n */\nexport function Controller(route: string, options?: ControllerOptions) {\n return function <T extends Constructor>(target: T) {\n // Wrap @Transient (handles @injectable and scope metadata)\n Transient()(target)\n\n // Store route metadata on the class\n Reflect.defineMetadata(CONTROLLER_ROUTE_KEY, route, target)\n\n // Store options metadata if provided\n if (options) {\n Reflect.defineMetadata(ROUTE_METADATA_KEYS.CONTROLLER_OPTIONS, options, target)\n }\n\n return target\n }\n}\n\n/**\n * Get the route from controller class metadata\n *\n * @param target - Controller class or instance\n * @returns Route string or undefined if not set\n */\nexport function getControllerRoute(target: object): string | undefined {\n // Check if target is a class constructor (function) or an instance\n // If class, get metadata from it directly; if instance, get from constructor\n const metadataTarget = typeof target === 'function' ? target : (target as { constructor: object }).constructor\n return Reflect.getMetadata(CONTROLLER_ROUTE_KEY, metadataTarget) as string | undefined\n}\n\n/**\n * Get the options from controller class metadata\n *\n * @param target - Controller class or instance\n * @returns Controller options or undefined if not set\n */\nexport function getControllerOptions(target: object): ControllerOptions | undefined {\n const metadataTarget = typeof target === 'function' ? target : (target as { constructor: object }).constructor\n return Reflect.getMetadata(ROUTE_METADATA_KEYS.CONTROLLER_OPTIONS, metadataTarget) as ControllerOptions | undefined\n}\n\n/**\n * Get the version from controller class metadata\n *\n * @param target - Controller class or instance\n * @returns Version string, array, VERSION_NEUTRAL symbol, or undefined if not set\n */\nexport function getControllerVersion(target: object): ControllerOptions['version'] {\n const options = getControllerOptions(target)\n return options?.version\n}\n"],"mappings":";;;AAKA,MAAM,uBAAuB,oBAAoB;;;;;;;;;;;;;;;;;;;;;;AAuBjD,SAAgB,WAAW,OAAe,SAA6B;AACrE,QAAO,SAAiC,QAAW;AAEjD,aAAW,CAAC,OAAO;AAGnB,UAAQ,eAAe,sBAAsB,OAAO,OAAO;AAG3D,MAAI,QACF,SAAQ,eAAe,oBAAoB,oBAAoB,SAAS,OAAO;AAGjF,SAAO;;;;;;;;;AAUX,SAAgB,mBAAmB,QAAoC;CAGrE,MAAM,iBAAiB,OAAO,WAAW,aAAa,SAAU,OAAmC;AACnG,QAAO,QAAQ,YAAY,sBAAsB,eAAe;;;;;;;;AASlE,SAAgB,qBAAqB,QAA+C;CAClF,MAAM,iBAAiB,OAAO,WAAW,aAAa,SAAU,OAAmC;AACnG,QAAO,QAAQ,YAAY,oBAAoB,oBAAoB,eAAe;;;;;;;;AASpF,SAAgB,qBAAqB,QAA8C;AAEjF,QADgB,qBAAqB,OACvB,EAAE"}
|
package/dist/cron/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { d as ApplicationError } from "../index-
|
|
2
|
-
import { n as CronJob, r as RegisteredJob, t as CronManager } from "../cron-manager-
|
|
1
|
+
import { d as ApplicationError } from "../index-D0US0X14.mjs";
|
|
2
|
+
import { n as CronJob, r as RegisteredJob, t as CronManager } from "../cron-manager-BEsH1mjW.mjs";
|
|
3
3
|
import { ScheduledController } from "@cloudflare/workers-types";
|
|
4
4
|
|
|
5
5
|
//#region src/cron/errors/cron-execution.error.d.ts
|
package/dist/cron/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as CronExecutionError, t as CronManager } from "../cron-manager-
|
|
1
|
+
import { n as CronExecutionError, t as CronManager } from "../cron-manager-7Symz_TE.mjs";
|
|
2
2
|
export { CronExecutionError, CronManager };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { H as ApplicationError, k as ERROR_CODES } from "./errors-
|
|
1
|
+
import { H as ApplicationError, k as ERROR_CODES } from "./errors-BdyV5PnY.mjs";
|
|
2
2
|
import { a as __decorate, p as Transient } from "./logger-V6Ms3QnQ.mjs";
|
|
3
3
|
//#region src/cron/errors/cron-execution.error.ts
|
|
4
4
|
/**
|
|
@@ -114,4 +114,4 @@ CronManager = __decorate([Transient()], CronManager);
|
|
|
114
114
|
//#endregion
|
|
115
115
|
export { CronExecutionError as n, CronManager as t };
|
|
116
116
|
|
|
117
|
-
//# sourceMappingURL=cron-manager-
|
|
117
|
+
//# sourceMappingURL=cron-manager-7Symz_TE.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cron-manager-
|
|
1
|
+
{"version":3,"file":"cron-manager-7Symz_TE.mjs","names":[],"sources":["../src/cron/errors/cron-execution.error.ts","../src/cron/cron-manager.ts"],"sourcesContent":["import { ApplicationError } from '../../errors'\nimport { ERROR_CODES } from '../../errors'\n\n/**\n * Error thrown when one or more cron jobs fail execution\n *\n * This error aggregates failures from multiple jobs that share the same schedule.\n */\nexport class CronExecutionError extends ApplicationError {\n\tconstructor(\n\t\tschedule: string,\n\t\tfailedJobsCount: number,\n\t\tjobNames: string\n\t) {\n\t\tsuper(\n\t\t\t'errors.cronExecutionFailed',\n\t\t\tERROR_CODES.SYSTEM.CRON_EXECUTION_FAILED,\n\t\t\t{\n\t\t\t\tschedule,\n\t\t\t\tcount: failedJobsCount,\n\t\t\t\tjobs: jobNames\n\t\t\t}\n\t\t)\n\t}\n}\n","import type { Container } from '../di/container'\nimport { Transient } from '../di/decorators'\nimport type { CronJob, RegisteredJob } from './cron-job'\nimport { CronExecutionError } from './errors/cron-execution.error'\n\n/**\n * Manages cron job registration and execution\n *\n * CronManager is a singleton service that:\n * - Registers cron job class references from modules\n * - Routes scheduled events to matching jobs\n * - Resolves jobs from a request-scoped container at execution time\n *\n * Jobs are grouped by their cron expression, allowing multiple jobs\n * to run on the same schedule.\n */\n@Transient()\nexport class CronManager {\n\t/**\n\t * Map of cron expressions to registered job entries\n\t * Key: Cron expression (e.g., '0 2 * * *')\n\t * Value: Array of registered jobs (class ref + schedule)\n\t */\n\tprivate jobs = new Map<string, RegisteredJob[]>()\n\n\t/**\n\t * Register a cron job class\n\t *\n\t * Jobs with the same schedule are grouped together and executed\n\t * sequentially when the trigger fires.\n\t *\n\t * @param schedule - Cron expression (e.g., '0 2 * * *')\n\t * @param jobClass - CronJob class constructor (resolved at execution time)\n\t */\n\tregisterJob(schedule: string, jobClass: RegisteredJob['jobClass']): void {\n\t\tconst existing = this.jobs.get(schedule) ?? []\n\t\texisting.push({ schedule, jobClass })\n\t\tthis.jobs.set(schedule, existing)\n\t}\n\n\t/**\n\t * Execute all jobs matching the triggered cron expression\n\t *\n\t * Jobs are resolved from the provided request-scoped container,\n\t * ensuring dependencies (e.g. database) are properly scoped.\n\t *\n\t * Jobs are executed sequentially. If a job fails:\n\t * - Its onError() hook is called (if defined)\n\t * - Execution continues with the next job\n\t * - Errors are collected and thrown as CronExecutionError\n\t *\n\t * @param controller - Cloudflare ScheduledController\n\t * @param container - Request-scoped container to resolve jobs from\n\t */\n\tasync executeScheduled(controller: ScheduledController, container: Container): Promise<void> {\n\t\tconst { cron } = controller\n\t\tconst matchingJobs = this.jobs.get(cron) ?? []\n\n\t\tif (matchingJobs.length === 0) {\n\t\t\treturn\n\t\t}\n\n\t\tconst errors: { job: string; error: Error }[] = []\n\n\t\tfor (const { jobClass } of matchingJobs) {\n\t\t\tconst jobName = jobClass.name\n\n\t\t\ttry {\n\t\t\t\t// Register the job class in the request-scoped container so its\n\t\t\t\t// dependencies are resolved from request scope (not the parent).\n\t\t\t\t// Without this, tsyringe falls through to the parent container\n\t\t\t\t// and request-scoped services (e.g. database) get stale instances.\n\t\t\t\tcontainer.register(jobClass, jobClass)\n\t\t\t\tconst job = container.resolve<CronJob>(jobClass)\n\t\t\t\tawait job.execute(controller)\n\t\t\t} catch (error) {\n\t\t\t\tconst err = error as Error\n\t\t\t\terrors.push({ job: jobName, error: err })\n\n\t\t\t\t// Try to resolve and call onError if possible\n\t\t\t\ttry {\n\t\t\t\t\tconst job = container.resolve<CronJob>(jobClass)\n\t\t\t\t\tif (job.onError) {\n\t\t\t\t\t\tawait job.onError(err, controller)\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// If resolution or onError fails, continue\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If any jobs failed, throw an aggregate error\n\t\t// This ensures the error is logged by ExceptionHandler\n\t\tif (errors.length > 0) {\n\t\t\tconst jobNames = errors\n\t\t\t\t.map(({ job, error }) => `${job}: ${error.message}`)\n\t\t\t\t.join('; ')\n\n\t\t\tthrow new CronExecutionError(cron, errors.length, jobNames)\n\t\t}\n\t}\n\n\t/**\n\t * Get all registered jobs for a specific cron expression\n\t *\n\t * @param schedule - Cron expression\n\t * @returns Array of registered jobs, or empty array if none\n\t */\n\tgetJobsForSchedule(schedule: string): RegisteredJob[] {\n\t\treturn this.jobs.get(schedule) ?? []\n\t}\n\n\t/**\n\t * Get all registered cron expressions\n\t *\n\t * @returns Array of unique cron expressions\n\t */\n\tgetAllSchedules(): string[] {\n\t\treturn Array.from(this.jobs.keys())\n\t}\n\n\t/**\n\t * Get total number of registered jobs across all schedules\n\t *\n\t * @returns Total job count\n\t */\n\tgetTotalJobCount(): number {\n\t\tlet count = 0\n\t\tfor (const jobs of this.jobs.values()) {\n\t\t\tcount += jobs.length\n\t\t}\n\t\treturn count\n\t}\n}\n"],"mappings":";;;;;;;;AAQA,IAAa,qBAAb,cAAwC,iBAAiB;CACxD,YACC,UACA,iBACA,UACC;AACD,QACC,8BACA,YAAY,OAAO,uBACnB;GACC;GACA,OAAO;GACP,MAAM;GACN,CACD;;;;;ACLI,IAAA,cAAA,MAAM,YAAY;;;;;;CAMxB,uBAAe,IAAI,KAA8B;;;;;;;;;;CAWjD,YAAY,UAAkB,UAA2C;EACxE,MAAM,WAAW,KAAK,KAAK,IAAI,SAAS,IAAI,EAAE;AAC9C,WAAS,KAAK;GAAE;GAAU;GAAU,CAAC;AACrC,OAAK,KAAK,IAAI,UAAU,SAAS;;;;;;;;;;;;;;;;CAiBlC,MAAM,iBAAiB,YAAiC,WAAqC;EAC5F,MAAM,EAAE,SAAS;EACjB,MAAM,eAAe,KAAK,KAAK,IAAI,KAAK,IAAI,EAAE;AAE9C,MAAI,aAAa,WAAW,EAC3B;EAGD,MAAM,SAA0C,EAAE;AAElD,OAAK,MAAM,EAAE,cAAc,cAAc;GACxC,MAAM,UAAU,SAAS;AAEzB,OAAI;AAKH,cAAU,SAAS,UAAU,SAAS;AAEtC,UADY,UAAU,QAAiB,SAC9B,CAAC,QAAQ,WAAW;YACrB,OAAO;IACf,MAAM,MAAM;AACZ,WAAO,KAAK;KAAE,KAAK;KAAS,OAAO;KAAK,CAAC;AAGzC,QAAI;KACH,MAAM,MAAM,UAAU,QAAiB,SAAS;AAChD,SAAI,IAAI,QACP,OAAM,IAAI,QAAQ,KAAK,WAAW;YAE5B;;;AAQV,MAAI,OAAO,SAAS,GAAG;GACtB,MAAM,WAAW,OACf,KAAK,EAAE,KAAK,YAAY,GAAG,IAAI,IAAI,MAAM,UAAU,CACnD,KAAK,KAAK;AAEZ,SAAM,IAAI,mBAAmB,MAAM,OAAO,QAAQ,SAAS;;;;;;;;;CAU7D,mBAAmB,UAAmC;AACrD,SAAO,KAAK,KAAK,IAAI,SAAS,IAAI,EAAE;;;;;;;CAQrC,kBAA4B;AAC3B,SAAO,MAAM,KAAK,KAAK,KAAK,MAAM,CAAC;;;;;;;CAQpC,mBAA2B;EAC1B,IAAI,QAAQ;AACZ,OAAK,MAAM,QAAQ,KAAK,KAAK,QAAQ,CACpC,UAAS,KAAK;AAEf,SAAO;;;0BAnHR,WAAW,CAAA,EAAA,YAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as Constructor } from "./types-
|
|
1
|
+
import { Dr as Container } from "./index-D0US0X14.mjs";
|
|
2
|
+
import { t as Constructor } from "./types-cySNS_lp.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/cron/cron-job.d.ts
|
|
5
5
|
/**
|
|
@@ -128,4 +128,4 @@ declare class CronManager {
|
|
|
128
128
|
}
|
|
129
129
|
//#endregion
|
|
130
130
|
export { CronJob as n, RegisteredJob as r, CronManager as t };
|
|
131
|
-
//# sourceMappingURL=cron-manager-
|
|
131
|
+
//# sourceMappingURL=cron-manager-BEsH1mjW.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cron-manager-
|
|
1
|
+
{"version":3,"file":"cron-manager-BEsH1mjW.d.mts","names":[],"sources":["../src/cron/cron-job.ts","../src/cron/cron-manager.ts"],"mappings":";;;;;;;AA6BA;;;;;;;;;;AAOA;;;;;;;;;;;;;;UAPiB,aAAA;EAiChB;EA/BA,QAAA;EA+BS;EA7BT,QAAA,EAAU,WAAA,CAAY,OAAA;AAAA;AAAA,UAGN,OAAA;EA0BgD;;;;;AC9CjE;;ED8CiE,SAlBvD,QAAA;ECV+B;;;;;;EDkBxC,OAAA,CAAQ,UAAA,EAAY,mBAAA,GAAsB,OAAA;EC7BlC;;;;;;;;EDuCR,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,UAAA,EAAY,mBAAA,GAAsB,OAAA;AAAA;;;;;AAjC1D;;;;;;;;;cCZa,WAAA;EDmBI;;;;;EAAA,QCbR,IAAA;EDuC2B;;;;;;;;;EC5BnC,WAAA,CAAY,QAAA,UAAkB,QAAA,EAAU,aAAA;ED4BxB;;;;;;;;;;AC9CjB;;;;EAsCO,gBAAA,CAAiB,UAAA,EAAY,mBAAA,EAAqB,SAAA,EAAW,SAAA,GAAY,OAAA;EAAZ;;;;;;EAsDnE,kBAAA,CAAmB,QAAA,WAAmB,aAAA;EA1E1B;;;;;EAmFZ,eAAA,CAAA;EA/DmE;;;;;EAwEnE,gBAAA,CAAA;AAAA"}
|
package/dist/di/index.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Ar as
|
|
1
|
+
import { Ar as container, Br as PredicateContainer, Dr as Container, Fr as singleton, Hr as ExtensionDecorator, Ir as ConditionalBindingBuilder, Lr as ConditionalBindingBuilderImpl, Mr as inject, Nr as injectable, Or as ContainerOptions, Pr as instancePerContainerCachingFactory, Rr as ConditionalBindingGive, Ur as Scope, Vr as ContainerLike, Wr as WhenOptions, _r as DIToken, cr as runWithContainer, dr as Transient, fr as INJECT_PARAM_METADATA_KEY, gr as CONTAINER_TOKEN, hr as getMethodInjections, jr as delay, kr as DependencyContainer, lr as RequestScopeOperationNotAllowedError, mr as ParamInjection, or as containerStorage, pr as InjectParam, sr as getContainer, ur as ConditionalBindingFallbackError, vr as DI_TOKENS, zr as ConditionalBindingUse } from "../index-D0US0X14.mjs";
|
|
2
2
|
export { CONTAINER_TOKEN, ConditionalBindingBuilder, ConditionalBindingBuilderImpl, ConditionalBindingFallbackError, ConditionalBindingGive, ConditionalBindingUse, Container, ContainerLike, ContainerOptions, DIToken, DI_TOKENS, DependencyContainer, ExtensionDecorator, INJECT_PARAM_METADATA_KEY, InjectParam, ParamInjection, PredicateContainer, RequestScopeOperationNotAllowedError, Scope, Transient, WhenOptions, container, containerStorage, delay, getContainer, getMethodInjections, inject, injectable, instancePerContainerCachingFactory, runWithContainer, singleton };
|
package/dist/di/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { A as Scope, B as ConditionalBindingFallbackError, D as runWithContainer, E as getContainer, F as injectable, I as instancePerContainerCachingFactory, L as singleton, M as container, N as delay, P as inject, R as ConditionalBindingBuilderImpl, T as containerStorage, j as Container, z as RequestScopeOperationNotAllowedError } from "../errors-
|
|
1
|
+
import { A as Scope, B as ConditionalBindingFallbackError, D as runWithContainer, E as getContainer, F as injectable, I as instancePerContainerCachingFactory, L as singleton, M as container, N as delay, P as inject, R as ConditionalBindingBuilderImpl, T as containerStorage, j as Container, z as RequestScopeOperationNotAllowedError } from "../errors-BdyV5PnY.mjs";
|
|
2
2
|
import { d as CONTAINER_TOKEN, f as DI_TOKENS, g as getMethodInjections, h as InjectParam, m as INJECT_PARAM_METADATA_KEY, p as Transient } from "../logger-V6Ms3QnQ.mjs";
|
|
3
3
|
export { CONTAINER_TOKEN, ConditionalBindingBuilderImpl, ConditionalBindingFallbackError, Container, DI_TOKENS, INJECT_PARAM_METADATA_KEY, InjectParam, RequestScopeOperationNotAllowedError, Scope, Transient, container, containerStorage, delay, getContainer, getMethodInjections, inject, injectable, instancePerContainerCachingFactory, runWithContainer, singleton };
|
package/dist/email/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { d as ApplicationError,
|
|
2
|
-
import { o as z } from "../index-
|
|
3
|
-
import { g as QueueName, h as IQueueSender } from "../index-
|
|
1
|
+
import { d as ApplicationError, gn as AsyncModuleOptions, vn as DynamicModule } from "../index-D0US0X14.mjs";
|
|
2
|
+
import { o as z } from "../index-Bnpfq6uk.mjs";
|
|
3
|
+
import { g as QueueName, h as IQueueSender } from "../index-CjaQ6_tZ.mjs";
|
|
4
4
|
import { ReactElement } from "react";
|
|
5
5
|
|
|
6
6
|
//#region src/email/email.module.d.ts
|
package/dist/email/index.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { H as ApplicationError, k as ERROR_CODES } from "../errors-
|
|
1
|
+
import { H as ApplicationError, k as ERROR_CODES } from "../errors-BdyV5PnY.mjs";
|
|
2
2
|
import { a as __decorate, o as __decorateParam, p as Transient, s as __decorateMetadata, u as LOGGER_TOKENS } from "../logger-V6Ms3QnQ.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { c as QUEUE_TOKENS } from "../queue.module-
|
|
3
|
+
import { k as Module } from "../module-Dk2qTa77.mjs";
|
|
4
|
+
import { i as z, s as withI18n } from "../validation-DtJwAv7O.mjs";
|
|
5
|
+
import { c as QUEUE_TOKENS } from "../queue.module-BCdCiySt.mjs";
|
|
6
6
|
import "../queue/index.mjs";
|
|
7
|
-
import { u as STORAGE_TOKENS } from "../storage-
|
|
7
|
+
import { u as STORAGE_TOKENS } from "../storage-1zw-6Yiz.mjs";
|
|
8
8
|
import { inject } from "tsyringe";
|
|
9
9
|
import { render } from "@react-email/render";
|
|
10
10
|
//#region src/email/email.tokens.ts
|
|
@@ -271,11 +271,11 @@ let EmailProviderFactory = class EmailProviderFactory {
|
|
|
271
271
|
async create() {
|
|
272
272
|
switch (this.options.provider) {
|
|
273
273
|
case "resend": {
|
|
274
|
-
const { ResendProvider } = await import("../resend.provider-
|
|
274
|
+
const { ResendProvider } = await import("../resend.provider-M6qRLrcy.mjs");
|
|
275
275
|
return new ResendProvider(this.options);
|
|
276
276
|
}
|
|
277
277
|
case "smtp": {
|
|
278
|
-
const { SmtpProvider } = await import("../smtp.provider-
|
|
278
|
+
const { SmtpProvider } = await import("../smtp.provider-w0Ve52Xg.mjs");
|
|
279
279
|
return new SmtpProvider(this.options);
|
|
280
280
|
}
|
|
281
281
|
default: throw new EmailProviderNotSupportedError(this.options.provider);
|
|
@@ -106,6 +106,12 @@ const errors = {
|
|
|
106
106
|
deleteFailed: "Failed to delete value from cache for key '{key}'",
|
|
107
107
|
listFailed: "Failed to list cache keys"
|
|
108
108
|
},
|
|
109
|
+
rateLimit: {
|
|
110
|
+
tooManyRequests: "Too Many Requests",
|
|
111
|
+
notDefined: "Rate limiter \"{name}\" is not defined. Register it via RateLimiterRegistry.for(\"{name}\", ...) inside a module's onInitialize hook.",
|
|
112
|
+
notConfigured: "RateLimiterModule.forRoot() was not called. Pass { store: \"kv\" | \"memory\" | { useClass } } to enable rate limiting.",
|
|
113
|
+
moduleNotImported: "Rate limiter \"{name}\" was used (router.throttle / @RateLimit) but RateLimiterModule is not imported in your AppModule. Add RateLimiterModule.forRoot({ store: ... }) to imports."
|
|
114
|
+
},
|
|
109
115
|
seederNameCollision: "Seeder name collision: \"{name}\" is already registered. Use distinct class names for each seeder.",
|
|
110
116
|
seederNotRegistered: "Seeder \"{name}\" is not registered",
|
|
111
117
|
migration: {
|
|
@@ -299,4 +305,4 @@ var en_exports = /* @__PURE__ */ __exportAll({
|
|
|
299
305
|
//#endregion
|
|
300
306
|
export { errors as a, emails as i, zodI18n as n, common as o, validation as r, en_exports as t };
|
|
301
307
|
|
|
302
|
-
//# sourceMappingURL=en-
|
|
308
|
+
//# sourceMappingURL=en-DSH_bhh6.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en-DSH_bhh6.mjs","names":[],"sources":["../src/i18n/messages/en/common.ts","../src/i18n/messages/en/errors.ts","../src/i18n/messages/en/emails.ts","../src/i18n/messages/en/validation.ts","../src/i18n/messages/en/zod.ts","../src/i18n/messages/en/index.ts"],"sourcesContent":["/**\n * System Common Messages - English\n *\n * Common messages used by packages/modules infrastructure.\n * These are automatically merged with application-specific messages.\n */\n\nexport const common = {\n api: {\n title: 'Stratal API',\n description: 'Platform API',\n serverDescription: 'API server',\n security: {\n bearerAuth: 'JWT Bearer token authentication',\n apiKey: 'API key for service authentication',\n sessionCookie: 'Session cookie for browser authentication'\n }\n }\n} as const\n","/**\n * System Error Messages - English\n *\n * Error messages used by packages/modules infrastructure.\n * These are automatically merged with application-specific messages.\n */\n\nexport const errors = {\n // Generic errors\n internalError: 'An internal error occurred',\n notFound: 'Resource not found',\n unauthorized: 'Unauthorized. Please sign in.',\n forbidden: 'Access denied',\n\n // Router errors\n honoAppAlreadyConfigured: 'HonoApp has already been configured and can only be configured once',\n routeNotFound: 'Route not found: {method} {path}',\n routeAccessDenied: 'Resource not found',\n controllerMethodNotFound: 'Method {methodName} not found on {controllerName}',\n controllerRegistration: 'Failed to register controller {controllerName}: {reason}',\n duplicateRouteName: 'Duplicate route name \"{name}\". Already registered by {existingHandler}, cannot register {newHandler}.',\n routeNameNotFound: 'Route \"{name}\" not found in registry.',\n missingRouteParam: 'Missing required parameter \"{param}\" for route \"{name}\" (path: {path}).',\n routerUseScopeViolation: 'router.use() can only be called on the root Router, not inside group() callbacks. Use router.middleware() for scoped middleware.',\n middlewareNextCalledMultipleTimes: 'next() was called multiple times in \"{middlewareName}\" middleware. Ensure each middleware calls next() at most once.',\n missingEnvironmentVariable: 'Environment variable \"{variable}\" is required but not set.',\n\n // WebSocket errors\n websocketBodyNotAvailable: 'body() is not available in WebSocket gateways. Use WebSocket messages instead.',\n websocketDuplicateEventHandler: '@{decorator}() is already applied to \\'{existingMethod}\\'. Only one method per gateway can handle this event.',\n\n // Context errors\n contextNotInitialized: 'Context has not been initialized',\n userNotAuthenticated: 'User is not authenticated',\n insufficientPermissions: 'Insufficient permissions to perform this action',\n requestContainerNotInitialized: 'Request container has not been initialized',\n requestScopeOperationNotAllowed: '{methodName}() cannot be called on this container scope. Check if you are calling it on the correct container (global vs request-scoped).',\n conditionalBindingFallback: 'Conditional binding predicate returned false for token \"{token}\" but no fallback was provided and no existing registration exists.',\n\n // Configuration errors\n configNotInitialized: 'Configuration service has not been initialized',\n configModuleNotInitialized: 'ConfigModule.forRoot() was not called before module initialization',\n stratalNotInitialized: 'Stratal has not been instantiated. Ensure you export a Stratal instance as the default export.',\n\n // Module errors\n moduleAlreadyRegistered: 'Module {moduleName} is already registered',\n moduleDependencyNotFound: 'Module dependency {dependency} not found for module {moduleName}',\n moduleCircularDependency: 'Circular dependency detected: {cycle}',\n invalidModuleProvider: 'Invalid module provider configuration: {provider}',\n\n // Database errors\n databaseGeneric: 'Database error occurred',\n databaseRecordNotFound: 'Record not found in database',\n databaseUniqueConstraint: 'Record already exists',\n databaseForeignKeyConstraint: 'Related record not found',\n databaseConnectionFailed: 'Failed to connect to database',\n databaseTimeout: 'Database query timeout',\n databaseNullConstraint: 'Required field is missing',\n databaseTooManyConnections: 'Too many database connections',\n databaseTransactionConflict: 'Transaction conflict or deadlock',\n databaseConstraintFailed: 'A database constraint was violated',\n databaseTableNotFound: 'The specified table does not exist in the database',\n databaseColumnNotFound: 'The specified column does not exist in the table',\n databaseInvalidQuery: 'The database query is invalid or malformed',\n invalidErrorCodeRange: 'Invalid error code range: {code}',\n\n // Queue errors\n queueBindingNotFound: 'Queue binding {queueName} not found in environment',\n queueProviderNotSupported: 'Queue provider \"{provider}\" is not supported. Valid providers: cloudflare, sync',\n\n // Cron errors\n cronExecutionFailed: '{count} cron job(s) failed for schedule \"{schedule}\": {jobs}',\n\n // i18n errors\n localeNotSupported: \"Locale '{locale}' is not supported. Supported locales: {supportedLocales}\",\n translationMissing: \"Translation missing for key '{key}' in locale '{locale}'\",\n\n // Container errors\n containerNotInitialized: 'Application container has not been initialized. Ensure Application.initialize() has been called.',\n\n // Domain routing errors\n domainMismatch: 'The requested domain does not match any configured route',\n\n // Signature errors\n invalidSignature: 'The URL signature is invalid or has expired',\n\n // Schema validation errors\n schemaValidation: 'Schema validation failed',\n responseValidation: 'Response validation failed',\n\n // OpenAPI errors\n openapiValidation: 'OpenAPI validation failed: {details}',\n openapiRouteRegistration: 'Failed to register OpenAPI route {path}: {reason}',\n\n // Email errors\n email: {\n resendApiKeyMissing: 'Resend API key not configured. Set RESEND_EMAIL_API_KEY environment variable.',\n smtpConfigurationMissing: 'SMTP configuration missing. Set SMTP_URL environment variable.',\n smtpHostMissing: 'SMTP host not configured. Check SMTP_URL format (smtp://user:pass@host:port).',\n smtpConnectionFailed: 'Failed to connect to SMTP server {smtpHost}:{smtpPort}',\n resendApiFailed: 'Resend API error',\n providerNotSupported: 'Unsupported email provider: {provider}. Supported providers: resend, smtp'\n },\n\n // Storage errors\n storage: {\n fileNotFound: 'File at path \"{path}\" was not found',\n invalidDisk: 'Storage disk \"{disk}\" is not configured',\n invalidFileType: 'File type \"{mimeType}\" is not allowed',\n fileTooLarge: 'File size {size} exceeds maximum allowed size of {maxSize}',\n presignedUrlInvalidExpiry: 'Expiry must be between {min} and {max} seconds',\n diskNotConfigured: 'Disk \"{disk}\" is not configured',\n responseBodyMissing: 'No body in storage response for path: {path}',\n r2BindingNotFound: 'R2 binding \"{binding}\" was not found in the environment',\n r2PresignedUrlSecretMissing: 'APP_SECRET environment variable is required for presigned URLs',\n },\n\n // Cache errors\n cache: {\n getFailed: \"Failed to retrieve value from cache for key '{key}'\",\n putFailed: \"Failed to store value in cache for key '{key}'\",\n deleteFailed: \"Failed to delete value from cache for key '{key}'\",\n listFailed: 'Failed to list cache keys'\n },\n\n // Rate limiter errors\n rateLimit: {\n tooManyRequests: 'Too Many Requests',\n notDefined: 'Rate limiter \"{name}\" is not defined. Register it via RateLimiterRegistry.for(\"{name}\", ...) inside a module\\'s onInitialize hook.',\n notConfigured: 'RateLimiterModule.forRoot() was not called. Pass { store: \"kv\" | \"memory\" | { useClass } } to enable rate limiting.',\n moduleNotImported: 'Rate limiter \"{name}\" was used (router.throttle / @RateLimit) but RateLimiterModule is not imported in your AppModule. Add RateLimiterModule.forRoot({ store: ... }) to imports.',\n },\n\n // Seeder errors\n seederNameCollision: 'Seeder name collision: \"{name}\" is already registered. Use distinct class names for each seeder.',\n seederNotRegistered: 'Seeder \"{name}\" is not registered',\n\n // Migration errors\n migration: {\n failed: 'Migration {migrationName} failed: {error}',\n checksumMismatch: 'Migration {migrationName} checksum mismatch (expected: {expected}, actual: {actual})',\n alreadyApplied: 'Migration {migrationName} has already been applied',\n notFound: 'Migration {migrationName} not found',\n },\n} as const\n","/**\n * System Email Messages - English\n *\n * Email-related messages used by packages/modules infrastructure.\n * These are automatically merged with application-specific messages.\n */\n\nexport const emails = {\n magicLink: {\n subject: 'Your sign-in link'\n }\n} as const\n","/**\n * Form validation messages - English\n */\n\nexport const validation = {\n required: 'This field is required',\n email: 'Invalid email address',\n minLength: 'Must be at least {min} characters',\n maxLength: 'Must not exceed {max} characters',\n min: 'Must be at least {min}',\n max: 'Must not exceed {max}',\n pattern: 'Invalid format',\n numeric: 'Must be a number',\n url: 'Invalid URL',\n date: 'Invalid date',\n passwordStrength: 'Password must contain at least one uppercase letter, one lowercase letter, and one number',\n passwordMatch: 'Passwords do not match',\n unique: 'This value already exists',\n phone: 'Invalid phone number',\n fileRequired: 'Please upload a file',\n fileTooLarge: 'File must be smaller than {max}',\n invalidFileType: 'Please upload a PDF, JPG, or PNG file',\n schoolTypes: {\n required: 'School type is required',\n atLeastOne: 'Please select at least one school type',\n invalidCode: 'Invalid school type: {code}',\n notAvailableInCountry: '{schoolType} is not available in {country}',\n countryNotSupported: 'Country {country} is not supported'\n },\n timezone: {\n required: 'Timezone is required',\n invalid: 'Invalid timezone. Please select a valid IANA timezone.'\n },\n locale: {\n required: 'Language is required',\n invalid: 'Invalid language. Supported languages: {locales}'\n }\n} as const\n","/**\n * Zod validation error messages - English\n *\n * Comprehensive messages for all Zod validation error codes\n * Structured to match Zod's issue types and validation contexts\n */\n\nexport const zodI18n = {\n errors: {\n // General errors\n required: 'Required',\n invalid_type: 'Expected {expected}, received {received}',\n invalid_literal: 'Invalid literal value, expected {expected}',\n custom: {\n default: 'Invalid value',\n // Email validation\n emailOrTextRequired: 'Either html or text content must be provided',\n invalidFromEmail: 'Invalid from email address',\n // Storage validation\n fileInstanceRequired: 'File must be a File instance',\n filePathRequired: 'File path is required',\n diskNameRequired: 'Disk name is required',\n endpointRequired: 'Endpoint URL is required for S3',\n bucketNameRequired: 'Bucket name is required',\n accessKeyRequired: 'Access key ID is required',\n secretKeyRequired: 'Secret access key is required',\n storageDiskRequired: 'At least one storage disk is required',\n // Database validation\n databaseUrlRequired: 'Database URL is required',\n // Domain validation\n domainRequired: 'Domain is required',\n domainTooLong: 'Domain too long',\n invalidDomainFormat: 'Invalid domain format',\n },\n invalid_union: 'Invalid input',\n invalid_union_discriminator: 'Invalid discriminator value. Expected {options}',\n invalid_enum_value: 'Invalid enum value. Expected {options}, received {received}',\n unrecognized_keys: 'Unrecognized key(s) in object: {keys}',\n invalid_arguments: 'Invalid function arguments',\n invalid_return_type: 'Invalid function return type',\n invalid_date: 'Invalid date',\n invalid_intersection_types: 'Intersection results could not be merged',\n not_multiple_of: 'Number must be a multiple of {multipleOf}',\n not_finite: 'Number must be finite',\n\n // String-specific validation errors\n invalid_string: {\n email: 'Invalid email address',\n url: 'Invalid URL',\n uuid: 'Invalid UUID',\n cuid: 'Invalid CUID',\n cuid2: 'Invalid CUID2',\n ulid: 'Invalid ULID',\n regex: 'Invalid format',\n datetime: 'Invalid datetime',\n ip: 'Invalid IP address',\n emoji: 'Invalid emoji',\n startsWith: 'Must start with \"{startsWith}\"',\n endsWith: 'Must end with \"{endsWith}\"',\n includes: 'Must include \"{includes}\"',\n base64: 'Invalid Base64',\n nanoid: 'Invalid NanoID',\n cidr: 'Invalid CIDR',\n jwt: 'Invalid JWT',\n time: 'Invalid time',\n },\n\n // Size validation errors (strings, arrays, numbers)\n too_small: {\n string: {\n exact: 'Must be exactly {minimum} characters',\n inclusive: 'Must be at least {minimum} characters',\n not_inclusive: 'Must be more than {minimum} characters',\n },\n number: {\n exact: 'Must be exactly {minimum}',\n inclusive: 'Must be at least {minimum}',\n not_inclusive: 'Must be greater than {minimum}',\n },\n array: {\n exact: 'Must contain exactly {minimum} item(s)',\n inclusive: 'Must contain at least {minimum} item(s)',\n not_inclusive: 'Must contain more than {minimum} item(s)',\n },\n set: {\n exact: 'Must contain exactly {minimum} item(s)',\n inclusive: 'Must contain at least {minimum} item(s)',\n not_inclusive: 'Must contain more than {minimum} item(s)',\n },\n date: {\n exact: 'Date must be {minimum}',\n inclusive: 'Date must be {minimum} or later',\n not_inclusive: 'Date must be after {minimum}',\n },\n bigint: {\n exact: 'Must be exactly {minimum}',\n inclusive: 'Must be at least {minimum}',\n not_inclusive: 'Must be greater than {minimum}',\n },\n },\n\n too_big: {\n string: {\n exact: 'Must be exactly {maximum} characters',\n inclusive: 'Must be at most {maximum} characters',\n not_inclusive: 'Must be less than {maximum} characters',\n },\n number: {\n exact: 'Must be exactly {maximum}',\n inclusive: 'Must be at most {maximum}',\n not_inclusive: 'Must be less than {maximum}',\n },\n array: {\n exact: 'Must contain exactly {maximum} item(s)',\n inclusive: 'Must contain at most {maximum} item(s)',\n not_inclusive: 'Must contain less than {maximum} item(s)',\n },\n set: {\n exact: 'Must contain exactly {maximum} item(s)',\n inclusive: 'Must contain at most {maximum} item(s)',\n not_inclusive: 'Must contain less than {maximum} item(s)',\n },\n date: {\n exact: 'Date must be {maximum}',\n inclusive: 'Date must be {maximum} or earlier',\n not_inclusive: 'Date must be before {maximum}',\n },\n bigint: {\n exact: 'Must be exactly {maximum}',\n inclusive: 'Must be at most {maximum}',\n not_inclusive: 'Must be less than {maximum}',\n },\n },\n },\n} as const\n","/**\n * System Messages - English\n *\n * Re-exports all system message categories.\n * These messages are used by packages/modules infrastructure\n * and are automatically merged with application-specific messages.\n */\n\nexport { common } from './common'\nexport { errors } from './errors'\nexport { emails } from './emails'\nexport { validation } from './validation'\nexport { zodI18n } from './zod'\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-D1rcZ8_r.d.mts","names":[],"sources":["../src/env.ts"],"mappings":";;AAgBA;;;;;;;;;;;;;;;UAAiB,UAAA;EACf,WAAA;EACA,KAAA,EAAO,WAAA;EACP,UAAA;AAAA"}
|
package/dist/errors/index.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { F as QueueExceptionContext, Fn as RenderableCallback, Gr as Environment, I as createCliExceptionContext, In as Reportable, Kr as ErrorResponse, L as createCronExceptionContext, Ln as ReportableCallback, M as CronExceptionContext, Mn as ApplicationErrorConstructor, N as ExceptionContext, Nn as ContextCallback, P as HttpExceptionContext, Pn as LogSeverity, R as createHttpExceptionContext, Rn as RespondCallback, a as InternalError, c as getHttpStatus, d as ApplicationError, f as ERROR_CODES, i as isApplicationError, j as CliExceptionContext, jn as ExceptionHandler, l as resolveHttpStatus, n as RequestContainerNotInitializedError, o as HttpException, p as ErrorCode, qr as isErrorResponse, r as ContainerNotInitializedError, s as abort, t as StratalNotInitializedError, u as DefaultExceptionHandler, z as createQueueExceptionContext } from "../index-D0US0X14.mjs";
|
|
2
2
|
export { ApplicationError, ApplicationErrorConstructor, CliExceptionContext, ContainerNotInitializedError, ContextCallback, CronExceptionContext, DefaultExceptionHandler, ERROR_CODES, Environment, ErrorCode, ErrorResponse, ExceptionContext, ExceptionHandler, HttpException, HttpExceptionContext, InternalError, LogSeverity, QueueExceptionContext, RenderableCallback, Reportable, ReportableCallback, RequestContainerNotInitializedError, RespondCallback, StratalNotInitializedError, abort, createCliExceptionContext, createCronExceptionContext, createHttpExceptionContext, createQueueExceptionContext, getHttpStatus, isApplicationError, isErrorResponse, resolveHttpStatus };
|
package/dist/errors/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { C as abort, H as ApplicationError, O as ContainerNotInitializedError, S as HttpException, _ as ExceptionHandler, a as createHttpExceptionContext, b as getHttpStatus, g as DefaultExceptionHandler, h as isErrorResponse, i as createCronExceptionContext, k as ERROR_CODES, n as RequestContainerNotInitializedError, o as createQueueExceptionContext, r as createCliExceptionContext, t as StratalNotInitializedError, v as isApplicationError, x as resolveHttpStatus, y as InternalError } from "../errors-
|
|
1
|
+
import { C as abort, H as ApplicationError, O as ContainerNotInitializedError, S as HttpException, _ as ExceptionHandler, a as createHttpExceptionContext, b as getHttpStatus, g as DefaultExceptionHandler, h as isErrorResponse, i as createCronExceptionContext, k as ERROR_CODES, n as RequestContainerNotInitializedError, o as createQueueExceptionContext, r as createCliExceptionContext, t as StratalNotInitializedError, v as isApplicationError, x as resolveHttpStatus, y as InternalError } from "../errors-BdyV5PnY.mjs";
|
|
2
2
|
export { ApplicationError, ContainerNotInitializedError, DefaultExceptionHandler, ERROR_CODES, ExceptionHandler, HttpException, InternalError, RequestContainerNotInitializedError, StratalNotInitializedError, abort, createCliExceptionContext, createCronExceptionContext, createHttpExceptionContext, createQueueExceptionContext, getHttpStatus, isApplicationError, isErrorResponse, resolveHttpStatus };
|
|
@@ -553,7 +553,9 @@ const ERROR_CODES = {
|
|
|
553
553
|
/** Resource conflict or duplicate */
|
|
554
554
|
CONFLICT: 4100,
|
|
555
555
|
/** Resource already exists */
|
|
556
|
-
ALREADY_EXISTS: 4101
|
|
556
|
+
ALREADY_EXISTS: 4101,
|
|
557
|
+
/** Rate limit exceeded */
|
|
558
|
+
TOO_MANY_REQUESTS: 4290
|
|
557
559
|
},
|
|
558
560
|
/**
|
|
559
561
|
* Validation Errors (1000-1999)
|
|
@@ -728,6 +730,7 @@ const HTTP_STATUS_TO_ERROR_CODE = {
|
|
|
728
730
|
404: ERROR_CODES.RESOURCE.NOT_FOUND,
|
|
729
731
|
409: ERROR_CODES.RESOURCE.CONFLICT,
|
|
730
732
|
422: ERROR_CODES.VALIDATION.GENERIC,
|
|
733
|
+
429: ERROR_CODES.RESOURCE.TOO_MANY_REQUESTS,
|
|
731
734
|
500: ERROR_CODES.SYSTEM.INTERNAL_ERROR
|
|
732
735
|
};
|
|
733
736
|
/**
|
|
@@ -741,6 +744,7 @@ const HTTP_STATUS_MESSAGES = {
|
|
|
741
744
|
404: "Not Found",
|
|
742
745
|
409: "Conflict",
|
|
743
746
|
422: "Unprocessable Entity",
|
|
747
|
+
429: "Too Many Requests",
|
|
744
748
|
500: "Internal Server Error"
|
|
745
749
|
};
|
|
746
750
|
/**
|
|
@@ -840,6 +844,7 @@ function getHttpStatus(code) {
|
|
|
840
844
|
if (code >= 3100 && code < 3200) return 403;
|
|
841
845
|
if (code >= 4e3 && code < 4100) return 404;
|
|
842
846
|
if (code >= 4100 && code < 4200) return 409;
|
|
847
|
+
if (code >= 4290 && code < 4300) return 429;
|
|
843
848
|
if (code >= 5e3 && code < 6e3) {
|
|
844
849
|
if (code === 5e3 || code === 5100 || code === 5200) return 404;
|
|
845
850
|
return 422;
|
|
@@ -858,6 +863,8 @@ function getHttpStatus(code) {
|
|
|
858
863
|
*/
|
|
859
864
|
function resolveHttpStatus(error) {
|
|
860
865
|
if (error instanceof HttpException) return error.httpStatus;
|
|
866
|
+
const httpStatus = error.httpStatus;
|
|
867
|
+
if (typeof httpStatus === "number") return httpStatus;
|
|
861
868
|
return getHttpStatus(error.code);
|
|
862
869
|
}
|
|
863
870
|
//#endregion
|
|
@@ -1343,7 +1350,8 @@ const ROUTE_METADATA_KEYS = {
|
|
|
1343
1350
|
GATEWAY_MARKER: Symbol.for("stratal:gateway:marker"),
|
|
1344
1351
|
WS_ON_MESSAGE: Symbol.for("stratal:ws:on-message"),
|
|
1345
1352
|
WS_ON_CLOSE: Symbol.for("stratal:ws:on-close"),
|
|
1346
|
-
WS_ON_ERROR: Symbol.for("stratal:ws:on-error")
|
|
1353
|
+
WS_ON_ERROR: Symbol.for("stratal:ws:on-error"),
|
|
1354
|
+
RATE_LIMIT: Symbol.for("stratal:route:rate-limit")
|
|
1347
1355
|
};
|
|
1348
1356
|
/**
|
|
1349
1357
|
* Security scheme identifiers for OpenAPI
|
|
@@ -1446,6 +1454,13 @@ var RouterContext = class extends Macroable {
|
|
|
1446
1454
|
this.c = c;
|
|
1447
1455
|
}
|
|
1448
1456
|
/**
|
|
1457
|
+
* Cloudflare-provided request properties (geo, TLS, bot management, etc.).
|
|
1458
|
+
* Always available on Cloudflare Workers requests via `c.req.raw.cf`.
|
|
1459
|
+
*/
|
|
1460
|
+
get cf() {
|
|
1461
|
+
return this.c.req.raw.cf;
|
|
1462
|
+
}
|
|
1463
|
+
/**
|
|
1449
1464
|
* Get request-scoped DI container
|
|
1450
1465
|
* Contains request-specific services and context (AuthContext)
|
|
1451
1466
|
*
|
|
@@ -1484,13 +1499,9 @@ var RouterContext = class extends Macroable {
|
|
|
1484
1499
|
if (data === null) return this.c.body(null, status ?? 204);
|
|
1485
1500
|
return this.c.json(data, status);
|
|
1486
1501
|
}
|
|
1487
|
-
/**
|
|
1488
|
-
* Get route parameter value
|
|
1489
|
-
*
|
|
1490
|
-
* @param key - Parameter name (e.g., 'id' for /users/:id)
|
|
1491
|
-
*/
|
|
1492
1502
|
param(key) {
|
|
1493
|
-
|
|
1503
|
+
const all = this.c.req.valid("param") ?? {};
|
|
1504
|
+
return key === void 0 ? all : all[key];
|
|
1494
1505
|
}
|
|
1495
1506
|
/**
|
|
1496
1507
|
* Get query parameter value
|
|
@@ -1711,4 +1722,4 @@ var StratalNotInitializedError = class extends ApplicationError {
|
|
|
1711
1722
|
//#endregion
|
|
1712
1723
|
export { Scope as A, ConditionalBindingFallbackError as B, abort as C, runWithContainer as D, getContainer as E, injectable$1 as F, ApplicationError as H, instancePerContainerCachingFactory$1 as I, singleton as L, container$1 as M, delay as N, ContainerNotInitializedError as O, inject$1 as P, ConditionalBindingBuilderImpl as R, HttpException as S, containerStorage as T, ROUTER_TOKENS as V, ExceptionHandler as _, createHttpExceptionContext as a, getHttpStatus as b, DEFAULT_CONTENT_TYPE as c, ROUTER_CONTEXT_KEYS as d, ROUTE_METADATA_KEYS as f, DefaultExceptionHandler as g, isErrorResponse as h, createCronExceptionContext as i, Container as j, ERROR_CODES as k, HTTP_METHODS as l, VERSION_NEUTRAL as m, RequestContainerNotInitializedError as n, createQueueExceptionContext as o, SECURITY_SCHEMES as p, createCliExceptionContext as r, RouterContext as s, StratalNotInitializedError as t, METHOD_STATUS_CODES as u, isApplicationError as v, I18N_TOKENS as w, resolveHttpStatus as x, InternalError as y, RequestScopeOperationNotAllowedError as z };
|
|
1713
1724
|
|
|
1714
|
-
//# sourceMappingURL=errors-
|
|
1725
|
+
//# sourceMappingURL=errors-BdyV5PnY.mjs.map
|