{"version":3,"sources":["../src/argv.ts"],"sourcesContent":["import { parseArgs as nodeParseArgs } from \"util\";\nimport { sep } from \"path\";\n\nexport interface ArgvOption {\n    type: \"string\" | \"boolean\";\n    short: string;\n}\n\nexport type ArgvOptions = {\n    [key: string]: ArgvOption;\n};\n\ntype Params = {\n\targs: string[],\n\toptions: ArgvOptions\n}\n\nexport function parseArgs({args, options}: Params) {\n    const optionShortToKey = Object.fromEntries(\n        Object.entries(options).map(([key, opt]) => [opt.short, key])\n    );\n\n    const normalized = [];\n    for (let i = 0; i < args.length; i++) {\n        const current = args[i];\n        const next = args[i + 1];\n\n        // Check if next is a negative number (int or float)\n        const isNegativeNumber = /^-\\d+(\\.\\d+)?$/.test(next);\n\n        // If current is a short option like -x and next is a negative number, combine\n        if (/^-[a-zA-Z]$/.test(current) && isNegativeNumber ) {\n            const key = current[1];\n            const optionName = optionShortToKey[key];\n            if (options[optionName]?.type === \"string\") {\n                normalized.push(`${current}=${next}`);\n                i++; // skip next, already used\n                continue;\n            }\n        }\n        normalized.push(current);\n    }\n\n    return nodeParseArgs({ args: normalized, options });\n}\n\nexport function argvToCommand( argv: string[] ) {\n    const program = argv[0].split( sep ).at(-1);\n    const script = argv[1].split( sep ).slice(-2).join( sep );\n\n    return `${program} ${script}`;\n}"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA2C;AAC3C,kBAAoB;AAgBb,SAAS,UAAU,EAAC,MAAM,QAAO,GAAW;AAC/C,QAAM,mBAAmB,OAAO;AAAA,IAC5B,OAAO,QAAQ,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC;AAAA,EAChE;AAEA,QAAM,aAAa,CAAC;AACpB,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AAClC,UAAM,UAAU,KAAK,CAAC;AACtB,UAAM,OAAO,KAAK,IAAI,CAAC;AAGvB,UAAM,mBAAmB,iBAAiB,KAAK,IAAI;AAGnD,QAAI,cAAc,KAAK,OAAO,KAAK,kBAAmB;AAClD,YAAM,MAAM,QAAQ,CAAC;AACrB,YAAM,aAAa,iBAAiB,GAAG;AACvC,UAAI,QAAQ,UAAU,GAAG,SAAS,UAAU;AACxC,mBAAW,KAAK,GAAG,OAAO,IAAI,IAAI,EAAE;AACpC;AACA;AAAA,MACJ;AAAA,IACJ;AACA,eAAW,KAAK,OAAO;AAAA,EAC3B;AAEA,aAAO,YAAAA,WAAc,EAAE,MAAM,YAAY,QAAQ,CAAC;AACtD;AAEO,SAAS,cAAe,MAAiB;AAC5C,QAAM,UAAU,KAAK,CAAC,EAAE,MAAO,eAAI,EAAE,GAAG,EAAE;AAC1C,QAAM,SAAS,KAAK,CAAC,EAAE,MAAO,eAAI,EAAE,MAAM,EAAE,EAAE,KAAM,eAAI;AAExD,SAAO,GAAG,OAAO,IAAI,MAAM;AAC/B;","names":["nodeParseArgs"]}