GhostText
๐ป Use your text editor to write in your browser. Everything you type in the editor will be instantly updated in the browser (and vice versa).object-fit-images
๐ป Polyfill object-fit/object-position on <img>: IE9, IE10, IE11, Edge, Safari, ...Awesome-WebExtensions
A curated list of awesome resources for WebExtensions development.browser-extension-template
๐ Barebones boilerplate with Parcel 2, options handler and auto-publishingchrome-webstore-upload-cli
CLI tool to upload Chrome Extensions to the Chrome Web Storechrome-webstore-upload
Upload Chrome Extensions to the Chrome Web Storegithub-issue-link-status
Colorize issue and PR links to see their status (open, closed, merged)ghat
๐ Reuse GitHub Actions workflows across repositoriesdelegate-it
DOM event delegation, in <1KBindent-textarea
Add editor-like tab-to-indent functionality to <textarea>, in a few bytesimage-promise
๐๐ค Load one or more images, return a promise. Tiny, browser-only, no dependencies.webext-options-sync
Helps you manage and autosave your extension's options. Chrome and Firefox.select-dom
Lightweight querySelector/All wrapper that outputs an Arraysupports-webp
Detect support for WEBP images in the browser in 0.3KBmany-keys-map
A Map subclass with support for multiple keys for one entry.doma
Parse an HTML string into `DocumentFragment` or one `Element`, in a few bytes (in browser)code-tag
noop functions to help formatters and syntax highlighters recognize embedded codewebext-storage-cache
Cache values in your Web Extension and clear them on expiration. Also includes a memoize-like API to cache any function results automaticallywebext-fun
WebExtension packages for every needwebext-base-css
Extremely minimal stylesheet/setup for Web Extensionsโ options pages (also dark mode)fit-textarea
Automatically expand a <textarea> to fit its content, in a few byteswebext-dynamic-content-scripts
WebExtension module: Automatically registers your content_scripts on domains added via permission.requestintrinsic-scale
Replicate `background-size: cover/contain` for canvas/CSS/Node/โฆ on any type of media.scroll-restoration-polyfill
Polyfill for the "History API: Scroll Restoration"text-field-edit
Insert text in a <textarea> and <input> (supports Firefox and Undo)release-with-changelog
Creates GitHub releases for pushed tags, with the commit log as release bodysetup-git-user
GitHub Action that sets the git user and email to enable commitingwebext-domain-permission-toggle
Browser-action context menu to request permission for the current tab.webext-storage
A more usable typed storage API for Web Extensionsvideo-canvas
Paint video on canvas. Extra light.list-github-dir-content
List all the files in a GitHub repoโs directorywebext-detect-page
Detects where the current browser extension code is being run. Chrome and Firefox.web-ext-submit
Wrapper around Mozillaโs web-ext to submit extensions to AMO.fregante
zip-text-nodes
Merge the DOM of 2 elements with the same textContent.gsap-then
๐ Make every GSAP Tween a promise. tl.then(doSomething) (GSAP 1 and 2)GhostText-for-VSCode
Use VS Code to write in your browser. Everything you type in the editor will be instantly updated in the browser (and vice versa).content-scripts-register-polyfill
WebExtensions: Polyfill for browser.contentScripts.register() for Chrome.filter-altered-clicks
Filter alt-click, ctrl-click, shift-click, middle click, ...tiny-version-compare
Compare two software versions, with any number of points (<1KB)webext-patterns
Convert the patterns of your WebExtension manifest to regexghatemplates
GitHub Actions workflow templates for `$ ghat`eslint-formatters
ESLint formatters published as standalone modules ๐webext-content-scripts
Utility functions to inject content scripts from a WebExtensionpush-form
Zero-effort nanomodule to submit a `<form>` element via `fetch` and receive the responsedaily-version-action
Creates a new tag using the format Y.M.D, but only if HEAD isnโt already taggeddaily-version
Get the current date formatted as a version. Automatically add the time if you already released a version today.github-clean-feed
Group GitHub's news feed events by repo (Chrome, Firefox, Opera)tumblr-upload
๐ก Upload your Tumblr theme via node or CLIsetup-git-token
GitHub Action that sets the GITHUB_TOKEN as credentials for git (enables `git push`)many-keys-weakmap
A `WeakMap` subclass with support for multiple keys for one entrytitle-to-labels-action
Cleans up the titles of issues and PRs from common opening keywordswebext-inject-on-install
Automatically add content scripts to existing tabs when your extension is installed. Chromewebext-options-sync-per-domain
Helps you manage and autosave your extension's options, separately for each additional permissionregex-join
Merge multiple regexes and strings into one, preserving all the flags, automatically escaping the stringswebext-tools
Utility functions for WebExtensionsget-media-size
Get the real size of an <img>, <video>, or <canvas> in the browser.webext-polyfill-kinda
Super-lightweight Promised wrapper around `chrome.*` API to be used in modules. Prefer `webextension-polyfill` if youโre using it directly in an extension.webext-events
High-level events and utilities for events in Web Extensionswebext-permissions
WebExtensions module: Get any optional permissions that users have granted you.one-mutation
Observe one mutation via `MutationObserver`, then resolve a Promise.get-canvas-pixel-color
Micro module to get the color of a single pixel on a HTML canvasflat-zip
Merges arrays like a zipper. Like `lodash.zip().flat().take(limit)` but a tenth of the size!animate-prop
Single, dependency-free function to tween a property. Use that on canvas or anywhere else.browser-player
๐ Chrome extension: pause other tabs when you play somethingbundle
Bundles my modules so you don't have to!intervalometer
Call a function at every frame or every X ms. With start/stopwebext-content-script-ping
One-file interface to detect whether your content script have loaded.one-event
Micro module to add an event listener to be executed only oncetiny-load-script
Load a javascript file and forget about iton-off
Add/remove DOM eventswebext-sandbox
WIPconsole-class
Get yourself a light, togglable, namespaced and colored console.log in the browserprevent-popstate-scroll
(Deprecated) Prevent the scroll restoration caused by the popstate event or back/forward buttons.gulp-setup
Personal project. NOT RECOMMENDED. Gulp setup for a static website. Includes asset optimization. Loosely based on gulp-startervisibility-change-ponyfill
A more reliable visibilitychange event that works in more mobile WebViewsget-scroll
Micro module to get the scroll position (top or left) in the browserrandom-encoder
Lightweight way to generate multiple, random, reversible "hashes" or encodingeslint-formatter-table
ESLintโs official `table` formatter, extracted from ESLint 7RedditGallery.ga
Paste a Reddit post URL, get a gallery of each comment's image. Perfect for /r/photoshopbattlessticky-pinned-tabs
Chrome Extension: When in a pinned tab, external links open in a new tabwebext-permissions-events-polyfill
WebExtensions: Polyfill for `onAdded` and `onRemoved` permission events for Firefox.eslint-formatter-codeframe
ESLintโs official `codeframe` formatter, extracted from ESLint 7facebook-sdk-promise
Load Facebook's API and return a Promise. If it's already loading it won't try to load it again.npm-helpful-typosquatting
Redirect wrong `npm install`s to the right packageget-elements-array
Array of elements from selector, Array-like objects and single elementsephiframe
ephimeral iframe page builderabort-utils
Utility functions to use and combine `AbortSignal` and `AbortController` with PromisesRedd.cf
An improved fork of Redditatewebext-msg
WebExtension module: Simple message handlernpm-bundler
Opinionated ES6 library bundler based on rollup-babel-lib-bundler. For my own modules, but maybe you can find it useful too.github-desktop-open-in-sublime-text
In GitHub Desktop on Mac, replace "Open in Atom" with Sublime Textwebextension-polyfill-global
Wrapper around Mozillaโs webextension-polyfill to make it available as a global even with a bundlerguides
meta
Meta discussions (inspired by sindresorhus/meta)time
What time is it?ghosttext.fregante.com
Minisite for GhostTextwebpack-sandbox
Just some personal webpack tests and their outputindex-github-bot
Bot that reminds me to add my new repos to my index.blur-accessibly
Use `element.blur()` without losing the `tab` positionLove Open Source and this site? Check out how you can help us