This repository was archived by the owner on Jun 19, 2020. It is now read-only.
Repository navigation
Expand file tree
/
Copy pathmain.js
More file actions
85 lines (63 loc) · 2.19 KB
/
Copy pathmain.js
File metadata and controls
85 lines (63 loc) · 2.19 KB
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
var fs = require("fs"),
request = require("request"),
vm = require('vm'),
requirejs = require("requirejs");
var packagejson = JSON.parse(fs.readFileSync(__dirname+"/package.json","utf-8").replace(/\n/g,""));
var datajs_client = require("./lib/datajs.client"),
datajs_proxy = require("./lib/datajs.proxy"),
getdatasource = require("./lib/getdatasource");
requirejs.config({
baseUrl: __dirname,
nodeRequire: require,
context:"datajsrequire"
});
var init = function(Joshfire) {
Joshfire.datajs = {
client:datajs_client.init(Joshfire, requirejs),
proxy:datajs_proxy.init(Joshfire)
};
Joshfire.factory.getDataSource = getdatasource.init(Joshfire);
};
exports.bootstrap = function(options,callback) {
var fetch = function(cb) {
var parsed = fs.readFile("joshfire_factory_boostrap.js","utf-8",function(err,data) {
if (!err) {
return cb(null,data);
}
var appid = options.appid || process.env.JOSHFIREFACTORY_APPID;
var templateid = options.templateid || process.env.JOSHFIREFACTORY_TEMPLATEID || "auto";
var deviceid = options.deviceid || process.env.JOSHFIREFACTORY_DEVICEID || "auto";
var host = options.host || process.env.JOSHFIREFACTORY_HOST || "factory.joshfire.com";
if (!appid) {
return cb("no static bootstrap and no ID given - impossible to boostrap");
}
request({uri:"http://"+host+"/bootstrap/"+appid+"/"+templateid+"/"+deviceid+"/?runtime=nodejs&runtimev="+packagejson.version},function(err,resp,body) {
if (err) return cb(err);
if (options.save) {
fs.writeFile("joshfire_factory_boostrap.js",body,"utf-8",function(err) {
});
}
try {
return cb(null,body);
} catch (e) {
return cb("JSON parse error");
}
});
});
};
fetch(function(err, factoryjs) {
if (err) return callback(err);
var sandbox = {
Joshfire:{},
define:requirejs.define,
console:console
};
try {
vm.runInNewContext(factoryjs, sandbox, 'joshfire_factory_boostrap.vm.js');
} catch (e) {
return callback(e);
}
init(sandbox.Joshfire);
callback(null,sandbox.Joshfire);
});
};