diff --git a/node_modules/c9/json-with-re.js b/node_modules/c9/json-with-re.js new file mode 100644 index 00000000..e8f475db --- /dev/null +++ b/node_modules/c9/json-with-re.js @@ -0,0 +1,28 @@ +/** + * JSON (de-)serializer with support for encosing regular expressions + */ +"use strict"; + +exports.replacer = function(key, value) { + if (value instanceof RegExp) + return ("__REGEXP " + value.toString()); + else + return value; +}; + +exports.reviver = function(key, value) { + if ((value + "").indexOf("__REGEXP ") == 0) { + var m = value.match(/__REGEXP \/(.*)\/(.*)?/); + return new RegExp(m[1], m[2]); + } + else + return value; +}; + +exports.stringify = function(value, space) { + return JSON.stringify(value, exports.replacer, space); +}; + +exports.parse = function(rext) { + return JSON.parse(rext, exports.reviver); +}; \ No newline at end of file diff --git a/node_modules/c9/json-with-re_test.js b/node_modules/c9/json-with-re_test.js new file mode 100644 index 00000000..5ccb3ecb --- /dev/null +++ b/node_modules/c9/json-with-re_test.js @@ -0,0 +1,27 @@ +/*global describe it before after beforeEach afterEach define*/ +"use strict"; +"use server"; +"use mocha"; + +require("c9/inline-mocha")(module); + +var assert = require("assert-diff"); +var reJSON = require("./json-with-re"); + +describe(__filename, function(){ + it("should encode regular expressions", function() { + assert.deepEqual(reJSON.stringify({ foo: /foo/ }), '{"foo":"__REGEXP /foo/"}'); + assert.deepEqual(reJSON.stringify({ foo: /foo\//gi }), "{\"foo\":\"__REGEXP /foo\\\\//gi\"}"); + }); + it("should decode regular expressions", function() { + assert.deepEqual(reJSON.parse('{"foo":"__REGEXP /foo/"}'), { foo: /foo/ }); + assert.deepEqual(reJSON.parse("{\"foo\":\"__REGEXP /foo\\\\//gi\"}"), { foo: /foo\//gi }); + }); + it("should deal with null values", function() { + var o = { + foo: null, + bar: /dd/ + }; + assert.deepEqual(reJSON.parse(reJSON.stringify(o)), o); + }); +}); diff --git a/node_modules/c9/urls.js b/node_modules/c9/urls.js index c48a3cff..0284030c 100644 --- a/node_modules/c9/urls.js +++ b/node_modules/c9/urls.js @@ -91,12 +91,12 @@ function getBaseUrl(req, sourceBaseUrlPattern, targetBaseUrlPattern) { targetHost = "c9.io"; } - if (targetHost.match(/^(ide|vfs)./) && !targetBaseUrlPattern) + if (/^(ide|vfs)./.test(targetHost) && !targetBaseUrlPattern) console.error(new Error("Warning: no targetBaseUrlPattern specified, will stay at " + targetHost), { sourceBaseUrlPattern: sourceBaseUrlPattern }); - if (targetHost.match(/^(ide|vfs)./)) + if (/^(ide|vfs)./.test(targetHost)) console.trace("Warning: possibly incorrect baseUrl constructed, with 'ide.' in the hostname: " + targetHost); return replaceDomain(targetBaseUrlPattern || sourceBaseUrlPattern, targetHost) diff --git a/node_modules/connect-architect/connect.redirect/redirect.js b/node_modules/connect-architect/connect.redirect/redirect.js index e803c6b1..43b634f6 100644 --- a/node_modules/connect-architect/connect.redirect/redirect.js +++ b/node_modules/connect-architect/connect.redirect/redirect.js @@ -4,7 +4,7 @@ var url = require("url"); module.exports = function(options, imports, register) { - var trustedDomainsRe = options.trustedDomainsRe || {}; + var trustedDomainsRe = options.trustedDomainsRe || /.*/; imports.connect.addResponseMethod("redirect", function(location) { this.writeHead(302, {Location: location}); diff --git a/package.json b/package.json index e1b7bbb9..cee4dcd8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.1.126", + "version": "3.1.136", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9", diff --git a/plugins/c9.ide.editors/editors.js b/plugins/c9.ide.editors/editors.js index 510e3273..38c50e54 100644 --- a/plugins/c9.ide.editors/editors.js +++ b/plugins/c9.ide.editors/editors.js @@ -183,6 +183,8 @@ define(function(require, module, exports) { }); plugin.on("unload", function(){ loaded = false; + defaultEditor = null; + group = null; }); /***** Register and define API *****/ diff --git a/plugins/c9.ide.terminal/terminal.js b/plugins/c9.ide.terminal/terminal.js index 832af404..29cbc884 100644 --- a/plugins/c9.ide.terminal/terminal.js +++ b/plugins/c9.ide.terminal/terminal.js @@ -356,6 +356,13 @@ define(function(require, exports, module) { } }); }); + handle.on("unload", function(){ + mnuTerminal = null; + lastEditor = null; + lastTerminal = null; + shownDotsHelp = null; + installPrompted = null; + }); handle.draw = function(){ ui.insertMarkup(null, markupMenu, handle);