mumuki-laboratory 7.7.6 → 7.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +13 -3
  3. data/Rakefile +7 -1
  4. data/app/assets/javascripts/mumuki_laboratory/application/alias-modes.js +1 -1
  5. data/app/assets/javascripts/mumuki_laboratory/application/bridge.js +66 -57
  6. data/app/assets/javascripts/mumuki_laboratory/application/codemirror-builder.js +28 -25
  7. data/app/assets/javascripts/mumuki_laboratory/application/codemirror.js +8 -10
  8. data/app/assets/javascripts/mumuki_laboratory/application/confirmation.js +2 -2
  9. data/app/assets/javascripts/mumuki_laboratory/application/console.js +41 -43
  10. data/app/assets/javascripts/mumuki_laboratory/application/csrf-token.js +9 -12
  11. data/app/assets/javascripts/mumuki_laboratory/application/custom-editor.js +11 -15
  12. data/app/assets/javascripts/mumuki_laboratory/application/discussions.js +1 -3
  13. data/app/assets/javascripts/mumuki_laboratory/application/editors.js +104 -0
  14. data/app/assets/javascripts/mumuki_laboratory/application/elipsis.js +5 -4
  15. data/app/assets/javascripts/mumuki_laboratory/application/exercise.js +32 -0
  16. data/app/assets/javascripts/mumuki_laboratory/application/inputs.js +4 -2
  17. data/app/assets/javascripts/mumuki_laboratory/application/interval.js +2 -4
  18. data/app/assets/javascripts/mumuki_laboratory/application/kids.js +1 -1
  19. data/app/assets/javascripts/mumuki_laboratory/application/load-analytics.js +1 -1
  20. data/app/assets/javascripts/mumuki_laboratory/application/load-error-svg.js +1 -1
  21. data/app/assets/javascripts/mumuki_laboratory/application/messages.js +2 -2
  22. data/app/assets/javascripts/mumuki_laboratory/application/multiple-choice.js +1 -1
  23. data/app/assets/javascripts/mumuki_laboratory/application/multiple-scenarios.js +3 -6
  24. data/app/assets/javascripts/mumuki_laboratory/application/pin.js +3 -5
  25. data/app/assets/javascripts/mumuki_laboratory/application/progress.js +24 -6
  26. data/app/assets/javascripts/mumuki_laboratory/application/results-renderer.js +20 -11
  27. data/app/assets/javascripts/mumuki_laboratory/application/speech-bubble-renderer.js +12 -5
  28. data/app/assets/javascripts/mumuki_laboratory/application/submission.js +19 -101
  29. data/app/assets/javascripts/mumuki_laboratory/application/submissions-store.js +93 -0
  30. data/app/assets/javascripts/mumuki_laboratory/application/sync-mode.js +75 -0
  31. data/app/assets/javascripts/mumuki_laboratory/application/timer.js +5 -6
  32. data/app/assets/javascripts/mumuki_laboratory/application/tooltip.js +1 -1
  33. data/app/assets/javascripts/mumuki_laboratory/application/upload.js +1 -1
  34. data/app/assets/javascripts/mumuki_laboratory/application/user.js +1 -1
  35. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_gs-board.scss +3 -0
  36. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_kids.scss +0 -1
  37. data/app/controllers/application_controller.rb +1 -0
  38. data/app/helpers/{locale_helper.rb → globals_helper.rb} +6 -2
  39. data/app/mailers/user_mailer.rb +24 -11
  40. data/app/views/book/show.html.erb +1 -1
  41. data/app/views/exercises/show.html.erb +2 -0
  42. data/app/views/layouts/_main.html.erb +1 -2
  43. data/app/views/layouts/_progress.html.erb +1 -1
  44. data/app/views/layouts/_progress_bar.html.erb +7 -1
  45. data/app/views/layouts/application.html.erb +1 -1
  46. data/lib/mumuki/laboratory/controllers.rb +1 -0
  47. data/lib/mumuki/laboratory/controllers/incognito_mode.rb +28 -0
  48. data/lib/mumuki/laboratory/locales/en.yml +6 -4
  49. data/lib/mumuki/laboratory/locales/es.yml +6 -4
  50. data/lib/mumuki/laboratory/locales/pt.yml +4 -2
  51. data/lib/mumuki/laboratory/version.rb +1 -1
  52. data/spec/dummy/db/schema.rb +2 -1
  53. data/spec/features/chapter_spec.rb +17 -0
  54. data/spec/features/exercise_flow_spec.rb +47 -2
  55. data/spec/features/home_public_flow_spec.rb +16 -0
  56. data/spec/javascripts/editors-spec.js +54 -0
  57. data/spec/javascripts/exercise-spec.js +22 -0
  58. data/spec/javascripts/global-spec.js +6 -0
  59. data/spec/javascripts/spec-helper.js +4 -0
  60. data/spec/javascripts/submissions-store-spec.js +44 -0
  61. data/spec/javascripts/sync-mode-spec.js +15 -0
  62. data/spec/mailers/user_mailer_spec.rb +18 -3
  63. data/spec/teaspoon_env.rb +8 -2
  64. data/vendor/assets/javascripts/codemirror-modes/gobstones.js +2 -3
  65. metadata +19 -5
  66. data/app/helpers/version_helper.rb +0 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dc2cca6d653df2fae416fe08b024233740722905d893c4db895ce3b4b5a7e32a
4
- data.tar.gz: 3e4f5adf6ec0d5f61f852c323425e7fb5502882f3ea74f4c0c095f885a015146
3
+ metadata.gz: cf3186d3e4ad3367ccf34396dfde31138bb255456b8cf5e5593a76e908545434
4
+ data.tar.gz: 7e3aa354499be05940fe21355f7e4a45ae933dab0a989cd8db99b48e564c8f12
5
5
  SHA512:
6
- metadata.gz: 0a0475afc78c86323f8bc78763294f05184c46a38ff00b530b1962c85880258b2b99cc17732ee94324cff4e144cc1e4680f91a1803aea5aa2bca3d95abf02f66
7
- data.tar.gz: c670a11910815b05d1445fc0fee8d9c5c2f1b1146b052ffa41fe005e5cd7fb1f249203bcf02f3f26a1bd898b89b015aeaab03617cc455f971386ba69c8ce6595
6
+ metadata.gz: e91791ad61d5843960950276383f74330b0eec046f475400c21fdb89af80f044fa3902a7a86e82d1dc3e130f30716c62e23d79f5ea87c8416c9140e550414819
7
+ data.tar.gz: 528f209da31776d4c01be41b92c2218bcbb6dc98175809a05062c3b077e1dc0ca8951b034e44a9a0f3cca93bbba371fd0f14da18bb56e15fac9ddb3b2e211455
data/README.md CHANGED
@@ -141,7 +141,13 @@ bundle exec rspec
141
141
  > it and add it to your path
142
142
 
143
143
  ```bash
144
- bundle exec rake teaspoon
144
+ MOZ_HEADLESS=1 bundle exec rake teaspoon
145
+ ```
146
+
147
+ ## Running `eslint`
148
+
149
+ ```bash
150
+ yarn run lint
145
151
  ```
146
152
 
147
153
  ## JavaScript API Docs
@@ -208,6 +214,10 @@ which are granted to be safe and stable.
208
214
  * `SpeechBubbleRenderer`
209
215
  * `renderSpeechBubbleResultItem`
210
216
  * `mumuki.locale`
217
+ * `mumuki.exercise`
218
+ * `id`: the `id` of the currently loaded exercise, if any
219
+ * `layout`: the `layout` of the currently loaded exercise, if any
220
+ * `mumuki.incognitoUser`: whether the current user is an incognito user
211
221
  * `mumuki.MultipleScenarios`
212
222
  * `scenarios`
213
223
  * `currentScenarioIndex`
@@ -369,14 +379,14 @@ contents. There are two different approaches:
369
379
 
370
380
  ```javascript
371
381
  // simplest method - you can register just one
372
- mumuki.submission.registerContentSyncer(() => {
382
+ mumuki.editors.registerContentSyncer(() => {
373
383
  // ... write here your custom component content...
374
384
  $('#mu-custom-editor-value').val(/* ... */);
375
385
  });
376
386
 
377
387
  // alternate method
378
388
  // you can register many sources
379
- mumuki.CustomEditor.addSource({
389
+ mumuki.editors.addCustomSource({
380
390
  getContent() {
381
391
  return { name: "solution[content]", value: /* ... */ } ;
382
392
  }
data/Rakefile CHANGED
@@ -27,8 +27,14 @@ require 'rspec/core/rake_task'
27
27
  desc "Run all specs in spec directory (excluding plugin specs)"
28
28
  RSpec::Core::RakeTask.new(:spec => 'app:db:test:prepare')
29
29
 
30
+ desc "Force development environment, required by javascript specs"
31
+ task :development do
32
+ ENV['RACK_ENV'] = 'development'
33
+ ENV['RAILS_ENV'] = 'development'
34
+ end
35
+
30
36
  desc "Run the javascript specs"
31
- task :teaspoon => "app:teaspoon"
37
+ task teaspoon: [:development, "app:teaspoon"]
32
38
 
33
39
  task default: :spec
34
40
 
@@ -1,4 +1,4 @@
1
- mumuki.load(function () {
1
+ mumuki.load(() => {
2
2
 
3
3
  function CodeMirrorAlias(alias, current) {
4
4
  CodeMirror.defineMIME(alias, CodeMirror.mimeModes[current]);
@@ -1,60 +1,41 @@
1
1
  /**
2
- * @typedef {{status: string, test_results: [{status: string, title: string}]}} ClientResult
2
+ * @typedef {"errored"|"failed"|"passed_with_warnings"|"passed"|"pending"|"aborted"} SubmissionStatus
3
3
  */
4
4
 
5
5
  /**
6
- * @typedef {{solution: object, client_result?: ClientResult}} Submission
6
+ * @typedef {{
7
+ * status: SubmissionStatus,
8
+ * test_results: [{status: SubmissionStatus, title: string}]
9
+ * }} SubmissionClientResult
7
10
  */
8
11
 
9
- var mumuki = mumuki || {};
10
-
11
- (function (mumuki) {
12
- var lastSubmission = {};
13
-
14
- function Laboratory(exerciseId){
15
- this.exerciseId = exerciseId;
16
- }
17
-
18
- function asString(json){
19
- return JSON.stringify(json);
20
- }
21
-
22
- function sameAsLastSolution(newSolution){
23
- return asString(lastSubmission.content) === asString(newSolution);
24
- }
25
-
26
- function lastSubmissionFinishedSuccessfully(){
27
- return lastSubmission.result && lastSubmission.result.status !== 'aborted';
28
- }
29
-
30
- function sendNewSolution(submission){
31
- var token = new mumuki.CsrfToken();
32
- var request = token.newRequest({
33
- type: 'POST',
34
- url: window.location.origin + window.location.pathname + '/solutions' + window.location.search,
35
- data: submission
36
- });
37
-
38
- return $.ajax(request).then(preRenderResult).done(function (result) {
39
- lastSubmission = { content: {solution: submission.solution}, result: result };
40
- });
41
- }
12
+ /**
13
+ * @typedef {{
14
+ * status: SubmissionStatus,
15
+ * class_for_progress_list_item?: string,
16
+ * guide_finished_by_solution?: boolean
17
+ * }} SubmissionResult
18
+ */
42
19
 
20
+ /**
21
+ * @typedef {object} Solution
22
+ */
43
23
 
44
- /**
45
- * Pre-renders some html parts of submission UI
46
- * */
47
- function preRenderResult(result) {
48
- result.class_for_progress_list_item = mumuki.renderers.progressListItemClassForStatus(result.status, true)
49
- return result;
50
- }
24
+ /**
25
+ * @typedef {{
26
+ * "solution[content]"?:string,
27
+ * solution?: Solution,
28
+ * client_result?: SubmissionClientResult
29
+ * }} Submission
30
+ */
51
31
 
52
- mumuki.load(function () {
53
- lastSubmission = {};
54
- });
32
+ /**
33
+ * @typedef {{submission?: Submission, result?: SubmissionResult}} SubmissionAndResult
34
+ */
55
35
 
56
- Laboratory.prototype = {
36
+ mumuki.bridge = (() => {
57
37
 
38
+ class Laboratory {
58
39
  // ==========
59
40
  // Public API
60
41
  // ==========
@@ -65,9 +46,9 @@ var mumuki = mumuki || {};
65
46
  *
66
47
  * @param {object} content the content object
67
48
  * */
68
- runTests: function(content) {
49
+ runTests(content) {
69
50
  return this._submitSolution({ solution: content });
70
- },
51
+ }
71
52
 
72
53
  // ===========
73
54
  // Private API
@@ -77,18 +58,46 @@ var mumuki = mumuki || {};
77
58
  * Sends a solution object
78
59
  *
79
60
  * @param {Submission} submission the submission object
61
+ * @returns {JQuery.Promise<SubmissionResult>}
80
62
  */
81
- _submitSolution: function (submission) {
82
- if(lastSubmissionFinishedSuccessfully() && sameAsLastSolution(submission)){
83
- return $.Deferred().resolve(lastSubmission.result);
63
+ _submitSolution(submission) {
64
+ const lastSubmission = mumuki.SubmissionsStore.getSubmissionResultFor(mumuki.exercise.id, submission);
65
+ if (lastSubmission) {
66
+ return $.Deferred().resolve(lastSubmission);
84
67
  } else {
85
- return sendNewSolution(submission);
68
+ return this._sendNewSolution(submission).done((result) => {
69
+ mumuki.SubmissionsStore.setSubmissionResultFor(mumuki.exercise.id, {submission, result});
70
+ });
86
71
  }
87
72
  }
88
- };
89
73
 
90
- mumuki.bridge = {
91
- Laboratory: Laboratory
92
- };
74
+ /**
75
+ * @param {Submission} submission the submission object
76
+ * @returns {JQuery.Promise<SubmissionResult>}
77
+ */
78
+ _sendNewSolution(submission){
79
+ var token = new mumuki.CsrfToken();
80
+ var request = token.newRequest({
81
+ type: 'POST',
82
+ url: window.location.origin + window.location.pathname + '/solutions' + window.location.search,
83
+ data: submission
84
+ });
85
+ return $.ajax(request).then((result) => this._preRenderResult(result));
86
+ }
87
+
88
+ /**
89
+ * Pre-renders some html parts of submission UI, adding them to the given result
90
+ *
91
+ * @param {SubmissionResult} result
92
+ * @returns {SubmissionResult}
93
+ */
94
+ _preRenderResult(result) {
95
+ result.class_for_progress_list_item = mumuki.renderers.progressListItemClassForStatus(result.status, true)
96
+ return result;
97
+ }
98
+ }
93
99
 
94
- }(mumuki));
100
+ return {
101
+ Laboratory
102
+ };
103
+ })();
@@ -1,12 +1,4 @@
1
- var mumuki = mumuki || {};
2
-
3
- (function (mumuki) {
4
-
5
- function CodeMirrorBuilder(textarea) {
6
- this.textarea = textarea;
7
- this.$textarea = $(textarea);
8
- }
9
-
1
+ (() => {
10
2
  function submit() {
11
3
  $('body').removeClass('fullscreen');
12
4
  $('.editor-resize .fa-stack-1x').removeClass('fa-compress').addClass('fa-expand');
@@ -29,8 +21,13 @@ var mumuki = mumuki || {};
29
21
  autoRefresh: true
30
22
  };
31
23
 
32
- CodeMirrorBuilder.prototype = {
33
- setupEditor: function () {
24
+ class CodeMirrorBuilder {
25
+ constructor(textarea) {
26
+ this.textarea = textarea;
27
+ this.$textarea = $(textarea);
28
+ }
29
+
30
+ setupEditor() {
34
31
  this.editor = this.createEditor({
35
32
  lineNumbers: true,
36
33
  extraKeys: {
@@ -47,8 +44,9 @@ var mumuki = mumuki || {};
47
44
  });
48
45
 
49
46
  return this;
50
- },
51
- setupSimpleEditor: function () {
47
+ }
48
+
49
+ setupSimpleEditor() {
52
50
  this.editor = this.createEditor({
53
51
  mode: 'text',
54
52
  extraKeys: {
@@ -61,8 +59,9 @@ var mumuki = mumuki || {};
61
59
  });
62
60
 
63
61
  return this;
64
- },
65
- setupReadOnlyEditor: function () {
62
+ }
63
+
64
+ setupReadOnlyEditor() {
66
65
  this.editor = this.createEditor({
67
66
  readOnly: true,
68
67
  cursorBlinkRate: -1, //Hides the cursor
@@ -70,8 +69,9 @@ var mumuki = mumuki || {};
70
69
  });
71
70
 
72
71
  return this;
73
- },
74
- setupLanguage: function (language) {
72
+ }
73
+
74
+ setupLanguage(language) {
75
75
  var highlightMode = language || this.$textarea.data('editor-language');
76
76
  if (highlightMode === 'dynamic') {
77
77
  mumuki.page.dynamicEditors.push(this.editor);
@@ -81,20 +81,23 @@ var mumuki = mumuki || {};
81
81
  }
82
82
 
83
83
  return this;
84
- },
85
- setupMinLines: function (minLines) {
84
+ }
85
+
86
+ setupMinLines(minLines) {
86
87
  this.editor.setOption('minLines', minLines);
87
88
 
88
89
  return this;
89
- },
90
- build: function () {
90
+ }
91
+
92
+ build() {
91
93
  return this.editor;
92
- },
93
- createEditor: function (customOptions) {
94
+ }
95
+
96
+ createEditor(customOptions) {
94
97
  return CodeMirror.fromTextArea(this.textarea, Object.assign({}, codeMirrorDefaults, customOptions));
95
98
  }
96
- };
99
+ }
97
100
 
98
101
  mumuki.editor = mumuki.editor || {};
99
102
  mumuki.editor.CodeMirrorBuilder = CodeMirrorBuilder;
100
- }(mumuki));
103
+ })();
@@ -1,6 +1,9 @@
1
- var mumuki = mumuki || {};
1
+ mumuki.editor = mumuki.editor || {};
2
+ mumuki.page = mumuki.page || {};
3
+ mumuki.page.dynamicEditors = [];
4
+ mumuki.page.editors = [];
2
5
 
3
- (function (mumuki) {
6
+ (() => {
4
7
  function createCodeMirrors() {
5
8
  return $(".editor").map(function (index, textarea) {
6
9
  var $textarea = $("#solution_content");
@@ -68,21 +71,16 @@ var mumuki = mumuki || {};
68
71
  });
69
72
  }
70
73
 
71
- mumuki.editor = mumuki.editor || {};
72
74
  mumuki.editor.reset = resetEditor;
73
75
  mumuki.editor.toggleFullscreen = toggleFullscreen;
74
76
  mumuki.editor.formatContent = formatContent;
75
77
  mumuki.editor.indentWithSpaces = indentWithSpaces;
76
78
  mumuki.editor.syncContent = syncContent;
77
79
 
78
- mumuki.page = mumuki.page || {};
79
- mumuki.page.dynamicEditors = [];
80
- mumuki.page.editors = [];
81
80
 
82
-
83
- mumuki.load(function () {
81
+ mumuki.load(() => {
84
82
  mumuki.page.editors = createCodeMirrors();
85
- mumuki.submission.registerContentSyncer(mumuki.editor.syncContent);
83
+ mumuki.editors.registerContentSyncer(mumuki.editor.syncContent);
86
84
  updateCodeMirrorLanguage();
87
85
  onSelectUpdateCodeMirror();
88
86
 
@@ -101,4 +99,4 @@ var mumuki = mumuki || {};
101
99
  });
102
100
  });
103
101
 
104
- }(mumuki));
102
+ })();
@@ -1,5 +1,5 @@
1
- mumuki.load(function () {
2
- $('.btn-confirmation').on('click change', function (evt) {
1
+ mumuki.load(() => {
2
+ $('.btn-confirmation').on('click change', function (_evt) {
3
3
  var token = new mumuki.CsrfToken();
4
4
 
5
5
  $.ajax(token.newRequest({
@@ -1,5 +1,4 @@
1
- var mumuki = mumuki || {};
2
- (function (mumuki) {
1
+ (() => {
3
2
  function historicalQueries() {
4
3
  var queries = $('#historical_queries').val();
5
4
  if (queries) {
@@ -36,65 +35,64 @@ var mumuki = mumuki || {};
36
35
  $('.jquery-console-prompt-box:not(:last)').remove()
37
36
  }
38
37
 
39
- function QueryConsole() {
40
- this.endpoint = $('#console_endpoint').val();
41
- this.token = new mumuki.CsrfToken();
42
- this.statefulConsole = $('#stateful_console').val() === "true";
43
- this.lines = [];
44
- }
45
-
46
- QueryConsole.prototype = {
47
- newQuery: function (line) {
38
+ class QueryConsole {
39
+ constructor() {
40
+ this.endpoint = $('#console_endpoint').val();
41
+ this.token = new mumuki.CsrfToken();
42
+ this.statefulConsole = $('#stateful_console').val() === "true";
43
+ this.lines = [];
44
+ this.controller = null;
45
+ }
46
+ newQuery(line) {
48
47
  var cookies = this.statefulConsole ? this.lines : [];
49
48
  return new Query(line, cookies, this);
50
- },
51
- clearState: function () {
49
+ }
50
+ clearState() {
52
51
  this.lines = [];
53
52
  clearConsole();
54
- },
55
- sendQuery: function (queryContent) {
53
+ }
54
+ sendQuery(queryContent) {
56
55
  this.controller.promptText(queryContent);
57
56
  this.controller.typer.commandTrigger();
58
- },
59
- preloadQuery: function (queryWithResults) {
57
+ }
58
+ preloadQuery(queryWithResults) {
60
59
  this.lines.push(queryWithResults.query);
61
60
  this.enqueuePreloadedQuery(queryWithResults);
62
61
  this.sendQuery(queryWithResults.query);
63
- },
64
- enqueuePreloadedQuery: function (queryWithResults) {
62
+ }
63
+ enqueuePreloadedQuery(queryWithResults) {
65
64
  this.preloadedQuery = queryWithResults;
66
- },
67
- dequeuePreloadedQuery: function () {
65
+ }
66
+ dequeuePreloadedQuery() {
68
67
  var result = this.preloadedQuery;
69
68
  this.preloadedQuery = undefined;
70
69
  return result;
71
- },
72
- preloadHistoricalQueries: function () {
70
+ }
71
+ preloadHistoricalQueries() {
73
72
  var self = this;
74
73
  historicalQueries().forEach(function (queryWithResults) {
75
74
  self.preloadQuery(queryWithResults);
76
75
  });
77
76
  }
78
- };
79
-
80
- function Query(line, cookie, console) {
81
- this.console = console;
82
- this.line = line;
83
- this.cookie = cookie;
84
77
  }
85
78
 
86
- Query.prototype = {
79
+ class Query {
80
+ constructor(line, cookie, console) {
81
+ this.console = console;
82
+ this.line = line;
83
+ this.cookie = cookie;
84
+ }
87
85
  get token() {
88
86
  return this.console.token;
89
- },
87
+ }
90
88
  get content() {
91
89
  var firstEditor = mumuki.page.editors[0];
92
90
  if (firstEditor && $("#include_solution").prop("checked"))
93
91
  return firstEditor.getValue();
94
92
  else
95
93
  return '';
96
- },
97
- submit: function (report, queryConsole, line) {
94
+ }
95
+ submit(report, queryConsole, line) {
98
96
  var self = this;
99
97
  var preloadedQuery = queryConsole.dequeuePreloadedQuery();
100
98
  if (preloadedQuery) {
@@ -110,8 +108,8 @@ var mumuki = mumuki || {};
110
108
  }).fail(function (response) {
111
109
  reportStatus(response.responseText, 'failed', report);
112
110
  });
113
- },
114
- displayGoalResult: function (response) {
111
+ }
112
+ displayGoalResult(response) {
115
113
  if (response.status == 'passed') {
116
114
  $('.submission-results').show();
117
115
  $('.submission-results').html(response.html);
@@ -121,15 +119,15 @@ var mumuki = mumuki || {};
121
119
  $('.submission-results').hide();
122
120
  $('.progress-list-item.active').attr('class', "progress-list-item text-center danger active");
123
121
  }
124
- },
125
- displayQueryResult: function (report, queryConsole, line, response) {
122
+ }
123
+ displayQueryResult(report, queryConsole, line, response) {
126
124
  if (response.status !== 'errored') {
127
125
  queryConsole.lines.push(line);
128
126
  reportStatus(response.result, response.status, report);
129
127
  } else {
130
128
  reportStatus(response.result, 'failed', report);
131
129
  }
132
- },
130
+ }
133
131
  get _request() {
134
132
  var self = this;
135
133
  return self.token.newRequest({
@@ -137,17 +135,17 @@ var mumuki = mumuki || {};
137
135
  type: 'POST',
138
136
  data: self._requestData
139
137
  })
140
- },
138
+ }
141
139
  get _requestUrl() {
142
140
  return this.console.endpoint;
143
- },
141
+ }
144
142
  get _requestData() {
145
143
  return {content: this.content, query: this.line, cookie: this.cookie};
146
144
  }
147
- };
145
+ }
148
146
 
149
147
 
150
- mumuki.load(function () {
148
+ mumuki.load(() => {
151
149
  var prompt = $('#prompt').attr('value');
152
150
  var queryConsole = new QueryConsole();
153
151
 
@@ -172,4 +170,4 @@ var mumuki = mumuki || {};
172
170
  queryConsole.preloadHistoricalQueries();
173
171
  });
174
172
 
175
- }(mumuki));
173
+ })();