karafka-web 0.10.0.beta1 → 0.10.0.rc2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d03bd99016dad674c04a734df15c1dd42c52d869ea7c5e1c5158f1b2ad5d31f9
4
- data.tar.gz: 830c8e38a82bee5876519a5517d321ac1c6f9bb0f197bab0644bb65ae8ba7cba
3
+ metadata.gz: 8f9e6ffa0b52fd034fba9f20be4a3862dac935610601daa3e7ac14b912ac166d
4
+ data.tar.gz: d0cc099e8bcb8367c33c27326223346983fddb4bf0e8b40397c8ad2ae30a83fd
5
5
  SHA512:
6
- metadata.gz: cce9fba1e6f3f3503a8893d74711c9de78e7ff54b3f7c07a6e8add2aa7d8adf3b61411a051f08c0c5b31550cb1533b2a80c6b903e4ba0e42a022895160146616
7
- data.tar.gz: 2e823dd6b69bc5be01f9c9b330b4691af8e278d1a306fde6c9d762eb6d282a0b2defefeb192aa705b17dddc5ba8cda11ea3bbb5128ea9ecacf9d2e9ad89620bc
6
+ metadata.gz: b88382f36d89b10ffaa249b8533210007620ae979af936b29a70a1c6b81cad8e2058a6bfc9d7c494dded5b67139da62e74629722ba1fb420d0e44664d25ea1ea
7
+ data.tar.gz: 541b6de732575af548cd39a12730c1eea7c60e072f468b5b28ead575828ae2863110b2975a79dd2d3389b9d1899048d5c9f225ef6cacef3645cae87baf062a3b
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -7,6 +7,9 @@
7
7
  - **[Feature]** Support per request policies for inspection and operations limitation.
8
8
  - **[Feature]** Provide Search capabilities in the Explorer (Pro).
9
9
  - **[Feature]** Provide dark mode.
10
+ - [Enhancement] Set `enable.partition.eof` to `false` for Web UI consumer group as it is not needed.
11
+ - [Enhancement] Allow for configuration of extra `kafka` scope options for the Web UI consumer group.
12
+ - [Enhancement] Support Karafka `#eofed` consumer action.
10
13
  - [Enhancement] Provide topics watermarks inspection page (Pro).
11
14
  - [Enhancement] Use Turbo to improve usability.
12
15
  - [Enhancement] Round poll age reporting to precision of 2 reducing the payload size.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- karafka-web (0.10.0.beta1)
4
+ karafka-web (0.10.0)
5
5
  erubi (~> 1.4)
6
6
  karafka (>= 2.4.7, < 2.5.0)
7
7
  karafka-core (>= 2.4.0, < 2.5.0)
@@ -33,7 +33,6 @@ GEM
33
33
  factory_bot (6.4.6)
34
34
  activesupport (>= 5.0.0)
35
35
  ffi (1.17.0)
36
- ffi (1.17.0-x86_64-linux-gnu)
37
36
  i18n (1.14.5)
38
37
  concurrent-ruby (~> 1.0)
39
38
  karafka (2.4.7)
@@ -123,6 +123,15 @@ module Karafka
123
123
  # By default we flush the states twice as often as the data reporting.
124
124
  # This will allow us to have closer to real-time reporting.
125
125
  setting :interval, default: 2_500
126
+
127
+ # Extra kafka level settings that we merge to the defaults when building the Web consumer
128
+ # group. User may want different things than we in regard to operations, thus effectively
129
+ # crippling responsiveness or stability of reporting.
130
+ setting :kafka, default: {
131
+ # We do not use at the moment the `#eofed` flag for anything, thus there is no point in
132
+ # having it set to true if user users it.
133
+ 'enable.partition.eof': false
134
+ }.freeze
126
135
  end
127
136
 
128
137
  setting :ui do
@@ -48,6 +48,9 @@ module Karafka
48
48
  required(:active) { |val| [true, false].include?(val) }
49
49
  # Do not update data more often not to overload and not to generate too much data
50
50
  required(:interval) { |val| val.is_a?(Integer) && val >= 1_000 }
51
+
52
+ # Extra Kafka setup for our processing consumer
53
+ required(:kafka) { |val| val.is_a?(Hash) }
51
54
  end
52
55
 
53
56
  nested(:ui) do
@@ -59,6 +62,7 @@ module Karafka
59
62
  required(:cache) { |val| !val.nil? }
60
63
  required(:per_page) { |val| val.is_a?(Integer) && val >= 1 && val <= 100 }
61
64
  required(:max_visible_payload_size) { |val| val.is_a?(Integer) && val >= 1 }
65
+ required(:kafka) { |val| val.is_a?(Hash) }
62
66
 
63
67
  required(:dlq_patterns) do |val|
64
68
  val.is_a?(Array) &&
@@ -47,6 +47,9 @@ module Karafka
47
47
 
48
48
  # Enables all the needed routes
49
49
  def extend_routing
50
+ kafka_config = ::Karafka::App.config.kafka.dup
51
+ kafka_config.merge!(::Karafka::Web.config.processing.kafka)
52
+
50
53
  ::Karafka::App.routes.draw do
51
54
  payload_deserializer = ::Karafka::Web::Deserializer.new
52
55
 
@@ -70,6 +73,9 @@ module Karafka
70
73
  # consumer group name would be renamed and we would start consuming all
71
74
  # historical
72
75
  initial_offset 'latest'
76
+ # We use the defaults + our config alterations that may not align with what
77
+ # user wants for his topics.
78
+ kafka kafka_config
73
79
  end
74
80
 
75
81
  # We define those three here without consumption, so Web understands how to
@@ -18,7 +18,7 @@ module Karafka
18
18
  required(:last_offset) { |val| val.is_a?(Integer) && (val >= 0 || val == -1001) }
19
19
  required(:committed_offset) { |val| val.is_a?(Integer) }
20
20
  required(:messages) { |val| val.is_a?(Integer) && val >= 0 }
21
- required(:type) { |val| %w[consume revoked shutdown tick].include?(val) }
21
+ required(:type) { |val| %w[consume revoked shutdown tick eofed].include?(val) }
22
22
  required(:tags) { |val| val.is_a?(Karafka::Core::Taggable::Tags) }
23
23
  # -1 can be here for workless flows
24
24
  required(:consumption_lag) { |val| val.is_a?(Integer) && (val >= 0 || val == -1) }
@@ -22,6 +22,7 @@ module Karafka
22
22
  revoked
23
23
  shutdown
24
24
  tick
25
+ eofed
25
26
  ].each do |action|
26
27
  # Tracks the job that is going to be scheduled so we can also display pending jobs
27
28
  class_eval <<~RUBY, __FILE__, __LINE__ + 1
@@ -85,6 +86,8 @@ module Karafka
85
86
  'shutdown'
86
87
  when 'consumer.tick.error'
87
88
  'tick'
89
+ when 'consumer.eofed.error'
90
+ 'eofed'
88
91
  # This is not a user facing execution flow, but internal system one
89
92
  # that is why it will not be reported as a separate job for the UI
90
93
  when 'consumer.idle.error'
@@ -109,7 +112,8 @@ module Karafka
109
112
  [
110
113
  [:revoke, :revoked, 'revoked'],
111
114
  [:shutting_down, :shutdown, 'shutdown'],
112
- [:tick, :ticked, 'tick']
115
+ [:tick, :ticked, 'tick'],
116
+ [:eof, :eofed, 'eofed']
113
117
  ].each do |pre, post, action|
114
118
  class_eval <<~METHOD, __FILE__, __LINE__ + 1
115
119
  # Stores this job details
@@ -57,7 +57,7 @@ let DataFormattingUtils={niceBytes(e,t=2){let i=0,s=parseInt(e,10)||0;for(;1024<
57
57
  /*! Source: lib/karafka/web/ui/public/javascripts/components/offset_datetime.js */function loadOffsetLookupDatePicker(){var e={locale:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",dateFormat:"yyyy-MM-dd",timeFormat:"HH:mm",firstDay:1},timepicker:!0,onSelect:({})=>{document.getElementById("offset-lookup-datepicker").value=""},onShow:function(){offsetLookupDatePicker.selectDate((new Date).getTime()),offsetLookupDatePicker.maxDate=new Date},onHide:function(){offsetLookupDatePicker.selectDate((new Date).getTime())},buttons:[{content(e){return"Go to offset"},onClick(e){var t=e.selectedDates[0]||new Date,i=e.$el.dataset.target;e.hide(),location.href=i+"/"+formatRedirectDateTime(t)}}]};null!=offsetLookupDatePicker&&offsetLookupDatePicker.destroy(),null!=document.getElementById("offset-lookup-datepicker")&&((offsetLookupDatePicker=new AirDatepicker("#offset-lookup-datepicker",e)).maxDate=new Date,offsetLookupDatePicker.selectDate((new Date).getTime()))}function formatRedirectDateTime(e){return e.getFullYear()+`-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}/${String(e.getHours()).padStart(2,"0")}:`+String(e.getMinutes()).padStart(2,"0")}function isOffsetLookupCalendarVisible(){return null!=offsetLookupDatePicker&&offsetLookupDatePicker.visible}
58
58
  /*! Source: lib/karafka/web/ui/public/javascripts/components/search.js */offsetLookupDatePicker=null;class SearchModalManager{constructor(){this.init()}init(){var t=document.getElementById("offset-input");if(!t)return!1;var i=document.getElementById("offset-timestamp-input"),e=document.querySelectorAll('input[name="search[offset_type]"]'),s=document.getElementById("no-search-criteria"),r=document.getElementById("search-form-errors");e.forEach(function(e){e.addEventListener("change",function(){t.disabled=!document.getElementById("offset-value").checked,t.required=document.getElementById("offset-value").checked,i.disabled=!document.getElementById("offset-timestamp").checked,i.required=document.getElementById("offset-timestamp").checked})}),t.disabled=!document.getElementById("offset-value").checked,t.required=document.getElementById("offset-value").checked,i.disabled=!document.getElementById("offset-timestamp").checked,i.required=document.getElementById("offset-timestamp").checked,document.getElementById("show-search-modal").addEventListener("click",function(){document.getElementById("messages_search_modal").showModal();var e=document.querySelector('#messages_search_modal input[type="text"]');e&&e.focus()}),(s||r)&&(document.getElementById("messages_search_modal").showModal(),e=document.querySelector('#messages_search_modal input[type="text"]'))&&e.focus()}}class SearchMetadataVisibilityManager{constructor(){this.storageKey="karafkaSearchMetadataVisibility",this.metadataElement=document.getElementById("search-metadata-details"),this.toggleButton=document.getElementById("toggle-search-metadata"),this.metadataElement&&this.init()}init(){this.restoreVisibility(),self=this;var t=document.getElementById("toggle-search-metadata");t.addEventListener("click",function(){var e=document.getElementById("search-metadata-details");e.classList.toggle("hidden"),t.classList.toggle("active"),self.saveVisibility(!e.classList.contains("hidden"))})}readVisibility(){return"true"===localStorage.getItem(this.storageKey)}saveVisibility(e){localStorage.setItem(this.storageKey,e)}restoreVisibility(){this.readVisibility()&&(document.getElementById("toggle-search-metadata").classList.add("active"),document.getElementById("search-metadata-details").classList.remove("hidden"))}}
59
59
  /*! Source: lib/karafka/web/ui/public/javascripts/components/tabs_manager.js */class TabsManager{constructor(){this.storageKey="karafkaActiveTabsv2"}readAllActiveTabs(){var e=localStorage.getItem(this.storageKey);return e?JSON.parse(e):{}}saveAllActiveTabs(e){localStorage.setItem(this.storageKey,JSON.stringify(e))}saveCurrentActiveTabs(){var e=document.querySelectorAll(".inline-tabs > .active"),t=window.location.href.split("?")[0];let i=[];var s=this.readAllActiveTabs();e.forEach(e=>{i.push(e.id)}),s[t]=i,this.saveAllActiveTabs(s)}setActiveTabs(){var e=window.location.href.split("?")[0],e=this.readAllActiveTabs()[e];(e=e||Array.from(document.querySelectorAll(".inline-tabs > .active")).map(e=>e.id))&&e.forEach(e=>{e=document.getElementById(e);e&&(e.parentElement.querySelectorAll(".custom-tab").forEach(function(e){e.classList.remove("active")}),e.classList.add("active"),document.getElementById(e.getAttribute("data-target")).classList.remove("hidden"))})}manageTabs(){this.setActiveTabs();var t=this;document.querySelectorAll(".inline-tabs > .custom-tab").forEach(function(e){e.addEventListener("click",function(e){this.parentElement.querySelectorAll(".custom-tab").forEach(function(e){e.classList.remove("active");e=e.getAttribute("data-target");document.getElementById(e).classList.add("hidden")}),this.classList.add("active"),t.saveCurrentActiveTabs(),t.setActiveTabs()})})}}
60
- /*! Source: lib/karafka/web/ui/public/javascripts/components/theme_manager.js */class ThemeManager{constructor(){this.themeSelectorButton=document.getElementById("theme-selector"),this.themeSelectorLight=document.getElementById("theme-selector-light"),this.themeSelectorDark=document.getElementById("theme-selector-dark"),this.init()}init(){this.lightThemeLink=document.getElementById("highlight-light"),this.darkThemeLink=document.getElementById("highlight-dark"),this.lightThemeLink&&this.darkThemeLink&&this.themeSelectorButton?(this.restoreTheme(),this.themeSelectorButton.addEventListener("click",()=>{this.toggleTheme()})):console.error("Theme CSS links or theme selector button not found")}setTheme(e){document.documentElement.setAttribute("data-theme",e),"dark"===e?(this.lightThemeLink.disabled=!0,this.darkThemeLink.disabled=!1,this.themeSelectorLight.classList.add("hidden"),this.themeSelectorDark.classList.remove("hidden")):(this.lightThemeLink.disabled=!1,this.darkThemeLink.disabled=!0,this.themeSelectorLight.classList.remove("hidden"),this.themeSelectorDark.classList.add("hidden")),localStorage.setItem("theme",e)}toggleTheme(){var e=document.documentElement.getAttribute("data-theme");this.setTheme("dark"===e?"corporate":"dark")}restoreTheme(){var e=localStorage.getItem("theme"),e=e||(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"corporate");this.setTheme(e),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",e=>{localStorage.getItem("theme")||this.setTheme(e.matches?"dark":"corporate")})}}
60
+ /*! Source: lib/karafka/web/ui/public/javascripts/components/theme_manager.js */class ThemeManager{constructor(){this.themeSelectorButton=document.getElementById("theme-selector"),this.themeSelectorLight=document.getElementById("theme-selector-light"),this.themeSelectorDark=document.getElementById("theme-selector-dark"),this.init()}init(){this.lightThemeLink=document.querySelector(".highlight-light"),this.darkThemeLink=document.querySelector(".highlight-dark"),this.lightThemeLink&&this.darkThemeLink&&this.themeSelectorButton?(this.restoreTheme(),this.bindThemeSelectorButton()):console.error("Theme CSS links or theme selector button not found")}bindThemeSelectorButton(){this.themeSelectorButton&&!this.themeSelectorButton.dataset.bound&&(this.themeSelectorButton.addEventListener("click",()=>{this.toggleTheme()}),this.themeSelectorButton.dataset.bound="true")}setTheme(e){document.documentElement.setAttribute("data-theme",e),"dark"===e?(this.lightThemeLink.disabled=!0,this.darkThemeLink.disabled=!1,this.themeSelectorLight.classList.add("hidden"),this.themeSelectorDark.classList.remove("hidden")):(this.lightThemeLink.disabled=!1,this.darkThemeLink.disabled=!0,this.themeSelectorLight.classList.remove("hidden"),this.themeSelectorDark.classList.add("hidden")),localStorage.setItem("theme",e)}toggleTheme(){var e=document.documentElement.getAttribute("data-theme");this.setTheme("dark"===e?"corporate":"dark")}restoreTheme(){var e=localStorage.getItem("theme"),e=e||(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"corporate");this.setTheme(e),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",e=>{localStorage.getItem("theme")||this.setTheme(e.matches?"dark":"corporate")})}}
61
61
  /*! Source: lib/karafka/web/ui/public/javascripts/components/turbo_tracker.js */let turboIsOperating=!1;function isTurboOperating(){return turboIsOperating}
62
62
  /*! Source: lib/karafka/web/ui/public/javascripts/application.js */function updateTimeAgo(){0!=(e=document.querySelectorAll("time")).length&&(timeago.render(e),timeago.cancel());for(var e=document.getElementsByClassName("time-title"),t=0;t<e.length;t++){var i=e[t],s=i.getAttribute("title");i.setAttribute("title",timeago.format(s))}}function refreshTitle(){var e=document.querySelectorAll(".breadcrumbs a"),e=Array.from(e).slice(1).map(e=>e.textContent.trim());0<e.length?document.title=e.join(" > ")+" - Karafka Web UI":document.title="Karafka Web UI"}function redirectToPartition(){var e=document.getElementById("current-partition");null!=e&&e.addEventListener("change",function(){Turbo.visit(this.value)})}function bindActionsConfirmations(){for(var t=document.getElementsByClassName("confirm-action"),i=0;i<t.length;i++){var s=t[i];let e="click";"FORM"===s.nodeName&&(e="submit"),s.addEventListener(e,function(e){window.confirm("Are you sure?")||e.preventDefault()})}}function bindLockableButtons(){document.querySelectorAll(".btn-lockable").forEach(function(i){i.addEventListener("click",function(e){var t=i.closest("form");t?t.addEventListener("submit",function(){i.disabled=!0,i.textContent+="...",document.querySelectorAll(".modal").forEach(function(e){e.classList.add("modal-locked")})},{once:!0}):(i.disabled=!0,i.textContent+="...")})})}function addListeners(){initLivePolling(),bindPollingButtonClick(),bindLockableButtons(),setLivePollButton(),setPollingListener(),hljs.highlightAll(),updateTimeAgo(),redirectToPartition(),(new TabsManager).manageTabs(),manageCharts(),bindActionsConfirmations(),loadOffsetLookupDatePicker(),new BtnToggleManager,new ThemeManager,refreshTitle(),new SearchMetadataVisibilityManager,new SearchModalManager}document.addEventListener("turbo:visit",function(){turboIsOperating=!0}),document.addEventListener("turbo:before-fetch-request",function(){turboIsOperating=!0}),document.addEventListener("turbo:before-fetch-response",function(){turboIsOperating=!0}),document.addEventListener("turbo:load",function(){turboIsOperating=!1}),document.addEventListener("turbo:frame-load",function(){turboIsOperating=!1}),document.addEventListener("turbo:frame-render",function(){turboIsOperating=!1}),document.addEventListener("turbo:load",addListeners),Turbo.setProgressBarDelay(250)
63
63
  /*! Source: lib/karafka/web/ui/public/javascripts/charts/types/bar.js */;class BarChartManager{constructor(){this.datasetStateManager=new DatasetStateManager}refreshAndRenderBarCharts(c,u=!1){(u?c:document).querySelectorAll(".chartjs-bar").forEach(e=>{var t=e.id,i=(u?c:document).getElementById(t),s=JSON.parse(i.dataset.datasets);let r=[],a=[],n=[];var o=i.dataset.label_type_y;let l=i.dataset.label_type_x,h=this.datasetStateManager.getCurrentChart(t);Object.entries(s).forEach(([e,t],i)=>{t.forEach(([e,t])=>{n.push(t),0===i&&r.push(DataFormattingUtils.formatLabelX(e,l))}),a.push({data:t.map(([,e])=>e),label:e,hidden:h.includes(i),borderWidth:2.5})});var i=Math.min(...n),s=Math.max(...n),i=Math.round(i-.1*i),s=Math.round(s+.005*s),d=Math.round(n.reduce((e,t)=>e+t,0)/n.length);a.push({type:"line",label:"Average",data:new Array(r.length).fill(d),borderWidth:2,fill:!1,pointRadius:0,hoverBorderWidth:3,pointHitRadius:20}),u?((d=Chart.getChart(t)).data.datasets=a,d.data.labels=r,d.options.scales.y.min=i,d.options.scales.y.max=s,d.update("none")):this.renderBarChart(e,r,a,i,s,o)})}renderBarChart(e,t,i,s,r,a){new Chart(e,{type:"bar",data:{labels:t,datasets:i},options:{responsive:!0,maintainAspectRatio:!1,aspectRatio:5,scales:{x:{display:!0},y:{beginAtZero:!1,min:s,max:r,ticks:{maxTicksLimit:8,callback:function(e,t,i){return DataFormattingUtils.formatLabelY(a,e,t,i)}}}},animation:!1,animations:{colors:!1,x:!1},transitions:{active:{animation:{duration:!1}}},plugins:{legend:{position:"hidden"},tooltip:{callbacks:{label:function(e){let t=e.dataset.label||"";return"Average"!==t?DataFormattingUtils.formatTooltip(a,e):t+=": "+e.formattedValue}}}}}})}}
@@ -7,8 +7,8 @@ class ThemeManager {
7
7
  }
8
8
 
9
9
  init() {
10
- this.lightThemeLink = document.getElementById('highlight-light');
11
- this.darkThemeLink = document.getElementById('highlight-dark');
10
+ this.lightThemeLink = document.querySelector('.highlight-light');
11
+ this.darkThemeLink = document.querySelector('.highlight-dark');
12
12
 
13
13
  if (!this.lightThemeLink || !this.darkThemeLink || !this.themeSelectorButton) {
14
14
  console.error('Theme CSS links or theme selector button not found');
@@ -17,9 +17,16 @@ class ThemeManager {
17
17
 
18
18
  this.restoreTheme();
19
19
 
20
- this.themeSelectorButton.addEventListener('click', () => {
21
- this.toggleTheme();
22
- });
20
+ this.bindThemeSelectorButton();
21
+ }
22
+
23
+ bindThemeSelectorButton() {
24
+ if (this.themeSelectorButton && !this.themeSelectorButton.dataset.bound) {
25
+ this.themeSelectorButton.addEventListener('click', () => {
26
+ this.toggleTheme();
27
+ });
28
+ this.themeSelectorButton.dataset.bound = 'true'; // Mark the button as bound
29
+ }
23
30
  }
24
31
 
25
32
  setTheme(theme) {
@@ -11,13 +11,15 @@
11
11
  <link
12
12
  rel="stylesheet"
13
13
  href="<%= asset_path('stylesheets/libs/highlight_light.min.css') %>"
14
- id="highlight-light"
14
+ class="highlight-light"
15
+ disabled="disabled"
15
16
  />
16
17
 
17
18
  <link
18
19
  rel="stylesheet"
19
20
  href="<%= asset_path('stylesheets/libs/highlight_dark.min.css') %>"
20
- id="highlight-dark"
21
+ class="highlight-dark"
22
+ disabled="disabled"
21
23
  />
22
24
 
23
25
  <link href="<%= asset_path('stylesheets/application.min.css') %>" rel="stylesheet">
@@ -3,6 +3,6 @@
3
3
  module Karafka
4
4
  module Web
5
5
  # Current gem version
6
- VERSION = '0.10.0.beta1'
6
+ VERSION = '0.10.0.rc2'
7
7
  end
8
8
  end
data/package-lock.json CHANGED
@@ -3438,10 +3438,11 @@
3438
3438
  }
3439
3439
  },
3440
3440
  "node_modules/tailwindcss": {
3441
- "version": "3.4.7",
3442
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.7.tgz",
3443
- "integrity": "sha512-rxWZbe87YJb4OcSopb7up2Ba4U82BoiSGUdoDr3Ydrg9ckxFS/YWsvhN323GMcddgU65QRy7JndC7ahhInhvlQ==",
3441
+ "version": "3.4.10",
3442
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz",
3443
+ "integrity": "sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==",
3444
3444
  "dev": true,
3445
+ "license": "MIT",
3445
3446
  "dependencies": {
3446
3447
  "@alloc/quick-lru": "^5.2.0",
3447
3448
  "arg": "^5.0.2",
@@ -3479,6 +3480,7 @@
3479
3480
  "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
3480
3481
  "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
3481
3482
  "dev": true,
3483
+ "license": "ISC",
3482
3484
  "dependencies": {
3483
3485
  "is-glob": "^4.0.3"
3484
3486
  },
@@ -3491,6 +3493,7 @@
3491
3493
  "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
3492
3494
  "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
3493
3495
  "dev": true,
3496
+ "license": "MIT",
3494
3497
  "engines": {
3495
3498
  "node": ">=10"
3496
3499
  }
@@ -3510,6 +3513,7 @@
3510
3513
  "url": "https://github.com/sponsors/ai"
3511
3514
  }
3512
3515
  ],
3516
+ "license": "MIT",
3513
3517
  "dependencies": {
3514
3518
  "lilconfig": "^3.0.0",
3515
3519
  "yaml": "^2.3.4"
@@ -3535,6 +3539,7 @@
3535
3539
  "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz",
3536
3540
  "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==",
3537
3541
  "dev": true,
3542
+ "license": "MIT",
3538
3543
  "engines": {
3539
3544
  "node": ">=14"
3540
3545
  },
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: karafka-web
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0.beta1
4
+ version: 0.10.0.rc2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maciej Mensfeld
@@ -35,7 +35,7 @@ cert_chain:
35
35
  AnG1dJU+yL2BK7vaVytLTstJME5mepSZ46qqIJXMuWob/YPDmVaBF39TDSG9e34s
36
36
  msG3BiCqgOgHAnL23+CN3Rt8MsuRfEtoTKpJVcCfoEoNHOkc
37
37
  -----END CERTIFICATE-----
38
- date: 2024-08-06 00:00:00.000000000 Z
38
+ date: 2024-08-14 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: erubi
metadata.gz.sig CHANGED
Binary file