bun_plugins 1.2.5 → 1.2.6

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 (177) hide show
  1. package/README.md +3 -127
  2. package/dist/{src/PluginManager.d.ts → PluginManager.d.ts} +9 -20
  3. package/dist/PluginManager.d.ts.map +1 -0
  4. package/dist/{src/PluginManager.js → PluginManager.js} +189 -212
  5. package/dist/PluginManager.js.map +1 -0
  6. package/dist/{src/index.d.ts → index.d.ts} +1 -2
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/{src/index.js → index.js} +0 -2
  9. package/dist/index.js.map +1 -0
  10. package/dist/{src/managers → managers}/ContextFactory.d.ts +1 -1
  11. package/dist/managers/ContextFactory.d.ts.map +1 -0
  12. package/dist/{src/managers → managers}/ContextFactory.js +26 -51
  13. package/dist/managers/ContextFactory.js.map +1 -0
  14. package/dist/managers/DependencyManager.d.ts.map +1 -0
  15. package/dist/{src/managers → managers}/DependencyManager.js +5 -7
  16. package/dist/managers/DependencyManager.js.map +1 -0
  17. package/dist/{src/managers → managers}/HooksManager.d.ts +1 -4
  18. package/dist/managers/HooksManager.d.ts.map +1 -0
  19. package/dist/{src/managers → managers}/HooksManager.js +8 -36
  20. package/dist/managers/HooksManager.js.map +1 -0
  21. package/dist/managers/ResourceManager.d.ts.map +1 -0
  22. package/dist/{src/managers → managers}/ResourceManager.js +3 -3
  23. package/dist/managers/ResourceManager.js.map +1 -0
  24. package/dist/{src/storage → storage}/JsonPluginStorage.d.ts +1 -2
  25. package/dist/storage/JsonPluginStorage.d.ts.map +1 -0
  26. package/dist/storage/JsonPluginStorage.js +63 -0
  27. package/dist/storage/JsonPluginStorage.js.map +1 -0
  28. package/dist/{src/types.d.ts → types.d.ts} +19 -60
  29. package/dist/types.d.ts.map +1 -0
  30. package/dist/{src/types.js → types.js} +0 -6
  31. package/dist/types.js.map +1 -0
  32. package/dist/utils/errorParser.d.ts.map +1 -0
  33. package/dist/{src/utils → utils}/errorParser.js +5 -2
  34. package/dist/utils/errorParser.js.map +1 -0
  35. package/dist/utils/pluginValidator.d.ts +93 -0
  36. package/dist/utils/pluginValidator.d.ts.map +1 -0
  37. package/dist/{src/utils → utils}/pluginValidator.js +14 -11
  38. package/dist/utils/pluginValidator.js.map +1 -0
  39. package/dist/utils/security.d.ts.map +1 -0
  40. package/dist/utils/security.js.map +1 -0
  41. package/dist/worker/WorkerRunner.d.ts.map +1 -0
  42. package/dist/{src/worker → worker}/WorkerRunner.js +13 -38
  43. package/dist/worker/WorkerRunner.js.map +1 -0
  44. package/package.json +6 -9
  45. package/LICENSE +0 -9
  46. package/dist/examples/action-registry-declarative.d.ts +0 -14
  47. package/dist/examples/action-registry-declarative.d.ts.map +0 -1
  48. package/dist/examples/action-registry-declarative.js +0 -130
  49. package/dist/examples/action-registry-declarative.js.map +0 -1
  50. package/dist/examples/action-registry-example.d.ts +0 -31
  51. package/dist/examples/action-registry-example.d.ts.map +0 -1
  52. package/dist/examples/action-registry-example.js +0 -84
  53. package/dist/examples/action-registry-example.js.map +0 -1
  54. package/dist/examples/index-declarative.d.ts +0 -32
  55. package/dist/examples/index-declarative.d.ts.map +0 -1
  56. package/dist/examples/index-declarative.js +0 -206
  57. package/dist/examples/index-declarative.js.map +0 -1
  58. package/dist/examples/logger-declarative.d.ts +0 -109
  59. package/dist/examples/logger-declarative.d.ts.map +0 -1
  60. package/dist/examples/logger-declarative.js +0 -330
  61. package/dist/examples/logger-declarative.js.map +0 -1
  62. package/dist/examples/logger-simple.d.ts +0 -8
  63. package/dist/examples/logger-simple.d.ts.map +0 -1
  64. package/dist/examples/logger-simple.js +0 -165
  65. package/dist/examples/logger-simple.js.map +0 -1
  66. package/dist/examples/server-declarative.d.ts +0 -46
  67. package/dist/examples/server-declarative.d.ts.map +0 -1
  68. package/dist/examples/server-declarative.js +0 -205
  69. package/dist/examples/server-declarative.js.map +0 -1
  70. package/dist/examples/shared/action-registry.d.ts +0 -45
  71. package/dist/examples/shared/action-registry.d.ts.map +0 -1
  72. package/dist/examples/shared/action-registry.js +0 -65
  73. package/dist/examples/shared/action-registry.js.map +0 -1
  74. package/dist/examples/shared/plugin-builder.d.ts +0 -41
  75. package/dist/examples/shared/plugin-builder.d.ts.map +0 -1
  76. package/dist/examples/shared/plugin-builder.js +0 -85
  77. package/dist/examples/shared/plugin-builder.js.map +0 -1
  78. package/dist/examples/storage-declarative.d.ts +0 -13
  79. package/dist/examples/storage-declarative.d.ts.map +0 -1
  80. package/dist/examples/storage-declarative.js +0 -203
  81. package/dist/examples/storage-declarative.js.map +0 -1
  82. package/dist/plugins/ActionRegistryPlugin.d.ts +0 -14
  83. package/dist/plugins/ActionRegistryPlugin.d.ts.map +0 -1
  84. package/dist/plugins/ActionRegistryPlugin.js +0 -52
  85. package/dist/plugins/ActionRegistryPlugin.js.map +0 -1
  86. package/dist/plugins/DynamicJSActionsPlugin.d.ts +0 -21
  87. package/dist/plugins/DynamicJSActionsPlugin.d.ts.map +0 -1
  88. package/dist/plugins/DynamicJSActionsPlugin.js +0 -57
  89. package/dist/plugins/DynamicJSActionsPlugin.js.map +0 -1
  90. package/dist/plugins/DynamicMathActionsPlugin.d.ts +0 -22
  91. package/dist/plugins/DynamicMathActionsPlugin.d.ts.map +0 -1
  92. package/dist/plugins/DynamicMathActionsPlugin.js +0 -64
  93. package/dist/plugins/DynamicMathActionsPlugin.js.map +0 -1
  94. package/dist/plugins/DynamicTextActionsPlugin.d.ts +0 -22
  95. package/dist/plugins/DynamicTextActionsPlugin.d.ts.map +0 -1
  96. package/dist/plugins/DynamicTextActionsPlugin.js +0 -58
  97. package/dist/plugins/DynamicTextActionsPlugin.js.map +0 -1
  98. package/dist/plugins/DynamicUtilityActionsPlugin.d.ts +0 -22
  99. package/dist/plugins/DynamicUtilityActionsPlugin.d.ts.map +0 -1
  100. package/dist/plugins/DynamicUtilityActionsPlugin.js +0 -75
  101. package/dist/plugins/DynamicUtilityActionsPlugin.js.map +0 -1
  102. package/dist/plugins/ExamplePlugin.d.ts +0 -3
  103. package/dist/plugins/ExamplePlugin.d.ts.map +0 -1
  104. package/dist/plugins/ExamplePlugin.js +0 -24
  105. package/dist/plugins/ExamplePlugin.js.map +0 -1
  106. package/dist/plugins/LifecycleDemoPlugin.d.ts +0 -20
  107. package/dist/plugins/LifecycleDemoPlugin.d.ts.map +0 -1
  108. package/dist/plugins/LifecycleDemoPlugin.js +0 -34
  109. package/dist/plugins/LifecycleDemoPlugin.js.map +0 -1
  110. package/dist/plugins/MathPlugin.d.ts +0 -16
  111. package/dist/plugins/MathPlugin.d.ts.map +0 -1
  112. package/dist/plugins/MathPlugin.js +0 -30
  113. package/dist/plugins/MathPlugin.js.map +0 -1
  114. package/dist/plugins/MyJSPlugin.d.ts +0 -7
  115. package/dist/plugins/MyJSPlugin.d.ts.map +0 -1
  116. package/dist/plugins/MyJSPlugin.js +0 -12
  117. package/dist/plugins/MyJSPlugin.js.map +0 -1
  118. package/dist/plugins/TypedExamplePlugin.d.ts +0 -10
  119. package/dist/plugins/TypedExamplePlugin.d.ts.map +0 -1
  120. package/dist/plugins/TypedExamplePlugin.js +0 -61
  121. package/dist/plugins/TypedExamplePlugin.js.map +0 -1
  122. package/dist/plugins/arktype/index.d.ts +0 -8
  123. package/dist/plugins/arktype/index.d.ts.map +0 -1
  124. package/dist/plugins/arktype/index.js +0 -25
  125. package/dist/plugins/arktype/index.js.map +0 -1
  126. package/dist/src/Plugin.d.ts +0 -28
  127. package/dist/src/Plugin.d.ts.map +0 -1
  128. package/dist/src/Plugin.js +0 -36
  129. package/dist/src/Plugin.js.map +0 -1
  130. package/dist/src/PluginManager.d.ts.map +0 -1
  131. package/dist/src/PluginManager.js.map +0 -1
  132. package/dist/src/index.d.ts.map +0 -1
  133. package/dist/src/index.js.map +0 -1
  134. package/dist/src/logger/LoggerAdapter.d.ts +0 -77
  135. package/dist/src/logger/LoggerAdapter.d.ts.map +0 -1
  136. package/dist/src/logger/LoggerAdapter.js +0 -242
  137. package/dist/src/logger/LoggerAdapter.js.map +0 -1
  138. package/dist/src/logger/LoggerFactory.d.ts +0 -73
  139. package/dist/src/logger/LoggerFactory.d.ts.map +0 -1
  140. package/dist/src/logger/LoggerFactory.js +0 -99
  141. package/dist/src/logger/LoggerFactory.js.map +0 -1
  142. package/dist/src/logger/index.d.ts +0 -3
  143. package/dist/src/logger/index.d.ts.map +0 -1
  144. package/dist/src/logger/index.js +0 -3
  145. package/dist/src/logger/index.js.map +0 -1
  146. package/dist/src/managers/ContextFactory.d.ts.map +0 -1
  147. package/dist/src/managers/ContextFactory.js.map +0 -1
  148. package/dist/src/managers/DependencyManager.d.ts.map +0 -1
  149. package/dist/src/managers/DependencyManager.js.map +0 -1
  150. package/dist/src/managers/HooksManager.d.ts.map +0 -1
  151. package/dist/src/managers/HooksManager.js.map +0 -1
  152. package/dist/src/managers/ResourceManager.d.ts.map +0 -1
  153. package/dist/src/managers/ResourceManager.js.map +0 -1
  154. package/dist/src/storage/JsonPluginStorage.d.ts.map +0 -1
  155. package/dist/src/storage/JsonPluginStorage.js +0 -75
  156. package/dist/src/storage/JsonPluginStorage.js.map +0 -1
  157. package/dist/src/types/plugin-registry-base.d.ts +0 -80
  158. package/dist/src/types/plugin-registry-base.d.ts.map +0 -1
  159. package/dist/src/types/plugin-registry-base.js +0 -6
  160. package/dist/src/types/plugin-registry-base.js.map +0 -1
  161. package/dist/src/types.d.ts.map +0 -1
  162. package/dist/src/types.js.map +0 -1
  163. package/dist/src/utils/errorParser.d.ts.map +0 -1
  164. package/dist/src/utils/errorParser.js.map +0 -1
  165. package/dist/src/utils/pluginValidator.d.ts +0 -17
  166. package/dist/src/utils/pluginValidator.d.ts.map +0 -1
  167. package/dist/src/utils/pluginValidator.js.map +0 -1
  168. package/dist/src/utils/security.d.ts.map +0 -1
  169. package/dist/src/utils/security.js.map +0 -1
  170. package/dist/src/worker/WorkerRunner.d.ts.map +0 -1
  171. package/dist/src/worker/WorkerRunner.js.map +0 -1
  172. /package/dist/{src/managers → managers}/DependencyManager.d.ts +0 -0
  173. /package/dist/{src/managers → managers}/ResourceManager.d.ts +0 -0
  174. /package/dist/{src/utils → utils}/errorParser.d.ts +0 -0
  175. /package/dist/{src/utils → utils}/security.d.ts +0 -0
  176. /package/dist/{src/utils → utils}/security.js +0 -0
  177. /package/dist/{src/worker → worker}/WorkerRunner.d.ts +0 -0
package/README.md CHANGED
@@ -163,7 +163,7 @@ Plugins can share APIs with each other safely:
163
163
  // Plugin A: Exposes an API
164
164
  export class ProviderPlugin implements IPlugin {
165
165
  name = "db-provider";
166
- getApi() {
166
+ getSharedApi() {
167
167
  return {
168
168
  query: (q: string) => `Result for ${q}`,
169
169
  };
@@ -174,7 +174,7 @@ export class ProviderPlugin implements IPlugin {
174
174
  export class ConsumerPlugin implements IPlugin {
175
175
  name = "app-logic";
176
176
  async onLoad(context: PluginContext) {
177
- const db = await context.getPlugin("db-provider");
177
+ const db = context.getPlugin("db-provider");
178
178
  const result = db.query("SELECT *");
179
179
  }
180
180
  }
@@ -182,130 +182,6 @@ export class ConsumerPlugin implements IPlugin {
182
182
 
183
183
  ---
184
184
 
185
- ## 🎯 Type Safety & Autocompletion
186
-
187
- The plugin system provides **full type safety and autocompletion** for inter-plugin communication using declaration merging.
188
-
189
- ### 📚 Complete Guide
190
-
191
- For detailed documentation on the type system, see [`docs/types-guide.md`](docs/types-guide.md).
192
-
193
- ### 🚀 Quick Start
194
-
195
- #### Step 1: Create a types file
196
-
197
- Create a `.d.ts` file in your project (e.g., `plugins/types.d.ts`):
198
-
199
- ```typescript
200
- import type { BasePluginApi } from "bun_plugins/src/types/plugin-registry-base";
201
-
202
- // Define the API interface for your plugin
203
- export interface MathPluginApi extends BasePluginApi {
204
- add(a: number, b: number): number;
205
- multiply(a: number, b: number): number;
206
- }
207
-
208
- // Extend the PluginFactory with your plugin
209
- declare module "bun_plugins" {
210
- export interface PluginFactory {
211
- "math-plugin": {
212
- name: "math-plugin";
213
- version: "1.0.0";
214
- class: any;
215
- api: MathPluginApi;
216
- };
217
- }
218
- }
219
- ```
220
-
221
- #### Step 2: Register the API in your plugin
222
-
223
- ```typescript
224
- import { Plugin, PluginContext } from "bun_plugins";
225
-
226
- export class MathPlugin extends Plugin {
227
- name = "math-plugin";
228
- version = "1.0.0";
229
-
230
- override onLoad(context: PluginContext) {
231
- // Register the API for other plugins to use
232
- context.registerApi({
233
- add: this.add.bind(this),
234
- multiply: this.multiply.bind(this)
235
- });
236
- }
237
-
238
- add(a: number, b: number): number {
239
- return a + b;
240
- }
241
-
242
- multiply(a: number, b: number): number {
243
- return a * b;
244
- }
245
- }
246
- ```
247
-
248
- #### Step 3: Use with full autocompletion
249
-
250
- ```typescript
251
- import { definePlugin } from "bun_plugins";
252
-
253
- export default definePlugin({
254
- name: "my-app",
255
- version: "1.0.0",
256
-
257
- async onLoad(context) {
258
- // ✅ Full autocompletion and type safety!
259
- const mathPlugin = await context.getPlugin('math-plugin');
260
-
261
- if (mathPlugin) {
262
- const result = mathPlugin.add(1, 2); // ✅ Autocompletion works
263
- context.log.info(`Result: ${result}`);
264
-
265
- // TypeScript will show errors for non-existent methods
266
- // mathPlugin.nonExistentMethod(); // ❌ Error!
267
- }
268
- }
269
- });
270
- ```
271
-
272
- ### ✨ Benefits
273
-
274
- - 🎯 **Full Autocompletion**: Your IDE shows all available methods
275
- - 🔒 **Type Safety**: TypeScript catches errors at compile time
276
- - 📖 **Self-Documenting**: Interfaces serve as API documentation
277
- - 🔄 **Refactor-Friendly**: Safe method renaming and refactoring
278
- - 🌐 **Works with External Plugins**: Extend types for npm packages too
279
-
280
- ### 📖 Examples
281
-
282
- - [`plugins/types.d.ts`](plugins/types.d.ts) - Complete example for this project
283
- - [`plugins/TypedExamplePlugin.ts`](plugins/TypedExamplePlugin.ts) - Plugin using typed access
284
- - [`examples/types-extension-example.d.ts`](examples/types-extension-example.d.ts) - Standalone example
285
-
286
- ### 🔧 TypeScript Configuration
287
-
288
- Ensure your `tsconfig.json` includes the types file:
289
-
290
- ```json
291
- {
292
- "include": [
293
- "src/**/*",
294
- "plugins/**/*",
295
- "**/*.d.ts"
296
- ]
297
- }
298
- ```
299
-
300
- ### 💡 Tips
301
-
302
- 1. **Match names exactly**: The plugin name in `PluginFactory` must match `plugin.name`
303
- 2. **Register APIs**: Always use `context.registerApi()` to expose your plugin's API
304
- 3. **Extend BasePluginApi**: Your API interfaces should extend `BasePluginApi` for consistency
305
- 4. **External plugins**: You can extend types for third-party plugins the same way
306
-
307
- ---
308
-
309
- ## License
185
+ ## 📜 License
310
186
 
311
187
  MIT © [memelser](https://github.com/nglmercer)
@@ -1,11 +1,10 @@
1
1
  import { EventEmitter } from "node:events";
2
- import { type IPlugin, type AppEvents, type BunWorkerOptions as WorkerOptions, type OnResolveArgs, type OnLoadArgs, type IPluginManager } from "./types";
2
+ import { type IPlugin, type AppEvents, type BunWorkerOptions as WorkerOptions, type OnResolveArgs, type OnLoadArgs } from "./types";
3
3
  import { HooksManager } from "./managers/HooksManager";
4
- export declare class PluginManager extends EventEmitter implements IPluginManager {
4
+ export declare class PluginManager extends EventEmitter {
5
5
  private plugins;
6
6
  private availablePlugins;
7
- private configs;
8
- private pluginApis;
7
+ private pluginFiles;
9
8
  private resources;
10
9
  private dependencyManager;
11
10
  hooksManager: HooksManager;
@@ -14,6 +13,8 @@ export declare class PluginManager extends EventEmitter implements IPluginManage
14
13
  private pluginLoadTimeout;
15
14
  private workerFactory;
16
15
  private workerRunnerPath;
16
+ private hotReloadWatcher;
17
+ private hotReloadTimer;
17
18
  constructor(storageRoot?: string, options?: {
18
19
  pluginLoadTimeout?: number;
19
20
  workerFactory?: (url: string | URL, options?: WorkerOptions) => Worker;
@@ -24,20 +25,11 @@ export declare class PluginManager extends EventEmitter implements IPluginManage
24
25
  registerIsolated(pluginPath: string, pluginName: string): Promise<void>;
25
26
  unregister(pluginName: string): Promise<void>;
26
27
  getPlugin(name: string): IPlugin | undefined;
27
- getApi<T = any>(name: string): T | undefined;
28
- getPluginConfig(name: string): Record<string, any>;
29
28
  listPlugins(): string[];
30
- registerApi(pluginName: string, api: any): void;
31
- getPluginApi(pluginName: string): any | undefined;
32
- private unregisterApi;
33
29
  emit<K extends keyof AppEvents>(eventName: K, payload: AppEvents[K]): boolean;
34
30
  emit(eventName: string | symbol, ...args: any[]): boolean;
35
- on<K extends keyof AppEvents>(eventName: K & string, listener: (payload: AppEvents[K]) => void): this;
31
+ on<K extends keyof AppEvents>(eventName: K, listener: (payload: AppEvents[K]) => void): this;
36
32
  on(eventName: string | symbol, listener: (...args: any[]) => void): this;
37
- once<K extends keyof AppEvents>(eventName: K & string, listener: (payload: AppEvents[K]) => void): this;
38
- once(eventName: string | symbol, listener: (...args: any[]) => void): this;
39
- off<K extends keyof AppEvents>(eventName: K & string, listener: (payload: AppEvents[K]) => void): this;
40
- off(eventName: string | symbol, listener: (...args: any[]) => void): this;
41
33
  loadPluginsFromDirectory(directoryPath?: string): Promise<void>;
42
34
  disablePlugin(name: string): Promise<void>;
43
35
  enablePlugin(name: string): Promise<void>;
@@ -51,12 +43,11 @@ export declare class PluginManager extends EventEmitter implements IPluginManage
51
43
  contents?: string;
52
44
  loader?: string;
53
45
  } | null>;
54
- use(plugin: IPlugin): Promise<void>;
55
- plugin(plugin: IPlugin): Promise<void>;
56
- remove(pluginName: string): Promise<void>;
57
46
  toBunPlugin(): Bun.BunPlugin;
58
- private hotReloadTimer;
59
47
  enableHotReload(pluginDir: string): void;
48
+ private scanAndTrackPlugins;
49
+ private handleFileChange;
50
+ disableHotReload(): void;
60
51
  getMetrics(): {
61
52
  totalPlugins: number;
62
53
  activePlugins: string[];
@@ -67,12 +58,10 @@ export declare class PluginManager extends EventEmitter implements IPluginManage
67
58
  pluginCount: number;
68
59
  };
69
60
  hooks: {
70
- onStart: number;
71
61
  onResolve: number;
72
62
  onLoad: number;
73
63
  };
74
64
  };
75
65
  getPluginStatus(): Record<string, any>;
76
- private ensureDependenciesInstalled;
77
66
  }
78
67
  //# sourceMappingURL=PluginManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluginManager.d.ts","sourceRoot":"","sources":["../src/PluginManager.ts"],"names":[],"mappings":"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"}