{"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 <T extends object>(\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<T> => {\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,IACM,MAAMA,SAAAA,GAAY,OACvBC,GAAAA,EACAC;AAEA,EAAEC,SAAAA,GAAYC,aAAa,EAAEC,sBAAAA,GAAyB,CAACC,CAAAA,GAAW,IAAI,EAAEC,QAAAA,GAAW,EAAE,EAAE,GAAG,EAAE,GAAA;AAE5F,IAAA,MAAMC,OAAO,EAAC;IACd,MAAMC,KAAAA,GAAQ,MAAMC,IAAAA,CAAKR,OAAAA,EAAS;QAAES,GAAAA,EAAKV,GAAAA;AAAK,QAAA,GAAGM;AAAS,KAAA,CAAA;IAE1D,KAAK,MAAMK,QAAQH,KAAAA,CAAO;AACxB,QAAA,MAAMI,YAAAA,GAAeC,IAAAA,CAAKC,OAAO,CAACd,GAAAA,EAAKW,IAAAA,CAAAA;;QAGvC,OAAOI,OAAAA,CAAQC,KAAK,CAACJ,YAAAA,CAAa;QAClC,IAAIK,GAAAA;AAEJ,QAAA,IAAIJ,IAAAA,CAAKK,OAAO,CAACN,YAAAA,CAAAA,KAAkB,OAAA,EAAS;YAC1CK,GAAAA,GAAM,MAAME,GAAAA,CAAIC,QAAQ,CAACR,YAAAA,CAAAA;QAC3B,CAAA,MAAO;AACLK,YAAAA,GAAAA,GAAMf,SAAAA,CAAUU,YAAAA,CAAAA;AAClB,QAAA;QAEAS,MAAAA,CAAOC,cAAc,CAACL,GAAAA,EAAK,cAAA,EAAgB;YACzCM,UAAAA,EAAY,IAAA;YACZC,YAAAA,EAAc,KAAA;YACdC,QAAAA,EAAU,KAAA;YACVC,KAAAA,EAAOb,IAAAA,CAAKc,QAAQ,CAAChB,IAAAA;AACvB,SAAA,CAAA;QAEA,MAAMiB,QAAAA,GAAWC,kBAAAA,CAAmBlB,IAAAA,EAAMP,sBAAAA,CAAuBO,IAAAA,CAAAA,CAAAA;AAEjE,QAAA,IAAIiB,SAASE,MAAM,KAAK,GAAGzB,CAAAA,CAAE0B,KAAK,CAACxB,IAAAA,EAAMU,GAAAA,CAAAA;QACzCZ,CAAAA,CAAE0B,KAAK,CAACxB,IAAAA,EAAMF,CAAAA,CAAE2B,OAAO,CAAC,EAAC,EAAGJ,QAAAA,EAAUX,GAAAA,EAAKI,MAAAA,CAAAA,CAAAA;AAC7C,IAAA;IAEA,OAAOd,IAAAA;AACT;;;;"}