bun_plugins 1.2.4 → 1.2.5

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 (94) hide show
  1. package/README.md +125 -1
  2. package/dist/examples/action-registry-declarative.d.ts +14 -0
  3. package/dist/examples/action-registry-declarative.d.ts.map +1 -0
  4. package/dist/examples/action-registry-declarative.js +130 -0
  5. package/dist/examples/action-registry-declarative.js.map +1 -0
  6. package/dist/examples/action-registry-example.d.ts +31 -0
  7. package/dist/examples/action-registry-example.d.ts.map +1 -0
  8. package/dist/examples/action-registry-example.js +84 -0
  9. package/dist/examples/action-registry-example.js.map +1 -0
  10. package/dist/examples/index-declarative.d.ts +32 -0
  11. package/dist/examples/index-declarative.d.ts.map +1 -0
  12. package/dist/examples/index-declarative.js +206 -0
  13. package/dist/examples/index-declarative.js.map +1 -0
  14. package/dist/examples/logger-declarative.d.ts +109 -0
  15. package/dist/examples/logger-declarative.d.ts.map +1 -0
  16. package/dist/examples/logger-declarative.js +330 -0
  17. package/dist/examples/logger-declarative.js.map +1 -0
  18. package/dist/examples/logger-simple.d.ts +8 -0
  19. package/dist/examples/logger-simple.d.ts.map +1 -0
  20. package/dist/examples/logger-simple.js +165 -0
  21. package/dist/examples/logger-simple.js.map +1 -0
  22. package/dist/examples/server-declarative.d.ts +46 -0
  23. package/dist/examples/server-declarative.d.ts.map +1 -0
  24. package/dist/examples/server-declarative.js +205 -0
  25. package/dist/examples/server-declarative.js.map +1 -0
  26. package/dist/examples/shared/action-registry.d.ts +45 -0
  27. package/dist/examples/shared/action-registry.d.ts.map +1 -0
  28. package/dist/examples/shared/action-registry.js +65 -0
  29. package/dist/examples/shared/action-registry.js.map +1 -0
  30. package/dist/examples/shared/plugin-builder.d.ts +41 -0
  31. package/dist/examples/shared/plugin-builder.d.ts.map +1 -0
  32. package/dist/examples/shared/plugin-builder.js +85 -0
  33. package/dist/examples/shared/plugin-builder.js.map +1 -0
  34. package/dist/examples/storage-declarative.d.ts +13 -0
  35. package/dist/examples/storage-declarative.d.ts.map +1 -0
  36. package/dist/examples/storage-declarative.js +203 -0
  37. package/dist/examples/storage-declarative.js.map +1 -0
  38. package/dist/plugins/ActionRegistryPlugin.d.ts +0 -9
  39. package/dist/plugins/ActionRegistryPlugin.d.ts.map +1 -1
  40. package/dist/plugins/ActionRegistryPlugin.js +6 -10
  41. package/dist/plugins/ActionRegistryPlugin.js.map +1 -1
  42. package/dist/plugins/ExamplePlugin.d.ts +3 -0
  43. package/dist/plugins/ExamplePlugin.d.ts.map +1 -0
  44. package/dist/plugins/ExamplePlugin.js +24 -0
  45. package/dist/plugins/ExamplePlugin.js.map +1 -0
  46. package/dist/plugins/MathPlugin.d.ts.map +1 -1
  47. package/dist/plugins/MathPlugin.js +5 -0
  48. package/dist/plugins/MathPlugin.js.map +1 -1
  49. package/dist/plugins/TypedExamplePlugin.d.ts +10 -0
  50. package/dist/plugins/TypedExamplePlugin.d.ts.map +1 -0
  51. package/dist/plugins/TypedExamplePlugin.js +61 -0
  52. package/dist/plugins/TypedExamplePlugin.js.map +1 -0
  53. package/dist/src/PluginManager.d.ts +4 -0
  54. package/dist/src/PluginManager.d.ts.map +1 -1
  55. package/dist/src/PluginManager.js +35 -11
  56. package/dist/src/PluginManager.js.map +1 -1
  57. package/dist/src/managers/ContextFactory.d.ts.map +1 -1
  58. package/dist/src/managers/ContextFactory.js +17 -15
  59. package/dist/src/managers/ContextFactory.js.map +1 -1
  60. package/dist/src/types/plugin-registry-base.d.ts +6 -4
  61. package/dist/src/types/plugin-registry-base.d.ts.map +1 -1
  62. package/dist/src/types/plugin-registry-base.js +1 -1
  63. package/dist/src/types.d.ts +7 -7
  64. package/dist/src/types.d.ts.map +1 -1
  65. package/dist/src/types.js +1 -2
  66. package/dist/src/types.js.map +1 -1
  67. package/dist/src/utils/pluginValidator.d.ts.map +1 -1
  68. package/dist/src/utils/pluginValidator.js +0 -1
  69. package/dist/src/utils/pluginValidator.js.map +1 -1
  70. package/dist/src/worker/WorkerRunner.js +5 -0
  71. package/dist/src/worker/WorkerRunner.js.map +1 -1
  72. package/package.json +2 -10
  73. package/dist/src/types/arktype_converter.d.ts +0 -19
  74. package/dist/src/types/arktype_converter.d.ts.map +0 -1
  75. package/dist/src/types/arktype_converter.js +0 -73
  76. package/dist/src/types/arktype_converter.js.map +0 -1
  77. package/dist/src/types/generator.d.ts +0 -9
  78. package/dist/src/types/generator.d.ts.map +0 -1
  79. package/dist/src/types/generator.js +0 -9
  80. package/dist/src/types/generator.js.map +0 -1
  81. package/dist/src/types/interfaces.d.ts +0 -55
  82. package/dist/src/types/interfaces.d.ts.map +0 -1
  83. package/dist/src/types/interfaces.js +0 -5
  84. package/dist/src/types/interfaces.js.map +0 -1
  85. package/dist/src/types/plugin-registry.d.ts +0 -2
  86. package/dist/src/types/plugin-registry.d.ts.map +0 -1
  87. package/dist/src/types/plugin-registry.js +0 -4
  88. package/dist/src/types/plugin-registry.js.map +0 -1
  89. package/dist/src/types/plugin_generator.d.ts +0 -62
  90. package/dist/src/types/plugin_generator.d.ts.map +0 -1
  91. package/dist/src/types/plugin_generator.js +0 -700
  92. package/dist/src/types/plugin_generator.js.map +0 -1
  93. package/plugin-types/index.d.ts +0 -20
  94. package/plugin-types/plugin-registry.d.ts +0 -148
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Declarative Storage Example
3
+ *
4
+ * This example demonstrates a clean, declarative approach to building
5
+ * plugins with storage using shared utilities.
6
+ */
7
+ import { PluginManager } from "../src/PluginManager";
8
+ import { createPlugin, runDemo } from "./shared/plugin-builder";
9
+ // Storage operation definitions
10
+ const storageOperations = {
11
+ counter: {
12
+ get: { key: "counter", defaultValue: 0 },
13
+ increment: (current) => ({ key: "counter", value: current + 1 }),
14
+ log: (value) => `Counter: ${value}`
15
+ },
16
+ userData: {
17
+ template: {
18
+ name: "John Doe",
19
+ email: "john@example.com",
20
+ lastLogin: new Date().toISOString()
21
+ },
22
+ save: (data) => ({ key: "userData", value: data }),
23
+ log: (data) => `User: ${data.name} (${data.email})`
24
+ },
25
+ metadata: {
26
+ save: (version) => ({
27
+ key: "metadata",
28
+ value: {
29
+ version,
30
+ createdAt: new Date().toISOString(),
31
+ plugin: "declarative-storage"
32
+ }
33
+ }),
34
+ log: (meta) => `Metadata: v${meta.version} created at ${meta.createdAt}`
35
+ }
36
+ };
37
+ // Declarative counter plugin
38
+ const createCounterPlugin = () => createPlugin({
39
+ name: "declarative-counter",
40
+ version: "1.0.0",
41
+ description: "Counter plugin using declarative storage operations",
42
+ defaultConfig: { startValue: 0 },
43
+ onLoad: async (context) => {
44
+ const { storage, config, log } = context;
45
+ // Get current counter
46
+ const counter = await storage.get(storageOperations.counter.get.key, config.startValue) ?? config.startValue;
47
+ log.info(storageOperations.counter.log(counter));
48
+ // Increment and save
49
+ const { key, value } = storageOperations.counter.increment(counter);
50
+ await storage.set(key, value);
51
+ log.info(`Updated ${key} to ${value}`);
52
+ // Save metadata
53
+ const metaOp = storageOperations.metadata.save("1.0.0");
54
+ await storage.set(metaOp.key, metaOp.value);
55
+ log.info(storageOperations.metadata.log(metaOp.value));
56
+ }
57
+ });
58
+ // Declarative user management plugin
59
+ const createUserPlugin = () => createPlugin({
60
+ name: "declarative-user",
61
+ version: "1.0.0",
62
+ description: "User management with declarative storage",
63
+ onLoad: async (context) => {
64
+ const { storage, log } = context;
65
+ // Initialize user data
66
+ const userData = storageOperations.userData.template;
67
+ const saveOp = storageOperations.userData.save(userData);
68
+ await storage.set(saveOp.key, saveOp.value);
69
+ log.info(storageOperations.userData.log(userData));
70
+ // Store session info
71
+ await storage.set("session", {
72
+ sessionId: `sess_${Date.now()}`,
73
+ userId: "user_123",
74
+ createdAt: new Date().toISOString()
75
+ });
76
+ // Complex data structure
77
+ const preferences = {
78
+ theme: "dark",
79
+ language: "en",
80
+ notifications: {
81
+ email: true,
82
+ push: false,
83
+ frequency: "daily"
84
+ }
85
+ };
86
+ await storage.set("preferences", preferences);
87
+ log.info("User preferences saved");
88
+ }
89
+ });
90
+ // Declarative analytics plugin
91
+ const createAnalyticsPlugin = () => createPlugin({
92
+ name: "declarative-analytics",
93
+ version: "1.0.0",
94
+ description: "Analytics tracking with declarative storage",
95
+ onLoad: async (context) => {
96
+ const { storage, log } = context;
97
+ // Initialize analytics data
98
+ const analytics = {
99
+ pageViews: 0,
100
+ userSessions: 0,
101
+ events: [],
102
+ lastActivity: new Date().toISOString()
103
+ };
104
+ await storage.set("analytics", analytics);
105
+ log.info("Analytics initialized");
106
+ // Simulate some activity
107
+ analytics.pageViews += 1;
108
+ analytics.userSessions += 1;
109
+ analytics.events.push({
110
+ type: "page_view",
111
+ timestamp: new Date().toISOString(),
112
+ data: { page: "/home" }
113
+ });
114
+ await storage.set("analytics", analytics);
115
+ log.info("Analytics updated");
116
+ // Store configuration
117
+ await storage.set("config", {
118
+ trackingEnabled: true,
119
+ sampleRate: 1.0,
120
+ excludedPaths: ["/admin", "/health"]
121
+ });
122
+ }
123
+ });
124
+ // Declarative CRUD operations plugin
125
+ const createCrudPlugin = () => createPlugin({
126
+ name: "declarative-crud",
127
+ version: "1.0.0",
128
+ description: "CRUD operations demonstration",
129
+ onLoad: async (context) => {
130
+ const { storage, log } = context;
131
+ // Initialize data
132
+ const todos = [
133
+ { id: 1, text: "Learn declarative plugins", completed: false, createdAt: new Date().toISOString() }
134
+ ];
135
+ await storage.set("todos", todos);
136
+ log.info(`Created ${todos.length} todo items`);
137
+ // CRUD operations
138
+ const operations = {
139
+ create: async (text) => {
140
+ const current = await storage.get("todos", []);
141
+ const newTodo = {
142
+ id: Date.now(),
143
+ text,
144
+ completed: false,
145
+ createdAt: new Date().toISOString()
146
+ };
147
+ current?.push(newTodo);
148
+ await storage.set("todos", current);
149
+ return newTodo;
150
+ },
151
+ read: async () => {
152
+ return await storage.get("todos", []) ?? [];
153
+ },
154
+ update: async (id, updates) => {
155
+ const current = await storage.get("todos", []) ?? [];
156
+ const index = current.findIndex(t => t.id === id);
157
+ if (index !== -1) {
158
+ current[index] = { ...current[index], ...updates };
159
+ await storage.set("todos", current);
160
+ return current[index];
161
+ }
162
+ return null;
163
+ },
164
+ delete: async (id) => {
165
+ const current = await storage.get("todos", []) ?? [];
166
+ const filtered = current.filter(t => t.id !== id);
167
+ await storage.set("todos", filtered);
168
+ return filtered.length < current.length;
169
+ }
170
+ };
171
+ // Demonstrate CRUD
172
+ const newTodo = await operations.create("Test declarative CRUD");
173
+ log.info(`Created: ${newTodo.text}`);
174
+ const allTodos = await operations.read();
175
+ log.info(`Total todos: ${allTodos.length}`);
176
+ await operations.update(newTodo.id, { completed: true });
177
+ log.info(`Updated todo ${newTodo.id} to completed`);
178
+ const deleted = await operations.delete(newTodo.id);
179
+ log.info(`Deleted todo: ${deleted}`);
180
+ }
181
+ });
182
+ // Main demonstration
183
+ const demonstrateDeclarativeStorage = async () => {
184
+ const manager = new PluginManager();
185
+ // Register all plugins
186
+ await manager.register(createCounterPlugin());
187
+ await manager.register(createUserPlugin());
188
+ await manager.register(createAnalyticsPlugin());
189
+ await manager.register(createCrudPlugin());
190
+ console.log("\n📊 Storage Demo Complete");
191
+ console.log("Storage files created:");
192
+ console.log(" - storage/plugins/declarative-counter/storage.json");
193
+ console.log(" - storage/plugins/declarative-user/storage.json");
194
+ console.log(" - storage/plugins/declarative-analytics/storage.json");
195
+ console.log(" - storage/plugins/declarative-crud/storage.json");
196
+ };
197
+ // Export for use
198
+ export { createCounterPlugin, createUserPlugin, createAnalyticsPlugin, createCrudPlugin, demonstrateDeclarativeStorage };
199
+ // Run if called directly
200
+ if (import.meta.main) {
201
+ runDemo("Declarative Storage Demo", demonstrateDeclarativeStorage);
202
+ }
203
+ //# sourceMappingURL=storage-declarative.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-declarative.js","sourceRoot":"","sources":["../../examples/storage-declarative.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,6 @@
3
3
  * Este plugin proporciona el registro de acciones compartido
4
4
  */
5
5
  import type { IPlugin, PluginContext } from "../src";
6
- type EngineActionHandler = (...args: any[]) => any;
7
6
  export declare class ActionRegistryPlugin implements IPlugin {
8
7
  name: string;
9
8
  version: string;
@@ -11,13 +10,5 @@ export declare class ActionRegistryPlugin implements IPlugin {
11
10
  constructor();
12
11
  onLoad(context: PluginContext): void;
13
12
  onUnload(): void;
14
- getApi(): {
15
- registerAction: (type: string, handler: EngineActionHandler) => void;
16
- executeAction: (type: string, ...args: any[]) => any;
17
- listActions: () => string[];
18
- hasAction: (type: string) => boolean;
19
- actions: string[];
20
- };
21
13
  }
22
- export {};
23
14
  //# sourceMappingURL=ActionRegistryPlugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActionRegistryPlugin.d.ts","sourceRoot":"","sources":["../../plugins/ActionRegistryPlugin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAGrD,KAAK,mBAAmB,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAgCnD,qBAAa,oBAAqB,YAAW,OAAO;IAClD,IAAI,SAAqB;IACzB,OAAO,SAAW;IAClB,OAAO,CAAC,cAAc,CAAiB;;IASvC,MAAM,CAAC,OAAO,EAAE,aAAa;IAI7B,QAAQ;IAKR,MAAM;+BA9Ce,MAAM,WAAW,mBAAmB,KAAG,IAAI;8BAK5C,MAAM,WAAW,GAAG,EAAE,KAAG,GAAG;2BASjC,MAAM,EAAE;0BAKP,MAAM,KAAG,OAAO;;;CAoCjC"}
1
+ {"version":3,"file":"ActionRegistryPlugin.d.ts","sourceRoot":"","sources":["../../plugins/ActionRegistryPlugin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAmCrD,qBAAa,oBAAqB,YAAW,OAAO;IAClD,IAAI,SAAqB;IACzB,OAAO,SAAW;IAClB,OAAO,CAAC,cAAc,CAAiB;;IAMvC,MAAM,CAAC,OAAO,EAAE,aAAa;IAa7B,QAAQ;CAGT"}
@@ -33,24 +33,20 @@ export class ActionRegistryPlugin {
33
33
  actionRegistry;
34
34
  constructor() {
35
35
  this.actionRegistry = new ActionRegistry();
36
- // Enlazar el método getApi para mantener el contexto correcto
37
- this.getApi = this.getApi.bind(this);
38
36
  }
39
37
  onLoad(context) {
40
38
  context.log.info("ActionRegistry initialized");
41
- }
42
- onUnload() {
43
- // Cleanup is handled by the plugin manager
44
- }
45
- // Exponemos el ActionRegistry como API compartida
46
- getApi() {
47
- return {
39
+ // Register the API manually using the new system
40
+ context.registerApi({
48
41
  registerAction: this.actionRegistry.registerAction.bind(this.actionRegistry),
49
42
  executeAction: this.actionRegistry.executeAction.bind(this.actionRegistry),
50
43
  listActions: this.actionRegistry.listActions.bind(this.actionRegistry),
51
44
  hasAction: this.actionRegistry.hasAction.bind(this.actionRegistry),
52
45
  actions: this.actionRegistry.listActions()
53
- };
46
+ });
47
+ }
48
+ onUnload() {
49
+ // Cleanup is handled by the plugin manager
54
50
  }
55
51
  }
56
52
  //# sourceMappingURL=ActionRegistryPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActionRegistryPlugin.js","sourceRoot":"","sources":["../../plugins/ActionRegistryPlugin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,2CAA2C;AAC3C,MAAM,cAAc;IACR,cAAc,GAAqC,IAAI,GAAG,EAAE,CAAC;IAEvE,iCAAiC;IACjC,cAAc,CAAC,IAAY,EAAE,OAA4B;QACvD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,gCAAgC;IAChC,aAAa,CAAC,IAAY,EAAE,GAAG,IAAW;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,0CAA0C;IAC1C,WAAW;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,6CAA6C;IAC7C,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;CACF;AAED,qDAAqD;AACrD,MAAM,OAAO,oBAAoB;IAC/B,IAAI,GAAG,iBAAiB,CAAC;IACzB,OAAO,GAAG,OAAO,CAAC;IACV,cAAc,CAAiB;IAEvC;QACE,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;QAE3C,8DAA8D;QAC9D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,OAAsB;QAC3B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACjD,CAAC;IAED,QAAQ;QACN,2CAA2C;IAC7C,CAAC;IAED,kDAAkD;IAClD,MAAM;QACJ,OAAO;YACL,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;YAC5E,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;YAC1E,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;YACtE,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;YAClE,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;SAC3C,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"ActionRegistryPlugin.js","sourceRoot":"","sources":["../../plugins/ActionRegistryPlugin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,2CAA2C;AAC3C,MAAM,cAAc;IACR,cAAc,GAAqC,IAAI,GAAG,EAAE,CAAC;IAEvE,iCAAiC;IACjC,cAAc,CAAC,IAAY,EAAE,OAA4B;QACvD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,gCAAgC;IAChC,aAAa,CAAC,IAAY,EAAE,GAAG,IAAW;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,0CAA0C;IAC1C,WAAW;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,6CAA6C;IAC7C,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;CACF;AAED,qDAAqD;AACrD,MAAM,OAAO,oBAAoB;IAC/B,IAAI,GAAG,iBAAiB,CAAC;IACzB,OAAO,GAAG,OAAO,CAAC;IACV,cAAc,CAAiB;IAEvC;QACE,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,OAAsB;QAC3B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAE/C,iDAAiD;QACjD,OAAO,CAAC,WAAW,CAAC;YAClB,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;YAC5E,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;YAC1E,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;YACtE,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;YAClE,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;SAC3C,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;QACN,2CAA2C;IAC7C,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("bun_plugins").IPlugin;
2
+ export default _default;
3
+ //# sourceMappingURL=ExamplePlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExamplePlugin.d.ts","sourceRoot":"","sources":["../../plugins/ExamplePlugin.ts"],"names":[],"mappings":";AAIA,wBAyBG"}
@@ -0,0 +1,24 @@
1
+ import { definePlugin } from "../src";
2
+ // Con la nueva solución de tipos extensibles, los tipos están disponibles directamente
3
+ // desde bun_plugins/plugin-registry-base y pueden ser extendidos por usuarios
4
+ export default definePlugin({
5
+ name: "edge",
6
+ version: "1.0.0",
7
+ async onLoad(context) {
8
+ // getPlugin ahora es asíncrono y tiene type safety
9
+ const mathPlugin = await context.getPlugin('math-plugin');
10
+ if (!mathPlugin) {
11
+ context.log.error("Math plugin not found");
12
+ return;
13
+ }
14
+ // ✅ Type safety automático - TypeScript conoce los métodos disponibles
15
+ const result = mathPlugin.add(1, 2);
16
+ context.log.info(`Math result: ${result}`);
17
+ const multiplyResult = mathPlugin.multiply(3, 4);
18
+ context.log.info(`Multiplication result: ${multiplyResult}`);
19
+ // mathPlugin ya es la API del plugin, no es necesario llamar a getApi()
20
+ context.log.info(`Math API version: ${mathPlugin.version}`);
21
+ },
22
+ onUnload() { }
23
+ });
24
+ //# sourceMappingURL=ExamplePlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExamplePlugin.js","sourceRoot":"","sources":["../../plugins/ExamplePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,uFAAuF;AACvF,8EAA8E;AAE9E,eAAe,YAAY,CAAC;IACxB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,OAAO;IAEhB,KAAK,CAAC,MAAM,CAAC,OAAO;QAChB,mDAAmD;QACnD,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAE1D,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC3C,OAAO;QACX,CAAC;QAED,uEAAuE;QACvE,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,MAAM,EAAE,CAAC,CAAC;QAE3C,MAAM,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,cAAc,EAAE,CAAC,CAAC;QAE7D,wEAAwE;QACxE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,QAAQ,KAAI,CAAC;CAChB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MathPlugin.d.ts","sourceRoot":"","sources":["../../plugins/MathPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAG/C,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACxC;AAED,qBAAa,UAAW,SAAQ,MAAM;IACpC,IAAI,SAAiB;IACrB,OAAO,SAAW;IAET,MAAM,CAAC,OAAO,EAAE,aAAa;IAKtC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAIjC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAKtC,MAAM,IAAI,aAAa;CAQxB;;AAGD,wBAAgC"}
1
+ {"version":3,"file":"MathPlugin.d.ts","sourceRoot":"","sources":["../../plugins/MathPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAG/C,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACxC;AAED,qBAAa,UAAW,SAAQ,MAAM;IACpC,IAAI,SAAiB;IACrB,OAAO,SAAW;IAET,MAAM,CAAC,OAAO,EAAE,aAAa;IAWtC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAIjC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAKtC,MAAM,IAAI,aAAa;CAQxB;;AAGD,wBAAgC"}
@@ -4,6 +4,11 @@ export class MathPlugin extends Plugin {
4
4
  version = "0.5.0";
5
5
  onLoad(context) {
6
6
  context.log.info("Math capabilities ready");
7
+ // Registrar la API de este plugin para que otros plugins puedan acceder
8
+ context.registerApi({
9
+ add: this.add.bind(this),
10
+ multiply: this.multiply.bind(this)
11
+ });
7
12
  }
8
13
  // Custom method exposed by this plugin
9
14
  add(a, b) {
@@ -1 +1 @@
1
- {"version":3,"file":"MathPlugin.js","sourceRoot":"","sources":["../../plugins/MathPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAiB,MAAM,QAAQ,CAAC;AAQ/C,MAAM,OAAO,UAAW,SAAQ,MAAM;IACpC,IAAI,GAAG,aAAa,CAAC;IACrB,OAAO,GAAG,OAAO,CAAC;IAET,MAAM,CAAC,OAAsB;QACpC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC9C,CAAC;IAED,uCAAuC;IACvC,GAAG,CAAC,CAAS,EAAE,CAAS;QACtB,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAED,QAAQ,CAAC,CAAS,EAAE,CAAS;QAC3B,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAED,4BAA4B;IAC5B,MAAM;QACJ,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;SACnC,CAAC;IACJ,CAAC;CAGF;AAED,qCAAqC;AACrC,eAAe,IAAI,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"MathPlugin.js","sourceRoot":"","sources":["../../plugins/MathPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAiB,MAAM,QAAQ,CAAC;AAQ/C,MAAM,OAAO,UAAW,SAAQ,MAAM;IACpC,IAAI,GAAG,aAAa,CAAC;IACrB,OAAO,GAAG,OAAO,CAAC;IAET,MAAM,CAAC,OAAsB;QACpC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAE5C,wEAAwE;QACxE,OAAO,CAAC,WAAW,CAAC;YAClB,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;SACnC,CAAC,CAAC;IACL,CAAC;IAED,uCAAuC;IACvC,GAAG,CAAC,CAAS,EAAE,CAAS;QACtB,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAED,QAAQ,CAAC,CAAS,EAAE,CAAS;QAC3B,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAED,4BAA4B;IAC5B,MAAM;QACJ,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;SACnC,CAAC;IACJ,CAAC;CAGF;AAED,qCAAqC;AACrC,eAAe,IAAI,UAAU,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Ejemplo de plugin que usa el sistema de tipos para tener autocompletado
3
+ * al acceder a otros plugins.
4
+ *
5
+ * Este plugin demuestra cómo usar context.getPlugin() con type safety
6
+ * gracias al archivo plugins/types.d.ts que extiende PluginFactory.
7
+ */
8
+ declare const _default: import("bun_plugins").IPlugin;
9
+ export default _default;
10
+ //# sourceMappingURL=TypedExamplePlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypedExamplePlugin.d.ts","sourceRoot":"","sources":["../../plugins/TypedExamplePlugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;;AAIH,wBAoEG"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Ejemplo de plugin que usa el sistema de tipos para tener autocompletado
3
+ * al acceder a otros plugins.
4
+ *
5
+ * Este plugin demuestra cómo usar context.getPlugin() con type safety
6
+ * gracias al archivo plugins/types.d.ts que extiende PluginFactory.
7
+ */
8
+ import { definePlugin } from "../src";
9
+ export default definePlugin({
10
+ name: "typed-example",
11
+ version: "1.0.0",
12
+ description: "Ejemplo de plugin con type safety",
13
+ async onLoad(context) {
14
+ context.log.info("Typed example plugin loading...");
15
+ // ✅ TypeScript conoce el tipo exacto de MathPluginApi
16
+ const mathPlugin = await context.getPlugin('math-plugin');
17
+ if (!mathPlugin) {
18
+ context.log.error("Math plugin not found");
19
+ return;
20
+ }
21
+ // ✅ Autocompletado completo y type safety
22
+ const sum = mathPlugin.add(10, 20);
23
+ context.log.info(`Sum: ${sum}`); // Sum: 30
24
+ const product = mathPlugin.multiply(5, 6);
25
+ context.log.info(`Product: ${product}`); // Product: 30
26
+ const difference = mathPlugin.subtract(100, 25);
27
+ context.log.info(`Difference: ${difference}`); // Difference: 75
28
+ const quotient = mathPlugin.divide(100, 4);
29
+ context.log.info(`Quotient: ${quotient}`); // Quotient: 25
30
+ // ✅ Puedes acceder a otros plugins también
31
+ const textPlugin = await context.getPlugin('text-plugin');
32
+ if (textPlugin) {
33
+ const upper = textPlugin.toUpperCase('hello world');
34
+ context.log.info(`Uppercase: ${upper}`); // Uppercase: HELLO WORLD
35
+ const lower = textPlugin.toLowerCase('HELLO WORLD');
36
+ context.log.info(`Lowercase: ${lower}`); // Lowercase: hello world
37
+ const reversed = textPlugin.reverse('hello');
38
+ context.log.info(`Reversed: ${reversed}`); // Reversed: olleh
39
+ }
40
+ // ✅ TypeScript mostrará error si intentas usar un método que no existe
41
+ // mathPlugin.nonExistentMethod(); // ❌ Error: Property 'nonExistentMethod' does not exist
42
+ // ✅ También puedes usar el plugin de action registry
43
+ const actionRegistry = await context.getPlugin('action-registry');
44
+ if (actionRegistry) {
45
+ // Registrar una acción personalizada
46
+ actionRegistry.registerAction('custom-math', (a, b) => {
47
+ return a * b + a + b;
48
+ });
49
+ // Listar todas las acciones disponibles
50
+ const actions = actionRegistry.listActions();
51
+ context.log.info(`Available actions: ${actions.join(', ')}`);
52
+ // Ejecutar la acción personalizada
53
+ const result = actionRegistry.executeAction('custom-math', 5, 3);
54
+ context.log.info(`Custom math result: ${result}`); // Custom math result: 23
55
+ }
56
+ },
57
+ onUnload() {
58
+ // Cleanup si es necesario
59
+ }
60
+ });
61
+ //# sourceMappingURL=TypedExamplePlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypedExamplePlugin.js","sourceRoot":"","sources":["../../plugins/TypedExamplePlugin.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export declare class PluginManager extends EventEmitter implements IPluginManage
5
5
  private plugins;
6
6
  private availablePlugins;
7
7
  private configs;
8
+ private pluginApis;
8
9
  private resources;
9
10
  private dependencyManager;
10
11
  hooksManager: HooksManager;
@@ -26,6 +27,9 @@ export declare class PluginManager extends EventEmitter implements IPluginManage
26
27
  getApi<T = any>(name: string): T | undefined;
27
28
  getPluginConfig(name: string): Record<string, any>;
28
29
  listPlugins(): string[];
30
+ registerApi(pluginName: string, api: any): void;
31
+ getPluginApi(pluginName: string): any | undefined;
32
+ private unregisterApi;
29
33
  emit<K extends keyof AppEvents>(eventName: K, payload: AppEvents[K]): boolean;
30
34
  emit(eventName: string | symbol, ...args: any[]): boolean;
31
35
  on<K extends keyof AppEvents>(eventName: K & string, listener: (payload: AppEvents[K]) => void): this;
@@ -1 +1 @@
1
- {"version":3,"file":"PluginManager.d.ts","sourceRoot":"","sources":["../../src/PluginManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PluginManager.d.ts","sourceRoot":"","sources":["../../src/PluginManager.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ export class PluginManager extends EventEmitter {
17
17
  plugins = new Map();
18
18
  availablePlugins = new Map();
19
19
  configs = new Map();
20
+ pluginApis = new Map();
20
21
  // Modules
21
22
  resources;
22
23
  dependencyManager;
@@ -230,10 +231,16 @@ export class PluginManager extends EventEmitter {
230
231
  }
231
232
  else if (method === RPCMethod.ManagerGetPlugin) {
232
233
  const targetName = args[0];
233
- const p = this.getPlugin(targetName);
234
- result = p && typeof p === 'object' && 'getApi' in p && typeof p.getApi === 'function'
235
- ? p.getApi()
236
- : undefined;
234
+ // Get the registered API
235
+ const api = this.getPluginApi(targetName);
236
+ if (api) {
237
+ result = api;
238
+ }
239
+ else {
240
+ // Fallback to the plugin itself
241
+ const p = this.getPlugin(targetName);
242
+ result = api !== undefined ? api : p || undefined;
243
+ }
237
244
  }
238
245
  else if (method === RPCMethod.Log) {
239
246
  const level = args[0];
@@ -270,6 +277,11 @@ export class PluginManager extends EventEmitter {
270
277
  await storage.reload();
271
278
  result = true;
272
279
  }
280
+ else if (method === RPCMethod.ManagerRegisterApi) {
281
+ const [api] = args;
282
+ this.registerApi(pluginName, api);
283
+ result = true;
284
+ }
273
285
  worker.postMessage({ id, result });
274
286
  }
275
287
  catch (e) {
@@ -326,6 +338,10 @@ export class PluginManager extends EventEmitter {
326
338
  },
327
339
  };
328
340
  this.plugins.set(metadata.name, proxyPlugin);
341
+ // Register API if provided in metadata
342
+ if (metadata.api) {
343
+ this.registerApi(metadata.name, metadata.api);
344
+ }
329
345
  logger.getLogger("PluginManager").info(`Isolated Plugin ${metadata.name} loaded in worker.`);
330
346
  resolve();
331
347
  }
@@ -372,6 +388,7 @@ export class PluginManager extends EventEmitter {
372
388
  this.plugins.delete(pluginName);
373
389
  this.resources.cleanup(pluginName, this);
374
390
  this.hooksManager.cleanup(pluginName);
391
+ this.unregisterApi(pluginName);
375
392
  logger.getLogger("PluginManager").info(`Plugin ${pluginName} unloaded.`);
376
393
  }
377
394
  }
@@ -379,13 +396,8 @@ export class PluginManager extends EventEmitter {
379
396
  return this.plugins.get(name);
380
397
  }
381
398
  getApi(name) {
382
- const plugin = this.plugins.get(name);
383
- if (!plugin)
384
- return undefined;
385
- if (plugin.getApi) {
386
- return plugin.getApi();
387
- }
388
- return undefined;
399
+ // Get the registered API
400
+ return this.getPluginApi(name);
389
401
  }
390
402
  getPluginConfig(name) {
391
403
  return this.configs.get(name) || {};
@@ -393,6 +405,18 @@ export class PluginManager extends EventEmitter {
393
405
  listPlugins() {
394
406
  return Array.from(this.plugins.keys());
395
407
  }
408
+ // Método para registrar manualmente la API de un plugin
409
+ registerApi(pluginName, api) {
410
+ this.pluginApis.set(pluginName, api);
411
+ }
412
+ // Método para obtener la API de un plugin
413
+ getPluginApi(pluginName) {
414
+ return this.pluginApis.get(pluginName);
415
+ }
416
+ // Método para limpiar la API de un plugin al desregistrarlo
417
+ unregisterApi(pluginName) {
418
+ this.pluginApis.delete(pluginName);
419
+ }
396
420
  emit(eventName, ...args) {
397
421
  return super.emit(eventName, ...args);
398
422
  }