{"_id":"@neodx/vfs","_rev":"21-37c6204dd4cc14e2297b67a3a22b51c8","name":"@neodx/vfs","dist-tags":{"latest":"1.1.1"},"versions":{"0.1.0":{"name":"@neodx/vfs","version":"0.1.0","author":{"url":"https://github.com/secundant","name":"Dmitry Remezov","email":"mysecundant@gmail.com"},"license":"MIT","_id":"@neodx/vfs@0.1.0","maintainers":[{"name":"secundant","email":"mysecundant@gmail.com"}],"contributors":[{"name":"secundant"}],"homepage":"https://github.com/secundant/neodx/tree/main/libs/vfs","bugs":{"url":"https://github.com/secundant/neodx/issues?q=is%3Aopen+is%3Aissue+label%3Ascope%3Avfs"},"dist":{"shasum":"582ddce4445f892c91077ddd79a47eb0efac35d2","tarball":"https://registry.npmjs.org/@neodx/vfs/-/vfs-0.1.0.tgz","fileCount":7,"integrity":"sha512-QtcRCxf7OWNHdv9z1/guCgZBvtUt15K9xz6kxaPX/o0bKRDvWVPu2FphBr/zjifkwFExxBTai1G8dkNosZfeeA==","signatures":[{"sig":"MEUCIQDQM5nLR9B5HX9sGqbvkO8DnzXnFM3nlEss/2VDgM1Z5QIgfsMNZSFrAcMmmiQKpYfwWbbD4xDJ9DICWG99z8VdZUA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":95595,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkUE0LACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpjhQ/+N6lkkQSvdFD9T/xUvtW3kRVUDKmzKU6eDf5YC7XpokT+7wI1\r\nHuyOcJtlBoaGxh1/CzWaC6AlFOS0PcndpvWoEtu8t0Yid6Yfm4G+UjiEaVMM\r\nM+S1jY7o+yQAcYPYVdqZd8zP/ebmz9HZm7CnTQzzrsywkITBl0wcbDXPJ63G\r\nSolFx34NzHJdkPy4iiBifF1+Mv8L/sJ0Y3GGuHMG/qDNE/YHTrAPDM/uxReU\r\nCwVWlkfiNQKMcItuJR038n5tnwTrTRReO7E3TccVae8ZgQ/Bk/J54Sl/zoHF\r\nXKkD+s8LFxhZB6be1ppDlFg1PltOcXeLZYZ9IfOfvDrGMe+6L7aa4MePh39t\r\nJuyqIGHZ4wGE5hDOiPoX0Z9Opm6Dntjm8FAZIslX2PWnfC8/WeiPbtAz9j8R\r\nK1RfkgVLVJo/VqinT+d2Go/gAaHGeFVg2QrK46ZrpW5H+YrPrZYRLdkY4WjZ\r\nZbhwFWzhJSPieX4LPE462Ise+Stz5KZu2Q2pL2rOrxFWVpSC9MEXcLF95ZVt\r\npjOyrI45IypfT2b0xTafTyKkHRdbaZ7MrYNiiAnLyQvxC7oZlFZlTrhigY/s\r\nW5X4OEQtm38IP+suGO+uLRiUo6ZlPjXgDav4N6XciulPAZOu44mIJ61PHgH2\r\nwYwUv/8SWTX/aOTWNmhTwXWkMqdSg5sgaa4=\r\n=C8Mq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/mjs/index.mjs","source":"src/index.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/mjs/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"9b5b86c12154acbb66e339ac832630747ce54748","scripts":{"lint":"eslint src","test":"vitest run","build":"autobuild","typecheck":"tsc --noEmit"},"_npmUser":{"name":"secundant","email":"mysecundant@gmail.com"},"repository":{"url":"git+https://github.com/secundant/neodx.git","type":"git","directory":"libs/vfs"},"_npmVersion":"9.5.1","description":"Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover","directories":{},"sideEffects":false,"_nodeVersion":"18.16.0","dependencies":{"pathe":"1.1.0","@neodx/fs":"*","@neodx/log":"*","@neodx/std":"*","picocolors":"1.0.0","@neodx/colors":"*","@neodx/pkg-misc":"*"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"0.2.1","@types/tmp":"^0.2.3","@neodx/autobuild":"*"},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.1.0_1682984203030_0.44079290159759377","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"@neodx/vfs","version":"0.1.1","author":{"url":"https://github.com/secundant","name":"Dmitry Remezov","email":"mysecundant@gmail.com"},"license":"MIT","_id":"@neodx/vfs@0.1.1","maintainers":[{"name":"secundant","email":"mysecundant@gmail.com"}],"contributors":[{"name":"secundant"}],"homepage":"https://github.com/secundant/neodx/tree/main/libs/vfs","bugs":{"url":"https://github.com/secundant/neodx/issues?q=is%3Aopen+is%3Aissue+label%3Ascope%3Avfs"},"dist":{"shasum":"70f5d54f52678231469bb2442f22599a55f49475","tarball":"https://registry.npmjs.org/@neodx/vfs/-/vfs-0.1.1.tgz","fileCount":7,"integrity":"sha512-AHDFORvgggv3nUjZG55Kwu9V1q/DWGyiBL6qxgwEH5ETK/kW/6Y96DTCeP1TtoitU0kDDk8LEarif0WRPgAHbw==","signatures":[{"sig":"MEUCIQDeO68IUhV+/P6S3XL6y7kgzFew+qi0XWva+feUZ7P0vwIgaBfAsy974hJX8zO6AgFkjh3G/dW165JNmiIdGmmQQnY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":95595,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkUFAlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrtqQ//dTOhrCxB4xpPIFQVuZEVFwdysq01Dok4gFNE/fNj4i6Tw2K6\r\ntbPJH2t0CUVKWr+RkzBgNxCVbkYSKwBj67Z2QyZZrQhbDClXoHW9RsMwe/2E\r\nrAwUk46+aCwLaEsi3MWmVMTIe7CWYEXpeIO9mbyHTyf4C4tBwGfsnOo9YKxy\r\nTlFxPo6CIGhPpurmlkb/rOkZkI729S6caFsVzvOEqYm2T32g4UTtYZ11R0R9\r\nE8mU7DlslAOAQQzcKsqMvmQKPzOAhuT1/PPcJr9KgFav7Y3qDvaAbyfxXwu8\r\nXHTK2iCuYJdR43b7nKJOKJkZ2K5q7Tbt1oDEdHqdJbEPB3fp/pTTca9eYHj/\r\nnMWUV5uHD+uJ1uC3IBBllAmzKDKJv3/H4vS9c6Rir30lsn+wMdLIgysNpJpH\r\nWps3EdKQt606p1jnXqnAcH8Q+opyL7+ZE1hgRqz2IiN/b20d1XMfHpkLvby+\r\nklF9iWOzCTXI9NQgKWlhWAjX4qR1fAH9OBttCFNJi4Zz4nGFlHNLKoH04Zh1\r\n6WDi5jogi3/JExXS1c5YI+UgPWGxpVRmk37QEKWvIsN9G0dPFWaBeWCy0j2D\r\nyySxQGPjasZ8kyV4V2A7P7xgwRskLjXfouSuweKq2PpAih5GekgHAv85dJ1A\r\nM5L3JDgnjTzcssPYLu5rsCnmoqDdf5PGsJ0=\r\n=JJ06\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/mjs/index.mjs","source":"src/index.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/mjs/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"db9a95bce0fe271931e5ec1d140169933f16a6de","scripts":{"lint":"eslint src","test":"vitest run","build":"autobuild","typecheck":"tsc --noEmit"},"_npmUser":{"name":"secundant","email":"mysecundant@gmail.com"},"repository":{"url":"git+https://github.com/secundant/neodx.git","type":"git","directory":"libs/vfs"},"_npmVersion":"9.5.1","description":"Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover","directories":{},"sideEffects":false,"_nodeVersion":"18.16.0","dependencies":{"pathe":"1.1.0","@neodx/fs":"*","@neodx/log":"*","@neodx/std":"*","picocolors":"1.0.0","@neodx/colors":"*","@neodx/pkg-misc":"*"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"0.2.1","@types/tmp":"^0.2.3","@neodx/autobuild":"*"},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.1.1_1682984997657_0.1068997252002788","host":"s3://npm-registry-packages"}},"0.1.2":{"name":"@neodx/vfs","version":"0.1.2","keywords":["vfs","virtual","file","fs","lazy","dry-run"],"author":{"url":"https://github.com/secundant","name":"Dmitry Remezov","email":"mysecundant@gmail.com"},"license":"MIT","_id":"@neodx/vfs@0.1.2","maintainers":[{"name":"secundant","email":"mysecundant@gmail.com"}],"contributors":[{"name":"secundant"}],"homepage":"https://github.com/secundant/neodx/tree/main/libs/vfs","bugs":{"url":"https://github.com/secundant/neodx/issues?q=is%3Aopen+is%3Aissue+label%3Ascope%3Avfs"},"dist":{"shasum":"2f077d70ae4918e1ee5feb9289504f8f3540a793","tarball":"https://registry.npmjs.org/@neodx/vfs/-/vfs-0.1.2.tgz","fileCount":7,"integrity":"sha512-t1iYDQUdOObBxRXqKgdZIbeE23OfUp4+gwyP9j9q+H6lVDxgVo3/ulr7a2RWyDfqmWfwmSUJqfJVotuprvbpbg==","signatures":[{"sig":"MEYCIQDfaQezUoY/977IaMuErxhUxePW40TPnXQ7tRK1aniiQAIhAPypVgUYD7C4C85yGsFFN8zwds0DoR3NJyipdkXmqwLk","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":95693,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkUVFlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqnDRAApLgpZSVnPvxw15s1OVd/iGJK6gCkVqCobltLdDuYWSMcJ0rq\r\nWzSg4nU+/mMdEBunxkB6cQD0NlyznqRz0n0mqopLPLYE7nOVyiMbvhwRLbcq\r\nErRZdkfLbifBrmZ3TTBarVDQCRNz7ElghegPaejTAXH524n5zGV7tPFpkAUF\r\n7zKDMvRdzSKT3qvrOhjTZ2FjccmqiJgcOMt9cP1i3emHhQJ/mzuB1HKZL6CI\r\nohyxp8SarOBuMm0BmTzUBZxmDOgGtGLhp7rXXg6ad2RTr41f9lDbtgVOrjNU\r\nLJ4/12vJ/aeeJLYDWzhCgy6nmBZE7m01OJCYPVv+YHlJ1Uq3GFXDBimO1ZEP\r\nMdkT7NBk8wV4WhF4frgpDnH1EB8ByEk6839gEIDurHpDO3B2PjVCPAvlYfyd\r\ndI7o6Z9UChLw2X6+fd5jY1RDQdKgy+UlTB+ziMeIms21XdrGD8Vo1CEDmI1h\r\nI2y7EshmzlZAocv+nJDo1GkPmj5gxadFeou2qF23+++AsCOEQKv1RGlXJqqy\r\nXzPte2P2qkOPicHm5CUmCOvsCn3gN/y1/rrTlldnJzCEMqI0Mj/2r+2MU0RJ\r\nDj0o4zxSo/HQeyO5gp86Ij9rRGPF5m3b8dAWzkOJ9NtuRvrYfog70lMcn0LY\r\nxUg12CgKDcqmoHAGU6tGeABe/VnWgUe2EbA=\r\n=3Kw9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/mjs/index.mjs","source":"src/index.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/mjs/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"af98efa753c9abf9d5d87f07a87d8c239519aed9","scripts":{"lint":"eslint src","test":"vitest run","build":"autobuild","typecheck":"tsc --noEmit"},"_npmUser":{"name":"secundant","email":"mysecundant@gmail.com"},"repository":{"url":"git+https://github.com/secundant/neodx.git","type":"git","directory":"libs/vfs"},"_npmVersion":"9.5.1","description":"Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover","directories":{},"sideEffects":false,"_nodeVersion":"18.16.0","dependencies":{"pathe":"^1.1.0","@neodx/fs":"*","@neodx/log":"*","@neodx/std":"*","picocolors":"^1.0.0","@neodx/colors":"*","@neodx/pkg-misc":"*"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"^0.2.1","@types/tmp":"^0.2.3","@neodx/autobuild":"*"},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.1.2_1683050853637_0.07387894432490416","host":"s3://npm-registry-packages"}},"0.1.3":{"name":"@neodx/vfs","version":"0.1.3","keywords":["vfs","virtual","file","fs","lazy","dry-run"],"author":{"url":"https://github.com/secundant","name":"Dmitry Remezov","email":"mysecundant@gmail.com"},"license":"MIT","_id":"@neodx/vfs@0.1.3","maintainers":[{"name":"secundant","email":"mysecundant@gmail.com"}],"contributors":[{"name":"secundant"}],"homepage":"https://github.com/secundant/neodx/tree/main/libs/vfs","bugs":{"url":"https://github.com/secundant/neodx/issues?q=is%3Aopen+is%3Aissue+label%3Ascope%3Avfs"},"dist":{"shasum":"7db4c78b3cdf7f4821cf34ca8aeb30ec4dbdf859","tarball":"https://registry.npmjs.org/@neodx/vfs/-/vfs-0.1.3.tgz","fileCount":7,"integrity":"sha512-Qqpt2vrLxjFVp5IED/ZmhTuMdfGFF3m1HzdtplEeS1R9h/lQXpn002c4eO0qmrQVl+VaMsizwuIkBb6O10CYbg==","signatures":[{"sig":"MEUCIQDskCBEMGpNtwkJDKBWiOsnqSVH7nOYQYTMDhy5aTtJcQIgB5AMj5ctYM6Xex5U9oF0OF02R3trSBwG1AyAXdl3IbA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":95585,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkUXA2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqxaRAAlSLZisyK7dsgSHJrUg53h46KLjwz+4JLKP2JvQxakxfJBnDt\r\nlKaG6twdVgjGlvnyOYs+dK0pEOBolEipi2IXWzrsYLjldPXP/5Mrrh18fa/D\r\nacQ9FYuZX/q1ak6YsRePplPEXxoEPeuTnqqkZz7Wx8v9ilLh5FJSZ6eL0mE9\r\n/E5E6uwx4Ij3wswtx0OV6rpztI39/c5xBDR/0n2YVG0hz9oFXpaafwxMQvSC\r\n+orFL+fOQ00odOo+zS14/sVQzjpTxBl9V7ucpa5VX3vOnv64Bes9sgdY9/1e\r\n5XjCrLs9AbTcp+mzzPcPqCqjIDlvKyXgRR7nDMH9Os5D92f5BR2mOwaXVceN\r\nmwl8ozrjrGi+uDBerV0fn7AUmW/jyq6bgPl71y5cg+oskuZP2VgMDdR7R3DE\r\neWUF0tLaRa9eGInq1lLu6yEY98hEHtkxv0IH75l/oZ9JIoqLZtBIbBfr7H9J\r\nwE/Gg/aGXRhnw8/UlCTBhJ8pRwPB8hpKiiue5mADzYAHMhVfvX1v5jLU48Rl\r\n6kWKpaiRMj6twEx8bSn2UkkC/q3vi5bpO5hVk7QMEIEBQFw8lnHqWHS/2sQJ\r\nZZt/acSAkTRUM2RavXGCbEB2fjYp1jHUAy3LV1uQDjUKTwcWgsKW4bl+Kkb9\r\n3cFOJ2q4KREoHRq0WK0NdYNX80x4sXXXeHY=\r\n=i8ho\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/mjs/index.mjs","source":"src/index.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/mjs/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"adfb4749dfeded53997fa2ccb77bc9a6901742cb","scripts":{"lint":"eslint src","test":"vitest run","build":"autobuild","typecheck":"tsc --noEmit"},"_npmUser":{"name":"secundant","email":"mysecundant@gmail.com"},"repository":{"url":"git+https://github.com/secundant/neodx.git","type":"git","directory":"libs/vfs"},"_npmVersion":"9.5.1","description":"Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover","directories":{},"sideEffects":false,"_nodeVersion":"18.16.0","dependencies":{"pathe":"^1.1.0","@neodx/fs":"*","@neodx/log":"*","@neodx/std":"*","picocolors":"^1.0.0","@neodx/colors":"*","@neodx/pkg-misc":"*"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"^0.2.1","@types/tmp":"^0.2.3","@neodx/autobuild":"*"},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.1.3_1683058742310_0.7423055944791368","host":"s3://npm-registry-packages"}},"0.1.4":{"name":"@neodx/vfs","version":"0.1.4","keywords":["vfs","virtual","file","fs","lazy","dry-run"],"author":{"url":"https://github.com/secundant","name":"Dmitry Remezov","email":"mysecundant@gmail.com"},"license":"MIT","_id":"@neodx/vfs@0.1.4","maintainers":[{"name":"secundant","email":"mysecundant@gmail.com"}],"contributors":[{"name":"secundant"}],"homepage":"https://github.com/secundant/neodx/tree/main/libs/vfs","bugs":{"url":"https://github.com/secundant/neodx/issues?q=is%3Aopen+is%3Aissue+label%3Ascope%3Avfs"},"dist":{"shasum":"5fe91b35ec28ee4d0d04e134c58f07601dab8de1","tarball":"https://registry.npmjs.org/@neodx/vfs/-/vfs-0.1.4.tgz","fileCount":7,"integrity":"sha512-Z5p0ibVEYVAwi4CjJVnD74vqLpFZ0OgkDWHrcx2YDLdNrz25EzW1YmSAAyEyW6Ep9rs1nu69oq5MIXe1MkNGVQ==","signatures":[{"sig":"MEUCIQC+9wu3O5rHSfThGpenkCh8NHHYnXGnvOuxPjvVwJYZpAIgR/QBk81fglxKe5tr5AB/j9gRqzFP2I8DrteHuK08u7g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":95585,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkUXnLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr4AQ/+NH5017RLre71uInjeVIxwL1H370ySE2R4j56NpClZ6FTVXEB\r\nyTuNv1nSulogakRlxrBu3mya7Z4zpSvmsExH2lk84A3WeEjrepvHzYC8J+7q\r\n0wsbLuvlFEUPeKMHJB080rcScI50bsalHaOwKSK6v15GTQ7/vzgYGjQL9E/g\r\nosAhvN8aKhqt28XpA3pUEg+p/kSFwzptyCVeKLaWKvaC8xtocN1EBs20VT7D\r\niGdmSA2MZgWvKzdEpogn7+i0zoyzW1b98FQPlZ73cZPf7ZAcqtzTtJ8FmUrH\r\nEVQpswqeqVyH3Ul+3J/lO5YSWLsXi2x+YMwSH2kDthkBbMPvx2po2dhH6qJK\r\ndNsYkCcEGW4HLcA4153VDWybZQCdy98GM+L68vfb6eMyqSPZiFP3YIU/Jy5J\r\n9TvN51NarFsMz9HSjD24aukvs712s4J4mou5nwNvmfH4NhXyCQo/ktrhvpC+\r\ncN8Ah4RCfQ98AI+fvd5ejtybzYgyyvHHH6IrflQtztRkHEMUDcATK68LtOsP\r\nni9g3kDOBGLCIQwGV4LYWFS6yLByO17vZYOzd1FsPRdChoV1grcvbsYM7ukh\r\n4XZ+HumAASl8woTP7hWwZiA/K0oYVvKdCmgaO6tepUjEEL5vVwxKaAcAkfRT\r\nLk6pepaeCWKq0Lwf99OURX1zY8XdGrTKLhI=\r\n=f0sR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/mjs/index.mjs","source":"src/index.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/mjs/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"bcc505eebcff81d13d7f1f068be4ba082173d956","scripts":{"lint":"eslint src","test":"vitest run","build":"autobuild","typecheck":"tsc --noEmit"},"_npmUser":{"name":"secundant","email":"mysecundant@gmail.com"},"repository":{"url":"git+https://github.com/secundant/neodx.git","type":"git","directory":"libs/vfs"},"_npmVersion":"9.5.1","description":"Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover","directories":{},"sideEffects":false,"_nodeVersion":"18.16.0","dependencies":{"pathe":"^1.1.0","@neodx/fs":"*","@neodx/log":"*","@neodx/std":"*","picocolors":"^1.0.0","@neodx/colors":"*","@neodx/pkg-misc":"*"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"^0.2.1","@types/tmp":"^0.2.3","@neodx/autobuild":"*"},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.1.4_1683061195047_0.4147555601940569","host":"s3://npm-registry-packages"}},"0.1.5":{"name":"@neodx/vfs","version":"0.1.5","keywords":["vfs","virtual","file","fs","lazy","dry-run"],"author":{"url":"https://github.com/secundant","name":"Dmitry Remezov","email":"mysecundant@gmail.com"},"license":"MIT","_id":"@neodx/vfs@0.1.5","maintainers":[{"name":"secundant","email":"mysecundant@gmail.com"}],"contributors":[{"name":"secundant"}],"homepage":"https://github.com/secundant/neodx/tree/main/libs/vfs","bugs":{"url":"https://github.com/secundant/neodx/issues"},"dist":{"shasum":"edfa455c398a7a379294b923c34bf3bcc2718ea6","tarball":"https://registry.npmjs.org/@neodx/vfs/-/vfs-0.1.5.tgz","fileCount":7,"integrity":"sha512-e3OkyDV0tiS+Rv9YmwBnuY7+I3vCFlcjbw9ih7WyJnr7j+wOs0h+yIwqHfoRFiX9UM50+r+9APqbqY8cInax0Q==","signatures":[{"sig":"MEUCIBR0objWrIBNQRJqtZ3XFdyP5mcxjOFv9pm19qN9hjHiAiEA9QveUhsSkeMnZ4ZeaVpUcRisBiFpCL1qTjlhxx/7elw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":95485},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/mjs/index.mjs","source":"src/index.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/mjs/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"c7e4396ff21bde42bce366637f055aa7144671f0","scripts":{"lint":"eslint src","test":"vitest run","build":"autobuild","typecheck":"tsc --noEmit"},"_npmUser":{"name":"secundant","email":"mysecundant@gmail.com"},"repository":{"url":"git+https://github.com/secundant/neodx.git","type":"git","directory":"libs/vfs"},"_npmVersion":"9.5.1","description":"Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover","directories":{},"sideEffects":false,"_nodeVersion":"18.16.0","dependencies":{"pathe":"^1.1.0","@neodx/fs":"*","@neodx/log":"*","@neodx/std":"*","picocolors":"^1.0.0","@neodx/colors":"*","@neodx/pkg-misc":"*"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"^0.2.1","@types/tmp":"^0.2.3","@neodx/autobuild":"*"},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.1.5_1684254431812_0.21964923867579778","host":"s3://npm-registry-packages"}},"0.1.6":{"name":"@neodx/vfs","version":"0.1.6","keywords":["vfs","virtual","file","fs","lazy","dry-run"],"author":{"url":"https://github.com/secundant","name":"Dmitry Remezov","email":"mysecundant@gmail.com"},"license":"MIT","_id":"@neodx/vfs@0.1.6","maintainers":[{"name":"secundant","email":"mysecundant@gmail.com"}],"contributors":[{"name":"secundant"}],"homepage":"https://github.com/secundant/neodx/tree/main/libs/vfs","bugs":{"url":"https://github.com/secundant/neodx/issues"},"dist":{"shasum":"e63c425575b7b92733657a24a138befbcc882e27","tarball":"https://registry.npmjs.org/@neodx/vfs/-/vfs-0.1.6.tgz","fileCount":7,"integrity":"sha512-xHKKZD+kJSrbkD3UvmuvN8J6rBsDEmF5Q/4zRSHeg61u6sSy2wYuKAzF70OY7kldofH8PnFoeuw+zQYXObo/MA==","signatures":[{"sig":"MEUCIQDFKQA4sNkJ/2iTa1+fT4jIRZdTkXAhgA/Gu8MLwACp+AIgH1BnLxxe0NC4+RXCHIKV8/v9+0L9G1ihvr2ZuttgOpU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":95485},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/mjs/index.mjs","source":"src/index.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/mjs/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"084e3b1a643c1965bea429f23c8aff741df2ac7b","scripts":{"lint":"eslint src","test":"vitest run","build":"autobuild","typecheck":"tsc --noEmit"},"_npmUser":{"name":"secundant","email":"mysecundant@gmail.com"},"repository":{"url":"git+https://github.com/secundant/neodx.git","type":"git","directory":"libs/vfs"},"_npmVersion":"9.5.1","description":"Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover","directories":{},"sideEffects":false,"_nodeVersion":"18.16.0","dependencies":{"pathe":"^1.1.0","@neodx/fs":"*","@neodx/log":"*","@neodx/std":"*","picocolors":"^1.0.0","@neodx/colors":"*","@neodx/pkg-misc":"*"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"^0.2.1","@types/tmp":"^0.2.3","@neodx/autobuild":"*"},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.1.6_1684490794402_0.6410174248429137","host":"s3://npm-registry-packages"}},"0.1.7":{"name":"@neodx/vfs","version":"0.1.7","keywords":["vfs","virtual","file","fs","lazy","dry-run"],"author":{"url":"https://github.com/secundant","name":"Dmitry Remezov","email":"mysecundant@gmail.com"},"license":"MIT","_id":"@neodx/vfs@0.1.7","maintainers":[{"name":"secundant","email":"mysecundant@gmail.com"}],"contributors":[{"name":"secundant"}],"homepage":"https://github.com/secundant/neodx/tree/main/libs/vfs","bugs":{"url":"https://github.com/secundant/neodx/issues"},"dist":{"shasum":"dce341e865864c78a58cdb2d20ff2e68cd28c10f","tarball":"https://registry.npmjs.org/@neodx/vfs/-/vfs-0.1.7.tgz","fileCount":7,"integrity":"sha512-Skm22uqmm0FRD7SKDOsTQBo56Ei9SiOJm7m4Fm4fM18wdtN9wulPgG1QcmpVq6mEAwPvKK7boZ51wntQ1n0V8g==","signatures":[{"sig":"MEUCIQC4ZHfTYimfPdV+0lfmT1CRhNG5fAWZklYvBYKS0Vfm0wIgYk1Ob5IUdiacSuqlhztLHrW+DKaEfq1LichoedrFF8Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":98102},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/mjs/index.mjs","source":"src/index.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/mjs/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"4399df90b6cefcefe0810255249b4e367b7d9b24","scripts":{"lint":"eslint src","test":"vitest run","build":"autobuild","typecheck":"tsc --noEmit"},"_npmUser":{"name":"secundant","email":"mysecundant@gmail.com"},"repository":{"url":"git+https://github.com/secundant/neodx.git","type":"git","directory":"libs/vfs"},"_npmVersion":"9.5.1","description":"Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover","directories":{},"sideEffects":false,"_nodeVersion":"18.16.0","dependencies":{"pathe":"^1.1.0","@neodx/fs":"^0.0.8","@neodx/log":"^0.1.7","@neodx/std":"^0.1.4","picocolors":"^1.0.0","@neodx/colors":"^0.2.4","@neodx/pkg-misc":"^0.0.6"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"^0.2.1","@types/tmp":"^0.2.3","@neodx/autobuild":"*"},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.1.7_1685037436205_0.6052786712299616","host":"s3://npm-registry-packages"}},"0.1.8":{"name":"@neodx/vfs","version":"0.1.8","keywords":["vfs","virtual","file","fs","lazy","dry-run"],"author":{"url":"https://github.com/secundant","name":"Dmitry Remezov","email":"mysecundant@gmail.com"},"license":"MIT","_id":"@neodx/vfs@0.1.8","maintainers":[{"name":"secundant","email":"mysecundant@gmail.com"}],"contributors":[{"name":"secundant"}],"homepage":"https://github.com/secundant/neodx/tree/main/libs/vfs","bugs":{"url":"https://github.com/secundant/neodx/issues"},"dist":{"shasum":"645192aca7fde204a20d4aec4d0cccde6ec839bc","tarball":"https://registry.npmjs.org/@neodx/vfs/-/vfs-0.1.8.tgz","fileCount":7,"integrity":"sha512-DrlgmMWUjz0U4NVCjFblZJeSrrvqIrss9nwe8+rFy02pcyWQA/1n0TykwdlOSFjVSSFWKCzkPmvA5nF815b3Hw==","signatures":[{"sig":"MEQCICeGdhWvJ5tfVPNKEGXWU8LWrXnOtjFPbhesg7pFy/tWAiASMhBEBh+uI9vA9afPopGJTvo+e4P7rtTqwxomqXxtAw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":97679},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/mjs/index.mjs","source":"src/index.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/mjs/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"ad2a3c8ebfbc767330304c58ccf95a54cde658ee","scripts":{"lint":"eslint src","test":"vitest run","build":"autobuild","typecheck":"tsc --noEmit"},"_npmUser":{"name":"secundant","email":"mysecundant@gmail.com"},"repository":{"url":"git+https://github.com/secundant/neodx.git","type":"git","directory":"libs/vfs"},"_npmVersion":"9.5.1","description":"Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover","directories":{},"sideEffects":false,"_nodeVersion":"18.16.1","dependencies":{"pathe":"^1.1.1","@neodx/fs":"^0.0.8","@neodx/log":"^0.2.0","@neodx/std":"^0.1.4","picocolors":"^1.0.0","@neodx/colors":"^0.2.4","@neodx/pkg-misc":"^0.0.6"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"^0.2.1","@types/tmp":"^0.2.3","@neodx/autobuild":"*"},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.1.8_1690053700067_0.458459817977555","host":"s3://npm-registry-packages"}},"0.1.9":{"name":"@neodx/vfs","version":"0.1.9","keywords":["vfs","virtual","file","fs","lazy","dry-run"],"author":{"url":"https://github.com/secundant","name":"Dmitry Remezov","email":"mysecundant@gmail.com"},"license":"MIT","_id":"@neodx/vfs@0.1.9","maintainers":[{"name":"secundant","email":"mysecundant@gmail.com"}],"contributors":[{"name":"secundant"}],"homepage":"https://github.com/secundant/neodx/tree/main/libs/vfs","bugs":{"url":"https://github.com/secundant/neodx/issues"},"dist":{"shasum":"bb42f3a47d9c90823436c1008f8d1016ae672029","tarball":"https://registry.npmjs.org/@neodx/vfs/-/vfs-0.1.9.tgz","fileCount":7,"integrity":"sha512-T6x9w3HPEdTYbT49Ao/egeP2UWDCrSyC6FN7bYptATNAPImToFVfdaqdeMk7DWCvEX70Jg9QFEPNasVFmARGNg==","signatures":[{"sig":"MEUCIQDTqG9lcpJ+5fyAPS6BvsKbPiUAaUShRCDkdw0ffvyVUAIgBcWaJyIrah/laaikTTR80tFdZRjjEUUGNs+66F8VOg8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":97805},"main":"./cjs/index.cjs","type":"module","types":"./types/index.d.ts","module":"./mjs/index.mjs","source":"src/index.ts","exports":{".":{"types":"./types/index.d.ts","import":"./mjs/index.mjs","require":"./cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"9e3e47a7fd3f196dade8057e54243a2ed9bf242e","scripts":{"lint":"eslint src","test":"vitest run","build":"autobuild","typecheck":"tsc --noEmit"},"_npmUser":{"name":"secundant","email":"mysecundant@gmail.com"},"repository":{"url":"git+https://github.com/secundant/neodx.git","type":"git","directory":"libs/vfs"},"_npmVersion":"9.6.7","description":"Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover","directories":{},"sideEffects":false,"_nodeVersion":"18.17.0","dependencies":{"pathe":"^1.1.1","@neodx/fs":"^0.0.9","@neodx/log":"^0.2.1","@neodx/std":"^0.1.5","picocolors":"^1.0.0","@neodx/colors":"^0.2.5","@neodx/pkg-misc":"^0.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"^0.2.1","@types/tmp":"^0.2.3","@neodx/autobuild":"*"},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.1.9_1690744921673_0.6028131666019059","host":"s3://npm-registry-packages"}},"0.1.10":{"name":"@neodx/vfs","version":"0.1.10","keywords":["vfs","virtual","file","fs","lazy","dry-run"],"author":{"url":"https://github.com/secundant","name":"Dmitry Remezov","email":"mysecundant@gmail.com"},"license":"MIT","_id":"@neodx/vfs@0.1.10","maintainers":[{"name":"secundant","email":"mysecundant@gmail.com"}],"contributors":[{"name":"secundant"}],"homepage":"https://github.com/secundant/neodx/tree/main/libs/vfs","bugs":{"url":"https://github.com/secundant/neodx/issues"},"dist":{"shasum":"29187a6fe1cb311c3325a5d57ff22e903ea704be","tarball":"https://registry.npmjs.org/@neodx/vfs/-/vfs-0.1.10.tgz","fileCount":7,"integrity":"sha512-P/XVdSb8lvnaJrm8f5ZTHfOlj+AmRV0qndgoN7aGS3KcJtlw5AAhCBTi4hG5Nu4ZfPRh48RnX5ygS3GfUq2A0Q==","signatures":[{"sig":"MEYCIQDWrdEK4XYv6Nwh5+p/PFeDdJvYBD+3/RMB3C2IxyzzvgIhANFlK5PejxVfgVJzeDS0MQ4VH/InyufLYFsTO96iH7sJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":101471},"main":"./cjs/index.cjs","type":"module","types":"./types/index.d.ts","module":"./mjs/index.mjs","source":"src/index.ts","exports":{".":{"types":"./types/index.d.ts","import":"./mjs/index.mjs","require":"./cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"930466b8ad7c5313d16ef3c01f53ba6ee2a3d433","scripts":{"lint":"eslint src","test":"vitest run","build":"autobuild","typecheck":"tsc --noEmit"},"_npmUser":{"name":"secundant","email":"mysecundant@gmail.com"},"repository":{"url":"git+https://github.com/secundant/neodx.git","type":"git","directory":"libs/vfs"},"_npmVersion":"9.8.1","description":"Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover","directories":{},"sideEffects":false,"_nodeVersion":"18.18.0","dependencies":{"pathe":"1.1.1","@neodx/fs":"0.0.10","@neodx/log":"0.3.0","@neodx/std":"0.2.0","picocolors":"1.0.0","@neodx/colors":"0.2.6","@neodx/pkg-misc":"0.0.8"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"0.2.1","@types/tmp":"0.2.4","@neodx/autobuild":"*"},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.1.10_1696956872001_0.8507874919811895","host":"s3://npm-registry-packages"}},"0.1.11":{"name":"@neodx/vfs","version":"0.1.11","keywords":["vfs","virtual","file","fs","lazy","dry-run"],"author":{"url":"https://github.com/secundant","name":"Dmitry Remezov","email":"mysecundant@gmail.com"},"license":"MIT","_id":"@neodx/vfs@0.1.11","maintainers":[{"name":"secundant","email":"mysecundant@gmail.com"}],"contributors":[{"name":"secundant"}],"homepage":"https://github.com/secundant/neodx/tree/main/libs/vfs","bugs":{"url":"https://github.com/secundant/neodx/issues"},"dist":{"shasum":"ff5c17a161a2bb39d7e4bf1847434d6023e07afa","tarball":"https://registry.npmjs.org/@neodx/vfs/-/vfs-0.1.11.tgz","fileCount":7,"integrity":"sha512-ihmh1Ibm/0GwCukWpd8S/Gqhwx+BNkr6UvXBFt/BMW+sREZoLtQuaCBnYsZpSMIMDYYXfEdzMimAQhNxhuLNkQ==","signatures":[{"sig":"MEUCIQDpRtUI7o/dyDQH2wYsK/0WRd0dCBzNkMgtD1EVUDLZZwIgJjTWRu5zoJhzYe4XP/Mu7JqHP90KlLIz919fCHWokcs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":101743},"main":"./cjs/index.cjs","type":"module","types":"./types/index.d.ts","module":"./mjs/index.mjs","source":"src/index.ts","exports":{".":{"types":"./types/index.d.ts","import":"./mjs/index.mjs","require":"./cjs/index.cjs"},"./package.json":"./package.json"},"gitHead":"9c27d822c8b056ac3f02cd2c2928a2501d44374d","scripts":{"lint":"eslint src","test":"vitest run","build":"autobuild","typecheck":"tsc --noEmit"},"_npmUser":{"name":"secundant","email":"mysecundant@gmail.com"},"repository":{"url":"git+https://github.com/secundant/neodx.git","type":"git","directory":"libs/vfs"},"_npmVersion":"9.8.1","description":"Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover","directories":{},"sideEffects":false,"_nodeVersion":"18.18.2","dependencies":{"pathe":"1.1.1","@neodx/fs":"0.0.10","@neodx/log":"0.3.0","@neodx/std":"0.2.0","picocolors":"1.0.0","@neodx/colors":"0.2.6","@neodx/pkg-misc":"0.0.8"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"0.2.1","@types/tmp":"0.2.4","@neodx/autobuild":"*"},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.1.11_1697922799393_0.3688695333631167","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@neodx/vfs","version":"0.2.0","keywords":["vfs","virtual","file","fs","lazy","dry-run"],"author":{"url":"https://github.com/secundant","name":"Dmitry Remezov","email":"mysecundant@gmail.com"},"license":"MIT","_id":"@neodx/vfs@0.2.0","maintainers":[{"name":"secundant","email":"mysecundant@gmail.com"}],"contributors":[{"name":"secundant"}],"homepage":"https://github.com/secundant/neodx/tree/main/libs/vfs","bugs":{"url":"https://github.com/secundant/neodx/issues"},"dist":{"shasum":"bfc565bf68d3308933204dac4803d6c8e3a32b98","tarball":"https://registry.npmjs.org/@neodx/vfs/-/vfs-0.2.0.tgz","fileCount":46,"integrity":"sha512-bPJQKeKPr0Bwp2WaLF2X8HTb3vN7NL7WB8zf5JoZXdLcYq313yhzWfixTAP5KltZYKU5G9VpjTeSnRV7nbF2JQ==","signatures":[{"sig":"MEUCIBPwACh6YDxHof6bL7EugeqArN4IAa/7UmV5+qN9sB4EAiEA9fdRz8mgr9n8EoSMB1Iizrp/EBpaPI9LsFOIvbMJkwg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":239171},"main":"./cjs/index.cjs","type":"module","types":"./types/index.d.ts","module":"./mjs/index.mjs","source":["src/index.ts","src/plugins/*.ts"],"exports":{".":{"types":"./types/index.d.ts","import":"./mjs/index.mjs","require":"./cjs/index.cjs"},"./package.json":"./package.json","./plugins/glob":{"types":"./types/plugins/glob.d.ts","import":"./mjs/plugins/glob.mjs","require":"./cjs/plugins/glob.cjs"},"./plugins/json":{"types":"./types/plugins/json.d.ts","import":"./mjs/plugins/json.mjs","require":"./cjs/plugins/json.cjs"},"./plugins/scan":{"types":"./types/plugins/scan.d.ts","import":"./mjs/plugins/scan.mjs","require":"./cjs/plugins/scan.cjs"},"./plugins/eslint":{"types":"./types/plugins/eslint.d.ts","import":"./mjs/plugins/eslint.mjs","require":"./cjs/plugins/eslint.cjs"},"./plugins/prettier":{"types":"./types/plugins/prettier.d.ts","import":"./mjs/plugins/prettier.mjs","require":"./cjs/plugins/prettier.cjs"},"./plugins/package-json":{"types":"./types/plugins/package-json.d.ts","import":"./mjs/plugins/package-json.mjs","require":"./cjs/plugins/package-json.cjs"}},"gitHead":"fc0432883fdfff05dffbc45495035d0dd19c1789","scripts":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"autobuild","typecheck":"tsc --noEmit"},"_npmUser":{"name":"secundant","email":"mysecundant@gmail.com"},"repository":{"url":"git+https://github.com/secundant/neodx.git","type":"git","directory":"libs/vfs"},"_npmVersion":"10.2.4","description":"Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover","directories":{},"sideEffects":false,"_nodeVersion":"20.11.1","dependencies":{"pathe":"1.1.2","grammex":"3.1.2","@neodx/fs":"0.0.11","pkg-types":"1.0.3","@neodx/log":"0.4.0","@neodx/std":"0.3.0","ts-pattern":"5.0.8","@neodx/glob":"0.1.0","@neodx/colors":"0.2.7","@types/eslint":"8.56.2","@neodx/pkg-misc":"0.0.9"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"0.2.1","tsx":"4.7.1","@types/tmp":"0.2.6","@neodx/autobuild":"*"},"peerDependencies":{"eslint":"*","prettier":"*"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.2.0_1708513427996_0.4608591722777895","host":"s3://npm-registry-packages"}},"0.2.1":{"name":"@neodx/vfs","version":"0.2.1","keywords":["vfs","virtual","file","fs","lazy","dry-run"],"author":{"url":"https://github.com/secundant","name":"Dmitry Remezov","email":"mysecundant@gmail.com"},"license":"MIT","_id":"@neodx/vfs@0.2.1","maintainers":[{"name":"secundant","email":"mysecundant@gmail.com"}],"contributors":[{"name":"secundant"}],"homepage":"https://github.com/secundant/neodx/tree/main/libs/vfs","bugs":{"url":"https://github.com/secundant/neodx/issues"},"dist":{"shasum":"d3219e106028d5ce0a895ade60b3c7abe9a0322e","tarball":"https://registry.npmjs.org/@neodx/vfs/-/vfs-0.2.1.tgz","fileCount":46,"integrity":"sha512-gnEpwY/nrqZHeRmKNctjrD1T2xaXObmKTfkuE1GOt0fAFrBZSSh1rQDX5r6H4b8vEGgfX0F5W0v54vNjIipTlw==","signatures":[{"sig":"MEQCIB5yyHCDrSshOb57OZo05UYEuxbN6iiL+Cy275VvTHF8AiBznivEyOGmqdD0TX/zgWXRxV6rH0N/ySS891PB2/q6rw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":239172},"main":"./cjs/index.cjs","type":"module","types":"./types/index.d.ts","module":"./mjs/index.mjs","source":["src/index.ts","src/plugins/*.ts"],"exports":{".":{"types":"./types/index.d.ts","import":"./mjs/index.mjs","require":"./cjs/index.cjs"},"./package.json":"./package.json","./plugins/glob":{"types":"./types/plugins/glob.d.ts","import":"./mjs/plugins/glob.mjs","require":"./cjs/plugins/glob.cjs"},"./plugins/json":{"types":"./types/plugins/json.d.ts","import":"./mjs/plugins/json.mjs","require":"./cjs/plugins/json.cjs"},"./plugins/scan":{"types":"./types/plugins/scan.d.ts","import":"./mjs/plugins/scan.mjs","require":"./cjs/plugins/scan.cjs"},"./plugins/eslint":{"types":"./types/plugins/eslint.d.ts","import":"./mjs/plugins/eslint.mjs","require":"./cjs/plugins/eslint.cjs"},"./plugins/prettier":{"types":"./types/plugins/prettier.d.ts","import":"./mjs/plugins/prettier.mjs","require":"./cjs/plugins/prettier.cjs"},"./plugins/package-json":{"types":"./types/plugins/package-json.d.ts","import":"./mjs/plugins/package-json.mjs","require":"./cjs/plugins/package-json.cjs"}},"gitHead":"0d154ec25abe8568aa7ce2d540de7e90eb0df9ef","scripts":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"autobuild","typecheck":"tsc --noEmit"},"_npmUser":{"name":"secundant","email":"mysecundant@gmail.com"},"repository":{"url":"git+https://github.com/secundant/neodx.git","type":"git","directory":"libs/vfs"},"_npmVersion":"10.5.2","description":"Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover","directories":{},"sideEffects":false,"_nodeVersion":"20.13.1","dependencies":{"pathe":"1.1.2","grammex":"3.1.2","@neodx/fs":"0.0.12","pkg-types":"1.0.3","@neodx/log":"0.4.1","@neodx/std":"0.3.1","ts-pattern":"5.0.8","@neodx/glob":"0.1.1","@neodx/colors":"0.2.8","@types/eslint":"8.56.2","@neodx/pkg-misc":"0.0.10"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"0.2.1","tsx":"4.7.1","@types/tmp":"0.2.6","@neodx/autobuild":"*"},"peerDependencies":{"eslint":"*","prettier":"*"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.2.1_1716302590843_0.9625905555017902","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"@neodx/vfs","version":"0.3.0","keywords":["vfs","virtual","file","fs","lazy","dry-run"],"author":{"url":"https://github.com/secundant","name":"Dmitry Remezov","email":"mysecundant@gmail.com"},"license":"MIT","_id":"@neodx/vfs@0.3.0","maintainers":[{"name":"secundant","email":"mysecundant@gmail.com"}],"contributors":[{"name":"secundant"}],"homepage":"https://github.com/secundant/neodx/tree/main/libs/vfs","bugs":{"url":"https://github.com/secundant/neodx/issues"},"dist":{"shasum":"421bd30cf845b8d5417462e63526410564e37385","tarball":"https://registry.npmjs.org/@neodx/vfs/-/vfs-0.3.0.tgz","fileCount":46,"integrity":"sha512-1pxjEwtngeDiodW9J1AnvwCgILQAL7RtgQGD37lEqSkT8onNPq+Ls8iTDAGhgJWbW3Jsc+Zck3ZU+bVj+XzlFQ==","signatures":[{"sig":"MEUCIBOivtC/rv2vYOS82GKr4Tct17xnwJ8AHH0VYispV0DIAiEAp2glXbKKmUWkGrgyHP1+xKUcYEdTfRzlulCoFLaGiG0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":363453},"main":"./cjs/index.cjs","type":"module","types":"./types/index.d.ts","module":"./mjs/index.mjs","source":["src/index.ts","src/plugins/*.ts"],"exports":{".":{"types":"./types/index.d.ts","import":"./mjs/index.mjs","require":"./cjs/index.cjs"},"./package.json":"./package.json","./plugins/glob":{"types":"./types/plugins/glob.d.ts","import":"./mjs/plugins/glob.mjs","require":"./cjs/plugins/glob.cjs"},"./plugins/json":{"types":"./types/plugins/json.d.ts","import":"./mjs/plugins/json.mjs","require":"./cjs/plugins/json.cjs"},"./plugins/scan":{"types":"./types/plugins/scan.d.ts","import":"./mjs/plugins/scan.mjs","require":"./cjs/plugins/scan.cjs"},"./plugins/eslint":{"types":"./types/plugins/eslint.d.ts","import":"./mjs/plugins/eslint.mjs","require":"./cjs/plugins/eslint.cjs"},"./plugins/prettier":{"types":"./types/plugins/prettier.d.ts","import":"./mjs/plugins/prettier.mjs","require":"./cjs/plugins/prettier.cjs"},"./plugins/package-json":{"types":"./types/plugins/package-json.d.ts","import":"./mjs/plugins/package-json.mjs","require":"./cjs/plugins/package-json.cjs"}},"gitHead":"f3f1da1a3fe528fda8e6f289f895041d3f5a61d1","scripts":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"autobuild","typecheck":"tsc --noEmit"},"_npmUser":{"name":"secundant","email":"mysecundant@gmail.com"},"repository":{"url":"git+https://github.com/secundant/neodx.git","type":"git","directory":"libs/vfs"},"_npmVersion":"10.8.2","description":"Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover","directories":{},"sideEffects":false,"_nodeVersion":"20.19.3","dependencies":{"pathe":"1.1.2","grammex":"3.1.3","@neodx/fs":"0.0.13","pkg-types":"1.0.3","@neodx/log":"0.4.2","@neodx/std":"0.4.0","ts-pattern":"5.2.0","@neodx/glob":"0.1.2","@neodx/colors":"0.2.9","@types/eslint":"8.56.9","@neodx/pkg-misc":"0.0.11"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"0.2.3","tsx":"4.16.2","@types/tmp":"0.2.6","@neodx/autobuild":"*"},"peerDependencies":{"eslint":"*","prettier":"*"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vfs_0.3.0_1753194198846_0.8432504000861936","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@neodx/vfs","version":"1.0.0","keywords":["dry-run","file","fs","lazy","vfs","virtual"],"author":{"url":"https://github.com/secundant","name":"Dmitry Remezov","email":"mysecundant@gmail.com"},"license":"MIT","_id":"@neodx/vfs@1.0.0","maintainers":[{"name":"secundant","email":"mysecundant@gmail.com"}],"contributors":[{"name":"secundant"}],"homepage":"https://github.com/secundant/neodx/tree/main/libs/vfs","bugs":{"url":"https://github.com/secundant/neodx/issues"},"dist":{"shasum":"bd80dc96de956712efe2497c678a3eadd10b5227","tarball":"https://registry.npmjs.org/@neodx/vfs/-/vfs-1.0.0.tgz","fileCount":61,"integrity":"sha512-8c5ZVx+o+Yc4aTezqfaZUluSk7jWhVhZ1b/pYCJ2CLnUi+/d6KCrQjrEcJxZBl5LOsuLdlN3zvYj04qkOBXXpA==","signatures":[{"sig":"MEUCIQC2/AedZn864jgrKyB7JVVrr8nk4bh1bk2NlNS+eAPAAQIgJHOGqwV5aLUInugTmzYYSxBOzbjPi9RVHycY5uhJuHM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@neodx%2fvfs@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":349522},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/mjs/index.mjs","source":["src/index.ts","src/plugins/*.ts"],"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/mjs/index.mjs","require":"./dist/cjs/index.cjs","development":"./src/index.ts"},"./testing":{"types":"./src/testing.ts","import":"./src/testing.ts","default":"./src/testing.ts","development":"./src/testing.ts"},"./plugins/glob":{"types":"./dist/types/plugins/glob.d.ts","import":"./dist/mjs/plugins/glob.mjs","require":"./dist/cjs/plugins/glob.cjs","development":"./src/plugins/glob.ts"},"./plugins/json":{"types":"./dist/types/plugins/json.d.ts","import":"./dist/mjs/plugins/json.mjs","require":"./dist/cjs/plugins/json.cjs","development":"./src/plugins/json.ts"},"./plugins/scan":{"types":"./dist/types/plugins/scan.d.ts","import":"./dist/mjs/plugins/scan.mjs","require":"./dist/cjs/plugins/scan.cjs","development":"./src/plugins/scan.ts"},"./plugins/eslint":{"types":"./dist/types/plugins/eslint.d.ts","import":"./dist/mjs/plugins/eslint.mjs","require":"./dist/cjs/plugins/eslint.cjs","development":"./src/plugins/eslint.ts"},"./plugins/prettier":{"types":"./dist/types/plugins/prettier.d.ts","import":"./dist/mjs/plugins/prettier.mjs","require":"./dist/cjs/plugins/prettier.cjs","development":"./src/plugins/prettier.ts"},"./plugins/package-json":{"types":"./dist/types/plugins/package-json.d.ts","import":"./dist/mjs/plugins/package-json.mjs","require":"./dist/cjs/plugins/package-json.cjs","development":"./src/plugins/package-json.ts"}},"gitHead":"171b54619b506fcee03b20e65817e7840d161d2d","scripts":{"lint":"vp lint","pack":"vp pack","test":"vp test","bench":"vitest bench","build":"vp pack","typecheck":"tsc -b tsconfig.build.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:acc0c25a-f635-4aa5-8442-77eb00da6a16"}},"repository":{"url":"git+https://github.com/secundant/neodx.git","type":"git","directory":"libs/vfs"},"_npmVersion":"11.19.0","description":"Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","dependencies":{"pathe":"1.1.2","grammex":"3.1.3","@neodx/fs":"workspace:^","pkg-types":"1.0.3","@neodx/log":"workspace:^","@neodx/std":"workspace:^","ts-pattern":"5.2.0","@neodx/glob":"workspace:^","@neodx/colors":"workspace:^","@types/eslint":"8.56.9","@neodx/pkg-misc":"workspace:^"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"0.2.7","tsx":"4.23.12","@types/tmp":"0.2.6","@neodx/internal":"workspace:^"},"peerDependencies":{"eslint":"*","prettier":"*"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vfs_1.0.0_1786719220558_0.2265901879963883","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@neodx/vfs","version":"1.0.1","keywords":["dry-run","file","fs","lazy","vfs","virtual"],"author":{"url":"https://github.com/secundant","name":"Dmitry Remezov","email":"mysecundant@gmail.com"},"license":"MIT","_id":"@neodx/vfs@1.0.1","maintainers":[{"name":"secundant","email":"mysecundant@gmail.com"}],"contributors":[{"name":"secundant"}],"homepage":"https://github.com/secundant/neodx/tree/main/libs/vfs","bugs":{"url":"https://github.com/secundant/neodx/issues"},"dist":{"shasum":"9857ae49395b066dd7aa8f99940e578067c59c16","tarball":"https://registry.npmjs.org/@neodx/vfs/-/vfs-1.0.1.tgz","fileCount":61,"integrity":"sha512-PZkbZHURa+blZk2uP9Udov1tsSqE0Myuh8u6A7RxCmsDAhD/26PV4ABLD1sHU42wkwIxCgUF947rA4U4LEhM5w==","signatures":[{"sig":"MEQCIDXAinBCz4wLkoVdL0Nvi0IJNdvNvpegNVOEJBZ45vp8AiBBchtwbwbE+4IaDLqKkVRWPz2dehJKzXpGKNb+I/pJdA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@neodx%2fvfs@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":349657},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/mjs/index.mjs","source":["src/index.ts","src/plugins/*.ts"],"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/mjs/index.mjs","require":"./dist/cjs/index.cjs","development":"./src/index.ts"},"./testing":{"types":"./src/testing.ts","import":"./src/testing.ts","default":"./src/testing.ts","development":"./src/testing.ts"},"./plugins/glob":{"types":"./dist/types/plugins/glob.d.ts","import":"./dist/mjs/plugins/glob.mjs","require":"./dist/cjs/plugins/glob.cjs","development":"./src/plugins/glob.ts"},"./plugins/json":{"types":"./dist/types/plugins/json.d.ts","import":"./dist/mjs/plugins/json.mjs","require":"./dist/cjs/plugins/json.cjs","development":"./src/plugins/json.ts"},"./plugins/scan":{"types":"./dist/types/plugins/scan.d.ts","import":"./dist/mjs/plugins/scan.mjs","require":"./dist/cjs/plugins/scan.cjs","development":"./src/plugins/scan.ts"},"./plugins/eslint":{"types":"./dist/types/plugins/eslint.d.ts","import":"./dist/mjs/plugins/eslint.mjs","require":"./dist/cjs/plugins/eslint.cjs","development":"./src/plugins/eslint.ts"},"./plugins/prettier":{"types":"./dist/types/plugins/prettier.d.ts","import":"./dist/mjs/plugins/prettier.mjs","require":"./dist/cjs/plugins/prettier.cjs","development":"./src/plugins/prettier.ts"},"./plugins/package-json":{"types":"./dist/types/plugins/package-json.d.ts","import":"./dist/mjs/plugins/package-json.mjs","require":"./dist/cjs/plugins/package-json.cjs","development":"./src/plugins/package-json.ts"}},"gitHead":"88b8c617eda0ffb3f2d636af31b64d5215bc6295","scripts":{"lint":"vp lint","pack":"vp pack","test":"vp test","bench":"vitest bench","build":"vp pack","prepack":"node ../../tools/scripts/rewrite-workspace-protocol.mjs --prepack","postpack":"node ../../tools/scripts/rewrite-workspace-protocol.mjs --postpack","typecheck":"tsc -b tsconfig.build.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:acc0c25a-f635-4aa5-8442-77eb00da6a16"}},"repository":{"url":"git+https://github.com/secundant/neodx.git","type":"git","directory":"libs/vfs"},"_npmVersion":"11.19.0","description":"Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","dependencies":{"pathe":"1.1.2","grammex":"3.1.3","@neodx/fs":"workspace:^","pkg-types":"1.0.3","@neodx/log":"workspace:^","@neodx/std":"workspace:^","ts-pattern":"5.2.0","@neodx/glob":"workspace:^","@neodx/colors":"workspace:^","@types/eslint":"8.56.9","@neodx/pkg-misc":"workspace:^"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"0.2.7","tsx":"4.23.12","@types/tmp":"0.2.6","@neodx/internal":"workspace:^"},"peerDependencies":{"eslint":"*","prettier":"*"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vfs_1.0.1_1787394234071_0.8924656167977065","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@neodx/vfs","version":"1.0.2","keywords":["dry-run","file","fs","lazy","vfs","virtual"],"author":{"url":"https://github.com/secundant","name":"Dmitry Remezov","email":"mysecundant@gmail.com"},"license":"MIT","_id":"@neodx/vfs@1.0.2","maintainers":[{"name":"secundant","email":"mysecundant@gmail.com"}],"contributors":[{"name":"secundant"}],"homepage":"https://github.com/secundant/neodx/tree/main/libs/vfs","bugs":{"url":"https://github.com/secundant/neodx/issues"},"dist":{"shasum":"450c9a561e053c5755eaefe9f0de63645c4a711a","tarball":"https://registry.npmjs.org/@neodx/vfs/-/vfs-1.0.2.tgz","fileCount":61,"integrity":"sha512-IpmnG+DpkmH1Rad6l5uwK1ZJX/yMppXOsxr98Y6vrphub3qpZgbhEov08BS6LjoPpnbeoO73+WcRO4j2BpT7VA==","signatures":[{"sig":"MEUCIE1vBAIa4PM4SNuC/9KhF6EmhELlnKjh21OIUuyAO7SEAiEA1jRyGiiLG66gf0IC4HZiUhO5XqDoBvRzuTPynTHL348=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@neodx%2fvfs@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":349657},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/mjs/index.mjs","source":["src/index.ts","src/plugins/*.ts"],"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/mjs/index.mjs","require":"./dist/cjs/index.cjs","development":"./src/index.ts"},"./testing":{"types":"./src/testing.ts","import":"./src/testing.ts","default":"./src/testing.ts","development":"./src/testing.ts"},"./plugins/glob":{"types":"./dist/types/plugins/glob.d.ts","import":"./dist/mjs/plugins/glob.mjs","require":"./dist/cjs/plugins/glob.cjs","development":"./src/plugins/glob.ts"},"./plugins/json":{"types":"./dist/types/plugins/json.d.ts","import":"./dist/mjs/plugins/json.mjs","require":"./dist/cjs/plugins/json.cjs","development":"./src/plugins/json.ts"},"./plugins/scan":{"types":"./dist/types/plugins/scan.d.ts","import":"./dist/mjs/plugins/scan.mjs","require":"./dist/cjs/plugins/scan.cjs","development":"./src/plugins/scan.ts"},"./plugins/eslint":{"types":"./dist/types/plugins/eslint.d.ts","import":"./dist/mjs/plugins/eslint.mjs","require":"./dist/cjs/plugins/eslint.cjs","development":"./src/plugins/eslint.ts"},"./plugins/prettier":{"types":"./dist/types/plugins/prettier.d.ts","import":"./dist/mjs/plugins/prettier.mjs","require":"./dist/cjs/plugins/prettier.cjs","development":"./src/plugins/prettier.ts"},"./plugins/package-json":{"types":"./dist/types/plugins/package-json.d.ts","import":"./dist/mjs/plugins/package-json.mjs","require":"./dist/cjs/plugins/package-json.cjs","development":"./src/plugins/package-json.ts"}},"gitHead":"e9866e1913cc13536b6a6c63b61847a524034cac","scripts":{"lint":"vp lint","pack":"vp pack","test":"vp test","bench":"vitest bench","build":"vp pack","prepack":"node ../../tools/scripts/rewrite-workspace-protocol.mjs --prepack","postpack":"node ../../tools/scripts/rewrite-workspace-protocol.mjs --postpack","typecheck":"tsc -b tsconfig.build.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:acc0c25a-f635-4aa5-8442-77eb00da6a16"}},"repository":{"url":"git+https://github.com/secundant/neodx.git","type":"git","directory":"libs/vfs"},"_npmVersion":"11.19.0","description":"Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","dependencies":{"pathe":"1.1.2","grammex":"3.1.3","@neodx/fs":"workspace:^","pkg-types":"1.0.3","@neodx/log":"workspace:^","@neodx/std":"workspace:^","ts-pattern":"5.2.0","@neodx/glob":"workspace:^","@neodx/colors":"workspace:^","@types/eslint":"8.56.9","@neodx/pkg-misc":"workspace:^"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"0.2.7","tsx":"4.23.12","@types/tmp":"0.2.6","@neodx/internal":"workspace:^"},"peerDependencies":{"eslint":"*","prettier":"*"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vfs_1.0.2_1787394626597_0.8954560155788482","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@neodx/vfs","version":"1.0.3","keywords":["dry-run","file","fs","lazy","vfs","virtual"],"author":{"url":"https://github.com/secundant","name":"Dmitry Remezov","email":"mysecundant@gmail.com"},"license":"MIT","_id":"@neodx/vfs@1.0.3","maintainers":[{"name":"secundant","email":"mysecundant@gmail.com"}],"contributors":[{"name":"secundant"}],"homepage":"https://github.com/secundant/neodx/tree/main/libs/vfs","bugs":{"url":"https://github.com/secundant/neodx/issues"},"dist":{"shasum":"9a9fed53484f10076c011fef0723f947a7c2de45","tarball":"https://registry.npmjs.org/@neodx/vfs/-/vfs-1.0.3.tgz","fileCount":61,"integrity":"sha512-mWH2geGZXssfb+b/1Umqrhje6ht1ybVZgB8bCrNgkjguZp/7xd3PSkmCf/W8wzMt5VmPQrt5P0ic9a/ElciLFw==","signatures":[{"sig":"MEYCIQDQVfuc+KoFJyWlXmeMFzHR4SbFwxA6l1M/4XlEFxBPOAIhALNh2hW9Vf2lV9X3QzMpLmrNku1yLJ/JZLzLRHhn9fo4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@neodx%2fvfs@1.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":349657},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/types/index.d.ts","module":"./dist/mjs/index.mjs","source":["src/index.ts","src/plugins/*.ts"],"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/mjs/index.mjs","require":"./dist/cjs/index.cjs","development":"./src/index.ts"},"./testing":{"types":"./src/testing.ts","import":"./src/testing.ts","default":"./src/testing.ts","development":"./src/testing.ts"},"./plugins/glob":{"types":"./dist/types/plugins/glob.d.ts","import":"./dist/mjs/plugins/glob.mjs","require":"./dist/cjs/plugins/glob.cjs","development":"./src/plugins/glob.ts"},"./plugins/json":{"types":"./dist/types/plugins/json.d.ts","import":"./dist/mjs/plugins/json.mjs","require":"./dist/cjs/plugins/json.cjs","development":"./src/plugins/json.ts"},"./plugins/scan":{"types":"./dist/types/plugins/scan.d.ts","import":"./dist/mjs/plugins/scan.mjs","require":"./dist/cjs/plugins/scan.cjs","development":"./src/plugins/scan.ts"},"./plugins/eslint":{"types":"./dist/types/plugins/eslint.d.ts","import":"./dist/mjs/plugins/eslint.mjs","require":"./dist/cjs/plugins/eslint.cjs","development":"./src/plugins/eslint.ts"},"./plugins/prettier":{"types":"./dist/types/plugins/prettier.d.ts","import":"./dist/mjs/plugins/prettier.mjs","require":"./dist/cjs/plugins/prettier.cjs","development":"./src/plugins/prettier.ts"},"./plugins/package-json":{"types":"./dist/types/plugins/package-json.d.ts","import":"./dist/mjs/plugins/package-json.mjs","require":"./dist/cjs/plugins/package-json.cjs","development":"./src/plugins/package-json.ts"}},"gitHead":"063aa2c9b36bb4dab5503be74123e452cf6efada","scripts":{"lint":"vp lint","pack":"vp pack","test":"vp test","bench":"vitest bench","build":"vp pack","prepack":"node ../../tools/scripts/rewrite-workspace-protocol.mjs --prepack","postpack":"node ../../tools/scripts/rewrite-workspace-protocol.mjs --postpack","typecheck":"tsc -b tsconfig.build.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:acc0c25a-f635-4aa5-8442-77eb00da6a16"}},"repository":{"url":"git+https://github.com/secundant/neodx.git","type":"git","directory":"libs/vfs"},"_npmVersion":"11.19.0","description":"Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","dependencies":{"pathe":"1.1.2","grammex":"3.1.3","@neodx/fs":"^1.0.3","pkg-types":"1.0.3","@neodx/log":"^1.0.3","@neodx/std":"^1.0.0","ts-pattern":"5.2.0","@neodx/glob":"^1.0.3","@neodx/colors":"^1.0.3","@types/eslint":"8.56.9","@neodx/pkg-misc":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"0.2.7","tsx":"4.23.12","@types/tmp":"0.2.6","@neodx/internal":"^0.0.5"},"peerDependencies":{"eslint":"*","prettier":"*"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vfs_1.0.3_1787394962574_0.9277439847054347","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@neodx/vfs","version":"1.1.0","keywords":["dry-run","file","fs","lazy","vfs","virtual"],"author":{"url":"https://github.com/secundant","name":"Dmitry Remezov","email":"mysecundant@gmail.com"},"license":"MIT","_id":"@neodx/vfs@1.1.0","maintainers":[{"name":"secundant","email":"mysecundant@gmail.com"}],"contributors":[{"name":"secundant"}],"homepage":"https://github.com/secundant/neodx/tree/main/libs/vfs","bugs":{"url":"https://github.com/secundant/neodx/issues"},"dist":{"shasum":"e121c074790ad5590f0fdb9f132a596c976eaa67","tarball":"https://registry.npmjs.org/@neodx/vfs/-/vfs-1.1.0.tgz","fileCount":58,"integrity":"sha512-rbCQUHnAElya63cF3/IkECbpJCTOQF4DfMjhJ+jROFhS9tc87M48+hfq7Y+c6H36iwA4Z60ay8RPJsPyjrKPaQ==","signatures":[{"sig":"MEUCIEBGIUc3sxrC36SmW/fR++GwMt6Hdy/WVnga+IsLOl8rAiEAqKmTObq4EIzeLmvvGPi/FkY36btetTmnNY/368UE5EU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@neodx%2fvfs@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":335865},"main":"./dist/cjs/index.cjs","type":"module","types":"./dist/cjs/index.d.cts","module":"./dist/mjs/index.mjs","source":["src/index.ts","src/plugins/*.ts"],"exports":{".":{"import":{"types":"./dist/mjs/index.d.mts","default":"./dist/mjs/index.mjs"},"require":{"types":"./dist/cjs/index.d.cts","default":"./dist/cjs/index.cjs"},"development":"./src/index.ts"},"./testing":{"types":"./src/testing.ts","import":"./src/testing.ts","default":"./src/testing.ts","development":"./src/testing.ts"},"./plugins/glob":{"import":{"types":"./dist/mjs/plugins/glob.d.mts","default":"./dist/mjs/plugins/glob.mjs"},"require":{"types":"./dist/cjs/plugins/glob.d.cts","default":"./dist/cjs/plugins/glob.cjs"},"development":"./src/plugins/glob.ts"},"./plugins/json":{"import":{"types":"./dist/mjs/plugins/json.d.mts","default":"./dist/mjs/plugins/json.mjs"},"require":{"types":"./dist/cjs/plugins/json.d.cts","default":"./dist/cjs/plugins/json.cjs"},"development":"./src/plugins/json.ts"},"./plugins/scan":{"import":{"types":"./dist/mjs/plugins/scan.d.mts","default":"./dist/mjs/plugins/scan.mjs"},"require":{"types":"./dist/cjs/plugins/scan.d.cts","default":"./dist/cjs/plugins/scan.cjs"},"development":"./src/plugins/scan.ts"},"./plugins/eslint":{"import":{"types":"./dist/mjs/plugins/eslint.d.mts","default":"./dist/mjs/plugins/eslint.mjs"},"require":{"types":"./dist/cjs/plugins/eslint.d.cts","default":"./dist/cjs/plugins/eslint.cjs"},"development":"./src/plugins/eslint.ts"},"./plugins/prettier":{"import":{"types":"./dist/mjs/plugins/prettier.d.mts","default":"./dist/mjs/plugins/prettier.mjs"},"require":{"types":"./dist/cjs/plugins/prettier.d.cts","default":"./dist/cjs/plugins/prettier.cjs"},"development":"./src/plugins/prettier.ts"},"./plugins/package-json":{"import":{"types":"./dist/mjs/plugins/package-json.d.mts","default":"./dist/mjs/plugins/package-json.mjs"},"require":{"types":"./dist/cjs/plugins/package-json.d.cts","default":"./dist/cjs/plugins/package-json.cjs"},"development":"./src/plugins/package-json.ts"}},"gitHead":"e86679b1e91640e482c2922cfb07fa20c23e173c","scripts":{"lint":"vp lint","pack":"vp pack","test":"vp test","bench":"vitest bench","build":"vp pack","prepack":"node ../../tools/scripts/rewrite-workspace-protocol.mjs --prepack","postpack":"node ../../tools/scripts/rewrite-workspace-protocol.mjs --postpack","typecheck":"tsc -b tsconfig.build.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:acc0c25a-f635-4aa5-8442-77eb00da6a16"}},"repository":{"url":"git+https://github.com/secundant/neodx.git","type":"git","directory":"libs/vfs"},"_npmVersion":"11.19.0","description":"Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","dependencies":{"pathe":"1.1.2","grammex":"3.1.3","@neodx/fs":"^1.1.0","pkg-types":"1.0.3","@neodx/log":"^1.1.0","@neodx/std":"^1.1.0","ts-pattern":"5.2.0","@neodx/glob":"^1.1.0","@neodx/colors":"^1.1.0","@types/eslint":"8.56.9","@neodx/pkg-misc":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"0.2.7","tsx":"4.23.12","@types/tmp":"0.2.6","@neodx/internal":"^0.0.6"},"peerDependencies":{"eslint":"*","prettier":"*"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vfs_1.1.0_1787416160291_0.08349054360477481","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@neodx/vfs","version":"1.1.1","description":"Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover","keywords":["dry-run","file","fs","lazy","vfs","virtual"],"homepage":"https://github.com/secundant/neodx/tree/main/libs/vfs","bugs":{"url":"https://github.com/secundant/neodx/issues"},"license":"MIT","author":{"name":"Dmitry Remezov","email":"mysecundant@gmail.com","url":"https://github.com/secundant"},"contributors":[{"name":"secundant"}],"repository":{"type":"git","url":"git+https://github.com/secundant/neodx.git","directory":"libs/vfs"},"source":["src/index.ts","src/plugins/*.ts"],"type":"module","sideEffects":false,"main":"./dist/cjs/index.cjs","module":"./dist/mjs/index.mjs","types":"./dist/cjs/index.d.cts","exports":{".":{"import":{"types":"./dist/mjs/index.d.mts","default":"./dist/mjs/index.mjs"},"require":{"types":"./dist/cjs/index.d.cts","default":"./dist/cjs/index.cjs"}},"./plugins/eslint":{"import":{"types":"./dist/mjs/plugins/eslint.d.mts","default":"./dist/mjs/plugins/eslint.mjs"},"require":{"types":"./dist/cjs/plugins/eslint.d.cts","default":"./dist/cjs/plugins/eslint.cjs"}},"./plugins/glob":{"import":{"types":"./dist/mjs/plugins/glob.d.mts","default":"./dist/mjs/plugins/glob.mjs"},"require":{"types":"./dist/cjs/plugins/glob.d.cts","default":"./dist/cjs/plugins/glob.cjs"}},"./plugins/package-json":{"import":{"types":"./dist/mjs/plugins/package-json.d.mts","default":"./dist/mjs/plugins/package-json.mjs"},"require":{"types":"./dist/cjs/plugins/package-json.d.cts","default":"./dist/cjs/plugins/package-json.cjs"}},"./plugins/json":{"import":{"types":"./dist/mjs/plugins/json.d.mts","default":"./dist/mjs/plugins/json.mjs"},"require":{"types":"./dist/cjs/plugins/json.d.cts","default":"./dist/cjs/plugins/json.cjs"}},"./plugins/prettier":{"import":{"types":"./dist/mjs/plugins/prettier.d.mts","default":"./dist/mjs/plugins/prettier.mjs"},"require":{"types":"./dist/cjs/plugins/prettier.d.cts","default":"./dist/cjs/plugins/prettier.cjs"}},"./plugins/scan":{"import":{"types":"./dist/mjs/plugins/scan.d.mts","default":"./dist/mjs/plugins/scan.mjs"},"require":{"types":"./dist/cjs/plugins/scan.d.cts","default":"./dist/cjs/plugins/scan.cjs"}}},"publishConfig":{"access":"public"},"scripts":{"typecheck":"tsc -b tsconfig.build.json","bench":"vitest bench","build":"vp pack","test":"vp test","lint":"vp lint","pack":"vp pack","prepack":"node ../../tools/scripts/rewrite-workspace-protocol.mjs --prepack","postpack":"node ../../tools/scripts/rewrite-workspace-protocol.mjs --postpack"},"dependencies":{"@neodx/colors":"^1.1.1","@neodx/fs":"^1.1.1","@neodx/glob":"^1.1.1","@neodx/log":"^1.1.1","@neodx/pkg-misc":"^1.1.1","@neodx/std":"^1.1.1","@types/eslint":"8.56.9","grammex":"3.1.3","pathe":"1.1.2","pkg-types":"1.0.3","ts-pattern":"5.2.0"},"devDependencies":{"@neodx/internal":"^0.0.7","@types/tmp":"0.2.6","tmp":"0.2.7","tsx":"4.23.12"},"peerDependencies":{"eslint":"*","prettier":"*"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true}},"gitHead":"cf60915d175a572a68a501c68a076238dd0b19d1","_id":"@neodx/vfs@1.1.1","_nodeVersion":"26.7.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-spAaMDpLDE68tiF4imOd43FPh1OvjA2WzKa5uSsJrv3lM95s5mITm1zYLgRvVOX5TdWmecjOf+bs/w/C3O2+vw==","shasum":"7f3b000127cc34d24eaaa73904892c1570a5afd6","tarball":"https://registry.npmjs.org/@neodx/vfs/-/vfs-1.1.1.tgz","fileCount":58,"unpackedSize":335362,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@neodx%2fvfs@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICYUhnLZOxDmb56bqS4sezqJLr6JbdyP2+Jq+E+qrP0aAiBGFHFIno7hpbL8Jlv/JoouZzaLhe5X4fsI/lVaMxpLmQ=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:acc0c25a-f635-4aa5-8442-77eb00da6a16"}},"directories":{},"maintainers":[{"name":"secundant","email":"mysecundant@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vfs_1.1.1_1787673056687_0.941198722481916"},"_hasShrinkwrap":false}},"time":{"created":"2023-05-01T23:36:42.965Z","modified":"2026-08-25T15:50:57.603Z","0.1.0":"2023-05-01T23:36:43.157Z","0.1.1":"2023-05-01T23:49:57.847Z","0.1.2":"2023-05-02T18:07:33.853Z","0.1.3":"2023-05-02T20:19:02.537Z","0.1.4":"2023-05-02T20:59:55.236Z","0.1.5":"2023-05-16T16:27:12.044Z","0.1.6":"2023-05-19T10:06:34.561Z","0.1.7":"2023-05-25T17:57:16.412Z","0.1.8":"2023-07-22T19:21:40.260Z","0.1.9":"2023-07-30T19:22:01.862Z","0.1.10":"2023-10-10T16:54:32.300Z","0.1.11":"2023-10-21T21:13:19.579Z","0.2.0":"2024-02-21T11:03:48.151Z","0.2.1":"2024-05-21T14:43:11.001Z","0.3.0":"2025-07-22T14:23:19.028Z","1.0.0":"2026-08-14T14:53:40.710Z","1.0.1":"2026-08-22T10:23:54.220Z","1.0.2":"2026-08-22T10:30:26.757Z","1.0.3":"2026-08-22T10:36:02.723Z","1.1.0":"2026-08-22T16:29:20.510Z","1.1.1":"2026-08-25T15:50:56.832Z"},"bugs":{"url":"https://github.com/secundant/neodx/issues"},"author":{"name":"Dmitry Remezov","email":"mysecundant@gmail.com","url":"https://github.com/secundant"},"license":"MIT","homepage":"https://github.com/secundant/neodx/tree/main/libs/vfs","keywords":["dry-run","file","fs","lazy","vfs","virtual"],"repository":{"type":"git","url":"git+https://github.com/secundant/neodx.git","directory":"libs/vfs"},"description":"Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover","contributors":[{"name":"secundant"}],"maintainers":[{"name":"secundant","email":"mysecundant@gmail.com"}],"readme":"# @neodx/vfs\n\nA virtual file system with a working-directory context, lazy (deferred) writes, pluggable backends,\nand a plugin pipeline for the common file-shaping tasks (JSON, package.json, formatting, linting,\nglobbing, scanning). Staged writes are committed to the underlying backend in a single `apply()`.\n\n`@neodx/vfs` is a **flagship** package: it backs the `@neodx/svg`, `@neodx/figma`, and other product\npipelines and is published for direct use. The surface is intentionally small and stable.\n\n```ts\nimport { createVfs } from '@neodx/vfs';\n\nconst vfs = createVfs(process.cwd());\n\n// Stage writes — nothing touches the disk yet.\nawait vfs.write('foo/bar.ts', 'console.log ( \"Hello world\" )');\nawait vfs.rename('foo/bar.ts', 'foo/baz.ts');\nawait vfs.delete('other.ts');\n\nconsole.log(await vfs.read('foo/baz.ts', 'utf-8')); // console.log ( \"Hello world\" )\n\n// `prettier` runs on `apply` by default, so the staged content is formatted before it is written.\nawait vfs.apply();\n\nconsole.log(await vfs.read('foo/baz.ts', 'utf-8')); // console.log(\"Hello world\")\n```\n\n## Installation\n\n```bash\nnpm install @neodx/vfs\n# yarn\nyarn add @neodx/vfs\n# pnpm\npnpm add @neodx/vfs\n```\n\n`eslint` and `prettier` are **optional peer dependencies**: install them when you use the\n`eslint` / `prettier` plugins (both are wired into `createVfs` by default).\n\n## Exports\n\n`@neodx/vfs` ships one root entry plus focused plugin and testing subpaths. The source under\n`src/` is the single source of truth for the Public API.\n\n| Subpath                           | Surface                                                                                                                                |\n| --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |\n| `@neodx/vfs`                      | `createVfs`, `createHeadlessVfs`, `createDefaultVfsBackend`, `createBaseVfs`, `createAutoVfs`, backends, `createVfsPlugin`, core types |\n| `@neodx/vfs/plugins/json`         | `json`, `readVfsJson`, `writeVfsJson`, `updateVfsJson`, `createJsonFileApi`, JSON types                                                |\n| `@neodx/vfs/plugins/package-json` | `packageJson`, `createVfsPackageJsonFileApi`                                                                                           |\n| `@neodx/vfs/plugins/prettier`     | `prettier`                                                                                                                             |\n| `@neodx/vfs/plugins/eslint`       | `eslint`                                                                                                                               |\n| `@neodx/vfs/plugins/glob`         | `glob`, `globVfs`                                                                                                                      |\n| `@neodx/vfs/plugins/scan`         | `scan`, `scanVfs`, `createScanVfsCache`                                                                                                |\n| `@neodx/vfs/testing`              | tmp-dir + change-inspection helpers for tests (ships `.ts` source; see [Testing](#testing))                                            |\n\n## Usage\n\n`createVfs(path, params?)` is the out-of-the-box entry point. It wires up the `json`, `scan`,\n`glob`, `eslint`, `prettier`, and `packageJson` plugins, so the returned instance carries the full\nplugin surface:\n\n```ts\nconst vfs = createVfs(process.cwd(), {\n  // Backend selection (mutually influential; see Backends below):\n  virtual: false, // false (default) → real `node:fs`; true | initializer → in-memory\n  readonly: false, // true → reads hit the real FS, but writes are never persisted\n  // Plugin toggles:\n  prettier: true, // true (default) | false | { auto: false } to disable formatting on `apply`\n  eslint: true, // true (default) | false | { auto: false } to disable fixing on `apply`\n  log: 'error' // @neodx/log input; the vfs logs under the `vfs` name\n});\n\n// JSON (from the `json` plugin)\nconst json = await vfs.readJson('foo.json');\nawait vfs.writeJson('foo.json', { ...json, foo: 'bar' });\nawait vfs.updateJson<{ foo?: string }>('foo.json', draft => {\n  draft.foo = 'bar';\n});\n\n// package.json dependency management (from the `package-json` plugin)\nconst pkg = vfs.packageJson(); // 'package.json' is the default file name\nawait pkg.addDependencies({ dependencies: { foo: '1.0.0' } });\nawait pkg.addDependencies({\n  devDependencies: { foo: '1.0.0' },\n  peerDependencies: { bar: '1.0.0' }\n});\nawait pkg.removeDependencies({ dependencies: ['foo'] });\nawait pkg.removeDependencies({ devDependencies: ['foo'], peerDependencies: ['bar'] });\n\n// Formatting (from the `prettier` plugin)\nawait vfs.format('foo/bar.ts'); // format one file\nawait vfs.formatAll(); // format all staged create/update actions\n\n// Linting (from the `eslint` plugin)\nawait vfs.fix('foo/bar.ts'); // fix one path (string or string[])\nawait vfs.fixAll(); // fix all staged create/update actions\n\n// Globbing / scanning (from the `glob` / `scan` plugins)\nconst files = await vfs.glob('src/**/*.ts');\nconst all = await vfs.scan(); // recursive listing of the working directory\n\nawait vfs.apply(); // commit every staged change to the backend\n```\n\n### Backends\n\nThe backend decides where reads resolve and where `apply()` writes. `createVfs` selects one from\nits `virtual` / `readonly` params via `createDefaultVfsBackend`:\n\n- **Real FS** (`virtual` falsy, the default): reads and writes go to `node:fs` rooted at `path`.\n  Built by `createNodeFsBackend()`.\n- **In-memory** (`virtual: true` or `virtual: <initializer>`): nothing touches disk; the backend is\n  seeded from the initializer and all writes stay in memory. Built by `createInMemoryBackend(path,\ninitializer)`. Useful for tests and dry-run emulation.\n- **Readonly** (`readonly: true`, with `virtual` falsy): reads hit the real FS, but staged writes\n  are never persisted on `apply()`. Internally wraps the chosen backend.\n\nYou can also pass your own `backend: VfsBackend` to `createVfs` / `createHeadlessVfs` to plug in a\ncustom storage layer. The exported backends and the `VfsBackend` interface live on the root entry:\n\n```ts\nimport {\n  createInMemoryBackend,\n  createNodeFsBackend,\n  type VfsBackend,\n  type VirtualInitializer\n} from '@neodx/vfs';\n```\n\n## API\n\n### `createVfs(path, params?): Vfs`\n\nMain factory. Returns a fully-plugged-in VFS instance. `Vfs` is the type of the returned instance\n(`ReturnType<typeof createVfs>`); its exact method set depends on the installed plugins.\n\n`CreateVfsParams`:\n\n- `path: string` — the root working directory.\n- `virtual?: boolean | VirtualInitializer` — when falsy (default) use the real `node:fs`; when\n  `true` use an empty in-memory backend; when an initializer object, seed the in-memory backend from\n  it.\n- `readonly?: boolean` — when `true`, all operations are read-only (writes are staged but never\n  persisted on `apply()`). Ignored if you pass your own `backend`.\n- `prettier?: boolean | PrettierPluginParams` — `true` (default) enables the prettier plugin with\n  auto-format on `apply()`; `false` or `{ auto: false }` disables auto-format.\n- `eslint?: boolean | EsLintPluginParams` — `true` (default) enables the eslint plugin with\n  auto-fix on `apply()`; `false` or `{ auto: false }` disables auto-fix.\n- `log?: AutoLoggerInput<VfsLogMethod>` — `@neodx/log` input; defaults to `'error'`.\n- `backend?: VfsBackend` — pass your own backend instead of the default one.\n\nRelated lower-level factories (root entry):\n\n- `createHeadlessVfs(path, params?)` — like `createVfs` but without the built-in plugins; compose\n  plugins yourself with `.pipe(...)`.\n- `createDefaultVfsBackend(path, { virtual?, readonly? })` — the backend selector used by\n  `createVfs` / `createHeadlessVfs`.\n- `createAutoVfs(input, params?)` — accepts a `Vfs`, a path string, or `{ path, ...params }`.\n- `createBaseVfs(context)` — the bare instance used internally; pair with `createVfsContext`.\n\n### Base VFS API\n\nEvery VFS instance (whatever backends/plugins are installed) exposes this surface. Paths are\nrelative to the working directory unless noted.\n\n```ts\ninterface BaseVfs {\n  // Lifecycle\n  apply(): Promise<void>; // commit all staged changes to the backend\n  readonly virtual: boolean; // true for an in-memory backend\n  readonly readonly: boolean; // true for a readonly backend\n  readonly log: Logger<VfsLogMethod>;\n\n  // Paths\n  readonly path: string; // absolute path to the working directory\n  readonly dirname: string; // absolute path to the parent directory\n  resolve(...to: string[]): string; // resolve an absolute path against the working directory\n  relative(path: string): string; // relative path from the working directory\n\n  // Reads\n  tryRead(path: string): Promise<Buffer | null>;\n  tryRead(path: string, encoding: BufferEncoding): Promise<string | null>;\n  read(path: string): Promise<Buffer>;\n  read(path: string, encoding: BufferEncoding): Promise<string>;\n\n  // Mutations (staged until `apply()`)\n  write(path: string, content: Buffer | string): Promise<void>;\n  rename(from: string, ...to: string[]): Promise<void>;\n  delete(path: string): Promise<void>;\n\n  // Inspection\n  exists(path?: string): Promise<boolean>;\n  isFile(path: string): Promise<boolean>;\n  isDir(path: string): Promise<boolean>;\n  readDir(path?: string): Promise<string[]>;\n  readDir(params: { withFileTypes: true }): Promise<VfsDirent[]>;\n  readDir(path: string, params: { withFileTypes: true }): Promise<VfsDirent[]>;\n}\n```\n\nTwo public methods extend any instance regardless of plugins:\n\n- `vfs.pipe(...plugins)` — return a new VFS with additional plugins layered on (immutable,\n  order-sensitive; plugins accumulate).\n- `vfs.child(path)` — create a nested VFS under `path` that inherits the backend, plugins, and\n  two-way-syncs changes with the parent.\n\n> **Reading staged changes.** There is no public `getChanges()` method on a VFS instance. Staged\n> actions are represented by the `VfsFileAction` type (`{ type: 'create' | 'update' | 'delete',\npath, relativePath, ... }`). In tests, inspect them with the helpers from\n> [`@neodx/vfs/testing`](#testing) (`getChangesDump`, `getChangesHash`).\n\n## Plugins\n\nPlugins are VFS extensions installed via `createVfs` (built-in) or `.pipe(...)`. Each lives on its\nown subpath. `createVfsPlugin(name, handler)` builds one.\n\n### `json` — `@neodx/vfs/plugins/json`\n\nJSON read/write/update against any path, backed by `@neodx/fs`'s JSONC-aware parse/serialize.\n\n- `vfs.readJson<T>(path, options?)`, `vfs.writeJson<T>(path, json, options?)`,\n  `vfs.updateJson<T>(path, updater, options?)` — operate directly on a path.\n- `vfs.jsonFile<T>(path)` — a focused handle exposing `read`, `tryRead`, `write`, `update`, plus\n  inherited file ops (`exists`, `delete`, `rename`).\n- Standalone functions (same behavior, take a `BaseVfs`): `readVfsJson`, `writeVfsJson`,\n  `updateVfsJson`, `createJsonFileApi`.\n- Types: `JSONPrimitive`, `JSONValue`, `JSONArray`, `JSONObject`, `JsonUpdate`, `JsonFileApi`,\n  `JsonPluginApi`.\n\nThe `jsonFile(...).experimental_toResource(defaultValue)` handle is **deprecated** and unstable\n(see in-source `@todo`): it returns an `{ data } & AsyncDisposable` that writes back on disposal.\n\n### `package-json` — `@neodx/vfs/plugins/package-json`\n\npackage.json dependency management on top of the JSON plugin. `vfs.packageJson(path?)` (default\n`'package.json'`) returns a handle with `read`, `write`, `update`, `hasDependency(name)`,\n`addDependencies(deps)`, and `removeDependencies(deps)`. `addDependencies` / `removeDependencies`\naccept either a dependency map (`{ dependencies, devDependencies, peerDependencies,\noptionalDependencies }`) or a plain name / name list.\n\n### `prettier` — `@neodx/vfs/plugins/prettier`\n\nFormat staged or explicit files with Prettier (optional peer dependency). Auto-formats all staged\ncreate/update actions on `apply()` unless `{ auto: false }`.\n\n- `vfs.format(path): Promise<boolean>` — format one file; resolves `true` when it was reformatted.\n- `vfs.formatAll(): Promise<void>` — format every staged create/update action.\n\n### `eslint` — `@neodx/vfs/plugins/eslint`\n\nFix ESLint issues in staged or explicit files (optional peer dependency). Auto-fixes all staged\ncreate/update actions on `apply()` unless `{ auto: false }`. Files are skipped automatically when\nthe workspace has no `eslint` dependency, the path is ignored, or it is not a `.js`/`.ts` source\nfile.\n\n- `vfs.fix(path | path[]): Promise<void>` — fix one path or list of paths.\n- `vfs.fixAll(): Promise<void>` — fix every staged create/update action.\n\n### `glob` — `@neodx/vfs/plugins/glob`\n\nGlob matching over the VFS, built on `@neodx/glob` (grammex-based). Results are relative paths.\n\n- `vfs.glob(pattern | pattern[], params?): Promise<string[]>` — match files under the working\n  directory.\n- Standalone: `globVfs(vfs, params)`.\n\n### `scan` — `@neodx/vfs/plugins/scan`\n\nRecursive directory scanning with filters, barriers (stop descent), depth limits, timeouts, abort\nsignals, and an optional cache shared across calls.\n\n- `vfs.scan(path?, params?): Promise<string[]>` — list relative paths.\n- `vfs.scan(params?: { withFileTypes: true }): Promise<ScannedItem[]>` — list items with `dirent`,\n  `depth`, and `relativePath`.\n- Standalone: `scanVfs(vfs, params)` and `createScanVfsCache()`.\n\n## Testing\n\n`@neodx/vfs/testing` is a **test-time** entry: it ships raw `.ts` source (its `exports` map points\nat `src/testing.ts` directly, with no compiled build) and pulls in `vite-plus/test` and `tmp`. Use\nit from test files only; do not add it to application code.\n\n```ts\nimport { createTmpVfs, getChangesHash, getChangesDump } from '@neodx/vfs/testing';\n```\n\n- `createTmpVfs({ files?, ...createVfsParams })` — a real-FS VFS in a fresh temp directory seeded\n  with `files`.\n- `getTmpDir()`, `initializeDir(dir, files)` — temp dir + seeding primitives.\n- `getChangesHash(vfs)` / `getChangesDump(vfs)` — stable snapshots of staged actions for assertions\n  (`getChangesDump` returns `[type, relativePath, content?]` triples).\n- `mockReadDir(vfs, fn?)`, `expectArrayEqual(received, expected)`, `expectDirEqual(vfs, path,\nexpected)` — read mocks and directory equality helpers.\n- Types: `CreateTmpVfsParams`, `DirentLike`.\n\n## Tradeoffs and limitations\n\n- It targets the common file-shaping workflow (read → mutate → format/lint → apply), not a full FS\n  abstraction. There is no symlink, file-watching, or directory-rename support.\n- Directory rename is not supported (`rename` throws for directories); staged writes create parent\n  directories as needed.\n\n## References\n\n- glob matching: [grammex](https://github.com/fabiospampinato/grammex),\n  [tiny-readdir-glob](https://github.com/fabiospampinato/tiny-readdir-glob)\n","readmeFilename":"README.md"}