require.js (2313B)
1 'use strict'; 2 3 var EXPORTED_SYMBOLS = ['require']; 4 5 var require = (function() { 6 var { Loader, Require, Module } = Components.utils.import('resource://gre/modules/commonjs/toolkit/loader.js'); 7 var requirer = Module('/', '/'); 8 var _runningTimers = {}; 9 var window = {}; 10 11 window.setTimeout = function (func, ms) { 12 var id = Math.floor(Math.random() * (1000000000000 - 1)) + 1 13 var useMethodjit = Components.utils.methodjit; 14 var timer = Components.classes["@mozilla.org/timer;1"] 15 .createInstance(Components.interfaces.nsITimer); 16 timer.initWithCallback({"notify":function() { 17 // Remove timer from object so it can be garbage collected 18 delete _runningTimers[id]; 19 20 // Execute callback function 21 try { 22 func(); 23 } catch(err) { 24 // Rethrow errors that occur so that they appear in the error 25 // console with the appropriate name and line numbers. While the 26 // the errors appear without this, the line numbers get eaten. 27 var scriptError = Components.classes["@mozilla.org/scripterror;1"] 28 .createInstance(Components.interfaces.nsIScriptError); 29 scriptError.init( 30 err.message || err.toString(), 31 err.fileName || err.filename || null, 32 null, 33 err.lineNumber || null, 34 null, 35 scriptError.errorFlag, 36 'component javascript' 37 ); 38 Components.classes["@mozilla.org/consoleservice;1"] 39 .getService(Components.interfaces.nsIConsoleService) 40 .logMessage(scriptError); 41 typeof Zotero !== 'undefined' && Zotero.debug(err.stack, 1); 42 } 43 }}, ms, Components.interfaces.nsITimer.TYPE_ONE_SHOT); 44 _runningTimers[id] = timer; 45 return id; 46 }; 47 48 window.clearTimeout = function (id) { 49 var timer = _runningTimers[id]; 50 if (timer) { 51 timer.cancel(); 52 } 53 delete _runningTimers[id]; 54 }; 55 56 window.debug = function (msg) { 57 dump(msg + "\n\n"); 58 }; 59 60 var loader = Loader({ 61 id: 'zotero/require', 62 paths: { 63 '': 'resource://zotero/', 64 }, 65 globals: { 66 document: typeof document !== 'undefined' && document || {}, 67 console: typeof console !== 'undefined' && console || {}, 68 navigator: typeof navigator !== 'undefined' && navigator || {}, 69 window, 70 setTimeout: window.setTimeout, 71 clearTimeout: window.clearTimeout, 72 Zotero: typeof Zotero !== 'undefined' && Zotero || {} 73 } 74 }); 75 76 return Require(loader, requirer); 77 })();