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.
- package/README.md +125 -1
- package/dist/examples/action-registry-declarative.d.ts +14 -0
- package/dist/examples/action-registry-declarative.d.ts.map +1 -0
- package/dist/examples/action-registry-declarative.js +130 -0
- package/dist/examples/action-registry-declarative.js.map +1 -0
- package/dist/examples/action-registry-example.d.ts +31 -0
- package/dist/examples/action-registry-example.d.ts.map +1 -0
- package/dist/examples/action-registry-example.js +84 -0
- package/dist/examples/action-registry-example.js.map +1 -0
- package/dist/examples/index-declarative.d.ts +32 -0
- package/dist/examples/index-declarative.d.ts.map +1 -0
- package/dist/examples/index-declarative.js +206 -0
- package/dist/examples/index-declarative.js.map +1 -0
- package/dist/examples/logger-declarative.d.ts +109 -0
- package/dist/examples/logger-declarative.d.ts.map +1 -0
- package/dist/examples/logger-declarative.js +330 -0
- package/dist/examples/logger-declarative.js.map +1 -0
- package/dist/examples/logger-simple.d.ts +8 -0
- package/dist/examples/logger-simple.d.ts.map +1 -0
- package/dist/examples/logger-simple.js +165 -0
- package/dist/examples/logger-simple.js.map +1 -0
- package/dist/examples/server-declarative.d.ts +46 -0
- package/dist/examples/server-declarative.d.ts.map +1 -0
- package/dist/examples/server-declarative.js +205 -0
- package/dist/examples/server-declarative.js.map +1 -0
- package/dist/examples/shared/action-registry.d.ts +45 -0
- package/dist/examples/shared/action-registry.d.ts.map +1 -0
- package/dist/examples/shared/action-registry.js +65 -0
- package/dist/examples/shared/action-registry.js.map +1 -0
- package/dist/examples/shared/plugin-builder.d.ts +41 -0
- package/dist/examples/shared/plugin-builder.d.ts.map +1 -0
- package/dist/examples/shared/plugin-builder.js +85 -0
- package/dist/examples/shared/plugin-builder.js.map +1 -0
- package/dist/examples/storage-declarative.d.ts +13 -0
- package/dist/examples/storage-declarative.d.ts.map +1 -0
- package/dist/examples/storage-declarative.js +203 -0
- package/dist/examples/storage-declarative.js.map +1 -0
- package/dist/plugins/ActionRegistryPlugin.d.ts +0 -9
- package/dist/plugins/ActionRegistryPlugin.d.ts.map +1 -1
- package/dist/plugins/ActionRegistryPlugin.js +6 -10
- package/dist/plugins/ActionRegistryPlugin.js.map +1 -1
- package/dist/plugins/ExamplePlugin.d.ts +3 -0
- package/dist/plugins/ExamplePlugin.d.ts.map +1 -0
- package/dist/plugins/ExamplePlugin.js +24 -0
- package/dist/plugins/ExamplePlugin.js.map +1 -0
- package/dist/plugins/MathPlugin.d.ts.map +1 -1
- package/dist/plugins/MathPlugin.js +5 -0
- package/dist/plugins/MathPlugin.js.map +1 -1
- package/dist/plugins/TypedExamplePlugin.d.ts +10 -0
- package/dist/plugins/TypedExamplePlugin.d.ts.map +1 -0
- package/dist/plugins/TypedExamplePlugin.js +61 -0
- package/dist/plugins/TypedExamplePlugin.js.map +1 -0
- package/dist/src/PluginManager.d.ts +4 -0
- package/dist/src/PluginManager.d.ts.map +1 -1
- package/dist/src/PluginManager.js +35 -11
- package/dist/src/PluginManager.js.map +1 -1
- package/dist/src/managers/ContextFactory.d.ts.map +1 -1
- package/dist/src/managers/ContextFactory.js +17 -15
- package/dist/src/managers/ContextFactory.js.map +1 -1
- package/dist/src/types/plugin-registry-base.d.ts +6 -4
- package/dist/src/types/plugin-registry-base.d.ts.map +1 -1
- package/dist/src/types/plugin-registry-base.js +1 -1
- package/dist/src/types.d.ts +7 -7
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +1 -2
- package/dist/src/types.js.map +1 -1
- package/dist/src/utils/pluginValidator.d.ts.map +1 -1
- package/dist/src/utils/pluginValidator.js +0 -1
- package/dist/src/utils/pluginValidator.js.map +1 -1
- package/dist/src/worker/WorkerRunner.js +5 -0
- package/dist/src/worker/WorkerRunner.js.map +1 -1
- package/package.json +2 -10
- package/dist/src/types/arktype_converter.d.ts +0 -19
- package/dist/src/types/arktype_converter.d.ts.map +0 -1
- package/dist/src/types/arktype_converter.js +0 -73
- package/dist/src/types/arktype_converter.js.map +0 -1
- package/dist/src/types/generator.d.ts +0 -9
- package/dist/src/types/generator.d.ts.map +0 -1
- package/dist/src/types/generator.js +0 -9
- package/dist/src/types/generator.js.map +0 -1
- package/dist/src/types/interfaces.d.ts +0 -55
- package/dist/src/types/interfaces.d.ts.map +0 -1
- package/dist/src/types/interfaces.js +0 -5
- package/dist/src/types/interfaces.js.map +0 -1
- package/dist/src/types/plugin-registry.d.ts +0 -2
- package/dist/src/types/plugin-registry.d.ts.map +0 -1
- package/dist/src/types/plugin-registry.js +0 -4
- package/dist/src/types/plugin-registry.js.map +0 -1
- package/dist/src/types/plugin_generator.d.ts +0 -62
- package/dist/src/types/plugin_generator.d.ts.map +0 -1
- package/dist/src/types/plugin_generator.js +0 -700
- package/dist/src/types/plugin_generator.js.map +0 -1
- package/plugin-types/index.d.ts +0 -20
- 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;
|
|
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
|
-
|
|
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;
|
|
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 @@
|
|
|
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;
|
|
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;
|
|
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":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,EACH,KAAK,OAAO,EAEZ,KAAK,SAAS,EACd,KAAK,gBAAgB,IAAI,aAAa,EACtC,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,cAAc,EAKtB,MAAM,SAAS,CAAC;AAMjB,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAMvD,qBAAa,aAAc,SAAQ,YAAa,YAAW,cAAc;IACvE,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,gBAAgB,CAAmC;IAC3D,OAAO,CAAC,OAAO,CAA+C;
|
|
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
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
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
|
-
|
|
383
|
-
|
|
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
|
}
|