{"version":3,"sources":["../src/import-config-file.ts"],"sourcesContent":["import fs from \"fs\";\nimport * as path from \"path\";\n\nexport type GeneratorConfigFileData = {\n\tpathPattern: string;\n\tprojectRoot: string;\n\tgeneratedFileName?: string;\n\tgeneratedFileExtension?: string;\n};\n\nfunction findProjectRoot(startPath: string): string {\n\tconst rootIndicators = [\"package.json\", \"tsconfig.json\", \".git\"];\n\tlet currentPath = startPath;\n\n\twhile (currentPath !== path.parse(currentPath).root) {\n\t\tif (\n\t\t\trootIndicators.some((indicator) =>\n\t\t\t\tfs.existsSync(path.join(currentPath, indicator)),\n\t\t\t)\n\t\t) {\n\t\t\treturn currentPath;\n\t\t}\n\t\tcurrentPath = path.dirname(currentPath);\n\t}\n\n\treturn startPath;\n}\n\nfunction parseTypeScriptConfig(content: string): GeneratorConfigFileData {\n\ttry {\n\t\tconst objectMatch = content.match(/config[^{]*=\\s*({[\\s\\S]*?})/);\n\n\t\tif (!objectMatch || !objectMatch[1]) {\n\t\t\tthrow new Error(\"Configuration object not found in file\");\n\t\t}\n\n\t\tconst configString = objectMatch[1];\n\n\t\ttry {\n\t\t\t// Convert the matched string to an object\n\t\t\tconst parseConfig = new Function(`return ${configString}`)();\n\n\t\t\t// Validate required fields\n\t\t\tif (\n\t\t\t\t!parseConfig.pathPattern ||\n\t\t\t\ttypeof parseConfig.pathPattern !== \"string\"\n\t\t\t) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"Invalid configuration: pathPattern is required and must be a string\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!parseConfig.projectRoot ||\n\t\t\t\ttypeof parseConfig.projectRoot !== \"string\"\n\t\t\t) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"Invalid configuration: projectRoot is required and must be a string\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn parseConfig as GeneratorConfigFileData;\n\t\t} catch (evalError) {\n\t\t\tconsole.error(\"Debug - Extracted config string:\", configString);\n\t\t\tthrow new Error(`Error parsing configuration object: ${evalError}`);\n\t\t}\n\t} catch (error) {\n\t\tconsole.error(\"Debug - Original file content:\", content);\n\t\tthrow error;\n\t}\n}\n\nexport async function importConfigFile() {\n\ttry {\n\t\tconst filename = \"serverless-route.config\";\n\t\tconst startPath = process.cwd();\n\t\tconst projectRoot = findProjectRoot(startPath);\n\n\t\tconsole.log(\"Debug - Current working directory:\", startPath);\n\t\tconsole.log(\"Debug - Detected project root:\", projectRoot);\n\n\t\tconst configFiles = {\n\t\t\tjson: path.join(projectRoot, `${filename}.json`),\n\t\t\tjs: path.join(projectRoot, `${filename}.js`),\n\t\t\tts: path.join(projectRoot, `${filename}.ts`),\n\t\t};\n\n\t\tconsole.log(\"Looking for configuration files in:\");\n\t\tObject.entries(configFiles).forEach(([type, filePath]) => {\n\t\t\tconsole.log(\n\t\t\t\t`- [${type.toUpperCase()}] ${filePath} (${fs.existsSync(filePath) ? \"EXISTS\" : \"NOT FOUND\"})`,\n\t\t\t);\n\t\t});\n\n\t\tif (fs.existsSync(configFiles.json)) {\n\t\t\tconsole.log(\"Using JSON configuration file\");\n\t\t\tconst data = fs.readFileSync(configFiles.json, \"utf-8\");\n\t\t\treturn JSON.parse(data) as GeneratorConfigFileData;\n\t\t}\n\n\t\tif (fs.existsSync(configFiles.js)) {\n\t\t\tconsole.log(\"Using JavaScript configuration file\");\n\t\t\tconst data = await import(configFiles.js);\n\t\t\treturn data.default as GeneratorConfigFileData;\n\t\t}\n\n\t\tif (fs.existsSync(configFiles.ts)) {\n\t\t\tconsole.log(\"Using TypeScript configuration file\");\n\t\t\tconst content = fs.readFileSync(configFiles.ts, \"utf-8\");\n\t\t\treturn parseTypeScriptConfig(content);\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t`Configuration file not found. Searched in:\\n${Object.entries(configFiles)\n\t\t\t\t.map(([_, path]) => `- ${path}`)\n\t\t\t\t.join(\"\\n\")}`,\n\t\t);\n\t} catch (error) {\n\t\tif (error instanceof Error) {\n\t\t\tconsole.error(\"Error details:\", error.message);\n\t\t\tconsole.error(\"Stack trace:\", error.stack);\n\t\t\tthrow error;\n\t\t}\n\t\tthrow new Error(\"Unknown error while importing configuration file\");\n\t}\n}\n"],"mappings":"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","names":["fs","path","findProjectRoot","startPath","rootIndicators","currentPath","parse","root","some","indicator","fs","existsSync","join","dirname","parseTypeScriptConfig","content","objectMatch","match","Error","configString","parseConfig","Function","pathPattern","projectRoot","evalError","console","error","importConfigFile","filename","process","cwd","log","configFiles","json","js","ts","Object","entries","forEach","type","filePath","toUpperCase","data","readFileSync","JSON","default","map","_","path","message","stack"]}