{"id":21831356,"url":"https://github.com/nodef/extra-fs","last_synced_at":"2026-02-14T22:03:06.066Z","repository":{"id":55634098,"uuid":"179787900","full_name":"nodef/extra-fs","owner":"nodef","description":"Useful additions to inbuilt fs module.","archived":false,"fork":false,"pushed_at":"2025-04-08T17:14:02.000Z","size":553,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-23T05:11:57.228Z","etag":null,"topics":["access","access-sync","append-file","append-file-sync","assert-exists","assert-exists-async","assert-exists-sync","assert-not-exists","assert-not-exists-async","assert-not-exists-sync","chmod","chmod-sync","chown","chown-sync","close","constants","extra","fs","promises","realpath-sync"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/extra-fs","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nodef.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-04-06T04:20:10.000Z","updated_at":"2025-04-08T17:14:03.000Z","dependencies_parsed_at":"2024-10-28T20:36:05.572Z","dependency_job_id":"e06230fb-8bd5-4ba6-84b4-ff4ef693e517","html_url":"https://github.com/nodef/extra-fs","commit_stats":{"total_commits":100,"total_committers":1,"mean_commits":100.0,"dds":0.0,"last_synced_commit":"28055870178f7b9cb9c8856fb24eab42704bfc5f"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/nodef/extra-fs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodef%2Fextra-fs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodef%2Fextra-fs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodef%2Fextra-fs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodef%2Fextra-fs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nodef","download_url":"https://codeload.github.com/nodef/extra-fs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodef%2Fextra-fs/sbom","scorecard":{"id":692413,"data":{"date":"2025-08-11","repo":{"name":"github.com/nodef/extra-fs","commit":"b64ff270364f7b34fc4eabfb0054ba04f704f58e"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.3,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Warn: no topLevel permission defined: .github/workflows/pr.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":4,"reason":"dependency not pinned by hash detected -- score normalized to 4","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/nodef/extra-fs/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/nodef/extra-fs/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/nodef/extra-fs/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/nodef/extra-fs/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/nodef/extra-fs/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/nodef/extra-fs/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/nodef/extra-fs/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:58: update your workflow using https://app.stepsecurity.io/secureworkflow/nodef/extra-fs/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/nodef/extra-fs/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/nodef/extra-fs/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:73: update your workflow using https://app.stepsecurity.io/secureworkflow/nodef/extra-fs/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:76: update your workflow using https://app.stepsecurity.io/secureworkflow/nodef/extra-fs/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pr.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/nodef/extra-fs/pr.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pr.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/nodef/extra-fs/pr.yml/master?enable=pin","Warn: npmCommand not pinned by hash: .github/workflows/ci.yml:63","Warn: npmCommand not pinned by hash: .github/workflows/ci.yml:80","Info:   0 out of  10 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   4 third-party GitHubAction dependencies pinned","Info:   5 out of   7 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":6,"reason":"4 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-h5c3-5r3r-rr8q","Warn: Project is vulnerable to: GHSA-rmvr-2pp2-xj38","Warn: Project is vulnerable to: GHSA-xx4v-prfh-6cgc","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-22T02:35:51.522Z","repository_id":55634098,"created_at":"2025-08-22T02:35:51.523Z","updated_at":"2025-08-22T02:35:51.523Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29457794,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T21:29:27.764Z","status":"ssl_error","status_checked_at":"2026-02-14T21:28:11.111Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["access","access-sync","append-file","append-file-sync","assert-exists","assert-exists-async","assert-exists-sync","assert-not-exists","assert-not-exists-async","assert-not-exists-sync","chmod","chmod-sync","chown","chown-sync","close","constants","extra","fs","promises","realpath-sync"],"created_at":"2024-11-27T19:09:52.889Z","updated_at":"2026-02-14T22:03:06.042Z","avatar_url":"https://github.com/nodef.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Useful additions to inbuilt [fs] module.\u003cbr\u003e\n📦 [Node.js](https://www.npmjs.com/package/extra-fs),\n📜 [Files](https://unpkg.com/extra-fs/),\n📰 [Docs](https://nodef.github.io/extra-fs/).\n\nThe **file system** we use today has its origins in the [UNIX file system]. A\n**file** is simply a *chunk of data (bytes)*. Each file has a *locally unique*\n*name* and *associated properties* which can be grouped together in a *hierarchy*\nof *directories*. A **directory** is a *list of files* and *other directories*,\nand has a *parent directory* (except the *root directory* `/`). Given the\ntree-structure, a file can be uniquely identified by its **full path**.\n\nAccess to a file is provided by the file system though the use of a **file**\n**descriptor**. This can be obtained from [open] by providing the *file path*, and\n*open mode (read/write)*. Once a file has been opened and necessary operations\nperformed, such as reading it with [read] or writing to it with [write], it\nshould be *closed* with [close]. Reading or writing *multiple blocks* of a file at a\ntime can be achieved with [readv] and [writev]. Once data is written to a file\nbeyond it current size, it is *automatically expanded*. However, to reduce the\nsize of a file (i.e., to *truncate* it), [ftruncate] is used. The **additional**\n**properties** attached to a file, such as *access/update time*, *access permissions*,\nor *ownership* of a file can be obtained with [fstat], and updated with [futimes],\n[fchmod], and [fchown] respectively.\n\n**Convenience methods** for accessing a file can also be used, which do not require\nus to go through the process of *opening* and *closing* files, and meticulously\nreading it or writing to it in blocks. These include [readFile], [writeFile],\n[appendFile], [truncate], [stat], [utimes]. [chmod] and [chown] are applicable\nor directories as well. A file can be opened as a **stream** for reading with\n[createReadStream] and for writing with [createWriteStream], and copied to\nanother path with [copyFile]. Access to a file or directory can be checked with\n[access], renamed/moved with [rename], copied to another path (recursively) with\n[cp], and removed (recursively) with [rm].\n\nSimilar to opening/closing of a file, a **directory** can be *opened* (to read its\ncontents) with [opendir], and *read* with [readdir]. A *new directory* can be\ncreated with [mkdir], and an *empty directory* can be *removed* with [rmdir] (a\nnon-empty directory can be recursively removed with [rm]). A *temporary directory*\n(with a unique random suffix) can be created with [mkdtemp]. Changes to a file\nor dierctory can be *observed* with [watch].\n\nThe file system also provides **symbolic links** and **hard links** which simply *point*\nto an *existing file or directory*. *Symbolic (or soft) links* point to a file or\ndirectory through its *path*, while *hard links* point *directly* to the file.\nTherefore *renaming/moving* or *removing* the *original file* makes symbolic links\n**dangling** (pointing to *non-existent file*, and thus will *not* work) but hard links\n*continue to work* (think of them as *shared pointers* to a memory block). A *hard*\n*link* can be *created* with [link], and a *symbolic link* (also called *symlink*) with\n[symlink]. Note that *symlinks* are basically files containing the *path* of target\nfile or directory, and this path can be *read* with [readlink]. The *full path* of a\nsymlink can be *resolved* with [realpath]. *Hard links* point directly to files, and\nthus do not have a *\"target\"* path. The *additional properties* attached to a\nsymlink, such as *access/update time*, or *ownership* of the symlink can be obtained\nwith [lstat], and updated with [lutimes], and [lchown] respectively. The *access*\n*permissions* of a symlink *cannot* be changed.\n\nThis package provides **async versions of functions** (in addition to the\nexisting *sync* and *callback*-based functions) in the inbuilt [fs] module,\nexposed as `*Async()` from the `fs.promises` namespace. They can be used with\n`Promise`-based asynchronous programming using the `await` keyword. In addition,\n**callback-based functions**, such as [readFile], also **behave as async functions**\nwhen a *callback* is **not provided**. The idea behind using `*Async()` function\nnames is to provide a **flat module**.\n\nIn addition, convenience functions such as [readFileText], [writeFileText],\n[readJson] and [writeJson] are included. For performing file/directory\n**existence check** *async* [exists], [assertExists], and [assertNotExists] can\nbe used. **Cleanup** of *one-item outer directories* (which are usually\ncreated upon extracting a compressed file) can be performed with [dehuskdir].\nThis package previously included `which()`, which is now instead suitably\nincluded in [extra-child-process] package.\n\n\u003e Stability: [Experimental](https://www.youtube.com/watch?v=L1j93RnIxEo).\n\n[fs]: https://nodejs.org/api/fs.html\n[extra-child-process]: https://www.npmjs.com/package/extra-child-process\n[UNIX file system]: https://www.youtube.com/watch?v=tc4ROCJYbm0\n\n\n\u003cbr\u003e\n\n```javascript\nconst xfs = require('extra-fs');\n\n\n// 1. Read file text.\nasync function example1() {\n  var text = xfs.readFileTextSync('.npmignore');\n  var text = await xfs.readFileText('.npmignore');\n  // → # Source only\n  // → .gitmodules\n  // → .github/\n  // → .docs/\n  // → ...\n}\nexample1();\n\n\n// 2. Read JSON file.\nasync function example2() {\n  var json = xfs.readJsonSync('package.json');\n  var json = await xfs.readJson('package.json');\n  // → {\n  // →   name: 'extra-fs',\n  // →   version: '3.0.27',\n  // →   description: 'Useful additions to inbuilt fs module.',\n  // →   ...\n  // → }\n}\nexample2();\n\n\n// 3. Assert that a file exists.\nasync function example3() {\n  if (!(await xfs.exists('LICENSE'))) throw 'May I see you license sir?';\n  await xfs.assertExists('LICENSE');\n}\nexample3();\n\n\n// 4. Get contents of a directory.\nasync function example4() {\n  var contents = xfs.readdirSync('src');\n  var contents = await xfs.readdir('src');\n  // → [ 'index.ts' ]\n}\nexample4();\n```\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n\n## Index\n\n| Property | Description |\n|  ----  |  ----  |\n| [open] | Open a file. |\n| [close] | Close a file. |\n| [read] | Read data from a file. |\n| [write] | Write data to a file. |\n| [readv] | Read an array of buffers from file. |\n| [writev] | Write an array of buffers to file. |\n| [ftruncate] | Shorten (truncate) a file. |\n| [futimes] | Change the file system timestamps of a file. |\n| [fstat] | Get information about a file. |\n| [fchmod] | Set the permissions of a file. |\n| [fchown] | Set the owner of a file. |\n| ... |  |\n| [link] | Create a hard link to a file or directory. |\n| [symlink] | Create a symbolic link to a file or directory. |\n| [readlink] | Read the contents of a symbolic link. |\n| [realpath] | Get canonical pathname by resolving ., .. |\n| [lutimes] | Change the file system timestamps of an object. |\n| [lstat] | Get information about a file, without dereferencing symbolic links. |\n| [lchown] | Set the owner of a symbolic link. |\n| ... |  |\n| [readFile] | Read the entire contents of a file. |\n| [writeFile] | Write data to the file, replace if it already exists. |\n| [appendFile] | Append data to a file, create if it does not exist. |\n| [truncate] | Shorten (truncate) a file. |\n| [unlink] | Remove a file or symbolic link. |\n| [utimes] | Change the file system timestamps of an object. |\n| [stat] | Get file status. |\n| [copyFile] | Copy source file to destination, overwite if exists. |\n| [readFileText] | Read file text with Unix EOL. |\n| [writeFileText] | Write file text with system EOL. |\n| [readJson] | Read JSON file as value. |\n| [writeJson] | Write object to JSON file. |\n| [watchFile] | Watch for changes on `filename`. |\n| [unwatchFile] | Stop watching for changes on `filename`. |\n| [watch] | Watch for changes on `filename`, where `filename` is either a file or a directory. |\n| [createReadStream] | Create a readable stream with 64kb `highWaterMark`. |\n| [createWriteStream] | Create a writeable stream from a desired `start` position. |\n| ... |  |\n| [mkdir] | Create a directory. |\n| [mkdtemp] | Create a unique temporary directory. |\n| [opendir] | Open a directory. |\n| [readdir] | Open a directory. |\n| [rmdir] | Remove a directory. |\n| [dehuskdir] | Remove outer one-item directories. |\n| ... |  |\n| [access] | Test a user's permissions for the file or directory. |\n| [chmod] | Change the permissions of a file. |\n| [chown] | Change owner and group of a file. |\n| [rename] | Rename/move a file or directory. |\n| [cp] | Copy source directory to destination, overwite if exists. |\n| [rm] | Remove a file or directory. |\n| [exists] | Check if file or directory exists. |\n| [assertExists] | Assert that a file or directory exists. |\n| [assertNotExists] | Assert that a file or directory does not exist. |\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n## References\n\n- [Node.js File system API](https://nodejs.org/api/fs.html)\n- [fs-extra package](https://www.npmjs.com/package/fs-extra)\n- [Soft and Hard links in Unix/Linux](https://www.geeksforgeeks.org/soft-hard-links-unixlinux/)\n- [Why do Linux/POSIX have lchown but not lchmod?](https://unix.stackexchange.com/q/224979/166668)\n- [Linux Commands](https://www.geeksforgeeks.org/linux-commands/)\n- [RegExr](https://regexr.com)\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n[![](https://img.youtube.com/vi/nA3x4vVEpKc/maxresdefault.jpg)](https://www.youtube.com/watch?v=nA3x4vVEpKc)\n[![ORG](https://img.shields.io/badge/org-nodef-green?logo=Org)](https://nodef.github.io)\n[![DOI](https://zenodo.org/badge/179787900.svg)](https://zenodo.org/badge/latestdoi/179787900)\n![](https://ga-beacon.deno.dev/G-RC63DPBH3P:SH3Eq-NoQ9mwgYeHWxu7cw/github.com/nodef/extra-fs)\n\n[open]: https://nodef.github.io/extra-fs/functions/open.html\n[close]: https://nodef.github.io/extra-fs/functions/close.html\n[read]: https://nodef.github.io/extra-fs/functions/read.html\n[write]: https://nodef.github.io/extra-fs/functions/write.html\n[readv]: https://nodef.github.io/extra-fs/functions/readv.html\n[writev]: https://nodef.github.io/extra-fs/functions/writev.html\n[ftruncate]: https://nodef.github.io/extra-fs/functions/ftruncate.html\n[futimes]: https://nodef.github.io/extra-fs/functions/futimes.html\n[fstat]: https://nodef.github.io/extra-fs/functions/fstat.html\n[fchmod]: https://nodef.github.io/extra-fs/functions/fchmod.html\n[fchown]: https://nodef.github.io/extra-fs/functions/fchown.html\n[link]: https://nodef.github.io/extra-fs/functions/link.html\n[symlink]: https://nodef.github.io/extra-fs/functions/symlink.html\n[readlink]: https://nodef.github.io/extra-fs/functions/readlink.html\n[realpath]: https://nodef.github.io/extra-fs/functions/realpath.html\n[lutimes]: https://nodef.github.io/extra-fs/functions/lutimes.html\n[lstat]: https://nodef.github.io/extra-fs/functions/lstat.html\n[lchown]: https://nodef.github.io/extra-fs/functions/lchown.html\n[readFile]: https://nodef.github.io/extra-fs/functions/readFile.html\n[writeFile]: https://nodef.github.io/extra-fs/functions/writeFile.html\n[appendFile]: https://nodef.github.io/extra-fs/functions/appendFile.html\n[truncate]: https://nodef.github.io/extra-fs/functions/truncate.html\n[unlink]: https://nodef.github.io/extra-fs/functions/unlink.html\n[utimes]: https://nodef.github.io/extra-fs/functions/utimes.html\n[stat]: https://nodef.github.io/extra-fs/functions/stat.html\n[copyFile]: https://nodef.github.io/extra-fs/functions/copyFile.html\n[readFileText]: https://nodef.github.io/extra-fs/functions/readFileText.html\n[writeFileText]: https://nodef.github.io/extra-fs/functions/writeFileText.html\n[readJson]: https://nodef.github.io/extra-fs/functions/readJson.html\n[writeJson]: https://nodef.github.io/extra-fs/functions/writeJson.html\n[watchFile]: https://nodef.github.io/extra-fs/functions/watchFile.html\n[unwatchFile]: https://nodef.github.io/extra-fs/functions/unwatchFile.html\n[watch]: https://nodef.github.io/extra-fs/functions/watch.html\n[createReadStream]: https://nodef.github.io/extra-fs/functions/createReadStream.html\n[createWriteStream]: https://nodef.github.io/extra-fs/functions/createWriteStream.html\n[mkdir]: https://nodef.github.io/extra-fs/functions/mkdir.html\n[mkdtemp]: https://nodef.github.io/extra-fs/functions/mkdtemp.html\n[opendir]: https://nodef.github.io/extra-fs/functions/opendir.html\n[readdir]: https://nodef.github.io/extra-fs/functions/readdir.html\n[rmdir]: https://nodef.github.io/extra-fs/functions/rmdir.html\n[dehuskdir]: https://nodef.github.io/extra-fs/functions/dehuskdir.html\n[access]: https://nodef.github.io/extra-fs/functions/access.html\n[chmod]: https://nodef.github.io/extra-fs/functions/chmod.html\n[chown]: https://nodef.github.io/extra-fs/functions/chown.html\n[rename]: https://nodef.github.io/extra-fs/functions/rename.html\n[cp]: https://nodef.github.io/extra-fs/functions/cp.html\n[rm]: https://nodef.github.io/extra-fs/functions/rm.html\n[exists]: https://nodef.github.io/extra-fs/functions/exists.html\n[assertExists]: https://nodef.github.io/extra-fs/functions/assertExists.html\n[assertNotExists]: https://nodef.github.io/extra-fs/functions/assertNotExists.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnodef%2Fextra-fs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnodef%2Fextra-fs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnodef%2Fextra-fs/lists"}