WME Utils - Bootstrap

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

目前為 2024-10-05 提交的版本,檢視 最新版本

此腳本不應該直接安裝,它是一個供其他腳本使用的函式庫。欲使用本函式庫,請在腳本 metadata 寫上: // @require https://update.greatest.deepsurf.us/scripts/509664/1459534/WME%20Utils%20-%20Bootstrap.js

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

作者
mapomaticWazeDev
版本
2024.10.05.001
建立日期
2024-09-22
更新日期
2024-10-05
尺寸
2.9 KB
授權條款
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.greatest.deepsurf.us/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://greatest.deepsurf.us/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();