@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.
Files changed (80) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +57 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/index.d.ts +44 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +38 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/pluginDependencies/dependencyResolver.core.d.ts +28 -0
  9. package/dist/pluginDependencies/dependencyResolver.core.d.ts.map +1 -0
  10. package/dist/pluginDependencies/dependencyResolver.core.js +88 -0
  11. package/dist/pluginDependencies/dependencyResolver.core.js.map +1 -0
  12. package/dist/pluginDependencies/index.d.ts +8 -0
  13. package/dist/pluginDependencies/index.d.ts.map +1 -0
  14. package/dist/pluginDependencies/index.js +7 -0
  15. package/dist/pluginDependencies/index.js.map +1 -0
  16. package/dist/pluginDiagnostics/index.d.ts +8 -0
  17. package/dist/pluginDiagnostics/index.d.ts.map +1 -0
  18. package/dist/pluginDiagnostics/index.js +7 -0
  19. package/dist/pluginDiagnostics/index.js.map +1 -0
  20. package/dist/pluginDiagnostics/pluginDiagnostic.core.d.ts +55 -0
  21. package/dist/pluginDiagnostics/pluginDiagnostic.core.d.ts.map +1 -0
  22. package/dist/pluginDiagnostics/pluginDiagnostic.core.js +47 -0
  23. package/dist/pluginDiagnostics/pluginDiagnostic.core.js.map +1 -0
  24. package/dist/pluginEvents/index.d.ts +8 -0
  25. package/dist/pluginEvents/index.d.ts.map +1 -0
  26. package/dist/pluginEvents/index.js +7 -0
  27. package/dist/pluginEvents/index.js.map +1 -0
  28. package/dist/pluginEvents/pluginEvent.core.d.ts +34 -0
  29. package/dist/pluginEvents/pluginEvent.core.d.ts.map +1 -0
  30. package/dist/pluginEvents/pluginEvent.core.js +30 -0
  31. package/dist/pluginEvents/pluginEvent.core.js.map +1 -0
  32. package/dist/pluginIntegration/index.d.ts +8 -0
  33. package/dist/pluginIntegration/index.d.ts.map +1 -0
  34. package/dist/pluginIntegration/index.js +7 -0
  35. package/dist/pluginIntegration/index.js.map +1 -0
  36. package/dist/pluginIntegration/pluginContext.core.d.ts +20 -0
  37. package/dist/pluginIntegration/pluginContext.core.d.ts.map +1 -0
  38. package/dist/pluginIntegration/pluginContext.core.js +22 -0
  39. package/dist/pluginIntegration/pluginContext.core.js.map +1 -0
  40. package/dist/pluginLifecycle/pluginLifecycle.core.d.ts +15 -0
  41. package/dist/pluginLifecycle/pluginLifecycle.core.d.ts.map +1 -0
  42. package/dist/pluginLifecycle/pluginLifecycle.core.js +128 -0
  43. package/dist/pluginLifecycle/pluginLifecycle.core.js.map +1 -0
  44. package/dist/pluginManager/pluginManager.core.d.ts +22 -0
  45. package/dist/pluginManager/pluginManager.core.d.ts.map +1 -0
  46. package/dist/pluginManager/pluginManager.core.js +110 -0
  47. package/dist/pluginManager/pluginManager.core.js.map +1 -0
  48. package/dist/pluginRegistry/index.d.ts +8 -0
  49. package/dist/pluginRegistry/index.d.ts.map +1 -0
  50. package/dist/pluginRegistry/index.js +7 -0
  51. package/dist/pluginRegistry/index.js.map +1 -0
  52. package/dist/pluginRegistry/pluginRegistry.core.d.ts +41 -0
  53. package/dist/pluginRegistry/pluginRegistry.core.d.ts.map +1 -0
  54. package/dist/pluginRegistry/pluginRegistry.core.js +51 -0
  55. package/dist/pluginRegistry/pluginRegistry.core.js.map +1 -0
  56. package/dist/pluginTypes/index.d.ts +12 -0
  57. package/dist/pluginTypes/index.d.ts.map +1 -0
  58. package/dist/pluginTypes/index.js +7 -0
  59. package/dist/pluginTypes/index.js.map +1 -0
  60. package/dist/pluginTypes/plugin.type.d.ts +17 -0
  61. package/dist/pluginTypes/plugin.type.d.ts.map +1 -0
  62. package/dist/pluginTypes/plugin.type.js +2 -0
  63. package/dist/pluginTypes/plugin.type.js.map +1 -0
  64. package/dist/pluginTypes/pluginContext.type.d.ts +45 -0
  65. package/dist/pluginTypes/pluginContext.type.d.ts.map +1 -0
  66. package/dist/pluginTypes/pluginContext.type.js +2 -0
  67. package/dist/pluginTypes/pluginContext.type.js.map +1 -0
  68. package/dist/pluginTypes/pluginDependency.type.d.ts +9 -0
  69. package/dist/pluginTypes/pluginDependency.type.d.ts.map +1 -0
  70. package/dist/pluginTypes/pluginDependency.type.js +2 -0
  71. package/dist/pluginTypes/pluginDependency.type.js.map +1 -0
  72. package/dist/pluginTypes/pluginMetadata.type.d.ts +13 -0
  73. package/dist/pluginTypes/pluginMetadata.type.d.ts.map +1 -0
  74. package/dist/pluginTypes/pluginMetadata.type.js +2 -0
  75. package/dist/pluginTypes/pluginMetadata.type.js.map +1 -0
  76. package/dist/pluginTypes/pluginState.type.d.ts +13 -0
  77. package/dist/pluginTypes/pluginState.type.d.ts.map +1 -0
  78. package/dist/pluginTypes/pluginState.type.js +24 -0
  79. package/dist/pluginTypes/pluginState.type.js.map +1 -0
  80. package/package.json +52 -0
@@ -0,0 +1,110 @@
1
+ import { PluginRegistryImpl } from "../pluginRegistry/pluginRegistry.core.js";
2
+ import { DependencyResolver, assertResolutionValid, } from "../pluginDependencies/dependencyResolver.core.js";
3
+ import { LifecycleController } from "../pluginLifecycle/pluginLifecycle.core.js";
4
+ import { PluginAlreadyRegisteredError, PluginDependencyCycleError, PluginDependencyError, PluginInitializationError, PluginNotFoundError, PluginRegistrationError, } from "@zudojs/errors";
5
+ import { PLUGIN_EVENTS } from "../pluginEvents/pluginEvent.core.js";
6
+ import { buildDiagnosticReport, createHealthyHealth, createUnhealthyHealth, } from "../pluginDiagnostics/pluginDiagnostic.core.js";
7
+ /**
8
+ * Plugin manager coordinates registration, dependency resolution, lifecycle, and disposal.
9
+ */
10
+ export class PluginManager {
11
+ registry;
12
+ resolver;
13
+ lifecycle;
14
+ plugins = new Map();
15
+ constructor() {
16
+ this.registry = new PluginRegistryImpl();
17
+ this.resolver = new DependencyResolver();
18
+ this.lifecycle = new LifecycleController();
19
+ }
20
+ register(plugin) {
21
+ try {
22
+ this.registry.register(plugin);
23
+ this.plugins.set(plugin.metadata.name, plugin);
24
+ }
25
+ catch (error) {
26
+ throw new PluginRegistrationError(error.message, plugin.metadata.name);
27
+ }
28
+ }
29
+ get(name) {
30
+ return this.registry.get(name)?.plugin;
31
+ }
32
+ has(name) {
33
+ return this.registry.has(name);
34
+ }
35
+ list() {
36
+ return this.registry.list().map((r) => r.plugin);
37
+ }
38
+ async start(context) {
39
+ const resolution = this.resolver.resolve(this.toDependencyMap());
40
+ assertResolutionValid(resolution);
41
+ const ordered = resolution.ordered;
42
+ for (const name of ordered) {
43
+ const registered = this.registry.get(name);
44
+ if (!registered || registered.state === "disposed") {
45
+ continue;
46
+ }
47
+ await this.lifecycle.install(registered, context);
48
+ }
49
+ for (const name of ordered) {
50
+ const registered = this.registry.get(name);
51
+ if (!registered || registered.state === "disposed") {
52
+ continue;
53
+ }
54
+ if (registered.state === "installed") {
55
+ await this.lifecycle.initialize(registered, context);
56
+ }
57
+ }
58
+ for (const name of ordered) {
59
+ const registered = this.registry.get(name);
60
+ if (!registered || registered.state === "disposed") {
61
+ continue;
62
+ }
63
+ if (registered.state === "initialized") {
64
+ await this.lifecycle.start(registered, context);
65
+ }
66
+ }
67
+ }
68
+ async stop(context) {
69
+ const plugins = this.registry.list();
70
+ const reversed = [...plugins].reverse();
71
+ for (const registered of reversed) {
72
+ if (registered.state === "started") {
73
+ try {
74
+ await this.lifecycle.stop(registered, context);
75
+ }
76
+ catch {
77
+ continue;
78
+ }
79
+ }
80
+ }
81
+ for (const registered of reversed) {
82
+ if (registered.state === "stopped" || registered.state === "failed") {
83
+ try {
84
+ await this.lifecycle.dispose(registered, context);
85
+ }
86
+ catch {
87
+ continue;
88
+ }
89
+ }
90
+ }
91
+ }
92
+ diagnostics() {
93
+ const plugins = this.registry.list().map((registered) => ({
94
+ plugin: registered.plugin,
95
+ state: registered.state,
96
+ }));
97
+ return buildDiagnosticReport(plugins);
98
+ }
99
+ toDependencyMap() {
100
+ const map = new Map();
101
+ for (const [name, plugin] of this.plugins) {
102
+ map.set(name, {
103
+ dependencies: plugin.dependencies,
104
+ optionalDependencies: plugin.optionalDependencies,
105
+ });
106
+ }
107
+ return map;
108
+ }
109
+ }
110
+ //# sourceMappingURL=pluginManager.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginManager.core.js","sourceRoot":"","sources":["../../src/pluginManager/pluginManager.core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @zudojs/plugins/pluginRegistry
3
+ *
4
+ * Plugin registry for storing and retrieving registered plugins.
5
+ */
6
+ export type { PluginRegistry, RegisteredPlugin, } from "./pluginRegistry.core.js";
7
+ export { PluginRegistryImpl } from "./pluginRegistry.core.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pluginRegistry/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EACV,cAAc,EACd,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @zudojs/plugins/pluginRegistry
3
+ *
4
+ * Plugin registry for storing and retrieving registered plugins.
5
+ */
6
+ export { PluginRegistryImpl } from "./pluginRegistry.core.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pluginRegistry/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,41 @@
1
+ import type { Plugin } from "../pluginTypes/plugin.type.js";
2
+ import type { PluginState } from "../pluginTypes/pluginState.type.js";
3
+ /**
4
+ * Internal representation of a registered plugin.
5
+ */
6
+ export interface RegisteredPlugin<TPlugin extends Plugin = Plugin> {
7
+ readonly plugin: TPlugin;
8
+ state: PluginState;
9
+ readonly options?: unknown;
10
+ readonly disposables: Array<{
11
+ dispose(): void | Promise<void>;
12
+ }>;
13
+ registerDisposable(disposable: {
14
+ dispose(): void | Promise<void>;
15
+ }): void;
16
+ setState(state: PluginState): void;
17
+ }
18
+ /**
19
+ * Plugin registry interface.
20
+ */
21
+ export interface PluginRegistry {
22
+ register<TPlugin extends Plugin>(plugin: TPlugin, options?: TPlugin extends Plugin<infer TOptions> ? TOptions : unknown): void;
23
+ get<TPlugin extends Plugin>(name: string): RegisteredPlugin<TPlugin> | undefined;
24
+ has(name: string): boolean;
25
+ list(): readonly RegisteredPlugin[];
26
+ remove(name: string): boolean;
27
+ clear(): void;
28
+ }
29
+ /**
30
+ * Default plugin registry implementation.
31
+ */
32
+ export declare class PluginRegistryImpl implements PluginRegistry {
33
+ private readonly plugins;
34
+ register<TPlugin extends Plugin>(plugin: TPlugin, options?: TPlugin extends Plugin<infer TOptions> ? TOptions : unknown): void;
35
+ get<TPlugin extends Plugin>(name: string): RegisteredPlugin<TPlugin> | undefined;
36
+ has(name: string): boolean;
37
+ list(): readonly RegisteredPlugin[];
38
+ remove(name: string): boolean;
39
+ clear(): void;
40
+ }
41
+ //# sourceMappingURL=pluginRegistry.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginRegistry.core.d.ts","sourceRoot":"","sources":["../../src/pluginRegistry/pluginRegistry.core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAG5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAOtE;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM;IAC/D,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEzB,KAAK,EAAE,WAAW,CAAC;IAEnB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAE3B,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC;QAAE,OAAO,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC,CAAC;IAEjE,kBAAkB,CAAC,UAAU,EAAE;QAAE,OAAO,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC;IAE1E,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,SAAS,MAAM,EAC7B,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,OAAO,SAAS,MAAM,CAAC,MAAM,QAAQ,CAAC,GAAG,QAAQ,GAAG,OAAO,GACpE,IAAI,CAAC;IAER,GAAG,CAAC,OAAO,SAAS,MAAM,EACxB,IAAI,EAAE,MAAM,GACX,gBAAgB,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAEzC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAE3B,IAAI,IAAI,SAAS,gBAAgB,EAAE,CAAC;IAEpC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAE9B,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;GAEG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4C;IAE7D,QAAQ,CAAC,OAAO,SAAS,MAAM,EACpC,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,OAAO,SAAS,MAAM,CAAC,MAAM,QAAQ,CAAC,GAAG,QAAQ,GAAG,OAAO,GACpE,IAAI,CAuBN;IAEM,GAAG,CAAC,OAAO,SAAS,MAAM,EAC/B,IAAI,EAAE,MAAM,GACX,gBAAgB,CAAC,OAAO,CAAC,GAAG,SAAS,CAEvC;IAEM,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhC;IAEM,IAAI,IAAI,SAAS,gBAAgB,EAAE,CAEzC;IAEM,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAYnC;IAEM,KAAK,IAAI,IAAI,CAEnB;CACF"}
@@ -0,0 +1,51 @@
1
+ import { PluginAlreadyRegisteredError, PluginNotFoundError, PluginStateError, } from "@zudojs/errors";
2
+ /**
3
+ * Default plugin registry implementation.
4
+ */
5
+ export class PluginRegistryImpl {
6
+ plugins = new Map();
7
+ register(plugin, options) {
8
+ const name = plugin.metadata.name;
9
+ if (this.plugins.has(name)) {
10
+ throw new PluginAlreadyRegisteredError(name);
11
+ }
12
+ const disposables = [];
13
+ const registered = {
14
+ plugin,
15
+ state: "registered",
16
+ options,
17
+ disposables,
18
+ registerDisposable(disposable) {
19
+ disposables.push(disposable);
20
+ },
21
+ setState(state) {
22
+ registered.state = state;
23
+ },
24
+ };
25
+ this.plugins.set(name, registered);
26
+ }
27
+ get(name) {
28
+ return this.plugins.get(name);
29
+ }
30
+ has(name) {
31
+ return this.plugins.has(name);
32
+ }
33
+ list() {
34
+ return Object.freeze(Array.from(this.plugins.values()));
35
+ }
36
+ remove(name) {
37
+ const plugin = this.plugins.get(name);
38
+ if (!plugin) {
39
+ return false;
40
+ }
41
+ if (plugin.state !== "registered" && plugin.state !== "disposed") {
42
+ throw new PluginStateError(name, plugin.state, "disposed");
43
+ }
44
+ this.plugins.delete(name);
45
+ return true;
46
+ }
47
+ clear() {
48
+ this.plugins.clear();
49
+ }
50
+ }
51
+ //# sourceMappingURL=pluginRegistry.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginRegistry.core.js","sourceRoot":"","sources":["../../src/pluginRegistry/pluginRegistry.core.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAyCxB;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACZ,OAAO,GAAkC,IAAI,GAAG,EAAE,CAAC;IAE7D,QAAQ,CACb,MAAe,EACf,OAAqE;QAErE,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAElC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,WAAW,GAA+C,EAAE,CAAC;QAEnE,MAAM,UAAU,GAA8B;YAC5C,MAAM;YACN,KAAK,EAAE,YAAY;YACnB,OAAO;YACP,WAAW;YACX,kBAAkB,CAAC,UAAU;gBAC3B,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,CAAC;YACD,QAAQ,CAAC,KAAK;gBACZ,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;YAC3B,CAAC;SACF,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC;IAEM,GAAG,CACR,IAAY;QAEZ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAA0C,CAAC;IACzE,CAAC;IAEM,GAAG,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAEM,IAAI;QACT,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEM,MAAM,CAAC,IAAY;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,KAAK,YAAY,IAAI,MAAM,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACjE,MAAM,IAAI,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @zudojs/plugins/pluginTypes
3
+ *
4
+ * Core types for the Zudojs plugin system.
5
+ */
6
+ export type { PluginState } from "./pluginState.type.js";
7
+ export type { PluginMetadata } from "./pluginMetadata.type.js";
8
+ export type { PluginDependency } from "./pluginDependency.type.js";
9
+ export type { PluginContext, PluginContainer, PluginConfig, PluginLogger, PluginEvents, } from "./pluginContext.type.js";
10
+ export type { Plugin } from "./plugin.type.js";
11
+ export type { PluginErrorOptions } from "@zudojs/errors";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pluginTypes/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EACV,aAAa,EACb,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,YAAY,GACb,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @zudojs/plugins/pluginTypes
3
+ *
4
+ * Core types for the Zudojs plugin system.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pluginTypes/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,17 @@
1
+ import type { PluginMetadata } from "./pluginMetadata.type.js";
2
+ import type { PluginDependency } from "./pluginDependency.type.js";
3
+ import type { PluginContext } from "./pluginContext.type.js";
4
+ /**
5
+ * Plugin interface definition.
6
+ */
7
+ export interface Plugin<TOptions = unknown> {
8
+ readonly metadata: PluginMetadata;
9
+ readonly dependencies?: readonly PluginDependency[];
10
+ readonly optionalDependencies?: readonly PluginDependency[];
11
+ install?(context: PluginContext, options: TOptions): void | Promise<void>;
12
+ initialize?(context: PluginContext): void | Promise<void>;
13
+ start?(context: PluginContext): void | Promise<void>;
14
+ stop?(context: PluginContext): void | Promise<void>;
15
+ dispose?(context: PluginContext): void | Promise<void>;
16
+ }
17
+ //# sourceMappingURL=plugin.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.type.d.ts","sourceRoot":"","sources":["../../src/pluginTypes/plugin.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,MAAM,CAAC,QAAQ,GAAG,OAAO;IACxC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAElC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAEpD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAE5D,OAAO,CAAC,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1E,UAAU,CAAC,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1D,KAAK,CAAC,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD,IAAI,CAAC,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpD,OAAO,CAAC,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=plugin.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.type.js","sourceRoot":"","sources":["../../src/pluginTypes/plugin.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
1
+ import type { PluginMetadata } from "./pluginMetadata.type.js";
2
+ /**
3
+ * Minimal container interface for plugin context.
4
+ */
5
+ export interface PluginContainer {
6
+ register(token: unknown, provider: unknown): void;
7
+ }
8
+ /**
9
+ * Minimal config interface for plugin context.
10
+ */
11
+ export interface PluginConfig {
12
+ get(key: string): unknown;
13
+ }
14
+ /**
15
+ * Minimal logger interface for plugin context.
16
+ */
17
+ export interface PluginLogger {
18
+ info(message: string, context?: Record<string, unknown>): void;
19
+ warn(message: string, context?: Record<string, unknown>): void;
20
+ error(message: string, context?: Record<string, unknown>): void;
21
+ }
22
+ /**
23
+ * Minimal events interface for plugin context.
24
+ */
25
+ export interface PluginEvents {
26
+ on(event: string, handler: (event: unknown) => void): void;
27
+ off(event: string, handler: (event: unknown) => void): void;
28
+ emit(event: string, payload: unknown): void;
29
+ }
30
+ /**
31
+ * Controlled context provided to plugins during lifecycle operations.
32
+ */
33
+ export interface PluginContext {
34
+ readonly plugin: PluginMetadata;
35
+ readonly container?: PluginContainer;
36
+ readonly config?: PluginConfig;
37
+ readonly logger?: PluginLogger;
38
+ readonly events?: PluginEvents;
39
+ readonly signal: AbortSignal;
40
+ onDispose(handler: () => void | Promise<void>): void;
41
+ registerDisposable(disposable: {
42
+ dispose(): void | Promise<void>;
43
+ }): void;
44
+ }
45
+ //# sourceMappingURL=pluginContext.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginContext.type.d.ts","sourceRoot":"","sources":["../../src/pluginTypes/pluginContext.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;CACnD;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAE/D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAE/D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACjE;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAE3D,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAE5D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAEhC,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;IAE/B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B,SAAS,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAErD,kBAAkB,CAAC,UAAU,EAAE;QAAE,OAAO,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC;CAC3E"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pluginContext.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginContext.type.js","sourceRoot":"","sources":["../../src/pluginTypes/pluginContext.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Plugin dependency declaration.
3
+ */
4
+ export interface PluginDependency {
5
+ readonly name: string;
6
+ readonly version?: string;
7
+ readonly optional?: boolean;
8
+ }
9
+ //# sourceMappingURL=pluginDependency.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginDependency.type.d.ts","sourceRoot":"","sources":["../../src/pluginTypes/pluginDependency.type.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pluginDependency.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginDependency.type.js","sourceRoot":"","sources":["../../src/pluginTypes/pluginDependency.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Plugin metadata identifying a plugin uniquely.
3
+ */
4
+ export interface PluginMetadata {
5
+ readonly name: string;
6
+ readonly version?: string;
7
+ readonly description?: string;
8
+ readonly author?: string;
9
+ readonly homepage?: string;
10
+ readonly keywords?: readonly string[];
11
+ readonly capabilities?: readonly string[];
12
+ }
13
+ //# sourceMappingURL=pluginMetadata.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginMetadata.type.d.ts","sourceRoot":"","sources":["../../src/pluginTypes/pluginMetadata.type.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEtC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pluginMetadata.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginMetadata.type.js","sourceRoot":"","sources":["../../src/pluginTypes/pluginMetadata.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Plugin lifecycle states.
3
+ */
4
+ export type PluginState = "registered" | "installing" | "installed" | "initializing" | "initialized" | "starting" | "started" | "stopping" | "stopped" | "disposing" | "disposed" | "failed";
5
+ /**
6
+ * Valid state transitions for the plugin state machine.
7
+ */
8
+ export declare const VALID_STATE_TRANSITIONS: Readonly<Record<PluginState, readonly PluginState[]>>;
9
+ /**
10
+ * Determines whether a state transition is valid.
11
+ */
12
+ export declare function isValidTransition(from: PluginState, to: PluginState): boolean;
13
+ //# sourceMappingURL=pluginState.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginState.type.d.ts","sourceRoot":"","sources":["../../src/pluginTypes/pluginState.type.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ,YAAY,GACZ,WAAW,GACX,cAAc,GACd,aAAa,GACb,UAAU,GACV,SAAS,GACT,UAAU,GACV,SAAS,GACT,WAAW,GACX,UAAU,GACV,QAAQ,CAAC;AAEb;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAC5C,MAAM,CAAC,WAAW,EAAE,SAAS,WAAW,EAAE,CAAC,CAcnC,CAAC;AAEX;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,GAAG,OAAO,CAE7E"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Valid state transitions for the plugin state machine.
3
+ */
4
+ export const VALID_STATE_TRANSITIONS = {
5
+ registered: ["installing"],
6
+ installing: ["installed", "failed"],
7
+ installed: ["initializing", "stopping"],
8
+ initializing: ["initialized", "failed"],
9
+ initialized: ["starting", "stopping"],
10
+ starting: ["started", "failed"],
11
+ started: ["stopping"],
12
+ stopping: ["stopped", "failed"],
13
+ stopped: ["disposing", "starting"],
14
+ disposing: ["disposed", "failed"],
15
+ disposed: [],
16
+ failed: ["disposing"],
17
+ };
18
+ /**
19
+ * Determines whether a state transition is valid.
20
+ */
21
+ export function isValidTransition(from, to) {
22
+ return VALID_STATE_TRANSITIONS[from]?.includes(to) ?? false;
23
+ }
24
+ //# sourceMappingURL=pluginState.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginState.type.js","sourceRoot":"","sources":["../../src/pluginTypes/pluginState.type.ts"],"names":[],"mappings":"AAiBA;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAEhC;IACF,UAAU,EAAE,CAAC,YAAY,CAAC;IAC1B,UAAU,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;IACnC,SAAS,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;IACvC,YAAY,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC;IACvC,WAAW,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;IACrC,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC/B,OAAO,EAAE,CAAC,UAAU,CAAC;IACrB,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC/B,OAAO,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC;IAClC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC;IACjC,QAAQ,EAAE,EAAE;IACZ,MAAM,EAAE,CAAC,WAAW,CAAC;CACb,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAiB,EAAE,EAAe;IAClE,OAAO,uBAAuB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC;AAC9D,CAAC"}
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@zudojs/plugins",
3
+ "version": "0.0.1",
4
+ "description": "Plugin system for extending Zudojs applications with modular capabilities.",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "module": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "dependencies": {
20
+ "@zudojs/errors": "0.0.1",
21
+ "@zudojs/constants": "0.0.1",
22
+ "@zudojs/types": "0.0.1"
23
+ },
24
+ "devDependencies": {
25
+ "@types/node": "^26.4.1",
26
+ "typescript": "^7.0.2",
27
+ "vitest": "^4.1.11"
28
+ },
29
+ "engines": {
30
+ "node": ">=24.0.0"
31
+ },
32
+ "publishConfig": {
33
+ "access": "public"
34
+ },
35
+ "keywords": [
36
+ "zudojs",
37
+ "plugins",
38
+ "extensions"
39
+ ],
40
+ "homepage": "https://github.com/oyinlola-tech/zudo#readme",
41
+ "repository": {
42
+ "type": "git",
43
+ "url": "https://github.com/oyinlola-tech/zudo"
44
+ },
45
+ "scripts": {
46
+ "build": "tsc -p tsconfig.json",
47
+ "typecheck": "tsc -p tsconfig.json --noEmit",
48
+ "clean": "rm -rf dist",
49
+ "test": "vitest run",
50
+ "test:watch": "vitest"
51
+ }
52
+ }