+190
-140
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { | ||
| value: true | ||
| value: true | ||
| }); | ||
| exports.TmpDir = undefined; | ||
| exports.getTempName = getTempName; | ||
| exports.TmpDir = void 0; | ||
| var _bluebirdLst; | ||
| function _bluebirdLst() { | ||
| const data = _interopRequireDefault(require("bluebird-lst")); | ||
| function _load_bluebirdLst() { | ||
| return _bluebirdLst = _interopRequireDefault(require("bluebird-lst")); | ||
| _bluebirdLst = function () { | ||
| return data; | ||
| }; | ||
| return data; | ||
| } | ||
| var _fsExtraP; | ||
| function _fsExtraP() { | ||
| const data = require("fs-extra-p"); | ||
| function _load_fsExtraP() { | ||
| return _fsExtraP = require("fs-extra-p"); | ||
| _fsExtraP = function () { | ||
| return data; | ||
| }; | ||
| return data; | ||
| } | ||
| var _lazyVal; | ||
| function _lazyVal() { | ||
| const data = require("lazy-val"); | ||
| function _load_lazyVal() { | ||
| return _lazyVal = require("lazy-val"); | ||
| _lazyVal = function () { | ||
| return data; | ||
| }; | ||
| return data; | ||
| } | ||
| var _os; | ||
| function _os() { | ||
| const data = require("os"); | ||
| function _load_os() { | ||
| return _os = require("os"); | ||
| _os = function () { | ||
| return data; | ||
| }; | ||
| return data; | ||
| } | ||
| var _path = _interopRequireWildcard(require("path")); | ||
| var path = _interopRequireWildcard(require("path")); | ||
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } | ||
| function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | ||
@@ -40,144 +56,178 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
| let tmpFileCounter = 0; | ||
| const tmpDirManagers = new Set(); | ||
| // add date to avoid use stale temp dir | ||
| const tmpDirManagers = new Set(); // add date to avoid use stale temp dir | ||
| const tempDirPrefix = `${process.pid.toString(36)}-${Date.now().toString(36)}`; | ||
| function getTempName(prefix) { | ||
| return `${prefix == null ? "" : `${prefix}-`}${tempDirPrefix}-${(tmpFileCounter++).toString(36)}`; | ||
| return `${prefix == null ? "" : `${prefix}-`}${tempDirPrefix}-${(tmpFileCounter++).toString(36)}`; | ||
| } | ||
| const tempDir = new (_lazyVal || _load_lazyVal()).Lazy(() => { | ||
| let promise; | ||
| const systemTmpDir = process.env.TEST_TMP_DIR || process.env.ELECTRON_BUILDER_TMP_DIR || process.env.ELECTRON_BUILDER_TEST_DIR || (0, (_os || _load_os()).tmpdir)(); | ||
| const isEnsureRemovedOnExit = process.env.TMP_DIR_MANAGER_ENSURE_REMOVED_ON_EXIT !== "false"; | ||
| if (!isEnsureRemovedOnExit) { | ||
| promise = Promise.resolve(systemTmpDir); | ||
| } else if ((_fsExtraP || _load_fsExtraP()).mkdtemp == null) { | ||
| const dir = _path.join(systemTmpDir, getTempName("temp-files")); | ||
| promise = (0, (_fsExtraP || _load_fsExtraP()).ensureDir)(dir, { mode: 448 }).then(() => dir); | ||
| } else { | ||
| promise = (0, (_fsExtraP || _load_fsExtraP()).mkdtemp)(`${_path.join(systemTmpDir, "temp-dir")}-`); | ||
| const tempDir = new (_lazyVal().Lazy)(() => { | ||
| let promise; | ||
| const systemTmpDir = process.env.TEST_TMP_DIR || process.env.ELECTRON_BUILDER_TMP_DIR || process.env.ELECTRON_BUILDER_TEST_DIR || (0, _os().tmpdir)(); | ||
| const isEnsureRemovedOnExit = process.env.TMP_DIR_MANAGER_ENSURE_REMOVED_ON_EXIT !== "false"; | ||
| if (!isEnsureRemovedOnExit) { | ||
| promise = Promise.resolve(systemTmpDir); | ||
| } else if (_fsExtraP().mkdtemp == null) { | ||
| const dir = path.join(systemTmpDir, getTempName("temp-files")); | ||
| promise = (0, _fsExtraP().ensureDir)(dir, { | ||
| mode: 448 | ||
| }).then(() => dir); | ||
| } else { | ||
| promise = (0, _fsExtraP().mkdtemp)(`${path.join(systemTmpDir, "temp-dir")}-`); | ||
| } | ||
| return promise.then(it => (0, _fsExtraP().realpath)(it)).then(dir => { | ||
| if (isEnsureRemovedOnExit) { | ||
| addExitHook(dir); | ||
| } | ||
| return promise.then(it => (0, (_fsExtraP || _load_fsExtraP()).realpath)(it)).then(dir => { | ||
| if (isEnsureRemovedOnExit) { | ||
| addExitHook(dir); | ||
| } | ||
| return dir; | ||
| }); | ||
| return dir; | ||
| }); | ||
| }); | ||
| function addExitHook(dir) { | ||
| require("async-exit-hook")(callback => { | ||
| const managers = Array.from(tmpDirManagers); | ||
| tmpDirManagers.clear(); | ||
| if (callback == null) { | ||
| for (const manager of managers) { | ||
| manager.cleanupSync(); | ||
| } | ||
| try { | ||
| (0, (_fsExtraP || _load_fsExtraP()).removeSync)(dir); | ||
| } catch (e) { | ||
| handleError(e, dir); | ||
| } | ||
| return; | ||
| } | ||
| // each instead of map to avoid fs overload | ||
| (_bluebirdLst || _load_bluebirdLst()).default.each(managers, it => it.cleanup()).then(() => (0, (_fsExtraP || _load_fsExtraP()).remove)(dir)).then(() => callback()).catch(e => { | ||
| try { | ||
| handleError(e, dir); | ||
| } finally { | ||
| callback(); | ||
| } | ||
| }); | ||
| require("async-exit-hook")(callback => { | ||
| const managers = Array.from(tmpDirManagers); | ||
| tmpDirManagers.clear(); | ||
| if (callback == null) { | ||
| for (const manager of managers) { | ||
| manager.cleanupSync(); | ||
| } | ||
| try { | ||
| (0, _fsExtraP().removeSync)(dir); | ||
| } catch (e) { | ||
| handleError(e, dir); | ||
| } | ||
| return; | ||
| } // each instead of map to avoid fs overload | ||
| _bluebirdLst().default.each(managers, it => it.cleanup()).then(() => (0, _fsExtraP().remove)(dir)).then(() => callback()).catch(e => { | ||
| try { | ||
| handleError(e, dir); | ||
| } finally { | ||
| callback(); | ||
| } | ||
| }); | ||
| }); | ||
| } | ||
| function handleError(e, file) { | ||
| if (e.code !== "EPERM" && e.code !== "ENOENT") { | ||
| // use only console.* instead of our warn on exit (otherwise nodeEmoji can be required on request) | ||
| console.warn(`Cannot delete temporary "${file}": ${(e.stack || e).toString()}`); | ||
| } | ||
| if (e.code !== "EPERM" && e.code !== "ENOENT") { | ||
| // use only console.* instead of our warn on exit (otherwise nodeEmoji can be required on request) | ||
| console.warn(`Cannot delete temporary "${file}": ${(e.stack || e).toString()}`); | ||
| } | ||
| } | ||
| class TmpDir { | ||
| constructor(debugName = "") { | ||
| this.debugName = debugName; | ||
| this.tempFiles = []; | ||
| this.registered = false; | ||
| constructor(debugName = "") { | ||
| this.debugName = debugName; | ||
| this.tempFiles = []; | ||
| this.registered = false; | ||
| } // noinspection JSMethodCanBeStatic | ||
| // noinspection JSUnusedGlobalSymbols | ||
| get rootTempDir() { | ||
| return tempDir.value; | ||
| } | ||
| getTempDir(options) { | ||
| return this.getTempFile(options, true); | ||
| } | ||
| createTempDir(options) { | ||
| return this.getTempFile(options, true).then(it => (0, _fsExtraP().ensureDir)(it).then(() => it)); | ||
| } | ||
| getTempFile(options, isDir = false) { | ||
| return tempDir.value.then(it => { | ||
| if (!this.registered) { | ||
| this.registered = true; | ||
| tmpDirManagers.add(this); | ||
| } | ||
| const prefix = nullize(options == null ? null : options.prefix); | ||
| const suffix = nullize(options == null ? null : options.suffix); | ||
| const namePrefix = prefix == null ? "" : `${prefix}-`; | ||
| const nameSuffix = suffix == null ? "" : suffix.startsWith(".") ? suffix : `-${suffix}`; | ||
| const result = `${it}${path.sep}${namePrefix}${(tmpFileCounter++).toString(36)}${nameSuffix}`; | ||
| this.tempFiles.push({ | ||
| path: result, | ||
| isDir, | ||
| disposer: options == null ? null : options.disposer | ||
| }); | ||
| return result; | ||
| }); | ||
| } | ||
| cleanupSync() { | ||
| const tempFiles = this.tempFiles; | ||
| tmpDirManagers.delete(this); | ||
| this.registered = false; | ||
| if (tempFiles.length === 0) { | ||
| return; | ||
| } | ||
| // noinspection JSMethodCanBeStatic | ||
| // noinspection JSUnusedGlobalSymbols | ||
| get rootTempDir() { | ||
| return tempDir.value; | ||
| } | ||
| getTempDir(options) { | ||
| return this.getTempFile(options, true); | ||
| } | ||
| createTempDir(options) { | ||
| return this.getTempFile(options, true).then(it => (0, (_fsExtraP || _load_fsExtraP()).ensureDir)(it).then(() => it)); | ||
| } | ||
| getTempFile(options, isDir = false) { | ||
| return tempDir.value.then(it => { | ||
| if (!this.registered) { | ||
| this.registered = true; | ||
| tmpDirManagers.add(this); | ||
| } | ||
| const prefix = nullize(options == null ? null : options.prefix); | ||
| const suffix = nullize(options == null ? null : options.suffix); | ||
| const namePrefix = prefix == null ? "" : `${prefix}-`; | ||
| const nameSuffix = suffix == null ? "" : suffix.startsWith(".") ? suffix : `-${suffix}`; | ||
| const result = `${it}${_path.sep}${namePrefix}${(tmpFileCounter++).toString(36)}${nameSuffix}`; | ||
| this.tempFiles.push({ | ||
| path: result, | ||
| isDir, | ||
| disposer: options == null ? null : options.disposer | ||
| }); | ||
| return result; | ||
| }); | ||
| } | ||
| cleanupSync() { | ||
| const tempFiles = this.tempFiles; | ||
| tmpDirManagers.delete(this); | ||
| this.registered = false; | ||
| if (tempFiles.length === 0) { | ||
| return; | ||
| this.tempFiles = []; | ||
| for (const file of tempFiles) { | ||
| if (file.disposer != null) { | ||
| // noinspection JSIgnoredPromiseFromCall | ||
| file.disposer(file.path); | ||
| continue; | ||
| } | ||
| try { | ||
| if (file.isDir) { | ||
| (0, _fsExtraP().removeSync)(file.path); | ||
| } else { | ||
| (0, _fsExtraP().unlinkSync)(file.path); | ||
| } | ||
| this.tempFiles = []; | ||
| for (const file of tempFiles) { | ||
| if (file.disposer != null) { | ||
| // noinspection JSIgnoredPromiseFromCall | ||
| file.disposer(file.path); | ||
| continue; | ||
| } | ||
| try { | ||
| if (file.isDir) { | ||
| (0, (_fsExtraP || _load_fsExtraP()).removeSync)(file.path); | ||
| } else { | ||
| (0, (_fsExtraP || _load_fsExtraP()).unlinkSync)(file.path); | ||
| } | ||
| } catch (e) { | ||
| handleError(e, file.path); | ||
| } | ||
| } | ||
| } catch (e) { | ||
| handleError(e, file.path); | ||
| } | ||
| } | ||
| cleanup() { | ||
| const tempFiles = this.tempFiles; | ||
| tmpDirManagers.delete(this); | ||
| this.registered = false; | ||
| if (tempFiles.length === 0) { | ||
| return Promise.resolve(); | ||
| } | ||
| this.tempFiles = []; | ||
| return (_bluebirdLst || _load_bluebirdLst()).default.map(tempFiles, it => { | ||
| if (it.disposer != null) { | ||
| return it.disposer(it.path); | ||
| } | ||
| return (it.isDir ? (0, (_fsExtraP || _load_fsExtraP()).remove)(it.path) : (0, (_fsExtraP || _load_fsExtraP()).unlink)(it.path)).catch(e => { | ||
| handleError(e, it.path); | ||
| }); | ||
| }, { concurrency: 8 }); | ||
| } | ||
| cleanup() { | ||
| const tempFiles = this.tempFiles; | ||
| tmpDirManagers.delete(this); | ||
| this.registered = false; | ||
| if (tempFiles.length === 0) { | ||
| return Promise.resolve(); | ||
| } | ||
| toString() { | ||
| return this.debugName; | ||
| } | ||
| this.tempFiles = []; | ||
| return _bluebirdLst().default.map(tempFiles, it => { | ||
| if (it.disposer != null) { | ||
| return it.disposer(it.path); | ||
| } | ||
| return (it.isDir ? (0, _fsExtraP().remove)(it.path) : (0, _fsExtraP().unlink)(it.path)).catch(e => { | ||
| handleError(e, it.path); | ||
| }); | ||
| }, { | ||
| concurrency: 8 | ||
| }); | ||
| } | ||
| toString() { | ||
| return this.debugName; | ||
| } | ||
| } | ||
| exports.TmpDir = TmpDir; | ||
| function nullize(s) { | ||
| return s == null || s.length === 0 ? null : s; | ||
| } | ||
| return s == null || s.length === 0 ? null : s; | ||
| } | ||
| //# sourceMappingURL=main.js.map |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { ensureDir, mkdtemp, realpath, remove, removeSync, unlink, unlinkSync } from \"fs-extra-p\"\nimport { Lazy } from \"lazy-val\"\nimport { tmpdir } from \"os\"\nimport * as path from \"path\"\n\nlet tmpFileCounter = 0\nconst tmpDirManagers = new Set<TmpDir>()\n\n// add date to avoid use stale temp dir\nconst tempDirPrefix = `${process.pid.toString(36)}-${Date.now().toString(36)}`\n\nexport function getTempName(prefix?: string | null | undefined): string {\n return `${prefix == null ? \"\" : `${prefix}-`}${tempDirPrefix}-${(tmpFileCounter++).toString(36)}`\n}\n\nconst tempDir = new Lazy<string>(() => {\n let promise: Promise<string>\n const systemTmpDir = process.env.TEST_TMP_DIR || process.env.ELECTRON_BUILDER_TMP_DIR || process.env.ELECTRON_BUILDER_TEST_DIR || tmpdir()\n const isEnsureRemovedOnExit = process.env.TMP_DIR_MANAGER_ENSURE_REMOVED_ON_EXIT !== \"false\"\n if (!isEnsureRemovedOnExit) {\n promise = Promise.resolve(systemTmpDir)\n }\n else if (mkdtemp == null) {\n const dir = path.join(systemTmpDir, getTempName(\"temp-files\"))\n promise = ensureDir(dir, {mode: 448}).then(() => dir)\n }\n else {\n promise = mkdtemp(`${path.join(systemTmpDir, \"temp-dir\")}-`)\n }\n\n return promise\n .then(it => realpath(it))\n .then(dir => {\n if (isEnsureRemovedOnExit) {\n addExitHook(dir)\n }\n return dir\n })\n})\n\nfunction addExitHook(dir: string) {\n require(\"async-exit-hook\")((callback: (() => void) | null) => {\n const managers = Array.from(tmpDirManagers)\n tmpDirManagers.clear()\n\n if (callback == null) {\n for (const manager of managers) {\n manager.cleanupSync()\n }\n\n try {\n removeSync(dir)\n }\n catch (e) {\n handleError(e, dir)\n }\n return\n }\n\n // each instead of map to avoid fs overload\n BluebirdPromise.each(managers, it => it.cleanup())\n .then(() => remove(dir))\n .then(() => callback())\n .catch(e => {\n try {\n handleError(e, dir)\n }\n finally {\n callback()\n }\n })\n })\n}\n\nfunction handleError(e: any, file: string) {\n if (e.code !== \"EPERM\" && e.code !== \"ENOENT\") {\n // use only console.* instead of our warn on exit (otherwise nodeEmoji can be required on request)\n console.warn(`Cannot delete temporary \"${file}\": ${(e.stack || e).toString()}`)\n }\n}\n\ninterface TempFileInfo {\n isDir: boolean\n path: string\n disposer?: ((file: string) => Promise<void>) | null\n}\n\nexport interface GetTempFileOptions {\n prefix?: string | null\n suffix?: string | null\n\n disposer?: ((file: string) => Promise<void>) | null\n}\n\nexport class TmpDir {\n private tempFiles: Array<TempFileInfo> = []\n private registered = false\n\n constructor(private readonly debugName: string = \"\") {\n }\n\n // noinspection JSMethodCanBeStatic\n // noinspection JSUnusedGlobalSymbols\n get rootTempDir(): Promise<string> {\n return tempDir.value\n }\n\n getTempDir(options?: GetTempFileOptions): Promise<string> {\n return this.getTempFile(options, true)\n }\n\n createTempDir(options?: GetTempFileOptions): Promise<string> {\n return this.getTempFile(options, true)\n .then(it => ensureDir(it).then(() => it))\n }\n\n getTempFile(options?: GetTempFileOptions, isDir = false): Promise<string> {\n return tempDir.value\n .then(it => {\n if (!this.registered) {\n this.registered = true\n tmpDirManagers.add(this)\n }\n\n const prefix = nullize(options == null ? null : options.prefix)\n const suffix = nullize(options == null ? null : options.suffix)\n const namePrefix = prefix == null ? \"\" : `${prefix}-`\n const nameSuffix = suffix == null ? \"\" : (suffix.startsWith(\".\") ? suffix : `-${suffix}`)\n const result = `${it}${path.sep}${namePrefix}${(tmpFileCounter++).toString(36)}${nameSuffix}`\n this.tempFiles.push({\n path: result,\n isDir,\n disposer: options == null ? null : options.disposer,\n })\n return result\n })\n }\n\n cleanupSync() {\n const tempFiles = this.tempFiles\n tmpDirManagers.delete(this)\n this.registered = false\n if (tempFiles.length === 0) {\n return\n }\n\n this.tempFiles = []\n\n for (const file of tempFiles) {\n if (file.disposer != null) {\n // noinspection JSIgnoredPromiseFromCall\n file.disposer(file.path)\n continue\n }\n\n try {\n if (file.isDir) {\n removeSync(file.path)\n }\n else {\n unlinkSync(file.path)\n }\n }\n catch (e) {\n handleError(e, file.path)\n }\n }\n }\n\n cleanup(): Promise<any> {\n const tempFiles = this.tempFiles\n tmpDirManagers.delete(this)\n this.registered = false\n if (tempFiles.length === 0) {\n return Promise.resolve()\n }\n\n this.tempFiles = []\n\n return BluebirdPromise.map(tempFiles, it => {\n if (it.disposer != null) {\n return it.disposer(it.path)\n }\n\n return (it.isDir ? remove(it.path) : unlink(it.path))\n .catch(e => {\n handleError(e, it.path)\n })\n }, {concurrency: 8})\n }\n\n toString() {\n return this.debugName\n }\n}\n\nfunction nullize(s?: string | null) {\n return s == null || s.length === 0 ? null : s\n}"]} | ||
| {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { ensureDir, mkdtemp, realpath, remove, removeSync, unlink, unlinkSync } from \"fs-extra-p\"\nimport { Lazy } from \"lazy-val\"\nimport { tmpdir } from \"os\"\nimport * as path from \"path\"\n\nlet tmpFileCounter = 0\nconst tmpDirManagers = new Set<TmpDir>()\n\n// add date to avoid use stale temp dir\nconst tempDirPrefix = `${process.pid.toString(36)}-${Date.now().toString(36)}`\n\nexport function getTempName(prefix?: string | null | undefined): string {\n return `${prefix == null ? \"\" : `${prefix}-`}${tempDirPrefix}-${(tmpFileCounter++).toString(36)}`\n}\n\nconst tempDir = new Lazy<string>(() => {\n let promise: Promise<string>\n const systemTmpDir = process.env.TEST_TMP_DIR || process.env.ELECTRON_BUILDER_TMP_DIR || process.env.ELECTRON_BUILDER_TEST_DIR || tmpdir()\n const isEnsureRemovedOnExit = process.env.TMP_DIR_MANAGER_ENSURE_REMOVED_ON_EXIT !== \"false\"\n if (!isEnsureRemovedOnExit) {\n promise = Promise.resolve(systemTmpDir)\n }\n else if (mkdtemp == null) {\n const dir = path.join(systemTmpDir, getTempName(\"temp-files\"))\n promise = ensureDir(dir, {mode: 448}).then(() => dir)\n }\n else {\n promise = mkdtemp(`${path.join(systemTmpDir, \"temp-dir\")}-`)\n }\n\n return promise\n .then(it => realpath(it))\n .then(dir => {\n if (isEnsureRemovedOnExit) {\n addExitHook(dir)\n }\n return dir\n })\n})\n\nfunction addExitHook(dir: string) {\n require(\"async-exit-hook\")((callback: (() => void) | null) => {\n const managers = Array.from(tmpDirManagers)\n tmpDirManagers.clear()\n\n if (callback == null) {\n for (const manager of managers) {\n manager.cleanupSync()\n }\n\n try {\n removeSync(dir)\n }\n catch (e) {\n handleError(e, dir)\n }\n return\n }\n\n // each instead of map to avoid fs overload\n BluebirdPromise.each(managers, it => it.cleanup())\n .then(() => remove(dir))\n .then(() => callback())\n .catch(e => {\n try {\n handleError(e, dir)\n }\n finally {\n callback()\n }\n })\n })\n}\n\nfunction handleError(e: any, file: string) {\n if (e.code !== \"EPERM\" && e.code !== \"ENOENT\") {\n // use only console.* instead of our warn on exit (otherwise nodeEmoji can be required on request)\n console.warn(`Cannot delete temporary \"${file}\": ${(e.stack || e).toString()}`)\n }\n}\n\ninterface TempFileInfo {\n isDir: boolean\n path: string\n disposer?: ((file: string) => Promise<void>) | null\n}\n\nexport interface GetTempFileOptions {\n prefix?: string | null\n suffix?: string | null\n\n disposer?: ((file: string) => Promise<void>) | null\n}\n\nexport class TmpDir {\n private tempFiles: Array<TempFileInfo> = []\n private registered = false\n\n constructor(private readonly debugName: string = \"\") {\n }\n\n // noinspection JSMethodCanBeStatic\n // noinspection JSUnusedGlobalSymbols\n get rootTempDir(): Promise<string> {\n return tempDir.value\n }\n\n getTempDir(options?: GetTempFileOptions): Promise<string> {\n return this.getTempFile(options, true)\n }\n\n createTempDir(options?: GetTempFileOptions): Promise<string> {\n return this.getTempFile(options, true)\n .then(it => ensureDir(it).then(() => it))\n }\n\n getTempFile(options?: GetTempFileOptions, isDir = false): Promise<string> {\n return tempDir.value\n .then(it => {\n if (!this.registered) {\n this.registered = true\n tmpDirManagers.add(this)\n }\n\n const prefix = nullize(options == null ? null : options.prefix)\n const suffix = nullize(options == null ? null : options.suffix)\n const namePrefix = prefix == null ? \"\" : `${prefix}-`\n const nameSuffix = suffix == null ? \"\" : (suffix.startsWith(\".\") ? suffix : `-${suffix}`)\n const result = `${it}${path.sep}${namePrefix}${(tmpFileCounter++).toString(36)}${nameSuffix}`\n this.tempFiles.push({\n path: result,\n isDir,\n disposer: options == null ? null : options.disposer,\n })\n return result\n })\n }\n\n cleanupSync() {\n const tempFiles = this.tempFiles\n tmpDirManagers.delete(this)\n this.registered = false\n if (tempFiles.length === 0) {\n return\n }\n\n this.tempFiles = []\n\n for (const file of tempFiles) {\n if (file.disposer != null) {\n // noinspection JSIgnoredPromiseFromCall\n file.disposer(file.path)\n continue\n }\n\n try {\n if (file.isDir) {\n removeSync(file.path)\n }\n else {\n unlinkSync(file.path)\n }\n }\n catch (e) {\n handleError(e, file.path)\n }\n }\n }\n\n cleanup(): Promise<any> {\n const tempFiles = this.tempFiles\n tmpDirManagers.delete(this)\n this.registered = false\n if (tempFiles.length === 0) {\n return Promise.resolve()\n }\n\n this.tempFiles = []\n\n return BluebirdPromise.map(tempFiles, it => {\n if (it.disposer != null) {\n return it.disposer(it.path)\n }\n\n return (it.isDir ? remove(it.path) : unlink(it.path))\n .catch(e => {\n handleError(e, it.path)\n })\n }, {concurrency: 8})\n }\n\n toString() {\n return this.debugName\n }\n}\n\nfunction nullize(s?: string | null) {\n return s == null || s.length === 0 ? null : s\n}"]} |
+7
-7
| { | ||
| "name": "temp-file", | ||
| "version": "3.1.1", | ||
| "version": "3.1.2", | ||
| "main": "out/main.js", | ||
@@ -20,11 +20,11 @@ "author": "Vladimir Krivosheev", | ||
| "bluebird-lst": "^1.0.5", | ||
| "fs-extra-p": "^4.5.0", | ||
| "fs-extra-p": "^4.6.0", | ||
| "lazy-val": "^1.0.3" | ||
| }, | ||
| "devDependencies": { | ||
| "@types/js-yaml": "^3.10.1", | ||
| "@types/node": "^9.3.0", | ||
| "babel-preset-ts-node6-bluebird": "^1.0.1", | ||
| "ts-babel": "^4.1.8", | ||
| "typescript": "^2.6.2" | ||
| "@types/js-yaml": "^3.11.1", | ||
| "@types/node": "^10.0.2", | ||
| "babel-preset-ts-node6-bluebird": "^2.0.5", | ||
| "ts-babel": "^5.0.3", | ||
| "typescript": "^2.8.3" | ||
| }, | ||
@@ -31,0 +31,0 @@ "babel": { |
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 4 instances in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 4 instances in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
201
7.49%18924
-5.01%Updated