JezK
Edit File: package-install-scripts.js.map
{"version":3,"file":"package-install-scripts.js","names":["fs","require","invariant","path","INSTALL_STAGES","PackageInstallScripts","config","resolver","force","installed","reporter","artifacts","pkg","scripts","cmds","stage","cmd","push","loc","fsUtil","walk","Set","registryFolders","files","mtimes","Map","file","set","relative","mtime","beforeFiles","spinner","afterFiles","buildArtifacts","has","get","length","ref","_reference","name","version","locs","locations","updateProgress","data","dataStr","toString","trim","tick","substr","lastIndexOf","replace","Promise","all","map","executeLifecycleScript","cwd","isInteractive","stdout","verbose","message","join","optional","ignore","incompatible","warn","lang","info","unlink","error","getInstallCommands","packBuiltPackages","prebuiltVariants","variant","_remote","reference","includes","fresh","setPrefix","install","root","seenManifests","deps","dependencies","dep","pkgDep","getStrictResolvedPattern","add","detectCircularDependencies","workQueue","dependenciesFulfilled","waitQueue","size","findInstallablePackage","clear","resolve","packageCanBeInstalled","runCommand","workerResolve","seedPatterns","pkgs","getTopologicalManifests","installablePkgs","beforeFilesMap","activitySet","Math","min","childConcurrency","spinners","worker","offlineMirrorPath","getOfflineMirrorPath","prebuiltPath","mkdirp","prebuiltFilename","getPlatformSpecificPackageFilename","builtPackagePaths","builtPackagePath","packWithIgnoreAndHeaders","stream","reject","validateStream","crypto","HashStream","pipe","createWriteStream","on","getHash","hash","b","index","saveBuildArtifacts","end"],"sourceRoot":"../src","sources":["package-install-scripts.js"],"sourcesContent":["/* @flow */\n\nimport type {Manifest} from './types.js';\nimport type PackageResolver from './package-resolver.js';\nimport type {Reporter} from './reporters/index.js';\nimport Config from './config.js';\nimport type {ReporterSetSpinner} from './reporters/types.js';\nimport executeLifecycleScript from './util/execute-lifecycle-script.js';\nimport * as crypto from './util/crypto.js';\nimport * as fsUtil from './util/fs.js';\nimport {getPlatformSpecificPackageFilename} from './util/package-name-utils.js';\nimport {packWithIgnoreAndHeaders} from './cli/commands/pack.js';\n\nconst fs = require('fs');\nconst invariant = require('invariant');\nconst path = require('path');\n\nconst INSTALL_STAGES = ['preinstall', 'install', 'postinstall'];\n\nexport type InstallArtifacts = {\n [pattern: string]: Array<string>,\n};\n\nexport default class PackageInstallScripts {\n constructor(config: Config, resolver: PackageResolver, force: boolean) {\n this.installed = 0;\n this.resolver = resolver;\n this.reporter = config.reporter;\n this.config = config;\n this.force = force;\n this.artifacts = {};\n }\n\n needsPermission: boolean;\n resolver: PackageResolver;\n reporter: Reporter;\n installed: number;\n config: Config;\n force: boolean;\n artifacts: InstallArtifacts;\n\n setForce(force: boolean) {\n this.force = force;\n }\n\n setArtifacts(artifacts: InstallArtifacts) {\n this.artifacts = artifacts;\n }\n\n getArtifacts(): InstallArtifacts {\n return this.artifacts;\n }\n\n getInstallCommands(pkg: Manifest): Array<[string, string]> {\n const scripts = pkg.scripts;\n if (scripts) {\n const cmds = [];\n for (const stage of INSTALL_STAGES) {\n const cmd = scripts[stage];\n if (cmd) {\n cmds.push([stage, cmd]);\n }\n }\n return cmds;\n } else {\n return [];\n }\n }\n\n async walk(loc: string): Promise<Map<string, number>> {\n const files = await fsUtil.walk(loc, null, new Set(this.config.registryFolders));\n const mtimes = new Map();\n for (const file of files) {\n mtimes.set(file.relative, file.mtime);\n }\n return mtimes;\n }\n\n async saveBuildArtifacts(\n loc: string,\n pkg: Manifest,\n beforeFiles: Map<string, number>,\n spinner: ReporterSetSpinner,\n ): Promise<void> {\n const afterFiles = await this.walk(loc);\n\n // work out what files have been created/modified\n const buildArtifacts = [];\n for (const [file, mtime] of afterFiles) {\n if (!beforeFiles.has(file) || beforeFiles.get(file) !== mtime) {\n buildArtifacts.push(file);\n }\n }\n\n if (!buildArtifacts.length) {\n // nothing else to do here since we have no build artifacts\n return;\n }\n\n // set build artifacts\n const ref = pkg._reference;\n invariant(ref, 'expected reference');\n this.artifacts[`${pkg.name}@${pkg.version}`] = buildArtifacts;\n }\n\n async install(cmds: Array<[string, string]>, pkg: Manifest, spinner: ReporterSetSpinner): Promise<void> {\n const ref = pkg._reference;\n invariant(ref, 'expected reference');\n const locs = ref.locations;\n\n let updateProgress;\n\n if (cmds.length > 0) {\n updateProgress = data => {\n const dataStr = data\n .toString() // turn buffer into string\n .trim(); // trim whitespace\n\n invariant(spinner && spinner.tick, 'We should have spinner and its ticker here');\n if (dataStr) {\n spinner.tick(\n dataStr\n // Only get the last line\n .substr(dataStr.lastIndexOf('\\n') + 1)\n // change tabs to spaces as they can interfere with the console\n .replace(/\\t/g, ' '),\n );\n }\n };\n }\n\n try {\n for (const [stage, cmd] of cmds) {\n await Promise.all(\n locs.map(async loc => {\n const {stdout} = await executeLifecycleScript({\n stage,\n config: this.config,\n cwd: loc,\n cmd,\n isInteractive: false,\n updateProgress,\n });\n this.reporter.verbose(stdout);\n }),\n );\n }\n } catch (err) {\n err.message = `${locs.join(', ')}: ${err.message}`;\n\n invariant(ref, 'expected reference');\n\n if (ref.optional) {\n ref.ignore = true;\n ref.incompatible = true;\n this.reporter.warn(this.reporter.lang('optionalModuleScriptFail', err.message));\n this.reporter.info(this.reporter.lang('optionalModuleFail'));\n\n // Cleanup node_modules\n try {\n await Promise.all(\n locs.map(async loc => {\n await fsUtil.unlink(loc);\n }),\n );\n } catch (e) {\n this.reporter.error(this.reporter.lang('optionalModuleCleanupFail', e.message));\n }\n } else {\n throw err;\n }\n }\n }\n\n packageCanBeInstalled(pkg: Manifest): boolean {\n const cmds = this.getInstallCommands(pkg);\n if (!cmds.length) {\n return false;\n }\n if (this.config.packBuiltPackages && pkg.prebuiltVariants) {\n for (const variant in pkg.prebuiltVariants) {\n if (pkg._remote && pkg._remote.reference && pkg._remote.reference.includes(variant)) {\n return false;\n }\n }\n }\n const ref = pkg._reference;\n invariant(ref, 'Missing package reference');\n if (!ref.fresh && !this.force) {\n // this package hasn't been touched\n return false;\n }\n\n // Don't run lifecycle scripts for hoisted packages\n if (!ref.locations.length) {\n return false;\n }\n\n // we haven't actually written this module out\n if (ref.ignore) {\n return false;\n }\n return true;\n }\n\n async runCommand(spinner: ReporterSetSpinner, pkg: Manifest): Promise<void> {\n const cmds = this.getInstallCommands(pkg);\n spinner.setPrefix(++this.installed, pkg.name);\n await this.install(cmds, pkg, spinner);\n }\n\n // detect if there is a circularDependency in the dependency tree\n detectCircularDependencies(root: Manifest, seenManifests: Set<Manifest>, pkg: Manifest): boolean {\n const ref = pkg._reference;\n invariant(ref, 'expected reference');\n\n const deps = ref.dependencies;\n for (const dep of deps) {\n const pkgDep = this.resolver.getStrictResolvedPattern(dep);\n if (seenManifests.has(pkgDep)) {\n // there is a cycle but not with the root\n continue;\n }\n seenManifests.add(pkgDep);\n // found a dependency pointing to root\n if (pkgDep == root) {\n return true;\n }\n if (this.detectCircularDependencies(root, seenManifests, pkgDep)) {\n return true;\n }\n }\n return false;\n }\n\n // find the next package to be installed\n findInstallablePackage(workQueue: Set<Manifest>, installed: Set<Manifest>): ?Manifest {\n for (const pkg of workQueue) {\n const ref = pkg._reference;\n invariant(ref, 'expected reference');\n const deps = ref.dependencies;\n\n let dependenciesFulfilled = true;\n for (const dep of deps) {\n const pkgDep = this.resolver.getStrictResolvedPattern(dep);\n if (!installed.has(pkgDep)) {\n dependenciesFulfilled = false;\n break;\n }\n }\n\n // all dependencies are installed\n if (dependenciesFulfilled) {\n return pkg;\n }\n\n // detect circular dependency, mark this pkg as installable to break the circle\n if (this.detectCircularDependencies(pkg, new Set(), pkg)) {\n return pkg;\n }\n }\n return null;\n }\n\n async worker(\n spinner: ReporterSetSpinner,\n workQueue: Set<Manifest>,\n installed: Set<Manifest>,\n waitQueue: Set<() => void>,\n ): Promise<void> {\n while (workQueue.size > 0) {\n // find a installable package\n const pkg = this.findInstallablePackage(workQueue, installed);\n\n // can't find a package to install, register into waitQueue\n if (pkg == null) {\n spinner.clear();\n await new Promise(resolve => waitQueue.add(resolve));\n continue;\n }\n\n // found a package to install\n workQueue.delete(pkg);\n if (this.packageCanBeInstalled(pkg)) {\n await this.runCommand(spinner, pkg);\n }\n installed.add(pkg);\n for (const workerResolve of waitQueue) {\n workerResolve();\n }\n waitQueue.clear();\n }\n }\n\n async init(seedPatterns: Array<string>): Promise<void> {\n const workQueue = new Set();\n const installed = new Set();\n const pkgs = this.resolver.getTopologicalManifests(seedPatterns);\n let installablePkgs = 0;\n // A map to keep track of what files exist before installation\n const beforeFilesMap = new Map();\n for (const pkg of pkgs) {\n if (this.packageCanBeInstalled(pkg)) {\n const ref = pkg._reference;\n invariant(ref, 'expected reference');\n await Promise.all(\n ref.locations.map(async loc => {\n beforeFilesMap.set(loc, await this.walk(loc));\n installablePkgs += 1;\n }),\n );\n }\n workQueue.add(pkg);\n }\n\n const set = this.reporter.activitySet(installablePkgs, Math.min(installablePkgs, this.config.childConcurrency));\n\n // waitQueue acts like a semaphore to allow workers to register to be notified\n // when there are more work added to the work queue\n const waitQueue = new Set();\n await Promise.all(set.spinners.map(spinner => this.worker(spinner, workQueue, installed, waitQueue)));\n // generate built package as prebuilt one for offline mirror\n const offlineMirrorPath = this.config.getOfflineMirrorPath();\n if (this.config.packBuiltPackages && offlineMirrorPath) {\n for (const pkg of pkgs) {\n if (this.packageCanBeInstalled(pkg)) {\n let prebuiltPath = path.join(offlineMirrorPath, 'prebuilt');\n await fsUtil.mkdirp(prebuiltPath);\n const prebuiltFilename = getPlatformSpecificPackageFilename(pkg);\n prebuiltPath = path.join(prebuiltPath, prebuiltFilename + '.tgz');\n const ref = pkg._reference;\n invariant(ref, 'expected reference');\n const builtPackagePaths = ref.locations;\n\n await Promise.all(\n builtPackagePaths.map(async builtPackagePath => {\n // don't use pack command, we want to avoid the file filters logic\n const stream = await packWithIgnoreAndHeaders(builtPackagePath);\n\n const hash = await new Promise((resolve, reject) => {\n const validateStream = new crypto.HashStream();\n stream\n .pipe(validateStream)\n .pipe(fs.createWriteStream(prebuiltPath))\n .on('error', reject)\n .on('close', () => resolve(validateStream.getHash()));\n });\n pkg.prebuiltVariants = pkg.prebuiltVariants || {};\n pkg.prebuiltVariants[prebuiltFilename] = hash;\n }),\n );\n }\n }\n } else {\n // cache all build artifacts\n for (const pkg of pkgs) {\n if (this.packageCanBeInstalled(pkg)) {\n const ref = pkg._reference;\n invariant(ref, 'expected reference');\n const beforeFiles = ref.locations.map(loc => beforeFilesMap.get(loc));\n await Promise.all(\n beforeFiles.map(async (b, index) => {\n invariant(b, 'files before installation should always be recorded');\n await this.saveBuildArtifacts(ref.locations[index], pkg, b, set.spinners[0]);\n }),\n );\n }\n }\n }\n\n set.end();\n }\n}\n"],"mappings":"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"}