JezK
Edit File: tarball-resolver.js.map
{"version":3,"file":"tarball-resolver.js","names":["invariant","require","TarballResolver","request","fragment","versionUtil","explodeHashedUrl","hash","url","shrunk","getLocked","registry","dest","config","getTemp","crypto","isValidModuleDest","readPackageMetadata","pkgJson","fs","unlink","fetcher","TarballFetcher","type","reference","fetch","name","guessName","version","_registry","fetched","_uid","_remote","resolved","pattern","Git","isVersion","startsWith","indexOf","endsWith","ExoticResolver"],"sourceRoot":"../../../src","sources":["resolvers/exotics/tarball-resolver.js"],"sourcesContent":["/* @flow */\n\nimport type {Manifest, FetchedMetadata} from '../../types.js';\nimport type PackageRequest from '../../package-request.js';\nimport TarballFetcher from '../../fetchers/tarball-fetcher.js';\nimport ExoticResolver from './exotic-resolver.js';\nimport Git from './git-resolver.js';\nimport guessName from '../../util/guess-name.js';\nimport * as versionUtil from '../../util/version.js';\nimport * as crypto from '../../util/crypto.js';\nimport * as fs from '../../util/fs.js';\n\nconst invariant = require('invariant');\n\nexport default class TarballResolver extends ExoticResolver {\n constructor(request: PackageRequest, fragment: string) {\n super(request, fragment);\n\n const {hash, url} = versionUtil.explodeHashedUrl(fragment);\n this.hash = hash;\n this.url = url;\n }\n\n url: string;\n hash: string;\n\n static isVersion(pattern: string): boolean {\n // we can sometimes match git urls which we don't want\n if (Git.isVersion(pattern)) {\n return false;\n }\n\n // full http url\n if (pattern.startsWith('http://') || pattern.startsWith('https://')) {\n return true;\n }\n\n // local file reference - ignore patterns with names\n if (pattern.indexOf('@') < 0) {\n if (pattern.endsWith('.tgz') || pattern.endsWith('.tar.gz')) {\n return true;\n }\n }\n\n return false;\n }\n\n async resolve(): Promise<Manifest> {\n const shrunk = this.request.getLocked('tarball');\n if (shrunk) {\n return shrunk;\n }\n\n const url = this.url;\n let {hash, registry} = this;\n let pkgJson;\n\n // generate temp directory\n const dest = this.config.getTemp(crypto.hash(url));\n\n if (await this.config.isValidModuleDest(dest)) {\n // load from local cache\n ({package: pkgJson, hash, registry} = await this.config.readPackageMetadata(dest));\n } else {\n // delete if invalid\n await fs.unlink(dest);\n\n const fetcher = new TarballFetcher(\n dest,\n {\n type: 'tarball',\n reference: url,\n registry,\n hash,\n },\n this.config,\n );\n\n // fetch file and get it's hash\n const fetched: FetchedMetadata = await fetcher.fetch({\n name: guessName(url),\n version: '0.0.0',\n _registry: 'npm',\n });\n pkgJson = fetched.package;\n hash = fetched.hash;\n\n registry = pkgJson._registry;\n invariant(registry, 'expected registry');\n }\n\n // use the commit/tarball hash as the uid as we can't rely on the version as it's not\n // in the registry\n pkgJson._uid = hash;\n\n // set remote so it can be \"fetched\"\n pkgJson._remote = {\n type: 'copy',\n resolved: `${url}#${hash}`,\n hash,\n registry,\n reference: dest,\n };\n\n return pkgJson;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;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;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAuC;AAAA;AAAA;AAAA;AAEvC,IAAMA,SAAS,GAAGC,OAAO,CAAC,WAAW,CAAC;AAAC,IAElBC,eAAe;EAAA;EAAA;EAClC,yBAAYC,OAAuB,EAAEC,QAAgB,EAAE;IAAA;IAAA;IACrD,0BAAMD,OAAO,EAAEC,QAAQ;IAAE;IAAA;IAEzB,4BAAoBC,WAAW,GAACC,gBAAgB,CAACF,QAAQ,CAAC;MAAnDG,IAAI,yBAAJA,IAAI;MAAEC,GAAG,yBAAHA,GAAG;IAChB,MAAKD,IAAI,GAAGA,IAAI;IAChB,MAAKC,GAAG,GAAGA,GAAG;IAAC;EACjB;EAAC;IAAA;IAAA;MAAA,iGA0BD;QAAA;QAAA;UAAA;YAAA;cACQC,MAAM,GAAG,IAAI,CAACN,OAAO,CAACO,SAAS,CAAC,SAAS,CAAC;cAAA,KAC5CD,MAAM;gBAAA;gBAAA;cAAA;cAAA,iCACDA,MAAM;YAAA;cAGTD,GAAG,GAAG,IAAI,CAACA,GAAG;cACfD,IAAI,GAAc,IAAI,CAAtBA,IAAI,EAAEI,QAAQ,GAAI,IAAI,CAAhBA,QAAQ;cAGnB;cACMC,IAAI,GAAG,IAAI,CAACC,MAAM,CAACC,OAAO,CAACC,MAAM,GAACR,IAAI,CAACC,GAAG,CAAC,CAAC;cAAA;cAAA,OAExC,IAAI,CAACK,MAAM,CAACG,iBAAiB,CAACJ,IAAI,CAAC;YAAA;cAAA;gBAAA;gBAAA;cAAA;cAAA;cAAA,OAEC,IAAI,CAACC,MAAM,CAACI,mBAAmB,CAACL,IAAI,CAAC;YAAA;cAAA;cAAtEM,OAAO;cAAEX,IAAI,yBAAJA,IAAI;cAAEI,QAAQ,yBAARA,QAAQ;cAAA;cAAA;YAAA;cAAA;cAAA,OAG5BQ,EAAE,GAACC,MAAM,CAACR,IAAI,CAAC;YAAA;cAEfS,OAAO,GAAG,KAAIC,4BAAc,EAChCV,IAAI,EACJ;gBACEW,IAAI,EAAE,SAAS;gBACfC,SAAS,EAAEhB,GAAG;gBACdG,QAAQ,EAARA,QAAQ;gBACRJ,IAAI,EAAJA;cACF,CAAC,EACD,IAAI,CAACM,MAAM,CACZ,EAED;cAAA;cAAA,OACuCQ,OAAO,CAACI,KAAK,CAAC;gBACnDC,IAAI,EAAE,IAAAC,uBAAS,EAACnB,GAAG,CAAC;gBACpBoB,OAAO,EAAE,OAAO;gBAChBC,SAAS,EAAE;cACb,CAAC,CAAC;YAAA;cAJIC,OAAwB;cAK9BZ,OAAO,GAAGY,OAAO,WAAQ;cACzBvB,IAAI,GAAGuB,OAAO,CAACvB,IAAI;cAEnBI,QAAQ,GAAGO,OAAO,CAACW,SAAS;cAC5B7B,SAAS,CAACW,QAAQ,EAAE,mBAAmB,CAAC;YAAC;cAG3C;cACA;cACAO,OAAO,CAACa,IAAI,GAAGxB,IAAI;;cAEnB;cACAW,OAAO,CAACc,OAAO,GAAG;gBAChBT,IAAI,EAAE,MAAM;gBACZU,QAAQ,YAAKzB,GAAG,cAAID,IAAI,CAAE;gBAC1BA,IAAI,EAAJA,IAAI;gBACJI,QAAQ,EAARA,QAAQ;gBACRa,SAAS,EAAEZ;cACb,CAAC;cAAC,iCAEKM,OAAO;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA,CACf;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OA/ED,mBAAiBgB,OAAe,EAAW;MACzC;MACA,IAAIC,yBAAG,CAACC,SAAS,CAACF,OAAO,CAAC,EAAE;QAC1B,OAAO,KAAK;MACd;;MAEA;MACA,IAAIA,OAAO,CAACG,UAAU,CAAC,SAAS,CAAC,IAAIH,OAAO,CAACG,UAAU,CAAC,UAAU,CAAC,EAAE;QACnE,OAAO,IAAI;MACb;;MAEA;MACA,IAAIH,OAAO,CAACI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QAC5B,IAAIJ,OAAO,CAACK,QAAQ,CAAC,MAAM,CAAC,IAAIL,OAAO,CAACK,QAAQ,CAAC,SAAS,CAAC,EAAE;UAC3D,OAAO,IAAI;QACb;MACF;MAEA,OAAO,KAAK;IACd;EAAC;EAAA;AAAA,EA/B0CC,4BAAc;AAAA"}