@deno/shim-deno
Advanced tools
Comparing version
@@ -5,5 +5,98 @@ "use strict"; | ||
exports.stderr = exports.stdout = exports.stdin = void 0; | ||
const FsFile_js_1 = require("../classes/FsFile.js"); | ||
exports.stdin = new FsFile_js_1.File(0); | ||
exports.stdout = new FsFile_js_1.File(1); | ||
exports.stderr = new FsFile_js_1.File(2); | ||
function chain(fn, cleanup) { | ||
let prev; | ||
return function _fn(...args) { | ||
const curr = (prev || Promise.resolve()) | ||
.then(() => fn(...args)) | ||
.finally(cleanup || (() => { })) | ||
.then((result) => { | ||
if (prev === curr) | ||
prev = undefined; | ||
return result; | ||
}); | ||
return (prev = curr); | ||
}; | ||
} | ||
exports.stdin = { | ||
rid: 0, | ||
read: chain((p) => { | ||
return new Promise((resolve, reject) => { | ||
process.stdin.resume(); | ||
process.stdin.on("error", onerror); | ||
process.stdin.once("readable", () => { | ||
var _a; | ||
process.stdin.off("error", onerror); | ||
const data = (_a = process.stdin.read(p.length)) !== null && _a !== void 0 ? _a : process.stdin.read(); | ||
if (data) { | ||
p.set(data); | ||
resolve(data.length > 0 ? data.length : null); | ||
} | ||
else { | ||
resolve(null); | ||
} | ||
}); | ||
function onerror(error) { | ||
reject(error); | ||
process.stdin.off("error", onerror); | ||
} | ||
}); | ||
}, () => process.stdin.pause()), | ||
get readable() { | ||
throw new Error("Not implemented."); | ||
}, | ||
readSync() { | ||
// Node.js doesn't support readSync for stdin | ||
throw new Error("Not implemented."); | ||
}, | ||
close() { | ||
process.stdin.destroy(); | ||
}, | ||
}; | ||
exports.stdout = { | ||
rid: 1, | ||
write: chain((p) => { | ||
return new Promise((resolve) => { | ||
const result = process.stdout.write(p); | ||
if (!result) { | ||
process.stdout.once("drain", () => resolve(p.length)); | ||
} | ||
else { | ||
resolve(p.length); | ||
} | ||
}); | ||
}), | ||
get writable() { | ||
throw new Error("Not implemented."); | ||
}, | ||
writeSync() { | ||
// Node.js doesn't support writeSync for stdout | ||
throw new Error("Not implemented"); | ||
}, | ||
close() { | ||
process.stdout.destroy(); | ||
}, | ||
}; | ||
exports.stderr = { | ||
rid: 2, | ||
write: chain((p) => { | ||
return new Promise((resolve) => { | ||
const result = process.stderr.write(p); | ||
if (!result) { | ||
process.stderr.once("drain", () => resolve(p.length)); | ||
} | ||
else { | ||
resolve(p.length); | ||
} | ||
}); | ||
}), | ||
get writable() { | ||
throw new Error("Not implemented."); | ||
}, | ||
writeSync() { | ||
// Node.js doesn't support writeSync for stderr | ||
throw new Error("Not implemented"); | ||
}, | ||
close() { | ||
process.stderr.destroy(); | ||
}, | ||
}; |
{ | ||
"name": "@deno/shim-deno", | ||
"version": "0.4.2", | ||
"version": "0.4.3", | ||
"description": "Deno namespace shim for Node.js", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
246459
1.08%5946
1.59%