stratal 0.0.17 → 0.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/README.md +8 -8
  2. package/dist/{base-email.provider-DypUAfWm.mjs → base-email.provider-mjynzewK.mjs} +1 -1
  3. package/dist/{base-email.provider-DypUAfWm.mjs.map → base-email.provider-mjynzewK.mjs.map} +1 -1
  4. package/dist/bin/cloudflare-workers-loader.mjs +33 -1
  5. package/dist/bin/cloudflare-workers-loader.mjs.map +1 -1
  6. package/dist/bin/quarry.mjs +169 -7
  7. package/dist/bin/quarry.mjs.map +1 -1
  8. package/dist/cache/index.d.mts +3 -2
  9. package/dist/cache/index.d.mts.map +1 -1
  10. package/dist/cache/index.mjs +3 -10
  11. package/dist/cache/index.mjs.map +1 -1
  12. package/dist/{colors-Y7WIFXs7.mjs → colors-DJaRDXoS.mjs} +1 -1
  13. package/dist/{colors-Y7WIFXs7.mjs.map → colors-DJaRDXoS.mjs.map} +1 -1
  14. package/dist/{command-B1CPgsrU.mjs → command-BgSlsS4M.mjs} +3 -3
  15. package/dist/command-BgSlsS4M.mjs.map +1 -0
  16. package/dist/{command-TnkPYWta.d.mts → command-DsQq56Lp.d.mts} +2 -2
  17. package/dist/{command-TnkPYWta.d.mts.map → command-DsQq56Lp.d.mts.map} +1 -1
  18. package/dist/config/index.d.mts +81 -37
  19. package/dist/config/index.d.mts.map +1 -1
  20. package/dist/config/index.mjs +135 -61
  21. package/dist/config/index.mjs.map +1 -1
  22. package/dist/{consumer-registry-Bymm6ff4.d.mts → consumer-registry-Doom7BEh.d.mts} +1 -1
  23. package/dist/{consumer-registry-Bymm6ff4.d.mts.map → consumer-registry-Doom7BEh.d.mts.map} +1 -1
  24. package/dist/controller.decorator-LZY9aHYG.mjs +66 -0
  25. package/dist/controller.decorator-LZY9aHYG.mjs.map +1 -0
  26. package/dist/cron/index.d.mts +4 -3
  27. package/dist/cron/index.d.mts.map +1 -1
  28. package/dist/cron/index.mjs +1 -3
  29. package/dist/{cron-manager-CFBamKKk.mjs → cron-manager-C30t9UZM.mjs} +29 -19
  30. package/dist/cron-manager-C30t9UZM.mjs.map +1 -0
  31. package/dist/{cron-manager-D7imGwUT.d.mts → cron-manager-RuPtFVLy.d.mts} +28 -14
  32. package/dist/cron-manager-RuPtFVLy.d.mts.map +1 -0
  33. package/dist/di/index.d.mts +2 -2
  34. package/dist/di/index.mjs +3 -3
  35. package/dist/email/index.d.mts +3 -3
  36. package/dist/email/index.mjs +87 -18
  37. package/dist/email/index.mjs.map +1 -1
  38. package/dist/{en-DaewN8hc.mjs → en-rHmW6vD9.mjs} +14 -31
  39. package/dist/en-rHmW6vD9.mjs.map +1 -0
  40. package/dist/env-CamWD-U1.d.mts +25 -0
  41. package/dist/env-CamWD-U1.d.mts.map +1 -0
  42. package/dist/errors/index.d.mts +2 -2
  43. package/dist/errors/index.mjs +2 -3
  44. package/dist/errors-B4pYgYON.mjs +1714 -0
  45. package/dist/errors-B4pYgYON.mjs.map +1 -0
  46. package/dist/{errors-DuAR5Wke.mjs → errors-BUyUfr2Z.mjs} +14 -7
  47. package/dist/errors-BUyUfr2Z.mjs.map +1 -0
  48. package/dist/events/index.d.mts +2 -2
  49. package/dist/events/index.mjs +1 -2
  50. package/dist/{events-CvUSgEuN.mjs → events-COKixqnG.mjs} +2 -2
  51. package/dist/{events-CvUSgEuN.mjs.map → events-COKixqnG.mjs.map} +1 -1
  52. package/dist/{gateway-context-CNOLkLUC.mjs → gateway-context-cqZ8wMoi.mjs} +4 -9
  53. package/dist/gateway-context-cqZ8wMoi.mjs.map +1 -0
  54. package/dist/guards/index.d.mts +14 -5
  55. package/dist/guards/index.d.mts.map +1 -1
  56. package/dist/guards/index.mjs +1 -1
  57. package/dist/{guards-DUk_Kzst.mjs → guards-DMbsAxSX.mjs} +1 -1
  58. package/dist/guards-DMbsAxSX.mjs.map +1 -0
  59. package/dist/http-method.decorator-BT3ufnz8.mjs +96 -0
  60. package/dist/http-method.decorator-BT3ufnz8.mjs.map +1 -0
  61. package/dist/i18n/index.d.mts +3 -3
  62. package/dist/i18n/index.mjs +3 -16
  63. package/dist/i18n/messages/en/index.d.mts +1 -1
  64. package/dist/i18n/messages/en/index.mjs +1 -1
  65. package/dist/i18n/utils/index.d.mts +30 -0
  66. package/dist/i18n/utils/index.d.mts.map +1 -0
  67. package/dist/i18n/utils/index.mjs +2 -0
  68. package/dist/i18n/validation/index.d.mts +1 -1
  69. package/dist/i18n/validation/index.mjs +1 -1
  70. package/dist/i18n.module-CI_prYFD.mjs +2340 -0
  71. package/dist/i18n.module-CI_prYFD.mjs.map +1 -0
  72. package/dist/{index-NGxg-KP_.d.mts → index-B437eK7p.d.mts} +59 -16
  73. package/dist/index-B437eK7p.d.mts.map +1 -0
  74. package/dist/{index-Dp6A5ywM.d.mts → index-CWRS7Ri3.d.mts} +1 -1
  75. package/dist/{index-Dp6A5ywM.d.mts.map → index-CWRS7Ri3.d.mts.map} +1 -1
  76. package/dist/{index-D_w_Rmtd.d.mts → index-DFhEeFfC.d.mts} +13 -30
  77. package/dist/{index-D_w_Rmtd.d.mts.map → index-DFhEeFfC.d.mts.map} +1 -1
  78. package/dist/index-DPFqRs8L.d.mts +4318 -0
  79. package/dist/index-DPFqRs8L.d.mts.map +1 -0
  80. package/dist/{index-DGRe6Yoa.d.mts → index-Dnqm9ZB6.d.mts} +5 -4
  81. package/dist/index-Dnqm9ZB6.d.mts.map +1 -0
  82. package/dist/index-SHx31sBJ.d.mts +101 -0
  83. package/dist/index-SHx31sBJ.d.mts.map +1 -0
  84. package/dist/index.d.mts +5 -3
  85. package/dist/index.d.mts.map +1 -1
  86. package/dist/index.mjs +1 -20
  87. package/dist/{is-command-DJVI6wEJ.mjs → is-command-C6a7WTPw.mjs} +2 -2
  88. package/dist/{is-command-DJVI6wEJ.mjs.map → is-command-C6a7WTPw.mjs.map} +1 -1
  89. package/dist/{is-seeder-D5MIEcdz.mjs → is-seeder-CebjZCDn.mjs} +1 -1
  90. package/dist/{is-seeder-D5MIEcdz.mjs.map → is-seeder-CebjZCDn.mjs.map} +1 -1
  91. package/dist/logger/index.d.mts +1 -1
  92. package/dist/logger/index.mjs +1 -1
  93. package/dist/{logger-CGT91VY6.mjs → logger-V6Ms3QnQ.mjs} +63 -45
  94. package/dist/logger-V6Ms3QnQ.mjs.map +1 -0
  95. package/dist/macroable/index.d.mts +2 -0
  96. package/dist/macroable/index.mjs +2 -0
  97. package/dist/macroable-BmufBshB.mjs +122 -0
  98. package/dist/macroable-BmufBshB.mjs.map +1 -0
  99. package/dist/module/index.d.mts +3 -4
  100. package/dist/module/index.d.mts.map +1 -1
  101. package/dist/module/index.mjs +1 -10
  102. package/dist/module-qGE_1duv.mjs +732 -0
  103. package/dist/module-qGE_1duv.mjs.map +1 -0
  104. package/dist/openapi/index.d.mts +3 -3
  105. package/dist/openapi/index.mjs +2 -15
  106. package/dist/{openapi-tools.service-B3TxYKoQ.mjs → openapi-tools.service-CYWGuhue.mjs} +4 -1
  107. package/dist/{openapi-tools.service-B3TxYKoQ.mjs.map → openapi-tools.service-CYWGuhue.mjs.map} +1 -1
  108. package/dist/{openapi.service-DGnX3Fc4.d.mts → openapi.service-Bv_NioM9.d.mts} +9 -17
  109. package/dist/openapi.service-Bv_NioM9.d.mts.map +1 -0
  110. package/dist/quarry/index.d.mts +26 -12
  111. package/dist/quarry/index.d.mts.map +1 -1
  112. package/dist/quarry/index.mjs +4 -8
  113. package/dist/{quarry-registry-B2rkO-JS.mjs → quarry-registry-DFfRRkA7.mjs} +45 -40
  114. package/dist/quarry-registry-DFfRRkA7.mjs.map +1 -0
  115. package/dist/queue/index.d.mts +2 -2
  116. package/dist/queue/index.mjs +3 -13
  117. package/dist/queue/index.mjs.map +1 -1
  118. package/dist/{queue.module-BtI8f4Jo.mjs → queue.module-P-G-nCYz.mjs} +39 -42
  119. package/dist/queue.module-P-G-nCYz.mjs.map +1 -0
  120. package/dist/r2-storage.provider-LdzK9tfG.mjs +244 -0
  121. package/dist/r2-storage.provider-LdzK9tfG.mjs.map +1 -0
  122. package/dist/{resend.provider-bXMEkdRJ.mjs → resend.provider-bwILp0WI.mjs} +2 -4
  123. package/dist/{resend.provider-bXMEkdRJ.mjs.map → resend.provider-bwILp0WI.mjs.map} +1 -1
  124. package/dist/router/index.d.mts +2 -2
  125. package/dist/router/index.mjs +7 -16
  126. package/dist/seeder/index.d.mts +3 -4
  127. package/dist/seeder/index.d.mts.map +1 -1
  128. package/dist/seeder/index.mjs +2 -6
  129. package/dist/{seeder-R7RXJC35.mjs → seeder-BcqIFa2X.mjs} +5 -5
  130. package/dist/{seeder-R7RXJC35.mjs.map → seeder-BcqIFa2X.mjs.map} +1 -1
  131. package/dist/setup-CtekcwuO.mjs +37 -0
  132. package/dist/setup-CtekcwuO.mjs.map +1 -0
  133. package/dist/signed-url-COX7cCWR.mjs +74 -0
  134. package/dist/signed-url-COX7cCWR.mjs.map +1 -0
  135. package/dist/{smtp.provider-DrbHQztF.mjs → smtp.provider-B07yuARi.mjs} +2 -4
  136. package/dist/{smtp.provider-DrbHQztF.mjs.map → smtp.provider-B07yuARi.mjs.map} +1 -1
  137. package/dist/storage/index.d.mts +39 -17
  138. package/dist/storage/index.d.mts.map +1 -1
  139. package/dist/storage/index.mjs +3 -14
  140. package/dist/storage/providers/index.d.mts +30 -69
  141. package/dist/storage/providers/index.d.mts.map +1 -1
  142. package/dist/storage/providers/index.mjs +2 -5
  143. package/dist/{storage-CZKHOhci.mjs → storage-P6X4h9So.mjs} +102 -29
  144. package/dist/storage-P6X4h9So.mjs.map +1 -0
  145. package/dist/{storage-provider.interface-0IqcdhBf.d.mts → storage-provider.interface-CC1nniHk.d.mts} +20 -15
  146. package/dist/storage-provider.interface-CC1nniHk.d.mts.map +1 -0
  147. package/dist/stratal-BCiwCFN9.mjs +533 -0
  148. package/dist/stratal-BCiwCFN9.mjs.map +1 -0
  149. package/dist/{types-DahElfUw.d.mts → types-DIWemRad.d.mts} +2 -2
  150. package/dist/types-DIWemRad.d.mts.map +1 -0
  151. package/dist/{usage-generator-CVIsENuE.mjs → usage-generator-MBcRo0Q2.mjs} +2 -2
  152. package/dist/{usage-generator-CVIsENuE.mjs.map → usage-generator-MBcRo0Q2.mjs.map} +1 -1
  153. package/dist/{validation-DQTC259A.mjs → validation-Dbg3ehdP.mjs} +2 -2
  154. package/dist/{validation-DQTC259A.mjs.map → validation-Dbg3ehdP.mjs.map} +1 -1
  155. package/dist/websocket/index.d.mts +3 -3
  156. package/dist/websocket/index.d.mts.map +1 -1
  157. package/dist/websocket/index.mjs +1 -4
  158. package/dist/workers/index.d.mts +2 -1
  159. package/dist/workers/index.d.mts.map +1 -1
  160. package/dist/workers/index.mjs +2 -20
  161. package/dist/workers/index.mjs.map +1 -1
  162. package/package.json +41 -50
  163. package/dist/application-DfPtIzxF.d.mts +0 -177
  164. package/dist/application-DfPtIzxF.d.mts.map +0 -1
  165. package/dist/command-B1CPgsrU.mjs.map +0 -1
  166. package/dist/cron-manager-CFBamKKk.mjs.map +0 -1
  167. package/dist/cron-manager-D7imGwUT.d.mts.map +0 -1
  168. package/dist/en-DaewN8hc.mjs.map +0 -1
  169. package/dist/errors-DSKapqD8.mjs +0 -707
  170. package/dist/errors-DSKapqD8.mjs.map +0 -1
  171. package/dist/errors-DuAR5Wke.mjs.map +0 -1
  172. package/dist/gateway-context-CNOLkLUC.mjs.map +0 -1
  173. package/dist/guards-DUk_Kzst.mjs.map +0 -1
  174. package/dist/i18n.module-Dn9SrFdS.mjs +0 -1841
  175. package/dist/i18n.module-Dn9SrFdS.mjs.map +0 -1
  176. package/dist/index-BFCxSp_f.d.mts +0 -2625
  177. package/dist/index-BFCxSp_f.d.mts.map +0 -1
  178. package/dist/index-DGRe6Yoa.d.mts.map +0 -1
  179. package/dist/index-NGxg-KP_.d.mts.map +0 -1
  180. package/dist/logger-CGT91VY6.mjs.map +0 -1
  181. package/dist/middleware/index.d.mts +0 -2
  182. package/dist/middleware/index.mjs +0 -5
  183. package/dist/middleware-Bl-b5pkt.mjs +0 -362
  184. package/dist/middleware-Bl-b5pkt.mjs.map +0 -1
  185. package/dist/module-registry-CmjBX6ol.d.mts +0 -121
  186. package/dist/module-registry-CmjBX6ol.d.mts.map +0 -1
  187. package/dist/module-tUtyVJ5E.mjs +0 -371
  188. package/dist/module-tUtyVJ5E.mjs.map +0 -1
  189. package/dist/openapi.service-DGnX3Fc4.d.mts.map +0 -1
  190. package/dist/quarry-registry-B2rkO-JS.mjs.map +0 -1
  191. package/dist/queue.module-BtI8f4Jo.mjs.map +0 -1
  192. package/dist/router-context-D9R1v2Ac.mjs +0 -267
  193. package/dist/router-context-D9R1v2Ac.mjs.map +0 -1
  194. package/dist/s3-storage.provider-CttzNnDR.mjs +0 -335
  195. package/dist/s3-storage.provider-CttzNnDR.mjs.map +0 -1
  196. package/dist/storage-CZKHOhci.mjs.map +0 -1
  197. package/dist/storage-provider.interface-0IqcdhBf.d.mts.map +0 -1
  198. package/dist/stratal-D5smIU1y.mjs +0 -315
  199. package/dist/stratal-D5smIU1y.mjs.map +0 -1
  200. package/dist/types-DahElfUw.d.mts.map +0 -1
@@ -0,0 +1,122 @@
1
+ //#region src/macroable/macroable.ts
2
+ /**
3
+ * Abstract base class for adding macros, instance properties, and getters
4
+ * to classes at runtime.
5
+ *
6
+ * Inspired by [@poppinss/macroable](https://github.com/poppinss/macroable)
7
+ * and Laravel's Macroable trait.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * // Register a macro
12
+ * RouterContext.macro('flash', function (this: RouterContext, key: string, value: unknown) {
13
+ * const session = this.getContainer().resolve(SessionService)
14
+ * session.flash(key, value)
15
+ * })
16
+ *
17
+ * // Register a getter
18
+ * RouterContext.getter('requestId', function (this: RouterContext) {
19
+ * return this.header('x-request-id') ?? crypto.randomUUID()
20
+ * }, true)
21
+ *
22
+ * // Register a per-instance property (safe for destructuring)
23
+ * RouterContext.instanceProperty('getUser', function (this: RouterContext) {
24
+ * return this.getContainer().resolve(AuthContext).user
25
+ * })
26
+ * ```
27
+ */
28
+ var Macroable = class {
29
+ /**
30
+ * Per-instance properties. Each entry is applied and bound
31
+ * to `this` inside the constructor so destructuring stays safe.
32
+ */
33
+ static instanceMacros = /* @__PURE__ */ new Set();
34
+ /**
35
+ * Names registered via macro() — used by hasMacro() and flushMacros().
36
+ */
37
+ static macroNames = /* @__PURE__ */ new Set();
38
+ /**
39
+ * Names registered via getter() — used by hasMacro() and flushMacros().
40
+ */
41
+ static getterNames = /* @__PURE__ */ new Set();
42
+ /**
43
+ * Original prototype values saved before macro() overrides them.
44
+ * Used by flushMacros() to restore native methods.
45
+ */
46
+ static _originals = /* @__PURE__ */ new Map();
47
+ static macro(name, value) {
48
+ if (!Object.prototype.hasOwnProperty.call(this, "macroNames")) this.macroNames = new Set(this.macroNames);
49
+ if (!Object.prototype.hasOwnProperty.call(this, "_originals")) this._originals = new Map(this._originals);
50
+ if (!this._originals.has(name)) {
51
+ const existed = Object.prototype.hasOwnProperty.call(this.prototype, name);
52
+ this._originals.set(name, {
53
+ existed,
54
+ value: existed ? this.prototype[name] : void 0
55
+ });
56
+ }
57
+ this.macroNames.add(name);
58
+ this.prototype[name] = value;
59
+ }
60
+ static instanceProperty(name, value) {
61
+ if (!Object.prototype.hasOwnProperty.call(this, "instanceMacros")) this.instanceMacros = new Set(this.instanceMacros);
62
+ this.instanceMacros.add({
63
+ key: name,
64
+ value
65
+ });
66
+ }
67
+ static getter(name, accumulator, singleton = false) {
68
+ if (!Object.prototype.hasOwnProperty.call(this, "getterNames")) this.getterNames = new Set(this.getterNames);
69
+ this.getterNames.add(name);
70
+ Object.defineProperty(this.prototype, name, {
71
+ get() {
72
+ const value = accumulator.call(this);
73
+ if (singleton) Object.defineProperty(this, name, {
74
+ value,
75
+ configurable: false,
76
+ enumerable: false,
77
+ writable: false
78
+ });
79
+ return value;
80
+ },
81
+ configurable: true,
82
+ enumerable: false
83
+ });
84
+ }
85
+ /**
86
+ * Check if a macro, instance property, or getter is registered.
87
+ *
88
+ * @param name - Name to check
89
+ */
90
+ static hasMacro(name) {
91
+ return this.macroNames.has(name) || [...this.instanceMacros].some((m) => m.key === name) || this.getterNames.has(name);
92
+ }
93
+ /**
94
+ * Remove all macros, instance properties, and getters
95
+ * registered on this class. Does not affect parent classes.
96
+ */
97
+ static flushMacros() {
98
+ const proto = this.prototype;
99
+ for (const name of this.macroNames) {
100
+ const original = this._originals.get(name);
101
+ if (original?.existed) proto[name] = original.value;
102
+ else Reflect.deleteProperty(proto, name);
103
+ }
104
+ for (const name of this.getterNames) Reflect.deleteProperty(proto, name);
105
+ if (Object.prototype.hasOwnProperty.call(this, "macroNames")) this.macroNames.clear();
106
+ if (Object.prototype.hasOwnProperty.call(this, "instanceMacros")) this.instanceMacros.clear();
107
+ if (Object.prototype.hasOwnProperty.call(this, "getterNames")) this.getterNames.clear();
108
+ if (Object.prototype.hasOwnProperty.call(this, "_originals")) this._originals.clear();
109
+ }
110
+ constructor() {
111
+ const Constructor = this.constructor;
112
+ const self = this;
113
+ Constructor.instanceMacros.forEach(({ key, value }) => {
114
+ if (typeof value === "function") self[key] = value.bind(this);
115
+ else self[key] = value;
116
+ });
117
+ }
118
+ };
119
+ //#endregion
120
+ export { Macroable as t };
121
+
122
+ //# sourceMappingURL=macroable-BmufBshB.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"macroable-BmufBshB.mjs","names":[],"sources":["../src/macroable/macroable.ts"],"sourcesContent":["import type { MacroFunction } from './types'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Constructor = abstract new (...args: any[]) => any\n\n/**\n * Abstract base class for adding macros, instance properties, and getters\n * to classes at runtime.\n *\n * Inspired by [@poppinss/macroable](https://github.com/poppinss/macroable)\n * and Laravel's Macroable trait.\n *\n * @example\n * ```typescript\n * // Register a macro\n * RouterContext.macro('flash', function (this: RouterContext, key: string, value: unknown) {\n * const session = this.getContainer().resolve(SessionService)\n * session.flash(key, value)\n * })\n *\n * // Register a getter\n * RouterContext.getter('requestId', function (this: RouterContext) {\n * return this.header('x-request-id') ?? crypto.randomUUID()\n * }, true)\n *\n * // Register a per-instance property (safe for destructuring)\n * RouterContext.instanceProperty('getUser', function (this: RouterContext) {\n * return this.getContainer().resolve(AuthContext).user\n * })\n * ```\n */\nexport abstract class Macroable {\n [key: string | symbol]: unknown\n /**\n * Per-instance properties. Each entry is applied and bound\n * to `this` inside the constructor so destructuring stays safe.\n */\n protected static instanceMacros = new Set<{ key: string | symbol; value: unknown }>()\n\n /**\n * Names registered via macro() — used by hasMacro() and flushMacros().\n */\n protected static macroNames = new Set<string | symbol>()\n\n /**\n * Names registered via getter() — used by hasMacro() and flushMacros().\n */\n protected static getterNames = new Set<string | symbol>()\n\n /**\n * Original prototype values saved before macro() overrides them.\n * Used by flushMacros() to restore native methods.\n */\n private static _originals = new Map<string | symbol, { existed: boolean; value: unknown }>()\n\n // ── Macros (prototype-level) ──────────────────────────────\n\n /**\n * Register a macro on the class prototype.\n * Can override existing methods.\n *\n * When the name matches an existing property, the value type is auto-derived.\n *\n * @param name - Method or property name\n * @param value - Function or value to assign\n */\n static macro<T extends Constructor, K extends keyof InstanceType<T>>(\n this: T,\n name: K,\n value: InstanceType<T>[K],\n ): void\n static macro(name: string | symbol, value: unknown): void\n static macro(name: string | symbol, value: unknown): void {\n if (!Object.prototype.hasOwnProperty.call(this, 'macroNames')) {\n this.macroNames = new Set(this.macroNames)\n }\n if (!Object.prototype.hasOwnProperty.call(this, '_originals')) {\n this._originals = new Map(this._originals)\n }\n\n // Save the original value before first override so flushMacros() can restore it\n if (!this._originals.has(name)) {\n const existed = Object.prototype.hasOwnProperty.call(this.prototype, name)\n this._originals.set(name, {\n existed,\n value: existed ? (this.prototype as Record<string | symbol, unknown>)[name] : undefined,\n })\n }\n\n this.macroNames.add(name);\n (this.prototype as Record<string | symbol, unknown>)[name] = value\n }\n\n // ── Instance properties (bound per-instance) ─────────────\n\n /**\n * Register a per-instance property that is bound to `this`\n * in the constructor. Safe for destructuring.\n *\n * When the name matches an existing property, the value type is auto-derived.\n *\n * @param name - Property name\n * @param value - Function (will be bound) or value\n */\n static instanceProperty<T extends Constructor, K extends keyof InstanceType<T>>(\n this: T,\n name: K,\n value: InstanceType<T>[K],\n ): void\n static instanceProperty(name: string | symbol, value: unknown): void\n static instanceProperty(name: string | symbol, value: unknown): void {\n if (!Object.prototype.hasOwnProperty.call(this, 'instanceMacros')) {\n this.instanceMacros = new Set(this.instanceMacros)\n }\n this.instanceMacros.add({ key: name, value })\n }\n\n // ── Getters (Object.defineProperty on prototype) ──────────\n\n /**\n * Register a computed getter on the class prototype.\n *\n * @param name - Property name\n * @param accumulator - Function that computes the value (called with instance as `this`)\n * @param singleton - If true, cache the value after first access\n */\n static getter<T extends Constructor, K extends keyof InstanceType<T>>(\n this: T,\n name: K,\n accumulator: (this: InstanceType<T>) => InstanceType<T>[K],\n singleton?: boolean,\n ): void\n static getter(name: string | symbol, accumulator: MacroFunction, singleton?: boolean): void\n static getter(\n name: string | symbol,\n accumulator: MacroFunction,\n singleton = false,\n ): void {\n if (!Object.prototype.hasOwnProperty.call(this, 'getterNames')) {\n this.getterNames = new Set(this.getterNames)\n }\n this.getterNames.add(name)\n\n Object.defineProperty(this.prototype, name, {\n get(): unknown {\n const value: unknown = accumulator.call(this)\n if (singleton) {\n Object.defineProperty(this, name, {\n value,\n configurable: false,\n enumerable: false,\n writable: false,\n })\n }\n return value\n },\n configurable: true,\n enumerable: false,\n })\n }\n\n // ── Introspection ─────────────────────────────────────────\n\n /**\n * Check if a macro, instance property, or getter is registered.\n *\n * @param name - Name to check\n */\n static hasMacro(name: string | symbol): boolean {\n return (\n this.macroNames.has(name) ||\n [...this.instanceMacros].some((m) => m.key === name) ||\n this.getterNames.has(name)\n )\n }\n\n // ── Cleanup ───────────────────────────────────────────────\n\n /**\n * Remove all macros, instance properties, and getters\n * registered on this class. Does not affect parent classes.\n */\n static flushMacros(): void {\n const proto = this.prototype as Record<string | symbol, unknown>\n\n // Restore original prototype values or delete if they didn't exist before\n for (const name of this.macroNames) {\n const original = this._originals.get(name)\n if (original?.existed) {\n proto[name] = original.value\n } else {\n Reflect.deleteProperty(proto, name)\n }\n }\n for (const name of this.getterNames) {\n Reflect.deleteProperty(proto, name)\n }\n\n if (Object.prototype.hasOwnProperty.call(this, 'macroNames')) {\n this.macroNames.clear()\n }\n if (Object.prototype.hasOwnProperty.call(this, 'instanceMacros')) {\n this.instanceMacros.clear()\n }\n if (Object.prototype.hasOwnProperty.call(this, 'getterNames')) {\n this.getterNames.clear()\n }\n if (Object.prototype.hasOwnProperty.call(this, '_originals')) {\n this._originals.clear()\n }\n }\n\n // ── Constructor (applies instance properties) ─────────────\n\n constructor() {\n const Constructor = this.constructor as typeof Macroable\n const self = this as Record<string | symbol, unknown>\n Constructor.instanceMacros.forEach(({ key, value }) => {\n if (typeof value === 'function') {\n self[key] = value.bind(this)\n } else {\n self[key] = value\n }\n })\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,IAAsB,YAAtB,MAAgC;;;;;CAM9B,OAAiB,iCAAiB,IAAI,KAA+C;;;;CAKrF,OAAiB,6BAAa,IAAI,KAAsB;;;;CAKxD,OAAiB,8BAAc,IAAI,KAAsB;;;;;CAMzD,OAAe,6BAAa,IAAI,KAA4D;CAmB5F,OAAO,MAAM,MAAuB,OAAsB;AACxD,MAAI,CAAC,OAAO,UAAU,eAAe,KAAK,MAAM,aAAa,CAC3D,MAAK,aAAa,IAAI,IAAI,KAAK,WAAW;AAE5C,MAAI,CAAC,OAAO,UAAU,eAAe,KAAK,MAAM,aAAa,CAC3D,MAAK,aAAa,IAAI,IAAI,KAAK,WAAW;AAI5C,MAAI,CAAC,KAAK,WAAW,IAAI,KAAK,EAAE;GAC9B,MAAM,UAAU,OAAO,UAAU,eAAe,KAAK,KAAK,WAAW,KAAK;AAC1E,QAAK,WAAW,IAAI,MAAM;IACxB;IACA,OAAO,UAAW,KAAK,UAA+C,QAAQ,KAAA;IAC/E,CAAC;;AAGJ,OAAK,WAAW,IAAI,KAAK;AACxB,OAAK,UAA+C,QAAQ;;CAoB/D,OAAO,iBAAiB,MAAuB,OAAsB;AACnE,MAAI,CAAC,OAAO,UAAU,eAAe,KAAK,MAAM,iBAAiB,CAC/D,MAAK,iBAAiB,IAAI,IAAI,KAAK,eAAe;AAEpD,OAAK,eAAe,IAAI;GAAE,KAAK;GAAM;GAAO,CAAC;;CAmB/C,OAAO,OACL,MACA,aACA,YAAY,OACN;AACN,MAAI,CAAC,OAAO,UAAU,eAAe,KAAK,MAAM,cAAc,CAC5D,MAAK,cAAc,IAAI,IAAI,KAAK,YAAY;AAE9C,OAAK,YAAY,IAAI,KAAK;AAE1B,SAAO,eAAe,KAAK,WAAW,MAAM;GAC1C,MAAe;IACb,MAAM,QAAiB,YAAY,KAAK,KAAK;AAC7C,QAAI,UACF,QAAO,eAAe,MAAM,MAAM;KAChC;KACA,cAAc;KACd,YAAY;KACZ,UAAU;KACX,CAAC;AAEJ,WAAO;;GAET,cAAc;GACd,YAAY;GACb,CAAC;;;;;;;CAUJ,OAAO,SAAS,MAAgC;AAC9C,SACE,KAAK,WAAW,IAAI,KAAK,IACzB,CAAC,GAAG,KAAK,eAAe,CAAC,MAAM,MAAM,EAAE,QAAQ,KAAK,IACpD,KAAK,YAAY,IAAI,KAAK;;;;;;CAU9B,OAAO,cAAoB;EACzB,MAAM,QAAQ,KAAK;AAGnB,OAAK,MAAM,QAAQ,KAAK,YAAY;GAClC,MAAM,WAAW,KAAK,WAAW,IAAI,KAAK;AAC1C,OAAI,UAAU,QACZ,OAAM,QAAQ,SAAS;OAEvB,SAAQ,eAAe,OAAO,KAAK;;AAGvC,OAAK,MAAM,QAAQ,KAAK,YACtB,SAAQ,eAAe,OAAO,KAAK;AAGrC,MAAI,OAAO,UAAU,eAAe,KAAK,MAAM,aAAa,CAC1D,MAAK,WAAW,OAAO;AAEzB,MAAI,OAAO,UAAU,eAAe,KAAK,MAAM,iBAAiB,CAC9D,MAAK,eAAe,OAAO;AAE7B,MAAI,OAAO,UAAU,eAAe,KAAK,MAAM,cAAc,CAC3D,MAAK,YAAY,OAAO;AAE1B,MAAI,OAAO,UAAU,eAAe,KAAK,MAAM,aAAa,CAC1D,MAAK,WAAW,OAAO;;CAM3B,cAAc;EACZ,MAAM,cAAc,KAAK;EACzB,MAAM,OAAO;AACb,cAAY,eAAe,SAAS,EAAE,KAAK,YAAY;AACrD,OAAI,OAAO,UAAU,WACnB,MAAK,OAAO,MAAM,KAAK,KAAK;OAE5B,MAAK,OAAO;IAEd"}
@@ -1,6 +1,5 @@
1
- import { at as DynamicModule, ct as InjectionToken, dt as ModuleOptions, ft as OnInitialize, gt as ValueProvider, ht as RegistryEntry, it as ClassProvider, lt as ModuleClass, mt as Provider, ot as ExistingProvider, pt as OnShutdown, rt as AsyncModuleOptions, st as FactoryProvider, ut as ModuleContext } from "../index-BFCxSp_f.mjs";
2
- import { t as Constructor } from "../types-DahElfUw.mjs";
3
- import { t as ModuleRegistry } from "../module-registry-CmjBX6ol.mjs";
1
+ import { $t as ModuleRegistry, Cn as OnInitialize, Dn as ValueProvider, En as RegistryEntry, Sn as OnException, Tn as Provider, _n as FactoryProvider, bn as ModuleContext, gn as ExistingProvider, hn as DynamicModule, mn as ClassProvider, pn as AsyncModuleOptions, vn as InjectionToken, wn as OnShutdown, xn as ModuleOptions, yn as ModuleClass } from "../index-DPFqRs8L.mjs";
2
+ import { t as Constructor } from "../types-DIWemRad.mjs";
4
3
 
5
4
  //#region src/module/module.decorator.d.ts
6
5
  declare const MODULE_OPTIONS_KEY: unique symbol;
@@ -29,5 +28,5 @@ declare function getModuleOptions(target: Constructor): ModuleOptions | undefine
29
28
  */
30
29
  declare function isModuleClass(target: unknown): target is Constructor;
31
30
  //#endregion
32
- export { AsyncModuleOptions, ClassProvider, DynamicModule, ExistingProvider, FactoryProvider, InjectionToken, MODULE_OPTIONS_KEY, Module, ModuleClass, ModuleContext, ModuleOptions, ModuleRegistry, OnInitialize, OnShutdown, Provider, RegistryEntry, ValueProvider, getModuleOptions, isModuleClass };
31
+ export { AsyncModuleOptions, ClassProvider, DynamicModule, ExistingProvider, FactoryProvider, InjectionToken, MODULE_OPTIONS_KEY, Module, ModuleClass, ModuleContext, ModuleOptions, ModuleRegistry, OnException, OnInitialize, OnShutdown, Provider, RegistryEntry, ValueProvider, getModuleOptions, isModuleClass };
33
32
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/module/module.decorator.ts"],"mappings":";;;;;cAea,kBAAA;;;AAyBb;;;;;;;;;;;;;iBAAgB,MAAA,CAAO,OAAA,EAAS,aAAA,uCACa,IAAA,uBAA2B,MAAA,EAAQ,SAAA,KAAY,SAAA;;;;iBAmB5E,gBAAA,CAAiB,MAAA,EAAQ,WAAA,GAAc,aAAA;;;;iBAOvC,aAAA,CAAc,MAAA,YAAkB,MAAA,IAAU,WAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/module/module.decorator.ts"],"mappings":";;;;cAea,kBAAA;AAyBb;;;;;;;;;;;;;;;AAAA,iBAAgB,MAAA,CAAO,OAAA,EAAS,aAAA,uCACa,IAAA,uBAA2B,MAAA,EAAQ,SAAA,KAAY,SAAA;;AAmB5F;;iBAAgB,gBAAA,CAAiB,MAAA,EAAQ,WAAA,GAAc,aAAA;;;;iBAOvC,aAAA,CAAc,MAAA,YAAkB,MAAA,IAAU,WAAA"}
@@ -1,11 +1,2 @@
1
- import "../errors-DSKapqD8.mjs";
2
- import "../logger-CGT91VY6.mjs";
3
- import { a as isModuleClass, i as getModuleOptions, n as MODULE_OPTIONS_KEY, r as Module, t as ModuleRegistry } from "../module-tUtyVJ5E.mjs";
4
- import "../events-CvUSgEuN.mjs";
5
- import "../middleware-Bl-b5pkt.mjs";
6
- import "../router-context-D9R1v2Ac.mjs";
7
- import "../colors-Y7WIFXs7.mjs";
8
- import "../command-B1CPgsrU.mjs";
9
- import "../is-command-DJVI6wEJ.mjs";
10
- import "../is-seeder-D5MIEcdz.mjs";
1
+ import { C as Module, S as MODULE_OPTIONS_KEY, T as isModuleClass, t as ModuleRegistry, w as getModuleOptions } from "../module-qGE_1duv.mjs";
11
2
  export { MODULE_OPTIONS_KEY, Module, ModuleRegistry, getModuleOptions, isModuleClass };