configforge 1.0.0-beta.11 → 1.0.0-beta.12
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 +88 -2
- package/dist/core/Converter.d.ts +27 -0
- package/dist/core/Converter.d.ts.map +1 -1
- package/dist/core/Converter.js +91 -21
- package/dist/core/Converter.js.map +1 -1
- package/dist/plugins/Plugin.d.ts +95 -0
- package/dist/plugins/Plugin.d.ts.map +1 -0
- package/dist/plugins/Plugin.js +3 -0
- package/dist/plugins/Plugin.js.map +1 -0
- package/dist/plugins/PluginManager.d.ts +73 -0
- package/dist/plugins/PluginManager.d.ts.map +1 -0
- package/dist/plugins/PluginManager.js +220 -0
- package/dist/plugins/PluginManager.js.map +1 -0
- package/dist/plugins/PluginRegistry.d.ts +122 -0
- package/dist/plugins/PluginRegistry.d.ts.map +1 -0
- package/dist/plugins/PluginRegistry.js +385 -0
- package/dist/plugins/PluginRegistry.js.map +1 -0
- package/dist/plugins/built-in/AuditPlugin.d.ts +81 -0
- package/dist/plugins/built-in/AuditPlugin.d.ts.map +1 -0
- package/dist/plugins/built-in/AuditPlugin.js +235 -0
- package/dist/plugins/built-in/AuditPlugin.js.map +1 -0
- package/dist/plugins/built-in/BackupPlugin.d.ts +38 -0
- package/dist/plugins/built-in/BackupPlugin.d.ts.map +1 -0
- package/dist/plugins/built-in/BackupPlugin.js +105 -0
- package/dist/plugins/built-in/BackupPlugin.js.map +1 -0
- package/dist/plugins/built-in/ValidationPlugin.d.ts +61 -0
- package/dist/plugins/built-in/ValidationPlugin.d.ts.map +1 -0
- package/dist/plugins/built-in/ValidationPlugin.js +235 -0
- package/dist/plugins/built-in/ValidationPlugin.js.map +1 -0
- package/dist/plugins/built-in/index.d.ts +7 -0
- package/dist/plugins/built-in/index.d.ts.map +1 -0
- package/dist/plugins/built-in/index.js +14 -0
- package/dist/plugins/built-in/index.js.map +1 -0
- package/dist/plugins/index.d.ts +5 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +25 -0
- package/dist/plugins/index.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PluginManager = void 0;
|
|
4
|
+
const PluginRegistry_1 = require("./PluginRegistry");
|
|
5
|
+
/**
|
|
6
|
+
* Plugin manager that handles plugin lifecycle for a converter instance
|
|
7
|
+
*/
|
|
8
|
+
class PluginManager {
|
|
9
|
+
constructor(converter, options) {
|
|
10
|
+
this.hooks = new Map();
|
|
11
|
+
this.converter = converter;
|
|
12
|
+
this.registry = new PluginRegistry_1.PluginRegistry(options);
|
|
13
|
+
this.initializeHooks();
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Register a plugin
|
|
17
|
+
*/
|
|
18
|
+
register(plugin) {
|
|
19
|
+
this.registry.register(plugin);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Install and activate a plugin
|
|
23
|
+
*/
|
|
24
|
+
async use(plugin) {
|
|
25
|
+
// If plugin is a string, assume it's a name of a registered plugin
|
|
26
|
+
if (typeof plugin === 'string') {
|
|
27
|
+
return this.registry.install(plugin, this.converter);
|
|
28
|
+
}
|
|
29
|
+
// Register and install the plugin
|
|
30
|
+
this.registry.register(plugin);
|
|
31
|
+
const result = await this.registry.install(plugin.name, this.converter);
|
|
32
|
+
// Register hooks if installation was successful
|
|
33
|
+
if (result.success && plugin.hooks) {
|
|
34
|
+
this.registerPluginHooks(plugin);
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Uninstall a plugin
|
|
40
|
+
*/
|
|
41
|
+
async unuse(pluginName) {
|
|
42
|
+
const plugin = this.registry.get(pluginName);
|
|
43
|
+
if (plugin && plugin.hooks) {
|
|
44
|
+
this.unregisterPluginHooks(plugin);
|
|
45
|
+
}
|
|
46
|
+
return this.registry.uninstall(pluginName, this.converter);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get list of installed plugins
|
|
50
|
+
*/
|
|
51
|
+
getInstalled() {
|
|
52
|
+
return this.registry.listInstalled();
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get list of all registered plugins
|
|
56
|
+
*/
|
|
57
|
+
getRegistered() {
|
|
58
|
+
return this.registry.list();
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Check if a plugin is installed
|
|
62
|
+
*/
|
|
63
|
+
isInstalled(name) {
|
|
64
|
+
return this.registry.isInstalled(name);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Execute hooks for a specific event
|
|
68
|
+
*/
|
|
69
|
+
async executeHooks(event, ...args) {
|
|
70
|
+
const hooks = this.hooks.get(event) || [];
|
|
71
|
+
let result = args[0]; // First argument is usually the data to transform
|
|
72
|
+
for (const { plugin, hook } of hooks) {
|
|
73
|
+
try {
|
|
74
|
+
const hookResult = await hook(...args);
|
|
75
|
+
// For transformation hooks, use the result as input for next hook
|
|
76
|
+
if (hookResult !== undefined && this.isTransformHook(event)) {
|
|
77
|
+
result = hookResult;
|
|
78
|
+
args[0] = result; // Update first argument for next hook
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
console.error(`Error in plugin '${plugin.name}' hook '${event}':`, error);
|
|
83
|
+
// Execute error hooks if available
|
|
84
|
+
await this.executeErrorHooks(error, plugin);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return result;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Execute error hooks
|
|
91
|
+
*/
|
|
92
|
+
async executeErrorHooks(error, failedPlugin) {
|
|
93
|
+
const errorHooks = this.hooks.get('onError') || [];
|
|
94
|
+
for (const { plugin } of errorHooks) {
|
|
95
|
+
try {
|
|
96
|
+
// Create context with error information
|
|
97
|
+
const errorContext = {
|
|
98
|
+
converter: this.converter,
|
|
99
|
+
version: '1.0.0',
|
|
100
|
+
environment: process.env.NODE_ENV || 'development',
|
|
101
|
+
metadata: {
|
|
102
|
+
error,
|
|
103
|
+
failedPlugin: failedPlugin.name,
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
// Call the original hook function directly with error context
|
|
107
|
+
if (plugin.hooks?.onError) {
|
|
108
|
+
await plugin.hooks.onError.call(plugin, error, errorContext);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch (hookError) {
|
|
112
|
+
console.error('Error in error hook:', hookError);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Register hooks for a plugin
|
|
118
|
+
*/
|
|
119
|
+
registerPluginHooks(plugin) {
|
|
120
|
+
if (!plugin.hooks) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
const context = {
|
|
124
|
+
converter: this.converter,
|
|
125
|
+
version: '1.0.0',
|
|
126
|
+
environment: process.env.NODE_ENV || 'development',
|
|
127
|
+
metadata: { plugin: plugin.name },
|
|
128
|
+
};
|
|
129
|
+
// Register each hook type
|
|
130
|
+
for (const [hookName, hookFn] of Object.entries(plugin.hooks)) {
|
|
131
|
+
if (typeof hookFn === 'function') {
|
|
132
|
+
const eventName = hookName;
|
|
133
|
+
if (!this.hooks.has(eventName)) {
|
|
134
|
+
this.hooks.set(eventName, []);
|
|
135
|
+
}
|
|
136
|
+
// Bind context to hook function
|
|
137
|
+
const boundHook = (...args) => {
|
|
138
|
+
// Add context as last parameter for hooks that expect it
|
|
139
|
+
const hookArgs = this.shouldInjectContext(eventName)
|
|
140
|
+
? [...args, context]
|
|
141
|
+
: args;
|
|
142
|
+
return hookFn.apply(plugin, hookArgs);
|
|
143
|
+
};
|
|
144
|
+
this.hooks.get(eventName).push({
|
|
145
|
+
plugin,
|
|
146
|
+
hook: boundHook,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Unregister hooks for a plugin
|
|
153
|
+
*/
|
|
154
|
+
unregisterPluginHooks(plugin) {
|
|
155
|
+
for (const [eventName, hooks] of this.hooks.entries()) {
|
|
156
|
+
const filteredHooks = hooks.filter(h => h.plugin !== plugin);
|
|
157
|
+
this.hooks.set(eventName, filteredHooks);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Initialize hook maps
|
|
162
|
+
*/
|
|
163
|
+
initializeHooks() {
|
|
164
|
+
const hookTypes = [
|
|
165
|
+
'beforeParse',
|
|
166
|
+
'afterParse',
|
|
167
|
+
'beforeMap',
|
|
168
|
+
'afterMap',
|
|
169
|
+
'beforeTransform',
|
|
170
|
+
'afterTransform',
|
|
171
|
+
'beforeValidate',
|
|
172
|
+
'afterValidate',
|
|
173
|
+
'beforeSerialize',
|
|
174
|
+
'afterSerialize',
|
|
175
|
+
'onError',
|
|
176
|
+
];
|
|
177
|
+
for (const hookType of hookTypes) {
|
|
178
|
+
this.hooks.set(hookType, []);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Check if hook is a transformation hook that should pass result to next hook
|
|
183
|
+
*/
|
|
184
|
+
isTransformHook(event) {
|
|
185
|
+
return [
|
|
186
|
+
'beforeParse',
|
|
187
|
+
'afterParse',
|
|
188
|
+
'beforeMap',
|
|
189
|
+
'afterMap',
|
|
190
|
+
'beforeTransform',
|
|
191
|
+
'afterTransform',
|
|
192
|
+
'beforeValidate',
|
|
193
|
+
'beforeSerialize',
|
|
194
|
+
'afterSerialize',
|
|
195
|
+
].includes(event);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Check if context should be injected into hook
|
|
199
|
+
*/
|
|
200
|
+
shouldInjectContext(_event) {
|
|
201
|
+
// All hooks receive context as the last parameter
|
|
202
|
+
return true;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Get the plugin registry
|
|
206
|
+
*/
|
|
207
|
+
getRegistry() {
|
|
208
|
+
return this.registry;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Clear all plugins
|
|
212
|
+
*/
|
|
213
|
+
clear() {
|
|
214
|
+
this.hooks.clear();
|
|
215
|
+
this.registry.clear();
|
|
216
|
+
this.initializeHooks();
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
exports.PluginManager = PluginManager;
|
|
220
|
+
//# sourceMappingURL=PluginManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginManager.js","sourceRoot":"","sources":["../../src/plugins/PluginManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { Plugin, PluginInstallResult, PluginStatus } from './Plugin';
|
|
2
|
+
import { Converter } from '../core/Converter';
|
|
3
|
+
/**
|
|
4
|
+
* Error thrown when plugin operations fail
|
|
5
|
+
*/
|
|
6
|
+
export declare class PluginError extends Error {
|
|
7
|
+
pluginName?: string | undefined;
|
|
8
|
+
code: string;
|
|
9
|
+
constructor(message: string, pluginName?: string | undefined);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Plugin registry options
|
|
13
|
+
*/
|
|
14
|
+
export interface PluginRegistryOptions {
|
|
15
|
+
strict?: boolean;
|
|
16
|
+
autoResolve?: boolean;
|
|
17
|
+
maxDependencyDepth?: number;
|
|
18
|
+
allowDuplicates?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Registry for managing plugins and their lifecycle
|
|
22
|
+
*/
|
|
23
|
+
export declare class PluginRegistry {
|
|
24
|
+
private plugins;
|
|
25
|
+
private installedPlugins;
|
|
26
|
+
private dependencyGraph;
|
|
27
|
+
private options;
|
|
28
|
+
constructor(options?: PluginRegistryOptions);
|
|
29
|
+
/**
|
|
30
|
+
* Register a plugin in the registry
|
|
31
|
+
*/
|
|
32
|
+
register(plugin: Plugin): void;
|
|
33
|
+
/**
|
|
34
|
+
* Unregister a plugin from the registry
|
|
35
|
+
*/
|
|
36
|
+
unregister(name: string): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Get a registered plugin by name
|
|
39
|
+
*/
|
|
40
|
+
get(name: string): Plugin | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* Check if a plugin is registered
|
|
43
|
+
*/
|
|
44
|
+
has(name: string): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* List all registered plugins
|
|
47
|
+
*/
|
|
48
|
+
list(): Plugin[];
|
|
49
|
+
/**
|
|
50
|
+
* List all installed plugins
|
|
51
|
+
*/
|
|
52
|
+
listInstalled(): PluginStatus[];
|
|
53
|
+
/**
|
|
54
|
+
* Install a plugin into a converter
|
|
55
|
+
*/
|
|
56
|
+
install(pluginName: string, converter: Converter): Promise<PluginInstallResult>;
|
|
57
|
+
/**
|
|
58
|
+
* Uninstall a plugin from a converter
|
|
59
|
+
*/
|
|
60
|
+
uninstall(pluginName: string, converter: Converter): Promise<boolean>;
|
|
61
|
+
/**
|
|
62
|
+
* Get plugin status
|
|
63
|
+
*/
|
|
64
|
+
getStatus(name: string): PluginStatus | undefined;
|
|
65
|
+
/**
|
|
66
|
+
* Check if a plugin is installed
|
|
67
|
+
*/
|
|
68
|
+
isInstalled(name: string): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Resolve plugin dependencies in correct order
|
|
71
|
+
*/
|
|
72
|
+
resolveDependencies(plugins: string[]): string[];
|
|
73
|
+
/**
|
|
74
|
+
* Clear all plugins and installed plugins
|
|
75
|
+
*/
|
|
76
|
+
clear(): void;
|
|
77
|
+
/**
|
|
78
|
+
* Validate plugin dependencies
|
|
79
|
+
*/
|
|
80
|
+
private validateDependencies;
|
|
81
|
+
/**
|
|
82
|
+
* Build dependency graph for a plugin
|
|
83
|
+
*/
|
|
84
|
+
private buildDependencyGraph;
|
|
85
|
+
/**
|
|
86
|
+
* Get plugins that depend on the given plugin
|
|
87
|
+
*/
|
|
88
|
+
private getDependents;
|
|
89
|
+
/**
|
|
90
|
+
* Get installed plugins that depend on the given plugin
|
|
91
|
+
*/
|
|
92
|
+
private getInstalledDependents;
|
|
93
|
+
/**
|
|
94
|
+
* Install plugin dependencies
|
|
95
|
+
*/
|
|
96
|
+
private installDependencies;
|
|
97
|
+
/**
|
|
98
|
+
* Get dependency status for a plugin
|
|
99
|
+
*/
|
|
100
|
+
private getDependencyStatus;
|
|
101
|
+
/**
|
|
102
|
+
* Register plugin hooks with converter
|
|
103
|
+
*/
|
|
104
|
+
private registerHooks;
|
|
105
|
+
/**
|
|
106
|
+
* Unregister plugin hooks from converter
|
|
107
|
+
*/
|
|
108
|
+
private unregisterHooks;
|
|
109
|
+
/**
|
|
110
|
+
* Parse dependency name from dependency string
|
|
111
|
+
*/
|
|
112
|
+
private parseDependencyName;
|
|
113
|
+
/**
|
|
114
|
+
* Parse dependency version from dependency string
|
|
115
|
+
*/
|
|
116
|
+
private parseDependencyVersion;
|
|
117
|
+
/**
|
|
118
|
+
* Check if version is compatible with requirement
|
|
119
|
+
*/
|
|
120
|
+
private isVersionCompatible;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=PluginRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginRegistry.d.ts","sourceRoot":"","sources":["../../src/plugins/PluginRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EAEN,mBAAmB,EACnB,YAAY,EAEb,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;IAK3B,UAAU,CAAC,EAAE,MAAM;IAJ5B,IAAI,SAAkB;gBAGpB,OAAO,EAAE,MAAM,EACR,UAAU,CAAC,EAAE,MAAM,YAAA;CAK7B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,gBAAgB,CAAwC;IAChE,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,OAAO,CAAkC;gBAErC,OAAO,GAAE,qBAA0B;IAU/C;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA4B9B;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAoBjC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIrC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE;IAIhB;;OAEG;IACH,aAAa,IAAI,YAAY,EAAE;IAI/B;;OAEG;IACG,OAAO,CACX,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,mBAAmB,CAAC;IAgE/B;;OAEG;IACG,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IA2C3E;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIjD;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIlC;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAiDhD;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuB5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAM9B;;OAEG;YACW,mBAAmB;IAmBjC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAsB3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAK9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAS5B"}
|