JezK
Edit File: resolve-relative.js.map
{"version":3,"file":"resolve-relative.js","names":["path","require","info","moduleLoc","lockfileFolder","DEPENDENCY_TYPES","dependencyType","dependencies","Object","keys","name","value","isAbsolute","FILE_PROTOCOL_PREFIX","prefix","startsWith","LINK_PROTOCOL_PREFIX","invariant","unprefixed","substr","length","hasPathPrefix","test","absoluteTarget","resolve","relativeTarget","relative","replace"],"sourceRoot":"../../../src","sources":["util/normalize-manifest/resolve-relative.js"],"sourcesContent":["/* @flow */\n\nimport {DEPENDENCY_TYPES} from '../../constants.js';\nimport {FILE_PROTOCOL_PREFIX} from '../../resolvers/exotics/file-resolver.js';\nimport {LINK_PROTOCOL_PREFIX} from '../../resolvers/exotics/link-resolver.js';\nimport invariant from 'invariant';\n\nconst path = require('path');\n\nexport default function(info: Object, moduleLoc: string, lockfileFolder: string) {\n // It won't work if we don't yet know what's the folder we'll use as root. It's not a\n // big deal tho, because it only happens when trying to figure out the root, and we\n // don't need to know the dependencies / devDependencies at this time.\n if (!lockfileFolder) {\n return;\n }\n\n for (const dependencyType of DEPENDENCY_TYPES) {\n const dependencies = info[dependencyType];\n if (!dependencies) {\n continue;\n }\n\n for (const name of Object.keys(dependencies)) {\n let value = dependencies[name];\n\n if (path.isAbsolute(value)) {\n value = FILE_PROTOCOL_PREFIX + value;\n }\n\n let prefix;\n if (value.startsWith(FILE_PROTOCOL_PREFIX)) {\n prefix = FILE_PROTOCOL_PREFIX;\n } else if (value.startsWith(LINK_PROTOCOL_PREFIX)) {\n prefix = LINK_PROTOCOL_PREFIX;\n } else {\n continue;\n }\n invariant(prefix, 'prefix is definitely defined here');\n\n const unprefixed = value.substr(prefix.length);\n const hasPathPrefix = /^\\.(\\/|$)/.test(unprefixed);\n\n const absoluteTarget = path.resolve(lockfileFolder, moduleLoc, unprefixed);\n let relativeTarget = path.relative(lockfileFolder, absoluteTarget) || '.';\n\n if (absoluteTarget === lockfileFolder) {\n relativeTarget = '.';\n } else if (hasPathPrefix) {\n // TODO: This logic should be removed during the next major bump\n // If the original value was using the \"./\" prefix, then we output a similar path.\n // We need to do this because otherwise it would cause problems with already existing\n // lockfile, which would see some of their entries being unrecognized.\n relativeTarget = relativeTarget.replace(/^(?!\\.{0,2}\\/)/, `./`);\n }\n\n dependencies[name] = prefix + relativeTarget.replace(/\\\\/g, '/');\n }\n }\n}\n"],"mappings":";;;;;;;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAkC;AAAA;AAAA;AAElC,IAAMA,IAAI,GAAGC,OAAO,CAAC,MAAM,CAAC;AAEb,kBAASC,IAAY,EAAEC,SAAiB,EAAEC,cAAsB,EAAE;EAC/E;EACA;EACA;EACA,IAAI,CAACA,cAAc,EAAE;IACnB;EACF;EAAC,2CAE4BC,6BAAgB;IAAA;EAAA;IAA7C,oDAA+C;MAAA,IAApCC,cAAc;MACvB,IAAMC,YAAY,GAAGL,IAAI,CAACI,cAAc,CAAC;MACzC,IAAI,CAACC,YAAY,EAAE;QACjB;MACF;MAEA,gCAAmBC,MAAM,CAACC,IAAI,CAACF,YAAY,CAAC,kCAAE;QAAzC,IAAMG,IAAI;QACb,IAAIC,KAAK,GAAGJ,YAAY,CAACG,IAAI,CAAC;QAE9B,IAAIV,IAAI,CAACY,UAAU,CAACD,KAAK,CAAC,EAAE;UAC1BA,KAAK,GAAGE,oCAAoB,GAAGF,KAAK;QACtC;QAEA,IAAIG,MAAM;QACV,IAAIH,KAAK,CAACI,UAAU,CAACF,oCAAoB,CAAC,EAAE;UAC1CC,MAAM,GAAGD,oCAAoB;QAC/B,CAAC,MAAM,IAAIF,KAAK,CAACI,UAAU,CAACC,oCAAoB,CAAC,EAAE;UACjDF,MAAM,GAAGE,oCAAoB;QAC/B,CAAC,MAAM;UACL;QACF;QACA,IAAAC,uBAAS,EAACH,MAAM,EAAE,mCAAmC,CAAC;QAEtD,IAAMI,UAAU,GAAGP,KAAK,CAACQ,MAAM,CAACL,MAAM,CAACM,MAAM,CAAC;QAC9C,IAAMC,aAAa,GAAG,WAAW,CAACC,IAAI,CAACJ,UAAU,CAAC;QAElD,IAAMK,cAAc,GAAGvB,IAAI,CAACwB,OAAO,CAACpB,cAAc,EAAED,SAAS,EAAEe,UAAU,CAAC;QAC1E,IAAIO,cAAc,GAAGzB,IAAI,CAAC0B,QAAQ,CAACtB,cAAc,EAAEmB,cAAc,CAAC,IAAI,GAAG;QAEzE,IAAIA,cAAc,KAAKnB,cAAc,EAAE;UACrCqB,cAAc,GAAG,GAAG;QACtB,CAAC,MAAM,IAAIJ,aAAa,EAAE;UACxB;UACA;UACA;UACA;UACAI,cAAc,GAAGA,cAAc,CAACE,OAAO,CAAC,gBAAgB,OAAO;QACjE;QAEApB,YAAY,CAACG,IAAI,CAAC,GAAGI,MAAM,GAAGW,cAAc,CAACE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;MAClE;IACF;EAAC;IAAA;EAAA;IAAA;EAAA;AACH"}