@zudojs/plugins 0.0.1
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/LICENSE +21 -0
- package/README.md +57 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/pluginDependencies/dependencyResolver.core.d.ts +28 -0
- package/dist/pluginDependencies/dependencyResolver.core.d.ts.map +1 -0
- package/dist/pluginDependencies/dependencyResolver.core.js +88 -0
- package/dist/pluginDependencies/dependencyResolver.core.js.map +1 -0
- package/dist/pluginDependencies/index.d.ts +8 -0
- package/dist/pluginDependencies/index.d.ts.map +1 -0
- package/dist/pluginDependencies/index.js +7 -0
- package/dist/pluginDependencies/index.js.map +1 -0
- package/dist/pluginDiagnostics/index.d.ts +8 -0
- package/dist/pluginDiagnostics/index.d.ts.map +1 -0
- package/dist/pluginDiagnostics/index.js +7 -0
- package/dist/pluginDiagnostics/index.js.map +1 -0
- package/dist/pluginDiagnostics/pluginDiagnostic.core.d.ts +55 -0
- package/dist/pluginDiagnostics/pluginDiagnostic.core.d.ts.map +1 -0
- package/dist/pluginDiagnostics/pluginDiagnostic.core.js +47 -0
- package/dist/pluginDiagnostics/pluginDiagnostic.core.js.map +1 -0
- package/dist/pluginEvents/index.d.ts +8 -0
- package/dist/pluginEvents/index.d.ts.map +1 -0
- package/dist/pluginEvents/index.js +7 -0
- package/dist/pluginEvents/index.js.map +1 -0
- package/dist/pluginEvents/pluginEvent.core.d.ts +34 -0
- package/dist/pluginEvents/pluginEvent.core.d.ts.map +1 -0
- package/dist/pluginEvents/pluginEvent.core.js +30 -0
- package/dist/pluginEvents/pluginEvent.core.js.map +1 -0
- package/dist/pluginIntegration/index.d.ts +8 -0
- package/dist/pluginIntegration/index.d.ts.map +1 -0
- package/dist/pluginIntegration/index.js +7 -0
- package/dist/pluginIntegration/index.js.map +1 -0
- package/dist/pluginIntegration/pluginContext.core.d.ts +20 -0
- package/dist/pluginIntegration/pluginContext.core.d.ts.map +1 -0
- package/dist/pluginIntegration/pluginContext.core.js +22 -0
- package/dist/pluginIntegration/pluginContext.core.js.map +1 -0
- package/dist/pluginLifecycle/pluginLifecycle.core.d.ts +15 -0
- package/dist/pluginLifecycle/pluginLifecycle.core.d.ts.map +1 -0
- package/dist/pluginLifecycle/pluginLifecycle.core.js +128 -0
- package/dist/pluginLifecycle/pluginLifecycle.core.js.map +1 -0
- package/dist/pluginManager/pluginManager.core.d.ts +22 -0
- package/dist/pluginManager/pluginManager.core.d.ts.map +1 -0
- package/dist/pluginManager/pluginManager.core.js +110 -0
- package/dist/pluginManager/pluginManager.core.js.map +1 -0
- package/dist/pluginRegistry/index.d.ts +8 -0
- package/dist/pluginRegistry/index.d.ts.map +1 -0
- package/dist/pluginRegistry/index.js +7 -0
- package/dist/pluginRegistry/index.js.map +1 -0
- package/dist/pluginRegistry/pluginRegistry.core.d.ts +41 -0
- package/dist/pluginRegistry/pluginRegistry.core.d.ts.map +1 -0
- package/dist/pluginRegistry/pluginRegistry.core.js +51 -0
- package/dist/pluginRegistry/pluginRegistry.core.js.map +1 -0
- package/dist/pluginTypes/index.d.ts +12 -0
- package/dist/pluginTypes/index.d.ts.map +1 -0
- package/dist/pluginTypes/index.js +7 -0
- package/dist/pluginTypes/index.js.map +1 -0
- package/dist/pluginTypes/plugin.type.d.ts +17 -0
- package/dist/pluginTypes/plugin.type.d.ts.map +1 -0
- package/dist/pluginTypes/plugin.type.js +2 -0
- package/dist/pluginTypes/plugin.type.js.map +1 -0
- package/dist/pluginTypes/pluginContext.type.d.ts +45 -0
- package/dist/pluginTypes/pluginContext.type.d.ts.map +1 -0
- package/dist/pluginTypes/pluginContext.type.js +2 -0
- package/dist/pluginTypes/pluginContext.type.js.map +1 -0
- package/dist/pluginTypes/pluginDependency.type.d.ts +9 -0
- package/dist/pluginTypes/pluginDependency.type.d.ts.map +1 -0
- package/dist/pluginTypes/pluginDependency.type.js +2 -0
- package/dist/pluginTypes/pluginDependency.type.js.map +1 -0
- package/dist/pluginTypes/pluginMetadata.type.d.ts +13 -0
- package/dist/pluginTypes/pluginMetadata.type.d.ts.map +1 -0
- package/dist/pluginTypes/pluginMetadata.type.js +2 -0
- package/dist/pluginTypes/pluginMetadata.type.js.map +1 -0
- package/dist/pluginTypes/pluginState.type.d.ts +13 -0
- package/dist/pluginTypes/pluginState.type.d.ts.map +1 -0
- package/dist/pluginTypes/pluginState.type.js +24 -0
- package/dist/pluginTypes/pluginState.type.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencyResolver.core.d.ts","sourceRoot":"","sources":["../../src/pluginDependencies/dependencyResolver.core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAMhF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAEpC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAEpC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B;;OAEG;IACI,OAAO,CACZ,OAAO,EAAE,GAAG,CACV,MAAM,EACN;QACE,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;QACpD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;KAC7D,CACF,GACA,oBAAoB,CAsCtB;IAED,OAAO,CAAC,GAAG;IAyCX,OAAO,CAAC,YAAY;CAcrB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,oBAAoB,GAAG,IAAI,CAW5E"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { PluginDependencyCycleError, PluginDependencyError, } from "@zudojs/errors";
|
|
2
|
+
/**
|
|
3
|
+
* Resolves plugin dependencies and determines startup order.
|
|
4
|
+
*/
|
|
5
|
+
export class DependencyResolver {
|
|
6
|
+
/**
|
|
7
|
+
* Resolves dependencies for the given plugins.
|
|
8
|
+
*/
|
|
9
|
+
resolve(plugins) {
|
|
10
|
+
const missing = [];
|
|
11
|
+
const cycles = [];
|
|
12
|
+
for (const [name, plugin] of plugins) {
|
|
13
|
+
for (const dep of plugin.dependencies ?? []) {
|
|
14
|
+
if (!plugins.has(dep.name)) {
|
|
15
|
+
missing.push(dep.name);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
if (missing.length > 0) {
|
|
20
|
+
return { ordered: [], missing, cycles };
|
|
21
|
+
}
|
|
22
|
+
const visited = new Set();
|
|
23
|
+
const visiting = new Set();
|
|
24
|
+
const order = [];
|
|
25
|
+
for (const name of plugins.keys()) {
|
|
26
|
+
if (!visited.has(name)) {
|
|
27
|
+
const cycle = this.dfs(name, plugins, visited, visiting, order);
|
|
28
|
+
if (cycle) {
|
|
29
|
+
cycles.push(cycle);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (cycles.length > 0) {
|
|
34
|
+
return { ordered: [], missing, cycles };
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
ordered: Object.freeze(order),
|
|
38
|
+
missing,
|
|
39
|
+
cycles: Object.freeze(cycles),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
dfs(name, plugins, visited, visiting, order) {
|
|
43
|
+
if (visiting.has(name)) {
|
|
44
|
+
const cycle = this.extractCycle(name, visiting);
|
|
45
|
+
return cycle;
|
|
46
|
+
}
|
|
47
|
+
if (visited.has(name)) {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
visiting.add(name);
|
|
51
|
+
const plugin = plugins.get(name);
|
|
52
|
+
const deps = plugin?.dependencies ?? [];
|
|
53
|
+
for (const dep of deps) {
|
|
54
|
+
const cycle = this.dfs(dep.name, plugins, visited, visiting, order);
|
|
55
|
+
if (cycle) {
|
|
56
|
+
return cycle;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
visiting.delete(name);
|
|
60
|
+
visited.add(name);
|
|
61
|
+
order.push(name);
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
extractCycle(entryPoint, visiting) {
|
|
65
|
+
const cycle = [entryPoint];
|
|
66
|
+
let current = entryPoint;
|
|
67
|
+
const entries = Array.from(visiting);
|
|
68
|
+
const startIndex = entries.indexOf(current);
|
|
69
|
+
for (let i = startIndex + 1; i < entries.length; i++) {
|
|
70
|
+
cycle.push(entries[i]);
|
|
71
|
+
current = entries[i];
|
|
72
|
+
}
|
|
73
|
+
cycle.push(entryPoint);
|
|
74
|
+
return cycle.join(" -> ");
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Throws if the dependency resolution has errors.
|
|
79
|
+
*/
|
|
80
|
+
export function assertResolutionValid(resolution) {
|
|
81
|
+
if (resolution.missing.length > 0) {
|
|
82
|
+
throw new PluginDependencyError(resolution.missing[0], resolution.missing[0]);
|
|
83
|
+
}
|
|
84
|
+
if (resolution.cycles.length > 0) {
|
|
85
|
+
throw new PluginDependencyCycleError(resolution.cycles[0].split(" -> "));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=dependencyResolver.core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencyResolver.core.js","sourceRoot":"","sources":["../../src/pluginDependencies/dependencyResolver.core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/plugins/pluginDependencies
|
|
3
|
+
*
|
|
4
|
+
* Plugin dependency resolution, topological sorting, and cycle detection.
|
|
5
|
+
*/
|
|
6
|
+
export type { DependencyResolution } from "./dependencyResolver.core.js";
|
|
7
|
+
export { DependencyResolver, assertResolutionValid, } from "./dependencyResolver.core.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pluginDependencies/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EACL,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pluginDependencies/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/plugins/pluginDiagnostics
|
|
3
|
+
*
|
|
4
|
+
* Plugin health checks and diagnostic reporting.
|
|
5
|
+
*/
|
|
6
|
+
export type { PluginHealthStatus, PluginHealth, PluginDiagnostic, PluginDiagnosticReport, } from "./pluginDiagnostic.core.js";
|
|
7
|
+
export { createHealthyHealth, createDegradedHealth, createUnhealthyHealth, buildDiagnosticReport, } from "./pluginDiagnostic.core.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pluginDiagnostics/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EACV,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/plugins/pluginDiagnostics
|
|
3
|
+
*
|
|
4
|
+
* Plugin health checks and diagnostic reporting.
|
|
5
|
+
*/
|
|
6
|
+
export { createHealthyHealth, createDegradedHealth, createUnhealthyHealth, buildDiagnosticReport, } from "./pluginDiagnostic.core.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pluginDiagnostics/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { Plugin } from "../pluginTypes/plugin.type.js";
|
|
2
|
+
import type { PluginMetadata } from "../pluginTypes/pluginMetadata.type.js";
|
|
3
|
+
import type { PluginState } from "../pluginTypes/pluginState.type.js";
|
|
4
|
+
/**
|
|
5
|
+
* Plugin health status.
|
|
6
|
+
*/
|
|
7
|
+
export type PluginHealthStatus = "healthy" | "degraded" | "unhealthy";
|
|
8
|
+
/**
|
|
9
|
+
* Plugin health information.
|
|
10
|
+
*/
|
|
11
|
+
export interface PluginHealth {
|
|
12
|
+
readonly status: PluginHealthStatus;
|
|
13
|
+
readonly details?: unknown;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Individual plugin diagnostic information.
|
|
17
|
+
*/
|
|
18
|
+
export interface PluginDiagnostic {
|
|
19
|
+
readonly plugin: PluginMetadata;
|
|
20
|
+
readonly state: PluginState;
|
|
21
|
+
readonly health: PluginHealth;
|
|
22
|
+
readonly dependencies: readonly string[];
|
|
23
|
+
readonly optionalDependencies: readonly string[];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Complete plugin system diagnostic report.
|
|
27
|
+
*/
|
|
28
|
+
export interface PluginDiagnosticReport {
|
|
29
|
+
readonly plugins: readonly PluginDiagnostic[];
|
|
30
|
+
readonly total: number;
|
|
31
|
+
readonly healthy: number;
|
|
32
|
+
readonly degraded: number;
|
|
33
|
+
readonly unhealthy: number;
|
|
34
|
+
readonly failed: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Creates a default healthy status for a plugin.
|
|
38
|
+
*/
|
|
39
|
+
export declare function createHealthyHealth(): PluginHealth;
|
|
40
|
+
/**
|
|
41
|
+
* Creates a degraded health status for a plugin.
|
|
42
|
+
*/
|
|
43
|
+
export declare function createDegradedHealth(details?: unknown): PluginHealth;
|
|
44
|
+
/**
|
|
45
|
+
* Creates an unhealthy health status for a plugin.
|
|
46
|
+
*/
|
|
47
|
+
export declare function createUnhealthyHealth(details?: unknown): PluginHealth;
|
|
48
|
+
/**
|
|
49
|
+
* Builds a diagnostic report from registered plugins.
|
|
50
|
+
*/
|
|
51
|
+
export declare function buildDiagnosticReport(plugins: Array<{
|
|
52
|
+
readonly plugin: Plugin;
|
|
53
|
+
readonly state: PluginState;
|
|
54
|
+
}>): PluginDiagnosticReport;
|
|
55
|
+
//# sourceMappingURL=pluginDiagnostic.core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pluginDiagnostic.core.d.ts","sourceRoot":"","sources":["../../src/pluginDiagnostics/pluginDiagnostic.core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEtE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAEpC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAEhC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAE5B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAE9B,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAEzC,QAAQ,CAAC,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAAC;CAClD;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAE9C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,CAElD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,YAAY,CAEpE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,YAAY,CAErE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,KAAK,CAAC;IACb,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B,CAAC,GACD,sBAAsB,CAoCxB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a default healthy status for a plugin.
|
|
3
|
+
*/
|
|
4
|
+
export function createHealthyHealth() {
|
|
5
|
+
return { status: "healthy" };
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Creates a degraded health status for a plugin.
|
|
9
|
+
*/
|
|
10
|
+
export function createDegradedHealth(details) {
|
|
11
|
+
return { status: "degraded", ...(details !== undefined ? { details } : {}) };
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Creates an unhealthy health status for a plugin.
|
|
15
|
+
*/
|
|
16
|
+
export function createUnhealthyHealth(details) {
|
|
17
|
+
return { status: "unhealthy", ...(details !== undefined ? { details } : {}) };
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Builds a diagnostic report from registered plugins.
|
|
21
|
+
*/
|
|
22
|
+
export function buildDiagnosticReport(plugins) {
|
|
23
|
+
const pluginDiagnostics = plugins.map(({ plugin, state }) => ({
|
|
24
|
+
plugin: plugin.metadata,
|
|
25
|
+
state,
|
|
26
|
+
health: state === "started"
|
|
27
|
+
? createHealthyHealth()
|
|
28
|
+
: state === "failed"
|
|
29
|
+
? createUnhealthyHealth()
|
|
30
|
+
: createDegradedHealth(),
|
|
31
|
+
dependencies: plugin.dependencies?.map((d) => d.name) ?? [],
|
|
32
|
+
optionalDependencies: plugin.optionalDependencies?.map((d) => d.name) ?? [],
|
|
33
|
+
}));
|
|
34
|
+
const healthy = pluginDiagnostics.filter((d) => d.health.status === "healthy").length;
|
|
35
|
+
const degraded = pluginDiagnostics.filter((d) => d.health.status === "degraded").length;
|
|
36
|
+
const unhealthy = pluginDiagnostics.filter((d) => d.health.status === "unhealthy").length;
|
|
37
|
+
const failed = pluginDiagnostics.filter((d) => d.state === "failed").length;
|
|
38
|
+
return {
|
|
39
|
+
plugins: Object.freeze(pluginDiagnostics),
|
|
40
|
+
total: pluginDiagnostics.length,
|
|
41
|
+
healthy,
|
|
42
|
+
degraded,
|
|
43
|
+
unhealthy,
|
|
44
|
+
failed,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=pluginDiagnostic.core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pluginDiagnostic.core.js","sourceRoot":"","sources":["../../src/pluginDiagnostics/pluginDiagnostic.core.ts"],"names":[],"mappings":"AAkDA;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAiB;IACpD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAiB;IACrD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAChF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAGE;IAEF,MAAM,iBAAiB,GAAuB,OAAO,CAAC,GAAG,CACvD,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC,QAAQ;QACvB,KAAK;QACL,MAAM,EACJ,KAAK,KAAK,SAAS;YACjB,CAAC,CAAC,mBAAmB,EAAE;YACvB,CAAC,CAAC,KAAK,KAAK,QAAQ;gBAClB,CAAC,CAAC,qBAAqB,EAAE;gBACzB,CAAC,CAAC,oBAAoB,EAAE;QAC9B,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;QAC3D,oBAAoB,EAClB,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;KACxD,CAAC,CACH,CAAC;IAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CACrC,CAAC,MAAM,CAAC;IACT,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CACvC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,CACtC,CAAC,MAAM,CAAC;IACT,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,CACvC,CAAC,MAAM,CAAC;IACT,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IAE5E,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;QACzC,KAAK,EAAE,iBAAiB,CAAC,MAAM;QAC/B,OAAO;QACP,QAAQ;QACR,SAAS;QACT,MAAM;KACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/plugins/pluginEvents
|
|
3
|
+
*
|
|
4
|
+
* Plugin lifecycle event types and event names.
|
|
5
|
+
*/
|
|
6
|
+
export type { PluginLifecycleEvent } from "./pluginEvent.core.js";
|
|
7
|
+
export { PLUGIN_EVENTS, createPluginLifecycleEvent, } from "./pluginEvent.core.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pluginEvents/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EACL,aAAa,EACb,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pluginEvents/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,aAAa,EACb,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { PluginMetadata } from "../pluginTypes/pluginMetadata.type.js";
|
|
2
|
+
import type { PluginState } from "../pluginTypes/pluginState.type.js";
|
|
3
|
+
/**
|
|
4
|
+
* Event payload for plugin lifecycle events.
|
|
5
|
+
*/
|
|
6
|
+
export interface PluginLifecycleEvent {
|
|
7
|
+
readonly plugin: PluginMetadata;
|
|
8
|
+
readonly state: PluginState;
|
|
9
|
+
readonly previousState?: PluginState;
|
|
10
|
+
readonly timestamp: number;
|
|
11
|
+
readonly error?: unknown;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Event names emitted during plugin lifecycle.
|
|
15
|
+
*/
|
|
16
|
+
export declare const PLUGIN_EVENTS: {
|
|
17
|
+
readonly REGISTERED: "plugin:registered";
|
|
18
|
+
readonly INSTALLING: "plugin:installing";
|
|
19
|
+
readonly INSTALLED: "plugin:installed";
|
|
20
|
+
readonly INITIALIZING: "plugin:initializing";
|
|
21
|
+
readonly INITIALIZED: "plugin:initialized";
|
|
22
|
+
readonly STARTING: "plugin:starting";
|
|
23
|
+
readonly STARTED: "plugin:started";
|
|
24
|
+
readonly STOPPING: "plugin:stopping";
|
|
25
|
+
readonly STOPPED: "plugin:stopped";
|
|
26
|
+
readonly FAILED: "plugin:failed";
|
|
27
|
+
readonly DISPOSING: "plugin:disposing";
|
|
28
|
+
readonly DISPOSED: "plugin:disposed";
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Creates a plugin lifecycle event.
|
|
32
|
+
*/
|
|
33
|
+
export declare function createPluginLifecycleEvent(plugin: PluginMetadata, state: PluginState, previousState?: PluginState, error?: unknown): PluginLifecycleEvent;
|
|
34
|
+
//# sourceMappingURL=pluginEvent.core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pluginEvent.core.d.ts","sourceRoot":"","sources":["../../src/pluginEvents/pluginEvent.core.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAEhC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAE5B,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC;IAErC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;aACxB,UAAU,EAAE,mBAAmB;aAC/B,UAAU,EAAE,mBAAmB;aAC/B,SAAS,EAAE,kBAAkB;aAC7B,YAAY,EAAE,qBAAqB;aACnC,WAAW,EAAE,oBAAoB;aACjC,QAAQ,EAAE,iBAAiB;aAC3B,OAAO,EAAE,gBAAgB;aACzB,QAAQ,EAAE,iBAAiB;aAC3B,OAAO,EAAE,gBAAgB;aACzB,MAAM,EAAE,eAAe;aACvB,SAAS,EAAE,kBAAkB;aAC7B,QAAQ,EAAE,iBAAiB;CACnB,CAAC;AAEX;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,WAAW,EAClB,aAAa,CAAC,EAAE,WAAW,EAC3B,KAAK,CAAC,EAAE,OAAO,GACd,oBAAoB,CAQtB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event names emitted during plugin lifecycle.
|
|
3
|
+
*/
|
|
4
|
+
export const PLUGIN_EVENTS = {
|
|
5
|
+
REGISTERED: "plugin:registered",
|
|
6
|
+
INSTALLING: "plugin:installing",
|
|
7
|
+
INSTALLED: "plugin:installed",
|
|
8
|
+
INITIALIZING: "plugin:initializing",
|
|
9
|
+
INITIALIZED: "plugin:initialized",
|
|
10
|
+
STARTING: "plugin:starting",
|
|
11
|
+
STARTED: "plugin:started",
|
|
12
|
+
STOPPING: "plugin:stopping",
|
|
13
|
+
STOPPED: "plugin:stopped",
|
|
14
|
+
FAILED: "plugin:failed",
|
|
15
|
+
DISPOSING: "plugin:disposing",
|
|
16
|
+
DISPOSED: "plugin:disposed",
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Creates a plugin lifecycle event.
|
|
20
|
+
*/
|
|
21
|
+
export function createPluginLifecycleEvent(plugin, state, previousState, error) {
|
|
22
|
+
return {
|
|
23
|
+
plugin,
|
|
24
|
+
state,
|
|
25
|
+
...(previousState !== undefined ? { previousState } : {}),
|
|
26
|
+
timestamp: Date.now(),
|
|
27
|
+
...(error !== undefined ? { error } : {}),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=pluginEvent.core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pluginEvent.core.js","sourceRoot":"","sources":["../../src/pluginEvents/pluginEvent.core.ts"],"names":[],"mappings":"AAmBA;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,UAAU,EAAE,mBAAmB;IAC/B,UAAU,EAAE,mBAAmB;IAC/B,SAAS,EAAE,kBAAkB;IAC7B,YAAY,EAAE,qBAAqB;IACnC,WAAW,EAAE,oBAAoB;IACjC,QAAQ,EAAE,iBAAiB;IAC3B,OAAO,EAAE,gBAAgB;IACzB,QAAQ,EAAE,iBAAiB;IAC3B,OAAO,EAAE,gBAAgB;IACzB,MAAM,EAAE,eAAe;IACvB,SAAS,EAAE,kBAAkB;IAC7B,QAAQ,EAAE,iBAAiB;CACnB,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAsB,EACtB,KAAkB,EAClB,aAA2B,EAC3B,KAAe;IAEf,OAAO;QACL,MAAM;QACN,KAAK;QACL,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/plugins/pluginIntegration
|
|
3
|
+
*
|
|
4
|
+
* Plugin context factory and integration helpers.
|
|
5
|
+
*/
|
|
6
|
+
export { createPluginContext } from "./pluginContext.core.js";
|
|
7
|
+
export type { PluginContext } from "../pluginTypes/pluginContext.type.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pluginIntegration/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,YAAY,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pluginIntegration/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { PluginMetadata } from "../pluginTypes/pluginMetadata.type.js";
|
|
2
|
+
import type { PluginContext } from "../pluginTypes/pluginContext.type.js";
|
|
3
|
+
import type { PluginContainer } from "../pluginTypes/pluginContext.type.js";
|
|
4
|
+
import type { PluginConfig } from "../pluginTypes/pluginContext.type.js";
|
|
5
|
+
import type { PluginLogger } from "../pluginTypes/pluginContext.type.js";
|
|
6
|
+
import type { PluginEvents } from "../pluginTypes/pluginContext.type.js";
|
|
7
|
+
/**
|
|
8
|
+
* Options for creating a plugin context.
|
|
9
|
+
*/
|
|
10
|
+
export interface CreatePluginContextOptions {
|
|
11
|
+
readonly container?: PluginContainer;
|
|
12
|
+
readonly config?: PluginConfig;
|
|
13
|
+
readonly logger?: PluginLogger;
|
|
14
|
+
readonly events?: PluginEvents;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Creates a plugin context for testing and basic usage.
|
|
18
|
+
*/
|
|
19
|
+
export declare function createPluginContext(plugin: PluginMetadata, options?: CreatePluginContextOptions): PluginContext;
|
|
20
|
+
//# sourceMappingURL=pluginContext.core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pluginContext.core.d.ts","sourceRoot":"","sources":["../../src/pluginIntegration/pluginContext.core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;IAErC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAE/B,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAE/B,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;CAChC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,0BAA+B,GACvC,aAAa,CAkBf"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a plugin context for testing and basic usage.
|
|
3
|
+
*/
|
|
4
|
+
export function createPluginContext(plugin, options = {}) {
|
|
5
|
+
const abortController = new AbortController();
|
|
6
|
+
const disposables = [];
|
|
7
|
+
return {
|
|
8
|
+
plugin,
|
|
9
|
+
signal: abortController.signal,
|
|
10
|
+
container: options.container,
|
|
11
|
+
config: options.config,
|
|
12
|
+
logger: options.logger,
|
|
13
|
+
events: options.events,
|
|
14
|
+
onDispose(handler) {
|
|
15
|
+
disposables.push({ dispose: handler });
|
|
16
|
+
},
|
|
17
|
+
registerDisposable(disposable) {
|
|
18
|
+
disposables.push(disposable);
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=pluginContext.core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pluginContext.core.js","sourceRoot":"","sources":["../../src/pluginIntegration/pluginContext.core.ts"],"names":[],"mappings":"AAoBA;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAsB,EACtB,OAAO,GAA+B,EAAE;IAExC,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAC9C,MAAM,WAAW,GAA+C,EAAE,CAAC;IAEnE,OAAO;QACL,MAAM;QACN,MAAM,EAAE,eAAe,CAAC,MAAM;QAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,SAAS,CAAC,OAAO;YACf,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,kBAAkB,CAAC,UAAU;YAC3B,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Plugin } from "../pluginTypes/plugin.type.js";
|
|
2
|
+
import type { PluginContext } from "../pluginTypes/pluginContext.type.js";
|
|
3
|
+
import type { RegisteredPlugin } from "../pluginRegistry/pluginRegistry.core.js";
|
|
4
|
+
/**
|
|
5
|
+
* Executes plugin lifecycle phases with state management and event emission.
|
|
6
|
+
*/
|
|
7
|
+
export declare class LifecycleController {
|
|
8
|
+
install<TPlugin extends Plugin>(registered: RegisteredPlugin<TPlugin>, context: PluginContext): Promise<void>;
|
|
9
|
+
initialize<TPlugin extends Plugin>(registered: RegisteredPlugin<TPlugin>, context: PluginContext): Promise<void>;
|
|
10
|
+
start<TPlugin extends Plugin>(registered: RegisteredPlugin<TPlugin>, context: PluginContext): Promise<void>;
|
|
11
|
+
stop<TPlugin extends Plugin>(registered: RegisteredPlugin<TPlugin>, context: PluginContext): Promise<void>;
|
|
12
|
+
dispose<TPlugin extends Plugin>(registered: RegisteredPlugin<TPlugin>, context: PluginContext): Promise<void>;
|
|
13
|
+
private ensureTransition;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=pluginLifecycle.core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pluginLifecycle.core.d.ts","sourceRoot":"","sources":["../../src/pluginLifecycle/pluginLifecycle.core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAgCjF;;GAEG;AACH,qBAAa,mBAAmB;IACjB,OAAO,CAAC,OAAO,SAAS,MAAM,EACzC,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,EACrC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAqCf;IAEY,UAAU,CAAC,OAAO,SAAS,MAAM,EAC5C,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,EACrC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAqCf;IAEY,KAAK,CAAC,OAAO,SAAS,MAAM,EACvC,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,EACrC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CA+Bf;IAEY,IAAI,CAAC,OAAO,SAAS,MAAM,EACtC,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,EACrC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CA+Bf;IAEY,OAAO,CAAC,OAAO,SAAS,MAAM,EACzC,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,EACrC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CA0Cf;IAED,OAAO,CAAC,gBAAgB;CAczB"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { VALID_STATE_TRANSITIONS } from "../pluginTypes/pluginState.type.js";
|
|
2
|
+
import { PluginStateError } from "@zudojs/errors";
|
|
3
|
+
import { PLUGIN_EVENTS, createPluginLifecycleEvent, } from "../pluginEvents/pluginEvent.core.js";
|
|
4
|
+
/**
|
|
5
|
+
* Emits a plugin lifecycle event if the context supports events.
|
|
6
|
+
*/
|
|
7
|
+
function emitLifecycleEvent(context, eventName, pluginName, state, previousState, error) {
|
|
8
|
+
if (!context.events?.emit) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
const event = createPluginLifecycleEvent({ name: pluginName }, state, previousState, error);
|
|
12
|
+
context.events.emit(eventName, event);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Executes plugin lifecycle phases with state management and event emission.
|
|
16
|
+
*/
|
|
17
|
+
export class LifecycleController {
|
|
18
|
+
async install(registered, context) {
|
|
19
|
+
const name = registered.plugin.metadata.name;
|
|
20
|
+
const from = registered.state;
|
|
21
|
+
this.ensureTransition(registered, "installing");
|
|
22
|
+
registered.setState("installing");
|
|
23
|
+
emitLifecycleEvent(context, PLUGIN_EVENTS.INSTALLING, name, "installing", from);
|
|
24
|
+
try {
|
|
25
|
+
await registered.plugin.install?.(context, registered.options);
|
|
26
|
+
this.ensureTransition(registered, "installed");
|
|
27
|
+
registered.setState("installed");
|
|
28
|
+
emitLifecycleEvent(context, PLUGIN_EVENTS.INSTALLED, name, "installed", "installing");
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
registered.setState("failed");
|
|
32
|
+
emitLifecycleEvent(context, PLUGIN_EVENTS.FAILED, name, "failed", from, error);
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async initialize(registered, context) {
|
|
37
|
+
const name = registered.plugin.metadata.name;
|
|
38
|
+
const from = registered.state;
|
|
39
|
+
this.ensureTransition(registered, "initializing");
|
|
40
|
+
registered.setState("initializing");
|
|
41
|
+
emitLifecycleEvent(context, PLUGIN_EVENTS.INITIALIZING, name, "initializing", from);
|
|
42
|
+
try {
|
|
43
|
+
await registered.plugin.initialize?.(context);
|
|
44
|
+
this.ensureTransition(registered, "initialized");
|
|
45
|
+
registered.setState("initialized");
|
|
46
|
+
emitLifecycleEvent(context, PLUGIN_EVENTS.INITIALIZED, name, "initialized", "initializing");
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
registered.setState("failed");
|
|
50
|
+
emitLifecycleEvent(context, PLUGIN_EVENTS.FAILED, name, "failed", from, error);
|
|
51
|
+
throw error;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async start(registered, context) {
|
|
55
|
+
const name = registered.plugin.metadata.name;
|
|
56
|
+
const from = registered.state;
|
|
57
|
+
this.ensureTransition(registered, "starting");
|
|
58
|
+
registered.setState("starting");
|
|
59
|
+
emitLifecycleEvent(context, PLUGIN_EVENTS.STARTING, name, "starting", from);
|
|
60
|
+
try {
|
|
61
|
+
await registered.plugin.start?.(context);
|
|
62
|
+
this.ensureTransition(registered, "started");
|
|
63
|
+
registered.setState("started");
|
|
64
|
+
emitLifecycleEvent(context, PLUGIN_EVENTS.STARTED, name, "started", "starting");
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
registered.setState("failed");
|
|
68
|
+
emitLifecycleEvent(context, PLUGIN_EVENTS.FAILED, name, "failed", from, error);
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async stop(registered, context) {
|
|
73
|
+
const name = registered.plugin.metadata.name;
|
|
74
|
+
const from = registered.state;
|
|
75
|
+
this.ensureTransition(registered, "stopping");
|
|
76
|
+
registered.setState("stopping");
|
|
77
|
+
emitLifecycleEvent(context, PLUGIN_EVENTS.STOPPING, name, "stopping", from);
|
|
78
|
+
try {
|
|
79
|
+
await registered.plugin.stop?.(context);
|
|
80
|
+
this.ensureTransition(registered, "stopped");
|
|
81
|
+
registered.setState("stopped");
|
|
82
|
+
emitLifecycleEvent(context, PLUGIN_EVENTS.STOPPED, name, "stopped", "stopping");
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
registered.setState("failed");
|
|
86
|
+
emitLifecycleEvent(context, PLUGIN_EVENTS.FAILED, name, "failed", from, error);
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async dispose(registered, context) {
|
|
91
|
+
const name = registered.plugin.metadata.name;
|
|
92
|
+
const from = registered.state;
|
|
93
|
+
this.ensureTransition(registered, "disposing");
|
|
94
|
+
registered.setState("disposing");
|
|
95
|
+
emitLifecycleEvent(context, PLUGIN_EVENTS.DISPOSING, name, "disposing", from);
|
|
96
|
+
const errors = [];
|
|
97
|
+
for (const disposable of registered.disposables) {
|
|
98
|
+
try {
|
|
99
|
+
await disposable.dispose();
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
errors.push(error);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
try {
|
|
106
|
+
await registered.plugin.dispose?.(context);
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
errors.push(error);
|
|
110
|
+
}
|
|
111
|
+
registered.setState("disposed");
|
|
112
|
+
emitLifecycleEvent(context, PLUGIN_EVENTS.DISPOSED, name, "disposed", "disposing");
|
|
113
|
+
if (errors.length > 0) {
|
|
114
|
+
throw errors[0];
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
ensureTransition(registered, to) {
|
|
118
|
+
const from = registered.state;
|
|
119
|
+
if (from === to) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const valid = VALID_STATE_TRANSITIONS[from]?.includes(to) ?? false;
|
|
123
|
+
if (!valid) {
|
|
124
|
+
throw new PluginStateError(registered.plugin.metadata.name, from, to);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=pluginLifecycle.core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pluginLifecycle.core.js","sourceRoot":"","sources":["../../src/pluginLifecycle/pluginLifecycle.core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Plugin } from "../pluginTypes/plugin.type.js";
|
|
2
|
+
import type { PluginContext } from "../pluginTypes/pluginContext.type.js";
|
|
3
|
+
import type { PluginDiagnosticReport } from "../pluginDiagnostics/pluginDiagnostic.core.js";
|
|
4
|
+
/**
|
|
5
|
+
* Plugin manager coordinates registration, dependency resolution, lifecycle, and disposal.
|
|
6
|
+
*/
|
|
7
|
+
export declare class PluginManager {
|
|
8
|
+
private readonly registry;
|
|
9
|
+
private readonly resolver;
|
|
10
|
+
private readonly lifecycle;
|
|
11
|
+
private readonly plugins;
|
|
12
|
+
constructor();
|
|
13
|
+
register<TPlugin extends Plugin>(plugin: TPlugin): void;
|
|
14
|
+
get<TPlugin extends Plugin>(name: string): TPlugin | undefined;
|
|
15
|
+
has(name: string): boolean;
|
|
16
|
+
list(): readonly Plugin[];
|
|
17
|
+
start(context: PluginContext): Promise<void>;
|
|
18
|
+
stop(context: PluginContext): Promise<void>;
|
|
19
|
+
diagnostics(): PluginDiagnosticReport;
|
|
20
|
+
private toDependencyMap;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=pluginManager.core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pluginManager.core.d.ts","sourceRoot":"","sources":["../../src/pluginManager/pluginManager.core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAwB1E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AAE5F;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAE1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAE9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAEhD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAE1D,cAIC;IAEM,QAAQ,CAAC,OAAO,SAAS,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAU7D;IAEM,GAAG,CAAC,OAAO,SAAS,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEpE;IAEM,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhC;IAEM,IAAI,IAAI,SAAS,MAAM,EAAE,CAE/B;IAEY,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAoCxD;IAEY,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBvD;IAEM,WAAW,IAAI,sBAAsB,CAO3C;IAED,OAAO,CAAC,eAAe;CAwBxB"}
|