WME Utils - Bootstrap

Adds a bootstrap function for easier startup of wmeSdk, WazeWrap, and ScriptUpdateMonitor.

This script should not be not be installed directly. It is a library for other scripts to include with the meta directive // @require https://update.greasyfork.org/scripts/509664/1461898/WME%20Utils%20-%20Bootstrap.js

Aŭtoro
mapomatic
Versio
2024.10.09.000
Kreita
2024/09/22
Ĝisdatigita
2024/10/09
Licenco
GNU GPLv3

Waits for SDK_INITIALIZED and the wme-ready event, and returns an instance of the WmeSdk class initialized with your script's name and ID. Optionally, it will also wait for WazeWrap.isReady and start WazeWrap.Alerts.ScriptUpdateMonitor.

Usage: bootstrap(options); returns Promise<WmeSdk>

Examples:

// Add this to your userscript header:
// @require    https://update.greasyfork.org/scripts/509664/WME%20Utils%20-%20Bootstrap.js

// If using WazeWrap and/or its ScriptUpdateMonitor feature, be sure to also include this in the userscript header:
// @require    https://greasyfork.org/scripts/24851-wazewrap/code/WazeWrap.js

// USE ONE OF THREE METHODS TO CALL BOOTSTRAP AND RETRIEVE AN INSTANCE OF WME SDK:
// 1. Pass a callback function in the options object.
//    bootstrap({ callback: init });
// 2. Use a Promise.then() function
//    bootstrap().then(sdk => init(sdk));
// 3. Use async/await
//    const wmeSdk = await bootstrap();

// Below are some examples showing additional option object properties:

// METHOD 1: PASS A CALLBACK FUNCTION

let wmeSdk; // A "global" variable to store your WmeSdk reference.

function init(sdk) { // sdk is passed to init (callback function) by bootstrap
    // Store the reference to the sdk
    wmeSdk = sdk;
    // The rest of your init code...
}

// Waits for the SDK and returns it as an argument in a callback to init. Since scriptName and scriptId aren't passed, the script name will come from GM_info and scriptId will be the script name with any spaces stripped.
bootstrap({ callback: init });


// METHOD 2: USE A .THEN() FUNCTION

// Waits for the SDK and WazeWrap, then calls init in a .then() function.
bootstrap({
    scriptName: 'My Script', // can be excluded if GM_info.script.name is ok
    scriptId: 'myScript', // can be excluded if you are ok with scriptId = script name with spaces removed
    useWazeWrap: true,
}).then(sdk => {
    console.log('Bootstrap succeeded.');
    init(sdk);
});


// METHOD 3: USE ASYNC/AWAIT

// Assigns the SDK directly to wmeSdk after the SDK and WazeWrap are ready, and starts ScriptUpdateMonitor.
// NOTE: if using await, the outer function must be declared async, e.g. your IIFE
wmeSdk = await bootstrap({
    scriptName: 'My Script', // can be excluded if GM_info.script.name is ok
    scriptId: 'myScript', // can be excluded if you are ok with scriptId = script name with spaces removed
    scriptUpdateMonitor: {
        scriptVersion: '1.0', // can be excluded if GM_info.script.version is ok
        downloadUrl: 'https://...',
        metaUrl: 'https://...', // GF scripts don't typically need this
        metaRegExp: /some regex/ // GF scripts don't typically need this
    }
});

init(); // The sdk parameter should be removed from the init function since wmeSdk is assigned directly above.

The options object passed to bootstrap:

  • scriptName [string]: OPTIONAL. The name of your script. Used in initializing the WME SDK and for ScriptUpdateMonitor alerts (if using WazeWrap.Alerts.ScriptUpdateMonitor). If omitted, GM_info.script.name will be used.
  • scriptId [string]: OPTIONAL. Used in initializing the WME SDK. If omitted, scriptName with spaces stripped will be used.
  • useWazeWrap [boolean]: OPTIONAL. Set to true if your script uses the WazeWrap library. If true, be sure to @ require it in your script header. May be omitted if using the scriptUpdateMonitor option -- WazeWrap will be used in that case.
  • scriptUpdateMonitor [object]: OPTIONAL. An object containing the following properties, only needed if using ScriptUpdateMonitor.
    • scriptVersion [string]: OPTIONAL. The current version of your script. If omitted, GM_info.script.version will be used.
    • downloadUrl [string]: The download URL of your script.
    • metaUrl [string]: OPTIONAL. A page containing script version information. Scripts on Greasy Fork do not need to use this.
    • metaRegExp [regular expression]: OPTIONAL. A regular expression that returns the script version from the metaUrl page. Scripts on Greasy Fork do not need to use this.
  • callback: OPTIONAL. A function to call once bootstrapping is completed. The WmeSdk object will be passed as the first argument to the function. Alternatively, use bootstrap(...).then(sdk => init(sdk)); or sdk = await bootstrap(...); init();