Adds a bootstrap function for easier startup of wmeSdk, WazeWrap, and ScriptUpdateMonitor.
Verzia zo dňa
Tento skript by nemal byť nainštalovaný priamo. Je to knižnica pre ďalšie skripty, ktorú by mali používať cez meta príkaz // @require https://update.greatest.deepsurf.us/scripts/509664/1459704/WME%20Utils%20-%20Bootstrap.js
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:
bootstrap(...).then(sdk => init(sdk)); or sdk = await bootstrap(...); init();