{"tag":"filesystem","articles":{"projects\/avris-fs":{"key":"projects\/avris-fs","type":"article","published":true,"meta":{"createdAt":"2019-01-01T18:53:52+01:00","publishedAt":"2019-01-01T18:51:00+01:00","group":null,"links":[{"icon":"globe-europe","colour":"primary","url":"https:\/\/www.npmjs.com\/package\/avris-fs","displayUrl":"npm: avris-fs"},{"icon":"brands gitlab","colour":"secondary","url":"https:\/\/gitlab.com\/Avris\/Filesystem","displayUrl":null}],"category":"projects","subcategory":null,"slug":"avris-fs"},"content":{"en":{"slug":"avris-fs","title":"avris-fs","intro":"\u003Cfigure\u003E\n                \u003Cnoscript\u003E\n                    \u003Cimg src=\u0022https:\/\/avris.it\/image\/avris-fs_small.png\u0022 alt=\u0022\u0022 class=\u0022border-bottom\u0022 width=\u0022480\u0022 height=\u0022320\u0022\u003E                \n                \u003C\/noscript\u003E\n                \u003Cspan class=\u0022hide-noscript\u0022\u003E\u003Cimg src=\u0022data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAYCAYAAACSuF9OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAHoUlEQVRIiX2Xy69lRRXGf+tRtfe595776u4LTQMNNLQCIpFgJEEDkiAQgwaNDzQhOtCBxoF\/gnNnDozGsY6IE8REoxFIIFE0PqBFIo9uumlIN933ce7r7F21HOzTF6PGyn4lu2rXV99Xa61vy\/U33B5RKkIQtUJUzJ1aCkGgIrgapkpyZzrdp9YKERCBACKCMDQRQUSA4EqLiNlZD+5ERQRUBHPHRGiaER4hRASlFiRAgFIKwvBhVR2AikKtJFX62QSIzPpx0F8EQFCV9yeXK89C1IKoEfH+OENIamgt+JUBghJUIkBDEB0mIwRVB4S+VAxBEUIUU52xMSwEGd7NjtnFcDem0w4RiBgWKKLobKyp4mYkVTxEoZYZwQMjRCAhqBpuiolgorgpEpVaK7WW4QPuw+prRdUOpFIRolaCYGl5mfVLl4EKIYhD1IKqQICZksxIfgWQACpQZ2wJiOhMBkNRzIxsibmmgejZ2d2lcadJTvZErZVSevpSQBj2S60AHL1qjf2tCVAH0iJQzTNQiukgcTbFRRMRHRIGUtGDTSqo2UCtJVQUFUPFmW\/mWRktcXmygYYSJWg8oZ4hCiFC33cDQwLHr7+ed948g0ggAaaCEEBCJGaSKckU15Tpg1nE2JVYAdWBHTVMjexOtoRiiCSanLjxyALbOxP2u46rrl5jurvDZHMLEyG7UqNy76fu47VTr7CYG4IYIgtQHURRBRFIpmQ3PDQhaSYXQg0wUVQNFcXNcTWyZ1yEZE6SRNKG1dUlPve1L7C6sszvnvwlb51+C2sWSD5E03hpgXsfuI+Xn3me5XYEFCJiAKOCCpgJpgNr7oKTG6R3ao2ZvgCKqKHmiBhujmrCzWZn4v5HPsHj3\/4Sr774d576wc9IFE4evYaola3tCZ6Nr37vu7z486e5dnGRaemo0RNRBul0Fl1p2EM5Kabg0s5Tu4LUOuShAMQQcdQSyRxVI5nTpsycO1\/\/1ud56LH7mVze4ukfPUXWEStzLSduvobtjYts7OzxwHe+QlKhnj7LB4+uMdndYa+fUmpPqR1oJblhJrgryYWUDJe5RWTaQ6kEDHsERSShYognsjptSsylxONPPMhDj90PwF+fe4lEw3hhzMJcw9alXY7f\/WE+9ei9eNvwwvd\/wtrhJTQ6NjaDvk+UGACFVFSDlB13ISXFs+AyGkPuoYCEQiiCgjhowtRJ5uSUuPPOG\/nMFz95UBI2351w6KojHDu+xvHbr+O6u25i\/vAiEcFbv3qW+VGm1AXapic3FaRSo6Pvp0TtUAPVwNzIjeNJcMZL0BciZAATQ3QZjmtCcWSWAJ\/45iMHmRng4W88yH+2iODcs39keuEiR244xP5GptteZ1E7xCpiQa0dtd9H6FETzJWUM940uI7HpMJQZ1A8lISRxclhZDUyyl13Xs+xY6v\/BeDfWy2F1379B7ZefY12XmmX5jhy67X0G\/NsnhdUpggdSCZKQqQOEZYcyxlrRvh4eUwpwIwhQ\/BwWjFalBajqcI9H7v5\/4KZXNjg1C+eZ\/reBUYNoNDt7rDzXofLlLmlhtqVIfcYqCRkJpe6Y7lFmxF+9eqIvg9qgRqKhqIYKYSE0YbSFOHkTYf\/J5DdzR3+8dxLnPvTK2TpGLV1KB0VooO6b9AoeaREUkxiJlNCTbGU0dwgqYE8wj+01rCz1zHdL0z7SimVUisSgkTFimAiHF6ZOwCxPdnl9KvnePMvr3Pu5TdoomPOC5EKTiVrJTTAAqZDrZQUJA\/cBDNBU0JyC8kgZ8gNeIs\/uvI223uVyaRjc7sy6YOtfdiZwl4H014oPfz4hz9ld3uX9YubbF\/aJJdCopCotFoZWc98ChbbynSuwjhIIbQ22AwpHeqBZcNq0HWGMabbN7RNbFyeo6NF7r\/9cCy2ib29wSq5ZUKcihOSKDhVM32FEAV1RBTXIWtnd1aXlpjubtMonDxxjM13z3FkPji6Ulg7bMzPC2fOrzPZ3aXkjuVrjvHMb37Pm+f3WWwra2tj9rvghVPbyMLyamjKiBqWEt60iBqeGzxlLDWoGrlpMU8kz7glHvr43Zw9f4nrjl7N1tYuV60sc\/70Oe647Wbq9oSLr7\/BcguHFpSVeUjak6xneb7n5J1zrJ+fcOH8JuMRuPQcuedBdv72W\/zWz36ZZmGRvkI7P8ZTg6oj5iRPiBjCUHckBCkVSuHQLSeoqxtsbG3D0hhZXmLj\/DZnNgtrS0fYH0\/Zd2E7KTkZbapUq+w1lc6WWf0ArE9eJ42Exnv6yzss3PYQXjAmO7tgienWFiLbgA5eKAYDPnghZmAqUitPPv061EI2Q0pwKgKrhfcuvI3WwlzKjJMzdmepScwlwbUwl2Gy1\/HROxY5e1mpl3oWRzBef5tbHv4Ifvn0P5l2HeqZWirejOD9fwgE8JRQVSSCqIFGIBForUjfHxj82u3jYqy\/e4Y2t7gISwuLHFpcxqOys7PJyuKYP7\/ivHN6xLsbe7z53h6jHDQ65dP9WeTwiVujlkI\/nVK7fdL8GAmhTPfQ1AzloPZ4bgEGzw1oDRRB4oqHHry4RiBUTARXwQWUSjZDNej7DqGwNnaWWuPS7mBzG4d7jsO\/AOFtP6chpFTOAAAAAElFTkSuQmCC\u0022 data-src=\u0022https:\/\/avris.it\/image\/avris-fs_small.png\u0022 alt=\u0022\u0022 class=\u0022border-bottom\u0022 width=\u0022480\u0022 height=\u0022320\u0022\u003E\u003C\/span\u003E\n                \n            \u003C\/figure\u003E\u003C\/p\u003E\n\u003Cp\u003EA filesystem management abstraction layer for JavaScript.\nManage files on local filesystem, on FTP server, on Amazon S3, etc. all through the same interface.\u003C\/p\u003E\n\u003Cp\u003E\u003Cstrong\u003EWarning!\u003C\/strong\u003E It\u2019s a \u003Cem\u003Every\u003C\/em\u003E early version!\u003C\/p\u003E\u003Csvg xmlns=\u0022http:\/\/www.w3.org\/2000\/svg\u0022 style=\u0022display: none;\u0022\u003E\u003C\/svg\u003E","content":"\u003Cfigure\u003E\n                \u003Cnoscript\u003E\n                    \u003Cimg src=\u0022https:\/\/avris.it\/image\/avris-fs_big.png\u0022 alt=\u0022\u0022 class=\u0022border\u0022 width=\u0022900\u0022 height=\u0022600\u0022\u003E                \n                \u003C\/noscript\u003E\n                \u003Cspan class=\u0022hide-noscript\u0022\u003E\u003Cimg src=\u0022data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAYCAYAAACSuF9OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAHoUlEQVRIiX2Xy69lRRXGf+tRtfe595776u4LTQMNNLQCIpFgJEEDkiAQgwaNDzQhOtCBxoF\/gnNnDozGsY6IE8REoxFIIFE0PqBFIo9uumlIN933ce7r7F21HOzTF6PGyn4lu2rXV99Xa61vy\/U33B5RKkIQtUJUzJ1aCkGgIrgapkpyZzrdp9YKERCBACKCMDQRQUSA4EqLiNlZD+5ERQRUBHPHRGiaER4hRASlFiRAgFIKwvBhVR2AikKtJFX62QSIzPpx0F8EQFCV9yeXK89C1IKoEfH+OENIamgt+JUBghJUIkBDEB0mIwRVB4S+VAxBEUIUU52xMSwEGd7NjtnFcDem0w4RiBgWKKLobKyp4mYkVTxEoZYZwQMjRCAhqBpuiolgorgpEpVaK7WW4QPuw+prRdUOpFIRolaCYGl5mfVLl4EKIYhD1IKqQICZksxIfgWQACpQZ2wJiOhMBkNRzIxsibmmgejZ2d2lcadJTvZErZVSevpSQBj2S60AHL1qjf2tCVAH0iJQzTNQiukgcTbFRRMRHRIGUtGDTSqo2UCtJVQUFUPFmW\/mWRktcXmygYYSJWg8oZ4hCiFC33cDQwLHr7+ed948g0ggAaaCEEBCJGaSKckU15Tpg1nE2JVYAdWBHTVMjexOtoRiiCSanLjxyALbOxP2u46rrl5jurvDZHMLEyG7UqNy76fu47VTr7CYG4IYIgtQHURRBRFIpmQ3PDQhaSYXQg0wUVQNFcXNcTWyZ1yEZE6SRNKG1dUlPve1L7C6sszvnvwlb51+C2sWSD5E03hpgXsfuI+Xn3me5XYEFCJiAKOCCpgJpgNr7oKTG6R3ao2ZvgCKqKHmiBhujmrCzWZn4v5HPsHj3\/4Sr774d576wc9IFE4evYaola3tCZ6Nr37vu7z486e5dnGRaemo0RNRBul0Fl1p2EM5Kabg0s5Tu4LUOuShAMQQcdQSyRxVI5nTpsycO1\/\/1ud56LH7mVze4ukfPUXWEStzLSduvobtjYts7OzxwHe+QlKhnj7LB4+uMdndYa+fUmpPqR1oJblhJrgryYWUDJe5RWTaQ6kEDHsERSShYognsjptSsylxONPPMhDj90PwF+fe4lEw3hhzMJcw9alXY7f\/WE+9ei9eNvwwvd\/wtrhJTQ6NjaDvk+UGACFVFSDlB13ISXFs+AyGkPuoYCEQiiCgjhowtRJ5uSUuPPOG\/nMFz95UBI2351w6KojHDu+xvHbr+O6u25i\/vAiEcFbv3qW+VGm1AXapic3FaRSo6Pvp0TtUAPVwNzIjeNJcMZL0BciZAATQ3QZjmtCcWSWAJ\/45iMHmRng4W88yH+2iODcs39keuEiR244xP5GptteZ1E7xCpiQa0dtd9H6FETzJWUM940uI7HpMJQZ1A8lISRxclhZDUyyl13Xs+xY6v\/BeDfWy2F1379B7ZefY12XmmX5jhy67X0G\/NsnhdUpggdSCZKQqQOEZYcyxlrRvh4eUwpwIwhQ\/BwWjFalBajqcI9H7v5\/4KZXNjg1C+eZ\/reBUYNoNDt7rDzXofLlLmlhtqVIfcYqCRkJpe6Y7lFmxF+9eqIvg9qgRqKhqIYKYSE0YbSFOHkTYf\/J5DdzR3+8dxLnPvTK2TpGLV1KB0VooO6b9AoeaREUkxiJlNCTbGU0dwgqYE8wj+01rCz1zHdL0z7SimVUisSgkTFimAiHF6ZOwCxPdnl9KvnePMvr3Pu5TdoomPOC5EKTiVrJTTAAqZDrZQUJA\/cBDNBU0JyC8kgZ8gNeIs\/uvI223uVyaRjc7sy6YOtfdiZwl4H014oPfz4hz9ld3uX9YubbF\/aJJdCopCotFoZWc98ChbbynSuwjhIIbQ22AwpHeqBZcNq0HWGMabbN7RNbFyeo6NF7r\/9cCy2ib29wSq5ZUKcihOSKDhVM32FEAV1RBTXIWtnd1aXlpjubtMonDxxjM13z3FkPji6Ulg7bMzPC2fOrzPZ3aXkjuVrjvHMb37Pm+f3WWwra2tj9rvghVPbyMLyamjKiBqWEt60iBqeGzxlLDWoGrlpMU8kz7glHvr43Zw9f4nrjl7N1tYuV60sc\/70Oe647Wbq9oSLr7\/BcguHFpSVeUjak6xneb7n5J1zrJ+fcOH8JuMRuPQcuedBdv72W\/zWz36ZZmGRvkI7P8ZTg6oj5iRPiBjCUHckBCkVSuHQLSeoqxtsbG3D0hhZXmLj\/DZnNgtrS0fYH0\/Zd2E7KTkZbapUq+w1lc6WWf0ArE9eJ42Exnv6yzss3PYQXjAmO7tgienWFiLbgA5eKAYDPnghZmAqUitPPv061EI2Q0pwKgKrhfcuvI3WwlzKjJMzdmepScwlwbUwl2Gy1\/HROxY5e1mpl3oWRzBef5tbHv4Ifvn0P5l2HeqZWirejOD9fwgE8JRQVSSCqIFGIBForUjfHxj82u3jYqy\/e4Y2t7gISwuLHFpcxqOys7PJyuKYP7\/ivHN6xLsbe7z53h6jHDQ65dP9WeTwiVujlkI\/nVK7fdL8GAmhTPfQ1AzloPZ4bgEGzw1oDRRB4oqHHry4RiBUTARXwQWUSjZDNej7DqGwNnaWWuPS7mBzG4d7jsO\/AOFtP6chpFTOAAAAAElFTkSuQmCC\u0022 data-src=\u0022https:\/\/avris.it\/image\/avris-fs_big.png\u0022 alt=\u0022\u0022 class=\u0022border\u0022 width=\u0022900\u0022 height=\u0022600\u0022\u003E\u003C\/span\u003E\n                \n            \u003C\/figure\u003E\u003C\/p\u003E\n\u003Cp\u003EA filesystem management abstraction layer for JavaScript.\nManage files on local filesystem, on FTP server, on Amazon S3, etc. all through the same interface.\u003C\/p\u003E\n\u003Cp\u003E\u003Cstrong\u003EWarning!\u003C\/strong\u003E It\u2019s a \u003Cem\u003Every\u003C\/em\u003E early version!\u003C\/p\u003E\n\u003Ch3\u003EExample\u003C\/h3\u003E\n\u003Cpre\u003E\u003Ccode class=\u0022hljs javascript border\u0022\u003E\u003Cspan class=\u0022hljs-keyword\u0022\u003Eimport\u003C\/span\u003E {AvrisFilesystem} \u003Cspan class=\u0022hljs-keyword\u0022\u003Efrom\u003C\/span\u003E \u003Cspan class=\u0022hljs-string\u0022\u003E\u0022avris-fs\u0022\u003C\/span\u003E;\n\u003Cspan class=\u0022hljs-keyword\u0022\u003Eimport\u003C\/span\u003E {LocalAdapter} \u003Cspan class=\u0022hljs-keyword\u0022\u003Efrom\u003C\/span\u003E \u003Cspan class=\u0022hljs-string\u0022\u003E\u0022avris-fs\/dist\/adapter\/LocalAdapter\u0022\u003C\/span\u003E;\n\n\u003Cspan class=\u0022hljs-keyword\u0022\u003Econst\u003C\/span\u003E afs = \u003Cspan class=\u0022hljs-keyword\u0022\u003Enew\u003C\/span\u003E AvrisFilesystem(\n    \u003Cspan class=\u0022hljs-keyword\u0022\u003Enew\u003C\/span\u003E LocalAdapter(__dirname + \u003Cspan class=\u0022hljs-string\u0022\u003E\u0027\/data\/\u0027\u003C\/span\u003E)\n);\n\nafs.put(                    \u003Cspan class=\u0022hljs-comment\u0022\u003E\/\/ put = create or update\u003C\/span\u003E\n    \u003Cspan class=\u0022hljs-string\u0022\u003E\u0027dir\/subdir\/foo.txt\u0027\u003C\/span\u003E,\n     \u003Cspan class=\u0022hljs-string\u0022\u003E\u0027OSIEM!\u0027\u003C\/span\u003E\n).then(\u003Cspan class=\u0022hljs-function\u0022\u003E(\u003Cspan class=\u0022hljs-params\u0022\u003Emeta\u003C\/span\u003E) =\u0026gt;\u003C\/span\u003E {\n    afs.read(\u003Cspan class=\u0022hljs-string\u0022\u003E\u0027dir\/subdir\/foo.txt\u0027\u003C\/span\u003E).then(\u003Cspan class=\u0022hljs-function\u0022\u003E(\u003Cspan class=\u0022hljs-params\u0022\u003Econtent\u003C\/span\u003E) =\u0026gt;\u003C\/span\u003E {\n        \u003Cspan class=\u0022hljs-built_in\u0022\u003Econsole\u003C\/span\u003E.log(content);  \u003Cspan class=\u0022hljs-comment\u0022\u003E\/\/ \u0027OSIEM!\u0027\u003C\/span\u003E\n    });\n})\n\nafs.create(\u003Cspan class=\u0022hljs-string\u0022\u003E\u0027dir\/bar.txt\u0027\u003C\/span\u003E, \u003Cspan class=\u0022hljs-string\u0022\u003E\u0027OK!\u0027\u003C\/span\u003E).then(\u003Cspan class=\u0022hljs-function\u0022\u003E\u003Cspan class=\u0022hljs-params\u0022\u003E()\u003C\/span\u003E =\u0026gt;\u003C\/span\u003E {\n    afs.list(\u003Cspan class=\u0022hljs-string\u0022\u003E\u0027dir\u0027\u003C\/span\u003E, \u003Cspan class=\u0022hljs-literal\u0022\u003Etrue\u003C\/span\u003E).then(\u003Cspan class=\u0022hljs-function\u0022\u003E(\u003Cspan class=\u0022hljs-params\u0022\u003Eobjects\u003C\/span\u003E) =\u0026gt;\u003C\/span\u003E {\n        \u003Cspan class=\u0022hljs-built_in\u0022\u003Econsole\u003C\/span\u003E.log(objects);\n    });\n});\n\u003C\/code\u003E\u003C\/pre\u003E\n\u003Ch3\u003EAvailable adapters\u003C\/h3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ccode\u003ELocalAdapter\u003C\/code\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ccode\u003EMemoryAdapter\u003C\/code\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ccode\u003ENullAdapter\u003C\/code\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ccode\u003ES3Adapter\u003C\/code\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ccode\u003ESftpAdapter\u003C\/code\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ccode\u003EBrowserStorageAdapter\u003C\/code\u003E (\u003Ccode\u003ElocalStorage\u003C\/code\u003E or \u003Ccode\u003EsessionStorage\u003C\/code\u003E)\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Ch3\u003EAPI\u003C\/h3\u003E\n\u003Cpre\u003E\u003Ccode\u003Elist(directory: string = \u0027\u0027, recursive: boolean = false): Promise\u0026lt;{ [path: string]: Metadata }\u0026gt;;\nhas(path: string): Promise\u0026lt;boolean\u0026gt;;\ngetMetadata(path: string): Promise\u0026lt;Metadata\u0026gt;;\nread(path: string): Promise\u0026lt;Buffer\u0026gt;;\ncreate(path: string, content: Buffer): Promise\u0026lt;Metadata\u0026gt;;\nupdate(path: string, content: Buffer): Promise\u0026lt;Metadata\u0026gt;;\nput(path: string, content: Buffer): Promise\u0026lt;Metadata\u0026gt;;\nmove(path: string, newPath: string): Promise\u0026lt;Metadata\u0026gt;;\ncopy(path: string, newPath: string): Promise\u0026lt;Metadata\u0026gt;;\nremove(path: string): Promise\u0026lt;void\u0026gt;;\npublish(path: string): Promise\u0026lt;Metadata\u0026gt;;\nunpublish(path: string): Promise\u0026lt;Metadata\u0026gt;;\ncreateDir(path: string): Promise\u0026lt;Metadata\u0026gt;;\nremoveDir(path: string): Promise\u0026lt;void\u0026gt;;\u003C\/code\u003E\u003C\/pre\u003E\n\u003Ch3\u003ECredits\u003C\/h3\u003E\n\u003Cp\u003EGreatly inspired by \u003Ca href=\u0022https:\/\/flysystem.thephpleague.com\/docs\/\u0022\u003EFlysystem\u003C\/a\u003E, a similar project for PHP.\u003C\/p\u003E\u003Csvg xmlns=\u0022http:\/\/www.w3.org\/2000\/svg\u0022 style=\u0022display: none;\u0022\u003E\u003C\/svg\u003E","tags":["filesystem","javascript","local","localstorage","npm","s3","sessionstorage","typescript"],"hasMore":true,"image":"https:\/\/avris.it\/image\/avris-fs_small.png","introLite":"\u003Cfigure\u003E\u003Ca href=\u0022https:\/\/avris.it\/image\/avris-fs_big.png\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003E\u003Cimg src=\u0022https:\/\/avris.it\/image\/avris-fs_mini.png\u0022 alt=\u0022\u0022 width=\u0022240\u0022 height=\u0022160\u0022 loading=\u0022lazy\u0022\u003E\u003C\/a\u003E\u003C\/figure\u003E\u003C\/p\u003E\n\u003Cp\u003EA filesystem management abstraction layer for JavaScript.\nManage files on local filesystem, on FTP server, on Amazon S3, etc. all through the same interface.\u003C\/p\u003E\n\u003Cp\u003E\u003Cstrong\u003EWarning!\u003C\/strong\u003E It\u2019s a \u003Cem\u003Every\u003C\/em\u003E early version!\u003C\/p\u003E","contentLite":"\u003Cfigure\u003E\u003Ca href=\u0022https:\/\/avris.it\/image\/avris-fs_big.png\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003E\u003Cimg src=\u0022https:\/\/avris.it\/image\/avris-fs_mini.png\u0022 alt=\u0022\u0022 width=\u0022240\u0022 height=\u0022160\u0022 loading=\u0022lazy\u0022\u003E\u003C\/a\u003E\u003C\/figure\u003E\u003C\/p\u003E\n\u003Cp\u003EA filesystem management abstraction layer for JavaScript.\nManage files on local filesystem, on FTP server, on Amazon S3, etc. all through the same interface.\u003C\/p\u003E\n\u003Cp\u003E\u003Cstrong\u003EWarning!\u003C\/strong\u003E It\u2019s a \u003Cem\u003Every\u003C\/em\u003E early version!\u003C\/p\u003E\n\u003Ch3\u003EExample\u003C\/h3\u003E\n\u003Cpre\u003E\u003Ccode class=\u0022language-js\u0022\u003Eimport {AvrisFilesystem} from \u0022avris-fs\u0022;\nimport {LocalAdapter} from \u0022avris-fs\/dist\/adapter\/LocalAdapter\u0022;\n\nconst afs = new AvrisFilesystem(\n    new LocalAdapter(__dirname + \u0027\/data\/\u0027)\n);\n\nafs.put(                    \/\/ put = create or update\n    \u0027dir\/subdir\/foo.txt\u0027,\n     \u0027OSIEM!\u0027\n).then((meta) =\u0026gt; {\n    afs.read(\u0027dir\/subdir\/foo.txt\u0027).then((content) =\u0026gt; {\n        console.log(content);  \/\/ \u0027OSIEM!\u0027\n    });\n})\n\nafs.create(\u0027dir\/bar.txt\u0027, \u0027OK!\u0027).then(() =\u0026gt; {\n    afs.list(\u0027dir\u0027, true).then((objects) =\u0026gt; {\n        console.log(objects);\n    });\n});\u003C\/code\u003E\u003C\/pre\u003E\n\u003Ch3\u003EAvailable adapters\u003C\/h3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ccode\u003ELocalAdapter\u003C\/code\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ccode\u003EMemoryAdapter\u003C\/code\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ccode\u003ENullAdapter\u003C\/code\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ccode\u003ES3Adapter\u003C\/code\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ccode\u003ESftpAdapter\u003C\/code\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ccode\u003EBrowserStorageAdapter\u003C\/code\u003E (\u003Ccode\u003ElocalStorage\u003C\/code\u003E or \u003Ccode\u003EsessionStorage\u003C\/code\u003E)\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Ch3\u003EAPI\u003C\/h3\u003E\n\u003Cpre\u003E\u003Ccode\u003Elist(directory: string = \u0027\u0027, recursive: boolean = false): Promise\u0026lt;{ [path: string]: Metadata }\u0026gt;;\nhas(path: string): Promise\u0026lt;boolean\u0026gt;;\ngetMetadata(path: string): Promise\u0026lt;Metadata\u0026gt;;\nread(path: string): Promise\u0026lt;Buffer\u0026gt;;\ncreate(path: string, content: Buffer): Promise\u0026lt;Metadata\u0026gt;;\nupdate(path: string, content: Buffer): Promise\u0026lt;Metadata\u0026gt;;\nput(path: string, content: Buffer): Promise\u0026lt;Metadata\u0026gt;;\nmove(path: string, newPath: string): Promise\u0026lt;Metadata\u0026gt;;\ncopy(path: string, newPath: string): Promise\u0026lt;Metadata\u0026gt;;\nremove(path: string): Promise\u0026lt;void\u0026gt;;\npublish(path: string): Promise\u0026lt;Metadata\u0026gt;;\nunpublish(path: string): Promise\u0026lt;Metadata\u0026gt;;\ncreateDir(path: string): Promise\u0026lt;Metadata\u0026gt;;\nremoveDir(path: string): Promise\u0026lt;void\u0026gt;;\u003C\/code\u003E\u003C\/pre\u003E\n\u003Ch3\u003ECredits\u003C\/h3\u003E\n\u003Cp\u003EGreatly inspired by \u003Ca href=\u0022https:\/\/flysystem.thephpleague.com\/docs\/\u0022\u003EFlysystem\u003C\/a\u003E, a similar project for PHP.\u003C\/p\u003E","words":238,"readTime":null,"lang":"en"}}}}}