{"_id":"fsd","_rev":"29-ed37294b8d2736f464901ecd630cda50","name":"fsd","dist-tags":{"latest":"0.15.0"},"versions":{"0.1.0":{"name":"fsd","version":"0.1.0","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@maichong.it"},"license":"MIT","_id":"fsd@0.1.0","maintainers":[{"name":"liangxingchen","email":"liang@maichong.it"}],"dist":{"shasum":"79111a8a91fae0a55dd3045a74cbebe338f8e366","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.1.0.tgz","fileCount":4,"integrity":"sha512-Bxu7RJtTU1XjgE7NqYfKEwACrYjY7Igmtc7ofA66Nw3YNfYKdBFISfC1PZLMhaHMoPo4t8TqY67m22FptD/TbA==","signatures":[{"sig":"MEQCIFZ/IHFDsCr0kK/43dAGBMiidFBbDnrkl8EIGMsoJhMZAiAmxRSwecEqpcc+mbXc8ign9VmwdsnKp90R9uovXcrb5w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5991},"main":"lib/fsd.js","scripts":{"build":"babel -d lib src"},"_npmUser":{"name":"liangxingchen","email":"liang@maichong.it"},"repository":{"url":"https://github.com/maichong/fsd/tree/master/packages/fsd","type":"git"},"_npmVersion":"5.5.1","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"8.9.1","dependencies":{"is-stream":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"babel-cli":"^6.26.0","babel-preset-env":"^1.6.1","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-flow-strip-types":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/fsd_0.1.0_1518344349817_0.3238866588466063","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"fsd","version":"0.2.0","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@maichong.it"},"license":"MIT","_id":"fsd@0.2.0","maintainers":[{"name":"liangxingchen","email":"liang@maichong.it"}],"dist":{"shasum":"7e58a31ec4a07bea238e88e92586c11e177aa19a","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.2.0.tgz","fileCount":4,"integrity":"sha512-rqn05FYihmK2y9St8c00LgTZs7O9CB+WL3RDcx9v8fI3LwrZg5oJCsRMJcZLrSESoFKmf5sVX6AZ0x6D5hJCRw==","signatures":[{"sig":"MEYCIQCKWnZxe4i6Dcv2Xytc5ZrjMcsna36yoNjrhZsU4cd6FAIhANEMDm3S66pgrEfxat1L+396iIhqK1N1fYvF8FNDxqK+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6014},"main":"lib/fsd.js","scripts":{"build":"babel -d lib src"},"_npmUser":{"name":"liangxingchen","email":"liang@maichong.it"},"repository":{"url":"https://github.com/maichong/fsd/tree/master/packages/fsd","type":"git"},"_npmVersion":"5.5.1","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"8.9.1","dependencies":{"debug":"^3.1.0","is-stream":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"babel-cli":"^6.26.0","babel-preset-env":"^1.6.1","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-flow-strip-types":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/fsd_0.2.0_1518435448748_0.7284134373956705","host":"s3://npm-registry-packages"}},"0.2.1":{"name":"fsd","version":"0.2.1","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@maichong.it"},"license":"MIT","_id":"fsd@0.2.1","maintainers":[{"name":"liangxingchen","email":"liang@maichong.it"}],"dist":{"shasum":"234cabeb8aed8564a49a46f77e17d12b51f326f1","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.2.1.tgz","fileCount":4,"integrity":"sha512-nX1Ng7Zy9U0orOixgGgRhY/+fQBtz872VtiYVKtNZVv8z3H6h9vKD7NmBgtAKGUZLa0mnnmbMiSno8uuQhqCkA==","signatures":[{"sig":"MEUCIQCGYmZp2jqNkeW8bydA5MIZvIN62E5X5c8uLSb2EEn5yQIgZ0WoiYPNjGbApD720q4wxB8dkKhO8CirFSlK0bC7xeU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6058},"main":"lib/fsd.js","scripts":{"build":"babel -d lib src"},"_npmUser":{"name":"liangxingchen","email":"liang@maichong.it"},"repository":{"url":"https://github.com/maichong/fsd/tree/master/packages/fsd","type":"git"},"_npmVersion":"5.5.1","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"8.9.1","dependencies":{"debug":"^3.1.0","is-stream":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"babel-cli":"^6.26.0","babel-preset-env":"^1.6.1","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-flow-strip-types":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/fsd_0.2.1_1519365523101_0.034483070398451554","host":"s3://npm-registry-packages"}},"0.2.3":{"name":"fsd","version":"0.2.3","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@maichong.it"},"license":"MIT","_id":"fsd@0.2.3","maintainers":[{"name":"liangxingchen","email":"liang@maichong.it"}],"dist":{"shasum":"caca5a75a73f68703eae61bb1309480c29612c24","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.2.3.tgz","fileCount":4,"integrity":"sha512-OB1S5HYF8nDFr9aB2xmWKm4uCzm1afK595acM5ni0q/VVB+Wd/rqQpfYeegp5iyGMwOGZ+QZyq8wYIGpfOVXDQ==","signatures":[{"sig":"MEUCIQDbRJauuR6qsdyxPp27igN0xbvnlIVSliG671P2Ohvm/wIgY2Iyuu/V2YyxoQpQfu6tsw7tKqpigLcf8wtaqfSPtM4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8089},"main":"lib/fsd.js","scripts":{"build":"babel -d lib src","prepublish":"npm run build"},"_npmUser":{"name":"liangxingchen","email":"liang@maichong.it"},"repository":{"url":"https://github.com/maichong/fsd/tree/master/packages/fsd","type":"git"},"_npmVersion":"5.5.1","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"8.9.1","dependencies":{"debug":"^3.1.0","is-stream":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"babel-cli":"^6.26.0","babel-preset-env":"^1.6.1","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-flow-strip-types":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/fsd_0.2.3_1519374619048_0.05698979052822506","host":"s3://npm-registry-packages"}},"0.2.4":{"name":"fsd","version":"0.2.4","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@maichong.it"},"license":"MIT","_id":"fsd@0.2.4","maintainers":[{"name":"liangxingchen","email":"liang@maichong.it"}],"dist":{"shasum":"bc467501e9f7a771e8df0dfc04d6ed603df2d9d9","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.2.4.tgz","fileCount":4,"integrity":"sha512-SYQHUm9UAvSNwWhbtPb+O7SZaTmpWUIbkw1nsAlYgb8N2jYPg3Zyo8H6LK4Q7HqnrYWWXo9lGqEk9WmFgJNTXw==","signatures":[{"sig":"MEQCIB7oTJRvkmWPUKYrPvluQxJQZoFzIH+YQlukNpMmlJ42AiAYRGdzFsJ0m5IHSXon2Je/LmbUHm1t1/5+PHFouVBpwg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8158},"main":"lib/fsd.js","scripts":{"build":"babel -d lib src","prepublish":"npm run build"},"_npmUser":{"name":"liangxingchen","email":"liang@maichong.it"},"repository":{"url":"https://github.com/maichong/fsd/tree/master/packages/fsd","type":"git"},"_npmVersion":"5.5.1","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"8.9.1","dependencies":{"debug":"^3.1.0","slash":"^1.0.0","is-stream":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"babel-cli":"^6.26.0","babel-preset-env":"^1.6.1","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-flow-strip-types":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/fsd_0.2.4_1519375112354_0.1186182035596981","host":"s3://npm-registry-packages"}},"0.2.5":{"name":"fsd","version":"0.2.5","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@maichong.it"},"license":"MIT","_id":"fsd@0.2.5","maintainers":[{"name":"liangxingchen","email":"liang@maichong.it"}],"dist":{"shasum":"c15a1b19bd3a0b27786975d60da45a4986ba2bb8","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.2.5.tgz","fileCount":4,"integrity":"sha512-yogza4YTHp9f3GLos1C/qC0jTWgVaDMQKqCFoPbwuwwMSuRS77udM5nXu6wy4DJf35TnyubUjaVk6YnU8AymZQ==","signatures":[{"sig":"MEQCIGFEgpt66Ru8o9vK3Iat/fV2Soamuci3yjy9MrESzZxjAiAqXY2WFd/mEmBJSnUFm8BsQHE6vNhSbiZxPrSJtphPYg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8286},"main":"lib/fsd.js","scripts":{"build":"babel -d lib src","prepublish":"npm run build"},"_npmUser":{"name":"liangxingchen","email":"liang@maichong.it"},"repository":{"url":"https://github.com/maichong/fsd/tree/master/packages/fsd","type":"git"},"_npmVersion":"5.5.1","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"8.9.1","dependencies":{"debug":"^3.1.0","slash":"^1.0.0","is-stream":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"babel-cli":"^6.26.0","babel-preset-env":"^1.6.1","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-flow-strip-types":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/fsd_0.2.5_1519376242297_0.6116654243819377","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"fsd","version":"0.3.0","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@maichong.it"},"license":"MIT","_id":"fsd@0.3.0","maintainers":[{"name":"liangxingchen","email":"liang@maichong.it"}],"dist":{"shasum":"d7075dc5ebe1591e7890fe167530c900d2b18b79","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.3.0.tgz","fileCount":4,"integrity":"sha512-mDTDiZn9MyvfvkGdnmOlCFtWmG9RGq4Uf4RyRpl+GhmcvF7WP7RS0fHVms7GC1lgPFMXC1R7OymqsSUpDT7NbA==","signatures":[{"sig":"MEMCHyenk9hBn1vonoVmBHtuybEh6f6f0l33caHw8PenCXUCIBZgINPtFfETGzhNVT1itE43omqUVCdmyg8ZiZDL5M82","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9304},"main":"lib/fsd.js","scripts":{"build":"babel -d lib src","prepublish":"npm run build"},"_npmUser":{"name":"liangxingchen","email":"liang@maichong.it"},"repository":{"url":"https://github.com/maichong/fsd/tree/master/packages/fsd","type":"git"},"_npmVersion":"5.5.1","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"8.9.1","dependencies":{"debug":"^3.1.0","slash":"^1.0.0","is-stream":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"babel-cli":"^6.26.0","babel-preset-env":"^1.6.1","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-flow-strip-types":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/fsd_0.3.0_1519388446811_0.08238938090471515","host":"s3://npm-registry-packages"}},"0.3.1":{"name":"fsd","version":"0.3.1","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@maichong.it"},"license":"MIT","_id":"fsd@0.3.1","maintainers":[{"name":"liangxingchen","email":"liang@maichong.it"}],"dist":{"shasum":"e7e9f013c87ba7641256fc7efa9b5b84c3e8f40c","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.3.1.tgz","fileCount":4,"integrity":"sha512-1jsBckalW1llBW7sCiqzHpSaeeoqGCwLpc7YlBMGeg2yzdgnf3jrdIOzWoIgWI+wOKlCJOynz1bKLvyzMcivHg==","signatures":[{"sig":"MEQCIAWIczqXTrEI2x8uwZpNnptVuiXWj6jYvrQaAPvCmdiAAiBmeYMvIa/l7wiSsO6FsBCv3E9fjcqHbqgsBF6q2a0dag==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9304},"main":"lib/fsd.js","scripts":{"build":"babel -d lib src","prepublish":"npm run build"},"_npmUser":{"name":"liangxingchen","email":"liang@maichong.it"},"repository":{"url":"https://github.com/maichong/fsd/tree/master/packages/fsd","type":"git"},"_npmVersion":"5.5.1","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"8.9.1","dependencies":{"debug":"^3.1.0","slash":"^1.0.0","is-stream":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"babel-cli":"^6.26.0","babel-preset-env":"^1.6.1","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-flow-strip-types":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/fsd_0.3.1_1519434595107_0.8375784118896896","host":"s3://npm-registry-packages"}},"0.3.2":{"name":"fsd","version":"0.3.2","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@maichong.it"},"license":"MIT","_id":"fsd@0.3.2","maintainers":[{"name":"liangxingchen","email":"liang@maichong.it"}],"dist":{"shasum":"0ed0d882dfb65ec1d6c29b8669aae2624cfa355e","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.3.2.tgz","fileCount":4,"integrity":"sha512-qNCjOIjPiCoa+f/Yw0ekcF6TYZmRzzyBwFl90jWvaFnBEIuhWfA1J8XQP0vzxSN24F9oACDnijsM7REE/MR27A==","signatures":[{"sig":"MEYCIQChEbxmT9uyQR/X7Tbg+OIErcDGBF5NLAjARnFVnMyweQIhAOByOTZXW+bHl100ZkcxDhX8w6S8ccagrpLpuC5gZonB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9320},"main":"lib/fsd.js","scripts":{"build":"babel -d lib src","prepublish":"npm run build"},"_npmUser":{"name":"liangxingchen","email":"liang@maichong.it"},"repository":{"url":"https://github.com/maichong/fsd/tree/master/packages/fsd","type":"git"},"_npmVersion":"5.5.1","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"8.9.1","dependencies":{"debug":"^3.1.0","slash":"^1.0.0","is-stream":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"babel-cli":"^6.26.0","babel-preset-env":"^1.6.1","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-flow-strip-types":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/fsd_0.3.2_1519475109064_0.01660907739586781","host":"s3://npm-registry-packages"}},"0.4.0":{"name":"fsd","version":"0.4.0","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@maichong.it"},"license":"MIT","_id":"fsd@0.4.0","maintainers":[{"name":"liangxingchen","email":"liang@maichong.it"}],"dist":{"shasum":"63a0e507c37f9b76275c72204198354dcb558afe","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.4.0.tgz","fileCount":6,"integrity":"sha512-kHwfA8R0h76BJ5wmKEsv4LuSXY7yMmJcq4vRSzgxoKPGpDVRrXVoC281kv6SoslFILM05qFLPu/o36gpdh+Yww==","signatures":[{"sig":"MEYCIQDuU1j4cBUsDC9M184SdVlxI5EqzuRDzqPt/Q2c6qXKZAIhAMTx6OnNHiQqpzvAGgxApYMhv9FOaOkiOcz/lEbmFvDS","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13265,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb2X7ACRA9TVsSAnZWagAAs80P/1lrKq16trgdrnbtBFEQ\n1H/hcEofLY0oWkr9sr+03+VYuZySn/tEgydGqsaA7Mr8DEF7k+B0JEPY3UVI\nzzR9+yk4rwJeE+AsM0okUQfHqbpHEVa4s64nMIfZ7EdJ9BKmKDuZwDJbf+zs\nBOPgr0uw2pvB0LdGFgZEdK/k0gvgkhoJeq8Mpsyk4wmrCMozfrpnHzCDCxQM\nE4NKDzV3fAf1X8DycZCkWQkVNvdHae03glxb5tkGRGCF88r3V/9gxo9YiguC\nBlCjI11IRInPQ6L1eoUcKxxHUWIX5s2mhV9biTqdNF4oRcq42SDBeANDLZ9R\nRIZIhm6p2Ey+4Qb8yPT59hibDDRnjq3nW0FClKpO+zhcQ4kTB1AHcWGzLBJt\nRJMNkhukbbEbk3mshyw2ei5TMsTD8fPlh67aFYDr7tcWOV1aEzsijP7WHBMb\njE54o6gcF1PNMsoETbW1Za0pX1zOdj5y4eU/xxg/cE94MOI9j1KfwWDKREsK\nB1qTvP8fyty40iWNr15PfKBEmTDsuDGcb8X5sf/ybadtUrTqT/lLy+pklNhJ\nElGafV35AB4UO8JC1S8TmNHyi9lFi4SZfqJXpiJz/kw7QpVMp/4nZQaxNHiK\nuOcgpdgIvdonKiAUZHnDCdzIfH8JIdOyQyzJ+HjpUrSrUR2DVYvvVLmvj36t\nMfn8\r\n=cAY7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/fsd.js","types":"index.d.ts","scripts":{"build":"tsc","prepublish":"npm run build"},"_npmUser":{"name":"liangxingchen","email":"liang@maichong.it"},"repository":{"url":"https://github.com/maichong/fsd/tree/master/packages/fsd","type":"git"},"_npmVersion":"5.6.0","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"8.11.3","dependencies":{"debug":"^4.1.0","slash":"^2.0.0","is-stream":"^1.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fsd_0.4.0_1540980415949_0.8673595547572697","host":"s3://npm-registry-packages"}},"0.4.1":{"name":"fsd","version":"0.4.1","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@maichong.it"},"license":"MIT","_id":"fsd@0.4.1","maintainers":[{"name":"liangxingchen","email":"liang@maichong.it"}],"dist":{"shasum":"87d9b1d8618092a3d57474776f55022221ac00d8","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.4.1.tgz","fileCount":7,"integrity":"sha512-Q+iX1ZEmteYWKwFWuMU2vyJ5Vy6/qwdd97HSizwp5TfBFkfAMLD2g+wSVJG+jb39lqZzuohFQVxlIe3nTOJ5wQ==","signatures":[{"sig":"MEQCIBHobBnUKMplCAFWbVzbZ2LFhDxKiTUSpj5azWj4TKUMAiBk5rhbcbOlpZvMpzondMzu1Ji6MVXli+N3m+NyHEUVCQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14567,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb4p07CRA9TVsSAnZWagAAMA0P/A0qUIt/3Rvp8MCn4ASf\ndAJjmaxKy5XJFIugTIg+afp0CUgvXcMeRv9uFLo7I2XbUisujOyqVGs0NNxJ\n1udvCrs9UM3CWjrM6JqmVKFOZPZQIUaqhGW3Id7Wbv9H1a7cKWEUn2F2X2Zb\n04Sl7WcVQS3DXHacZipeYxt1WhoSDjXfGAe+WCcEEi84ZfYUaJPF8fCOitG3\nl32DxHULuT5D7NMxfKj05rdvojIpu8AkEzBLCpW6W1FyCL47Jja3M+O4apsD\nR+VNmMfYgg4923tc2nryoLdk95JH1pMDQI29Cl+99gn9OSTrOFrP6hU5CZDh\nXf818kiRweJzhYDbS+kgRIdG2ChZTIdI3xNr5OewK4PyPYxCesPesCCTSRb/\n38rDxgQc7NzMTy7PoySsy3frVjjyad4QvLvYGqBb3oW33ogMXMceHXmWZPLw\nKl5tZrZoQTN4Y22y6SfsHbgBtKKzDSAXiFmUe6xh1SjnNbQLv2F+FUaVQZoP\nxMn8Yi9i/RJi2L6LgvN/P+vTOMd5XQd92SqK9nUbTRzlPcP2jjPrkBzXqU0f\nbp6ohYl6I7kXEsMpN9vAoeMkZBYkboJSH9im8qewG+homtyj11oOQ3Q29uHY\nFW1o8lnGUICH9OdklJr02p1WdQkU1qiCqqYXyGRt4nc//xc0/ATv80WfBAVh\nwRGS\r\n=zDaY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/fsd.js","types":"index.d.ts","gitHead":"f682ba1512a38c8095ec2d13f8ed99411f877f77","scripts":{"build":"tsc","prepublish":"npm run build"},"_npmUser":{"name":"liangxingchen","email":"liang@maichong.it"},"repository":{"url":"https://github.com/maichong/fsd/tree/master/packages/fsd","type":"git"},"_npmVersion":"5.6.0","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"8.11.3","dependencies":{"debug":"^4.1.0","slash":"^2.0.0","is-stream":"^1.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fsd_0.4.1_1541578042905_0.03198606155695738","host":"s3://npm-registry-packages"}},"0.4.2":{"name":"fsd","version":"0.4.2","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@maichong.it"},"license":"MIT","_id":"fsd@0.4.2","maintainers":[{"name":"liangxingchen","email":"liang@maichong.it"}],"dist":{"shasum":"7d16eff002d6da970761a8f03ce5ce2367fce342","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.4.2.tgz","fileCount":7,"integrity":"sha512-42OpPLSEfSpKLVMu5oURfijd+5tqxtVaHcLSeT9xOK2V8EFjJ4kA7qOfkUtV/LHXWy+tC6LxTPB3TWBdsl7xFw==","signatures":[{"sig":"MEUCIQCHURMZOchtyweic6Fow9v0dSi4tUNJio0hu2yzKyILEQIgYtt8XO5ISEnWgzPyo7ukcG/kAtoBkt6KQrPvOHpjS2A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14567,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcbo1HCRA9TVsSAnZWagAA15UP/iEtlXek6pR5VBhxdJql\nHgAcCXSm1qPq6XX+xOS5IVlesWZ3MQZs57uIwtP/AUKcVPh7feo56fIaNQ7y\nVIS78XBsyZFfzX1v4t1AJWuBWtGF/3o9B1xnaCMAE9Q8Igi6VaiPPtH5qrDI\neGU4EiLpFCXwljHEqPrMIOJWQfwifFOQoMugoxvvIupjJZx2hFgOOkpcnEPi\n5EVITKn2vrYFexk4Ysa3Igpg5hMahKVJmQiH6qMM0oAJu1fSuymIKr19yWTo\nVkySda7XLhoytfabO8Xnb3T3yEvUwqHQXZ40r5GANTzDWVjY3FrEMzDBlHFC\ncYr5EkRYPGkncba9nfBfLyVCw9AI0EGA1dgpNKbFN95h6A3DoSQ5+P1Fpnrf\nHr1OOu1zn/EOgb2w8w9Sa5icdAdSRGwLhD2djdfFH2j/HzFmg1U4vkQUKf8O\nfKBfU5H5Wzp+lZ/AUgdHUD4VWRPVlaFp9tP708safD+xawOEC289NwMn6OMu\nR29DrbHHcqI61GXl+m0Uc5UdC4lks2IXoxhbtGCPdIdowzF9JSt48A7cRDLR\nrjjdOB0CbjLK/GnhAs81Il7CKoHUl+AqOiPmt4SvueuE4y5Ct8gQ0o26V29W\nESgO0YMq504tBBfoJcaps/SxLlxnYNLEyfOimBj1JOCzMSUfVBU3XuPz7dEz\n9BKd\r\n=pn16\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/fsd.js","types":"index.d.ts","gitHead":"e2ed9e3e731a6d4904fe41ff3fada90129c0d3a5","scripts":{"build":"tsc","prepublish":"npm run build"},"_npmUser":{"name":"liangxingchen","email":"liang@maichong.it"},"repository":{"url":"https://github.com/maichong/fsd/tree/master/packages/fsd","type":"git"},"_npmVersion":"lerna/3.13.0/node@v10.14.1+x64 (darwin)","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"10.14.1","dependencies":{"debug":"^4.1.1","slash":"^2.0.0","is-stream":"^1.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fsd_0.4.2_1550748998395_0.9473613143432884","host":"s3://npm-registry-packages"}},"0.5.0":{"name":"fsd","version":"0.5.0","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@maichong.it"},"license":"MIT","_id":"fsd@0.5.0","maintainers":[{"name":"liangxingchen","email":"liang@maichong.it"}],"dist":{"shasum":"ea44719682f10bfa64fd601b7dfe2520f9cdf6bf","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.5.0.tgz","fileCount":7,"integrity":"sha512-oi+zOfhNW+FvULO1eZaYRJydZ3ENW7OqrutZj7LqqYozvC2cYB+S0NEUNnc4q354PK3ipvHtfTIIK0C0NRZdsg==","signatures":[{"sig":"MEUCICLNQA0nbkqmHS9RPrr7tuMifWLcSOgOllVPIo4Nq7FAAiEAy1pViAQq6sEQN2iCSmiDxnZtm6l2GfNB3BNZdfeN8vs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdXjq1CRA9TVsSAnZWagAAeJ0QAIgcZzWnaKVTh6GVfKPk\naYo/GRvx66UYpdb7aDgmcVdlm74D7wJECAe+0pcgOMgNaK/xh5fvX4sUh8Bs\nJS0uq4vo7X24JAmrv75/dP6kTXljwcI4HUym0UAueQCYnBMAhieaLkqi/fpG\nQyC4VQXh/OoqQo78S/4iUB3qyTVIIu5KW49jluuFGUODnGSSc1visITeH4Lv\nwyWNs/xuhkLmYWg2Zk2tV4GzoDJQLf5znbS+Pa97pH2SRJHyPG4PQDPHCMol\nFykd4EFUBT+3Ce7YW7bmDfOx52nFJN88PnPRUx7UN7O23xNSvjP7VJF9+2eI\ngXIUcN5ZqvuoESYLLwIE8z+0S0jl3PakdsEjZbWTlOqUOpIGcNhsgP6HFFqq\njkYmylA89PkFdldYupgXvs4fE6XpMAHDL1vqgauvuqFdVYktRAePDov65Yvk\n+1GcqrXnl0ybnlOY3nG4HJPXoNiBHHbW8R5RooahYXDw7Im/K/6ZrUM89JJ4\nP2QzZ3LQ8v75Et7lctB676EkO9zkvlHyEX8jYccIiNRyBfIm4QrYNZSv4ipr\nq7mzr9aC6cSzS3XUlS/CSnpnPfzcKetD+tjxy4HdnpG6zBCJKcb1UUgAqSaR\npMeuNnucV7Mqa1SN1Ti2x3KRoYVkwcYEvD6BznID4epVKzNLQ5i38b4BZTOh\n7siB\r\n=zmXP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/fsd.js","types":"index.d.ts","gitHead":"44463f1a894d9e0ed68c6353d20e3b2adc5d2f26","scripts":{"build":"tsc","prepublish":"npm run build"},"_npmUser":{"name":"liangxingchen","email":"liang@maichong.it"},"repository":{"url":"https://github.com/maichong/fsd/tree/master/packages/fsd","type":"git"},"_npmVersion":"lerna/3.16.4/node@v12.8.1+x64 (darwin)","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"12.8.1","dependencies":{"debug":"^4.1.1","slash":"^3.0.0","is-stream":"^2.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fsd_0.5.0_1566456501175_0.060139406417726304","host":"s3://npm-registry-packages"}},"0.5.1":{"name":"fsd","version":"0.5.1","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@maichong.it"},"license":"MIT","_id":"fsd@0.5.1","maintainers":[{"name":"liangxingchen","email":"liang@maichong.it"}],"dist":{"shasum":"39e292ae36dba190ba2459a10dc55aeba9ef52bd","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.5.1.tgz","fileCount":7,"integrity":"sha512-idEQ2Hvbm04+T2Q6TJ8gw+hCitiUnAX6nB9m+pJg8tMDCCEov+yC2g1zettsqu92zptMhqTVRgU4Mg24TwPP/g==","signatures":[{"sig":"MEYCIQCMrM8R+ZEAZJtHat5pnCTOmDznxCk6NIv7Tz1Lxkq/AAIhAIJhezUkzdQOi7RNIDhTqqKjjEkLRi3bceCOTZvz8YES","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15867,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdX2/PCRA9TVsSAnZWagAAqfEP/38qRa4BG93R+QVHSI0G\nGwOILs3x48hSwzzsmWNgtFUHazlM1SwoWHRYZYMxlxV7n5RbzVOR1zYmXSAz\nNVDPDVvH4jMb4N0NnSOgVYCqsDnHNOoygNR1vAWtc/6gx4X16iN+h5ZBfK8n\nxCWHXBv5ASN5xqx9Qiwe/M3yemtnyQcK5zAQetdZ8nswlMupIcCazOg0qc/L\nzwyKKq1+1spMv3XlFfRBstYbVrVArp0tsh+U9ORV9/ugDufAIGu818yBE/GC\nd5PDYZS/Cq6JFZ0mcMO1AnQaRz9DuxhjRd1Kx8tIlfhGpKnSAnQa+qFRy0lT\nzKA7fdm5wiBUVJxb5OdLdQ/08hxjDPkuFlzSohjZywlHV1xPZQeBERe0rhlU\nFKPlEgl4CE58oyLyTJWwjtMV7n2sh/f0P1XJUw+AGwrvttQPJz2Iluv5U7M2\n50GL41PQTMgK2RoCfXm5wi7J31gaHM60n79FWkkUB4wAk4SXV4w10zJcJXFp\nq1agsRpsrcOBCf7cWb275R7MJk3qmKwGgxgBAQfZdeqCjGuvs28f4jCDpXZL\nfkqi9ycaXCZ8OlAJieLCmEXqh4NK2VuDnCknjgVLV6MUPwEXxSd2AW+IxkO0\nHShzg7+oKzn4qVKKIVl9rARD/AFKrAsYFSDKVsOfcupvvnFjPFcbIPOc4icp\nyzNd\r\n=MBQR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/fsd.js","types":"index.d.ts","gitHead":"11825434f602d198b2294240a0e8b0712a7bcd72","scripts":{"build":"tsc","prepublish":"npm run build"},"_npmUser":{"name":"liangxingchen","email":"liang@maichong.it"},"repository":{"url":"https://github.com/maichong/fsd/tree/master/packages/fsd","type":"git"},"_npmVersion":"lerna/3.16.4/node@v12.8.1+x64 (darwin)","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"12.8.1","dependencies":{"debug":"^4.1.1","slash":"^3.0.0","is-stream":"^2.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fsd_0.5.1_1566535631207_0.21385568374363784","host":"s3://npm-registry-packages"}},"0.6.0":{"name":"fsd","version":"0.6.0","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@maichong.it"},"license":"MIT","_id":"fsd@0.6.0","maintainers":[{"name":"liangxingchen","email":"liang@maichong.it"}],"dist":{"shasum":"a6c4a95a83a8553313ea96ed2f045632eb9e0d4f","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.6.0.tgz","fileCount":7,"integrity":"sha512-cN7PAArKMcvmYQJ+fmj4rorhkbY3erOnQ2meDnuWAPIPtGLYU4Cw0nlYhNjKBHVbZkDvw1i5wdGN+xycsM4r6A==","signatures":[{"sig":"MEUCIQCsh3Uqd9nq1dAvbIcN1vtSoJe8y2HXQOm9lZf/2153rwIgdwoBY/KDRwbOfONp4kybwBTsnWkH1n4B2UjRQF5VJHo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16152,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbxt8CRA9TVsSAnZWagAAU7EP/2x9cOEAHEoB39fgQakU\nH9XlvbUQVP4XOkGyJgG83eWC6aWeq6UFnS66VpAJkDb5G7Cmr31eE91YP4R8\nRXJx8s89L5MZRKGwH3xp9kmnu8OrG/09Rb6crulOkOaVPGhVv98xSFTTtsn9\nR7oPUs7mViqW+b9FclD4X67fexBBHqhDthBkztUPKW10Q5sFq81e7uwbUT0I\nPmi1Peh/Q1LV9vdydra6ofY1EAxG/P8d2+93QHzw6OCxgHp63u+ur1Bn8R17\niOhonGaf1YqT0t1nMSDYgza6hh7VS1xHp/X2d6V81nZBchWtbYz5B5iMkDSw\nRWFGndckyS9yuLNFrds491GSLYs2G+UQJfCjKXL3jmcgMQe1JTQXM0xaEtWP\nXn02yJnnExSC7z8YL/dxmjvRFrMcjGT+IxwREijEXcGbvbIXdpjQ4fRx/8Ps\niK1RbnG9Y+Sw+8zalxwokhPgDg+S81aFp86w9S83JYt3EpLzD/tqd6fhDSKH\ntLF39yOGAVHZP3vc5EYwIluL+a4NbfmPc9DGhxms4z3gpwwrFox7GlyFNYTj\n2SXk465VCVKIJVjiJCDWGqLMy9lKi5W8TmWbgs1b49Fx2SMr5tnaAuueWBAe\n5PiLT3pNF5wRatUl5UcnWhafTj19CoA03PsKhkg8duLwI9KsZqIcRPTGV11R\nE6ev\r\n=SRm/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/fsd.js","types":"index.d.ts","gitHead":"f0feb4c14fadcb06d78e90062ab993a816334fee","scripts":{"build":"tsc","prepublish":"npm run build"},"_npmUser":{"name":"liangxingchen","email":"liang@maichong.it"},"repository":{"url":"https://github.com/maichong/fsd/tree/master/packages/fsd","type":"git"},"_npmVersion":"lerna/3.16.4/node@v12.8.1+x64 (darwin)","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"12.8.1","dependencies":{"debug":"^4.1.1","slash":"^3.0.0","is-stream":"^2.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fsd_0.6.0_1567562619896_0.42317925215263097","host":"s3://npm-registry-packages"}},"0.7.0":{"name":"fsd","version":"0.7.0","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@maichong.it"},"license":"MIT","_id":"fsd@0.7.0","maintainers":[{"name":"liangxingchen","email":"liang@maichong.it"}],"dist":{"shasum":"dd4bd8d8550dd45fe6ec5623e4efc0ed3bfe1ad6","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.7.0.tgz","fileCount":7,"integrity":"sha512-+njH/zG9Us0yBC4fwmncGYDIGVgR+68D93ZGaBt7vQIm6DNxkChOA4izBYQQmCdOJ6o1VF103KMsBWZkZTqIbw==","signatures":[{"sig":"MEYCIQCmH4ksmTQUTvEKQyTU4DzYLiDvSsS0cRMBO4F7K76hHQIhAIwrFbIX6gs3a/RJ41+XYYw2b+WYXUtoPMsmQeSx3wGm","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJelC3XCRA9TVsSAnZWagAAmCIP/0OXirZOsvIq7JlofYV8\nfcbksyE7F+bV17XG0FFdy8BuXPYiNcjnBW38Ei8MGzwVpoHjoU09BX7k7/dU\neqV/PKjSwrD6t/tNyC6pJd4kNFSJqxZ2uAbLBVZRXsoL76A1QnIGUKZXdSl+\nTOmg5758oMfd7sD8I/axkhSEpicHnVECE3cK4ntGC0HwRkUIyK5DsaamFgki\nBSJ0O7pkMDH2ZTaTPQqWWLNqtQII3fhPRz2FkzFsqZrO5TUoyxxsTevgKVYv\nc1wYGicIaU6dnX08HUyUbqRqnHDDmASqu/QW2x1zzQMDrHyEH4GP/GELaLqQ\noWS71Bhw43TGlsZeFbr6wzuGJ2B2q4daDZdMM5Y/Txbsb2TRsASDYrCMzcJl\nMko5ZnJYtCuesYk09qguPFkKQjFBizEiOUt9qKt8q4YaJHCE1f0UCgZPTuNf\nM0x7nFTshm8m8Bc6IyAfgVP5Zb8FqQAnfPLA4cPEfH5vZGUWVrEO58rhJmgW\nAuSZCmMcce9jdkJOiXpD1FP5O+HY4cRK+TYwl0mXwxfjA0d+36BNyI9b0Fl7\nZpYzuQ7nvd3GVAia7req+t/y4ZdK4wHo1x1aNDDkKjqni+aYFt/83+eBc9Ta\nhfR+ieQhbHNgqQxXN4u6ArYqsW6bTRn3v4akl+CkbynNCGmKjT/rfNJC+xUG\nFpZo\r\n=ZKMj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/fsd.js","types":"index.d.ts","gitHead":"409815653c869e47721791cb7ab65f3a7056eafa","scripts":{"build":"tsc","prepublish":"npm run build"},"_npmUser":{"name":"liangxingchen","email":"liang@maichong.it"},"repository":{"url":"https://github.com/maichong/fsd/tree/master/packages/fsd","type":"git"},"_npmVersion":"lerna/3.20.2/node@v12.8.1+x64 (darwin)","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"12.8.1","dependencies":{"debug":"^4.1.1","slash":"^3.0.0","is-stream":"^2.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fsd_0.7.0_1586769366614_0.5817799018857739","host":"s3://npm-registry-packages"}},"0.7.1":{"name":"fsd","version":"0.7.1","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@maichong.it"},"license":"MIT","_id":"fsd@0.7.1","maintainers":[{"name":"liangxingchen","email":"liang@maichong.it"}],"dist":{"shasum":"55dd34bb6939103f81599f2b56a84a70b02f1799","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.7.1.tgz","fileCount":7,"integrity":"sha512-PgbkBdtQdhs6z4GtvD8vU7qqWqsPg2hvCtmeStfD5LlEEtaAIv+oC7DVlrF6VyoGBco0PHBp9OkWpYmEJ72QrQ==","signatures":[{"sig":"MEYCIQCdEBtPIqJMmCuvD1SYUKJsddBxGLcydaSn0gR/MRWfbwIhANQp7esEk7q6D7CsBRzx6CRy2aG5odL9lWhBh0h/tZJi","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16425,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxaZtCRA9TVsSAnZWagAAJWQP/24sDweYPqR2vd1IVhc1\n2yshiTUY9dOa25MlRhsBQ9YLpB/SifbLD5Q/fatxlPBLIZvJXEEWeK8hx+V5\nYiBk0vCYp2YWDduShRoVFpgPsiNCpJierhsjVTGLCXjtmoOdDRnI29Pg+v7/\nDAQF0N4uWeh1ddprPxnqVs+Hkq9L2a3FSJMxu0t9mQlx20nQhGAcrFdUb/Ih\ng1rh45AzOmEVu9vxzCc9wi93FY5FrDb8E8Uat07WztBfP9DT0vA71q6BLW0Q\nDFltewFsA9Hz+uugwIerUw/zLcvtKxLeNlTXcFhLsbKxApup+kWn4w6qffie\nTqhH0tJ4lDbqbKXUYiijH3rwo29XAs5Q0MKFdrx9nrroYjcBxDmQRyfDzPIP\na3VCF0+3QcVI+8Wep47jQMjbjEdY838qpuM0gbfYrlPwbjnapIb5HbgX/3pW\nk1i9ciAfHTn29VPRw+uC26h6ZsCODHY310HWd7g/hnGic2n4/AGYPI6CsTXo\nNbLAPk39fhwdUMkVwCb0kcj2pVlIURcbnZsD3sP1NzGg2yB64tMg3CPrKVyo\noi74t1XHsog058PVvUqydyMbq67OoziVdDclEvo8LxyTmgIuTUD/hbHYf3iI\nMNYhbLueUB5LK4zArzLcq7OauF0mUMr6EPHFy7/RLOSghd4+Di8mngQz1lnA\nWrR/\r\n=vrIH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/fsd.js","types":"index.d.ts","gitHead":"867c73a70c5140405c9fa89c9ab423f575096854","scripts":{"build":"tsc","prepublish":"npm run build"},"_npmUser":{"name":"liangxingchen","email":"liang@maichong.it"},"repository":{"url":"https://github.com/maichong/fsd/tree/master/packages/fsd","type":"git"},"_npmVersion":"lerna/3.22.1/node@v14.15.0+x64 (darwin)","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"14.15.0","dependencies":{"debug":"^4.3.1","slash":"^3.0.0","is-stream":"^2.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fsd_0.7.1_1606788716765_0.8955303628248361","host":"s3://npm-registry-packages"}},"0.8.0":{"name":"fsd","version":"0.8.0","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@maichong.it"},"license":"MIT","_id":"fsd@0.8.0","maintainers":[{"name":"liangxingchen","email":"liang@maichong.it"}],"dist":{"shasum":"38b70152e8317938e014e10fdba990f510d503a9","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.8.0.tgz","fileCount":6,"integrity":"sha512-M9m0t8r67SUaFw7H/jF02Tq8+pnKdz8lbOVFRSRGeao1/CIMFfoIAt4TIAN2Qy/897E8AC3V+RHR8FBWfnjgmQ==","signatures":[{"sig":"MEUCIBd2E0chiSIHeEQRFShwRzs1IkiJucrulj0Xhl5znmbWAiEA//I00S7eEo3KQ29tipotV1FQxKcZRcxU9nA5Q/rJ4sU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16006,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgijmVCRA9TVsSAnZWagAAZ00P/2V7ftYK1kB+zXLGdir2\nX4OMX4n0SaJiwySTtqHcNvW0qTK9WMge5HNziGX3JcPd4ETq2OWwltDLou4/\neeXEw6esb+jneohvVb/eGoiVwzEuUVcN9rIsgWMCp6Yms/HV1e44nfPZ/Bqd\nsc0qK96B3cYMtLgE9q51GYaUVeyt8eGHhSCXJngPQ3s+8xm1UPbjFWwxhDrB\n4pmIwB289UFa4mbE+8EScetiYNTkqVR5jVuTN6lofchfsC/SWPp4rgJl+nAz\n9lo5GPFU/HqPM+sV5+Dao9Z+/CUJ3kf84TeK3mVDldBqvrBqnr6bWgfu06AU\niTOp86Itlj+vnBIip78XuXByCcMRkdnWRbSaehtZqirdwxst+5DeY3mL5Vqq\nCe2fT9fjLVT51ZdRB5+EBRY0USj5N4KYPVHza5GP24mhM5G6AXn+5KG8H24H\nBoGTjm6ggrgRE0DOF0zo/v5bUVmiYmsM0DHF7Fa3aHzPX+yEvJmDPwcF9UwH\nIS7S+h8WVWScltHk/EH0mdR4EYiG5pHPKkusD/DC+0Y6hmvqZrunf55bP1T3\nuFILDQVkh/5OyCRggwgT/l4FNKHJ1UXkHIi3QsIV6h16ycBq8AFQ3hMs3zEK\nt0cCqLXcH0uvZnOjCNCyNM/B+jV8xje28F/p7m31gCHKgykNvzr1AmVdNr2C\np/6C\r\n=8vDJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/fsd.js","types":"index.d.ts","gitHead":"a0f1d835cfe78d4d9833808c8236bf61488b50f6","scripts":{"build":"tsc","prepublish":"npm run build"},"_npmUser":{"name":"liangxingchen","email":"liang@maichong.it"},"repository":{"url":"https://github.com/maichong/fsd/tree/master/packages/fsd","type":"git"},"_npmVersion":"lerna/4.0.0/node@v14.15.0+x64 (darwin)","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"14.15.0","dependencies":{"debug":"^4.3.1","slash":"^3.0.0","is-stream":"^2.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fsd_0.8.0_1619671445449_0.9681134794650677","host":"s3://npm-registry-packages"}},"0.9.0":{"name":"fsd","version":"0.9.0","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@maichong.it"},"license":"MIT","_id":"fsd@0.9.0","maintainers":[{"name":"liangxingchen","email":"liang@maichong.it"}],"dist":{"shasum":"2d405f8f9c77a9ede996deac7fe4aabb2ed5075b","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.9.0.tgz","fileCount":6,"integrity":"sha512-MwPTpTZNM7CNa0G7DZgIL0LvRokgZFgJGE1s2lP+sjvJOOKPo0RaWuZ+r21Wwur6aIY4obXf0yNvsC2glnm9nw==","signatures":[{"sig":"MEUCIDFv/zyznbgk/S1KP+/Koelqdc2yGlZifEbUVAErzmjfAiEA3dniuWKIbo+1qo4rRi7rzbTe4Tfj2ZKUrByw4Fhy4u8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16079,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAV+7CRA9TVsSAnZWagAAvzYQAJE5Hfh1NnE2cqs8f0Xt\nKG7mC+6CXi7sN4ZX+NKv+J5otq78adawFdtJeslaMTIuN5WOJZa/NDz9Yyzf\nBjJ045joY8mYl+B2Ywry54aHlua1kMdiuT127IG8ztc2XeGxxn2rUkw//1YU\ngUguZrQE4ou1Tp3edmVfp5tXwGWr00OsrEhBiNLG4T5UlmTCyhpZUdifZcjW\nS/A5tu0OPBv0+xSD6OvmdnItgz2iIQSY7YNiRhB3BHpCQm7L/NY+q9auSdqB\nm2JRdeQwg03v3aA94v4KI4N1pF8jxHu5be2o8HU+rxZ76EeBxXo0SPeJ+qCO\nNzRb6y9zM2zB2Rhwk+mooA1Bxdzf3VcWYcTkwRUCHkZn8caHv0AEWw1KrpSL\n/0ve05Q5nSKqx5sH3YbBp8sjqaEcnJU35gQmVfBkqTWyVhs0i5svec3x/vZy\nIDdJjjpuPLTysRjL4N9LOj4/ZhvDvVudxbFRAD3W2nfzL7wpLY4n8H8LIPiJ\nzQroDeYBRB2bB9gQ4pzfOrqi6h6XxI30rtqaF5UVxV7lRYBQFh3z9j9YOAVP\nd5Hdv3S6yYABsnnRw8qx9IKGPEKxXTddiKAC0yfFyC7Jl5UxFDBrJZLNNlBS\nxz9HM9zlfGPl1yyv3sbCyXqdXmJXSzUjiqswCPSh6lDusfDhcrXB0Awsf9mN\nP1Uk\r\n=m27m\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/fsd.js","types":"index.d.ts","gitHead":"1803b2521d07819f8ae55d8ba39c847512061772","scripts":{"build":"tsc","prepublish":"npm run build"},"_npmUser":{"name":"liangxingchen","email":"liang@maichong.it"},"repository":{"url":"https://github.com/maichong/fsd/tree/master/packages/fsd","type":"git"},"_npmVersion":"lerna/4.0.0/node@v14.15.0+x64 (darwin)","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"14.15.0","dependencies":{"debug":"^4.3.2","slash":"^3.0.0","is-stream":"^2.0.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fsd_0.9.0_1627479995245_0.32321013211150995","host":"s3://npm-registry-packages"}},"0.10.0":{"name":"fsd","version":"0.10.0","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@miaomo.cc"},"license":"MIT","_id":"fsd@0.10.0","maintainers":[{"name":"liangxingchen","email":"liang@miaomo.cc"}],"dist":{"shasum":"b92907509ea096676e3aabdf4f93d7703d842d34","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.10.0.tgz","fileCount":6,"integrity":"sha512-LkNhT4AxURYvrn6hF8cKKoEsDRrlzBruvFrigbdxeoobw6hWPhcWwfdhra3x/yqMUAdNbdOpG3xWeYR4Hq+GPQ==","signatures":[{"sig":"MEYCIQD2i28i7QLHbPVPFJtrAU0he+rYyECo86gj1lo//JFApAIhAM4vunB7RadKwMDcUvKBIkh/NZr3dEcUokTUqzqjAxe0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16089,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQ/98ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrtQg//QJGfN3zS2QEWd6qCaZzZo+lwGh79/rNgZDRrapn0r47MHe/t\r\nmDcccS4yylw9udmABa4NmwIm+vyJ9oQCpUC+mpotKeKKv2LphgjwCKoeaNuB\r\nz0MsgUYcxqy1lv9sqM0suTEzEWJkdos9Rxo2ap34Wz9nZrTNSUDTpRW1g7nl\r\nWRrOiREVzo0AhgJ4DqzgTzxuBtk+zYww+tnFwFpE86h+2iRncrEAWWrJnMWg\r\n1BZ5/ewytynEDgb4/uxJdnUCwPcdqnivK6kUzMRHjmvoZi+Uh0eHYxt8u2/f\r\nAhg1A86VL9qd00KrSIAMKS8yLusqRDp11lYyvxd07Z/u59kyjFb0HY/YGn3T\r\nQVOBts9+VzukJ0bOMIc4dv/nlPKdpHNDwv20Kk0R5WA7KTAx0dCUJ7A2H0rU\r\n8RobFDLIkRSfvRHHeEyCifMQRZlkEke4IFoEqVoohxNoh4Zugwl9PV3KcwBF\r\nrzCvoCgWBKNAIRpBsBasrBRyjqEl+ztkWFABhZJL9ekvLWYgz5PWfC0HFUyc\r\nFxxfd8iKWzHwCW4/YNReo8isUQyWsNyprbvRT769X5RmR8WNNlaVS8rn8I7R\r\n9wTgUUtXpi4t0u1qK/stXnPokS7zRAxJ1cdnH0gvtq0Obckb5mv4o4J+iM1S\r\nk586SatiRxYN1SqOSdFmHfz5JThWUIQtawY=\r\n=Hcav\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/fsd.js","types":"index.d.ts","gitHead":"9820fd7263b6791a38e5568396bfac0f2d3e37e9","scripts":{"build":"tsc","prepublish":"npm run build"},"_npmUser":{"name":"liangxingchen","email":"liang@miaomo.cc"},"repository":{"url":"https://github.com/liangxingchen/fsd/tree/master/packages/fsd","type":"git"},"_npmVersion":"lerna/4.0.0/node@v17.4.0+x64 (linux)","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"17.4.0","dependencies":{"debug":"^4.3.4","slash":"^3.0.0","is-stream":"^2.0.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fsd_0.10.0_1648623484330_0.7407938302218458","host":"s3://npm-registry-packages"}},"0.11.0":{"name":"fsd","version":"0.11.0","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@miaomo.cc"},"license":"MIT","_id":"fsd@0.11.0","maintainers":[{"name":"liangxingchen","email":"liang@miaomo.cc"}],"homepage":"https://github.com/liangxingchen/fsd/tree/master#readme","bugs":{"url":"https://github.com/liangxingchen/fsd/issues"},"dist":{"shasum":"49bfb2cad3b3fcc0fd7e9bfa405ce9005196e652","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.11.0.tgz","fileCount":6,"integrity":"sha512-uA+ubLjvs9iuOf25JvDdBA6FRl1luoL0WKh+U5FAxJw9UvBMY/9tCXVBwGsPJiEwfW6Doj92312OeJ59Vx/Bag==","signatures":[{"sig":"MEQCIG8S/KavupGIvOShKoXFcFyg3xrq0Co8Pd69LsoOqikqAiBhUDhnZpmUQ2f9s4WTVYekVEDgA3fRxys/iBrKFgkaUA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16089,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjwx/BACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpvLg/+IhKBUkK3WlB/RgrK/YFvxdmO2JYB+3f6H/gnoupeKofFuvfz\r\ns+3yJvqE3Asyl9kOJxSKvSIe0kVETzTiESPXYa/P5JncWTL59JHwEGTkSpn2\r\na4VwrRtv33dxK3+xXEiWFPh3DAz434InfZlFuD6lcEvrct9VeIZKUyAjKCYU\r\n9RSUeVtOaJczYdS2pGIZfYCml4vQla4KV8UJCLh051YHw01sjFFU4r8/nCzj\r\nq/RlPpYpn7jkNpQ99fewgUTUfNK90nSTuo66lbBluugIgtbmaa70A2mQfymG\r\nasoS87ycU9nRJImC/AtFVWQlAaJjOI4NVV/WHwZ3v05lhxV2WFPWCFR5F6Jf\r\neVy2rkw2SHe+b+9KCtrkm6k6PpBPjxs1M9/57Q/EdOkQkMB90foCjb/CxSkX\r\nFv1hjA4bMk2OTjyOpmwsxFYF1BNv+CJybjsFgsxt6eZVJcugwxfWAZFsYILm\r\nRNS4agP335rstu8ONgdn75V8NlhwfaK9gW6lwbMu3iLrN+E6Eh4dYPDpYpe/\r\n9Wyrl3hPF9s3ktnYLcB7+i9SmxRMvxh0Bm8Ry4E5yogfsz1G5r8gN9cDbPJO\r\nWqwWuGFVxIQLVqy7fCkGsYl/WH4t3kfp8INpRucn1dXvnVqJ226feL7IaP+Q\r\ngtsERNDtVsLKvjy5QavVAye9ZP2Ns3EQLZg=\r\n=7m5k\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/fsd.js","types":"index.d.ts","gitHead":"8d7862c11a96e4df36805d8b1acbb39aac5a4213","scripts":{"build":"tsc","prepublish":"npm run build"},"_npmUser":{"name":"liangxingchen","email":"liang@miaomo.cc"},"repository":{"url":"git+https://github.com/liangxingchen/fsd.git#master","type":"git"},"_npmVersion":"lerna/6.4.1/node@v18.12.1+x64 (linux)","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"18.12.1","dependencies":{"debug":"^4.3.4","slash":"^3.0.0","is-stream":"^2.0.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fsd_0.11.0_1673732033570_0.13759784599023384","host":"s3://npm-registry-packages"}},"0.12.0":{"name":"fsd","version":"0.12.0","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@miaomo.cc"},"license":"MIT","_id":"fsd@0.12.0","maintainers":[{"name":"liangxingchen","email":"liang@miaomo.cc"}],"homepage":"https://github.com/liangxingchen/fsd/tree/master#readme","bugs":{"url":"https://github.com/liangxingchen/fsd/issues"},"dist":{"shasum":"ff12964de383a49b3959555987abb63331e7b602","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.12.0.tgz","fileCount":6,"integrity":"sha512-Gh/XL8e1kOaQym7bggZBxHM1lBOIVLW62ZRxCf5JJG7B2tluKIlnv3YUjvQKCKwE6h6gVb1mcm5lCqSKKRQDiQ==","signatures":[{"sig":"MEQCIA3tVqIy4hq33casDtZnGNspfxSVEjoPq7Z42EoCB6tnAiBlSyrJBuc/j279tz+F9QreUbUsqUjhs8pen3Cd1Rg0aQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16256},"main":"lib/fsd.js","types":"index.d.ts","gitHead":"ad01afd0117496a9b857e566a404f0ececbd723d","scripts":{"build":"tsc","prepublish":"npm run build"},"_npmUser":{"name":"liangxingchen","email":"liang@miaomo.cc"},"repository":{"url":"git+https://github.com/liangxingchen/fsd.git#master","type":"git"},"_npmVersion":"lerna/6.6.2/node@v18.16.0+x64 (linux)","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"18.16.0","dependencies":{"debug":"^4.3.4","slash":"^3.0.0","is-stream":"^2.0.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fsd_0.12.0_1683525052986_0.6226682353090185","host":"s3://npm-registry-packages"}},"0.13.0":{"name":"fsd","version":"0.13.0","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@miaomo.cc"},"license":"MIT","_id":"fsd@0.13.0","maintainers":[{"name":"liangxingchen","email":"liang@miaomo.cn"}],"homepage":"https://github.com/liangxingchen/fsd/tree/master#readme","bugs":{"url":"https://github.com/liangxingchen/fsd/issues"},"dist":{"shasum":"a60a1e924ea2c003c817e9ab036b79947027ae07","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.13.0.tgz","fileCount":6,"integrity":"sha512-BAiza0YmXUMbRZc9UPVJj4R6CMlmLCCJ+ugvVrx5HyGo+6pPxCtqmR+ynyE53OwJIHULM+ckhgiY3drf4ungRQ==","signatures":[{"sig":"MEQCIFy1tsNKGTZ3HArCNL8Lg4JJ0y9h0WVPwWUuiBb9vt7eAiBfAUUtZSBexeyEsWaBeai+5HzEijJiJb+Hp9I7Lja0Ww==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18692},"main":"lib/fsd.js","types":"index.d.ts","gitHead":"1548128573c0fd22977706a6704029ec3ca3bab6","scripts":{"build":"tsc","prepublish":"npm run build"},"_npmUser":{"name":"liangxingchen","email":"liang@miaomo.cn"},"repository":{"url":"git+https://github.com/liangxingchen/fsd.git#master","type":"git"},"_npmVersion":"lerna/7.1.5/node@v18.17.0+x64 (linux)","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"18.17.0","dependencies":{"debug":"^4.3.4","slash":"^3.0.0","is-stream":"^2.0.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fsd_0.13.0_1691654651725_0.6742849105832249","host":"s3://npm-registry-packages"}},"0.13.1":{"name":"fsd","version":"0.13.1","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@miaomo.cc"},"license":"MIT","_id":"fsd@0.13.1","maintainers":[{"name":"liangxingchen","email":"liang@miaomo.cn"}],"homepage":"https://github.com/liangxingchen/fsd/tree/master#readme","bugs":{"url":"https://github.com/liangxingchen/fsd/issues"},"dist":{"shasum":"6528616f557f11d185cfbac3ea8a127e1589b4b3","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.13.1.tgz","fileCount":6,"integrity":"sha512-nRsbHL5DnZpgCJPXIDTqyGQKj7e4Cs0WGaZsIgx84m8YOvD9gk1YjFha/kYA4ET0yjyHzWJb3Jmxeyvmh+wFYA==","signatures":[{"sig":"MEYCIQCLIAaS+wyUVzb7tA+0M5Fr5SXyUKbDwRLA9a92AnoB8wIhAOi/q7/2y7f4I5Vht+xLLDz5X193C8iFKP2bvJhe1AkB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18692},"main":"lib/fsd.js","types":"index.d.ts","gitHead":"12ff02bfc634ba84c771ca433d33aae2dc881436","scripts":{"build":"tsc","prepublish":"npm run build"},"_npmUser":{"name":"liangxingchen","email":"liang@miaomo.cn"},"repository":{"url":"git+https://github.com/liangxingchen/fsd.git#master","type":"git"},"_npmVersion":"lerna/7.3.0/node@v20.8.0+x64 (linux)","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"20.8.0","dependencies":{"debug":"^4.3.4","slash":"^3.0.0","is-stream":"^2.0.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fsd_0.13.1_1696334088597_0.17636946454439606","host":"s3://npm-registry-packages"}},"0.14.0":{"name":"fsd","version":"0.14.0","author":"Liang <liang@miaomo.cc> (https://github.com/liangxingchen)","license":"MIT","_id":"fsd@0.14.0","maintainers":[{"name":"liangxingchen","email":"liang@miaomo.cn"}],"dist":{"shasum":"ce81c863a261c8b765ebcc2526638ce55a9401f5","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.14.0.tgz","fileCount":6,"integrity":"sha512-9oilYuhUTkkcKjUyks1ZEISvF/RqB2699Z2wImHSjBKDlsSo/gNQSZ0Cc9iW/F7N6pdp6eh6qxRwrzHoKrRF4w==","signatures":[{"sig":"MEYCIQD3QEhZM20om8smWG1zfaZNLTtR0WR0wGJoJwet8wR+HgIhAIfxdGC59L0ckPIbFYGNoCCGFPICJzBKTYNSRVmwpE+M","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18698},"main":"lib/fsd.js","types":"index.d.ts","gitHead":"74e32bf47242909f040eb6012dda56e5c5a668a0","scripts":{"build":"tsc","prepublish":"npm run build"},"_npmUser":{"name":"liangxingchen","email":"liang@miaomo.cn"},"repository":"https://github.com/liangxingchen/fsd/tree/master/packages/fsd","_npmVersion":"lerna/8.1.9/node@v22.12.0+x64 (linux)","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"22.12.0","dependencies":{"debug":"^4.4.0","slash":"^3.0.0","is-stream":"^2.0.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fsd_0.14.0_1733843087422_0.560057802316235","host":"s3://npm-registry-packages-npm-production"}},"0.14.1":{"name":"fsd","version":"0.14.1","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@miaomo.cc"},"license":"MIT","_id":"fsd@0.14.1","maintainers":[{"name":"liangxingchen","email":"liang@miaomo.cn"}],"homepage":"https://github.com/liangxingchen/fsd/tree/master#readme","bugs":{"url":"https://github.com/liangxingchen/fsd/issues"},"dist":{"shasum":"0b354a5e322159ccb9617302a7cc4f867dd55ca5","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.14.1.tgz","fileCount":5,"integrity":"sha512-c9ohvRHGz+LrqtkSGnfvUHjh1Dwb+52mU6JxT2TZWZ0WjqgxGRTDrMdGYKk6pI4T3IMp/EW4Y0CaznX/BVHZnw==","signatures":[{"sig":"MEYCIQCatpW6dDDd+YVRMq9XNuN9ql61PiVF9aPgz7lAf+/XYAIhAMQEIJVXdn1BFv5o+wJG4hG3hhP7/MqcsM8TyJ5inpDr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17872},"main":"lib/fsd.js","types":"index.d.ts","gitHead":"71e37bba79d5a886e04f0b0d59adad3b5538d0fb","scripts":{"build":"tsc","prepublish":"npm run build"},"_npmUser":{"name":"liangxingchen","email":"liang@miaomo.cn"},"repository":{"url":"git+https://github.com/liangxingchen/fsd.git#master","type":"git"},"_npmVersion":"10.9.0","description":"General file system driver for Node.js","directories":{},"_nodeVersion":"22.12.0","dependencies":{"debug":"^4.4.3","slash":"^3.0.0","is-stream":"^2.0.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fsd_0.14.1_1767312322942_0.5166167319507178","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"fsd","version":"0.15.0","description":"General file system driver for Node.js","main":"lib/fsd.js","types":"index.d.ts","scripts":{"build":"tsc","prepublish":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/liangxingchen/fsd.git#master"},"author":{"name":"Liang","email":"liang@miaomo.cn","url":"https://github.com/liangxingchen"},"license":"MIT","dependencies":{"debug":"^4.4.3","is-stream":"^2.0.1","slash":"^3.0.0"},"gitHead":"ea754919fb95b49deffd529b5c01c66da0dc08f9","_id":"fsd@0.15.0","bugs":{"url":"https://github.com/liangxingchen/fsd/issues"},"homepage":"https://github.com/liangxingchen/fsd/tree/master#readme","_nodeVersion":"22.12.0","_npmVersion":"lerna/9.0.3/node@v22.12.0+x64 (linux)","dist":{"integrity":"sha512-8HHRqObZ2Z7o2tqvq8jqZAYpHg1k+8XyDMBtcI9QhwFW3mLDN8Cb9ZjNHeUkSm9wwFs6haC6tIQcwRkEm4Hlpg==","shasum":"ffbcc49d741139341b405890280711dd96c5c800","tarball":"https://registry.npmjs.org/fsd/-/fsd-0.15.0.tgz","fileCount":6,"unpackedSize":62302,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDWb31/Bcmhw1BmoZ0P4HXWixT+4wIt4AGTKzNlHt6tqAIgJo4NUbnvOXCAtHNb05GtptgKXGipcP5E5x/QC9Llk9E="}]},"_npmUser":{"name":"liangxingchen","email":"liang@miaomo.cn"},"directories":{},"maintainers":[{"name":"liangxingchen","email":"liang@miaomo.cn"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/fsd_0.15.0_1768147365982_0.2906566963055581"},"_hasShrinkwrap":false}},"time":{"created":"2018-02-11T10:19:09.817Z","modified":"2026-01-11T16:02:46.659Z","0.1.0":"2018-02-11T10:19:09.863Z","0.2.0":"2018-02-12T11:37:28.900Z","0.2.1":"2018-02-23T05:58:43.153Z","0.2.3":"2018-02-23T08:30:19.122Z","0.2.4":"2018-02-23T08:38:32.421Z","0.2.5":"2018-02-23T08:57:22.343Z","0.3.0":"2018-02-23T12:20:46.958Z","0.3.1":"2018-02-24T01:09:55.171Z","0.3.2":"2018-02-24T12:25:09.223Z","0.4.0":"2018-10-31T10:06:56.154Z","0.4.1":"2018-11-07T08:07:23.086Z","0.4.2":"2019-02-21T11:36:38.553Z","0.5.0":"2019-08-22T06:48:21.278Z","0.5.1":"2019-08-23T04:47:11.343Z","0.6.0":"2019-09-04T02:03:39.997Z","0.7.0":"2020-04-13T09:16:06.760Z","0.7.1":"2020-12-01T02:11:56.890Z","0.8.0":"2021-04-29T04:44:05.604Z","0.9.0":"2021-07-28T13:46:35.371Z","0.10.0":"2022-03-30T06:58:04.459Z","0.11.0":"2023-01-14T21:33:53.795Z","0.12.0":"2023-05-08T05:50:53.122Z","0.13.0":"2023-08-10T08:04:11.952Z","0.13.1":"2023-10-03T11:54:48.746Z","0.14.0":"2024-12-10T15:04:47.665Z","0.14.1":"2026-01-02T00:05:23.088Z","0.15.0":"2026-01-11T16:02:46.128Z"},"bugs":{"url":"https://github.com/liangxingchen/fsd/issues"},"author":{"name":"Liang","email":"liang@miaomo.cn","url":"https://github.com/liangxingchen"},"license":"MIT","homepage":"https://github.com/liangxingchen/fsd/tree/master#readme","repository":{"type":"git","url":"git+https://github.com/liangxingchen/fsd.git#master"},"description":"General file system driver for Node.js","maintainers":[{"name":"liangxingchen","email":"liang@miaomo.cn"}],"readme":"# fsd\n\n通用文件系统驱动库 - 为 Node.js 提供统一的文件存储抽象层。\n\n[![npm version](https://badge.fury.io/js/fsd.svg)](https://www.npmjs.com/package/fsd)\n\n## 概述\n\nFSD (File System Driver) 是一个适配器模式的文件存储抽象层，提供统一的 API 接口，支持多种存储后端（本地磁盘、阿里云 OSS、阿里云 VOD）。\n\n### 核心特性\n\n- **统一 API** - 一套 API，多种存储后端\n- **适配器模式** - 轻松扩展新存储后端\n- **Promise 风格** - 所有操作返回 Promise\n- **流式支持** - 支持大文件的流式读写\n- **类型安全** - 完整的 TypeScript 类型定义\n\n### 架构\n\n```\n┌─────────────────────────────────────┐\n│         Your Application            │\n└──────────────┬──────────────────────┘\n               │\n               ▼\n┌─────────────────────────────────────┐\n│         FSD Core                    │\n│    (统一 API 抽象层)                  │\n└──────┬──────────┬──────────┬────────┘\n       │          │          │\n       ▼          ▼          ▼\n┌──────────┐ ┌──────────┐ ┌──────────┐\n│  FS      │ │   OSS    │ │   VOD    │\n│  Adapter │ │  Adapter │ │  Adapter │\n│(本地磁盘) │ │ (阿里云)  │ │ (阿里云)  │\n└──────────┘ └──────────┘ └──────────┘\n```\n\n## 安装\n\n```bash\nnpm install fsd\n```\n\n还需要安装对应的适配器包：\n\n```bash\n# 本地文件系统\nnpm install fsd-fs\n\n# 阿里云 OSS\nnpm install fsd-oss\n\n# 阿里云 VOD\nnpm install fsd-vod\n```\n\n## 快速开始\n\n### 基础用法\n\n```typescript\nimport FSD from 'fsd';\nimport FSAdapter from 'fsd-fs';\n\n// 创建 FSD 实例\nconst fsd = FSD({\n  adapter: new FSAdapter({ root: '/uploads' })\n});\n\n// 创建文件对象\nconst file = fsd('/test.txt');\n\n// 写入文件\nawait file.write('Hello, FSD!');\n\n// 读取文件\nconst content = await file.read('utf8');\nconsole.log(content); // 'Hello, FSD!'\n```\n\n### 目录操作\n\n```typescript\n// 创建目录（注意：目录路径必须以 / 结尾）\nconst dir = fsd('/photos/');\nawait dir.mkdir(true); // 递归创建\n\n// 列出目录内容\nconst files = await dir.readdir();\nfor (const f of files) {\n  console.log(f.name); // 文件名\n  console.log(f.path); // 完整路径\n}\n```\n\n## 路径约定（重要）\n\nFSD 对文件和目录路径有严格的约定，违反会抛出错误：\n\n### 文件路径\n\n- **必须** 不以 `/` 结尾\n- 自动补全前导 `/`\n\n```typescript\n// ✅ 正确\nconst file = fsd('/test.txt');      // 正确\nconst file = fsd('test.txt');       // 自动补全为 '/test.txt'\n\n// ❌ 错误\nconst file = fsd('/test.txt/');     // Error: file path should not ends with /\n```\n\n### 目录路径\n\n- **必须** 以 `/` 结尾\n- 自动补全前导 `/`\n\n```typescript\n// ✅ 正确\nconst dir = fsd('/uploads/');       // 正确\nconst dir = fsd('uploads');         // 错误：必须以 / 结尾\n\n// ❌ 错误\nconst dir = fsd('/uploads');        // Error: directory path should be ends with /\n```\n\n## 使用不同适配器\n\n### 本地文件系统 (fsd-fs)\n\n```typescript\nimport FSD from 'fsd';\nimport FSAdapter from 'fsd-fs';\n\nconst fsd = FSD({\n  adapter: new FSAdapter({\n    root: '/app/uploads',      // 必需：存储根目录\n    mode: 0o644,               // 可选：文件权限，默认 0o644\n    tmpdir: '/tmp/fsd-tmp',    // 可选：临时目录（分段上传时使用）\n    urlPrefix: 'https://cdn.example.com' // 可选：URL 前缀\n  })\n});\n\nconst file = fsd('/test.txt');\nawait file.write('Local file content');\n```\n\n### 阿里云 OSS (fsd-oss)\n\n```typescript\nimport FSD from 'fsd';\nimport OSSAdapter from 'fsd-oss';\n\nconst fsd = FSD({\n  adapter: new OSSAdapter({\n    accessKeyId: 'your-access-key-id',        // 必需\n    accessKeySecret: 'your-access-key-secret', // 必需\n    region: 'oss-cn-hangzhou',               // 必需：区域\n    bucket: 'your-bucket-name',              // 可选：Bucket 名称\n    root: '/uploads',                         // 可选：存储根路径\n    urlPrefix: 'https://cdn.example.com',      // 可选：URL 前缀\n    publicRead: true,                         // 可选：公共读\n    internal: false,                          // 可选：内网访问\n    secure: true                              // 可选：HTTPS\n  })\n});\n\nconst file = fsd('/uploads/test.txt');\nawait file.write('OSS file content');\n```\n\n**⚠️ 注意**: `endpoint` 选项已废弃，请使用 `region/[internal]/[secure]`。\n\n### 阿里云 VOD (fsd-vod)\n\n```typescript\nimport FSD from 'fsd';\nimport VODAdapter from 'fsd-vod';\n\nconst fsd = FSD({\n  adapter: new VODAdapter({\n    accessKeyId: 'your-access-key-id',        // 必需\n    accessKeySecret: 'your-access-key-secret', // 必需\n    region: 'cn-shanghai',                    // 可选：默认 cn-shanghai\n    privateKey: 'your-rsa-private-key',      // 必需：视频上传签名私钥\n    templateGroupId: 'your-template-group-id', // 可选：转码模板组\n    workflowId: 'your-workflow-id',          // 可选：工作流 ID\n    urlPrefix: 'https://cdn.example.com'      // 可选：URL 前缀\n  })\n});\n\n// VOD 必须先分配视频 ID\nconst videoId = await fsd.adapter.alloc({ name: 'video.mp4' });\nconst file = fsd(videoId);\n\nawait file.write(videoBuffer);\n```\n\n## API 参考\n\n### FSDFile 对象属性\n\n```typescript\nconst file = fsd('/path/to/document.pdf');\n\nconsole.log(file.path);    // '/path/to/document.pdf' - 完整路径\nconsole.log(file.dir);     // '/path/to/' - 目录路径\nconsole.log(file.base);    // 'document.pdf' - 文件名（含扩展名）\nconsole.log(file.name);    // 'document' - 文件名（不含扩展名）\nconsole.log(file.ext);     // '.pdf' - 扩展名\nconsole.log(file.needEnsureDir); // false/true - 是否需要确保目录存在\n```\n\n### 文件操作\n\n#### write(data) - 写入文件\n\n```typescript\n// 写入字符串\nawait file.write('Hello, World!');\n\n// 写入 Buffer\nawait file.write(Buffer.from([0x48, 0x65, 0x6c, 0x6c, 0x6f]));\n\n// 写入流\nconst readStream = fs.createReadStream('/local/file.txt');\nawait file.write(readStream);\n\n// 创建空文件\nawait file.write();\n```\n\n#### read([encoding] | [position, length] | [position, length, encoding]) - 读取文件\n\n```typescript\n// 读取为 UTF-8 字符串\nconst text = await file.read('utf8');\n\n// 读取为 Buffer\nconst buffer = await file.read();\n\n// 读取指定范围（前 100 字节）\nconst partial = await file.read(0, 100);\n\n// 读取指定范围并解码\nconst text = await file.read(100, 50, 'utf8');\n```\n\n#### append(data) - 追加内容\n\n```typescript\n// 追加字符串\nawait file.append('\\nNew line');\n\n// 追加 Buffer\nawait file.append(Buffer.from('additional data'));\n\n// 追加流\nconst sourceStream = fs.createReadStream('/append.txt');\nawait file.append(sourceStream);\n```\n\n### 流式操作\n\n#### createReadStream([options]) - 创建可读流\n\n```typescript\n// 创建完整文件流\nconst readStream = await file.createReadStream();\nreadStream.pipe(process.stdout);\n\n// 指定范围读取（从第 100 字节到 199 字节）\nconst partialStream = await file.createReadStream({\n  start: 100,\n  end: 199\n});\n\n// 流式下载到本地\nconst fs = require('fs');\nconst readStream = await file.createReadStream();\nconst writeStream = fs.createWriteStream('/local/download.txt');\nreadStream.pipe(writeStream);\nawait new Promise(resolve => writeStream.on('finish', resolve));\n```\n\n#### createWriteStream([options]) - 创建可写流\n\n```typescript\n// 创建可写流\nconst writeStream = await file.createWriteStream();\nwriteStream.write('Hello');\nwriteStream.end();\n\n// 等待流完成（如果适配器支持 promise 属性）\nif (writeStream.promise) {\n  await writeStream.promise;\n}\n\n// 从本地文件流式上传\nconst fs = require('fs');\nconst readStream = fs.createReadStream('/local/file.txt');\nconst writeStream = await file.createWriteStream();\nreadStream.pipe(writeStream);\nif (writeStream.promise) {\n  await writeStream.promise;\n}\n```\n\n### 目录操作\n\n#### mkdir([recursive]) - 创建目录\n\n```typescript\n// 创建单级目录（父目录必须存在）\nawait dir.mkdir();\n\n// 递归创建多级目录\nawait dir.mkdir(true); // 等价于 mkdir -p\n```\n\n#### readdir([recursion]) - 读取目录\n\n```typescript\n// 列出直接子项\nconst files = await dir.readdir();\nfor (const f of files) {\n  console.log(f.name);\n  if (await f.isFile()) {\n    console.log(`File: ${f.path}`);\n  } else if (await f.isDirectory()) {\n    console.log(`Directory: ${f.path}`);\n  }\n}\n\n// 递归列出所有文件\nconst allFiles = await dir.readdir(true);\nconsole.log(`Total: ${allFiles.length} files`);\n\n// 使用 glob 模式筛选\nconst images = await dir.readdir('**/*.jpg');\nfor (const img of images) {\n  console.log(img.path);\n}\n```\n\n### 文件信息\n\n#### exists() - 判断文件/目录是否存在\n\n```typescript\nif (await file.exists()) {\n  console.log('File exists');\n} else {\n  await file.write('Create this file');\n}\n```\n\n#### isFile() / isDirectory() - 判断类型\n\n```typescript\nif (await file.isFile()) {\n  console.log('This is a file');\n  console.log(`Size: ${await file.size()} bytes`);\n}\n\nif (await dir.isDirectory()) {\n  console.log('This is a directory');\n}\n```\n\n#### size() - 获取文件大小\n\n```typescript\nconst size = await file.size();\nconsole.log(`File size: ${size} bytes`);\n\n// 格式化显示\nconst sizeMB = size / (1024 * 1024);\nconsole.log(`File size: ${sizeMB.toFixed(2)} MB`);\n```\n\n#### lastModified() - 获取最后修改时间\n\n```typescript\nconst modified = await file.lastModified();\nconsole.log('Last modified:', modified.toISOString());\n\n// 判断文件是否过期（例如 1 天前）\nconst oneDayAgo = new Date(Date.now() - 24 * 60 * 60 * 1000);\nif (modified < oneDayAgo) {\n  console.log('File is older than 1 day');\n}\n```\n\n### 文件管理\n\n#### copy(dest) - 复制文件\n\n```typescript\n// 复制到同级目录\nconst copy = await file.copy('file_copy.txt');\n\n// 复制到子目录\nconst copy = await file.copy('backup/file.txt');\n\n// 复制到绝对路径\nconst copy = await file.copy('/other/path/file.txt');\n\n// 复制目录（递归）\nconst dirCopy = await dir.copy('backup/');\n```\n\n#### rename(dest) - 重命名/移动\n\n```typescript\n// 重命名文件\nawait file.rename('new_name.txt');\n\n// 移动文件到子目录\nawait file.rename('backup/file.txt');\n\n// 移动文件到绝对路径\nawait file.rename('/other/path/file.txt');\n\n// 重命名目录\nawait dir.rename('new_folder/');\n```\n\n#### unlink() - 删除文件/目录\n\n```typescript\n// 删除文件\nawait file.unlink();\n\n// 删除目录及其所有内容\nawait dir.unlink();\n```\n\n### URL 生成\n\n#### createUrl([options]) - 创建访问 URL\n\n```typescript\n// 创建默认链接（1 小时后过期）\nconst url = await file.createUrl();\nconsole.log('Download URL:', url);\n\n// 创建 10 分钟后过期的链接\nconst url = await file.createUrl({ expires: 600 });\n\n// 创建带下载提示的链接\nconst url = await file.createUrl({\n  expires: 3600,\n  response: {\n    'content-type': 'application/pdf',\n    'content-disposition': 'attachment; filename=\"document.pdf\"'\n  }\n});\n\n// VOD 适配器：获取不同清晰度的视频播放地址\nconst hdUrl = await file.createUrl({ path: '/video/HD' });\nconst sdUrl = await file.createUrl({ path: '/video/SD' });\n```\n\n### 分片上传（大文件）\n\n#### initMultipartUpload(partCount) - 初始化分片上传\n\n```typescript\n// 初始化 3 个分片\nconst tasks = await file.initMultipartUpload(3);\nconsole.log(tasks);\n// ['task://uploadId123?1', 'task://uploadId123?2', 'task://uploadId123?3']\n```\n\n#### writePart(partTask, data, [size]) - 上传分片\n\n```typescript\nconst tasks = await file.initMultipartUpload(3);\nconst parts = [];\n\n// 上传第一个分片（Buffer）\nconst part1 = await file.writePart(tasks[0], Buffer.from('part1 data'));\nparts.push(part1);\n\n// 上传第二个分片（流）\nconst stream = fs.createReadStream('/tmp/part2');\nconst part2 = await file.writePart(tasks[1], stream, 1024);\nparts.push(part2);\n\n// 上传第三个分片（字符串）\nconst part3 = await file.writePart(tasks[2], 'part3 data');\nparts.push(part3);\n```\n\n#### completeMultipartUpload(parts) - 完成分片上传\n\n```typescript\nconst tasks = await file.initMultipartUpload(3);\nconst parts = [];\n\nfor (let i = 0; i < tasks.length; i++) {\n  const part = await file.writePart(tasks[i], getDataForPart(i));\n  parts.push(part);\n}\n\n// 完成上传（注意：parts 顺序可以与 tasks 顺序不同）\nawait file.completeMultipartUpload(parts);\n```\n\n### 完整示例：文件上传服务\n\n```typescript\nimport FSD from 'fsd';\nimport FSAdapter from 'fsd-fs';\nimport express from 'express';\n\nconst app = express();\nconst fsd = FSD({\n  adapter: new FSAdapter({ root: '/uploads' })\n});\n\n// 单文件上传\napp.post('/upload', async (req, res) => {\n  const file = req.files.file;\n  const destFile = fsd(`/uploads/${file.name}`);\n\n  // 使用流式上传\n  await destFile.write(file.data);\n\n  // 生成下载链接（24 小时后过期）\n  const downloadUrl = await destFile.createUrl({ expires: 86400 });\n\n  res.json({\n    path: destFile.path,\n    size: await destFile.size(),\n    downloadUrl\n  });\n});\n\n// 分片上传大文件\napp.post('/upload/multipart', async (req, res) => {\n  const { fileName, partCount } = req.body;\n  const file = fsd(`/uploads/${fileName}`);\n\n  // 初始化分片上传\n  const tasks = await file.initMultipartUpload(partCount);\n  res.json({ tasks });\n});\n\napp.post('/upload/part', async (req, res) => {\n  const { task } = req.body;\n  const file = fsd('/uploads/target.txt');\n\n  // 上传分片\n  const part = await file.writePart(task, req.body.data, req.body.size);\n  res.json({ part });\n});\n\napp.post('/upload/complete', async (req, res) => {\n  const { fileName, parts } = req.body;\n  const file = fsd(`/uploads/${fileName}`);\n\n  // 完成上传\n  await file.completeMultipartUpload(parts);\n\n  res.json({ success: true });\n});\n\n// 文件列表\napp.get('/files/:path', async (req, res) => {\n  const dir = fsd(`/${req.params.path}/`);\n  const files = await dir.readdir(true); // 递归列出\n\n  const fileList = await Promise.all(files.map(async f => ({\n    name: f.name,\n    path: f.path,\n    size: await f.size(),\n    isFile: await f.isFile()\n  })));\n\n  res.json(fileList);\n});\n\napp.listen(3000);\n```\n\n### 使用 OSS 实现云存储\n\n```typescript\nimport FSD from 'fsd';\nimport OSSAdapter from 'fsd-oss';\n\nconst fsd = FSD({\n  adapter: new OSSAdapter({\n    accessKeyId: process.env.OSS_ACCESS_KEY_ID,\n    accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,\n    region: 'oss-cn-hangzhou',\n    bucket: 'my-bucket',\n    root: '/uploads'\n  })\n});\n\n// 上传文件并获取访问 URL\nasync function uploadFile(filename, data) {\n  const file = fsd(`/uploads/${filename}`);\n  await file.write(data);\n\n  const url = await file.createUrl({ expires: 3600 });\n  return { path: file.path, url };\n}\n\n// 批量上传\nasync function uploadMultiple(files) {\n  const results = await Promise.all(\n    files.map(f => uploadFile(f.name, f.data))\n  );\n  return results;\n}\n```\n\n### 自定义适配器\n\n你可以创建自己的存储适配器：\n\n```typescript\nimport { Adapter } from 'fsd';\n\nclass MyCustomAdapter extends Adapter<MyOptions> {\n  readonly instanceOfFSDAdapter = true;\n  readonly name = 'MyCustomAdapter';\n  readonly needEnsureDir = false;\n\n  constructor(options: MyOptions) {\n    super(options);\n    // 初始化你的存储系统\n  }\n\n  async write(path: string, data: any): Promise<void> {\n    // 实现写入逻辑\n  }\n\n  async read(path: string, options?: any): Promise<any> {\n    // 实现读取逻辑\n  }\n\n  // ... 实现其他必需方法\n}\n\n// 使用自定义适配器\nconst fsd = FSD({\n  adapter: new MyCustomAdapter({ /* options */ })\n});\n```\n\n## TypeScript 支持\n\n完整的 TypeScript 类型定义已包含在包中：\n\n```typescript\nimport FSD, { FSDFile, Adapter, ReadStreamOptions } from 'fsd';\n\nconst fsd: ReturnType<typeof FSD> = FSD({\n  adapter: myAdapter\n});\n\nconst file: FSDFile = fsd('/test.txt');\n```\n\n## 常见问题\n\n### Q: 如何切换存储后端？\n\nA: 只需更换适配器，应用代码无需修改：\n\n```typescript\n// 开发环境使用本地文件系统\nconst devFsd = FSD({\n  adapter: new FSAdapter({ root: '/uploads' })\n});\n\n// 生产环境使用 OSS\nconst prodFsd = FSD({\n  adapter: new OSSAdapter({\n    accessKeyId: process.env.OSS_ACCESS_KEY_ID,\n    accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,\n    region: process.env.OSS_REGION,\n    bucket: process.env.OSS_BUCKET\n  })\n});\n\n// 使用方式完全相同\nawait devFsd('/test.txt').write('Hello');\nawait prodFsd('/test.txt').write('Hello');\n```\n\n### Q: 如何处理大文件？\n\nA: 使用流式操作或分片上传：\n\n```typescript\n// 流式上传（适合中等大小文件）\nconst stream = await file.createWriteStream();\nsourceStream.pipe(stream);\nawait stream.promise;\n\n// 分片上传（适合大文件）\nconst tasks = await file.initMultipartUpload(5);\n// ... 上传分片\nawait file.completeMultipartUpload(parts);\n```\n\n### Q: 如何检查适配器类型？\n\nA: 使用 `adapter.name` 属性：\n\n```typescript\nconsole.log(fsd.adapter.name); // 'FSAdapter', 'OSSAdapter', 'VODAdapter'\n\nif (fsd.adapter.name === 'OSSAdapter') {\n  console.log('Using OSS storage');\n}\n```\n\n### Q: 目录操作失败怎么办？\n\nA: 确保目录路径以 `/` 结尾，或使用递归创建：\n\n```typescript\n// ❌ 错误\nawait fsd('/uploads').mkdir(); // Error\n\n// ✅ 正确\nawait fsd('/uploads/').mkdir(); // Success\n\n// ✅ 或递归创建\nawait fsd('/uploads/subdir/').mkdir(true); // Success\n```\n\n## 相关包\n\n- [fsd-fs](https://www.npmjs.com/package/fsd-fs) - 本地文件系统适配器\n- [fsd-oss](https://www.npmjs.com/package/fsd-oss) - 阿里云 OSS 适配器\n- [fsd-vod](https://www.npmjs.com/package/fsd-vod) - 阿里云 VOD 适配器\n\n## License\n\nMIT\n","readmeFilename":"README.md"}