configforge 1.0.0-beta.11 → 1.0.0-beta.13

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 (38) hide show
  1. package/README.md +88 -2
  2. package/dist/core/Converter.d.ts +27 -0
  3. package/dist/core/Converter.d.ts.map +1 -1
  4. package/dist/core/Converter.js +91 -21
  5. package/dist/core/Converter.js.map +1 -1
  6. package/dist/plugins/Plugin.d.ts +95 -0
  7. package/dist/plugins/Plugin.d.ts.map +1 -0
  8. package/dist/plugins/Plugin.js +3 -0
  9. package/dist/plugins/Plugin.js.map +1 -0
  10. package/dist/plugins/PluginManager.d.ts +73 -0
  11. package/dist/plugins/PluginManager.d.ts.map +1 -0
  12. package/dist/plugins/PluginManager.js +220 -0
  13. package/dist/plugins/PluginManager.js.map +1 -0
  14. package/dist/plugins/PluginRegistry.d.ts +122 -0
  15. package/dist/plugins/PluginRegistry.d.ts.map +1 -0
  16. package/dist/plugins/PluginRegistry.js +385 -0
  17. package/dist/plugins/PluginRegistry.js.map +1 -0
  18. package/dist/plugins/built-in/AuditPlugin.d.ts +81 -0
  19. package/dist/plugins/built-in/AuditPlugin.d.ts.map +1 -0
  20. package/dist/plugins/built-in/AuditPlugin.js +235 -0
  21. package/dist/plugins/built-in/AuditPlugin.js.map +1 -0
  22. package/dist/plugins/built-in/BackupPlugin.d.ts +38 -0
  23. package/dist/plugins/built-in/BackupPlugin.d.ts.map +1 -0
  24. package/dist/plugins/built-in/BackupPlugin.js +105 -0
  25. package/dist/plugins/built-in/BackupPlugin.js.map +1 -0
  26. package/dist/plugins/built-in/ValidationPlugin.d.ts +61 -0
  27. package/dist/plugins/built-in/ValidationPlugin.d.ts.map +1 -0
  28. package/dist/plugins/built-in/ValidationPlugin.js +235 -0
  29. package/dist/plugins/built-in/ValidationPlugin.js.map +1 -0
  30. package/dist/plugins/built-in/index.d.ts +7 -0
  31. package/dist/plugins/built-in/index.d.ts.map +1 -0
  32. package/dist/plugins/built-in/index.js +14 -0
  33. package/dist/plugins/built-in/index.js.map +1 -0
  34. package/dist/plugins/index.d.ts +5 -0
  35. package/dist/plugins/index.d.ts.map +1 -0
  36. package/dist/plugins/index.js +25 -0
  37. package/dist/plugins/index.js.map +1 -0
  38. package/package.json +1 -1
@@ -0,0 +1,385 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PluginRegistry = exports.PluginError = void 0;
4
+ /**
5
+ * Error thrown when plugin operations fail
6
+ */
7
+ class PluginError extends Error {
8
+ constructor(message, pluginName) {
9
+ super(message);
10
+ this.pluginName = pluginName;
11
+ this.code = 'PLUGIN_ERROR';
12
+ this.name = 'PluginError';
13
+ }
14
+ }
15
+ exports.PluginError = PluginError;
16
+ /**
17
+ * Registry for managing plugins and their lifecycle
18
+ */
19
+ class PluginRegistry {
20
+ constructor(options = {}) {
21
+ this.plugins = new Map();
22
+ this.installedPlugins = new Map();
23
+ this.dependencyGraph = new Map();
24
+ this.options = {
25
+ strict: false,
26
+ autoResolve: true,
27
+ maxDependencyDepth: 10,
28
+ allowDuplicates: false,
29
+ ...options,
30
+ };
31
+ }
32
+ /**
33
+ * Register a plugin in the registry
34
+ */
35
+ register(plugin) {
36
+ if (!plugin.name) {
37
+ throw new PluginError('Plugin must have a name');
38
+ }
39
+ if (!plugin.version) {
40
+ throw new PluginError('Plugin must have a version', plugin.name);
41
+ }
42
+ if (!plugin.install || typeof plugin.install !== 'function') {
43
+ throw new PluginError('Plugin must have an install function', plugin.name);
44
+ }
45
+ // Check for duplicates
46
+ if (this.plugins.has(plugin.name) && !this.options.allowDuplicates) {
47
+ throw new PluginError(`Plugin '${plugin.name}' is already registered`);
48
+ }
49
+ // Validate dependencies
50
+ this.validateDependencies(plugin);
51
+ this.plugins.set(plugin.name, plugin);
52
+ this.buildDependencyGraph(plugin);
53
+ }
54
+ /**
55
+ * Unregister a plugin from the registry
56
+ */
57
+ unregister(name) {
58
+ if (!this.plugins.has(name)) {
59
+ return false;
60
+ }
61
+ // Check if other plugins depend on this one
62
+ const dependents = this.getDependents(name);
63
+ if (dependents.length > 0 && this.options.strict) {
64
+ throw new PluginError(`Cannot unregister plugin '${name}' - it is required by: ${dependents.join(', ')}`);
65
+ }
66
+ this.plugins.delete(name);
67
+ this.installedPlugins.delete(name);
68
+ this.dependencyGraph.delete(name);
69
+ return true;
70
+ }
71
+ /**
72
+ * Get a registered plugin by name
73
+ */
74
+ get(name) {
75
+ return this.plugins.get(name);
76
+ }
77
+ /**
78
+ * Check if a plugin is registered
79
+ */
80
+ has(name) {
81
+ return this.plugins.has(name);
82
+ }
83
+ /**
84
+ * List all registered plugins
85
+ */
86
+ list() {
87
+ return Array.from(this.plugins.values());
88
+ }
89
+ /**
90
+ * List all installed plugins
91
+ */
92
+ listInstalled() {
93
+ return Array.from(this.installedPlugins.values());
94
+ }
95
+ /**
96
+ * Install a plugin into a converter
97
+ */
98
+ async install(pluginName, converter) {
99
+ const plugin = this.plugins.get(pluginName);
100
+ if (!plugin) {
101
+ throw new PluginError(`Plugin '${pluginName}' not found`);
102
+ }
103
+ try {
104
+ // Check if already installed
105
+ if (this.installedPlugins.has(pluginName)) {
106
+ return {
107
+ success: false,
108
+ plugin,
109
+ error: new PluginError(`Plugin '${pluginName}' is already installed`),
110
+ };
111
+ }
112
+ // Resolve and install dependencies first
113
+ if (this.options.autoResolve && plugin.dependencies) {
114
+ await this.installDependencies(plugin.dependencies, converter);
115
+ }
116
+ // Create plugin context
117
+ const context = {
118
+ converter,
119
+ version: '1.0.0', // TODO: Get from package.json
120
+ environment: process.env.NODE_ENV || 'development',
121
+ metadata: {
122
+ installDate: new Date(),
123
+ registry: this,
124
+ },
125
+ };
126
+ // Install the plugin
127
+ await plugin.install(context);
128
+ // Register hooks if provided
129
+ if (plugin.hooks) {
130
+ this.registerHooks(plugin, converter);
131
+ }
132
+ // Mark as installed
133
+ const status = {
134
+ plugin,
135
+ installed: true,
136
+ active: true,
137
+ dependencies: this.getDependencyStatus(plugin),
138
+ installDate: new Date(),
139
+ };
140
+ this.installedPlugins.set(pluginName, status);
141
+ return {
142
+ success: true,
143
+ plugin,
144
+ };
145
+ }
146
+ catch (error) {
147
+ return {
148
+ success: false,
149
+ plugin,
150
+ error: error instanceof Error ? error : new Error(String(error)),
151
+ };
152
+ }
153
+ }
154
+ /**
155
+ * Uninstall a plugin from a converter
156
+ */
157
+ async uninstall(pluginName, converter) {
158
+ const status = this.installedPlugins.get(pluginName);
159
+ if (!status) {
160
+ return false;
161
+ }
162
+ try {
163
+ // Check dependents
164
+ const dependents = this.getInstalledDependents(pluginName);
165
+ if (dependents.length > 0 && this.options.strict) {
166
+ throw new PluginError(`Cannot uninstall plugin '${pluginName}' - it is required by: ${dependents.join(', ')}`);
167
+ }
168
+ // Call uninstall if available
169
+ if (status.plugin.uninstall) {
170
+ const context = {
171
+ converter,
172
+ version: '1.0.0',
173
+ environment: process.env.NODE_ENV || 'development',
174
+ metadata: {
175
+ uninstallDate: new Date(),
176
+ registry: this,
177
+ },
178
+ };
179
+ await status.plugin.uninstall(context);
180
+ }
181
+ // Unregister hooks
182
+ if (status.plugin.hooks) {
183
+ this.unregisterHooks(status.plugin, converter);
184
+ }
185
+ this.installedPlugins.delete(pluginName);
186
+ return true;
187
+ }
188
+ catch (error) {
189
+ console.error(`Error uninstalling plugin '${pluginName}':`, error);
190
+ return false;
191
+ }
192
+ }
193
+ /**
194
+ * Get plugin status
195
+ */
196
+ getStatus(name) {
197
+ return this.installedPlugins.get(name);
198
+ }
199
+ /**
200
+ * Check if a plugin is installed
201
+ */
202
+ isInstalled(name) {
203
+ return this.installedPlugins.has(name);
204
+ }
205
+ /**
206
+ * Resolve plugin dependencies in correct order
207
+ */
208
+ resolveDependencies(plugins) {
209
+ const resolved = [];
210
+ const visiting = new Set();
211
+ const visited = new Set();
212
+ const visit = (pluginName, depth = 0) => {
213
+ if (depth > this.options.maxDependencyDepth) {
214
+ throw new PluginError(`Dependency depth exceeded for plugin '${pluginName}'`);
215
+ }
216
+ if (visiting.has(pluginName)) {
217
+ throw new PluginError(`Circular dependency detected involving plugin '${pluginName}'`);
218
+ }
219
+ if (visited.has(pluginName)) {
220
+ return;
221
+ }
222
+ visiting.add(pluginName);
223
+ const plugin = this.plugins.get(pluginName);
224
+ if (!plugin) {
225
+ throw new PluginError(`Plugin '${pluginName}' not found`);
226
+ }
227
+ // Visit dependencies first
228
+ if (plugin.dependencies) {
229
+ for (const dep of plugin.dependencies) {
230
+ const depName = this.parseDependencyName(dep);
231
+ visit(depName, depth + 1);
232
+ }
233
+ }
234
+ visiting.delete(pluginName);
235
+ visited.add(pluginName);
236
+ resolved.push(pluginName);
237
+ };
238
+ for (const plugin of plugins) {
239
+ visit(plugin);
240
+ }
241
+ return resolved;
242
+ }
243
+ /**
244
+ * Clear all plugins and installed plugins
245
+ */
246
+ clear() {
247
+ this.plugins.clear();
248
+ this.installedPlugins.clear();
249
+ this.dependencyGraph.clear();
250
+ }
251
+ /**
252
+ * Validate plugin dependencies
253
+ */
254
+ validateDependencies(plugin) {
255
+ if (!plugin.dependencies) {
256
+ return;
257
+ }
258
+ for (const dep of plugin.dependencies) {
259
+ const depName = this.parseDependencyName(dep);
260
+ if (depName === plugin.name) {
261
+ throw new PluginError(`Plugin '${plugin.name}' cannot depend on itself`);
262
+ }
263
+ // In strict mode, check if dependency is registered
264
+ if (this.options.strict && !this.plugins.has(depName)) {
265
+ throw new PluginError(`Plugin '${plugin.name}' depends on unregistered plugin '${depName}'`);
266
+ }
267
+ }
268
+ }
269
+ /**
270
+ * Build dependency graph for a plugin
271
+ */
272
+ buildDependencyGraph(plugin) {
273
+ if (!plugin.dependencies) {
274
+ return;
275
+ }
276
+ const deps = new Set();
277
+ for (const dep of plugin.dependencies) {
278
+ const depName = this.parseDependencyName(dep);
279
+ deps.add(depName);
280
+ }
281
+ this.dependencyGraph.set(plugin.name, deps);
282
+ }
283
+ /**
284
+ * Get plugins that depend on the given plugin
285
+ */
286
+ getDependents(pluginName) {
287
+ const dependents = [];
288
+ for (const [name, deps] of this.dependencyGraph.entries()) {
289
+ if (deps.has(pluginName)) {
290
+ dependents.push(name);
291
+ }
292
+ }
293
+ return dependents;
294
+ }
295
+ /**
296
+ * Get installed plugins that depend on the given plugin
297
+ */
298
+ getInstalledDependents(pluginName) {
299
+ return this.getDependents(pluginName).filter(name => this.isInstalled(name));
300
+ }
301
+ /**
302
+ * Install plugin dependencies
303
+ */
304
+ async installDependencies(dependencies, converter) {
305
+ const depNames = dependencies.map(dep => this.parseDependencyName(dep));
306
+ const resolved = this.resolveDependencies(depNames);
307
+ for (const depName of resolved) {
308
+ if (!this.isInstalled(depName)) {
309
+ const result = await this.install(depName, converter);
310
+ if (!result.success) {
311
+ throw new PluginError(`Failed to install dependency '${depName}': ${result.error?.message}`);
312
+ }
313
+ }
314
+ }
315
+ }
316
+ /**
317
+ * Get dependency status for a plugin
318
+ */
319
+ getDependencyStatus(plugin) {
320
+ if (!plugin.dependencies) {
321
+ return [];
322
+ }
323
+ return plugin.dependencies.map(dep => {
324
+ const name = this.parseDependencyName(dep);
325
+ const version = this.parseDependencyVersion(dep);
326
+ const installedPlugin = this.plugins.get(name);
327
+ return {
328
+ name,
329
+ version,
330
+ required: true,
331
+ installed: !!installedPlugin,
332
+ compatible: installedPlugin
333
+ ? this.isVersionCompatible(installedPlugin.version, version)
334
+ : false,
335
+ };
336
+ });
337
+ }
338
+ /**
339
+ * Register plugin hooks with converter
340
+ */
341
+ registerHooks(plugin, _converter) {
342
+ if (!plugin.hooks) {
343
+ return;
344
+ }
345
+ // TODO: Implement hook registration with converter
346
+ // This would integrate with the converter's event system
347
+ console.log(`Registering hooks for plugin '${plugin.name}'`);
348
+ }
349
+ /**
350
+ * Unregister plugin hooks from converter
351
+ */
352
+ unregisterHooks(plugin, _converter) {
353
+ if (!plugin.hooks) {
354
+ return;
355
+ }
356
+ // TODO: Implement hook unregistration with converter
357
+ console.log(`Unregistering hooks for plugin '${plugin.name}'`);
358
+ }
359
+ /**
360
+ * Parse dependency name from dependency string
361
+ */
362
+ parseDependencyName(dependency) {
363
+ return dependency.split('@')[0];
364
+ }
365
+ /**
366
+ * Parse dependency version from dependency string
367
+ */
368
+ parseDependencyVersion(dependency) {
369
+ const parts = dependency.split('@');
370
+ return parts.length > 1 ? parts[1] : '*';
371
+ }
372
+ /**
373
+ * Check if version is compatible with requirement
374
+ */
375
+ isVersionCompatible(version, requirement) {
376
+ // Simple version compatibility check
377
+ // In a real implementation, use semver library
378
+ if (requirement === '*') {
379
+ return true;
380
+ }
381
+ return version === requirement;
382
+ }
383
+ }
384
+ exports.PluginRegistry = PluginRegistry;
385
+ //# sourceMappingURL=PluginRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluginRegistry.js","sourceRoot":"","sources":["../../src/plugins/PluginRegistry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import { Plugin, PluginContext } from '../Plugin';
2
+ /**
3
+ * Audit log entry
4
+ */
5
+ export interface AuditLogEntry {
6
+ timestamp: string;
7
+ event: string;
8
+ plugin?: string;
9
+ converter: string;
10
+ metadata: Record<string, any>;
11
+ duration?: number;
12
+ success: boolean;
13
+ error?: string;
14
+ }
15
+ /**
16
+ * Options for the audit plugin
17
+ */
18
+ export interface AuditPluginOptions {
19
+ logFile?: string;
20
+ logLevel?: 'minimal' | 'detailed' | 'verbose';
21
+ includeData?: boolean;
22
+ maxLogSize?: number;
23
+ rotateDaily?: boolean;
24
+ }
25
+ /**
26
+ * Plugin that logs conversion activities for auditing
27
+ */
28
+ export declare class AuditPlugin implements Plugin {
29
+ name: string;
30
+ version: string;
31
+ description: string;
32
+ author: string;
33
+ options: Required<AuditPluginOptions>;
34
+ private startTime;
35
+ private logEntries;
36
+ constructor(options?: AuditPluginOptions);
37
+ install(context: PluginContext): Promise<void>;
38
+ hooks: {
39
+ beforeParse: (content: string, format: string, context: PluginContext) => Promise<string>;
40
+ afterParse: (data: any, context: PluginContext) => Promise<any>;
41
+ beforeMap: (source: any, context: PluginContext) => Promise<any>;
42
+ afterMap: (target: any, context: PluginContext) => Promise<any>;
43
+ beforeValidate: (data: any, context: PluginContext) => Promise<any>;
44
+ afterValidate: (_data: any, errors: any[], context: PluginContext) => Promise<void>;
45
+ afterSerialize: (content: string, format: string, context: PluginContext) => Promise<string>;
46
+ onError: (error: Error, context: PluginContext) => Promise<void>;
47
+ };
48
+ /**
49
+ * Log an event
50
+ */
51
+ private logEvent;
52
+ /**
53
+ * Flush accumulated logs to file
54
+ */
55
+ private flushLogs;
56
+ /**
57
+ * Format log entry for file output
58
+ */
59
+ private formatLogEntry;
60
+ /**
61
+ * Get log file name with rotation if enabled
62
+ */
63
+ private getLogFileName;
64
+ /**
65
+ * Check if log should be rotated
66
+ */
67
+ private shouldRotateLog;
68
+ /**
69
+ * Rotate log file
70
+ */
71
+ private rotateLog;
72
+ /**
73
+ * Count fields in an object recursively
74
+ */
75
+ private countFields;
76
+ }
77
+ /**
78
+ * Factory function to create audit plugin
79
+ */
80
+ export declare function createAuditPlugin(options?: AuditPluginOptions): AuditPlugin;
81
+ //# sourceMappingURL=AuditPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuditPlugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/built-in/AuditPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAIlD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,WAAY,YAAW,MAAM;IACxC,IAAI,SAAkB;IACtB,OAAO,SAAW;IAClB,WAAW,SAA2D;IACtE,MAAM,SAAsB;IAE5B,OAAO,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IACtC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,UAAU,CAAuB;gBAE7B,OAAO,GAAE,kBAAuB;IAWtC,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBpD,KAAK;+BAEQ,MAAM,UACP,MAAM,WACL,aAAa;2BAaC,GAAG,WAAW,aAAa;4BAS1B,GAAG,WAAW,aAAa;2BAQ5B,GAAG,WAAW,aAAa;+BASvB,GAAG,WAAW,aAAa;+BAS/C,GAAG,UACF,GAAG,EAAE,WACJ,aAAa;kCAUb,MAAM,UACP,MAAM,WACL,aAAa;yBAsBD,KAAK,WAAW,aAAa;MAkBpD;IAEF;;OAEG;IACH,OAAO,CAAC,QAAQ;IAmChB;;OAEG;YACW,SAAS;IAyBvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAcvB;;OAEG;YACW,SAAS;IAavB;;OAEG;IACH,OAAO,CAAC,WAAW;CAiBpB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,WAAW,CAE3E"}