Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  ModuleLoader.sys.mjs   Sprache: unbekannt

 
/**
 * Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/
 */

export function ModuleLoader(base, depth, proto) {
  const modules = {};

  const principal = Cc["@mozilla.org/systemprincipal;1"].createInstance(
    Ci.nsIPrincipal
  );

  const sharedGlobalsandbox = Cu.Sandbox(principal, {
    invisibleToDebugger: true,
    sandboxName: "FS Module Loader",
    sandboxPrototype: proto,
    wantComponents: false,
    wantGlobalProperties: [],
    wantXrays: false,
  });

  const require = async function (id) {
    if (modules[id]) {
      return modules[id].exported_symbols;
    }

    const url = new URL(depth + id, base);

    const module = Object.create(null, {
      exported_symbols: {
        configurable: false,
        enumerable: true,
        value: Object.create(null),
        writable: true,
      },
    });

    modules[id] = module;

    const properties = {
      require_module: require,
      exported_symbols: module.exported_symbols,
    };

    // Create a new object in this sandbox, that will be used as the scope
    // object for this particular module.
    const sandbox = sharedGlobalsandbox.Object();
    Object.assign(sandbox, properties);

    Services.scriptloader.loadSubScript(url.href, sandbox);

    return module.exported_symbols;
  };

  const returnObj = {
    require: {
      enumerable: true,
      value: require,
    },
  };

  return Object.create(null, returnObj);
}

[ Dauer der Verarbeitung: 0.26 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge