UNPKG

windmill-utils-internal

Version:

Internal utility functions for Windmill

77 lines (76 loc) 2.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LANGUAGE_EXTENSIONS = void 0; exports.getLanguageExtension = getLanguageExtension; exports.newPathAssigner = newPathAssigner; const INLINE_SCRIPT_PREFIX = "inline_script"; /** * Mapping of supported languages to their file extensions */ exports.LANGUAGE_EXTENSIONS = { python3: "py", bun: "bun.ts", deno: "deno.ts", go: "go", bash: "sh", powershell: "ps1", postgresql: "pg.sql", mysql: "my.sql", bigquery: "bq.sql", oracledb: "odb.sql", snowflake: "sf.sql", mssql: "ms.sql", graphql: "gql", nativets: "native.ts", frontend: "frontend.js", php: "php", rust: "rs", csharp: "cs", nu: "nu", ansible: "playbook.yml", java: "java", duckdb: "duckdb.sql", bunnative: "ts", // for related places search: ADD_NEW_LANG }; /** * Gets the appropriate file extension for a given programming language. * Handles special cases for TypeScript variants based on the default runtime. * * @param language - The programming language to get extension for * @param defaultTs - Default TypeScript runtime ("bun" or "deno") * @returns File extension string (without the dot) */ function getLanguageExtension(language, defaultTs = "bun") { if (language === defaultTs || language === "bunnative") { return "ts"; } return exports.LANGUAGE_EXTENSIONS[language] || "no_ext"; } /** * Creates a new path assigner for inline scripts. * * @param defaultTs - Default TypeScript runtime ("bun" or "deno") * @returns Path assigner function */ function newPathAssigner(defaultTs) { let counter = 0; const seen_names = new Set(); function assignPath(summary, language) { let name; name = summary?.toLowerCase()?.replaceAll(" ", "_") ?? ""; let original_name = name; if (name == "") { original_name = INLINE_SCRIPT_PREFIX; name = `${INLINE_SCRIPT_PREFIX}_0`; } while (seen_names.has(name)) { counter++; name = `${original_name}_${counter}`; } seen_names.add(name); const ext = getLanguageExtension(language, defaultTs); return [`${name}.inline_script.`, ext]; } return { assignPath }; }