@kanian77/choux 0.1.6 → 0.2.0

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 (31) hide show
  1. package/dist/core/HookRegistry.spec.js +11 -0
  2. package/dist/core/HookRegistry.spec.js.map +1 -1
  3. package/dist/core/PluginManager.d.ts +1 -1
  4. package/dist/core/PluginManager.d.ts.map +1 -1
  5. package/dist/core/PluginManager.js +6 -2
  6. package/dist/core/PluginManager.js.map +1 -1
  7. package/dist/decorators/enableHooksDecorator.d.ts +4 -0
  8. package/dist/decorators/enableHooksDecorator.d.ts.map +1 -0
  9. package/dist/decorators/enableHooksDecorator.js +10 -0
  10. package/dist/decorators/enableHooksDecorator.js.map +1 -0
  11. package/dist/decorators/hookDecorator.d.ts +0 -6
  12. package/dist/decorators/hookDecorator.d.ts.map +1 -1
  13. package/dist/decorators/hookDecorator.js +1 -8
  14. package/dist/decorators/hookDecorator.js.map +1 -1
  15. package/dist/decorators/hookDecorator.spec.d.ts +2 -0
  16. package/dist/decorators/hookDecorator.spec.d.ts.map +1 -0
  17. package/dist/decorators/hookDecorator.spec.js +51 -0
  18. package/dist/decorators/hookDecorator.spec.js.map +1 -0
  19. package/dist/decorators/index.d.ts +1 -0
  20. package/dist/decorators/index.d.ts.map +1 -1
  21. package/dist/decorators/index.js +1 -0
  22. package/dist/decorators/index.js.map +1 -1
  23. package/dist/lib/functions/registerHookHandler.d.ts +1 -1
  24. package/dist/lib/functions/registerHookHandler.d.ts.map +1 -1
  25. package/dist/lib/functions/registerHookHandler.js +4 -4
  26. package/dist/lib/functions/registerHookHandler.js.map +1 -1
  27. package/dist/lib/functions/registerInstanceHooks.d.ts +2 -0
  28. package/dist/lib/functions/registerInstanceHooks.d.ts.map +1 -0
  29. package/dist/lib/functions/registerInstanceHooks.js +19 -0
  30. package/dist/lib/functions/registerInstanceHooks.js.map +1 -0
  31. package/package.json +1 -1
@@ -14,6 +14,17 @@ describe('HookRegistry', () => {
14
14
  await registry.trigger('test:hook');
15
15
  expect(called).toBe(true);
16
16
  });
17
+ it('registers and triggers a hook with payload', async () => {
18
+ let called = false;
19
+ const payload = { test: 'data' };
20
+ const fn = (payload) => {
21
+ called = true;
22
+ expect(payload).toEqual({ test: 'data' });
23
+ };
24
+ registry.register('test:hook', fn);
25
+ await registry.trigger('test:hook', payload);
26
+ expect(called).toBe(true);
27
+ });
17
28
  it('unregisters a specific hook handler', async () => {
18
29
  let called = false;
19
30
  const fn = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"HookRegistry.spec.js","sourceRoot":"","sources":["../../src/core/HookRegistry.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HookRegistry.spec.js","sourceRoot":"","sources":["../../src/core/HookRegistry.spec.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ export declare class PluginManager implements IPluginManager {
4
4
  private hookRegistry;
5
5
  private loader;
6
6
  constructor(hookRegistry: IHookRegistry, loader: PluginLoader);
7
- initialize(pluginsDir: string): Promise<void>;
7
+ initialize(...pluginsDir: string[]): Promise<void>;
8
8
  shutdown(): Promise<void>;
9
9
  getPlugin(name: string): LoadedPlugin | undefined;
10
10
  getAllPlugins(): LoadedPlugin[];
@@ -1 +1 @@
1
- {"version":3,"file":"PluginManager.d.ts","sourceRoot":"","sources":["../../src/core/PluginManager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAI9C,qBACa,aAAc,YAAW,cAAc;IAEnB,OAAO,CAAC,YAAY;IAC3B,OAAO,CAAC,MAAM;gBADC,YAAY,EAAE,aAAa,EAClC,MAAM,EAAE,YAAY;IAG9C,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW7C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAa/B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIjD,aAAa,IAAI,YAAY,EAAE;CAGhC"}
1
+ {"version":3,"file":"PluginManager.d.ts","sourceRoot":"","sources":["../../src/core/PluginManager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAI9C,qBACa,aAAc,YAAW,cAAc;IAEnB,OAAO,CAAC,YAAY;IAC3B,OAAO,CAAC,MAAM;gBADC,YAAY,EAAE,aAAa,EAClC,MAAM,EAAE,YAAY;IAG9C,UAAU,CAAC,GAAG,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAelD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAa/B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIjD,aAAa,IAAI,YAAY,EAAE;CAGhC"}
@@ -22,9 +22,13 @@ let PluginManager = class PluginManager {
22
22
  this.hookRegistry = hookRegistry;
23
23
  this.loader = loader;
24
24
  }
25
- async initialize(pluginsDir) {
25
+ async initialize(...pluginsDir) {
26
26
  await this.hookRegistry.trigger(LIFECYCLE_HOOKS.APPLICATION_START);
27
- const plugins = await this.loader.loadPlugins(pluginsDir);
27
+ let plugins = [];
28
+ await Promise.all(pluginsDir.map(async (dir) => {
29
+ const loaded = await this.loader.loadPlugins(dir);
30
+ plugins = [...plugins, ...loaded];
31
+ }));
28
32
  console.log(`Loaded ${plugins.length} plugins:`);
29
33
  plugins.forEach((p) => {
30
34
  console.log(` - ${p.metadata.name} v${p.metadata.version}`);
@@ -1 +1 @@
1
- {"version":3,"file":"PluginManager.js","sourceRoot":"","sources":["../../src/core/PluginManager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAU,OAAO,EAAE,MAAM,EAAU,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEhF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,sEAAsE;AAG/D,IAAM,aAAa,GAAnB,MAAM,aAAa;IAEe;IACP;IAFhC,YACuC,YAA2B,EAClC,MAAoB;QADb,iBAAY,GAAZ,YAAY,CAAe;QAClC,WAAM,GAAN,MAAM,CAAc;IACjD,CAAC;IAEJ,KAAK,CAAC,UAAU,CAAC,UAAkB;QACjC,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;QAEnE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAE1D,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,CAAC,MAAM,WAAW,CAAC,CAAC;QACjD,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACpB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;QAEtE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAE5C,qCAAqC;QACrC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;IACrC,CAAC;CACF,CAAA;AArCY,aAAa;IADzB,OAAO,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAGpC,WAAA,MAAM,CAAC,mBAAmB,CAAC,CAAA;IAC3B,WAAA,MAAM,CAAC,YAAY,CAAC,CAAA;6CAAiB,YAAY;GAHzC,aAAa,CAqCzB"}
1
+ {"version":3,"file":"PluginManager.js","sourceRoot":"","sources":["../../src/core/PluginManager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAU,OAAO,EAAE,MAAM,EAAU,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEhF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,sEAAsE;AAG/D,IAAM,aAAa,GAAnB,MAAM,aAAa;IAEe;IACP;IAFhC,YACuC,YAA2B,EAClC,MAAoB;QADb,iBAAY,GAAZ,YAAY,CAAe;QAClC,WAAM,GAAN,MAAM,CAAc;IACjD,CAAC;IAEJ,KAAK,CAAC,UAAU,CAAC,GAAG,UAAoB;QACtC,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;QAEnE,IAAI,OAAO,GAAmB,EAAE,CAAC;QACjC,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAClD,OAAO,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC,CAAC;QAEJ,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,CAAC,MAAM,WAAW,CAAC,CAAC;QACjD,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACpB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;QAEtE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAE5C,qCAAqC;QACrC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;IACrC,CAAC;CACF,CAAA;AAzCY,aAAa;IADzB,OAAO,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAGpC,WAAA,MAAM,CAAC,mBAAmB,CAAC,CAAA;IAC3B,WAAA,MAAM,CAAC,YAAY,CAAC,CAAA;6CAAiB,YAAY;GAHzC,aAAa,CAyCzB"}
@@ -0,0 +1,4 @@
1
+ export declare const EnableHooks: <T extends {
2
+ new (...args: any[]): {};
3
+ }>(constructor: T) => T;
4
+ //# sourceMappingURL=enableHooksDecorator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enableHooksDecorator.d.ts","sourceRoot":"","sources":["../../src/decorators/enableHooksDecorator.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS;IAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;CAAE,EAChE,aAAa,CAAC,KAOT,CACN,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { registerInstanceHooks } from '../lib/functions/registerInstanceHooks';
2
+ export const EnableHooks = (constructor) => {
3
+ return class extends constructor {
4
+ constructor(...args) {
5
+ super(...args);
6
+ registerInstanceHooks(this);
7
+ }
8
+ };
9
+ };
10
+ //# sourceMappingURL=enableHooksDecorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enableHooksDecorator.js","sourceRoot":"","sources":["../../src/decorators/enableHooksDecorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAE/E,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,WAAc,EACd,EAAE;IACF,OAAO,KAAM,SAAQ,WAAW;QAC9B,YAAY,GAAG,IAAW;YACxB,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;YACf,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;KACG,CAAC;AACT,CAAC,CAAC"}
@@ -1,8 +1,2 @@
1
- /**
2
- * Decorator to register a method as a hook handler.
3
- * This allows the method to be called when the specified hook is triggered.
4
- * @param hookName The name of the hook to register this method for.
5
- * @returns
6
- */
7
1
  export declare function Hook(hookName: string): <T extends (...args: any[]) => any>(target: any, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T> | void;
8
2
  //# sourceMappingURL=hookDecorator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hookDecorator.d.ts","sourceRoot":"","sources":["../../src/decorators/hookDecorator.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,QAAQ,EAAE,MAAM,IAClB,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAChD,QAAQ,GAAG,EACX,aAAa,MAAM,GAAG,MAAM,EAC5B,YAAY,uBAAuB,CAAC,CAAC,CAAC,KACrC,uBAAuB,CAAC,CAAC,CAAC,GAAG,IAAI,CAcrC"}
1
+ {"version":3,"file":"hookDecorator.d.ts","sourceRoot":"","sources":["../../src/decorators/hookDecorator.ts"],"names":[],"mappings":"AAEA,wBAAgB,IAAI,CAAC,QAAQ,EAAE,MAAM,IAClB,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAChD,QAAQ,GAAG,EACX,aAAa,MAAM,GAAG,MAAM,EAC5B,YAAY,uBAAuB,CAAC,CAAC,CAAC,KACrC,uBAAuB,CAAC,CAAC,CAAC,GAAG,IAAI,CAarC"}
@@ -1,10 +1,4 @@
1
- import { HOOK_METADATA_KEY } from '../lib/types/tokens';
2
- /**
3
- * Decorator to register a method as a hook handler.
4
- * This allows the method to be called when the specified hook is triggered.
5
- * @param hookName The name of the hook to register this method for.
6
- * @returns
7
- */
1
+ import { HOOK_METADATA_KEY } from '../lib/types';
8
2
  export function Hook(hookName) {
9
3
  return function (target, propertyKey, descriptor) {
10
4
  // Store hook metadata on the class prototype
@@ -15,7 +9,6 @@ export function Hook(hookName) {
15
9
  hookName,
16
10
  methodName: propertyKey.toString(),
17
11
  });
18
- // Return the descriptor (or void, both are valid)
19
12
  return descriptor;
20
13
  };
21
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hookDecorator.js","sourceRoot":"","sources":["../../src/decorators/hookDecorator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAuB,MAAM,qBAAqB,CAAC;AAG7E;;;;;GAKG;AACH,MAAM,UAAU,IAAI,CAAC,QAAgB;IACnC,OAAO,UACL,MAAW,EACX,WAA4B,EAC5B,UAAsC;QAEtC,6CAA6C;QAC7C,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;QAC7C,CAAC;QAED,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC;YACzC,QAAQ;YACR,UAAU,EAAE,WAAW,CAAC,QAAQ,EAAE;SACnC,CAAC,CAAC;QAEH,kDAAkD;QAClD,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"hookDecorator.js","sourceRoot":"","sources":["../../src/decorators/hookDecorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,UAAU,IAAI,CAAC,QAAgB;IACnC,OAAO,UACL,MAAW,EACX,WAA4B,EAC5B,UAAsC;QAEtC,6CAA6C;QAC7C,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;QAC7C,CAAC;QAED,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC;YACzC,QAAQ;YACR,UAAU,EAAE,WAAW,CAAC,QAAQ,EAAE;SACnC,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import 'reflect-metadata';
2
+ //# sourceMappingURL=hookDecorator.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hookDecorator.spec.d.ts","sourceRoot":"","sources":["../../src/decorators/hookDecorator.spec.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC"}
@@ -0,0 +1,51 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import 'reflect-metadata';
11
+ import { describe, it, expect, beforeAll } from 'bun:test';
12
+ import { HookRegistry } from '../core';
13
+ import { Hook } from './hookDecorator';
14
+ import { bootstrap, inject, Module } from '@kanian77/simple-di';
15
+ import { HOOK_REGISTRY_TOKEN } from '../lib/types';
16
+ import { EnableHooks } from './enableHooksDecorator';
17
+ describe('hook decorators', () => {
18
+ let registry;
19
+ beforeAll(() => {
20
+ const RegistryModule = new Module({
21
+ providers: [
22
+ {
23
+ provide: HOOK_REGISTRY_TOKEN,
24
+ useClass: HookRegistry,
25
+ },
26
+ ],
27
+ });
28
+ bootstrap(RegistryModule);
29
+ });
30
+ it('registers a hook', async () => {
31
+ let called = false;
32
+ let TestClass = class TestClass {
33
+ testMethod() {
34
+ called = true;
35
+ }
36
+ };
37
+ __decorate([
38
+ Hook('test:hook'),
39
+ __metadata("design:type", Function),
40
+ __metadata("design:paramtypes", []),
41
+ __metadata("design:returntype", void 0)
42
+ ], TestClass.prototype, "testMethod", null);
43
+ TestClass = __decorate([
44
+ EnableHooks
45
+ ], TestClass);
46
+ const instance = new TestClass();
47
+ await inject(HOOK_REGISTRY_TOKEN).trigger('test:hook');
48
+ expect(called).toBe(true);
49
+ });
50
+ });
51
+ //# sourceMappingURL=hookDecorator.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hookDecorator.spec.js","sourceRoot":"","sources":["../../src/decorators/hookDecorator.spec.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,QAAsB,CAAC;IAE3B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC;YAChC,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,mBAAmB;oBAC5B,QAAQ,EAAE,YAAY;iBACvB;aACF;SACF,CAAC,CAAC;QACH,SAAS,CAAC,cAAc,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAChC,IAAI,MAAM,GAAG,KAAK,CAAC;QAEnB,IAAM,SAAS,GAAf,MAAM,SAAS;YAEb,UAAU;gBACR,MAAM,GAAG,IAAI,CAAC;YAChB,CAAC;SACF,CAAA;QAHC;YADC,IAAI,CAAC,WAAW,CAAC;;;;mDAGjB;QAJG,SAAS;YADd,WAAW;WACN,SAAS,CAKd;QACD,MAAM,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,MAAM,CAAe,mBAAmB,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACrE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export * from './hookDecorator';
2
+ export * from './enableHooksDecorator';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export * from './hookDecorator';
2
+ export * from './enableHooksDecorator';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare function registerHookHandler(hookName: string, handler: (...args: any[]) => void | Promise<void>): void;
1
+ export declare const registerHookHandler: (hookName: string, handler: (...args: any[]) => void | Promise<void>) => void;
2
2
  //# sourceMappingURL=registerHookHandler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registerHookHandler.d.ts","sourceRoot":"","sources":["../../../src/lib/functions/registerHookHandler.ts"],"names":[],"mappings":"AAIA,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,QAIlD"}
1
+ {"version":3,"file":"registerHookHandler.d.ts","sourceRoot":"","sources":["../../../src/lib/functions/registerHookHandler.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,mBAAmB,GAC9B,UAAU,MAAM,EAChB,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,SAIlD,CAAC"}
@@ -1,7 +1,7 @@
1
- import { inject } from "@kanian77/simple-di";
2
- import { HOOK_REGISTRY_TOKEN } from "../types/tokens";
3
- export function registerHookHandler(hookName, handler) {
1
+ import { inject } from '@kanian77/simple-di';
2
+ import { HOOK_REGISTRY_TOKEN } from '../types/tokens';
3
+ export const registerHookHandler = (hookName, handler) => {
4
4
  const hookRegistry = inject(HOOK_REGISTRY_TOKEN);
5
5
  hookRegistry.register(hookName, handler);
6
- }
6
+ };
7
7
  //# sourceMappingURL=registerHookHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registerHookHandler.js","sourceRoot":"","sources":["../../../src/lib/functions/registerHookHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,OAAiD;IAEjD,MAAM,YAAY,GAAG,MAAM,CAAgB,mBAAmB,CAAC,CAAC;IAChE,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"registerHookHandler.js","sourceRoot":"","sources":["../../../src/lib/functions/registerHookHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,QAAgB,EAChB,OAAiD,EACjD,EAAE;IACF,MAAM,YAAY,GAAG,MAAM,CAAgB,mBAAmB,CAAC,CAAC;IAChE,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const registerInstanceHooks: (instance: any) => void;
2
+ //# sourceMappingURL=registerInstanceHooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerInstanceHooks.d.ts","sourceRoot":"","sources":["../../../src/lib/functions/registerInstanceHooks.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,qBAAqB,GAAI,UAAU,GAAG,KAAG,IAerD,CAAA"}
@@ -0,0 +1,19 @@
1
+ import { HOOK_METADATA_KEY } from "../types";
2
+ import { registerHookHandler } from "./registerHookHandler";
3
+ export const registerInstanceHooks = (instance) => {
4
+ try {
5
+ const hookMetadata = instance.constructor[HOOK_METADATA_KEY] || [];
6
+ for (const { hookName, methodName } of hookMetadata) {
7
+ const method = instance[methodName];
8
+ if (typeof method === 'function') {
9
+ // Get the original unwrapped method
10
+ const originalMethod = method.__original || method;
11
+ registerHookHandler(hookName, originalMethod.bind(instance));
12
+ }
13
+ }
14
+ }
15
+ catch (error) {
16
+ console.warn('Failed to register hooks:', error);
17
+ }
18
+ };
19
+ //# sourceMappingURL=registerInstanceHooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerInstanceHooks.js","sourceRoot":"","sources":["../../../src/lib/functions/registerInstanceHooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,QAAa,EAAQ,EAAE;IAC3D,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;QAEnE,KAAK,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,YAAY,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;YACpC,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;gBACjC,oCAAoC;gBACpC,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC;gBACnD,mBAAmB,CAAC,QAAQ,EAAE,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;AACH,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kanian77/choux",
3
- "version": "0.1.6",
3
+ "version": "0.2.0",
4
4
  "description": "A simple plugin framework for TypeScript.",
5
5
  "author": {
6
6
  "name": "Patrick Assoa Adou",