1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
| 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{
| 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.debug(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];
| }
| };
|
|