feat(unstable): rework Deno.Command (#16812)

Refactors the `Deno.Command` class to not handle any state, but only being an intermediary to calling its methods, and as such any methods and properties besides `output`, `outputSync` & `spawn` have been removed. Interracting with a `spawn`ed subprocess now works by using the methods and properties on the returned class of the `spawn` method.
This commit is contained in:
Leo Kettmeir 2022-11-28 12:33:51 +01:00 committed by GitHub
parent fb04e87387
commit 1dd4843b62
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 102 additions and 148 deletions

View file

@ -482,6 +482,14 @@ delete Intl.v8BreakIterator;
},
});
ObjectAssign(internals.nodeUnstable, {
Command: __bootstrap.spawn.createCommand(
internals.nodeUnstable.spawn,
internals.nodeUnstable.spawnSync,
internals.nodeUnstable.spawnChild,
),
});
const finalDenoNs = {
core,
internal: internalSymbol,
@ -513,6 +521,14 @@ delete Intl.v8BreakIterator;
ops.op_net_listen_unixpacket,
),
});
ObjectAssign(finalDenoNs, {
Command: __bootstrap.spawn.createCommand(
finalDenoNs.spawn,
finalDenoNs.spawnSync,
finalDenoNs.spawnChild,
),
});
}
// Setup `Deno` global - we're actually overriding already existing global
@ -617,6 +633,14 @@ delete Intl.v8BreakIterator;
},
});
ObjectAssign(internals.nodeUnstable, {
Command: __bootstrap.spawn.createCommand(
internals.nodeUnstable.spawn,
internals.nodeUnstable.spawnSync,
internals.nodeUnstable.spawnChild,
),
});
const finalDenoNs = {
core,
internal: internalSymbol,
@ -640,6 +664,13 @@ delete Intl.v8BreakIterator;
ops.op_net_listen_unixpacket,
),
});
ObjectAssign(finalDenoNs, {
Command: __bootstrap.spawn.createCommand(
finalDenoNs.spawn,
finalDenoNs.spawnSync,
finalDenoNs.spawnChild,
),
});
}
ObjectDefineProperties(finalDenoNs, {
pid: util.readOnly(runtimeOptions.pid),