{"version":3,"file":"index.cjs","sources":["../src/file-finder/index.ts","../src/tsconfig/index.ts","../src/pathv/index.ts","../src/aws-secret-manager/index.ts"],"sourcesContent":["import { access, constants } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nexport async function fileFinder(possibleFileNames: string[], possiblePaths: string[]) {\n    const possibleAbsPaths = possiblePaths.map((_p) => (_p.startsWith(\"/\") ? _p : path.resolve(process.cwd(), _p)));\n\n    const possibleFiles = createLoadingOrder(possibleFileNames, possibleAbsPaths);\n\n    return findFile(possibleFiles);\n}\n\nfunction createLoadingOrder(filenames: string[], possibleAbsPaths: string[]) {\n    return possibleAbsPaths.reduce<string[]>((memo, _path) => {\n        memo = memo.concat(filenames.map((_name) => path.resolve(_path, _name)));\n        return memo;\n    }, []);\n}\n\nasync function findFile(possibleFiles: string[]) {\n    for await (const file of possibleFiles) {\n        if (await verifyFile(file)) {\n            return file;\n        }\n    }\n\n    return null;\n}\n\nexport async function verifyFile(_filepath: string) {\n    try {\n        await access(_filepath, constants.R_OK);\n        return true;\n    } catch (e) {\n        return false;\n    }\n}\n","import { type TsConfigJson } from \"type-fest\";\nimport { readFile } from \"node:fs/promises\";\nimport { fileFinder } from \"../file-finder/index\";\nimport path from \"node:path\";\n\nexport async function readTsConfig(possiblePaths: string[], possibleFileNames: string[] = [\"tsconfig.json\"]) {\n    const location = await fileFinder(possibleFileNames, possiblePaths);\n    if (!location) return null;\n\n    return JSON.parse(await readFile(location, \"utf-8\")) as TsConfigJson;\n}\n\nexport function isAliasPath(filepath: string, tsconfig: TsConfigJson) {\n    const aliases = findAliases(tsconfig);\n    return Object.keys(aliases).some((pattern) => filepath.startsWith(pattern.replace(\"*\", \"\")));\n}\n\nexport function resolveAlias(alias: string, tsconfig: TsConfigJson, projectPath?: string) {\n    const _searchPath = projectPath ?? process.cwd();\n    const aliases = findAliases(tsconfig);\n    const pattern = Object.keys(aliases).find((_pattern) => alias.startsWith(_pattern.replace(\"*\", \"\")))!;\n    if (!pattern.includes(\"*\")) {\n        return aliases[pattern].map((p) => path.resolve(_searchPath, p));\n    }\n\n    const _input = alias.replace(pattern.replace(\"*\", \"\"), \"\");\n    return aliases[pattern].map((p) => path.resolve(_searchPath, p.replace(\"*\", _input)));\n}\n\nfunction findAliases(tsconfig: TsConfigJson) {\n    return tsconfig ? (tsconfig?.compilerOptions?.paths ?? {}) : {};\n}\n","import path from \"node:path\";\nimport { copyFile, mkdir } from \"node:fs/promises\";\nimport { readTsConfig, isAliasPath, resolveAlias } from \"../tsconfig/index\";\nimport { type TsConfigJson } from \"type-fest\";\n\nexport function pathv(relativePath: string) {\n    return relativePath;\n}\n\nexport type PathvInputPathType =\n    | \"ABSOLUTE\"\n    | \"PROJECT_RELATIVE_OUTSIDE_SOURCE\"\n    | \"PROJECT_RELATIVE_IN_SOURCE\"\n    | \"ALIAS\";\nexport type PathvAnalysis = Record<\n    string,\n    {\n        realRelPath: string;\n        relDistPath: string;\n        pathvExp: string;\n    }\n>;\n\nconst rePathvCalls = `(pathv\\\\(('|\")(.*)('|\"))\\\\)`;\nconst rePathvCallsGM = new RegExp(rePathvCalls, \"gm\");\nconst rePathvCallsNoFlag = new RegExp(rePathvCalls, \"\");\n\nexport function hasPathvCalls(content: string) {\n    return rePathvCallsGM.test(content);\n}\n\nfunction findProjectPath(sourceRelativePath: string) {\n    const _src = path.normalize(sourceRelativePath);\n    const cwd = process.cwd();\n    return cwd.endsWith(_src)\n        ? path.resolve(\n              cwd,\n              _src\n                  .split(\"/\")\n                  .map(() => \"..\")\n                  .join(\"/\"),\n          )\n        : cwd;\n}\n\nexport async function processPathvCalls(\n    content: string,\n    fileAbsPath: string,\n    sourceRelativePath: string,\n    distRelativePath: string,\n) {\n    const projectPath = findProjectPath(sourceRelativePath);\n    const tsconfig = await readTsConfig([path.resolve(projectPath, sourceRelativePath), projectPath]);\n    const analysis = analysePaths(content, fileAbsPath, projectPath, tsconfig, sourceRelativePath, distRelativePath);\n\n    await distAnalysedFiles(analysis, projectPath);\n\n    return formatSourceContent(content, analysis);\n}\n\nexport function formatSourceContent(content: string, analysis: PathvAnalysis) {\n    return Object.keys(analysis).reduce<string>(\n        (memo, token) => memo.replace(token, analysis[token].pathvExp),\n        `import * as path from 'node:path';` + content,\n    );\n}\n\nasync function distAnalysedFiles(analysis: PathvAnalysis, projectPath: string) {\n    for await (const { realRelPath, relDistPath } of Object.values(analysis)) {\n        const fileDistDir = path.resolve(projectPath, path.dirname(relDistPath));\n        await mkdir(fileDistDir, { recursive: true });\n        await copyFile(path.resolve(projectPath, realRelPath), path.resolve(projectPath, relDistPath));\n    }\n}\n\nexport function analysePaths(\n    content: string,\n    fileAbsPath: string,\n    projectPath: string,\n    tsconfig: TsConfigJson | null,\n    sourceRelativePath: string,\n    distRelativePath: string,\n) {\n    const matches = content.match(rePathvCallsGM);\n\n    if (!matches) {\n        return {};\n    }\n\n    const matchesFormatted = matches.map((text) => text.match(rePathvCallsNoFlag));\n    const result: PathvAnalysis = {};\n    for (const _matches of matchesFormatted) {\n        if (!_matches) continue;\n        const input = _matches[3];\n        const inputType = findInputType(input);\n        const realRelPath = findRealRelativePath(input, inputType);\n        const relDistPath = findCorrespondingDistPath(realRelPath, inputType);\n\n        result[_matches[0]] = {\n            realRelPath,\n            relDistPath,\n            pathvExp: `path.resolve(import.meta.dirname, '${\"./\" + path.relative(distRelativePath, relDistPath)}')`,\n        };\n    }\n\n    return result;\n\n    function findRealRelativePath(input: string, inputType: PathvInputPathType) {\n        switch (inputType) {\n            case \"PROJECT_RELATIVE_OUTSIDE_SOURCE\":\n                return input;\n            case \"PROJECT_RELATIVE_IN_SOURCE\":\n                return input;\n            case \"ALIAS\":\n                const resolved = resolveAlias(input, tsconfig!, projectPath)[0];\n                return \"./\" + path.relative(projectPath, resolved);\n            case \"ABSOLUTE\":\n                return input.includes(projectPath)\n                    ? path.relative(path.resolve(projectPath, sourceRelativePath), input)\n                    : input;\n        }\n    }\n\n    function findCorrespondingDistPath(projectRelativeFilePath: string, inputType: PathvInputPathType) {\n        if (projectRelativeFilePath.startsWith(\"/\")) {\n            return path.join(projectPath, distRelativePath, projectRelativeFilePath);\n        }\n\n        if (inputType === \"PROJECT_RELATIVE_OUTSIDE_SOURCE\") {\n            return \"./\" + path.join(distRelativePath, projectRelativeFilePath);\n        }\n\n        return \"./\" + path.join(distRelativePath, path.relative(sourceRelativePath, projectRelativeFilePath));\n    }\n\n    function findInputType(input: string): PathvInputPathType {\n        if (input.startsWith(\"/\")) {\n            return \"ABSOLUTE\";\n        } else if (tsconfig && isAliasPath(input, tsconfig)) {\n            return \"ALIAS\";\n        } else if (path.normalize(input).includes(path.normalize(sourceRelativePath))) {\n            return \"PROJECT_RELATIVE_IN_SOURCE\";\n        } else {\n            return \"PROJECT_RELATIVE_OUTSIDE_SOURCE\";\n        }\n    }\n}\n","import { mkdir, writeFile } from \"node:fs/promises\";\nimport {\n    SecretsManagerClient,\n    GetSecretValueCommand,\n    type GetSecretValueCommandOutput,\n} from \"@aws-sdk/client-secrets-manager\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\n\nexport type DumpArgs = {\n    aws: {\n        credentials: {\n            region: string;\n            accessKey: string;\n            accessKeySecret: string;\n        };\n        secretName: string;\n    };\n    dest?: string;\n};\n\nexport async function fetchSecretsAws<E extends Record<string, string | number | boolean>>({ aws, dest }: DumpArgs) {\n    const { credentials, secretName } = aws;\n    const { region, accessKey, accessKeySecret } = credentials;\n    const client = new SecretsManagerClient({\n        region,\n        credentials: {\n            accessKeyId: accessKey,\n            secretAccessKey: accessKeySecret,\n        },\n    });\n\n    let response: GetSecretValueCommandOutput;\n\n    try {\n        response = await client.send(\n            new GetSecretValueCommand({\n                SecretId: secretName,\n            }),\n        );\n    } catch (e) {\n        return e;\n    }\n\n    if (!response.SecretString) {\n        return new Error(\"No text found in the response.\");\n    }\n\n    const secrets = JSON.parse(response.SecretString);\n    const resolved = resolveReferencesRecursive(secrets);\n\n    if (dest) {\n        await save(dest, secrets);\n    }\n\n    return resolved as E;\n}\n\nexport function resolveReferencesRecursive(secrets: Record<string, string>, hadAtLeastOneReference: boolean = true) {\n    if (!hadAtLeastOneReference) {\n        return secrets;\n    }\n\n    const re = /\\${([^}]*)}/g;\n    const keys = Object.keys(secrets);\n    const resolved: Record<string, string> = {};\n    let references = 0;\n\n    for (const key of keys) {\n        const v = secrets[key];\n        const matches = [...v.matchAll(re)];\n        if (matches.length > 0) references += matches.filter((m) => m[1] in secrets).length;\n        const resolvedValue = matches.reduce(\n            (memo, m) => (m[1] in secrets ? memo.replace(m[0], secrets[m[1]]) : memo),\n            v,\n        );\n        resolved[key] = resolvedValue;\n    }\n\n    return resolveReferencesRecursive(resolved, references > 0);\n}\n\nexport async function save(dest: string, secrets: Record<string, string | number | boolean>) {\n    const _dest = path.isAbsolute(dest) ? dest : path.resolve(process.cwd(), dest);\n    const dir = path.dirname(_dest);\n    await mkdir(dir, { recursive: true });\n\n    const ext = path.extname(_dest);\n    const format = ext === \".env\" ? \"dotenv\" : ext === \".sh\" ? \"shell\" : \"dotenv\";\n    const data = Object.keys(secrets).reduce<string>(\n        (memo, name) => memo + processPair(format, name, secrets[name]),\n        \"\",\n    );\n\n    await writeFile(_dest, data, { mode: process.env.VITEST ? 0o777 : 0o455 });\n\n    return true;\n\n    function processPair(format: \"dotenv\" | \"shell\", name: string, value: string | number | boolean) {\n        switch (format) {\n            case \"dotenv\":\n                return name + '=\"' + value + '\"' + os.EOL;\n            case \"shell\":\n                return \"export \" + name + '=\"' + value + '\"' + os.EOL;\n            default:\n                return name + '=\"' + value + '\"' + os.EOL;\n        }\n    }\n}\n"],"names":["fileFinder","possibleFileNames","possiblePaths","possibleAbsPaths","map","_p","startsWith","path","resolve","process","cwd","possibleFiles","createLoadingOrder","findFile","filenames","reduce","memo","_path","concat","_name","file","verifyFile","_filepath","access","constants","R_OK","e","readTsConfig","location","JSON","parse","readFile","isAliasPath","filepath","tsconfig","aliases","findAliases","Object","keys","some","pattern","replace","resolveAlias","alias","projectPath","_searchPath","find","_pattern","includes","p","_input","compilerOptions","paths","pathv","relativePath","rePathvCalls","rePathvCallsGM","RegExp","rePathvCallsNoFlag","hasPathvCalls","content","test","findProjectPath","sourceRelativePath","_src","normalize","endsWith","split","join","processPathvCalls","fileAbsPath","distRelativePath","analysis","analysePaths","distAnalysedFiles","formatSourceContent","token","pathvExp","realRelPath","relDistPath","values","fileDistDir","dirname","mkdir","recursive","copyFile","matches","match","matchesFormatted","text","result","_matches","input","inputType","findInputType","findRealRelativePath","findCorrespondingDistPath","relative","resolved","projectRelativeFilePath","fetchSecretsAws","aws","dest","credentials","secretName","region","accessKey","accessKeySecret","client","SecretsManagerClient","accessKeyId","secretAccessKey","response","send","GetSecretValueCommand","SecretId","SecretString","Error","secrets","resolveReferencesRecursive","save","hadAtLeastOneReference","re","references","key","v","matchAll","length","filter","m","resolvedValue","_dest","isAbsolute","dir","ext","extname","format","data","name","processPair","writeFile","mode","env","VITEST","value","os","EOL"],"mappings":"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"}