scripts/generateClientTypesMap/index.ts (37 lines of code) (raw):

import { exec } from "node:child_process"; import { writeFile } from "node:fs/promises"; import { join } from "node:path"; import { promisify } from "node:util"; import { CLIENT_NAMES, DOCUMENT_CLIENT, DYNAMODB, DYNAMODB_DOCUMENT_CLIENT, } from "../../src/transforms/v2-to-v3/config"; import { getClientReqRespTypesMap } from "./getClientReqRespTypesMap"; import { getClientTypesMap } from "./getClientTypesMap"; const execAsync = promisify(exec); (async () => { for (const [mapName, getTypesMap] of [ ["CLIENT_TYPES_MAP", getClientTypesMap], ["CLIENT_REQ_RESP_TYPES_MAP", getClientReqRespTypesMap], ] as [string, (clientName: string) => Promise<Record<string, string>>][]) { const filePath = join("src", "transforms", "v2-to-v3", "config", `${mapName}.ts`); const relativeFilePath = join(__dirname, "..", "..", filePath); let fileContent = "// This file is generated by scripts/generateClientTypesMap/index.ts\n"; fileContent += "// Do not edit this file directly. Instead, edit the script and run it to regenerate this file.\n"; fileContent += "\n\n\n"; fileContent += `export const ${mapName}: Record<string, Record<string, string>> = `; const clientTypesMap = {}; for (const clientName of CLIENT_NAMES) { clientTypesMap[clientName] = await getTypesMap(clientName); if (clientName === DYNAMODB) { clientTypesMap[DYNAMODB_DOCUMENT_CLIENT] = await getTypesMap(DOCUMENT_CLIENT); } } fileContent += JSON.stringify(clientTypesMap); await writeFile(relativeFilePath, fileContent); await execAsync(`yarn biome format --write ${relativeFilePath}`); } })();