logster 2.21.0 → 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 (140) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +20 -0
  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/middleware/reporter.rb +34 -3
  12. data/lib/logster/middleware/viewer.rb +204 -32
  13. data/lib/logster/rails/railtie.rb +4 -20
  14. data/lib/logster/redis_store.rb +0 -2
  15. data/lib/logster/version.rb +1 -1
  16. data/lib/logster.rb +1 -1
  17. metadata +17 -186
  18. data/.github/workflows/ci.yml +0 -140
  19. data/.gitignore +0 -3
  20. data/.rubocop.yml +0 -12
  21. data/.streerc +0 -2
  22. data/Gemfile +0 -10
  23. data/Guardfile +0 -10
  24. data/Rakefile +0 -24
  25. data/assets/javascript/.gitkeep +0 -0
  26. data/assets/javascript/chunk.524.b7d0b89d25457a72409c.js +0 -22
  27. data/assets/javascript/chunk.582.5a04ae4713e692cd335a.js +0 -22
  28. data/assets/javascript/chunk.747.a730c497582bb6742a6e.js +0 -579
  29. data/assets/javascript/chunk.761.64949d89942c829e5c1b.js +0 -1213
  30. data/assets/javascript/client-app.js +0 -1389
  31. data/assets/stylesheets/.gitkeep +0 -0
  32. data/assets/stylesheets/client-app.css +0 -1
  33. data/assets/stylesheets/vendor.css +0 -1
  34. data/build_client_app.sh +0 -10
  35. data/client-app/.editorconfig +0 -19
  36. data/client-app/.ember-cli +0 -9
  37. data/client-app/.eslintignore +0 -20
  38. data/client-app/.eslintrc +0 -10
  39. data/client-app/.gitignore +0 -23
  40. data/client-app/.prettierignore +0 -21
  41. data/client-app/.prettierrc +0 -1
  42. data/client-app/.template-lintrc.js +0 -10
  43. data/client-app/.watchmanconfig +0 -3
  44. data/client-app/README.md +0 -56
  45. data/client-app/app/app.js +0 -12
  46. data/client-app/app/components/actions-menu.js +0 -50
  47. data/client-app/app/components/back-to-site-link.js +0 -9
  48. data/client-app/app/components/back-trace.js +0 -153
  49. data/client-app/app/components/env-tab.js +0 -68
  50. data/client-app/app/components/message-info.js +0 -151
  51. data/client-app/app/components/message-row.js +0 -46
  52. data/client-app/app/components/page-nav.js +0 -42
  53. data/client-app/app/components/panel-resizer.js +0 -108
  54. data/client-app/app/components/patterns-list.js +0 -142
  55. data/client-app/app/components/tab-contents.js +0 -23
  56. data/client-app/app/components/tabbed-section.js +0 -45
  57. data/client-app/app/components/time-formatter.js +0 -36
  58. data/client-app/app/controllers/index.js +0 -288
  59. data/client-app/app/controllers/show.js +0 -39
  60. data/client-app/app/helpers/logster-url.js +0 -12
  61. data/client-app/app/helpers/or.js +0 -7
  62. data/client-app/app/index.html +0 -31
  63. data/client-app/app/initializers/app-init.js +0 -71
  64. data/client-app/app/lib/decorators.js +0 -13
  65. data/client-app/app/lib/preload.js +0 -43
  66. data/client-app/app/lib/utilities.js +0 -230
  67. data/client-app/app/models/group.js +0 -34
  68. data/client-app/app/models/message-collection.js +0 -303
  69. data/client-app/app/models/message.js +0 -128
  70. data/client-app/app/models/pattern-item.js +0 -32
  71. data/client-app/app/resolver.js +0 -3
  72. data/client-app/app/router.js +0 -13
  73. data/client-app/app/routes/index.js +0 -64
  74. data/client-app/app/routes/settings.js +0 -32
  75. data/client-app/app/routes/show.js +0 -16
  76. data/client-app/app/services/events.js +0 -4
  77. data/client-app/app/styles/app.css +0 -898
  78. data/client-app/app/templates/application.hbs +0 -1
  79. data/client-app/app/templates/components/actions-menu.hbs +0 -31
  80. data/client-app/app/templates/components/back-to-site-link.hbs +0 -8
  81. data/client-app/app/templates/components/back-trace.hbs +0 -15
  82. data/client-app/app/templates/components/env-tab.hbs +0 -10
  83. data/client-app/app/templates/components/message-info.hbs +0 -86
  84. data/client-app/app/templates/components/message-row.hbs +0 -32
  85. data/client-app/app/templates/components/page-nav.hbs +0 -37
  86. data/client-app/app/templates/components/panel-resizer.hbs +0 -3
  87. data/client-app/app/templates/components/patterns-list.hbs +0 -78
  88. data/client-app/app/templates/components/tabbed-section.hbs +0 -18
  89. data/client-app/app/templates/components/time-formatter.hbs +0 -1
  90. data/client-app/app/templates/index.hbs +0 -192
  91. data/client-app/app/templates/settings.hbs +0 -47
  92. data/client-app/app/templates/show.hbs +0 -13
  93. data/client-app/config/ember-cli-update.json +0 -18
  94. data/client-app/config/environment.js +0 -51
  95. data/client-app/config/icons.js +0 -28
  96. data/client-app/config/optional-features.json +0 -6
  97. data/client-app/config/targets.js +0 -26
  98. data/client-app/ember-cli-build.js +0 -34
  99. data/client-app/package.json +0 -76
  100. data/client-app/preload-json-manager.rb +0 -35
  101. data/client-app/public/assets/images/icon_144x144.png +0 -0
  102. data/client-app/public/assets/images/icon_64x64.png +0 -0
  103. data/client-app/testem.js +0 -23
  104. data/client-app/tests/index.html +0 -41
  105. data/client-app/tests/integration/components/back-to-site-link-test.js +0 -20
  106. data/client-app/tests/integration/components/back-trace-test.js +0 -138
  107. data/client-app/tests/integration/components/env-tab-test.js +0 -220
  108. data/client-app/tests/integration/components/message-info-test.js +0 -122
  109. data/client-app/tests/integration/components/patterns-list-test.js +0 -76
  110. data/client-app/tests/test-helper.js +0 -12
  111. data/client-app/tests/unit/controllers/index-test.js +0 -77
  112. data/client-app/tests/unit/controllers/show-test.js +0 -12
  113. data/client-app/tests/unit/routes/index-test.js +0 -11
  114. data/client-app/tests/unit/routes/show-test.js +0 -11
  115. data/client-app/yarn.lock +0 -9905
  116. data/gemfiles/rails_6.1.gemfile +0 -12
  117. data/gemfiles/rails_7.0.gemfile +0 -12
  118. data/gemfiles/rails_7.1.gemfile +0 -9
  119. data/gemfiles/rails_7.2.gemfile +0 -9
  120. data/logster.gemspec +0 -43
  121. data/test/dummy/config/application.rb +0 -31
  122. data/test/dummy/config/boot.rb +0 -6
  123. data/test/dummy/config/environment.rb +0 -6
  124. data/test/examples/test_sidekiq_reporter_example.rb +0 -47
  125. data/test/fake_data/Gemfile +0 -6
  126. data/test/fake_data/generate.rb +0 -23
  127. data/test/logster/middleware/test_reporter.rb +0 -84
  128. data/test/logster/middleware/test_viewer.rb +0 -495
  129. data/test/logster/test_base_store.rb +0 -224
  130. data/test/logster/test_cache.rb +0 -39
  131. data/test/logster/test_defer_logger.rb +0 -36
  132. data/test/logster/test_group.rb +0 -92
  133. data/test/logster/test_ignore_pattern.rb +0 -42
  134. data/test/logster/test_logger.rb +0 -177
  135. data/test/logster/test_message.rb +0 -269
  136. data/test/logster/test_pattern.rb +0 -144
  137. data/test/logster/test_railtie.rb +0 -21
  138. data/test/logster/test_redis_rate_limiter.rb +0 -246
  139. data/test/logster/test_redis_store.rb +0 -1165
  140. data/test/test_helper.rb +0 -66
@@ -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
- });