@verdaccio/local-storage 13.0.0-next-8.4 → 13.0.0-next-8.5

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/build/local-fs.js CHANGED
@@ -94,7 +94,7 @@ class LocalFS {
94
94
  this.logger.error({
95
95
  err,
96
96
  packageName
97
- }, 'error @{err.message} on update package @{packageName}');
97
+ }, 'error on update package @{packageName}: @{err.message}');
98
98
  if (locked) {
99
99
  // eslint-disable-next-line no-useless-catch
100
100
  try {
@@ -140,7 +140,9 @@ class LocalFS {
140
140
  debug('dir: %o does not exist %s', pathName, err?.code);
141
141
  return false;
142
142
  } else {
143
- this.logger.error('error on verify a package exist %o', err);
143
+ this.logger.error({
144
+ err
145
+ }, 'error on verify a package exist: @{err.message}');
144
146
  throw _core.errorUtils.getInternalError('error on verify a package exist');
145
147
  }
146
148
  }
@@ -152,7 +154,7 @@ class LocalFS {
152
154
  * @param manifest package manifest
153
155
  */
154
156
  async createPackage(name, manifest) {
155
- debug('create a a new package %o', name);
157
+ debug('create a new package %o', name);
156
158
  const pathPackage = this._getStorage(packageJSONFileName);
157
159
  try {
158
160
  // https://nodejs.org/dist/latest-v17.x/docs/api/fs.html#file-system-flags
@@ -185,7 +187,7 @@ class LocalFS {
185
187
  this.logger.error({
186
188
  err,
187
189
  name
188
- }, 'error @{err.message} on parse @{name}');
190
+ }, 'error on parse @{name}: @{err.message}');
189
191
  }
190
192
  throw err;
191
193
  }
@@ -229,18 +231,18 @@ class LocalFS {
229
231
  writeStream.on('error', async err => {
230
232
  if (opened) {
231
233
  this.logger.error({
232
- err: err.message,
234
+ err,
233
235
  fileName
234
- }, 'error on open write tarball for @{pkgName}');
236
+ }, 'error on open write tarball for @{fileName}: @{err.message}');
235
237
  // TODO: maybe add .once
236
238
  writeStream.on('close', async () => {
237
239
  await this.removeTempFile(temporalName);
238
240
  });
239
241
  } else {
240
242
  this.logger.error({
241
- err: err.message,
243
+ err,
242
244
  fileName
243
- }, 'error a non open write tarball for @{pkgName}');
245
+ }, 'error on writing tarball for @{fileName}: @{err.message}');
244
246
  await this.removeTempFile(temporalName);
245
247
  }
246
248
  });
@@ -253,8 +255,10 @@ class LocalFS {
253
255
  await renameTmp(temporalName, pathName);
254
256
  } catch (err) {
255
257
  this.logger.error({
256
- err
257
- }, 'error on rename temporal file, please report this is a bug @{err}');
258
+ err,
259
+ temporalName,
260
+ pathName
261
+ }, 'error on rename temporal file @{temporalName} to @{pathName}: @{err.message},' + 'please report this bug');
258
262
  }
259
263
  });
260
264
 
@@ -296,14 +300,13 @@ class LocalFS {
296
300
  }
297
301
  });
298
302
  readStream.on('error', error => {
299
- debug('not tarball found %o for %s message %s', pathName, tarballName, error.message);
303
+ debug('no tarball found %o for %s message %s', pathName, tarballName, error.message);
300
304
  });
301
305
  return readStream;
302
306
  }
303
307
  async _readStorageFile(name) {
304
308
  debug('reading the file: %o', name);
305
309
  try {
306
- debug('reading the file: %o', name);
307
310
  return await (0, _fs2.readFilePromise)(name);
308
311
  } catch (err) {
309
312
  debug('error reading the file: %o with error %o', name, err.message);
@@ -345,8 +348,8 @@ class LocalFS {
345
348
  debug('write file success %s', destiny);
346
349
  } else {
347
350
  this.logger.error({
348
- err: err.message
349
- }, 'error on write file @{err}');
351
+ err
352
+ }, 'error on write file: @{err.message}');
350
353
  throw err;
351
354
  }
352
355
  }
@@ -381,7 +384,7 @@ class LocalFS {
381
384
  } catch (err) {
382
385
  this.logger.error({
383
386
  err
384
- }, 'error on lock file @{err.message}');
387
+ }, 'error on lock file: @{err.message}');
385
388
  debug('error on lock and read json for file: %o', name);
386
389
  throw err;
387
390
  }
@@ -1 +1 @@
1
- {"version":3,"file":"local-fs.js","names":["_debug","_interopRequireDefault","require","_fs","_path","_sanitizeFilename","_stream","_core","_fileLocking","_fs2","e","__esModule","default","fileExist","exports","noSuchFile","resourceNotAvailable","packageJSONFileName","debug","buildDebug","fSError","message","code","err","errorUtils","getCode","tempFile","str","String","Math","random","slice","renameTmp","src","dst","renamePromise","unlinkPromise","LocalFS","constructor","path","logger","updatePackage","packageName","handleUpdate","locked","manifestUpdated","manifest","_lockAndReadJSON","_unlockJSON","error","getInternalError","getNotFound","deletePackage","_getStorage","removePackage","rmdirPromise","hasPackage","pathName","stat","statPromise","isFile","createPackage","name","pathPackage","openPromise","writeFile","_convertToString","savePackage","value","readPackage","res","_readStorageFile","data","JSON","parse","toString","hasTarball","fileName","Promise","resolve","accessPromise","then","catch","removeTempFile","temporalName","writeTarball","signal","checkCreateFolder","join","replace","opened","writeStream","fs","createWriteStream","on","addEventListener","once","readTarball","tarballName","readStream","addAbortSignal","createReadStream","fileDescriptorId","stats","fstatPromise","size","emit","readFilePromise","stringify","storagePath","sanitzers","writeTempFileAndRename","dest","fileContent","tempFilePath","writeFilePromise","destiny","dir","dirname","mkdirPromise","recursive","readFileNext","lock","unlockFileNext"],"sources":["../src/local-fs.ts"],"sourcesContent":["/* eslint-disable no-undef */\nimport buildDebug from 'debug';\nimport fs from 'fs';\nimport path from 'path';\nimport sanitzers from 'sanitize-filename';\nimport { Readable, Writable, addAbortSignal } from 'stream';\n\nimport { VerdaccioError, errorUtils, pluginUtils } from '@verdaccio/core';\nimport { readFileNext, unlockFileNext } from '@verdaccio/file-locking';\nimport { Logger, Manifest } from '@verdaccio/types';\n\nimport {\n accessPromise,\n fstatPromise,\n mkdirPromise,\n openPromise,\n readFilePromise,\n renamePromise,\n rmdirPromise,\n statPromise,\n unlinkPromise,\n writeFilePromise,\n} from './fs';\n\nexport const fileExist = 'EEXISTS';\nexport const noSuchFile = 'ENOENT';\nexport const resourceNotAvailable = 'EAGAIN';\nexport const packageJSONFileName = 'package.json';\n\nexport type ILocalFSPackageManager = pluginUtils.StorageHandler & { path: string };\n\nconst debug = buildDebug('verdaccio:plugin:local-storage:local-fs');\n\nexport const fSError = function (message: string, code = 409): VerdaccioError {\n const err: VerdaccioError = errorUtils.getCode(code, message);\n // FIXME: we should return http-status codes here instead, future improvement\n // @ts-ignore\n err.code = message;\n\n return err;\n};\n\nconst tempFile = function (str): string {\n return `${str}.tmp${String(Math.random()).slice(2)}`;\n};\n\nexport async function renameTmp(src: string, dst: string): Promise<void> {\n debug('rename %s to %s', src, dst);\n try {\n await renamePromise(src, dst);\n } catch (err: any) {\n debug('error rename %s error %s', src, err?.message);\n await unlinkPromise(src);\n }\n}\n\nexport default class LocalFS implements ILocalFSPackageManager {\n public path: string;\n public logger: Logger;\n\n public constructor(path: string, logger: Logger) {\n this.path = path;\n this.logger = logger;\n }\n\n /**\n * This function allows to update the package\n * This function handle the update package logic, for this plugin\n * we need to lock/unlock handlers for thread-safely and then apply\n * the `handleUpdate` and return the result.\n *\n * The lock could fail on several steps so we need to ensure the\n * file does not get locked if the whole process fails.\n *\n Algorithm:\n 1. lock package.json for writing\n 2. read package.json\n 3. apply external update package handler\n 4. return manifest (write is being hanlded into the core)\n 5. rename package.json.tmp package.json\n * @param {*} packageName\n * The update package handler could be different based\n * on the action and handled into the core.\n * @param {*} handleUpdate\n */\n public async updatePackage(\n packageName: string,\n handleUpdate: (manifest: Manifest) => Promise<Manifest>\n ): Promise<Manifest> {\n // this plugin lock files on write, we handle all possible scenarios\n let locked = false;\n let manifestUpdated: Manifest;\n try {\n const manifest = await this._lockAndReadJSON(packageJSONFileName);\n locked = true;\n manifestUpdated = await handleUpdate(manifest);\n if (locked) {\n debug('unlock %s', packageJSONFileName);\n await this._unlockJSON(packageJSONFileName);\n this.logger.debug({ packageName }, 'the package @{packageName} has been updated');\n return manifestUpdated;\n } else {\n this.logger.debug({ packageName }, 'the package @{packageName} has been updated');\n return manifestUpdated;\n }\n } catch (err: any) {\n // we ensure lock the file\n this.logger.error(\n { err, packageName },\n 'error @{err.message} on update package @{packageName}'\n );\n if (locked) {\n // eslint-disable-next-line no-useless-catch\n try {\n await this._unlockJSON(packageJSONFileName);\n // after unlock bubble up error.\n throw err;\n } catch (err: any) {\n // unlock could fail, we bubble up error\n throw errorUtils.getInternalError('resource temporarily unavailable');\n }\n } else {\n if (err.code === resourceNotAvailable) {\n throw errorUtils.getInternalError('resource temporarily unavailable');\n } else if (err.code === noSuchFile) {\n throw errorUtils.getNotFound();\n } else {\n throw err;\n }\n }\n }\n }\n\n public async deletePackage(packageName: string): Promise<void> {\n debug('delete a file/package %o', packageName);\n\n return await unlinkPromise(this._getStorage(packageName));\n }\n\n public async removePackage(): Promise<void> {\n debug('remove a package folder %o', this.path);\n\n await rmdirPromise(this._getStorage('.'));\n }\n\n /**\n * Verify if the package exists already.\n * @param name package name\n * @returns\n */\n public async hasPackage(): Promise<boolean> {\n const pathName: string = this._getStorage(packageJSONFileName);\n try {\n const stat = await statPromise(pathName);\n return stat.isFile();\n } catch (err: any) {\n if (err.code === noSuchFile) {\n debug('dir: %o does not exist %s', pathName, err?.code);\n return false;\n } else {\n this.logger.error('error on verify a package exist %o', err);\n throw errorUtils.getInternalError('error on verify a package exist');\n }\n }\n }\n\n /**\n * Create a package in the local storage, if package already exist fails.\n * @param name package name\n * @param manifest package manifest\n */\n public async createPackage(name: string, manifest: Manifest): Promise<void> {\n debug('create a a new package %o', name);\n const pathPackage = this._getStorage(packageJSONFileName);\n try {\n // https://nodejs.org/dist/latest-v17.x/docs/api/fs.html#file-system-flags\n // 'wx': Like 'w' but fails if the path exists\n await openPromise(pathPackage, 'wx');\n } catch (err: any) {\n // cannot override a pacakge that already exist\n if (err.code === 'EEXIST') {\n debug('file %o cannot be created, it already exists: %o', name);\n throw fSError(fileExist);\n }\n }\n // Create a new file and it´s folder if does not exist previously\n await this.writeFile(pathPackage, this._convertToString(manifest));\n }\n\n public async savePackage(name: string, value: Manifest): Promise<void> {\n debug('save a package %o', name);\n\n await this.writeFile(this._getStorage(packageJSONFileName), this._convertToString(value));\n }\n\n public async readPackage(name: string): Promise<Manifest> {\n debug('read a package %o', name);\n try {\n const res = await this._readStorageFile(this._getStorage(packageJSONFileName));\n const data: any = JSON.parse(res.toString('utf8'));\n\n debug('read storage file %o has succeeded', name);\n return data;\n } catch (err: any) {\n if (err.code !== noSuchFile) {\n debug('parse error');\n this.logger.error({ err, name }, 'error @{err.message} on parse @{name}');\n }\n throw err;\n }\n }\n\n public async hasTarball(fileName: string): Promise<boolean> {\n const pathName: string = this._getStorage(fileName);\n return new Promise((resolve) => {\n accessPromise(pathName)\n .then(() => {\n resolve(true);\n })\n .catch(() => resolve(false));\n });\n }\n\n // remove the temporary file\n private async removeTempFile(temporalName): Promise<void> {\n debug('remove temporal file %o', temporalName);\n await unlinkPromise(temporalName);\n debug('removed temporal file %o', temporalName);\n }\n\n /**\n * Write a tarball into the storage\n * @param fileName package name\n * @param param1\n * @returns\n */\n public async writeTarball(fileName: string, { signal }): Promise<Writable> {\n debug('write a tarball %o', fileName);\n const pathName: string = this._getStorage(fileName);\n await this.checkCreateFolder(pathName);\n // create a temporary file to avoid conflicts or prev corruption files\n const temporalName = path.join(\n this.path,\n `${fileName}.tmp-${String(Math.random()).replace(/^0\\./, '')}`\n );\n\n debug('write a temporal name %o', temporalName);\n let opened = false;\n const writeStream = fs.createWriteStream(temporalName);\n\n writeStream.on('open', () => {\n opened = true;\n });\n\n writeStream.on('error', async (err) => {\n if (opened) {\n this.logger.error(\n { err: err.message, fileName },\n 'error on open write tarball for @{pkgName}'\n );\n // TODO: maybe add .once\n writeStream.on('close', async () => {\n await this.removeTempFile(temporalName);\n });\n } else {\n this.logger.error(\n { err: err.message, fileName },\n 'error a non open write tarball for @{pkgName}'\n );\n await this.removeTempFile(temporalName);\n }\n });\n\n // the 'close' event is emitted when the stream and any of its\n // underlying resources (a file descriptor, for example) have been closed.\n // TODO: maybe add .once\n writeStream.on('close', async () => {\n try {\n await renameTmp(temporalName, pathName);\n } catch (err) {\n this.logger.error(\n { err },\n 'error on rename temporal file, please report this is a bug @{err}'\n );\n }\n });\n\n // if upload is aborted, we clean up the temporal file\n signal?.addEventListener(\n 'abort',\n async () => {\n if (opened) {\n // close always happens, even if error\n writeStream.once('close', async () => {\n await this.removeTempFile(temporalName);\n });\n } else {\n await this.removeTempFile(temporalName);\n }\n },\n { once: true }\n );\n\n return writeStream;\n }\n\n /**\n * Read a tarball from the storage\n * @param tarballName tarball name eg: foo-1.0.0.tgz\n * @param options {signal} abort signal\n * @returns Readable stream\n */\n public async readTarball(tarballName: string, { signal }): Promise<Readable> {\n const pathName: string = this._getStorage(tarballName);\n debug('read a tarball %o', pathName);\n const readStream = addAbortSignal(signal, fs.createReadStream(pathName));\n readStream.on('open', async function (fileDescriptorId: number) {\n // if abort, the descriptor is null\n debug('file descriptor id %o', fileDescriptorId);\n if (fileDescriptorId) {\n const stats = await fstatPromise(fileDescriptorId);\n debug('file size %o', stats.size);\n readStream.emit('content-length', stats.size);\n }\n });\n readStream.on('error', (error) => {\n debug('not tarball found %o for %s message %s', pathName, tarballName, error.message);\n });\n return readStream;\n }\n\n private async _readStorageFile(name: string): Promise<any> {\n debug('reading the file: %o', name);\n try {\n debug('reading the file: %o', name);\n return await readFilePromise(name);\n } catch (err: any) {\n debug('error reading the file: %o with error %o', name, err.message);\n throw err;\n }\n }\n\n private _convertToString(value: Manifest): string {\n return JSON.stringify(value);\n }\n\n public _getStorage(fileName = ''): string {\n const storagePath: string = path.join(this.path, sanitzers(fileName));\n debug('get storage %s', storagePath);\n return storagePath;\n }\n\n private async writeTempFileAndRename(dest: string, fileContent: string): Promise<any> {\n const tempFilePath = tempFile(dest);\n try {\n // write file on temp location\n await this.checkCreateFolder(tempFilePath);\n await writeFilePromise(tempFilePath, fileContent);\n debug('creating a new file:: %o', dest);\n // rename tmp file to original\n await renameTmp(tempFilePath, dest);\n } catch (err: any) {\n debug('error on write the file: %o', dest);\n throw err;\n }\n }\n\n private async writeFile(destiny: string, fileContent: string): Promise<void> {\n try {\n await this.writeTempFileAndRename(destiny, fileContent);\n debug('write file success %s', destiny);\n } catch (err: any) {\n if (err && err.code === noSuchFile) {\n await this.checkCreateFolder(destiny);\n // we try again create the temp file\n debug('writing a temp file %s', destiny);\n await this.writeTempFileAndRename(destiny, fileContent);\n debug('write file success %s', destiny);\n } else {\n this.logger.error({ err: err.message }, 'error on write file @{err}');\n throw err;\n }\n }\n }\n\n private async checkCreateFolder(pathName: string): Promise<void> {\n // Check if folder exists and create it if not\n const dir = path.dirname(pathName);\n try {\n await accessPromise(dir);\n } catch (err: any) {\n if (err.code === noSuchFile) {\n debug('folder does not exist %o', dir);\n await mkdirPromise(dir, { recursive: true });\n debug('folder %o created', dir);\n } else {\n debug('error on check folder %o', dir);\n throw err;\n }\n }\n }\n\n private async _lockAndReadJSON(name: string): Promise<Manifest> {\n const fileName: string = this._getStorage(name);\n debug('lock and read a file %o', fileName);\n try {\n const data = await readFileNext<Manifest>(fileName, {\n lock: true,\n parse: true,\n });\n return data;\n } catch (err) {\n this.logger.error({ err }, 'error on lock file @{err.message}');\n debug('error on lock and read json for file: %o', name);\n\n throw err;\n }\n }\n\n private async _unlockJSON(name: string): Promise<void> {\n await unlockFileNext(this._getStorage(name));\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"local-fs.js","names":["_debug","_interopRequireDefault","require","_fs","_path","_sanitizeFilename","_stream","_core","_fileLocking","_fs2","e","__esModule","default","fileExist","exports","noSuchFile","resourceNotAvailable","packageJSONFileName","debug","buildDebug","fSError","message","code","err","errorUtils","getCode","tempFile","str","String","Math","random","slice","renameTmp","src","dst","renamePromise","unlinkPromise","LocalFS","constructor","path","logger","updatePackage","packageName","handleUpdate","locked","manifestUpdated","manifest","_lockAndReadJSON","_unlockJSON","error","getInternalError","getNotFound","deletePackage","_getStorage","removePackage","rmdirPromise","hasPackage","pathName","stat","statPromise","isFile","createPackage","name","pathPackage","openPromise","writeFile","_convertToString","savePackage","value","readPackage","res","_readStorageFile","data","JSON","parse","toString","hasTarball","fileName","Promise","resolve","accessPromise","then","catch","removeTempFile","temporalName","writeTarball","signal","checkCreateFolder","join","replace","opened","writeStream","fs","createWriteStream","on","addEventListener","once","readTarball","tarballName","readStream","addAbortSignal","createReadStream","fileDescriptorId","stats","fstatPromise","size","emit","readFilePromise","stringify","storagePath","sanitzers","writeTempFileAndRename","dest","fileContent","tempFilePath","writeFilePromise","destiny","dir","dirname","mkdirPromise","recursive","readFileNext","lock","unlockFileNext"],"sources":["../src/local-fs.ts"],"sourcesContent":["/* eslint-disable no-undef */\nimport buildDebug from 'debug';\nimport fs from 'fs';\nimport path from 'path';\nimport sanitzers from 'sanitize-filename';\nimport { Readable, Writable, addAbortSignal } from 'stream';\n\nimport { VerdaccioError, errorUtils, pluginUtils } from '@verdaccio/core';\nimport { readFileNext, unlockFileNext } from '@verdaccio/file-locking';\nimport { Logger, Manifest } from '@verdaccio/types';\n\nimport {\n accessPromise,\n fstatPromise,\n mkdirPromise,\n openPromise,\n readFilePromise,\n renamePromise,\n rmdirPromise,\n statPromise,\n unlinkPromise,\n writeFilePromise,\n} from './fs';\n\nexport const fileExist = 'EEXISTS';\nexport const noSuchFile = 'ENOENT';\nexport const resourceNotAvailable = 'EAGAIN';\nexport const packageJSONFileName = 'package.json';\n\nexport type ILocalFSPackageManager = pluginUtils.StorageHandler & { path: string };\n\nconst debug = buildDebug('verdaccio:plugin:local-storage:local-fs');\n\nexport const fSError = function (message: string, code = 409): VerdaccioError {\n const err: VerdaccioError = errorUtils.getCode(code, message);\n // FIXME: we should return http-status codes here instead, future improvement\n // @ts-ignore\n err.code = message;\n\n return err;\n};\n\nconst tempFile = function (str): string {\n return `${str}.tmp${String(Math.random()).slice(2)}`;\n};\n\nexport async function renameTmp(src: string, dst: string): Promise<void> {\n debug('rename %s to %s', src, dst);\n try {\n await renamePromise(src, dst);\n } catch (err: any) {\n debug('error rename %s error %s', src, err?.message);\n await unlinkPromise(src);\n }\n}\n\nexport default class LocalFS implements ILocalFSPackageManager {\n public path: string;\n public logger: Logger;\n\n public constructor(path: string, logger: Logger) {\n this.path = path;\n this.logger = logger;\n }\n\n /**\n * This function allows to update the package\n * This function handle the update package logic, for this plugin\n * we need to lock/unlock handlers for thread-safely and then apply\n * the `handleUpdate` and return the result.\n *\n * The lock could fail on several steps so we need to ensure the\n * file does not get locked if the whole process fails.\n *\n Algorithm:\n 1. lock package.json for writing\n 2. read package.json\n 3. apply external update package handler\n 4. return manifest (write is being hanlded into the core)\n 5. rename package.json.tmp package.json\n * @param {*} packageName\n * The update package handler could be different based\n * on the action and handled into the core.\n * @param {*} handleUpdate\n */\n public async updatePackage(\n packageName: string,\n handleUpdate: (manifest: Manifest) => Promise<Manifest>\n ): Promise<Manifest> {\n // this plugin lock files on write, we handle all possible scenarios\n let locked = false;\n let manifestUpdated: Manifest;\n try {\n const manifest = await this._lockAndReadJSON(packageJSONFileName);\n locked = true;\n manifestUpdated = await handleUpdate(manifest);\n if (locked) {\n debug('unlock %s', packageJSONFileName);\n await this._unlockJSON(packageJSONFileName);\n this.logger.debug({ packageName }, 'the package @{packageName} has been updated');\n return manifestUpdated;\n } else {\n this.logger.debug({ packageName }, 'the package @{packageName} has been updated');\n return manifestUpdated;\n }\n } catch (err: any) {\n // we ensure lock the file\n this.logger.error(\n { err, packageName },\n 'error on update package @{packageName}: @{err.message}'\n );\n if (locked) {\n // eslint-disable-next-line no-useless-catch\n try {\n await this._unlockJSON(packageJSONFileName);\n // after unlock bubble up error.\n throw err;\n } catch (err: any) {\n // unlock could fail, we bubble up error\n throw errorUtils.getInternalError('resource temporarily unavailable');\n }\n } else {\n if (err.code === resourceNotAvailable) {\n throw errorUtils.getInternalError('resource temporarily unavailable');\n } else if (err.code === noSuchFile) {\n throw errorUtils.getNotFound();\n } else {\n throw err;\n }\n }\n }\n }\n\n public async deletePackage(packageName: string): Promise<void> {\n debug('delete a file/package %o', packageName);\n\n return await unlinkPromise(this._getStorage(packageName));\n }\n\n public async removePackage(): Promise<void> {\n debug('remove a package folder %o', this.path);\n\n await rmdirPromise(this._getStorage('.'));\n }\n\n /**\n * Verify if the package exists already.\n * @param name package name\n * @returns\n */\n public async hasPackage(): Promise<boolean> {\n const pathName: string = this._getStorage(packageJSONFileName);\n try {\n const stat = await statPromise(pathName);\n return stat.isFile();\n } catch (err: any) {\n if (err.code === noSuchFile) {\n debug('dir: %o does not exist %s', pathName, err?.code);\n return false;\n } else {\n this.logger.error({ err }, 'error on verify a package exist: @{err.message}');\n throw errorUtils.getInternalError('error on verify a package exist');\n }\n }\n }\n\n /**\n * Create a package in the local storage, if package already exist fails.\n * @param name package name\n * @param manifest package manifest\n */\n public async createPackage(name: string, manifest: Manifest): Promise<void> {\n debug('create a new package %o', name);\n const pathPackage = this._getStorage(packageJSONFileName);\n try {\n // https://nodejs.org/dist/latest-v17.x/docs/api/fs.html#file-system-flags\n // 'wx': Like 'w' but fails if the path exists\n await openPromise(pathPackage, 'wx');\n } catch (err: any) {\n // cannot override a pacakge that already exist\n if (err.code === 'EEXIST') {\n debug('file %o cannot be created, it already exists: %o', name);\n throw fSError(fileExist);\n }\n }\n // Create a new file and it´s folder if does not exist previously\n await this.writeFile(pathPackage, this._convertToString(manifest));\n }\n\n public async savePackage(name: string, value: Manifest): Promise<void> {\n debug('save a package %o', name);\n\n await this.writeFile(this._getStorage(packageJSONFileName), this._convertToString(value));\n }\n\n public async readPackage(name: string): Promise<Manifest> {\n debug('read a package %o', name);\n try {\n const res = await this._readStorageFile(this._getStorage(packageJSONFileName));\n const data: any = JSON.parse(res.toString('utf8'));\n\n debug('read storage file %o has succeeded', name);\n return data;\n } catch (err: any) {\n if (err.code !== noSuchFile) {\n debug('parse error');\n this.logger.error({ err, name }, 'error on parse @{name}: @{err.message}');\n }\n throw err;\n }\n }\n\n public async hasTarball(fileName: string): Promise<boolean> {\n const pathName: string = this._getStorage(fileName);\n return new Promise((resolve) => {\n accessPromise(pathName)\n .then(() => {\n resolve(true);\n })\n .catch(() => resolve(false));\n });\n }\n\n // remove the temporary file\n private async removeTempFile(temporalName): Promise<void> {\n debug('remove temporal file %o', temporalName);\n await unlinkPromise(temporalName);\n debug('removed temporal file %o', temporalName);\n }\n\n /**\n * Write a tarball into the storage\n * @param fileName package name\n * @param param1\n * @returns\n */\n public async writeTarball(fileName: string, { signal }): Promise<Writable> {\n debug('write a tarball %o', fileName);\n const pathName: string = this._getStorage(fileName);\n await this.checkCreateFolder(pathName);\n // create a temporary file to avoid conflicts or prev corruption files\n const temporalName = path.join(\n this.path,\n `${fileName}.tmp-${String(Math.random()).replace(/^0\\./, '')}`\n );\n\n debug('write a temporal name %o', temporalName);\n let opened = false;\n const writeStream = fs.createWriteStream(temporalName);\n\n writeStream.on('open', () => {\n opened = true;\n });\n\n writeStream.on('error', async (err) => {\n if (opened) {\n this.logger.error(\n { err, fileName },\n 'error on open write tarball for @{fileName}: @{err.message}'\n );\n // TODO: maybe add .once\n writeStream.on('close', async () => {\n await this.removeTempFile(temporalName);\n });\n } else {\n this.logger.error(\n { err, fileName },\n 'error on writing tarball for @{fileName}: @{err.message}'\n );\n await this.removeTempFile(temporalName);\n }\n });\n\n // the 'close' event is emitted when the stream and any of its\n // underlying resources (a file descriptor, for example) have been closed.\n // TODO: maybe add .once\n writeStream.on('close', async () => {\n try {\n await renameTmp(temporalName, pathName);\n } catch (err) {\n this.logger.error(\n { err, temporalName, pathName },\n 'error on rename temporal file @{temporalName} to @{pathName}: @{err.message},' +\n 'please report this bug'\n );\n }\n });\n\n // if upload is aborted, we clean up the temporal file\n signal?.addEventListener(\n 'abort',\n async () => {\n if (opened) {\n // close always happens, even if error\n writeStream.once('close', async () => {\n await this.removeTempFile(temporalName);\n });\n } else {\n await this.removeTempFile(temporalName);\n }\n },\n { once: true }\n );\n\n return writeStream;\n }\n\n /**\n * Read a tarball from the storage\n * @param tarballName tarball name eg: foo-1.0.0.tgz\n * @param options {signal} abort signal\n * @returns Readable stream\n */\n public async readTarball(tarballName: string, { signal }): Promise<Readable> {\n const pathName: string = this._getStorage(tarballName);\n debug('read a tarball %o', pathName);\n const readStream = addAbortSignal(signal, fs.createReadStream(pathName));\n readStream.on('open', async function (fileDescriptorId: number) {\n // if abort, the descriptor is null\n debug('file descriptor id %o', fileDescriptorId);\n if (fileDescriptorId) {\n const stats = await fstatPromise(fileDescriptorId);\n debug('file size %o', stats.size);\n readStream.emit('content-length', stats.size);\n }\n });\n readStream.on('error', (error) => {\n debug('no tarball found %o for %s message %s', pathName, tarballName, error.message);\n });\n return readStream;\n }\n\n private async _readStorageFile(name: string): Promise<any> {\n debug('reading the file: %o', name);\n try {\n return await readFilePromise(name);\n } catch (err: any) {\n debug('error reading the file: %o with error %o', name, err.message);\n throw err;\n }\n }\n\n private _convertToString(value: Manifest): string {\n return JSON.stringify(value);\n }\n\n public _getStorage(fileName = ''): string {\n const storagePath: string = path.join(this.path, sanitzers(fileName));\n debug('get storage %s', storagePath);\n return storagePath;\n }\n\n private async writeTempFileAndRename(dest: string, fileContent: string): Promise<any> {\n const tempFilePath = tempFile(dest);\n try {\n // write file on temp location\n await this.checkCreateFolder(tempFilePath);\n await writeFilePromise(tempFilePath, fileContent);\n debug('creating a new file:: %o', dest);\n // rename tmp file to original\n await renameTmp(tempFilePath, dest);\n } catch (err: any) {\n debug('error on write the file: %o', dest);\n throw err;\n }\n }\n\n private async writeFile(destiny: string, fileContent: string): Promise<void> {\n try {\n await this.writeTempFileAndRename(destiny, fileContent);\n debug('write file success %s', destiny);\n } catch (err: any) {\n if (err && err.code === noSuchFile) {\n await this.checkCreateFolder(destiny);\n // we try again create the temp file\n debug('writing a temp file %s', destiny);\n await this.writeTempFileAndRename(destiny, fileContent);\n debug('write file success %s', destiny);\n } else {\n this.logger.error({ err }, 'error on write file: @{err.message}');\n throw err;\n }\n }\n }\n\n private async checkCreateFolder(pathName: string): Promise<void> {\n // Check if folder exists and create it if not\n const dir = path.dirname(pathName);\n try {\n await accessPromise(dir);\n } catch (err: any) {\n if (err.code === noSuchFile) {\n debug('folder does not exist %o', dir);\n await mkdirPromise(dir, { recursive: true });\n debug('folder %o created', dir);\n } else {\n debug('error on check folder %o', dir);\n throw err;\n }\n }\n }\n\n private async _lockAndReadJSON(name: string): Promise<Manifest> {\n const fileName: string = this._getStorage(name);\n debug('lock and read a file %o', fileName);\n try {\n const data = await readFileNext<Manifest>(fileName, {\n lock: true,\n parse: true,\n });\n return data;\n } catch (err) {\n this.logger.error({ err }, 'error on lock file: @{err.message}');\n debug('error on lock and read json for file: %o', name);\n\n throw err;\n }\n }\n\n private async _unlockJSON(name: string): Promise<void> {\n await unlockFileNext(this._getStorage(name));\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdaccio/local-storage",
3
- "version": "13.0.0-next-8.4",
3
+ "version": "13.0.0-next-8.5",
4
4
  "description": "Local storage implementation",
5
5
  "keywords": [
6
6
  "private",
@@ -36,9 +36,9 @@
36
36
  "node": ">=18"
37
37
  },
38
38
  "dependencies": {
39
- "@verdaccio/core": "8.0.0-next-8.4",
39
+ "@verdaccio/core": "8.0.0-next-8.5",
40
40
  "@verdaccio/file-locking": "13.0.0-next-8.2",
41
- "@verdaccio/utils": "8.1.0-next-8.4",
41
+ "@verdaccio/utils": "8.1.0-next-8.5",
42
42
  "core-js": "3.37.1",
43
43
  "debug": "4.3.7",
44
44
  "globby": "11.1.0",
@@ -50,10 +50,10 @@
50
50
  },
51
51
  "devDependencies": {
52
52
  "@types/minimatch": "5.1.2",
53
- "@verdaccio/config": "8.0.0-next-8.4",
54
- "@verdaccio/logger": "8.0.0-next-8.4",
55
- "@verdaccio/test-helper": "4.0.0-next-8.1",
56
- "@verdaccio/types": "13.0.0-next-8.1",
53
+ "@verdaccio/config": "8.0.0-next-8.5",
54
+ "@verdaccio/logger": "8.0.0-next-8.5",
55
+ "@verdaccio/test-helper": "4.0.0-next-8.2",
56
+ "@verdaccio/types": "13.0.0-next-8.2",
57
57
  "minimatch": "9.0.5"
58
58
  },
59
59
  "funding": {