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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@gdmod/web-loader

v0.3.0

Published

The GDMod loader for the web, in form of a chrome extension.

Readme

Web Loader

This browser extension permits to load mods on web games

Development

When working on the API, to test changes in the browser, you need to reimport the api into the extension. The script npm run watch will watch for changes and reimport the API automatically. Note that the manifest in the extension directory is automatically generated. to change it, change the template in this folder.

Installation

Installation instructions for users on the wiki.

Usage

When a page contains a GDevelop game, the extension will automatically patch it to gain access to the whole game. Then you can click on the top right the Extension's Icon. If the current page has a patched GDevelop game, it will let you open a control pannel from which you can control the game.

Internal Work

Injection

It works by Injecting a content script to every page and iframe. This script is sandboxed but has access to the chrome APIs (injector.js). So we set up with the limited access we have a forwarding of window message events and forward it to the all the extension's scripts and pages. Then we use our limited access to document to add a script element that loads a script (injected.js) that will be loaded by the page and not the extension, and therefore has complete access to everything (it runs unsandboxed).

Patching

We now verify if window.gdjs is present. If it is we assume this is a GDevelop game. In that case we define the global object GDAPI and scan for all children of gdjs object having "Code" in its name and a child named func. Those are the event sheets of every scene. We rename the original func to originalFunc and override func with the following:

function(runtimeScene) {
    window.GDAPI.game = runtimeScene.getGame();
    originalFunc(runtimeScene);
}

With that we gain access to the whole game permanently, and with that the control of every scene too.