UNPKG

11 kBSource Map (JSON)View Raw
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}"]}