@kanian77/choux 0.1.5 → 0.1.7
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/core/ChouxModule.d.ts +3 -0
- package/dist/core/ChouxModule.d.ts.map +1 -0
- package/{src/core/ChouxModule.ts → dist/core/ChouxModule.js} +11 -11
- package/dist/core/ChouxModule.js.map +1 -0
- package/dist/core/HookRegistry.d.ts +47 -0
- package/dist/core/HookRegistry.d.ts.map +1 -0
- package/dist/core/HookRegistry.js +79 -0
- package/dist/core/HookRegistry.js.map +1 -0
- package/dist/core/HookRegistry.spec.d.ts +2 -0
- package/dist/core/HookRegistry.spec.d.ts.map +1 -0
- package/dist/core/HookRegistry.spec.js +67 -0
- package/dist/core/HookRegistry.spec.js.map +1 -0
- package/dist/core/Plugin.d.ts +22 -0
- package/dist/core/Plugin.d.ts.map +1 -0
- package/dist/core/Plugin.js +4 -0
- package/dist/core/Plugin.js.map +1 -0
- package/dist/core/PluginLoader.d.ts +13 -0
- package/dist/core/PluginLoader.d.ts.map +1 -0
- package/dist/core/PluginLoader.js +147 -0
- package/dist/core/PluginLoader.js.map +1 -0
- package/dist/core/PluginLoader.spec.d.ts +2 -0
- package/dist/core/PluginLoader.spec.d.ts.map +1 -0
- package/dist/core/PluginLoader.spec.js +114 -0
- package/dist/core/PluginLoader.spec.js.map +1 -0
- package/dist/core/PluginManager.d.ts +12 -0
- package/dist/core/PluginManager.d.ts.map +1 -0
- package/dist/core/PluginManager.js +60 -0
- package/dist/core/PluginManager.js.map +1 -0
- package/dist/core/PluginManager.spec.d.ts +2 -0
- package/dist/core/PluginManager.spec.d.ts.map +1 -0
- package/dist/core/PluginManager.spec.js +50 -0
- package/dist/core/PluginManager.spec.js.map +1 -0
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.d.ts.map +1 -0
- package/{src/core/index.ts → dist/core/index.js} +1 -0
- package/dist/core/index.js.map +1 -0
- package/dist/decorators/hookDecorator.d.ts +8 -0
- package/dist/decorators/hookDecorator.d.ts.map +1 -0
- package/dist/decorators/hookDecorator.js +22 -0
- package/dist/decorators/hookDecorator.js.map +1 -0
- package/dist/decorators/index.d.ts +2 -0
- package/dist/decorators/index.d.ts.map +1 -0
- package/{src/decorators/index.ts → dist/decorators/index.js} +1 -0
- package/dist/decorators/index.js.map +1 -0
- package/dist/example-plugin/module.d.ts.map +1 -0
- package/{src → dist}/example-plugin/module.js +9 -9
- package/dist/example-plugin/module.js.map +1 -0
- package/dist/example-plugin/services.d.ts.map +1 -0
- package/{src → dist}/example-plugin/services.js +2 -1
- package/dist/example-plugin/services.js.map +1 -0
- package/dist/example-plugin/tokens.d.ts.map +1 -0
- package/dist/example-plugin/tokens.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/{src/index.ts → dist/index.js} +1 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/functions/index.d.ts +3 -0
- package/dist/lib/functions/index.d.ts.map +1 -0
- package/{src/lib/functions/index.ts → dist/lib/functions/index.js} +1 -0
- package/dist/lib/functions/index.js.map +1 -0
- package/dist/lib/functions/registerHookHandler.d.ts +2 -0
- package/dist/lib/functions/registerHookHandler.d.ts.map +1 -0
- package/dist/lib/functions/registerHookHandler.js +7 -0
- package/dist/lib/functions/registerHookHandler.js.map +1 -0
- package/dist/lib/functions/registerHooksForInstance.d.ts +2 -0
- package/dist/lib/functions/registerHooksForInstance.d.ts.map +1 -0
- package/dist/lib/functions/registerHooksForInstance.js +22 -0
- package/dist/lib/functions/registerHooksForInstance.js.map +1 -0
- package/dist/lib/test-related/plugins/plugin-a/module.d.ts +21 -0
- package/dist/lib/test-related/plugins/plugin-a/module.d.ts.map +1 -0
- package/dist/lib/test-related/plugins/plugin-a/module.js +84 -0
- package/dist/lib/test-related/plugins/plugin-a/module.js.map +1 -0
- package/dist/lib/test-related/plugins/plugin-b/module.d.ts +21 -0
- package/dist/lib/test-related/plugins/plugin-b/module.d.ts.map +1 -0
- package/dist/lib/test-related/plugins/plugin-b/module.js +84 -0
- package/dist/lib/test-related/plugins/plugin-b/module.js.map +1 -0
- package/dist/lib/types/HookMetadata.d.ts +5 -0
- package/dist/lib/types/HookMetadata.d.ts.map +1 -0
- package/dist/lib/types/HookMetadata.js +1 -0
- package/dist/lib/types/HookMetadata.js.map +1 -0
- package/dist/lib/types/IHookRegistry.d.ts +10 -0
- package/dist/lib/types/IHookRegistry.d.ts.map +1 -0
- package/dist/lib/types/IHookRegistry.js +1 -0
- package/dist/lib/types/IHookRegistry.js.map +1 -0
- package/dist/lib/types/IPluginManager.d.ts +8 -0
- package/dist/lib/types/IPluginManager.d.ts.map +1 -0
- package/dist/lib/types/IPluginManager.js +1 -0
- package/dist/lib/types/IPluginManager.js.map +1 -0
- package/{src/lib/types/LoadedPlugin.ts → dist/lib/types/LoadedPlugin.d.ts} +4 -4
- package/dist/lib/types/LoadedPlugin.d.ts.map +1 -0
- package/dist/lib/types/LoadedPlugin.js +1 -0
- package/dist/lib/types/LoadedPlugin.js.map +1 -0
- package/dist/lib/types/PluginMetadata.d.ts +7 -0
- package/dist/lib/types/PluginMetadata.d.ts.map +1 -0
- package/dist/lib/types/PluginMetadata.js +1 -0
- package/dist/lib/types/PluginMetadata.js.map +1 -0
- package/dist/lib/types/index.d.ts +7 -0
- package/dist/lib/types/index.d.ts.map +1 -0
- package/{src/lib/types/index.ts → dist/lib/types/index.js} +1 -0
- package/dist/lib/types/index.js.map +1 -0
- package/dist/lib/types/tokens.d.ts +5 -0
- package/dist/lib/types/tokens.d.ts.map +1 -0
- package/{src/lib/types/tokens.ts → dist/lib/types/tokens.js} +1 -0
- package/dist/lib/types/tokens.js.map +1 -0
- package/package.json +1 -1
- package/src/core/HookRegistry.spec.ts +0 -75
- package/src/core/HookRegistry.ts +0 -78
- package/src/core/Plugin.ts +0 -26
- package/src/core/PluginLoader.spec.ts +0 -138
- package/src/core/PluginLoader.ts +0 -192
- package/src/core/PluginManager.spec.ts +0 -57
- package/src/core/PluginManager.ts +0 -47
- package/src/decorators/hookDecorator.ts +0 -30
- package/src/example-plugin/module.d.ts.map +0 -1
- package/src/example-plugin/module.js.map +0 -1
- package/src/example-plugin/module.ts +0 -80
- package/src/example-plugin/services.d.ts.map +0 -1
- package/src/example-plugin/services.js.map +0 -1
- package/src/example-plugin/services.ts +0 -22
- package/src/example-plugin/tokens.d.ts.map +0 -1
- package/src/example-plugin/tokens.js.map +0 -1
- package/src/example-plugin/tokens.ts +0 -1
- package/src/lib/functions/registerHookHandler.ts +0 -11
- package/src/lib/functions/registerHooksForInstance.ts +0 -26
- package/src/lib/test-related/plugins/plugin-a/module.ts +0 -74
- package/src/lib/test-related/plugins/plugin-b/module.ts +0 -74
- package/src/lib/types/HookMetadata.ts +0 -4
- package/src/lib/types/IHookRegistry.ts +0 -10
- package/src/lib/types/IPluginManager.ts +0 -8
- package/src/lib/types/PluginMetadata.ts +0 -9
- package/src/lib/types/README.md +0 -3
- /package/{src → dist}/example-plugin/module.d.ts +0 -0
- /package/{src → dist}/example-plugin/services.d.ts +0 -0
- /package/{src → dist}/example-plugin/tokens.d.ts +0 -0
- /package/{src → dist}/example-plugin/tokens.js +0 -0
|
@@ -0,0 +1,60 @@
|
|
|
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
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
import { Service, Inject } from '@kanian77/simple-di';
|
|
14
|
+
import { LIFECYCLE_HOOKS } from './HookRegistry';
|
|
15
|
+
import { PLUGIN_MANAGER_TOKEN, HOOK_REGISTRY_TOKEN } from '../lib/types/tokens';
|
|
16
|
+
import { PluginLoader } from './PluginLoader';
|
|
17
|
+
// Removed local interface IPluginManager, now imported from lib/types
|
|
18
|
+
let PluginManager = class PluginManager {
|
|
19
|
+
hookRegistry;
|
|
20
|
+
loader;
|
|
21
|
+
constructor(hookRegistry, loader) {
|
|
22
|
+
this.hookRegistry = hookRegistry;
|
|
23
|
+
this.loader = loader;
|
|
24
|
+
}
|
|
25
|
+
async initialize(...pluginsDir) {
|
|
26
|
+
await this.hookRegistry.trigger(LIFECYCLE_HOOKS.APPLICATION_START);
|
|
27
|
+
let plugins = [];
|
|
28
|
+
await Promise.all(pluginsDir.map(async (dir) => {
|
|
29
|
+
const loaded = await this.loader.loadPlugins(dir);
|
|
30
|
+
plugins = [...plugins, ...loaded];
|
|
31
|
+
}));
|
|
32
|
+
console.log(`Loaded ${plugins.length} plugins:`);
|
|
33
|
+
plugins.forEach((p) => {
|
|
34
|
+
console.log(` - ${p.metadata.name} v${p.metadata.version}`);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
async shutdown() {
|
|
38
|
+
await this.hookRegistry.trigger(LIFECYCLE_HOOKS.APPLICATION_SHUTDOWN);
|
|
39
|
+
const plugins = this.loader.getAllPlugins();
|
|
40
|
+
// Unload in reverse dependency order
|
|
41
|
+
for (const plugin of plugins.reverse()) {
|
|
42
|
+
await this.loader.unloadPlugin(plugin.metadata.name);
|
|
43
|
+
}
|
|
44
|
+
this.hookRegistry.clear();
|
|
45
|
+
}
|
|
46
|
+
getPlugin(name) {
|
|
47
|
+
return this.loader.getPlugin(name);
|
|
48
|
+
}
|
|
49
|
+
getAllPlugins() {
|
|
50
|
+
return this.loader.getAllPlugins();
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
PluginManager = __decorate([
|
|
54
|
+
Service({ token: PLUGIN_MANAGER_TOKEN }),
|
|
55
|
+
__param(0, Inject(HOOK_REGISTRY_TOKEN)),
|
|
56
|
+
__param(1, Inject(PluginLoader)),
|
|
57
|
+
__metadata("design:paramtypes", [Object, PluginLoader])
|
|
58
|
+
], PluginManager);
|
|
59
|
+
export { PluginManager };
|
|
60
|
+
//# sourceMappingURL=PluginManager.js.map
|
|
@@ -0,0 +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,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 @@
|
|
|
1
|
+
{"version":3,"file":"PluginManager.spec.d.ts","sourceRoot":"","sources":["../../src/core/PluginManager.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from 'bun:test';
|
|
2
|
+
import { resolve } from 'path';
|
|
3
|
+
import { inject } from '@kanian77/simple-di';
|
|
4
|
+
import { PLUGIN_MANAGER_TOKEN } from '../lib/types/tokens';
|
|
5
|
+
describe('PluginManager', () => {
|
|
6
|
+
let manager;
|
|
7
|
+
const pluginsDir = resolve('src/lib/test-related/plugins');
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
manager = inject(PLUGIN_MANAGER_TOKEN);
|
|
10
|
+
});
|
|
11
|
+
afterEach(async () => {
|
|
12
|
+
// No cleanup needed for static test plugins
|
|
13
|
+
});
|
|
14
|
+
it('initialize loads plugins and prints info', async () => {
|
|
15
|
+
let logOutput = '';
|
|
16
|
+
const origLog = console.log;
|
|
17
|
+
console.log = (msg) => {
|
|
18
|
+
logOutput += msg + '\n';
|
|
19
|
+
};
|
|
20
|
+
await manager.initialize(pluginsDir);
|
|
21
|
+
expect(logOutput).toContain('Loaded 2 plugins:');
|
|
22
|
+
expect(logOutput).toContain('plugin-a');
|
|
23
|
+
expect(logOutput).toContain('plugin-b');
|
|
24
|
+
console.log = origLog;
|
|
25
|
+
});
|
|
26
|
+
it('getPlugin returns correct plugin', async () => {
|
|
27
|
+
await manager.initialize(pluginsDir);
|
|
28
|
+
const pluginA = manager.getPlugin('pluginA');
|
|
29
|
+
expect(pluginA).toBeDefined();
|
|
30
|
+
expect(pluginA?.metadata.name).toBe('pluginA');
|
|
31
|
+
const pluginB = manager.getPlugin('pluginB');
|
|
32
|
+
expect(pluginB).toBeDefined();
|
|
33
|
+
expect(pluginB?.metadata.name).toBe('pluginB');
|
|
34
|
+
});
|
|
35
|
+
it('getAllPlugins returns all loaded plugins', async () => {
|
|
36
|
+
await manager.initialize(pluginsDir);
|
|
37
|
+
const all = manager.getAllPlugins();
|
|
38
|
+
expect(all.length).toBe(2);
|
|
39
|
+
expect(all.map((p) => p.metadata.name).sort()).toEqual([
|
|
40
|
+
'pluginA',
|
|
41
|
+
'pluginB',
|
|
42
|
+
]);
|
|
43
|
+
});
|
|
44
|
+
it('shutdown unloads all plugins and clears registry', async () => {
|
|
45
|
+
await manager.initialize(pluginsDir);
|
|
46
|
+
await manager.shutdown();
|
|
47
|
+
expect(manager.getAllPlugins()).toEqual([]);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=PluginManager.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginManager.spec.js","sourceRoot":"","sources":["../../src/core/PluginManager.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
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
|
+
export declare function Hook(hookName: string): <T extends (...args: any[]) => any>(target: any, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T> | void;
|
|
8
|
+
//# sourceMappingURL=hookDecorator.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
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
|
+
*/
|
|
8
|
+
export function Hook(hookName) {
|
|
9
|
+
return function (target, propertyKey, descriptor) {
|
|
10
|
+
// Store hook metadata on the class prototype
|
|
11
|
+
if (!target.constructor[HOOK_METADATA_KEY]) {
|
|
12
|
+
target.constructor[HOOK_METADATA_KEY] = [];
|
|
13
|
+
}
|
|
14
|
+
target.constructor[HOOK_METADATA_KEY].push({
|
|
15
|
+
hookName,
|
|
16
|
+
methodName: propertyKey.toString(),
|
|
17
|
+
});
|
|
18
|
+
// Return the descriptor (or void, both are valid)
|
|
19
|
+
return descriptor;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=hookDecorator.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/example-plugin/module.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAIxC,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,MAAM;IAC/C,QAAQ,CAAC,QAAQ;;;;;MAKf;;IAgBa,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAOvB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;cAItB,mBAAmB,IAAI,IAAI;YAQhC,kBAAkB;YAKlB,kBAAkB;YAKlB,kBAAkB;IAKhC,OAAO,CAAC,uBAAuB;YAOjB,iBAAiB;CAGhC"}
|
|
@@ -9,11 +9,17 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
};
|
|
10
10
|
import { ExampleService } from './services';
|
|
11
11
|
import { EXAMPLE_SERVICE_TOKEN } from './tokens';
|
|
12
|
-
import { Hook } from '
|
|
12
|
+
import { Hook } from '../decorators/hookDecorator';
|
|
13
13
|
import { inject } from '@kanian77/simple-di';
|
|
14
|
-
import { Plugin } from '
|
|
15
|
-
import { HOOK_REGISTRY_TOKEN } from '
|
|
14
|
+
import { Plugin } from '../core/Plugin';
|
|
15
|
+
import { HOOK_REGISTRY_TOKEN } from '../lib/types/tokens';
|
|
16
16
|
export default class ExamplePlugin extends Plugin {
|
|
17
|
+
metadata = {
|
|
18
|
+
name: 'example-plugin',
|
|
19
|
+
version: '1.0.0',
|
|
20
|
+
description: 'An example plugin',
|
|
21
|
+
dependencies: [], // other plugin names this depends on
|
|
22
|
+
};
|
|
17
23
|
constructor() {
|
|
18
24
|
// Call parent Module constructor with plugin configuration
|
|
19
25
|
super({
|
|
@@ -26,12 +32,6 @@ export default class ExamplePlugin extends Plugin {
|
|
|
26
32
|
// Can also import other modules if needed
|
|
27
33
|
// imports: [SomeOtherModule],
|
|
28
34
|
});
|
|
29
|
-
this.metadata = {
|
|
30
|
-
name: 'example-plugin',
|
|
31
|
-
version: '1.0.0',
|
|
32
|
-
description: 'An example plugin',
|
|
33
|
-
dependencies: [], // other plugin names this depends on
|
|
34
|
-
};
|
|
35
35
|
}
|
|
36
36
|
async onLoad() {
|
|
37
37
|
console.log('ExamplePlugin loading...');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/example-plugin/module.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,MAAM;IACtC,QAAQ,GAAG;QAClB,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,mBAAmB;QAChC,YAAY,EAAE,EAAE,EAAE,qCAAqC;KACxD,CAAC;IAEF;QACE,2DAA2D;QAC3D,KAAK,CAAC;YACJ,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,qBAAqB;oBAC9B,QAAQ,EAAE,cAAc;iBACzB;aACF;YACD,0CAA0C;YAC1C,8BAA8B;SAC/B,CAAC,CAAC;IACL,CAAC;IAEQ,KAAK,CAAC,MAAM;QACnB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAC1C,CAAC;IAEQ,KAAK,CAAC,MAAM;QACnB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAE1C,gDAAgD;QAChD,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACjC,CAAC;IAEQ,KAAK,CAAC,SAAS;QACtB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAC1C,CAAC;IAEkB,mBAAmB;QACpC,gDAAgD;QAChD,0CAA0C;QAC1C,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC5D,CAAC;IAED,kEAAkE;IAEpD,AAAN,KAAK,CAAC,kBAAkB,CAAC,IAAS;QACxC,OAAO,CAAC,GAAG,CAAC,uCAAuC,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;IAGa,AAAN,KAAK,CAAC,kBAAkB;QAC9B,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;IAC7E,CAAC;IAGa,AAAN,KAAK,CAAC,kBAAkB,CAAC,UAAkB;QACjD,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,UAAU,CAAC,CAAC;IAC9D,CAAC;IAED,iDAAiD;IACzC,uBAAuB;QAC7B,MAAM,YAAY,GAAG,MAAM,CAAgB,mBAAmB,CAAC,CAAC;QAEhE,+CAA+C;QAC/C,YAAY,CAAC,QAAQ,CAAC,qBAAqB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClF,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,IAAS;QACvC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;CACF;AAzBe;IADb,IAAI,CAAC,sBAAsB,CAAC;;;;uDAG5B;AAGa;IADb,IAAI,CAAC,wBAAwB,CAAC;;;;uDAG9B;AAGa;IADb,IAAI,CAAC,yBAAyB,CAAC;;;;uDAG/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/example-plugin/services.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,eAAe;IAC9B,WAAW,IAAI,IAAI,CAAC;CACrB;AAED,qBACa,cAAe,YAAW,eAAe;IACpD,OAAO,CAAC,YAAY,CAAgB;;IAKpC,WAAW,IAAI,IAAI;CAKpB"}
|
|
@@ -9,8 +9,9 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
};
|
|
10
10
|
import { Service, inject } from '@kanian77/simple-di';
|
|
11
11
|
import { EXAMPLE_SERVICE_TOKEN } from './tokens';
|
|
12
|
-
import { HOOK_REGISTRY_TOKEN } from '
|
|
12
|
+
import { HOOK_REGISTRY_TOKEN } from '../lib/types/tokens';
|
|
13
13
|
let ExampleService = class ExampleService {
|
|
14
|
+
hookRegistry;
|
|
14
15
|
constructor() {
|
|
15
16
|
this.hookRegistry = inject(HOOK_REGISTRY_TOKEN);
|
|
16
17
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"services.js","sourceRoot":"","sources":["../../src/example-plugin/services.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAQnD,IAAM,cAAc,GAApB,MAAM,cAAc;IACjB,YAAY,CAAgB;IACpC;QACE,IAAI,CAAC,YAAY,GAAG,MAAM,CAAgB,mBAAmB,CAAC,CAAC;IACjE,CAAC;IAED,WAAW;QACT,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,2BAA2B;QAC3B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAC3E,CAAC;CACF,CAAA;AAXY,cAAc;IAD1B,OAAO,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;;GAC7B,cAAc,CAW1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/example-plugin/tokens.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,eAA2B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/example-plugin/tokens.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/functions/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/functions/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { inject } from "@kanian77/simple-di";
|
|
2
|
+
import { HOOK_REGISTRY_TOKEN } from "../types/tokens";
|
|
3
|
+
export function registerHookHandler(hookName, handler) {
|
|
4
|
+
const hookRegistry = inject(HOOK_REGISTRY_TOKEN);
|
|
5
|
+
hookRegistry.register(hookName, handler);
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=registerHookHandler.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registerHooksForInstance.d.ts","sourceRoot":"","sources":["../../../src/lib/functions/registerHooksForInstance.ts"],"names":[],"mappings":"AAKA,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI,CAoB5D"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { inject } from "@kanian77/simple-di";
|
|
2
|
+
import { HOOK_METADATA_KEY, HOOK_REGISTRY_TOKEN } from "../types/tokens";
|
|
3
|
+
export function registerHooksForInstance(instance) {
|
|
4
|
+
const constructor = instance.constructor;
|
|
5
|
+
const hookMetadata = constructor[HOOK_METADATA_KEY] || [];
|
|
6
|
+
if (hookMetadata.length === 0) {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
try {
|
|
10
|
+
const hookRegistry = inject(HOOK_REGISTRY_TOKEN);
|
|
11
|
+
for (const { hookName, methodName } of hookMetadata) {
|
|
12
|
+
const method = instance[methodName];
|
|
13
|
+
if (typeof method === 'function') {
|
|
14
|
+
hookRegistry.register(hookName, method.bind(instance));
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
console.warn('Failed to register hooks - HookRegistry may not be available yet:', error);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=registerHooksForInstance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registerHooksForInstance.js","sourceRoot":"","sources":["../../../src/lib/functions/registerHooksForInstance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,MAAM,UAAU,wBAAwB,CAAC,QAAa;IACpD,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;IACzC,MAAM,YAAY,GAAmB,WAAW,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;IAE1E,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,CAAgB,mBAAmB,CAAC,CAAC;QAEhE,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,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,mEAAmE,EAAE,KAAK,CAAC,CAAC;IAC3F,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Plugin } from '../../../../core';
|
|
2
|
+
export declare const PLUGIN_A_TOKEN = "PLUGIN_A_TOKEN";
|
|
3
|
+
export default class PluginA extends Plugin {
|
|
4
|
+
readonly metadata: {
|
|
5
|
+
name: string;
|
|
6
|
+
version: string;
|
|
7
|
+
description: string;
|
|
8
|
+
dependencies: never[];
|
|
9
|
+
};
|
|
10
|
+
constructor();
|
|
11
|
+
onLoad(): Promise<void>;
|
|
12
|
+
onInit(): Promise<void>;
|
|
13
|
+
onDestroy(): Promise<void>;
|
|
14
|
+
protected registerCustomHooks(): void;
|
|
15
|
+
private handleExampleEvent;
|
|
16
|
+
private onApplicationStart;
|
|
17
|
+
private onBeforePluginLoad;
|
|
18
|
+
private registerAdditionalHooks;
|
|
19
|
+
private handleDynamicHook;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../src/lib/test-related/plugins/plugin-a/module.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAK1C,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,MAAM;IACzC,QAAQ,CAAC,QAAQ;;;;;MAKf;;IAca,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAOvB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;cAItB,mBAAmB,IAAI,IAAI;YAMhC,kBAAkB;YAKlB,kBAAkB;YAKlB,kBAAkB;IAIhC,OAAO,CAAC,uBAAuB;YAOjB,iBAAiB;CAGhC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
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 { inject } from '@kanian77/simple-di';
|
|
11
|
+
import { ExampleService } from '../../../../example-plugin/services';
|
|
12
|
+
import { Plugin } from '../../../../core';
|
|
13
|
+
import { Hook } from '../../../../decorators';
|
|
14
|
+
import { HOOK_REGISTRY_TOKEN } from '../../../types/tokens';
|
|
15
|
+
export const PLUGIN_A_TOKEN = 'PLUGIN_A_TOKEN';
|
|
16
|
+
export default class PluginA extends Plugin {
|
|
17
|
+
metadata = {
|
|
18
|
+
name: 'pluginA',
|
|
19
|
+
version: '1.0.0',
|
|
20
|
+
description: 'An example plugin',
|
|
21
|
+
dependencies: [], // other plugin names this depends on
|
|
22
|
+
};
|
|
23
|
+
constructor() {
|
|
24
|
+
// Call parent Module constructor with plugin configuration
|
|
25
|
+
super({
|
|
26
|
+
providers: [
|
|
27
|
+
{
|
|
28
|
+
provide: PLUGIN_A_TOKEN,
|
|
29
|
+
useClass: ExampleService,
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
async onLoad() {
|
|
35
|
+
console.log('PluginA loading...');
|
|
36
|
+
}
|
|
37
|
+
async onInit() {
|
|
38
|
+
console.log('PluginA initialized!');
|
|
39
|
+
// Additional manual hook registration if needed
|
|
40
|
+
this.registerAdditionalHooks();
|
|
41
|
+
}
|
|
42
|
+
async onDestroy() {
|
|
43
|
+
console.log('PluginA destroyed!');
|
|
44
|
+
}
|
|
45
|
+
registerCustomHooks() {
|
|
46
|
+
console.log('Registering custom hooks for PluginA');
|
|
47
|
+
}
|
|
48
|
+
// These methods will be automatically registered as hook handlers
|
|
49
|
+
async handleExampleEvent(data) {
|
|
50
|
+
console.log('Handling example event via decorator:', data);
|
|
51
|
+
}
|
|
52
|
+
async onApplicationStart() {
|
|
53
|
+
console.log('PluginA responding to application start via decorator');
|
|
54
|
+
}
|
|
55
|
+
async onBeforePluginLoad(pluginPath) {
|
|
56
|
+
console.log('Another plugin is about to load:', pluginPath);
|
|
57
|
+
}
|
|
58
|
+
registerAdditionalHooks() {
|
|
59
|
+
const hookRegistry = inject(HOOK_REGISTRY_TOKEN);
|
|
60
|
+
hookRegistry.register('dynamic:custom-hook', this.handleDynamicHook.bind(this));
|
|
61
|
+
}
|
|
62
|
+
async handleDynamicHook(data) {
|
|
63
|
+
console.log('Handling dynamic hook:', data);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
__decorate([
|
|
67
|
+
Hook('custom:example-event'),
|
|
68
|
+
__metadata("design:type", Function),
|
|
69
|
+
__metadata("design:paramtypes", [Object]),
|
|
70
|
+
__metadata("design:returntype", Promise)
|
|
71
|
+
], PluginA.prototype, "handleExampleEvent", null);
|
|
72
|
+
__decorate([
|
|
73
|
+
Hook('core:application-start'),
|
|
74
|
+
__metadata("design:type", Function),
|
|
75
|
+
__metadata("design:paramtypes", []),
|
|
76
|
+
__metadata("design:returntype", Promise)
|
|
77
|
+
], PluginA.prototype, "onApplicationStart", null);
|
|
78
|
+
__decorate([
|
|
79
|
+
Hook('core:before-plugin-load'),
|
|
80
|
+
__metadata("design:type", Function),
|
|
81
|
+
__metadata("design:paramtypes", [String]),
|
|
82
|
+
__metadata("design:returntype", Promise)
|
|
83
|
+
], PluginA.prototype, "onBeforePluginLoad", null);
|
|
84
|
+
//# sourceMappingURL=module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../../src/lib/test-related/plugins/plugin-a/module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAC/C,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,MAAM;IAChC,QAAQ,GAAG;QAClB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,mBAAmB;QAChC,YAAY,EAAE,EAAE,EAAE,qCAAqC;KACxD,CAAC;IAEF;QACE,2DAA2D;QAC3D,KAAK,CAAC;YACJ,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,cAAc;oBACvB,QAAQ,EAAE,cAAc;iBACzB;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAEQ,KAAK,CAAC,MAAM;QACnB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACpC,CAAC;IAEQ,KAAK,CAAC,MAAM;QACnB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAEpC,gDAAgD;QAChD,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACjC,CAAC;IAEQ,KAAK,CAAC,SAAS;QACtB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACpC,CAAC;IAEkB,mBAAmB;QACpC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACtD,CAAC;IAED,kEAAkE;IAEpD,AAAN,KAAK,CAAC,kBAAkB,CAAC,IAAS;QACxC,OAAO,CAAC,GAAG,CAAC,uCAAuC,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;IAGa,AAAN,KAAK,CAAC,kBAAkB;QAC9B,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACvE,CAAC;IAGa,AAAN,KAAK,CAAC,kBAAkB,CAAC,UAAkB;QACjD,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,UAAU,CAAC,CAAC;IAC9D,CAAC;IAEO,uBAAuB;QAC7B,MAAM,YAAY,GAAG,MAAM,CAAgB,mBAAmB,CAAC,CAAC;QAChE,YAAY,CAAC,QAAQ,CACnB,qBAAqB,EACrB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAClC,CAAC;IACJ,CAAC;IACO,KAAK,CAAC,iBAAiB,CAAC,IAAS;QACvC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;CACF;AAxBe;IADb,IAAI,CAAC,sBAAsB,CAAC;;;;iDAG5B;AAGa;IADb,IAAI,CAAC,wBAAwB,CAAC;;;;iDAG9B;AAGa;IADb,IAAI,CAAC,yBAAyB,CAAC;;;;iDAG/B"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Plugin } from '../../../../core';
|
|
2
|
+
export declare const PLUGIN_B_TOKEN = "PLUGIN_B_TOKEN";
|
|
3
|
+
export default class PluginB extends Plugin {
|
|
4
|
+
readonly metadata: {
|
|
5
|
+
name: string;
|
|
6
|
+
version: string;
|
|
7
|
+
description: string;
|
|
8
|
+
dependencies: never[];
|
|
9
|
+
};
|
|
10
|
+
constructor();
|
|
11
|
+
onLoad(): Promise<void>;
|
|
12
|
+
onInit(): Promise<void>;
|
|
13
|
+
onDestroy(): Promise<void>;
|
|
14
|
+
protected registerCustomHooks(): void;
|
|
15
|
+
private handleExampleEvent;
|
|
16
|
+
private onApplicationStart;
|
|
17
|
+
private onBeforePluginLoad;
|
|
18
|
+
private registerAdditionalHooks;
|
|
19
|
+
private handleDynamicHook;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../src/lib/test-related/plugins/plugin-b/module.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAK1C,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,MAAM;IACzC,QAAQ,CAAC,QAAQ;;;;;MAKf;;IAca,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAOvB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;cAItB,mBAAmB,IAAI,IAAI;YAMhC,kBAAkB;YAKlB,kBAAkB;YAKlB,kBAAkB;IAIhC,OAAO,CAAC,uBAAuB;YAOjB,iBAAiB;CAGhC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
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 { inject } from '@kanian77/simple-di';
|
|
11
|
+
import { ExampleService } from '../../../../example-plugin/services';
|
|
12
|
+
import { Plugin } from '../../../../core';
|
|
13
|
+
import { Hook } from '../../../../decorators';
|
|
14
|
+
import { HOOK_REGISTRY_TOKEN } from '../../../types/tokens';
|
|
15
|
+
export const PLUGIN_B_TOKEN = 'PLUGIN_B_TOKEN';
|
|
16
|
+
export default class PluginB extends Plugin {
|
|
17
|
+
metadata = {
|
|
18
|
+
name: 'pluginB',
|
|
19
|
+
version: '1.0.0',
|
|
20
|
+
description: 'An example plugin',
|
|
21
|
+
dependencies: [], // other plugin names this depends on
|
|
22
|
+
};
|
|
23
|
+
constructor() {
|
|
24
|
+
// Call parent Module constructor with plugin configuration
|
|
25
|
+
super({
|
|
26
|
+
providers: [
|
|
27
|
+
{
|
|
28
|
+
provide: PLUGIN_B_TOKEN,
|
|
29
|
+
useClass: ExampleService,
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
async onLoad() {
|
|
35
|
+
console.log('PluginB loading...');
|
|
36
|
+
}
|
|
37
|
+
async onInit() {
|
|
38
|
+
console.log('PluginB initialized!');
|
|
39
|
+
// Additional manual hook registration if needed
|
|
40
|
+
this.registerAdditionalHooks();
|
|
41
|
+
}
|
|
42
|
+
async onDestroy() {
|
|
43
|
+
console.log('PluginB destroyed!');
|
|
44
|
+
}
|
|
45
|
+
registerCustomHooks() {
|
|
46
|
+
console.log('Registering custom hooks for PluginB');
|
|
47
|
+
}
|
|
48
|
+
// These methods will be automatically registered as hook handlers
|
|
49
|
+
async handleExampleEvent(data) {
|
|
50
|
+
console.log('Handling example event via decorator:', data);
|
|
51
|
+
}
|
|
52
|
+
async onApplicationStart() {
|
|
53
|
+
console.log('PluginB responding to application start via decorator');
|
|
54
|
+
}
|
|
55
|
+
async onBeforePluginLoad(pluginPath) {
|
|
56
|
+
console.log('Another plugin is about to load:', pluginPath);
|
|
57
|
+
}
|
|
58
|
+
registerAdditionalHooks() {
|
|
59
|
+
const hookRegistry = inject(HOOK_REGISTRY_TOKEN);
|
|
60
|
+
hookRegistry.register('dynamic:custom-hook', this.handleDynamicHook.bind(this));
|
|
61
|
+
}
|
|
62
|
+
async handleDynamicHook(data) {
|
|
63
|
+
console.log('Handling dynamic hook:', data);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
__decorate([
|
|
67
|
+
Hook('custom:example-event'),
|
|
68
|
+
__metadata("design:type", Function),
|
|
69
|
+
__metadata("design:paramtypes", [Object]),
|
|
70
|
+
__metadata("design:returntype", Promise)
|
|
71
|
+
], PluginB.prototype, "handleExampleEvent", null);
|
|
72
|
+
__decorate([
|
|
73
|
+
Hook('core:application-start'),
|
|
74
|
+
__metadata("design:type", Function),
|
|
75
|
+
__metadata("design:paramtypes", []),
|
|
76
|
+
__metadata("design:returntype", Promise)
|
|
77
|
+
], PluginB.prototype, "onApplicationStart", null);
|
|
78
|
+
__decorate([
|
|
79
|
+
Hook('core:before-plugin-load'),
|
|
80
|
+
__metadata("design:type", Function),
|
|
81
|
+
__metadata("design:paramtypes", [String]),
|
|
82
|
+
__metadata("design:returntype", Promise)
|
|
83
|
+
], PluginB.prototype, "onBeforePluginLoad", null);
|
|
84
|
+
//# sourceMappingURL=module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../../src/lib/test-related/plugins/plugin-b/module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAC/C,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,MAAM;IAChC,QAAQ,GAAG;QAClB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,mBAAmB;QAChC,YAAY,EAAE,EAAE,EAAE,qCAAqC;KACxD,CAAC;IAEF;QACE,2DAA2D;QAC3D,KAAK,CAAC;YACJ,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,cAAc;oBACvB,QAAQ,EAAE,cAAc;iBACzB;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAEQ,KAAK,CAAC,MAAM;QACnB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACpC,CAAC;IAEQ,KAAK,CAAC,MAAM;QACnB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAEpC,gDAAgD;QAChD,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACjC,CAAC;IAEQ,KAAK,CAAC,SAAS;QACtB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACpC,CAAC;IAEkB,mBAAmB;QACpC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACtD,CAAC;IAED,kEAAkE;IAEpD,AAAN,KAAK,CAAC,kBAAkB,CAAC,IAAS;QACxC,OAAO,CAAC,GAAG,CAAC,uCAAuC,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;IAGa,AAAN,KAAK,CAAC,kBAAkB;QAC9B,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACvE,CAAC;IAGa,AAAN,KAAK,CAAC,kBAAkB,CAAC,UAAkB;QACjD,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,UAAU,CAAC,CAAC;IAC9D,CAAC;IAEO,uBAAuB;QAC7B,MAAM,YAAY,GAAG,MAAM,CAAgB,mBAAmB,CAAC,CAAC;QAChE,YAAY,CAAC,QAAQ,CACnB,qBAAqB,EACrB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAClC,CAAC;IACJ,CAAC;IACO,KAAK,CAAC,iBAAiB,CAAC,IAAS;QACvC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;CACF;AAxBe;IADb,IAAI,CAAC,sBAAsB,CAAC;;;;iDAG5B;AAGa;IADb,IAAI,CAAC,wBAAwB,CAAC;;;;iDAG9B;AAGa;IADb,IAAI,CAAC,yBAAyB,CAAC;;;;iDAG/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HookMetadata.d.ts","sourceRoot":"","sources":["../../../src/lib/types/HookMetadata.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB"}
|