verdaccio-tarball-local-storage 33.1.1 → 34.0.0
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/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/package-storage.d.ts +1 -1
- package/dist/package-storage.d.ts.map +1 -1
- package/dist/package-storage.js +4 -4
- package/dist/package-storage.js.map +1 -1
- package/package.json +4 -4
- package/src/index.ts +2 -3
- package/src/package-storage.ts +5 -5
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Config,
|
|
1
|
+
import { Config, IPackageStorage, IPluginStorage, Logger, Token } from '@verdaccio/types';
|
|
2
2
|
export default class LocalStorage implements IPluginStorage<unknown> {
|
|
3
3
|
config: Config;
|
|
4
4
|
logger: Logger;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAU1F,MAAM,CAAC,OAAO,OAAO,YAAa,YAAW,cAAc,CAAC,OAAO,CAAC;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;gBAEH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAK1C,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5B,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;IAIzB,GAAG,IAAI,IAAI;IAIX,MAAM,IAAI,IAAI;IAId,MAAM,IAAI,IAAI;IAId,GAAG,IAAI,IAAI;IAIX,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe;IAuBvD,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;IAIzB,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC;IAI3B,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAI9B;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;CAY9B"}
|
package/dist/index.js
CHANGED
|
@@ -8,10 +8,10 @@ Object.defineProperty(exports, "default", {
|
|
|
8
8
|
return LocalStorage;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
12
11
|
const _debug = /*#__PURE__*/ _interop_require_default(require("debug"));
|
|
13
12
|
const _isNil = /*#__PURE__*/ _interop_require_default(require("lodash/isNil"));
|
|
14
13
|
const _isString = /*#__PURE__*/ _interop_require_default(require("lodash/isString"));
|
|
14
|
+
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
15
15
|
const _packagestorage = require("./package-storage");
|
|
16
16
|
function _define_property(obj, key, value) {
|
|
17
17
|
if (key in obj) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { Config, IPackageStorage, IPluginStorage, Logger, Token } from '@verdaccio/types';\nimport buildDebug from 'debug';\nimport isNil from 'lodash/isNil';\nimport isString from 'lodash/isString';\nimport path from 'path';\nimport { PackageStorage } from './package-storage';\n\nconst debug = buildDebug('verdaccio:plugin:local-storage');\n\n// eslint-disable-next-line import/no-default-export\nexport default class LocalStorage implements IPluginStorage<unknown> {\n config: Config;\n logger: Logger;\n\n constructor(config: Config, logger: Logger) {\n this.config = config;\n this.logger = logger;\n }\n\n getSecret(): Promise<string> {\n throw new Error('Method not implemented.');\n }\n\n setSecret(): Promise<any> {\n throw new Error('Method not implemented.');\n }\n\n add(): void {\n throw new Error('Method not implemented.');\n }\n\n search(): void {\n throw new Error('Method not implemented.');\n }\n\n remove(): void {\n throw new Error('Method not implemented.');\n }\n\n get(): void {\n throw new Error('Method not implemented.');\n }\n\n getPackageStorage(packageName: string): IPackageStorage {\n const packageAccess = this.config.getMatchedPackagesSpec(packageName);\n\n const packagePath = this.getLocalStoragePath(\n packageAccess ? packageAccess.storage : undefined\n );\n debug('storage path selected: ', packagePath);\n\n if (isString(packagePath) === false) {\n debug('the package %o has no storage defined ', packageName);\n return;\n }\n\n const packageStoragePath = path.join(\n path.resolve(path.dirname(this.config.self_path || ''), packagePath),\n packageName\n );\n\n debug('storage absolute path: ', packageStoragePath);\n\n return new PackageStorage(packageStoragePath, this.logger);\n }\n\n saveToken(): Promise<any> {\n throw new Error('Method not implemented.');\n }\n\n deleteToken(): Promise<any> {\n throw new Error('Method not implemented.');\n }\n\n readTokens(): Promise<Token[]> {\n throw new Error('Method not implemented.');\n }\n\n /**\n * Verify the right local storage location.\n * @param {String} path\n * @return {String}\n * @private\n */\n private getLocalStoragePath(storage: string | void) {\n const globalConfigStorage = this.config ? this.config.storage : undefined;\n if (isNil(globalConfigStorage)) {\n throw new Error('global storage is required for this plugin');\n } else {\n if (isNil(storage) === false && isString(storage)) {\n return path.join(globalConfigStorage as string, storage as string);\n }\n\n return globalConfigStorage as string;\n }\n }\n}\n"],"names":["LocalStorage","debug","buildDebug","getSecret","Error","setSecret","add","search","remove","get","getPackageStorage","packageName","packageAccess","config","getMatchedPackagesSpec","packagePath","getLocalStoragePath","storage","undefined","isString","packageStoragePath","path","join","resolve","dirname","self_path","PackageStorage","logger","saveToken","deleteToken","readTokens","globalConfigStorage","isNil"],"mappings":";;;;;;;eAUqBA;;;8DATE;8DACL;iEACG;6DACJ;gCACc;;;;;;;;;;;;;;;;;;;AAE/B,MAAMC,QAAQC,IAAAA,cAAU,EAAC;AAGV,MAAMF;IASjBG,YAA6B;QACzB,MAAM,IAAIC,MAAM;IACpB;IAEAC,YAA0B;QACtB,MAAM,IAAID,MAAM;IACpB;IAEAE,MAAY;QACR,MAAM,IAAIF,MAAM;IACpB;IAEAG,SAAe;QACX,MAAM,IAAIH,MAAM;IACpB;IAEAI,SAAe;QACX,MAAM,IAAIJ,MAAM;IACpB;IAEAK,MAAY;QACR,MAAM,IAAIL,MAAM;IACpB;IAEAM,kBAAkBC,WAAmB,EAAmB;QACpD,MAAMC,gBAAgB,IAAI,CAACC,MAAM,CAACC,sBAAsB,CAACH;QAEzD,MAAMI,cAAc,IAAI,CAACC,mBAAmB,CACxCJ,gBAAgBA,cAAcK,OAAO,GAAGC;QAE5CjB,MAAM,2BAA2Bc;QAEjC,IAAII,IAAAA,iBAAQ,EAACJ,iBAAiB,OAAO;YACjCd,MAAM,0CAA0CU;YAChD;QACJ;QAEA,MAAMS,qBAAqBC,aAAI,CAACC,IAAI,CAChCD,aAAI,CAACE,OAAO,CAACF,aAAI,CAACG,OAAO,CAAC,IAAI,CAACX,MAAM,CAACY,SAAS,IAAI,KAAKV,cACxDJ;QAGJV,MAAM,2BAA2BmB;QAEjC,OAAO,IAAIM,8BAAc,CAACN,oBAAoB,IAAI,CAACO,MAAM;IAC7D;IAEAC,YAA0B;QACtB,MAAM,IAAIxB,MAAM;IACpB;IAEAyB,cAA4B;QACxB,MAAM,IAAIzB,MAAM;IACpB;IAEA0B,aAA+B;QAC3B,MAAM,IAAI1B,MAAM;IACpB;IAEA;;;;;KAKC,GACD,AAAQY,oBAAoBC,OAAsB,EAAE;QAChD,MAAMc,sBAAsB,IAAI,CAAClB,MAAM,GAAG,IAAI,CAACA,MAAM,CAACI,OAAO,GAAGC;QAChE,IAAIc,IAAAA,cAAK,EAACD,sBAAsB;YAC5B,MAAM,IAAI3B,MAAM;QACpB,OAAO;YACH,IAAI4B,IAAAA,cAAK,EAACf,aAAa,SAASE,IAAAA,iBAAQ,EAACF,UAAU;gBAC/C,OAAOI,aAAI,CAACC,IAAI,CAACS,qBAA+Bd;YACpD;YAEA,OAAOc;QACX;IACJ;IAjFA,YAAYlB,MAAc,EAAEc,MAAc,CAAE;QAH5Cd,uBAAAA,UAAAA,KAAAA;QACAc,uBAAAA,UAAAA,KAAAA;QAGI,IAAI,CAACd,MAAM,GAAGA;QACd,IAAI,CAACc,MAAM,GAAGA;IAClB;AA+EJ"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ILocalPackageManager, IReadTarball, IUploadTarball, Logger } from '@verdaccio/types';
|
|
2
2
|
export declare class PackageStorage implements ILocalPackageManager {
|
|
3
3
|
path: string;
|
|
4
4
|
logger: Logger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-storage.d.ts","sourceRoot":"","sources":["../src/package-storage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"package-storage.d.ts","sourceRoot":"","sources":["../src/package-storage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAiD9F,qBAAa,cAAe,YAAW,oBAAoB;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;gBAEH,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAKxC,aAAa,IAAI,IAAI;IAIrB,aAAa,CACT,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,KAAK,IAAI,GACtD,IAAI;IAMP,aAAa,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI;IAM1E,aAAa,IAAI,IAAI;IAIrB,WAAW,IAAI,IAAI;IAInB,WAAW,IAAI,IAAI;IAInB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc;IA8E1C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY;IAkCvC,OAAO,CAAC,UAAU;CAGrB"}
|
package/dist/package-storage.js
CHANGED
|
@@ -8,12 +8,12 @@ Object.defineProperty(exports, "PackageStorage", {
|
|
|
8
8
|
return PackageStorage;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
|
12
|
-
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
13
|
-
const _debug = /*#__PURE__*/ _interop_require_default(require("debug"));
|
|
14
|
-
const _isNil = /*#__PURE__*/ _interop_require_default(require("lodash/isNil"));
|
|
15
11
|
const _commonsapi = require("@verdaccio/commons-api");
|
|
16
12
|
const _streams = require("@verdaccio/streams");
|
|
13
|
+
const _debug = /*#__PURE__*/ _interop_require_default(require("debug"));
|
|
14
|
+
const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
|
15
|
+
const _isNil = /*#__PURE__*/ _interop_require_default(require("lodash/isNil"));
|
|
16
|
+
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
17
17
|
function _define_property(obj, key, value) {
|
|
18
18
|
if (key in obj) {
|
|
19
19
|
Object.defineProperty(obj, key, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/package-storage.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport buildDebug from 'debug';\nimport isNil from 'lodash/isNil';\nimport { getCode, VerdaccioError } from '@verdaccio/commons-api';\nimport { UploadTarball, ReadTarball } from '@verdaccio/streams';\nimport { Logger, ILocalPackageManager, IUploadTarball, IReadTarball } from '@verdaccio/types';\n\nconst fileExist = 'EEXISTS';\n\nconst debug = buildDebug('verdaccio:plugin:local-storage:fs');\n\nfunction fSError(message: string, code = 409) {\n const err: VerdaccioError = getCode(code, message);\n // FIXME: we should return http-status codes here instead, future improvement\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n err.code = message;\n\n return err;\n}\n\nfunction tempFile(str: string) {\n return `${str}.tmp${String(Math.random()).substr(2)}`;\n}\n\nfunction renameTmp(src: string, dst: string, _cb: fs.NoParamCallback) {\n const cb: fs.NoParamCallback = err => {\n if (err) {\n fs.unlink(src, () => {});\n }\n _cb(err);\n };\n\n if (process.platform !== 'win32') {\n return fs.rename(src, dst, cb);\n }\n\n /*\n * windows can't remove opened file,\n * but it seem to be able to rename it\n */\n const tmp = tempFile(dst);\n fs.rename(dst, tmp, err => {\n fs.rename(src, dst, cb);\n if (!err) {\n fs.unlink(tmp, () => {});\n }\n });\n}\n\nexport class PackageStorage implements ILocalPackageManager {\n path: string;\n logger: Logger;\n\n constructor(path: string, logger: Logger) {\n this.path = path;\n this.logger = logger;\n }\n\n updatePackage(): void {\n throw new Error('Method not implemented.');\n }\n\n deletePackage(\n packageName: string,\n callback: (err: NodeJS.ErrnoException | null) => void\n ): void {\n debug('delete a package %o', packageName);\n\n return fs.unlink(this.getStorage(packageName), callback);\n }\n\n removePackage(callback: (err: NodeJS.ErrnoException | null) => void): void {\n debug('remove a package %o', this.path);\n\n fs.rmdir(this.getStorage('.'), callback);\n }\n\n createPackage(): void {\n throw new Error('Method not implemented.');\n }\n\n savePackage(): void {\n throw new Error('Method not implemented.');\n }\n\n readPackage(): void {\n throw new Error('Method not implemented.');\n }\n\n writeTarball(name: string): IUploadTarball {\n const uploadStream = new UploadTarball({});\n debug('write a tarball for a package %o', name);\n\n let ended = 0;\n uploadStream.on('end', () => {\n ended = 1;\n });\n\n const pathName = this.getStorage(name);\n\n fs.access(pathName, fileNotFound => {\n const exists = !fileNotFound;\n if (exists) {\n uploadStream.emit('error', fSError(fileExist));\n } else {\n // this condition is missing in the original plugin\n if (!fs.existsSync(this.path)) {\n fs.mkdirSync(this.path, { recursive: true });\n }\n const temporalName = path.join(\n this.path,\n `${name}.tmp-${String(Math.random()).replace(/^0\\./, '')}`\n );\n debug('write a temporal name %o', temporalName);\n const file = fs.createWriteStream(temporalName);\n const removeTempFile = () => fs.unlink(temporalName, () => {});\n let opened = false;\n uploadStream.pipe(file);\n\n uploadStream.done = () => {\n const onend = () => {\n file.on('close', () => {\n renameTmp(temporalName, pathName, function (err) {\n if (err) {\n uploadStream.emit('error', err);\n } else {\n uploadStream.emit('success');\n }\n });\n });\n file.end();\n };\n if (ended) {\n onend();\n } else {\n uploadStream.on('end', onend);\n }\n };\n\n uploadStream.abort = () => {\n if (opened) {\n opened = false;\n file.on('close', () => {\n removeTempFile();\n });\n } else {\n // if the file does not recieve any byte never is opened and has to be removed anyway.\n removeTempFile();\n }\n file.end();\n };\n\n file.on('open', () => {\n opened = true;\n // re-emitting open because it's handled in storage.js\n uploadStream.emit('open');\n });\n\n file.on('error', err => {\n uploadStream.emit('error', err);\n });\n }\n });\n\n return uploadStream;\n }\n\n readTarball(name: string): IReadTarball {\n const pathName = this.getStorage(name);\n debug('read a a tarball %o on path %o', name, pathName);\n\n const readTarballStream = new ReadTarball({});\n\n const readStream = fs.createReadStream(pathName);\n\n readStream.on('error', err => {\n debug('error on read a tarball %o with error %o', name, err);\n readTarballStream.emit('error', err);\n });\n\n readStream.on('open', fd => {\n fs.fstat(fd, (err, stats) => {\n if (isNil(err) === false) {\n debug('error on read a tarball %o with error %o', name, err);\n return readTarballStream.emit('error', err);\n }\n readTarballStream.emit('content-length', stats.size);\n readTarballStream.emit('open');\n debug('open on read a tarball %o', name);\n readStream.pipe(readTarballStream);\n });\n });\n\n readTarballStream.abort = () => {\n debug('abort on read a tarball %o', name);\n readStream.close();\n };\n\n return readTarballStream;\n }\n\n private getStorage(fileName = '') {\n return path.join(this.path, fileName);\n }\n}\n"],"names":["PackageStorage","fileExist","debug","buildDebug","fSError","message","code","err","getCode","tempFile","str","String","Math","random","substr","renameTmp","src","dst","_cb","cb","fs","unlink","process","platform","rename","tmp","updatePackage","Error","deletePackage","packageName","callback","getStorage","removePackage","path","rmdir","createPackage","savePackage","readPackage","writeTarball","name","uploadStream","UploadTarball","ended","on","pathName","access","fileNotFound","exists","emit","existsSync","mkdirSync","recursive","temporalName","join","replace","file","createWriteStream","removeTempFile","opened","pipe","done","onend","end","abort","readTarball","readTarballStream","ReadTarball","readStream","createReadStream","fd","fstat","stats","isNil","size","close","fileName","logger"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/package-storage.ts"],"sourcesContent":["import { getCode, VerdaccioError } from '@verdaccio/commons-api';\nimport { ReadTarball, UploadTarball } from '@verdaccio/streams';\nimport { ILocalPackageManager, IReadTarball, IUploadTarball, Logger } from '@verdaccio/types';\nimport buildDebug from 'debug';\nimport fs from 'fs';\nimport isNil from 'lodash/isNil';\nimport path from 'path';\n\nconst fileExist = 'EEXISTS';\n\nconst debug = buildDebug('verdaccio:plugin:local-storage:fs');\n\nfunction fSError(message: string, code = 409) {\n const err: VerdaccioError = getCode(code, message);\n // FIXME: we should return http-status codes here instead, future improvement\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n err.code = message;\n\n return err;\n}\n\nfunction tempFile(str: string) {\n return `${str}.tmp${String(Math.random()).substr(2)}`;\n}\n\nfunction renameTmp(src: string, dst: string, _cb: fs.NoParamCallback) {\n const cb: fs.NoParamCallback = err => {\n if (err) {\n fs.unlink(src, () => {});\n }\n _cb(err);\n };\n\n if (process.platform !== 'win32') {\n return fs.rename(src, dst, cb);\n }\n\n /*\n * windows can't remove opened file,\n * but it seem to be able to rename it\n */\n const tmp = tempFile(dst);\n fs.rename(dst, tmp, err => {\n fs.rename(src, dst, cb);\n if (!err) {\n fs.unlink(tmp, () => {});\n }\n });\n}\n\nexport class PackageStorage implements ILocalPackageManager {\n path: string;\n logger: Logger;\n\n constructor(path: string, logger: Logger) {\n this.path = path;\n this.logger = logger;\n }\n\n updatePackage(): void {\n throw new Error('Method not implemented.');\n }\n\n deletePackage(\n packageName: string,\n callback: (err: NodeJS.ErrnoException | null) => void\n ): void {\n debug('delete a package %o', packageName);\n\n return fs.unlink(this.getStorage(packageName), callback);\n }\n\n removePackage(callback: (err: NodeJS.ErrnoException | null) => void): void {\n debug('remove a package %o', this.path);\n\n fs.rmdir(this.getStorage('.'), callback);\n }\n\n createPackage(): void {\n throw new Error('Method not implemented.');\n }\n\n savePackage(): void {\n throw new Error('Method not implemented.');\n }\n\n readPackage(): void {\n throw new Error('Method not implemented.');\n }\n\n writeTarball(name: string): IUploadTarball {\n const uploadStream = new UploadTarball({});\n debug('write a tarball for a package %o', name);\n\n let ended = 0;\n uploadStream.on('end', () => {\n ended = 1;\n });\n\n const pathName = this.getStorage(name);\n\n fs.access(pathName, fileNotFound => {\n const exists = !fileNotFound;\n if (exists) {\n uploadStream.emit('error', fSError(fileExist));\n } else {\n // this condition is missing in the original plugin\n if (!fs.existsSync(this.path)) {\n fs.mkdirSync(this.path, { recursive: true });\n }\n const temporalName = path.join(\n this.path,\n `${name}.tmp-${String(Math.random()).replace(/^0\\./, '')}`\n );\n debug('write a temporal name %o', temporalName);\n const file = fs.createWriteStream(temporalName);\n const removeTempFile = () => fs.unlink(temporalName, () => {});\n let opened = false;\n uploadStream.pipe(file);\n\n uploadStream.done = () => {\n const onend = () => {\n file.on('close', () => {\n renameTmp(temporalName, pathName, function (err) {\n if (err) {\n uploadStream.emit('error', err);\n } else {\n uploadStream.emit('success');\n }\n });\n });\n file.end();\n };\n if (ended) {\n onend();\n } else {\n uploadStream.on('end', onend);\n }\n };\n\n uploadStream.abort = () => {\n if (opened) {\n opened = false;\n file.on('close', () => {\n removeTempFile();\n });\n } else {\n // if the file does not recieve any byte never is opened and has to be removed anyway.\n removeTempFile();\n }\n file.end();\n };\n\n file.on('open', () => {\n opened = true;\n // re-emitting open because it's handled in storage.js\n uploadStream.emit('open');\n });\n\n file.on('error', err => {\n uploadStream.emit('error', err);\n });\n }\n });\n\n return uploadStream;\n }\n\n readTarball(name: string): IReadTarball {\n const pathName = this.getStorage(name);\n debug('read a a tarball %o on path %o', name, pathName);\n\n const readTarballStream = new ReadTarball({});\n\n const readStream = fs.createReadStream(pathName);\n\n readStream.on('error', err => {\n debug('error on read a tarball %o with error %o', name, err);\n readTarballStream.emit('error', err);\n });\n\n readStream.on('open', fd => {\n fs.fstat(fd, (err, stats) => {\n if (isNil(err) === false) {\n debug('error on read a tarball %o with error %o', name, err);\n return readTarballStream.emit('error', err);\n }\n readTarballStream.emit('content-length', stats.size);\n readTarballStream.emit('open');\n debug('open on read a tarball %o', name);\n readStream.pipe(readTarballStream);\n });\n });\n\n readTarballStream.abort = () => {\n debug('abort on read a tarball %o', name);\n readStream.close();\n };\n\n return readTarballStream;\n }\n\n private getStorage(fileName = '') {\n return path.join(this.path, fileName);\n }\n}\n"],"names":["PackageStorage","fileExist","debug","buildDebug","fSError","message","code","err","getCode","tempFile","str","String","Math","random","substr","renameTmp","src","dst","_cb","cb","fs","unlink","process","platform","rename","tmp","updatePackage","Error","deletePackage","packageName","callback","getStorage","removePackage","path","rmdir","createPackage","savePackage","readPackage","writeTarball","name","uploadStream","UploadTarball","ended","on","pathName","access","fileNotFound","exists","emit","existsSync","mkdirSync","recursive","temporalName","join","replace","file","createWriteStream","removeTempFile","opened","pipe","done","onend","end","abort","readTarball","readTarballStream","ReadTarball","readStream","createReadStream","fd","fstat","stats","isNil","size","close","fileName","logger"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "verdaccio-tarball-local-storage",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "34.0.0",
|
|
4
4
|
"description": "Cropped and fixed version of the @verdaccio/local-storage plugin (https://github.com/verdaccio/monorepo/tree/9.x/plugins/local-storage)",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -17,14 +17,14 @@
|
|
|
17
17
|
"devDependencies": {
|
|
18
18
|
"@types/debug": "^4.1.12",
|
|
19
19
|
"@types/http-errors": "~1.8.2",
|
|
20
|
-
"@types/lodash": "~4.
|
|
20
|
+
"@types/lodash": "~4.17.23"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@verdaccio/commons-api": "~10.2.0",
|
|
24
24
|
"@verdaccio/streams": "~10.2.1",
|
|
25
25
|
"@verdaccio/types": "~10.4.2",
|
|
26
26
|
"debug": "^4.4.3",
|
|
27
|
-
"lodash": "~4.17.
|
|
27
|
+
"lodash": "~4.17.23"
|
|
28
28
|
},
|
|
29
29
|
"publishConfig": {
|
|
30
30
|
"access": "public"
|
|
@@ -32,5 +32,5 @@
|
|
|
32
32
|
"cli": {
|
|
33
33
|
"webpack": false
|
|
34
34
|
},
|
|
35
|
-
"gitHead": "
|
|
35
|
+
"gitHead": "e193dc22703963f67099874a24de535d0696b6e2"
|
|
36
36
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Config, IPackageStorage, IPluginStorage, Logger, Token } from '@verdaccio/types';
|
|
2
2
|
import buildDebug from 'debug';
|
|
3
3
|
import isNil from 'lodash/isNil';
|
|
4
4
|
import isString from 'lodash/isString';
|
|
5
|
-
import
|
|
6
|
-
|
|
5
|
+
import path from 'path';
|
|
7
6
|
import { PackageStorage } from './package-storage';
|
|
8
7
|
|
|
9
8
|
const debug = buildDebug('verdaccio:plugin:local-storage');
|
package/src/package-storage.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { getCode, VerdaccioError } from '@verdaccio/commons-api';
|
|
2
|
+
import { ReadTarball, UploadTarball } from '@verdaccio/streams';
|
|
3
|
+
import { ILocalPackageManager, IReadTarball, IUploadTarball, Logger } from '@verdaccio/types';
|
|
3
4
|
import buildDebug from 'debug';
|
|
5
|
+
import fs from 'fs';
|
|
4
6
|
import isNil from 'lodash/isNil';
|
|
5
|
-
import
|
|
6
|
-
import { UploadTarball, ReadTarball } from '@verdaccio/streams';
|
|
7
|
-
import { Logger, ILocalPackageManager, IUploadTarball, IReadTarball } from '@verdaccio/types';
|
|
7
|
+
import path from 'path';
|
|
8
8
|
|
|
9
9
|
const fileExist = 'EEXISTS';
|
|
10
10
|
|