bun_plugins 1.0.0
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 +81 -0
- package/dist/PluginManager.d.ts +62 -0
- package/dist/PluginManager.d.ts.map +1 -0
- package/dist/PluginManager.js +557 -0
- package/dist/PluginManager.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/managers/ContextFactory.d.ts +6 -0
- package/dist/managers/ContextFactory.d.ts.map +1 -0
- package/dist/managers/ContextFactory.js +109 -0
- package/dist/managers/ContextFactory.js.map +1 -0
- package/dist/managers/DependencyManager.d.ts +10 -0
- package/dist/managers/DependencyManager.d.ts.map +1 -0
- package/dist/managers/DependencyManager.js +94 -0
- package/dist/managers/DependencyManager.js.map +1 -0
- package/dist/managers/HooksManager.d.ts +21 -0
- package/dist/managers/HooksManager.d.ts.map +1 -0
- package/dist/managers/HooksManager.js +117 -0
- package/dist/managers/HooksManager.js.map +1 -0
- package/dist/managers/ResourceManager.d.ts +16 -0
- package/dist/managers/ResourceManager.d.ts.map +1 -0
- package/dist/managers/ResourceManager.js +50 -0
- package/dist/managers/ResourceManager.js.map +1 -0
- package/dist/storage/JsonPluginStorage.d.ts +14 -0
- 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/types.d.ts +167 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +56 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/errorParser.d.ts +3 -0
- package/dist/utils/errorParser.d.ts.map +1 -0
- package/dist/utils/errorParser.js +23 -0
- package/dist/utils/errorParser.js.map +1 -0
- package/dist/utils/pluginValidator.d.ts +47 -0
- package/dist/utils/pluginValidator.d.ts.map +1 -0
- package/dist/utils/pluginValidator.js +76 -0
- package/dist/utils/pluginValidator.js.map +1 -0
- package/dist/utils/security.d.ts +3 -0
- package/dist/utils/security.d.ts.map +1 -0
- package/dist/utils/security.js +26 -0
- package/dist/utils/security.js.map +1 -0
- package/dist/worker/WorkerRunner.d.ts +2 -0
- package/dist/worker/WorkerRunner.d.ts.map +1 -0
- package/dist/worker/WorkerRunner.js +254 -0
- package/dist/worker/WorkerRunner.js.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import { parentPort, workerData } from "worker_threads";
|
|
2
|
+
import { WorkerMessageType, PluginPermission, RPCMethod, HookType } from "../types";
|
|
3
|
+
import { errorParser } from "../utils/errorParser";
|
|
4
|
+
// This is the "Shell" that runs inside the Worker.
|
|
5
|
+
// It receives the plugin path, loads it, and executes onLoad.
|
|
6
|
+
// It creates a proxy Context that talks back to the main thread via postMessage.
|
|
7
|
+
if (!parentPort)
|
|
8
|
+
throw new Error("WorkerRunner must be spawned as a Worker");
|
|
9
|
+
const { pluginPath, pluginName } = workerData;
|
|
10
|
+
// Map to store callbacks for hooks and events
|
|
11
|
+
const hookCallbacks = new Map();
|
|
12
|
+
const localEventListeners = new Map();
|
|
13
|
+
// Simple RPC Helper
|
|
14
|
+
function rpc(method, ...args) {
|
|
15
|
+
return new Promise((resolve, reject) => {
|
|
16
|
+
const id = Math.random().toString(36).substring(7);
|
|
17
|
+
const handler = (msg) => {
|
|
18
|
+
if (msg.id === id) {
|
|
19
|
+
parentPort.off('message', handler);
|
|
20
|
+
if (msg.error)
|
|
21
|
+
reject(new Error(msg.error));
|
|
22
|
+
else
|
|
23
|
+
resolve(msg.result);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
parentPort.on('message', handler);
|
|
27
|
+
parentPort.postMessage({ type: WorkerMessageType.RPC_CALL, id, method, args });
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
async function run() {
|
|
31
|
+
let plugin = undefined;
|
|
32
|
+
// Setup message handler for incoming requests from Main Thread
|
|
33
|
+
parentPort.on('message', async (msg) => {
|
|
34
|
+
if (msg.type === WorkerMessageType.HOOK_CALL) {
|
|
35
|
+
const { id, args, requestId } = msg;
|
|
36
|
+
const callback = hookCallbacks.get(id);
|
|
37
|
+
if (callback) {
|
|
38
|
+
try {
|
|
39
|
+
const result = await callback(args);
|
|
40
|
+
parentPort.postMessage({ type: WorkerMessageType.HOOK_RESULT, requestId, result });
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
const error = errorParser(e, `Error in hook ${id}`);
|
|
44
|
+
parentPort.postMessage({ type: WorkerMessageType.HOOK_ERROR, requestId, error: error.message });
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
parentPort.postMessage({ type: WorkerMessageType.HOOK_ERROR, requestId, error: "Hook not found" });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else if (msg.type === WorkerMessageType.EVENT_EMIT) {
|
|
52
|
+
const { event, payload } = msg;
|
|
53
|
+
const listeners = localEventListeners.get(event);
|
|
54
|
+
if (listeners) {
|
|
55
|
+
for (const cb of listeners) {
|
|
56
|
+
try {
|
|
57
|
+
await cb(payload);
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
const error = errorParser(e, `Error in event listener for ${event}`);
|
|
61
|
+
console.error(`[Worker:${pluginName}] Error in event listener for ${event}:`, error.message);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else if (msg.type === WorkerMessageType.UNLOAD) {
|
|
67
|
+
console.log(`[Worker:${pluginName}] Received UNLOAD signal.`);
|
|
68
|
+
if (plugin && plugin.onUnload) {
|
|
69
|
+
try {
|
|
70
|
+
await plugin.onUnload();
|
|
71
|
+
}
|
|
72
|
+
catch (e) {
|
|
73
|
+
console.error(`[Worker:${pluginName}] Error during onUnload:`, e);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
process.exit(0);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
try {
|
|
80
|
+
console.log(`[Worker:${pluginName}] Loading plugin from ${pluginPath}...`);
|
|
81
|
+
// Dynamic Import of the Plugin
|
|
82
|
+
const module = await import(pluginPath);
|
|
83
|
+
// Find the plugin object (default export or named export compliant with IPlugin)
|
|
84
|
+
const findPlugin = (exp) => {
|
|
85
|
+
if (!exp)
|
|
86
|
+
return null;
|
|
87
|
+
// Case 1: Instance of IPlugin
|
|
88
|
+
if (exp.name && typeof exp.onLoad === 'function')
|
|
89
|
+
return exp;
|
|
90
|
+
// Case 2: Class/Constructor of IPlugin
|
|
91
|
+
if (typeof exp === 'function' && exp.prototype) {
|
|
92
|
+
try {
|
|
93
|
+
const instance = new exp();
|
|
94
|
+
if (instance.name && typeof instance.onLoad === 'function')
|
|
95
|
+
return instance;
|
|
96
|
+
}
|
|
97
|
+
catch (e) {
|
|
98
|
+
// Not a parameterless constructor or not a plugin
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return null;
|
|
102
|
+
};
|
|
103
|
+
plugin = findPlugin(module.default);
|
|
104
|
+
if (!plugin) {
|
|
105
|
+
// Search for first exported object that looks like a plugin or a plugin class
|
|
106
|
+
for (const exp of Object.values(module)) {
|
|
107
|
+
const candidate = findPlugin(exp);
|
|
108
|
+
if (candidate) {
|
|
109
|
+
plugin = candidate;
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (!plugin) {
|
|
115
|
+
throw new Error(`[Worker:${pluginName}] No valid plugin found in ${pluginPath}. Ensure you export an instance or class that implements IPlugin.`);
|
|
116
|
+
}
|
|
117
|
+
// Send Manifest immediately after load for security context initialization in host
|
|
118
|
+
parentPort.postMessage({
|
|
119
|
+
type: WorkerMessageType.MANIFEST,
|
|
120
|
+
metadata: {
|
|
121
|
+
name: plugin.name,
|
|
122
|
+
version: plugin.version,
|
|
123
|
+
description: plugin.description,
|
|
124
|
+
author: plugin.author,
|
|
125
|
+
permissions: plugin.permissions,
|
|
126
|
+
allowedDomains: plugin.allowedDomains
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
// Create Proxy Context
|
|
130
|
+
const contextProxy = {
|
|
131
|
+
manager: {}, // Manager is not accessible remotely directly
|
|
132
|
+
config: plugin.defaultConfig || {}, // Initial config (todo: fetch actual valid config)
|
|
133
|
+
storage: {
|
|
134
|
+
get: (key) => rpc(RPCMethod.StorageGet, key),
|
|
135
|
+
set: (key, val) => rpc(RPCMethod.StorageSet, key, val),
|
|
136
|
+
delete: (key) => rpc(RPCMethod.StorageDelete, key),
|
|
137
|
+
clear: () => rpc(RPCMethod.StorageClear)
|
|
138
|
+
},
|
|
139
|
+
emit: (event, payload) => rpc(RPCMethod.EventsEmit, event, payload),
|
|
140
|
+
on: (event, cb) => {
|
|
141
|
+
const evtName = event;
|
|
142
|
+
if (!localEventListeners.has(evtName)) {
|
|
143
|
+
localEventListeners.set(evtName, new Set());
|
|
144
|
+
// Register intention to listen with main thread
|
|
145
|
+
rpc(RPCMethod.EventsOn, evtName);
|
|
146
|
+
}
|
|
147
|
+
localEventListeners.get(evtName).add(cb);
|
|
148
|
+
},
|
|
149
|
+
events: {
|
|
150
|
+
emit: (event, payload) => rpc(RPCMethod.EventsEmit, event, payload),
|
|
151
|
+
on: (event, cb) => contextProxy.on(event, cb)
|
|
152
|
+
},
|
|
153
|
+
getPlugin: (name) => rpc(RPCMethod.ManagerGetPlugin, name),
|
|
154
|
+
log: {
|
|
155
|
+
info: (msg, ...args) => rpc(RPCMethod.Log, 'info', msg, ...args),
|
|
156
|
+
warn: (msg, ...args) => rpc(RPCMethod.Log, 'warn', msg, ...args),
|
|
157
|
+
error: (msg, ...args) => rpc(RPCMethod.Log, 'error', msg, ...args),
|
|
158
|
+
},
|
|
159
|
+
createWorker: () => { throw new Error("Nested workers not supported in isolation yet"); },
|
|
160
|
+
// wrappers
|
|
161
|
+
network: {
|
|
162
|
+
fetch: async (input, init) => {
|
|
163
|
+
const res = await rpc(RPCMethod.NetworkFetch, input, init);
|
|
164
|
+
// Reconstruct a subset of Response
|
|
165
|
+
return {
|
|
166
|
+
status: res.status,
|
|
167
|
+
statusText: res.statusText,
|
|
168
|
+
ok: res.status >= 200 && res.status < 300,
|
|
169
|
+
headers: new Headers(res.headers),
|
|
170
|
+
text: async () => res.body,
|
|
171
|
+
json: async () => JSON.parse(res.body)
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
file: (path) => {
|
|
176
|
+
throw new Error("File access restricted in worker mode");
|
|
177
|
+
},
|
|
178
|
+
env: new Proxy({}, {
|
|
179
|
+
get: (_, prop) => {
|
|
180
|
+
// We should pass env in workerData or allow async fetch?
|
|
181
|
+
// Verify logic: environment variables are process-level, worker might share them?
|
|
182
|
+
// For now, allow reading process.env but access is gated by main thread logic (which we don't effectively block here easily without proxies).
|
|
183
|
+
return process.env[prop];
|
|
184
|
+
}
|
|
185
|
+
}),
|
|
186
|
+
setTimeout: setTimeout,
|
|
187
|
+
setInterval: setInterval,
|
|
188
|
+
clearTimeout: clearTimeout,
|
|
189
|
+
clearInterval: clearInterval
|
|
190
|
+
};
|
|
191
|
+
// Run setup (Hooks)
|
|
192
|
+
if (plugin.setup) {
|
|
193
|
+
const builderVal = {
|
|
194
|
+
onResolve: (filter, callback, options) => {
|
|
195
|
+
const hookId = Math.random().toString(36).substring(7);
|
|
196
|
+
hookCallbacks.set(hookId, callback);
|
|
197
|
+
// We need to pass the filter source string
|
|
198
|
+
rpc(RPCMethod.HooksRegister, HookType.ON_RESOLVE, {
|
|
199
|
+
filter: filter.source,
|
|
200
|
+
pluginName,
|
|
201
|
+
id: hookId,
|
|
202
|
+
options
|
|
203
|
+
});
|
|
204
|
+
},
|
|
205
|
+
onLoad: (filter, callback, options) => {
|
|
206
|
+
const hookId = Math.random().toString(36).substring(7);
|
|
207
|
+
hookCallbacks.set(hookId, callback);
|
|
208
|
+
rpc(RPCMethod.HooksRegister, HookType.ON_LOAD, {
|
|
209
|
+
filter: filter.source,
|
|
210
|
+
pluginName,
|
|
211
|
+
id: hookId,
|
|
212
|
+
options
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
await plugin.setup(builderVal);
|
|
217
|
+
}
|
|
218
|
+
// Run onLoad
|
|
219
|
+
if (plugin.onLoad) {
|
|
220
|
+
await plugin.onLoad(contextProxy);
|
|
221
|
+
parentPort.postMessage({
|
|
222
|
+
type: WorkerMessageType.LOAD_SUCCESS,
|
|
223
|
+
metadata: {
|
|
224
|
+
name: plugin.name,
|
|
225
|
+
version: plugin.version,
|
|
226
|
+
description: plugin.description,
|
|
227
|
+
author: plugin.author,
|
|
228
|
+
permissions: plugin.permissions,
|
|
229
|
+
allowedDomains: plugin.allowedDomains
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
// Listen for START_UP signal to run onStarted
|
|
234
|
+
parentPort.on('message', async (msg) => {
|
|
235
|
+
if (msg.type === WorkerMessageType.START_UP) {
|
|
236
|
+
if (plugin && plugin.onStarted) {
|
|
237
|
+
try {
|
|
238
|
+
await plugin.onStarted();
|
|
239
|
+
}
|
|
240
|
+
catch (e) {
|
|
241
|
+
console.error(`[Worker:${pluginName}] Error in onStarted:`, e);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
catch (e) {
|
|
248
|
+
const error = errorParser(e, `[Worker:${pluginName}] Error:`);
|
|
249
|
+
console.error(error.message);
|
|
250
|
+
parentPort.postMessage({ type: WorkerMessageType.LOAD_ERROR, error: error.message });
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
run();
|
|
254
|
+
//# sourceMappingURL=WorkerRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkerRunner.js","sourceRoot":"","sources":["../../src/worker/WorkerRunner.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "bun_plugins",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "A powerful and secure plugin system for Bun applications",
|
|
5
|
+
"author": "memelser <nglmercer@gmail.com>",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/nglmercer/bun_plugins.git"
|
|
9
|
+
},
|
|
10
|
+
"bugs": {
|
|
11
|
+
"url": "https://github.com/nglmercer/bun_plugins/issues"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://github.com/nglmercer/bun_plugins#readme",
|
|
14
|
+
"main": "dist/index.js",
|
|
15
|
+
"module": "dist/index.js",
|
|
16
|
+
"types": "dist/index.d.ts",
|
|
17
|
+
"type": "module",
|
|
18
|
+
"files": [
|
|
19
|
+
"dist"
|
|
20
|
+
],
|
|
21
|
+
"exports": {
|
|
22
|
+
".": {
|
|
23
|
+
"import": "./dist/index.js",
|
|
24
|
+
"types": "./dist/index.d.ts"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"scripts": {
|
|
28
|
+
"build": "rm -rf dist && tsc",
|
|
29
|
+
"test": "bun test ./tests",
|
|
30
|
+
"typecheck": "bun tsc --noEmit",
|
|
31
|
+
"prepublishOnly": "bun run build"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@types/bun": "latest",
|
|
35
|
+
"@types/semver": "^7.7.1",
|
|
36
|
+
"bun_plugins": "^1.0.4",
|
|
37
|
+
"typescript": "^5.0.0"
|
|
38
|
+
},
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"semver": "^7.7.3",
|
|
41
|
+
"zod": "^3.23.0"
|
|
42
|
+
}
|
|
43
|
+
}
|