JezK
Edit File: index.js.map
{"version":3,"file":"index.js","names":["invariant","require","path","ssri","getName","pattern","normalizePattern","name","blankObjectUndefined","obj","Object","keys","length","undefined","keyForRemote","remote","resolved","reference","hash","serializeIntegrity","integrity","toString","split","sort","join","implodeEntry","inferredName","imploded","version","uid","registry","dependencies","optionalDependencies","permissions","prebuiltVariants","explodeEntry","isIntegrity","parse","Lockfile","cache","source","parseResultType","key","test","shrunk","getLocked","patterns","lockfile","seen","Map","sortedPatternsKeys","sortAlpha","pkg","_remote","ref","_reference","remoteKey","seenPattern","get","_uid","peerDependencies","set","dir","reporter","lockfileLoc","LOCKFILE_FILENAME","rawLockfile","fs","exists","readFile","parseResult","type","info","lang","warn","object","__metadata","lockfilev2"],"sourceRoot":"../../src","sources":["lockfile/index.js"],"sourcesContent":["/* @flow */\n\nimport type {Reporter} from '../reporters/index.js';\nimport type {Manifest, PackageRemote} from '../types.js';\nimport type {RegistryNames} from '../registries/index.js';\nimport type {ParseResultType} from './parse.js';\nimport {sortAlpha} from '../util/misc.js';\nimport {normalizePattern} from '../util/normalize-pattern.js';\nimport parse from './parse.js';\nimport {LOCKFILE_FILENAME} from '../constants.js';\nimport * as fs from '../util/fs.js';\n\nconst invariant = require('invariant');\nconst path = require('path');\nconst ssri = require('ssri');\n\nexport {default as parse} from './parse';\nexport {default as stringify} from './stringify';\n\ntype Dependencies = {\n [key: string]: string,\n};\n\ntype IntegrityAlgorithm = string;\ntype Hash = {|\n source: string,\n algorithm: IntegrityAlgorithm,\n digest: string,\n options: Object,\n|};\ntype Integrity = {\n toJSON(): string,\n toString(): string,\n concat(integrity: Integrity, opts: Object): Integrity,\n hexDigest(): string,\n match(integrity: Integrity, opts: Object): boolean,\n pickAlgorithm(opts: Object): string,\n isIntegrity: boolean,\n [key: IntegrityAlgorithm]: [Hash],\n};\n\nexport type LockManifest = {\n name: string,\n version: string,\n resolved: ?string,\n integrity: ?string,\n registry: RegistryNames,\n uid: string,\n permissions: ?{[key: string]: boolean},\n optionalDependencies: ?Dependencies,\n dependencies: ?Dependencies,\n prebuiltVariants: ?{[key: string]: string},\n};\n\ntype MinimalLockManifest = {\n name: ?string,\n version: string,\n resolved: ?string,\n integrity?: string,\n registry: ?RegistryNames,\n uid: ?string,\n permissions: ?{[key: string]: boolean},\n optionalDependencies: ?Dependencies,\n dependencies: ?Dependencies,\n};\n\nexport type LockfileObject = {\n [key: string]: LockManifest,\n};\n\nfunction getName(pattern: string): string {\n return normalizePattern(pattern).name;\n}\n\nfunction blankObjectUndefined(obj: ?Object): ?Object {\n return obj && Object.keys(obj).length ? obj : undefined;\n}\n\nfunction keyForRemote(remote: PackageRemote): ?string {\n return remote.resolved || (remote.reference && remote.hash ? `${remote.reference}#${remote.hash}` : null);\n}\n\nfunction serializeIntegrity(integrity: Integrity): string {\n // We need this because `Integrity.toString()` does not use sorting to ensure a stable string output\n // See https://git.io/vx2Hy\n return integrity.toString().split(' ').sort().join(' ');\n}\n\nexport function implodeEntry(pattern: string, obj: Object): MinimalLockManifest {\n const inferredName = getName(pattern);\n const integrity = obj.integrity ? serializeIntegrity(obj.integrity) : '';\n const imploded: MinimalLockManifest = {\n name: inferredName === obj.name ? undefined : obj.name,\n version: obj.version,\n uid: obj.uid === obj.version ? undefined : obj.uid,\n resolved: obj.resolved,\n registry: obj.registry === 'npm' ? undefined : obj.registry,\n dependencies: blankObjectUndefined(obj.dependencies),\n optionalDependencies: blankObjectUndefined(obj.optionalDependencies),\n permissions: blankObjectUndefined(obj.permissions),\n prebuiltVariants: blankObjectUndefined(obj.prebuiltVariants),\n };\n if (integrity) {\n imploded.integrity = integrity;\n }\n return imploded;\n}\n\nexport function explodeEntry(pattern: string, obj: Object): LockManifest {\n obj.optionalDependencies = obj.optionalDependencies || {};\n obj.dependencies = obj.dependencies || {};\n obj.uid = obj.uid || obj.version;\n obj.permissions = obj.permissions || {};\n obj.registry = obj.registry || 'npm';\n obj.name = obj.name || getName(pattern);\n const integrity = obj.integrity;\n if (integrity && integrity.isIntegrity) {\n obj.integrity = ssri.parse(integrity);\n }\n return obj;\n}\n\nexport default class Lockfile {\n constructor(\n {cache, source, parseResultType}: {cache?: ?Object, source?: string, parseResultType?: ParseResultType} = {},\n ) {\n this.source = source || '';\n this.cache = cache;\n this.parseResultType = parseResultType;\n }\n\n // source string if the `cache` was parsed\n source: string;\n\n cache: ?{\n [key: string]: LockManifest,\n };\n\n parseResultType: ?ParseResultType;\n\n // if true, we're parsing an old yarn file and need to update integrity fields\n hasEntriesExistWithoutIntegrity(): boolean {\n if (!this.cache) {\n return false;\n }\n\n for (const key in this.cache) {\n // $FlowFixMe - `this.cache` is clearly defined at this point\n if (!/^.*@(file:|http)/.test(key) && this.cache[key] && !this.cache[key].integrity) {\n return true;\n }\n }\n\n return false;\n }\n\n static async fromDirectory(dir: string, reporter?: Reporter): Promise<Lockfile> {\n // read the manifest in this directory\n const lockfileLoc = path.join(dir, LOCKFILE_FILENAME);\n\n let lockfile;\n let rawLockfile = '';\n let parseResult;\n\n if (await fs.exists(lockfileLoc)) {\n rawLockfile = await fs.readFile(lockfileLoc);\n parseResult = parse(rawLockfile, lockfileLoc);\n\n if (reporter) {\n if (parseResult.type === 'merge') {\n reporter.info(reporter.lang('lockfileMerged'));\n } else if (parseResult.type === 'conflict') {\n reporter.warn(reporter.lang('lockfileConflict'));\n }\n }\n\n lockfile = parseResult.object;\n } else if (reporter) {\n reporter.info(reporter.lang('noLockfileFound'));\n }\n\n if (lockfile && lockfile.__metadata) {\n const lockfilev2 = lockfile;\n lockfile = {};\n }\n\n return new Lockfile({cache: lockfile, source: rawLockfile, parseResultType: parseResult && parseResult.type});\n }\n\n getLocked(pattern: string): ?LockManifest {\n const cache = this.cache;\n if (!cache) {\n return undefined;\n }\n\n const shrunk = pattern in cache && cache[pattern];\n\n if (typeof shrunk === 'string') {\n return this.getLocked(shrunk);\n } else if (shrunk) {\n explodeEntry(pattern, shrunk);\n return shrunk;\n }\n\n return undefined;\n }\n\n removePattern(pattern: string) {\n const cache = this.cache;\n if (!cache) {\n return;\n }\n delete cache[pattern];\n }\n\n getLockfile(patterns: {[packagePattern: string]: Manifest}): LockfileObject {\n const lockfile = {};\n const seen: Map<string, Object> = new Map();\n\n // order by name so that lockfile manifest is assigned to the first dependency with this manifest\n // the others that have the same remoteKey will just refer to the first\n // ordering allows for consistency in lockfile when it is serialized\n const sortedPatternsKeys: Array<string> = Object.keys(patterns).sort(sortAlpha);\n\n for (const pattern of sortedPatternsKeys) {\n const pkg = patterns[pattern];\n const {_remote: remote, _reference: ref} = pkg;\n invariant(ref, 'Package is missing a reference');\n invariant(remote, 'Package is missing a remote');\n\n const remoteKey = keyForRemote(remote);\n const seenPattern = remoteKey && seen.get(remoteKey);\n if (seenPattern) {\n // no point in duplicating it\n lockfile[pattern] = seenPattern;\n\n // if we're relying on our name being inferred and two of the patterns have\n // different inferred names then we need to set it\n if (!seenPattern.name && getName(pattern) !== pkg.name) {\n seenPattern.name = pkg.name;\n }\n continue;\n }\n const obj = implodeEntry(pattern, {\n name: pkg.name,\n version: pkg.version,\n uid: pkg._uid,\n resolved: remote.resolved,\n integrity: remote.integrity,\n registry: remote.registry,\n dependencies: pkg.dependencies,\n peerDependencies: pkg.peerDependencies,\n optionalDependencies: pkg.optionalDependencies,\n permissions: ref.permissions,\n prebuiltVariants: pkg.prebuiltVariants,\n });\n\n lockfile[pattern] = obj;\n\n if (remoteKey) {\n seen.set(remoteKey, obj);\n }\n }\n\n return lockfile;\n }\n}\n"],"mappings":"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"}