Repository files navigation

node-miniget

A small http(s) GET library with redirects, retries, reconnects, concatenating or streaming, and no dependencies. This keeps filesize small for potential browser use.

Depfucodecov

Usage

Concatenates a response

constminiget=require('miniget');miniget('http://mywebsite.com',(err,res,body)=>{console.log('webpage contents: ',body);});// with awaitletbody=awaitminiget('http://yourwebsite.com').text();

Request can be streamed right away

miniget('http://api.mywebsite.com/v1/messages.json').pipe(someWritableStream());

API

miniget(url, [options])

Makes a GET request. url can be a string or a URL object. options can have any properties from the http.request() function, in addition to

  • maxRedirects - Default is 10.
  • maxRetries - Number of times to retry the request if there is a 500 or connection error. Default is 2.
  • maxReconnects - During a big download, if there is a disconnect, miniget can try to reconnect and continue the download where it left off. Default is 0.
  • backoff - An object with inc and max used to calculate how long to wait to retry a request. Default is { inc: 100, max: 10000 }.
  • highWaterMark - Amount of data to buffer when in stream mode.
  • transform - Use this to add additional features. Called with the object that http.get() or https.get() would be called with. Must return a transformed object.
  • acceptEncoding - An object with encoding name as the key, and the value as a function that returns a decoding stream.
    acceptEncoding: {gzip: ()=>require('zlip').createGunzip(stream)}
    Given encodings will be added to the Accept-Encoding header, and the response will be decoded if the server responds with encoded content.

Defaults are held in miniget.defaultOptions and can be adjusted globally.

Miniget returns a readable stream, errors will then be emitted on the stream. Returned stream has additional methods added, and can emit the following events.

Stream#destroy([error])

Destroys the request.

Stream#destroyed

Set to true after Stream#destroy() has been called.

Stream#text()

Returns a promise that resolves to the concatenated contents of the response.

letbody=awaitminiget('http://yourwebsite.com').text();

Event: redirect

  • string - URL redirected to.

Emitted when the request was redirected with a redirection status code.

Event: retry

  • number - Number of retry.
  • Error - Request or status code error.

Emitted when the request fails, or the response has a status code >= 500.

Event: reconnect

  • number - Number of reconnect.
  • Error - Request or response error.

Emitted when the request or response fails after download has started.

Event: request

Emitted when a video request is made, including after any redirects, retries, and reconnects.

Event: response

Emitted when a video response has been found and has started downloading, including after any successful reconnects.

Forwarded events

Any events emitted from the request or response objects will be forwarded to the miniget stream.

Install

npm install miniget

Tests

Tests are written with mocha

npm test

About

A small http(s) GET library.

Topics

Resources

Stars

57 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

node-miniget

A small http(s) GET library with redirects, retries, reconnects, concatenating or streaming, and no dependencies. This keeps filesize small for potential browser use.

Depfucodecov

Usage

Concatenates a response

constminiget=require('miniget');miniget('http://mywebsite.com',(err,res,body)=>{console.log('webpage contents: ',body);});// with awaitletbody=awaitminiget('http://yourwebsite.com').text();

Request can be streamed right away

miniget('http://api.mywebsite.com/v1/messages.json').pipe(someWritableStream());

API

miniget(url, [options])

Makes a GET request. url can be a string or a URL object. options can have any properties from the http.request() function, in addition to

  • maxRedirects - Default is 10.
  • maxRetries - Number of times to retry the request if there is a 500 or connection error. Default is 2.
  • maxReconnects - During a big download, if there is a disconnect, miniget can try to reconnect and continue the download where it left off. Default is 0.
  • backoff - An object with inc and max used to calculate how long to wait to retry a request. Default is { inc: 100, max: 10000 }.
  • highWaterMark - Amount of data to buffer when in stream mode.
  • transform - Use this to add additional features. Called with the object that http.get() or https.get() would be called with. Must return a transformed object.
  • acceptEncoding - An object with encoding name as the key, and the value as a function that returns a decoding stream.
    acceptEncoding: {gzip: ()=>require('zlip').createGunzip(stream)}
    Given encodings will be added to the Accept-Encoding header, and the response will be decoded if the server responds with encoded content.

Defaults are held in miniget.defaultOptions and can be adjusted globally.

Miniget returns a readable stream, errors will then be emitted on the stream. Returned stream has additional methods added, and can emit the following events.

Stream#destroy([error])

Destroys the request.

Stream#destroyed

Set to true after Stream#destroy() has been called.

Stream#text()

Returns a promise that resolves to the concatenated contents of the response.

letbody=awaitminiget('http://yourwebsite.com').text();

Event: redirect

  • string - URL redirected to.

Emitted when the request was redirected with a redirection status code.

Event: retry

  • number - Number of retry.
  • Error - Request or status code error.

Emitted when the request fails, or the response has a status code >= 500.

Event: reconnect

  • number - Number of reconnect.
  • Error - Request or response error.

Emitted when the request or response fails after download has started.

Event: request

Emitted when a video request is made, including after any redirects, retries, and reconnects.

Event: response

Emitted when a video response has been found and has started downloading, including after any successful reconnects.

Forwarded events

Any events emitted from the request or response objects will be forwarded to the miniget stream.

Install

npm install miniget

Tests

Tests are written with mocha

npm test

About

A small http(s) GET library.

Topics

Resources

Stars

57 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

node-miniget

A small http(s) GET library with redirects, retries, reconnects, concatenating or streaming, and no dependencies. This keeps filesize small for potential browser use.

Depfucodecov

Usage

Concatenates a response

constminiget=require('miniget');miniget('http://mywebsite.com',(err,res,body)=>{console.log('webpage contents: ',body);});// with awaitletbody=awaitminiget('http://yourwebsite.com').text();

Request can be streamed right away

miniget('http://api.mywebsite.com/v1/messages.json').pipe(someWritableStream());

API

miniget(url, [options])

Makes a GET request. url can be a string or a URL object. options can have any properties from the http.request() function, in addition to

  • maxRedirects - Default is 10.
  • maxRetries - Number of times to retry the request if there is a 500 or connection error. Default is 2.
  • maxReconnects - During a big download, if there is a disconnect, miniget can try to reconnect and continue the download where it left off. Default is 0.
  • backoff - An object with inc and max used to calculate how long to wait to retry a request. Default is { inc: 100, max: 10000 }.
  • highWaterMark - Amount of data to buffer when in stream mode.
  • transform - Use this to add additional features. Called with the object that http.get() or https.get() would be called with. Must return a transformed object.
  • acceptEncoding - An object with encoding name as the key, and the value as a function that returns a decoding stream.
    acceptEncoding: {gzip: ()=>require('zlip').createGunzip(stream)}
    Given encodings will be added to the Accept-Encoding header, and the response will be decoded if the server responds with encoded content.

Defaults are held in miniget.defaultOptions and can be adjusted globally.

Miniget returns a readable stream, errors will then be emitted on the stream. Returned stream has additional methods added, and can emit the following events.

Stream#destroy([error])

Destroys the request.

Stream#destroyed

Set to true after Stream#destroy() has been called.

Stream#text()

Returns a promise that resolves to the concatenated contents of the response.

letbody=awaitminiget('http://yourwebsite.com').text();

Event: redirect

  • string - URL redirected to.

Emitted when the request was redirected with a redirection status code.

Event: retry

  • number - Number of retry.
  • Error - Request or status code error.

Emitted when the request fails, or the response has a status code >= 500.

Event: reconnect

  • number - Number of reconnect.
  • Error - Request or response error.

Emitted when the request or response fails after download has started.

Event: request

Emitted when a video request is made, including after any redirects, retries, and reconnects.

Event: response

Emitted when a video response has been found and has started downloading, including after any successful reconnects.

Forwarded events

Any events emitted from the request or response objects will be forwarded to the miniget stream.

Install

npm install miniget

Tests

Tests are written with mocha

npm test

About

A small http(s) GET library.

Topics

Resources

Stars

57 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

node-miniget

A small http(s) GET library with redirects, retries, reconnects, concatenating or streaming, and no dependencies. This keeps filesize small for potential browser use.

Depfucodecov

Usage

Concatenates a response

constminiget=require('miniget');miniget('http://mywebsite.com',(err,res,body)=>{console.log('webpage contents: ',body);});// with awaitletbody=awaitminiget('http://yourwebsite.com').text();

Request can be streamed right away

miniget('http://api.mywebsite.com/v1/messages.json').pipe(someWritableStream());

API

miniget(url, [options])

Makes a GET request. url can be a string or a URL object. options can have any properties from the http.request() function, in addition to

  • maxRedirects - Default is 10.
  • maxRetries - Number of times to retry the request if there is a 500 or connection error. Default is 2.
  • maxReconnects - During a big download, if there is a disconnect, miniget can try to reconnect and continue the download where it left off. Default is 0.
  • backoff - An object with inc and max used to calculate how long to wait to retry a request. Default is { inc: 100, max: 10000 }.
  • highWaterMark - Amount of data to buffer when in stream mode.
  • transform - Use this to add additional features. Called with the object that http.get() or https.get() would be called with. Must return a transformed object.
  • acceptEncoding - An object with encoding name as the key, and the value as a function that returns a decoding stream.
    acceptEncoding: {gzip: ()=>require('zlip').createGunzip(stream)}
    Given encodings will be added to the Accept-Encoding header, and the response will be decoded if the server responds with encoded content.

Defaults are held in miniget.defaultOptions and can be adjusted globally.

Miniget returns a readable stream, errors will then be emitted on the stream. Returned stream has additional methods added, and can emit the following events.

Stream#destroy([error])

Destroys the request.

Stream#destroyed

Set to true after Stream#destroy() has been called.

Stream#text()

Returns a promise that resolves to the concatenated contents of the response.

letbody=awaitminiget('http://yourwebsite.com').text();

Event: redirect

  • string - URL redirected to.

Emitted when the request was redirected with a redirection status code.

Event: retry

  • number - Number of retry.
  • Error - Request or status code error.

Emitted when the request fails, or the response has a status code >= 500.

Event: reconnect

  • number - Number of reconnect.
  • Error - Request or response error.

Emitted when the request or response fails after download has started.

Event: request

Emitted when a video request is made, including after any redirects, retries, and reconnects.

Event: response

Emitted when a video response has been found and has started downloading, including after any successful reconnects.

Forwarded events

Any events emitted from the request or response objects will be forwarded to the miniget stream.

Install

npm install miniget

Tests

Tests are written with mocha

npm test

About

A small http(s) GET library.

Topics

Resources

Stars

57 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

node-miniget

A small http(s) GET library with redirects, retries, reconnects, concatenating or streaming, and no dependencies. This keeps filesize small for potential browser use.

Depfucodecov

Usage

Concatenates a response

constminiget=require('miniget');miniget('http://mywebsite.com',(err,res,body)=>{console.log('webpage contents: ',body);});// with awaitletbody=awaitminiget('http://yourwebsite.com').text();

Request can be streamed right away

miniget('http://api.mywebsite.com/v1/messages.json').pipe(someWritableStream());

API

miniget(url, [options])

Makes a GET request. url can be a string or a URL object. options can have any properties from the http.request() function, in addition to

  • maxRedirects - Default is 10.
  • maxRetries - Number of times to retry the request if there is a 500 or connection error. Default is 2.
  • maxReconnects - During a big download, if there is a disconnect, miniget can try to reconnect and continue the download where it left off. Default is 0.
  • backoff - An object with inc and max used to calculate how long to wait to retry a request. Default is { inc: 100, max: 10000 }.
  • highWaterMark - Amount of data to buffer when in stream mode.
  • transform - Use this to add additional features. Called with the object that http.get() or https.get() would be called with. Must return a transformed object.
  • acceptEncoding - An object with encoding name as the key, and the value as a function that returns a decoding stream.
    acceptEncoding: {gzip: ()=>require('zlip').createGunzip(stream)}
    Given encodings will be added to the Accept-Encoding header, and the response will be decoded if the server responds with encoded content.

Defaults are held in miniget.defaultOptions and can be adjusted globally.

Miniget returns a readable stream, errors will then be emitted on the stream. Returned stream has additional methods added, and can emit the following events.

Stream#destroy([error])

Destroys the request.

Stream#destroyed

Set to true after Stream#destroy() has been called.

Stream#text()

Returns a promise that resolves to the concatenated contents of the response.

letbody=awaitminiget('http://yourwebsite.com').text();

Event: redirect

  • string - URL redirected to.

Emitted when the request was redirected with a redirection status code.

Event: retry

  • number - Number of retry.
  • Error - Request or status code error.

Emitted when the request fails, or the response has a status code >= 500.

Event: reconnect

  • number - Number of reconnect.
  • Error - Request or response error.

Emitted when the request or response fails after download has started.

Event: request

Emitted when a video request is made, including after any redirects, retries, and reconnects.

Event: response

Emitted when a video response has been found and has started downloading, including after any successful reconnects.

Forwarded events

Any events emitted from the request or response objects will be forwarded to the miniget stream.

Install

npm install miniget

Tests

Tests are written with mocha

npm test

About

A small http(s) GET library.

Topics

Resources

Stars

57 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

node-miniget

A small http(s) GET library with redirects, retries, reconnects, concatenating or streaming, and no dependencies. This keeps filesize small for potential browser use.

Depfucodecov

Usage

Concatenates a response

constminiget=require('miniget');miniget('http://mywebsite.com',(err,res,body)=>{console.log('webpage contents: ',body);});// with awaitletbody=awaitminiget('http://yourwebsite.com').text();

Request can be streamed right away

miniget('http://api.mywebsite.com/v1/messages.json').pipe(someWritableStream());

API

miniget(url, [options])

Makes a GET request. url can be a string or a URL object. options can have any properties from the http.request() function, in addition to

  • maxRedirects - Default is 10.
  • maxRetries - Number of times to retry the request if there is a 500 or connection error. Default is 2.
  • maxReconnects - During a big download, if there is a disconnect, miniget can try to reconnect and continue the download where it left off. Default is 0.
  • backoff - An object with inc and max used to calculate how long to wait to retry a request. Default is { inc: 100, max: 10000 }.
  • highWaterMark - Amount of data to buffer when in stream mode.
  • transform - Use this to add additional features. Called with the object that http.get() or https.get() would be called with. Must return a transformed object.
  • acceptEncoding - An object with encoding name as the key, and the value as a function that returns a decoding stream.
    acceptEncoding: {gzip: ()=>require('zlip').createGunzip(stream)}
    Given encodings will be added to the Accept-Encoding header, and the response will be decoded if the server responds with encoded content.

Defaults are held in miniget.defaultOptions and can be adjusted globally.

Miniget returns a readable stream, errors will then be emitted on the stream. Returned stream has additional methods added, and can emit the following events.

Stream#destroy([error])

Destroys the request.

Stream#destroyed

Set to true after Stream#destroy() has been called.

Stream#text()

Returns a promise that resolves to the concatenated contents of the response.

letbody=awaitminiget('http://yourwebsite.com').text();

Event: redirect

  • string - URL redirected to.

Emitted when the request was redirected with a redirection status code.

Event: retry

  • number - Number of retry.
  • Error - Request or status code error.

Emitted when the request fails, or the response has a status code >= 500.

Event: reconnect

  • number - Number of reconnect.
  • Error - Request or response error.

Emitted when the request or response fails after download has started.

Event: request

Emitted when a video request is made, including after any redirects, retries, and reconnects.

Event: response

Emitted when a video response has been found and has started downloading, including after any successful reconnects.

Forwarded events

Any events emitted from the request or response objects will be forwarded to the miniget stream.

Install

npm install miniget

Tests

Tests are written with mocha

npm test

About

A small http(s) GET library.

Topics

Resources

Stars

57 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

node-miniget

A small http(s) GET library with redirects, retries, reconnects, concatenating or streaming, and no dependencies. This keeps filesize small for potential browser use.

Depfucodecov

Usage

Concatenates a response

constminiget=require('miniget');miniget('http://mywebsite.com',(err,res,body)=>{console.log('webpage contents: ',body);});// with awaitletbody=awaitminiget('http://yourwebsite.com').text();

Request can be streamed right away

miniget('http://api.mywebsite.com/v1/messages.json').pipe(someWritableStream());

API

miniget(url, [options])

Makes a GET request. url can be a string or a URL object. options can have any properties from the http.request() function, in addition to

  • maxRedirects - Default is 10.
  • maxRetries - Number of times to retry the request if there is a 500 or connection error. Default is 2.
  • maxReconnects - During a big download, if there is a disconnect, miniget can try to reconnect and continue the download where it left off. Default is 0.
  • backoff - An object with inc and max used to calculate how long to wait to retry a request. Default is { inc: 100, max: 10000 }.
  • highWaterMark - Amount of data to buffer when in stream mode.
  • transform - Use this to add additional features. Called with the object that http.get() or https.get() would be called with. Must return a transformed object.
  • acceptEncoding - An object with encoding name as the key, and the value as a function that returns a decoding stream.
    acceptEncoding: {gzip: ()=>require('zlip').createGunzip(stream)}
    Given encodings will be added to the Accept-Encoding header, and the response will be decoded if the server responds with encoded content.

Defaults are held in miniget.defaultOptions and can be adjusted globally.

Miniget returns a readable stream, errors will then be emitted on the stream. Returned stream has additional methods added, and can emit the following events.

Stream#destroy([error])

Destroys the request.

Stream#destroyed

Set to true after Stream#destroy() has been called.

Stream#text()

Returns a promise that resolves to the concatenated contents of the response.

letbody=awaitminiget('http://yourwebsite.com').text();

Event: redirect

  • string - URL redirected to.

Emitted when the request was redirected with a redirection status code.

Event: retry

  • number - Number of retry.
  • Error - Request or status code error.

Emitted when the request fails, or the response has a status code >= 500.

Event: reconnect

  • number - Number of reconnect.
  • Error - Request or response error.

Emitted when the request or response fails after download has started.

Event: request

Emitted when a video request is made, including after any redirects, retries, and reconnects.

Event: response

Emitted when a video response has been found and has started downloading, including after any successful reconnects.

Forwarded events

Any events emitted from the request or response objects will be forwarded to the miniget stream.

Install

npm install miniget

Tests

Tests are written with mocha

npm test

About

A small http(s) GET library.

Topics

Resources

Stars

57 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

node-miniget

A small http(s) GET library with redirects, retries, reconnects, concatenating or streaming, and no dependencies. This keeps filesize small for potential browser use.

Depfucodecov

Usage

Concatenates a response

constminiget=require('miniget');miniget('http://mywebsite.com',(err,res,body)=>{console.log('webpage contents: ',body);});// with awaitletbody=awaitminiget('http://yourwebsite.com').text();

Request can be streamed right away

miniget('http://api.mywebsite.com/v1/messages.json').pipe(someWritableStream());

API

miniget(url, [options])

Makes a GET request. url can be a string or a URL object. options can have any properties from the http.request() function, in addition to

  • maxRedirects - Default is 10.
  • maxRetries - Number of times to retry the request if there is a 500 or connection error. Default is 2.
  • maxReconnects - During a big download, if there is a disconnect, miniget can try to reconnect and continue the download where it left off. Default is 0.
  • backoff - An object with inc and max used to calculate how long to wait to retry a request. Default is { inc: 100, max: 10000 }.
  • highWaterMark - Amount of data to buffer when in stream mode.
  • transform - Use this to add additional features. Called with the object that http.get() or https.get() would be called with. Must return a transformed object.
  • acceptEncoding - An object with encoding name as the key, and the value as a function that returns a decoding stream.
    acceptEncoding: {gzip: ()=>require('zlip').createGunzip(stream)}
    Given encodings will be added to the Accept-Encoding header, and the response will be decoded if the server responds with encoded content.

Defaults are held in miniget.defaultOptions and can be adjusted globally.

Miniget returns a readable stream, errors will then be emitted on the stream. Returned stream has additional methods added, and can emit the following events.

Stream#destroy([error])

Destroys the request.

Stream#destroyed

Set to true after Stream#destroy() has been called.

Stream#text()

Returns a promise that resolves to the concatenated contents of the response.

letbody=awaitminiget('http://yourwebsite.com').text();

Event: redirect

  • string - URL redirected to.

Emitted when the request was redirected with a redirection status code.

Event: retry

  • number - Number of retry.
  • Error - Request or status code error.

Emitted when the request fails, or the response has a status code >= 500.

Event: reconnect

  • number - Number of reconnect.
  • Error - Request or response error.

Emitted when the request or response fails after download has started.

Event: request

Emitted when a video request is made, including after any redirects, retries, and reconnects.

Event: response

Emitted when a video response has been found and has started downloading, including after any successful reconnects.

Forwarded events

Any events emitted from the request or response objects will be forwarded to the miniget stream.

Install

npm install miniget

Tests

Tests are written with mocha

npm test

About

A small http(s) GET library.

Topics

Resources

Stars

57 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages