function
Type:
<string>
It runs JavaScript code with runtime access to a headless browser.
- 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")',
scripts: ['https://code.jquery.com/jquery-3.5.0.min.js']
})
mql.render(data.function)
The function will receive any query parameter provided, plus:
html
: The target url HTML markup.page
: Thepuppeteer#pageto interact with the headless browser.response
: Thepuppeteer#responseas result of the implicitpage.goto.
Compression
Since the function body can be large, you can compress it:
const { compressToURI } = require('lz-ts') const mql = require('@microlink/mql') const code = ({ page }) => page.evaluate('jQuery.fn.jquery') const { status, data } = await mql('https://microlink.io', { function: `lz#${compressToURI(code.toString())}`, meta: false, scripts: 'https://code.jquery.com/jquery-3.5.0.min.js' }) mql.render(data.function)
The following compression algorithms are supported:
- brotli (br)
- gzip (gz)
- lz-string (lz)
Read how to compress to know more.
NPM packages
Require NPM packages on runtime is supported.
const mql = require('@microlink/mql') const code = ({ statusCode, response }) => { const { result } = require('lodash') return result(response, statusCode ? 'status' : 'statusText') } const ping = (url, props) => mql(url, { function: code.toString(), meta: false, ...props }).then( ({ data }) => data.function ) // try passing `statusCode: false` await ping('https://example.com', { statusCode: true })
The list of allowed NPM packages are:
- @aws-sdk/client-s3
- @mozilla/readability
- cheerio
- extract-email-address
- got
- ioredis
- jsdom
- lodash
- metascraper
- p-reflect
- p-retry
- p-timeout
- path
- url
- youtube-dl-exec
If you want to request a npm package, please feel free to
reach us
.