exoproc-accessors 0.1.0 → 0.6.2

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/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,qCAAqC,CAAC;AACpD,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,127 @@
1
+ import { type IHostAccessor, type IInittableAccessor, type CFunction, type CCallResult } from 'bun-xffi';
2
+ import { NThread, type NThreadOptions } from 'bun-nthread';
3
+ import { HostAccessor, type HostAccessorSession, RacingHostAccessor } from './middleware-accessor.js';
4
+ /**
5
+ * A {@link HostAccessor} whose base "call" mechanism is {@link NThread} (x64
6
+ * thread redirection) instead of `RemoteCallableMemoryAccessor` (a fresh
7
+ * `CreateRemoteThread` per call). This directly replaces the old
8
+ * `IndirectCallableAccessor` + manual `NThread`/`RedirectorHostAccessor`
9
+ * wiring -- it builds the same indirect chain
10
+ * (`IndirectCallRedirectorAccessor` → machineCode pool → memset write →
11
+ * memcmp read → file-transfer R/W → scanner → marshalling) on top of an
12
+ * `NThread`-*like* backend directly.
13
+ *
14
+ * Only the thing that actually executes remote calls changes: no
15
+ * `CreateRemoteThread` at all -- a live thread in the target is redirected,
16
+ * parked at a `jmp $` stub, and driven per call. This also sidesteps a
17
+ * GHA/Wine bug where WinAPI calls (VirtualAlloc, malloc, fopen, ...) executed
18
+ * on a freshly-created thread (local or remote) are unreliable -- see CLAUDE.md.
19
+ *
20
+ * Accepts an already-constructed `NThread`, a `(pid, threadId, options)`
21
+ * triple to build one internally, or a {@link NThreadRaceAccessor} standing
22
+ * in for a not-yet-known winner among every thread of a process (the
23
+ * `idType: 'processAllThreadIds'` support behind `createAccessor` -- see
24
+ * that class's own doc comment):
25
+ *
26
+ * const memory = new IndirectNThreadHostAccessor(pid, tid);
27
+ * const addr = await memory.alloc(64); // VirtualAlloc via redirect
28
+ * await memory.call(SomeFunc, addr); // executed on the thread
29
+ *
30
+ * const race = new NThreadRaceAccessor(pid);
31
+ * const memory = new IndirectNThreadHostAccessor(race); // built once, synchronously
32
+ * await memory.init(); // races, resolves `race` internally
33
+ *
34
+ * With the `(pid, threadId, options)` form, this accessor builds the
35
+ * `NThread`'s `RedirectorHostAccessor` root itself and wires its `target`
36
+ * to `this` -- it owns that object, nothing else could reach it.
37
+ *
38
+ * With the `backend: NThread | NThreadRaceAccessor` form, the backend (and
39
+ * whatever `root` it was constructed with) belongs to the caller. This
40
+ * accessor does not reach into its `root` to rewire it -- if its bootstrap
41
+ * stub calls need to route through this indirect chain (e.g. `root` is a
42
+ * `RedirectorHostAccessor`), the caller sets `root.target = indirect` itself
43
+ * after construction, same as building the chain by hand:
44
+ *
45
+ * const redirector = new RedirectorHostAccessor(pid);
46
+ * const nthread = new NThread(backend, tid, options, redirector);
47
+ * const indirect = new IndirectNThreadHostAccessor(nthread);
48
+ * redirector.target = indirect;
49
+ */
50
+ export declare class IndirectNThreadHostAccessor extends HostAccessor {
51
+ private readonly nthreadRef;
52
+ private bootstrapRoot;
53
+ /**
54
+ * The real `NThread` this accessor's chain ultimately runs on. When built
55
+ * from a {@link NThreadRaceAccessor} (the `idType: 'processAllThreadIds'`
56
+ * case), that accessor's own `target` (inherited from
57
+ * `RedirectorHostAccessor`) is the winning `NThread` by the time `init()`
58
+ * resolves (see its doc comment), so this drills through to it rather
59
+ * than exposing the race stand-in itself -- callers that reach past the
60
+ * generic `HostAccessor` surface into `NThread`-specific members (e.g.
61
+ * `.savedContext`, `.setContext()`) need the genuine instance.
62
+ */
63
+ get nthread(): NThread;
64
+ constructor(backend: NThread | NThreadRaceAccessor);
65
+ constructor(pid: number, threadId: number, options?: NThreadOptions);
66
+ protected onInit(): Promise<void>;
67
+ protected onInitSync(): void;
68
+ protected onDeinit(): Promise<void>;
69
+ protected onDeinitSync(): void;
70
+ toJSON(): HostAccessorSession;
71
+ }
72
+ /**
73
+ * Stands in for a not-yet-known `NThread` inside an
74
+ * {@link IndirectNThreadHostAccessor}'s own chain -- pass an instance of
75
+ * this directly as that class's `backend` (its `backend: NThread |
76
+ * NThreadRaceAccessor` constructor form). The whole `IndirectNThreadHostAccessor`
77
+ * chain gets built exactly once, synchronously, right alongside every other
78
+ * `idType`; only the actual thread hijack is deferred to `init()`, same as
79
+ * the rest of this class's own machinery.
80
+ *
81
+ * Extends {@link RacingHostAccessor} and overrides its `onInit()` to
82
+ * actually race (`this.race()`), then sets its own `target` to the winning
83
+ * `NThread` directly -- so every op this class forwards (inherited from
84
+ * `RedirectorHostAccessor`) transparently reaches the winner from then on,
85
+ * with nothing above it (in `IndirectNThreadHostAccessor`'s own chain) ever
86
+ * needing to change.
87
+ *
88
+ * Only initializes the *raw* `NThread` hijack per candidate, not a full
89
+ * `IndirectNThreadHostAccessor` chain -- that chain is built exactly once,
90
+ * around *this* accessor rather than around any particular candidate, so the
91
+ * real extra work beyond landing the hijack (`IndirectCallRedirectorAccessor`,
92
+ * `MachineCodePoolMiddleware`, an msvcrt check, opening a remote temp file for
93
+ * `FileTransferWriteAccessor`, ...) naturally only ever happens once, no
94
+ * matter which candidate wins.
95
+ *
96
+ * Every candidate `NThread` is built with `this` (the single, shared
97
+ * `NThreadRaceAccessor`) as its root directly -- no per-candidate proxy
98
+ * object. That's normally unsafe: `NThread.onInit()`'s bootstrap
99
+ * (`this.root.call(stubs.jumpStub)`, landing the hijack) needs `root.call()`
100
+ * to resolve back to *that exact candidate's* own `call()`, and with N
101
+ * candidates racing concurrently through one shared root, a single mutable
102
+ * `backend`/`target` field can't hold N different answers at once (tried
103
+ * this with a plain shared root first -- every candidate's bootstrap call
104
+ * collided on the same placeholder and threw). The fix is `currentCandidate`
105
+ * above: `startRacer` (below) wraps each candidate's `init()` in
106
+ * `currentCandidate.run(candidate, ...)`, which threads that candidate
107
+ * through its *entire* async continuation (every `await` inside its own
108
+ * `onInit()`) in a context isolated from every other concurrently-racing
109
+ * candidate. `call()` (below), when `target` is still self (race not yet
110
+ * decided), reads `currentCandidate.getStore()` to find out which
111
+ * candidate's own bootstrap call this is and forwards to *its* `call()`
112
+ * directly -- no shared field involved. This keeps the ALS mechanism
113
+ * entirely local to this class (`RacingHostAccessor` itself knows nothing
114
+ * about it, see its doc comment) and needs zero changes to `NThread` --
115
+ * `this.root.call(...)` there is untouched, so root-indirection stays a
116
+ * generic, reusable mechanism, not something hardcoded around racing.
117
+ */
118
+ export declare class NThreadRaceAccessor extends RacingHostAccessor {
119
+ private readonly aborts;
120
+ constructor(pid: number, nthreadOptions?: NThreadOptions, root?: IHostAccessor);
121
+ protected startRacer(racer: IInittableAccessor): Promise<void>;
122
+ call(func: CFunction, ...args: any[]): Promise<CCallResult>;
123
+ protected releaseLoser(racer: IInittableAccessor, settled: Promise<void>): void;
124
+ protected onInit(): Promise<void>;
125
+ protected onInitSync(): never;
126
+ }
127
+ //# sourceMappingURL=indirect-nthread-host-accessor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indirect-nthread-host-accessor.d.ts","sourceRoot":"","sources":["../src/indirect-nthread-host-accessor.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EAIxB,kBAAkB,EASnB,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,qBAAa,2BAA4B,SAAQ,YAAY;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgC;IAC3D,OAAO,CAAC,aAAa,CAAwB;IAE7C;;;;;;;;;OASG;IACH,IAAI,OAAO,IAAI,OAAO,CAIrB;gBAEW,OAAO,EAAE,OAAO,GAAG,mBAAmB;gBACtC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc;cA+D1C,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;cAI7B,UAAU,IAAI,IAAI;cAIZ,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;cAY/B,YAAY,IAAI,IAAI;IAY9B,MAAM,IAAI,mBAAmB;CAwBvC;AAaD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,qBAAa,mBAAoB,SAAQ,kBAAkB;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;gBAGvD,GAAG,EAAE,MAAM,EACX,cAAc,GAAE,cAAmB,EACnC,IAAI,CAAC,EAAE,aAAa;cA6CH,UAAU,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxD,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;cAQvD,YAAY,CAC7B,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GACrB,IAAI;cAKkB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;cAK7B,UAAU,IAAI,KAAK;CAGvC"}
@@ -0,0 +1,288 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
2
+ import { isMiddlewareAccessor, } from 'bun-xffi';
3
+ import { Thread } from 'bun-winapi';
4
+ import { NThread } from 'bun-nthread';
5
+ import { HostAccessor, ThrowingMemoryAccessor, RedirectorHostAccessor, BootstrapHostAccessor, RacingHostAccessor, IndirectCallRedirectorAccessor, MachineCodePoolMiddleware, MemsetWriteAccessor, MemcmpReadAccessor, FileTransferWriteAccessor, FileTransferReadAccessor, ScannerMiddleware, MarshallingCallableAccessor, } from './middleware-accessor.js';
6
+ /**
7
+ * A {@link HostAccessor} whose base "call" mechanism is {@link NThread} (x64
8
+ * thread redirection) instead of `RemoteCallableMemoryAccessor` (a fresh
9
+ * `CreateRemoteThread` per call). This directly replaces the old
10
+ * `IndirectCallableAccessor` + manual `NThread`/`RedirectorHostAccessor`
11
+ * wiring -- it builds the same indirect chain
12
+ * (`IndirectCallRedirectorAccessor` → machineCode pool → memset write →
13
+ * memcmp read → file-transfer R/W → scanner → marshalling) on top of an
14
+ * `NThread`-*like* backend directly.
15
+ *
16
+ * Only the thing that actually executes remote calls changes: no
17
+ * `CreateRemoteThread` at all -- a live thread in the target is redirected,
18
+ * parked at a `jmp $` stub, and driven per call. This also sidesteps a
19
+ * GHA/Wine bug where WinAPI calls (VirtualAlloc, malloc, fopen, ...) executed
20
+ * on a freshly-created thread (local or remote) are unreliable -- see CLAUDE.md.
21
+ *
22
+ * Accepts an already-constructed `NThread`, a `(pid, threadId, options)`
23
+ * triple to build one internally, or a {@link NThreadRaceAccessor} standing
24
+ * in for a not-yet-known winner among every thread of a process (the
25
+ * `idType: 'processAllThreadIds'` support behind `createAccessor` -- see
26
+ * that class's own doc comment):
27
+ *
28
+ * const memory = new IndirectNThreadHostAccessor(pid, tid);
29
+ * const addr = await memory.alloc(64); // VirtualAlloc via redirect
30
+ * await memory.call(SomeFunc, addr); // executed on the thread
31
+ *
32
+ * const race = new NThreadRaceAccessor(pid);
33
+ * const memory = new IndirectNThreadHostAccessor(race); // built once, synchronously
34
+ * await memory.init(); // races, resolves `race` internally
35
+ *
36
+ * With the `(pid, threadId, options)` form, this accessor builds the
37
+ * `NThread`'s `RedirectorHostAccessor` root itself and wires its `target`
38
+ * to `this` -- it owns that object, nothing else could reach it.
39
+ *
40
+ * With the `backend: NThread | NThreadRaceAccessor` form, the backend (and
41
+ * whatever `root` it was constructed with) belongs to the caller. This
42
+ * accessor does not reach into its `root` to rewire it -- if its bootstrap
43
+ * stub calls need to route through this indirect chain (e.g. `root` is a
44
+ * `RedirectorHostAccessor`), the caller sets `root.target = indirect` itself
45
+ * after construction, same as building the chain by hand:
46
+ *
47
+ * const redirector = new RedirectorHostAccessor(pid);
48
+ * const nthread = new NThread(backend, tid, options, redirector);
49
+ * const indirect = new IndirectNThreadHostAccessor(nthread);
50
+ * redirector.target = indirect;
51
+ */
52
+ export class IndirectNThreadHostAccessor extends HostAccessor {
53
+ nthreadRef;
54
+ bootstrapRoot;
55
+ /**
56
+ * The real `NThread` this accessor's chain ultimately runs on. When built
57
+ * from a {@link NThreadRaceAccessor} (the `idType: 'processAllThreadIds'`
58
+ * case), that accessor's own `target` (inherited from
59
+ * `RedirectorHostAccessor`) is the winning `NThread` by the time `init()`
60
+ * resolves (see its doc comment), so this drills through to it rather
61
+ * than exposing the race stand-in itself -- callers that reach past the
62
+ * generic `HostAccessor` surface into `NThread`-specific members (e.g.
63
+ * `.savedContext`, `.setContext()`) need the genuine instance.
64
+ */
65
+ get nthread() {
66
+ return this.nthreadRef instanceof NThreadRaceAccessor
67
+ ? this.nthreadRef.target
68
+ : this.nthreadRef;
69
+ }
70
+ constructor(backendOrPid, threadId, options = {}) {
71
+ let nthread;
72
+ let nthreadRoot;
73
+ // `typeof ... === 'number'` rather than `instanceof NThread`: NThread now
74
+ // lives in a different package than this class, so a caller's own
75
+ // cross-package-resolved `NThread` copy can fail an `instanceof` check
76
+ // here even though it's structurally identical (same root cause as
77
+ // `isMiddlewareAccessor` elsewhere in this codebase -- see its doc
78
+ // comment on why `instanceof` against a concrete class is unreliable
79
+ // across a package boundary under Wine).
80
+ if (typeof backendOrPid === 'number') {
81
+ nthreadRoot = new RedirectorHostAccessor(backendOrPid);
82
+ nthread = new NThread(backendOrPid, threadId, options, nthreadRoot);
83
+ }
84
+ else {
85
+ nthread = backendOrPid;
86
+ }
87
+ const pid = nthread.processId;
88
+ super(new ThrowingMemoryAccessor(pid));
89
+ const bootstrap = new BootstrapHostAccessor(pid, this);
90
+ this.bootstrapRoot = bootstrap;
91
+ bootstrap.backend = nthread;
92
+ const redirector = new IndirectCallRedirectorAccessor(nthread, bootstrap);
93
+ const machineCodePool = new MachineCodePoolMiddleware(redirector, bootstrap);
94
+ const memsetWrite = new MemsetWriteAccessor(machineCodePool, bootstrap);
95
+ const memcmpRead = new MemcmpReadAccessor(memsetWrite, bootstrap);
96
+ const fileWriter = new FileTransferWriteAccessor(memcmpRead, bootstrap);
97
+ const fileReader = new FileTransferReadAccessor(fileWriter, bootstrap);
98
+ const scanner = new ScannerMiddleware(fileReader, bootstrap);
99
+ const marshalling = new MarshallingCallableAccessor(scanner, bootstrap);
100
+ this.backend = marshalling;
101
+ let b = marshalling;
102
+ while (isMiddlewareAccessor(b)) {
103
+ b = b.backend;
104
+ }
105
+ if (b) {
106
+ this._processId = b.processId;
107
+ }
108
+ // Only for the (pid, threadId, options) form: we built `nthreadRoot`
109
+ // ourselves above, so we're the only one who could ever wire it -- route
110
+ // its bootstrap stub calls down through this indirect chain. For the
111
+ // `backend: NThread | NThreadRaceAccessor` form, `nthreadRoot` is
112
+ // undefined here and the caller's own `root` (whatever it is) is left
113
+ // untouched -- see the class doc comment.
114
+ if (nthreadRoot) {
115
+ nthreadRoot.target = this;
116
+ }
117
+ this.nthreadRef = nthread;
118
+ }
119
+ async onInit() {
120
+ await this.bootstrapRoot.init();
121
+ }
122
+ onInitSync() {
123
+ this.bootstrapRoot.initSync();
124
+ }
125
+ async onDeinit() {
126
+ try {
127
+ await this.bootstrapRoot.deinit();
128
+ }
129
+ catch { }
130
+ try {
131
+ const nt = this.nthread;
132
+ if (nt && typeof nt.deinit === 'function') {
133
+ await nt.deinit();
134
+ }
135
+ }
136
+ catch { }
137
+ }
138
+ onDeinitSync() {
139
+ try {
140
+ this.bootstrapRoot.deinitSync();
141
+ }
142
+ catch { }
143
+ try {
144
+ const nt = this.nthread;
145
+ if (nt && typeof nt.deinitSync === 'function') {
146
+ nt.deinitSync();
147
+ }
148
+ }
149
+ catch { }
150
+ }
151
+ toJSON() {
152
+ const session = super.toJSON();
153
+ session.accessorType = 'IndirectNThreadHostAccessor';
154
+ try {
155
+ const nt = this.nthread;
156
+ if (nt && typeof nt.threadId === 'number') {
157
+ session.threadId = nt.threadId;
158
+ }
159
+ if (nt && nt.stubs) {
160
+ const stubs = {};
161
+ for (const [k, v] of Object.entries(nt.stubs)) {
162
+ if (v && typeof v.address === 'bigint') {
163
+ stubs[k] = `0x${v.address.toString(16)}`;
164
+ }
165
+ }
166
+ if (Object.keys(stubs).length > 0) {
167
+ session.stubs = stubs;
168
+ }
169
+ }
170
+ }
171
+ catch {
172
+ // In case nthreadRef is not yet resolved or stubs are not populated
173
+ }
174
+ return session;
175
+ }
176
+ }
177
+ /**
178
+ * Module-scoped and shared across every `NThreadRaceAccessor` instance --
179
+ * `AsyncLocalStorage` isolates by *async execution context*, not by which
180
+ * object holds the reference, so sharing one instance across unrelated,
181
+ * concurrently-racing `NThreadRaceAccessor`s (e.g. two independent
182
+ * `createAccessor()` calls against two different processes at once) is safe
183
+ * and idiomatic, the same way e.g. Express shares one ALS instance across
184
+ * all concurrent request handlers.
185
+ */
186
+ const currentCandidate = new AsyncLocalStorage();
187
+ /**
188
+ * Stands in for a not-yet-known `NThread` inside an
189
+ * {@link IndirectNThreadHostAccessor}'s own chain -- pass an instance of
190
+ * this directly as that class's `backend` (its `backend: NThread |
191
+ * NThreadRaceAccessor` constructor form). The whole `IndirectNThreadHostAccessor`
192
+ * chain gets built exactly once, synchronously, right alongside every other
193
+ * `idType`; only the actual thread hijack is deferred to `init()`, same as
194
+ * the rest of this class's own machinery.
195
+ *
196
+ * Extends {@link RacingHostAccessor} and overrides its `onInit()` to
197
+ * actually race (`this.race()`), then sets its own `target` to the winning
198
+ * `NThread` directly -- so every op this class forwards (inherited from
199
+ * `RedirectorHostAccessor`) transparently reaches the winner from then on,
200
+ * with nothing above it (in `IndirectNThreadHostAccessor`'s own chain) ever
201
+ * needing to change.
202
+ *
203
+ * Only initializes the *raw* `NThread` hijack per candidate, not a full
204
+ * `IndirectNThreadHostAccessor` chain -- that chain is built exactly once,
205
+ * around *this* accessor rather than around any particular candidate, so the
206
+ * real extra work beyond landing the hijack (`IndirectCallRedirectorAccessor`,
207
+ * `MachineCodePoolMiddleware`, an msvcrt check, opening a remote temp file for
208
+ * `FileTransferWriteAccessor`, ...) naturally only ever happens once, no
209
+ * matter which candidate wins.
210
+ *
211
+ * Every candidate `NThread` is built with `this` (the single, shared
212
+ * `NThreadRaceAccessor`) as its root directly -- no per-candidate proxy
213
+ * object. That's normally unsafe: `NThread.onInit()`'s bootstrap
214
+ * (`this.root.call(stubs.jumpStub)`, landing the hijack) needs `root.call()`
215
+ * to resolve back to *that exact candidate's* own `call()`, and with N
216
+ * candidates racing concurrently through one shared root, a single mutable
217
+ * `backend`/`target` field can't hold N different answers at once (tried
218
+ * this with a plain shared root first -- every candidate's bootstrap call
219
+ * collided on the same placeholder and threw). The fix is `currentCandidate`
220
+ * above: `startRacer` (below) wraps each candidate's `init()` in
221
+ * `currentCandidate.run(candidate, ...)`, which threads that candidate
222
+ * through its *entire* async continuation (every `await` inside its own
223
+ * `onInit()`) in a context isolated from every other concurrently-racing
224
+ * candidate. `call()` (below), when `target` is still self (race not yet
225
+ * decided), reads `currentCandidate.getStore()` to find out which
226
+ * candidate's own bootstrap call this is and forwards to *its* `call()`
227
+ * directly -- no shared field involved. This keeps the ALS mechanism
228
+ * entirely local to this class (`RacingHostAccessor` itself knows nothing
229
+ * about it, see its doc comment) and needs zero changes to `NThread` --
230
+ * `this.root.call(...)` there is untouched, so root-indirection stays a
231
+ * generic, reusable mechanism, not something hardcoded around racing.
232
+ */
233
+ export class NThreadRaceAccessor extends RacingHostAccessor {
234
+ aborts = new Map();
235
+ constructor(pid, nthreadOptions = {}, root) {
236
+ super(pid, root);
237
+ // RedirectorHostAccessor's own constructor sets `target` to a fresh
238
+ // placeholder `ThrowingHostAccessor`, never to `this` -- only
239
+ // `BootstrapHostAccessor` self-loops that way. `call()` below needs
240
+ // `target === this` to mean "race not yet decided", so set it
241
+ // explicitly here too.
242
+ this.target = this;
243
+ const threads = Thread.getThreads(pid);
244
+ if (threads.length === 0) {
245
+ throw new Error(`createAccessor: process ${pid} has no threads to redirect`);
246
+ }
247
+ const callerSignal = nthreadOptions.signal;
248
+ for (const t of threads) {
249
+ const controller = new AbortController();
250
+ // Compose with a caller-supplied signal (if any) -- either one aborts this candidate.
251
+ if (callerSignal) {
252
+ if (callerSignal.aborted)
253
+ controller.abort(callerSignal.reason);
254
+ else
255
+ callerSignal.addEventListener('abort', () => controller.abort(callerSignal.reason), { once: true });
256
+ }
257
+ // root = this directly -- auto-registers as a racer via
258
+ // MiddlewareAccessor's constructor (root.registerChild(this)); see
259
+ // the class doc comment for why a shared root is safe here only
260
+ // because of startRacer()'s AsyncLocalStorage wrapping below.
261
+ const nthread = new NThread(pid, t.tid, { ...nthreadOptions, signal: controller.signal }, this);
262
+ this.aborts.set(nthread, () => controller.abort());
263
+ }
264
+ }
265
+ startRacer(racer) {
266
+ return currentCandidate.run(racer, () => racer.init());
267
+ }
268
+ async call(func, ...args) {
269
+ if (this.target === this) {
270
+ const caller = currentCandidate.getStore();
271
+ if (caller)
272
+ return caller.call(func, ...args);
273
+ }
274
+ return super.call(func, ...args);
275
+ }
276
+ releaseLoser(racer, settled) {
277
+ this.aborts.get(racer)?.();
278
+ super.releaseLoser(racer, settled);
279
+ }
280
+ async onInit() {
281
+ const winner = await this.race();
282
+ this.target = winner;
283
+ }
284
+ onInitSync() {
285
+ throw new Error('NThreadRaceAccessor does not support initSync()');
286
+ }
287
+ }
288
+ //# sourceMappingURL=indirect-nthread-host-accessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indirect-nthread-host-accessor.js","sourceRoot":"","sources":["../src/indirect-nthread-host-accessor.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,9 @@
1
- import { type AddressLike, NativeMemory, type ISyncCallableMemoryAccessor, type AllocNearOptions, type CFunction, type CMachineCode, type CCallResult, MemoryBasicInformation, Pattern, type CoreModulesStatus, MiddlewareAccessor, InittableMiddlewareAccessor, type IHostAccessor } from 'bun-xffi';
1
+ import { type AddressLike, NativeMemory, type ISyncCallableMemoryAccessor, type AllocNearOptions, type CFunction, type CMachineCode, type CCallResult, MemoryBasicInformation, Pattern, type CoreModulesStatus, MiddlewareAccessor, InittableMiddlewareAccessor, HostAccessor, type HostAccessorSession, type IHostAccessor, type IInittableAccessor, type IMiddlewareAccessor } from 'bun-xffi';
2
+ export { HostAccessor, type HostAccessorSession };
2
3
  export declare abstract class MsvcrtDependentMiddlewareAccessor extends InittableMiddlewareAccessor {
3
4
  protected onInit(): Promise<void>;
4
5
  protected onInitSync(): void;
5
6
  }
6
- /**
7
- * HostAccessor is a base class that automatically initializes all nested InittableMiddlewareAccessors
8
- * in the backend decorator chain.
9
- */
10
- export declare class HostAccessor extends InittableMiddlewareAccessor {
11
- get processId(): number;
12
- constructor(backend: ISyncCallableMemoryAccessor, root?: IHostAccessor);
13
- protected onInit(): Promise<void>;
14
- protected onInitSync(): void;
15
- }
16
7
  /**
17
8
  * A HostAccessor that forwards all operations to a dynamically changeable target HostAccessor.
18
9
  * This is useful for resolving circular dependencies in middleware chains where the root
@@ -59,8 +50,82 @@ export declare class RedirectorHostAccessor extends HostAccessor {
59
50
  scanSync(address: AddressLike, size: number, pattern: Pattern | string): Generator<NativeMemory>;
60
51
  close(): void;
61
52
  protected onInit(): Promise<void>;
53
+ /**
54
+ * Mirrors the `close()` override above for the async lifecycle: every op
55
+ * (read/write/call/...) routes to `target` once it's no longer `this`, so
56
+ * `deinit()` must too. Without this, the inherited `deinitNext()` (from
57
+ * `InittableMiddlewareAccessor`) walks `this.backend` -- which for a
58
+ * subclass like `NThreadRaceAccessor` stays pointed at its own
59
+ * placeholder `ThrowingMemoryAccessor` forever (only `target` ever gets
60
+ * reassigned to the winner, per `RedirectorHostAccessor`'s whole design;
61
+ * see its class doc comment) -- so the real accessor `target` resolved to
62
+ * would never actually get deinited, leaving its underlying resource
63
+ * (e.g. a hijacked thread) permanently stuck.
64
+ *
65
+ * Deliberately excludes `t === this.root`: `BootstrapHostAccessor.onInit()`
66
+ * itself resolves `target` to `this.root` once its own backend has landed
67
+ * -- that's a hand-off back to whatever *contains* this accessor (e.g. a
68
+ * per-candidate `BootstrapHostAccessor` inside `NThreadRaceAccessor`
69
+ * resolves to the race accessor itself), not a distinct resource this
70
+ * accessor now owns. Cascading `deinit()` there would tear down the
71
+ * container (and everything else riding on it, e.g. the actual race
72
+ * winner) from a single losing candidate's own cleanup.
73
+ */
74
+ protected onDeinit(): Promise<void>;
62
75
  protected onInitSync(): void;
63
76
  }
77
+ /**
78
+ * A minimal `RedirectorHostAccessor` mixin meant to be *extended*, not used
79
+ * directly -- its only job is giving a subclass (e.g. `NThreadRaceAccessor`)
80
+ * two things for free: automatic candidate collection, and a `race()` helper
81
+ * to actually run the race once the subclass's own `onInit()` decides it's
82
+ * time. `target` (inherited) is left for the subclass to set to the winner
83
+ * however makes sense for it -- this class never touches it itself.
84
+ *
85
+ * Candidates are never added explicitly -- every `MiddlewareAccessor`'s
86
+ * constructor calls `root.registerChild(this)` (a no-op on every other
87
+ * `IHostAccessor`; see its doc comment), so simply constructing a candidate
88
+ * with a `RacingHostAccessor` (sub)instance as its `root` is enough to enter
89
+ * it into the race.
90
+ *
91
+ * Deliberately knows nothing about *why* a caller is racing candidates -- no
92
+ * `NThread`, no `AbortController`, no timeout, no `AsyncLocalStorage`; a
93
+ * caller that needs to cancel the losers does so itself, by extending this
94
+ * class and overriding `releaseLoser`, and a caller whose candidates need
95
+ * per-candidate context threaded through their own `init()` (e.g.
96
+ * `NThreadRaceAccessor`, whose candidates all share one root and need
97
+ * `root.call()` to resolve back to *this specific* candidate while racing)
98
+ * does so by overriding `startRacer` -- kept as a single, narrow extension
99
+ * point instead of baking any particular mechanism (like
100
+ * `AsyncLocalStorage`) into this generic base.
101
+ */
102
+ export declare class RacingHostAccessor extends RedirectorHostAccessor {
103
+ protected readonly racers: IInittableAccessor[];
104
+ registerChild(child: IMiddlewareAccessor): void;
105
+ /**
106
+ * Launches one racer's `init()`. Overridable so a subclass can wrap the
107
+ * call with its own per-candidate context (see `NThreadRaceAccessor`,
108
+ * which threads an `AsyncLocalStorage` context through this so its shared
109
+ * root's `call()` can resolve back to whichever candidate is currently
110
+ * bootstrapping) without this base class needing to know why.
111
+ */
112
+ protected startRacer(racer: IInittableAccessor): Promise<void>;
113
+ /**
114
+ * Races every registered racer's `init()` and returns whichever settles
115
+ * first; every other racer gets {@link releaseLoser}'d. Doesn't touch
116
+ * `target` itself -- callers (a subclass's own `onInit()` override)
117
+ * decide what to do with the winner.
118
+ */
119
+ protected race(): Promise<IInittableAccessor>;
120
+ /**
121
+ * Called once per losing racer, right after a winner is picked. Default:
122
+ * deinit it once (if) its own `init()` eventually settles -- `deinit()` is
123
+ * a no-op for one that never finished or that already failed. Subclasses
124
+ * (e.g. `NThreadRaceAccessor`) can override this to *also* cancel an
125
+ * in-flight racer immediately, instead of only cleaning up after the fact.
126
+ */
127
+ protected releaseLoser(racer: IInittableAccessor, settled: Promise<void>): void;
128
+ }
64
129
  /**
65
130
  * BootstrapHostAccessor is a specialized RedirectorHostAccessor designed to resolve circular dependencies
66
131
  * during the initialization of decorator/middleware chains.
@@ -113,6 +178,9 @@ export declare class IndirectCallRedirectorAccessor extends CallRedirectorAccess
113
178
  private findMallocBlock;
114
179
  /** Shared by query()/querySync() -- pure, no I/O, so no need for two copies. */
115
180
  private buildMallocBlockInfo;
181
+ private hasMsvcrt;
182
+ private checkMsvcrt;
183
+ private checkMsvcrtSync;
116
184
  alloc(size: number, address?: AddressLike | null, protection?: number, allocationType?: number): Promise<AddressLike>;
117
185
  allocSync(size: number, address?: AddressLike | null, protection?: number, allocationType?: number): AddressLike;
118
186
  free(address: AddressLike, size?: number, freeType?: number): Promise<boolean>;
@@ -130,10 +198,10 @@ export declare class IndirectCallRedirectorAccessor extends CallRedirectorAccess
130
198
  export declare class MarshallingCallableAccessor extends MiddlewareAccessor {
131
199
  /**
132
200
  * Shared by call()/callSync() -- pure decision of "does this argument need
133
- * marshalling to a remote buffer, and if so, what bytes", with no I/O.
134
- * Returns `null` for args that pass through unmodified.
201
+ * marshalling to a remote buffer, and if so, what bytes and whether to copy
202
+ * remote modifications back to the caller's buffer/struct after the call".
135
203
  */
136
- private static bufferToMarshal;
204
+ private static marshalInfo;
137
205
  call(func: CFunction, ...args: any[]): Promise<CCallResult>;
138
206
  callSync(func: CFunction, ...args: any[]): CCallResult;
139
207
  }
@@ -1 +1 @@
1
- {"version":3,"file":"middleware-accessor.d.ts","sourceRoot":"","sources":["../src/middleware-accessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"middleware-accessor.d.ts","sourceRoot":"","sources":["../src/middleware-accessor.ts"],"names":[],"mappings":"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"}