@xen-orchestra/fs 0.20.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli.js +62 -0
- package/dist/_copyStreamToBuffer.js +19 -0
- package/dist/_copyStreamToBuffer.js.map +1 -0
- package/dist/_createBufferFromStream.js +16 -0
- package/dist/_createBufferFromStream.js.map +1 -0
- package/dist/_guessAwsRegion.js +12 -0
- package/dist/_guessAwsRegion.js.map +1 -0
- package/dist/_mount.js +1 -3
- package/dist/_mount.js.map +1 -1
- package/dist/_path.js +33 -0
- package/dist/_path.js.map +1 -0
- package/dist/abstract.js +32 -44
- package/dist/abstract.js.map +1 -1
- package/dist/checksum.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/local.js.map +1 -1
- package/dist/nfs.js.map +1 -1
- package/dist/s3.js +185 -128
- package/dist/s3.js.map +1 -1
- package/dist/smb-mount.js +2 -2
- package/dist/smb-mount.js.map +1 -1
- package/dist/smb.js.map +1 -1
- package/package.json +14 -8
- package/dist/_normalizePath.js +0 -19
- package/dist/_normalizePath.js.map +0 -1
- package/gitignore-test-s3.js +0 -34
package/dist/abstract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/abstract.js"],"names":["dirname","path","posix","checksumFile","file","computeRate","hrtime","size","seconds","DEFAULT_TIMEOUT","DEFAULT_MAX_PARALLEL_OPERATIONS","ignoreEnoent","error","code","noop","Function","prototype","PrefixWrapper","constructor","handler","prefix","_prefix","_handler","type","list","dir","opts","entries","_resolve","prependDir","n","length","forEach","entry","i","slice","rename","oldPath","newPath","RemoteHandlerAbstract","remote","options","url","_remote","Error","highWaterMark","_highWaterMark","timeout","_timeout","sharedLimit","maxParallelOperations","closeFile","copy","getInfo","getSize","mkdir","openFile","outputFile","read","readFile","rmdir","truncate","unlink","write","writeFile","_forget","_sync","addPrefix","fd","__closeFile","createOutputStream","checksum","dirMode","streamP","call","_createOutputStream","flags","checksumStream","forwardError","emit","stream","on","pipe","checksumWritten","then","value","_outputFile","catch","createReadStream","ignoreMissingChecksum","_createReadStream","promise","undefined","end","start","Promise","all","ignoreErrors","_getSize","_readFile","String","trim","outputStream","input","validator","_outputStream","forget","_getInfo","filter","ignoreMissing","virtualDir","_list","lock","dispose","_lock","mode","__mkdir","mktree","_mktree","__openFile","data","buffer","position","_read","p","_rename","_copy","_rmdir","rmtree","_rmtree","sync","test","SIZE","testFileName","Date","now","randomBytes","step","writeStart","process","writeDuration","readStart","readDuration","equals","success","writeRate","readRate","message","_unlink","len","_truncate","_write","_writeFile","_closeFile","_mkdir","_openFile","_createWriteStream","resolve","tmpPath","output","pipeline","getStream","files","isPath","_writeFd","createPrefixWrapperMethods","pPw","pRha","defineProperty","getOwnPropertyDescriptor","hasOwnProperty","Object","getOwnPropertyNames","name","descriptor","arguments","apply"],"mappings":"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","sourcesContent":["import asyncMapSettled from '@xen-orchestra/async-map/legacy'\nimport getStream from 'get-stream'\nimport path, { basename } from 'path'\nimport { coalesceCalls } from '@vates/coalesce-calls'\nimport { fromCallback, fromEvent, ignoreErrors, timeout } from 'promise-toolbox'\nimport { limitConcurrency } from 'limit-concurrency-decorator'\nimport { parse } from 'xo-remote-parser'\nimport { pipeline } from 'stream'\nimport { randomBytes } from 'crypto'\nimport { synchronized } from 'decorator-synchronized'\n\nimport normalizePath from './_normalizePath'\nimport { createChecksumStream, validChecksumOfReadStream } from './checksum'\n\nconst { dirname } = path.posix\n\nconst checksumFile = file => file + '.checksum'\nconst computeRate = (hrtime, size) => {\n const seconds = hrtime[0] + hrtime[1] / 1e9\n return size / seconds\n}\n\nconst DEFAULT_TIMEOUT = 6e5 // 10 min\nconst DEFAULT_MAX_PARALLEL_OPERATIONS = 10\n\nconst ignoreEnoent = error => {\n if (error == null || error.code !== 'ENOENT') {\n throw error\n }\n}\n\nconst noop = Function.prototype\n\nclass PrefixWrapper {\n constructor(handler, prefix) {\n this._prefix = prefix\n this._handler = handler\n }\n\n get type() {\n return this._handler.type\n }\n\n // necessary to remove the prefix from the path with `prependDir` option\n async list(dir, opts) {\n const entries = await this._handler.list(this._resolve(dir), opts)\n if (opts != null && opts.prependDir) {\n const n = this._prefix.length\n entries.forEach((entry, i, entries) => {\n entries[i] = entry.slice(n)\n })\n }\n return entries\n }\n\n rename(oldPath, newPath) {\n return this._handler.rename(this._resolve(oldPath), this._resolve(newPath))\n }\n\n _resolve(path) {\n return this._prefix + normalizePath(path)\n }\n}\n\nexport default class RemoteHandlerAbstract {\n constructor(remote, options = {}) {\n if (remote.url === 'test://') {\n this._remote = remote\n } else {\n this._remote = { ...remote, ...parse(remote.url) }\n if (this._remote.type !== this.type) {\n throw new Error('Incorrect remote type')\n }\n }\n ;({ highWaterMark: this._highWaterMark, timeout: this._timeout = DEFAULT_TIMEOUT } = options)\n\n const sharedLimit = limitConcurrency(options.maxParallelOperations ?? DEFAULT_MAX_PARALLEL_OPERATIONS)\n this.closeFile = sharedLimit(this.closeFile)\n this.copy = sharedLimit(this.copy)\n this.getInfo = sharedLimit(this.getInfo)\n this.getSize = sharedLimit(this.getSize)\n this.list = sharedLimit(this.list)\n this.mkdir = sharedLimit(this.mkdir)\n this.openFile = sharedLimit(this.openFile)\n this.outputFile = sharedLimit(this.outputFile)\n this.read = sharedLimit(this.read)\n this.readFile = sharedLimit(this.readFile)\n this.rename = sharedLimit(this.rename)\n this.rmdir = sharedLimit(this.rmdir)\n this.truncate = sharedLimit(this.truncate)\n this.unlink = sharedLimit(this.unlink)\n this.write = sharedLimit(this.write)\n this.writeFile = sharedLimit(this.writeFile)\n\n this._forget = coalesceCalls(this._forget)\n this._sync = coalesceCalls(this._sync)\n }\n\n // Public members\n\n get type() {\n throw new Error('Not implemented')\n }\n\n addPrefix(prefix) {\n prefix = normalizePath(prefix)\n return prefix === '/' ? this : new PrefixWrapper(this, prefix)\n }\n\n async closeFile(fd) {\n await this.__closeFile(fd)\n }\n\n // TODO: remove method\n async createOutputStream(file, { checksum = false, dirMode, ...options } = {}) {\n if (typeof file === 'string') {\n file = normalizePath(file)\n }\n const path = typeof file === 'string' ? file : file.path\n const streamP = timeout.call(\n this._createOutputStream(file, {\n dirMode,\n flags: 'wx',\n ...options,\n }),\n this._timeout\n )\n\n if (!checksum) {\n return streamP\n }\n\n const checksumStream = createChecksumStream()\n const forwardError = error => {\n checksumStream.emit('error', error)\n }\n\n const stream = await streamP\n stream.on('error', forwardError)\n checksumStream.pipe(stream)\n\n checksumStream.checksumWritten = checksumStream.checksum\n .then(value => this._outputFile(checksumFile(path), value, { flags: 'wx' }))\n .catch(forwardError)\n\n return checksumStream\n }\n\n createReadStream(file, { checksum = false, ignoreMissingChecksum = false, ...options } = {}) {\n if (typeof file === 'string') {\n file = normalizePath(file)\n }\n const path = typeof file === 'string' ? file : file.path\n const streamP = timeout\n .call(this._createReadStream(file, { ...options, highWaterMark: this._highWaterMark }), this._timeout)\n .then(stream => {\n // detect early errors\n let promise = fromEvent(stream, 'readable')\n\n // try to add the length prop if missing and not a range stream\n if (stream.length === undefined && options.end === undefined && options.start === undefined) {\n promise = Promise.all([\n promise,\n ignoreErrors.call(\n this._getSize(file).then(size => {\n stream.length = size\n })\n ),\n ])\n }\n\n return promise.then(() => stream)\n })\n\n if (!checksum) {\n return streamP\n }\n\n // avoid a unhandled rejection warning\n ignoreErrors.call(streamP)\n\n return this._readFile(checksumFile(path), { flags: 'r' }).then(\n checksum =>\n streamP.then(stream => {\n const { length } = stream\n stream = validChecksumOfReadStream(stream, String(checksum).trim())\n stream.length = length\n\n return stream\n }),\n error => {\n if (ignoreMissingChecksum && error && error.code === 'ENOENT') {\n return streamP\n }\n throw error\n }\n )\n }\n\n /**\n * write a stream to a file using a temporary file\n *\n * @param {string} path\n * @param {ReadableStream} input\n * @param {object} [options]\n * @param {boolean} [options.checksum]\n * @param {number} [options.dirMode]\n * @param {(this: RemoteHandlerAbstract, path: string) => Promise<undefined>} [options.validator] Function that will be called before the data is commited to the remote, if it fails, file should not exist\n */\n async outputStream(path, input, { checksum = true, dirMode, validator } = {}) {\n path = normalizePath(path)\n let checksumStream\n if (checksum) {\n checksumStream = createChecksumStream()\n pipeline(input, checksumStream, noop)\n input = checksumStream\n }\n await this._outputStream(path, input, {\n dirMode,\n validator,\n })\n if (checksum) {\n await this._outputFile(checksumFile(path), await checksumStream.checksum, { dirMode, flags: 'wx' })\n }\n }\n\n // Free the resources possibly dedicated to put the remote at work, when it\n // is no more needed\n //\n // FIXME: Some handlers are implemented based on system-wide mecanisms (such\n // as mount), forgetting them might breaking other processes using the same\n // remote.\n @synchronized()\n async forget() {\n await this._forget()\n }\n\n async getInfo() {\n return timeout.call(this._getInfo(), this._timeout)\n }\n\n async getSize(file) {\n return timeout.call(this._getSize(typeof file === 'string' ? normalizePath(file) : file), this._timeout)\n }\n\n async list(dir, { filter, ignoreMissing = false, prependDir = false } = {}) {\n try {\n const virtualDir = normalizePath(dir)\n dir = normalizePath(dir)\n\n let entries = await timeout.call(this._list(dir), this._timeout)\n if (filter !== undefined) {\n entries = entries.filter(filter)\n }\n\n if (prependDir) {\n entries.forEach((entry, i) => {\n entries[i] = virtualDir + '/' + entry\n })\n }\n\n return entries\n } catch (error) {\n if (ignoreMissing && error?.code === 'ENOENT') {\n return []\n }\n throw error\n }\n }\n\n async lock(path) {\n path = normalizePath(path)\n return { dispose: await this._lock(path) }\n }\n\n async mkdir(dir, { mode } = {}) {\n await this.__mkdir(normalizePath(dir), { mode })\n }\n\n async mktree(dir, { mode } = {}) {\n await this._mktree(normalizePath(dir), { mode })\n }\n\n openFile(path, flags) {\n return this.__openFile(path, flags)\n }\n\n async outputFile(file, data, { dirMode, flags = 'wx' } = {}) {\n await this._outputFile(normalizePath(file), data, { dirMode, flags })\n }\n\n async read(file, buffer, position) {\n return this._read(typeof file === 'string' ? normalizePath(file) : file, buffer, position)\n }\n\n async readFile(file, { flags = 'r' } = {}) {\n return this._readFile(normalizePath(file), { flags })\n }\n\n async rename(oldPath, newPath, { checksum = false } = {}) {\n oldPath = normalizePath(oldPath)\n newPath = normalizePath(newPath)\n\n let p = timeout.call(this._rename(oldPath, newPath), this._timeout)\n if (checksum) {\n p = Promise.all([p, this._rename(checksumFile(oldPath), checksumFile(newPath))])\n }\n return p\n }\n\n async copy(oldPath, newPath, { checksum = false } = {}) {\n oldPath = normalizePath(oldPath)\n newPath = normalizePath(newPath)\n\n let p = timeout.call(this._copy(oldPath, newPath), this._timeout)\n if (checksum) {\n p = Promise.all([p, this._copy(checksumFile(oldPath), checksumFile(newPath))])\n }\n return p\n }\n\n async rmdir(dir) {\n await timeout.call(this._rmdir(normalizePath(dir)).catch(ignoreEnoent), this._timeout)\n }\n\n async rmtree(dir) {\n await this._rmtree(normalizePath(dir))\n }\n\n // Asks the handler to sync the state of the effective remote with its'\n // metadata\n //\n // This method MUST ALWAYS be called before using the handler.\n @synchronized()\n async sync() {\n await this._sync()\n }\n\n async test() {\n const SIZE = 1024 * 1024 * 10\n const testFileName = normalizePath(`${Date.now()}.test`)\n const data = await fromCallback(randomBytes, SIZE)\n let step = 'write'\n try {\n const writeStart = process.hrtime()\n await this._outputFile(testFileName, data, { flags: 'wx' })\n const writeDuration = process.hrtime(writeStart)\n\n step = 'read'\n const readStart = process.hrtime()\n const read = await this._readFile(testFileName, { flags: 'r' })\n const readDuration = process.hrtime(readStart)\n\n if (!data.equals(read)) {\n throw new Error('output and input did not match')\n }\n return {\n success: true,\n writeRate: computeRate(writeDuration, SIZE),\n readRate: computeRate(readDuration, SIZE),\n }\n } catch (error) {\n return {\n success: false,\n step,\n file: testFileName,\n error: error.message || String(error),\n }\n } finally {\n ignoreErrors.call(this._unlink(testFileName))\n }\n }\n\n async truncate(file, len) {\n await this._truncate(file, len)\n }\n\n async unlink(file, { checksum = true } = {}) {\n file = normalizePath(file)\n\n if (checksum) {\n ignoreErrors.call(this._unlink(checksumFile(file)))\n }\n\n await this._unlink(file).catch(ignoreEnoent)\n }\n\n async write(file, buffer, position) {\n await this._write(typeof file === 'string' ? normalizePath(file) : file, buffer, position)\n }\n\n async writeFile(file, data, { flags = 'wx' } = {}) {\n await this._writeFile(normalizePath(file), data, { flags })\n }\n\n // Methods that can be called by private methods to avoid parallel limit on public methods\n\n async __closeFile(fd) {\n await timeout.call(this._closeFile(fd.fd), this._timeout)\n }\n\n async __mkdir(dir, { mode } = {}) {\n try {\n await this._mkdir(dir, { mode })\n } catch (error) {\n if (error == null || error.code !== 'EEXIST') {\n throw error\n }\n\n // this operation will throw if it's not already a directory\n await this._list(dir)\n }\n }\n\n async __openFile(path, flags) {\n path = normalizePath(path)\n\n return {\n fd: await timeout.call(this._openFile(path, flags), this._timeout),\n path,\n }\n }\n\n // Methods that can be implemented by inheriting classes\n\n async _closeFile(fd) {\n throw new Error('Not implemented')\n }\n\n async _createOutputStream(file, { dirMode, ...options } = {}) {\n try {\n return await this._createWriteStream(file, { ...options, highWaterMark: this._highWaterMark })\n } catch (error) {\n if (typeof file !== 'string' || error.code !== 'ENOENT') {\n throw error\n }\n }\n\n await this._mktree(dirname(file), { mode: dirMode })\n return this._createOutputStream(file, options)\n }\n\n async _createReadStream(file, options) {\n throw new Error('Not implemented')\n }\n\n // createWriteStream takes highWaterMark as option even if it's not documented.\n // Source: https://stackoverflow.com/questions/55026306/how-to-set-writeable-highwatermark\n async _createWriteStream(file, options) {\n throw new Error('Not implemented')\n }\n\n // called to finalize the remote\n async _forget() {}\n\n async _getInfo() {\n return {}\n }\n\n async _lock(path) {\n return () => Promise.resolve()\n }\n\n async _getSize(file) {\n throw new Error('Not implemented')\n }\n\n async _list(dir) {\n throw new Error('Not implemented')\n }\n\n async _mkdir(dir) {\n throw new Error('Not implemented')\n }\n\n async _mktree(dir, { mode } = {}) {\n try {\n return await this.__mkdir(dir, { mode })\n } catch (error) {\n if (error.code !== 'ENOENT') {\n throw error\n }\n }\n\n await this._mktree(dirname(dir), { mode })\n return this._mktree(dir, { mode })\n }\n\n async _openFile(path, flags) {\n throw new Error('Not implemented')\n }\n\n async _outputFile(file, data, { dirMode, flags }) {\n try {\n return await this._writeFile(file, data, { flags })\n } catch (error) {\n if (error.code !== 'ENOENT') {\n throw error\n }\n }\n\n await this._mktree(dirname(file), { mode: dirMode })\n return this._outputFile(file, data, { flags })\n }\n\n async _outputStream(path, input, { dirMode, validator }) {\n const tmpPath = `${dirname(path)}/.${basename(path)}`\n const output = await this.createOutputStream(tmpPath, {\n dirMode,\n })\n try {\n await fromCallback(pipeline, input, output)\n if (validator !== undefined) {\n await validator.call(this, tmpPath)\n }\n await this.rename(tmpPath, path)\n } catch (error) {\n await this.unlink(tmpPath)\n throw error\n }\n }\n\n _read(file, buffer, position) {\n throw new Error('Not implemented')\n }\n\n _readFile(file, options) {\n return this._createReadStream(file, { ...options, highWaterMark: this._highWaterMark }).then(getStream.buffer)\n }\n\n async _rename(oldPath, newPath) {\n throw new Error('Not implemented')\n }\n async _copy(oldPath, newPath) {\n throw new Error('Not implemented')\n }\n\n async _rmdir(dir) {\n throw new Error('Not implemented')\n }\n\n async _rmtree(dir) {\n try {\n return await this._rmdir(dir)\n } catch (error) {\n if (error.code !== 'ENOTEMPTY') {\n throw error\n }\n }\n\n const files = await this._list(dir)\n await asyncMapSettled(files, file =>\n this._unlink(`${dir}/${file}`).catch(error => {\n if (error.code === 'EISDIR') {\n return this._rmtree(`${dir}/${file}`)\n }\n throw error\n })\n )\n return this._rmtree(dir)\n }\n\n // called to initialize the remote\n async _sync() {}\n\n async _unlink(file) {\n throw new Error('Not implemented')\n }\n\n async _write(file, buffer, position) {\n const isPath = typeof file === 'string'\n if (isPath) {\n file = await this.__openFile(file, 'r+')\n }\n try {\n return await this._writeFd(file, buffer, position)\n } finally {\n if (isPath) {\n await this.__closeFile(file)\n }\n }\n }\n\n async _writeFd(fd, buffer, position) {\n throw new Error('Not implemented')\n }\n\n async _writeFile(file, data, options) {\n throw new Error('Not implemented')\n }\n}\n\nfunction createPrefixWrapperMethods() {\n const pPw = PrefixWrapper.prototype\n const pRha = RemoteHandlerAbstract.prototype\n\n const {\n defineProperty,\n getOwnPropertyDescriptor,\n prototype: { hasOwnProperty },\n } = Object\n\n Object.getOwnPropertyNames(pRha).forEach(name => {\n let descriptor, value\n if (\n hasOwnProperty.call(pPw, name) ||\n name[0] === '_' ||\n typeof (value = (descriptor = getOwnPropertyDescriptor(pRha, name)).value) !== 'function'\n ) {\n return\n }\n\n descriptor.value = function () {\n let path\n if (arguments.length !== 0 && typeof (path = arguments[0]) === 'string') {\n arguments[0] = this._resolve(path)\n }\n return value.apply(this._handler, arguments)\n }\n\n defineProperty(pPw, name, descriptor)\n })\n}\ncreatePrefixWrapperMethods()\n"],"file":"abstract.js"}
|
|
1
|
+
{"version":3,"file":"abstract.js","names":["checksumFile","file","computeRate","hrtime","size","seconds","DEFAULT_TIMEOUT","DEFAULT_MAX_PARALLEL_OPERATIONS","ignoreEnoent","error","code","noop","Function","prototype","PrefixWrapper","constructor","handler","prefix","_prefix","_handler","type","list","dir","opts","entries","_resolve","prependDir","n","length","forEach","entry","i","slice","rename","oldPath","newPath","path","normalizePath","RemoteHandlerAbstract","synchronized","remote","options","url","_remote","parse","Error","highWaterMark","_highWaterMark","timeout","_timeout","sharedLimit","limitConcurrency","maxParallelOperations","closeFile","copy","getInfo","getSize","mkdir","openFile","outputFile","read","readFile","rmdir","truncate","unlink","write","writeFile","_forget","coalesceCalls","_sync","addPrefix","fd","__closeFile","createOutputStream","checksum","dirMode","streamP","call","_createOutputStream","flags","checksumStream","createChecksumStream","forwardError","emit","stream","on","pipe","checksumWritten","then","value","_outputFile","catch","createReadStream","ignoreMissingChecksum","_createReadStream","promise","fromEvent","undefined","end","start","Promise","all","ignoreErrors","_getSize","_readFile","validChecksumOfReadStream","String","trim","outputStream","input","validator","pipeline","_outputStream","forget","_getInfo","filter","ignoreMissing","virtualDir","_list","lock","dispose","_lock","mode","__mkdir","mktree","_mktree","__openFile","data","buffer","position","_read","p","_rename","_copy","_rmdir","rmtree","_rmtree","sync","test","SIZE","testFileName","Date","now","fromCallback","randomBytes","step","writeStart","process","writeDuration","readStart","readDuration","equals","success","writeRate","readRate","message","_unlink","len","_truncate","_write","_writeFile","_closeFile","_mkdir","_openFile","_createWriteStream","dirname","resolve","tmpPath","basename","output","getStream","files","asyncMapSettled","isPath","_writeFd","createPrefixWrapperMethods","pPw","pRha","defineProperty","getOwnPropertyDescriptor","hasOwnProperty","Object","getOwnPropertyNames","name","descriptor","arguments","apply"],"sources":["../src/abstract.js"],"sourcesContent":["import asyncMapSettled from '@xen-orchestra/async-map/legacy'\nimport getStream from 'get-stream'\nimport { coalesceCalls } from '@vates/coalesce-calls'\nimport { fromCallback, fromEvent, ignoreErrors, timeout } from 'promise-toolbox'\nimport { limitConcurrency } from 'limit-concurrency-decorator'\nimport { parse } from 'xo-remote-parser'\nimport { pipeline } from 'stream'\nimport { randomBytes } from 'crypto'\nimport { synchronized } from 'decorator-synchronized'\n\nimport { basename, dirname, normalize as normalizePath } from './_path'\nimport { createChecksumStream, validChecksumOfReadStream } from './checksum'\n\nconst checksumFile = file => file + '.checksum'\nconst computeRate = (hrtime, size) => {\n const seconds = hrtime[0] + hrtime[1] / 1e9\n return size / seconds\n}\n\nconst DEFAULT_TIMEOUT = 6e5 // 10 min\nconst DEFAULT_MAX_PARALLEL_OPERATIONS = 10\n\nconst ignoreEnoent = error => {\n if (error == null || error.code !== 'ENOENT') {\n throw error\n }\n}\n\nconst noop = Function.prototype\n\nclass PrefixWrapper {\n constructor(handler, prefix) {\n this._prefix = prefix\n this._handler = handler\n }\n\n get type() {\n return this._handler.type\n }\n\n // necessary to remove the prefix from the path with `prependDir` option\n async list(dir, opts) {\n const entries = await this._handler.list(this._resolve(dir), opts)\n if (opts != null && opts.prependDir) {\n const n = this._prefix.length\n entries.forEach((entry, i, entries) => {\n entries[i] = entry.slice(n)\n })\n }\n return entries\n }\n\n rename(oldPath, newPath) {\n return this._handler.rename(this._resolve(oldPath), this._resolve(newPath))\n }\n\n _resolve(path) {\n return this._prefix + normalizePath(path)\n }\n}\n\nexport default class RemoteHandlerAbstract {\n constructor(remote, options = {}) {\n if (remote.url === 'test://') {\n this._remote = remote\n } else {\n this._remote = { ...remote, ...parse(remote.url) }\n if (this._remote.type !== this.type) {\n throw new Error('Incorrect remote type')\n }\n }\n ;({ highWaterMark: this._highWaterMark, timeout: this._timeout = DEFAULT_TIMEOUT } = options)\n\n const sharedLimit = limitConcurrency(options.maxParallelOperations ?? DEFAULT_MAX_PARALLEL_OPERATIONS)\n this.closeFile = sharedLimit(this.closeFile)\n this.copy = sharedLimit(this.copy)\n this.getInfo = sharedLimit(this.getInfo)\n this.getSize = sharedLimit(this.getSize)\n this.list = sharedLimit(this.list)\n this.mkdir = sharedLimit(this.mkdir)\n this.openFile = sharedLimit(this.openFile)\n this.outputFile = sharedLimit(this.outputFile)\n this.read = sharedLimit(this.read)\n this.readFile = sharedLimit(this.readFile)\n this.rename = sharedLimit(this.rename)\n this.rmdir = sharedLimit(this.rmdir)\n this.truncate = sharedLimit(this.truncate)\n this.unlink = sharedLimit(this.unlink)\n this.write = sharedLimit(this.write)\n this.writeFile = sharedLimit(this.writeFile)\n\n this._forget = coalesceCalls(this._forget)\n this._sync = coalesceCalls(this._sync)\n }\n\n // Public members\n\n get type() {\n throw new Error('Not implemented')\n }\n\n addPrefix(prefix) {\n prefix = normalizePath(prefix)\n return prefix === '/' ? this : new PrefixWrapper(this, prefix)\n }\n\n async closeFile(fd) {\n await this.__closeFile(fd)\n }\n\n // TODO: remove method\n async createOutputStream(file, { checksum = false, dirMode, ...options } = {}) {\n if (typeof file === 'string') {\n file = normalizePath(file)\n }\n const path = typeof file === 'string' ? file : file.path\n const streamP = timeout.call(\n this._createOutputStream(file, {\n dirMode,\n flags: 'wx',\n ...options,\n }),\n this._timeout\n )\n\n if (!checksum) {\n return streamP\n }\n\n const checksumStream = createChecksumStream()\n const forwardError = error => {\n checksumStream.emit('error', error)\n }\n\n const stream = await streamP\n stream.on('error', forwardError)\n checksumStream.pipe(stream)\n\n checksumStream.checksumWritten = checksumStream.checksum\n .then(value => this._outputFile(checksumFile(path), value, { flags: 'wx' }))\n .catch(forwardError)\n\n return checksumStream\n }\n\n createReadStream(file, { checksum = false, ignoreMissingChecksum = false, ...options } = {}) {\n if (typeof file === 'string') {\n file = normalizePath(file)\n }\n const path = typeof file === 'string' ? file : file.path\n const streamP = timeout\n .call(this._createReadStream(file, { ...options, highWaterMark: this._highWaterMark }), this._timeout)\n .then(stream => {\n // detect early errors\n let promise = fromEvent(stream, 'readable')\n\n // try to add the length prop if missing and not a range stream\n if (stream.length === undefined && options.end === undefined && options.start === undefined) {\n promise = Promise.all([\n promise,\n ignoreErrors.call(\n this._getSize(file).then(size => {\n stream.length = size\n })\n ),\n ])\n }\n\n return promise.then(() => stream)\n })\n\n if (!checksum) {\n return streamP\n }\n\n // avoid a unhandled rejection warning\n ignoreErrors.call(streamP)\n\n return this._readFile(checksumFile(path), { flags: 'r' }).then(\n checksum =>\n streamP.then(stream => {\n const { length } = stream\n stream = validChecksumOfReadStream(stream, String(checksum).trim())\n stream.length = length\n\n return stream\n }),\n error => {\n if (ignoreMissingChecksum && error && error.code === 'ENOENT') {\n return streamP\n }\n throw error\n }\n )\n }\n\n /**\n * write a stream to a file using a temporary file\n *\n * @param {string} path\n * @param {ReadableStream} input\n * @param {object} [options]\n * @param {boolean} [options.checksum]\n * @param {number} [options.dirMode]\n * @param {(this: RemoteHandlerAbstract, path: string) => Promise<undefined>} [options.validator] Function that will be called before the data is commited to the remote, if it fails, file should not exist\n */\n async outputStream(path, input, { checksum = true, dirMode, validator } = {}) {\n path = normalizePath(path)\n let checksumStream\n if (checksum) {\n checksumStream = createChecksumStream()\n pipeline(input, checksumStream, noop)\n input = checksumStream\n }\n await this._outputStream(path, input, {\n dirMode,\n validator,\n })\n if (checksum) {\n await this._outputFile(checksumFile(path), await checksumStream.checksum, { dirMode, flags: 'wx' })\n }\n }\n\n // Free the resources possibly dedicated to put the remote at work, when it\n // is no more needed\n //\n // FIXME: Some handlers are implemented based on system-wide mecanisms (such\n // as mount), forgetting them might breaking other processes using the same\n // remote.\n @synchronized()\n async forget() {\n await this._forget()\n }\n\n async getInfo() {\n return timeout.call(this._getInfo(), this._timeout)\n }\n\n async getSize(file) {\n return timeout.call(this._getSize(typeof file === 'string' ? normalizePath(file) : file), this._timeout)\n }\n\n async list(dir, { filter, ignoreMissing = false, prependDir = false } = {}) {\n try {\n const virtualDir = normalizePath(dir)\n dir = normalizePath(dir)\n\n let entries = await timeout.call(this._list(dir), this._timeout)\n if (filter !== undefined) {\n entries = entries.filter(filter)\n }\n\n if (prependDir) {\n entries.forEach((entry, i) => {\n entries[i] = virtualDir + '/' + entry\n })\n }\n\n return entries\n } catch (error) {\n if (ignoreMissing && error?.code === 'ENOENT') {\n return []\n }\n throw error\n }\n }\n\n async lock(path) {\n path = normalizePath(path)\n return { dispose: await this._lock(path) }\n }\n\n async mkdir(dir, { mode } = {}) {\n await this.__mkdir(normalizePath(dir), { mode })\n }\n\n async mktree(dir, { mode } = {}) {\n await this._mktree(normalizePath(dir), { mode })\n }\n\n openFile(path, flags) {\n return this.__openFile(path, flags)\n }\n\n async outputFile(file, data, { dirMode, flags = 'wx' } = {}) {\n await this._outputFile(normalizePath(file), data, { dirMode, flags })\n }\n\n async read(file, buffer, position) {\n return this._read(typeof file === 'string' ? normalizePath(file) : file, buffer, position)\n }\n\n async readFile(file, { flags = 'r' } = {}) {\n return this._readFile(normalizePath(file), { flags })\n }\n\n async rename(oldPath, newPath, { checksum = false } = {}) {\n oldPath = normalizePath(oldPath)\n newPath = normalizePath(newPath)\n\n let p = timeout.call(this._rename(oldPath, newPath), this._timeout)\n if (checksum) {\n p = Promise.all([p, this._rename(checksumFile(oldPath), checksumFile(newPath))])\n }\n return p\n }\n\n async copy(oldPath, newPath, { checksum = false } = {}) {\n oldPath = normalizePath(oldPath)\n newPath = normalizePath(newPath)\n\n let p = timeout.call(this._copy(oldPath, newPath), this._timeout)\n if (checksum) {\n p = Promise.all([p, this._copy(checksumFile(oldPath), checksumFile(newPath))])\n }\n return p\n }\n\n async rmdir(dir) {\n await timeout.call(this._rmdir(normalizePath(dir)).catch(ignoreEnoent), this._timeout)\n }\n\n async rmtree(dir) {\n await this._rmtree(normalizePath(dir))\n }\n\n // Asks the handler to sync the state of the effective remote with its'\n // metadata\n //\n // This method MUST ALWAYS be called before using the handler.\n @synchronized()\n async sync() {\n await this._sync()\n }\n\n async test() {\n const SIZE = 1024 * 1024 * 10\n const testFileName = normalizePath(`${Date.now()}.test`)\n const data = await fromCallback(randomBytes, SIZE)\n let step = 'write'\n try {\n const writeStart = process.hrtime()\n await this._outputFile(testFileName, data, { flags: 'wx' })\n const writeDuration = process.hrtime(writeStart)\n\n step = 'read'\n const readStart = process.hrtime()\n const read = await this._readFile(testFileName, { flags: 'r' })\n const readDuration = process.hrtime(readStart)\n\n if (!data.equals(read)) {\n throw new Error('output and input did not match')\n }\n return {\n success: true,\n writeRate: computeRate(writeDuration, SIZE),\n readRate: computeRate(readDuration, SIZE),\n }\n } catch (error) {\n return {\n success: false,\n step,\n file: testFileName,\n error: error.message || String(error),\n }\n } finally {\n ignoreErrors.call(this._unlink(testFileName))\n }\n }\n\n async truncate(file, len) {\n await this._truncate(file, len)\n }\n\n async unlink(file, { checksum = true } = {}) {\n file = normalizePath(file)\n\n if (checksum) {\n ignoreErrors.call(this._unlink(checksumFile(file)))\n }\n\n await this._unlink(file).catch(ignoreEnoent)\n }\n\n async write(file, buffer, position) {\n await this._write(typeof file === 'string' ? normalizePath(file) : file, buffer, position)\n }\n\n async writeFile(file, data, { flags = 'wx' } = {}) {\n await this._writeFile(normalizePath(file), data, { flags })\n }\n\n // Methods that can be called by private methods to avoid parallel limit on public methods\n\n async __closeFile(fd) {\n await timeout.call(this._closeFile(fd.fd), this._timeout)\n }\n\n async __mkdir(dir, { mode } = {}) {\n try {\n await this._mkdir(dir, { mode })\n } catch (error) {\n if (error == null || error.code !== 'EEXIST') {\n throw error\n }\n\n // this operation will throw if it's not already a directory\n await this._list(dir)\n }\n }\n\n async __openFile(path, flags) {\n path = normalizePath(path)\n\n return {\n fd: await timeout.call(this._openFile(path, flags), this._timeout),\n path,\n }\n }\n\n // Methods that can be implemented by inheriting classes\n\n async _closeFile(fd) {\n throw new Error('Not implemented')\n }\n\n async _createOutputStream(file, { dirMode, ...options } = {}) {\n try {\n return await this._createWriteStream(file, { ...options, highWaterMark: this._highWaterMark })\n } catch (error) {\n if (typeof file !== 'string' || error.code !== 'ENOENT') {\n throw error\n }\n }\n\n await this._mktree(dirname(file), { mode: dirMode })\n return this._createOutputStream(file, options)\n }\n\n async _createReadStream(file, options) {\n throw new Error('Not implemented')\n }\n\n // createWriteStream takes highWaterMark as option even if it's not documented.\n // Source: https://stackoverflow.com/questions/55026306/how-to-set-writeable-highwatermark\n async _createWriteStream(file, options) {\n throw new Error('Not implemented')\n }\n\n // called to finalize the remote\n async _forget() {}\n\n async _getInfo() {\n return {}\n }\n\n async _lock(path) {\n return () => Promise.resolve()\n }\n\n async _getSize(file) {\n throw new Error('Not implemented')\n }\n\n async _list(dir) {\n throw new Error('Not implemented')\n }\n\n async _mkdir(dir) {\n throw new Error('Not implemented')\n }\n\n async _mktree(dir, { mode } = {}) {\n try {\n return await this.__mkdir(dir, { mode })\n } catch (error) {\n if (error.code !== 'ENOENT') {\n throw error\n }\n }\n\n await this._mktree(dirname(dir), { mode })\n return this._mktree(dir, { mode })\n }\n\n async _openFile(path, flags) {\n throw new Error('Not implemented')\n }\n\n async _outputFile(file, data, { dirMode, flags }) {\n try {\n return await this._writeFile(file, data, { flags })\n } catch (error) {\n if (error.code !== 'ENOENT') {\n throw error\n }\n }\n\n await this._mktree(dirname(file), { mode: dirMode })\n return this._outputFile(file, data, { flags })\n }\n\n async _outputStream(path, input, { dirMode, validator }) {\n const tmpPath = `${dirname(path)}/.${basename(path)}`\n const output = await this.createOutputStream(tmpPath, {\n dirMode,\n })\n try {\n await fromCallback(pipeline, input, output)\n if (validator !== undefined) {\n await validator.call(this, tmpPath)\n }\n await this.rename(tmpPath, path)\n } catch (error) {\n await this.unlink(tmpPath)\n throw error\n }\n }\n\n _read(file, buffer, position) {\n throw new Error('Not implemented')\n }\n\n _readFile(file, options) {\n return this._createReadStream(file, { ...options, highWaterMark: this._highWaterMark }).then(getStream.buffer)\n }\n\n async _rename(oldPath, newPath) {\n throw new Error('Not implemented')\n }\n async _copy(oldPath, newPath) {\n throw new Error('Not implemented')\n }\n\n async _rmdir(dir) {\n throw new Error('Not implemented')\n }\n\n async _rmtree(dir) {\n try {\n return await this._rmdir(dir)\n } catch (error) {\n if (error.code !== 'ENOTEMPTY') {\n throw error\n }\n }\n\n const files = await this._list(dir)\n await asyncMapSettled(files, file =>\n this._unlink(`${dir}/${file}`).catch(error => {\n // Unlink dir behavior is not consistent across platforms\n // https://github.com/nodejs/node-v0.x-archive/issues/5791\n if (error.code === 'EISDIR' || error.code === 'EPERM') {\n return this._rmtree(`${dir}/${file}`)\n }\n throw error\n })\n )\n return this._rmtree(dir)\n }\n\n // called to initialize the remote\n async _sync() {}\n\n async _unlink(file) {\n throw new Error('Not implemented')\n }\n\n async _write(file, buffer, position) {\n const isPath = typeof file === 'string'\n if (isPath) {\n file = await this.__openFile(file, 'r+')\n }\n try {\n return await this._writeFd(file, buffer, position)\n } finally {\n if (isPath) {\n await this.__closeFile(file)\n }\n }\n }\n\n async _writeFd(fd, buffer, position) {\n throw new Error('Not implemented')\n }\n\n async _writeFile(file, data, options) {\n throw new Error('Not implemented')\n }\n}\n\nfunction createPrefixWrapperMethods() {\n const pPw = PrefixWrapper.prototype\n const pRha = RemoteHandlerAbstract.prototype\n\n const {\n defineProperty,\n getOwnPropertyDescriptor,\n prototype: { hasOwnProperty },\n } = Object\n\n Object.getOwnPropertyNames(pRha).forEach(name => {\n let descriptor, value\n if (\n hasOwnProperty.call(pPw, name) ||\n name[0] === '_' ||\n typeof (value = (descriptor = getOwnPropertyDescriptor(pRha, name)).value) !== 'function'\n ) {\n return\n }\n\n descriptor.value = function () {\n let path\n if (arguments.length !== 0 && typeof (path = arguments[0]) === 'string') {\n arguments[0] = this._resolve(path)\n }\n return value.apply(this._handler, arguments)\n }\n\n defineProperty(pPw, name, descriptor)\n })\n}\ncreatePrefixWrapperMethods()\n"],"mappings":"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"}
|
package/dist/checksum.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"checksum.js","names":["ALGORITHM_TO_ID","md5","sha256","sha512","ID_TO_ALGORITHM","createChecksumStream","algorithm","algorithmId","Error","hash","createHash","promise","resolve","reject","defer","stream","through2","chunk","enc","callback","update","digest","once","checksum","validChecksumOfReadStream","expectedChecksum","slice","indexOf","wrapper","pipe","highWaterMark","on","error","emit","checksumVerified","fromEvent"],"sources":["../src/checksum.js"],"sourcesContent":["import through2 from 'through2'\nimport { createHash } from 'crypto'\nimport { defer, fromEvent } from 'promise-toolbox'\nimport { invert } from 'lodash'\n\n// Format: $<algorithm>$<salt>$<encrypted>\n//\n// http://man7.org/linux/man-pages/man3/crypt.3.html#NOTES\nconst ALGORITHM_TO_ID = {\n md5: '1',\n sha256: '5',\n sha512: '6',\n}\n\nconst ID_TO_ALGORITHM = invert(ALGORITHM_TO_ID)\n\n// Create a through stream which computes the checksum of all data going\n// through.\n//\n// The `checksum` attribute is a promise which resolves at the end of the stream\n// with a string representation of the checksum.\n//\n// const source = ...\n// const checksumStream = source.pipe(createChecksumStream())\n// checksumStream.resume() // make the data flow without an output\n// console.log(await checksumStream.checksum)\nexport const createChecksumStream = (algorithm = 'md5') => {\n const algorithmId = ALGORITHM_TO_ID[algorithm]\n\n if (!algorithmId) {\n throw new Error(`unknown algorithm: ${algorithm}`)\n }\n\n const hash = createHash(algorithm)\n const { promise, resolve, reject } = defer()\n\n const stream = through2(\n (chunk, enc, callback) => {\n hash.update(chunk)\n callback(null, chunk)\n },\n callback => {\n resolve(`$${algorithmId}$$${hash.digest('hex')}`)\n callback()\n }\n ).once('error', reject)\n stream.checksum = promise\n return stream\n}\n\n// Check if the checksum of a readable stream is equals to an expected checksum.\n// The given stream is wrapped in a stream which emits an error event\n// if the computed checksum is not equals to the expected checksum.\nexport const validChecksumOfReadStream = (stream, expectedChecksum) => {\n const algorithmId = expectedChecksum.slice(1, expectedChecksum.indexOf('$', 1))\n\n if (!algorithmId) {\n throw new Error(`unknown algorithm: ${algorithmId}`)\n }\n\n const hash = createHash(ID_TO_ALGORITHM[algorithmId])\n\n const wrapper = stream.pipe(\n through2(\n { highWaterMark: 0 },\n (chunk, enc, callback) => {\n hash.update(chunk)\n callback(null, chunk)\n },\n callback => {\n const checksum = `$${algorithmId}$$${hash.digest('hex')}`\n\n callback(\n checksum !== expectedChecksum ? new Error(`Bad checksum (${checksum}), expected: ${expectedChecksum}`) : null\n )\n }\n )\n )\n\n stream.on('error', error => wrapper.emit('error', error))\n wrapper.checksumVerified = fromEvent(wrapper, 'end')\n\n return wrapper\n}\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;;;AAMA,MAAMA,eAAe,GAAG;EACtBC,GAAG,EAAE,GADiB;EAEtBC,MAAM,EAAE,GAFc;EAGtBC,MAAM,EAAE;AAHc,CAAxB;AAMA,MAAMC,eAAe,GAAG,sBAAOJ,eAAP,CAAxB;;AAYO,MAAMK,oBAAoB,GAAG,CAACC,SAAS,GAAG,KAAb,KAAuB;EACzD,MAAMC,WAAW,GAAGP,eAAe,CAACM,SAAD,CAAnC;;EAEA,IAAI,CAACC,WAAL,EAAkB;IAChB,MAAM,IAAIC,KAAJ,CAAW,sBAAqBF,SAAU,EAA1C,CAAN;EACD;;EAED,MAAMG,IAAI,GAAG,IAAAC,kBAAA,EAAWJ,SAAX,CAAb;EACA,MAAM;IAAEK,OAAF;IAAWC,OAAX;IAAoBC;EAApB,IAA+B,IAAAC,qBAAA,GAArC;EAEA,MAAMC,MAAM,GAAG,IAAAC,gBAAA,EACb,CAACC,KAAD,EAAQC,GAAR,EAAaC,QAAb,KAA0B;IACxBV,IAAI,CAACW,MAAL,CAAYH,KAAZ;IACAE,QAAQ,CAAC,IAAD,EAAOF,KAAP,CAAR;EACD,CAJY,EAKbE,QAAQ,IAAI;IACVP,OAAO,CAAE,IAAGL,WAAY,KAAIE,IAAI,CAACY,MAAL,CAAY,KAAZ,CAAmB,EAAxC,CAAP;IACAF,QAAQ;EACT,CARY,EASbG,IATa,CASR,OATQ,EASCT,MATD,CAAf;EAUAE,MAAM,CAACQ,QAAP,GAAkBZ,OAAlB;EACA,OAAOI,MAAP;AACD,CAtBM;;;;AA2BA,MAAMS,yBAAyB,GAAG,CAACT,MAAD,EAASU,gBAAT,KAA8B;EACrE,MAAMlB,WAAW,GAAGkB,gBAAgB,CAACC,KAAjB,CAAuB,CAAvB,EAA0BD,gBAAgB,CAACE,OAAjB,CAAyB,GAAzB,EAA8B,CAA9B,CAA1B,CAApB;;EAEA,IAAI,CAACpB,WAAL,EAAkB;IAChB,MAAM,IAAIC,KAAJ,CAAW,sBAAqBD,WAAY,EAA5C,CAAN;EACD;;EAED,MAAME,IAAI,GAAG,IAAAC,kBAAA,EAAWN,eAAe,CAACG,WAAD,CAA1B,CAAb;EAEA,MAAMqB,OAAO,GAAGb,MAAM,CAACc,IAAP,CACd,IAAAb,gBAAA,EACE;IAAEc,aAAa,EAAE;EAAjB,CADF,EAEE,CAACb,KAAD,EAAQC,GAAR,EAAaC,QAAb,KAA0B;IACxBV,IAAI,CAACW,MAAL,CAAYH,KAAZ;IACAE,QAAQ,CAAC,IAAD,EAAOF,KAAP,CAAR;EACD,CALH,EAMEE,QAAQ,IAAI;IACV,MAAMI,QAAQ,GAAI,IAAGhB,WAAY,KAAIE,IAAI,CAACY,MAAL,CAAY,KAAZ,CAAmB,EAAxD;IAEAF,QAAQ,CACNI,QAAQ,KAAKE,gBAAb,GAAgC,IAAIjB,KAAJ,CAAW,iBAAgBe,QAAS,gBAAeE,gBAAiB,EAApE,CAAhC,GAAyG,IADnG,CAAR;EAGD,CAZH,CADc,CAAhB;EAiBAV,MAAM,CAACgB,EAAP,CAAU,OAAV,EAAmBC,KAAK,IAAIJ,OAAO,CAACK,IAAR,CAAa,OAAb,EAAsBD,KAAtB,CAA5B;EACAJ,OAAO,CAACM,gBAAR,GAA2B,IAAAC,yBAAA,EAAUP,OAAV,EAAmB,KAAnB,CAA3B;EAEA,OAAOA,OAAP;AACD,CA9BM"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["HANDLERS","file","RemoteHandlerLocal","nfs","RemoteHandlerNfs","s3","RemoteHandlerS3","execa","sync","smb","RemoteHandlerSmbMount","_","RemoteHandlerSmb","getHandler","remote","rest","Handler","parse","url","type","Error","getSyncedHandler","opts","handler","dispose","forget","value"],"sources":["../src/index.js"],"sourcesContent":["import execa from 'execa'\nimport { parse } from 'xo-remote-parser'\n\nimport RemoteHandlerLocal from './local'\nimport RemoteHandlerNfs from './nfs'\nimport RemoteHandlerS3 from './s3'\nimport RemoteHandlerSmb from './smb'\nimport RemoteHandlerSmbMount from './smb-mount'\n\nconst HANDLERS = {\n file: RemoteHandlerLocal,\n nfs: RemoteHandlerNfs,\n s3: RemoteHandlerS3,\n}\n\ntry {\n execa.sync('mount.cifs', ['-V'])\n HANDLERS.smb = RemoteHandlerSmbMount\n} catch (_) {\n HANDLERS.smb = RemoteHandlerSmb\n}\n\nexport const getHandler = (remote, ...rest) => {\n const Handler = HANDLERS[parse(remote.url).type]\n if (!Handler) {\n throw new Error('Unhandled remote type')\n }\n return new Handler(remote, ...rest)\n}\n\nexport const getSyncedHandler = async (...opts) => {\n const handler = getHandler(...opts)\n await handler.sync()\n return {\n dispose: () => handler.forget(),\n value: handler,\n }\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;;;AAEA,MAAMA,QAAQ,GAAG;EACfC,IAAI,EAAEC,cADS;EAEfC,GAAG,EAAEC,YAFU;EAGfC,EAAE,EAAEC;AAHW,CAAjB;;AAMA,IAAI;EACFC,cAAA,CAAMC,IAAN,CAAW,YAAX,EAAyB,CAAC,IAAD,CAAzB;;EACAR,QAAQ,CAACS,GAAT,GAAeC,iBAAf;AACD,CAHD,CAGE,OAAOC,CAAP,EAAU;EACVX,QAAQ,CAACS,GAAT,GAAeG,YAAf;AACD;;AAEM,MAAMC,UAAU,GAAG,CAACC,MAAD,EAAS,GAAGC,IAAZ,KAAqB;EAC7C,MAAMC,OAAO,GAAGhB,QAAQ,CAAC,IAAAiB,qBAAA,EAAMH,MAAM,CAACI,GAAb,EAAkBC,IAAnB,CAAxB;;EACA,IAAI,CAACH,OAAL,EAAc;IACZ,MAAM,IAAII,KAAJ,CAAU,uBAAV,CAAN;EACD;;EACD,OAAO,IAAIJ,OAAJ,CAAYF,MAAZ,EAAoB,GAAGC,IAAvB,CAAP;AACD,CANM;;;;AAQA,MAAMM,gBAAgB,GAAG,OAAO,GAAGC,IAAV,KAAmB;EACjD,MAAMC,OAAO,GAAGV,UAAU,CAAC,GAAGS,IAAJ,CAA1B;EACA,MAAMC,OAAO,CAACf,IAAR,EAAN;EACA,OAAO;IACLgB,OAAO,EAAE,MAAMD,OAAO,CAACE,MAAR,EADV;IAELC,KAAK,EAAEH;EAFF,CAAP;AAID,CAPM"}
|
package/dist/local.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"local.js","names":["LocalHandler","RemoteHandlerAbstract","constructor","remote","opts","_retriesOnEagain","delay","retries","retriesOnEagain","when","code","type","_getRealPath","_remote","path","_getFilePath","file","_closeFile","fd","fs","close","_copy","oldPath","newPath","copy","_createReadStream","options","stream","createReadStream","fromEvent","autoClose","_createWriteStream","createWriteStream","_getInfo","info","df","Object","keys","forEach","key","Number","isNaN","_getSize","stats","stat","size","_list","dir","readdir","_lock","lockfile","lock","_mkdir","mode","mkdir","_openFile","flags","open","_read","buffer","position","needsClose","read","length","undefined","_readFile","filePath","retry","readFile","_rename","rename","_rmdir","rmdir","_sync","ensureDir","access","R_OK","W_OK","_truncate","len","truncate","_unlink","unlink","_writeFd","write","_writeFile","data","writeFile","flag"],"sources":["../src/local.js"],"sourcesContent":["import df from '@sindresorhus/df'\nimport fs from 'fs-extra'\nimport lockfile from 'proper-lockfile'\nimport { fromEvent, retry } from 'promise-toolbox'\n\nimport RemoteHandlerAbstract from './abstract'\n\nexport default class LocalHandler extends RemoteHandlerAbstract {\n constructor(remote, opts = {}) {\n super(remote)\n this._retriesOnEagain = {\n delay: 1e3,\n retries: 9,\n ...opts.retriesOnEagain,\n when: {\n code: 'EAGAIN',\n },\n }\n }\n get type() {\n return 'file'\n }\n\n _getRealPath() {\n return this._remote.path\n }\n\n _getFilePath(file) {\n return this._getRealPath() + file\n }\n\n async _closeFile(fd) {\n return fs.close(fd)\n }\n\n async _copy(oldPath, newPath) {\n return fs.copy(this._getFilePath(oldPath), this._getFilePath(newPath))\n }\n\n async _createReadStream(file, options) {\n if (typeof file === 'string') {\n const stream = fs.createReadStream(this._getFilePath(file), options)\n await fromEvent(stream, 'open')\n return stream\n }\n return fs.createReadStream('', {\n autoClose: false,\n ...options,\n fd: file.fd,\n })\n }\n\n async _createWriteStream(file, options) {\n if (typeof file === 'string') {\n const stream = fs.createWriteStream(this._getFilePath(file), options)\n await fromEvent(stream, 'open')\n return stream\n }\n return fs.createWriteStream('', {\n autoClose: false,\n ...options,\n fd: file.fd,\n })\n }\n\n async _getInfo() {\n // df.file() resolves with an object with the following properties:\n // filesystem, type, size, used, available, capacity and mountpoint.\n // size, used, available and capacity may be `NaN` so we remove any `NaN`\n // value from the object.\n const info = await df.file(this._getFilePath('/'))\n Object.keys(info).forEach(key => {\n if (Number.isNaN(info[key])) {\n delete info[key]\n }\n })\n\n return info\n }\n\n async _getSize(file) {\n const stats = await fs.stat(this._getFilePath(typeof file === 'string' ? file : file.path))\n return stats.size\n }\n\n async _list(dir) {\n return fs.readdir(this._getFilePath(dir))\n }\n\n _lock(path) {\n return lockfile.lock(this._getFilePath(path))\n }\n\n _mkdir(dir, { mode }) {\n return fs.mkdir(this._getFilePath(dir), { mode })\n }\n\n async _openFile(path, flags) {\n return fs.open(this._getFilePath(path), flags)\n }\n\n async _read(file, buffer, position) {\n const needsClose = typeof file === 'string'\n file = needsClose ? await fs.open(this._getFilePath(file), 'r') : file.fd\n try {\n return await fs.read(file, buffer, 0, buffer.length, position === undefined ? null : position)\n } finally {\n if (needsClose) {\n await fs.close(file)\n }\n }\n }\n\n async _readFile(file, options) {\n const filePath = this._getFilePath(file)\n return await retry(() => fs.readFile(filePath, options), this._retriesOnEagain)\n }\n\n async _rename(oldPath, newPath) {\n return fs.rename(this._getFilePath(oldPath), this._getFilePath(newPath))\n }\n\n async _rmdir(dir) {\n return fs.rmdir(this._getFilePath(dir))\n }\n\n async _sync() {\n const path = this._getRealPath('/')\n await fs.ensureDir(path)\n await fs.access(path, fs.R_OK | fs.W_OK)\n }\n\n _truncate(file, len) {\n return fs.truncate(this._getFilePath(file), len)\n }\n\n async _unlink(file) {\n const filePath = this._getFilePath(file)\n return await retry(() => fs.unlink(filePath), this._retriesOnEagain)\n }\n\n _writeFd(file, buffer, position) {\n return fs.write(file.fd, buffer, 0, buffer.length, position)\n }\n\n _writeFile(file, data, { flags }) {\n return fs.writeFile(this._getFilePath(file), data, { flag: flags })\n }\n}\n"],"mappings":"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"}
|
package/dist/nfs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"nfs.js","names":["NfsHandler","MountHandler","constructor","remote","opts","host","port","path","parse","url","type","device","undefined"],"sources":["../src/nfs.js"],"sourcesContent":["import { parse } from 'xo-remote-parser'\n\nimport MountHandler from './_mount'\n\nexport default class NfsHandler extends MountHandler {\n constructor(remote, opts) {\n const { host, port, path } = parse(remote.url)\n super(remote, opts, {\n type: 'nfs',\n device: `${host}${port !== undefined ? ':' + port : ''}:${path}`,\n })\n }\n\n get type() {\n return 'nfs'\n }\n}\n"],"mappings":";;;;;;;AAAA;;AAEA;;;;AAEe,MAAMA,UAAN,SAAyBC,cAAzB,CAAsC;EACnDC,WAAW,CAACC,MAAD,EAASC,IAAT,EAAe;IACxB,MAAM;MAAEC,IAAF;MAAQC,IAAR;MAAcC;IAAd,IAAuB,IAAAC,qBAAA,EAAML,MAAM,CAACM,GAAb,CAA7B;IACA,MAAMN,MAAN,EAAcC,IAAd,EAAoB;MAClBM,IAAI,EAAE,KADY;MAElBC,MAAM,EAAG,GAAEN,IAAK,GAAEC,IAAI,KAAKM,SAAT,GAAqB,MAAMN,IAA3B,GAAkC,EAAG,IAAGC,IAAK;IAF7C,CAApB;EAID;;EAEO,IAAJG,IAAI,GAAG;IACT,OAAO,KAAP;EACD;;AAXkD"}
|