{"version":3,"file":"load-files.mjs","sources":["../../src/utils/load-files.ts"],"sourcesContent":["import path from 'path';\nimport _ from 'lodash';\nimport fse from 'fs-extra';\n\nimport { importDefault } from '@strapi/utils';\nimport { glob } from 'glob';\nimport { filePathToPropPath } from './filepath-to-prop-path';\n\n/**\n * Returns an Object build from a list of files matching a glob pattern in a directory\n * It builds a tree structure resembling the folder structure in dir\n */\nexport const loadFiles = async (\n dir: string,\n pattern: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n { requireFn = importDefault, shouldUseFileNameAsKey = (_: any) => true, globArgs = {} } = {}\n): Promise => {\n const root = {};\n const files = await glob(pattern, { cwd: dir, ...globArgs });\n\n for (const file of files) {\n const absolutePath = path.resolve(dir, file);\n\n // load module\n delete require.cache[absolutePath];\n let mod;\n\n if (path.extname(absolutePath) === '.json') {\n mod = await fse.readJson(absolutePath);\n } else {\n mod = requireFn(absolutePath);\n }\n\n Object.defineProperty(mod, '__filename__', {\n enumerable: true,\n configurable: false,\n writable: false,\n value: path.basename(file),\n });\n\n const propPath = filePathToPropPath(file, shouldUseFileNameAsKey(file));\n\n if (propPath.length === 0) _.merge(root, mod);\n _.merge(root, _.setWith({}, propPath, mod, Object));\n }\n\n return root as T;\n};\n"],"names":["loadFiles","dir","pattern","requireFn","importDefault","shouldUseFileNameAsKey","_","globArgs","root","files","glob","cwd","file","absolutePath","path","resolve","require","cache","mod","extname","fse","readJson","Object","defineProperty","enumerable","configurable","writable","value","basename","propPath","filePathToPropPath","length","merge","setWith"],"mappings":";;;;;;;AAQA;;;AAGC,IACYA,MAAAA,SAAAA,GAAY,OACvBC,GAAAA,EACAC;AAEA,EAAEC,SAAYC,GAAAA,aAAa,EAAEC,sBAAAA,GAAyB,CAACC,CAAW,GAAA,IAAI,EAAEC,QAAAA,GAAW,EAAE,EAAE,GAAG,EAAE,GAAA;AAE5F,IAAA,MAAMC,OAAO,EAAC;IACd,MAAMC,KAAAA,GAAQ,MAAMC,IAAAA,CAAKR,OAAS,EAAA;QAAES,GAAKV,EAAAA,GAAAA;AAAK,QAAA,GAAGM;AAAS,KAAA,CAAA;IAE1D,KAAK,MAAMK,QAAQH,KAAO,CAAA;AACxB,QAAA,MAAMI,YAAeC,GAAAA,IAAAA,CAAKC,OAAO,CAACd,GAAKW,EAAAA,IAAAA,CAAAA;;QAGvC,OAAOI,OAAAA,CAAQC,KAAK,CAACJ,YAAa,CAAA;QAClC,IAAIK,GAAAA;AAEJ,QAAA,IAAIJ,IAAKK,CAAAA,OAAO,CAACN,YAAAA,CAAAA,KAAkB,OAAS,EAAA;YAC1CK,GAAM,GAAA,MAAME,GAAIC,CAAAA,QAAQ,CAACR,YAAAA,CAAAA;SACpB,MAAA;AACLK,YAAAA,GAAAA,GAAMf,SAAUU,CAAAA,YAAAA,CAAAA;AAClB;QAEAS,MAAOC,CAAAA,cAAc,CAACL,GAAAA,EAAK,cAAgB,EAAA;YACzCM,UAAY,EAAA,IAAA;YACZC,YAAc,EAAA,KAAA;YACdC,QAAU,EAAA,KAAA;YACVC,KAAOb,EAAAA,IAAAA,CAAKc,QAAQ,CAAChB,IAAAA;AACvB,SAAA,CAAA;QAEA,MAAMiB,QAAAA,GAAWC,kBAAmBlB,CAAAA,IAAAA,EAAMP,sBAAuBO,CAAAA,IAAAA,CAAAA,CAAAA;AAEjE,QAAA,IAAIiB,SAASE,MAAM,KAAK,GAAGzB,CAAE0B,CAAAA,KAAK,CAACxB,IAAMU,EAAAA,GAAAA,CAAAA;QACzCZ,CAAE0B,CAAAA,KAAK,CAACxB,IAAMF,EAAAA,CAAAA,CAAE2B,OAAO,CAAC,EAAIJ,EAAAA,QAAAA,EAAUX,GAAKI,EAAAA,MAAAA,CAAAA,CAAAA;AAC7C;IAEA,OAAOd,IAAAA;AACT;;;;"}