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.
- package/README.md +3 -127
- package/dist/{src/PluginManager.d.ts → PluginManager.d.ts} +9 -20
- package/dist/PluginManager.d.ts.map +1 -0
- package/dist/{src/PluginManager.js → PluginManager.js} +189 -212
- package/dist/PluginManager.js.map +1 -0
- package/dist/{src/index.d.ts → index.d.ts} +1 -2
- package/dist/index.d.ts.map +1 -0
- package/dist/{src/index.js → index.js} +0 -2
- package/dist/index.js.map +1 -0
- package/dist/{src/managers → managers}/ContextFactory.d.ts +1 -1
- package/dist/managers/ContextFactory.d.ts.map +1 -0
- package/dist/{src/managers → managers}/ContextFactory.js +26 -51
- package/dist/managers/ContextFactory.js.map +1 -0
- package/dist/managers/DependencyManager.d.ts.map +1 -0
- package/dist/{src/managers → managers}/DependencyManager.js +5 -7
- package/dist/managers/DependencyManager.js.map +1 -0
- package/dist/{src/managers → managers}/HooksManager.d.ts +1 -4
- package/dist/managers/HooksManager.d.ts.map +1 -0
- package/dist/{src/managers → managers}/HooksManager.js +8 -36
- package/dist/managers/HooksManager.js.map +1 -0
- package/dist/managers/ResourceManager.d.ts.map +1 -0
- package/dist/{src/managers → managers}/ResourceManager.js +3 -3
- package/dist/managers/ResourceManager.js.map +1 -0
- package/dist/{src/storage → storage}/JsonPluginStorage.d.ts +1 -2
- package/dist/storage/JsonPluginStorage.d.ts.map +1 -0
- package/dist/storage/JsonPluginStorage.js +63 -0
- package/dist/storage/JsonPluginStorage.js.map +1 -0
- package/dist/{src/types.d.ts → types.d.ts} +19 -60
- package/dist/types.d.ts.map +1 -0
- package/dist/{src/types.js → types.js} +0 -6
- package/dist/types.js.map +1 -0
- package/dist/utils/errorParser.d.ts.map +1 -0
- package/dist/{src/utils → utils}/errorParser.js +5 -2
- package/dist/utils/errorParser.js.map +1 -0
- package/dist/utils/pluginValidator.d.ts +93 -0
- package/dist/utils/pluginValidator.d.ts.map +1 -0
- package/dist/{src/utils → utils}/pluginValidator.js +14 -11
- package/dist/utils/pluginValidator.js.map +1 -0
- package/dist/utils/security.d.ts.map +1 -0
- package/dist/utils/security.js.map +1 -0
- package/dist/worker/WorkerRunner.d.ts.map +1 -0
- package/dist/{src/worker → worker}/WorkerRunner.js +13 -38
- package/dist/worker/WorkerRunner.js.map +1 -0
- package/package.json +6 -9
- package/LICENSE +0 -9
- package/dist/examples/action-registry-declarative.d.ts +0 -14
- package/dist/examples/action-registry-declarative.d.ts.map +0 -1
- package/dist/examples/action-registry-declarative.js +0 -130
- package/dist/examples/action-registry-declarative.js.map +0 -1
- package/dist/examples/action-registry-example.d.ts +0 -31
- package/dist/examples/action-registry-example.d.ts.map +0 -1
- package/dist/examples/action-registry-example.js +0 -84
- package/dist/examples/action-registry-example.js.map +0 -1
- package/dist/examples/index-declarative.d.ts +0 -32
- package/dist/examples/index-declarative.d.ts.map +0 -1
- package/dist/examples/index-declarative.js +0 -206
- package/dist/examples/index-declarative.js.map +0 -1
- package/dist/examples/logger-declarative.d.ts +0 -109
- package/dist/examples/logger-declarative.d.ts.map +0 -1
- package/dist/examples/logger-declarative.js +0 -330
- package/dist/examples/logger-declarative.js.map +0 -1
- package/dist/examples/logger-simple.d.ts +0 -8
- package/dist/examples/logger-simple.d.ts.map +0 -1
- package/dist/examples/logger-simple.js +0 -165
- package/dist/examples/logger-simple.js.map +0 -1
- package/dist/examples/server-declarative.d.ts +0 -46
- package/dist/examples/server-declarative.d.ts.map +0 -1
- package/dist/examples/server-declarative.js +0 -205
- package/dist/examples/server-declarative.js.map +0 -1
- package/dist/examples/shared/action-registry.d.ts +0 -45
- package/dist/examples/shared/action-registry.d.ts.map +0 -1
- package/dist/examples/shared/action-registry.js +0 -65
- package/dist/examples/shared/action-registry.js.map +0 -1
- package/dist/examples/shared/plugin-builder.d.ts +0 -41
- package/dist/examples/shared/plugin-builder.d.ts.map +0 -1
- package/dist/examples/shared/plugin-builder.js +0 -85
- package/dist/examples/shared/plugin-builder.js.map +0 -1
- package/dist/examples/storage-declarative.d.ts +0 -13
- package/dist/examples/storage-declarative.d.ts.map +0 -1
- package/dist/examples/storage-declarative.js +0 -203
- package/dist/examples/storage-declarative.js.map +0 -1
- package/dist/plugins/ActionRegistryPlugin.d.ts +0 -14
- package/dist/plugins/ActionRegistryPlugin.d.ts.map +0 -1
- package/dist/plugins/ActionRegistryPlugin.js +0 -52
- package/dist/plugins/ActionRegistryPlugin.js.map +0 -1
- package/dist/plugins/DynamicJSActionsPlugin.d.ts +0 -21
- package/dist/plugins/DynamicJSActionsPlugin.d.ts.map +0 -1
- package/dist/plugins/DynamicJSActionsPlugin.js +0 -57
- package/dist/plugins/DynamicJSActionsPlugin.js.map +0 -1
- package/dist/plugins/DynamicMathActionsPlugin.d.ts +0 -22
- package/dist/plugins/DynamicMathActionsPlugin.d.ts.map +0 -1
- package/dist/plugins/DynamicMathActionsPlugin.js +0 -64
- package/dist/plugins/DynamicMathActionsPlugin.js.map +0 -1
- package/dist/plugins/DynamicTextActionsPlugin.d.ts +0 -22
- package/dist/plugins/DynamicTextActionsPlugin.d.ts.map +0 -1
- package/dist/plugins/DynamicTextActionsPlugin.js +0 -58
- package/dist/plugins/DynamicTextActionsPlugin.js.map +0 -1
- package/dist/plugins/DynamicUtilityActionsPlugin.d.ts +0 -22
- package/dist/plugins/DynamicUtilityActionsPlugin.d.ts.map +0 -1
- package/dist/plugins/DynamicUtilityActionsPlugin.js +0 -75
- package/dist/plugins/DynamicUtilityActionsPlugin.js.map +0 -1
- package/dist/plugins/ExamplePlugin.d.ts +0 -3
- package/dist/plugins/ExamplePlugin.d.ts.map +0 -1
- package/dist/plugins/ExamplePlugin.js +0 -24
- package/dist/plugins/ExamplePlugin.js.map +0 -1
- package/dist/plugins/LifecycleDemoPlugin.d.ts +0 -20
- package/dist/plugins/LifecycleDemoPlugin.d.ts.map +0 -1
- package/dist/plugins/LifecycleDemoPlugin.js +0 -34
- package/dist/plugins/LifecycleDemoPlugin.js.map +0 -1
- package/dist/plugins/MathPlugin.d.ts +0 -16
- package/dist/plugins/MathPlugin.d.ts.map +0 -1
- package/dist/plugins/MathPlugin.js +0 -30
- package/dist/plugins/MathPlugin.js.map +0 -1
- package/dist/plugins/MyJSPlugin.d.ts +0 -7
- package/dist/plugins/MyJSPlugin.d.ts.map +0 -1
- package/dist/plugins/MyJSPlugin.js +0 -12
- package/dist/plugins/MyJSPlugin.js.map +0 -1
- package/dist/plugins/TypedExamplePlugin.d.ts +0 -10
- package/dist/plugins/TypedExamplePlugin.d.ts.map +0 -1
- package/dist/plugins/TypedExamplePlugin.js +0 -61
- package/dist/plugins/TypedExamplePlugin.js.map +0 -1
- package/dist/plugins/arktype/index.d.ts +0 -8
- package/dist/plugins/arktype/index.d.ts.map +0 -1
- package/dist/plugins/arktype/index.js +0 -25
- package/dist/plugins/arktype/index.js.map +0 -1
- package/dist/src/Plugin.d.ts +0 -28
- package/dist/src/Plugin.d.ts.map +0 -1
- package/dist/src/Plugin.js +0 -36
- package/dist/src/Plugin.js.map +0 -1
- package/dist/src/PluginManager.d.ts.map +0 -1
- package/dist/src/PluginManager.js.map +0 -1
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js.map +0 -1
- package/dist/src/logger/LoggerAdapter.d.ts +0 -77
- package/dist/src/logger/LoggerAdapter.d.ts.map +0 -1
- package/dist/src/logger/LoggerAdapter.js +0 -242
- package/dist/src/logger/LoggerAdapter.js.map +0 -1
- package/dist/src/logger/LoggerFactory.d.ts +0 -73
- package/dist/src/logger/LoggerFactory.d.ts.map +0 -1
- package/dist/src/logger/LoggerFactory.js +0 -99
- package/dist/src/logger/LoggerFactory.js.map +0 -1
- package/dist/src/logger/index.d.ts +0 -3
- package/dist/src/logger/index.d.ts.map +0 -1
- package/dist/src/logger/index.js +0 -3
- package/dist/src/logger/index.js.map +0 -1
- package/dist/src/managers/ContextFactory.d.ts.map +0 -1
- package/dist/src/managers/ContextFactory.js.map +0 -1
- package/dist/src/managers/DependencyManager.d.ts.map +0 -1
- package/dist/src/managers/DependencyManager.js.map +0 -1
- package/dist/src/managers/HooksManager.d.ts.map +0 -1
- package/dist/src/managers/HooksManager.js.map +0 -1
- package/dist/src/managers/ResourceManager.d.ts.map +0 -1
- package/dist/src/managers/ResourceManager.js.map +0 -1
- package/dist/src/storage/JsonPluginStorage.d.ts.map +0 -1
- package/dist/src/storage/JsonPluginStorage.js +0 -75
- package/dist/src/storage/JsonPluginStorage.js.map +0 -1
- package/dist/src/types/plugin-registry-base.d.ts +0 -80
- package/dist/src/types/plugin-registry-base.d.ts.map +0 -1
- package/dist/src/types/plugin-registry-base.js +0 -6
- package/dist/src/types/plugin-registry-base.js.map +0 -1
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js.map +0 -1
- package/dist/src/utils/errorParser.d.ts.map +0 -1
- package/dist/src/utils/errorParser.js.map +0 -1
- package/dist/src/utils/pluginValidator.d.ts +0 -17
- package/dist/src/utils/pluginValidator.d.ts.map +0 -1
- package/dist/src/utils/pluginValidator.js.map +0 -1
- package/dist/src/utils/security.d.ts.map +0 -1
- package/dist/src/utils/security.js.map +0 -1
- package/dist/src/worker/WorkerRunner.d.ts.map +0 -1
- package/dist/src/worker/WorkerRunner.js.map +0 -1
- /package/dist/{src/managers → managers}/DependencyManager.d.ts +0 -0
- /package/dist/{src/managers → managers}/ResourceManager.d.ts +0 -0
- /package/dist/{src/utils → utils}/errorParser.d.ts +0 -0
- /package/dist/{src/utils → utils}/security.d.ts +0 -0
- /package/dist/{src/utils → utils}/security.js +0 -0
- /package/dist/{src/worker → worker}/WorkerRunner.d.ts +0 -0
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Declarative Server Example
|
|
3
|
-
*
|
|
4
|
-
* A clean, declarative approach to building a plugin-powered server
|
|
5
|
-
* with minimal boilerplate and maximum clarity.
|
|
6
|
-
*/
|
|
7
|
-
import { serve } from "bun";
|
|
8
|
-
import { PluginManager } from "../src/PluginManager";
|
|
9
|
-
// Declarative route definitions
|
|
10
|
-
const routes = [
|
|
11
|
-
{
|
|
12
|
-
method: 'GET',
|
|
13
|
-
path: '/health',
|
|
14
|
-
handler: 'health_check',
|
|
15
|
-
description: 'Health check endpoint'
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
method: 'POST',
|
|
19
|
-
path: '/plugins',
|
|
20
|
-
handler: 'list_plugins',
|
|
21
|
-
description: 'List all loaded plugins'
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
method: 'POST',
|
|
25
|
-
path: '/plugins/register',
|
|
26
|
-
handler: 'register_plugin',
|
|
27
|
-
description: 'Register a new plugin'
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
method: 'POST',
|
|
31
|
-
path: '/plugins/unregister',
|
|
32
|
-
handler: 'unregister_plugin',
|
|
33
|
-
description: 'Unregister a plugin'
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
method: 'GET',
|
|
37
|
-
path: '/actions',
|
|
38
|
-
handler: 'list_actions',
|
|
39
|
-
description: 'List available actions'
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
method: 'POST',
|
|
43
|
-
path: '/actions/execute',
|
|
44
|
-
handler: 'execute_action',
|
|
45
|
-
description: 'Execute a specific action'
|
|
46
|
-
}
|
|
47
|
-
];
|
|
48
|
-
// Declarative server plugin
|
|
49
|
-
const createServerPlugin = () => ({
|
|
50
|
-
name: "declarative-server",
|
|
51
|
-
version: "1.0.0",
|
|
52
|
-
description: "Server plugin with declarative route handling",
|
|
53
|
-
async onLoad(context) {
|
|
54
|
-
const { log } = context;
|
|
55
|
-
log.info("Server plugin loaded");
|
|
56
|
-
// Register server actions
|
|
57
|
-
const actions = {
|
|
58
|
-
health_check: async () => ({ status: 'healthy', timestamp: new Date().toISOString() }),
|
|
59
|
-
list_plugins: async () => context.manager.listPlugins(),
|
|
60
|
-
register_plugin: async (data) => {
|
|
61
|
-
// Plugin registration logic
|
|
62
|
-
return { success: true, plugin: data.name };
|
|
63
|
-
},
|
|
64
|
-
unregister_plugin: async (data) => {
|
|
65
|
-
// Plugin unregistration logic
|
|
66
|
-
return { success: true, plugin: data.name };
|
|
67
|
-
},
|
|
68
|
-
list_actions: async () => {
|
|
69
|
-
const registry = context.manager.getPluginApi('action-registry');
|
|
70
|
-
return registry ? registry.list() : [];
|
|
71
|
-
},
|
|
72
|
-
execute_action: async (data) => {
|
|
73
|
-
const registry = context.manager.getPluginApi('action-registry');
|
|
74
|
-
if (!registry)
|
|
75
|
-
throw new Error('Action registry not found');
|
|
76
|
-
return registry.execute(data.action, ...data.args);
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
// Make actions available
|
|
80
|
-
context.serverActions = actions;
|
|
81
|
-
log.info("Server actions registered");
|
|
82
|
-
},
|
|
83
|
-
async onUnload() {
|
|
84
|
-
console.log("Server plugin unloaded");
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
// Declarative server factory
|
|
88
|
-
const createDeclarativeServer = (config) => {
|
|
89
|
-
const pluginManager = new PluginManager();
|
|
90
|
-
return {
|
|
91
|
-
pluginManager,
|
|
92
|
-
async start() {
|
|
93
|
-
// Register server plugin
|
|
94
|
-
await pluginManager.register(createServerPlugin());
|
|
95
|
-
// Create and start server
|
|
96
|
-
const server = serve({
|
|
97
|
-
port: config.port,
|
|
98
|
-
hostname: config.host,
|
|
99
|
-
async fetch(req) {
|
|
100
|
-
const url = new URL(req.url);
|
|
101
|
-
const route = config.routes.find(r => r.method === req.method && r.path === url.pathname);
|
|
102
|
-
if (!route) {
|
|
103
|
-
return new Response(JSON.stringify({ error: 'Not found' }), {
|
|
104
|
-
status: 404,
|
|
105
|
-
headers: { 'Content-Type': 'application/json' }
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
try {
|
|
109
|
-
const serverPlugin = pluginManager.getPlugin('declarative-server');
|
|
110
|
-
if (!serverPlugin || !serverPlugin.serverActions) {
|
|
111
|
-
throw new Error('Server plugin not available');
|
|
112
|
-
}
|
|
113
|
-
const actions = serverPlugin.serverActions;
|
|
114
|
-
const handler = actions[route.handler];
|
|
115
|
-
if (!handler) {
|
|
116
|
-
throw new Error(`Handler ${route.handler} not found`);
|
|
117
|
-
}
|
|
118
|
-
let data = {};
|
|
119
|
-
if (req.method !== 'GET') {
|
|
120
|
-
data = await req.json().catch(() => ({}));
|
|
121
|
-
}
|
|
122
|
-
const result = await handler(data);
|
|
123
|
-
return new Response(JSON.stringify(result), {
|
|
124
|
-
status: 200,
|
|
125
|
-
headers: { 'Content-Type': 'application/json' }
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
catch (error) {
|
|
129
|
-
return new Response(JSON.stringify({
|
|
130
|
-
error: error.message
|
|
131
|
-
}), {
|
|
132
|
-
status: 500,
|
|
133
|
-
headers: { 'Content-Type': 'application/json' }
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
console.log(`🚀 Server running on http://${config.host}:${config.port}`);
|
|
139
|
-
console.log('Available endpoints:');
|
|
140
|
-
config.routes.forEach(route => {
|
|
141
|
-
console.log(` ${route.method} ${route.path} - ${route.description}`);
|
|
142
|
-
});
|
|
143
|
-
return server;
|
|
144
|
-
}
|
|
145
|
-
};
|
|
146
|
-
};
|
|
147
|
-
// Action registry plugin for the server
|
|
148
|
-
const createActionRegistryPlugin = () => ({
|
|
149
|
-
name: "action-registry",
|
|
150
|
-
version: "1.0.0",
|
|
151
|
-
description: "Action registry for server operations",
|
|
152
|
-
async onLoad(context) {
|
|
153
|
-
const { ActionRegistry } = await import("./shared/action-registry");
|
|
154
|
-
const registry = new ActionRegistry();
|
|
155
|
-
// Register some example actions
|
|
156
|
-
registry.register({
|
|
157
|
-
name: 'greet',
|
|
158
|
-
handler: (name) => `Hello, Hello, ${name}!`
|
|
159
|
-
});
|
|
160
|
-
registry.register({
|
|
161
|
-
name: 'calculate',
|
|
162
|
-
handler: (a, b, op) => {
|
|
163
|
-
switch (op) {
|
|
164
|
-
case 'add': return a + b;
|
|
165
|
-
case 'subtract': return a - b;
|
|
166
|
-
case 'multiply': return a * b;
|
|
167
|
-
case 'divide': return b !== 0 ? a / b : 'Error: Division by zero';
|
|
168
|
-
default: return 'Error: Unknown operation';
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
});
|
|
172
|
-
// Register the registry as the shared API
|
|
173
|
-
context.registerApi(registry);
|
|
174
|
-
},
|
|
175
|
-
async onUnload() {
|
|
176
|
-
console.log("Action registry plugin unloaded");
|
|
177
|
-
},
|
|
178
|
-
});
|
|
179
|
-
// Main demonstration
|
|
180
|
-
const demonstrateDeclarativeServer = async () => {
|
|
181
|
-
const config = {
|
|
182
|
-
port: 3000,
|
|
183
|
-
host: 'localhost',
|
|
184
|
-
routes: routes,
|
|
185
|
-
middleware: []
|
|
186
|
-
};
|
|
187
|
-
const server = createDeclarativeServer(config);
|
|
188
|
-
// Register action registry
|
|
189
|
-
await server.pluginManager.register(createActionRegistryPlugin());
|
|
190
|
-
// Start server
|
|
191
|
-
const instance = await server.start();
|
|
192
|
-
console.log("\n🎯 Example requests:");
|
|
193
|
-
console.log(" curl http://localhost:3000/health");
|
|
194
|
-
console.log(" curl -X POST http://localhost:3000/actions/execute -H 'Content-Type: application/json' -d '{\"action\":\"greet\",\"args\":[\"World\"]}'");
|
|
195
|
-
console.log(" curl -X POST http://localhost:3000/actions/execute -H 'Content-Type: application/json' -d '{\"action\":\"calculate\",\"args\":[10,5,\"add\"]}'");
|
|
196
|
-
console.log("\nPress Ctrl+C to stop the server");
|
|
197
|
-
return instance;
|
|
198
|
-
};
|
|
199
|
-
// Export for use
|
|
200
|
-
export { createDeclarativeServer, createServerPlugin, createActionRegistryPlugin, routes, demonstrateDeclarativeServer };
|
|
201
|
-
// Run if called directly
|
|
202
|
-
if (import.meta.main) {
|
|
203
|
-
demonstrateDeclarativeServer().catch(console.error);
|
|
204
|
-
}
|
|
205
|
-
//# sourceMappingURL=server-declarative.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server-declarative.js","sourceRoot":"","sources":["../../examples/server-declarative.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared Action Registry - Declarative approach
|
|
3
|
-
* Eliminates code duplication across examples
|
|
4
|
-
*/
|
|
5
|
-
export type ActionHandler = (...args: any[]) => any;
|
|
6
|
-
export interface ActionDefinition {
|
|
7
|
-
name: string;
|
|
8
|
-
handler: ActionHandler;
|
|
9
|
-
description?: string;
|
|
10
|
-
}
|
|
11
|
-
export declare class ActionRegistry {
|
|
12
|
-
protected handlers: Map<string, ActionHandler>;
|
|
13
|
-
register(def: ActionDefinition): void;
|
|
14
|
-
execute(name: string, ...args: any[]): any;
|
|
15
|
-
list(): string[];
|
|
16
|
-
has(name: string): boolean;
|
|
17
|
-
clear(): void;
|
|
18
|
-
}
|
|
19
|
-
export declare const createActionRegistry: () => ActionRegistry;
|
|
20
|
-
export declare const defineActions: (category: string, actions: ActionDefinition[]) => {
|
|
21
|
-
category: string;
|
|
22
|
-
actions: ActionDefinition[];
|
|
23
|
-
register: (registry: ActionRegistry) => void;
|
|
24
|
-
};
|
|
25
|
-
export declare const mathActions: {
|
|
26
|
-
category: string;
|
|
27
|
-
actions: ActionDefinition[];
|
|
28
|
-
register: (registry: ActionRegistry) => void;
|
|
29
|
-
};
|
|
30
|
-
export declare const textActions: {
|
|
31
|
-
category: string;
|
|
32
|
-
actions: ActionDefinition[];
|
|
33
|
-
register: (registry: ActionRegistry) => void;
|
|
34
|
-
};
|
|
35
|
-
export declare const utilityActions: {
|
|
36
|
-
category: string;
|
|
37
|
-
actions: ActionDefinition[];
|
|
38
|
-
register: (registry: ActionRegistry) => void;
|
|
39
|
-
};
|
|
40
|
-
export declare const validationActions: {
|
|
41
|
-
category: string;
|
|
42
|
-
actions: ActionDefinition[];
|
|
43
|
-
register: (registry: ActionRegistry) => void;
|
|
44
|
-
};
|
|
45
|
-
//# sourceMappingURL=action-registry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"action-registry.d.ts","sourceRoot":"","sources":["../../../examples/shared/action-registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,aAAa,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,cAAc;IACzB,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAa;IAE3D,QAAQ,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI;IAIrC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG;IAQ1C,IAAI,IAAI,MAAM,EAAE;IAIhB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,KAAK,IAAI,IAAI;CAGd;AAGD,eAAO,MAAM,oBAAoB,sBAA6B,CAAC;AAE/D,eAAO,MAAM,aAAa,GAAI,UAAU,MAAM,EAAE,SAAS,gBAAgB,EAAE;;;yBAIlD,cAAc;CAItC,CAAC;AAGF,eAAO,MAAM,WAAW;;;yBAPC,cAAc;CAYrC,CAAC;AAEH,eAAO,MAAM,WAAW;;;yBAdC,cAAc;CAmBrC,CAAC;AAEH,eAAO,MAAM,cAAc;;;yBArBF,cAAc;CA4BrC,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;yBA9BL,cAAc;CAmCrC,CAAC"}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared Action Registry - Declarative approach
|
|
3
|
-
* Eliminates code duplication across examples
|
|
4
|
-
*/
|
|
5
|
-
export class ActionRegistry {
|
|
6
|
-
handlers = new Map();
|
|
7
|
-
register(def) {
|
|
8
|
-
this.handlers.set(def.name, def.handler);
|
|
9
|
-
}
|
|
10
|
-
execute(name, ...args) {
|
|
11
|
-
const handler = this.handlers.get(name);
|
|
12
|
-
if (!handler) {
|
|
13
|
-
throw new Error(`Action not found: ${name}`);
|
|
14
|
-
}
|
|
15
|
-
return handler(...args);
|
|
16
|
-
}
|
|
17
|
-
list() {
|
|
18
|
-
return Array.from(this.handlers.keys());
|
|
19
|
-
}
|
|
20
|
-
has(name) {
|
|
21
|
-
return this.handlers.has(name);
|
|
22
|
-
}
|
|
23
|
-
clear() {
|
|
24
|
-
this.handlers.clear();
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
// Declarative action definitions
|
|
28
|
-
export const createActionRegistry = () => new ActionRegistry();
|
|
29
|
-
export const defineActions = (category, actions) => {
|
|
30
|
-
return {
|
|
31
|
-
category,
|
|
32
|
-
actions,
|
|
33
|
-
register: (registry) => {
|
|
34
|
-
actions.forEach(action => registry.register(action));
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
};
|
|
38
|
-
// Common action categories
|
|
39
|
-
export const mathActions = defineActions('math', [
|
|
40
|
-
{ name: 'sum', handler: (a, b) => a + b },
|
|
41
|
-
{ name: 'multiply', handler: (a, b) => a * b },
|
|
42
|
-
{ name: 'power', handler: (base, exp) => Math.pow(base, exp) },
|
|
43
|
-
{ name: 'sqrt', handler: (n) => Math.sqrt(n) }
|
|
44
|
-
]);
|
|
45
|
-
export const textActions = defineActions('text', [
|
|
46
|
-
{ name: 'uppercase', handler: (text) => text.toUpperCase() },
|
|
47
|
-
{ name: 'lowercase', handler: (text) => text.toLowerCase() },
|
|
48
|
-
{ name: 'reverse', handler: (text) => text.split('').reverse().join('') },
|
|
49
|
-
{ name: 'capitalize', handler: (text) => text.charAt(0).toUpperCase() + text.slice(1).toLowerCase() }
|
|
50
|
-
]);
|
|
51
|
-
export const utilityActions = defineActions('utility', [
|
|
52
|
-
{ name: 'random', handler: (min, max) => Math.floor(Math.random() * (max - min + 1)) + min },
|
|
53
|
-
{ name: 'timestamp', handler: () => Date.now() },
|
|
54
|
-
{ name: 'delay', handler: async (ms) => {
|
|
55
|
-
await new Promise(resolve => setTimeout(resolve, ms));
|
|
56
|
-
return `Delayed ${ms}ms`;
|
|
57
|
-
} }
|
|
58
|
-
]);
|
|
59
|
-
export const validationActions = defineActions('validation', [
|
|
60
|
-
{ name: 'isEmail', handler: (email) => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email) },
|
|
61
|
-
{ name: 'isNumber', handler: (value) => !isNaN(parseFloat(value)) && isFinite(value) },
|
|
62
|
-
{ name: 'minLength', handler: (text, min) => text.length >= min },
|
|
63
|
-
{ name: 'maxLength', handler: (text, max) => text.length <= max }
|
|
64
|
-
]);
|
|
65
|
-
//# sourceMappingURL=action-registry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"action-registry.js","sourceRoot":"","sources":["../../../examples/shared/action-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Declarative Plugin Builder
|
|
3
|
-
* Provides a functional approach to create plugins without boilerplate
|
|
4
|
-
*/
|
|
5
|
-
import type { IPlugin, PluginContext } from "../../src/types";
|
|
6
|
-
export interface PluginDefinition {
|
|
7
|
-
name: string;
|
|
8
|
-
version: string;
|
|
9
|
-
description?: string;
|
|
10
|
-
author?: string;
|
|
11
|
-
defaultConfig?: Record<string, any>;
|
|
12
|
-
actions?: any[];
|
|
13
|
-
onLoad?: (context: PluginContext) => void | Promise<void>;
|
|
14
|
-
onUnload?: () => void | Promise<void>;
|
|
15
|
-
sharedApi?: any;
|
|
16
|
-
}
|
|
17
|
-
export interface ActionPluginDefinition extends PluginDefinition {
|
|
18
|
-
registryName: string;
|
|
19
|
-
actionCategories?: any[];
|
|
20
|
-
customActions?: any[];
|
|
21
|
-
}
|
|
22
|
-
export interface StoragePluginDefinition extends PluginDefinition {
|
|
23
|
-
storageOperations?: StorageOperation[];
|
|
24
|
-
}
|
|
25
|
-
export interface StorageOperation {
|
|
26
|
-
type: 'get' | 'set' | 'delete' | 'clear';
|
|
27
|
-
key: string;
|
|
28
|
-
value?: any;
|
|
29
|
-
defaultValue?: any;
|
|
30
|
-
description?: string;
|
|
31
|
-
}
|
|
32
|
-
export declare const createPlugin: (def: PluginDefinition) => IPlugin;
|
|
33
|
-
export declare const createActionPlugin: (def: ActionPluginDefinition) => IPlugin;
|
|
34
|
-
export declare const storageOps: {
|
|
35
|
-
get: (key: string, defaultValue?: any) => StorageOperation;
|
|
36
|
-
set: (key: string, value: any) => StorageOperation;
|
|
37
|
-
delete: (key: string) => StorageOperation;
|
|
38
|
-
clear: () => StorageOperation;
|
|
39
|
-
};
|
|
40
|
-
export declare const runDemo: (name: string, demoFn: () => Promise<void>) => Promise<void>;
|
|
41
|
-
//# sourceMappingURL=plugin-builder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-builder.d.ts","sourceRoot":"","sources":["../../../examples/shared/plugin-builder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAG9D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,SAAS,CAAC,EAAE,GAAG,CAAC;CACjB;AAED,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,GAAG,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC/D,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,YAAY,GAAI,KAAK,gBAAgB,KAAG,OAsBnD,CAAC;AAGH,eAAO,MAAM,kBAAkB,GAAI,KAAK,sBAAsB,KAAG,OAkChE,CAAC;AAGF,eAAO,MAAM,UAAU;eACV,MAAM,iBAAiB,GAAG,KAAG,gBAAgB;eAG7C,MAAM,SAAS,GAAG,KAAG,gBAAgB;kBAGlC,MAAM,KAAG,gBAAgB;iBAG5B,gBAAgB;CAG5B,CAAC;AAGF,eAAO,MAAM,OAAO,GAAU,MAAM,MAAM,EAAE,QAAQ,MAAM,OAAO,CAAC,IAAI,CAAC,kBAQtE,CAAC"}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Declarative Plugin Builder
|
|
3
|
-
* Provides a functional approach to create plugins without boilerplate
|
|
4
|
-
*/
|
|
5
|
-
import { ActionRegistry } from "./action-registry";
|
|
6
|
-
// Generic plugin builder
|
|
7
|
-
export const createPlugin = (def) => ({
|
|
8
|
-
name: def.name,
|
|
9
|
-
version: def.version,
|
|
10
|
-
description: def.description,
|
|
11
|
-
author: def.author,
|
|
12
|
-
defaultConfig: def.defaultConfig,
|
|
13
|
-
async onLoad(context) {
|
|
14
|
-
if (def.onLoad) {
|
|
15
|
-
await def.onLoad(context);
|
|
16
|
-
}
|
|
17
|
-
// Register shared API if provided
|
|
18
|
-
if (def.sharedApi) {
|
|
19
|
-
context.registerApi(def.sharedApi);
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
async onUnload() {
|
|
23
|
-
if (def.onUnload) {
|
|
24
|
-
await def.onUnload();
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
});
|
|
28
|
-
// Specialized builder for action registry plugins
|
|
29
|
-
export const createActionPlugin = (def) => {
|
|
30
|
-
const registry = new ActionRegistry();
|
|
31
|
-
return createPlugin({
|
|
32
|
-
...def,
|
|
33
|
-
onLoad: async (context) => {
|
|
34
|
-
// Register with central registry
|
|
35
|
-
const centralRegistry = await context.getPlugin(def.registryName);
|
|
36
|
-
if (centralRegistry) {
|
|
37
|
-
// Register action categories
|
|
38
|
-
def.actionCategories?.forEach(category => category.register(centralRegistry));
|
|
39
|
-
// Register custom actions
|
|
40
|
-
def.customActions?.forEach(action => centralRegistry.register(action));
|
|
41
|
-
context.log.info(`Registered ${def.actionCategories?.length || 0} action categories`);
|
|
42
|
-
}
|
|
43
|
-
// Call custom onLoad if provided
|
|
44
|
-
if (def.onLoad) {
|
|
45
|
-
await def.onLoad(context);
|
|
46
|
-
}
|
|
47
|
-
// Register shared API
|
|
48
|
-
context.registerApi({
|
|
49
|
-
name: def.name,
|
|
50
|
-
version: def.version,
|
|
51
|
-
actions: [
|
|
52
|
-
...(def.actionCategories?.flatMap(cat => cat.actions.map((a) => a.name)) || []),
|
|
53
|
-
...(def.customActions?.map(a => a.name) || [])
|
|
54
|
-
]
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
};
|
|
59
|
-
// Storage operation helpers
|
|
60
|
-
export const storageOps = {
|
|
61
|
-
get: (key, defaultValue) => ({
|
|
62
|
-
type: 'get', key, defaultValue, description: `Get ${key}`
|
|
63
|
-
}),
|
|
64
|
-
set: (key, value) => ({
|
|
65
|
-
type: 'set', key, value, description: `Set ${key}`
|
|
66
|
-
}),
|
|
67
|
-
delete: (key) => ({
|
|
68
|
-
type: 'delete', key, description: `Delete ${key}`
|
|
69
|
-
}),
|
|
70
|
-
clear: () => ({
|
|
71
|
-
type: 'clear', key: '*', description: 'Clear all storage'
|
|
72
|
-
})
|
|
73
|
-
};
|
|
74
|
-
// Demo runner utility
|
|
75
|
-
export const runDemo = async (name, demoFn) => {
|
|
76
|
-
console.log(`\n🚀 ${name}\n`);
|
|
77
|
-
try {
|
|
78
|
-
await demoFn();
|
|
79
|
-
console.log(`\n✅ ${name} completed\n`);
|
|
80
|
-
}
|
|
81
|
-
catch (error) {
|
|
82
|
-
console.error(`\n❌ ${name} failed:`, error);
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
//# sourceMappingURL=plugin-builder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-builder.js","sourceRoot":"","sources":["../../../examples/shared/plugin-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
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
|
-
declare const createCounterPlugin: () => import("bun_plugins").IPlugin;
|
|
8
|
-
declare const createUserPlugin: () => import("bun_plugins").IPlugin;
|
|
9
|
-
declare const createAnalyticsPlugin: () => import("bun_plugins").IPlugin;
|
|
10
|
-
declare const createCrudPlugin: () => import("bun_plugins").IPlugin;
|
|
11
|
-
declare const demonstrateDeclarativeStorage: () => Promise<void>;
|
|
12
|
-
export { createCounterPlugin, createUserPlugin, createAnalyticsPlugin, createCrudPlugin, demonstrateDeclarativeStorage };
|
|
13
|
-
//# sourceMappingURL=storage-declarative.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"storage-declarative.d.ts","sourceRoot":"","sources":["../../examples/storage-declarative.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqCH,QAAA,MAAM,mBAAmB,qCA0BvB,CAAC;AAGH,QAAA,MAAM,gBAAgB,qCAkCpB,CAAC;AAGH,QAAA,MAAM,qBAAqB,qCAsCzB,CAAC;AAGH,QAAA,MAAM,gBAAgB,qCA2EpB,CAAC;AAGH,QAAA,MAAM,6BAA6B,qBAelC,CAAC;AAGF,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,6BAA6B,EAC9B,CAAC"}
|