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.
- package/README.md +8 -8
- package/dist/{base-email.provider-DypUAfWm.mjs → base-email.provider-mjynzewK.mjs} +1 -1
- package/dist/{base-email.provider-DypUAfWm.mjs.map → base-email.provider-mjynzewK.mjs.map} +1 -1
- package/dist/bin/cloudflare-workers-loader.mjs +33 -1
- package/dist/bin/cloudflare-workers-loader.mjs.map +1 -1
- package/dist/bin/quarry.mjs +169 -7
- package/dist/bin/quarry.mjs.map +1 -1
- package/dist/cache/index.d.mts +3 -2
- package/dist/cache/index.d.mts.map +1 -1
- package/dist/cache/index.mjs +3 -10
- package/dist/cache/index.mjs.map +1 -1
- package/dist/{colors-Y7WIFXs7.mjs → colors-DJaRDXoS.mjs} +1 -1
- package/dist/{colors-Y7WIFXs7.mjs.map → colors-DJaRDXoS.mjs.map} +1 -1
- package/dist/{command-B1CPgsrU.mjs → command-BgSlsS4M.mjs} +3 -3
- package/dist/command-BgSlsS4M.mjs.map +1 -0
- package/dist/{command-TnkPYWta.d.mts → command-DsQq56Lp.d.mts} +2 -2
- package/dist/{command-TnkPYWta.d.mts.map → command-DsQq56Lp.d.mts.map} +1 -1
- package/dist/config/index.d.mts +81 -37
- package/dist/config/index.d.mts.map +1 -1
- package/dist/config/index.mjs +135 -61
- package/dist/config/index.mjs.map +1 -1
- package/dist/{consumer-registry-Bymm6ff4.d.mts → consumer-registry-Doom7BEh.d.mts} +1 -1
- package/dist/{consumer-registry-Bymm6ff4.d.mts.map → consumer-registry-Doom7BEh.d.mts.map} +1 -1
- package/dist/controller.decorator-LZY9aHYG.mjs +66 -0
- package/dist/controller.decorator-LZY9aHYG.mjs.map +1 -0
- package/dist/cron/index.d.mts +4 -3
- package/dist/cron/index.d.mts.map +1 -1
- package/dist/cron/index.mjs +1 -3
- package/dist/{cron-manager-CFBamKKk.mjs → cron-manager-C30t9UZM.mjs} +29 -19
- package/dist/cron-manager-C30t9UZM.mjs.map +1 -0
- package/dist/{cron-manager-D7imGwUT.d.mts → cron-manager-RuPtFVLy.d.mts} +28 -14
- package/dist/cron-manager-RuPtFVLy.d.mts.map +1 -0
- package/dist/di/index.d.mts +2 -2
- package/dist/di/index.mjs +3 -3
- package/dist/email/index.d.mts +3 -3
- package/dist/email/index.mjs +87 -18
- package/dist/email/index.mjs.map +1 -1
- package/dist/{en-DaewN8hc.mjs → en-rHmW6vD9.mjs} +14 -31
- package/dist/en-rHmW6vD9.mjs.map +1 -0
- package/dist/env-CamWD-U1.d.mts +25 -0
- package/dist/env-CamWD-U1.d.mts.map +1 -0
- package/dist/errors/index.d.mts +2 -2
- package/dist/errors/index.mjs +2 -3
- package/dist/errors-B4pYgYON.mjs +1714 -0
- package/dist/errors-B4pYgYON.mjs.map +1 -0
- package/dist/{errors-DuAR5Wke.mjs → errors-BUyUfr2Z.mjs} +14 -7
- package/dist/errors-BUyUfr2Z.mjs.map +1 -0
- package/dist/events/index.d.mts +2 -2
- package/dist/events/index.mjs +1 -2
- package/dist/{events-CvUSgEuN.mjs → events-COKixqnG.mjs} +2 -2
- package/dist/{events-CvUSgEuN.mjs.map → events-COKixqnG.mjs.map} +1 -1
- package/dist/{gateway-context-CNOLkLUC.mjs → gateway-context-cqZ8wMoi.mjs} +4 -9
- package/dist/gateway-context-cqZ8wMoi.mjs.map +1 -0
- package/dist/guards/index.d.mts +14 -5
- package/dist/guards/index.d.mts.map +1 -1
- package/dist/guards/index.mjs +1 -1
- package/dist/{guards-DUk_Kzst.mjs → guards-DMbsAxSX.mjs} +1 -1
- package/dist/guards-DMbsAxSX.mjs.map +1 -0
- package/dist/http-method.decorator-BT3ufnz8.mjs +96 -0
- package/dist/http-method.decorator-BT3ufnz8.mjs.map +1 -0
- package/dist/i18n/index.d.mts +3 -3
- package/dist/i18n/index.mjs +3 -16
- package/dist/i18n/messages/en/index.d.mts +1 -1
- package/dist/i18n/messages/en/index.mjs +1 -1
- package/dist/i18n/utils/index.d.mts +30 -0
- package/dist/i18n/utils/index.d.mts.map +1 -0
- package/dist/i18n/utils/index.mjs +2 -0
- package/dist/i18n/validation/index.d.mts +1 -1
- package/dist/i18n/validation/index.mjs +1 -1
- package/dist/i18n.module-CI_prYFD.mjs +2340 -0
- package/dist/i18n.module-CI_prYFD.mjs.map +1 -0
- package/dist/{index-NGxg-KP_.d.mts → index-B437eK7p.d.mts} +59 -16
- package/dist/index-B437eK7p.d.mts.map +1 -0
- package/dist/{index-Dp6A5ywM.d.mts → index-CWRS7Ri3.d.mts} +1 -1
- package/dist/{index-Dp6A5ywM.d.mts.map → index-CWRS7Ri3.d.mts.map} +1 -1
- package/dist/{index-D_w_Rmtd.d.mts → index-DFhEeFfC.d.mts} +13 -30
- package/dist/{index-D_w_Rmtd.d.mts.map → index-DFhEeFfC.d.mts.map} +1 -1
- package/dist/index-DPFqRs8L.d.mts +4318 -0
- package/dist/index-DPFqRs8L.d.mts.map +1 -0
- package/dist/{index-DGRe6Yoa.d.mts → index-Dnqm9ZB6.d.mts} +5 -4
- package/dist/index-Dnqm9ZB6.d.mts.map +1 -0
- package/dist/index-SHx31sBJ.d.mts +101 -0
- package/dist/index-SHx31sBJ.d.mts.map +1 -0
- package/dist/index.d.mts +5 -3
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -20
- package/dist/{is-command-DJVI6wEJ.mjs → is-command-C6a7WTPw.mjs} +2 -2
- package/dist/{is-command-DJVI6wEJ.mjs.map → is-command-C6a7WTPw.mjs.map} +1 -1
- package/dist/{is-seeder-D5MIEcdz.mjs → is-seeder-CebjZCDn.mjs} +1 -1
- package/dist/{is-seeder-D5MIEcdz.mjs.map → is-seeder-CebjZCDn.mjs.map} +1 -1
- package/dist/logger/index.d.mts +1 -1
- package/dist/logger/index.mjs +1 -1
- package/dist/{logger-CGT91VY6.mjs → logger-V6Ms3QnQ.mjs} +63 -45
- package/dist/logger-V6Ms3QnQ.mjs.map +1 -0
- package/dist/macroable/index.d.mts +2 -0
- package/dist/macroable/index.mjs +2 -0
- package/dist/macroable-BmufBshB.mjs +122 -0
- package/dist/macroable-BmufBshB.mjs.map +1 -0
- package/dist/module/index.d.mts +3 -4
- package/dist/module/index.d.mts.map +1 -1
- package/dist/module/index.mjs +1 -10
- package/dist/module-qGE_1duv.mjs +732 -0
- package/dist/module-qGE_1duv.mjs.map +1 -0
- package/dist/openapi/index.d.mts +3 -3
- package/dist/openapi/index.mjs +2 -15
- package/dist/{openapi-tools.service-B3TxYKoQ.mjs → openapi-tools.service-CYWGuhue.mjs} +4 -1
- package/dist/{openapi-tools.service-B3TxYKoQ.mjs.map → openapi-tools.service-CYWGuhue.mjs.map} +1 -1
- package/dist/{openapi.service-DGnX3Fc4.d.mts → openapi.service-Bv_NioM9.d.mts} +9 -17
- package/dist/openapi.service-Bv_NioM9.d.mts.map +1 -0
- package/dist/quarry/index.d.mts +26 -12
- package/dist/quarry/index.d.mts.map +1 -1
- package/dist/quarry/index.mjs +4 -8
- package/dist/{quarry-registry-B2rkO-JS.mjs → quarry-registry-DFfRRkA7.mjs} +45 -40
- package/dist/quarry-registry-DFfRRkA7.mjs.map +1 -0
- package/dist/queue/index.d.mts +2 -2
- package/dist/queue/index.mjs +3 -13
- package/dist/queue/index.mjs.map +1 -1
- package/dist/{queue.module-BtI8f4Jo.mjs → queue.module-P-G-nCYz.mjs} +39 -42
- package/dist/queue.module-P-G-nCYz.mjs.map +1 -0
- package/dist/r2-storage.provider-LdzK9tfG.mjs +244 -0
- package/dist/r2-storage.provider-LdzK9tfG.mjs.map +1 -0
- package/dist/{resend.provider-bXMEkdRJ.mjs → resend.provider-bwILp0WI.mjs} +2 -4
- package/dist/{resend.provider-bXMEkdRJ.mjs.map → resend.provider-bwILp0WI.mjs.map} +1 -1
- package/dist/router/index.d.mts +2 -2
- package/dist/router/index.mjs +7 -16
- package/dist/seeder/index.d.mts +3 -4
- package/dist/seeder/index.d.mts.map +1 -1
- package/dist/seeder/index.mjs +2 -6
- package/dist/{seeder-R7RXJC35.mjs → seeder-BcqIFa2X.mjs} +5 -5
- package/dist/{seeder-R7RXJC35.mjs.map → seeder-BcqIFa2X.mjs.map} +1 -1
- package/dist/setup-CtekcwuO.mjs +37 -0
- package/dist/setup-CtekcwuO.mjs.map +1 -0
- package/dist/signed-url-COX7cCWR.mjs +74 -0
- package/dist/signed-url-COX7cCWR.mjs.map +1 -0
- package/dist/{smtp.provider-DrbHQztF.mjs → smtp.provider-B07yuARi.mjs} +2 -4
- package/dist/{smtp.provider-DrbHQztF.mjs.map → smtp.provider-B07yuARi.mjs.map} +1 -1
- package/dist/storage/index.d.mts +39 -17
- package/dist/storage/index.d.mts.map +1 -1
- package/dist/storage/index.mjs +3 -14
- package/dist/storage/providers/index.d.mts +30 -69
- package/dist/storage/providers/index.d.mts.map +1 -1
- package/dist/storage/providers/index.mjs +2 -5
- package/dist/{storage-CZKHOhci.mjs → storage-P6X4h9So.mjs} +102 -29
- package/dist/storage-P6X4h9So.mjs.map +1 -0
- package/dist/{storage-provider.interface-0IqcdhBf.d.mts → storage-provider.interface-CC1nniHk.d.mts} +20 -15
- package/dist/storage-provider.interface-CC1nniHk.d.mts.map +1 -0
- package/dist/stratal-BCiwCFN9.mjs +533 -0
- package/dist/stratal-BCiwCFN9.mjs.map +1 -0
- package/dist/{types-DahElfUw.d.mts → types-DIWemRad.d.mts} +2 -2
- package/dist/types-DIWemRad.d.mts.map +1 -0
- package/dist/{usage-generator-CVIsENuE.mjs → usage-generator-MBcRo0Q2.mjs} +2 -2
- package/dist/{usage-generator-CVIsENuE.mjs.map → usage-generator-MBcRo0Q2.mjs.map} +1 -1
- package/dist/{validation-DQTC259A.mjs → validation-Dbg3ehdP.mjs} +2 -2
- package/dist/{validation-DQTC259A.mjs.map → validation-Dbg3ehdP.mjs.map} +1 -1
- package/dist/websocket/index.d.mts +3 -3
- package/dist/websocket/index.d.mts.map +1 -1
- package/dist/websocket/index.mjs +1 -4
- package/dist/workers/index.d.mts +2 -1
- package/dist/workers/index.d.mts.map +1 -1
- package/dist/workers/index.mjs +2 -20
- package/dist/workers/index.mjs.map +1 -1
- package/package.json +41 -50
- package/dist/application-DfPtIzxF.d.mts +0 -177
- package/dist/application-DfPtIzxF.d.mts.map +0 -1
- package/dist/command-B1CPgsrU.mjs.map +0 -1
- package/dist/cron-manager-CFBamKKk.mjs.map +0 -1
- package/dist/cron-manager-D7imGwUT.d.mts.map +0 -1
- package/dist/en-DaewN8hc.mjs.map +0 -1
- package/dist/errors-DSKapqD8.mjs +0 -707
- package/dist/errors-DSKapqD8.mjs.map +0 -1
- package/dist/errors-DuAR5Wke.mjs.map +0 -1
- package/dist/gateway-context-CNOLkLUC.mjs.map +0 -1
- package/dist/guards-DUk_Kzst.mjs.map +0 -1
- package/dist/i18n.module-Dn9SrFdS.mjs +0 -1841
- package/dist/i18n.module-Dn9SrFdS.mjs.map +0 -1
- package/dist/index-BFCxSp_f.d.mts +0 -2625
- package/dist/index-BFCxSp_f.d.mts.map +0 -1
- package/dist/index-DGRe6Yoa.d.mts.map +0 -1
- package/dist/index-NGxg-KP_.d.mts.map +0 -1
- package/dist/logger-CGT91VY6.mjs.map +0 -1
- package/dist/middleware/index.d.mts +0 -2
- package/dist/middleware/index.mjs +0 -5
- package/dist/middleware-Bl-b5pkt.mjs +0 -362
- package/dist/middleware-Bl-b5pkt.mjs.map +0 -1
- package/dist/module-registry-CmjBX6ol.d.mts +0 -121
- package/dist/module-registry-CmjBX6ol.d.mts.map +0 -1
- package/dist/module-tUtyVJ5E.mjs +0 -371
- package/dist/module-tUtyVJ5E.mjs.map +0 -1
- package/dist/openapi.service-DGnX3Fc4.d.mts.map +0 -1
- package/dist/quarry-registry-B2rkO-JS.mjs.map +0 -1
- package/dist/queue.module-BtI8f4Jo.mjs.map +0 -1
- package/dist/router-context-D9R1v2Ac.mjs +0 -267
- package/dist/router-context-D9R1v2Ac.mjs.map +0 -1
- package/dist/s3-storage.provider-CttzNnDR.mjs +0 -335
- package/dist/s3-storage.provider-CttzNnDR.mjs.map +0 -1
- package/dist/storage-CZKHOhci.mjs.map +0 -1
- package/dist/storage-provider.interface-0IqcdhBf.d.mts.map +0 -1
- package/dist/stratal-D5smIU1y.mjs +0 -315
- package/dist/stratal-D5smIU1y.mjs.map +0 -1
- 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"}
|
package/dist/module/index.d.mts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as Constructor } from "../types-
|
|
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":"
|
|
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"}
|
package/dist/module/index.mjs
CHANGED
|
@@ -1,11 +1,2 @@
|
|
|
1
|
-
import "../
|
|
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 };
|