mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-11 10:13:52 +01:00
42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
|
// A utility function that adds a preamble to each Netscript JS
|
||
|
// script. This preamble will set all the global functions and
|
||
|
// variables appropriately for the module.
|
||
|
//
|
||
|
// One caveat is that we don't allow the variables in the preable
|
||
|
// to change. Unlike in normal Javascript, this would not change
|
||
|
// properties of self. It would instead just change the variable
|
||
|
// within the given module -- not good! Users should not really
|
||
|
// need to do this anyway.
|
||
|
|
||
|
import uuidv4 from "uuid/v4";
|
||
|
import {sprintf} from "sprintf-js";
|
||
|
|
||
|
window.__NSJS__environments = {};
|
||
|
|
||
|
// Returns the UUID for the env.
|
||
|
export function registerEnv(env) {
|
||
|
const uuid = uuidv4();
|
||
|
window.__NSJS__environments[uuid] = env;
|
||
|
return uuid;
|
||
|
}
|
||
|
|
||
|
export function unregisterEnv(uuid) {
|
||
|
delete window.__NSJS__environments[uuid];
|
||
|
}
|
||
|
|
||
|
export function makeEnvHeader(uuid) {
|
||
|
if (!(uuid in window.__NSJS__environments)) throw new Error("uuid is not in the environment" + uuid);
|
||
|
|
||
|
const env = window.__NSJS__environments[uuid];
|
||
|
var envLines = [];
|
||
|
for (const prop in env) {
|
||
|
envLines.push("const ", prop, " = ", "__NSJS_ENV[\"", prop, "\"];\n");
|
||
|
}
|
||
|
|
||
|
return sprintf(`
|
||
|
'use strict';
|
||
|
const __NSJS_ENV = window.__NSJS__environments['%s'];
|
||
|
// The global variable assignments (hack, weaken, etc.).
|
||
|
%s
|
||
|
`, uuid, envLines.join(""));
|
||
|
}
|