{"_id":"@platformatic/vfs","_rev":"13-20cbde2e20439531a234b7b04cad22b9","name":"@platformatic/vfs","dist-tags":{"next":"0.3.3-alpha.0","latest":"0.5.0"},"versions":{"0.1.0":{"name":"@platformatic/vfs","version":"0.1.0","keywords":["vfs","virtual-filesystem","in-memory-fs","fs","mount"],"license":"Apache-2.0","_id":"@platformatic/vfs@0.1.0","maintainers":[{"name":"mzugm","email":"mzugm@1368435.ca"},{"name":"ivan-tymoshenko","email":"ivan@tymoshenko.me"},{"name":"marcopiraccini","email":"marco.piraccini@gmail.com"},{"name":"leorossi","email":"leonardo.rossi@gmail.com"},{"name":"shogun_panda","email":"paolo@cowtech.it"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"qard","email":"admin@stephenbelanger.com"},{"name":"lucamaraschi","email":"luca.maraschi@gmail.com"},{"name":"simone.sanfra","email":"simone.sanfra@gmail.com"}],"homepage":"https://github.com/platformatic/vfs#readme","bugs":{"url":"https://github.com/platformatic/vfs/issues"},"dist":{"shasum":"b5e8d42fc130442077f03d022ef233cbb7b61eec","tarball":"https://registry.npmjs.org/@platformatic/vfs/-/vfs-0.1.0.tgz","fileCount":18,"integrity":"sha512-F8+E2AwlkC0tJyB+DH42RnlaYwIjVJ7PaPPcTv3Q+clFoAraQ7+pUQZM4FAFkCtlJoytN8H7Z/egWZVWkpl0nQ==","signatures":[{"sig":"MEUCIGeSU9UZ5JykeZLxoBYOJw68LkgWUQ7Xhj7YN7W5B8y1AiEA56DCmiCJN5RelseC3QTSkMPFbO3u80xBIQ9jIPkR3gk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":162644},"main":"index.js","types":"index.d.ts","engines":{"node":">= 22"},"exports":{".":"./index.js"},"gitHead":"276f3a57b1d88612d2f36b522d71cf629c775d00","scripts":{"lint":"eslint .","test":"node --test test/*.js","test:types":"tstyche"},"_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"repository":{"url":"git+https://github.com/platformatic/vfs.git","type":"git"},"_npmVersion":"11.6.2","description":"Virtual File System for Node.js - userland shim for node:vfs","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tstyche":"^3.5.0","@eslint/js":"^10.0.1","typescript":"^5.8.2","@types/node":"^25.3.2","@stylistic/eslint-plugin-js":"^4.4.1"},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.1.0_1773046929779_0.4063619998710768","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@platformatic/vfs","version":"0.1.1","keywords":["vfs","virtual-filesystem","in-memory-fs","fs","mount"],"license":"MIT","_id":"@platformatic/vfs@0.1.1","maintainers":[{"name":"mzugm","email":"mzugm@1368435.ca"},{"name":"ivan-tymoshenko","email":"ivan@tymoshenko.me"},{"name":"marcopiraccini","email":"marco.piraccini@gmail.com"},{"name":"leorossi","email":"leonardo.rossi@gmail.com"},{"name":"shogun_panda","email":"paolo@cowtech.it"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"qard","email":"admin@stephenbelanger.com"},{"name":"lucamaraschi","email":"luca.maraschi@gmail.com"},{"name":"simone.sanfra","email":"simone.sanfra@gmail.com"}],"homepage":"https://github.com/platformatic/vfs#readme","bugs":{"url":"https://github.com/platformatic/vfs/issues"},"dist":{"shasum":"75790b94afa28817a8dd3dc74b622f783bed023f","tarball":"https://registry.npmjs.org/@platformatic/vfs/-/vfs-0.1.1.tgz","fileCount":18,"integrity":"sha512-y6pHhmfq+CoMwwm/YfLUh64QTFVnySMZ3GBadw98scyraECmhucy0B59Wg8+we9NosIMn1KfK08D3oUiccYTHg==","signatures":[{"sig":"MEQCICn90cEnYaMJosbYzBda8blUSPiIiJI3L3Ut+xCmrJCMAiBNa9aVcSi2j2nnLMdSYwYNla5RUa6bcqyou2aPSJ9f2w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":152666},"main":"index.js","types":"index.d.ts","engines":{"node":">= 22"},"exports":{".":"./index.js"},"gitHead":"2d1eb7e693b3b1e9a137c0c5c478a76b37bae8dd","scripts":{"lint":"eslint .","test":"node --test test/*.js","test:types":"tstyche"},"_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"repository":{"url":"git+https://github.com/platformatic/vfs.git","type":"git"},"_npmVersion":"11.6.2","description":"Virtual File System for Node.js - userland shim for node:vfs","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tstyche":"^3.5.0","@eslint/js":"^10.0.1","typescript":"^5.8.2","@types/node":"^25.3.2","@stylistic/eslint-plugin-js":"^4.4.1"},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.1.1_1773138556210_0.06698399394977228","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@platformatic/vfs","version":"0.2.0","keywords":["vfs","virtual-filesystem","in-memory-fs","fs","mount"],"license":"MIT","_id":"@platformatic/vfs@0.2.0","maintainers":[{"name":"mzugm","email":"mzugm@1368435.ca"},{"name":"ivan-tymoshenko","email":"ivan@tymoshenko.me"},{"name":"marcopiraccini","email":"marco.piraccini@gmail.com"},{"name":"leorossi","email":"leonardo.rossi@gmail.com"},{"name":"shogun_panda","email":"paolo@cowtech.it"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"qard","email":"admin@stephenbelanger.com"},{"name":"lucamaraschi","email":"luca.maraschi@gmail.com"},{"name":"simone.sanfra","email":"simone.sanfra@gmail.com"}],"homepage":"https://github.com/platformatic/vfs#readme","bugs":{"url":"https://github.com/platformatic/vfs/issues"},"dist":{"shasum":"fc7c0139afa5d9f577dca5269dcbdcfa399ac7ef","tarball":"https://registry.npmjs.org/@platformatic/vfs/-/vfs-0.2.0.tgz","fileCount":18,"integrity":"sha512-CIQixja8TO6qtU8pXQ5kkofJ1Onuaos92xYFwMIlSIk3U4YqyeERhBhI6u6dWxILFyVSqnd0Aa9tiqx+so8ebQ==","signatures":[{"sig":"MEUCIFP0YAhbQjX+aq0q+59GfQpV/InZzfcxYOBIBEROyf0YAiEAgDxqaBivrkMC6I94L6Scn2iurEkhfc8sSnr4OVhHUJQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":152666},"main":"index.js","types":"index.d.ts","engines":{"node":">= 22"},"exports":{".":"./index.js"},"gitHead":"9727db36ecef13f7959ec93bcf8cca625713ea83","scripts":{"lint":"eslint .","test":"node --test test/*.js","test:types":"tstyche"},"_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"repository":{"url":"git+https://github.com/platformatic/vfs.git","type":"git"},"_npmVersion":"11.6.2","description":"Virtual File System for Node.js - userland shim for node:vfs","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tstyche":"^3.5.0","@eslint/js":"^10.0.1","typescript":"^5.8.2","@types/node":"^25.3.2","@stylistic/eslint-plugin-js":"^4.4.1"},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.2.0_1773673736008_0.866106064195288","host":"s3://npm-registry-packages-npm-production"}},"0.3.0-alpha.1":{"name":"@platformatic/vfs","version":"0.3.0-alpha.1","keywords":["vfs","virtual-filesystem","in-memory-fs","fs","mount"],"author":{"url":"https://platformatic.dev","name":"Platformatic Inc.","email":"oss@platformatic.dev"},"license":"MIT","_id":"@platformatic/vfs@0.3.0-alpha.1","maintainers":[{"name":"mzugm","email":"mzugm@1368435.ca"},{"name":"ivan-tymoshenko","email":"ivan@tymoshenko.me"},{"name":"marcopiraccini","email":"marco.piraccini@gmail.com"},{"name":"leorossi","email":"leonardo.rossi@gmail.com"},{"name":"shogun_panda","email":"paolo@cowtech.it"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"qard","email":"admin@stephenbelanger.com"},{"name":"lucamaraschi","email":"luca.maraschi@gmail.com"},{"name":"simone.sanfra","email":"simone.sanfra@gmail.com"}],"homepage":"https://github.com/platformatic/vfs","bugs":{"url":"https://github.com/platformatic/vfs/issues"},"dist":{"shasum":"c714a7aaf5e07019e58a4c44e55f07d361051eb2","tarball":"https://registry.npmjs.org/@platformatic/vfs/-/vfs-0.3.0-alpha.1.tgz","fileCount":18,"integrity":"sha512-kOIv24d3Xq1VuAbmKZSqAlW6qdTJvn1YLMRR99GlinxO+UeG4+2xp8mkLhg6FnV5cmK48n1Oso26duew4ZwrmQ==","signatures":[{"sig":"MEUCIQCCJ29gMkh3l6mbhdFrOCixKq/HSaXHGQJ72qm/EXSEyAIgU7MqSO453JvJD8KpZRM9qhQ4RGHMxzRZ/oghJfS9kWg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@platformatic%2fvfs@0.3.0-alpha.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":153220},"main":"index.js","_from":"file:platformatic-vfs-0.3.0-alpha.1.tgz","types":"index.d.ts","engines":{"node":">= 22"},"exports":"./index.js","private":false,"scripts":{"ci":"npm run lint && npm run test:types && npm run test","lint":"eslint --cache","test":"c8 -c test/config/c8.json node  --test --test-reporter=cleaner-spec-reporter --test-timeout=60000 'test/*.test.js'","typecheck":"tsc -p . --noEmit","test:types":"tstyche"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec196df5-c7ba-4bdb-b203-e98bee6c3d64"}},"_resolved":"/tmp/35582e55944b8592b8b3a81db0db16f1/platformatic-vfs-0.3.0-alpha.1.tgz","_integrity":"sha512-kOIv24d3Xq1VuAbmKZSqAlW6qdTJvn1YLMRR99GlinxO+UeG4+2xp8mkLhg6FnV5cmK48n1Oso26duew4ZwrmQ==","repository":{"url":"git+https://github.com/platformatic/vfs.git","type":"git"},"_npmVersion":"11.11.1","description":"Virtual File System for Node.js - userland shim for node:vfs","directories":{},"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^10.1.3","eslint":"^10.0.2","semver":"^7.7.4","tstyche":"^3.5.0","@eslint/js":"^10.0.1","typescript":"^5.8.2","@types/node":"^25.3.2","@types/semver":"^7.7.1","cleaner-spec-reporter":"^1.0.3","@stylistic/eslint-plugin-js":"^4.4.1"},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.3.0-alpha.1_1773740691013_0.45090713076634037","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@platformatic/vfs","version":"0.3.0","keywords":["vfs","virtual-filesystem","in-memory-fs","fs","mount"],"author":{"url":"https://platformatic.dev","name":"Platformatic Inc.","email":"oss@platformatic.dev"},"license":"MIT","_id":"@platformatic/vfs@0.3.0","maintainers":[{"name":"mzugm","email":"mzugm@1368435.ca"},{"name":"ivan-tymoshenko","email":"ivan@tymoshenko.me"},{"name":"marcopiraccini","email":"marco.piraccini@gmail.com"},{"name":"leorossi","email":"leonardo.rossi@gmail.com"},{"name":"shogun_panda","email":"paolo@cowtech.it"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"qard","email":"admin@stephenbelanger.com"},{"name":"lucamaraschi","email":"luca.maraschi@gmail.com"},{"name":"simone.sanfra","email":"simone.sanfra@gmail.com"}],"homepage":"https://github.com/platformatic/vfs","bugs":{"url":"https://github.com/platformatic/vfs/issues"},"dist":{"shasum":"d3664af6b2ad3add1661ce7aa9be2a970bb22d19","tarball":"https://registry.npmjs.org/@platformatic/vfs/-/vfs-0.3.0.tgz","fileCount":18,"integrity":"sha512-BGXVOAz59HYPZCgI9v/MtiTF/ng8YAWtkooxVwOPR3TatNgGy0WZ/t15ScqytiZi5NdSRqWNRfuAbXKeAlKDdQ==","signatures":[{"sig":"MEYCIQDc9CKFk07R+L6iRcat+h9wJV5spDLEC27U35pYJb2/ngIhAJWHO/Lr5VGJM40TJ+yfipcWFZfiuNAcMjaqVZNu530S","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@platformatic%2fvfs@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":153212},"main":"index.js","_from":"file:platformatic-vfs-0.3.0.tgz","types":"index.d.ts","engines":{"node":">= 22"},"exports":"./index.js","private":false,"scripts":{"ci":"npm run lint && npm run test:types && npm run test","lint":"eslint --cache","test":"c8 -c test/config/c8.json node  --test --test-reporter=cleaner-spec-reporter --test-timeout=60000 'test/*.test.js'","typecheck":"tsc -p . --noEmit","test:types":"tstyche"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec196df5-c7ba-4bdb-b203-e98bee6c3d64"}},"_resolved":"/tmp/e27cece0171ea3291e88039a1e77378c/platformatic-vfs-0.3.0.tgz","_integrity":"sha512-BGXVOAz59HYPZCgI9v/MtiTF/ng8YAWtkooxVwOPR3TatNgGy0WZ/t15ScqytiZi5NdSRqWNRfuAbXKeAlKDdQ==","repository":{"url":"git+https://github.com/platformatic/vfs.git","type":"git"},"_npmVersion":"11.11.1","description":"Virtual File System for Node.js - userland shim for node:vfs","directories":{},"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","eslint":"^10.0.2","semver":"^7.7.4","tstyche":"^3.5.0","@eslint/js":"^10.0.1","typescript":"^5.8.2","@types/node":"^25.3.2","@types/semver":"^7.7.1","cleaner-spec-reporter":"^1.0.3","@stylistic/eslint-plugin-js":"^4.4.1"},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.3.0_1773742932142_0.3348556890532335","host":"s3://npm-registry-packages-npm-production"}},"0.3.3-alpha.0":{"name":"@platformatic/vfs","version":"0.3.3-alpha.0","keywords":["vfs","virtual-filesystem","in-memory-fs","fs","mount"],"author":{"url":"https://platformatic.dev","name":"Platformatic Inc.","email":"oss@platformatic.dev"},"license":"MIT","_id":"@platformatic/vfs@0.3.3-alpha.0","maintainers":[{"name":"mzugm","email":"mzugm@1368435.ca"},{"name":"ivan-tymoshenko","email":"ivan@tymoshenko.me"},{"name":"marcopiraccini","email":"marco.piraccini@gmail.com"},{"name":"leorossi","email":"leonardo.rossi@gmail.com"},{"name":"shogun_panda","email":"paolo@cowtech.it"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"qard","email":"admin@stephenbelanger.com"},{"name":"lucamaraschi","email":"luca.maraschi@gmail.com"}],"homepage":"https://github.com/platformatic/vfs","bugs":{"url":"https://github.com/platformatic/vfs/issues"},"dist":{"shasum":"91c475e8f61ccb41bed4c5616963d6e2fb1ffe69","tarball":"https://registry.npmjs.org/@platformatic/vfs/-/vfs-0.3.3-alpha.0.tgz","fileCount":18,"integrity":"sha512-mHckIfbx/lc1b3wdvii9Z/bJI+Erwqu5V+bwnEVkY2Uu1UfAq+/zxJD7wJfI0KuJtAicD9S5eynq8L7N7aZnHQ==","signatures":[{"sig":"MEYCIQDjcEuuOAFlMQQqeQHyGqrI2t/9qyKuRN0zRqqHn54GbwIhANFeNYVfzoJbxfcgObH+piOiLYaub0foEJBEEA6e9ASi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@platformatic%2fvfs@0.3.3-alpha.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":153322},"main":"index.js","_from":"file:platformatic-vfs-0.3.3-alpha.0.tgz","types":"index.d.ts","engines":{"node":">= 22"},"exports":"./index.js","private":false,"scripts":{"ci":"npm run lint && npm run test:types && npm run test","lint":"eslint --cache","test":"c8 -c test/config/c8.json node  --test --test-reporter=cleaner-spec-reporter --test-timeout=60000 'test/*.test.js'","typecheck":"tsc -p . --noEmit","test:types":"tstyche"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec196df5-c7ba-4bdb-b203-e98bee6c3d64"}},"_resolved":"/tmp/c5e36a73a33db43428409cd7e29ac5ac/platformatic-vfs-0.3.3-alpha.0.tgz","_integrity":"sha512-mHckIfbx/lc1b3wdvii9Z/bJI+Erwqu5V+bwnEVkY2Uu1UfAq+/zxJD7wJfI0KuJtAicD9S5eynq8L7N7aZnHQ==","repository":{"url":"git+https://github.com/platformatic/vfs.git","type":"git"},"_npmVersion":"11.11.0","description":"Virtual File System for Node.js - userland shim for node:vfs","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^10.1.3","eslint":"^10.0.2","semver":"^7.7.4","tstyche":"^3.5.0","@eslint/js":"^10.0.1","typescript":"^5.8.2","@types/node":"^25.3.2","@types/semver":"^7.7.1","cleaner-spec-reporter":"^1.0.3","@stylistic/eslint-plugin-js":"^4.4.1"},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.3.3-alpha.0_1776685525502_0.08334075057721901","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@platformatic/vfs","version":"0.3.3","keywords":["vfs","virtual-filesystem","in-memory-fs","fs","mount"],"author":{"url":"https://platformatic.dev","name":"Platformatic Inc.","email":"oss@platformatic.dev"},"license":"MIT","_id":"@platformatic/vfs@0.3.3","maintainers":[{"name":"mzugm","email":"mzugm@1368435.ca"},{"name":"ivan-tymoshenko","email":"ivan@tymoshenko.me"},{"name":"marcopiraccini","email":"marco.piraccini@gmail.com"},{"name":"leorossi","email":"leonardo.rossi@gmail.com"},{"name":"shogun_panda","email":"paolo@cowtech.it"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"qard","email":"admin@stephenbelanger.com"},{"name":"lucamaraschi","email":"luca.maraschi@gmail.com"}],"homepage":"https://github.com/platformatic/vfs","bugs":{"url":"https://github.com/platformatic/vfs/issues"},"dist":{"shasum":"98bfd085ecfe37b5709bc3434f5b7393d53a637d","tarball":"https://registry.npmjs.org/@platformatic/vfs/-/vfs-0.3.3.tgz","fileCount":18,"integrity":"sha512-MjJlLUU+4YsePK9a9PpTRTWZ1m0OiM3mGCKI2xjDf/lE6K9q1+wmNkwBk3+CEqQL3K0dwpvDZ/sGNBpC6NI4Bg==","signatures":[{"sig":"MEYCIQCt7/B3+8t3uFvQ//TzFJRAy+KB0jUE3ALFo4c2EgAVVAIhAOYP92IrQRl15ciAR/udmQzEzLswA/+k5SxOBC2buff5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@platformatic%2fvfs@0.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":153314},"main":"index.js","_from":"file:platformatic-vfs-0.3.3.tgz","types":"index.d.ts","engines":{"node":">= 22"},"exports":"./index.js","private":false,"scripts":{"ci":"npm run lint && npm run test:types && npm run test","lint":"eslint --cache","test":"c8 -c test/config/c8.json node  --test --test-reporter=cleaner-spec-reporter --test-timeout=60000 'test/*.test.js'","typecheck":"tsc -p . --noEmit","test:types":"tstyche"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec196df5-c7ba-4bdb-b203-e98bee6c3d64"}},"_resolved":"/tmp/1bce90a02e69edb01fcd153de66bab70/platformatic-vfs-0.3.3.tgz","_integrity":"sha512-MjJlLUU+4YsePK9a9PpTRTWZ1m0OiM3mGCKI2xjDf/lE6K9q1+wmNkwBk3+CEqQL3K0dwpvDZ/sGNBpC6NI4Bg==","repository":{"url":"git+https://github.com/platformatic/vfs.git","type":"git"},"_npmVersion":"11.11.0","description":"Virtual File System for Node.js - userland shim for node:vfs","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","eslint":"^10.0.2","semver":"^7.7.4","tstyche":"^3.5.0","@eslint/js":"^10.0.1","typescript":"^5.8.2","@types/node":"^25.3.2","@types/semver":"^7.7.1","cleaner-spec-reporter":"^1.0.3","@stylistic/eslint-plugin-js":"^4.4.1"},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.3.3_1776685568649_0.9846338523979141","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@platformatic/vfs","version":"0.3.4","keywords":["vfs","virtual-filesystem","in-memory-fs","fs","mount"],"author":{"url":"https://platformatic.dev","name":"Platformatic Inc.","email":"oss@platformatic.dev"},"license":"MIT","_id":"@platformatic/vfs@0.3.4","maintainers":[{"name":"mzugm","email":"mzugm@1368435.ca"},{"name":"ivan-tymoshenko","email":"ivan@tymoshenko.me"},{"name":"marcopiraccini","email":"marco.piraccini@gmail.com"},{"name":"leorossi","email":"leonardo.rossi@gmail.com"},{"name":"shogun_panda","email":"paolo@cowtech.it"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"qard","email":"admin@stephenbelanger.com"},{"name":"lucamaraschi","email":"luca.maraschi@gmail.com"}],"homepage":"https://github.com/platformatic/vfs","bugs":{"url":"https://github.com/platformatic/vfs/issues"},"dist":{"shasum":"bfad7c0906cbd72029c92aae2f5e74bb812d05c0","tarball":"https://registry.npmjs.org/@platformatic/vfs/-/vfs-0.3.4.tgz","fileCount":18,"integrity":"sha512-UNnk9CErKHUib7E03VpIIrtHquvN2e5Lx7vevJpsHM3lj+k2p5qRIrl+cs3qCv1iP3zdU/QHOA9no/duEyUimw==","signatures":[{"sig":"MEUCIQDACZZunY4xD5FG6Y2PCxWAUkKmbo+p9uAzPPQ052kvzQIgeKGvpO7wO1XCfKajic67Cc3TPPj83hnr4f2Bsc83ELk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@platformatic%2fvfs@0.3.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":153509},"main":"index.js","_from":"file:platformatic-vfs-0.3.4.tgz","types":"index.d.ts","engines":{"node":">= 22"},"exports":"./index.js","private":false,"scripts":{"ci":"npm run lint && npm run test:types && npm run test","lint":"eslint --cache","test":"c8 -c test/config/c8.json node  --test --test-reporter=cleaner-spec-reporter --test-timeout=60000 'test/*.test.js'","typecheck":"tsc -p . --noEmit","test:types":"tstyche"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec196df5-c7ba-4bdb-b203-e98bee6c3d64"}},"_resolved":"/tmp/fb077227ca7d10520477bc150b2d0f12/platformatic-vfs-0.3.4.tgz","_integrity":"sha512-UNnk9CErKHUib7E03VpIIrtHquvN2e5Lx7vevJpsHM3lj+k2p5qRIrl+cs3qCv1iP3zdU/QHOA9no/duEyUimw==","repository":{"url":"git+https://github.com/platformatic/vfs.git","type":"git"},"_npmVersion":"11.11.0","description":"Virtual File System for Node.js - userland shim for node:vfs","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","eslint":"^10.0.2","semver":"^7.7.4","tstyche":"^3.5.0","@eslint/js":"^10.0.1","typescript":"^5.8.2","@types/node":"^25.3.2","@types/semver":"^7.7.1","cleaner-spec-reporter":"^1.0.3","@stylistic/eslint-plugin-js":"^4.4.1"},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.3.4_1776701900180_0.25110183878854","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@platformatic/vfs","version":"0.4.0","keywords":["vfs","virtual-filesystem","in-memory-fs","fs","mount"],"author":{"url":"https://platformatic.dev","name":"Platformatic Inc.","email":"oss@platformatic.dev"},"license":"MIT","_id":"@platformatic/vfs@0.4.0","maintainers":[{"name":"mzugm","email":"mzugm@1368435.ca"},{"name":"ivan-tymoshenko","email":"ivan@tymoshenko.me"},{"name":"marcopiraccini","email":"marco.piraccini@gmail.com"},{"name":"leorossi","email":"leonardo.rossi@gmail.com"},{"name":"shogun_panda","email":"paolo@cowtech.it"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"qard","email":"admin@stephenbelanger.com"},{"name":"lucamaraschi","email":"luca.maraschi@gmail.com"}],"homepage":"https://github.com/platformatic/vfs","bugs":{"url":"https://github.com/platformatic/vfs/issues"},"dist":{"shasum":"7bcdb466883ed80df71816123fd8febc1fcc94bf","tarball":"https://registry.npmjs.org/@platformatic/vfs/-/vfs-0.4.0.tgz","fileCount":18,"integrity":"sha512-JwRxSIG63e/VaDSkYXkSBajySt5MJzxYIKuknYda28fhhmJMqyUGf5rbKrGW+vO9L83nIjQH3+YI12fp7EKICQ==","signatures":[{"sig":"MEQCIBtgqWYaX3LXBQuypcBUaQtu3SjNn0tmQe+Zv/Hk8x8aAiADaz4bNS9MiS2C0zXgtDm31f7beB8CTu4s2k03wJrAMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@platformatic%2fvfs@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":173923},"main":"index.js","_from":"file:platformatic-vfs-0.4.0.tgz","types":"index.d.ts","engines":{"node":">= 22"},"exports":"./index.js","private":false,"scripts":{"ci":"npm run lint && npm run test:types && npm run test","lint":"eslint --cache","test":"c8 -c test/config/c8.json node  --test --test-reporter=cleaner-spec-reporter --test-timeout=60000 'test/*.test.js'","typecheck":"tsc -p . --noEmit","test:types":"tstyche"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec196df5-c7ba-4bdb-b203-e98bee6c3d64"}},"_resolved":"/tmp/06a157d824f2471d951a9bdf906b04b0/platformatic-vfs-0.4.0.tgz","_integrity":"sha512-JwRxSIG63e/VaDSkYXkSBajySt5MJzxYIKuknYda28fhhmJMqyUGf5rbKrGW+vO9L83nIjQH3+YI12fp7EKICQ==","repository":{"url":"git+https://github.com/platformatic/vfs.git","type":"git"},"_npmVersion":"11.11.0","description":"Virtual File System for Node.js - userland shim for node:vfs","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","eslint":"^10.0.2","semver":"^7.7.4","tstyche":"^3.5.0","@eslint/js":"^10.0.1","typescript":"^5.8.2","@types/node":"^25.3.2","@types/semver":"^7.7.1","cleaner-spec-reporter":"^1.0.3","@stylistic/eslint-plugin-js":"^4.4.1"},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.4.0_1776703649189_0.4495635074334574","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@platformatic/vfs","version":"0.4.1","keywords":["vfs","virtual-filesystem","in-memory-fs","fs","mount"],"author":{"url":"https://platformatic.dev","name":"Platformatic Inc.","email":"oss@platformatic.dev"},"license":"MIT","_id":"@platformatic/vfs@0.4.1","maintainers":[{"name":"mzugm","email":"mzugm@1368435.ca"},{"name":"ivan-tymoshenko","email":"ivan@tymoshenko.me"},{"name":"marcopiraccini","email":"marco.piraccini@gmail.com"},{"name":"leorossi","email":"leonardo.rossi@gmail.com"},{"name":"shogun_panda","email":"paolo@cowtech.it"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"qard","email":"admin@stephenbelanger.com"},{"name":"lucamaraschi","email":"luca.maraschi@gmail.com"}],"homepage":"https://github.com/platformatic/vfs","bugs":{"url":"https://github.com/platformatic/vfs/issues"},"dist":{"shasum":"95025eb76aa0dfd57a843f2dc17cd0468c7502c4","tarball":"https://registry.npmjs.org/@platformatic/vfs/-/vfs-0.4.1.tgz","fileCount":18,"integrity":"sha512-y8WuXiV77ovmAnFhdXLQPJyg/2yde1yJLzOmsnjJTs9ZFGJel81exqgID52NozjyGwaxizTN1nZWIW3Rxw1Tlw==","signatures":[{"sig":"MEQCIBHFCxgxEfBC6j94Zzx7M0xI6toSkRWOIMJoVBNkz/mgAiA+SXyypT2rvK8uq+qZFV0itvrRKd9b3ta2d3JA8TOzqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDxiKlJI0G2q4RmaHc7uCO6yLwA9SToBc1h+17sCFJltgIhAMk7Ke/DnCkZG0CBvPL8RoyHCMTMK6OncM1NxaHyLIU5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179106},"main":"index.js","types":"index.d.ts","engines":{"node":">= 22"},"exports":"./index.js","gitHead":"e487a9a87152b08bce5861be094516d7bc40dcf6","private":false,"scripts":{"ci":"npm run lint && npm run test:types && npm run test","lint":"eslint --cache","test":"c8 -c test/config/c8.json node  --test --test-reporter=cleaner-spec-reporter --test-timeout=60000 'test/*.test.js'","typecheck":"tsc -p . --noEmit","test:types":"tstyche","postpublish":"git push origin && git push origin -f --tags","prepublishOnly":"npm run lint"},"_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"repository":{"url":"git+https://github.com/platformatic/vfs.git","type":"git"},"_npmVersion":"11.16.0","description":"Virtual File System for Node.js - userland shim for node:vfs","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","eslint":"^10.0.2","semver":"^7.7.4","tstyche":"^3.5.0","@eslint/js":"^10.0.1","typescript":"^5.8.2","@types/node":"^25.3.2","@types/semver":"^7.7.1","cleaner-spec-reporter":"^1.0.3","@stylistic/eslint-plugin-js":"^4.4.1"},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.4.1_1790173942398_0.5690045002641975","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"_id":"@platformatic/vfs@0.5.0","bugs":{"url":"https://github.com/platformatic/vfs/issues"},"dist":{"shasum":"c6e6c902a2d5519c1d564e12f5a863cb07010cc8","tarball":"https://registry.npmjs.org/@platformatic/vfs/-/vfs-0.5.0.tgz","fileCount":19,"integrity":"sha512-U/yG5a2IELJxAtwkgGmhZJnLCHRzyxNyWWbaDKMbCyjB0kuPxU9fvIZCxf7Kv7jz7I7IXlyuY7gXkXGMdLHhPw==","signatures":[{"sig":"MEYCIQCjgMyEnmqJlVlXAMbJUlJsiD6SzubWeQDODrdTHsjnIQIhAIeu8eB8yS8qer43Z4diDQeZc+WkGA7h2geoAl3mdzl4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFPBUrbI5DvwMX7qBqlI/Rxr3FWHenzFsmjYrg4X9V3CAiEA28OMoyqUc6IhHOUIwCKLrCxlpRl/Ui45jzbOV/MCohk="}],"unpackedSize":191602},"main":"index.js","name":"@platformatic/vfs","types":"index.d.ts","author":{"url":"https://platformatic.dev","name":"Platformatic Inc.","email":"oss@platformatic.dev"},"engines":{"node":">= 22"},"exports":"./index.js","gitHead":"6c06597f7e4d48f14f31d0eb8d52a0d83851c6c7","license":"MIT","private":false,"scripts":{"ci":"npm run lint && npm run test:types && npm run test","lint":"eslint --cache","test":"c8 -c test/config/c8.json node  --test --test-reporter=cleaner-spec-reporter --test-timeout=60000 'test/*.test.js'","typecheck":"tsc -p . --noEmit","test:types":"tstyche","postpublish":"git push origin && git push origin -f --tags","prepublishOnly":"npm run lint"},"version":"0.5.0","_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"homepage":"https://github.com/platformatic/vfs","keywords":["vfs","virtual-filesystem","in-memory-fs","fs","mount"],"repository":{"url":"git+https://github.com/platformatic/vfs.git","type":"git"},"_npmVersion":"11.16.0","description":"Virtual File System for Node.js - userland shim for node:vfs","directories":{},"maintainers":[{"name":"mzugm","email":"mzugm@1368435.ca"},{"name":"ivan-tymoshenko","email":"ivan@tymoshenko.me"},{"name":"marcopiraccini","email":"marco.piraccini@gmail.com"},{"name":"leorossi","email":"leonardo.rossi@gmail.com"},{"name":"shogun_panda","email":"paolo@cowtech.it"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"qard","email":"admin@stephenbelanger.com"},{"name":"lucamaraschi","email":"luca.maraschi@gmail.com"}],"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","eslint":"^10.0.2","semver":"^7.7.4","tstyche":"^3.5.0","@eslint/js":"^10.0.1","typescript":"^5.8.2","@types/node":"^25.3.2","@types/semver":"^7.7.1","cleaner-spec-reporter":"^1.0.3","@stylistic/eslint-plugin-js":"^4.4.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vfs_0.5.0_1790184177827_0.0024214061576146584"}}},"time":{"created":"2026-03-09T09:02:09.778Z","modified":"2026-09-23T17:22:58.110Z","0.1.0":"2026-03-09T09:02:09.928Z","0.1.1":"2026-03-10T10:29:16.351Z","0.2.0":"2026-03-16T15:08:56.154Z","0.3.0-alpha.1":"2026-03-17T09:44:51.157Z","0.3.0":"2026-03-17T10:22:12.290Z","0.3.3-alpha.0":"2026-04-20T11:45:25.660Z","0.3.3":"2026-04-20T11:46:08.783Z","0.3.4":"2026-04-20T16:18:20.318Z","0.4.0":"2026-04-20T16:47:29.327Z","0.4.1":"2026-09-23T14:32:22.498Z","0.5.0":"2026-09-23T17:22:57.909Z"},"bugs":{"url":"https://github.com/platformatic/vfs/issues"},"author":{"url":"https://platformatic.dev","name":"Platformatic Inc.","email":"oss@platformatic.dev"},"license":"MIT","homepage":"https://github.com/platformatic/vfs","keywords":["vfs","virtual-filesystem","in-memory-fs","fs","mount"],"repository":{"url":"git+https://github.com/platformatic/vfs.git","type":"git"},"description":"Virtual File System for Node.js - userland shim for node:vfs","maintainers":[{"name":"mzugm","email":"mzugm@1368435.ca"},{"name":"ivan-tymoshenko","email":"ivan@tymoshenko.me"},{"name":"marcopiraccini","email":"marco.piraccini@gmail.com"},{"name":"leorossi","email":"leonardo.rossi@gmail.com"},{"name":"shogun_panda","email":"paolo@cowtech.it"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"qard","email":"admin@stephenbelanger.com"},{"name":"lucamaraschi","email":"luca.maraschi@gmail.com"}],"readme":"# @platformatic/vfs\n\nA Virtual File System for Node.js. Provides an in-memory `fs`-compatible API with mount points, overlay mode, symlinks, module loading hooks, and custom storage providers.\n\n## Install\n\n```\nnpm install @platformatic/vfs\n```\n\nRequires Node.js >= 22.\n\n## Quick start\n\n```js\nconst { create } = require('@platformatic/vfs');\n\nconst vfs = create();\n\nvfs.writeFileSync('/app/index.js', 'module.exports = \"hello\"');\n\n// Mount in an isolated namespace; the returned path is platform-dependent.\nconst mountPoint = vfs.mount();\nconst mod = require(`${mountPoint}/app/index.js`); // 'hello'\n\nvfs.unmount();\n```\n\n## API\n\n### `create([provider], [options])`\n\nCreates a new `VirtualFileSystem` instance.\n\n- **provider** — a `VirtualProvider` instance (defaults to `MemoryProvider`)\n- **options.moduleHooks** `<boolean>` — patch `require()`/`import` and core `fs` functions so the process can load modules from the VFS (default `true`)\n- **options.overlay** `<boolean>` — when `true`, only files that exist in the VFS are intercepted; everything else falls through to the real filesystem (default `false`)\n- **options.virtualCwd** `<boolean>` — enable a virtual working directory that intercepts `process.cwd()` and `process.chdir()` (default `false`)\n\nReturns a `VirtualFileSystem`.\n\n### `VirtualFileSystem`\n\n#### Properties\n\n| Property | Type | Description |\n|---|---|---|\n| `provider` | `VirtualProvider` | The underlying storage provider |\n| `mountPoint` | `string \\| null` | Current isolated mount path, or `null` |\n| `mounted` | `boolean` | Whether the VFS is currently mounted |\n| `readonly` | `boolean` | Whether the provider is read-only |\n| `overlay` | `boolean` | Whether overlay mode is enabled |\n\n#### Mount / Unmount\n\n```js\nconst mountPoint = vfs.mount(); // e.g. '/dev/null/vfs/0' (platform-dependent)\nvfs.mountPointURL;             // file: URL for import()\nvfs.unmount();                 // Stop intercepting\n```\n\n`mount()` returns a unique mount point inside `os.devNull/vfs/` (matching Node.js core's namespace). It takes no arguments; passing a prefix throws a `TypeError`. The mount point avoids shadowing real paths and can be addressed through `mountPointURL`. When mounted with `moduleHooks: true` (the default), this package patches selected `require()`, `import`, `fs`, and `fs.promises` entry points; see the limitations below.\n\nEmits `vfs-mount` and `vfs-unmount` events on `process`.\n\nSupports `Symbol.dispose` — works with `using` declarations in environments that support it.\n\n#### `shouldHandle(path)`\n\nReturns `true` if the given path would be handled by this VFS instance. In overlay mode, only returns `true` for paths that actually exist in the VFS.\n\n#### Sync API\n\nThe synchronous VFS API includes:\n\n```js\nvfs.writeFileSync(path, data[, options])\nvfs.readFileSync(path[, options])          // returns Buffer or string\nvfs.existsSync(path)\nvfs.statSync(path[, options])\nvfs.lstatSync(path[, options])\nvfs.readdirSync(path[, options])           // supports { withFileTypes: true }\nvfs.mkdirSync(path[, options])             // supports { recursive: true }\nvfs.rmdirSync(path)\nvfs.unlinkSync(path)\nvfs.renameSync(oldPath, newPath)\nvfs.copyFileSync(src, dest)\nvfs.appendFileSync(path, data[, options])\nvfs.accessSync(path[, mode])\nvfs.realpathSync(path[, options])\nvfs.symlinkSync(target, path[, type])\nvfs.readlinkSync(path[, options])\nvfs.rmSync(path[, options])              // { recursive, force }\nvfs.truncateSync(path[, len])\nvfs.ftruncateSync(fd[, len])\nvfs.mkdtempSync(prefix)\n```\n\n#### File descriptors\n\n```js\nconst fd = vfs.openSync(path[, flags[, mode]]);\nvfs.readSync(fd, buffer, offset, length, position);\nvfs.fstatSync(fd[, options]);\nvfs.closeSync(fd);\n```\n\n#### Callback API\n\nSome sync methods have callback counterparts following the standard Node.js `(err, result)` convention:\n\n```js\nvfs.readFile(path, options, callback)\nvfs.writeFile(path, data, options, callback)\nvfs.stat(path, options, callback)\nvfs.readdir(path, options, callback)\n// ...\n```\n\n#### Promises API\n\n```js\nconst content = await vfs.promises.readFile('/file.txt', 'utf8');\nawait vfs.promises.writeFile('/file.txt', 'data');\nawait vfs.promises.mkdir('/dir', { recursive: true });\nconst entries = await vfs.promises.readdir('/dir');\nconst stats = await vfs.promises.stat('/file.txt');\nawait vfs.promises.unlink('/file.txt');\nawait vfs.promises.rename('/old', '/new');\nawait vfs.promises.copyFile('/src', '/dest');\nawait vfs.promises.appendFile('/file.txt', 'more');\nawait vfs.promises.access('/file.txt');\nawait vfs.promises.symlink('/target', '/link');\nconst target = await vfs.promises.readlink('/link');\nawait vfs.promises.lstat('/link');\nawait vfs.promises.realpath('/link');\nawait vfs.promises.rmdir('/dir');\nawait vfs.promises.rm('/tree', { recursive: true });\nawait vfs.promises.truncate('/file.txt', 0);\nconst tmp = await vfs.promises.mkdtemp('/tmp-');\n```\n\n#### Streams\n\n```js\nconst stream = vfs.createReadStream(path[, options]);\n```\n\nReturns a `Readable` stream. Options support `start`, `end`, and `autoClose`.\n\n#### Watch\n\n```js\nconst watcher = vfs.watch(path[, options][, listener]);\nvfs.watchFile(path[, options], listener);\nvfs.unwatchFile(path[, listener]);\n```\n\n#### Virtual working directory\n\nWhen created with `{ virtualCwd: true }`:\n\n```js\nconst vfs = create({ virtualCwd: true });\nvfs.writeFileSync('/app/file.txt', 'data');\nconst mountPoint = vfs.mount();\n\nvfs.chdir(`${mountPoint}/app`);\nvfs.cwd(); // `${mountPoint}/app`\n```\n\nWhen mounted, `process.cwd()` and `process.chdir()` are patched to work with the virtual directory.\n\n### Providers\n\n#### `MemoryProvider`\n\nThe default provider. Stores everything in memory. Supports symlinks, watching, and read-only mode.\n\n```js\nconst { MemoryProvider, create } = require('@platformatic/vfs');\n\nconst provider = new MemoryProvider();\nconst vfs = create(provider);\n\nvfs.writeFileSync('/file.txt', 'hello');\n\n// Freeze the provider to prevent writes\nprovider.setReadOnly();\nvfs.writeFileSync('/other.txt', 'fail'); // throws EROFS\n```\n\n#### `SqliteProvider`\n\nA persistent provider backed by Node.js built-in `node:sqlite`. Stores files, directories, and symlinks in a SQLite database. Supports both in-memory and file-backed databases.\n\n```js\nconst { SqliteProvider, create } = require('@platformatic/vfs');\n\n// In-memory (default)\nconst mem = new SqliteProvider();\nconst vfs1 = create(mem);\n\n// File-backed — data persists across restarts\nconst disk = new SqliteProvider('/tmp/myfs.db');\nconst vfs2 = create(disk);\n\nvfs2.writeFileSync('/file.txt', 'hello');\ndisk.close();\n\n// Reopen later — files are still there\nconst disk2 = new SqliteProvider('/tmp/myfs.db');\nconst vfs3 = create(disk2);\nvfs3.readFileSync('/file.txt', 'utf8'); // 'hello'\ndisk2.close();\n```\n\nRequires Node.js >= 22. Call `provider.close()` when done to close the database.\n\n#### `RealFSProvider`\n\nDelegates to the real filesystem, sandboxed under a root directory. Directory traversal outside the root is prevented.\n\n```js\nconst { RealFSProvider, create } = require('@platformatic/vfs');\n\nconst provider = new RealFSProvider('/tmp/sandbox');\nconst vfs = create(provider);\n\n// All paths are resolved relative to /tmp/sandbox\nvfs.writeFileSync('/file.txt', 'data'); // writes to /tmp/sandbox/file.txt\n```\n\n#### Custom providers\n\nExtend `VirtualProvider` and implement the essential primitives:\n\n```js\nconst { VirtualProvider, create } = require('@platformatic/vfs');\n\nclass MyProvider extends VirtualProvider {\n  openSync(path, flags, mode) { /* ... */ }\n  statSync(path, options) { /* ... */ }\n  readdirSync(path, options) { /* ... */ }\n  mkdirSync(path, options) { /* ... */ }\n  rmdirSync(path) { /* ... */ }\n  unlinkSync(path) { /* ... */ }\n  renameSync(oldPath, newPath) { /* ... */ }\n}\n\nconst vfs = create(new MyProvider());\n```\n\nHigher-level operations (`readFile`, `writeFile`, `copyFile`, `exists`, `access`, etc.) are provided automatically by the base class using the primitives above.\n\n## Module hooks\n\nWhen `moduleHooks` is enabled (the default), mounting a VFS instance:\n\n1. **Patches `require()` and `import`** — On Node.js 23.5+ uses `Module.registerHooks()`. On older versions falls back to `Module._resolveFilename` + `Module._extensions` patching.\n2. **Patches selected `fs` functions** — path-based reads, writes, directory mutation, `rm`, `truncate`, `mkdtemp`, `rename`, `copyFile`, symlinks and watchers, plus the sync/callback descriptor family `open`, `read`, `close`, and `fstat`. Cross-mount rename/copy returns `EXDEV`.\n\nThis covers calls made through patched `fs` properties, not every way Node.js or an addon can access the filesystem.\n\nModule resolution supports package.json `exports`, `main`, and bare specifier resolution walking `node_modules`.\n\n## Differences from Node.js core VFS\n\nThis is a **userland compatibility layer**, not a direct extraction of the current `node:vfs` implementation (experimental in Node.js 26). It tracks the mount namespace and some of the `fs` API, but monkey-patching cannot intercept Node's native filesystem binding, built-in loader internals, or references to `fs` methods captured before mounting. In particular:\n\n- Core's full `fs`/`fs.promises` surface is **not provided**: descriptor writes (`fs.write`), `fs.promises.open`/`FileHandle`, write streams, `opendir`, `openAsBlob`, `link`, permission/ownership/time operations, and startup flags (`--vfs-mount`, `--vfs-load`) remain unsupported by the mounted shim. Direct VFS methods are independent of the patched `fs` surface.\n- Native addon and FFI library loading from virtual bytes, SEA integration, and transparent interception of Node's internal module-resolution filesystem calls require Node core and are **not supported**. Core's `ZipProvider` and automatic ZIP loading are also **not included**; this package ships memory, real-filesystem, and SQLite providers. The userland resolver approximates CJS/ESM resolution; package edge cases can differ.\n- Core invalidates both CJS and ESM module caches on unmount. This shim evicts its CJS cache entries, but cannot invalidate ESM's internal cache. Re-mounting assigns a new URL, avoiding a stale ESM cache entry.\n- Overlay and virtual-cwd options are shim-only and can interact with other monkey patches. Overlay mode routes missing paths to disk, including creates; disable it when isolation matters.\n- `fs` path dispatch is synchronous under the hood even for callback and promise methods. Direct provider async methods are separate; this shim does not provide core's libuv-backed concurrency guarantees. Recursive `readdir` is implemented for the memory provider without following directory symlinks; other providers may not implement it.\n\nUse built-in `node:vfs` when running a Node version that provides it. The shim remains useful for Node 22+ and for `SqliteProvider`.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}