• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pulibrary / tigerdata-app / f97fbbb7-3701-4487-b9e0-8756f056f051

21 Oct 2025 09:38PM UTC coverage: 81.319% (-5.6%) from 86.877%
f97fbbb7-3701-4487-b9e0-8756f056f051

push

circleci

web-flow
Bump vite from 5.4.20 to 5.4.21 in the npm_and_yarn group across 1 directory (#2062)

Bumps the npm_and_yarn group with 1 update in the / directory:
[vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).

Updates `vite` from 5.4.20 to 5.4.21
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/releases">vite's
releases</a>.</em></p>
<blockquote>
<h2>v5.4.21</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.21/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/blob/v5.4.21/packages/vite/CHANGELOG.md">vite's
changelog</a>.</em></p>
<blockquote>
<h2><!-- raw HTML omitted -->5.4.21 (2025-10-20)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix(dev): trim trailing slash before <code>server.fs.deny</code>
check (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/20968">#20968</a>)
(<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/20970">#20970</a>)
(<a
href="https://github.com/vitejs/vite/commit/<a class=hub.com/pulibrary/tigerdata-app/commit/cad1d31d0635dd8fd4ddfe6e5a92eb9ff13cd06c">cad1d31d0<a href="https://github.com/pulibrary/tigerdata-app/commit/ae0dcda34690b8fb46a97623fedcc053b5c5b31d">&quot;&gt;cad1d31&lt;/a&gt;),
closes &lt;a
href=&quot;https://redirect.github.com/vitejs/vite/issues/20968&quot;&gt;#20968&lt;/a&gt;
&lt;a
href=&quot;https://redirect.github.com/vitejs/vite/issues/20970">#20970</a></li>
<li>chore: update CHANGELOG (<a
href="https://github.com/vitejs/vite/commit/<a class="double-link" href="https://github.com/pulibrary/tigerdata-app/commit/ca88ed7398288ce0c60176ac9a6392f10654c67c">ca88ed739</a><a href="https://github.com/pulibrary/tigerdata-app/commit/ae0dcda34690b8fb46a97623fedcc053b5c5b31d">&quot;&gt;ca88ed7&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;Commits&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a
href=&quot;https://github.com/vitejs/vite/commit/</a><a class="double-link" href="https://github.com/pulibrary/tigerdata-app/commit/adce3c22c64cc9d44cc8f45cc92b543e3e4bf385">adce3c22c">adce3c2
release: v5.4.21
  • cad1d31 fix(dev): trim trailing slash before server.fs.deny check (
  • 2490 of 3062 relevant lines covered (81.32%)

    190.36 hits per line

    Source File
    Press 'n' to go to next uncovered line, 'b' for previous

    92.68
    /app/services/project_import.rb
    1
    require "csv"
    
    2✔
    2
    
    
    3
    class ProjectImport
    
    2✔
    4
    
    
    5
        attr_accessor :csv_data, :test_run
    
    2✔
    6
    
    
    7
        def initialize(csv_data, test_run: false)
    
    2✔
    8
            @csv_data = csv_data
    
    7✔
    9
            @test_run = test_run
    
    7✔
    10
        end
    
    11
    
    
    12
        def self.run_with_report(mediaflux_session:)
    
    2✔
    13
          report = Mediaflux::ProjectReport.new(session_token: mediaflux_session)
    
    3✔
    14
          return [report.response_error[:message]] if report.error?
    
    3✔
    15
    
    
    16
          importer = self.new(report.csv_data.gsub("\r\n",""))
    
    3✔
    17
          importer.run
    
    3✔
    18
        end
    
    19
    
    
    20
        def run
    
    2✔
    21
            output = []
    
    8✔
    22
            mediaflux_projects = CSV.new(csv_data, headers: true, liberal_parsing: true)
    
    8✔
    23
            mediaflux_projects.each do |project_metadata|
    
    8✔
    24
              project_id = project_metadata["projectID"]
    
    30✔
    25
              existing_project = Project.where("metadata_json @> ?", JSON.dump(project_id:))
    
    30✔
    26
              if existing_project.count > 0
    
    30✔
    27
                output << "Skipping project #{project_id}.  There are already #{existing_project.count} version of that project in the system"
    
    12✔
    28
              else
    
    29
                metadata = convert_csv(project_metadata:, project_id:)
    
    18✔
    30
                if test_run
    
    18✔
    31
                  output << metadata.to_json
    
    ×
    32
                else
    
    33
                  if metadata.data_user_read_only.first == "n/a" && metadata.data_user_read_only.count == 1
    
    18✔
    34
                    metadata.data_user_read_only = []
    
    ×
    35
                  end
    
    36
                  # Create the Rails record for the project
    
    37
                  project = Project.create(metadata:, mediaflux_id: project_metadata["asset"])
    
    18✔
    38
                  if (project.valid?)
    
    18✔
    39
                    output << "Created project for #{project_id}"
    
    8✔
    40
                  else
    
    41
                    output << "Error creating project for #{project_metadata["asset"]}: #{project.errors.to_a.join(";")}"
    
    10✔
    42
                  end
    
    43
                end
    
    44
              end
    
    45
            end
    
    46
            output
    
    8✔
    47
        rescue CSV::MalformedCSVError => error
    
    48
          ["Error parsing response #{ csv_data.to_s.slice(0,200) } error: #{error}"]
    
    ×
    49
        end
    
    50
    
    
    51
        private
    
    2✔
    52
            def convert_csv(project_metadata:, project_id:)
    
    2✔
    53
                data_user = parse_multiple(project_metadata, "dataUser")
    
    18✔
    54
                department_names = parse_multiple(project_metadata,"department")
    
    18✔
    55
                departments = department_names.map {|name| Affiliation.find_fuzzy_by_name(name)&.code || name }
    
    43✔
    56
    
    
    57
                storage_size_gb = project_metadata["quota"].downcase.to_f/1000000000.0
    
    18✔
    58
                ProjectMetadata.new_from_hash({
    
    18✔
    59
                  project_id:,
    
    60
                  title: project_metadata["title"],
    
    61
                  description: project_metadata["description"],
    
    62
                  status: Project::ACTIVE_STATUS,
    
    63
                  data_sponsor: project_metadata["dataSponsor"],
    
    64
                  data_manager: project_metadata["dataManager"],
    
    65
                  departments: departments,
    
    66
                  data_user_read_only: data_user,
    
    67
                  project_directory: project_metadata["path"],
    
    68
                  storage_capacity: {size: { approved: storage_size_gb, requested: storage_size_gb}, unit: {approved: "GB", requested: "GB"}},
    
    69
                  storage_performance_expectations: { requested: "Standard", approved: "Standard" },
    
    70
                  created_by: project_metadata["creatorUser"],
    
    71
                  created_on: project_metadata["createdOn"]
    
    72
                })
    
    73
            end
    
    74
    
    
    75
            def parse_multiple(project_metadata, key)
    
    2✔
    76
                if project_metadata[key].blank?
    
    36✔
    77
                []
    
    9✔
    78
                else
    
    79
                project_metadata[key].split(",").map(&:strip)
    
    27✔
    80
                end
    
    81
            end
    
    82
    end
    STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
    ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

    © 2025 Coveralls, Inc