mirror of
				https://git.tt-rss.org/fox/tt-rss.git
				synced 2025-10-31 03:40:59 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			109 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| exports.config = function(config){
 | |
| 	// summary:
 | |
| 	//		This module provides bootstrap configuration for running dojo in node.js
 | |
| 
 | |
| 	// any command line arguments with the load flag are pushed into deps
 | |
| 	for(var deps = [], args = [], i = 0; i < process.argv.length; i++){
 | |
| 		var arg = (process.argv[i] + "").split("=");
 | |
| 		if(arg[0] == "load"){
 | |
| 			deps.push(arg[1]);
 | |
| 		}else if(arg[0] == "mapPackage") {
 | |
| 			var parts = arg[1].split(":"),
 | |
| 				name = parts[0],
 | |
| 				location=parts[1],
 | |
| 				isPrexisting = false;
 | |
| 
 | |
| 			for (var j = 0; j < config.packages.length; j++) {
 | |
| 				var pkg = config.packages[j];
 | |
| 				if (pkg.name === name) {
 | |
| 					pkg.location = location;
 | |
| 					isPrexisting = true;
 | |
| 					break;
 | |
| 				}
 | |
| 			}
 | |
| 
 | |
| 			if (!isPrexisting) {
 | |
| 				config.packages.push({
 | |
| 					name: name,
 | |
| 					location: location
 | |
| 				});
 | |
| 			}
 | |
| 		}else{
 | |
| 			args.push(arg);
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	var fs = require("fs");
 | |
| 
 | |
| 	// make sure global require exists
 | |
| 	//if (typeof global.require=="undefined"){
 | |
| 	//	global.require= {};
 | |
| 	//}
 | |
| 
 | |
| 	// reset the has cache with node-appropriate values;
 | |
| 	var hasCache = {
 | |
| 		"host-node":1,
 | |
| 		"host-browser":0,
 | |
| 		"dom":0,
 | |
| 		"dojo-has-api":1,
 | |
| 		"dojo-xhr-factory":0,
 | |
| 		"dojo-inject-api":1,
 | |
| 		"dojo-timeout-api":0,
 | |
| 		"dojo-trace-api":1,
 | |
| 		"dojo-dom-ready-api":0,
 | |
| 		"dojo-publish-privates":1,
 | |
| 		"dojo-sniff":0,
 | |
| 		"dojo-loader":1,
 | |
| 		"dojo-test-xd":0,
 | |
| 		"dojo-test-sniff":0
 | |
| 	};
 | |
| 	for(var p in hasCache){
 | |
| 		config.hasCache[p] = hasCache[p];
 | |
| 	}
 | |
| 
 | |
| 	var vm = require('vm'),
 | |
| 		path = require('path');
 | |
| 
 | |
| 	// reset some configuration switches with node-appropriate values
 | |
| 	var nodeConfig = {
 | |
| 		baseUrl: path.dirname(process.argv[1]),
 | |
| 		commandLineArgs:args,
 | |
| 		deps:deps,
 | |
| 		timeout:0,
 | |
| 
 | |
| 		// TODO: really get the locale
 | |
| 		locale:"en-us",
 | |
| 
 | |
| 		loaderPatch: {
 | |
| 			log:function(item){
 | |
| 				// define debug for console messages during dev instead of console.log
 | |
| 				// (node's heavy async makes console.log confusing sometimes)
 | |
| 				var util = require("util");
 | |
| 				util.debuglog(util.inspect(item));
 | |
| 			},
 | |
| 
 | |
| 			eval: function(__text, __urlHint){
 | |
| 				return vm.runInThisContext(__text, __urlHint);
 | |
| 			},
 | |
| 
 | |
| 			injectUrl: function(url, callback){
 | |
| 				try{
 | |
| 					vm.runInThisContext(fs.readFileSync(url, "utf8"), url);
 | |
| 					callback();
 | |
| 				}catch(e){
 | |
| 					this.log("failed to load resource (" + url + ")");
 | |
| 					this.log(e);
 | |
| 				}
 | |
| 			},
 | |
| 
 | |
| 			getText: function(url, sync, onLoad){
 | |
| 				// TODO: implement async and http/https handling
 | |
| 				onLoad(fs.readFileSync(url, "utf8"));
 | |
| 			}
 | |
| 		}
 | |
| 	};
 | |
| 	for(p in nodeConfig){
 | |
| 		config[p] = nodeConfig[p];
 | |
| 	}
 | |
| };
 |