From e2267dfb28e477e7174f7f5eff8ea1ed09ca030d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alper=20=C3=96z=C4=B1=C5=9F=C4=B1k?= Date: Tue, 6 Sep 2016 00:24:24 +0300 Subject: [PATCH 01/38] Correct retina icons on a forked debugger plugin When a custom debugger plugin is used, order of the css compilation changes and causing wrong display on a forked debugger with retina display. Removing this important flag solves the issue. I have not seen any side effects of removing this important flag --- plugins/c9.ide.layout.classic/less/c9-menu-btn.less | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/c9.ide.layout.classic/less/c9-menu-btn.less b/plugins/c9.ide.layout.classic/less/c9-menu-btn.less index d677145b..598715e1 100644 --- a/plugins/c9.ide.layout.classic/less/c9-menu-btn.less +++ b/plugins/c9.ide.layout.classic/less/c9-menu-btn.less @@ -65,7 +65,7 @@ display: none; } -.c9-menu-btn.nosize .icon { background-size: auto !important; } +.c9-menu-btn.nosize .icon { background-size: auto; } .c9-menu-btn.preferences{ padding: @preference-menu-button-padding !important; @@ -116,4 +116,4 @@ .c9-menu-btn.c9btn.offline{ color: #d22a3f; text-shadow: 0 1px black; -} \ No newline at end of file +} From cf52ebf36a5c081f25a058149373889536272e28 Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Thu, 29 Sep 2016 21:46:48 +0000 Subject: [PATCH 02/38] Add ratelimits to collab --- node_modules/c9/ratelimit.js | 8 +++++++- node_modules/c9/ratelimit_test.js | 17 +++++++++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/node_modules/c9/ratelimit.js b/node_modules/c9/ratelimit.js index 2b4c4ef7..4cb15f81 100644 --- a/node_modules/c9/ratelimit.js +++ b/node_modules/c9/ratelimit.js @@ -30,8 +30,14 @@ function ratelimit(key, duration, max) { return true; } + function resolveValue(obj, path) { + return path.split('.').reduce(function(prev, curr) { + return prev ? prev[curr] : undefined; + }, obj); + } + return function(req, res, next) { - var handle = req.params[key]; + var handle = resolveValue(req.params, key); requests[handle] = requests[handle] || []; if (requests[handle].length >= max) { diff --git a/node_modules/c9/ratelimit_test.js b/node_modules/c9/ratelimit_test.js index fd674350..034e5751 100644 --- a/node_modules/c9/ratelimit_test.js +++ b/node_modules/c9/ratelimit_test.js @@ -31,7 +31,16 @@ describe("ratelimit", function() { }); }); - + it("Should work with deep keys", function (done) { + var limiter = ratelimit("user.id", 10, 1); + limiter({params: {user: {id: "hey"}}}, null, function (err) { + assert(!err, err); + limiter({params: {user: {id: "yay"}}}, null, function (err) { + assert(!err, err); + done(); + }); + }); + }); it("Should work again after a delay", function (done) { var limiter = ratelimit("username", 10, 1); @@ -73,13 +82,13 @@ describe("ratelimit", function() { function(next) { limiter({params: {username: "mario"}}, null, function(err) { assert(!err, err); - setTimeout(next, 25); + setTimeout(next, 40); }); }, function (next) { limiter({params: {username: "mario"}}, null, function(err) { assert(!err, err); - setTimeout(next, 40); + setTimeout(next, 45); }); }, function (next) { @@ -88,7 +97,7 @@ describe("ratelimit", function() { limiter({params: {username: "mario"}}, null, function(err) { assert(err); assert.equal(err.code, 429); - setTimeout(next, 20); + setTimeout(next, 40); }); }); }, From b7bae15ec273fc7d37116c45786240ea81cbf200 Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Fri, 30 Sep 2016 19:09:05 +0000 Subject: [PATCH 03/38] Adding md5 of collab users emails for gravatar pictures --- package.json | 2 +- plugins/c9.core/util.js | 9 ++++++++- plugins/c9.core/util_test.js | 10 ++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 2d8879fe..4b7571c4 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "c9.ide.language.javascript.infer": "#b9c2e4bdb8", "c9.ide.language.jsonalyzer": "#a0549e14ff", "c9.ide.language.codeintel": "#0fe92d6f46", - "c9.ide.collab": "#54aa1cbee0", + "c9.ide.collab": "#78c38d73d1", "c9.ide.local": "#9169fec157", "c9.ide.find": "#e632ecf4be", "c9.ide.find.infiles": "#ad9ff74638", diff --git a/plugins/c9.core/util.js b/plugins/c9.core/util.js index af2f4d63..dc50b101 100644 --- a/plugins/c9.core/util.js +++ b/plugins/c9.core/util.js @@ -196,12 +196,19 @@ define(function(require, exports, module) { return "<" + tag + " " + plugin.toXmlAttributes(attrs) + (noclose ? ">" : " />"); }; + function isMd5String(str) { + return /^[0-9a-f]{32}$/.test(str); + } + /** * Returns the gravatar url for this user * @param {Number} size the size of the image */ plugin.getGravatarUrl = function getGravatarUrl(email, size, defaultImage) { - var md5Email = apf.crypto.MD5.hex_md5((email || "").trim().toLowerCase()); + var md5Email = email + if (!isMd5String(md5Email)) { + md5Email = apf.crypto.MD5.hex_md5((email || "").trim().toLowerCase()); + } return "https://secure.gravatar.com/avatar/" + md5Email + "?s=" + size + "&d=" + (defaultImage || "retro"); }; diff --git a/plugins/c9.core/util_test.js b/plugins/c9.core/util_test.js index ef668547..57b4df7c 100644 --- a/plugins/c9.core/util_test.js +++ b/plugins/c9.core/util_test.js @@ -9,6 +9,7 @@ require(["lib/architect/architect", "lib/chai/chai"], function (architect, chai) expect.setupArchitectTest([ "plugins/c9.core/ext", "plugins/c9.core/util", + "plugins/c9.ide.ui/lib_apf", // Mock plugins { consumes: [], @@ -32,6 +33,15 @@ require(["lib/architect/architect", "lib/chai/chai"], function (architect, chai) }); }); + describe("getGravatarUrl", function() { + it("Should hash a normal email", function() { + expect(util.getGravatarUrl("test@test.com", 32)).to.match(/^https:\/\/secure.gravatar.com\/avatar\/b642b4217b34b1e8d3bd915fc65c4452.*/); + }); + it("Should use not re-hash an md5 passed in", function() { + expect(util.getGravatarUrl("b642b4217b34b1e8d3bd915fc65c4452", 32)).to.match(/^https:\/\/secure.gravatar.com\/avatar\/b642b4217b34b1e8d3bd915fc65c4452.*/); + }); + }); + describe('normalizePath', function() { var normalizePath = util.normalizePath; it('should handle home in workspaceDir', function() { From 681ead09854efc28a16e41f258befa7dd6414e4e Mon Sep 17 00:00:00 2001 From: Kareem Zidane Date: Sat, 1 Oct 2016 15:46:30 +0000 Subject: [PATCH 04/38] changes empty message for watch expressions --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b9da4b2d..334fec05 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ "c9.ide.find": "#e632ecf4be", "c9.ide.find.infiles": "#ad9ff74638", "c9.ide.find.replace": "#8468067976", - "c9.ide.run.debug": "#f10c7e7d19", + "c9.ide.run.debug": "#81d5d1d59c", "c9.automate": "#47e2c429c9", "c9.ide.ace.emmet": "#6dc4585e02", "c9.ide.ace.gotoline": "#d33220b1e0", From 49befd869927e9a6974135520276af375b80b576 Mon Sep 17 00:00:00 2001 From: Kareem Zidane Date: Sat, 1 Oct 2016 16:07:32 +0000 Subject: [PATCH 05/38] simplifies breakpoints warning --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b9da4b2d..51f81cbc 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ "c9.ide.find": "#e632ecf4be", "c9.ide.find.infiles": "#ad9ff74638", "c9.ide.find.replace": "#8468067976", - "c9.ide.run.debug": "#f10c7e7d19", + "c9.ide.run.debug": "#74579c031e", "c9.automate": "#47e2c429c9", "c9.ide.ace.emmet": "#6dc4585e02", "c9.ide.ace.gotoline": "#d33220b1e0", From 740ef7edf71ce6ddea3f7583c8b0b90b8ae26c24 Mon Sep 17 00:00:00 2001 From: nightwing Date: Mon, 26 Sep 2016 16:18:10 +0400 Subject: [PATCH 06/38] handle git conflict status in terminal hover_link --- plugins/c9.ide.terminal/aceterm/hover_link.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/c9.ide.terminal/aceterm/hover_link.js b/plugins/c9.ide.terminal/aceterm/hover_link.js index 2296476e..b46c5768 100644 --- a/plugins/c9.ide.terminal/aceterm/hover_link.js +++ b/plugins/c9.ide.terminal/aceterm/hover_link.js @@ -309,7 +309,7 @@ var HoverLink = function(editor) { else if (prompt.command === "git") { // git status var prefix = line.substr(0, match.start); if (match.start + value.length == line.length - && /^(#|[ MDR?A]{2})\s+([\w\s]+:\s+)?$/.test(prefix) + && /^(#|[ MDRU?A]{2})\s+([\w\s]+:\s+)?$/.test(prefix) ) { match.type = "path"; } else { From b7e2142d2a691e402fd95465a947df6705d44ec1 Mon Sep 17 00:00:00 2001 From: basdewachter Date: Tue, 4 Oct 2016 15:36:36 +0200 Subject: [PATCH 07/38] add missing test to sdk config --- plugins/c9.vfs.server/vfs.server_test.js | 122 +++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 plugins/c9.vfs.server/vfs.server_test.js diff --git a/plugins/c9.vfs.server/vfs.server_test.js b/plugins/c9.vfs.server/vfs.server_test.js new file mode 100644 index 00000000..492907e3 --- /dev/null +++ b/plugins/c9.vfs.server/vfs.server_test.js @@ -0,0 +1,122 @@ +#!/usr/bin/env node +"use strict"; +"use server"; + + +require("c9/inline-mocha")(module); +if (typeof define === "undefined") { + require("amd-loader"); +} + +var sinon = require("sinon"); +var assert = require("assert"); +var vfsServer = require("./vfs.server"); +var mockDb = {}; +var mockCache = { + remove: sinon.stub() +}; +var mockApi = { + section: sinon.stub().returns({ + registerType: sinon.stub(), + post: sinon.stub(), + get: sinon.stub(), + delete: sinon.stub(), + all: sinon.stub() + }), + use: sinon.stub(), + ensureAdmin: sinon.stub(), + get: sinon.stub(), + authenticate: sinon.stub() +}; +var mockRender = { + setTemplatePath: sinon.stub() +}; +var mockConnect = { + getModule: sinon.stub().returns({ + compress: sinon.stub() + }) +}; + +describe(__filename, function() { + var server; + beforeEach(function (done) { + vfsServer({testing: true}, { + "db": mockDb, + "vfs.cache": mockCache, + "api": mockApi, + "connect.render": mockRender, + "connect": mockConnect, + }, function (err, _server) { + if (err) return done(err); + server = _server["vfs.server"]; + done(); + }); + }); + + describe("handlePublish", function() { + beforeEach(function() { + mockCache.remove = sinon.stub(); + }); + + describe("remove_member", function() { + it("Should kill the removed members VFS connection", function (done) { + var vfs = { + id: "9c123", + uid: "123" + }; + var message = JSON.stringify({ + action: "remove_member", + body: { + uid: "123" + } + }); + server.handlePublish(vfs, message); + setTimeout(function() { + assert(mockCache.remove.calledWith(vfs.id)); + done(); + }, 150); + }); + + it("Should not kill the other members VFS connection", function (done) { + var vfs = { + id: "9c123", + uid: "456" + }; + var message = JSON.stringify({ + action: "remove_member", + body: { + uid: "123" + } + }); + server.handlePublish(vfs, message); + setTimeout(function() { + assert.equal(mockCache.remove.callCount, 0); + done(); + }, 150); + }); + }); + + describe("update_member_access", function() { + it("Should kill the members VFS connection so they rejoin with the new access level", function (done) { + var vfs = { + id: "9c123", + uid: "123" + }; + var message = JSON.stringify({ + action: "update_member_access", + body: { + uid: "123" + } + }); + server.handlePublish(vfs, message); + setTimeout(function() { + assert(mockCache.remove.calledWith(vfs.id)); + done(); + }, 150); + }); + }); + + }); + + +}); \ No newline at end of file From da1f958a704d22454bdc1cb55d0f9822fa999ecb Mon Sep 17 00:00:00 2001 From: c9jenkinsv3 Date: Tue, 4 Oct 2016 19:39:30 +0200 Subject: [PATCH 08/38] c9-auto-bump 3.1.3132 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2d8879fe..87c18931 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.1.3131", + "version": "3.1.3132", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9", From 5d7d4e3b3dab1d781a2b171cf2e75e75b02d483f Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Wed, 5 Oct 2016 00:39:38 +0000 Subject: [PATCH 09/38] git.js doesn't need amd-loader and it's causing a global variable leak which makes mocha tests fail --- node_modules/c9/git.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/node_modules/c9/git.js b/node_modules/c9/git.js index dea02285..6228914a 100644 --- a/node_modules/c9/git.js +++ b/node_modules/c9/git.js @@ -1,7 +1,5 @@ "use strict"; -require("amd-loader"); - var Fs = require("fs"); var Path = require("path"); var exec = require("child_process").exec; From 9335c281e7ccc52d6190326eceac9d0596bd94a8 Mon Sep 17 00:00:00 2001 From: c9jenkinsv3 Date: Wed, 5 Oct 2016 03:22:15 +0200 Subject: [PATCH 10/38] c9-auto-bump 3.1.3133 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 87c18931..606532bd 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.1.3132", + "version": "3.1.3133", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9", From f9b8230b0ddc11db3f0ca9fb24c312a0715a06b1 Mon Sep 17 00:00:00 2001 From: c9jenkinsv3 Date: Wed, 5 Oct 2016 09:42:06 +0200 Subject: [PATCH 11/38] c9-auto-bump 3.1.3134 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 606532bd..1da72f35 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.1.3133", + "version": "3.1.3134", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9", From a71b9fe9b6fd18e32efed47ac4c093cd36c5569a Mon Sep 17 00:00:00 2001 From: c9jenkinsv3 Date: Wed, 5 Oct 2016 11:09:53 +0200 Subject: [PATCH 12/38] c9-auto-bump 3.1.3135 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1da72f35..577bc91d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.1.3134", + "version": "3.1.3135", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9", From 0eca6606369e58cf3207f3647e10a763f13d2219 Mon Sep 17 00:00:00 2001 From: Lennart kats Date: Wed, 5 Oct 2016 09:38:20 +0000 Subject: [PATCH 13/38] Fix syntax error --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2d8879fe..7fd283df 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "c9" ], "c9plugins": { - "c9.ide.language": "#f55c832376", + "c9.ide.language": "#bc3c2bc36e", "c9.ide.language.core": "#bfb5dd2acc", "c9.ide.language.css": "#46ad561506", "c9.ide.language.generic": "#b47cbe58f9", From 795fbd108bcd157c9daed5f6806900acc5030092 Mon Sep 17 00:00:00 2001 From: Lennart kats Date: Wed, 5 Oct 2016 09:39:18 +0000 Subject: [PATCH 14/38] Update to latest c9/c9 .eslintrc --- .eslintrc | 101 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 52 insertions(+), 49 deletions(-) diff --git a/.eslintrc b/.eslintrc index 36d90769..7e2f4a9a 100644 --- a/.eslintrc +++ b/.eslintrc @@ -8,13 +8,18 @@ env: builtin: true mocha: true jasmine: false - es6: false + es6: true plugins: - react - + +extends: + - eslint:recommended + - plugin:react/recommended + rules: handle-callback-err: 1 + max-len: [1, 125, 4] no-debugger: 1 no-undef: 1 no-inner-declarations: [1, "functions"] @@ -22,60 +27,58 @@ rules: no-new-func: 1 no-new-wrappers: 1 no-cond-assign: [1, "except-parens"] - no-debugger: 3 - no-dupe-keys: 3 - no-eval: 3 + no-dupe-keys: 2 + no-eval: 2 + no-console: 0 no-func-assign: 1 no-invalid-regexp: 1 - no-irregular-whitespace: 3 + no-irregular-whitespace: 1 no-negated-in-lhs: 1 - no-regex-spaces: 3 + no-regex-spaces: 1 no-unreachable: 1 - use-isnan: 2 + use-isnan: 1 valid-typeof: 1 - no-redeclare: 3 + no-redeclare: 1 no-with: 1 - radix: 3 - no-delete-var: 2 - no-label-var: 3 - no-shadow-restricted-names: 2 - handle-callback-err: 1 - no-new-require: 2 - no-unused-vars: [3, {vars: "all", args: "none"}] - no-undef: 1 - semi: 3 - no-extra-semi: 3 + radix: 1 + no-delete-var: 1 + no-label-var: 2 + no-shadow-restricted-names: 1 + no-new-require: 1 + no-unused-vars: [1, {vars: "all", args: "none"}] + semi: 2 + no-extra-semi: 2 // React rules - display-name: [1, { acceptTranspilerName: true }] - jsx-curly-spacing: 1 - no-deprecated: [1, {react: "0.13.0"}] - no-did-mount-set-state: 1 - no-did-update-set-state: 1 - no-direct-mutation-state: 1 - no-is-mounted: 1 - no-unknown-property: 1 - prefer-es6-class: [1, "never"] - prop-types: 1 - react-in-jsx-scope: 1 - self-closing-comp: 1 - sort-comp: 1 - wrap-multilines: 1 - jsx-boolean-value: [1, "always"] - jsx-equals-spacing: 1 - jsx-indent-props: 1 - jsx-key: 1 - jsx-indent: 1 - jsx-max-props-per-line: [1, { maximum: 5 }] - jsx-no-bind: 1 - jsx-no-duplicate-props: 1 - jsx-no-undef: 1 - jsx-pascal-case: 1 - jsx-uses-react: 1 + react/jsx-curly-spacing: 1 + react/no-deprecated: 1 + react/no-did-mount-set-state: 1 + react/no-did-update-set-state: 1 + react/no-direct-mutation-state: 1 + react/no-is-mounted: 1 + react/no-unknown-property: 1 + react/prefer-es6-class: 1 + react/prop-types: 1 + react/react-in-jsx-scope: 1 + react/self-closing-comp: 1 + react/sort-comp: 1 + # This rule is not compatible with eslint < 3 + # react/jsx-wrap-multilines: 1 + react/jsx-boolean-value: [1, "always"] + react/jsx-equals-spacing: 1 + react/jsx-indent-props: 1 + react/jsx-key: 1 + react/jsx-indent: 1 + react/jsx-max-props-per-line: [1, { maximum: 5 }] + react/jsx-no-bind: 1 + react/jsx-no-duplicate-props: 1 + react/jsx-no-undef: 1 + react/jsx-pascal-case: 1 + react/jsx-uses-react: 1 - default-case: 3 - keyword-spacing: [1, {"before": true, "after": true, "overrides": { "catch": {"after": "maybe" } }}] + default-case: 1 + keyword-spacing: [1, {"before": true, "after": true, "overrides": { "catch": {"after": true } }}] space-in-parens: [1, "never"] - // space-before-function-paren: [3, {"named": "never", "anonymous": "never"}] - spaced-comment: 3 - // valid-jsdoc: [1, { requireReturn: false, requireParamDescription: false, prefer: { "return": "return" } }] + // space-before-function-paren: [2, {"named": "never", "anonymous": "never"}] + spaced-comment: 1 + // valid-jsdoc: [1, { requireReturn: false, requireParamDescription: false, prefer: { "return": "return" } }] \ No newline at end of file From e5ea48c9285a2cbbb4746f0da7bce285ebf0cba9 Mon Sep 17 00:00:00 2001 From: Lennart kats Date: Wed, 5 Oct 2016 09:40:46 +0000 Subject: [PATCH 15/38] Extend .eslintrc according to code conventions --- .eslintrc | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/.eslintrc b/.eslintrc index 7e2f4a9a..6042351a 100644 --- a/.eslintrc +++ b/.eslintrc @@ -19,7 +19,7 @@ extends: rules: handle-callback-err: 1 - max-len: [1, 125, 4] + max-len: [1, 140, 4, { ignorePattern: "\": " }] no-debugger: 1 no-undef: 1 no-inner-declarations: [1, "functions"] @@ -48,6 +48,13 @@ rules: no-unused-vars: [1, {vars: "all", args: "none"}] semi: 2 no-extra-semi: 2 + one-var: [1, "never"] + arrow-parens: 1 + no-confusing-arrow: 1 + camelcase: [1, { properties: "never" }] + id-blacklist: [1, "uname", "cb", "acct"] + default-case: 1 + eqeqeq: [1, "smart"] // React rules react/jsx-curly-spacing: 1 @@ -76,9 +83,21 @@ rules: react/jsx-pascal-case: 1 react/jsx-uses-react: 1 - default-case: 1 keyword-spacing: [1, {"before": true, "after": true, "overrides": { "catch": {"after": true } }}] + key-spacing: [1, { beforeColon: false, afterColon: true, mode: "strict" }] space-in-parens: [1, "never"] - // space-before-function-paren: [2, {"named": "never", "anonymous": "never"}] + space-infix-ops: [1] + arrow-spacing: 1 + generator-star-spacing: [1, {"before": false, "after": true}] + space-before-blocks: [1, "always"] + // TODO: after eslint update in IDE + // space-before-function-paren: [1, {"named": "never", "anonymous": "ignore"}] + // object-curly-newline: [1, { ObjectExpression: { "multiline": true }, "ObjectPattern": "never" }] + // DISABLED: causes issue with define(function() in client-side code + // indent: [1, 4, { SwitchCase: 1, outerIIFEBody: 0, MemberExpression: 1, FunctionDeclaration: { body: 0, parameters: 1 }, FunctionExpression: { body: 0, parameters: 1 } }] + object-curly-spacing: [1, "always", { objectsInObjects: false, arraysInObjects: false }] spaced-comment: 1 - // valid-jsdoc: [1, { requireReturn: false, requireParamDescription: false, prefer: { "return": "return" } }] \ No newline at end of file + comma-spacing: 1 + no-multi-spaces: 1 + no-lone-blocks: 1 + // valid-jsdoc: [1, { requireReturn: false, requireParamDescription: false, prefer: { "return": "return" } }] From 5200b58284877e368fcf5dd74c4a0a7d405bd5dd Mon Sep 17 00:00:00 2001 From: Lennart kats Date: Wed, 5 Oct 2016 09:44:10 +0000 Subject: [PATCH 16/38] Apply code conventions --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 7fd283df..4d7b99c2 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "c9" ], "c9plugins": { - "c9.ide.language": "#bc3c2bc36e", + "c9.ide.language": "#241bd6b7de", "c9.ide.language.core": "#bfb5dd2acc", "c9.ide.language.css": "#46ad561506", "c9.ide.language.generic": "#b47cbe58f9", @@ -66,7 +66,7 @@ "c9.ide.language.html.diff": "#7d6cecfb90", "c9.ide.language.javascript": "#a5c1d05394", "c9.ide.language.javascript.immediate": "#82c426dbca", - "c9.ide.language.javascript.eslint": "#cb9e3f5a8e", + "c9.ide.language.javascript.eslint": "#1bdffa204a", "c9.ide.language.javascript.tern": "#0545a6385d", "c9.ide.language.javascript.infer": "#b9c2e4bdb8", "c9.ide.language.jsonalyzer": "#a0549e14ff", From dc344e7518425e1e8176a954085a61755d0e5a26 Mon Sep 17 00:00:00 2001 From: Lennart kats Date: Wed, 5 Oct 2016 09:44:29 +0000 Subject: [PATCH 17/38] Tweak severity shown in IDE We used to be able to specify severity "3" in .eslintrc for these, but the new eslint no longer allows this :( --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4d7b99c2..07dd655b 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "c9.ide.language.html.diff": "#7d6cecfb90", "c9.ide.language.javascript": "#a5c1d05394", "c9.ide.language.javascript.immediate": "#82c426dbca", - "c9.ide.language.javascript.eslint": "#1bdffa204a", + "c9.ide.language.javascript.eslint": "#66c856d7ce", "c9.ide.language.javascript.tern": "#0545a6385d", "c9.ide.language.javascript.infer": "#b9c2e4bdb8", "c9.ide.language.jsonalyzer": "#a0549e14ff", From 30cf22dde99b99d3122b89ca3d29a8f8410cde0b Mon Sep 17 00:00:00 2001 From: c9jenkinsv3 Date: Wed, 5 Oct 2016 14:11:21 +0200 Subject: [PATCH 18/38] c9-auto-bump 3.1.3136 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 577bc91d..ee29dc57 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.1.3135", + "version": "3.1.3136", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9", From 1900546da812831b9fc0b667e720c66033c4ded1 Mon Sep 17 00:00:00 2001 From: c9jenkinsv3 Date: Wed, 5 Oct 2016 19:09:41 +0200 Subject: [PATCH 19/38] c9-auto-bump 3.1.3137 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ee29dc57..efe9fe15 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.1.3136", + "version": "3.1.3137", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9", From 82a6745a68dbc144936022506a792707b80db117 Mon Sep 17 00:00:00 2001 From: c9jenkinsv3 Date: Wed, 5 Oct 2016 19:11:45 +0200 Subject: [PATCH 20/38] c9-auto-bump 3.1.3138 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index efe9fe15..f7f2b785 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.1.3137", + "version": "3.1.3138", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9", From a74c8c049d9cceace37cf8684314864b336a0190 Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Wed, 5 Oct 2016 20:41:45 +0000 Subject: [PATCH 21/38] Also return hashed email from collab-server --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4b7571c4..f8983367 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "c9.ide.language.javascript.infer": "#b9c2e4bdb8", "c9.ide.language.jsonalyzer": "#a0549e14ff", "c9.ide.language.codeintel": "#0fe92d6f46", - "c9.ide.collab": "#78c38d73d1", + "c9.ide.collab": "#f60595d380", "c9.ide.local": "#9169fec157", "c9.ide.find": "#e632ecf4be", "c9.ide.find.infiles": "#ad9ff74638", From c304afef718018e2b428616a559ccc6caf7bc35a Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Wed, 5 Oct 2016 21:09:00 +0000 Subject: [PATCH 22/38] Add description to function. Use sinion clock for test --- node_modules/c9/ratelimit.js | 1 + node_modules/c9/ratelimit_test.js | 53 +++++++++++++------------------ 2 files changed, 23 insertions(+), 31 deletions(-) diff --git a/node_modules/c9/ratelimit.js b/node_modules/c9/ratelimit.js index 4cb15f81..1b045036 100644 --- a/node_modules/c9/ratelimit.js +++ b/node_modules/c9/ratelimit.js @@ -30,6 +30,7 @@ function ratelimit(key, duration, max) { return true; } + // Returns a deep value from an object. E.g. resolveValue({user: {id: 5}}, "user.id") === 5 function resolveValue(obj, path) { return path.split('.').reduce(function(prev, curr) { return prev ? prev[curr] : undefined; diff --git a/node_modules/c9/ratelimit_test.js b/node_modules/c9/ratelimit_test.js index 034e5751..7cff5de9 100644 --- a/node_modules/c9/ratelimit_test.js +++ b/node_modules/c9/ratelimit_test.js @@ -5,6 +5,7 @@ require("c9/inline-mocha")(module); var ratelimit = require("./ratelimit"); var assert = require("assert"); var async = require("async"); +var sinon = require("sinon"); describe("ratelimit", function() { @@ -77,37 +78,27 @@ describe("ratelimit", function() { }); it("Should expire keys at the correct times", function (done) { + var clock = sinon.useFakeTimers(); var limiter = ratelimit("username", 50, 2); - async.series([ - function(next) { - limiter({params: {username: "mario"}}, null, function(err) { - assert(!err, err); - setTimeout(next, 40); - }); - }, - function (next) { - limiter({params: {username: "mario"}}, null, function(err) { - assert(!err, err); - setTimeout(next, 45); - }); - }, - function (next) { - limiter({params: {username: "mario"}}, null, function(err) { - assert(!err, err); - limiter({params: {username: "mario"}}, null, function(err) { - assert(err); - assert.equal(err.code, 429); - setTimeout(next, 40); - }); - }); - }, - function (next) { - limiter({params: {username: "mario"}}, null, function(err) { - assert(!err, err); - next(); - }); - } - ], done); + limiter({params: {username: "mario"}}, null, function(err){ + assert(!err, err); + }); + clock.tick(40); + limiter({params: {username: "mario"}}, null, function(err){ + assert(!err, err); + }); + clock.tick(45); + limiter({params: {username: "mario"}}, null, function(err){ + assert(!err, err); + }); + limiter({params: {username: "mario"}}, null, function(err){ + assert(err); + assert.equal(err.code, 429); + }); + clock.tick(40); + limiter({params: {username: "mario"}}, null, function(err){ + assert(!err, err); + }); + done(); }); - }); \ No newline at end of file From f090597c0d227acae90ca12b652ef1a2a6af5db2 Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Wed, 5 Oct 2016 21:58:38 +0000 Subject: [PATCH 23/38] Delete old urls_test --- node_modules/c9/urls_test.js | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/node_modules/c9/urls_test.js b/node_modules/c9/urls_test.js index fe9dd2f5..cabb9a83 100644 --- a/node_modules/c9/urls_test.js +++ b/node_modules/c9/urls_test.js @@ -51,14 +51,6 @@ describe("urls", function() { assert.equal(settings.ide.baseUrlPattern, "https://ide.$DOMAIN"); }); - it("behaves like an architect plugin", function(next) { - urls({}, { "error.logger": urls.mockErrorLogger }, function(err, result) { - assert(!err, err); - assert(result.urls.getBaseUrl); - next(); - }); - }); - it("can get the base url for a request", function() { var mockRequest = { host: "preview.c9.io" @@ -87,10 +79,8 @@ describe("urls", function() { var mockRequest = { host: "preview.cloud9beta.com" }; - urls.mockErrorLogger.log = sinon.spy(); var baseUrl = urls.getBaseUrl(mockRequest, "https://ide.$DOMAIN", "https://$DOMAIN"); assert.equal(baseUrl, "https://c9.io"); - assert(urls.mockErrorLogger.log.called); }); it("can get the base url in dogfooding mode", function() { From a5e116697c23c8ade368cfe60d6a297e4689c14d Mon Sep 17 00:00:00 2001 From: c9jenkinsv3 Date: Thu, 6 Oct 2016 00:05:41 +0200 Subject: [PATCH 24/38] c9-auto-bump 3.1.3139 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f7f2b785..7d6ebfc2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.1.3138", + "version": "3.1.3139", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9", From 4403f53f21627da21a9656306af56a04c24de676 Mon Sep 17 00:00:00 2001 From: c9jenkinsv3 Date: Thu, 6 Oct 2016 02:09:15 +0200 Subject: [PATCH 25/38] c9-auto-bump 3.1.3140 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e240056c..69b2e446 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.1.3139", + "version": "3.1.3140", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9", From a4951f6a5e54525456a3c125972fbcb4ef4b3f24 Mon Sep 17 00:00:00 2001 From: c9jenkinsv3 Date: Thu, 6 Oct 2016 09:22:29 +0200 Subject: [PATCH 26/38] c9-auto-bump 3.1.3141 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 69b2e446..0895f199 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.1.3140", + "version": "3.1.3141", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9", From 712ca3e8a7708feafec2290f8ece436aece1402c Mon Sep 17 00:00:00 2001 From: c9jenkinsv3 Date: Thu, 6 Oct 2016 11:00:15 +0200 Subject: [PATCH 27/38] c9-auto-bump 3.1.3142 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0895f199..1a6e0baf 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.1.3141", + "version": "3.1.3142", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9", From 8b85bfead0e8dcbdbcee009120132b7abeb039db Mon Sep 17 00:00:00 2001 From: c9jenkinsv3 Date: Thu, 6 Oct 2016 13:53:24 +0200 Subject: [PATCH 28/38] c9-auto-bump 3.1.3143 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 40138ca0..c845102d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.1.3142", + "version": "3.1.3143", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9", From 6392e06f846fefbea93c35810a5510d5565c51e7 Mon Sep 17 00:00:00 2001 From: "Lennart C. L. Kats" Date: Thu, 6 Oct 2016 15:16:57 +0200 Subject: [PATCH 29/38] Fix error severity --- .eslintrc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.eslintrc b/.eslintrc index 6042351a..0837f9d3 100644 --- a/.eslintrc +++ b/.eslintrc @@ -27,8 +27,8 @@ rules: no-new-func: 1 no-new-wrappers: 1 no-cond-assign: [1, "except-parens"] - no-dupe-keys: 2 - no-eval: 2 + no-dupe-keys: 1 + no-eval: 1 no-console: 0 no-func-assign: 1 no-invalid-regexp: 1 @@ -42,12 +42,12 @@ rules: no-with: 1 radix: 1 no-delete-var: 1 - no-label-var: 2 + no-label-var: 1 no-shadow-restricted-names: 1 no-new-require: 1 no-unused-vars: [1, {vars: "all", args: "none"}] - semi: 2 - no-extra-semi: 2 + semi: 1 + no-extra-semi: 1 one-var: [1, "never"] arrow-parens: 1 no-confusing-arrow: 1 From b27e6952738b8d6b74c59dfb61590c21e111e7b9 Mon Sep 17 00:00:00 2001 From: c9jenkinsv3 Date: Thu, 6 Oct 2016 15:18:36 +0200 Subject: [PATCH 30/38] c9-auto-bump 3.1.3144 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index dad9cb49..18f63324 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.1.3143", + "version": "3.1.3144", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9", From 582013408a9801898d5c3107219a1f1e52ccabd5 Mon Sep 17 00:00:00 2001 From: c9jenkinsv3 Date: Thu, 6 Oct 2016 16:26:34 +0200 Subject: [PATCH 31/38] c9-auto-bump 3.1.3145 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 18f63324..ccae5d1d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.1.3144", + "version": "3.1.3145", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9", From 0c5a9b4ee197d9952292f1bf2f0f822f0eddf0de Mon Sep 17 00:00:00 2001 From: c9jenkinsv3 Date: Thu, 6 Oct 2016 16:32:12 +0200 Subject: [PATCH 32/38] c9-auto-bump 3.1.3146 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ccae5d1d..e40a467f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.1.3145", + "version": "3.1.3146", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9", From af9b5a9047f188c001825275302b0a5944e41a7a Mon Sep 17 00:00:00 2001 From: c9jenkinsv3 Date: Thu, 6 Oct 2016 17:03:39 +0200 Subject: [PATCH 33/38] c9-auto-bump 3.1.3147 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e40a467f..03022ee0 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.1.3146", + "version": "3.1.3147", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9", From 7c2e350aff79df162bbf7c0f4fb263aaa4310250 Mon Sep 17 00:00:00 2001 From: c9jenkinsv3 Date: Thu, 6 Oct 2016 17:08:30 +0200 Subject: [PATCH 34/38] c9-auto-bump 3.1.3148 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 03022ee0..d8d266b2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.1.3147", + "version": "3.1.3148", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9", From 08484895576bc58eae65e5411a1f2bbd994ee143 Mon Sep 17 00:00:00 2001 From: c9jenkinsv3 Date: Thu, 6 Oct 2016 18:01:46 +0200 Subject: [PATCH 35/38] c9-auto-bump 3.1.3149 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d8d266b2..e66ded68 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.1.3148", + "version": "3.1.3149", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9", From 487f931db68ca5f9cdd27f02d872504138bc5e89 Mon Sep 17 00:00:00 2001 From: c9jenkinsv3 Date: Thu, 6 Oct 2016 18:14:05 +0200 Subject: [PATCH 36/38] c9-auto-bump 3.1.3150 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e66ded68..0ace24fb 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.1.3149", + "version": "3.1.3150", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9", From dc78dd82d34b309767daeea66c884165edd45ceb Mon Sep 17 00:00:00 2001 From: c9jenkinsv3 Date: Thu, 6 Oct 2016 22:22:10 +0200 Subject: [PATCH 37/38] c9-auto-bump 3.1.3151 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0ace24fb..f1399b0d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.1.3150", + "version": "3.1.3151", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9", From bb71844133e0952059c5c574d032c3c6e34b4b1c Mon Sep 17 00:00:00 2001 From: c9jenkinsv3 Date: Thu, 6 Oct 2016 23:46:19 +0200 Subject: [PATCH 38/38] c9-auto-bump 3.1.3152 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f1399b0d..af5fd707 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.1.3151", + "version": "3.1.3152", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9",