npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

webext-launch-web-auth-flow

v0.1.2

Published

A launchWebAuthFlow polyfill using browser popup

Downloads

90

Readme

webext-launch-web-auth-flow

Polyfill launchWebAuthFlow with popups or browser tabs.

Installation

Via npm

npm install webext-launch-web-auth-flow
// With ESM Modules
import launchWebAuthFlow from "webext-launch-web-auth-flow";

// With CommonJS
const launchWebAuthFlow = require("webext-launch-web-auth-flow");

If you use TypeScript, you have to install @types/webextension-polyfill:

npm install @types/webextension-polyfill

Pre-built dist

You can find it under the dist folder, or download from unpkg.

Why

  1. Builtin launchWebAuthFlow doesn't reuse the browser session. This library does.
  2. Builtin launchWebAuthFlow doesn't allow custom redirect_uri. This library does.

Permissions

{
 "background": {
    ...
    "persistent": true
  },
  "permissions": [
    "webRequest",
    "webRequestBlocking",
    "webNavigation",
    "https://my.redirect.uri/*"
  ]
}

To polyfill launchWebAuthFlow, this library uses following API/permissions:

  1. windows and tabs - this library launches a window dialog (or tab in Firefox android) to login. Most methods from these APIs can be used without explicitly declaring any permissions in the extension's manifest file, therefore there's no need to mention them in the code above.
  2. webRequest - this library cannot be used with event pages, otherwise you'll get this error. To avoid it, set your background page persistent key to true.
  3. webRequestBlocking this cancels the request to redirect_uri so it won't leak the token/code to redirect_uri (or redirect_uri is unresolveable e.g. the URL from identity.getRedirectURL).
  4. webNavigation - the login dialog is minimized unless there is no redirect. It checks the loading state using webNavigation.onDOMContentLoaded.

Compatibility

This library references the browser global variable, which is from Firefox. To make it work on Chrome (which uses the chrome global variable instead) install webextension-polyfill.

Known issues

API reference

This module exports a single function.

webextLaunchWebAuthFlow

async launchWebAuthFlow({
  url: String,
  redirect_uri: String,
  interactive?: Boolean = false,
  alwaysUseTab?: Boolean = false,
  windowOptions?: Object
}) => finalUrl: String

See the official document for url, redirect_uri, and interactive options. Note that redirect_uri is required in this library.

By default, this library uses a popup to display the login page. If popups are unavailable (which usually happens on mobile browsers), it uses a tab instead. Set alwaysUseTab to true to always use a tab.

Use windowOptions to set extra properties that will be sent to browser.windows.create.

Changelog

  • 0.1.2 (Nov 28, 2022)

    • Add: TypeScript declaration file.
  • 0.1.1 (Feb 18, 2021)

    • Add: alwaysUseTab option.
    • Add: windowOptions option.
  • 0.1.0 (Aug 15, 2020)

    • First release.