diff --git a/Dockerfile b/Dockerfile
index cacd926..904656b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -9,10 +9,10 @@ WORKDIR /rails
# Install dependencies for both build and runtime
RUN apk add --no-cache \
- libpq \
+ build-base \
+ libpq-dev \
libxml2 \
tzdata \
- bash \
gcompat
# Throw-away build stage to reduce size of final image
@@ -20,8 +20,8 @@ FROM base as build
# Install build dependencies and Node.js
RUN apk add --no-cache --virtual .build-deps \
- build-base \
git \
+ bash \
libpq-dev \
libxml2-dev && \
apk add --no-cache nodejs npm && \
diff --git a/Gemfile.lock b/Gemfile.lock
index c3a09db..c290a83 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,35 +1,35 @@
GEM
remote: https://rubygems.org/
specs:
- actioncable (7.1.3.4)
- actionpack (= 7.1.3.4)
- activesupport (= 7.1.3.4)
+ actioncable (7.1.4)
+ actionpack (= 7.1.4)
+ activesupport (= 7.1.4)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
zeitwerk (~> 2.6)
- actionmailbox (7.1.3.4)
- actionpack (= 7.1.3.4)
- activejob (= 7.1.3.4)
- activerecord (= 7.1.3.4)
- activestorage (= 7.1.3.4)
- activesupport (= 7.1.3.4)
+ actionmailbox (7.1.4)
+ actionpack (= 7.1.4)
+ activejob (= 7.1.4)
+ activerecord (= 7.1.4)
+ activestorage (= 7.1.4)
+ activesupport (= 7.1.4)
mail (>= 2.7.1)
net-imap
net-pop
net-smtp
- actionmailer (7.1.3.4)
- actionpack (= 7.1.3.4)
- actionview (= 7.1.3.4)
- activejob (= 7.1.3.4)
- activesupport (= 7.1.3.4)
+ actionmailer (7.1.4)
+ actionpack (= 7.1.4)
+ actionview (= 7.1.4)
+ activejob (= 7.1.4)
+ activesupport (= 7.1.4)
mail (~> 2.5, >= 2.5.4)
net-imap
net-pop
net-smtp
rails-dom-testing (~> 2.2)
- actionpack (7.1.3.4)
- actionview (= 7.1.3.4)
- activesupport (= 7.1.3.4)
+ actionpack (7.1.4)
+ actionview (= 7.1.4)
+ activesupport (= 7.1.4)
nokogiri (>= 1.8.5)
racc
rack (>= 2.2.4)
@@ -37,35 +37,35 @@ GEM
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
- actiontext (7.1.3.4)
- actionpack (= 7.1.3.4)
- activerecord (= 7.1.3.4)
- activestorage (= 7.1.3.4)
- activesupport (= 7.1.3.4)
+ actiontext (7.1.4)
+ actionpack (= 7.1.4)
+ activerecord (= 7.1.4)
+ activestorage (= 7.1.4)
+ activesupport (= 7.1.4)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
- actionview (7.1.3.4)
- activesupport (= 7.1.3.4)
+ actionview (7.1.4)
+ activesupport (= 7.1.4)
builder (~> 3.1)
erubi (~> 1.11)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
- activejob (7.1.3.4)
- activesupport (= 7.1.3.4)
+ activejob (7.1.4)
+ activesupport (= 7.1.4)
globalid (>= 0.3.6)
- activemodel (7.1.3.4)
- activesupport (= 7.1.3.4)
- activerecord (7.1.3.4)
- activemodel (= 7.1.3.4)
- activesupport (= 7.1.3.4)
+ activemodel (7.1.4)
+ activesupport (= 7.1.4)
+ activerecord (7.1.4)
+ activemodel (= 7.1.4)
+ activesupport (= 7.1.4)
timeout (>= 0.4.0)
- activestorage (7.1.3.4)
- actionpack (= 7.1.3.4)
- activejob (= 7.1.3.4)
- activerecord (= 7.1.3.4)
- activesupport (= 7.1.3.4)
+ activestorage (7.1.4)
+ actionpack (= 7.1.4)
+ activejob (= 7.1.4)
+ activerecord (= 7.1.4)
+ activesupport (= 7.1.4)
marcel (~> 1.0)
- activesupport (7.1.3.4)
+ activesupport (7.1.4)
base64
bigdecimal
concurrent-ruby (~> 1.0, >= 1.0.2)
@@ -78,13 +78,13 @@ GEM
base64 (0.2.0)
bigdecimal (3.1.8)
bindex (0.8.1)
- bootsnap (1.18.3)
+ bootsnap (1.18.4)
msgpack (~> 1.2)
builder (3.3.0)
- concurrent-ruby (1.3.3)
+ concurrent-ruby (1.3.4)
connection_pool (2.4.1)
crass (1.0.6)
- cssbundling-rails (1.4.0)
+ cssbundling-rails (1.4.1)
railties (>= 6.0.0)
date (3.3.4)
debug (1.9.2)
@@ -98,12 +98,12 @@ GEM
factory_bot_rails (6.4.3)
factory_bot (~> 6.4)
railties (>= 5.0.0)
- faker (3.4.1)
+ faker (3.4.2)
i18n (>= 1.8.11, < 2)
- faraday (2.10.0)
- faraday-net_http (>= 2.0, < 3.2)
+ faraday (2.11.0)
+ faraday-net_http (>= 2.0, < 3.4)
logger
- faraday-net_http (3.1.0)
+ faraday-net_http (3.3.0)
net-http
globalid (1.2.1)
activesupport (>= 6.1)
@@ -116,9 +116,9 @@ GEM
jbuilder (2.12.0)
actionview (>= 5.0.0)
activesupport (>= 5.0.0)
- jsbundling-rails (1.3.0)
+ jsbundling-rails (1.3.1)
railties (>= 6.0.0)
- logger (1.6.0)
+ logger (1.6.1)
loofah (2.22.0)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
@@ -129,12 +129,12 @@ GEM
net-smtp
marcel (1.0.4)
mini_mime (1.1.5)
- minitest (5.24.1)
+ minitest (5.25.1)
msgpack (1.7.2)
mutex_m (0.2.0)
net-http (0.4.1)
uri
- net-imap (0.4.14)
+ net-imap (0.4.15)
date
net-protocol
net-pop (0.1.2)
@@ -144,16 +144,16 @@ GEM
net-smtp (0.5.0)
net-protocol
nio4r (2.7.3)
- nokogiri (1.16.6-aarch64-linux)
+ nokogiri (1.16.7-aarch64-linux)
racc (~> 1.4)
- nokogiri (1.16.6-x86_64-linux)
+ nokogiri (1.16.7-x86_64-linux)
racc (~> 1.4)
- pg (1.5.6)
+ pg (1.5.7)
psych (5.1.2)
stringio
puma (6.4.2)
nio4r (~> 2.0)
- racc (1.8.0)
+ racc (1.8.1)
rack (3.1.7)
rack-session (2.0.0)
rack (>= 3.0.0)
@@ -162,20 +162,20 @@ GEM
rackup (2.1.0)
rack (>= 3)
webrick (~> 1.8)
- rails (7.1.3.4)
- actioncable (= 7.1.3.4)
- actionmailbox (= 7.1.3.4)
- actionmailer (= 7.1.3.4)
- actionpack (= 7.1.3.4)
- actiontext (= 7.1.3.4)
- actionview (= 7.1.3.4)
- activejob (= 7.1.3.4)
- activemodel (= 7.1.3.4)
- activerecord (= 7.1.3.4)
- activestorage (= 7.1.3.4)
- activesupport (= 7.1.3.4)
+ rails (7.1.4)
+ actioncable (= 7.1.4)
+ actionmailbox (= 7.1.4)
+ actionmailer (= 7.1.4)
+ actionpack (= 7.1.4)
+ actiontext (= 7.1.4)
+ actionview (= 7.1.4)
+ activejob (= 7.1.4)
+ activemodel (= 7.1.4)
+ activerecord (= 7.1.4)
+ activestorage (= 7.1.4)
+ activesupport (= 7.1.4)
bundler (>= 1.15.0)
- railties (= 7.1.3.4)
+ railties (= 7.1.4)
rails-dom-testing (2.2.0)
activesupport (>= 5.0.0)
minitest
@@ -183,9 +183,9 @@ GEM
rails-html-sanitizer (1.6.0)
loofah (~> 2.21)
nokogiri (~> 1.14)
- railties (7.1.3.4)
- actionpack (= 7.1.3.4)
- activesupport (= 7.1.3.4)
+ railties (7.1.4)
+ actionpack (= 7.1.4)
+ activesupport (= 7.1.4)
irb
rackup (>= 1.0.0)
rake (>= 12.2)
@@ -200,18 +200,18 @@ GEM
connection_pool
reline (0.5.9)
io-console (~> 0.5)
- rspec-core (3.13.0)
+ rspec-core (3.13.1)
rspec-support (~> 3.13.0)
- rspec-expectations (3.13.1)
+ rspec-expectations (3.13.2)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-mocks (3.13.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
- rspec-rails (6.1.3)
- actionpack (>= 6.1)
- activesupport (>= 6.1)
- railties (>= 6.1)
+ rspec-rails (7.0.1)
+ actionpack (>= 7.0)
+ activesupport (>= 7.0)
+ railties (>= 7.0)
rspec-core (~> 3.13)
rspec-expectations (~> 3.13)
rspec-mocks (~> 3.13)
@@ -220,22 +220,22 @@ GEM
sprockets (4.2.1)
concurrent-ruby (~> 1.0)
rack (>= 2.2.4, < 4)
- sprockets-rails (3.5.1)
+ sprockets-rails (3.5.2)
actionpack (>= 6.1)
activesupport (>= 6.1)
sprockets (>= 3.0.0)
- stimulus-rails (1.3.3)
+ stimulus-rails (1.3.4)
railties (>= 6.0.0)
stringio (3.1.1)
- thor (1.3.1)
+ thor (1.3.2)
timeout (0.4.1)
- turbo-rails (2.0.5)
+ turbo-rails (2.0.6)
actionpack (>= 6.0.0)
activejob (>= 6.0.0)
railties (>= 6.0.0)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
- uri (0.13.0)
+ uri (0.13.1)
web-console (4.2.1)
actionview (>= 6.0.0)
activemodel (>= 6.0.0)
@@ -245,7 +245,7 @@ GEM
websocket-driver (0.7.6)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
- zeitwerk (2.6.16)
+ zeitwerk (2.6.18)
PLATFORMS
aarch64-linux
diff --git a/app/javascript/controllers/common/dropdown_controller.js b/app/javascript/controllers/common/dropdown_controller.js
new file mode 100644
index 0000000..5290d24
--- /dev/null
+++ b/app/javascript/controllers/common/dropdown_controller.js
@@ -0,0 +1,25 @@
+import { Controller } from "@hotwired/stimulus"
+
+export default class extends Controller {
+ static targets = ["menu"]
+
+ connect() {
+ this.boundCloseMenu = this.closeMenuIfClickedOutside.bind(this)
+ document.addEventListener('click', this.boundCloseMenu)
+ }
+
+ toggleMenu(event) {
+ event.stopPropagation() // Prevent click from bubbling up
+ this.menuTarget.classList.toggle('hidden')
+ }
+
+ closeMenuIfClickedOutside(event) {
+ if (!this.element.contains(event.target) && !this.menuTarget.classList.contains('hidden')) {
+ this.menuTarget.classList.add('hidden')
+ }
+ }
+
+ disconnect() {
+ document.removeEventListener('click', this.boundCloseMenu)
+ }
+}
diff --git a/app/javascript/controllers/index.js b/app/javascript/controllers/index.js
index 4835a0b..5e0316e 100644
--- a/app/javascript/controllers/index.js
+++ b/app/javascript/controllers/index.js
@@ -6,5 +6,7 @@ import { application } from "./application"
import HelloController from "./hello_controller"
import SidebarMenuController from "./sidebar_menu_controller"
+import DropdownController from "./common/dropdown_controller"
application.register("hello", HelloController)
application.register("sidebar-menu", SidebarMenuController)
+application.register("dropdown", DropdownController)
diff --git a/app/models/service.rb b/app/models/service.rb
index c7efa39..04ecb85 100644
--- a/app/models/service.rb
+++ b/app/models/service.rb
@@ -22,23 +22,40 @@ def fetch_repository_branches
version_control_bridge.branches(owner: owner, repo: repo)
end
- private
+ def fetch_pull_requests
+ return [] unless version_control_bridge
+
+ owner, repo, _ = parse_repository_url
+ version_control_bridge.pull_requests(owner: owner, repo: repo, per_page: 2)
+ end
+
+ def fetch_commits
+ return [] unless version_control_bridge
+
+ owner, repo, _ = parse_repository_url
+ version_control_bridge.commits(owner: owner, repo: repo, per_page: 2)
+ end
+
+ def fetch_workflow_runs
+ return [] unless version_control_bridge
+
+ owner, repo, _ = parse_repository_url
+ version_control_bridge.workflow_runs(owner: owner, repo: repo, per_page: 2)
+ end
+
def parse_repository_url
repository_url.match(%r{github.com/([^/]+)/([^/]+)/?(.*)$})&.captures
end
+
+ private
+
def version_control_bridge
- return unless client
- @version_control ||= VersionControl::Bridge.new(client)
- end
-
- def client
- case repository_url
- when /github.com/
- VersionControl::Api::Github.new(repository_access_token)
- else
- #raise 'Unsupported repository'
- nil
- end
+ @version_control ||= VersionControl::Bridge.new(version_control_api)
+ end
+
+ def version_control_api
+ # TODO: determine the api based on the service
+ VersionControl::Api::Github.new(access_token: repository_access_token)
end
end
diff --git a/app/services/version_control/api/github.rb b/app/services/version_control/api/github.rb
index 1746504..65cd507 100644
--- a/app/services/version_control/api/github.rb
+++ b/app/services/version_control/api/github.rb
@@ -1,16 +1,27 @@
module VersionControl
module Api
class Github
- def initialize(access_token)
- @connection ||= ConnectionFactory.github(access_token)
+ GITHUB_API_URL = 'https://api.github.com'.freeze
+
+ def initialize(access_token:)
+ @connection ||= ConnectionFactory.github(url: GITHUB_API_URL, access_token: access_token)
end
- def repositories(org:)
- @connection.get("/orgs/#{org}/repos").body
+ def commits(owner:, repo:, per_page:)
+ @connection.get("/repos/#{owner}/#{repo}/commits?per_page=#{per_page}").body
+ end
+
+ def pull_requests(owner:, repo:, per_page:)
+ @connection.get("/repos/#{owner}/#{repo}/pulls?per_page=#{per_page}").body
end
- def commits(owner:, repo:)
- @connection.get("/repos/#{owner}/#{repo}/commits").body
+ def workflow_runs(owner:, repo:, per_page:)
+ @connection.get("/repos/#{owner}/#{repo}/actions/runs?per_page=#{per_page}").body
+ end
+
+ # FIXME: This method is not used anywhere
+ def repositories(org:)
+ @connection.get("/orgs/#{org}/repos").body
end
def branches(owner:, repo:)
diff --git a/app/services/version_control/bridge.rb b/app/services/version_control/bridge.rb
index 75a7dce..e1a8c4d 100644
--- a/app/services/version_control/bridge.rb
+++ b/app/services/version_control/bridge.rb
@@ -1,25 +1,33 @@
module VersionControl
class Bridge
- attr_reader :client
+ attr_reader :api
- def initialize(client)
- @client = client
+ def initialize(api)
+ @api = api
end
def repositories(org:)
- client.repositories(org:)
+ api.repositories(org:)
end
- def commits(owner:, repo:)
- client.commits(owner:, repo:)
+ def commits(owner:, repo:, per_page:)
+ api.commits(owner:, repo:, per_page:)
+ end
+
+ def workflow_runs(owner:, repo:, per_page:)
+ api.workflow_runs(owner:, repo:, per_page:)
end
def branches(owner:, repo:)
- client.branches(owner:, repo:)
+ api.branches(owner:, repo:)
end
def repository_content(owner:, repo:, path:)
- client.repository_content(owner:, repo:, path:)
+ api.repository_content(owner:, repo:, path:)
+ end
+
+ def pull_requests(owner:, repo:, per_page:)
+ api.pull_requests(owner:, repo:, per_page:)
end
end
end
\ No newline at end of file
diff --git a/app/services/version_control/connection_factory.rb b/app/services/version_control/connection_factory.rb
index 731dd87..4b89ec0 100644
--- a/app/services/version_control/connection_factory.rb
+++ b/app/services/version_control/connection_factory.rb
@@ -1,10 +1,7 @@
module VersionControl
class ConnectionFactory
- GITHUB_API_URL = 'https://api.github.com'.freeze
-
- def self.github(access_token)
- Faraday.new(url: GITHUB_API_URL) do |builder|
- #builder.request :authorization, 'Bearer', -> { Rails.application.credentials.github[:access_token] }
+ def self.github(url:, access_token:)
+ Faraday.new(url: url) do |builder|
builder.request :authorization, 'Bearer', -> { access_token }
builder.response :json
builder.request :url_encoded
diff --git a/app/views/services/_service.html.erb b/app/views/services/_service.html.erb
index a24520b..a4a5488 100644
--- a/app/views/services/_service.html.erb
+++ b/app/views/services/_service.html.erb
@@ -1,17 +1,35 @@
-
-
- Name:
- <%= link_to service.name, service, class: "link" %>
-
-
-
- Repository url:
- <%= service.repository_url %>
-
-
-
- Uuid:
- <%= service.uuid %>
-
+
+
+
+ <%= link_to service.name, service, class: "text-indigo-600 hover:text-indigo-800 hover:underline" %>
+
+
+
UUID: <%= service.uuid %>
+
+
+
+
+
Repository URL
+
+ <%= link_to service.repository_url, service.repository_url, class: "text-blue-600 hover:underline break-all" %>
+
+
+
+
diff --git a/app/views/services/show.html.erb b/app/views/services/show.html.erb
index 4b414df..95be0d3 100644
--- a/app/views/services/show.html.erb
+++ b/app/views/services/show.html.erb
@@ -1,27 +1,198 @@
-
<%= notice %>
+
<%= notice %>
-<%= page_header(@service.name) %>
+
+
+ <%= page_header(@service.name) %>
+
+
+
+
+
+ <%= link_to "Add environment", new_service_stage_environment_path(@service), class: "text-gray-700 block px-4 py-2 text-sm hover:bg-gray-100 hover:text-gray-900", role: "menuitem" %>
+ <%= link_to "Edit this service", edit_service_path(@service), class: "text-gray-700 block px-4 py-2 text-sm hover:bg-gray-100 hover:text-gray-900", role: "menuitem" %>
+
+
+
+
+
+
+
<%= render @service %>
-
-
-
-
Repository Contents
+
+
+
+
+
+ CI/CD Pipeline Status
+
+
+
Current Build:
+
Success
+
+
+
+
+
+
+
+ Code Quality and Security Metrics
+
+
+
Linting Issues
+
5 Issues
+
+
+
Code Smells
+
2 Smells
+
+
+
Security Vulnerabilities
+
1 Critical
+
+
+
+
+
+
+
+ Deployment Overview
+
+
+
Last Deployment (Production)
+
Success
+
+
+
+
+
+
+
+
+
+
+ Production Monitoring and Errors
+
+
Most Recent Error
+
500 Internal Server Error
+
View Logs
+
+
+
+
+
+ Repository Stats and Activity
+
+
+
Recent Commits
+
+ <% @service.fetch_commits.each do |h| %>
+ -
+ <%= link_to h.dig("commit", "message"), h["html_url"], class: "text-gray text-blue-500 hover:underline" %>
+
+ <% end %>
+
+
+
+
Open Pull Requests
+
+ <% @service.fetch_pull_requests.each do |h| %>
+ -
+ <%= link_to h["title"], h["html_url"], class: "text-gray text-blue-500 hover:underline" %>
+
+ <% end %>
+
+
+
+
+
+
+
+ Notifications and Alerts
+
+
⚠️ New high-severity bug found in production
+
⚠️ Deployment failed on staging
+
Manage Alerts
+
+
+
+
+
+ Team Activity and Collaboration
+
+
Ongoing Code Reviews
+ <% if @service.fetch_pull_requests.any? %>
+ <% @service.fetch_pull_requests.each do |h| %>
+
+ Reviewing PR : <%= link_to h["title"], h["html_url"], class: "text-blue-500 hover:underline" %>
+
+
+ Status: <%= h["state"] %> | <%= h["comments"] %> Comments | <%= h["review_comments"] %> Review Comments
+
+ <% end %>
+ <% else %>
+
No active pull requests at the moment.
+ <% end %>
+
+
+
+
+
+ Historical Trends and Reports
+ Deployment Frequency Over Time
+
+ View Full Report
+
+
+
+
+
+
+
+
+
+
+
-
-
-
Repository Branches
+
+
Repository Branches
<% @service.fetch_repository_branches.each do |branch| %>
-
@@ -44,23 +215,25 @@
-
-
-
-
- <%= link_to "Add environment", new_service_stage_environment_path(@service), class: "text-gray-700 block px-4 py-2 text-sm hover:bg-gray-100 hover:text-gray-900", role: "menuitem" %>
- <%= link_to "Edit this service", edit_service_path(@service), class: "text-gray-700 block px-4 py-2 text-sm hover:bg-gray-100 hover:text-gray-900", role: "menuitem" %>
-
-
-
-
+
+
+
diff --git a/package.json b/package.json
index 9bc2da6..e066a97 100644
--- a/package.json
+++ b/package.json
@@ -9,7 +9,7 @@
"@hotwired/stimulus": "^3.2.2",
"@hotwired/turbo-rails": "^8.0.4",
"autoprefixer": "^10.4.19",
- "esbuild": "^0.21.4",
+ "esbuild": "^0.23.1",
"postcss": "^8.4.38",
"tailwindcss": "^3.4.3"
}
diff --git a/spec/factories/services.rb b/spec/factories/services.rb
index caf211d..6f69f89 100644
--- a/spec/factories/services.rb
+++ b/spec/factories/services.rb
@@ -2,5 +2,6 @@
factory :service do
name { Faker::App.name }
repository_url { Faker::Internet.url }
+ repository_access_token { Faker::Internet.password }
end
end
diff --git a/spec/requests/services_spec.rb b/spec/requests/services_spec.rb
index d0b97a9..d720189 100644
--- a/spec/requests/services_spec.rb
+++ b/spec/requests/services_spec.rb
@@ -1,6 +1,14 @@
require 'rails_helper'
RSpec.describe "/services", type: :request do
+ # FIXME: replace with vcr cassettes
+ before do
+ allow_any_instance_of(Service).to receive(:fetch_commits).and_return([])
+ allow_any_instance_of(Service).to receive(:fetch_pull_requests).and_return([])
+ allow_any_instance_of(Service).to receive(:fetch_repository_content).and_return([])
+ allow_any_instance_of(Service).to receive(:fetch_repository_branches).and_return([])
+ end
+
it_behaves_like :controller, Service do
let(:valid_attributes) { attributes_for(:service) }
let(:invalid_attributes) { attributes_for(:service, name: "") }
diff --git a/spec/services/version_control/api/github_spec.rb b/spec/services/version_control/api/github_spec.rb
index 7043093..4593b28 100644
--- a/spec/services/version_control/api/github_spec.rb
+++ b/spec/services/version_control/api/github_spec.rb
@@ -1,7 +1,8 @@
require 'rails_helper'
RSpec.describe VersionControl::Api::Github do
- let(:service) { described_class.new }
+ let(:service) { described_class.new(access_token: access_token) }
+ let(:access_token) { 'access_token' }
describe '#repositories' do
subject(:repositories) { service.repositories(org: org_name) }
@@ -17,14 +18,15 @@
end
describe '#commits' do
- subject(:commits) { service.commits(owner: owner, repo: repo) }
+ subject(:commits) { service.commits(owner: owner, repo: repo, per_page: per_page) }
let(:owner) { 'example' }
let(:repo) { 'repo' }
+ let(:per_page) { 10 }
let(:commits_response) { [{ 'sha' => '123' }, { 'sha' => '456' }] }
it 'fetches commits from Github API' do
- allow_any_instance_of(Faraday::Connection).to receive(:get).with("/repos/#{owner}/#{repo}/commits").and_return(double('Faraday::Response', body: commits_response))
+ allow_any_instance_of(Faraday::Connection).to receive(:get).with("/repos/#{owner}/#{repo}/commits?per_page=#{per_page}").and_return(double('Faraday::Response', body: commits_response))
expect(commits).to eq(commits_response)
end
@@ -44,4 +46,20 @@
expect(repository_content).to eq(content_response)
end
end
+
+ describe '#pull_requests' do
+ subject(:pull_requests) { service.pull_requests(owner: owner, repo: repo, per_page: per_page) }
+
+ let(:owner) { 'example' }
+ let(:repo) { 'repo' }
+ let(:per_page) { 10 }
+ let(:pull_requests_response) { [{ 'number' => 1 }, { 'number' => 2 }] }
+
+ it 'fetches pull requests from Github API' do
+ allow_any_instance_of(Faraday::Connection).to receive(:get).with("/repos/#{owner}/#{repo}/pulls?per_page=#{per_page}").and_return(double('Faraday::Response', body: pull_requests_response))
+
+ expect(pull_requests).to eq(pull_requests_response)
+ end
+ end
+
end
diff --git a/spec/services/version_control/bridge_spec.rb b/spec/services/version_control/bridge_spec.rb
index 6ec34f2..eaed809 100644
--- a/spec/services/version_control/bridge_spec.rb
+++ b/spec/services/version_control/bridge_spec.rb
@@ -16,8 +16,8 @@
it 'calls client.commits with the provided owner and repo' do
owner = 'example_owner'
repo = 'example_repo'
- expect(mocked_client).to receive(:commits).with(owner: owner, repo: repo)
- subject.commits(owner: owner, repo: repo)
+ expect(mocked_client).to receive(:commits).with(owner: owner, repo: repo, per_page: 2)
+ subject.commits(owner: owner, repo: repo, per_page: 2)
end
end
@@ -30,4 +30,13 @@
subject.repository_content(owner: owner, repo: repo, path: path)
end
end
+
+ describe '#pull_requests' do
+ it 'calls client.pull_requests with the provided owner and repo' do
+ owner = 'example_owner'
+ repo = 'example_repo'
+ expect(mocked_client).to receive(:pull_requests).with(owner: owner, repo: repo, per_page: 2)
+ subject.pull_requests(owner: owner, repo: repo, per_page: 2)
+ end
+ end
end
diff --git a/spec/services/version_control/connection_factory_spec.rb b/spec/services/version_control/connection_factory_spec.rb
new file mode 100644
index 0000000..97b33d3
--- /dev/null
+++ b/spec/services/version_control/connection_factory_spec.rb
@@ -0,0 +1,33 @@
+require 'rails_helper'
+
+RSpec.describe VersionControl::ConnectionFactory do
+ describe '.github' do
+ let(:url) { 'https://api.github.com' }
+ let(:access_token) { 'fake_access_token' }
+ let(:connection) { instance_double(Faraday::Connection) }
+
+ before do
+ allow(Faraday).to receive(:new).and_yield(connection).and_return(connection)
+ allow(connection).to receive(:request)
+ allow(connection).to receive(:response)
+ allow(connection).to receive(:adapter)
+ allow(connection).to receive(:headers).and_return({})
+ end
+
+ it 'creates a Faraday connection with the correct URL' do
+ described_class.github(url: url, access_token: access_token)
+ expect(Faraday).to have_received(:new).with(url: url)
+ end
+
+ it 'sets the authorization header' do
+ expect(connection).to receive(:request).with(:authorization, 'Bearer', anything)
+ described_class.github(url: url, access_token: access_token)
+ end
+
+ it 'sets the correct headers' do
+ described_class.github(url: url, access_token: access_token)
+ expect(connection.headers['Accept']).to eq('application/vnd.github+json')
+ expect(connection.headers['X-GitHub-Api-Version']).to eq('2022-11-28')
+ end
+ end
+end
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index 9f838fa..b12e615 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -7,120 +7,125 @@
resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30"
integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==
-"@esbuild/aix-ppc64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f"
- integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==
-
-"@esbuild/android-arm64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052"
- integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==
-
-"@esbuild/android-arm@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28"
- integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==
-
-"@esbuild/android-x64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e"
- integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==
-
-"@esbuild/darwin-arm64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a"
- integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==
-
-"@esbuild/darwin-x64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22"
- integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==
-
-"@esbuild/freebsd-arm64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e"
- integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==
-
-"@esbuild/freebsd-x64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261"
- integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==
-
-"@esbuild/linux-arm64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b"
- integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==
-
-"@esbuild/linux-arm@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9"
- integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==
-
-"@esbuild/linux-ia32@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2"
- integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==
-
-"@esbuild/linux-loong64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df"
- integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==
-
-"@esbuild/linux-mips64el@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe"
- integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==
-
-"@esbuild/linux-ppc64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4"
- integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==
-
-"@esbuild/linux-riscv64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc"
- integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==
-
-"@esbuild/linux-s390x@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de"
- integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==
-
-"@esbuild/linux-x64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0"
- integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==
-
-"@esbuild/netbsd-x64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047"
- integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==
-
-"@esbuild/openbsd-x64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70"
- integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==
-
-"@esbuild/sunos-x64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b"
- integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==
-
-"@esbuild/win32-arm64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d"
- integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==
-
-"@esbuild/win32-ia32@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b"
- integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==
-
-"@esbuild/win32-x64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c"
- integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==
+"@esbuild/aix-ppc64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz#51299374de171dbd80bb7d838e1cfce9af36f353"
+ integrity sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==
+
+"@esbuild/android-arm64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz#58565291a1fe548638adb9c584237449e5e14018"
+ integrity sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==
+
+"@esbuild/android-arm@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.23.1.tgz#5eb8c652d4c82a2421e3395b808e6d9c42c862ee"
+ integrity sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==
+
+"@esbuild/android-x64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.23.1.tgz#ae19d665d2f06f0f48a6ac9a224b3f672e65d517"
+ integrity sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==
+
+"@esbuild/darwin-arm64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz#05b17f91a87e557b468a9c75e9d85ab10c121b16"
+ integrity sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==
+
+"@esbuild/darwin-x64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz#c58353b982f4e04f0d022284b8ba2733f5ff0931"
+ integrity sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==
+
+"@esbuild/freebsd-arm64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz#f9220dc65f80f03635e1ef96cfad5da1f446f3bc"
+ integrity sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==
+
+"@esbuild/freebsd-x64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz#69bd8511fa013b59f0226d1609ac43f7ce489730"
+ integrity sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==
+
+"@esbuild/linux-arm64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz#8050af6d51ddb388c75653ef9871f5ccd8f12383"
+ integrity sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==
+
+"@esbuild/linux-arm@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz#ecaabd1c23b701070484990db9a82f382f99e771"
+ integrity sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==
+
+"@esbuild/linux-ia32@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz#3ed2273214178109741c09bd0687098a0243b333"
+ integrity sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==
+
+"@esbuild/linux-loong64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz#a0fdf440b5485c81b0fbb316b08933d217f5d3ac"
+ integrity sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==
+
+"@esbuild/linux-mips64el@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz#e11a2806346db8375b18f5e104c5a9d4e81807f6"
+ integrity sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==
+
+"@esbuild/linux-ppc64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz#06a2744c5eaf562b1a90937855b4d6cf7c75ec96"
+ integrity sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==
+
+"@esbuild/linux-riscv64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz#65b46a2892fc0d1af4ba342af3fe0fa4a8fe08e7"
+ integrity sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==
+
+"@esbuild/linux-s390x@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz#e71ea18c70c3f604e241d16e4e5ab193a9785d6f"
+ integrity sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==
+
+"@esbuild/linux-x64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz#d47f97391e80690d4dfe811a2e7d6927ad9eed24"
+ integrity sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==
+
+"@esbuild/netbsd-x64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz#44e743c9778d57a8ace4b72f3c6b839a3b74a653"
+ integrity sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==
+
+"@esbuild/openbsd-arm64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz#05c5a1faf67b9881834758c69f3e51b7dee015d7"
+ integrity sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==
+
+"@esbuild/openbsd-x64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz#2e58ae511bacf67d19f9f2dcd9e8c5a93f00c273"
+ integrity sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==
+
+"@esbuild/sunos-x64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz#adb022b959d18d3389ac70769cef5a03d3abd403"
+ integrity sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==
+
+"@esbuild/win32-arm64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz#84906f50c212b72ec360f48461d43202f4c8b9a2"
+ integrity sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==
+
+"@esbuild/win32-ia32@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz#5e3eacc515820ff729e90d0cb463183128e82fac"
+ integrity sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==
+
+"@esbuild/win32-x64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz#81fd50d11e2c32b2d6241470e3185b70c7b30699"
+ integrity sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==
"@hotwired/stimulus@^3.2.2":
version "3.2.2"
@@ -128,17 +133,17 @@
integrity sha512-eGeIqNOQpXoPAIP7tC1+1Yc1yl1xnwYqg+3mzqxyrbE5pg5YFBZcA6YoTiByJB6DKAEsiWtl6tjTJS4IYtbB7A==
"@hotwired/turbo-rails@^8.0.4":
- version "8.0.4"
- resolved "https://registry.yarnpkg.com/@hotwired/turbo-rails/-/turbo-rails-8.0.4.tgz#d224f524a9e33fe687cec5d706054eb6fe13fa5b"
- integrity sha512-GHCv5+B2VzYZZvMFpg/g9JLx/8pl/8chcubSB7T+Xn1zYOMqAKB6cT80vvWUzxdwfm/2KfaRysfDz+BmvtjFaw==
+ version "8.0.5"
+ resolved "https://registry.yarnpkg.com/@hotwired/turbo-rails/-/turbo-rails-8.0.5.tgz#18c2f0e4f7f952307650308590edf5eb9544b0d3"
+ integrity sha512-1A9G9u28IRAl0C57z8Ka3AhNPyJdwfOrbjr+ABZk2ZEUw2QO7cJ0pgs77asUj2E/tzn1PgrxrSVu24W+1Q5uBA==
dependencies:
- "@hotwired/turbo" "^8.0.4"
+ "@hotwired/turbo" "^8.0.5"
"@rails/actioncable" "^7.0"
-"@hotwired/turbo@^8.0.4":
- version "8.0.4"
- resolved "https://registry.yarnpkg.com/@hotwired/turbo/-/turbo-8.0.4.tgz#5c5361c06a37cdf10dcba4223f1afd0ca1c75091"
- integrity sha512-mlZEFUZrJnpfj+g/XeCWWuokvQyN68WvM78JM+0jfSFc98wegm259vCbC1zSllcspRwbgXK31ibehCy5PA78/Q==
+"@hotwired/turbo@^8.0.5":
+ version "8.0.5"
+ resolved "https://registry.yarnpkg.com/@hotwired/turbo/-/turbo-8.0.5.tgz#abae6dad018a891e4286e87fa0959217e3866d5a"
+ integrity sha512-TdZDA7fxVQ2ZycygvpnzjGPmFq4sO/E2QVg+2em/sJ3YTSsIWVEis8HmWlumz+c9DjWcUkcCuB+muF08TInpAQ==
"@isaacs/cliui@^8.0.2":
version "8.0.2"
@@ -211,9 +216,9 @@
integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
"@rails/actioncable@^7.0":
- version "7.1.3"
- resolved "https://registry.yarnpkg.com/@rails/actioncable/-/actioncable-7.1.3.tgz#4db480347775aeecd4dde2405659eef74a458881"
- integrity sha512-ojNvnoZtPN0pYvVFtlO7dyEN9Oml1B6IDM+whGKVak69MMYW99lC2NOWXWeE3bmwEydbP/nn6ERcpfjHVjYQjA==
+ version "7.2.100"
+ resolved "https://registry.yarnpkg.com/@rails/actioncable/-/actioncable-7.2.100.tgz#86ec1c2e00c357cef1e421fd63863d5c34339ce8"
+ integrity sha512-7xtIENf0Yw59AFDM3+xqxPCZxev3QVAqjPmUzmgsB9eL8S/zTpB0IU9srNc7XknzJI4e09XKNnCaJRx3gfYzXA==
ansi-regex@^5.0.1:
version "5.0.1"
@@ -256,15 +261,15 @@ arg@^5.0.2:
integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==
autoprefixer@^10.4.19:
- version "10.4.19"
- resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.19.tgz#ad25a856e82ee9d7898c59583c1afeb3fa65f89f"
- integrity sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==
+ version "10.4.20"
+ resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b"
+ integrity sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==
dependencies:
- browserslist "^4.23.0"
- caniuse-lite "^1.0.30001599"
+ browserslist "^4.23.3"
+ caniuse-lite "^1.0.30001646"
fraction.js "^4.3.7"
normalize-range "^0.1.2"
- picocolors "^1.0.0"
+ picocolors "^1.0.1"
postcss-value-parser "^4.2.0"
balanced-match@^1.0.0:
@@ -291,25 +296,25 @@ braces@^3.0.3, braces@~3.0.2:
dependencies:
fill-range "^7.1.1"
-browserslist@^4.23.0:
- version "4.23.0"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab"
- integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==
+browserslist@^4.23.3:
+ version "4.23.3"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800"
+ integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==
dependencies:
- caniuse-lite "^1.0.30001587"
- electron-to-chromium "^1.4.668"
- node-releases "^2.0.14"
- update-browserslist-db "^1.0.13"
+ caniuse-lite "^1.0.30001646"
+ electron-to-chromium "^1.5.4"
+ node-releases "^2.0.18"
+ update-browserslist-db "^1.1.0"
camelcase-css@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5"
integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
-caniuse-lite@^1.0.30001587, caniuse-lite@^1.0.30001599:
- version "1.0.30001625"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001625.tgz#ead1b155ea691d6a87938754d3cb119c24465b03"
- integrity sha512-4KE9N2gcRH+HQhpeiRZXd+1niLB/XNLAhSy4z7fI8EzcbcPoAqjNInxVHTiTwWfTIV4w096XG8OtCOCQQKPv3w==
+caniuse-lite@^1.0.30001646:
+ version "1.0.30001655"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz#0ce881f5a19a2dcfda2ecd927df4d5c1684b982f"
+ integrity sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==
chokidar@^3.5.3:
version "3.6.0"
@@ -372,10 +377,10 @@ eastasianwidth@^0.2.0:
resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
-electron-to-chromium@^1.4.668:
- version "1.4.788"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.788.tgz#a3545959d5cfa0a266d3e551386c040be34e7e06"
- integrity sha512-ubp5+Ev/VV8KuRoWnfP2QF2Bg+O2ZFdb49DiiNbz2VmgkIqrnyYaqIOqj8A6K/3p1xV0QcU5hBQ1+BmB6ot1OA==
+electron-to-chromium@^1.5.4:
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz#1abf0410c5344b2b829b7247e031f02810d442e6"
+ integrity sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==
emoji-regex@^8.0.0:
version "8.0.0"
@@ -387,39 +392,40 @@ emoji-regex@^9.2.2:
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
-esbuild@^0.21.4:
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d"
- integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==
+esbuild@^0.23.1:
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.23.1.tgz#40fdc3f9265ec0beae6f59824ade1bd3d3d2dab8"
+ integrity sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==
optionalDependencies:
- "@esbuild/aix-ppc64" "0.21.5"
- "@esbuild/android-arm" "0.21.5"
- "@esbuild/android-arm64" "0.21.5"
- "@esbuild/android-x64" "0.21.5"
- "@esbuild/darwin-arm64" "0.21.5"
- "@esbuild/darwin-x64" "0.21.5"
- "@esbuild/freebsd-arm64" "0.21.5"
- "@esbuild/freebsd-x64" "0.21.5"
- "@esbuild/linux-arm" "0.21.5"
- "@esbuild/linux-arm64" "0.21.5"
- "@esbuild/linux-ia32" "0.21.5"
- "@esbuild/linux-loong64" "0.21.5"
- "@esbuild/linux-mips64el" "0.21.5"
- "@esbuild/linux-ppc64" "0.21.5"
- "@esbuild/linux-riscv64" "0.21.5"
- "@esbuild/linux-s390x" "0.21.5"
- "@esbuild/linux-x64" "0.21.5"
- "@esbuild/netbsd-x64" "0.21.5"
- "@esbuild/openbsd-x64" "0.21.5"
- "@esbuild/sunos-x64" "0.21.5"
- "@esbuild/win32-arm64" "0.21.5"
- "@esbuild/win32-ia32" "0.21.5"
- "@esbuild/win32-x64" "0.21.5"
+ "@esbuild/aix-ppc64" "0.23.1"
+ "@esbuild/android-arm" "0.23.1"
+ "@esbuild/android-arm64" "0.23.1"
+ "@esbuild/android-x64" "0.23.1"
+ "@esbuild/darwin-arm64" "0.23.1"
+ "@esbuild/darwin-x64" "0.23.1"
+ "@esbuild/freebsd-arm64" "0.23.1"
+ "@esbuild/freebsd-x64" "0.23.1"
+ "@esbuild/linux-arm" "0.23.1"
+ "@esbuild/linux-arm64" "0.23.1"
+ "@esbuild/linux-ia32" "0.23.1"
+ "@esbuild/linux-loong64" "0.23.1"
+ "@esbuild/linux-mips64el" "0.23.1"
+ "@esbuild/linux-ppc64" "0.23.1"
+ "@esbuild/linux-riscv64" "0.23.1"
+ "@esbuild/linux-s390x" "0.23.1"
+ "@esbuild/linux-x64" "0.23.1"
+ "@esbuild/netbsd-x64" "0.23.1"
+ "@esbuild/openbsd-arm64" "0.23.1"
+ "@esbuild/openbsd-x64" "0.23.1"
+ "@esbuild/sunos-x64" "0.23.1"
+ "@esbuild/win32-arm64" "0.23.1"
+ "@esbuild/win32-ia32" "0.23.1"
+ "@esbuild/win32-x64" "0.23.1"
escalade@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27"
- integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5"
+ integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
fast-glob@^3.3.0:
version "3.3.2"
@@ -447,9 +453,9 @@ fill-range@^7.1.1:
to-regex-range "^5.0.1"
foreground-child@^3.1.0:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.2.1.tgz#767004ccf3a5b30df39bed90718bab43fe0a59f7"
- integrity sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77"
+ integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==
dependencies:
cross-spawn "^7.0.0"
signal-exit "^4.0.1"
@@ -510,9 +516,9 @@ is-binary-path@~2.1.0:
binary-extensions "^2.0.0"
is-core-module@^2.13.0:
- version "2.14.0"
- resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.14.0.tgz#43b8ef9f46a6a08888db67b1ffd4ec9e3dfd59d1"
- integrity sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==
+ version "2.15.1"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37"
+ integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==
dependencies:
hasown "^2.0.2"
@@ -583,9 +589,9 @@ merge2@^1.3.0:
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
micromatch@^4.0.4, micromatch@^4.0.5:
- version "4.0.7"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5"
- integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
+ integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
dependencies:
braces "^3.0.3"
picomatch "^2.3.1"
@@ -616,10 +622,10 @@ nanoid@^3.3.7:
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
-node-releases@^2.0.14:
- version "2.0.14"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b"
- integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==
+node-releases@^2.0.18:
+ version "2.0.18"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f"
+ integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
@@ -709,16 +715,16 @@ postcss-load-config@^4.0.1:
yaml "^2.3.4"
postcss-nested@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c"
- integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.2.0.tgz#4c2d22ab5f20b9cb61e2c5c5915950784d068131"
+ integrity sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==
dependencies:
- postcss-selector-parser "^6.0.11"
+ postcss-selector-parser "^6.1.1"
-postcss-selector-parser@^6.0.11:
- version "6.1.1"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz#5be94b277b8955904476a2400260002ce6c56e38"
- integrity sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==
+postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.1.1:
+ version "6.1.2"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de"
+ integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==
dependencies:
cssesc "^3.0.0"
util-deprecate "^1.0.2"
@@ -729,9 +735,9 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0:
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
postcss@^8.4.23, postcss@^8.4.38:
- version "8.4.39"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.39.tgz#aa3c94998b61d3a9c259efa51db4b392e1bde0e3"
- integrity sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==
+ version "8.4.44"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.44.tgz#d56834ef6508610ba224bb22b2457b2169ed0480"
+ integrity sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw==
dependencies:
nanoid "^3.3.7"
picocolors "^1.0.1"
@@ -866,9 +872,9 @@ supports-preserve-symlinks-flag@^1.0.0:
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
tailwindcss@^3.4.3:
- version "3.4.4"
- resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.4.tgz#351d932273e6abfa75ce7d226b5bf3a6cb257c05"
- integrity sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==
+ version "3.4.10"
+ resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.10.tgz#70442d9aeb78758d1f911af29af8255ecdb8ffef"
+ integrity sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==
dependencies:
"@alloc/quick-lru" "^5.2.0"
arg "^5.0.2"
@@ -919,10 +925,10 @@ ts-interface-checker@^0.1.9:
resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699"
integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
-update-browserslist-db@^1.0.13:
- version "1.0.16"
- resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz#f6d489ed90fb2f07d67784eb3f53d7891f736356"
- integrity sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==
+update-browserslist-db@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e"
+ integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==
dependencies:
escalade "^3.1.2"
picocolors "^1.0.1"
@@ -958,6 +964,6 @@ wrap-ansi@^8.1.0:
strip-ansi "^7.0.1"
yaml@^2.3.4:
- version "2.4.5"
- resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.5.tgz#60630b206dd6d84df97003d33fc1ddf6296cca5e"
- integrity sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.0.tgz#c6165a721cf8000e91c36490a41d7be25176cf5d"
+ integrity sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==