b12948bbef0697d96c23fa922c2887789017df69
search reference and misplaced index suffix
`search` was never declared, so any link whose entire path is `/index.html` or `/index.php` (the path is empty once the suffix is stripped) threw a ReferenceError whenever the hostname had a subdomain or an unknown SLD. `pathSegments.length` is what the check was reaching for. With that fixed, those links reached a second bug: `indexSuffix` was appended after the query and hash, so `x.io/index.html?q=1` decoded to `x.io?q=1/index.html`. It is now spliced back in before the first `?`/`#`.
ha.mr
Compresses links and optimizes QR codes entirely in the browser, without a back-end database.
How
- Common parts of the link (e.g. protocol,
www.prefix,index.html) are manually detected and reduced to individual bits. If present, the port is encoded as a raw numeric value. - Second-level and top-level domains are matched against a Huffman-coded dictionary of the most common websites and TLDs.
- The rest of the link is split into parts, and each segment is either fitted to a predefined character set, or Huffman coded.
- For links, the output is encoded in the full character set of a URL. (I've been informed that square brackets
[]are not supposed to be a part of this set, but it's too late to change that now.) - For QR codes, the output uses the alphanumeric character set to remove overhead compared to other QR code generators.
Acknowledgements
Languages
HTML
52.2%
JavaScript
46.8%
Dockerfile
1%