{"version":3,"sources":["../../src/loadExternalFile.ts"],"sourcesContent":["import { buildSync, type BuildOptions, type BuildResult } from 'esbuild';\nimport { dirname } from 'path';\nimport { runInNewContext } from 'vm';\nimport { LoadEnvFileOptions } from './envVariables/loadEnvFile';\nimport { getSandBoxContext } from './getSandboxContext';\nimport { logger } from './logger';\nimport { ESMxCJSRequire } from './utils/ESMxCJSHelpers';\n\nconst getTransformationOptions = (filePath: string): BuildOptions => ({\n  loader: {\n    '.js': 'js',\n    '.jsx': 'jsx',\n    '.mjs': 'js',\n    '.ts': 'ts',\n    '.tsx': 'tsx',\n    '.cjs': 'js',\n    '.json': 'json',\n    '.md': 'text',\n    '.mdx': 'text',\n  },\n  format: 'cjs', // Output format as commonjs\n  target: 'es2017',\n  packages: 'external',\n  write: false,\n  bundle: true,\n  banner: {\n    js: `\n    globalThis.intlayer_file_path = ${JSON.stringify(filePath)};\n    globalThis.intlayer_file_dir = ${JSON.stringify(dirname(filePath))};\n    `,\n  },\n});\n\n/**\n * Load the content declaration from the given path\n *\n * Accepts JSON, JS, MJS and TS files as configuration\n */\nexport const loadExternalFile = (\n  filePath: string,\n  envVarOptions?: LoadEnvFileOptions,\n  projectRequire = ESMxCJSRequire\n): any | undefined => {\n  let fileContent: any | undefined = undefined;\n\n  const fileExtension = filePath.split('.').pop() ?? '';\n\n  try {\n    if (fileExtension === 'json') {\n      // Remove cache to force reloading\n      delete ESMxCJSRequire.cache[ESMxCJSRequire.resolve(filePath)];\n      // Assume JSON\n      return ESMxCJSRequire(filePath);\n    }\n\n    // Rest is JS, MJS or TS\n\n    const moduleResult: BuildResult = buildSync({\n      entryPoints: [filePath],\n      ...getTransformationOptions(filePath),\n    });\n\n    const moduleResultString = moduleResult.outputFiles?.[0].text;\n\n    if (!moduleResultString) {\n      logger('File could not be loaded.', { level: 'error' });\n      return undefined;\n    }\n\n    const sandboxContext = getSandBoxContext(envVarOptions, projectRequire);\n\n    runInNewContext(moduleResultString, sandboxContext);\n\n    if (\n      sandboxContext.exports.default &&\n      Object.keys(sandboxContext.exports.default).length > 0\n    ) {\n      // ES Module\n      fileContent = sandboxContext.exports.default;\n    } else if (\n      sandboxContext.module.exports.defaults &&\n      Object.keys(sandboxContext.module.exports.defaults).length > 0\n    ) {\n      // CommonJS\n      fileContent = sandboxContext.module.exports.default;\n    } else if (\n      sandboxContext.module.exports.default &&\n      Object.keys(sandboxContext.module.exports.default).length > 0\n    ) {\n      // ES Module\n      fileContent = sandboxContext.module.exports.default;\n    } else if (\n      sandboxContext.module.exports &&\n      Object.keys(sandboxContext.module.exports).length > 0\n    ) {\n      // Other\n      fileContent = sandboxContext.module.exports;\n    }\n\n    if (typeof fileContent === 'undefined') {\n      logger(`File file could not be loaded. Path : ${filePath}`);\n      return undefined;\n    }\n\n    return fileContent;\n  } catch (error) {\n    logger(\n      `Error: ${error} ${JSON.stringify((error as Error).stack, null, 2)}`,\n      {\n        level: 'error',\n      }\n    );\n  }\n};\n"],"mappings":"AAAA,SAAS,iBAAsD;AAC/D,SAAS,eAAe;AACxB,SAAS,uBAAuB;AAEhC,SAAS,yBAAyB;AAClC,SAAS,cAAc;AACvB,SAAS,sBAAsB;AAE/B,MAAM,2BAA2B,CAAC,cAAoC;AAAA,EACpE,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,OAAO;AAAA,IACP,QAAQ;AAAA,EACV;AAAA,EACA,QAAQ;AAAA;AAAA,EACR,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,IACN,IAAI;AAAA,sCAC8B,KAAK,UAAU,QAAQ,CAAC;AAAA,qCACzB,KAAK,UAAU,QAAQ,QAAQ,CAAC,CAAC;AAAA;AAAA,EAEpE;AACF;AAOO,MAAM,mBAAmB,CAC9B,UACA,eACA,iBAAiB,mBACG;AACpB,MAAI,cAA+B;AAEnC,QAAM,gBAAgB,SAAS,MAAM,GAAG,EAAE,IAAI,KAAK;AAEnD,MAAI;AACF,QAAI,kBAAkB,QAAQ;AAE5B,aAAO,eAAe,MAAM,eAAe,QAAQ,QAAQ,CAAC;AAE5D,aAAO,eAAe,QAAQ;AAAA,IAChC;AAIA,UAAM,eAA4B,UAAU;AAAA,MAC1C,aAAa,CAAC,QAAQ;AAAA,MACtB,GAAG,yBAAyB,QAAQ;AAAA,IACtC,CAAC;AAED,UAAM,qBAAqB,aAAa,cAAc,CAAC,EAAE;AAEzD,QAAI,CAAC,oBAAoB;AACvB,aAAO,6BAA6B,EAAE,OAAO,QAAQ,CAAC;AACtD,aAAO;AAAA,IACT;AAEA,UAAM,iBAAiB,kBAAkB,eAAe,cAAc;AAEtE,oBAAgB,oBAAoB,cAAc;AAElD,QACE,eAAe,QAAQ,WACvB,OAAO,KAAK,eAAe,QAAQ,OAAO,EAAE,SAAS,GACrD;AAEA,oBAAc,eAAe,QAAQ;AAAA,IACvC,WACE,eAAe,OAAO,QAAQ,YAC9B,OAAO,KAAK,eAAe,OAAO,QAAQ,QAAQ,EAAE,SAAS,GAC7D;AAEA,oBAAc,eAAe,OAAO,QAAQ;AAAA,IAC9C,WACE,eAAe,OAAO,QAAQ,WAC9B,OAAO,KAAK,eAAe,OAAO,QAAQ,OAAO,EAAE,SAAS,GAC5D;AAEA,oBAAc,eAAe,OAAO,QAAQ;AAAA,IAC9C,WACE,eAAe,OAAO,WACtB,OAAO,KAAK,eAAe,OAAO,OAAO,EAAE,SAAS,GACpD;AAEA,oBAAc,eAAe,OAAO;AAAA,IACtC;AAEA,QAAI,OAAO,gBAAgB,aAAa;AACtC,aAAO,yCAAyC,QAAQ,EAAE;AAC1D,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT,SAAS,OAAO;AACd;AAAA,MACE,UAAU,KAAK,IAAI,KAAK,UAAW,MAAgB,OAAO,MAAM,CAAC,CAAC;AAAA,MAClE;AAAA,QACE,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;","names":[]}