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.
Files changed (50) hide show
  1. package/README.md +81 -0
  2. package/dist/PluginManager.d.ts +62 -0
  3. package/dist/PluginManager.d.ts.map +1 -0
  4. package/dist/PluginManager.js +557 -0
  5. package/dist/PluginManager.js.map +1 -0
  6. package/dist/index.d.ts +6 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +5 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/managers/ContextFactory.d.ts +6 -0
  11. package/dist/managers/ContextFactory.d.ts.map +1 -0
  12. package/dist/managers/ContextFactory.js +109 -0
  13. package/dist/managers/ContextFactory.js.map +1 -0
  14. package/dist/managers/DependencyManager.d.ts +10 -0
  15. package/dist/managers/DependencyManager.d.ts.map +1 -0
  16. package/dist/managers/DependencyManager.js +94 -0
  17. package/dist/managers/DependencyManager.js.map +1 -0
  18. package/dist/managers/HooksManager.d.ts +21 -0
  19. package/dist/managers/HooksManager.d.ts.map +1 -0
  20. package/dist/managers/HooksManager.js +117 -0
  21. package/dist/managers/HooksManager.js.map +1 -0
  22. package/dist/managers/ResourceManager.d.ts +16 -0
  23. package/dist/managers/ResourceManager.d.ts.map +1 -0
  24. package/dist/managers/ResourceManager.js +50 -0
  25. package/dist/managers/ResourceManager.js.map +1 -0
  26. package/dist/storage/JsonPluginStorage.d.ts +14 -0
  27. package/dist/storage/JsonPluginStorage.d.ts.map +1 -0
  28. package/dist/storage/JsonPluginStorage.js +63 -0
  29. package/dist/storage/JsonPluginStorage.js.map +1 -0
  30. package/dist/types.d.ts +167 -0
  31. package/dist/types.d.ts.map +1 -0
  32. package/dist/types.js +56 -0
  33. package/dist/types.js.map +1 -0
  34. package/dist/utils/errorParser.d.ts +3 -0
  35. package/dist/utils/errorParser.d.ts.map +1 -0
  36. package/dist/utils/errorParser.js +23 -0
  37. package/dist/utils/errorParser.js.map +1 -0
  38. package/dist/utils/pluginValidator.d.ts +47 -0
  39. package/dist/utils/pluginValidator.d.ts.map +1 -0
  40. package/dist/utils/pluginValidator.js +76 -0
  41. package/dist/utils/pluginValidator.js.map +1 -0
  42. package/dist/utils/security.d.ts +3 -0
  43. package/dist/utils/security.d.ts.map +1 -0
  44. package/dist/utils/security.js +26 -0
  45. package/dist/utils/security.js.map +1 -0
  46. package/dist/worker/WorkerRunner.d.ts +2 -0
  47. package/dist/worker/WorkerRunner.d.ts.map +1 -0
  48. package/dist/worker/WorkerRunner.js +254 -0
  49. package/dist/worker/WorkerRunner.js.map +1 -0
  50. 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
+ }