www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

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 })();