UNPKG

5.1 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/findPackageDependencyDir.ts"],"names":["pickValues","obj","keys","names","finalNames","results","pickedValue","index","length","value","toString","undefined","findPackageDependencyDir","ref","options","pkgName","path","join","scope","name","packageDir","findUp","sync","type","resolveSymlinks","fs","lstatSync","isSymbolicLink","resolve","dirname","readlinkSync"],"mappings":";;;;;;;;AAIA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;AANA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,UAAT,CACLC,GADK,EAELC,IAFK,EAGLC,KAHK,EAIgC;AACrC,QAAMC,UAAU,GAAGD,KAAK,IAAID,IAA5B;AACA,QAAMG,OAAgC,GAAG,EAAzC;AAEA,MAAIC,WAAW,GAAG,KAAlB;;AACA,OAAK,IAAIC,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGL,IAAI,CAACM,MAAjC,EAAyC,EAAED,KAA3C,EAAkD;AAChD,UAAME,KAAK,GAAGR,GAAG,CAACC,IAAI,CAACK,KAAD,CAAL,CAAjB;;AACA,QAAI,OAAOE,KAAP,KAAiB,WAArB,EAAkC;AAChCJ,MAAAA,OAAO,CAACD,UAAU,CAACG,KAAD,CAAV,CAAkBG,QAAlB,EAAD,CAAP,GAAwCD,KAAxC;AACAH,MAAAA,WAAW,GAAG,IAAd;AACD;AACF;;AAED,SAAOA,WAAW,GAAGD,OAAH,GAAaM,SAA/B;AACD;AAED;AACA;AACA;;;AA6BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,wBAAT,CACLC,GADK,EAELC,OAFK,EAGe;AACpB,QAAMC,OAAO,GACX,OAAOF,GAAP,KAAe,QAAf,GAA0BA,GAA1B,GAAgCG,IAAI,GAACC,IAAL,CAAUJ,GAAG,CAACK,KAAJ,IAAa,EAAvB,EAA2BL,GAAG,CAACM,IAA/B,CADlC;;AAEA,QAAMC,UAAU,GAAGC,kBAAOC,IAAP,CAAYN,IAAI,GAACC,IAAL,CAAU,cAAV,EAA0BF,OAA1B,CAAZ,EAAgD,EACjE,GAAGf,UAAU,CACXc,OAAO,IAAI,EADA,EAEX,CAAC,UAAD,EAAa,eAAb,CAFW,EAGX,CAAC,KAAD,EAAQ,eAAR,CAHW,CADoD;AAMjES,IAAAA,IAAI,EAAE;AAN2D,GAAhD,CAAnB;;AAQA,MAAI,CAACH,UAAD,IAAe,EAACN,OAAD,aAACA,OAAD,uBAACA,OAAO,CAAEU,eAAV,CAAnB,EAA8C;AAC5C,WAAOJ,UAAP;AACD;;AAED,SAAOK,EAAE,GAACC,SAAH,CAAaN,UAAb,EAAyBO,cAAzB,KACHX,IAAI,GAACY,OAAL,CAAaZ,IAAI,GAACa,OAAL,CAAaT,UAAb,CAAb,EAAuCK,EAAE,GAACK,YAAH,CAAgBV,UAAhB,CAAvC,CADG,GAEHA,UAFJ;AAGD","sourcesContent":["/**\n * Source vendored from:\n * https://github.com/microsoft/rnx-kit/blob/f37adca5161eba66fc27de25d48f72973fff9e8e/packages/tools-node/src/package.ts#L213-L234\n */\nimport findUp from 'find-up';\nimport * as fs from 'fs';\nimport * as path from 'path';\n\n/**\n * Pick the value for each `key` property from `obj` and return each one in a new object.\n * If `names` are given, use them in the new object, instead of `keys`.\n *\n * If any `key` was not found or its value was `undefined`, nothing will be picked for that key.\n *\n * @param obj Object to pick from\n * @param keys Keys to pick\n * @param names Optional names to use in the output object\n * @returns A new object containing a each `name` property and the picked value, or `undefined` if no keys were picked.\n */\nexport function pickValues<T>(\n obj: T,\n keys: (keyof T)[],\n names?: string[],\n): Record<string, unknown> | undefined {\n const finalNames = names ?? keys;\n const results: Record<string, unknown> = {};\n\n let pickedValue = false;\n for (let index = 0; index < keys.length; ++index) {\n const value = obj[keys[index]];\n if (typeof value !== 'undefined') {\n results[finalNames[index].toString()] = value;\n pickedValue = true;\n }\n }\n\n return pickedValue ? results : undefined;\n}\n\n/**\n * Components of a package reference.\n */\nexport type PackageRef = {\n scope?: string;\n name: string;\n};\n\n/**\n * Options which control how package dependecies are located.\n */\nexport type FindPackageDependencyOptions = {\n /**\n * Optional starting directory for the search. Defaults to `process.cwd()`.\n */\n startDir?: string;\n\n /**\n * Optional flag controlling whether symlinks can be found. Defaults to `true`.\n * When `false`, and the package dependency directory is a symlink, it will not\n * be found.\n */\n allowSymlinks?: boolean;\n\n /**\n * Optional flag controlling whether to resolve symlinks. Defaults to `false`.\n * Note that this flag has no effect if `allowSymlinks` is `false`.\n */\n resolveSymlinks?: boolean;\n};\n\n/**\n * Find the package dependency's directory, starting from the given directory\n * and moving outward, through all parent directories.\n *\n * Package dependencies exist under 'node_modules/[`scope`]/[`name`]'.\n *\n * @param ref Package dependency reference\n * @param options Options which control the search\n * @returns Path to the package dependency's directory, or `undefined` if not found.\n */\nexport function findPackageDependencyDir(\n ref: string | PackageRef,\n options?: FindPackageDependencyOptions,\n): string | undefined {\n const pkgName =\n typeof ref === 'string' ? ref : path.join(ref.scope ?? '', ref.name);\n const packageDir = findUp.sync(path.join('node_modules', pkgName), {\n ...pickValues(\n options ?? {},\n ['startDir', 'allowSymlinks'],\n ['cwd', 'allowSymlinks'],\n ),\n type: 'directory',\n });\n if (!packageDir || !options?.resolveSymlinks) {\n return packageDir;\n }\n\n return fs.lstatSync(packageDir).isSymbolicLink()\n ? path.resolve(path.dirname(packageDir), fs.readlinkSync(packageDir))\n : packageDir;\n}\n"]}
\No newline at end of file