JezK
Edit File: package-compatibility.js.map
{"version":3,"file":"package-compatibility.js","names":["semver","require","VERSIONS","Object","assign","process","versions","yarn","yarnVersion","isValid","items","actual","isNotWhitelist","isBlacklist","item","slice","aliases","map","iojs","ignore","testEngine","name","range","looseSemver","valid","satisfies","satisfiesWithPrereleases","gt","major","fakes","actualFake","isValidArch","archs","arch","isValidPlatform","platforms","platform","checkOne","info","config","ignoreEngines","didIgnore","didError","reporter","human","version","pushError","msg","ref","_reference","optional","incompatible","error","os","cpu","engines","shouldCheckPlatform","ignorePlatform","lang","shouldCheckCpu","shouldCheckEngines","entries","entry","indexOf","warn","MessageError","check","infos","Array","isArray","length","shouldCheck","manifest","options"],"sourceRoot":"../src","sources":["package-compatibility.js"],"sourcesContent":["/* @flow */\n\nimport type {Manifest} from './types.js';\nimport type Config from './config.js';\nimport {MessageError} from './errors.js';\nimport map from './util/map.js';\nimport {entries} from './util/misc.js';\nimport {version as yarnVersion} from './util/yarn-version.js';\nimport {satisfiesWithPrereleases} from './util/semver.js';\n\nconst semver = require('semver');\n\nconst VERSIONS = Object.assign({}, process.versions, {\n yarn: yarnVersion,\n});\n\ntype PartialManifest = $Shape<Manifest>;\n\nfunction isValid(items: Array<string>, actual: string): boolean {\n let isNotWhitelist = true;\n let isBlacklist = false;\n\n for (const item of items) {\n // blacklist\n if (item[0] === '!') {\n isBlacklist = true;\n\n if (actual === item.slice(1)) {\n return false;\n }\n // whitelist\n } else {\n isNotWhitelist = false;\n\n if (item === actual) {\n return true;\n }\n }\n }\n\n // npm allows blacklists and whitelists to be mixed. Blacklists with\n // whitelisted items should be treated as whitelists.\n return isBlacklist && isNotWhitelist;\n}\n\nconst aliases = map({\n iojs: 'node', // we should probably prompt these libraries to fix this\n});\n\nconst ignore = [\n 'npm', // we'll never satisfy this for obvious reasons\n 'teleport', // a module bundler used by some modules\n 'rhino', // once a target for older modules\n 'cordovaDependencies', // http://bit.ly/2tkUePg\n 'parcel', // used for plugins of the Parcel bundler\n];\n\ntype Versions = {\n [engineName: string]: ?string,\n};\n\nexport function testEngine(name: string, range: string, versions: Versions, looseSemver: boolean): boolean {\n const actual = versions[name];\n if (!actual) {\n return false;\n }\n\n if (!semver.valid(actual, looseSemver)) {\n return false;\n }\n\n if (semver.satisfies(actual, range, looseSemver)) {\n return true;\n }\n\n if (name === 'yarn' && satisfiesWithPrereleases(actual, range, looseSemver)) {\n return true;\n }\n\n if (name === 'node' && semver.gt(actual, '1.0.0', looseSemver)) {\n // WARNING: this is a massive hack and is super gross but necessary for compatibility\n // some modules have the `engines.node` field set to a caret version below semver major v1\n // eg. ^0.12.0. this is problematic as we enforce engines checks and node is now on version >=1\n // to allow this pattern we transform the node version to fake ones in the minor range 10-13\n const major = semver.major(actual, looseSemver);\n const fakes = [`0.10.${major}`, `0.11.${major}`, `0.12.${major}`, `0.13.${major}`];\n for (const actualFake of fakes) {\n if (semver.satisfies(actualFake, range, looseSemver)) {\n return true;\n }\n }\n }\n\n // incompatible version\n return false;\n}\n\nfunction isValidArch(archs: Array<string>): boolean {\n return isValid(archs, process.arch);\n}\n\nfunction isValidPlatform(platforms: Array<string>): boolean {\n return isValid(platforms, process.platform);\n}\n\nexport function checkOne(info: Manifest, config: Config, ignoreEngines: boolean) {\n let didIgnore = false;\n let didError = false;\n const reporter = config.reporter;\n const human = `${info.name}@${info.version}`;\n\n const pushError = msg => {\n const ref = info._reference;\n\n if (ref && ref.optional) {\n ref.ignore = true;\n ref.incompatible = true;\n\n if (!didIgnore) {\n didIgnore = true;\n }\n } else {\n reporter.error(`${human}: ${msg}`);\n didError = true;\n }\n };\n\n const {os, cpu, engines} = info;\n\n if (shouldCheckPlatform(os, config.ignorePlatform) && !isValidPlatform(os)) {\n pushError(reporter.lang('incompatibleOS', process.platform));\n }\n\n if (shouldCheckCpu(cpu, config.ignorePlatform) && !isValidArch(cpu)) {\n pushError(reporter.lang('incompatibleCPU', process.arch));\n }\n\n if (shouldCheckEngines(engines, ignoreEngines)) {\n for (const entry of entries(info.engines)) {\n let name = entry[0];\n const range = entry[1];\n\n if (aliases[name]) {\n name = aliases[name];\n }\n\n if (VERSIONS[name]) {\n if (!testEngine(name, range, VERSIONS, config.looseSemver)) {\n pushError(reporter.lang('incompatibleEngine', name, range, VERSIONS[name]));\n }\n } else if (ignore.indexOf(name) < 0) {\n reporter.warn(`${human}: ${reporter.lang('invalidEngine', name)}`);\n }\n }\n }\n\n if (didError) {\n throw new MessageError(reporter.lang('foundIncompatible'));\n }\n}\n\nexport function check(infos: Array<Manifest>, config: Config, ignoreEngines: boolean) {\n for (const info of infos) {\n checkOne(info, config, ignoreEngines);\n }\n}\n\nfunction shouldCheckCpu(cpu: $PropertyType<Manifest, 'cpu'>, ignorePlatform: boolean): boolean %checks {\n return !ignorePlatform && Array.isArray(cpu) && cpu.length > 0;\n}\n\nfunction shouldCheckPlatform(os: $PropertyType<Manifest, 'os'>, ignorePlatform: boolean): boolean %checks {\n return !ignorePlatform && Array.isArray(os) && os.length > 0;\n}\n\nfunction shouldCheckEngines(engines: $PropertyType<Manifest, 'engines'>, ignoreEngines: boolean): boolean %checks {\n return !ignoreEngines && typeof engines === 'object';\n}\n\nexport function shouldCheck(\n manifest: PartialManifest,\n options: {ignoreEngines: boolean, ignorePlatform: boolean},\n): boolean {\n return (\n shouldCheckCpu(manifest.cpu, options.ignorePlatform) ||\n shouldCheckPlatform(manifest.os, options.ignorePlatform) ||\n shouldCheckEngines(manifest.engines, options.ignoreEngines)\n );\n}\n"],"mappings":"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"}