logster 2.20.1 → 3.0.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 (142) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +23 -92
  3. data/README.md +29 -14
  4. data/assets/javascript/main-B82IoCiW.js +1 -0
  5. data/assets/javascript/modules-4-12-BHA4lR2U.js +1 -0
  6. data/assets/javascript/vendor.js +11 -5260
  7. data/assets/logster-config.json +18 -0
  8. data/assets/manifest.json +23 -0
  9. data/assets/stylesheets/main-CgAFFyi8.css +1 -0
  10. data/lib/logster/configuration.rb +1 -0
  11. data/lib/logster/group.rb +2 -2
  12. data/lib/logster/message.rb +4 -4
  13. data/lib/logster/middleware/reporter.rb +34 -3
  14. data/lib/logster/middleware/viewer.rb +205 -33
  15. data/lib/logster/rails/railtie.rb +4 -20
  16. data/lib/logster/redis_store.rb +0 -2
  17. data/lib/logster/version.rb +1 -1
  18. data/lib/logster.rb +1 -1
  19. metadata +17 -186
  20. data/.github/workflows/ci.yml +0 -140
  21. data/.gitignore +0 -3
  22. data/.rubocop.yml +0 -8
  23. data/.streerc +0 -2
  24. data/Gemfile +0 -10
  25. data/Guardfile +0 -10
  26. data/Rakefile +0 -27
  27. data/assets/javascript/.gitkeep +0 -0
  28. data/assets/javascript/chunk.524.c3042190e39d148beaf9.js +0 -22
  29. data/assets/javascript/chunk.582.695dcbfb11a784b110cd.js +0 -22
  30. data/assets/javascript/chunk.747.a730c497582bb6742a6e.js +0 -579
  31. data/assets/javascript/chunk.761.64949d89942c829e5c1b.js +0 -1213
  32. data/assets/javascript/client-app.js +0 -1390
  33. data/assets/stylesheets/.gitkeep +0 -0
  34. data/assets/stylesheets/client-app.css +0 -1
  35. data/assets/stylesheets/vendor.css +0 -1
  36. data/build_client_app.sh +0 -10
  37. data/client-app/.editorconfig +0 -19
  38. data/client-app/.ember-cli +0 -9
  39. data/client-app/.eslintignore +0 -20
  40. data/client-app/.eslintrc +0 -10
  41. data/client-app/.gitignore +0 -23
  42. data/client-app/.prettierignore +0 -21
  43. data/client-app/.prettierrc +0 -1
  44. data/client-app/.template-lintrc.js +0 -10
  45. data/client-app/.watchmanconfig +0 -3
  46. data/client-app/README.md +0 -56
  47. data/client-app/app/app.js +0 -12
  48. data/client-app/app/components/actions-menu.js +0 -50
  49. data/client-app/app/components/back-to-site-link.js +0 -9
  50. data/client-app/app/components/back-trace.js +0 -153
  51. data/client-app/app/components/env-tab.js +0 -68
  52. data/client-app/app/components/message-info.js +0 -151
  53. data/client-app/app/components/message-row.js +0 -46
  54. data/client-app/app/components/page-nav.js +0 -42
  55. data/client-app/app/components/panel-resizer.js +0 -108
  56. data/client-app/app/components/patterns-list.js +0 -142
  57. data/client-app/app/components/tab-contents.js +0 -23
  58. data/client-app/app/components/tabbed-section.js +0 -45
  59. data/client-app/app/components/time-formatter.js +0 -36
  60. data/client-app/app/controllers/index.js +0 -269
  61. data/client-app/app/controllers/show.js +0 -39
  62. data/client-app/app/helpers/logster-url.js +0 -12
  63. data/client-app/app/helpers/or.js +0 -7
  64. data/client-app/app/index.html +0 -31
  65. data/client-app/app/initializers/app-init.js +0 -71
  66. data/client-app/app/lib/decorators.js +0 -13
  67. data/client-app/app/lib/preload.js +0 -43
  68. data/client-app/app/lib/utilities.js +0 -230
  69. data/client-app/app/models/group.js +0 -34
  70. data/client-app/app/models/message-collection.js +0 -303
  71. data/client-app/app/models/message.js +0 -128
  72. data/client-app/app/models/pattern-item.js +0 -32
  73. data/client-app/app/resolver.js +0 -3
  74. data/client-app/app/router.js +0 -13
  75. data/client-app/app/routes/index.js +0 -64
  76. data/client-app/app/routes/settings.js +0 -32
  77. data/client-app/app/routes/show.js +0 -16
  78. data/client-app/app/services/events.js +0 -4
  79. data/client-app/app/styles/app.css +0 -829
  80. data/client-app/app/templates/application.hbs +0 -1
  81. data/client-app/app/templates/components/actions-menu.hbs +0 -31
  82. data/client-app/app/templates/components/back-to-site-link.hbs +0 -8
  83. data/client-app/app/templates/components/back-trace.hbs +0 -15
  84. data/client-app/app/templates/components/env-tab.hbs +0 -10
  85. data/client-app/app/templates/components/message-info.hbs +0 -86
  86. data/client-app/app/templates/components/message-row.hbs +0 -32
  87. data/client-app/app/templates/components/page-nav.hbs +0 -37
  88. data/client-app/app/templates/components/panel-resizer.hbs +0 -3
  89. data/client-app/app/templates/components/patterns-list.hbs +0 -78
  90. data/client-app/app/templates/components/tabbed-section.hbs +0 -18
  91. data/client-app/app/templates/components/time-formatter.hbs +0 -1
  92. data/client-app/app/templates/index.hbs +0 -165
  93. data/client-app/app/templates/settings.hbs +0 -47
  94. data/client-app/app/templates/show.hbs +0 -13
  95. data/client-app/config/ember-cli-update.json +0 -18
  96. data/client-app/config/environment.js +0 -51
  97. data/client-app/config/icons.js +0 -28
  98. data/client-app/config/optional-features.json +0 -6
  99. data/client-app/config/targets.js +0 -26
  100. data/client-app/ember-cli-build.js +0 -28
  101. data/client-app/package.json +0 -76
  102. data/client-app/preload-json-manager.rb +0 -35
  103. data/client-app/public/assets/images/icon_144x144.png +0 -0
  104. data/client-app/public/assets/images/icon_64x64.png +0 -0
  105. data/client-app/testem.js +0 -23
  106. data/client-app/tests/index.html +0 -41
  107. data/client-app/tests/integration/components/back-to-site-link-test.js +0 -20
  108. data/client-app/tests/integration/components/back-trace-test.js +0 -138
  109. data/client-app/tests/integration/components/env-tab-test.js +0 -220
  110. data/client-app/tests/integration/components/message-info-test.js +0 -122
  111. data/client-app/tests/integration/components/patterns-list-test.js +0 -76
  112. data/client-app/tests/test-helper.js +0 -12
  113. data/client-app/tests/unit/controllers/index-test.js +0 -77
  114. data/client-app/tests/unit/controllers/show-test.js +0 -12
  115. data/client-app/tests/unit/routes/index-test.js +0 -11
  116. data/client-app/tests/unit/routes/show-test.js +0 -11
  117. data/client-app/yarn.lock +0 -9905
  118. data/gemfiles/rails_6.1.gemfile +0 -12
  119. data/gemfiles/rails_7.0.gemfile +0 -12
  120. data/gemfiles/rails_7.1.gemfile +0 -9
  121. data/gemfiles/rails_7.2.gemfile +0 -9
  122. data/logster.gemspec +0 -43
  123. data/test/dummy/config/application.rb +0 -31
  124. data/test/dummy/config/boot.rb +0 -6
  125. data/test/dummy/config/environment.rb +0 -6
  126. data/test/examples/test_sidekiq_reporter_example.rb +0 -47
  127. data/test/fake_data/Gemfile +0 -6
  128. data/test/fake_data/generate.rb +0 -23
  129. data/test/logster/middleware/test_reporter.rb +0 -84
  130. data/test/logster/middleware/test_viewer.rb +0 -495
  131. data/test/logster/test_base_store.rb +0 -224
  132. data/test/logster/test_cache.rb +0 -39
  133. data/test/logster/test_defer_logger.rb +0 -36
  134. data/test/logster/test_group.rb +0 -92
  135. data/test/logster/test_ignore_pattern.rb +0 -42
  136. data/test/logster/test_logger.rb +0 -177
  137. data/test/logster/test_message.rb +0 -269
  138. data/test/logster/test_pattern.rb +0 -144
  139. data/test/logster/test_railtie.rb +0 -21
  140. data/test/logster/test_redis_rate_limiter.rb +0 -246
  141. data/test/logster/test_redis_store.rb +0 -1165
  142. data/test/test_helper.rb +0 -44
@@ -1,122 +0,0 @@
1
- import { module, test } from "qunit";
2
- import { setupRenderingTest } from "ember-qunit";
3
- import { click, find, findAll, render } from "@ember/test-helpers";
4
- import hbs from "htmlbars-inline-precompile";
5
- import Message from "client-app/models/message";
6
-
7
- const backtrace = "test backtrace:26";
8
- const messageTitle = "This Is Title";
9
-
10
- const message = Message.create({
11
- backtrace,
12
- message: messageTitle,
13
- env: { c: "cc", d: "dd" },
14
- });
15
-
16
- module("Integration | Component | message-info", function (hooks) {
17
- setupRenderingTest(hooks);
18
-
19
- test("it renders", async function (assert) {
20
- const callback = (newPosition) =>
21
- this.set("currentEnvPosition", newPosition);
22
- this.setProperties({
23
- actionsInMenu: true,
24
- showTitle: false,
25
- envPosition: 0,
26
- message,
27
- callback,
28
- });
29
-
30
- await render(
31
- hbs`<MessageInfo
32
- @currentMessage={{this.message}}
33
- @showTitle={{this.showTitle}}
34
- @currentEnvPosition={{this.envPosition}}
35
- @envChangedAction={{this.callback}}
36
- @showShare={{true}}
37
- @actionsInMenu={{this.actionsInMenu}}
38
- />`
39
- );
40
- let activeTab = find(".message-info .content.active pre");
41
- assert.strictEqual(
42
- activeTab.textContent.trim(),
43
- backtrace,
44
- "default active tab is backtrace"
45
- );
46
- assert.dom(".message-info .content h3").doesNotExist("no titles are shown");
47
- assert.strictEqual(findAll(".tabs a").length, 3, "3 tabs shown");
48
- assert.strictEqual(
49
- find(".tabs a.active").textContent.trim(),
50
- "backtrace",
51
- "default active tab is backtrace"
52
- );
53
- assert.strictEqual(
54
- findAll(".message-actions button").length,
55
- 2,
56
- "2 buttons shown when `actionsInMenu` is true"
57
- );
58
- assert
59
- .dom(".message-actions button.expand.no-text")
60
- .exists("menu expand button is shown");
61
- assert.dom(".message-actions button.share").exists("share button is shown");
62
-
63
- await click(find(".message-actions button.expand.no-text"));
64
- assert.strictEqual(
65
- findAll(".actions-menu button").length,
66
- 3,
67
- "extra buttons shown inside a menu"
68
- );
69
- assert
70
- .dom(".actions-menu button.remove")
71
- .exists("remove button inside the menu");
72
- assert
73
- .dom(".actions-menu button.protect")
74
- .exists("protect button inside the menu");
75
-
76
- this.setProperties({
77
- showTitle: true,
78
- actionsInMenu: false,
79
- });
80
-
81
- assert.strictEqual(
82
- findAll(".message-info .content h3").length,
83
- 3,
84
- "titles are shown"
85
- );
86
- assert
87
- .dom(".message-actions button.expand.no-text")
88
- .doesNotExist("menu expand button is not shown");
89
- assert.strictEqual(
90
- findAll(".message-actions button").length,
91
- 4,
92
- "all actions buttons are shown inline when `actionsInMenu` is false"
93
- );
94
-
95
- await click(findAll(".tabs a")[0]);
96
- activeTab = find(".message-info .content.active pre");
97
- assert.strictEqual(activeTab.textContent, messageTitle, "can switch tabs");
98
-
99
- assert
100
- .dom(".message-actions button.solve")
101
- .doesNotExist(
102
- "no solve button when there is no application_version in env"
103
- );
104
-
105
- message.set("env.application_version", "fddfsdfdsf");
106
- this.set("message", message);
107
- assert
108
- .dom(".message-actions button.solve")
109
- .exists("solve button is shown when there is application_version in env");
110
-
111
- message.set("env", [
112
- { sd: "dx", application_version: "fsfdsf" },
113
- { vcv: "dxc" },
114
- ]);
115
- this.set("message", message);
116
- assert
117
- .dom(".message-actions button.solve")
118
- .exists(
119
- "solve button is shown when there is application_version in env (array)"
120
- );
121
- });
122
- });
@@ -1,76 +0,0 @@
1
- import { module, test } from "qunit";
2
- import { setupRenderingTest } from "ember-qunit";
3
- import hbs from "htmlbars-inline-precompile";
4
- import { fillIn, findAll, render } from "@ember/test-helpers";
5
- import Pattern from "client-app/models/pattern-item";
6
-
7
- module("Integration | Component | patterns-list", function (hooks) {
8
- setupRenderingTest(hooks);
9
-
10
- test("it renders", async function (assert) {
11
- this.setProperties({
12
- mutable: true,
13
- patterns: [],
14
- });
15
- await render(
16
- hbs`<PatternsList @patterns={{this.patterns}} @mutable={{this.mutable}} @key="suppression" />`
17
- );
18
-
19
- assert
20
- .dom(".pattern-input")
21
- .exists("It shows an input when patterns are emtpy");
22
- assert
23
- .dom(".btn.new-pattern")
24
- .exists("It shows a create button when mutable");
25
-
26
- const pattern1 = Pattern.create({ value: "/somepattern/" });
27
- const pattern2 = Pattern.create({ value: "/anotherpattern/" });
28
- this.set("patterns", [pattern1, pattern2]);
29
- assert.strictEqual(
30
- findAll(".pattern-input").length,
31
- 3, // yes 3 because there is always an empty pattern input
32
- "It correctly displays patterns"
33
- );
34
- assert
35
- .dom(".btn.save")
36
- .doesNotExist("No save buttons are shown when there is 0 buffer");
37
- const counters = findAll("input.count");
38
- assert.strictEqual(counters.length, 3, "counters shown for all patterns");
39
- assert.ok(
40
- counters.every((c) => c.disabled),
41
- "counters are disabled"
42
- );
43
-
44
- pattern1.set("count", 6);
45
- this.set("patterns", [pattern1, pattern2]);
46
- const counterPresent = !!findAll("input.count").find(
47
- (c) => c.value === "6"
48
- );
49
- assert.ok(counterPresent, "counter shows correct value");
50
- assert.dom(".btn.reset").exists("Reset button is shown");
51
-
52
- let inputs = findAll(".pattern-input");
53
- await fillIn(inputs[0], "/newpattern/");
54
- await fillIn(inputs[2], "/anothernewpattern/");
55
-
56
- assert
57
- .dom(".btn.save")
58
- .exists("Save buttons are shown when there is buffer");
59
- assert.dom(".btn.trash").exists("Trash buttons are shown");
60
-
61
- let disabled = inputs.every((inp) => inp.disabled);
62
- assert.notOk(
63
- disabled,
64
- "All inputs are not disabled when the list is mutable"
65
- );
66
-
67
- this.set("mutable", false);
68
-
69
- inputs = findAll(".pattern-input");
70
- disabled = inputs.every((inp) => inp.disabled);
71
- assert.ok(disabled, "All inputs are disabled when the list is immutable");
72
- assert
73
- .dom(".btn.trash")
74
- .doesNotExist("Trash buttons are not shown when the list is immutable");
75
- });
76
- });
@@ -1,12 +0,0 @@
1
- import Application from "client-app/app";
2
- import config from "client-app/config/environment";
3
- import * as QUnit from "qunit";
4
- import { setApplication } from "@ember/test-helpers";
5
- import { setup } from "qunit-dom";
6
- import { start } from "ember-qunit";
7
-
8
- setApplication(Application.create(config.APP));
9
-
10
- setup(QUnit.assert);
11
-
12
- start();
@@ -1,77 +0,0 @@
1
- import { module, test } from "qunit";
2
- import { setupTest } from "ember-qunit";
3
- import MessageCollection from "client-app/models/message-collection";
4
- import sinon from "sinon";
5
- import * as utilities from "client-app/lib/utilities";
6
-
7
- module("Unit | Controller | index", function (hooks) {
8
- setupTest(hooks);
9
- const ajaxStub = sinon.stub(utilities, "ajax");
10
-
11
- test("uses search param to filter results", function (assert) {
12
- const controller = this.owner.lookup("controller:index");
13
- const messages = MessageCollection.create();
14
- const row1 = { message: "error tomtom", severity: 2, key: "ce1f53b0cc" };
15
- const row2 = { message: "error steaky", severity: 3, key: "b083352825" };
16
-
17
- messages.rows.addObjects([row1, row2]);
18
- controller.set("model", messages);
19
-
20
- assert.strictEqual(controller.searchTerm, null, "initial value is null");
21
- assert.deepEqual(controller.model.rows, [row1, row2], "all rows");
22
-
23
- ajaxStub.callsFake(async () => ({
24
- search: "tomtom",
25
- filter: [5],
26
- messages: [],
27
- }));
28
- controller.set("search", "tomtom");
29
-
30
- assert.strictEqual(
31
- controller.searchTerm,
32
- "tomtom",
33
- "search sets search term"
34
- );
35
- assert.strictEqual(
36
- ajaxStub.firstCall.args[0],
37
- "/messages.json",
38
- "get messages"
39
- );
40
- assert.deepEqual(
41
- ajaxStub.firstCall.args[1],
42
- { data: { filter: "5", search: "tomtom" }, method: "POST" },
43
- "with correct terms"
44
- );
45
- });
46
-
47
- test("Creating inline grouping patterns finds the longest matching prefix between selected messages", function (assert) {
48
- const controller = this.owner.lookup("controller:index");
49
- const messages = ["error foo tomtom", "error foo steaky", "error foo bar"];
50
-
51
- assert.deepEqual(
52
- controller.findLongestMatchingPrefix(messages),
53
- "error foo "
54
- );
55
- });
56
-
57
- test("Creating inline grouping patterns can handle special characters", function (assert) {
58
- const controller = this.owner.lookup("controller:index");
59
- let messages = [
60
- "error foo!/@ tomtom",
61
- "error foo!/@ steaky",
62
- "error foo!/@ bar",
63
- ];
64
-
65
- assert.deepEqual(
66
- controller.findLongestMatchingPrefix(messages),
67
- "error foo!/@ "
68
- );
69
-
70
- messages = ["/$home/sam/.r\benv/", "/$home/sam/.r\benv/"];
71
-
72
- assert.deepEqual(
73
- controller.findLongestMatchingPrefix(messages),
74
- "/$home/sam/.r\benv/"
75
- );
76
- });
77
- });
@@ -1,12 +0,0 @@
1
- import { module, test } from "qunit";
2
- import { setupTest } from "ember-qunit";
3
-
4
- module("Unit | Controller | show", function (hooks) {
5
- setupTest(hooks);
6
-
7
- // Replace this with your real tests.
8
- test("it exists", function (assert) {
9
- let controller = this.owner.lookup("controller:show");
10
- assert.ok(controller);
11
- });
12
- });
@@ -1,11 +0,0 @@
1
- import { module, test } from "qunit";
2
- import { setupTest } from "ember-qunit";
3
-
4
- module("Unit | Route | index", function (hooks) {
5
- setupTest(hooks);
6
-
7
- test("it exists", function (assert) {
8
- let route = this.owner.lookup("route:index");
9
- assert.ok(route);
10
- });
11
- });
@@ -1,11 +0,0 @@
1
- import { module, test } from "qunit";
2
- import { setupTest } from "ember-qunit";
3
-
4
- module("Unit | Route | show", function (hooks) {
5
- setupTest(hooks);
6
-
7
- test("it exists", function (assert) {
8
- let route = this.owner.lookup("route:show");
9
- assert.ok(route);
10
- });
11
- });