Microlink Function:
How to compress

September 3, 2022 ()

The query parameter function allows you dynamic code execution with remote headless browser access on runtime:
  • CLI
  • JavaScript
  • Shell
  • Python
  • Ruby
const mql = require('@microlink/mql')

const { status, data } = await mql('https://microlink.io', { function: '({ page }) => page.evaluate("jQuery.fn.jquery")', meta: false, scripts: ['https://code.jquery.com/jquery-3.5.0.min.js'] })

mql.render(data.function)
The function body can be pass in plain text, but also multiple compression algorithms are supported.

Brotli

is a modern and general purpose compression algorithm with a well compression ratio.
const mql = require('@microlink/mql')
const { promisify } = require('util')
const zlib = require('zlib')

const brotli = promisify(zlib.brotliCompress)

const toBrotli = async code => {
  const buffer = await brotli(code)
  return buffer.toString('base64url')
}

const code = '({ page }) => page.evaluate("jQuery.fn.jquery")'

const { status, data } = await mql('https://microlink.io', {
  function: `br#${await toBrotli(code)}`,
  meta: false,
  scripts: 'https://code.jquery.com/jquery-3.5.0.min.js'
})

mql.render(data.function)
brotli has a good compression ratio & speed.

Lz-string

is designed to be efficient for compressing text.
const { compressToURI } = require('lz-ts') 
const mql = require('@microlink/mql')

const code = compressToURI('({ page }) => page.evaluate("jQuery.fn.jquery")')

const { status, data } = await mql('https://microlink.io', {
  function: `lz#${code}`,
  meta: false,
  scripts: 'https://code.jquery.com/jquery-3.5.0.min.js'
})

mql.render(data.function)
lz-string is lightweight enough to be used for client-side apps.

Gzip

gzip is the predecessor of brotli and it's widely supported.
const mql = require('@microlink/mql')
const { promisify } = require('util')
const zlib = require('zlib')

const gzip = promisify(zlib.gzip)

const toGzip = async code => {
  const buffer = await gzip(code)
  return buffer.toString('base64url')
}

const code = '({ page }) => page.evaluate("jQuery.fn.jquery")'

const { status, data } = await mql('https://microlink.io', {
  function: `gz#${await toGzip(code)}`,
  meta: false,
  scripts: 'https://code.jquery.com/jquery-3.5.0.min.js'
})

mql.render(data.function)
It's possible to compress using gzip directly in the browser, using .

Join the community

All of these improvements or features are community driven: We listen to your feedback and act accordingly.
Whether you are are building a product and you need fancy previews, you’re an indie hacker or simply you like frontend stuff, come chat with us 🙂.