procxy 0.1.0-alpha.1

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 (55) hide show
  1. package/CHANGELOG.md +125 -0
  2. package/README.md +936 -0
  3. package/dist/child/agent.d.ts +3 -0
  4. package/dist/child/agent.d.ts.map +1 -0
  5. package/dist/child/agent.js +126 -0
  6. package/dist/child/agent.js.map +1 -0
  7. package/dist/child/child-proxy.d.ts +23 -0
  8. package/dist/child/child-proxy.d.ts.map +1 -0
  9. package/dist/child/child-proxy.js +193 -0
  10. package/dist/child/child-proxy.js.map +1 -0
  11. package/dist/child/event-bridge.d.ts +15 -0
  12. package/dist/child/event-bridge.d.ts.map +1 -0
  13. package/dist/child/event-bridge.js +51 -0
  14. package/dist/child/event-bridge.js.map +1 -0
  15. package/dist/index.d.ts +11 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +8 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/parent/ipc-client.d.ts +31 -0
  20. package/dist/parent/ipc-client.d.ts.map +1 -0
  21. package/dist/parent/ipc-client.js +316 -0
  22. package/dist/parent/ipc-client.js.map +1 -0
  23. package/dist/parent/parent-proxy.d.ts +4 -0
  24. package/dist/parent/parent-proxy.d.ts.map +1 -0
  25. package/dist/parent/parent-proxy.js +76 -0
  26. package/dist/parent/parent-proxy.js.map +1 -0
  27. package/dist/parent/procxy.d.ts +6 -0
  28. package/dist/parent/procxy.d.ts.map +1 -0
  29. package/dist/parent/procxy.js +120 -0
  30. package/dist/parent/procxy.js.map +1 -0
  31. package/dist/shared/errors.d.ts +31 -0
  32. package/dist/shared/errors.d.ts.map +1 -0
  33. package/dist/shared/errors.js +85 -0
  34. package/dist/shared/errors.js.map +1 -0
  35. package/dist/shared/module-resolver.d.ts +6 -0
  36. package/dist/shared/module-resolver.d.ts.map +1 -0
  37. package/dist/shared/module-resolver.js +99 -0
  38. package/dist/shared/module-resolver.js.map +1 -0
  39. package/dist/shared/protocol.d.ts +86 -0
  40. package/dist/shared/protocol.d.ts.map +1 -0
  41. package/dist/shared/protocol.js +2 -0
  42. package/dist/shared/protocol.js.map +1 -0
  43. package/dist/shared/serialization.d.ts +20 -0
  44. package/dist/shared/serialization.d.ts.map +1 -0
  45. package/dist/shared/serialization.js +96 -0
  46. package/dist/shared/serialization.js.map +1 -0
  47. package/dist/types/options.d.ts +9 -0
  48. package/dist/types/options.d.ts.map +1 -0
  49. package/dist/types/options.js +2 -0
  50. package/dist/types/options.js.map +1 -0
  51. package/dist/types/procxy.d.ts +50 -0
  52. package/dist/types/procxy.d.ts.map +1 -0
  53. package/dist/types/procxy.js +2 -0
  54. package/dist/types/procxy.js.map +1 -0
  55. package/package.json +87 -0
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/child/agent.ts"],"names":[],"mappings":""}
@@ -0,0 +1,126 @@
1
+ #!/usr/bin/env node
2
+ import { pathToFileURL } from 'node:url';
3
+ import { ModuleResolutionError } from '../shared/errors.js';
4
+ import { validateJsonifiableArray } from '../shared/serialization.js';
5
+ import { ChildProxy } from './child-proxy.js';
6
+ let childProxy;
7
+ function sendToParent(message) {
8
+ if (process.send) {
9
+ process.send(message);
10
+ }
11
+ }
12
+ function toErrorInfo(error) {
13
+ if (error instanceof Error) {
14
+ return {
15
+ name: error.name,
16
+ message: error.message,
17
+ stack: error.stack,
18
+ code: error.code
19
+ };
20
+ }
21
+ return {
22
+ name: 'Error',
23
+ message: typeof error === 'string' ? error : 'Unknown error'
24
+ };
25
+ }
26
+ async function handleInit(message) {
27
+ try {
28
+ validateJsonifiableArray(message.constructorArgs, 'constructor arguments');
29
+ let modulePath = message.modulePath;
30
+ if (!modulePath.startsWith('file://')) {
31
+ modulePath = pathToFileURL(modulePath).toString();
32
+ }
33
+ const importedModule = await import(modulePath);
34
+ const TargetClass = importedModule[message.className];
35
+ if (!TargetClass) {
36
+ throw new ModuleResolutionError(message.className, `Class not found in module '${message.modulePath}'`);
37
+ }
38
+ if (typeof TargetClass !== 'function') {
39
+ throw new ModuleResolutionError(message.className, `'${message.className}' is not a constructor`);
40
+ }
41
+ const instance = new TargetClass(...message.constructorArgs);
42
+ childProxy = new ChildProxy(instance, sendToParent);
43
+ const success = { type: 'INIT_SUCCESS' };
44
+ sendToParent(success);
45
+ }
46
+ catch (error) {
47
+ const failure = {
48
+ type: 'INIT_FAILURE',
49
+ error: toErrorInfo(error)
50
+ };
51
+ sendToParent(failure);
52
+ process.exit(1);
53
+ }
54
+ }
55
+ async function handleParentMessage(message) {
56
+ if (message.type === 'INIT') {
57
+ await handleInit(message);
58
+ return;
59
+ }
60
+ if (message.type === 'DISPOSE') {
61
+ if (!childProxy) {
62
+ const response = { type: 'DISPOSE_COMPLETE' };
63
+ sendToParent(response);
64
+ return;
65
+ }
66
+ try {
67
+ await childProxy.dispose();
68
+ const response = { type: 'DISPOSE_COMPLETE' };
69
+ sendToParent(response);
70
+ }
71
+ catch (error) {
72
+ const response = {
73
+ type: 'DISPOSE_COMPLETE',
74
+ error: toErrorInfo(error)
75
+ };
76
+ sendToParent(response);
77
+ }
78
+ return;
79
+ }
80
+ if (message.type === 'EVENT_SUBSCRIBE') {
81
+ if (childProxy) {
82
+ childProxy.subscribeEvent(message.eventName);
83
+ }
84
+ return;
85
+ }
86
+ if (message.type === 'EVENT_UNSUBSCRIBE') {
87
+ if (childProxy) {
88
+ childProxy.unsubscribeEvent(message.eventName);
89
+ }
90
+ return;
91
+ }
92
+ if (message.type === 'CALLBACK_RESULT' || message.type === 'CALLBACK_ERROR') {
93
+ if (childProxy) {
94
+ childProxy.handleCallbackResponse(message);
95
+ }
96
+ return;
97
+ }
98
+ if (message.type === 'PROPERTY_RESULT') {
99
+ if (childProxy) {
100
+ childProxy.handlePropertyResult(message);
101
+ }
102
+ return;
103
+ }
104
+ if (!childProxy) {
105
+ const errorInfo = toErrorInfo(new Error('Child agent not initialized'));
106
+ sendToParent({ type: 'ERROR', id: message.id, error: errorInfo });
107
+ return;
108
+ }
109
+ await childProxy.handleRequest(message);
110
+ }
111
+ function setupIpcListener() {
112
+ if (!process.send) {
113
+ console.error('Child agent must be run with IPC enabled (e.g., via child_process.fork)');
114
+ process.exit(1);
115
+ }
116
+ process.on('message', (msg) => {
117
+ handleParentMessage(msg).catch((error) => {
118
+ console.error('Failed to handle IPC message:', error);
119
+ });
120
+ });
121
+ process.on('disconnect', () => {
122
+ process.exit(0);
123
+ });
124
+ }
125
+ setupIpcListener();
126
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/child/agent.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAUzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,IAAI,UAAkC,CAAC;AAEvC,SAAS,YAAY,CAAC,OAA6B;IACjD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,IAAI,EAAG,KAAa,CAAC,IAAI;SAC1B,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe;KAC7D,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,OAAoB;IAC5C,IAAI,CAAC;QACH,wBAAwB,CAAC,OAAO,CAAC,eAAe,EAAE,uBAAuB,CAAC,CAAC;QAE3E,IAAI,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACtC,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;QACpD,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEtD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,qBAAqB,CAC7B,OAAO,CAAC,SAAS,EACjB,8BAA8B,OAAO,CAAC,UAAU,GAAG,CACpD,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE,CAAC;YACtC,MAAM,IAAI,qBAAqB,CAC7B,OAAO,CAAC,SAAS,EACjB,IAAI,OAAO,CAAC,SAAS,wBAAwB,CAC9C,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QAC7D,UAAU,GAAG,IAAI,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAEpD,MAAM,OAAO,GAAgB,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;QACtD,YAAY,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAgB;YAC3B,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC;SAC1B,CAAC;QACF,YAAY,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,OAA6B;IAC9D,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5B,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAoB,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;YAC/D,YAAY,CAAC,QAAQ,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAoB,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;YAC/D,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAoB;gBAChC,IAAI,EAAE,kBAAkB;gBACxB,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC;aAC1B,CAAC;YACF,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACvC,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACzC,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,IAAI,OAAO,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QAC5E,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACvC,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACxE,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAClE,OAAO;IACT,CAAC;IAED,MAAM,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,gBAAgB;IACvB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAC;QACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAyB,EAAE,EAAE;QAClD,mBAAmB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACvC,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;QAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { Request, ChildToParentMessage, CallbackResult, CallbackError, PropertyResult } from '../shared/protocol.js';
2
+ export declare class ChildProxy {
3
+ private readonly target;
4
+ private readonly send;
5
+ private eventBridge?;
6
+ private readonly pendingCallbacks;
7
+ private readonly pendingProperties;
8
+ private proxiedTarget;
9
+ constructor(target: any, send: (message: ChildToParentMessage) => void);
10
+ handleRequest(message: Request): Promise<void>;
11
+ private capturePublicProperties;
12
+ private sendPropertyUpdates;
13
+ private deserializeArg;
14
+ private invokeCallback;
15
+ handleCallbackResponse(message: CallbackResult | CallbackError): void;
16
+ handlePropertyResult(message: PropertyResult): void;
17
+ private sendSuccess;
18
+ private sendError;
19
+ dispose(): Promise<void>;
20
+ subscribeEvent(eventName: string): void;
21
+ unsubscribeEvent(eventName: string): void;
22
+ }
23
+ //# sourceMappingURL=child-proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"child-proxy.d.ts","sourceRoot":"","sources":["../../src/child/child-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAEP,oBAAoB,EAGpB,cAAc,EACd,aAAa,EAEb,cAAc,EACf,MAAM,uBAAuB,CAAC;AAa/B,qBAAa,UAAU;IAmBnB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAnBvB,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAM7B;IACJ,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAM9B;IACJ,OAAO,CAAC,aAAa,CAAM;gBAGR,MAAM,EAAE,GAAG,EACX,IAAI,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI;IA8C1D,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCpD,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,cAAc;YAmCR,cAAc;IAsB5B,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG,aAAa,GAAG,IAAI;IAuBrE,oBAAoB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAYnD,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,SAAS;IAqBX,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB9B,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAOvC,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAG1C"}
@@ -0,0 +1,193 @@
1
+ import { serializeToJson, deserializeFromJson, isSerializedCallback } from '../shared/serialization.js';
2
+ import { EventBridge } from './event-bridge.js';
3
+ import { randomUUID } from 'node:crypto';
4
+ export class ChildProxy {
5
+ target;
6
+ send;
7
+ eventBridge;
8
+ pendingCallbacks = new Map();
9
+ pendingProperties = new Map();
10
+ proxiedTarget;
11
+ constructor(target, send) {
12
+ this.target = target;
13
+ this.send = send;
14
+ this.proxiedTarget = new Proxy(target, {
15
+ get: (target, prop) => {
16
+ const value = target[prop];
17
+ if (typeof value === 'function') {
18
+ return value.bind(target);
19
+ }
20
+ return value;
21
+ },
22
+ set: (target, prop, value) => {
23
+ if (typeof prop !== 'string') {
24
+ return false;
25
+ }
26
+ const message = {
27
+ type: 'PROPERTY_SET',
28
+ prop,
29
+ value
30
+ };
31
+ this.send(message);
32
+ target[prop] = value;
33
+ return true;
34
+ }
35
+ });
36
+ this.eventBridge = new EventBridge(this.proxiedTarget, send);
37
+ this.eventBridge.setup();
38
+ }
39
+ async handleRequest(message) {
40
+ if (message.type !== 'CALL')
41
+ return;
42
+ try {
43
+ const propsBefore = this.capturePublicProperties();
44
+ const method = this.proxiedTarget[message.prop];
45
+ if (typeof method !== 'function') {
46
+ throw new Error(`Method '${message.prop}' does not exist or is not a function`);
47
+ }
48
+ const deserializedArgs = message.args.map((arg) => this.deserializeArg(arg));
49
+ const result = await method.apply(this.proxiedTarget, deserializedArgs);
50
+ const propsAfter = this.capturePublicProperties();
51
+ this.sendPropertyUpdates(propsBefore, propsAfter);
52
+ this.sendSuccess(message.id, result);
53
+ }
54
+ catch (error) {
55
+ this.sendError(message.id, error);
56
+ }
57
+ }
58
+ capturePublicProperties() {
59
+ const props = new Map();
60
+ for (const key in this.target) {
61
+ const value = this.target[key];
62
+ if (typeof value !== 'function') {
63
+ props.set(key, value);
64
+ }
65
+ }
66
+ return props;
67
+ }
68
+ sendPropertyUpdates(before, after) {
69
+ for (const [prop, afterValue] of after) {
70
+ const beforeValue = before.get(prop);
71
+ if (beforeValue !== afterValue) {
72
+ const message = {
73
+ type: 'PROPERTY_SET',
74
+ prop,
75
+ value: afterValue
76
+ };
77
+ this.send(message);
78
+ }
79
+ }
80
+ }
81
+ deserializeArg(arg) {
82
+ if (isSerializedCallback(arg)) {
83
+ return async (...args) => {
84
+ try {
85
+ return await this.invokeCallback(arg.__callbackId, args);
86
+ }
87
+ catch (error) {
88
+ const callbackId = arg.__callbackId;
89
+ if (error instanceof Error) {
90
+ error.message = `Error invoking callback ${callbackId}: ${error.message}`;
91
+ throw error;
92
+ }
93
+ throw new Error(`Error invoking callback ${callbackId}: ${String(error)}`);
94
+ }
95
+ };
96
+ }
97
+ if (Array.isArray(arg)) {
98
+ return arg.map((item) => this.deserializeArg(item));
99
+ }
100
+ if (arg && typeof arg === 'object' && arg.constructor === Object) {
101
+ const result = {};
102
+ for (const [key, value] of Object.entries(arg)) {
103
+ result[key] = this.deserializeArg(value);
104
+ }
105
+ return result;
106
+ }
107
+ return arg;
108
+ }
109
+ async invokeCallback(callbackId, args) {
110
+ const id = randomUUID();
111
+ return new Promise((resolve, reject) => {
112
+ this.pendingCallbacks.set(id, { resolve, reject });
113
+ const message = {
114
+ type: 'CALLBACK_INVOKE',
115
+ id,
116
+ callbackId,
117
+ args
118
+ };
119
+ this.send(message);
120
+ });
121
+ }
122
+ handleCallbackResponse(message) {
123
+ const pending = this.pendingCallbacks.get(message.id);
124
+ if (!pending) {
125
+ return;
126
+ }
127
+ this.pendingCallbacks.delete(message.id);
128
+ if (message.type === 'CALLBACK_RESULT') {
129
+ pending.resolve(message.value);
130
+ }
131
+ else {
132
+ const error = new Error(message.error.message);
133
+ error.name = message.error.name;
134
+ error.stack = message.error.stack;
135
+ pending.reject(error);
136
+ }
137
+ }
138
+ handlePropertyResult(message) {
139
+ const pending = this.pendingProperties.get(message.id);
140
+ if (!pending) {
141
+ return;
142
+ }
143
+ this.pendingProperties.delete(message.id);
144
+ pending.resolve(message.value);
145
+ }
146
+ sendSuccess(id, value) {
147
+ try {
148
+ const valueToSerialize = value === undefined ? null : value;
149
+ const serialized = serializeToJson(valueToSerialize, 'response value');
150
+ const deserialized = deserializeFromJson(serialized, 'response value');
151
+ const response = {
152
+ type: 'RESULT',
153
+ id,
154
+ value: deserialized
155
+ };
156
+ this.send(response);
157
+ }
158
+ catch (error) {
159
+ this.sendError(id, error);
160
+ }
161
+ }
162
+ sendError(id, error) {
163
+ const errorInfo = {
164
+ name: error.name,
165
+ message: error.message,
166
+ stack: error.stack,
167
+ code: error.code
168
+ };
169
+ const response = {
170
+ type: 'ERROR',
171
+ id,
172
+ error: errorInfo
173
+ };
174
+ this.send(response);
175
+ }
176
+ async dispose() {
177
+ if (typeof this.target[Symbol.asyncDispose] === 'function') {
178
+ await this.target[Symbol.asyncDispose]();
179
+ return;
180
+ }
181
+ if (typeof this.target[Symbol.dispose] === 'function') {
182
+ this.target[Symbol.dispose]();
183
+ return;
184
+ }
185
+ }
186
+ subscribeEvent(eventName) {
187
+ this.eventBridge?.subscribeEvent(eventName);
188
+ }
189
+ unsubscribeEvent(eventName) {
190
+ this.eventBridge?.unsubscribeEvent(eventName);
191
+ }
192
+ }
193
+ //# sourceMappingURL=child-proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"child-proxy.js","sourceRoot":"","sources":["../../src/child/child-proxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { EventEmitter } from 'events';
2
+ import type { EventMessage } from '../shared/protocol.js';
3
+ export declare class EventBridge {
4
+ private instance;
5
+ private sendToParent;
6
+ private boundHandlers;
7
+ private subscribedEvents;
8
+ constructor(instance: unknown, sendToParent: (message: EventMessage) => void);
9
+ static isEventEmitter(instance: unknown): instance is EventEmitter;
10
+ setup(): void;
11
+ subscribeEvent(eventName: string): void;
12
+ unsubscribeEvent(eventName: string): void;
13
+ teardown(): void;
14
+ }
15
+ //# sourceMappingURL=event-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bridge.d.ts","sourceRoot":"","sources":["../../src/child/event-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAO1D,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,aAAa,CAA6D;IAClF,OAAO,CAAC,gBAAgB,CAAqB;gBAEjC,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI;IAQ5E,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,YAAY;IAalE,KAAK,IAAI,IAAI;IAkCb,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAOvC,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAOzC,QAAQ,IAAI,IAAI;CAKjB"}
@@ -0,0 +1,51 @@
1
+ import { EventEmitter } from 'events';
2
+ export class EventBridge {
3
+ instance;
4
+ sendToParent;
5
+ boundHandlers = new Map();
6
+ subscribedEvents = new Set();
7
+ constructor(instance, sendToParent) {
8
+ this.instance = instance;
9
+ this.sendToParent = sendToParent;
10
+ }
11
+ static isEventEmitter(instance) {
12
+ if (!instance || typeof instance !== 'object') {
13
+ return false;
14
+ }
15
+ return instance instanceof EventEmitter;
16
+ }
17
+ setup() {
18
+ if (!EventBridge.isEventEmitter(this.instance)) {
19
+ return;
20
+ }
21
+ const originalEmit = this.instance.emit.bind(this.instance);
22
+ this.instance.emit = (event, ...args) => {
23
+ const result = originalEmit(event, ...args);
24
+ const eventName = typeof event === 'symbol' ? event.toString() : event;
25
+ if (this.subscribedEvents.has(eventName)) {
26
+ try {
27
+ this.sendToParent({
28
+ type: 'EVENT',
29
+ eventName,
30
+ args: args
31
+ });
32
+ }
33
+ catch (error) {
34
+ console.error('Failed to forward event to parent:', error);
35
+ }
36
+ }
37
+ return result;
38
+ };
39
+ }
40
+ subscribeEvent(eventName) {
41
+ this.subscribedEvents.add(eventName);
42
+ }
43
+ unsubscribeEvent(eventName) {
44
+ this.subscribedEvents.delete(eventName);
45
+ }
46
+ teardown() {
47
+ this.boundHandlers.clear();
48
+ this.subscribedEvents.clear();
49
+ }
50
+ }
51
+ //# sourceMappingURL=event-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bridge.js","sourceRoot":"","sources":["../../src/child/event-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAQtC,MAAM,OAAO,WAAW;IACd,QAAQ,CAAU;IAClB,YAAY,CAAkC;IAC9C,aAAa,GAAmD,IAAI,GAAG,EAAE,CAAC;IAC1E,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE7C,YAAY,QAAiB,EAAE,YAA6C;QAC1E,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAKD,MAAM,CAAC,cAAc,CAAC,QAAiB;QACrC,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAC;QACf,CAAC;QAGD,OAAO,QAAQ,YAAY,YAAY,CAAC;IAC1C,CAAC;IAMD,KAAK;QACH,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/C,OAAO;QACT,CAAC;QAGD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE5D,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,KAAsB,EAAE,GAAG,IAAW,EAAW,EAAE;YAEvE,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;YAG5C,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YACvE,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzC,IAAI,CAAC;oBACH,IAAI,CAAC,YAAY,CAAC;wBAChB,IAAI,EAAE,OAAO;wBACb,SAAS;wBACT,IAAI,EAAE,IAAW;qBAClB,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAEf,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC;IAKD,cAAc,CAAC,SAAiB;QAC9B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAKD,gBAAgB,CAAC,SAAiB;QAChC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAKD,QAAQ;QAEN,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ export { procxy } from './parent/procxy.js';
2
+ export type { Procxy } from './types/procxy.js';
3
+ export type { ProcxyOptions } from './types/options.js';
4
+ export { ProcxyError } from './shared/errors.js';
5
+ export { TimeoutError } from './shared/errors.js';
6
+ export { ModuleResolutionError } from './shared/errors.js';
7
+ export { ChildCrashedError } from './shared/errors.js';
8
+ export { SerializationError } from './shared/errors.js';
9
+ export { OptionsValidationError } from './shared/errors.js';
10
+ export type { InitMessage, Request, Response, ErrorInfo, EventMessage, ParentToChildMessage, ChildToParentMessage } from './shared/protocol.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAwDA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAY5C,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAShD,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAmBxD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAkBjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAQlD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAO3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAOvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAOxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAW5D,YAAY,EACV,WAAW,EACX,OAAO,EACP,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,sBAAsB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ export { procxy } from './parent/procxy.js';
2
+ export { ProcxyError } from './shared/errors.js';
3
+ export { TimeoutError } from './shared/errors.js';
4
+ export { ModuleResolutionError } from './shared/errors.js';
5
+ export { ChildCrashedError } from './shared/errors.js';
6
+ export { SerializationError } from './shared/errors.js';
7
+ export { OptionsValidationError } from './shared/errors.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAwDA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAwC5C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAkBjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAQlD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAO3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAOvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAOxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { ChildProcess } from 'node:child_process';
2
+ import type { Jsonifiable } from 'type-fest';
3
+ import { EventEmitter } from 'node:events';
4
+ export declare class IPCClient extends EventEmitter {
5
+ private readonly childProcess;
6
+ private readonly pendingRequests;
7
+ private readonly callbackRegistry;
8
+ private readonly propertyStore;
9
+ private readonly timeout;
10
+ private readonly retries;
11
+ private isTerminated;
12
+ private readonly subscribedEvents;
13
+ constructor(childProcess: ChildProcess, timeout?: number, retries?: number);
14
+ get process(): ChildProcess;
15
+ private setupEventTracking;
16
+ private subscribeInChild;
17
+ private unsubscribeInChild;
18
+ sendRequest(method: string, args: [...Jsonifiable[]], attemptNumber?: number): Promise<Jsonifiable>;
19
+ private handleMessage;
20
+ private handleResponse;
21
+ private handleEvent;
22
+ private handleCallbackInvoke;
23
+ private handlePropertyGet;
24
+ private handlePropertySet;
25
+ hasProperty(prop: string): boolean;
26
+ getPropertySync(prop: string): Jsonifiable;
27
+ private handleExit;
28
+ terminate(): Promise<void>;
29
+ private toError;
30
+ }
31
+ //# sourceMappingURL=ipc-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipc-client.d.ts","sourceRoot":"","sources":["../../src/parent/ipc-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAkB7C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAuB3C,qBAAa,SAAU,SAAQ,YAAY;IAUvC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAT/B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqC;IACrE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA0B;IAC3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkC;IAChE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA8B;gBAG5C,YAAY,EAAE,YAAY,EAC3C,OAAO,GAAE,MAAc,EACvB,OAAO,GAAE,MAAU;IAgBrB,IAAI,OAAO,IAAI,YAAY,CAE1B;IAMD,OAAO,CAAC,kBAAkB;IAsF1B,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,kBAAkB;IA6BpB,WAAW,CACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EACxB,aAAa,GAAE,MAAU,GACxB,OAAO,CAAC,WAAW,CAAC;IAkDvB,OAAO,CAAC,aAAa;IAwCrB,OAAO,CAAC,cAAc;IA4BtB,OAAO,CAAC,WAAW;YAQL,oBAAoB;IA+ClC,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,iBAAiB;IAOzB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAOlC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW;IAO1C,OAAO,CAAC,UAAU;IAsBZ,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAmEhC,OAAO,CAAC,OAAO;CAOhB"}