deno/ext/io
Daniel Osvaldo Rahmanto 432761aac5
Some checks are pending
ci / build libs (push) Blocked by required conditions
ci / test debug windows-x86_64 (push) Blocked by required conditions
ci / test release windows-x86_64 (push) Blocked by required conditions
ci / pre-build (push) Waiting to run
ci / test debug linux-aarch64 (push) Blocked by required conditions
ci / test release linux-aarch64 (push) Blocked by required conditions
ci / test debug macos-aarch64 (push) Blocked by required conditions
ci / test release macos-aarch64 (push) Blocked by required conditions
ci / bench release linux-x86_64 (push) Blocked by required conditions
ci / lint debug linux-x86_64 (push) Blocked by required conditions
ci / lint debug macos-x86_64 (push) Blocked by required conditions
ci / lint debug windows-x86_64 (push) Blocked by required conditions
ci / test debug linux-x86_64 (push) Blocked by required conditions
ci / test release linux-x86_64 (push) Blocked by required conditions
ci / test debug macos-x86_64 (push) Blocked by required conditions
ci / test release macos-x86_64 (push) Blocked by required conditions
ci / publish canary (push) Blocked by required conditions
fix(ext/node): fs.stat and fs.statSync compatibility (#30637)
Closes #30570

Changes in this PR:
- Implement `ino`, `nlink`, and `blocks` properties of `Deno.FileInfo`
on Windows. These changes are automatically reflected to the
corresponding node stat function. In order to do so, I had to tinker
with the
[createByteStruct](a3a904da14/ext/fs/30_fs.js (L297))
function to create another optional int type, apart from `?u64`. It's
common for small sized files on Windows (particularly NTFS file system)
to have a `Stats.blocks` property of 0, and currently all 0 values with
type `?u64` will be coerced into `null` by `createByteStruct`.
- Refactor the `BigIntStats` and `Stats` class, to use the same class
with Node.js that are provided from
[utils.mjs](7f8e488c36/ext/node/polyfills/internal/fs/utils.mjs (L577)).
Also ensures that all properties are not `null` or `undefined`.
- Addresses the `prefer-primordials` lint rule.
2025-09-15 15:29:30 +02:00
..
12_io.js fix(io): do not autoClose stdin readable stream (#30345) 2025-08-07 18:27:56 +05:30
bi_pipe.rs fix(unstable): fix json repl bugs (#30415) 2025-08-16 17:38:14 +02:00
Cargo.toml 2.5.0 (#30673) 2025-09-10 09:17:46 +05:30
fs.rs fix(ext/node): fs.stat and fs.statSync compatibility (#30637) 2025-09-15 15:29:30 +02:00
lib.rs chore: Rust 1.89.0 (#30364) 2025-08-09 11:11:48 +00:00
pipe.rs chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
README.md refactor: allow lazy main module (#28929) 2025-04-30 19:59:20 +00:00
winpipe.rs chore: update to edition 2024 (#29923) 2025-07-02 17:59:39 -07:00

deno_io

This crate provides IO primitives for other Deno extensions, this includes stdio streams and abstraction over File System files.

Usage Example

From javascript, include the extension's source:

import * as io from "ext:deno_io/12_io.js";

Then from rust, provide: deno_io::deno_io::init(Option<deno_io::Stdio>) in the extensions field of your RuntimeOptions

Where deno_io::Stdio implements Default, and can therefore be provided as Some(deno_io::Stdio::default())

Dependencies

  • deno_web: Provided by the deno_web crate
  • deno_tty: Provided in deno/runtime/ops/tty.rs