the-moby-effect
Version:
Moby/Docker API client built using effect-ts
68 lines (67 loc) • 3.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.demuxWithInputToConsole = exports.demuxFromStdinToStdoutAndStderr = exports.StdoutError = exports.StdinError = exports.StderrError = void 0;
var Console = _interopRequireWildcard(require("effect/Console"));
var Data = _interopRequireWildcard(require("effect/Data"));
var Effect = _interopRequireWildcard(require("effect/Effect"));
var Sink = _interopRequireWildcard(require("effect/Sink"));
var _multiplexed = require("./multiplexed.js");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
/**
* @since 1.0.0
* @category Errors
*/
class StdinError extends /*#__PURE__*/Data.TaggedError("StdinError") {}
/**
* @since 1.0.0
* @category Errors
*/
exports.StdinError = StdinError;
class StdoutError extends /*#__PURE__*/Data.TaggedError("StdoutError") {}
/**
* @since 1.0.0
* @category Errors
*/
exports.StdoutError = StdoutError;
class StderrError extends /*#__PURE__*/Data.TaggedError("StderrError") {}
/** @internal */
exports.StderrError = StderrError;
const demuxFromStdinToStdoutAndStderr = (sockets, options) => Effect.flatMap(Effect.all({
NodeSinkLazy: Effect.promise(() => import("@effect/platform-node/NodeSink")),
NodeStreamLazy: Effect.promise(() => import("@effect/platform-node/NodeStream"))
}, {
concurrency: 2
}), ({
NodeSinkLazy,
NodeStreamLazy
}) => {
const stdin = NodeStreamLazy.fromReadable(() => process.stdin, cause => new StdinError({
cause,
message: "stdin is not readable"
}));
const stdout = NodeSinkLazy.fromWritable(() => process.stdout, cause => new StdoutError({
cause,
message: "stdout is not writable"
}), {
endOnDone: false
});
const stderr = NodeSinkLazy.fromWritable(() => process.stderr, cause => new StderrError({
cause,
message: "stderr is not writable"
}), {
endOnDone: false
});
const {
underlying
} = (0, _multiplexed.asMultiplexedChannel)(sockets);
const multiplexedChannel = (0, _multiplexed.makeMultiplexedChannel)(underlying);
return (0, _multiplexed.demuxMultiplexedToSeparateSinks)(multiplexedChannel, stdin, stdout, stderr, options);
});
/** @internal */
exports.demuxFromStdinToStdoutAndStderr = demuxFromStdinToStdoutAndStderr;
const demuxWithInputToConsole = (sockets, input, options) => (0, _multiplexed.demuxMultiplexedToSeparateSinks)(sockets, input, Sink.forEach(Console.log), Sink.forEach(Console.error), options);
exports.demuxWithInputToConsole = demuxWithInputToConsole;
//# sourceMappingURL=stdio.js.map