UNPKG

2.62 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../lib/find-config.ts"],"names":["findConfig","directory","key","packageJsonPath","cwd","packageJson","require","filePath","endsWith","fileContents","fs","readFileSync","JSON5","parse"],"mappings":"mEAAA,0EACA,8CACA,sE,mFAMA;AACA;AACA;AACO,cAAeA,CAAAA,UAAf,CACLC,SADK,CAELC,GAFK,CAGgC,CACrC;AACA,KAAMC,CAAAA,eAAe,CAAG,KAAM,oBAAO,cAAP,CAAuB,CAAEC,GAAG,CAAEH,SAAP,CAAvB,CAA9B,CACA,GAAIE,eAAJ,CAAqB,CACnB,KAAME,CAAAA,WAAW,CAAGC,OAAO,CAACH,eAAD,CAA3B,CACA,GAAIE,WAAW,CAACH,GAAD,CAAX,EAAoB,IAApB,EAA4B,MAAOG,CAAAA,WAAW,CAACH,GAAD,CAAlB,GAA4B,QAA5D,CAAsE,CACpE,MAAOG,CAAAA,WAAW,CAACH,GAAD,CAAlB,CACD,CACF,CAED;AACA;AACA,KAAMK,CAAAA,QAAQ,CAAG,KAAM,oBACrB,CACG,IAAGL,GAAI,SADV,CAEG,GAAEA,GAAI,cAFT,CAGG,IAAGA,GAAI,OAHV,CAIG,GAAEA,GAAI,YAJT,CADqB,CAOrB,CACEE,GAAG,CAAEH,SADP,CAPqB,CAAvB,CAWA,GAAIM,QAAJ,CAAc,CACZ,GAAIA,QAAQ,CAACC,QAAT,CAAkB,KAAlB,CAAJ,CAA8B,CAC5B,MAAOF,CAAAA,OAAO,CAACC,QAAD,CAAd,CACD,CAED;AACA;AACA,KAAME,CAAAA,YAAY,CAAGC,YAAGC,YAAH,CAAgBJ,QAAhB,CAA0B,MAA1B,CAArB,CACA,MAAOK,eAAMC,KAAN,CAAYJ,YAAZ,CAAP,CACD,CAED,MAAO,KAAP,CACD","sourcesContent":["import findUp from 'next/dist/compiled/find-up'\nimport fs from 'fs'\nimport JSON5 from 'next/dist/compiled/json5'\n\ntype RecursivePartial<T> = {\n [P in keyof T]?: RecursivePartial<T[P]>\n}\n\n// We'll allow configuration to be typed, but we force everything provided to\n// become optional. We do not perform any schema validation. We should maybe\n// force all the types to be `unknown` as well.\nexport async function findConfig<T>(\n directory: string,\n key: string\n): Promise<RecursivePartial<T> | null> {\n // `package.json` configuration always wins. Let's check that first.\n const packageJsonPath = await findUp('package.json', { cwd: directory })\n if (packageJsonPath) {\n const packageJson = require(packageJsonPath)\n if (packageJson[key] != null && typeof packageJson[key] === 'object') {\n return packageJson[key]\n }\n }\n\n // If we didn't find the configuration in `package.json`, we should look for\n // known filenames.\n const filePath = await findUp(\n [\n `.${key}rc.json`,\n `${key}.config.json`,\n `.${key}rc.js`,\n `${key}.config.js`,\n ],\n {\n cwd: directory,\n }\n )\n if (filePath) {\n if (filePath.endsWith('.js')) {\n return require(filePath)\n }\n\n // We load JSON contents with JSON5 to allow users to comment in their\n // configuration file. This pattern was popularized by TypeScript.\n const fileContents = fs.readFileSync(filePath, 'utf8')\n return JSON5.parse(fileContents)\n }\n\n return null\n}\n"]}
\No newline at end of file