JSFiddle - React, Tailwind, and code Playground

HTML

<input type="text" value="C:\Windows\System32\Calc.exe" id="target_lnk" />
<a href="javascript:void 0" id="download_link" download="Calc.lnk">download</a>

JavaScript

function create_lnk_blob(lnk_target) {
    function hex_to_arr(s) {
        var result = Array(s.length / 2);
        for (var i = 0; i < result.length; ++i) {
            result[i] = +('0x' + s.substr(2*i, 2));
        }
        return result;
    }

    function str_to_arr(s) {
        var result = Array(s.length);
        for (var i = 0; i < s.length; ++i) {
            var c = s.charCodeAt(i);
            if (c >= 128) {
                throw Error("Only ASCII paths are suppored :-(");
            }
            result[i] = c;
        }
        return result;
    }

    function convert_CLSID_to_DATA(s) {
        var idx = [[6,2], [4,2], [2,2], [0,2],
                   [11,2], [9,2], [16,2], [14,2],
                   [19,4], [24,12]];
        var s = idx.map(function (ii) {
            return s.substr(ii[0], ii[1]);
        });
        return hex_to_arr(s.join(''));
    }

    function gen_IDLIST(s) {
        var item_size = (0x10000 + s.length + 2).toString(16).substr(1);
        return hex_to_arr(item_size.replace(/(..)(..)/, '$2$1')).concat(s);
    }

    var HeaderSize = [0x4c, 0x00,0x00,0x00],
        LinkCLSID = convert_CLSID_to_DATA("00021401-0000-0000-c000-000000000046"),
        LinkFlags = [0x01,0x01,0x00,0x00], // HasLinkTargetIDList ForceNoLinkInfo

        FileAttributes_Directory = [0x10,0x00,0x00,0x00],
        FileAttributes_File = [0x20,0x00,0x00,0x00],

        CreationTime = [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00],
        AccessTime = [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00],
        WriteTime = [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00],

        FileSize = [0x00,0x00,0x00,0x00],
        IconIndex = [0x00,0x00,0x00,0x00],
        ShowCommand = [0x01,0x00,0x00,0x00], //SW_SHOWNORMAL
        Hotkey = [0x00,0x00], // No Hotkey
        Reserved = [0x00,0x00],
        Reserved2 = [0x00,0x00,0x00,0x00],
        Reserved3 = [0x00,0x00,0x00,0x00],
        TerminalID = [0x00,0x00],

        CLSID_Computer =...