/** * Additional static files for the the smith.io client plugin * * @copyright 2013, Ajax.org B.V. */ main.consumes = ["Plugin", "connect.static"]; main.provides = ["smithio.server"]; module.exports = main; function main(options, imports, register) { var Plugin = imports.Plugin; var statics = imports["connect.static"]; var fs = require("fs"); var dirname = require("path").dirname; /***** Initialization *****/ var plugin = new Plugin("Ajax.org", main.consumes); var loaded = false; function load(){ if (loaded || options.disableUnpackagedClient) return false; loaded = true; // TODO: big hack. Patch engine.io client to disable 'withCredentials" var eioClient = require.resolve("engine.io-client/engine.io.js"); try { fs.writeFileSync(eioClient, fs.readFileSync(eioClient, "utf8").replace("xhr.withCredentials = true;", "xhr.__withCredentials = true;")); } catch (e) { console.warn("unable to patch engine.io"); } statics.addStatics([{ path: dirname(eioClient), mount: "/engine.io", rjs: [{ "name": "engine.io", "location": "engine.io", "main": "engine.io.js" }] }]); statics.addStatics([{ path: dirname(require.resolve("kaefer/lib/client")), mount: "/kaefer", rjs: [{ "name": "kaefer", "location": "kaefer", "main": "client.js" }] }]); statics.addStatics([{ path: dirname(require.resolve("smith")), mount: "/smith", rjs: [{ "name": "smith", "location": "smith", "main": "smith.js" }] }]); statics.addStatics([{ path: dirname(require.resolve("vfs-socket/consumer")), mount: "/vfs-socket", rjs: [{ "name": "vfs-socket", "location": "vfs-socket" }] }]); statics.addStatics([{ path: dirname(require.resolve("msgpack-js-browser")), mount: "/msgpack-js", rjs: [{ "name": "msgpack-js", "location": "msgpack-js", "main": "msgpack.js" }] }]); statics.addStatics([{ path: dirname(require.resolve("architect-build/build_support/mini_require")), mount: "/" }]); } /***** Lifecycle *****/ plugin.on("load", function(){ load(); }); /***** Register and define API *****/ plugin.freezePublicAPI({}); register(null, { "smithio.server": plugin }); }