{"version":3,"sources":["../../../../src/transpiler/file/file.ts"],"sourcesContent":["import { getAppLogger } from '@intlayer/config';\nimport configuration from '@intlayer/config/built';\nimport { existsSync, readFileSync } from 'fs';\nimport { relative, resolve } from 'path';\nimport {\n  formatNodeType,\n  NodeType,\n  type TypedNodeModel,\n} from '../../types/index';\n\nexport type FileContentConstructor<T extends Record<string, any> = {}> =\n  TypedNodeModel<NodeType.File, string, T>;\n\nexport type FileContent = FileContentConstructor<{\n  content: string;\n  fixedPath?: string;\n}>;\n\ndeclare const intlayer_file_path: string; // Injected by esbuild to track the file content\ndeclare const intlayer_file_dir: string; // Injected by esbuild to track the file path\n\n/**\n * Function intended to be used to build intlayer dictionaries.\n *\n * Allow identify the usage of an external resource.\n *\n * Usage:\n *\n * ```ts\n * file('/path/to/file.md') // absolute path\n *\n * // or\n *\n * file('path/to/file.md') // relative path\n * ```\n */\nexport const file = (path: string): FileContent => {\n  const callerDir = intlayer_file_dir ?? process.cwd();\n\n  const isAbsolutePath = path.startsWith('/');\n  const isRelativePath = path.startsWith('./') || path.startsWith('../');\n  const appLogger = getAppLogger(configuration);\n\n  let filePath: string;\n  if (isAbsolutePath) {\n    appLogger(\n      `Using absolute path for file is not recommended. Use relative paths instead. Path: ${path}, imported from: ${intlayer_file_path}`,\n      { level: 'warn' }\n    );\n    filePath = path;\n  } else if (isRelativePath) {\n    filePath = resolve(callerDir, path);\n  } else {\n    filePath = resolve(process.cwd(), path);\n  }\n\n  let content: string;\n\n  if (existsSync(filePath)) {\n    content = readFileSync(filePath, 'utf8');\n  } else {\n    appLogger(`File not found: ${filePath}`, { level: 'warn' });\n\n    content = `File not found`;\n  }\n\n  return formatNodeType(NodeType.File, path, {\n    content,\n    fixedPath: relative(process.cwd(), filePath),\n  });\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA6B;AAC7B,mBAA0B;AAC1B,gBAAyC;AACzC,kBAAkC;AAClC,mBAIO;AA4BA,MAAM,OAAO,CAAC,SAA8B;AACjD,QAAM,YAAY,qBAAqB,QAAQ,IAAI;AAEnD,QAAM,iBAAiB,KAAK,WAAW,GAAG;AAC1C,QAAM,iBAAiB,KAAK,WAAW,IAAI,KAAK,KAAK,WAAW,KAAK;AACrE,QAAM,gBAAY,4BAAa,aAAAA,OAAa;AAE5C,MAAI;AACJ,MAAI,gBAAgB;AAClB;AAAA,MACE,sFAAsF,IAAI,oBAAoB,kBAAkB;AAAA,MAChI,EAAE,OAAO,OAAO;AAAA,IAClB;AACA,eAAW;AAAA,EACb,WAAW,gBAAgB;AACzB,mBAAW,qBAAQ,WAAW,IAAI;AAAA,EACpC,OAAO;AACL,mBAAW,qBAAQ,QAAQ,IAAI,GAAG,IAAI;AAAA,EACxC;AAEA,MAAI;AAEJ,UAAI,sBAAW,QAAQ,GAAG;AACxB,kBAAU,wBAAa,UAAU,MAAM;AAAA,EACzC,OAAO;AACL,cAAU,mBAAmB,QAAQ,IAAI,EAAE,OAAO,OAAO,CAAC;AAE1D,cAAU;AAAA,EACZ;AAEA,aAAO,6BAAe,sBAAS,MAAM,MAAM;AAAA,IACzC;AAAA,IACA,eAAW,sBAAS,QAAQ,IAAI,GAAG,QAAQ;AAAA,EAC7C,CAAC;AACH;","names":["configuration"]}