From ebc9f72f6c039ecf91df1e6c43c0461639437805 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Ber=C3=A1nek?= Date: Thu, 29 May 2025 17:59:12 +0200 Subject: [PATCH 1/2] Add `crates.io` benchmark --- .../compile-benchmarks/crates.io/.buildpacks | 1 + .../crates.io/.dockerignore | 1 + .../crates.io/.editorconfig | 32 + .../compile-benchmarks/crates.io/.ember-cli | 9 + .../compile-benchmarks/crates.io/.env.sample | 93 + .../.github/ISSUE_TEMPLATE/bug_report.yml | 52 + .../.github/ISSUE_TEMPLATE/config.yml | 5 + .../crates.io/.github/renovate.json5 | 79 + .../crates.io/.github/workflows/ci.yml | 334 + .../.github/workflows/smoke-test.yml | 28 + .../compile-benchmarks/crates.io/.gitignore | 38 + collector/compile-benchmarks/crates.io/.npmrc | 1 + collector/compile-benchmarks/crates.io/.nycrc | 3 + .../crates.io/.prettierignore | 1 + .../crates.io/.template-lintrc.js | 10 + .../crates.io/.watchmanconfig | 3 + .../compile-benchmarks/crates.io/Cargo.lock | 6962 ++++++ .../compile-benchmarks/crates.io/Cargo.toml | 155 + .../compile-benchmarks/crates.io/Justfile | 25 + .../crates.io/LICENSE-APACHE | 201 + .../compile-benchmarks/crates.io/LICENSE-MIT | 25 + .../compile-benchmarks/crates.io/Procfile | 3 + .../compile-benchmarks/crates.io/README.md | 73 + .../crates.io/app/adapters/api-token.js | 19 + .../crates.io/app/adapters/application.js | 24 + .../crates.io/app/adapters/category-slug.js | 12 + .../app/adapters/crate-owner-invite.js | 13 + .../crates.io/app/adapters/crate.js | 65 + .../crates.io/app/adapters/dependency.js | 11 + .../crates.io/app/adapters/team.js | 8 + .../crates.io/app/adapters/user.js | 8 + .../crates.io/app/adapters/version.js | 28 + .../compile-benchmarks/crates.io/app/app.js | 25 + .../app/components/color-scheme-menu.hbs | 21 + .../app/components/color-scheme-menu.js | 17 + .../components/color-scheme-menu.module.css | 30 + .../crates.io/app/components/copy-button.hbs | 3 + .../crates.io/app/components/copy-button.js | 18 + .../app/components/crate-downloads-list.hbs | 11 + .../crate-downloads-list.module.css | 24 + .../crates.io/app/components/crate-header.hbs | 80 + .../crates.io/app/components/crate-header.js | 28 + .../app/components/crate-header.module.css | 83 + .../crates.io/app/components/crate-list.hbs | 10 + .../app/components/crate-list.module.css | 9 + .../crates.io/app/components/crate-row.hbs | 73 + .../app/components/crate-row.module.css | 128 + .../app/components/crate-sidebar.hbs | 146 + .../crates.io/app/components/crate-sidebar.js | 42 + .../app/components/crate-sidebar.module.css | 80 + .../crate-sidebar/install-instructions.hbs | 82 + .../crate-sidebar/install-instructions.js | 21 + .../install-instructions.module.css | 63 + .../app/components/crate-sidebar/link.hbs | 16 + .../app/components/crate-sidebar/link.js | 33 + .../components/crate-sidebar/link.module.css | 22 + .../app/components/dependency-list/row.hbs | 67 + .../app/components/dependency-list/row.js | 46 + .../components/dependency-list/row.module.css | 151 + .../app/components/download-graph.hbs | 30 + .../app/components/download-graph.js | 239 + .../app/components/download-graph.module.css | 15 + .../crates.io/app/components/dropdown.hbs | 12 + .../crates.io/app/components/dropdown.js | 12 + .../app/components/dropdown.module.css | 4 + .../app/components/dropdown/content.hbs | 1 + .../components/dropdown/content.module.css | 10 + .../app/components/dropdown/menu-item.hbs | 1 + .../components/dropdown/menu-item.module.css | 16 + .../app/components/dropdown/menu.hbs | 5 + .../app/components/dropdown/menu.module.css | 10 + .../app/components/dropdown/trigger.hbs | 6 + .../components/dropdown/trigger.module.css | 21 + .../crates.io/app/components/edition.hbs | 14 + .../app/components/edition.module.css | 3 + .../crates.io/app/components/email-input.hbs | 101 + .../crates.io/app/components/email-input.js | 55 + .../app/components/email-input.module.css | 52 + .../app/components/follow-button.hbs | 23 + .../crates.io/app/components/follow-button.js | 45 + .../app/components/follow-button.module.css | 5 + .../crates.io/app/components/footer.hbs | 42 + .../crates.io/app/components/footer.js | 11 + .../app/components/footer.module.css | 82 + .../app/components/front-page-list/item.hbs | 7 + .../front-page-list/item.module.css | 60 + .../front-page-list/item/placeholder.hbs | 7 + .../item/placeholder.module.css | 45 + .../crates.io/app/components/header.hbs | 134 + .../crates.io/app/components/header.js | 21 + .../app/components/header.module.css | 202 + .../app/components/license-expression.hbs | 11 + .../app/components/loading-spinner.hbs | 6 + .../app/components/loading-spinner.module.css | 34 + .../crates.io/app/components/msrv.hbs | 10 + .../crates.io/app/components/msrv.module.css | 3 + .../crates.io/app/components/nav-tabs.hbs | 5 + .../app/components/nav-tabs.module.css | 18 + .../crates.io/app/components/nav-tabs/tab.hbs | 10 + .../app/components/nav-tabs/tab.module.css | 54 + .../app/components/owned-crate-row.hbs | 22 + .../app/components/owned-crate-row.js | 9 + .../app/components/owned-crate-row.module.css | 34 + .../crates.io/app/components/owners-list.hbs | 19 + .../crates.io/app/components/owners-list.js | 7 + .../app/components/owners-list.module.css | 48 + .../crates.io/app/components/page-header.hbs | 15 + .../app/components/page-header.module.css | 21 + .../crates.io/app/components/pagination.hbs | 17 + .../app/components/pagination.module.css | 49 + .../components/pending-owner-invite-row.hbs | 34 + .../components/pending-owner-invite-row.js | 44 + .../pending-owner-invite-row.module.css | 14 + .../crates.io/app/components/placeholder.hbs | 1 + .../app/components/placeholder.module.css | 22 + .../app/components/privileged-action.hbs | 26 + .../app/components/privileged-action.js | 45 + .../components/privileged-action.module.css | 25 + .../crates.io/app/components/progress-bar.hbs | 1 + .../crates.io/app/components/progress-bar.js | 6 + .../app/components/progress-bar.module.css | 8 + .../app/components/rendered-html.hbs | 12 + .../crates.io/app/components/rendered-html.js | 6 + .../app/components/results-count.hbs | 5 + .../app/components/results-count.module.css | 4 + .../crates.io/app/components/rev-dep-row.hbs | 33 + .../crates.io/app/components/rev-dep-row.js | 33 + .../app/components/rev-dep-row.module.css | 104 + .../crates.io/app/components/search-form.hbs | 57 + .../crates.io/app/components/search-form.js | 22 + .../app/components/search-form.module.css | 81 + .../app/components/settings-page.hbs | 10 + .../app/components/settings-page.module.css | 16 + .../app/components/settings/api-tokens.hbs | 158 + .../app/components/settings/api-tokens.js | 61 + .../components/settings/api-tokens.module.css | 200 + .../crates.io/app/components/side-menu.hbs | 3 + .../app/components/side-menu.module.css | 9 + .../app/components/side-menu/item.hbs | 3 + .../app/components/side-menu/item.module.css | 22 + .../app/components/sort-dropdown.hbs | 10 + .../app/components/sort-dropdown.module.css | 12 + .../app/components/sort-dropdown/option.hbs | 3 + .../crates.io/app/components/stats-value.hbs | 5 + .../app/components/stats-value.module.css | 31 + .../components/support/crate-report-form.hbs | 91 + .../components/support/crate-report-form.js | 105 + .../support/crate-report-form.module.css | 66 + .../crates.io/app/components/text-content.hbs | 3 + .../app/components/text-content.module.css | 176 + .../crates.io/app/components/tooltip.hbs | 13 + .../crates.io/app/components/tooltip.js | 66 + .../app/components/tooltip.module.css | 25 + .../crates.io/app/components/user-avatar.hbs | 9 + .../crates.io/app/components/user-avatar.js | 35 + .../crates.io/app/components/user-link.hbs | 1 + .../app/components/version-list/row.hbs | 123 + .../app/components/version-list/row.js | 62 + .../components/version-list/row.module.css | 245 + .../crates.io/app/components/yank-button.hbs | 31 + .../crates.io/app/consts.js | 5 + .../crates.io/app/controllers/application.js | 12 + .../crates.io/app/controllers/catch-all.js | 16 + .../crates.io/app/controllers/categories.js | 21 + .../app/controllers/category/index.js | 33 + .../crates.io/app/controllers/crate/delete.js | 33 + .../controllers/crate/reverse-dependencies.js | 17 + .../app/controllers/crate/settings.js | 65 + .../app/controllers/crate/version.js | 72 + .../app/controllers/crate/versions.js | 109 + .../crates.io/app/controllers/crates.js | 31 + .../crates.io/app/controllers/dashboard.js | 47 + .../crates.io/app/controllers/index.js | 41 + .../crates.io/app/controllers/install.js | 14 + .../crates.io/app/controllers/keyword.js | 31 + .../crates.io/app/controllers/keywords.js | 21 + .../crates.io/app/controllers/me/crates.js | 33 + .../crates.io/app/controllers/me/following.js | 23 + .../crates.io/app/controllers/search.js | 80 + .../settings/email-notifications.js | 61 + .../app/controllers/settings/profile.js | 26 + .../app/controllers/settings/tokens/new.js | 202 + .../crates.io/app/controllers/support.js | 24 + .../crates.io/app/controllers/team.js | 31 + .../crates.io/app/controllers/user.js | 33 + .../helpers/date-format-distance-to-now.js | 9 + .../crates.io/app/helpers/date-format-iso.js | 9 + .../crates.io/app/helpers/date-format.js | 9 + .../crates.io/app/helpers/focus.js | 12 + .../crates.io/app/helpers/format-email.js | 20 + .../crates.io/app/helpers/format-num.js | 10 + .../crates.io/app/helpers/format-req.js | 6 + .../crates.io/app/helpers/html-safe.js | 8 + .../app/helpers/is-clipboard-supported.js | 5 + .../crates.io/app/helpers/parse-license.js | 9 + .../crates.io/app/helpers/placeholders.js | 3 + .../crates.io/app/helpers/pretty-bytes.js | 13 + .../crates.io/app/helpers/set-color-scheme.js | 9 + .../crates.io/app/helpers/set-theme.js | 11 + .../crates.io/app/helpers/sum.js | 5 + .../crates.io/app/helpers/truncate-text.js | 12 + .../crates.io/app/index.html | 43 + .../crates.io/app/initializers/app-hook.js | 40 + .../crates.io/app/initializers/hashchange.js | 57 + .../crates.io/app/models/api-token.js | 21 + .../crates.io/app/models/category-slug.js | 6 + .../crates.io/app/models/category.js | 14 + .../app/models/crate-owner-invite.js | 10 + .../crates.io/app/models/crate.js | 126 + .../crates.io/app/models/dependency.js | 16 + .../crates.io/app/models/keyword.js | 9 + .../crates.io/app/models/owned-crate.js | 6 + .../crates.io/app/models/team.js | 21 + .../crates.io/app/models/user.js | 52 + .../crates.io/app/models/version-download.js | 10 + .../crates.io/app/models/version.js | 203 + .../app/modifiers/highlight-syntax.js | 57 + .../app/modifiers/render-mermaids.js | 27 + .../app/modifiers/update-source-media.js | 34 + .../crates.io/app/router.js | 67 + .../app/routes/-authenticated-route.js | 22 + .../crates.io/app/routes/accept-invite.js | 16 + .../crates.io/app/routes/application.js | 83 + .../crates.io/app/routes/catch-all.js | 3 + .../crates.io/app/routes/categories.js | 15 + .../crates.io/app/routes/category-slugs.js | 15 + .../crates.io/app/routes/category.js | 31 + .../crates.io/app/routes/category/index.js | 22 + .../crates.io/app/routes/confirm.js | 36 + .../crates.io/app/routes/crate.js | 47 + .../crates.io/app/routes/crate/delete.js | 26 + .../app/routes/crate/dependencies.js | 13 + .../crates.io/app/routes/crate/docs.js | 23 + .../crates.io/app/routes/crate/index.js | 6 + .../crates.io/app/routes/crate/owners.js | 12 + .../crates.io/app/routes/crate/range.js | 36 + .../crates.io/app/routes/crate/repo.js | 23 + .../app/routes/crate/reverse-dependencies.js | 38 + .../crates.io/app/routes/crate/settings.js | 26 + .../app/routes/crate/version-dependencies.js | 45 + .../crates.io/app/routes/crate/version.js | 75 + .../crates.io/app/routes/crate/versions.js | 28 + .../crates.io/app/routes/crates.js | 22 + .../crates.io/app/routes/dashboard.js | 37 + .../crates.io/app/routes/index.js | 9 + .../crates.io/app/routes/install.js | 10 + .../crates.io/app/routes/keyword.js | 24 + .../crates.io/app/routes/keywords.js | 15 + .../crates.io/app/routes/me/crates.js | 17 + .../crates.io/app/routes/me/following.js | 17 + .../crates.io/app/routes/me/index.js | 12 + .../app/routes/me/pending-invites.js | 13 + .../crates.io/app/routes/search.js | 29 + .../crates.io/app/routes/security.js | 10 + .../routes/settings/email-notifications.js | 27 + .../crates.io/app/routes/settings/index.js | 10 + .../crates.io/app/routes/settings/profile.js | 16 + .../crates.io/app/routes/settings/tokens.js | 3 + .../app/routes/settings/tokens/index.js | 25 + .../app/routes/settings/tokens/new.js | 53 + .../crates.io/app/routes/support.js | 13 + .../crates.io/app/routes/team.js | 36 + .../crates.io/app/routes/user.js | 35 + .../crates.io/app/sentry.js | 28 + .../crates.io/app/serializers/api-token.js | 7 + .../crates.io/app/serializers/application.js | 3 + .../app/serializers/crate-owner-invite.js | 21 + .../crates.io/app/serializers/crate.js | 31 + .../crates.io/app/serializers/dependency.js | 7 + .../app/serializers/version-download.js | 7 + .../crates.io/app/serializers/version.js | 9 + .../crates.io/app/services/chartjs.js | 74 + .../crates.io/app/services/color-scheme.js | 60 + .../crates.io/app/services/head-data.js | 13 + .../crates.io/app/services/header.js | 7 + .../crates.io/app/services/intl.js | 10 + .../crates.io/app/services/mermaid.js | 11 + .../crates.io/app/services/playground.js | 21 + .../crates.io/app/services/pristine-query.js | 9 + .../crates.io/app/services/progress.js | 72 + .../crates.io/app/services/redirector.js | 9 + .../crates.io/app/services/release-tracks.js | 41 + .../crates.io/app/services/sentry.js | 17 + .../crates.io/app/services/session.js | 248 + .../crates.io/app/services/store.js | 1 + .../crates.io/app/services/testing.js | 11 + .../app/styles/application.module.css | 203 + .../crates.io/app/styles/catch-all.module.css | 24 + .../app/styles/categories.module.css | 35 + .../app/styles/category-slugs.module.css | 21 + .../app/styles/category/index.module.css | 38 + .../app/styles/crate/delete.module.css | 109 + .../crate/reverse-dependencies.module.css | 18 + .../app/styles/crate/settings.module.css | 42 + .../crate/version-dependencies.module.css | 15 + .../app/styles/crate/version.module.css | 154 + .../app/styles/crate/versions.module.css | 68 + .../crates.io/app/styles/crates.module.css | 10 + .../crates.io/app/styles/dashboard.module.css | 121 + .../crates.io/app/styles/index.module.css | 86 + .../app/styles/keyword/index.module.css | 10 + .../crates.io/app/styles/keywords.module.css | 21 + .../crates.io/app/styles/me/crates.module.css | 10 + .../app/styles/me/following.module.css | 10 + .../app/styles/me/pending-invites.module.css | 14 + .../crates.io/app/styles/search.module.css | 24 + .../app/styles/settings/appearance.module.css | 19 + .../settings/email-notifications.module.css | 39 + .../app/styles/settings/profile.module.css | 72 + .../app/styles/settings/tokens/new.module.css | 202 + .../app/styles/shared/a11y.module.css | 10 + .../app/styles/shared/buttons.module.css | 101 + .../app/styles/shared/forms.module.css | 25 + .../app/styles/shared/sort-by.module.css | 7 + .../app/styles/shared/typography.module.css | 18 + .../crates.io/app/styles/support.module.css | 19 + .../crates.io/app/styles/team.module.css | 47 + .../crates.io/app/styles/user.module.css | 27 + .../crates.io/app/templates/accept-invite.hbs | 13 + .../crates.io/app/templates/application.hbs | 18 + .../crates.io/app/templates/authenticated.hbs | 1 + .../crates.io/app/templates/catch-all.hbs | 28 + .../crates.io/app/templates/categories.hbs | 45 + .../app/templates/category-slugs.hbs | 10 + .../app/templates/category/error.hbs | 1 + .../app/templates/category/index.hbs | 58 + .../crates.io/app/templates/crate/delete.hbs | 83 + .../crates.io/app/templates/crate/docs.hbs | 7 + .../crates.io/app/templates/crate/error.hbs | 1 + .../templates/crate/reverse-dependencies.hbs | 26 + .../app/templates/crate/settings.hbs | 60 + .../templates/crate/version-dependencies.hbs | 38 + .../crates.io/app/templates/crate/version.hbs | 121 + .../app/templates/crate/versions.hbs | 52 + .../crates.io/app/templates/crates.hbs | 27 + .../crates.io/app/templates/dashboard.hbs | 74 + .../crates.io/app/templates/data-access.hbs | 111 + .../crates.io/app/templates/error.hbs | 5 + .../crates.io/app/templates/head.hbs | 1 + .../crates.io/app/templates/index.hbs | 200 + .../crates.io/app/templates/install.hbs | 5 + .../crates.io/app/templates/keyword.hbs | 27 + .../crates.io/app/templates/keywords.hbs | 33 + .../crates.io/app/templates/login.hbs | 1 + .../crates.io/app/templates/logout.hbs | 1 + .../crates.io/app/templates/me/crates.hbs | 28 + .../crates.io/app/templates/me/following.hbs | 23 + .../app/templates/me/pending-invites.hbs | 11 + .../app/templates/policies/index.hbs | 150 + .../app/templates/policies/security.hbs | 55 + .../crates.io/app/templates/search.hbs | 61 + .../settings/email-notifications.hbs | 52 + .../app/templates/settings/profile.hbs | 67 + .../app/templates/settings/tokens.hbs | 7 + .../app/templates/settings/tokens/index.hbs | 1 + .../app/templates/settings/tokens/new.hbs | 203 + .../crates.io/app/templates/support.hbs | 40 + .../crates.io/app/templates/team.hbs | 39 + .../crates.io/app/templates/user.hbs | 32 + .../crates.io/app/transforms/date.js | 1 + .../crates.io/app/utils/ajax.js | 75 + .../crates.io/app/utils/concurrency.js | 8 + .../crates.io/app/utils/license.js | 783 + .../crates.io/app/utils/local-storage.js | 25 + .../crates.io/app/utils/pagination.js | 58 + .../crates.io/app/utils/search.js | 45 + .../crates.io/app/utils/sentry.js | 34 + .../crates.io/app/utils/token-scopes.js | 22 + .../crates.io/backend.Dockerfile | 17 + .../compile-benchmarks/crates.io/codecov.yml | 11 + .../crates.io/config/coverage.js | 4 + .../crates.io/config/dependency-lint.js | 5 + .../crates.io/config/environment.js | 77 + .../crates.io/config/manifest.js | 23 + .../crates.io/config/optional-features.json | 7 + .../crates.io/config/targets.js | 13 + .../crates/crates_io_cdn_logs/Cargo.toml | 32 + .../crates/crates_io_cdn_logs/README.md | 5 + .../benches/count_downloads.rs | 30 + .../examples/count_downloads.rs | 62 + .../crates_io_cdn_logs/src/cloudfront.rs | 222 + .../crates_io_cdn_logs/src/compression.rs | 42 + .../crates_io_cdn_logs/src/download_map.rs | 109 + .../crates_io_cdn_logs/src/fastly/json.rs | 109 + .../crates_io_cdn_logs/src/fastly/mod.rs | 174 + .../crates/crates_io_cdn_logs/src/lib.rs | 206 + .../crates/crates_io_cdn_logs/src/paths.rs | 143 + .../crates_io_cdn_logs/src/test_utils.rs | 11 + .../test_data/cloudfront/basic.log | 22 + .../test_data/cloudfront/basic.log.gz | Bin 0 -> 2050 bytes .../test_data/cloudfront/percent-encoding.log | 5 + .../cloudfront/recoverable-errors.log | 20 + .../test_data/cloudfront/unknown-version.log | 3 + .../cloudfront/unrelated-traffic.log | 7 + .../test_data/fastly/basic.log | 23 + .../test_data/fastly/basic.log.zst | Bin 0 -> 886 bytes .../test_data/fastly/percent-encoding.log | 2 + .../test_data/fastly/recoverable-errors.log | 7 + .../test_data/fastly/unrelated-traffic.log | 5 + .../crates/crates_io_database/Cargo.toml | 36 + .../crates/crates_io_database/README.md | 27 + .../crates/crates_io_database/src/lib.rs | 5 + .../crates_io_database/src/models/action.rs | 104 + .../crates_io_database/src/models/category.rs | 415 + .../src/models/crate_owner_invitation.rs | 135 + .../src/models/default_versions.rs | 300 + .../src/models/deleted_crate.rs | 16 + .../src/models/dependency.rs | 64 + .../crates_io_database/src/models/download.rs | 32 + .../crates_io_database/src/models/email.rs | 71 + .../crates_io_database/src/models/follow.rs | 15 + .../crates_io_database/src/models/helpers.rs | 1 + .../src/models/helpers/with_count.rs | 22 + .../crates_io_database/src/models/keyword.rs | 133 + .../crates_io_database/src/models/krate.rs | 707 + .../src/models/krate_reverse_dependencies.sql | 38 + .../crates_io_database/src/models/mod.rs | 38 + .../crates_io_database/src/models/owner.rs | 118 + .../src/models/parent_categories.sql | 9 + .../src/models/subcategories.sql | 10 + .../crates_io_database/src/models/team.rs | 67 + .../crates_io_database/src/models/token.rs | 153 + .../src/models/token/scopes.rs | 212 + .../src/models/toplevel.sql | 12 + .../src/models/trustpub/github_config.rs | 37 + .../src/models/trustpub/mod.rs | 7 + .../src/models/trustpub/token.rs | 22 + .../src/models/trustpub/used_jti.rs | 24 + .../crates_io_database/src/models/user.rs | 124 + .../crates_io_database/src/models/version.rs | 274 + .../crates_io_database/src/schema.patch | 98 + .../crates/crates_io_database/src/schema.rs | 1166 + .../crates_io_database/src/utils/mod.rs | 1 + .../crates_io_database/src/utils/token.rs | 118 + .../tests/load_foreign_key_constraints.sql | 11 + .../tests/schema_details.rs | 81 + .../crates_io_database/tests/semver_ord.rs | 118 + .../crates/crates_io_database_dump/Cargo.toml | 28 + .../crates/crates_io_database_dump/README.md | 10 + .../src/configuration.rs | 109 + .../crates_io_database_dump/src/dump-db.toml | 286 + .../src/dump-export.sql.j2 | 9 + .../src/dump-import.sql.j2 | 38 + .../src/gen_scripts.rs | 200 + .../crates/crates_io_database_dump/src/lib.rs | 324 + .../src/readme_for_tarball.md | 36 + ...e_dump__tests__sql_scripts@export.sql.snap | 24 + ...e_dump__tests__sql_scripts@import.sql.snap | 88 + .../crates_io_diesel_helpers/Cargo.toml | 16 + .../crates/crates_io_diesel_helpers/README.md | 16 + .../crates_io_diesel_helpers/src/fns.rs | 17 + .../crates_io_diesel_helpers/src/lib.rs | 8 + .../crates_io_diesel_helpers/src/pg_enum.rs | 39 + .../crates_io_diesel_helpers/src/semver.rs | 35 + .../crates/crates_io_docs_rs/Cargo.toml | 31 + .../crates/crates_io_docs_rs/README.md | 12 + .../examples/test_docs_rs_client.rs | 19 + .../crates/crates_io_docs_rs/src/lib.rs | 230 + .../crates/crates_io_env_vars/Cargo.toml | 15 + .../crates/crates_io_env_vars/README.md | 14 + .../crates/crates_io_env_vars/src/lib.rs | 244 + .../crates/crates_io_github/Cargo.toml | 27 + .../crates/crates_io_github/README.md | 12 + .../examples/test_github_client.rs | 136 + .../crates/crates_io_github/src/lib.rs | 255 + .../crates/crates_io_index/Cargo.toml | 32 + .../crates/crates_io_index/README.md | 11 + .../crates/crates_io_index/credentials.rs | 62 + .../crates.io/crates/crates_io_index/data.rs | 106 + .../crates/crates_io_index/features.rs | 158 + .../crates.io/crates/crates_io_index/lib.rs | 19 + .../crates.io/crates/crates_io_index/repo.rs | 362 + .../crates.io/crates/crates_io_index/ser.rs | 77 + ..._features__tests__split_features_clap.snap | 77 + .../crates/crates_io_index/testing.rs | 185 + .../crates/crates_io_markdown/Cargo.toml | 22 + .../crates/crates_io_markdown/README.md | 5 + .../crates/crates_io_markdown/lib.rs | 687 + .../crates/crates_io_pagerduty/Cargo.toml | 18 + .../crates/crates_io_pagerduty/README.md | 7 + .../examples/test_pagerduty.rs | 66 + .../crates/crates_io_pagerduty/src/lib.rs | 84 + .../crates/crates_io_session/Cargo.toml | 17 + .../crates/crates_io_session/README.md | 7 + .../crates/crates_io_session/src/lib.rs | 117 + .../crates/crates_io_smoke_test/Cargo.toml | 25 + .../crates/crates_io_smoke_test/README.md | 11 + .../crates/crates_io_smoke_test/src/api.rs | 133 + .../crates/crates_io_smoke_test/src/cargo.rs | 64 + .../src/exit_status_ext.rs | 20 + .../crates/crates_io_smoke_test/src/git.rs | 47 + .../crates/crates_io_smoke_test/src/main.rs | 300 + .../crates/crates_io_tarball/Cargo.toml | 36 + .../crates/crates_io_tarball/README.md | 13 + .../examples/check_all_crates.rs | 98 + .../crates_io_tarball/examples/read_file.rs | 53 + .../crates/crates_io_tarball/src/builder.rs | 49 + .../crates/crates_io_tarball/src/lib.rs | 410 + .../crates_io_tarball/src/limit_reader.rs | 34 + .../crates/crates_io_tarball/src/manifest.rs | 93 + .../crates_io_tarball__tests__app.snap | 24 + .../crates_io_tarball__tests__lib.snap | 26 + ...l__tests__lib_with_bins_and_example-2.snap | 42 + ...l__tests__lib_with_bins_and_example-3.snap | 28 + ...all__tests__lib_with_bins_and_example.snap | 26 + .../crates/crates_io_tarball/src/vcs_info.rs | 44 + .../crates/crates_io_team_repo/Cargo.toml | 21 + .../crates/crates_io_team_repo/README.md | 12 + .../crates_io_team_repo/examples/basic.rs | 9 + .../crates/crates_io_team_repo/src/certs.rs | 5 + .../crates_io_team_repo/src/isrg-root-x1.pem | 31 + .../crates_io_team_repo/src/isrg-root-x2.pem | 14 + .../crates/crates_io_team_repo/src/lib.rs | 75 + .../crates/crates_io_test_db/Cargo.toml | 17 + .../crates/crates_io_test_db/README.md | 15 + .../crates/crates_io_test_db/src/lib.rs | 224 + .../crates/crates_io_trustpub/Cargo.toml | 16 + .../crates/crates_io_trustpub/README.md | 3 + .../crates_io_trustpub/src/github/mod.rs | 1 + .../src/github/validation.rs | 154 + .../crates/crates_io_trustpub/src/lib.rs | 3 + .../crates/crates_io_worker/Cargo.toml | 26 + .../crates/crates_io_worker/README.md | 12 + .../crates_io_worker/src/background_job.rs | 114 + .../crates/crates_io_worker/src/errors.rs | 12 + .../crates_io_worker/src/job_registry.rs | 69 + .../crates/crates_io_worker/src/lib.rs | 14 + .../crates/crates_io_worker/src/runner.rs | 153 + .../crates/crates_io_worker/src/schema.rs | 11 + .../crates/crates_io_worker/src/storage.rs | 76 + .../crates/crates_io_worker/src/util.rs | 50 + .../crates/crates_io_worker/src/worker.rs | 108 + .../crates/crates_io_worker/tests/runner.rs | 329 + .../compile-benchmarks/crates.io/deny.toml | 263 + .../compile-benchmarks/crates.io/diesel.toml | 6 + .../crates.io/docker-compose.yml | 68 + .../create-databases.sql | 2 + .../crates.io/docker_entrypoint.sh | 11 + .../crates.io/docs/ARCHITECTURE.md | 101 + .../crates.io/docs/BACKEND.md | 199 + .../crates.io/docs/CONTRIBUTING.md | 624 + .../crates.io/docs/FRONTEND.md | 7 + .../crates.io/docs/MIRROR.md | 8 + .../crates.io/docs/PR-REVIEW.md | 75 + .../crates.io/docs/categories.md | 9 + .../crates.io/docs/readme-logo-dark.png | Bin 0 -> 175088 bytes .../crates.io/docs/readme-logo.png | Bin 0 -> 175978 bytes .../compile-benchmarks/crates.io/e2e/.gitkeep | 0 .../crates.io/e2e/README.md | 5 + .../crates.io/e2e/acceptance/404.spec.ts | 13 + .../e2e/acceptance/api-token.spec.ts | 186 + .../e2e/acceptance/categories.spec.ts | 53 + .../e2e/acceptance/crate-deletion.spec.ts | 38 + .../e2e/acceptance/crate-dependencies.spec.ts | 108 + .../e2e/acceptance/crate-following.spec.ts | 109 + .../e2e/acceptance/crate-navtabs.spec.ts | 64 + .../crates.io/e2e/acceptance/crate.spec.ts | 302 + .../crates.io/e2e/acceptance/crates.spec.ts | 104 + .../e2e/acceptance/dashboard.spec.ts | 59 + .../e2e/acceptance/email-change.spec.ts | 179 + .../e2e/acceptance/email-confirmation.spec.ts | 41 + .../e2e/acceptance/front-page.spec.ts | 71 + .../crates.io/e2e/acceptance/invites.spec.ts | 229 + .../crates.io/e2e/acceptance/keyword.spec.ts | 14 + .../crates.io/e2e/acceptance/login.spec.ts | 96 + .../crates.io/e2e/acceptance/logout.spec.ts | 19 + .../acceptance/publish-notifications.spec.ts | 66 + .../e2e/acceptance/read-only-mode.spec.ts | 54 + .../e2e/acceptance/readme-rendering.spec.ts | 127 + .../acceptance/reverse-dependencies.spec.ts | 94 + .../crates.io/e2e/acceptance/search.spec.ts | 234 + .../e2e/acceptance/settings/add-owner.spec.ts | 66 + .../acceptance/settings/remove-owner.spec.ts | 73 + .../e2e/acceptance/settings/settings.spec.ts | 39 + .../crates.io/e2e/acceptance/sudo.spec.ts | 127 + .../crates.io/e2e/acceptance/support.spec.ts | 322 + .../e2e/acceptance/team-page.spec.ts | 31 + .../e2e/acceptance/token-invites.spec.ts | 53 + .../e2e/acceptance/user-page.spec.ts | 30 + .../crates.io/e2e/acceptance/versions.spec.ts | 69 + .../crates.io/e2e/bugs/2329.spec.ts | 64 + .../crates.io/e2e/bugs/4506.spec.ts | 32 + .../crates.io/e2e/deferred.ts | 8 + .../crates.io/e2e/fixtures/a11y.ts | 36 + .../crates.io/e2e/fixtures/ember.ts | 82 + .../crates.io/e2e/fixtures/fake-timers.ts | 29 + .../crates.io/e2e/fixtures/percy.ts | 25 + .../crates.io/e2e/helper.ts | 88 + .../crates.io/e2e/routes/category.spec.ts | 43 + .../crates.io/e2e/routes/crate/delete.spec.ts | 97 + .../crates.io/e2e/routes/crate/range.spec.ts | 123 + .../routes/crate/version/crate-links.spec.ts | 75 + .../routes/crate/version/docs-link.spec.ts | 98 + .../e2e/routes/crate/version/model.spec.ts | 103 + .../crates.io/e2e/routes/keyword.spec.ts | 22 + .../e2e/routes/settings/tokens/index.spec.ts | 31 + .../e2e/routes/settings/tokens/new.spec.ts | 348 + .../crates.io/e2e/routes/support.spec.ts | 56 + .../crates.io/e2e/routes/team.spec.ts | 24 + .../crates.io/e2e/routes/user.spec.ts | 24 + .../crates.io/e2e/tsconfig.json | 8 + .../crates.io/ember-cli-build.js | 133 + .../crates.io/eslint.config.mjs | 198 + .../crates.io/frontend.Dockerfile | 24 + .../crates.io/git-commit.txt | 1 + .../down.sql | 2 + .../up.sql | 36 + .../down.sql | 1 + .../20140924113530_dumped_migration_1/up.sql | 7 + .../down.sql | 1 + .../20140924114003_dumped_migration_2/up.sql | 5 + .../down.sql | 1 + .../20140924114059_dumped_migration_3/up.sql | 5 + .../down.sql | 1 + .../20140924115329_dumped_migration_4/up.sql | 1 + .../down.sql | 1 + .../20140924120803_dumped_migration_5/up.sql | 4 + .../down.sql | 1 + .../20140925132248_dumped_migration_6/up.sql | 1 + .../down.sql | 1 + .../20140925132249_dumped_migration_7/up.sql | 1 + .../down.sql | 0 .../20140925132250_dumped_migration_8/up.sql | 2 + .../down.sql | 1 + .../20140925132251_dumped_migration_9/up.sql | 1 + .../down.sql | 1 + .../20140925132252_dumped_migration_10/up.sql | 1 + .../down.sql | 0 .../20140925132253_dumped_migration_11/up.sql | 2 + .../down.sql | 0 .../20140925132254_dumped_migration_12/up.sql | 4 + .../down.sql | 1 + .../20140925153704_dumped_migration_13/up.sql | 3 + .../down.sql | 1 + .../20140925153705_dumped_migration_14/up.sql | 1 + .../down.sql | 1 + .../20140925161623_dumped_migration_15/up.sql | 1 + .../down.sql | 1 + .../20140925161624_dumped_migration_16/up.sql | 1 + .../down.sql | 0 .../20140925161625_dumped_migration_17/up.sql | 2 + .../down.sql | 1 + .../20140926130044_dumped_migration_18/up.sql | 1 + .../down.sql | 1 + .../20140926130046_dumped_migration_19/up.sql | 1 + .../down.sql | 2 + .../20140926174020_dumped_migration_20/up.sql | 2 + .../down.sql | 1 + .../20140929103749_dumped_migration_21/up.sql | 1 + .../down.sql | 1 + .../20140929103750_dumped_migration_22/up.sql | 1 + .../down.sql | 1 + .../20140929103751_dumped_migration_23/up.sql | 1 + .../down.sql | 1 + .../20140929103752_dumped_migration_24/up.sql | 1 + .../down.sql | 1 + .../20140929103753_dumped_migration_25/up.sql | 1 + .../down.sql | 1 + .../20140929103754_dumped_migration_26/up.sql | 1 + .../down.sql | 1 + .../20140929103755_dumped_migration_27/up.sql | 1 + .../down.sql | 1 + .../20140929103756_dumped_migration_28/up.sql | 6 + .../down.sql | 1 + .../20140929103757_dumped_migration_29/up.sql | 1 + .../down.sql | 1 + .../20140929103758_dumped_migration_30/up.sql | 1 + .../down.sql | 1 + .../20140929103759_dumped_migration_31/up.sql | 8 + .../down.sql | 1 + .../20140929103760_dumped_migration_32/up.sql | 1 + .../down.sql | 1 + .../20140929103761_dumped_migration_33/up.sql | 1 + .../down.sql | 1 + .../20140929103763_dumped_migration_34/up.sql | 2 + .../down.sql | 1 + .../20140929185718_dumped_migration_35/up.sql | 1 + .../down.sql | 3 + .../20140930082104_dumped_migration_36/up.sql | 1 + .../down.sql | 1 + .../20140930082105_dumped_migration_37/up.sql | 9 + .../down.sql | 1 + .../20140930085441_dumped_migration_38/up.sql | 1 + .../down.sql | 1 + .../20140930203145_dumped_migration_39/up.sql | 1 + .../down.sql | 1 + .../20140930203146_dumped_migration_40/up.sql | 1 + .../down.sql | 1 + .../20141001190227_dumped_migration_41/up.sql | 1 + .../down.sql | 1 + .../20141001190228_dumped_migration_42/up.sql | 1 + .../down.sql | 1 + .../20141001190229_dumped_migration_43/up.sql | 1 + .../down.sql | 1 + .../20141001190230_dumped_migration_44/up.sql | 1 + .../down.sql | 1 + .../20141001190231_dumped_migration_45/up.sql | 1 + .../down.sql | 1 + .../20141002195939_dumped_migration_46/up.sql | 1 + .../down.sql | 1 + .../20141002195940_dumped_migration_47/up.sql | 4 + .../down.sql | 1 + .../20141002195941_dumped_migration_48/up.sql | 1 + .../down.sql | 1 + .../20141002222426_dumped_migration_49/up.sql | 2 + .../down.sql | 1 + .../20141002222427_dumped_migration_50/up.sql | 2 + .../down.sql | 1 + .../20141002222428_dumped_migration_51/up.sql | 2 + .../down.sql | 1 + .../20141002222429_dumped_migration_52/up.sql | 2 + .../down.sql | 1 + .../20141002222430_dumped_migration_53/up.sql | 2 + .../down.sql | 1 + .../20141002222431_dumped_migration_54/up.sql | 2 + .../down.sql | 1 + .../20141002222432_dumped_migration_55/up.sql | 2 + .../down.sql | 1 + .../20141002222433_dumped_migration_56/up.sql | 2 + .../down.sql | 1 + .../20141007131146_dumped_migration_57/up.sql | 6 + .../down.sql | 1 + .../20141007131147_dumped_migration_58/up.sql | 2 + .../down.sql | 1 + .../20141007131148_dumped_migration_59/up.sql | 2 + .../down.sql | 1 + .../20141007131149_dumped_migration_60/up.sql | 2 + .../down.sql | 1 + .../20141007131735_dumped_migration_61/up.sql | 7 + .../down.sql | 1 + .../20141007131736_dumped_migration_62/up.sql | 2 + .../down.sql | 1 + .../20141007131737_dumped_migration_63/up.sql | 2 + .../down.sql | 1 + .../20141007131738_dumped_migration_64/up.sql | 2 + .../down.sql | 1 + .../20141007131739_dumped_migration_65/up.sql | 2 + .../down.sql | 1 + .../20141007131740_dumped_migration_66/up.sql | 1 + .../down.sql | 1 + .../20141007131741_dumped_migration_67/up.sql | 1 + .../down.sql | 1 + .../20141007171515_dumped_migration_68/up.sql | 1 + .../down.sql | 1 + .../20141007171516_dumped_migration_69/up.sql | 1 + .../down.sql | 1 + .../20141007171517_dumped_migration_70/up.sql | 1 + .../down.sql | 1 + .../20141010150327_dumped_migration_71/up.sql | 1 + .../down.sql | 1 + .../20141013115510_dumped_migration_72/up.sql | 1 + .../down.sql | 1 + .../20141020175647_dumped_migration_73/up.sql | 1 + .../down.sql | 1 + .../20141020175648_dumped_migration_74/up.sql | 1 + .../down.sql | 1 + .../20141020175649_dumped_migration_75/up.sql | 1 + .../down.sql | 3 + .../20141020175650_dumped_migration_76/up.sql | 18 + .../down.sql | 1 + .../20141020175651_dumped_migration_77/up.sql | 1 + .../down.sql | 1 + .../20141021103503_dumped_migration_78/up.sql | 6 + .../down.sql | 1 + .../20141021103504_dumped_migration_79/up.sql | 4 + .../down.sql | 1 + .../20141021103505_dumped_migration_80/up.sql | 2 + .../down.sql | 1 + .../20141021103506_dumped_migration_81/up.sql | 2 + .../down.sql | 1 + .../20141021103507_dumped_migration_82/up.sql | 2 + .../down.sql | 1 + .../20141021103508_dumped_migration_83/up.sql | 2 + .../down.sql | 1 + .../20141021103509_dumped_migration_84/up.sql | 2 + .../down.sql | 1 + .../20141021103510_dumped_migration_85/up.sql | 2 + .../down.sql | 1 + .../20141022110441_dumped_migration_86/up.sql | 1 + .../down.sql | 1 + .../20141023180230_dumped_migration_87/up.sql | 1 + .../down.sql | 1 + .../20141023180231_dumped_migration_88/up.sql | 1 + .../down.sql | 0 .../20141112082527_dumped_migration_89/up.sql | 1 + .../down.sql | 1 + .../20141120162357_dumped_migration_90/up.sql | 1 + .../down.sql | 2 + .../20141121191309_dumped_migration_91/up.sql | 2 + .../down.sql | 1 + .../20150209202206_dumped_migration_92/up.sql | 1 + .../down.sql | 1 + .../20150319224700_dumped_migration_93/up.sql | 4 + .../down.sql | 2 + .../20150319224701_dumped_migration_94/up.sql | 2 + .../down.sql | 1 + .../20150320174400_dumped_migration_95/up.sql | 1 + .../down.sql | 1 + .../20150715170350_dumped_migration_96/up.sql | 1 + .../down.sql | 1 + .../20150804170127_dumped_migration_97/up.sql | 1 + .../down.sql | 1 + .../20150804170128_dumped_migration_98/up.sql | 7 + .../down.sql | 1 + .../20150804170129_dumped_migration_99/up.sql | 1 + .../down.sql | 2 + .../up.sql | 1 + .../down.sql | 2 + .../up.sql | 2 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 29 + .../up.sql | 57 + .../down.sql | 10 + .../up.sql | 19 + .../down.sql | 25 + .../up.sql | 37 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 2 + .../up.sql | 1 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 1 + .../up.sql | 2 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 1 + .../up.sql | 2 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 1 + .../up.sql | 2 + .../down.sql | 1 + .../up.sql | 2 + .../down.sql | 1 + .../up.sql | 1 + .../2017-08-31-230457_invitations/down.sql | 1 + .../2017-08-31-230457_invitations/up.sql | 7 + .../down.sql | 17 + .../up.sql | 30 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 9 + .../up.sql | 4 + .../down.sql | 1 + .../up.sql | 9 + .../down.sql | 1 + .../up.sql | 7 + .../2017-10-08-193512_category_trees/down.sql | 14 + .../2017-10-08-193512_category_trees/up.sql | 39 + .../down.sql | 2 + .../up.sql | 2 + .../down.sql | 3 + .../up.sql | 3 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 2 + .../up.sql | 4 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 6 + .../up.sql | 6 + .../down.sql | 3 + .../up.sql | 27 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 3 + .../up.sql | 17 + .../down.sql | 5 + .../up.sql | 5 + .../down.sql | 2 + .../up.sql | 11 + .../down.sql | 1 + .../20170311180634_remove_semver_index/up.sql | 1 + .../down.sql | 1 + .../20170312165531_index_dependencies/up.sql | 1 + .../down.sql | 4 + .../up.sql | 5 + .../down.sql | 3 + .../up.sql | 3 + .../down.sql | 2 + .../up.sql | 2 + .../down.sql | 1 + .../20170428154714_multiple_api_tokens/up.sql | 16 + .../down.sql | 4 + .../up.sql | 4 + .../down.sql | 4 + .../up.sql | 1 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 19 + .../up.sql | 28 + .../down.sql | 21 + .../up.sql | 21 + .../down.sql | 9 + .../up.sql | 9 + .../20170711193021_rerename_gitlab/down.sql | 1 + .../20170711193021_rerename_gitlab/up.sql | 1 + .../20170728002039_fix_keywords/down.sql | 1 + .../20170728002039_fix_keywords/up.sql | 68 + .../down.sql | 2 + .../up.sql | 15 + .../20170804200817_add_email_table/down.sql | 3 + .../20170804200817_add_email_table/up.sql | 17 + .../down.sql | 1 + .../up.sql | 10 + .../down.sql | 3 + .../up.sql | 3 + .../down.sql | 7 + .../up.sql | 9 + .../down.sql | 4 + .../up.sql | 4 + .../down.sql | 4 + .../up.sql | 5 + .../down.sql | 3 + .../up.sql | 9 + .../down.sql | 4 + .../up.sql | 4 + .../2018-05-03-150523_create_jobs/down.sql | 1 + .../2018-05-03-150523_create_jobs/up.sql | 8 + .../2018-06-03-195948_add_crate_size/down.sql | 2 + .../2018-06-03-195948_add_crate_size/up.sql | 2 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 3 + .../up.sql | 7 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 1 + .../up.sql | 8 + .../down.sql | 1 + .../up.sql | 4 + .../down.sql | 1 + .../up.sql | 5 + .../down.sql | 6 + .../up.sql | 8 + .../down.sql | 15 + .../up.sql | 3 + .../down.sql | 28 + .../up.sql | 6 + .../down.sql | 1 + .../up.sql | 4 + .../down.sql | 2 + .../up.sql | 2 + .../down.sql | 2 + .../up.sql | 2 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 2 + .../up.sql | 2 + .../down.sql | 2 + .../up.sql | 14 + .../down.sql | 2 + .../up.sql | 3 + .../down.sql | 1 + .../up.sql | 3 + .../down.sql | 21 + .../up.sql | 18 + .../down.sql | 2 + .../up.sql | 9 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 17 + .../up.sql | 20 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 4 + .../up.sql | 13 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 2 + .../up.sql | 2 + .../down.sql | 4 + .../up.sql | 5 + .../2020-08-25-101655_lock_users/down.sql | 3 + .../2020-08-25-101655_lock_users/up.sql | 3 + .../down.sql | 3 + .../up.sql | 2 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 7 + .../up.sql | 1 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 2 + .../up.sql | 2 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 9 + .../up.sql | 7 + .../down.sql | 9 + .../up.sql | 9 + .../down.sql | 2 + .../2022-08-14-090630_checksum-column/up.sql | 2 + .../2022-08-17-073805_explicit-name/down.sql | 2 + .../2022-08-17-073805_explicit-name/up.sql | 2 + .../2022-08-18-152941_links-column/down.sql | 2 + .../2022-08-18-152941_links-column/up.sql | 2 + .../down.sql | 2 + .../up.sql | 2 + .../down.sql | 5 + .../2022-11-23-135139_add-token-scopes/up.sql | 9 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 1 + .../2023-06-14-084044_add-token-expiry/up.sql | 1 + .../down.sql | 10 + .../up.sql | 10 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 2 + .../up.sql | 2 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 5 + .../up.sql | 5 + .../down.sql | 8 + .../up.sql | 8 + .../down.sql | 1 + .../2023-12-31-153126_add_admin_column/up.sql | 1 + .../down.sql | 2 + .../up.sql | 12 + .../down.sql | 1 + .../metadata.toml | 1 + .../up.sql | 1 + .../down.sql | 10 + .../up.sql | 1 + .../down.sql | 3 + .../up.sql | 39 + .../down.sql | 1 + .../metadata.toml | 1 + .../up.sql | 2 + .../down.sql | 2 + .../up.sql | 3 + .../down.sql | 8 + .../up.sql | 8 + .../down.sql | 15 + .../up.sql | 2 + .../down.sql | 19 + .../up.sql | 1 + .../down.sql | 1 + .../up.sql | 24 + .../down.sql | 1 + .../metadata.toml | 1 + .../up.sql | 2 + .../down.sql | 3 + .../up.sql | 6 + .../down.sql | 16 + .../up.sql | 4 + .../down.sql | 1 + .../2024-08-17-152408_add-yank-message/up.sql | 3 + .../down.sql | 1 + .../up.sql | 4 + .../down.sql | 2 + .../up.sql | 29 + .../down.sql | 2 + .../up.sql | 2 + .../down.sql | 2 + .../metadata.toml | 1 + .../up.sql | 2 + .../down.sql | 1 + .../up.sql | 25 + .../down.sql | 2 + .../up.sql | 2 + .../down.sql | 2 + .../up.sql | 4 + .../down.sql | 5 + .../up.sql | 10 + .../down.sql | 3 + .../up.sql | 6 + .../down.sql | 4 + .../up.sql | 27 + .../down.sql | 12 + .../up.sql | 3 + .../down.sql | 1 + .../up.sql | 7 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 1 + .../up.sql | 16 + .../down.sql | 1 + .../2025-02-13-084853_not-null-org-id/up.sql | 19 + .../2025-02-17-133723_timezones/down.sql | 45 + .../2025-02-17-133723_timezones/up.sql | 45 + .../2025-03-06-060640_semver_ord/down.sql | 4 + .../2025-03-06-060640_semver_ord/up.sql | 109 + .../down.sql | 3 + .../up.sql | 61 + .../compile-benchmarks/crates.io/package.json | 182 + .../packages/crates-io-msw/fixtures.js | 74 + .../packages/crates-io-msw/fixtures.test.js | 8 + .../crates-io-msw/fixtures/categories.js | 25 + .../fixtures/crate-ownerships.js | 18 + .../packages/crates-io-msw/fixtures/crates.js | 297 + .../crates-io-msw/fixtures/dependencies.js | 57 + .../crates-io-msw/fixtures/keywords.js | 72 + .../packages/crates-io-msw/fixtures/teams.js | 16 + .../packages/crates-io-msw/fixtures/users.js | 26 + .../fixtures/version-downloads.js | 17 + .../crates-io-msw/fixtures/versions.js | 412 + .../crates-io-msw/handlers/api-tokens.js | 6 + .../handlers/api-tokens/create.js | 27 + .../handlers/api-tokens/create.test.js | 110 + .../handlers/api-tokens/delete.js | 21 + .../handlers/api-tokens/delete.test.js | 28 + .../crates-io-msw/handlers/api-tokens/get.js | 26 + .../handlers/api-tokens/get.test.js | 45 + .../crates-io-msw/handlers/api-tokens/list.js | 30 + .../handlers/api-tokens/list.test.js | 78 + .../crates-io-msw/handlers/categories.js | 5 + .../crates-io-msw/handlers/categories/get.js | 15 + .../handlers/categories/get.test.js | 49 + .../handlers/categories/list-slugs.js | 10 + .../handlers/categories/list-slugs.test.js | 49 + .../crates-io-msw/handlers/categories/list.js | 14 + .../handlers/categories/list.test.js | 86 + .../packages/crates-io-msw/handlers/crates.js | 27 + .../handlers/crates/add-owners.js | 54 + .../handlers/crates/add-owners.test.js | 111 + .../crates-io-msw/handlers/crates/delete.js | 20 + .../handlers/crates/delete.test.js | 34 + .../handlers/crates/downloads.js | 29 + .../handlers/crates/downloads.test.js | 132 + .../crates-io-msw/handlers/crates/follow.js | 26 + .../handlers/crates/follow.test.js | 36 + .../handlers/crates/following.js | 21 + .../handlers/crates/following.test.js | 42 + .../crates-io-msw/handlers/crates/get.js | 55 + .../crates-io-msw/handlers/crates/get.test.js | 332 + .../crates-io-msw/handlers/crates/list.js | 83 + .../handlers/crates/list.test.js | 227 + .../handlers/crates/remove-owners.js | 29 + .../handlers/crates/remove-owners.test.js | 96 + .../handlers/crates/reverse-dependencies.js | 29 + .../crates/reverse-dependencies.test.js | 159 + .../handlers/crates/team-owners.js | 18 + .../handlers/crates/team-owners.test.js | 40 + .../crates-io-msw/handlers/crates/unfollow.js | 26 + .../handlers/crates/unfollow.test.js | 36 + .../handlers/crates/user-owners.js | 18 + .../handlers/crates/user-owners.test.js | 40 + .../crates-io-msw/handlers/docs-rs.js | 7 + .../crates-io-msw/handlers/docs-rs.test.js | 7 + .../crates-io-msw/handlers/invites.js | 6 + .../handlers/invites/legacy-list.js | 24 + .../handlers/invites/legacy-list.test.js | 93 + .../crates-io-msw/handlers/invites/list.js | 55 + .../handlers/invites/list.test.js | 221 + .../handlers/invites/redeem-by-crate-id.js | 31 + .../invites/redeem-by-crate-id.test.js | 88 + .../handlers/invites/redeem-by-token.js | 16 + .../handlers/invites/redeem-by-token.test.js | 36 + .../crates-io-msw/handlers/keywords.js | 4 + .../crates-io-msw/handlers/keywords/get.js | 15 + .../handlers/keywords/get.test.js | 40 + .../crates-io-msw/handlers/keywords/list.js | 14 + .../handlers/keywords/list.test.js | 70 + .../crates-io-msw/handlers/metadata.js | 13 + .../crates-io-msw/handlers/metadata.test.js | 13 + .../crates-io-msw/handlers/playground.js | 3 + .../crates-io-msw/handlers/playground.test.js | 7 + .../crates-io-msw/handlers/sessions.js | 3 + .../crates-io-msw/handlers/sessions/delete.js | 8 + .../handlers/sessions/delete.test.js | 22 + .../crates-io-msw/handlers/summary.js | 35 + .../crates-io-msw/handlers/summary.test.js | 174 + .../packages/crates-io-msw/handlers/teams.js | 3 + .../crates-io-msw/handlers/teams/get.js | 15 + .../crates-io-msw/handlers/teams/get.test.js | 25 + .../packages/crates-io-msw/handlers/users.js | 7 + .../handlers/users/confirm-email.js | 16 + .../handlers/users/confirm-email.test.js | 37 + .../crates-io-msw/handlers/users/get.js | 15 + .../crates-io-msw/handlers/users/get.test.js | 25 + .../crates-io-msw/handlers/users/me.js | 23 + .../crates-io-msw/handlers/users/me.test.js | 55 + .../crates-io-msw/handlers/users/resend.js | 18 + .../handlers/users/resend.test.js | 29 + .../crates-io-msw/handlers/users/update.js | 44 + .../handlers/users/update.test.js | 83 + .../crates-io-msw/handlers/versions.js | 21 + .../handlers/versions/dependencies.js | 27 + .../handlers/versions/dependencies.test.js | 80 + .../handlers/versions/downloads.js | 30 + .../handlers/versions/downloads.test.js | 58 + .../handlers/versions/follow-updates.js | 28 + .../handlers/versions/follow-updates.test.js | 84 + .../crates-io-msw/handlers/versions/get.js | 25 + .../handlers/versions/get.test.js | 50 + .../crates-io-msw/handlers/versions/list.js | 61 + .../handlers/versions/list.test.js | 268 + .../crates-io-msw/handlers/versions/patch.js | 39 + .../handlers/versions/patch.test.js | 114 + .../crates-io-msw/handlers/versions/readme.js | 18 + .../handlers/versions/readme.test.js | 37 + .../crates-io-msw/handlers/versions/unyank.js | 27 + .../handlers/versions/unyank.test.js | 49 + .../crates-io-msw/handlers/versions/yank.js | 27 + .../handlers/versions/yank.test.js | 47 + .../crates.io/packages/crates-io-msw/index.js | 57 + .../crates-io-msw/models/api-token.js | 39 + .../crates-io-msw/models/api-token.test.js | 44 + .../packages/crates-io-msw/models/category.js | 23 + .../crates-io-msw/models/category.test.js | 35 + .../models/crate-owner-invitation.js | 32 + .../models/crate-owner-invitation.test.js | 92 + .../crates-io-msw/models/crate-ownership.js | 28 + .../models/crate-ownership.test.js | 117 + .../packages/crates-io-msw/models/crate.js | 35 + .../crates-io-msw/models/crate.test.js | 84 + .../crates-io-msw/models/dependency.js | 35 + .../crates-io-msw/models/dependency.test.js | 89 + .../packages/crates-io-msw/models/keyword.js | 14 + .../crates-io-msw/models/keyword.test.js | 27 + .../crates-io-msw/models/msw-session.js | 25 + .../crates-io-msw/models/msw-session.test.js | 34 + .../packages/crates-io-msw/models/team.js | 24 + .../crates-io-msw/models/team.test.js | 35 + .../packages/crates-io-msw/models/user.js | 33 + .../crates-io-msw/models/user.test.js | 45 + .../crates-io-msw/models/version-download.js | 22 + .../models/version-download.test.js | 59 + .../packages/crates-io-msw/models/version.js | 42 + .../crates-io-msw/models/version.test.js | 51 + .../packages/crates-io-msw/package.json | 29 + .../crates-io-msw/serializers/api-token.js | 24 + .../crates-io-msw/serializers/category.js | 18 + .../crates-io-msw/serializers/crate.js | 66 + .../crates-io-msw/serializers/dependency.js | 13 + .../crates-io-msw/serializers/invite.js | 18 + .../crates-io-msw/serializers/keyword.js | 10 + .../crates-io-msw/serializers/team.js | 9 + .../crates-io-msw/serializers/user.js | 19 + .../crates-io-msw/serializers/version.js | 21 + .../packages/crates-io-msw/utils/dates.js | 5 + .../packages/crates-io-msw/utils/defaults.js | 5 + .../packages/crates-io-msw/utils/factory.d.ts | 7 + .../packages/crates-io-msw/utils/factory.js | 53 + .../packages/crates-io-msw/utils/handlers.js | 20 + .../packages/crates-io-msw/utils/random.js | 12 + .../crates-io-msw/utils/release-tracks.js | 16 + .../crates-io-msw/utils/serializers.js | 9 + .../packages/crates-io-msw/utils/session.js | 12 + .../packages/crates-io-msw/utils/strings.js | 13 + .../crates-io-msw/utils/strings.test.js | 36 + .../packages/crates-io-msw/vitest.config.js | 11 + .../packages/crates-io-msw/vitest.setup.js | 11 + .../crates.io/playwright.config.ts | 85 + .../crates.io/pnpm-lock.yaml | 18909 ++++++++++++++++ .../crates.io/pnpm-workspace.yaml | 2 + .../crates.io/public/.well-known/security.txt | 2 + .../crates.io/public/assets/box.svg | 3 + .../crates.io/public/assets/calendar.svg | 58 + .../crates.io/public/assets/cargo.png | Bin 0 -> 60046 bytes .../crates.io/public/assets/check-mark.svg | 3 + .../public/assets/checkbox-empty.svg | 60 + .../crates.io/public/assets/checkbox.svg | 58 + .../crates.io/public/assets/chevron-right.svg | 6 + .../public/assets/circle-question.svg | 4 + .../crates.io/public/assets/color-mode.svg | 1 + .../crates.io/public/assets/copy.svg | 7 + .../crates.io/public/assets/crate.svg | 5 + .../crates.io/public/assets/cuddlyferris.svg | 21 + .../crates.io/public/assets/docs-rs.svg | 4 + .../public/assets/download-arrow.svg | 4 + .../crates.io/public/assets/download.svg | 6 + .../crates.io/public/assets/dropdown.svg | 3 + .../crates.io/public/assets/file-archive.svg | 3 + .../crates.io/public/assets/flag.svg | 15 + .../crates.io/public/assets/following.svg | 6 + .../crates.io/public/assets/github.svg | 3 + .../public/assets/latest-updates.svg | 5 + .../crates.io/public/assets/left-pag.svg | 5 + .../crates.io/public/assets/license.svg | 58 + .../crates.io/public/assets/link.svg | 53 + .../crates.io/public/assets/lock.svg | 3 + .../crates.io/public/assets/moon.svg | 3 + .../crates.io/public/assets/my-packages.svg | 4 + .../crates.io/public/assets/og-image.png | Bin 0 -> 218013 bytes .../crates.io/public/assets/right-arrow.svg | 4 + .../crates.io/public/assets/right-pag.svg | 5 + .../crates.io/public/assets/rust.svg | 3 + .../crates.io/public/assets/search.svg | 3 + .../crates.io/public/assets/sort.svg | 8 + .../crates.io/public/assets/star.svg | 58 + .../crates.io/public/assets/sun.svg | 3 + .../crates.io/public/assets/trash.svg | 58 + .../public/assets/triangle-exclamation.svg | 4 + .../crates.io/public/assets/twitter.svg | 4 + .../crates.io/public/assets/weight.svg | 58 + .../crates.io/public/assets/zulip.svg | 3 + .../crates.io/public/favicon.ico | Bin 0 -> 15086 bytes .../crates.io/public/github-redirect.html | 16 + .../crates.io/public/opensearch.xml | 7 + .../crates.io/public/robots.txt | 3 + .../crates.io/script/create-diff-link.sh | 15 + .../crates.io/script/import-database-dump.sh | 68 + .../script/infer-database-dump-version.py | 94 + .../crates.io/script/init-local-index.sh | 41 + .../crates.io/script/precompress-assets.mjs | 31 + .../crates.io/script/start-web.sh | 7 + .../compile-benchmarks/crates.io/src/app.rs | 220 + .../compile-benchmarks/crates.io/src/auth.rs | 376 + .../crates.io/src/bin/background-worker.rs | 132 + .../src/bin/crates-admin/default_versions.rs | 46 + .../src/bin/crates-admin/delete_crate.rs | 212 + .../src/bin/crates-admin/delete_version.rs | 137 + .../src/bin/crates-admin/dialoguer.rs | 37 + .../src/bin/crates-admin/enqueue_job.rs | 175 + .../crates.io/src/bin/crates-admin/main.rs | 67 + .../crates.io/src/bin/crates-admin/migrate.rs | 63 + .../src/bin/crates-admin/populate.rs | 45 + .../src/bin/crates-admin/render_readmes.rs | 364 + .../src/bin/crates-admin/transfer_crates.rs | 91 + .../src/bin/crates-admin/upload_index.rs | 70 + .../src/bin/crates-admin/verify_token.rs | 28 + .../src/bin/crates-admin/yank_version.rs | 81 + .../crates.io/src/bin/monitor.rs | 188 + .../crates.io/src/bin/server.rs | 137 + .../compile-benchmarks/crates.io/src/boot.rs | 1 + .../crates.io/src/boot/categories.rs | 122 + .../crates.io/src/boot/categories.toml | 631 + .../crates.io/src/certs/crunchy.pem | 11 + .../crates.io/src/certs/mod.rs | 2 + .../crates.io/src/cloudfront.rs | 85 + .../crates.io/src/config.rs | 13 + .../crates.io/src/config/base.rs | 21 + .../crates.io/src/config/cdn_log_queue.rs | 33 + .../crates.io/src/config/cdn_log_storage.rs | 53 + .../crates.io/src/config/database_pools.rs | 163 + .../crates.io/src/config/sentry.rs | 35 + .../crates.io/src/config/server.rs | 379 + .../crates.io/src/controllers.rs | 18 + .../crates.io/src/controllers/category.rs | 155 + .../src/controllers/crate_owner_invitation.rs | 420 + .../crates.io/src/controllers/git.rs | 99 + .../crates.io/src/controllers/github.rs | 1 + .../src/controllers/github/secret_scanning.rs | 306 + .../crates.io/src/controllers/helpers.rs | 31 + .../src/controllers/helpers/authorization.rs | 57 + .../src/controllers/helpers/pagination.rs | 768 + .../crates.io/src/controllers/keyword.rs | 96 + .../crates.io/src/controllers/krate.rs | 52 + .../crates.io/src/controllers/krate/delete.rs | 579 + .../src/controllers/krate/downloads.rs | 217 + .../crates.io/src/controllers/krate/follow.rs | 110 + .../src/controllers/krate/metadata.rs | 385 + .../crates.io/src/controllers/krate/owners.rs | 543 + .../src/controllers/krate/publish.rs | 964 + .../src/controllers/krate/rev_deps.rs | 89 + .../crates.io/src/controllers/krate/search.rs | 752 + ...delete__tests__happy_path_new_crate-2.snap | 32 + ...delete__tests__happy_path_old_crate-2.snap | 32 + ..._tests__happy_path_really_old_crate-2.snap | 32 + .../src/controllers/krate/versions.rs | 540 + .../crates.io/src/controllers/metrics.rs | 38 + .../crates.io/src/controllers/session.rs | 237 + .../src/controllers/site_metadata.rs | 41 + .../crates.io/src/controllers/summary.rs | 201 + .../crates.io/src/controllers/team.rs | 32 + .../crates.io/src/controllers/token.rs | 313 + .../trustpub/github_configs/create/mod.rs | 129 + ..._configs__create__tests__happy_path-2.snap | 29 + ...ub_configs__create__tests__happy_path.snap | 16 + ...e__tests__happy_path_with_environment.snap | 16 + .../trustpub/github_configs/create/tests.rs | 372 + .../trustpub/github_configs/delete/mod.rs | 95 + ...ub_configs__delete__tests__happy_path.snap | 24 + .../trustpub/github_configs/delete/tests.rs | 182 + .../trustpub/github_configs/emails.rs | 97 + .../trustpub/github_configs/json.rs | 54 + .../trustpub/github_configs/list/mod.rs | 85 + ...s__list__tests__crate_with_no_configs.snap | 7 + ...ub_configs__list__tests__happy_path-2.snap | 18 + ...thub_configs__list__tests__happy_path.snap | 28 + .../trustpub/github_configs/list/tests.rs | 153 + .../trustpub/github_configs/mod.rs | 5 + .../crates.io/src/controllers/trustpub/mod.rs | 1 + .../crates.io/src/controllers/user.rs | 8 + .../controllers/user/email_notifications.rs | 92 + .../controllers/user/email_verification.rs | 141 + .../crates.io/src/controllers/user/me.rs | 132 + .../crates.io/src/controllers/user/other.rs | 87 + ...ail_verification__tests__happy_path-2.snap | 14 + .../crates.io/src/controllers/user/update.rs | 168 + .../crates.io/src/controllers/util.rs | 74 + .../crates.io/src/controllers/version.rs | 63 + .../src/controllers/version/authors.rs | 22 + .../src/controllers/version/dependencies.rs | 48 + .../crates.io/src/controllers/version/docs.rs | 149 + .../src/controllers/version/downloads.rs | 103 + .../src/controllers/version/metadata.rs | 39 + .../src/controllers/version/readme.rs | 33 + .../src/controllers/version/update.rs | 191 + .../crates.io/src/controllers/version/yank.rs | 92 + .../compile-benchmarks/crates.io/src/db.rs | 126 + .../compile-benchmarks/crates.io/src/email.rs | 200 + .../crates.io/src/external_urls.rs | 97 + .../crates.io/src/fastly.rs | 98 + .../crates.io/src/headers.rs | 37 + .../compile-benchmarks/crates.io/src/index.rs | 195 + .../compile-benchmarks/crates.io/src/lib.rs | 81 + .../crates.io/src/licenses.rs | 29 + .../crates.io/src/metrics/instance.rs | 81 + .../crates.io/src/metrics/log_encoder.rs | 445 + .../crates.io/src/metrics/macros.rs | 134 + .../crates.io/src/metrics/mod.rs | 8 + .../crates.io/src/metrics/service.rs | 64 + .../crates.io/src/middleware.rs | 95 + .../crates.io/src/middleware/app.rs | 13 + .../crates.io/src/middleware/block_traffic.rs | 97 + .../crates.io/src/middleware/cargo_compat.rs | 255 + .../src/middleware/common_headers.rs | 66 + .../crates.io/src/middleware/debug.rs | 24 + .../crates.io/src/middleware/ember_html.rs | 196 + .../crates.io/src/middleware/log_request.rs | 118 + .../src/middleware/no_user_agent_message.txt | 13 + .../src/middleware/normalize_path.rs | 99 + .../crates.io/src/middleware/real_ip.rs | 28 + .../src/middleware/require_user_agent.rs | 50 + .../src/middleware/static_or_continue.rs | 38 + .../src/middleware/update_metrics.rs | 58 + .../crates.io/src/openapi.rs | 92 + .../crates.io/src/rate_limiter.rs | 761 + .../crates.io/src/real_ip.rs | 159 + .../crates.io/src/router.rs | 126 + .../crates.io/src/sentry/mod.rs | 167 + ...es_io__index__tests__index_metadata-2.snap | 48 + ...ates_io__index__tests__index_metadata.snap | 14 + ..._io__openapi__tests__openapi_snapshot.snap | 4498 ++++ .../compile-benchmarks/crates.io/src/sqs.rs | 105 + .../crates.io/src/ssh/known_hosts | 3 + .../crates.io/src/ssh/mod.rs | 19 + .../crates.io/src/storage.rs | 663 + .../compile-benchmarks/crates.io/src/tasks.rs | 40 + .../crates.io/src/tests/account_lock.rs | 57 + .../crates.io/src/tests/authentication.rs | 45 + .../crates.io/src/tests/blocked_routes.rs | 52 + .../src/tests/builders/dependency.rs | 67 + .../crates.io/src/tests/builders/krate.rs | 190 + .../crates.io/src/tests/builders/mod.rs | 11 + .../crates.io/src/tests/builders/publish.rs | 277 + .../crates.io/src/tests/builders/version.rs | 162 + .../crates.io/src/tests/categories.rs | 102 + .../crates.io/src/tests/cors.rs | 55 + .../crates.io/src/tests/dump_db.rs | 111 + .../src/tests/github_secret_scanning.rs | 256 + .../crates.io/src/tests/issues/issue1205.rs | 100 + .../crates.io/src/tests/issues/issue2736.rs | 68 + .../crates.io/src/tests/issues/mod.rs | 2 + .../crates.io/src/tests/krate/following.rs | 148 + .../crates.io/src/tests/krate/mod.rs | 3 + .../src/tests/krate/publish/audit_action.rs | 26 + .../crates.io/src/tests/krate/publish/auth.rs | 57 + .../src/tests/krate/publish/basics.rs | 193 + .../src/tests/krate/publish/build_metadata.rs | 62 + .../src/tests/krate/publish/categories.rs | 59 + .../src/tests/krate/publish/deleted_crates.rs | 39 + .../src/tests/krate/publish/dependencies.rs | 409 + .../src/tests/krate/publish/edition.rs | 38 + .../src/tests/krate/publish/emails.rs | 45 + .../src/tests/krate/publish/features.rs | 207 + .../crates.io/src/tests/krate/publish/git.rs | 21 + .../src/tests/krate/publish/inheritance.rs | 29 + .../src/tests/krate/publish/keywords.rs | 59 + .../src/tests/krate/publish/links.rs | 39 + .../src/tests/krate/publish/manifest.rs | 198 + .../src/tests/krate/publish/max_size.rs | 157 + .../crates.io/src/tests/krate/publish/mod.rs | 22 + .../src/tests/krate/publish/rate_limit.rs | 334 + .../src/tests/krate/publish/readme.rs | 105 + .../src/tests/krate/publish/similar_names.rs | 56 + ...__krate__publish__basics__new_krate-2.snap | 14 + ...__krate__publish__basics__new_krate-4.snap | 18 + ...ts__krate__publish__basics__new_krate.snap | 42 + ...e__publish__basics__new_krate_twice-2.snap | 22 + ...ate__publish__basics__new_krate_twice.snap | 42 + ...ublish__basics__new_krate_twice_alt-2.snap | 22 + ..._publish__basics__new_krate_twice_alt.snap | 42 + ...lish__basics__new_krate_weird_version.snap | 42 + ...publish__basics__new_krate_with_token.snap | 42 + ..._with_build_metadata@build_metadata_1.snap | 42 + ..._with_build_metadata@build_metadata_2.snap | 42 + ..._with_build_metadata@build_metadata_3.snap | 42 + ..._publish__categories__good_categories.snap | 42 + ...e__publish__dependencies__dep_limit-2.snap | 42 + ...h__dependencies__new_krate_sorts_deps.snap | 33 + ...pendencies__new_krate_with_dependency.snap | 24 + ...ndencies__new_with_renamed_dependency.snap | 25 + ...ew_with_underscore_renamed_dependency.snap | 25 + ..._publish__edition__edition_is_saved-2.snap | 56 + ...e__publish__edition__edition_is_saved.snap | 42 + ...name_start_with_number_and_underscore.snap | 17 + ...lish__features__feature_name_with_dot.snap | 16 + ...ures__feature_name_with_unicode_chars.snap | 16 + ...publish__features__features_version_2.snap | 33 + ...ate__publish__keywords__good_keywords.snap | 42 + ...lish__links__crate_with_links_field-2.snap | 56 + ...lish__links__crate_with_links_field-3.snap | 15 + ...ublish__links__crate_with_links_field.snap | 42 + ...__publish__manifest__boolean_readme-2.snap | 56 + ...te__publish__manifest__boolean_readme.snap | 42 + ...ublish__manifest__lib_and_bin_crate-2.snap | 59 + ..._publish__manifest__lib_and_bin_crate.snap | 42 + ...efault_axum_limit_and_max_upload_size.snap | 42 + ...__readme__new_krate_with_empty_readme.snap | 42 + ...ublish__readme__new_krate_with_readme.snap | 42 + ...ew_krate_with_readme_and_plus_version.snap | 42 + ...ate__publish__validation__bad_name-10.snap | 11 + ...rate__publish__validation__bad_name-2.snap | 11 + ...rate__publish__validation__bad_name-3.snap | 11 + ...rate__publish__validation__bad_name-4.snap | 11 + ...rate__publish__validation__bad_name-5.snap | 11 + ...rate__publish__validation__bad_name-6.snap | 11 + ...rate__publish__validation__bad_name-7.snap | 11 + ...rate__publish__validation__bad_name-8.snap | 11 + ...rate__publish__validation__bad_name-9.snap | 11 + ..._krate__publish__validation__bad_name.snap | 11 + .../src/tests/krate/publish/tarball.rs | 115 + .../src/tests/krate/publish/timestamps.rs | 33 + .../src/tests/krate/publish/validation.rs | 127 + ..._yanking__patch_version_yank_unyank-2.snap | 67 + ..._yanking__patch_version_yank_unyank-3.snap | 78 + ..._yanking__patch_version_yank_unyank-4.snap | 78 + ..._yanking__patch_version_yank_unyank-5.snap | 89 + ..._yanking__patch_version_yank_unyank-6.snap | 89 + ...e__yanking__patch_version_yank_unyank.snap | 67 + .../crates.io/src/tests/krate/yanking.rs | 298 + .../crates.io/src/tests/middleware/head.rs | 22 + .../crates.io/src/tests/middleware/mod.rs | 1 + .../crates.io/src/tests/mod.rs | 131 + .../crates.io/src/tests/not_found_error.rs | 21 + .../crates.io/src/tests/owners.rs | 836 + .../crates.io/src/tests/pagination.rs | 35 + .../crates.io/src/tests/read_only_mode.rs | 76 + .../src/tests/routes/categories/get.rs | 133 + .../src/tests/routes/categories/list.rs | 35 + .../src/tests/routes/categories/mod.rs | 2 + ..._tests__routes__categories__get__show.snap | 25 + ...ts__routes__categories__list__index-2.snap | 19 + ...ests__routes__categories__list__index.snap | 10 + .../src/tests/routes/category_slugs/list.rs | 27 + .../src/tests/routes/category_slugs/mod.rs | 1 + ...turns_all_slugs_in_alphabetical_order.snap | 18 + .../src/tests/routes/crates/downloads.rs | 217 + .../src/tests/routes/crates/following.rs | 30 + .../crates.io/src/tests/routes/crates/list.rs | 1313 ++ .../crates.io/src/tests/routes/crates/mod.rs | 8 + .../crates.io/src/tests/routes/crates/new.rs | 20 + .../src/tests/routes/crates/owners/add.rs | 386 + .../src/tests/routes/crates/owners/mod.rs | 2 + .../src/tests/routes/crates/owners/remove.rs | 161 + .../crates.io/src/tests/routes/crates/read.rs | 221 + .../routes/crates/reverse_dependencies.rs | 260 + ...s__crates__downloads__crate_downloads.snap | 21 + ..._crates__downloads__version_downloads.snap | 13 + ...ist__invalid_params_with_null_bytes-2.snap | 11 + ...ist__invalid_params_with_null_bytes-3.snap | 11 + ...ist__invalid_params_with_null_bytes-4.snap | 11 + ...ist__invalid_params_with_null_bytes-5.snap | 11 + ..._list__invalid_params_with_null_bytes.snap | 11 + ...crates__read__include_default_version.snap | 79 + ...tests__routes__crates__read__new_name.snap | 40 + ...io__tests__routes__crates__read__show.snap | 162 + ...routes__crates__read__show_all_yanked.snap | 129 + ...s__routes__crates__read__show_minimal.snap | 40 + ..._not_included_in_reverse_dependencies.snap | 63 + ..._dependencies__reverse_dependencies-2.snap | 11 + ...se_dependencies__reverse_dependencies.snap | 63 + ...cludes_published_by_user_when_present.snap | 107 + ...ery_supports_u64_version_number_parts.snap | 63 + ...n_old_version_depended_but_new_doesnt.snap | 11 + ...ld_version_doesnt_depend_but_new_does.snap | 63 + ...ot_included_in_reverse_dependencies-2.snap | 11 + ..._not_included_in_reverse_dependencies.snap | 63 + .../tests/routes/crates/versions/authors.rs | 23 + .../routes/crates/versions/dependencies.rs | 46 + .../tests/routes/crates/versions/download.rs | 53 + .../src/tests/routes/crates/versions/list.rs | 474 + .../src/tests/routes/crates/versions/mod.rs | 6 + .../src/tests/routes/crates/versions/read.rs | 65 + ...s__crates__versions__authors__authors.snap | 10 + ...tes__crates__versions__list__versions.snap | 120 + ...crate_name_and_semver_no_published_by.snap | 38 + ..._read__show_by_crate_name_and_version.snap | 44 + .../routes/crates/versions/yank_unyank.rs | 404 + .../src/tests/routes/keywords/list.rs | 34 + .../src/tests/routes/keywords/mod.rs | 2 + .../src/tests/routes/keywords/read.rs | 84 + .../tests/routes/me/email_notifications.rs | 143 + .../crates.io/src/tests/routes/me/get.rs | 58 + .../crates.io/src/tests/routes/me/mod.rs | 4 + ...ates_io__tests__routes__me__get__me-2.snap | 19 + ...ates_io__tests__routes__me__get__me-3.snap | 25 + .../src/tests/routes/me/tokens/create.rs | 282 + .../src/tests/routes/me/tokens/delete.rs | 79 + .../tests/routes/me/tokens/delete_current.rs | 83 + .../src/tests/routes/me/tokens/get.rs | 77 + .../src/tests/routes/me/tokens/list.rs | 148 + .../src/tests/routes/me/tokens/mod.rs | 5 + ...okens__create__create_token_success-2.snap | 17 + ..._tokens__create__create_token_success.snap | 16 + ...eate__create_token_with_expiry_date-2.snap | 17 + ...create__create_token_with_expiry_date.snap | 16 + ...eate__create_token_with_null_scopes-2.snap | 17 + ...create__create_token_with_null_scopes.snap | 16 + ...s__create__create_token_with_scopes-2.snap | 17 + ...ens__create__create_token_with_scopes.snap | 21 + ..._tests__routes__me__tokens__get__show.snap | 15 + ...__tokens__get__show_token_with_scopes.snap | 20 + ...routes__me__tokens__list__list_tokens.snap | 31 + .../crates.io/src/tests/routes/me/updates.rs | 107 + .../crates.io/src/tests/routes/metrics.rs | 92 + .../crates.io/src/tests/routes/mod.rs | 23 + .../routes/private/crate_owner_invitations.rs | 362 + .../crates.io/src/tests/routes/private/mod.rs | 1 + .../src/tests/routes/session/authorize.rs | 11 + .../src/tests/routes/session/begin.rs | 14 + .../crates.io/src/tests/routes/session/mod.rs | 2 + .../crates.io/src/tests/routes/summary.rs | 266 + .../crates.io/src/tests/routes/users/mod.rs | 3 + .../crates.io/src/tests/routes/users/read.rs | 64 + .../crates.io/src/tests/routes/users/stats.rs | 75 + .../src/tests/routes/users/update.rs | 123 + .../users/update/publish_notifications.rs | 51 + ...ations__unsubscribe_and_resubscribe-3.snap | 32 + ...ations__unsubscribe_and_resubscribe-4.snap | 32 + ...ations__unsubscribe_and_resubscribe-6.snap | 48 + ...ications__unsubscribe_and_resubscribe.snap | 18 + .../crates.io/src/tests/server.rs | 114 + ...github_secret_alert_for_revoked_token.snap | 11 + ...github_secret_alert_for_unknown_token.snap | 11 + ...__github_secret_alert_revokes_token-2.snap | 19 + ...ng__github_secret_alert_revokes_token.snap | 11 + ...sts__owners__modify_multiple_owners-6.snap | 58 + ...tests__owners__modify_multiple_owners.snap | 30 + ..._io__tests__owners__new_crate_owner-2.snap | 64 + ...es_io__tests__owners__new_crate_owner.snap | 32 + ...int_which_writes_db_in_read_only_mode.snap | 11 + ...raffic_via_arbitrary_header_and_value.snap | 11 + ...__tests__server__block_traffic_via_ip.snap | 11 + ...sts__server__user_agent_is_required-2.snap | 11 + ...tests__server__user_agent_is_required.snap | 11 + ...crates_io__tests__team__publish_owned.snap | 18 + .../crates.io/src/tests/team.rs | 503 + .../crates.io/src/tests/token.rs | 45 + .../crates.io/src/tests/unhealthy_database.rs | 161 + .../crates.io/src/tests/user.rs | 267 + .../crates.io/src/tests/util.rs | 381 + .../crates.io/src/tests/util/chaosproxy.rs | 169 + .../crates.io/src/tests/util/github.rs | 199 + .../crates.io/src/tests/util/insta.rs | 23 + .../crates.io/src/tests/util/matchers.rs | 23 + .../crates.io/src/tests/util/mock_request.rs | 86 + .../crates.io/src/tests/util/response.rs | 126 + .../crates.io/src/tests/util/test_app.rs | 518 + .../crates.io/src/tests/version.rs | 23 + .../crates.io/src/tests/worker/git.rs | 117 + .../crates.io/src/tests/worker/mod.rs | 3 + .../crates.io/src/tests/worker/rss/mod.rs | 3 + ...s__sync_crate_feed__sync_crate_feed-2.snap | 54 + ..._sync_crates_feed__sync_crates_feed-2.snap | 44 + ...ync_updates_feed__sync_updates_feed-2.snap | 63 + .../src/tests/worker/rss/sync_crate_feed.rs | 83 + .../src/tests/worker/rss/sync_crates_feed.rs | 56 + .../src/tests/worker/rss/sync_updates_feed.rs | 86 + ..._worker__sync_admins__sync_admins_job.snap | 31 + .../crates.io/src/tests/worker/sync_admins.rs | 107 + .../crates.io/src/typosquat/cache.rs | 113 + .../crates.io/src/typosquat/checks.rs | 197 + .../crates.io/src/typosquat/config.rs | 63 + .../crates.io/src/typosquat/database.rs | 242 + .../crates.io/src/typosquat/mod.rs | 10 + .../crates.io/src/typosquat/test_util.rs | 49 + .../compile-benchmarks/crates.io/src/util.rs | 10 + .../crates.io/src/util/diesel.rs | 5 + .../crates.io/src/util/errors.rs | 320 + .../crates.io/src/util/errors/json.rs | 113 + .../crates.io/src/util/io_util.rs | 25 + .../crates.io/src/util/request_helpers.rs | 57 + .../crates.io/src/util/string_excl_null.rs | 24 + .../crates.io/src/util/tracing.rs | 75 + .../compile-benchmarks/crates.io/src/views.rs | 1197 + .../crates.io/src/views/krate_publish.rs | 29 + .../crates.io/src/worker/environment.rs | 117 + .../worker/jobs/archive_version_downloads.rs | 429 + .../src/worker/jobs/daily_db_maintenance.rs | 35 + .../crates.io/src/worker/jobs/delete_crate.rs | 67 + .../src/worker/jobs/docs_rs_queue_rebuild.rs | 57 + .../downloads/clean_processed_log_files.rs | 114 + .../src/worker/jobs/downloads/mod.rs | 9 + .../src/worker/jobs/downloads/process_log.rs | 566 + .../downloads/queue/fixtures/empty-event.json | 3 + .../downloads/queue/fixtures/multi-event.json | 72 + .../downloads/queue/fixtures/valid-event.json | 38 + .../src/worker/jobs/downloads/queue/job.rs | 436 + .../worker/jobs/downloads/queue/message.rs | 56 + .../src/worker/jobs/downloads/queue/mod.rs | 4 + ...loads__queue__message__tests__parse-2.snap | 19 + ...loads__queue__message__tests__parse-3.snap | 30 + ...wnloads__queue__message__tests__parse.snap | 7 + .../worker/jobs/downloads/update_metadata.rs | 389 + .../worker/jobs/downloads/update_metadata.sql | 61 + .../crates.io/src/worker/jobs/dump_db.rs | 65 + .../src/worker/jobs/expiry_notification.rs | 285 + .../crates.io/src/worker/jobs/index/mod.rs | 10 + .../src/worker/jobs/index/normalize.rs | 99 + .../crates.io/src/worker/jobs/index/squash.rs | 67 + .../crates.io/src/worker/jobs/index/sync.rs | 123 + .../index.html.j2 | 35 + .../index_version_downloads_archive/mod.rs | 271 + ...wnloads_archive__tests__generate_html.snap | 54 + ...s_archive__tests__generate_html_empty.snap | 34 + ...wnloads_archive__tests__generate_json.snap | 5 + ...s_archive__tests__generate_json_empty.snap | 5 + ...oads_archive__tests__template_context.snap | 54 + .../src/worker/jobs/invalidate_cdns.rs | 57 + .../crates.io/src/worker/jobs/mod.rs | 35 + .../crates.io/src/worker/jobs/readmes.rs | 90 + .../crates.io/src/worker/jobs/rss/mod.rs | 7 + ...e_feed__tests__load_version_updates-2.snap | 16 + ...e_feed__tests__load_version_updates-3.snap | 26 + ...ate_feed__tests__load_version_updates.snap | 10 + ...s_feed__tests__load_version_updates-2.snap | 56 + ...s_feed__tests__load_version_updates-3.snap | 66 + ...tes_feed__tests__load_version_updates.snap | 10 + ...s_feed__tests__load_version_updates-2.snap | 106 + ...s_feed__tests__load_version_updates-3.snap | 116 + ...tes_feed__tests__load_version_updates.snap | 10 + .../src/worker/jobs/rss/sync_crate_feed.rs | 272 + .../src/worker/jobs/rss/sync_crates_feed.rs | 230 + .../src/worker/jobs/rss/sync_updates_feed.rs | 262 + .../worker/jobs/send_publish_notifications.rs | 191 + .../crates.io/src/worker/jobs/sync_admins.rs | 209 + .../src/worker/jobs/trustpub/delete_jtis.rs | 68 + .../src/worker/jobs/trustpub/delete_tokens.rs | 70 + .../crates.io/src/worker/jobs/trustpub/mod.rs | 5 + .../crates.io/src/worker/jobs/typosquat.rs | 174 + .../src/worker/jobs/update_default_version.rs | 33 + .../crates.io/src/worker/mod.rs | 49 + .../compile-benchmarks/crates.io/testem.js | 24 + .../crates.io/tests/acceptance/404-test.js | 21 + .../tests/acceptance/api-token-test.js | 204 + .../tests/acceptance/categories-test.js | 66 + .../tests/acceptance/crate-deletion-test.js | 45 + .../acceptance/crate-dependencies-test.js | 120 + .../tests/acceptance/crate-following-test.js | 113 + .../tests/acceptance/crate-navtabs-test.js | 67 + .../crates.io/tests/acceptance/crate-test.js | 303 + .../crates.io/tests/acceptance/crates-test.js | 118 + .../tests/acceptance/dashboard-test.js | 66 + .../tests/acceptance/dev-mode-test.js | 37 + .../tests/acceptance/email-change-test.js | 177 + .../acceptance/email-confirmation-test.js | 45 + .../tests/acceptance/front-page-test.js | 73 + .../tests/acceptance/invites-test.js | 230 + .../tests/acceptance/keyword-test.js | 24 + .../crates.io/tests/acceptance/login-test.js | 110 + .../crates.io/tests/acceptance/logout-test.js | 26 + .../acceptance/publish-notifications-test.js | 64 + .../tests/acceptance/read-only-mode-test.js | 41 + .../tests/acceptance/readme-rendering-test.js | 135 + .../acceptance/reverse-dependencies-test.js | 94 + .../crates.io/tests/acceptance/search-test.js | 254 + .../acceptance/settings/add-owner-test.js | 81 + .../acceptance/settings/remove-owner-test.js | 87 + .../acceptance/settings/settings-test.js | 57 + .../crates.io/tests/acceptance/sudo-test.js | 118 + .../tests/acceptance/support-test.js | 339 + .../tests/acceptance/team-page-test.js | 44 + .../tests/acceptance/token-invites-test.js | 67 + .../tests/acceptance/user-page-test.js | 43 + .../tests/acceptance/versions-test.js | 82 + .../crates.io/tests/adapters/crate-test.js | 54 + .../crates.io/tests/axe-config.js | 7 + .../crates.io/tests/bugs/2329-test.js | 73 + .../crates.io/tests/bugs/4506-test.js | 45 + .../tests/components/crate-row-test.js | 57 + .../components/crate-sidebar/link-test.js | 55 + .../crate-sidebar/playground-button-test.js | 95 + .../crate-sidebar/toml-snippet-test.js | 56 + .../tests/components/download-graph-test.js | 533 + .../tests/components/owners-list-test.js | 133 + .../components/privileged-action-test.js | 139 + .../tests/components/version-list-row-test.js | 90 + .../crates.io/tests/helpers/fake-timers.js | 15 + .../crates.io/tests/helpers/index.js | 25 + .../crates.io/tests/helpers/match-json.js | 8 + .../crates.io/tests/helpers/sentry.js | 7 + .../crates.io/tests/helpers/setup-msw.js | 34 + .../tests/helpers/visit-ignoring-abort.js | 14 + .../crates.io/tests/index.html | 41 + .../crates.io/tests/models/crate-test.js | 80 + .../crates.io/tests/models/user-test.js | 89 + .../crates.io/tests/models/version-test.js | 348 + .../tests/modifiers/highlight-syntax-test.js | 40 + .../crates.io/tests/routes/category-test.js | 46 + .../tests/routes/crate/delete-test.js | 112 + .../tests/routes/crate/range-test.js | 133 + .../tests/routes/crate/settings-test.js | 56 + .../routes/crate/version/crate-links-test.js | 81 + .../routes/crate/version/docs-link-test.js | 84 + .../tests/routes/crate/version/model-test.js | 111 + .../crates.io/tests/routes/keyword-test.js | 30 + .../routes/settings/tokens/index-test.js | 44 + .../tests/routes/settings/tokens/new-test.js | 349 + .../crates.io/tests/routes/support-test.js | 91 + .../crates.io/tests/routes/team-test.js | 33 + .../crates.io/tests/routes/user-test.js | 33 + .../tests/services/playground-test.js | 41 + .../tests/services/redirector-test.js | 21 + .../crates.io/tests/test-helper.js | 22 + .../tests/unit/helpers/format-email-test.js | 17 + .../tests/unit/helpers/format-num-test.js | 29 + .../tests/unit/helpers/pretty-bytes-test.js | 40 + .../crates.io/tests/utils/ajax-test.js | 191 + .../crates.io/tests/utils/license-test.js | 87 + .../crates.io/tests/utils/search-test.js | 24 + .../crates.io/triagebot.toml | 3 + .../crates.io/vendor/qunit.css | 3 + 1839 files changed, 129090 insertions(+) create mode 100644 collector/compile-benchmarks/crates.io/.buildpacks create mode 120000 collector/compile-benchmarks/crates.io/.dockerignore create mode 100644 collector/compile-benchmarks/crates.io/.editorconfig create mode 100644 collector/compile-benchmarks/crates.io/.ember-cli create mode 100644 collector/compile-benchmarks/crates.io/.env.sample create mode 100644 collector/compile-benchmarks/crates.io/.github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 collector/compile-benchmarks/crates.io/.github/ISSUE_TEMPLATE/config.yml create mode 100644 collector/compile-benchmarks/crates.io/.github/renovate.json5 create mode 100644 collector/compile-benchmarks/crates.io/.github/workflows/ci.yml create mode 100644 collector/compile-benchmarks/crates.io/.github/workflows/smoke-test.yml create mode 100644 collector/compile-benchmarks/crates.io/.gitignore create mode 100644 collector/compile-benchmarks/crates.io/.npmrc create mode 100644 collector/compile-benchmarks/crates.io/.nycrc create mode 100644 collector/compile-benchmarks/crates.io/.prettierignore create mode 100644 collector/compile-benchmarks/crates.io/.template-lintrc.js create mode 100644 collector/compile-benchmarks/crates.io/.watchmanconfig create mode 100644 collector/compile-benchmarks/crates.io/Cargo.lock create mode 100644 collector/compile-benchmarks/crates.io/Cargo.toml create mode 100644 collector/compile-benchmarks/crates.io/Justfile create mode 100644 collector/compile-benchmarks/crates.io/LICENSE-APACHE create mode 100644 collector/compile-benchmarks/crates.io/LICENSE-MIT create mode 100644 collector/compile-benchmarks/crates.io/Procfile create mode 100644 collector/compile-benchmarks/crates.io/README.md create mode 100644 collector/compile-benchmarks/crates.io/app/adapters/api-token.js create mode 100644 collector/compile-benchmarks/crates.io/app/adapters/application.js create mode 100644 collector/compile-benchmarks/crates.io/app/adapters/category-slug.js create mode 100644 collector/compile-benchmarks/crates.io/app/adapters/crate-owner-invite.js create mode 100644 collector/compile-benchmarks/crates.io/app/adapters/crate.js create mode 100644 collector/compile-benchmarks/crates.io/app/adapters/dependency.js create mode 100644 collector/compile-benchmarks/crates.io/app/adapters/team.js create mode 100644 collector/compile-benchmarks/crates.io/app/adapters/user.js create mode 100644 collector/compile-benchmarks/crates.io/app/adapters/version.js create mode 100644 collector/compile-benchmarks/crates.io/app/app.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/color-scheme-menu.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/color-scheme-menu.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/color-scheme-menu.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/copy-button.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/copy-button.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/crate-downloads-list.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/crate-downloads-list.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/crate-header.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/crate-header.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/crate-header.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/crate-list.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/crate-list.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/crate-row.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/crate-row.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/crate-sidebar.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/crate-sidebar.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/crate-sidebar.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/crate-sidebar/install-instructions.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/crate-sidebar/install-instructions.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/crate-sidebar/install-instructions.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/crate-sidebar/link.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/crate-sidebar/link.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/crate-sidebar/link.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/dependency-list/row.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/dependency-list/row.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/dependency-list/row.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/download-graph.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/download-graph.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/download-graph.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/dropdown.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/dropdown.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/dropdown.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/dropdown/content.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/dropdown/content.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/dropdown/menu-item.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/dropdown/menu-item.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/dropdown/menu.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/dropdown/menu.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/dropdown/trigger.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/dropdown/trigger.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/edition.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/edition.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/email-input.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/email-input.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/email-input.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/follow-button.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/follow-button.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/follow-button.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/footer.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/footer.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/footer.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/front-page-list/item.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/front-page-list/item.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/front-page-list/item/placeholder.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/front-page-list/item/placeholder.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/header.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/header.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/header.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/license-expression.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/loading-spinner.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/loading-spinner.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/msrv.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/msrv.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/nav-tabs.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/nav-tabs.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/nav-tabs/tab.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/nav-tabs/tab.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/owned-crate-row.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/owned-crate-row.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/owned-crate-row.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/owners-list.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/owners-list.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/owners-list.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/page-header.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/page-header.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/pagination.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/pagination.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/pending-owner-invite-row.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/pending-owner-invite-row.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/pending-owner-invite-row.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/placeholder.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/placeholder.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/privileged-action.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/privileged-action.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/privileged-action.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/progress-bar.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/progress-bar.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/progress-bar.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/rendered-html.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/rendered-html.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/results-count.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/results-count.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/rev-dep-row.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/rev-dep-row.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/rev-dep-row.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/search-form.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/search-form.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/search-form.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/settings-page.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/settings-page.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/settings/api-tokens.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/settings/api-tokens.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/settings/api-tokens.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/side-menu.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/side-menu.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/side-menu/item.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/side-menu/item.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/sort-dropdown.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/sort-dropdown.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/sort-dropdown/option.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/stats-value.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/stats-value.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/support/crate-report-form.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/support/crate-report-form.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/support/crate-report-form.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/text-content.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/text-content.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/tooltip.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/tooltip.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/tooltip.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/user-avatar.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/user-avatar.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/user-link.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/version-list/row.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/components/version-list/row.js create mode 100644 collector/compile-benchmarks/crates.io/app/components/version-list/row.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/components/yank-button.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/consts.js create mode 100644 collector/compile-benchmarks/crates.io/app/controllers/application.js create mode 100644 collector/compile-benchmarks/crates.io/app/controllers/catch-all.js create mode 100644 collector/compile-benchmarks/crates.io/app/controllers/categories.js create mode 100644 collector/compile-benchmarks/crates.io/app/controllers/category/index.js create mode 100644 collector/compile-benchmarks/crates.io/app/controllers/crate/delete.js create mode 100644 collector/compile-benchmarks/crates.io/app/controllers/crate/reverse-dependencies.js create mode 100644 collector/compile-benchmarks/crates.io/app/controllers/crate/settings.js create mode 100644 collector/compile-benchmarks/crates.io/app/controllers/crate/version.js create mode 100644 collector/compile-benchmarks/crates.io/app/controllers/crate/versions.js create mode 100644 collector/compile-benchmarks/crates.io/app/controllers/crates.js create mode 100644 collector/compile-benchmarks/crates.io/app/controllers/dashboard.js create mode 100644 collector/compile-benchmarks/crates.io/app/controllers/index.js create mode 100644 collector/compile-benchmarks/crates.io/app/controllers/install.js create mode 100644 collector/compile-benchmarks/crates.io/app/controllers/keyword.js create mode 100644 collector/compile-benchmarks/crates.io/app/controllers/keywords.js create mode 100644 collector/compile-benchmarks/crates.io/app/controllers/me/crates.js create mode 100644 collector/compile-benchmarks/crates.io/app/controllers/me/following.js create mode 100644 collector/compile-benchmarks/crates.io/app/controllers/search.js create mode 100644 collector/compile-benchmarks/crates.io/app/controllers/settings/email-notifications.js create mode 100644 collector/compile-benchmarks/crates.io/app/controllers/settings/profile.js create mode 100644 collector/compile-benchmarks/crates.io/app/controllers/settings/tokens/new.js create mode 100644 collector/compile-benchmarks/crates.io/app/controllers/support.js create mode 100644 collector/compile-benchmarks/crates.io/app/controllers/team.js create mode 100644 collector/compile-benchmarks/crates.io/app/controllers/user.js create mode 100644 collector/compile-benchmarks/crates.io/app/helpers/date-format-distance-to-now.js create mode 100644 collector/compile-benchmarks/crates.io/app/helpers/date-format-iso.js create mode 100644 collector/compile-benchmarks/crates.io/app/helpers/date-format.js create mode 100644 collector/compile-benchmarks/crates.io/app/helpers/focus.js create mode 100644 collector/compile-benchmarks/crates.io/app/helpers/format-email.js create mode 100644 collector/compile-benchmarks/crates.io/app/helpers/format-num.js create mode 100644 collector/compile-benchmarks/crates.io/app/helpers/format-req.js create mode 100644 collector/compile-benchmarks/crates.io/app/helpers/html-safe.js create mode 100644 collector/compile-benchmarks/crates.io/app/helpers/is-clipboard-supported.js create mode 100644 collector/compile-benchmarks/crates.io/app/helpers/parse-license.js create mode 100644 collector/compile-benchmarks/crates.io/app/helpers/placeholders.js create mode 100644 collector/compile-benchmarks/crates.io/app/helpers/pretty-bytes.js create mode 100644 collector/compile-benchmarks/crates.io/app/helpers/set-color-scheme.js create mode 100644 collector/compile-benchmarks/crates.io/app/helpers/set-theme.js create mode 100644 collector/compile-benchmarks/crates.io/app/helpers/sum.js create mode 100644 collector/compile-benchmarks/crates.io/app/helpers/truncate-text.js create mode 100644 collector/compile-benchmarks/crates.io/app/index.html create mode 100644 collector/compile-benchmarks/crates.io/app/initializers/app-hook.js create mode 100644 collector/compile-benchmarks/crates.io/app/initializers/hashchange.js create mode 100644 collector/compile-benchmarks/crates.io/app/models/api-token.js create mode 100644 collector/compile-benchmarks/crates.io/app/models/category-slug.js create mode 100644 collector/compile-benchmarks/crates.io/app/models/category.js create mode 100644 collector/compile-benchmarks/crates.io/app/models/crate-owner-invite.js create mode 100644 collector/compile-benchmarks/crates.io/app/models/crate.js create mode 100644 collector/compile-benchmarks/crates.io/app/models/dependency.js create mode 100644 collector/compile-benchmarks/crates.io/app/models/keyword.js create mode 100644 collector/compile-benchmarks/crates.io/app/models/owned-crate.js create mode 100644 collector/compile-benchmarks/crates.io/app/models/team.js create mode 100644 collector/compile-benchmarks/crates.io/app/models/user.js create mode 100644 collector/compile-benchmarks/crates.io/app/models/version-download.js create mode 100644 collector/compile-benchmarks/crates.io/app/models/version.js create mode 100644 collector/compile-benchmarks/crates.io/app/modifiers/highlight-syntax.js create mode 100644 collector/compile-benchmarks/crates.io/app/modifiers/render-mermaids.js create mode 100644 collector/compile-benchmarks/crates.io/app/modifiers/update-source-media.js create mode 100644 collector/compile-benchmarks/crates.io/app/router.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/-authenticated-route.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/accept-invite.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/application.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/catch-all.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/categories.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/category-slugs.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/category.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/category/index.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/confirm.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/crate.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/crate/delete.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/crate/dependencies.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/crate/docs.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/crate/index.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/crate/owners.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/crate/range.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/crate/repo.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/crate/reverse-dependencies.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/crate/settings.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/crate/version-dependencies.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/crate/version.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/crate/versions.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/crates.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/dashboard.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/index.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/install.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/keyword.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/keywords.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/me/crates.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/me/following.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/me/index.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/me/pending-invites.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/search.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/security.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/settings/email-notifications.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/settings/index.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/settings/profile.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/settings/tokens.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/settings/tokens/index.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/settings/tokens/new.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/support.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/team.js create mode 100644 collector/compile-benchmarks/crates.io/app/routes/user.js create mode 100644 collector/compile-benchmarks/crates.io/app/sentry.js create mode 100644 collector/compile-benchmarks/crates.io/app/serializers/api-token.js create mode 100644 collector/compile-benchmarks/crates.io/app/serializers/application.js create mode 100644 collector/compile-benchmarks/crates.io/app/serializers/crate-owner-invite.js create mode 100644 collector/compile-benchmarks/crates.io/app/serializers/crate.js create mode 100644 collector/compile-benchmarks/crates.io/app/serializers/dependency.js create mode 100644 collector/compile-benchmarks/crates.io/app/serializers/version-download.js create mode 100644 collector/compile-benchmarks/crates.io/app/serializers/version.js create mode 100644 collector/compile-benchmarks/crates.io/app/services/chartjs.js create mode 100644 collector/compile-benchmarks/crates.io/app/services/color-scheme.js create mode 100644 collector/compile-benchmarks/crates.io/app/services/head-data.js create mode 100644 collector/compile-benchmarks/crates.io/app/services/header.js create mode 100644 collector/compile-benchmarks/crates.io/app/services/intl.js create mode 100755 collector/compile-benchmarks/crates.io/app/services/mermaid.js create mode 100644 collector/compile-benchmarks/crates.io/app/services/playground.js create mode 100644 collector/compile-benchmarks/crates.io/app/services/pristine-query.js create mode 100644 collector/compile-benchmarks/crates.io/app/services/progress.js create mode 100644 collector/compile-benchmarks/crates.io/app/services/redirector.js create mode 100644 collector/compile-benchmarks/crates.io/app/services/release-tracks.js create mode 100644 collector/compile-benchmarks/crates.io/app/services/sentry.js create mode 100644 collector/compile-benchmarks/crates.io/app/services/session.js create mode 100644 collector/compile-benchmarks/crates.io/app/services/store.js create mode 100644 collector/compile-benchmarks/crates.io/app/services/testing.js create mode 100644 collector/compile-benchmarks/crates.io/app/styles/application.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/catch-all.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/categories.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/category-slugs.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/category/index.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/crate/delete.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/crate/reverse-dependencies.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/crate/settings.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/crate/version-dependencies.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/crate/version.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/crate/versions.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/crates.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/dashboard.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/index.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/keyword/index.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/keywords.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/me/crates.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/me/following.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/me/pending-invites.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/search.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/settings/appearance.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/settings/email-notifications.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/settings/profile.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/settings/tokens/new.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/shared/a11y.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/shared/buttons.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/shared/forms.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/shared/sort-by.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/shared/typography.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/support.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/team.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/styles/user.module.css create mode 100644 collector/compile-benchmarks/crates.io/app/templates/accept-invite.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/application.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/authenticated.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/catch-all.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/categories.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/category-slugs.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/category/error.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/category/index.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/crate/delete.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/crate/docs.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/crate/error.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/crate/reverse-dependencies.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/crate/settings.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/crate/version-dependencies.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/crate/version.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/crate/versions.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/crates.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/dashboard.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/data-access.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/error.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/head.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/index.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/install.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/keyword.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/keywords.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/login.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/logout.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/me/crates.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/me/following.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/me/pending-invites.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/policies/index.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/policies/security.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/search.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/settings/email-notifications.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/settings/profile.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/settings/tokens.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/settings/tokens/index.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/settings/tokens/new.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/support.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/team.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/templates/user.hbs create mode 100644 collector/compile-benchmarks/crates.io/app/transforms/date.js create mode 100644 collector/compile-benchmarks/crates.io/app/utils/ajax.js create mode 100644 collector/compile-benchmarks/crates.io/app/utils/concurrency.js create mode 100644 collector/compile-benchmarks/crates.io/app/utils/license.js create mode 100644 collector/compile-benchmarks/crates.io/app/utils/local-storage.js create mode 100644 collector/compile-benchmarks/crates.io/app/utils/pagination.js create mode 100644 collector/compile-benchmarks/crates.io/app/utils/search.js create mode 100644 collector/compile-benchmarks/crates.io/app/utils/sentry.js create mode 100644 collector/compile-benchmarks/crates.io/app/utils/token-scopes.js create mode 100644 collector/compile-benchmarks/crates.io/backend.Dockerfile create mode 100644 collector/compile-benchmarks/crates.io/codecov.yml create mode 100644 collector/compile-benchmarks/crates.io/config/coverage.js create mode 100644 collector/compile-benchmarks/crates.io/config/dependency-lint.js create mode 100644 collector/compile-benchmarks/crates.io/config/environment.js create mode 100644 collector/compile-benchmarks/crates.io/config/manifest.js create mode 100644 collector/compile-benchmarks/crates.io/config/optional-features.json create mode 100644 collector/compile-benchmarks/crates.io/config/targets.js create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_cdn_logs/Cargo.toml create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_cdn_logs/README.md create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_cdn_logs/benches/count_downloads.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_cdn_logs/examples/count_downloads.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_cdn_logs/src/cloudfront.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_cdn_logs/src/compression.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_cdn_logs/src/download_map.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_cdn_logs/src/fastly/json.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_cdn_logs/src/fastly/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_cdn_logs/src/lib.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_cdn_logs/src/paths.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_cdn_logs/src/test_utils.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_cdn_logs/test_data/cloudfront/basic.log create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_cdn_logs/test_data/cloudfront/basic.log.gz create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_cdn_logs/test_data/cloudfront/percent-encoding.log create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_cdn_logs/test_data/cloudfront/recoverable-errors.log create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_cdn_logs/test_data/cloudfront/unknown-version.log create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_cdn_logs/test_data/cloudfront/unrelated-traffic.log create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_cdn_logs/test_data/fastly/basic.log create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_cdn_logs/test_data/fastly/basic.log.zst create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_cdn_logs/test_data/fastly/percent-encoding.log create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_cdn_logs/test_data/fastly/recoverable-errors.log create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_cdn_logs/test_data/fastly/unrelated-traffic.log create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/Cargo.toml create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/README.md create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/lib.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/action.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/category.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/crate_owner_invitation.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/default_versions.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/deleted_crate.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/dependency.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/download.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/email.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/follow.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/helpers.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/helpers/with_count.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/keyword.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/krate.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/krate_reverse_dependencies.sql create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/owner.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/parent_categories.sql create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/subcategories.sql create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/team.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/token.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/token/scopes.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/toplevel.sql create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/trustpub/github_config.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/trustpub/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/trustpub/token.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/trustpub/used_jti.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/user.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/models/version.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/schema.patch create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/schema.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/utils/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/src/utils/token.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/tests/load_foreign_key_constraints.sql create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/tests/schema_details.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database/tests/semver_ord.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database_dump/Cargo.toml create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database_dump/README.md create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database_dump/src/configuration.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database_dump/src/dump-db.toml create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database_dump/src/dump-export.sql.j2 create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database_dump/src/dump-import.sql.j2 create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database_dump/src/gen_scripts.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database_dump/src/lib.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database_dump/src/readme_for_tarball.md create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database_dump/src/snapshots/crates_io_database_dump__tests__sql_scripts@export.sql.snap create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_database_dump/src/snapshots/crates_io_database_dump__tests__sql_scripts@import.sql.snap create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_diesel_helpers/Cargo.toml create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_diesel_helpers/README.md create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_diesel_helpers/src/fns.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_diesel_helpers/src/lib.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_diesel_helpers/src/pg_enum.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_diesel_helpers/src/semver.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_docs_rs/Cargo.toml create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_docs_rs/README.md create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_docs_rs/examples/test_docs_rs_client.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_docs_rs/src/lib.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_env_vars/Cargo.toml create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_env_vars/README.md create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_env_vars/src/lib.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_github/Cargo.toml create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_github/README.md create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_github/examples/test_github_client.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_github/src/lib.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_index/Cargo.toml create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_index/README.md create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_index/credentials.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_index/data.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_index/features.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_index/lib.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_index/repo.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_index/ser.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_index/snapshots/crates_io_index__features__tests__split_features_clap.snap create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_index/testing.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_markdown/Cargo.toml create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_markdown/README.md create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_markdown/lib.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_pagerduty/Cargo.toml create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_pagerduty/README.md create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_pagerduty/examples/test_pagerduty.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_pagerduty/src/lib.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_session/Cargo.toml create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_session/README.md create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_session/src/lib.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_smoke_test/Cargo.toml create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_smoke_test/README.md create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_smoke_test/src/api.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_smoke_test/src/cargo.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_smoke_test/src/exit_status_ext.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_smoke_test/src/git.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_smoke_test/src/main.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_tarball/Cargo.toml create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_tarball/README.md create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_tarball/examples/check_all_crates.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_tarball/examples/read_file.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_tarball/src/builder.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_tarball/src/lib.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_tarball/src/limit_reader.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_tarball/src/manifest.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_tarball/src/snapshots/crates_io_tarball__tests__app.snap create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_tarball/src/snapshots/crates_io_tarball__tests__lib.snap create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_tarball/src/snapshots/crates_io_tarball__tests__lib_with_bins_and_example-2.snap create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_tarball/src/snapshots/crates_io_tarball__tests__lib_with_bins_and_example-3.snap create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_tarball/src/snapshots/crates_io_tarball__tests__lib_with_bins_and_example.snap create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_tarball/src/vcs_info.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_team_repo/Cargo.toml create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_team_repo/README.md create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_team_repo/examples/basic.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_team_repo/src/certs.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_team_repo/src/isrg-root-x1.pem create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_team_repo/src/isrg-root-x2.pem create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_team_repo/src/lib.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_test_db/Cargo.toml create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_test_db/README.md create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_test_db/src/lib.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_trustpub/Cargo.toml create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_trustpub/README.md create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_trustpub/src/github/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_trustpub/src/github/validation.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_trustpub/src/lib.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_worker/Cargo.toml create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_worker/README.md create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_worker/src/background_job.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_worker/src/errors.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_worker/src/job_registry.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_worker/src/lib.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_worker/src/runner.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_worker/src/schema.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_worker/src/storage.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_worker/src/util.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_worker/src/worker.rs create mode 100644 collector/compile-benchmarks/crates.io/crates/crates_io_worker/tests/runner.rs create mode 100644 collector/compile-benchmarks/crates.io/deny.toml create mode 100644 collector/compile-benchmarks/crates.io/diesel.toml create mode 100644 collector/compile-benchmarks/crates.io/docker-compose.yml create mode 100644 collector/compile-benchmarks/crates.io/docker/docker-entrypoint-initdb.d/create-databases.sql create mode 100755 collector/compile-benchmarks/crates.io/docker_entrypoint.sh create mode 100644 collector/compile-benchmarks/crates.io/docs/ARCHITECTURE.md create mode 100644 collector/compile-benchmarks/crates.io/docs/BACKEND.md create mode 100644 collector/compile-benchmarks/crates.io/docs/CONTRIBUTING.md create mode 100644 collector/compile-benchmarks/crates.io/docs/FRONTEND.md create mode 100644 collector/compile-benchmarks/crates.io/docs/MIRROR.md create mode 100644 collector/compile-benchmarks/crates.io/docs/PR-REVIEW.md create mode 100644 collector/compile-benchmarks/crates.io/docs/categories.md create mode 100644 collector/compile-benchmarks/crates.io/docs/readme-logo-dark.png create mode 100644 collector/compile-benchmarks/crates.io/docs/readme-logo.png create mode 100644 collector/compile-benchmarks/crates.io/e2e/.gitkeep create mode 100644 collector/compile-benchmarks/crates.io/e2e/README.md create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/404.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/api-token.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/categories.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/crate-deletion.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/crate-dependencies.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/crate-following.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/crate-navtabs.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/crate.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/crates.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/dashboard.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/email-change.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/email-confirmation.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/front-page.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/invites.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/keyword.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/login.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/logout.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/publish-notifications.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/read-only-mode.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/readme-rendering.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/reverse-dependencies.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/search.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/settings/add-owner.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/settings/remove-owner.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/settings/settings.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/sudo.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/support.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/team-page.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/token-invites.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/user-page.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/acceptance/versions.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/bugs/2329.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/bugs/4506.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/deferred.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/fixtures/a11y.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/fixtures/ember.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/fixtures/fake-timers.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/fixtures/percy.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/helper.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/routes/category.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/routes/crate/delete.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/routes/crate/range.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/routes/crate/version/crate-links.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/routes/crate/version/docs-link.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/routes/crate/version/model.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/routes/keyword.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/routes/settings/tokens/index.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/routes/settings/tokens/new.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/routes/support.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/routes/team.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/routes/user.spec.ts create mode 100644 collector/compile-benchmarks/crates.io/e2e/tsconfig.json create mode 100644 collector/compile-benchmarks/crates.io/ember-cli-build.js create mode 100644 collector/compile-benchmarks/crates.io/eslint.config.mjs create mode 100644 collector/compile-benchmarks/crates.io/frontend.Dockerfile create mode 100644 collector/compile-benchmarks/crates.io/git-commit.txt create mode 100644 collector/compile-benchmarks/crates.io/migrations/00000000000000_diesel_initial_setup/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/00000000000000_diesel_initial_setup/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140924113530_dumped_migration_1/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140924113530_dumped_migration_1/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140924114003_dumped_migration_2/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140924114003_dumped_migration_2/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140924114059_dumped_migration_3/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140924114059_dumped_migration_3/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140924115329_dumped_migration_4/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140924115329_dumped_migration_4/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140924120803_dumped_migration_5/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140924120803_dumped_migration_5/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140925132248_dumped_migration_6/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140925132248_dumped_migration_6/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140925132249_dumped_migration_7/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140925132249_dumped_migration_7/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140925132250_dumped_migration_8/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140925132250_dumped_migration_8/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140925132251_dumped_migration_9/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140925132251_dumped_migration_9/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140925132252_dumped_migration_10/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140925132252_dumped_migration_10/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140925132253_dumped_migration_11/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140925132253_dumped_migration_11/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140925132254_dumped_migration_12/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140925132254_dumped_migration_12/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140925153704_dumped_migration_13/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140925153704_dumped_migration_13/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140925153705_dumped_migration_14/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140925153705_dumped_migration_14/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140925161623_dumped_migration_15/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140925161623_dumped_migration_15/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140925161624_dumped_migration_16/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140925161624_dumped_migration_16/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140925161625_dumped_migration_17/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140925161625_dumped_migration_17/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140926130044_dumped_migration_18/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140926130044_dumped_migration_18/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140926130046_dumped_migration_19/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140926130046_dumped_migration_19/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140926174020_dumped_migration_20/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140926174020_dumped_migration_20/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103749_dumped_migration_21/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103749_dumped_migration_21/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103750_dumped_migration_22/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103750_dumped_migration_22/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103751_dumped_migration_23/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103751_dumped_migration_23/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103752_dumped_migration_24/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103752_dumped_migration_24/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103753_dumped_migration_25/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103753_dumped_migration_25/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103754_dumped_migration_26/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103754_dumped_migration_26/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103755_dumped_migration_27/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103755_dumped_migration_27/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103756_dumped_migration_28/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103756_dumped_migration_28/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103757_dumped_migration_29/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103757_dumped_migration_29/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103758_dumped_migration_30/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103758_dumped_migration_30/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103759_dumped_migration_31/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103759_dumped_migration_31/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103760_dumped_migration_32/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103760_dumped_migration_32/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103761_dumped_migration_33/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103761_dumped_migration_33/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103763_dumped_migration_34/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929103763_dumped_migration_34/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929185718_dumped_migration_35/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140929185718_dumped_migration_35/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140930082104_dumped_migration_36/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140930082104_dumped_migration_36/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140930082105_dumped_migration_37/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140930082105_dumped_migration_37/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140930085441_dumped_migration_38/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140930085441_dumped_migration_38/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140930203145_dumped_migration_39/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140930203145_dumped_migration_39/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140930203146_dumped_migration_40/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20140930203146_dumped_migration_40/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141001190227_dumped_migration_41/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141001190227_dumped_migration_41/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141001190228_dumped_migration_42/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141001190228_dumped_migration_42/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141001190229_dumped_migration_43/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141001190229_dumped_migration_43/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141001190230_dumped_migration_44/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141001190230_dumped_migration_44/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141001190231_dumped_migration_45/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141001190231_dumped_migration_45/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141002195939_dumped_migration_46/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141002195939_dumped_migration_46/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141002195940_dumped_migration_47/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141002195940_dumped_migration_47/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141002195941_dumped_migration_48/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141002195941_dumped_migration_48/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141002222426_dumped_migration_49/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141002222426_dumped_migration_49/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141002222427_dumped_migration_50/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141002222427_dumped_migration_50/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141002222428_dumped_migration_51/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141002222428_dumped_migration_51/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141002222429_dumped_migration_52/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141002222429_dumped_migration_52/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141002222430_dumped_migration_53/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141002222430_dumped_migration_53/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141002222431_dumped_migration_54/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141002222431_dumped_migration_54/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141002222432_dumped_migration_55/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141002222432_dumped_migration_55/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141002222433_dumped_migration_56/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141002222433_dumped_migration_56/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007131146_dumped_migration_57/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007131146_dumped_migration_57/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007131147_dumped_migration_58/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007131147_dumped_migration_58/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007131148_dumped_migration_59/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007131148_dumped_migration_59/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007131149_dumped_migration_60/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007131149_dumped_migration_60/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007131735_dumped_migration_61/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007131735_dumped_migration_61/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007131736_dumped_migration_62/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007131736_dumped_migration_62/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007131737_dumped_migration_63/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007131737_dumped_migration_63/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007131738_dumped_migration_64/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007131738_dumped_migration_64/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007131739_dumped_migration_65/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007131739_dumped_migration_65/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007131740_dumped_migration_66/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007131740_dumped_migration_66/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007131741_dumped_migration_67/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007131741_dumped_migration_67/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007171515_dumped_migration_68/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007171515_dumped_migration_68/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007171516_dumped_migration_69/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007171516_dumped_migration_69/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007171517_dumped_migration_70/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141007171517_dumped_migration_70/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141010150327_dumped_migration_71/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141010150327_dumped_migration_71/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141013115510_dumped_migration_72/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141013115510_dumped_migration_72/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141020175647_dumped_migration_73/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141020175647_dumped_migration_73/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141020175648_dumped_migration_74/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141020175648_dumped_migration_74/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141020175649_dumped_migration_75/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141020175649_dumped_migration_75/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141020175650_dumped_migration_76/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141020175650_dumped_migration_76/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141020175651_dumped_migration_77/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141020175651_dumped_migration_77/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141021103503_dumped_migration_78/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141021103503_dumped_migration_78/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141021103504_dumped_migration_79/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141021103504_dumped_migration_79/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141021103505_dumped_migration_80/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141021103505_dumped_migration_80/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141021103506_dumped_migration_81/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141021103506_dumped_migration_81/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141021103507_dumped_migration_82/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141021103507_dumped_migration_82/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141021103508_dumped_migration_83/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141021103508_dumped_migration_83/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141021103509_dumped_migration_84/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141021103509_dumped_migration_84/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141021103510_dumped_migration_85/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141021103510_dumped_migration_85/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141022110441_dumped_migration_86/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141022110441_dumped_migration_86/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141023180230_dumped_migration_87/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141023180230_dumped_migration_87/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141023180231_dumped_migration_88/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141023180231_dumped_migration_88/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141112082527_dumped_migration_89/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141112082527_dumped_migration_89/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141120162357_dumped_migration_90/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141120162357_dumped_migration_90/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141121191309_dumped_migration_91/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20141121191309_dumped_migration_91/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20150209202206_dumped_migration_92/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20150209202206_dumped_migration_92/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20150319224700_dumped_migration_93/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20150319224700_dumped_migration_93/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20150319224701_dumped_migration_94/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20150319224701_dumped_migration_94/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20150320174400_dumped_migration_95/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20150320174400_dumped_migration_95/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20150715170350_dumped_migration_96/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20150715170350_dumped_migration_96/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20150804170127_dumped_migration_97/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20150804170127_dumped_migration_97/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20150804170128_dumped_migration_98/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20150804170128_dumped_migration_98/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20150804170129_dumped_migration_99/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20150804170129_dumped_migration_99/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20150804170130_dumped_migration_100/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20150804170130_dumped_migration_100/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20150818112907_dumped_migration_101/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20150818112907_dumped_migration_101/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20151118135514_dumped_migration_102/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20151118135514_dumped_migration_102/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20151126095136_dumped_migration_103/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20151126095136_dumped_migration_103/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20151211122515_dumped_migration_104/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20151211122515_dumped_migration_104/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20160219125609_dumped_migration_105/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20160219125609_dumped_migration_105/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20160717173343_dumped_migration_106/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20160717173343_dumped_migration_106/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20160717174005_dumped_migration_107/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20160717174005_dumped_migration_107/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20160717174656_dumped_migration_108/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20160717174656_dumped_migration_108/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20160811151953_dumped_migration_109/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20160811151953_dumped_migration_109/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20160811151954_dumped_migration_110/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20160811151954_dumped_migration_110/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20160812094501_dumped_migration_111/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20160812094501_dumped_migration_111/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20160812094502_dumped_migration_112/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20160812094502_dumped_migration_112/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20161115110541_dumped_migration_113/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20161115110541_dumped_migration_113/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20161115111828_dumped_migration_114/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20161115111828_dumped_migration_114/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20161115111836_dumped_migration_115/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20161115111836_dumped_migration_115/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20161115111846_dumped_migration_116/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20161115111846_dumped_migration_116/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20161115111853_dumped_migration_117/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20161115111853_dumped_migration_117/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20161115111900_dumped_migration_118/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20161115111900_dumped_migration_118/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20161115111957_dumped_migration_119/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20161115111957_dumped_migration_119/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2017-08-31-230457_invitations/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2017-08-31-230457_invitations/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2017-09-23-182408_move_tokens_to_emails_table/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2017-09-23-182408_move_tokens_to_emails_table/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2017-09-23-191545_add_users_to_emails_foreign_key/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2017-09-23-191545_add_users_to_emails_foreign_key/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2017-09-23-210614_move_readme_rendering_onto_versions/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2017-09-23-210614_move_readme_rendering_onto_versions/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2017-09-26-200549_users_lowercase_index/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2017-09-26-200549_users_lowercase_index/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2017-10-06-234455_fix_local_dbs_unique_gh_login/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2017-10-06-234455_fix_local_dbs_unique_gh_login/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2017-10-08-193512_category_trees/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2017-10-08-193512_category_trees/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2017-10-09-135625_add_lower_gh_login_index/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2017-10-09-135625_add_lower_gh_login_index/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2017-10-16-200404_stop_lying_to_schema/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2017-10-16-200404_stop_lying_to_schema/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2017-10-17-052814_add_readme_file_to_crates/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2017-10-17-052814_add_readme_file_to_crates/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2017-11-12-195324_lower_teams_names/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2017-11-12-195324_lower_teams_names/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170102131034_dumped_migration_120/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170102131034_dumped_migration_120/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170102145236_dumped_migration_121/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170102145236_dumped_migration_121/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170304182614_make_schema_compatible_with_diesel/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170304182614_make_schema_compatible_with_diesel/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170305095748_create_reserved_crate_names/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170305095748_create_reserved_crate_names/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170307211844_versions_yanked_is_not_nullalbe/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170307211844_versions_yanked_is_not_nullalbe/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170308140537_create_to_semver_no_prerelease/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170308140537_create_to_semver_no_prerelease/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170308191449_crate_owners_does_not_need_id/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170308191449_crate_owners_does_not_need_id/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170309122510_generate_api_token_with_sql/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170309122510_generate_api_token_with_sql/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170311180634_remove_semver_index/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170311180634_remove_semver_index/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170312165531_index_dependencies/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170312165531_index_dependencies/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170315133901_make_dependencies_schema_match_use/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170315133901_make_dependencies_schema_match_use/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170318181441_downloads_need_no_id/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170318181441_downloads_need_no_id/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170322130523_version_downloads_needs_no_id/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170322130523_version_downloads_needs_no_id/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170428154714_multiple_api_tokens/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170428154714_multiple_api_tokens/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170430202433_reserve_windows_crate_names/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170430202433_reserve_windows_crate_names/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170502181306_drop_schema_migrations/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170502181306_drop_schema_migrations/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170611165120_add_license_to_versions/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170611165120_add_license_to_versions/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170706165855_dont_touch_timestamps_unless_row_changed/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170706165855_dont_touch_timestamps_unless_row_changed/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170708133715_ensure_crate_id_foreign_keys_cascade/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170708133715_ensure_crate_id_foreign_keys_cascade/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170708135123_ensure_version_id_foreign_keys_cascade/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170708135123_ensure_version_id_foreign_keys_cascade/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170711193021_rerename_gitlab/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170711193021_rerename_gitlab/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170728002039_fix_keywords/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170728002039_fix_keywords/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170801133919_touch_crates_when_versions_modified/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170801133919_touch_crates_when_versions_modified/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170804200817_add_email_table/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170804200817_add_email_table/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170820180453_readme_rendering_tracking/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/20170820180453_readme_rendering_tracking/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2018-01-18-172821_use_jsonb_for_features/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2018-01-18-172821_use_jsonb_for_features/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2018-01-18-174843_create_readme_renderings/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2018-01-18-174843_create_readme_renderings/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2018-04-13-170549_properly_index_version_downloads/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2018-04-13-170549_properly_index_version_downloads/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2018-04-13-203856_trigger_search_reindex_less/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2018-04-13-203856_trigger_search_reindex_less/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2018-04-24-145128_create_recent_crate_downloads/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2018-04-24-145128_create_recent_crate_downloads/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2018-04-27-194025_remove_unused_indexes/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2018-04-27-194025_remove_unused_indexes/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2018-05-03-150523_create_jobs/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2018-05-03-150523_create_jobs/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2018-06-03-195948_add_crate_size/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2018-06-03-195948_add_crate_size/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2018-10-17-203221_index_crates_name/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2018-10-17-203221_index_crates_name/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2018-11-01-223239_add_published_by_to_versions/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2018-11-01-223239_add_published_by_to_versions/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2018-11-30-090110_add_revoked_to_api_tokens/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2018-11-30-090110_add_revoked_to_api_tokens/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-01-26-090348_create_version_owner_actions/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-01-26-090348_create_version_owner_actions/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-02-12-200540_track_version_published_by_email/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-02-12-200540_track_version_published_by_email/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-03-18-233900_create_publish_limit_buckets/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-03-18-233900_create_publish_limit_buckets/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-03-22-162022_define_recent_crate_downloads_in_terms_of_version_downloads/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-03-22-162022_define_recent_crate_downloads_in_terms_of_version_downloads/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-03-22-170700_remove_crate_downloads/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-03-22-170700_remove_crate_downloads/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-03-22-174825_remove_version_downloads_pk/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-03-22-174825_remove_version_downloads_pk/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-04-04-192902_create_publish_rate_overrides/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-04-04-192902_create_publish_rate_overrides/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-05-13-192055_remove_readme_from_crates/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-05-13-192055_remove_readme_from_crates/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-05-14-165316_index_crate_name_for_like/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-05-14-165316_index_crate_name_for_like/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-06-14-175833_change_keywords_to_text/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-06-14-175833_change_keywords_to_text/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-06-14-195059_remove_unused_indexes/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-06-14-195059_remove_unused_indexes/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-08-07-153647_ensure_existing_crates_not_reserved/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-08-07-153647_ensure_existing_crates_not_reserved/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-08-28-224353_remove_licenses_column_from_crates/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-08-28-224353_remove_licenses_column_from_crates/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-09-15-194259_add_badges_crate_id_foreign_key/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-09-15-194259_add_badges_crate_id_foreign_key/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-09-18-233204_fix_int_type_in_to_semver_no_prerelease/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-09-18-233204_fix_int_type_in_to_semver_no_prerelease/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-09-19-185655_add_experimental_indexes/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-09-19-185655_add_experimental_indexes/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-09-19-191534_remove-index-already-removed-in-prod/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-09-19-191534_remove-index-already-removed-in-prod/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-11-03-003946_tidy_up_version_owner_actions/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-11-03-003946_tidy_up_version_owner_actions/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-11-11-162609_drop_email_from_user/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-11-11-162609_drop_email_from_user/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-11-15-182353_Add email notifications to crate owners/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-11-15-182353_Add email notifications to crate owners/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-12-13-053745_add_crate_owner_invitation_token/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2019-12-13-053745_add_crate_owner_invitation_token/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2020-02-14-183929_remove_version_authors_user_id/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2020-02-14-183929_remove_version_authors_user_id/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2020-07-13-125308_remove_api_token_default/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2020-07-13-125308_remove_api_token_default/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2020-07-13-182546_remove_api_tokens_index/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2020-07-13-182546_remove_api_tokens_index/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2020-07-14-113112_change_api_token_to_bytea/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2020-07-14-113112_change_api_token_to_bytea/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2020-08-25-101655_lock_users/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2020-08-25-101655_lock_users/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2020-08-28-163209_add_org_id_for_teams/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2020-08-28-163209_add_org_id_for_teams/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2021-02-09-133314_add_version_owner_actions_index/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2021-02-09-133314_add_version_owner_actions_index/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2021-02-10-141019_reserve_com0_lpt0/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2021-02-10-141019_reserve_com0_lpt0/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2021-04-24-115720_remove_version_authors/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2021-04-24-115720_remove_version_authors/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2021-05-03-174624_add_index_version_downloads_not_processed/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2021-05-03-174624_add_index_version_downloads_not_processed/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2021-05-05-081208_recreate_version_downloads_date_index_with_brin_pages_per_range_1/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2021-05-05-081208_recreate_version_downloads_date_index_with_brin_pages_per_range_1/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2021-06-24-143712_add_publish_rate_overrides_expires_at/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2021-06-24-143712_add_publish_rate_overrides_expires_at/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2021-07-18-125813_add_rate_limit_action/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2021-07-18-125813_add_rate_limit_action/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2021-10-08-113656_simplify_versions_trigger/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2021-10-08-113656_simplify_versions_trigger/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2022-08-14-090630_checksum-column/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2022-08-14-090630_checksum-column/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2022-08-17-073805_explicit-name/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2022-08-17-073805_explicit-name/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2022-08-18-152941_links-column/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2022-08-18-152941_links-column/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2022-08-28-191319_non-null-checksum/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2022-08-28-191319_non-null-checksum/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2022-11-23-135139_add-token-scopes/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2022-11-23-135139_add-token-scopes/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2023-03-23-211241_add_rust_version_to_versions/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2023-03-23-211241_add_rust_version_to_versions/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2023-05-25-104708_add-background-job-priority/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2023-05-25-104708_add-background-job-priority/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2023-06-14-084044_add-token-expiry/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2023-06-14-084044_add-token-expiry/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2023-08-13-175220_to_semver_no_prerelease_parallel_safe/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2023-08-13-175220_to_semver_no_prerelease_parallel_safe/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2023-08-13-175221_faster_reverse_dependencies_query/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2023-08-13-175221_faster_reverse_dependencies_query/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2023-08-13-175222_indexed_reverse_dependency_query/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2023-08-13-175222_indexed_reverse_dependency_query/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2023-10-13-080226_add-features-limit/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2023-10-13-080226_add-features-limit/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2023-10-18-075419_add_comment_columns/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2023-10-18-075419_add_comment_columns/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2023-10-19-092709_fix_semver_no_prerelease_fn/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2023-10-19-092709_fix_semver_no_prerelease_fn/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2023-12-31-153126_add_admin_column/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2023-12-31-153126_add_admin_column/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-02-07-112955_add_log_files_table/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-02-07-112955_add_log_files_table/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-02-12-120203_remove_unused_index/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-02-12-120203_remove_unused_index/metadata.toml create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-02-12-120203_remove_unused_index/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-02-19-113226_delete-badges-table/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-02-19-113226_delete-badges-table/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-03-04-092044_crate-downloads-table/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-03-04-092044_crate-downloads-table/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-03-05-120032_add-crate-downloads-index/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-03-05-120032_add-crate-downloads-index/metadata.toml create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-03-05-120032_add-crate-downloads-index/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-03-06-123525_add_expiry_notification_at/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-03-06-123525_add_expiry_notification_at/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-04-12-144026_change-crates-updated-at-trigger/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-04-12-144026_change-crates-updated-at-trigger/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-04-12-144536_remove-downloads-column/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-04-12-144536_remove-downloads-column/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-04-17-083100_remove-obsolete-fn/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-04-17-083100_remove-obsolete-fn/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-04-17-135931_default-versions-table/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-04-17-135931_default-versions-table/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-05-27-142004_add-versions-id-yanked-index/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-05-27-142004_add-versions-id-yanked-index/metadata.toml create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-05-27-142004_add-versions-id-yanked-index/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-06-14-081653_add-lib-and-bins-columns/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-06-14-081653_add-lib-and-bins-columns/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-06-14-084455_remove-semver-no-prerelease-column/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-06-14-084455_remove-semver-no-prerelease-column/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-08-17-152408_add-yank-message/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-08-17-152408_add-yank-message/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-08-29-135458_add-publish-notifications-column/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-08-29-135458_add-publish-notifications-column/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-10-24-133507_add-num-no-build-column/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-10-24-133507_add-num-no-build-column/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-10-24-134209_make-unique-num-not-null/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-10-24-134209_make-unique-num-not-null/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-10-25-112826_make-unique-version-unique/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-10-25-112826_make-unique-version-unique/metadata.toml create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-10-25-112826_make-unique-version-unique/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-11-12-125605_create-deleted-crates-table/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-11-12-125605_create-deleted-crates-table/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-11-14-094209_make-crate-size-not-null/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-11-14-094209_make-crate-size-not-null/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-11-14-124312_add-edition-column/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-11-14-124312_add-edition-column/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-11-19-095931_add-version-columns/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-11-19-095931_add-version-columns/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-11-26-155931_add-cats-and-keys-to-version/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2024-11-26-155931_add-cats-and-keys-to-version/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2025-02-05-083109_add-num-versions-column/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2025-02-05-083109_add-num-versions-column/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2025-02-11-115609_remove-token-generated-at-column/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2025-02-11-115609_remove-token-generated-at-column/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2025-02-11-122509_add-expires-at-column/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2025-02-11-122509_add-expires-at-column/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2025-02-11-122510_not-null-expires-at-column/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2025-02-11-122510_not-null-expires-at-column/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2025-02-11-163554_fix-num-versions-trigger/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2025-02-11-163554_fix-num-versions-trigger/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2025-02-13-084853_not-null-org-id/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2025-02-13-084853_not-null-org-id/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2025-02-17-133723_timezones/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2025-02-17-133723_timezones/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2025-03-06-060640_semver_ord/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2025-03-06-060640_semver_ord/up.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2025-04-25-090000_trusted-publishing/down.sql create mode 100644 collector/compile-benchmarks/crates.io/migrations/2025-04-25-090000_trusted-publishing/up.sql create mode 100644 collector/compile-benchmarks/crates.io/package.json create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/fixtures.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/fixtures.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/fixtures/categories.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/fixtures/crate-ownerships.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/fixtures/crates.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/fixtures/dependencies.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/fixtures/keywords.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/fixtures/teams.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/fixtures/users.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/fixtures/version-downloads.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/fixtures/versions.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/api-tokens.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/api-tokens/create.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/api-tokens/create.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/api-tokens/delete.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/api-tokens/delete.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/api-tokens/get.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/api-tokens/get.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/api-tokens/list.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/api-tokens/list.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/categories.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/categories/get.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/categories/get.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/categories/list-slugs.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/categories/list-slugs.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/categories/list.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/categories/list.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates/add-owners.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates/add-owners.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates/delete.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates/delete.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates/downloads.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates/downloads.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates/follow.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates/follow.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates/following.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates/following.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates/get.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates/get.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates/list.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates/list.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates/remove-owners.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates/remove-owners.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates/reverse-dependencies.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates/reverse-dependencies.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates/team-owners.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates/team-owners.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates/unfollow.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates/unfollow.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates/user-owners.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/crates/user-owners.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/docs-rs.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/docs-rs.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/invites.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/invites/legacy-list.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/invites/legacy-list.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/invites/list.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/invites/list.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/invites/redeem-by-crate-id.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/invites/redeem-by-crate-id.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/invites/redeem-by-token.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/invites/redeem-by-token.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/keywords.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/keywords/get.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/keywords/get.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/keywords/list.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/keywords/list.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/metadata.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/metadata.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/playground.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/playground.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/sessions.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/sessions/delete.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/sessions/delete.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/summary.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/summary.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/teams.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/teams/get.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/teams/get.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/users.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/users/confirm-email.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/users/confirm-email.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/users/get.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/users/get.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/users/me.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/users/me.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/users/resend.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/users/resend.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/users/update.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/users/update.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/versions.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/versions/dependencies.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/versions/dependencies.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/versions/downloads.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/versions/downloads.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/versions/follow-updates.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/versions/follow-updates.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/versions/get.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/versions/get.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/versions/list.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/versions/list.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/versions/patch.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/versions/patch.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/versions/readme.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/versions/readme.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/versions/unyank.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/versions/unyank.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/versions/yank.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/handlers/versions/yank.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/index.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/models/api-token.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/models/api-token.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/models/category.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/models/category.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/models/crate-owner-invitation.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/models/crate-owner-invitation.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/models/crate-ownership.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/models/crate-ownership.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/models/crate.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/models/crate.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/models/dependency.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/models/dependency.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/models/keyword.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/models/keyword.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/models/msw-session.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/models/msw-session.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/models/team.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/models/team.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/models/user.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/models/user.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/models/version-download.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/models/version-download.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/models/version.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/models/version.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/package.json create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/serializers/api-token.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/serializers/category.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/serializers/crate.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/serializers/dependency.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/serializers/invite.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/serializers/keyword.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/serializers/team.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/serializers/user.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/serializers/version.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/utils/dates.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/utils/defaults.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/utils/factory.d.ts create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/utils/factory.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/utils/handlers.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/utils/random.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/utils/release-tracks.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/utils/serializers.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/utils/session.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/utils/strings.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/utils/strings.test.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/vitest.config.js create mode 100644 collector/compile-benchmarks/crates.io/packages/crates-io-msw/vitest.setup.js create mode 100644 collector/compile-benchmarks/crates.io/playwright.config.ts create mode 100644 collector/compile-benchmarks/crates.io/pnpm-lock.yaml create mode 100644 collector/compile-benchmarks/crates.io/pnpm-workspace.yaml create mode 100644 collector/compile-benchmarks/crates.io/public/.well-known/security.txt create mode 100644 collector/compile-benchmarks/crates.io/public/assets/box.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/calendar.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/cargo.png create mode 100644 collector/compile-benchmarks/crates.io/public/assets/check-mark.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/checkbox-empty.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/checkbox.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/chevron-right.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/circle-question.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/color-mode.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/copy.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/crate.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/cuddlyferris.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/docs-rs.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/download-arrow.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/download.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/dropdown.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/file-archive.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/flag.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/following.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/github.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/latest-updates.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/left-pag.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/license.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/link.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/lock.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/moon.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/my-packages.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/og-image.png create mode 100644 collector/compile-benchmarks/crates.io/public/assets/right-arrow.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/right-pag.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/rust.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/search.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/sort.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/star.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/sun.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/trash.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/triangle-exclamation.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/twitter.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/weight.svg create mode 100644 collector/compile-benchmarks/crates.io/public/assets/zulip.svg create mode 100644 collector/compile-benchmarks/crates.io/public/favicon.ico create mode 100644 collector/compile-benchmarks/crates.io/public/github-redirect.html create mode 100644 collector/compile-benchmarks/crates.io/public/opensearch.xml create mode 100644 collector/compile-benchmarks/crates.io/public/robots.txt create mode 100755 collector/compile-benchmarks/crates.io/script/create-diff-link.sh create mode 100755 collector/compile-benchmarks/crates.io/script/import-database-dump.sh create mode 100644 collector/compile-benchmarks/crates.io/script/infer-database-dump-version.py create mode 100755 collector/compile-benchmarks/crates.io/script/init-local-index.sh create mode 100644 collector/compile-benchmarks/crates.io/script/precompress-assets.mjs create mode 100755 collector/compile-benchmarks/crates.io/script/start-web.sh create mode 100644 collector/compile-benchmarks/crates.io/src/app.rs create mode 100644 collector/compile-benchmarks/crates.io/src/auth.rs create mode 100644 collector/compile-benchmarks/crates.io/src/bin/background-worker.rs create mode 100644 collector/compile-benchmarks/crates.io/src/bin/crates-admin/default_versions.rs create mode 100644 collector/compile-benchmarks/crates.io/src/bin/crates-admin/delete_crate.rs create mode 100644 collector/compile-benchmarks/crates.io/src/bin/crates-admin/delete_version.rs create mode 100644 collector/compile-benchmarks/crates.io/src/bin/crates-admin/dialoguer.rs create mode 100644 collector/compile-benchmarks/crates.io/src/bin/crates-admin/enqueue_job.rs create mode 100644 collector/compile-benchmarks/crates.io/src/bin/crates-admin/main.rs create mode 100644 collector/compile-benchmarks/crates.io/src/bin/crates-admin/migrate.rs create mode 100644 collector/compile-benchmarks/crates.io/src/bin/crates-admin/populate.rs create mode 100644 collector/compile-benchmarks/crates.io/src/bin/crates-admin/render_readmes.rs create mode 100644 collector/compile-benchmarks/crates.io/src/bin/crates-admin/transfer_crates.rs create mode 100644 collector/compile-benchmarks/crates.io/src/bin/crates-admin/upload_index.rs create mode 100644 collector/compile-benchmarks/crates.io/src/bin/crates-admin/verify_token.rs create mode 100644 collector/compile-benchmarks/crates.io/src/bin/crates-admin/yank_version.rs create mode 100644 collector/compile-benchmarks/crates.io/src/bin/monitor.rs create mode 100644 collector/compile-benchmarks/crates.io/src/bin/server.rs create mode 100644 collector/compile-benchmarks/crates.io/src/boot.rs create mode 100644 collector/compile-benchmarks/crates.io/src/boot/categories.rs create mode 100644 collector/compile-benchmarks/crates.io/src/boot/categories.toml create mode 100644 collector/compile-benchmarks/crates.io/src/certs/crunchy.pem create mode 100644 collector/compile-benchmarks/crates.io/src/certs/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/cloudfront.rs create mode 100644 collector/compile-benchmarks/crates.io/src/config.rs create mode 100644 collector/compile-benchmarks/crates.io/src/config/base.rs create mode 100644 collector/compile-benchmarks/crates.io/src/config/cdn_log_queue.rs create mode 100644 collector/compile-benchmarks/crates.io/src/config/cdn_log_storage.rs create mode 100644 collector/compile-benchmarks/crates.io/src/config/database_pools.rs create mode 100644 collector/compile-benchmarks/crates.io/src/config/sentry.rs create mode 100644 collector/compile-benchmarks/crates.io/src/config/server.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/category.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/crate_owner_invitation.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/git.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/github.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/github/secret_scanning.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/helpers.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/helpers/authorization.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/helpers/pagination.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/keyword.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/krate.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/krate/delete.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/krate/downloads.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/krate/follow.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/krate/metadata.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/krate/owners.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/krate/publish.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/krate/rev_deps.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/krate/search.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/krate/snapshots/crates_io__controllers__krate__delete__tests__happy_path_new_crate-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/krate/snapshots/crates_io__controllers__krate__delete__tests__happy_path_old_crate-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/krate/snapshots/crates_io__controllers__krate__delete__tests__happy_path_really_old_crate-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/krate/versions.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/metrics.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/session.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/site_metadata.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/summary.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/team.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/token.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/trustpub/github_configs/create/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/trustpub/github_configs/create/snapshots/crates_io__controllers__trustpub__github_configs__create__tests__happy_path-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/trustpub/github_configs/create/snapshots/crates_io__controllers__trustpub__github_configs__create__tests__happy_path.snap create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/trustpub/github_configs/create/snapshots/crates_io__controllers__trustpub__github_configs__create__tests__happy_path_with_environment.snap create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/trustpub/github_configs/create/tests.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/trustpub/github_configs/delete/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/trustpub/github_configs/delete/snapshots/crates_io__controllers__trustpub__github_configs__delete__tests__happy_path.snap create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/trustpub/github_configs/delete/tests.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/trustpub/github_configs/emails.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/trustpub/github_configs/json.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/trustpub/github_configs/list/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/trustpub/github_configs/list/snapshots/crates_io__controllers__trustpub__github_configs__list__tests__crate_with_no_configs.snap create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/trustpub/github_configs/list/snapshots/crates_io__controllers__trustpub__github_configs__list__tests__happy_path-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/trustpub/github_configs/list/snapshots/crates_io__controllers__trustpub__github_configs__list__tests__happy_path.snap create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/trustpub/github_configs/list/tests.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/trustpub/github_configs/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/trustpub/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/user.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/user/email_notifications.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/user/email_verification.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/user/me.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/user/other.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/user/snapshots/crates_io__controllers__user__email_verification__tests__happy_path-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/user/update.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/util.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/version.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/version/authors.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/version/dependencies.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/version/docs.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/version/downloads.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/version/metadata.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/version/readme.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/version/update.rs create mode 100644 collector/compile-benchmarks/crates.io/src/controllers/version/yank.rs create mode 100644 collector/compile-benchmarks/crates.io/src/db.rs create mode 100644 collector/compile-benchmarks/crates.io/src/email.rs create mode 100644 collector/compile-benchmarks/crates.io/src/external_urls.rs create mode 100644 collector/compile-benchmarks/crates.io/src/fastly.rs create mode 100644 collector/compile-benchmarks/crates.io/src/headers.rs create mode 100644 collector/compile-benchmarks/crates.io/src/index.rs create mode 100644 collector/compile-benchmarks/crates.io/src/lib.rs create mode 100644 collector/compile-benchmarks/crates.io/src/licenses.rs create mode 100644 collector/compile-benchmarks/crates.io/src/metrics/instance.rs create mode 100644 collector/compile-benchmarks/crates.io/src/metrics/log_encoder.rs create mode 100644 collector/compile-benchmarks/crates.io/src/metrics/macros.rs create mode 100644 collector/compile-benchmarks/crates.io/src/metrics/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/metrics/service.rs create mode 100644 collector/compile-benchmarks/crates.io/src/middleware.rs create mode 100644 collector/compile-benchmarks/crates.io/src/middleware/app.rs create mode 100644 collector/compile-benchmarks/crates.io/src/middleware/block_traffic.rs create mode 100644 collector/compile-benchmarks/crates.io/src/middleware/cargo_compat.rs create mode 100644 collector/compile-benchmarks/crates.io/src/middleware/common_headers.rs create mode 100644 collector/compile-benchmarks/crates.io/src/middleware/debug.rs create mode 100644 collector/compile-benchmarks/crates.io/src/middleware/ember_html.rs create mode 100644 collector/compile-benchmarks/crates.io/src/middleware/log_request.rs create mode 100644 collector/compile-benchmarks/crates.io/src/middleware/no_user_agent_message.txt create mode 100644 collector/compile-benchmarks/crates.io/src/middleware/normalize_path.rs create mode 100644 collector/compile-benchmarks/crates.io/src/middleware/real_ip.rs create mode 100644 collector/compile-benchmarks/crates.io/src/middleware/require_user_agent.rs create mode 100644 collector/compile-benchmarks/crates.io/src/middleware/static_or_continue.rs create mode 100644 collector/compile-benchmarks/crates.io/src/middleware/update_metrics.rs create mode 100644 collector/compile-benchmarks/crates.io/src/openapi.rs create mode 100644 collector/compile-benchmarks/crates.io/src/rate_limiter.rs create mode 100644 collector/compile-benchmarks/crates.io/src/real_ip.rs create mode 100644 collector/compile-benchmarks/crates.io/src/router.rs create mode 100644 collector/compile-benchmarks/crates.io/src/sentry/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/snapshots/crates_io__index__tests__index_metadata-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/snapshots/crates_io__index__tests__index_metadata.snap create mode 100644 collector/compile-benchmarks/crates.io/src/snapshots/crates_io__openapi__tests__openapi_snapshot.snap create mode 100644 collector/compile-benchmarks/crates.io/src/sqs.rs create mode 100644 collector/compile-benchmarks/crates.io/src/ssh/known_hosts create mode 100644 collector/compile-benchmarks/crates.io/src/ssh/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/storage.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tasks.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/account_lock.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/authentication.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/blocked_routes.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/builders/dependency.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/builders/krate.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/builders/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/builders/publish.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/builders/version.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/categories.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/cors.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/dump_db.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/github_secret_scanning.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/issues/issue1205.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/issues/issue2736.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/issues/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/following.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/audit_action.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/auth.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/basics.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/build_metadata.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/categories.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/deleted_crates.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/dependencies.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/edition.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/emails.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/features.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/git.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/inheritance.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/keywords.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/links.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/manifest.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/max_size.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/rate_limit.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/readme.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/similar_names.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__basics__new_krate-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__basics__new_krate-4.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__basics__new_krate.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__basics__new_krate_twice-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__basics__new_krate_twice.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__basics__new_krate_twice_alt-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__basics__new_krate_twice_alt.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__basics__new_krate_weird_version.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__basics__new_krate_with_token.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__build_metadata__version_with_build_metadata@build_metadata_1.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__build_metadata__version_with_build_metadata@build_metadata_2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__build_metadata__version_with_build_metadata@build_metadata_3.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__categories__good_categories.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__dependencies__dep_limit-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__dependencies__new_krate_sorts_deps.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__dependencies__new_krate_with_dependency.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__dependencies__new_with_renamed_dependency.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__dependencies__new_with_underscore_renamed_dependency.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__edition__edition_is_saved-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__edition__edition_is_saved.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__features__feature_name_start_with_number_and_underscore.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__features__feature_name_with_dot.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__features__feature_name_with_unicode_chars.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__features__features_version_2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__keywords__good_keywords.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__links__crate_with_links_field-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__links__crate_with_links_field-3.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__links__crate_with_links_field.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__manifest__boolean_readme-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__manifest__boolean_readme.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__manifest__lib_and_bin_crate-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__manifest__lib_and_bin_crate.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__max_size__tarball_between_default_axum_limit_and_max_upload_size.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__readme__new_krate_with_empty_readme.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__readme__new_krate_with_readme.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__readme__new_krate_with_readme_and_plus_version.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__validation__bad_name-10.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__validation__bad_name-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__validation__bad_name-3.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__validation__bad_name-4.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__validation__bad_name-5.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__validation__bad_name-6.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__validation__bad_name-7.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__validation__bad_name-8.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__validation__bad_name-9.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/snapshots/crates_io__tests__krate__publish__validation__bad_name.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/tarball.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/timestamps.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/publish/validation.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/snapshots/crates_io__tests__krate__yanking__patch_version_yank_unyank-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/snapshots/crates_io__tests__krate__yanking__patch_version_yank_unyank-3.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/snapshots/crates_io__tests__krate__yanking__patch_version_yank_unyank-4.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/snapshots/crates_io__tests__krate__yanking__patch_version_yank_unyank-5.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/snapshots/crates_io__tests__krate__yanking__patch_version_yank_unyank-6.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/snapshots/crates_io__tests__krate__yanking__patch_version_yank_unyank.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/krate/yanking.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/middleware/head.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/middleware/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/not_found_error.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/owners.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/pagination.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/read_only_mode.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/categories/get.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/categories/list.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/categories/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/categories/snapshots/crates_io__tests__routes__categories__get__show.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/categories/snapshots/crates_io__tests__routes__categories__list__index-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/categories/snapshots/crates_io__tests__routes__categories__list__index.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/category_slugs/list.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/category_slugs/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/category_slugs/snapshots/crates_io__tests__routes__category_slugs__list__category_slugs_returns_all_slugs_in_alphabetical_order.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/downloads.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/following.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/list.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/new.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/owners/add.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/owners/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/owners/remove.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/read.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/reverse_dependencies.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/snapshots/crates_io__tests__routes__crates__downloads__crate_downloads.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/snapshots/crates_io__tests__routes__crates__downloads__version_downloads.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/snapshots/crates_io__tests__routes__crates__list__invalid_params_with_null_bytes-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/snapshots/crates_io__tests__routes__crates__list__invalid_params_with_null_bytes-3.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/snapshots/crates_io__tests__routes__crates__list__invalid_params_with_null_bytes-4.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/snapshots/crates_io__tests__routes__crates__list__invalid_params_with_null_bytes-5.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/snapshots/crates_io__tests__routes__crates__list__invalid_params_with_null_bytes.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/snapshots/crates_io__tests__routes__crates__read__include_default_version.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/snapshots/crates_io__tests__routes__crates__read__new_name.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/snapshots/crates_io__tests__routes__crates__read__show.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/snapshots/crates_io__tests__routes__crates__read__show_all_yanked.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/snapshots/crates_io__tests__routes__crates__read__show_minimal.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/snapshots/crates_io__tests__routes__crates__reverse_dependencies__prerelease_versions_not_included_in_reverse_dependencies.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/snapshots/crates_io__tests__routes__crates__reverse_dependencies__reverse_dependencies-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/snapshots/crates_io__tests__routes__crates__reverse_dependencies__reverse_dependencies.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/snapshots/crates_io__tests__routes__crates__reverse_dependencies__reverse_dependencies_includes_published_by_user_when_present.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/snapshots/crates_io__tests__routes__crates__reverse_dependencies__reverse_dependencies_query_supports_u64_version_number_parts.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/snapshots/crates_io__tests__routes__crates__reverse_dependencies__reverse_dependencies_when_old_version_depended_but_new_doesnt.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/snapshots/crates_io__tests__routes__crates__reverse_dependencies__reverse_dependencies_when_old_version_doesnt_depend_but_new_does.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/snapshots/crates_io__tests__routes__crates__reverse_dependencies__yanked_versions_not_included_in_reverse_dependencies-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/snapshots/crates_io__tests__routes__crates__reverse_dependencies__yanked_versions_not_included_in_reverse_dependencies.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/versions/authors.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/versions/dependencies.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/versions/download.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/versions/list.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/versions/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/versions/read.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/versions/snapshots/crates_io__tests__routes__crates__versions__authors__authors.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/versions/snapshots/crates_io__tests__routes__crates__versions__list__versions.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/versions/snapshots/crates_io__tests__routes__crates__versions__read__show_by_crate_name_and_semver_no_published_by.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/versions/snapshots/crates_io__tests__routes__crates__versions__read__show_by_crate_name_and_version.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/crates/versions/yank_unyank.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/keywords/list.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/keywords/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/keywords/read.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/me/email_notifications.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/me/get.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/me/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/me/snapshots/crates_io__tests__routes__me__get__me-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/me/snapshots/crates_io__tests__routes__me__get__me-3.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/me/tokens/create.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/me/tokens/delete.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/me/tokens/delete_current.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/me/tokens/get.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/me/tokens/list.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/me/tokens/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/me/tokens/snapshots/crates_io__tests__routes__me__tokens__create__create_token_success-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/me/tokens/snapshots/crates_io__tests__routes__me__tokens__create__create_token_success.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/me/tokens/snapshots/crates_io__tests__routes__me__tokens__create__create_token_with_expiry_date-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/me/tokens/snapshots/crates_io__tests__routes__me__tokens__create__create_token_with_expiry_date.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/me/tokens/snapshots/crates_io__tests__routes__me__tokens__create__create_token_with_null_scopes-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/me/tokens/snapshots/crates_io__tests__routes__me__tokens__create__create_token_with_null_scopes.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/me/tokens/snapshots/crates_io__tests__routes__me__tokens__create__create_token_with_scopes-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/me/tokens/snapshots/crates_io__tests__routes__me__tokens__create__create_token_with_scopes.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/me/tokens/snapshots/crates_io__tests__routes__me__tokens__get__show.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/me/tokens/snapshots/crates_io__tests__routes__me__tokens__get__show_token_with_scopes.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/me/tokens/snapshots/crates_io__tests__routes__me__tokens__list__list_tokens.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/me/updates.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/metrics.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/private/crate_owner_invitations.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/private/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/session/authorize.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/session/begin.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/session/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/summary.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/users/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/users/read.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/users/stats.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/users/update.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/users/update/publish_notifications.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/users/update/snapshots/crates_io__tests__routes__users__update__publish_notifications__unsubscribe_and_resubscribe-3.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/users/update/snapshots/crates_io__tests__routes__users__update__publish_notifications__unsubscribe_and_resubscribe-4.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/users/update/snapshots/crates_io__tests__routes__users__update__publish_notifications__unsubscribe_and_resubscribe-6.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/routes/users/update/snapshots/crates_io__tests__routes__users__update__publish_notifications__unsubscribe_and_resubscribe.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/server.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/snapshots/crates_io__tests__github_secret_scanning__github_secret_alert_for_revoked_token.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/snapshots/crates_io__tests__github_secret_scanning__github_secret_alert_for_unknown_token.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/snapshots/crates_io__tests__github_secret_scanning__github_secret_alert_revokes_token-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/snapshots/crates_io__tests__github_secret_scanning__github_secret_alert_revokes_token.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/snapshots/crates_io__tests__owners__modify_multiple_owners-6.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/snapshots/crates_io__tests__owners__modify_multiple_owners.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/snapshots/crates_io__tests__owners__new_crate_owner-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/snapshots/crates_io__tests__owners__new_crate_owner.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/snapshots/crates_io__tests__read_only_mode__cannot_hit_endpoint_which_writes_db_in_read_only_mode.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/snapshots/crates_io__tests__server__block_traffic_via_arbitrary_header_and_value.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/snapshots/crates_io__tests__server__block_traffic_via_ip.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/snapshots/crates_io__tests__server__user_agent_is_required-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/snapshots/crates_io__tests__server__user_agent_is_required.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/snapshots/crates_io__tests__team__publish_owned.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/team.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/token.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/unhealthy_database.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/user.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/util.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/util/chaosproxy.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/util/github.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/util/insta.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/util/matchers.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/util/mock_request.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/util/response.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/util/test_app.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/version.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/worker/git.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/worker/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/worker/rss/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/worker/rss/snapshots/crates_io__tests__worker__rss__sync_crate_feed__sync_crate_feed-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/worker/rss/snapshots/crates_io__tests__worker__rss__sync_crates_feed__sync_crates_feed-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/worker/rss/snapshots/crates_io__tests__worker__rss__sync_updates_feed__sync_updates_feed-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/worker/rss/sync_crate_feed.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/worker/rss/sync_crates_feed.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/worker/rss/sync_updates_feed.rs create mode 100644 collector/compile-benchmarks/crates.io/src/tests/worker/snapshots/crates_io__tests__worker__sync_admins__sync_admins_job.snap create mode 100644 collector/compile-benchmarks/crates.io/src/tests/worker/sync_admins.rs create mode 100644 collector/compile-benchmarks/crates.io/src/typosquat/cache.rs create mode 100644 collector/compile-benchmarks/crates.io/src/typosquat/checks.rs create mode 100644 collector/compile-benchmarks/crates.io/src/typosquat/config.rs create mode 100644 collector/compile-benchmarks/crates.io/src/typosquat/database.rs create mode 100644 collector/compile-benchmarks/crates.io/src/typosquat/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/typosquat/test_util.rs create mode 100644 collector/compile-benchmarks/crates.io/src/util.rs create mode 100644 collector/compile-benchmarks/crates.io/src/util/diesel.rs create mode 100644 collector/compile-benchmarks/crates.io/src/util/errors.rs create mode 100644 collector/compile-benchmarks/crates.io/src/util/errors/json.rs create mode 100644 collector/compile-benchmarks/crates.io/src/util/io_util.rs create mode 100644 collector/compile-benchmarks/crates.io/src/util/request_helpers.rs create mode 100644 collector/compile-benchmarks/crates.io/src/util/string_excl_null.rs create mode 100644 collector/compile-benchmarks/crates.io/src/util/tracing.rs create mode 100644 collector/compile-benchmarks/crates.io/src/views.rs create mode 100644 collector/compile-benchmarks/crates.io/src/views/krate_publish.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/environment.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/archive_version_downloads.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/daily_db_maintenance.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/delete_crate.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/docs_rs_queue_rebuild.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/downloads/clean_processed_log_files.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/downloads/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/downloads/process_log.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/downloads/queue/fixtures/empty-event.json create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/downloads/queue/fixtures/multi-event.json create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/downloads/queue/fixtures/valid-event.json create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/downloads/queue/job.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/downloads/queue/message.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/downloads/queue/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/downloads/queue/snapshots/crates_io__worker__jobs__downloads__queue__message__tests__parse-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/downloads/queue/snapshots/crates_io__worker__jobs__downloads__queue__message__tests__parse-3.snap create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/downloads/queue/snapshots/crates_io__worker__jobs__downloads__queue__message__tests__parse.snap create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/downloads/update_metadata.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/downloads/update_metadata.sql create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/dump_db.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/expiry_notification.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/index/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/index/normalize.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/index/squash.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/index/sync.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/index_version_downloads_archive/index.html.j2 create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/index_version_downloads_archive/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/index_version_downloads_archive/snapshots/crates_io__worker__jobs__index_version_downloads_archive__tests__generate_html.snap create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/index_version_downloads_archive/snapshots/crates_io__worker__jobs__index_version_downloads_archive__tests__generate_html_empty.snap create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/index_version_downloads_archive/snapshots/crates_io__worker__jobs__index_version_downloads_archive__tests__generate_json.snap create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/index_version_downloads_archive/snapshots/crates_io__worker__jobs__index_version_downloads_archive__tests__generate_json_empty.snap create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/index_version_downloads_archive/snapshots/crates_io__worker__jobs__index_version_downloads_archive__tests__template_context.snap create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/invalidate_cdns.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/readmes.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/rss/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/rss/snapshots/crates_io__worker__jobs__rss__sync_crate_feed__tests__load_version_updates-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/rss/snapshots/crates_io__worker__jobs__rss__sync_crate_feed__tests__load_version_updates-3.snap create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/rss/snapshots/crates_io__worker__jobs__rss__sync_crate_feed__tests__load_version_updates.snap create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/rss/snapshots/crates_io__worker__jobs__rss__sync_crates_feed__tests__load_version_updates-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/rss/snapshots/crates_io__worker__jobs__rss__sync_crates_feed__tests__load_version_updates-3.snap create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/rss/snapshots/crates_io__worker__jobs__rss__sync_crates_feed__tests__load_version_updates.snap create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/rss/snapshots/crates_io__worker__jobs__rss__sync_updates_feed__tests__load_version_updates-2.snap create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/rss/snapshots/crates_io__worker__jobs__rss__sync_updates_feed__tests__load_version_updates-3.snap create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/rss/snapshots/crates_io__worker__jobs__rss__sync_updates_feed__tests__load_version_updates.snap create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/rss/sync_crate_feed.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/rss/sync_crates_feed.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/rss/sync_updates_feed.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/send_publish_notifications.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/sync_admins.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/trustpub/delete_jtis.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/trustpub/delete_tokens.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/trustpub/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/typosquat.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/jobs/update_default_version.rs create mode 100644 collector/compile-benchmarks/crates.io/src/worker/mod.rs create mode 100644 collector/compile-benchmarks/crates.io/testem.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/404-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/api-token-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/categories-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/crate-deletion-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/crate-dependencies-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/crate-following-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/crate-navtabs-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/crate-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/crates-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/dashboard-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/dev-mode-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/email-change-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/email-confirmation-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/front-page-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/invites-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/keyword-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/login-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/logout-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/publish-notifications-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/read-only-mode-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/readme-rendering-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/reverse-dependencies-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/search-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/settings/add-owner-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/settings/remove-owner-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/settings/settings-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/sudo-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/support-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/team-page-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/token-invites-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/user-page-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/acceptance/versions-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/adapters/crate-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/axe-config.js create mode 100644 collector/compile-benchmarks/crates.io/tests/bugs/2329-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/bugs/4506-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/components/crate-row-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/components/crate-sidebar/link-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/components/crate-sidebar/playground-button-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/components/crate-sidebar/toml-snippet-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/components/download-graph-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/components/owners-list-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/components/privileged-action-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/components/version-list-row-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/helpers/fake-timers.js create mode 100644 collector/compile-benchmarks/crates.io/tests/helpers/index.js create mode 100644 collector/compile-benchmarks/crates.io/tests/helpers/match-json.js create mode 100644 collector/compile-benchmarks/crates.io/tests/helpers/sentry.js create mode 100644 collector/compile-benchmarks/crates.io/tests/helpers/setup-msw.js create mode 100644 collector/compile-benchmarks/crates.io/tests/helpers/visit-ignoring-abort.js create mode 100644 collector/compile-benchmarks/crates.io/tests/index.html create mode 100644 collector/compile-benchmarks/crates.io/tests/models/crate-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/models/user-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/models/version-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/modifiers/highlight-syntax-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/routes/category-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/routes/crate/delete-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/routes/crate/range-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/routes/crate/settings-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/routes/crate/version/crate-links-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/routes/crate/version/docs-link-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/routes/crate/version/model-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/routes/keyword-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/routes/settings/tokens/index-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/routes/settings/tokens/new-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/routes/support-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/routes/team-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/routes/user-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/services/playground-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/services/redirector-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/test-helper.js create mode 100644 collector/compile-benchmarks/crates.io/tests/unit/helpers/format-email-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/unit/helpers/format-num-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/unit/helpers/pretty-bytes-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/utils/ajax-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/utils/license-test.js create mode 100644 collector/compile-benchmarks/crates.io/tests/utils/search-test.js create mode 100644 collector/compile-benchmarks/crates.io/triagebot.toml create mode 100644 collector/compile-benchmarks/crates.io/vendor/qunit.css diff --git a/collector/compile-benchmarks/crates.io/.buildpacks b/collector/compile-benchmarks/crates.io/.buildpacks new file mode 100644 index 000000000..2c990691e --- /dev/null +++ b/collector/compile-benchmarks/crates.io/.buildpacks @@ -0,0 +1 @@ +https://github.com/Turbo87/heroku-buildpack-crates-io#9f7dc067dcda506ea94ca2d77f863588c5558241 diff --git a/collector/compile-benchmarks/crates.io/.dockerignore b/collector/compile-benchmarks/crates.io/.dockerignore new file mode 120000 index 000000000..6200b3ae7 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/.dockerignore @@ -0,0 +1 @@ +./.gitignore \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/.editorconfig b/collector/compile-benchmarks/crates.io/.editorconfig new file mode 100644 index 000000000..2ee8982d0 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/.editorconfig @@ -0,0 +1,32 @@ +# EditorConfig helps developers define and maintain consistent +# coding styles between different editors and IDEs +# editorconfig.org + +root = true + +[*] +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +indent_style = space +indent_size = 4 + +[*.{js,ts}] +indent_size = 2 + +[*.json] +indent_size = 2 + +[*.hbs] +insert_final_newline = false +indent_size = 2 + +[*.html] +indent_size = 2 + +[*.{diff,md}] +trim_trailing_whitespace = false + +[*.{yml,yaml}] +indent_size = 2 diff --git a/collector/compile-benchmarks/crates.io/.ember-cli b/collector/compile-benchmarks/crates.io/.ember-cli new file mode 100644 index 000000000..ee64cfed2 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/.ember-cli @@ -0,0 +1,9 @@ +{ + /** + Ember CLI sends analytics information by default. The data is completely + anonymous, but there are times when you might want to disable this behavior. + + Setting `disableAnalytics` to true will prevent any data from being sent. + */ + "disableAnalytics": false +} diff --git a/collector/compile-benchmarks/crates.io/.env.sample b/collector/compile-benchmarks/crates.io/.env.sample new file mode 100644 index 000000000..ef0cfc3da --- /dev/null +++ b/collector/compile-benchmarks/crates.io/.env.sample @@ -0,0 +1,93 @@ +# Location of the *postgres* database. For example, if you have created a +# blank database locally named `cargo_registry`, this would be +# `postgres://postgres@localhost/cargo_registry`. +export DATABASE_URL= + +# Allowed origins - any origins for which you want to allow browser +# access to authenticated endpoints. +export WEB_ALLOWED_ORIGINS=http://localhost:8888,http://localhost:4200 + +# If you're running an instance of the application on a domain different than +# crates.io, uncomment this line and set the variable to your domain name. +# export DOMAIN_NAME=staging.crates.io + +# Key to sign and encrypt cookies with. Must be at least 32 bytes. Change this +# to a long, random string for production. +export SESSION_KEY=badkeyabcdefghijklmnopqrstuvwxyzabcdef + +# If you will be running the tests, set this to another database that you +# have created. For example, if your test database is named +# `cargo_registry_test`, this would look something like +# `postgres://postgres@localhost/cargo_registry_test` +# If you don't plan on running the tests, you can leave this blank. +export TEST_DATABASE_URL= + +# Credentials for AWS. +# export AWS_ACCESS_KEY= +# export AWS_SECRET_KEY= + +# Configuration for uploading packages to S3. You can leave these commented +# out if you're not publishing to s3 from your crates.io instance. +# Uses AWS credentials. +# export S3_BUCKET= +# not needed if the S3 bucket is in US standard +# export S3_REGION= + +# Configuration for uploading index metadata to S3. You can leave these commented +# out if you're not publishing index metadata to s3 from your crates.io instance. +# Uses AWS credentials. +# export S3_INDEX_BUCKET= +# not needed if the S3 bucket is in US standard +# export S3_INDEX_REGION= + +# Configuration for invalidating cached files on CloudFront. You can leave these +# commented out if you're not using CloudFront caching for the index files. +# Uses AWS credentials. +# export CLOUDFRONT_DISTRIBUTION= + +# Configuration for the CDN log queue. You can leave these commented out if +# you're not using the CDN log queue. +# export CDN_LOG_QUEUE_ACCESS_KEY= +# export CDN_LOG_QUEUE_SECRET_KEY= +# export CDN_LOG_QUEUE_URL= +# export CDN_LOG_QUEUE_REGION= + +# Configuration for the version downloads data archive. +# You can leave these commented out if you're not using the archival process. +# export DOWNLOADS_ARCHIVE_ACCESS_KEY= +# export DOWNLOADS_ARCHIVE_SECRET_KEY= +# export DOWNLOADS_ARCHIVE_REGION= +# export DOWNLOADS_ARCHIVE_BUCKET= + +# Upstream location of the registry index. Background jobs will push to +# this URL. The default points to a local index for development. +# Run `./script/init-local-index.sh` to initialize this repo. +export GIT_REPO_URL=file://$PWD/tmp/index-bare + +# Credentials for talking to GitHub. You can leave these blank if you're +# not logging into your crates.io instance. +# When registering a new application on GitHub for use with your local +# crates.io instance, be sure to set the callback url for that application +# to the address `http://localhost:4200/github-redirect.html`. +export GH_CLIENT_ID= +export GH_CLIENT_SECRET= + +# Credentials for configuring Mailgun. You can leave these commented out +# if you are not interested in actually sending emails. If left empty, +# a mock email will be sent to a file in your local '/tmp/' directory. +# If interested in setting up Mailgun to send emails, you will have +# to create an account with Mailgun and modify these manually. +# If running a crates mirror on heroku, you can instead add the Mailgun +# app to your instance and shouldn't have to mess with these. +# export MAILGUN_SMTP_LOGIN= +# export MAILGUN_SMTP_PASSWORD= +# export MAILGUN_SMTP_SERVER= + +# Credentials for connecting to the Sentry error reporting service. +# export SENTRY_DSN_API= +export SENTRY_ENV_API=local + +# Base URL for the service from which the OpenGraph images +# for crates are loaded. Make sure the URL ends +# with a `/`. +export OG_IMAGE_BASE_URL="http://localhost:3000/og/" diff --git a/collector/compile-benchmarks/crates.io/.github/ISSUE_TEMPLATE/bug_report.yml b/collector/compile-benchmarks/crates.io/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 000000000..f4121ff73 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,52 @@ +name: Bug report +description: Create a report to help us improve +labels: ['C-bug'] +body: + - type: textarea + attributes: + label: Current Behavior + description: A concise description of what you're experiencing. + validations: + required: true + + - type: textarea + attributes: + label: Expected Behavior + description: A concise description of what you expected to happen. + validations: + required: true + + - type: textarea + attributes: + label: Steps To Reproduce + description: Steps to reproduce the behavior. + placeholder: | + 1. Go to '...' + 2. Click on '....' + 3. Scroll down to '....' + 4. See error + validations: + required: false + + - type: textarea + attributes: + label: Environment + description: | + examples: + - **Browser**: Safari 15.1 + - **OS**: macOS 11.6.1 + value: | + - Browser: + - OS: + validations: + required: false + + - type: textarea + attributes: + label: Anything else? + description: | + Links? References? Anything that will give us more context about the issue you are encountering! + + Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in. + validations: + required: false diff --git a/collector/compile-benchmarks/crates.io/.github/ISSUE_TEMPLATE/config.yml b/collector/compile-benchmarks/crates.io/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000..46da5401c --- /dev/null +++ b/collector/compile-benchmarks/crates.io/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: true +contact_links: + - name: Feature request + about: Suggest an idea for this project + url: https://github.com/rust-lang/crates.io/discussions/new diff --git a/collector/compile-benchmarks/crates.io/.github/renovate.json5 b/collector/compile-benchmarks/crates.io/.github/renovate.json5 new file mode 100644 index 000000000..4cd9c42e3 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/.github/renovate.json5 @@ -0,0 +1,79 @@ +{ + extends: [ + "config:best-practices", + ":pinAllExceptPeerDependencies", + ":maintainLockFilesWeekly", + ":prConcurrentLimitNone", + ":prHourlyLimitNone", + ":semanticCommitsDisabled", + ":automergeLinters", + ":automergeTesters", + "customManagers:dockerfileVersions", + "customManagers:githubActionsVersions", + "github>Turbo87/renovate-config//rust/updateToolchain", + ], + packageRules: [ + { + matchCategories: ["rust"], + labels: ["A-backend ⚙️"], + }, + { + matchCategories: ["js"], + labels: ["A-frontend 🐹"], + }, + { + matchDepNames: ["ember-cli", "ember-data", "ember-source"], + separateMinorPatch: true, + }, + { + matchDepNames: [ + "@percy/cli", + "tj-actions/changed-files", + "webpack", + ], + extends: ["schedule:weekly"], + }, + { + // Avoid "Artifact update problem" for pnpm updates when the renovatebot + // setup does not support the new version yet. + matchDepNames: ["pnpm"], + minimumReleaseAge: "24 hours", + }, + { + matchCategories: ["js"], + matchUpdateTypes: ["lockFileMaintenance"], + additionalBranchPrefix: "js-", + commitMessageSuffix: "(JS)", + }, + { + matchCategories: ["rust"], + matchUpdateTypes: ["lockFileMaintenance"], + additionalBranchPrefix: "rust-", + commitMessageSuffix: "(Rust)", + }, + { + matchManagers: ["custom.regex"], + matchDepNames: ["rust"], + commitMessageTopic: "Rust", + labels: ["A-backend ⚙️"], + }, + { + matchDepNames: ["/^diesel$/", "/^diesel_/"], + groupName: "diesel packages", + }, + { + matchDepNames: ["aws-ip-ranges"], + automerge: true, + }, + { + matchUpdateTypes: ["digest"], + enabled: false, + }, + { + // This is causing various issues, so we disable it for now. + matchDatasources: ["docker"], + matchUpdateTypes: ["pinDigest"], + enabled: false + }, + ], +} diff --git a/collector/compile-benchmarks/crates.io/.github/workflows/ci.yml b/collector/compile-benchmarks/crates.io/.github/workflows/ci.yml new file mode 100644 index 000000000..82bf92fae --- /dev/null +++ b/collector/compile-benchmarks/crates.io/.github/workflows/ci.yml @@ -0,0 +1,334 @@ +name: CI + +on: + push: + branches: + - main + - master + + pull_request: + +permissions: {} + +concurrency: + group: ci-${{ github.head_ref || github.ref }} + cancel-in-progress: true + +env: + CARGO_TERM_COLOR: always + # renovate: datasource=crate depName=cargo-deny versioning=semver + CARGO_DENY_VERSION: 0.18.2 + # renovate: datasource=crate depName=cargo-machete versioning=semver + CARGO_MACHETE_VERSION: 0.8.0 + # renovate: datasource=npm depName=pnpm + PNPM_VERSION: 10.11.0 + # renovate: datasource=docker depName=postgres + POSTGRES_VERSION: 16 + # renovate: datasource=pypi depName=zizmor + ZIZMOR_VERSION: 1.8.0 + +jobs: + changed-files: + name: Changed Files + runs-on: ubuntu-24.04 + + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + # This is needed to get the commit history for the changed-files action + # (see https://github.com/tj-actions/changed-files/blob/v46.0.5/README.md#usage-) + fetch-depth: 0 + + - uses: tj-actions/changed-files@6cb76d07bee4c9772c6882c06c37837bf82a04d3 # v46.0.4 + id: changed-files-non-js + with: + files_ignore: | + app/** + e2e/** + packages/** + public/** + tests/** + eslint.config.mjs + .template-lintrc.js + ember-cli-build.js + package.json + pnpm-lock.yaml + testem.js + + - uses: tj-actions/changed-files@6cb76d07bee4c9772c6882c06c37837bf82a04d3 # v46.0.4 + id: changed-files-non-rust + with: + files_ignore: | + crates/** + migrations/** + src/** + build.rs + Cargo.lock + Cargo.toml + rust-toolchain.toml + + - uses: tj-actions/changed-files@6cb76d07bee4c9772c6882c06c37837bf82a04d3 # v46.0.4 + id: changed-files-rust-lockfile + with: + files: Cargo.lock + + - uses: tj-actions/changed-files@6cb76d07bee4c9772c6882c06c37837bf82a04d3 # v46.0.4 + id: changed-files-ci + with: + files: .github/workflows/** + + outputs: + non-js: ${{ steps.changed-files-non-js.outputs.any_modified }} + non-rust: ${{ steps.changed-files-non-rust.outputs.any_modified }} + rust-lockfile: ${{ steps.changed-files-rust-lockfile.outputs.any_modified }} + ci: ${{ steps.changed-files-ci.outputs.any_modified }} + + percy-nonce: + name: Frontend / Percy Nonce + runs-on: ubuntu-latest + needs: changed-files + if: needs.changed-files.outputs.non-rust == 'true' + + # persist job results to other jobs in the workflow + outputs: + nonce: ${{ steps.percy-nonce.outputs.nonce }} + + steps: + # persist step results to other steps in the job + - id: percy-nonce + # adding a timestamp makes the nonce more unique for re-runs + run: echo "nonce=${{ github.run_id }}-$(date +%s)" >> $GITHUB_OUTPUT + + backend-lint: + name: Backend / Lint + runs-on: ubuntu-24.04 + needs: changed-files + if: needs.changed-files.outputs.non-js == 'true' + + env: + RUSTFLAGS: "-D warnings" + RUSTDOCFLAGS: "-D warnings" + + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + + - run: rustup component add rustfmt + - run: rustup component add clippy + + - uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # v2.7.8 + with: + save-if: ${{ github.ref == 'refs/heads/main' }} + + - run: cargo fmt --check --all + - run: cargo clippy --all-targets --all-features --workspace + - run: cargo doc --no-deps --document-private-items + + backend-deps: + name: Backend / dependencies + runs-on: ubuntu-24.04 + needs: changed-files + if: github.event_name != 'pull_request' || needs.changed-files.outputs.rust-lockfile == 'true' + + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + + - uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # v2.7.8 + with: + save-if: ${{ github.ref == 'refs/heads/main' }} + + - run: cargo install cargo-deny --vers ${CARGO_DENY_VERSION} + - run: cargo deny check + + - run: cargo install cargo-machete --vers ${CARGO_MACHETE_VERSION} + - run: cargo machete + + backend-test: + name: Backend / Test + runs-on: ubuntu-24.04 + needs: changed-files + if: needs.changed-files.outputs.non-js == 'true' + + env: + RUST_BACKTRACE: 1 + TEST_DATABASE_URL: postgres://postgres:postgres@localhost/postgres + RUSTFLAGS: "-D warnings -Cinstrument-coverage" + MALLOC_CONF: "background_thread:true,abort_conf:true,abort:true,junk:true" + + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + + # Remove the Android SDK to free up space + - run: sudo rm -rf /usr/local/lib/android + + - uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # v2.7.8 + with: + save-if: ${{ github.ref == 'refs/heads/main' }} + + # Update `pg_dump` to the same version as the running PostgreSQL server + - run: sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh -v ${POSTGRES_VERSION} -i -p + - run: sudo systemctl start postgresql.service + - run: sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'postgres'" + + - run: cargo build --tests --workspace + - run: cargo test --workspace + + frontend-lint: + name: Frontend / Lint + runs-on: ubuntu-24.04 + needs: changed-files + if: needs.changed-files.outputs.non-rust == 'true' + + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + + - uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + with: + version: ${{ env.PNPM_VERSION }} + + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + cache: pnpm + node-version-file: package.json + + - run: pnpm install + + - run: pnpm lint:hbs + - run: pnpm lint:js + - run: pnpm lint:deps + - run: pnpm prettier:check + + frontend-test: + name: Frontend / Test + runs-on: ubuntu-24.04 + needs: [changed-files, percy-nonce] + if: needs.changed-files.outputs.non-rust == 'true' + + env: + JOBS: 1 # See https://git.io/vdao3 for details. + + # Percy secrets are included here to enable Percy's GitHub integration + # on community-submitted PRs + PERCY_TOKEN: web_0a783d8086b6f996809f3e751d032dd6d156782082bcd1423b9b860113c75054 + PERCY_PARALLEL_NONCE: ${{ needs.percy-nonce.outputs.nonce }} + PERCY_PARALLEL_TOTAL: 2 + + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + + - uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + with: + version: ${{ env.PNPM_VERSION }} + + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + cache: pnpm + node-version-file: package.json + + - run: pnpm install + + - if: github.repository == 'rust-lang/crates.io' + run: pnpm percy exec --parallel -- pnpm test-coverage + + - if: github.repository != 'rust-lang/crates.io' + run: pnpm test-coverage + + msw-test: + name: Frontend / Test (@crates-io/msw) + runs-on: ubuntu-24.04 + needs: [changed-files] + if: needs.changed-files.outputs.non-rust == 'true' + + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + + - uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + with: + version: ${{ env.PNPM_VERSION }} + + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + cache: pnpm + node-version-file: package.json + + - run: pnpm install + + - run: pnpm --filter "@crates-io/msw" test + + e2e-test: + name: Frontend / Test (playwright) + runs-on: ubuntu-24.04 + needs: [changed-files, percy-nonce] + timeout-minutes: 60 + if: needs.changed-files.outputs.non-rust == 'true' + + env: + JOBS: 1 # See https://git.io/vdao3 for details. + + # Percy secrets are included here to enable Percy's GitHub integration + # on community-submitted PRs + PERCY_TOKEN: web_0a783d8086b6f996809f3e751d032dd6d156782082bcd1423b9b860113c75054 + PERCY_PARALLEL_NONCE: ${{ needs.percy-nonce.outputs.nonce }} + PERCY_PARALLEL_TOTAL: 2 + + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + + - uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + with: + version: ${{ env.PNPM_VERSION }} + + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + cache: pnpm + node-version-file: package.json + + - run: pnpm install + + - run: pnpm playwright install chromium + + - if: github.repository == 'rust-lang/crates.io' + run: pnpm percy exec --parallel -- pnpm e2e + + - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4 + if: ${{ !cancelled() }} + with: + name: playwright-report + path: playwright-report/ + retention-days: 14 + + zizmor: + name: CI / Lint + runs-on: ubuntu-24.04 + needs: changed-files + if: needs.changed-files.outputs.ci == 'true' + permissions: + security-events: write + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + + - uses: astral-sh/setup-uv@f0ec1fc3b38f5e7cd731bb6ce540c5af426746bb # v6.1.0 + - run: uvx zizmor@${ZIZMOR_VERSION} --format=sarif . > results.sarif + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - uses: github/codeql-action/upload-sarif@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18 + with: + sarif_file: results.sarif + category: zizmor diff --git a/collector/compile-benchmarks/crates.io/.github/workflows/smoke-test.yml b/collector/compile-benchmarks/crates.io/.github/workflows/smoke-test.yml new file mode 100644 index 000000000..30af23525 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/.github/workflows/smoke-test.yml @@ -0,0 +1,28 @@ +name: Smoke Test + +on: + workflow_dispatch: + +permissions: {} + +concurrency: + group: smoke-test + cancel-in-progress: true + +env: + CARGO_TERM_COLOR: always + +jobs: + test: + runs-on: ubuntu-24.04 + + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + + - uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # v2.7.8 + - run: cargo build --package crates_io_smoke_test + - run: cargo run --package crates_io_smoke_test --quiet + env: + CARGO_REGISTRY_TOKEN: ${{ secrets.STAGING_SMOKE_TEST_TOKEN }} diff --git a/collector/compile-benchmarks/crates.io/.gitignore b/collector/compile-benchmarks/crates.io/.gitignore new file mode 100644 index 000000000..1947c24fc --- /dev/null +++ b/collector/compile-benchmarks/crates.io/.gitignore @@ -0,0 +1,38 @@ +/target +.cargo + +# compiled output +/dist +/tmp + +# dependencies +node_modules/ +/bower_components +package-lock.json +yarn.lock + +# misc +/.eslintcache +/.sass-cache +/connect.lock +/coverage/* +/coverage_* +/local_uploads +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +.env +docker-compose.override.yml +*~ +src/schema.rs.orig + +# insta +*.pending-snap + +# playwright +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ + diff --git a/collector/compile-benchmarks/crates.io/.npmrc b/collector/compile-benchmarks/crates.io/.npmrc new file mode 100644 index 000000000..3bd3b7de7 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/.npmrc @@ -0,0 +1 @@ +shell-emulator=true diff --git a/collector/compile-benchmarks/crates.io/.nycrc b/collector/compile-benchmarks/crates.io/.nycrc new file mode 100644 index 000000000..f3640afe6 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/.nycrc @@ -0,0 +1,3 @@ +{ + "temp-directory": "coverage" +} diff --git a/collector/compile-benchmarks/crates.io/.prettierignore b/collector/compile-benchmarks/crates.io/.prettierignore new file mode 100644 index 000000000..849ddff3b --- /dev/null +++ b/collector/compile-benchmarks/crates.io/.prettierignore @@ -0,0 +1 @@ +dist/ diff --git a/collector/compile-benchmarks/crates.io/.template-lintrc.js b/collector/compile-benchmarks/crates.io/.template-lintrc.js new file mode 100644 index 000000000..45fcc6a2e --- /dev/null +++ b/collector/compile-benchmarks/crates.io/.template-lintrc.js @@ -0,0 +1,10 @@ +'use strict'; + +module.exports = { + extends: ['recommended', 'a11y'], + + rules: { + // disabled because these are still recommended by the Ember.js docs + 'no-builtin-form-components': 'off', + }, +}; diff --git a/collector/compile-benchmarks/crates.io/.watchmanconfig b/collector/compile-benchmarks/crates.io/.watchmanconfig new file mode 100644 index 000000000..e7834e3e4 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/.watchmanconfig @@ -0,0 +1,3 @@ +{ + "ignore_dirs": ["tmp", "dist"] +} diff --git a/collector/compile-benchmarks/crates.io/Cargo.lock b/collector/compile-benchmarks/crates.io/Cargo.lock new file mode 100644 index 000000000..17464703e --- /dev/null +++ b/collector/compile-benchmarks/crates.io/Cargo.lock @@ -0,0 +1,6962 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "actix-codec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a" +dependencies = [ + "bitflags", + "bytes", + "futures-core", + "futures-sink", + "memchr", + "pin-project-lite", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "actix-http" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44dfe5c9e0004c623edc65391dfd51daa201e7e30ebd9c9bedf873048ec32bc2" +dependencies = [ + "actix-codec", + "actix-rt", + "actix-service", + "actix-utils", + "base64 0.22.1", + "bitflags", + "bytes", + "bytestring", + "derive_more", + "encoding_rs", + "foldhash", + "futures-core", + "http 0.2.12", + "httparse", + "httpdate", + "itoa", + "language-tags", + "local-channel", + "mime", + "percent-encoding", + "pin-project-lite", + "rand 0.9.1", + "sha1", + "smallvec", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "actix-router" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13d324164c51f63867b57e73ba5936ea151b8a41a1d23d1031eeb9f70d0236f8" +dependencies = [ + "bytestring", + "cfg-if", + "http 0.2.12", + "regex-lite", + "serde", + "tracing", +] + +[[package]] +name = "actix-rt" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24eda4e2a6e042aa4e55ac438a2ae052d3b5da0ecf83d7411e1a368946925208" +dependencies = [ + "futures-core", + "tokio", +] + +[[package]] +name = "actix-server" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a65064ea4a457eaf07f2fba30b4c695bf43b721790e9530d26cb6f9019ff7502" +dependencies = [ + "actix-rt", + "actix-service", + "actix-utils", + "futures-core", + "futures-util", + "mio", + "socket2", + "tokio", + "tracing", +] + +[[package]] +name = "actix-service" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e46f36bf0e5af44bdc4bdb36fbbd421aa98c79a9bce724e1edeb3894e10dc7f" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "actix-utils" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a1dcdff1466e3c2488e1cb5c36a71822750ad43839937f85d2f4d9f8b705d8" +dependencies = [ + "local-waker", + "pin-project-lite", +] + +[[package]] +name = "actix-web" +version = "4.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2e3b15b3dc6c6ed996e4032389e9849d4ab002b1e92fbfe85b5f307d1479b4d" +dependencies = [ + "actix-codec", + "actix-http", + "actix-router", + "actix-rt", + "actix-server", + "actix-service", + "actix-utils", + "bytes", + "bytestring", + "cfg-if", + "derive_more", + "encoding_rs", + "foldhash", + "futures-core", + "futures-util", + "impl-more", + "itoa", + "language-tags", + "log", + "mime", + "once_cell", + "pin-project-lite", + "regex-lite", + "serde", + "serde_json", + "serde_urlencoded", + "smallvec", + "socket2", + "time", + "tracing", + "url", +] + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common", + "generic-array", +] + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "aes-gcm" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy 0.7.35", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "ammonia" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ada2ee439075a3e70b6992fce18ac4e407cd05aea9ca3f75d2c0b0c20bbb364" +dependencies = [ + "cssparser", + "html5ever", + "maplit", + "tendril", + "url", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anes" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" + +[[package]] +name = "anstream" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" + +[[package]] +name = "anstyle-parse" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" +dependencies = [ + "anstyle", + "once_cell", + "windows-sys 0.59.0", +] + +[[package]] +name = "anyhow" +version = "1.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" + +[[package]] +name = "arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "assert-json-diff" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "astral-tokio-tar" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1abb2bfba199d9ec4759b797115ba6ae435bdd920ce99783bb53aeff57ba919b" +dependencies = [ + "filetime", + "futures-core", + "libc", + "portable-atomic", + "rustc-hash 2.1.0", + "tokio", + "tokio-stream", + "xattr", +] + +[[package]] +name = "async-compression" +version = "0.4.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b37fc50485c4f3f736a4fb14199f6d5f5ba008d7f28fe710306c92780f004c07" +dependencies = [ + "brotli", + "flate2", + "futures-core", + "memchr", + "pin-project-lite", + "tokio", + "zstd", + "zstd-safe", +] + +[[package]] +name = "async-lock" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-trait" +version = "0.1.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "atom_syndication" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec03a6e158ee0f38bfba811976ae909bc2505a4a2f4049c7e8df47df3497b119" +dependencies = [ + "chrono", + "derive_builder", + "diligent-date-parser", + "never", + "quick-xml", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "aws-credential-types" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "687bc16bc431a8533fe0097c7f0182874767f920989d7260950172ae8e3c4465" +dependencies = [ + "aws-smithy-async", + "aws-smithy-runtime-api", + "aws-smithy-types", + "zeroize", +] + +[[package]] +name = "aws-ip-ranges" +version = "0.1201.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73050d91eb61548105fc684393ed862288b8a27fa6fd1e9143ade117bee84daa" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "aws-lc-rs" +version = "1.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dabb68eb3a7aa08b46fddfd59a3d55c978243557a90ab804769f7e20e67d2b01" +dependencies = [ + "aws-lc-sys", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bbe221bbf523b625a4dd8585c7f38166e31167ec2ca98051dbcb4c3b6e825d2" +dependencies = [ + "bindgen", + "cc", + "cmake", + "dunce", + "fs_extra", +] + +[[package]] +name = "aws-runtime" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c4063282c69991e57faab9e5cb21ae557e59f5b0fb285c196335243df8dc25c" +dependencies = [ + "aws-credential-types", + "aws-sigv4", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "fastrand", + "http 0.2.12", + "http-body 0.4.6", + "percent-encoding", + "pin-project-lite", + "tracing", + "uuid", +] + +[[package]] +name = "aws-sdk-cloudfront" +version = "1.78.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d72d51d29f33f0b3cfec78c1b6f43e2965e9b4c72cbe2c035e13dc016c1c956" +dependencies = [ + "aws-credential-types", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-smithy-xml", + "aws-types", + "fastrand", + "http 0.2.12", + "regex-lite", + "tracing", +] + +[[package]] +name = "aws-sdk-sqs" +version = "1.71.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0519921fc7065a54b8dec1d10de2893d99a61d030b9f8eb00ee83eb62d2a2676" +dependencies = [ + "aws-credential-types", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "fastrand", + "http 0.2.12", + "regex-lite", + "tracing", +] + +[[package]] +name = "aws-sigv4" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3503af839bd8751d0bdc5a46b9cac93a003a353e635b0c12cf2376b5b53e41ea" +dependencies = [ + "aws-credential-types", + "aws-smithy-http", + "aws-smithy-runtime-api", + "aws-smithy-types", + "bytes", + "form_urlencoded", + "hex", + "hmac", + "http 0.2.12", + "http 1.3.1", + "percent-encoding", + "sha2", + "time", + "tracing", +] + +[[package]] +name = "aws-smithy-async" +version = "1.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e190749ea56f8c42bf15dd76c65e14f8f765233e6df9b0506d9d934ebef867c" +dependencies = [ + "futures-util", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "aws-smithy-http" +version = "0.62.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99335bec6cdc50a346fda1437f9fefe33abf8c99060739a546a16457f2862ca9" +dependencies = [ + "aws-smithy-runtime-api", + "aws-smithy-types", + "bytes", + "bytes-utils", + "futures-core", + "http 0.2.12", + "http 1.3.1", + "http-body 0.4.6", + "percent-encoding", + "pin-project-lite", + "pin-utils", + "tracing", +] + +[[package]] +name = "aws-smithy-http-client" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8aff1159006441d02e57204bf57a1b890ba68bedb6904ffd2873c1c4c11c546b" +dependencies = [ + "aws-smithy-async", + "aws-smithy-runtime-api", + "aws-smithy-types", + "h2 0.4.7", + "http 0.2.12", + "http 1.3.1", + "http-body 0.4.6", + "hyper 0.14.32", + "hyper 1.6.0", + "hyper-rustls 0.24.2", + "hyper-rustls 0.27.5", + "hyper-util", + "pin-project-lite", + "rustls 0.21.12", + "rustls 0.23.21", + "rustls-native-certs 0.8.1", + "rustls-pki-types", + "tokio", + "tower", + "tracing", +] + +[[package]] +name = "aws-smithy-json" +version = "0.61.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92144e45819cae7dc62af23eac5a038a58aa544432d2102609654376a900bd07" +dependencies = [ + "aws-smithy-types", +] + +[[package]] +name = "aws-smithy-observability" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9364d5989ac4dd918e5cc4c4bdcc61c9be17dcd2586ea7f69e348fc7c6cab393" +dependencies = [ + "aws-smithy-runtime-api", +] + +[[package]] +name = "aws-smithy-runtime" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14302f06d1d5b7d333fd819943075b13d27c7700b414f574c3c35859bfb55d5e" +dependencies = [ + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-http-client", + "aws-smithy-observability", + "aws-smithy-runtime-api", + "aws-smithy-types", + "bytes", + "fastrand", + "http 0.2.12", + "http 1.3.1", + "http-body 0.4.6", + "http-body 1.0.1", + "pin-project-lite", + "pin-utils", + "tokio", + "tracing", +] + +[[package]] +name = "aws-smithy-runtime-api" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1e5d9e3a80a18afa109391fb5ad09c3daf887b516c6fd805a157c6ea7994a57" +dependencies = [ + "aws-smithy-async", + "aws-smithy-types", + "bytes", + "http 0.2.12", + "http 1.3.1", + "pin-project-lite", + "tokio", + "tracing", + "zeroize", +] + +[[package]] +name = "aws-smithy-types" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40076bd09fadbc12d5e026ae080d0930defa606856186e31d83ccc6a255eeaf3" +dependencies = [ + "base64-simd", + "bytes", + "bytes-utils", + "futures-core", + "http 0.2.12", + "http 1.3.1", + "http-body 0.4.6", + "http-body 1.0.1", + "http-body-util", + "itoa", + "num-integer", + "pin-project-lite", + "pin-utils", + "ryu", + "serde", + "time", + "tokio", + "tokio-util", +] + +[[package]] +name = "aws-smithy-xml" +version = "0.60.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab0b0166827aa700d3dc519f72f8b3a91c35d0b8d042dc5d643a91e6f80648fc" +dependencies = [ + "xmlparser", +] + +[[package]] +name = "aws-types" +version = "1.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a322fec39e4df22777ed3ad8ea868ac2f94cd15e1a55f6ee8d8d6305057689a" +dependencies = [ + "aws-credential-types", + "aws-smithy-async", + "aws-smithy-runtime-api", + "aws-smithy-types", + "rustc_version", + "tracing", +] + +[[package]] +name = "axum" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" +dependencies = [ + "axum-core", + "axum-macros", + "bytes", + "form_urlencoded", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.6.0", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-extra" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "543f0799d22486525744f06a3580b64f3e51d97aba73ea0e09040969c0034722" +dependencies = [ + "axum", + "axum-core", + "bytes", + "cookie", + "form_urlencoded", + "futures-util", + "headers", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "mime", + "pin-project-lite", + "serde", + "serde_html_form", + "serde_json", + "serde_path_to_error", + "tower", + "tower-layer", + "tower-service", + "typed-json", +] + +[[package]] +name = "axum-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "604fde5e028fea851ce1d8570bbdc034bec850d157f7569d10f347d06808c05c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "backtrace" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64-simd" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "339abbe78e73178762e23bea9dfd08e697eb3f3301cd4be981c0f78ba5859195" +dependencies = [ + "outref", + "vsimd", +] + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bigdecimal" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a22f228ab7a1b23027ccc6c350b72868017af7ea8356fbdf19f8d991c690013" +dependencies = [ + "autocfg", + "libm", + "num-bigint", + "num-integer", + "num-traits", + "serde", +] + +[[package]] +name = "bindgen" +version = "0.69.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" +dependencies = [ + "bitflags", + "cexpr", + "clang-sys", + "itertools 0.11.0", + "lazy_static", + "lazycell", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 1.1.0", + "shlex", + "syn", + "which", +] + +[[package]] +name = "bitflags" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" + +[[package]] +name = "bitflip" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7006e6395f41477e1052dfff8381b32c0d740c2ff3d48ffd72d19132293b4578" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bon" +version = "3.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced38439e7a86a4761f7f7d5ded5ff009135939ecb464a24452eaa4c1696af7d" +dependencies = [ + "bon-macros", + "rustversion", +] + +[[package]] +name = "bon-macros" +version = "3.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce61d2d3844c6b8d31b2353d9f66cf5e632b3e9549583fe3cac2f4f6136725e" +dependencies = [ + "darling", + "ident_case", + "prettyplease", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + +[[package]] +name = "brotli" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf19e729cdbd51af9a397fb9ef8ac8378007b797f8273cfbfdf45dcaa316167b" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bstr" +version = "1.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "bytes-utils" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dafe3a8757b027e2be6e4e5601ed563c55989fcf1546e933c66c8eb3a058d35" +dependencies = [ + "bytes", + "either", +] + +[[package]] +name = "bytestring" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e465647ae23b2823b0753f50decb2d5a86d2bb2cac04788fafd1f80e45378e5f" +dependencies = [ + "bytes", +] + +[[package]] +name = "cargo-manifest" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d8af896b707212cd0e99c112a78c9497dd32994192a463ed2f7419d29bd8c6" +dependencies = [ + "serde", + "thiserror 2.0.12", + "toml", +] + +[[package]] +name = "caseless" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6fd507454086c8edfd769ca6ada439193cdb209c7681712ef6275cccbfe5d8" +dependencies = [ + "unicode-normalization", +] + +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + +[[package]] +name = "cc" +version = "1.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13208fcbb66eaeffe09b99fffbe1af420f00a7b35aa99ad683dfc1aa76145229" +dependencies = [ + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom 7.1.3", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-link", +] + +[[package]] +name = "chumsky" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eebd66744a15ded14960ab4ccdbfb51ad3b81f51f3f04a80adac98c985396c9" +dependencies = [ + "hashbrown 0.14.5", + "stacker", +] + +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "claims" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bba18ee93d577a8428902687bcc2b6b45a56b1981a1f6d779731c86cc4c5db18" + +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "clap" +version = "4.5.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd60e63e9be68e5fb56422e397cf9baddded06dae1d2e523401542383bc72a9f" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89cc6392a1f72bbeb820d71f32108f61fdaf18bc526e1d23954168a67759ef51" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", + "terminal_size", + "unicase", + "unicode-width", +] + +[[package]] +name = "clap_derive" +version = "4.5.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" + +[[package]] +name = "cmake" +version = "0.1.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" +dependencies = [ + "cc", +] + +[[package]] +name = "colorchoice" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" + +[[package]] +name = "colored" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fde0e0ec90c9dfb3b4b1a0891a7dcd0e2bffde2f7efed5fe7c9bb00e5bfb915e" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "comrak" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5c834ca54c5a20588b358f34d1533b4b498ddb5fd979cec6b22d0e8867a2449" +dependencies = [ + "bon", + "caseless", + "entities", + "memchr", + "slug", + "typed-arena", + "unicode_categories", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "console" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea3c6ecd8059b57859df5c69830340ed3c41d30e3da0c1cbed90a96ac853041b" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "unicode-width", + "windows-sys 0.59.0", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "cookie" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +dependencies = [ + "aes-gcm", + "base64 0.22.1", + "hkdf", + "hmac", + "percent-encoding", + "rand 0.8.5", + "sha2", + "subtle", + "time", + "version_check", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +dependencies = [ + "libc", +] + +[[package]] +name = "crates_io" +version = "0.0.0" +dependencies = [ + "anyhow", + "astral-tokio-tar", + "async-compression", + "async-trait", + "aws-credential-types", + "aws-ip-ranges", + "aws-sdk-cloudfront", + "aws-sdk-sqs", + "axum", + "axum-extra", + "base64 0.22.1", + "bigdecimal", + "bon", + "bytes", + "cargo-manifest", + "chrono", + "claims", + "clap", + "colored", + "cookie", + "crates_io_cdn_logs", + "crates_io_database", + "crates_io_database_dump", + "crates_io_diesel_helpers", + "crates_io_docs_rs", + "crates_io_env_vars", + "crates_io_github", + "crates_io_index", + "crates_io_markdown", + "crates_io_pagerduty", + "crates_io_session", + "crates_io_tarball", + "crates_io_team_repo", + "crates_io_test_db", + "crates_io_trustpub", + "crates_io_worker", + "csv", + "deadpool-diesel", + "derive_more", + "dialoguer", + "diesel", + "diesel-async", + "diesel_full_text_search", + "diesel_migrations", + "dotenvy", + "flate2", + "futures-util", + "googletest", + "hex", + "http 1.3.1", + "hyper 1.6.0", + "indexmap", + "indicatif", + "insta", + "ipnetwork", + "json-subscriber", + "lettre", + "minijinja", + "mockall", + "moka", + "native-tls", + "oauth2", + "object_store", + "p256", + "parking_lot", + "paste", + "postgres-native-tls", + "prometheus", + "rand 0.9.1", + "regex", + "reqwest", + "rss", + "secrecy", + "semver", + "sentry", + "serde", + "serde_json", + "sha2", + "spdx", + "tar", + "tempfile", + "thiserror 2.0.12", + "tikv-jemallocator", + "tokio", + "tokio-postgres", + "tokio-util", + "toml", + "tower", + "tower-http", + "tracing", + "tracing-subscriber", + "typomania", + "url", + "utoipa", + "utoipa-axum", + "zip", +] + +[[package]] +name = "crates_io_cdn_logs" +version = "0.0.0" +dependencies = [ + "anyhow", + "async-compression", + "chrono", + "claims", + "clap", + "criterion", + "derive_more", + "insta", + "percent-encoding", + "semver", + "serde", + "serde_json", + "tokio", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "crates_io_database" +version = "0.0.0" +dependencies = [ + "bon", + "chrono", + "claims", + "crates_io_diesel_helpers", + "crates_io_index", + "crates_io_test_db", + "diesel", + "diesel-async", + "diesel_full_text_search", + "futures-util", + "googletest", + "insta", + "rand 0.9.1", + "secrecy", + "semver", + "serde", + "serde_json", + "sha2", + "thiserror 2.0.12", + "tokio", + "tracing", + "unicode-xid", + "utoipa", +] + +[[package]] +name = "crates_io_database_dump" +version = "0.0.0" +dependencies = [ + "anyhow", + "chrono", + "crates_io_test_db", + "diesel", + "diesel-async", + "flate2", + "insta", + "minijinja", + "serde", + "serde_json", + "tar", + "tempfile", + "tokio", + "toml", + "tracing", + "zip", +] + +[[package]] +name = "crates_io_diesel_helpers" +version = "0.0.0" +dependencies = [ + "crates_io_database", + "diesel", + "semver", + "serde", +] + +[[package]] +name = "crates_io_docs_rs" +version = "0.0.0" +dependencies = [ + "anyhow", + "async-trait", + "claims", + "crates_io_env_vars", + "http 1.3.1", + "mockall", + "mockito", + "reqwest", + "serde", + "serde_json", + "test-case", + "thiserror 2.0.12", + "tokio", + "tracing", + "tracing-subscriber", + "url", +] + +[[package]] +name = "crates_io_env_vars" +version = "0.0.0" +dependencies = [ + "anyhow", + "claims", + "dotenvy", +] + +[[package]] +name = "crates_io_github" +version = "0.0.0" +dependencies = [ + "anyhow", + "async-trait", + "clap", + "mockall", + "oauth2", + "reqwest", + "secrecy", + "serde", + "thiserror 2.0.12", + "tokio", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "crates_io_index" +version = "0.0.0" +dependencies = [ + "anyhow", + "base64 0.22.1", + "claims", + "crates_io_env_vars", + "git2", + "insta", + "secrecy", + "serde", + "serde_json", + "tempfile", + "tracing", + "url", +] + +[[package]] +name = "crates_io_markdown" +version = "0.0.0" +dependencies = [ + "ammonia", + "comrak", + "htmlescape", + "insta", + "url", +] + +[[package]] +name = "crates_io_pagerduty" +version = "0.0.0" +dependencies = [ + "anyhow", + "clap", + "reqwest", + "secrecy", + "serde", + "tokio", +] + +[[package]] +name = "crates_io_session" +version = "0.0.0" +dependencies = [ + "axum", + "axum-extra", + "base64 0.22.1", + "cookie", + "parking_lot", +] + +[[package]] +name = "crates_io_smoke_test" +version = "0.0.0" +dependencies = [ + "anyhow", + "bytes", + "clap", + "crates_io_index", + "rand 0.9.1", + "reqwest", + "secrecy", + "semver", + "serde", + "serde_json", + "tempfile", + "thiserror 2.0.12", + "tokio", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "crates_io_tarball" +version = "0.0.0" +dependencies = [ + "anyhow", + "astral-tokio-tar", + "async-compression", + "cargo-manifest", + "claims", + "clap", + "flate2", + "futures-util", + "indicatif", + "insta", + "rayon", + "serde", + "serde_json", + "tar", + "thiserror 2.0.12", + "tokio", + "tracing", + "tracing-subscriber", + "walkdir", +] + +[[package]] +name = "crates_io_team_repo" +version = "0.0.0" +dependencies = [ + "anyhow", + "async-trait", + "mockall", + "reqwest", + "serde", + "tokio", +] + +[[package]] +name = "crates_io_test_db" +version = "0.0.0" +dependencies = [ + "crates_io_env_vars", + "diesel", + "diesel-async", + "diesel_migrations", + "rand 0.9.1", + "tracing", + "url", +] + +[[package]] +name = "crates_io_trustpub" +version = "0.0.0" +dependencies = [ + "claims", + "insta", + "regex", + "thiserror 2.0.12", +] + +[[package]] +name = "crates_io_worker" +version = "0.0.0" +dependencies = [ + "anyhow", + "claims", + "crates_io_test_db", + "diesel", + "diesel-async", + "futures-util", + "insta", + "sentry-core", + "serde", + "serde_json", + "thiserror 2.0.12", + "tokio", + "tracing", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "criterion" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bf7af66b0989381bd0be551bd7cc91912a655a58c6918420c9527b1fd8b4679" +dependencies = [ + "anes", + "cast", + "ciborium", + "clap", + "criterion-plot", + "itertools 0.13.0", + "num-traits", + "oorandom", + "plotters", + "rayon", + "regex", + "serde", + "serde_json", + "tinytemplate", + "tokio", + "walkdir", +] + +[[package]] +name = "criterion-plot" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +dependencies = [ + "cast", + "itertools 0.10.5", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "typenum", +] + +[[package]] +name = "cssparser" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e901edd733a1472f944a45116df3f846f54d37e67e68640ac8bb69689aca2aa" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa", + "phf", + "smallvec", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "csv" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" +dependencies = [ + "csv-core", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "csv-core" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" +dependencies = [ + "memchr", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "darling" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +dependencies = [ + "darling_core", + "quote", + "syn", +] + +[[package]] +name = "deadpool" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6541a3916932fe57768d4be0b1ffb5ec7cbf74ca8c903fdfd5c0fe8aa958f0ed" +dependencies = [ + "deadpool-runtime", + "num_cpus", + "tokio", +] + +[[package]] +name = "deadpool-diesel" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "590573e9e29c5190a5ff782136f871e6e652e35d598a349888e028693601adf1" +dependencies = [ + "deadpool", + "deadpool-sync", + "diesel", +] + +[[package]] +name = "deadpool-runtime" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "092966b41edc516079bdf31ec78a2e0588d1d0c08f78b91d8307215928642b2b" +dependencies = [ + "tokio", +] + +[[package]] +name = "deadpool-sync" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524bc3df0d57e98ecd022e21ba31166c2625e7d3e5bcc4510efaeeab4abcab04" +dependencies = [ + "deadpool-runtime", + "tracing", +] + +[[package]] +name = "debugid" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" +dependencies = [ + "serde", + "uuid", +] + +[[package]] +name = "der" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derive_arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "derive_builder" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "derive_builder_macro" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" +dependencies = [ + "derive_builder_core", + "syn", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "unicode-xid", +] + +[[package]] +name = "deunicode" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "339544cc9e2c4dc3fc7149fd630c5f22263a4fdf18a98afd0075784968b5cf00" + +[[package]] +name = "dialoguer" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" +dependencies = [ + "console", + "shell-words", + "tempfile", + "thiserror 1.0.69", + "zeroize", +] + +[[package]] +name = "diesel" +version = "2.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff3e1edb1f37b4953dd5176916347289ed43d7119cc2e6c7c3f7849ff44ea506" +dependencies = [ + "bigdecimal", + "bitflags", + "byteorder", + "chrono", + "diesel_derives", + "itoa", + "num-bigint", + "num-integer", + "num-traits", + "pq-sys", + "r2d2", + "serde_json", +] + +[[package]] +name = "diesel-async" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51a307ac00f7c23f526a04a77761a0519b9f0eb2838ebf5b905a58580095bdcb" +dependencies = [ + "async-trait", + "deadpool", + "diesel", + "futures-util", + "scoped-futures", + "tokio", + "tokio-postgres", +] + +[[package]] +name = "diesel_derives" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7f2c3de51e2ba6bf2a648285696137aaf0f5f487bcbea93972fe8a364e131a4" +dependencies = [ + "diesel_table_macro_syntax", + "dsl_auto_type", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "diesel_full_text_search" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e28f8f872592a5283c3876a85c230dab8ddcc093c83660b96830c272257d03c9" +dependencies = [ + "diesel", +] + +[[package]] +name = "diesel_migrations" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a73ce704bad4231f001bff3314d91dce4aba0770cee8b233991859abc15c1f6" +dependencies = [ + "diesel", + "migrations_internals", + "migrations_macros", +] + +[[package]] +name = "diesel_table_macro_syntax" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "209c735641a413bc68c4923a9d6ad4bcb3ca306b794edaa7eb0b3228a99ffb25" +dependencies = [ + "syn", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "diligent-date-parser" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ede7d79366f419921e2e2f67889c12125726692a313bffb474bd5f37a581e9" +dependencies = [ + "chrono", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "dotenvy" +version = "0.15.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" + +[[package]] +name = "downcast" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" + +[[package]] +name = "dsl_auto_type" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5d9abe6314103864cc2d8901b7ae224e0ab1a103a0a416661b4097b0779b607" +dependencies = [ + "darling", + "either", + "heck", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "dtoa" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6add3b8cff394282be81f3fc1a0605db594ed69890078ca6e2cab1c408bcf04" + +[[package]] +name = "dtoa-short" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" +dependencies = [ + "dtoa", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest", + "ff", + "generic-array", + "group", + "pem-rfc7468", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "email-encoding" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20b9cde6a71f9f758440470f3de16db6c09a02c443ce66850d87f5410548fb8e" +dependencies = [ + "base64 0.22.1", + "memchr", +] + +[[package]] +name = "email_address" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e079f19b08ca6239f47f8ba8509c11cf3ea30095831f7fed61441475edd8c449" + +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "entities" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5320ae4c3782150d900b79807611a59a99fc9a1d61d686faafc24b93fc8d7ca" + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "event-listener" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" +dependencies = [ + "event-listener", + "pin-project-lite", +] + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "ff" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "filetime" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" +dependencies = [ + "cfg-if", + "libc", + "libredox", + "windows-sys 0.59.0", +] + +[[package]] +name = "findshlibs" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40b9e59cd0f7e0806cca4be089683ecb6434e602038df21fe6bf6711b2f07f64" +dependencies = [ + "cc", + "lazy_static", + "libc", + "winapi", +] + +[[package]] +name = "flate2" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" +dependencies = [ + "crc32fast", + "libz-rs-sys", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fragile" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" + +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + +[[package]] +name = "futf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" +dependencies = [ + "mac", + "new_debug_unreachable", +] + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generator" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd" +dependencies = [ + "cfg-if", + "libc", + "log", + "rustversion", + "windows 0.58.0", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets 0.52.6", +] + +[[package]] +name = "ghash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +dependencies = [ + "opaque-debug", + "polyval", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "git2" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2deb07a133b1520dc1a5690e9bd08950108873d7ed5de38dcc74d3b5ebffa110" +dependencies = [ + "bitflags", + "libc", + "libgit2-sys", + "log", + "openssl-probe", + "openssl-sys", + "url", +] + +[[package]] +name = "glob" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" + +[[package]] +name = "globset" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" +dependencies = [ + "aho-corasick", + "bstr", + "log", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[package]] +name = "googletest" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc79a6e277a8bc0810e4eb1ce11b0d5a7cbfbdc723d866106f7f5916ab2b7e33" +dependencies = [ + "googletest_macro", + "num-traits", + "regex", + "rustversion", +] + +[[package]] +name = "googletest_macro" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda3c5a3ab907fa99610e02840457447461e41d819bcb56d525385ea4227c6a8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "h2" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.3.1", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "half" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +dependencies = [ + "cfg-if", + "crunchy", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", +] + +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" + +[[package]] +name = "headers" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "322106e6bd0cba2d5ead589ddb8150a13d7c4217cf80d7c4f682ca994ccc6aa9" +dependencies = [ + "base64 0.21.7", + "bytes", + "headers-core", + "http 1.3.1", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" +dependencies = [ + "http 1.3.1", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "home" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "hostname" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9c7c7c8ac16c798734b8a24560c1362120597c40d5e1459f09498f8f6c8f2ba" +dependencies = [ + "cfg-if", + "libc", + "windows 0.52.0", +] + +[[package]] +name = "html5ever" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953cbbe631aae7fc0a112702ad5d3aaf09da38beaf45ea84610d6e1c358f569c" +dependencies = [ + "log", + "mac", + "markup5ever", + "match_token", +] + +[[package]] +name = "htmlescape" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9025058dae765dee5070ec375f591e2ba14638c63feff74f13805a72e523163" + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.3.1", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "pin-project-lite", +] + +[[package]] +name = "http-range-header" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" + +[[package]] +name = "httparse" +version = "1.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.14.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2 0.4.7", + "http 1.3.1", + "http-body 1.0.1", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http 0.2.12", + "hyper 0.14.32", + "log", + "rustls 0.21.12", + "rustls-native-certs 0.6.3", + "tokio", + "tokio-rustls 0.24.1", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +dependencies = [ + "futures-util", + "http 1.3.1", + "hyper 1.6.0", + "hyper-util", + "rustls 0.23.21", + "rustls-native-certs 0.8.1", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.1", + "tower-service", + "webpki-roots", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.6.0", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "hyper 1.6.0", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core 0.52.0", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "impl-more" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a5a9a0ff0086c7a148acb942baaabeadf9504d10400b5a05645853729b9cd2" + +[[package]] +name = "indexmap" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +dependencies = [ + "equivalent", + "hashbrown 0.15.2", + "serde", +] + +[[package]] +name = "indicatif" +version = "0.17.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" +dependencies = [ + "console", + "number_prefix", + "portable-atomic", + "rayon", + "unicode-width", + "web-time", +] + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + +[[package]] +name = "insta" +version = "1.43.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "154934ea70c58054b556dd430b99a98c2a7ff5309ac9891597e339b5c28f4371" +dependencies = [ + "console", + "globset", + "once_cell", + "pest", + "pest_derive", + "serde", + "similar", + "walkdir", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "ipnetwork" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf370abdafd54d13e54a620e8c3e1145f28e46cc9d704bc6d94414559df41763" + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" + +[[package]] +name = "jobserver" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "json-subscriber" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a04191d0d2a8409d99dccd5642abf91197a53fd661c6611ddb1f87751802d449" +dependencies = [ + "serde", + "serde_json", + "tracing", + "tracing-core", + "tracing-serde 0.1.3", + "tracing-subscriber", + "uuid", +] + +[[package]] +name = "language-tags" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "lettre" +version = "0.11.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ffd14fa289730e3ad68edefdc31f603d56fe716ec38f2076bb7410e09147c2" +dependencies = [ + "async-trait", + "base64 0.22.1", + "chumsky", + "email-encoding", + "email_address", + "fastrand", + "futures-io", + "futures-util", + "hostname", + "httpdate", + "idna", + "mime", + "native-tls", + "nom 8.0.0", + "percent-encoding", + "quoted_printable", + "socket2", + "tokio", + "tokio-native-tls", + "url", + "uuid", +] + +[[package]] +name = "libc" +version = "0.2.169" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" + +[[package]] +name = "libgit2-sys" +version = "0.18.1+1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1dcb20f84ffcdd825c7a311ae347cce604a6f084a767dec4a4929829645290e" +dependencies = [ + "cc", + "libc", + "libssh2-sys", + "libz-sys", + "openssl-sys", + "pkg-config", +] + +[[package]] +name = "libloading" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" +dependencies = [ + "cfg-if", + "windows-targets 0.52.6", +] + +[[package]] +name = "libm" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags", + "libc", + "redox_syscall", +] + +[[package]] +name = "libssh2-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dc8a030b787e2119a731f1951d6a773e2280c660f8ec4b0f5e1505a386e71ee" +dependencies = [ + "cc", + "libc", + "libz-sys", + "openssl-sys", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "libz-rs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6489ca9bd760fe9642d7644e827b0c9add07df89857b0416ee15c1cc1a3b8c5a" +dependencies = [ + "zlib-rs", +] + +[[package]] +name = "libz-sys" +version = "1.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df9b68e50e6e0b26f672573834882eb57759f6db9b3be2ea3c35c91188bb4eaa" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "linux-raw-sys" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db9c683daf087dc577b7506e9695b3d556a9f3849903fa28186283afd6809e9" + +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + +[[package]] +name = "local-channel" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6cbc85e69b8df4b8bb8b89ec634e7189099cea8927a276b7384ce5488e53ec8" +dependencies = [ + "futures-core", + "futures-sink", + "local-waker", +] + +[[package]] +name = "local-waker" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "lockfree-object-pool" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" + +[[package]] +name = "log" +version = "0.4.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" + +[[package]] +name = "loom" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" +dependencies = [ + "cfg-if", + "generator", + "scoped-tls", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "mac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" + +[[package]] +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + +[[package]] +name = "markup5ever" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a8096766c229e8c88a3900c9b44b7e06aa7f7343cc229158c3e58ef8f9973a" +dependencies = [ + "log", + "tendril", + "web_atoms", +] + +[[package]] +name = "match_token" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest", +] + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memo-map" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d1115007560874e373613744c6fba374c17688327a71c1476d1a5954cc857b" + +[[package]] +name = "migrations_internals" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd01039851e82f8799046eabbb354056283fb265c8ec0996af940f4e85a380ff" +dependencies = [ + "serde", + "toml", +] + +[[package]] +name = "migrations_macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb161cc72176cb37aa47f1fc520d3ef02263d67d661f44f05d05a079e1237fd" +dependencies = [ + "migrations_internals", + "proc-macro2", + "quote", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "minijinja" +version = "2.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd72e8b4e42274540edabec853f607c015c73436159b06c39c7af85a20433155" +dependencies = [ + "memo-map", + "self_cell", + "serde", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +dependencies = [ + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.52.0", +] + +[[package]] +name = "mockall" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39a6bfcc6c8c7eed5ee98b9c3e33adc726054389233e201c95dab2d41a3839d2" +dependencies = [ + "cfg-if", + "downcast", + "fragile", + "mockall_derive", + "predicates", + "predicates-tree", +] + +[[package]] +name = "mockall_derive" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ca3004c2efe9011bd4e461bd8256445052b9615405b4f7ea43fc8ca5c20898" +dependencies = [ + "cfg-if", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "mockito" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7760e0e418d9b7e5777c0374009ca4c93861b9066f18cb334a20ce50ab63aa48" +dependencies = [ + "assert-json-diff", + "bytes", + "colored", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.6.0", + "hyper-util", + "log", + "rand 0.9.1", + "regex", + "serde_json", + "serde_urlencoded", + "similar", + "tokio", +] + +[[package]] +name = "moka" +version = "0.12.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9321642ca94a4282428e6ea4af8cc2ca4eac48ac7a6a4ea8f33f76d0ce70926" +dependencies = [ + "async-lock", + "crossbeam-channel", + "crossbeam-epoch", + "crossbeam-utils", + "event-listener", + "futures-util", + "loom", + "parking_lot", + "portable-atomic", + "rustc_version", + "smallvec", + "tagptr", + "thiserror 1.0.69", + "uuid", +] + +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework 2.11.1", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "never" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c96aba5aa877601bb3f6dd6a63a969e1f82e60646e81e71b14496995e9853c91" + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nom" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" +dependencies = [ + "memchr", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "oauth2" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51e219e79014df21a225b1860a479e2dcd7cbd9130f4defd4bd0e191ea31d67d" +dependencies = [ + "base64 0.22.1", + "chrono", + "getrandom 0.2.15", + "http 1.3.1", + "rand 0.8.5", + "reqwest", + "serde", + "serde_json", + "serde_path_to_error", + "sha2", + "thiserror 1.0.69", + "url", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "object_store" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d94ac16b433c0ccf75326388c893d2835ab7457ea35ab8ba5d745c053ef5fa16" +dependencies = [ + "async-trait", + "base64 0.22.1", + "bytes", + "chrono", + "form_urlencoded", + "futures", + "http 1.3.1", + "http-body-util", + "humantime", + "hyper 1.6.0", + "itertools 0.14.0", + "md-5", + "parking_lot", + "percent-encoding", + "quick-xml", + "rand 0.9.1", + "reqwest", + "ring", + "serde", + "serde_json", + "serde_urlencoded", + "thiserror 2.0.12", + "tokio", + "tracing", + "url", + "walkdir", + "wasm-bindgen-futures", + "web-time", +] + +[[package]] +name = "once_cell" +version = "1.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" + +[[package]] +name = "oorandom" +version = "11.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "openssl" +version = "0.10.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8288979acd84749c744a9014b4382d42b8f7b2592847b5afb2ed29e5d16ede07" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "os_info" +version = "3.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e6520c8cc998c5741ee68ec1dc369fc47e5f0ea5320018ecf2a1ccd6328f48b" +dependencies = [ + "log", + "serde", + "windows-sys 0.52.0", +] + +[[package]] +name = "outref" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pest" +version = "2.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" +dependencies = [ + "memchr", + "thiserror 2.0.12", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "816518421cfc6887a0d62bf441b6ffb4536fcc926395a69e1a85852d4363f57e" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d1396fd3a870fc7838768d171b4616d5c91f6cc25e377b673d714567d99377b" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pest_meta" +version = "2.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1e58089ea25d717bfd31fb534e4f3afcc2cc569c70de3e239778991ea3b7dea" +dependencies = [ + "once_cell", + "pest", + "sha2", +] + +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_macros", + "phf_shared", +] + +[[package]] +name = "phf_codegen" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" +dependencies = [ + "phf_generator", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e2ec53ad785f4d35dac0adea7f7dc6f1bb277ad84a680c7afefeae05d1f5916" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[package]] +name = "plotters" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" + +[[package]] +name = "plotters-svg" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" +dependencies = [ + "plotters-backend", +] + +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "portable-atomic" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" + +[[package]] +name = "postgres-native-tls" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f39498473c92f7b6820ae970382c1d83178a3454c618161cb772e8598d9f6f" +dependencies = [ + "native-tls", + "tokio", + "tokio-native-tls", + "tokio-postgres", +] + +[[package]] +name = "postgres-protocol" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ff0abab4a9b844b93ef7b81f1efc0a366062aaef2cd702c76256b5dc075c54" +dependencies = [ + "base64 0.22.1", + "byteorder", + "bytes", + "fallible-iterator", + "hmac", + "md-5", + "memchr", + "rand 0.9.1", + "sha2", + "stringprep", +] + +[[package]] +name = "postgres-types" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613283563cd90e1dfc3518d548caee47e0e725455ed619881f5cf21f36de4b48" +dependencies = [ + "bytes", + "fallible-iterator", + "postgres-protocol", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy 0.7.35", +] + +[[package]] +name = "pq-sys" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6cc05d7ea95200187117196eee9edd0644424911821aeb28a18ce60ea0b8793" +dependencies = [ + "vcpkg", +] + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "predicates" +version = "3.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d19ee57562043d37e82899fade9a22ebab7be9cef5026b07fda9cdd4293573" +dependencies = [ + "anstyle", + "predicates-core", +] + +[[package]] +name = "predicates-core" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "727e462b119fe9c93fd0eb1429a5f7647394014cf3c04ab2c0350eeb09095ffa" + +[[package]] +name = "predicates-tree" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72dd2d6d381dfb73a193c7fca536518d7caee39fc8503f74e7dc0be0531b425c" +dependencies = [ + "predicates-core", + "termtree", +] + +[[package]] +name = "prettyplease" +version = "0.2.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6924ced06e1f7dfe3fa48d57b9f74f55d8915f5036121bef647ef4b204895fac" +dependencies = [ + "proc-macro2", + "syn", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prometheus" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ca5326d8d0b950a9acd87e6a3f94745394f62e4dae1b1ee22b2bc0c394af43a" +dependencies = [ + "cfg-if", + "fnv", + "lazy_static", + "memchr", + "parking_lot", + "thiserror 2.0.12", +] + +[[package]] +name = "psm" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200b9ff220857e53e184257720a14553b2f4aa02577d2ed9842d45d4b9654810" +dependencies = [ + "cc", +] + +[[package]] +name = "quick-xml" +version = "0.37.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "165859e9e55f79d67b96c5d96f4e88b6f2695a1972849c15a6a3f5c59fc2c003" +dependencies = [ + "encoding_rs", + "memchr", + "serde", +] + +[[package]] +name = "quinn" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" +dependencies = [ + "bytes", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash 2.1.0", + "rustls 0.23.21", + "socket2", + "thiserror 2.0.12", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" +dependencies = [ + "bytes", + "getrandom 0.2.15", + "rand 0.8.5", + "ring", + "rustc-hash 2.1.0", + "rustls 0.23.21", + "rustls-pki-types", + "slab", + "thiserror 2.0.12", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c40286217b4ba3a71d644d752e6a0b71f13f1b6a2c5311acfcbe0c2418ed904" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "quoted_printable" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "640c9bd8497b02465aeef5375144c26062e0dcd5939dfcbb0f5db76cb8c17c73" + +[[package]] +name = "r2d2" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51de85fb3fb6524929c8a2eb85e6b6d363de4e8c48f9e2c2eac4944abc181c93" +dependencies = [ + "log", + "parking_lot", + "scheduled-thread-pool", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.0", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.0", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.15", +] + +[[package]] +name = "rand_core" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b08f3c9802962f7e1b25113931d94f43ed9725bebc59db9d0c3e9a23b67e15ff" +dependencies = [ + "getrandom 0.3.1", + "zerocopy 0.8.14", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-lite" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "reqwest" +version = "0.12.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb" +dependencies = [ + "async-compression", + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.4.7", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.6.0", + "hyper-rustls 0.27.5", + "hyper-tls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls 0.23.21", + "rustls-native-certs 0.8.1", + "rustls-pemfile 2.2.0", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-native-tls", + "tokio-rustls 0.26.1", + "tokio-util", + "tower", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "webpki-roots", + "windows-registry", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.15", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rss" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2107738f003660f0a91f56fd3e3bd3ab5d918b2ddaf1e1ec2136fb1c46f71bf" +dependencies = [ + "atom_syndication", + "quick-xml", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hash" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.38.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a78891ee6bf2340288408954ac787aa063d8e8817e9f53abb37c695c6d834ef6" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17f8dcd64f141950290e45c99f7710ede1b600297c91818bb30b3667c0f45dc0" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys 0.9.2", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls" +version = "0.21.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +dependencies = [ + "log", + "ring", + "rustls-webpki 0.101.7", + "sct", +] + +[[package]] +name = "rustls" +version = "0.23.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f287924602bf649d949c63dc8ac8b235fa5387d394020705b80c4eb597ce5b8" +dependencies = [ + "aws-lc-rs", + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki 0.102.8", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile 1.0.4", + "schannel", + "security-framework 2.11.1", +] + +[[package]] +name = "rustls-native-certs" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +dependencies = [ + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework 3.2.0", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" +dependencies = [ + "web-time", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +dependencies = [ + "aws-lc-rs", + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "scheduled-thread-pool" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cbc66816425a074528352f5789333ecff06ca41b36b0b0efdfbb29edc391a19" +dependencies = [ + "parking_lot", +] + +[[package]] +name = "scoped-futures" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b24aae2d0636530f359e9d5ef0c04669d11c5e756699b27a6a6d845d8329091" +dependencies = [ + "pin-project-lite", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "secrecy" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" +dependencies = [ + "zeroize", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" +dependencies = [ + "bitflags", + "core-foundation 0.10.0", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "self_cell" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d369a96f978623eb3dc28807c4852d6cc617fed53da5d3c400feff1ef34a714a" + +[[package]] +name = "semver" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +dependencies = [ + "serde", +] + +[[package]] +name = "sentry" +version = "0.38.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a505499b38861edd82b5a688fa06ba4ba5875bb832adeeeba22b7b23fc4bc39a" +dependencies = [ + "httpdate", + "native-tls", + "reqwest", + "sentry-actix", + "sentry-backtrace", + "sentry-contexts", + "sentry-core", + "sentry-debug-images", + "sentry-panic", + "sentry-tower", + "sentry-tracing", + "tokio", + "ureq", +] + +[[package]] +name = "sentry-actix" +version = "0.38.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39ad8bfdcfbc6e0d0dacaa5728555085ef459fa9226cfc2fe64eefa4b8038b7f" +dependencies = [ + "actix-http", + "actix-web", + "bytes", + "futures-util", + "sentry-core", +] + +[[package]] +name = "sentry-backtrace" +version = "0.38.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dace796060e4ad10e3d1405b122ae184a8b2e71dce05ae450e4f81b7686b0d9" +dependencies = [ + "backtrace", + "regex", + "sentry-core", +] + +[[package]] +name = "sentry-contexts" +version = "0.38.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87bd9e6b51ffe2bc7188ebe36cb67557cb95749c08a3f81f33e8c9b135e0d1bc" +dependencies = [ + "hostname", + "libc", + "os_info", + "rustc_version", + "sentry-core", + "uname", +] + +[[package]] +name = "sentry-core" +version = "0.38.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7426d4beec270cfdbb50f85f0bb2ce176ea57eed0b11741182a163055a558187" +dependencies = [ + "rand 0.9.1", + "sentry-types", + "serde", + "serde_json", +] + +[[package]] +name = "sentry-debug-images" +version = "0.38.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9df15c066c04f34c4dfd496a8e76590106b93283f72ef1a47d8fb24d88493424" +dependencies = [ + "findshlibs", + "sentry-core", +] + +[[package]] +name = "sentry-panic" +version = "0.38.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92beed69b776a162b6d269bef1eaa3e614090b6df45a88d9b239c4fdbffdfba" +dependencies = [ + "sentry-backtrace", + "sentry-core", +] + +[[package]] +name = "sentry-tower" +version = "0.38.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e699974e956e032e08e3595ca67590860b0d7aa522ede2214094eb13200880" +dependencies = [ + "axum", + "http 1.3.1", + "pin-project", + "sentry-core", + "tower-layer", + "tower-service", + "url", +] + +[[package]] +name = "sentry-tracing" +version = "0.38.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55c323492795de90824f3198562e33dd74ae3bc852fbb13c0cabec54a1cf73cd" +dependencies = [ + "sentry-backtrace", + "sentry-core", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "sentry-types" +version = "0.38.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04b6c9287202294685cb1f749b944dbbce8160b81a1061ecddc073025fed129f" +dependencies = [ + "debugid", + "hex", + "rand 0.9.1", + "serde", + "serde_json", + "thiserror 2.0.12", + "time", + "url", + "uuid", +] + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_html_form" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d2de91cf02bbc07cde38891769ccd5d4f073d22a40683aa4bc7a95781aaa2c4" +dependencies = [ + "form_urlencoded", + "indexmap", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest", + "rand_core 0.6.4", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "similar" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slug" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "882a80f72ee45de3cc9a5afeb2da0331d58df69e4e7d8eeb5d3c7784ae67e724" +dependencies = [ + "deunicode", + "wasm-bindgen", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "socket2" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "spdx" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58b69356da67e2fc1f542c71ea7e654a361a79c938e4424392ecf4fa065d2193" +dependencies = [ + "smallvec", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "stacker" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799c883d55abdb5e98af1a7b3f23b9b6de8ecada0ecac058672d7635eb48ca7b" +dependencies = [ + "cc", + "cfg-if", + "libc", + "psm", + "windows-sys 0.59.0", +] + +[[package]] +name = "string_cache" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", +] + +[[package]] +name = "stringprep" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" +dependencies = [ + "unicode-bidi", + "unicode-normalization", + "unicode-properties", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags", + "core-foundation 0.9.4", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tagptr" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" + +[[package]] +name = "tar" +version = "0.4.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d863878d212c87a19c1a610eb53bb01fe12951c0501cf5a0d65f724914a667a" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "tempfile" +version = "3.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +dependencies = [ + "fastrand", + "getrandom 0.3.1", + "once_cell", + "rustix 1.0.0", + "windows-sys 0.59.0", +] + +[[package]] +name = "tendril" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +dependencies = [ + "futf", + "mac", + "utf-8", +] + +[[package]] +name = "terminal_size" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5352447f921fda68cf61b4101566c0bdb5104eff6804d0678e5227580ab6a4e9" +dependencies = [ + "rustix 0.38.43", + "windows-sys 0.59.0", +] + +[[package]] +name = "termtree" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f50febec83f5ee1df3015341d8bd429f2d1cc62bcba7ea2076759d315084683" + +[[package]] +name = "test-case" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" +dependencies = [ + "test-case-macros", +] + +[[package]] +name = "test-case-core" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" +dependencies = [ + "cfg-if", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "test-case-macros" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "test-case-core", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +dependencies = [ + "thiserror-impl 2.0.12", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "tikv-jemalloc-sys" +version = "0.6.0+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd3c60906412afa9c2b5b5a48ca6a5abe5736aec9eb48ad05037a677e52e4e2d" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "tikv-jemallocator" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cec5ff18518d81584f477e9bfdf957f5bb0979b0bac3af4ca30b5b3ae2d2865" +dependencies = [ + "libc", + "tikv-jemalloc-sys", +] + +[[package]] +name = "time" +version = "0.3.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "tinyvec" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-postgres" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c95d533c83082bb6490e0189acaa0bbeef9084e60471b696ca6988cd0541fb0" +dependencies = [ + "async-trait", + "byteorder", + "bytes", + "fallible-iterator", + "futures-channel", + "futures-util", + "log", + "parking_lot", + "percent-encoding", + "phf", + "pin-project-lite", + "postgres-protocol", + "postgres-types", + "rand 0.9.1", + "socket2", + "tokio", + "tokio-util", + "whoami", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls 0.21.12", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" +dependencies = [ + "rustls 0.23.21", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_write" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fdb0c213ca27a9f57ab69ddb290fd80d970922355b83ae380b395d3986b8a2e" +dependencies = [ + "async-compression", + "bitflags", + "bytes", + "futures-core", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "http-range-header", + "httpdate", + "mime", + "mime_guess", + "percent-encoding", + "pin-project-lite", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-serde" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" +dependencies = [ + "serde", + "tracing-core", +] + +[[package]] +name = "tracing-serde" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" +dependencies = [ + "serde", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "serde", + "serde_json", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", + "tracing-serde 0.2.0", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typed-arena" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" + +[[package]] +name = "typed-json" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6024a8d0025400b3f6b189366e9aa92012cf9c4fe1cd2620848dd61425c49eed" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "typomania" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f8c4efb88486b445b83759c6589b97a0fe4cf82bd36be336c164b49af13bef" +dependencies = [ + "bitflip", + "itertools 0.11.0", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + +[[package]] +name = "uname" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b72f89f0ca32e4db1c04e2a72f5345d59796d4866a1ee0609084569f73683dc8" +dependencies = [ + "libc", +] + +[[package]] +name = "unicase" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" + +[[package]] +name = "unicode-bidi" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" + +[[package]] +name = "unicode-ident" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" + +[[package]] +name = "unicode-normalization" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-properties" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" + +[[package]] +name = "unicode-width" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "unicode_categories" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" + +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "ureq" +version = "2.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d" +dependencies = [ + "base64 0.22.1", + "log", + "native-tls", + "once_cell", + "url", +] + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "utoipa" +version = "5.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435c6f69ef38c9017b4b4eea965dfb91e71e53d869e896db40d1cf2441dd75c0" +dependencies = [ + "indexmap", + "serde", + "serde_json", + "utoipa-gen", +] + +[[package]] +name = "utoipa-axum" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c25bae5bccc842449ec0c5ddc5cbb6a3a1eaeac4503895dc105a1138f8234a0" +dependencies = [ + "axum", + "paste", + "tower-layer", + "tower-service", + "utoipa", +] + +[[package]] +name = "utoipa-gen" +version = "5.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a77d306bc75294fd52f3e99b13ece67c02c1a2789190a6f31d32f736624326f7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "uuid" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "744018581f9a3454a9e15beb8a33b017183f1e7c0cd170232a2d1453b23a51c4" +dependencies = [ + "getrandom 0.2.15", + "serde", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "vsimd" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasi" +version = "0.13.3+wasi-0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-streams" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web_atoms" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "954c5a41f2bcb7314344079d0891505458cc2f4b422bdea1d5bfbe6d1a04903b" +dependencies = [ + "phf", + "phf_codegen", + "string_cache", + "string_cache_codegen", +] + +[[package]] +name = "webpki-roots" +version = "0.26.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix 0.38.43", +] + +[[package]] +name = "whoami" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" +dependencies = [ + "redox_syscall", + "wasite", + "web-sys", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core 0.52.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core 0.58.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result 0.2.0", + "windows-strings 0.1.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-link" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dccfd733ce2b1753b03b6d3c65edf020262ea35e20ccdf3e288043e6dd620e3" + +[[package]] +name = "windows-registry" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" +dependencies = [ + "windows-result 0.3.1", + "windows-strings 0.3.1", + "windows-targets 0.53.0", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06374efe858fab7e4f881500e6e86ec8bc28f9462c47e5a9941a0142ad86b189" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result 0.2.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + +[[package]] +name = "winnow" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cb8234a863ea0e8cd7284fcdd4f145233eb00fee02bbdd9861aec44e6477bc5" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags", +] + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +[[package]] +name = "xattr" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e105d177a3871454f754b33bb0ee637ecaaac997446375fd3e5d43a2ed00c909" +dependencies = [ + "libc", + "linux-raw-sys 0.4.15", + "rustix 0.38.43", +] + +[[package]] +name = "xmlparser" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a367f292d93d4eab890745e75a778da40909cab4d6ff8173693812f79c4a2468" +dependencies = [ + "zerocopy-derive 0.8.14", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3931cb58c62c13adec22e38686b559c86a30565e16ad6e8510a337cedc611e1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zip" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "153a6fff49d264c4babdcfa6b4d534747f520e56e8f0f384f3b808c4b64cc1fd" +dependencies = [ + "arbitrary", + "crc32fast", + "flate2", + "indexmap", + "memchr", + "zopfli", +] + +[[package]] +name = "zlib-rs" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "868b928d7949e09af2f6086dfc1e01936064cc7a819253bce650d4e2a2d63ba8" + +[[package]] +name = "zopfli" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5019f391bac5cf252e93bbcc53d039ffd62c7bfb7c150414d61369afe57e946" +dependencies = [ + "bumpalo", + "crc32fast", + "lockfree-object-pool", + "log", + "once_cell", + "simd-adler32", +] + +[[package]] +name = "zstd" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.13+zstd.1.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/collector/compile-benchmarks/crates.io/Cargo.toml b/collector/compile-benchmarks/crates.io/Cargo.toml new file mode 100644 index 000000000..98a18ff6f --- /dev/null +++ b/collector/compile-benchmarks/crates.io/Cargo.toml @@ -0,0 +1,155 @@ +[package] +name = "crates_io" +authors = ["Alex Crichton "] +version = "0.0.0" +license = "MIT OR Apache-2.0" +repository = "https://github.com/rust-lang/crates.io" +description = "Backend of crates.io" +edition = "2024" +default-run = "server" + +[workspace] +members = ["crates/*"] + +[workspace.lints.rust] +future_incompatible = "warn" +nonstandard_style = "warn" +rust_2018_idioms = "warn" +rust_2018_compatibility = "warn" +rust_2021_compatibility = "warn" +unused = "warn" + +[workspace.lints.rustdoc] +unescaped_backticks = "warn" + +[workspace.lints.clippy] +dbg_macro = "warn" +todo = "warn" + +[package.metadata.cargo-machete] +ignored = ["astral-tokio-tar"] + +[workspace.metadata.cargo-machete] +ignored = ["astral-tokio-tar"] + +[lints] +workspace = true + +[profile.dev.package] +insta.opt-level = 3 +similar.opt-level = 3 + +[profile.release] +opt-level = 2 + +[lib] +name = "crates_io" +doctest = true + +[dependencies] +anyhow = "=1.0.98" +astral-tokio-tar = "=0.5.2" +async-compression = { version = "=0.4.23", default-features = false, features = ["gzip", "tokio"] } +async-trait = "=0.1.88" +aws-credential-types = { version = "=1.2.3", features = ["hardcoded-credentials"] } +aws-ip-ranges = "=0.1201.0" +aws-sdk-cloudfront = "=1.78.0" +aws-sdk-sqs = "=1.71.0" +axum = { version = "=0.8.4", features = ["macros", "matched-path"] } +axum-extra = { version = "=0.11.0", features = ["erased-json", "query", "typed-header"] } +base64 = "=0.22.1" +bigdecimal = { version = "=0.4.8", features = ["serde"] } +bon = "=3.6.3" +cargo-manifest = "=0.19.1" +colored = "=3.0.0" +crates_io_cdn_logs = { path = "crates/crates_io_cdn_logs" } +crates_io_database = { path = "crates/crates_io_database" } +crates_io_database_dump = { path = "crates/crates_io_database_dump" } +crates_io_diesel_helpers = { path = "crates/crates_io_diesel_helpers" } +crates_io_docs_rs = { path = "crates/crates_io_docs_rs" } +crates_io_env_vars = { path = "crates/crates_io_env_vars" } +crates_io_github = { path = "crates/crates_io_github" } +crates_io_index = { path = "crates/crates_io_index" } +crates_io_markdown = { path = "crates/crates_io_markdown" } +crates_io_pagerduty = { path = "crates/crates_io_pagerduty" } +crates_io_session = { path = "crates/crates_io_session" } +crates_io_tarball = { path = "crates/crates_io_tarball" } +crates_io_team_repo = { path = "crates/crates_io_team_repo" } +crates_io_trustpub = { path = "crates/crates_io_trustpub" } +crates_io_worker = { path = "crates/crates_io_worker" } +csv = "=1.3.1" +chrono = { version = "=0.4.41", default-features = false, features = ["serde"] } +clap = { version = "=4.5.39", features = ["derive", "env", "unicode", "wrap_help"] } +cookie = { version = "=0.18.1", features = ["secure"] } +deadpool-diesel = { version = "=0.6.1", features = ["postgres", "tracing"] } +derive_more = { version = "=2.0.1", features = ["deref", "deref_mut", "display"] } +dialoguer = "=0.11.0" +diesel = { version = "=2.2.10", features = ["postgres", "serde_json", "chrono", "numeric"] } +diesel-async = { version = "=0.5.2", features = ["async-connection-wrapper", "deadpool", "postgres"] } +diesel_full_text_search = "=2.2.0" +diesel_migrations = { version = "=2.2.0", features = ["postgres"] } +dotenvy = "=0.15.7" +flate2 = "=1.1.1" +futures-util = "=0.3.31" +hex = "=0.4.3" +http = "=1.3.1" +hyper = { version = "=1.6.0", features = ["client", "http1"] } +indexmap = { version = "=2.9.0", features = ["serde"] } +indicatif = "=0.17.11" +ipnetwork = "=0.21.1" +json-subscriber = "=0.2.4" +lettre = { version = "=0.11.16", default-features = false, features = ["file-transport", "smtp-transport", "hostname", "builder", "tokio1", "tokio1-native-tls"] } +minijinja = { version = "=2.10.2", features = ["loader"] } +mockall = "=0.13.1" +moka = { version = "=0.12.10", default-features = false, features = ["future"] } +native-tls = "=0.2.14" +oauth2 = "=5.0.0" +object_store = { version = "=0.12.1", features = ["aws"] } +p256 = "=0.13.2" +parking_lot = "=0.12.3" +paste = "=1.0.15" +postgres-native-tls = "=0.5.1" +prometheus = { version = "=0.14.0", default-features = false } +rand = "=0.9.1" +reqwest = { version = "=0.12.15", features = ["gzip", "json"] } +rss = { version = "=2.0.12", default-features = false, features = ["atom"] } +secrecy = "=0.10.3" +semver = { version = "=1.0.26", features = ["serde"] } +sentry = { version = "=0.38.1", features = ["tracing", "tower", "tower-axum-matched-path", "tower-http"] } +serde = { version = "=1.0.219", features = ["derive"] } +serde_json = "=1.0.140" +sha2 = "=0.10.9" +spdx = "=0.10.8" +tar = "=0.4.44" +tempfile = "=3.20.0" +thiserror = "=2.0.12" +tikv-jemallocator = { version = "=0.6.0", features = ['unprefixed_malloc_on_supported_platforms', 'profiling'] } +tokio = { version = "=1.45.1", features = ["net", "signal", "io-std", "io-util", "rt-multi-thread", "macros", "process"]} +tokio-postgres = "=0.7.13" +tokio-util = "=0.7.15" +toml = "=0.8.22" +tower = "=0.5.2" +tower-http = { version = "=0.6.4", features = ["add-extension", "fs", "catch-panic", "timeout", "compression-full"] } +tracing = "=0.1.41" +tracing-subscriber = { version = "=0.3.19", features = ["env-filter", "json"] } +typomania = { version = "=0.1.2", default-features = false } +url = "=2.5.4" +utoipa = { version = "=5.3.1", features = ["chrono"] } +utoipa-axum = "=0.2.0" + +[dev-dependencies] +bytes = "=1.10.1" +crates_io_docs_rs = { path = "crates/crates_io_docs_rs", features = ["mock"] } +crates_io_github = { path = "crates/crates_io_github", features = ["mock"] } +crates_io_index = { path = "crates/crates_io_index", features = ["testing"] } +crates_io_tarball = { path = "crates/crates_io_tarball", features = ["builder"] } +crates_io_team_repo = { path = "crates/crates_io_team_repo", features = ["mock"] } +crates_io_test_db = { path = "crates/crates_io_test_db" } +claims = "=0.8.0" +diesel = { version = "=2.2.10", features = ["r2d2"] } +googletest = "=0.14.1" +insta = { version = "=1.43.1", features = ["glob", "json", "redactions"] } +regex = "=1.11.1" +sentry = { version = "=0.38.1", features = ["test"] } +tokio = "=1.45.1" +zip = { version = "=4.0.0", default-features = false, features = ["deflate"] } diff --git a/collector/compile-benchmarks/crates.io/Justfile b/collector/compile-benchmarks/crates.io/Justfile new file mode 100644 index 000000000..c857c6653 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/Justfile @@ -0,0 +1,25 @@ +env := "development" +app := if env == "production" { "crates-io" } else if env == "staging"{ "staging-crates-io" } else { "" } + +# List available commands +_default: + just --list + +# Error out if not an environment targeting Heroku +_assert_heroku: + {{ if app == "" { error("Please specify env=staging or env=production") } else { "" } }} + +# Squash the index (specify env=production or env=staging) +squash-index: _assert_heroku + @echo Running an index squash against app: {{ app }} + heroku run -a {{ app }} -- target/release/crates-admin enqueue-job squash_index + @echo + @echo There are several steps that must be done by hand: + @echo 1. Fetch the index and push the snapshot branch to the "crates.io-index-archive" repo. + @echo 2. Add a reminder to meeting agenda to drop the old branch. https://github.com/orgs/rust-lang/projects/25 + @echo 3. Post to the Zulip channel that the squash has been done. https://rust-lang.zulipchat.com/#narrow/stream/318791-t-crates-io/topic/index.20squashing + +# This should be run each time we bump rustc, immediately before deploying +purge-heroku-build-cache: _assert_heroku + @echo Puring the build cache for app: {{ app }} + heroku builds:cache:purge -a {{ app }} diff --git a/collector/compile-benchmarks/crates.io/LICENSE-APACHE b/collector/compile-benchmarks/crates.io/LICENSE-APACHE new file mode 100644 index 000000000..16fe87b06 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/LICENSE-APACHE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/collector/compile-benchmarks/crates.io/LICENSE-MIT b/collector/compile-benchmarks/crates.io/LICENSE-MIT new file mode 100644 index 000000000..39d4bdb5a --- /dev/null +++ b/collector/compile-benchmarks/crates.io/LICENSE-MIT @@ -0,0 +1,25 @@ +Copyright (c) 2014 The Rust Project Developers + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/collector/compile-benchmarks/crates.io/Procfile b/collector/compile-benchmarks/crates.io/Procfile new file mode 100644 index 000000000..05b7ba33b --- /dev/null +++ b/collector/compile-benchmarks/crates.io/Procfile @@ -0,0 +1,3 @@ +release: ./target/release/crates-admin migrate +web: ./target/release/server +background_worker: ./target/release/background-worker diff --git a/collector/compile-benchmarks/crates.io/README.md b/collector/compile-benchmarks/crates.io/README.md new file mode 100644 index 000000000..0eab8d164 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/README.md @@ -0,0 +1,73 @@ +
+ + + crates.io logo + +
+ +--- + +
+ +[Homepage][crates.io] +| [Usage Policy](https://crates.io/policies) +| [Security](https://crates.io/policies/security) +| [Status](https://status.crates.io/) +| [Contact](#️-contact) +| [Contributing](#️-contributing) + +
+ +## 🦀 Overview + +Welcome to the GitHub repository for [crates.io], the official package registry for the [Rust] programming language. + +[crates.io] serves as a central registry for sharing "crates", which are packages or libraries written in [Rust] that you can use to enhance your projects. This repository contains the source code and infrastructure for the [crates.io] website, including both frontend and backend components. + +This service is maintained for you by the [crates.io team], with support from the [Rust Foundation](https://rustfoundation.org/). File hosting is donated by [Amazon Web Services](https://aws.amazon.com/), with CDN services donated by [Fastly](https://fastly.com/). + +## 🛠️ Contributing + +We welcome contributions from the community! Whether you're fixing a bug, implementing a new feature, or improving documentation, your contributions help make [crates.io] better for everyone. + +[crates.io] is built with [Rust] for the backend services. More specifically, the [axum] web framework and [diesel] for database access, with a [custom-built background worker system](./crates/crates_io_worker). The frontend is an [Ember.js] application written in JavaScript. + +Please review our [contribution guidelines](./docs/CONTRIBUTING.md) before submitting your pull request. The same document also contains instructions on how to set up a local development environment. + +## 🪲 Issue Tracker + +If you encounter any bugs or have technical issues with [crates.io], please feel free to open an issue in our [issue tracker](https://github.com/rust-lang/crates.io/issues). Our team will review and address these as fast as we can. + +For feature suggestions, enhancements, or general discussions about [crates.io], we encourage you to utilize [GitHub Discussions] instead. Visit the [Discussions tab][GitHub Discussions] to engage with the community, share your ideas, and participate in ongoing conversations. Your input is valuable in shaping the future of [crates.io], and we look forward to hearing your thoughts! + +## ☎️ Contact + +For any questions or inquiries about [crates.io], feel free to reach out to us via: + +- **Zulip:** [#t-crates-io](https://rust-lang.zulipchat.com/#narrow/stream/318791-t-crates-io/) +- **Email:** [help@crates.io](mailto:help@crates.io) +- **GitHub Discussions:** [rust-lang/crates.io][GitHub Discussions] + +We're here to help and eager to hear from you! + +## 🤗 Code of Conduct + +Respect and inclusivity are core values of the [Rust] community. Our [Code of Conduct] outlines the standards of behavior expected from all participants. By adhering to these guidelines, we aim to create a welcoming space where individuals from diverse backgrounds can collaborate and learn from one another. We appreciate your commitment to upholding these principles and fostering a positive community atmosphere. + +If you have a Code of Conduct concern, please contact the moderators using the links in the [Code of Conduct]. + +## ⚖️ License + +Licensed under either of these: + +- Apache License, Version 2.0, ([LICENSE-APACHE](./LICENSE-APACHE) or https://www.apache.org/licenses/LICENSE-2.0) +- MIT license ([LICENSE-MIT](./LICENSE-MIT) or https://opensource.org/licenses/MIT) + +[crates.io]: https://crates.io/ +[Rust]: https://www.rust-lang.org/ +[crates.io team]: https://www.rust-lang.org/governance/teams/crates-io +[Code of Conduct]: https://www.rust-lang.org/policies/code-of-conduct +[GitHub Discussions]: https://github.com/rust-lang/crates.io/discussions +[axum]: https://crates.io/crates/axum +[diesel]: https://crates.io/crates/diesel +[Ember.js]: https://emberjs.com/ diff --git a/collector/compile-benchmarks/crates.io/app/adapters/api-token.js b/collector/compile-benchmarks/crates.io/app/adapters/api-token.js new file mode 100644 index 000000000..68060ab82 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/adapters/api-token.js @@ -0,0 +1,19 @@ +import ApplicationAdapter from './application'; + +export default class ApiTokenAdapter extends ApplicationAdapter { + namespace = 'api/v1/me'; + + pathForType() { + return 'tokens'; + } + + createRecord(store, type, snapshot) { + let data = {}; + let serializer = store.serializerFor(type.modelName); + let url = this.buildURL(type.modelName, null, snapshot, 'createRecord'); + + serializer.serializeIntoHash(data, type, snapshot, { includeId: true }); + + return this.ajax(url, 'PUT', { data }); + } +} diff --git a/collector/compile-benchmarks/crates.io/app/adapters/application.js b/collector/compile-benchmarks/crates.io/app/adapters/application.js new file mode 100644 index 000000000..5798b0dd3 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/adapters/application.js @@ -0,0 +1,24 @@ +import RESTAdapter from '@ember-data/adapter/rest'; + +export default class ApplicationAdapter extends RESTAdapter { + namespace = 'api/v1'; + + isInvalid() { + // HTTP 422 errors are causing all sorts of issues within Ember Data, + // so we disable their special case handling here, since we don't need/want it. + return false; + } + + handleResponse(status, headers, payload, requestData) { + if (typeof payload === 'string') { + try { + payload = JSON.parse(payload); + } catch { + // if the payload can't be parsed as JSON then let's continue + // with the string payload + } + } + + return super.handleResponse(status, headers, payload, requestData); + } +} diff --git a/collector/compile-benchmarks/crates.io/app/adapters/category-slug.js b/collector/compile-benchmarks/crates.io/app/adapters/category-slug.js new file mode 100644 index 000000000..953c60862 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/adapters/category-slug.js @@ -0,0 +1,12 @@ +import { decamelize, underscore } from '@ember/string'; + +import { pluralize } from 'ember-inflector'; + +import ApplicationAdapter from './application'; + +export default class CategorySlugAdapter extends ApplicationAdapter { + pathForType(modelName) { + let decamelized = underscore(decamelize(modelName)); + return pluralize(decamelized); + } +} diff --git a/collector/compile-benchmarks/crates.io/app/adapters/crate-owner-invite.js b/collector/compile-benchmarks/crates.io/app/adapters/crate-owner-invite.js new file mode 100644 index 000000000..466d0c80b --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/adapters/crate-owner-invite.js @@ -0,0 +1,13 @@ +import ApplicationAdapter from './application'; + +export default class CrateOwnerInviteAdapter extends ApplicationAdapter { + namespace = 'api/v1/me'; + + pathForType() { + return 'crate_owner_invitations'; + } + + urlForQuery() { + return '/api/private/crate_owner_invitations'; + } +} diff --git a/collector/compile-benchmarks/crates.io/app/adapters/crate.js b/collector/compile-benchmarks/crates.io/app/adapters/crate.js new file mode 100644 index 000000000..e07647fa1 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/adapters/crate.js @@ -0,0 +1,65 @@ +import ApplicationAdapter from './application'; + +const BULK_REQUEST_GROUP_SIZE = 10; + +export default class CrateAdapter extends ApplicationAdapter { + coalesceFindRequests = true; + + findRecord(store, type, id, snapshot) { + return super.findRecord(store, type, id, setDefaultInclude(snapshot)); + } + + findHasMany(store, snapshot, url, relationship) { + if (relationship.key === 'version_downloads') { + // This ensures that related versions are included so we don't have to wait for versions + // request to finish for `belongsTo` relationships. + url += '?include=versions'; + } + return super.findHasMany(store, snapshot, url, relationship); + } + + queryRecord(store, type, query, adapterOptions) { + return super.queryRecord(store, type, setDefaultInclude(query), adapterOptions); + } + + /** Removes the `name` query parameter and turns it into a path parameter instead */ + urlForQueryRecord(query) { + let baseUrl = super.urlForQueryRecord(...arguments); + if (!query.name) { + return baseUrl; + } + + let crateName = query.name; + delete query.name; + return `${baseUrl}/${crateName}`; + } + + /** Adds a `message` query parameter to the URL, if set in the `adapterOptions`. */ + urlForDeleteRecord(id, modelName, snapshot) { + let url = super.urlForDeleteRecord(...arguments); + + let message = snapshot.adapterOptions.message; + if (message) { + url += `?message=${encodeURIComponent(message)}`; + } + + return url; + } + + groupRecordsForFindMany(store, snapshots) { + let result = []; + for (let i = 0; i < snapshots.length; i += BULK_REQUEST_GROUP_SIZE) { + result.push(snapshots.slice(i, i + BULK_REQUEST_GROUP_SIZE)); + } + return result; + } +} + +function setDefaultInclude(query) { + if (query.include === undefined) { + // This ensures `crate.versions` are always fetched from another request. + query.include = 'keywords,categories,downloads,default_version'; + } + + return query; +} diff --git a/collector/compile-benchmarks/crates.io/app/adapters/dependency.js b/collector/compile-benchmarks/crates.io/app/adapters/dependency.js new file mode 100644 index 000000000..c149e9150 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/adapters/dependency.js @@ -0,0 +1,11 @@ +import ApplicationAdapter from './application'; + +export default class DependencyAdapter extends ApplicationAdapter { + query(store, type, query) { + let { crate, reverse, ...data } = query; + + return reverse + ? this.ajax(`/${this.urlPrefix()}/crates/${crate.id}/reverse_dependencies`, 'GET', { data }) + : super.query(...arguments); + } +} diff --git a/collector/compile-benchmarks/crates.io/app/adapters/team.js b/collector/compile-benchmarks/crates.io/app/adapters/team.js new file mode 100644 index 000000000..fff7377c4 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/adapters/team.js @@ -0,0 +1,8 @@ +import ApplicationAdapter from './application'; + +export default class TeamAdapter extends ApplicationAdapter { + queryRecord(store, type, query) { + let url = this.urlForFindRecord(query.team_id, 'team'); + return this.ajax(url, 'GET'); + } +} diff --git a/collector/compile-benchmarks/crates.io/app/adapters/user.js b/collector/compile-benchmarks/crates.io/app/adapters/user.js new file mode 100644 index 000000000..20e85d1b4 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/adapters/user.js @@ -0,0 +1,8 @@ +import ApplicationAdapter from './application'; + +export default class UserAdapter extends ApplicationAdapter { + queryRecord(store, type, query) { + let url = this.urlForFindRecord(query.user_id, 'user'); + return this.ajax(url, 'GET'); + } +} diff --git a/collector/compile-benchmarks/crates.io/app/adapters/version.js b/collector/compile-benchmarks/crates.io/app/adapters/version.js new file mode 100644 index 000000000..8c499bfdd --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/adapters/version.js @@ -0,0 +1,28 @@ +import ApplicationAdapter from './application'; + +export default class VersionAdapter extends ApplicationAdapter { + urlForUpdateRecord(id, modelName, snapshot) { + let crateName = snapshot.record.crate.id; + let num = snapshot.record.num; + return `/${this.namespace}/crates/${crateName}/${num}`; + } + + urlForQuery(query) { + let { name } = query ?? {}; + let baseUrl = this.buildURL('crate', name); + let url = `${baseUrl}/versions`; + // The following used to remove them from URL's query string. + delete query.name; + return url; + } + + urlForQueryRecord(query) { + let { name, num } = query ?? {}; + let baseUrl = this.buildURL('crate', name); + let url = `${baseUrl}/${num}`; + // The following used to remove them from URL's query string. + delete query.name; + delete query.num; + return url; + } +} diff --git a/collector/compile-benchmarks/crates.io/app/app.js b/collector/compile-benchmarks/crates.io/app/app.js new file mode 100644 index 000000000..f38b750bc --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/app.js @@ -0,0 +1,25 @@ +import Application from '@ember/application'; + +import loadInitializers from 'ember-load-initializers'; +import Resolver from 'ember-resolver'; + +import config from './config/environment'; +import * as Sentry from './sentry'; + +// eslint-disable-next-line unicorn/prefer-add-event-listener +window.onerror = undefined; +Sentry.init(); + +export default class App extends Application { + modulePrefix = config.modulePrefix; + podModulePrefix = config.podModulePrefix; + Resolver = Resolver; + + customEvents = { + // prevent non-passive listeners for touchstart/touchmove events + touchstart: null, + touchmove: null, + }; +} + +loadInitializers(App, config.modulePrefix); diff --git a/collector/compile-benchmarks/crates.io/app/components/color-scheme-menu.hbs b/collector/compile-benchmarks/crates.io/app/components/color-scheme-menu.hbs new file mode 100644 index 000000000..f94463382 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/color-scheme-menu.hbs @@ -0,0 +1,21 @@ + + + {{svg-jar this.icon local-class="icon"}} + Change color scheme + + + + {{#each this.colorSchemes as |colorScheme|}} + + + + {{/each}} + + \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/color-scheme-menu.js b/collector/compile-benchmarks/crates.io/app/components/color-scheme-menu.js new file mode 100644 index 000000000..3d86a373f --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/color-scheme-menu.js @@ -0,0 +1,17 @@ +import { service } from '@ember/service'; +import Component from '@glimmer/component'; + +export default class Header extends Component { + /** @type {import("../services/dark-mode").default} */ + @service colorScheme; + + colorSchemes = [ + { mode: 'light', svg: 'sun' }, + { mode: 'dark', svg: 'moon' }, + { mode: 'system', svg: 'color-mode' }, + ]; + + get icon() { + return this.colorSchemes.find(({ mode }) => mode === this.colorScheme.scheme)?.svg; + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/color-scheme-menu.module.css b/collector/compile-benchmarks/crates.io/app/components/color-scheme-menu.module.css new file mode 100644 index 000000000..39b839e7d --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/color-scheme-menu.module.css @@ -0,0 +1,30 @@ +.dropdown { + line-height: 1rem; +} + +.icon { + width: 1.4em; + height: auto; +} + +.trigger { + background: none; + border: 0; + padding: 0; +} + +.menu { + right: 0; + min-width: max-content; +} + +.menu-button { + align-items: center; + gap: var(--space-2xs); + cursor: pointer; + text-transform: capitalize; +} + +.selected { + background: light-dark(#e6e6e6, #404040); +} diff --git a/collector/compile-benchmarks/crates.io/app/components/copy-button.hbs b/collector/compile-benchmarks/crates.io/app/components/copy-button.hbs new file mode 100644 index 000000000..cae9419a9 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/copy-button.hbs @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/copy-button.js b/collector/compile-benchmarks/crates.io/app/components/copy-button.js new file mode 100644 index 000000000..184d85217 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/copy-button.js @@ -0,0 +1,18 @@ +import { service } from '@ember/service'; +import Component from '@glimmer/component'; + +import { restartableTask } from 'ember-concurrency'; + +export default class CrateTomlCopy extends Component { + @service notifications; + + copyTask = restartableTask(async () => { + let { copyText } = this.args; + try { + await navigator.clipboard.writeText(copyText); + this.notifications.success('Copied to clipboard!'); + } catch { + this.notifications.error('Copy to clipboard failed!'); + } + }); +} diff --git a/collector/compile-benchmarks/crates.io/app/components/crate-downloads-list.hbs b/collector/compile-benchmarks/crates.io/app/components/crate-downloads-list.hbs new file mode 100644 index 000000000..058585e31 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/crate-downloads-list.hbs @@ -0,0 +1,11 @@ + diff --git a/collector/compile-benchmarks/crates.io/app/components/crate-downloads-list.module.css b/collector/compile-benchmarks/crates.io/app/components/crate-downloads-list.module.css new file mode 100644 index 000000000..688262076 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/crate-downloads-list.module.css @@ -0,0 +1,24 @@ +.list { + list-style: none; + padding: 0; + margin: 0; + + > * + * { + margin-top: var(--space-2xs); + } +} + +.link { + color: light-dark(#525252, #999999); + background-color: light-dark(#edebdd, #141413); + font-size: 90%; + padding: var(--space-s) var(--space-xs); + display: flex; + align-items: center; +} + +.download-icon { + color: #b13b89; + margin-left: auto; + margin-right: var(--space-3xs); +} diff --git a/collector/compile-benchmarks/crates.io/app/components/crate-header.hbs b/collector/compile-benchmarks/crates.io/app/components/crate-header.hbs new file mode 100644 index 000000000..4e0ab00d8 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/crate-header.hbs @@ -0,0 +1,80 @@ + +

+ {{@crate.name}} + {{#if @version}} + v{{@version.num}} + + {{#if @version.yanked}} + + {{svg-jar "trash"}} + Yanked + + + This crate has been yanked, but it is still available for download for other crates that + may be depending on it. + + + {{/if}} + {{/if}} +

+ + {{#if @crate.description}} +
+ {{@crate.description}} +
+ {{/if}} + + {{#if this.keywords}} +
    + {{#each this.keywords as |keyword|}} +
  • + + #{{keyword.id}} + +
  • + {{/each}} +
+ {{/if}} + + {{#if this.session.currentUser}} + + {{/if}} +
+ + + + Readme + + + + {{pluralize @crate.num_versions "Version"}} + + + + Dependencies + + + + Dependents + + + {{#if this.isOwner}} + + Settings + + {{/if}} + \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/crate-header.js b/collector/compile-benchmarks/crates.io/app/components/crate-header.js new file mode 100644 index 000000000..b5d76c9d1 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/crate-header.js @@ -0,0 +1,28 @@ +import { service } from '@ember/service'; +import Component from '@glimmer/component'; + +import { task } from 'ember-concurrency'; +import { alias } from 'macro-decorators'; + +export default class CrateHeader extends Component { + @service session; + + @alias('loadKeywordsTask.last.value') keywords; + + constructor() { + super(...arguments); + + this.loadKeywordsTask.perform().catch(() => { + // ignore all errors and just don't display keywords if the request fails + }); + } + + get isOwner() { + let userId = this.session.currentUser?.id; + return this.args.crate?.hasOwnerUser(userId) ?? false; + } + + loadKeywordsTask = task(async () => { + return (await this.args.crate?.keywords) ?? []; + }); +} diff --git a/collector/compile-benchmarks/crates.io/app/components/crate-header.module.css b/collector/compile-benchmarks/crates.io/app/components/crate-header.module.css new file mode 100644 index 000000000..ed31269b4 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/crate-header.module.css @@ -0,0 +1,83 @@ +.heading { + display: flex; + align-items: baseline; + flex-wrap: wrap; + gap: var(--space-xs); + margin: 0; + padding: 0; + word-break: break-word; + + small { + color: var(--main-color-light); + } +} + +.yanked-badge { + background: #d30000; + border-radius: 99999px; + padding: var(--space-3xs) var(--space-s); + font-size: var(--space-s); + color: white; + align-self: center; + display: inline-flex; + align-items: center; + gap: var(--space-3xs); + white-space: nowrap; + cursor: default; + + svg { + width: 1em; + height: 1em; + flex-shrink: 0; + } +} + +.description { + margin-top: var(--space-xs); + line-height: 1.35; +} + +.keywords { + list-style: none; + margin: var(--space-xs) 0 0; + padding: 0; + + > * { + display: inline; + + + * { + margin-left: var(--space-s); + } + } +} + +.hash { + margin-right: 1px; + font-family: var(--font-monospace); + font-size: 90%; +} + +.follow-button { + margin-top: var(--space-s); +} + +.nav { + margin-bottom: var(--space-s); +} + +@media only screen and (min-width: 751px) { + .header { + display: grid; + grid-template-columns: 1fr auto; + } + + .follow-button { + margin: -10px -10px 0 var(--space-s); + grid-column: 2; + grid-row: 1; + } + + .description, .keywords { + grid-column: 1 / 3; + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/crate-list.hbs b/collector/compile-benchmarks/crates.io/app/components/crate-list.hbs new file mode 100644 index 000000000..c7810f976 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/crate-list.hbs @@ -0,0 +1,10 @@ +
+ {{!-- The extra div wrapper is needed for specificity issues with `margin` --}} +
    + {{#each @crates as |crate index|}} +
  1. + +
  2. + {{/each}} +
+
\ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/crate-list.module.css b/collector/compile-benchmarks/crates.io/app/components/crate-list.module.css new file mode 100644 index 000000000..76b10aa5b --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/crate-list.module.css @@ -0,0 +1,9 @@ +.list { + margin: 0; + padding: 0; + list-style: none; + + > * + * { + margin-top: var(--space-s); + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/crate-row.hbs b/collector/compile-benchmarks/crates.io/app/components/crate-row.hbs new file mode 100644 index 000000000..6ce0ad12b --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/crate-row.hbs @@ -0,0 +1,73 @@ +
+
+
+ {{#let (link "crate" @crate.id) as |l|}} + + {{@crate.name}} + + {{/let}} + {{#if (and @crate.default_version (not @crate.yanked))}} + v{{@crate.default_version}} + + {{svg-jar "copy" alt="Copy Cargo.toml snippet to clipboard"}} + + {{/if}} +
+
+ {{ truncate-text @crate.description }} +
+
+
+
+ {{svg-jar "download" local-class="download-icon"}} + + + All-Time: + + + {{ format-num @crate.downloads }} + +
+
+ {{svg-jar "download" local-class="download-icon"}} + + + Recent: + + + {{ format-num @crate.recent_downloads }} + +
+
+ {{svg-jar "latest-updates" height="32" width="32"}} + + + Updated: + + + + +
+
+
    + {{#if @crate.homepage}} +
  • Homepage
  • + {{/if}} + {{#if @crate.documentation}} +
  • Documentation
  • + {{/if}} + {{#if @crate.repository}} +
  • Repository
  • + {{/if}} +
+ +
\ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/crate-row.module.css b/collector/compile-benchmarks/crates.io/app/components/crate-row.module.css new file mode 100644 index 000000000..df9e9a6b9 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/crate-row.module.css @@ -0,0 +1,128 @@ +.crate-row { + --shadow: 0 1px 3px light-dark(hsla(51, 90%, 42%, .35), #232321); + + display: flex; + flex-wrap: wrap; + padding: var(--space-s-m) var(--space-m-l); + background-color: light-dark(white, #141413); + border-radius: var(--space-3xs); + box-shadow: var(--shadow); +} + +.description-box { + display: flex; + flex-direction: column; + width: 70%; +} + +.name { + color: var(--main-color); + font-weight: bold; + text-decoration: none; + font-size: 120%; + overflow-wrap: break-word; +} + +.copy-button { + color: var(--main-color); + cursor: pointer; + + /* Hover selector for pointer only */ + /* See: https://github.com/rust-lang/crates.io/issues/10772 */ + @media (pointer: fine) { + opacity: 0; + transition: var(--transition-medium); + + .crate-row:hover & { + opacity: .8; + transition: var(--transition-instant); + } + + .crate-row:hover &:hover, &:focus { + opacity: 1; + transition: var(--transition-instant); + } + } + + svg { + vertical-align: top; + height: 1rem; + width: 1rem; + } +} + +.crate-spec { + display: flex; + flex-wrap: wrap; + align-items: center; + + & > * { + margin-bottom: calc(var(--space-xs) / 2); + } + & > :not(last-child) { + margin-right: var(--space-2xs); + } +} + +.description { + margin-top: calc(var(--space-xs) / 2); + line-height: 1.5; +} + +.stats { + width: 30%; + color: var(--main-color-light); + + > * + * { + margin-top: var(--space-xs); + } + + svg { + height: 1em; + width: 1em; + margin-right: var(--space-xs); + + flex-shrink: 0; + + &.download-icon { + height: calc(1em + 20px); + width: calc(1em + 20px); + margin: -10px; + margin-right: calc(var(--space-xs) - 10px); + + circle { + fill: none; + } + } + } +} + +.downloads { + display: flex; + align-items: center; +} + +.recent-downloads { + display: flex; + align-items: center; +} + +.updated-at { + display: flex; + align-items: center; +} + +ul.quick-links { + display: flex; + flex-direction: row; + flex-wrap: wrap; + + font-size: 80%; + list-style-type: none; + margin: var(--space-xs) 0 0 0; + padding: 0; + + > * + * { + margin-left: var(--space-xs); + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/crate-sidebar.hbs b/collector/compile-benchmarks/crates.io/app/components/crate-sidebar.hbs new file mode 100644 index 000000000..6d62d7b95 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/crate-sidebar.hbs @@ -0,0 +1,146 @@ +
+
+

Metadata

+ + + + {{#if @version.rust_version}} +
+ {{svg-jar "rust"}} + +
+ {{else if @version.edition}} +
+ {{svg-jar "rust"}} + +
+ {{/if}} + + {{#if @version.license}} +
+ {{svg-jar "license"}} + + + +
+ {{/if}} + + {{#if @version.crate_size}} +
+ {{svg-jar "weight"}} + {{pretty-bytes @version.crate_size}} +
+ {{/if}} +
+ + {{#unless @version.yanked}} +
+

Install

+ + +
+ {{/unless}} + + {{#if (or this.showHomepage @version.documentationLink @crate.repository)}} +
+ {{#if this.showHomepage}} + + {{/if}} + + {{#if @version.documentationLink}} + + {{/if}} + + {{#if @crate.repository}} + + {{/if}} +
+ {{/if}} + +
+

Owners

+ +
+ + {{#unless @crate.categories.isPending}} + {{#if @crate.categories.length}} +
+

Categories

+
    + {{#each @crate.categories as |category|}} +
  • + {{category.category}} +
  • + {{/each}} +
+
+ {{/if}} + {{/unless}} + +
+ {{#if this.playgroundLink}} + + Try on Rust Playground + + {{#if this.canHover}} + + {{/if}} + + {{#unless this.canHover}} +

+ The top 100 crates are available on the Rust Playground for you to + try out directly in your browser. +

+ {{/unless}} + {{/if}} + + + Report crate + +
+
\ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/crate-sidebar.js b/collector/compile-benchmarks/crates.io/app/components/crate-sidebar.js new file mode 100644 index 000000000..bb88e6139 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/crate-sidebar.js @@ -0,0 +1,42 @@ +import { service } from '@ember/service'; +import Component from '@glimmer/component'; + +import { didCancel } from 'ember-concurrency'; + +import { simplifyUrl } from './crate-sidebar/link'; + +export default class CrateSidebar extends Component { + @service playground; + @service sentry; + + get showHomepage() { + let { repository, homepage } = this.args.crate; + return homepage && (!repository || simplifyUrl(repository) !== simplifyUrl(homepage)); + } + + get playgroundLink() { + let playgroundCrates = this.playground.crates; + if (!playgroundCrates) return; + + let playgroundCrate = playgroundCrates.find(it => it.name === this.args.crate.name); + if (!playgroundCrate) return; + + return `https://play.rust-lang.org/?edition=2021&code=use%20${playgroundCrate.id}%3B%0A%0Afn%20main()%20%7B%0A%20%20%20%20%2F%2F%20try%20using%20the%20%60${playgroundCrate.id}%60%20crate%20here%0A%7D`; + } + + get canHover() { + return window?.matchMedia('(hover: hover)').matches; + } + + constructor() { + super(...arguments); + + // load Rust Playground crates list, if necessary + this.playground.loadCrates().catch(error => { + if (!(didCancel(error) || error.isServerError || error.isNetworkError)) { + // report unexpected errors to Sentry + this.sentry.captureException(error); + } + }); + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/crate-sidebar.module.css b/collector/compile-benchmarks/crates.io/app/components/crate-sidebar.module.css new file mode 100644 index 000000000..4468a0256 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/crate-sidebar.module.css @@ -0,0 +1,80 @@ +.sidebar { + display: flex; + flex-direction: column; + + > * + * { + margin-top: var(--space-m); + } +} + +.heading { + font-size: 1.17em; + margin: 0 0 var(--space-s); +} + +.metadata { + > * + * { + margin-top: var(--space-2xs); + } +} + +.date, +.msrv, +.edition, +.license, +.bytes { + display: flex; + align-items: center; + + svg { + flex-shrink: 0; + margin-right: var(--space-2xs); + height: 1em; + width: auto; + } +} + +.date, +.msrv, +.edition { + > span { + cursor: help; + } +} + +.license { + a { + color: var(--main-color); + } +} + +.bytes { + font-variant-numeric: tabular-nums; +} + +.links { + > * + * { + margin-top: var(--space-m); + } +} + +.categories { + margin: 0; + padding-left: 20px; + line-height: 1.5; +} + +.report-button, .playground-button { + justify-content: center; + width: 220px; +} + +.playground-button { + margin-bottom: var(--space-2xs); +} + +.playground-help { + max-width: 220px; + text-align: justify; + line-height: 1.3em; +} diff --git a/collector/compile-benchmarks/crates.io/app/components/crate-sidebar/install-instructions.hbs b/collector/compile-benchmarks/crates.io/app/components/crate-sidebar/install-instructions.hbs new file mode 100644 index 000000000..f665f3d50 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/crate-sidebar/install-instructions.hbs @@ -0,0 +1,82 @@ +{{#if @binNames}} + {{#if (is-clipboard-supported)}} + + {{this.cargoInstallCommand}} + {{svg-jar "copy" aria-hidden="true" local-class="copy-icon"}} + + {{else}} + + {{this.cargoInstallCommand}} + + {{/if}} + +

+ {{#if (eq @binNames.length 1)}} + Running the above command will globally install the + {{get @binNames 0}} + binary. + {{else if (eq @binNames.length 2)}} + Running the above command will globally install the + {{get @binNames 0}} + and + {{get @binNames 1}} + binaries. + {{else}} + Running the above command will globally install these binaries: + {{#each @binNames as |binName index|~}} + {{~#if (eq index 0)~}} + {{binName}} + {{~else if (eq index (sum @binNames.length -1))}} + and {{binName}} + {{~else~}} + , {{binName}} + {{~/if}} + {{~/each}} + {{/if}} +

+ +{{/if}} + +{{#if (and @hasLib @binNames)}} +

Install as library

+{{/if}} + +{{#if @hasLib}} +

Run the following Cargo command in your project directory:

+ + {{#if (is-clipboard-supported)}} + + {{this.cargoAddCommand}} + {{svg-jar "copy" aria-hidden="true" local-class="copy-icon"}} + + {{else}} + + {{this.cargoAddCommand}} + + {{/if}} + +

Or add the following line to your Cargo.toml:

+ + {{#if (is-clipboard-supported)}} + + {{this.tomlSnippet}} + {{svg-jar "copy" aria-hidden="true" local-class="copy-icon"}} + + {{else}} + + {{this.tomlSnippet}} + + {{/if}} +{{/if}} \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/crate-sidebar/install-instructions.js b/collector/compile-benchmarks/crates.io/app/components/crate-sidebar/install-instructions.js new file mode 100644 index 000000000..e6a8ec185 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/crate-sidebar/install-instructions.js @@ -0,0 +1,21 @@ +import Component from '@glimmer/component'; + +export default class InstallInstructions extends Component { + get cargoInstallCommand() { + return this.args.exactVersion + ? `cargo install ${this.args.crate}@${this.args.version}` + : `cargo install ${this.args.crate}`; + } + + get cargoAddCommand() { + return this.args.exactVersion + ? `cargo add ${this.args.crate}@=${this.args.version}` + : `cargo add ${this.args.crate}`; + } + + get tomlSnippet() { + let version = this.args.version.split('+')[0]; + let exact = this.args.exactVersion ? '=' : ''; + return `${this.args.crate} = "${exact}${version}"`; + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/crate-sidebar/install-instructions.module.css b/collector/compile-benchmarks/crates.io/app/components/crate-sidebar/install-instructions.module.css new file mode 100644 index 000000000..f6258b4b9 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/crate-sidebar/install-instructions.module.css @@ -0,0 +1,63 @@ +.copy-help { + font-size: 12px; + overflow-wrap: break-word; + + &:last-child { + margin-bottom: 0; + } +} + +.copy-button, +.copy-fallback { + display: flex; + width: 100%; + align-items: center; + justify-content: space-between; + padding: var(--space-2xs) var(--space-xs); + font-family: var(--font-monospace); + font-size: 14px; + line-height: 1.5em; + color: var(--main-color); + background: transparent; + border-radius: var(--space-3xs); + border: solid var(--space-4xs) var(--gray-border); + + span { + flex: auto; + display: block; + word-break: break-word; + } +} + +.copy-button { + text-align: start; + cursor: pointer; + + &:hover { + background-color: light-dark(white, #141413); + } +} + +.copy-icon { + flex-shrink: 0; + height: 1.1em; + width: auto; + /* for slightly nicer alignment... */ + margin-top: -3px; + margin-left: var(--space-2xs); + opacity: 0; + transition: opacity var(--transition-fast); + + .copy-button:hover & { + opacity: 1; + } +} + +.selectable { + user-select: text; +} + +.bin-name { + font-family: var(--font-monospace); + font-weight: bold; +} diff --git a/collector/compile-benchmarks/crates.io/app/components/crate-sidebar/link.hbs b/collector/compile-benchmarks/crates.io/app/components/crate-sidebar/link.hbs new file mode 100644 index 000000000..70e668bd1 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/crate-sidebar/link.hbs @@ -0,0 +1,16 @@ +
+

{{@title}}

+
+ {{#if this.isDocsRs}} + {{svg-jar "docs-rs" local-class="icon" data-test-icon="docs-rs"}} + {{else if this.isGitHub}} + {{svg-jar "github" local-class="icon" data-test-icon="github"}} + {{else}} + {{svg-jar "link" local-class="icon" data-test-icon="link"}} + {{/if}} + + + {{this.text}} + +
+
\ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/crate-sidebar/link.js b/collector/compile-benchmarks/crates.io/app/components/crate-sidebar/link.js new file mode 100644 index 000000000..687d1c614 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/crate-sidebar/link.js @@ -0,0 +1,33 @@ +import Component from '@glimmer/component'; + +export default class CrateSidebarLink extends Component { + get text() { + let { url } = this.args; + return simplifyUrl(url); + } + + get isDocsRs() { + return this.text.startsWith('docs.rs/'); + } + + get isGitHub() { + return this.text.startsWith('github.com/'); + } +} + +export function simplifyUrl(url) { + if (url.startsWith('https://')) { + url = url.slice('https://'.length); + } + if (url.startsWith('www.')) { + url = url.slice('www.'.length); + } + if (url.endsWith('/')) { + url = url.slice(0, -1); + } + if (url.startsWith('github.com/') && url.endsWith('.git')) { + url = url.slice(0, -4); + } + + return url; +} diff --git a/collector/compile-benchmarks/crates.io/app/components/crate-sidebar/link.module.css b/collector/compile-benchmarks/crates.io/app/components/crate-sidebar/link.module.css new file mode 100644 index 000000000..b149ab52e --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/crate-sidebar/link.module.css @@ -0,0 +1,22 @@ +.content { + display: flex; + align-items: center; +} + +.title { + font-size: 1.17em; + margin: 0 0 var(--space-s); +} + +.icon { + flex-shrink: 0; + height: 1em; + width: auto; + margin-right: var(--space-2xs); +} + +.link { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} diff --git a/collector/compile-benchmarks/crates.io/app/components/dependency-list/row.hbs b/collector/compile-benchmarks/crates.io/app/components/dependency-list/row.hbs new file mode 100644 index 000000000..bf115196a --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/dependency-list/row.hbs @@ -0,0 +1,67 @@ +
+ + {{format-req @dependency.req}} + + +
+
+ + {{format-req @dependency.req}} + + + + {{@dependency.crate_id}} + + + {{#if @dependency.optional}} + + optional + + {{/if}} + + {{#if this.featuresDescription}} + + {{this.featuresDescription}} + + +
    +
  • + {{svg-jar (if @dependency.default_features "checkbox" "checkbox-empty")}} default features +
  • + {{#each @dependency.features as |feature|}} +
  • + {{svg-jar "checkbox"}} {{feature}} +
  • + {{/each}} +
+
+
+ {{/if}} +
+ + {{#if (or this.description this.loadCrateTask.isRunning)}} +
+ {{#if this.loadCrateTask.isRunning}} + + {{else}} + {{this.description}} + {{/if}} +
+ {{/if}} +
+
\ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/dependency-list/row.js b/collector/compile-benchmarks/crates.io/app/components/dependency-list/row.js new file mode 100644 index 000000000..f9c2243c9 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/dependency-list/row.js @@ -0,0 +1,46 @@ +import { action } from '@ember/object'; +import { service } from '@ember/service'; +import Component from '@glimmer/component'; +import { tracked } from '@glimmer/tracking'; + +import { task } from 'ember-concurrency'; + +export default class VersionRow extends Component { + @service store; + + @tracked focused = false; + + @action setFocused(value) { + this.focused = value; + } + + constructor() { + super(...arguments); + + this.loadCrateTask.perform().catch(() => { + // ignore all errors and just don't display a description if the request fails + }); + } + + get description() { + return this.loadCrateTask.lastSuccessful?.value?.description; + } + + get featuresDescription() { + let { default_features: defaultFeatures, features } = this.args.dependency; + let numFeatures = features.length; + + if (numFeatures !== 0) { + return defaultFeatures + ? `${numFeatures} extra feature${numFeatures > 1 ? 's' : ''}` + : `only ${numFeatures} feature${numFeatures > 1 ? 's' : ''}`; + } else if (!defaultFeatures) { + return 'no default features'; + } + } + + loadCrateTask = task(async () => { + let { dependency } = this.args; + return await this.store.findRecord('crate', dependency.crate_id); + }); +} diff --git a/collector/compile-benchmarks/crates.io/app/components/dependency-list/row.module.css b/collector/compile-benchmarks/crates.io/app/components/dependency-list/row.module.css new file mode 100644 index 000000000..0000a6689 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/dependency-list/row.module.css @@ -0,0 +1,151 @@ +.row { + --bg-color: var(--grey200); + --hover-bg-color: light-dark(hsl(217, 37%, 98%), hsl(204, 3%, 11%)); + --range-color: light-dark(var(--grey900), #d1cfc7); + --crate-color: light-dark(var(--grey700), #d1cfc7); + --placeholder-opacity: 0.35; + --shadow: 0 1px 3px light-dark(hsla(51, 90%, 42%, .35), #232321); + + display: flex; + align-items: center; + position: relative; + font-size: 18px; + padding: var(--space-s) var(--space-m); + background-color: light-dark(white, #141413); + border-radius: var(--space-3xs); + box-shadow: var(--shadow); + transition: all var(--transition-slow); + + &:hover, &.focused { + background-color: var(--hover-bg-color); + transition: all var(--transition-instant); + } + + &.focused { + box-shadow: 0 0 0 3px var(--yellow500), var(--shadow); + } + + &.optional { + --range-color: light-dark(var(--grey600), var(--grey600)); + --crate-color: light-dark(var(--grey600), var(--grey600)); + --placeholder-opacity: 0.15; + } + + [title], .features-label { + position: relative; + z-index: 1; + cursor: help; + } + + @media only screen and (max-width: 550px) { + display: block + } +} + +.tooltip { + word-break: break-all; +} + +.range-lg, .range-sm { + margin-right: var(--space-s); + min-width: 100px; + color: var(--range-color); + font-variant: tabular-nums; +} + +.range-lg { + @media only screen and (max-width: 550px) { + display: none; + } +} + +.range-sm { + @media only screen and (min-width: 551px) { + display: none; + } +} + +.right { + flex-grow: 1; +} + +.link { + color: var(--crate-color); + font-weight: 500; + margin-right: var(--space-s); + outline: none; + + &:hover { + color: var(--crate-color); + } + + &::after { + content: ''; + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; + } +} + +.optional-label, .features-label { + color: var(--grey600); + text-transform: uppercase; + letter-spacing: .7px; + font-size: 13px; + margin-right: var(--space-s); + + a { + position: relative; + color: var(--grey600); + + &:hover { + color: var(--grey900); + } + } + + svg { + height: 1em; + width: auto; + margin-right: var(--space-4xs); + margin-bottom: -.1em; + } + + .tooltip { + text-transform: none; + letter-spacing: normal; + } + + @media only screen and (max-width: 550px) { + display: block; + margin-top: var(--space-xs); + } +} + +.feature-list { + padding: 0; + margin: var(--space-2xs) var(--space-3xs); + list-style: none; + + svg { + height: 1em; + width: auto; + margin-right: 2px; + margin-bottom: -.1em; + } +} + +.description { + margin-top: var(--space-xs); + color: var(--crate-color); + font-size: 90%; + line-height: 1.5; +} + +.description-placeholder { + height: 1em; + width: 70%; + border-radius: var(--space-3xs); + opacity: var(--placeholder-opacity); +} diff --git a/collector/compile-benchmarks/crates.io/app/components/download-graph.hbs b/collector/compile-benchmarks/crates.io/app/components/download-graph.hbs new file mode 100644 index 000000000..5e876b77c --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/download-graph.hbs @@ -0,0 +1,30 @@ +{{!-- template-lint-disable no-at-ember-render-modifiers --}} +
+ {{#if this.chartjs.loadTask.isRunning}} + + {{else if this.chartjs.loadTask.lastSuccessful.value}} + + {{else}} +
+

Sorry, there was a problem loading the graphing code.

+ +
+ {{/if}} +
\ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/download-graph.js b/collector/compile-benchmarks/crates.io/app/components/download-graph.js new file mode 100644 index 000000000..2e30d0270 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/download-graph.js @@ -0,0 +1,239 @@ +import { action } from '@ember/object'; +import { service } from '@ember/service'; +import { waitForPromise } from '@ember/test-waiters'; +import Component from '@glimmer/component'; + +import { addMinutes, subDays as brokenSubDays, subMinutes } from 'date-fns'; +import window from 'ember-window-mock'; +import semverSort from 'semver/functions/sort'; + +// Colors by http://colorbrewer2.org/#type=diverging&scheme=RdBu&n=10 +const COLORS = ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#92c5de', '#4393c3', '#2166ac', '#053061']; +const BG_COLORS = ['#d3b5bc', '#eabdc0', '#f3d0ca', '#fce4d9', '#deedf5', '#c9deed', '#2166ac', '#053061']; + +const ONE_DAY = 24 * 60 * 60 * 1000; + +export default class DownloadGraph extends Component { + @service chartjs; + @service colorScheme; + + @action loadChartJs() { + waitForPromise(this.chartjs.loadTask.perform()).catch(() => { + // Ignore Promise rejections. We'll handle them through the derived state properties. + }); + } + + get fontColor() { + return this.colorScheme.isDark ? '#ADBABD' : '#666'; + } + + get borderColor() { + return this.colorScheme.isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)'; + } + + @action createChart(element) { + let Chart = this.chartjs.loadTask.lastSuccessful.value; + + let { fontColor: color, borderColor } = this; + + this.chart = new Chart(element, { + type: 'line', + data: this.data, + options: { + color, + maintainAspectRatio: false, + layout: { + padding: 10, + }, + scales: { + x: { + type: 'time', + time: { tooltipFormat: 'MMM d', unit: 'day' }, + ticks: { maxTicksLimit: 13, color }, + grid: { color: borderColor }, + }, + y: { + beginAtZero: true, + stacked: true, + ticks: { precision: 0, color }, + grid: { color: borderColor }, + }, + }, + interaction: { + mode: 'index', + intersect: false, + position: 'nearest', + }, + }, + }); + } + + @action updateColorScheme() { + let { chart } = this; + + if (chart) { + let { fontColor, borderColor } = this; + chart.options.color = fontColor; + chart.options.scales.x.ticks.color = fontColor; + chart.options.scales.x.grid.color = borderColor; + chart.options.scales.y.ticks.color = fontColor; + chart.options.scales.y.grid.color = borderColor; + chart.update(); + } + } + + @action updateChart() { + let { chart } = this; + + if (chart) { + chart.data = this.data; + chart.update(); + } + } + + @action updateStacked() { + let { chart, data } = this; + + if (chart) { + data.dataset = data.datasets.map(d => { + d.fill = this.args.stacked ? 'origin' : false; + chart.options.scales.y.stacked = this.args.stacked; + return d; + }); + chart.data = data; + chart.update(); + } + } + + @action destroyChart() { + this.chart?.destroy(); + } + + @action reloadPage() { + window.location.reload(); + } + + get data() { + return toChartData(this.args.data, this.args.versions); + } +} + +export function toChartData(data) { + if (!data) { + return { datasets: [] }; + } + + let extra = data.meta?.extra_downloads ?? []; + + let dates = {}; + let versions = new Map(); + let crate = null; + + let now = new Date(); + for (let i = 0; i < 90; i++) { + let date = subDays(now, i); + dates[date.toISOString().slice(0, 10)] = { date, cnt: {} }; + } + + data.forEach(d => { + let version = d.version; + if (!version) return; + + let version_num = version.num; + + versions.set(version_num, version); + + if (version.crate) { + crate = version.crate; + } + + let key = d.date; + if (dates[key]) { + let prev = dates[key].cnt[version_num] || 0; + dates[key].cnt[version_num] = prev + d.downloads; + } + }); + + extra.forEach(d => { + let key = d.date; + if (dates[key]) { + let prev = dates[key].cnt['Other'] || 0; + dates[key].cnt['Other'] = prev + d.downloads; + } + }); + + let versionsList = [...versions.keys()]; + try { + semverSort(versionsList, { loose: true }); + } catch { + // Catches exceptions thrown when a version number is invalid + // see issue #3295 + } + + if (extra.length !== 0) { + versionsList.unshift('Other'); + } + + let rows = Object.keys(dates).map(date => [ + dates[date].date, + ...versionsList.map(version => dates[date].cnt[version] || 0), + ]); + + let datasets = versionsList + .map((label, index) => { + let data = rows.map(row => ({ x: row[0], y: row[index + 1] })); + + // if we find a corresponding version + let version = versions.get(label); + if (version?.created_at) { + // only show downloads from the day before the release until today + let threshold = midnightForDate(version.created_at) - ONE_DAY; + data = data.filter(it => midnightForDate(it.x) >= threshold); + } + + // if we find a corresponding crate + if (crate?.created_at) { + // only show downloads from the day before the first release until today + let threshold = midnightForDate(crate.created_at) - ONE_DAY; + data = data.filter(it => midnightForDate(it.x) >= threshold); + } + + return { data, label }; + }) + .reverse() + .map(({ label, data }, index) => { + return { + backgroundColor: BG_COLORS[index], + borderColor: COLORS[index], + borderWidth: 2, + cubicInterpolationMode: 'monotone', + data: data, + // TODO figure out why this doesn't work. is it a chart.js bug? + fill: 'origin', + label: label, + pointHoverBorderWidth: 2, + pointHoverRadius: 5, + }; + }); + + return { datasets }; +} + +function midnightForDate(date) { + return Date.parse(date.toISOString().slice(0, 10)); +} + +// This works around a bug in date-fn's subDays() function when crossing a DST +// transition: https://github.com/date-fns/date-fns/issues/571 +// +// The specific implementation is based on @bertho-zero's here: +// https://github.com/date-fns/date-fns/issues/571#issuecomment-602496322 +function subDays(date, amount) { + const originalTZO = date.getTimezoneOffset(); + const endDate = brokenSubDays(date, amount); + const endTZO = endDate.getTimezoneOffset(); + + const dstDiff = originalTZO - endTZO; + + return dstDiff >= 0 ? addMinutes(endDate, dstDiff) : subMinutes(endDate, Math.abs(dstDiff)); +} diff --git a/collector/compile-benchmarks/crates.io/app/components/download-graph.module.css b/collector/compile-benchmarks/crates.io/app/components/download-graph.module.css new file mode 100644 index 000000000..db23c7a47 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/download-graph.module.css @@ -0,0 +1,15 @@ +.wrapper { + display: grid; + place-items: center; + border: solid 1px var(--gray-border); + border-radius: var(--space-3xs); + min-height: 400px; +} + +.spinner { + transform: scale(3.0); +} + +.error { + text-align: center; +} diff --git a/collector/compile-benchmarks/crates.io/app/components/dropdown.hbs b/collector/compile-benchmarks/crates.io/app/components/dropdown.hbs new file mode 100644 index 000000000..4273220df --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/dropdown.hbs @@ -0,0 +1,12 @@ +
+ {{yield (hash + Trigger=(component "dropdown/trigger" toggle=this.toggleDropdown) + Content=(component "dropdown/content" isExpanded=this.dropdownExpanded) + Menu=(component "dropdown/menu" Content=(component "dropdown/content" isExpanded=this.dropdownExpanded)) + )}} +
\ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/dropdown.js b/collector/compile-benchmarks/crates.io/app/components/dropdown.js new file mode 100644 index 000000000..43a1a08ac --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/dropdown.js @@ -0,0 +1,12 @@ +import { action } from '@ember/object'; +import Component from '@glimmer/component'; +import { tracked } from '@glimmer/tracking'; + +export default class Dropdown extends Component { + @tracked dropdownExpanded = false; + + @action + toggleDropdown() { + this.dropdownExpanded = !this.dropdownExpanded; + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/dropdown.module.css b/collector/compile-benchmarks/crates.io/app/components/dropdown.module.css new file mode 100644 index 000000000..123815cdd --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/dropdown.module.css @@ -0,0 +1,4 @@ +.container { + display: inline-block; + position: relative; +} diff --git a/collector/compile-benchmarks/crates.io/app/components/dropdown/content.hbs b/collector/compile-benchmarks/crates.io/app/components/dropdown/content.hbs new file mode 100644 index 000000000..11019a6fd --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/dropdown/content.hbs @@ -0,0 +1 @@ +
{{yield}}
\ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/dropdown/content.module.css b/collector/compile-benchmarks/crates.io/app/components/dropdown/content.module.css new file mode 100644 index 000000000..03d264c03 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/dropdown/content.module.css @@ -0,0 +1,10 @@ +.dropdown { + position: absolute; + display: none; + width: 100%; + z-index: 10; + + &.open { + display: block; + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/dropdown/menu-item.hbs b/collector/compile-benchmarks/crates.io/app/components/dropdown/menu-item.hbs new file mode 100644 index 000000000..46beadc90 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/dropdown/menu-item.hbs @@ -0,0 +1 @@ +
  • {{yield}}
  • \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/dropdown/menu-item.module.css b/collector/compile-benchmarks/crates.io/app/components/dropdown/menu-item.module.css new file mode 100644 index 000000000..034058eca --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/dropdown/menu-item.module.css @@ -0,0 +1,16 @@ +.item { + > a, button { + font-size: 90%; + width: 100%; + display: inline-flex; + text-align: start; + padding: var(--space-2xs) var(--space-xs); + text-decoration: none; + color: var(--main-color) !important; + + &:hover { + background: #5e5e5e; + color: white !important; + } + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/dropdown/menu.hbs b/collector/compile-benchmarks/crates.io/app/components/dropdown/menu.hbs new file mode 100644 index 000000000..56fda0a38 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/dropdown/menu.hbs @@ -0,0 +1,5 @@ +<@Content ...attributes> + + \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/dropdown/menu.module.css b/collector/compile-benchmarks/crates.io/app/components/dropdown/menu.module.css new file mode 100644 index 000000000..8fd182454 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/dropdown/menu.module.css @@ -0,0 +1,10 @@ +.list { + margin: 0; + text-align: left; + padding: 0; + background: light-dark(white, #141413); + border: 1px solid var(--gray-border); + list-style: none; + overflow: hidden; + border-radius: var(--space-3xs); +} diff --git a/collector/compile-benchmarks/crates.io/app/components/dropdown/trigger.hbs b/collector/compile-benchmarks/crates.io/app/components/dropdown/trigger.hbs new file mode 100644 index 000000000..7ef3ae43e --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/dropdown/trigger.hbs @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/dropdown/trigger.module.css b/collector/compile-benchmarks/crates.io/app/components/dropdown/trigger.module.css new file mode 100644 index 000000000..514f83445 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/dropdown/trigger.module.css @@ -0,0 +1,21 @@ +.button { + display: inline-flex; + align-items: center; + color: inherit; + cursor: pointer; + + .arrow { + margin-left: var(--space-2xs); + font-size: 50%; + display: inline-block; + vertical-align: middle; + } + + .arrow::after { + content: "▼"; + } + + &.active .arrow::after { + content: "▲"; + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/edition.hbs b/collector/compile-benchmarks/crates.io/app/components/edition.hbs new file mode 100644 index 000000000..2ecd5c76d --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/edition.hbs @@ -0,0 +1,14 @@ + + {{@version.edition}} edition + + + This crate version does not declare a Minimum Supported Rust Version, but + does require the {{@version.edition}} Rust Edition. + +
    + {{@version.editionMsrv}} was the first version of Rust in this edition, + but this crate may require features that were added in later versions of + Rust. +
    +
    +
    \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/edition.module.css b/collector/compile-benchmarks/crates.io/app/components/edition.module.css new file mode 100644 index 000000000..68ea5ee4d --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/edition.module.css @@ -0,0 +1,3 @@ +.edition-msrv { + margin-top: var(--space-2xs); +} diff --git a/collector/compile-benchmarks/crates.io/app/components/email-input.hbs b/collector/compile-benchmarks/crates.io/app/components/email-input.hbs new file mode 100644 index 000000000..d212ffdf4 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/email-input.hbs @@ -0,0 +1,101 @@ +
    + {{#unless @user.email}} +
    +

    + Please add your email address. We will only use + it to contact you about your account. We promise we'll never share it! +

    +
    + {{/unless}} + + {{#if this.isEditing }} +
    +
    + +
    +
    + + +
    + + + +
    +
    +
    + {{else}} +
    +
    +
    Email
    +
    +
    +
    + {{ @user.email }} + {{#if @user.email_verified}} + Verified! + {{/if}} +
    +
    +
    + +
    +
    + {{#if (and @user.email (not @user.email_verified))}} +
    +
    + {{#if @user.email_verification_sent}} +

    We have sent a verification email to your address.

    + {{/if}} +

    Your email has not yet been verified.

    +
    +
    + +
    +
    + {{/if}} + {{/if}} + +
    \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/email-input.js b/collector/compile-benchmarks/crates.io/app/components/email-input.js new file mode 100644 index 000000000..993958d9b --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/email-input.js @@ -0,0 +1,55 @@ +import { action } from '@ember/object'; +import { service } from '@ember/service'; +import Component from '@glimmer/component'; +import { tracked } from '@glimmer/tracking'; + +import { task } from 'ember-concurrency'; + +export default class EmailInput extends Component { + @service notifications; + + @tracked value; + @tracked isEditing = false; + @tracked disableResend = false; + + resendEmailTask = task(async () => { + try { + await this.args.user.resendVerificationEmail(); + this.disableResend = true; + } catch (error) { + let detail = error.errors?.[0]?.detail; + if (detail && !detail.startsWith('{')) { + this.notifications.error(`Error in resending message: ${detail}`); + } else { + this.notifications.error('Unknown error in resending message'); + } + } + }); + + @action + editEmail() { + this.value = this.args.user.email; + this.isEditing = true; + } + + saveEmailTask = task(async () => { + let userEmail = this.value; + let user = this.args.user; + + try { + await user.changeEmail(userEmail); + + this.isEditing = false; + this.disableResend = false; + } catch (error) { + let detail = error.errors?.[0]?.detail; + + let msg = + detail && !detail.startsWith('{') + ? `An error occurred while saving this email, ${detail}` + : 'An unknown error occurred while saving this email.'; + + this.notifications.error(`Error in saving email: ${msg}`); + } + }); +} diff --git a/collector/compile-benchmarks/crates.io/app/components/email-input.module.css b/collector/compile-benchmarks/crates.io/app/components/email-input.module.css new file mode 100644 index 000000000..1313e662c --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/email-input.module.css @@ -0,0 +1,52 @@ +.friendly-message { + margin-top: 0; +} + +.row { + width: 100%; + border: 1px solid var(--gray-border); + border-bottom-width: 0; + padding: var(--space-2xs) var(--space-s); + display: flex; + align-items: center; + + &:last-child { + border-bottom-width: 1px; + } +} + +.label { + flex: 1; + margin-right: var(--space-xs); + font-weight: bold; +} + +.email-column { + flex: 20; +} + +.verified { + color: green; + font-weight: bold; +} + +.email-form { + flex: 10; + display: inline-flex; + justify-content: space-between; + flex-wrap: wrap; +} + +.input { + width: 400px; + margin-right: var(--space-xs); +} + +.actions { + display: flex; + align-items: center; +} + +.save-button { + margin-right: var(--space-2xs); +} diff --git a/collector/compile-benchmarks/crates.io/app/components/follow-button.hbs b/collector/compile-benchmarks/crates.io/app/components/follow-button.hbs new file mode 100644 index 000000000..2785de602 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/follow-button.hbs @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/follow-button.js b/collector/compile-benchmarks/crates.io/app/components/follow-button.js new file mode 100644 index 000000000..ce9b8ecd9 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/follow-button.js @@ -0,0 +1,45 @@ +import { service } from '@ember/service'; +import Component from '@glimmer/component'; +import { tracked } from '@glimmer/tracking'; + +import { didCancel, dropTask, task } from 'ember-concurrency'; + +import ajax from '../utils/ajax'; + +export default class extends Component { + @service notifications; + + @tracked following = false; + + constructor() { + super(...arguments); + + this.followStateTask.perform().catch(error => { + if (!didCancel(error)) { + this.notifications.error( + `Something went wrong while trying to figure out if you are already following the ${this.args.crate.name} crate. Please try again later!`, + ); + } + }); + } + + followStateTask = dropTask(async () => { + let d = await ajax(`/api/v1/crates/${this.args.crate.name}/following`); + this.following = d.following; + }); + + toggleFollowTask = task(async () => { + let crate = this.args.crate; + + try { + this.following ? await crate.unfollow() : await crate.follow(); + this.following = !this.following; + } catch { + this.notifications.error( + `Something went wrong when ${this.following ? 'unfollowing' : 'following'} the ${ + crate.name + } crate. Please try again later!`, + ); + } + }); +} diff --git a/collector/compile-benchmarks/crates.io/app/components/follow-button.module.css b/collector/compile-benchmarks/crates.io/app/components/follow-button.module.css new file mode 100644 index 000000000..5b260bdfc --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/follow-button.module.css @@ -0,0 +1,5 @@ +.button { + height: 48px; + width: 150px; + justify-content: center; +} diff --git a/collector/compile-benchmarks/crates.io/app/components/footer.hbs b/collector/compile-benchmarks/crates.io/app/components/footer.hbs new file mode 100644 index 000000000..b97c6d12e --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/footer.hbs @@ -0,0 +1,42 @@ + \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/footer.js b/collector/compile-benchmarks/crates.io/app/components/footer.js new file mode 100644 index 000000000..f2639df2d --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/footer.js @@ -0,0 +1,11 @@ +import { service } from '@ember/service'; +import Component from '@glimmer/component'; + +export default class Footer extends Component { + @service pristineQuery; + + get pristineSupportQuery() { + let params = this.pristineQuery.paramsFor('support'); + return params; + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/footer.module.css b/collector/compile-benchmarks/crates.io/app/components/footer.module.css new file mode 100644 index 000000000..64ada7258 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/footer.module.css @@ -0,0 +1,82 @@ +:root, [data-theme="classic"] { + --footer-bg-color: var(--header-bg-color); + --footer-header-color: var(--yellow500); + --footer-header-shadow-color: var(--green900); + --footer-link-color: #fff; + --footer-link-hover-color: var(--yellow500); + --footer-link-hover-shadow-color: var(--green900); +} + +.footer { + display: grid; + justify-items: center; + background: var(--footer-bg-color); +} + +.content { + display: grid; + gap: var(--space-xl) var(--space-m); + padding: var(--space-l); + + @media only screen and (min-width: 551px) { + grid-template-columns: repeat(2, 1fr); + justify-content: center; + padding: var(--space-xl) var(--space-m); + } + + @media only screen and (min-width: 751px) { + grid-template-columns: repeat(4, 1fr); + } + + h1 { + margin: 0 0 var(--space-s); + font-size: 20px; + font-weight: 500; + color: var(--footer-header-color); + text-shadow: 1px 1px 1px var(--footer-header-shadow-color); + } + + ul { + list-style: none; + margin: 0; + padding: 0; + + > * + * { + margin-top: var(--space-xs); + } + } + + li { + height: 1rem; + } + + a { + display: inline-flex; + /* slightly increased click targets */ + margin: calc(var(--space-2xs) * -1); + padding: var(--space-2xs); + color: #fff; + font-size: 16px; + line-height: 1em; + white-space: nowrap; + transition: var(--transition-medium); + + &:hover { + color: var(--footer-link-hover-color); + text-shadow: 1px 1px 1px var(--footer-link-hover-shadow-color); + /* apply color fade only on mouse-out */ + transition: var(--transition-instant); + + svg { + filter: drop-shadow(1px 1px 1px var(--footer-link-hover-shadow-color)); + } + } + } + + svg { + height: 1.25em; + width: 1.25em; + margin: -.125em var(--space-xs) -.125em 0; + flex-shrink: 0; + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/front-page-list/item.hbs b/collector/compile-benchmarks/crates.io/app/components/front-page-list/item.hbs new file mode 100644 index 000000000..60d7944c5 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/front-page-list/item.hbs @@ -0,0 +1,7 @@ + +
    +
    {{@title}}
    + {{#if @subtitle}}
    {{@subtitle}}
    {{/if}} +
    + {{svg-jar "chevron-right" local-class="right"}} +
    \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/front-page-list/item.module.css b/collector/compile-benchmarks/crates.io/app/components/front-page-list/item.module.css new file mode 100644 index 000000000..9deb5ba5f --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/front-page-list/item.module.css @@ -0,0 +1,60 @@ +:global(.box-link) { + --shadow: 0 2px 3px light-dark(hsla(51, 50%, 44%, .35), #232321); + + display: flex; + align-items: center; + width: 100%; + height: var(--space-2xl); + padding: 0 var(--space-s); + background-color: light-dark(white, #141413); + color: light-dark(#525252, #f9f7ec); + text-decoration: none; + border-radius: var(--space-3xs); + box-shadow: var(--shadow); + transition: background-color var(--transition-slow); + + &:focus-visible { + outline: none; + box-shadow: 0 0 0 3px var(--yellow500), var(--shadow); + } + + &:hover, &:focus-visible { + color: light-dark(#525252, #f9f7ec); + background-color: light-dark(hsl(58deg 72% 97%), hsl(204, 3%, 11%)); + transition: background-color var(--transition-instant); + } + + &:active { + transform: translateY(2px); + --shadow: inset 0 0 0 1px hsla(51, 50%, 44%, .15); + } +} + +.left { + flex-grow: 1; + width: 0; +} + +.title, .subtitle { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.title { + font-size: 16px; +} + +.subtitle { + margin-top: var(--space-3xs); + font-size: 13px; + color: light-dark(rgb(118, 131, 138), #cccac2); +} + +.right { + flex-shrink: 0; + height: var(--space-s); + width: auto; + margin-left: var(--space-xs); + color: light-dark(rgb(118, 131, 138), #cccac2); +} diff --git a/collector/compile-benchmarks/crates.io/app/components/front-page-list/item/placeholder.hbs b/collector/compile-benchmarks/crates.io/app/components/front-page-list/item/placeholder.hbs new file mode 100644 index 000000000..3a7d3cba6 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/front-page-list/item/placeholder.hbs @@ -0,0 +1,7 @@ +
    +
    + + {{#if @withSubtitle}}{{/if}} +
    + {{svg-jar "chevron-right" local-class="right"}} +
    \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/front-page-list/item/placeholder.module.css b/collector/compile-benchmarks/crates.io/app/components/front-page-list/item/placeholder.module.css new file mode 100644 index 000000000..68df7e14b --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/front-page-list/item/placeholder.module.css @@ -0,0 +1,45 @@ +.link { + --shadow: 0 2px 3px light-dark(hsla(51, 50%, 44%, .35), #232321); + --placeholder-bg: light-dark(hsla(59, 19%, 50%, 1.0), hsl(60, 14%, 85%)); + --placeholder-bg2: light-dark(hsla(59, 19%, 50%, 0.7), hsla(59, 5%, 50%, 0.7)); + + display: flex; + align-items: center; + width: 100%; + height: var(--space-2xl); + margin: 8px 0; + padding: 0 var(--space-s); + background-color: light-dark(white, #141413); + color: light-dark(#525252, #f9f7ec); + border-radius: var(--space-3xs); + box-shadow: var(--shadow); + cursor: wait; +} + +.left { + flex-grow: 1; + width: 0; +} + +.title { + height: 16px; + width: 150px; + border-radius: 8px; + opacity: 0.25; +} + +.subtitle { + height: 13px; + width: 90px; + margin-top: var(--space-3xs); + border-radius: 6.5px; + opacity: 0.2; +} + +.right { + flex-shrink: 0; + height: var(--space-s); + width: auto; + margin-left: var(--space-xs); + color: light-dark(rgb(118, 131, 138), #cccac2); +} diff --git a/collector/compile-benchmarks/crates.io/app/components/header.hbs b/collector/compile-benchmarks/crates.io/app/components/header.hbs new file mode 100644 index 000000000..15a91cc06 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/header.hbs @@ -0,0 +1,134 @@ +
    +
    + + +

    crates.io

    +
    + +
    +

    + The Rust community’s crate registry +

    + + +
    + + + +
    + + + + + Menu + + + Browse All Crates + {{#if this.session.currentUser}} + Dashboard + Account Settings + Owner Invites + + + + {{else}} + + + + {{/if}} + + +
    +
    +
    \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/header.js b/collector/compile-benchmarks/crates.io/app/components/header.js new file mode 100644 index 000000000..96efa8a53 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/header.js @@ -0,0 +1,21 @@ +import { action } from '@ember/object'; +import { service } from '@ember/service'; +import Component from '@glimmer/component'; + +// Six hours. +const SUDO_SESSION_DURATION_MS = 6 * 60 * 60 * 1000; + +export default class Header extends Component { + /** @type {import("../services/session").default} */ + @service session; + + @action + enableSudo() { + this.session.setSudo(SUDO_SESSION_DURATION_MS); + } + + @action + disableSudo() { + this.session.setSudo(0); + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/header.module.css b/collector/compile-benchmarks/crates.io/app/components/header.module.css new file mode 100644 index 000000000..22b410f2b --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/header.module.css @@ -0,0 +1,202 @@ +.header { + display: flex; + justify-content: center; + width: 100%; +} + +.header-inner { + display: grid; + grid-template: + "logo search nav" auto / + auto 1fr auto; + align-items: center; + padding: var(--space-xs) var(--space-m); + color: white; + + a { + color: white; text-decoration: none; + &:hover { color: white; } + } + + @media only screen and (max-width: 900px) { + grid-template: + "logo search menu" auto / + auto 1fr auto; + } + + @media only screen and (max-width: 820px) { + grid-template: + "logo menu" auto + "search search" auto / + auto 1fr; + } + + .hero & { + grid-template: + "logo nav" auto + "search search" auto / + auto 1fr; + + @media only screen and (max-width: 900px) { + grid-template: + "logo menu" auto + "search search" auto / + auto 1fr; + } + } +} + +.index-link { + grid-area: logo; + display: flex; + align-items: center; + + h1 { + margin: 0; + font-size: var(--space-m); + } +} + +.logo { + width: auto; + height: calc(var(--space-m) * 1.4); + margin-right: var(--space-xs); +} + +.search-form { + grid-area: search; + margin: 0 var(--space-m); + + @media only screen and (max-width: 820px) { + margin: var(--space-s) 0; + } + + .hero & { + justify-self: center; + padding: var(--space-l) 0 var(--space-l-xl); + margin: 0; + } +} + +.hero-title { + display: none; + margin: 0 0 var(--space-m); + font-size: var(--space-m-l); + text-align: center; + color: white; + text-shadow: 1px 3px 2px var(--green900); + + .hero & { + display: block; + } +} + +.sep { + margin: 0 var(--space-2xs); + opacity: 0.5; +} + +.nav { + grid-area: nav; + display: flex; + align-items: center; + justify-self: end; + + @media only screen and (max-width: 900px) { + display: none; + } +} + +.menu { + grid-area: menu; + justify-self: end; + display: none; + + @media only screen and (max-width: 900px) { + display: flex; + align-items: center; + } +} + +.menu-item-with-separator { + border-top: 1px solid var(--gray-border); +} + +.color-scheme-menu { + margin-right: var(--space-xs); +} + +.login-button { + display: inline-flex; + align-items: center; + /* negative margin for larger click target */ + margin: calc(var(--space-2xs) * -1); + padding: var(--space-2xs); + cursor: pointer; + + &:disabled { + cursor: wait; + } + + .spinner { + --spinner-color: white; + --spinner-bg-color: rgba(255, 255, 255, .2); + + margin-right: var(--space-2xs); + } +} + +.login-icon { + width: 1em; + margin-right: var(--space-2xs); + opacity: 0.5; +} + +.avatar { + margin-right: var(--space-2xs); +} + +.wizard-hat { + margin-right: var(--space-3xs); +} + +.current-user-links { + left: auto; + right: 0; + min-width: 200px; +} + +.dropdown-button { + background: none; + border: 0; + padding: 0; + + img { + /* 22px is the hard coded size of a UserAvatar when @size="small" */ + margin-top: calc((22px - 1em) * -0.5); + } +} + +.login-menu-item, +.logout-menu-item, +.sudo-menu-item { + cursor: pointer; + + &:disabled { + cursor: wait; + } + + .spinner { + margin-right: var(--space-2xs); + } +} + +.sudo-menu-item { + flex-direction: column; + + > .expires-in { + font-size: 80%; + font-style: italic; + padding-top: var(--space-3xs); + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/license-expression.hbs b/collector/compile-benchmarks/crates.io/app/components/license-expression.hbs new file mode 100644 index 000000000..c5f96437c --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/license-expression.hbs @@ -0,0 +1,11 @@ +{{#each (parse-license @license) as |part|}} + {{#if part.isKeyword}} + {{part.text}} + {{else if part.link}} + + {{part.text}} + + {{else}} + {{part.text}} + {{/if}} +{{/each}} \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/loading-spinner.hbs b/collector/compile-benchmarks/crates.io/app/components/loading-spinner.hbs new file mode 100644 index 000000000..e7441f72d --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/loading-spinner.hbs @@ -0,0 +1,6 @@ +
    + Loading… +
    \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/loading-spinner.module.css b/collector/compile-benchmarks/crates.io/app/components/loading-spinner.module.css new file mode 100644 index 000000000..b511dda9a --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/loading-spinner.module.css @@ -0,0 +1,34 @@ +.spinner { + --spinner-color: currentcolor; + --spinner-bg-color: var(--gray-border); + --spinner-size: 16px; + + display: inline-block; + height: var(--spinner-size); + width: var(--spinner-size); + + &.light { + --spinner-bg-color: rgba(0, 0, 0, .2); + } + + &:after { + content: " "; + display: block; + box-sizing: border-box; + width: var(--spinner-size); + height: var(--spinner-size); + border-radius: 50%; + border: calc(var(--spinner-size) / 5.5) solid var(--spinner-color); + border-color: var(--spinner-bg-color) var(--spinner-bg-color) var(--spinner-color) var(--spinner-bg-color); + animation: spinner 1.2s linear infinite; + } +} + +@keyframes spinner { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/msrv.hbs b/collector/compile-benchmarks/crates.io/app/components/msrv.hbs new file mode 100644 index 000000000..682db6019 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/msrv.hbs @@ -0,0 +1,10 @@ + + v{{@version.msrv}} + + + "Minimum Supported Rust Version" + {{#if @version.edition}} +
    requires Rust Edition {{@version.edition}}
    + {{/if}} +
    +
    \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/msrv.module.css b/collector/compile-benchmarks/crates.io/app/components/msrv.module.css new file mode 100644 index 000000000..c5aae0e7c --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/msrv.module.css @@ -0,0 +1,3 @@ +.edition { + margin-top: var(--space-2xs); +} diff --git a/collector/compile-benchmarks/crates.io/app/components/nav-tabs.hbs b/collector/compile-benchmarks/crates.io/app/components/nav-tabs.hbs new file mode 100644 index 000000000..980bccf39 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/nav-tabs.hbs @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/nav-tabs.module.css b/collector/compile-benchmarks/crates.io/app/components/nav-tabs.module.css new file mode 100644 index 000000000..cf2fed2e0 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/nav-tabs.module.css @@ -0,0 +1,18 @@ +.list { + --nav-tabs-border-width: 2px; + --nav-tabs-padding-h: var(--space-s); + --nav-tabs-padding-v: var(--space-2xs); + --nav-tabs-radius: var(--space-3xs); + + display: flex; + list-style: none; + padding: 0; + margin: 0; + border-bottom: var(--nav-tabs-border-width) solid var(--gray-border); + + @media only screen and (max-width: 550px) { + flex-direction: column; + border-left: var(--nav-tabs-border-width) solid var(--gray-border); + border-bottom: none; + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/nav-tabs/tab.hbs b/collector/compile-benchmarks/crates.io/app/components/nav-tabs/tab.hbs new file mode 100644 index 000000000..e55b7da02 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/nav-tabs/tab.hbs @@ -0,0 +1,10 @@ +
  • + + {{yield}} + +
  • \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/nav-tabs/tab.module.css b/collector/compile-benchmarks/crates.io/app/components/nav-tabs/tab.module.css new file mode 100644 index 000000000..25ce2a9d9 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/nav-tabs/tab.module.css @@ -0,0 +1,54 @@ +.link { + display: block; + padding: + calc(var(--nav-tabs-padding-v) + var(--nav-tabs-border-width)) + var(--nav-tabs-padding-h) + var(--nav-tabs-padding-v); + color: var(--main-color); + border-top-left-radius: var(--nav-tabs-radius); + border-top-right-radius: var(--nav-tabs-radius); + border-bottom: var(--nav-tabs-border-width) solid transparent; + margin-bottom: calc(0px - var(--nav-tabs-border-width)); + transition: color var(--transition-medium), border-bottom-color var(--transition-medium); + + &.active { + color: var(--link-hover-color); + border-bottom-color: var(--link-hover-color); + background: var(--main-bg-dark); + } + + &:hover { + color: var(--link-hover-color); + border-bottom-color: var(--link-hover-color); + transition: color var(--transition-instant), border-bottom-color var(--transition-instant); + } + + &:focus-visible { + outline: none; + margin: -3px; + border: 3px solid var(--yellow500); + position: relative; + transition: border-bottom-color var(--transition-instant); + z-index: 1; + } + + @media only screen and (max-width: 550px) { + padding: + var(--nav-tabs-padding-v) + var(--nav-tabs-padding-h) + var(--nav-tabs-padding-v) + calc(var(--nav-tabs-padding-h) + var(--nav-tabs-border-width)); + + border-top-left-radius: 0; + border-bottom-right-radius: var(--nav-tabs-radius); + border-bottom: none; + border-left: var(--nav-tabs-border-width) solid transparent; + margin-bottom: 0; + margin-left: calc(0px - var(--nav-tabs-border-width)); + + &.active, + &:hover { + border-left-color: var(--link-hover-color); + } + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/owned-crate-row.hbs b/collector/compile-benchmarks/crates.io/app/components/owned-crate-row.hbs new file mode 100644 index 000000000..ee4d8f224 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/owned-crate-row.hbs @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/owned-crate-row.js b/collector/compile-benchmarks/crates.io/app/components/owned-crate-row.js new file mode 100644 index 000000000..6c312ae24 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/owned-crate-row.js @@ -0,0 +1,9 @@ +import { action } from '@ember/object'; +import Component from '@glimmer/component'; + +export default class OwnedCrateRow extends Component { + @action setEmailNotifications(event) { + let { checked } = event.target; + this.args.ownedCrate.set('email_notifications', checked); + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/owned-crate-row.module.css b/collector/compile-benchmarks/crates.io/app/components/owned-crate-row.module.css new file mode 100644 index 000000000..c1dba2007 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/owned-crate-row.module.css @@ -0,0 +1,34 @@ +.label { + display: flex; + align-items: center; + background-color: #fff; + border: 1px solid #d5d3cb; + padding: var(--space-xs) var(--space-m); + font-weight: bold; + cursor: pointer; + transition: color var(--transition-medium) ease-in; + + &.checked { + background-color: var(--main-bg-dark); + } +} + +.name { + flex-grow: 1; +} + +.checkbox { + display: grid; + place-items: center; + flex-shrink: 0; + width: var(--space-l); + height: var(--space-l); + margin-left: var(--space-m); + border: 2px solid #d5d3cb; + border-radius: 50%; + + .checked & { + background-color: #cfc487; + border-color: #cfc487; + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/owners-list.hbs b/collector/compile-benchmarks/crates.io/app/components/owners-list.hbs new file mode 100644 index 000000000..efdf920dd --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/owners-list.hbs @@ -0,0 +1,19 @@ + \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/owners-list.js b/collector/compile-benchmarks/crates.io/app/components/owners-list.js new file mode 100644 index 000000000..b00cce81c --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/owners-list.js @@ -0,0 +1,7 @@ +import Component from '@glimmer/component'; + +export default class VersionRow extends Component { + get showDetailedList() { + return this.args.owners.length <= 5; + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/owners-list.module.css b/collector/compile-benchmarks/crates.io/app/components/owners-list.module.css new file mode 100644 index 000000000..881de12d7 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/owners-list.module.css @@ -0,0 +1,48 @@ +.list.detailed { + list-style: none; + padding: 0; + margin: 0; + + > * + * { + margin-top: 5px; + } + + .link { + display: grid; + grid-template-columns: auto 1fr; + align-items: center; + } + + .avatar { + margin-right: 10px; + } + + .name { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } +} + +.list:not(.detailed) { + display: flex; + flex-wrap: wrap; + list-style: none; + padding: 0; + margin: 0 0 -10px; + + > * { + margin: 0 10px 10px 0; + } +} + +.avatar { + border-radius: 50%; + background: white; + box-shadow: 1px 2px 2px 0 hsla(51, 50%, 44%, .35); + padding: 1px; + + .team & { + border-radius: 4px; + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/page-header.hbs b/collector/compile-benchmarks/crates.io/app/components/page-header.hbs new file mode 100644 index 000000000..0551f63b6 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/page-header.hbs @@ -0,0 +1,15 @@ +
    + {{#if (has-block)}} + {{yield}} + {{else}} +

    + {{@title}} + {{#if @suffix}} + {{@suffix}} + {{/if}} + {{#if @showSpinner}} + + {{/if}} +

    + {{/if}} +
    \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/page-header.module.css b/collector/compile-benchmarks/crates.io/app/components/page-header.module.css new file mode 100644 index 000000000..f7031f3d2 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/page-header.module.css @@ -0,0 +1,21 @@ +.header { + padding: var(--space-s) var(--space-m); + background-color: var(--main-bg-dark); + margin-bottom: var(--space-s); + border-radius: 5px; +} + +.heading { + display: flex; + align-items: baseline; + margin: 0; +} + +.suffix { + color: var(--main-color-light); + padding-left: var(--space-2xs); +} + +.loading-spinner { + margin: 0 var(--space-2xs); +} diff --git a/collector/compile-benchmarks/crates.io/app/components/pagination.hbs b/collector/compile-benchmarks/crates.io/app/components/pagination.hbs new file mode 100644 index 000000000..954e6fb47 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/pagination.hbs @@ -0,0 +1,17 @@ + \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/pagination.module.css b/collector/compile-benchmarks/crates.io/app/components/pagination.module.css new file mode 100644 index 000000000..f71a1f1f4 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/pagination.module.css @@ -0,0 +1,49 @@ +.pagination { + display: flex; + align-items: center; + justify-content: center; + font-size: 90%; + margin-bottom: var(--space-xs); + + ol { + list-style: none; + padding: 0; + margin: 0; + } + ol, li { display: inline-block; } + + a { + color: var(--main-color-light); + text-decoration: none; + padding: var(--space-3xs) var(--space-2xs); + border-radius: var(--space-3xs); + } + a:hover { background-color: var(--main-bg-dark); } + a:global(.active) { background-color: var(--main-bg-dark); } + + img, svg { vertical-align: middle; } + + + .prev, .next { + circle { + fill: none; + } + + path { + fill: currentColor; + } + + &:hover { + circle { + fill: var(--main-bg-dark); + } + } + } + + .next:global(.active), + .prev:global(.active), + .next:hover, + .prev:hover { + background: none; + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/pending-owner-invite-row.hbs b/collector/compile-benchmarks/crates.io/app/components/pending-owner-invite-row.hbs new file mode 100644 index 000000000..254417cb0 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/pending-owner-invite-row.hbs @@ -0,0 +1,34 @@ +{{#if this.isAccepted }} +

    + Success! You've been added as an owner of crate + {{@invite.crate_name}}. +

    +{{else if this.isDeclined}} +

    + Declined. You have not been added as an owner of crate + {{@invite.crate_name}}. +

    +{{else}} +
    +
    +

    + + {{@invite.crate_name}} + +

    +
    +
    + Invited by: + + {{@invite.inviter.login}} + +
    +
    + {{date-format-distance-to-now @invite.created_at addSuffix=true}} +
    +
    + + +
    +
    +{{/if}} \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/pending-owner-invite-row.js b/collector/compile-benchmarks/crates.io/app/components/pending-owner-invite-row.js new file mode 100644 index 000000000..3893ab217 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/pending-owner-invite-row.js @@ -0,0 +1,44 @@ +import { service } from '@ember/service'; +import Component from '@glimmer/component'; +import { tracked } from '@glimmer/tracking'; + +import { task } from 'ember-concurrency'; + +export default class PendingOwnerInviteRow extends Component { + @service notifications; + + @tracked isAccepted = false; + @tracked isDeclined = false; + + acceptInvitationTask = task(async () => { + this.args.invite.set('accepted', true); + + try { + await this.args.invite.save(); + this.isAccepted = true; + } catch (error) { + let detail = error.errors?.[0]?.detail; + if (detail && !detail.startsWith('{')) { + this.notifications.error(`Error in accepting invite: ${detail}`); + } else { + this.notifications.error('Error in accepting invite'); + } + } + }); + + declineInvitationTask = task(async () => { + this.args.invite.set('accepted', false); + + try { + await this.args.invite.save(); + this.isDeclined = true; + } catch (error) { + let detail = error.errors?.[0]?.detail; + if (detail && !detail.startsWith('{')) { + this.notifications.error(`Error in declining invite: ${detail}`); + } else { + this.notifications.error('Error in declining invite'); + } + } + }); +} diff --git a/collector/compile-benchmarks/crates.io/app/components/pending-owner-invite-row.module.css b/collector/compile-benchmarks/crates.io/app/components/pending-owner-invite-row.module.css new file mode 100644 index 000000000..8bf80f2b5 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/pending-owner-invite-row.module.css @@ -0,0 +1,14 @@ +.row { + display: flex; + align-items: baseline; + justify-content: space-between; + flex-wrap: wrap; +} + +.crate-column { + width: 200px; + + h3 { + margin: 0; + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/placeholder.hbs b/collector/compile-benchmarks/crates.io/app/components/placeholder.hbs new file mode 100644 index 000000000..1c922fb2f --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/placeholder.hbs @@ -0,0 +1 @@ +
    \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/placeholder.module.css b/collector/compile-benchmarks/crates.io/app/components/placeholder.module.css new file mode 100644 index 000000000..428ca5528 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/placeholder.module.css @@ -0,0 +1,22 @@ +.placeholder { + position: relative; + display: block; + overflow: hidden; + background: linear-gradient(to right, var(--placeholder-bg) 8%, var(--placeholder-bg2) 16%, var(--placeholder-bg) 29%); + background-size: 1200px 100%; + animation-name: backgroundAnimation; + animation-duration: 1.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-fill-mode: forwards; +} + +@keyframes backgroundAnimation { + 0% { + background-position: -500px; + } + + 100% { + background-position: 500px; + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/privileged-action.hbs b/collector/compile-benchmarks/crates.io/app/components/privileged-action.hbs new file mode 100644 index 000000000..873b7a104 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/privileged-action.hbs @@ -0,0 +1,26 @@ +{{#if this.isPrivileged}} +
    + {{yield}} +
    +{{else if this.canBePrivileged}} + {{#if (has-block 'placeholder')}} +
    + {{yield to='placeholder'}} +
    + {{else}} +
    +
    + {{yield}} +
    + + You must enable admin actions before you can perform this operation. + +
    + {{/if}} +{{else}} +
    + {{#if (has-block 'unprivileged')}} + {{yield to='unprivileged'}} + {{/if}} +
    +{{/if}} \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/privileged-action.js b/collector/compile-benchmarks/crates.io/app/components/privileged-action.js new file mode 100644 index 000000000..814de90eb --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/privileged-action.js @@ -0,0 +1,45 @@ +import { service } from '@ember/service'; +import Component from '@glimmer/component'; + +/** + * A component that wraps elements (probably mostly buttons in practice) that + * can be used to perform potentially privileged actions. + * + * This component requires a `userAuthorised` property, which must be a + * `boolean` indicating whether the user is authorised for this action. Admin + * rights need not be taken into account. + * + * If the current user is an admin and they have enabled sudo mode, then they + * are always allowed to perform the action, regardless of the return value of + * `userAuthorised`. + * + * There are three content blocks supported by this component: + * + * - `default`: required; this is displayed when the user is authorised to + * perform the action. + * - `placeholder`: this is displayed when the user _could_ be authorised to + * perform the action (that is, they're an admin but have not + * enabled sudo mode), but currently cannot perform the action. + * If omitted, the `default` block is used with all form + * controls disabled and a tooltip added. + * - `unprivileged`: this is displayed when the user is not able to perform this + * action, and cannot be authorised to do so. If omitted, an + * empty block will be used. + * + * Note that all blocks will be output with a wrapping `
    ` for technical + * reasons, so be sure to style accordingly if necessary. + */ +export default class PrivilegedAction extends Component { + /** @type {import("../services/session").default} */ + @service session; + + /** @return {boolean} */ + get isPrivileged() { + return this.session.isSudoEnabled || this.args.userAuthorised; + } + + /** @return {boolean} */ + get canBePrivileged() { + return !this.args.userAuthorised && this.session.currentUser?.is_admin && !this.session.isSudoEnabled; + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/privileged-action.module.css b/collector/compile-benchmarks/crates.io/app/components/privileged-action.module.css new file mode 100644 index 000000000..cfda97181 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/privileged-action.module.css @@ -0,0 +1,25 @@ +.placeholder { + fieldset { + border: 0; + margin: 0; + padding: 0; + } + + fieldset[disabled] { + cursor: not-allowed; + + [disabled] { + cursor: not-allowed; + } + + button, + .yellow-button, + .tan-button { + /* This duplicates the styles in .button[disabled] as there's no + * obvious way to compose them, given the target selectors. */ + background: linear-gradient(to bottom, var(--bg-color-top-light) 0%, var(--bg-color-bottom-light) 100%); + color: var(--disabled-text-color); + cursor: not-allowed; + } + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/progress-bar.hbs b/collector/compile-benchmarks/crates.io/app/components/progress-bar.hbs new file mode 100644 index 000000000..838ee06d4 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/progress-bar.hbs @@ -0,0 +1 @@ +
    \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/progress-bar.js b/collector/compile-benchmarks/crates.io/app/components/progress-bar.js new file mode 100644 index 000000000..7460a24d8 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/progress-bar.js @@ -0,0 +1,6 @@ +import { service } from '@ember/service'; +import Component from '@glimmer/component'; + +export default class extends Component { + @service progress; +} diff --git a/collector/compile-benchmarks/crates.io/app/components/progress-bar.module.css b/collector/compile-benchmarks/crates.io/app/components/progress-bar.module.css new file mode 100644 index 000000000..cd1c11c4a --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/progress-bar.module.css @@ -0,0 +1,8 @@ +.progress-bar { + position: fixed; + left: 0; + top: 0; + height: 3px; + box-shadow: 0 0 10px rgba(0, 13, 41, 0.6); + background: var(--yellow500) !important; +} diff --git a/collector/compile-benchmarks/crates.io/app/components/rendered-html.hbs b/collector/compile-benchmarks/crates.io/app/components/rendered-html.hbs new file mode 100644 index 000000000..39867f161 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/rendered-html.hbs @@ -0,0 +1,12 @@ +{{!-- + This component renders raw HTML. Be very careful with this since it + can enable cross-site scripting attacks! +--}} + + {{html-safe @html}} + \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/rendered-html.js b/collector/compile-benchmarks/crates.io/app/components/rendered-html.js new file mode 100644 index 000000000..f6784d89d --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/rendered-html.js @@ -0,0 +1,6 @@ +import { service } from '@ember/service'; +import Component from '@glimmer/component'; + +export default class extends Component { + @service colorScheme; +} diff --git a/collector/compile-benchmarks/crates.io/app/components/results-count.hbs b/collector/compile-benchmarks/crates.io/app/components/results-count.hbs new file mode 100644 index 000000000..62dea6cdf --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/results-count.hbs @@ -0,0 +1,5 @@ + + Displaying + {{@start}}-{{@end}} + of {{@total}} {{if @name @name "total results"}} + diff --git a/collector/compile-benchmarks/crates.io/app/components/results-count.module.css b/collector/compile-benchmarks/crates.io/app/components/results-count.module.css new file mode 100644 index 000000000..78804d3ed --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/results-count.module.css @@ -0,0 +1,4 @@ +.highlight { + color: var(--main-color); + font-weight: bold; +} diff --git a/collector/compile-benchmarks/crates.io/app/components/rev-dep-row.hbs b/collector/compile-benchmarks/crates.io/app/components/rev-dep-row.hbs new file mode 100644 index 000000000..16ffc7a57 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/rev-dep-row.hbs @@ -0,0 +1,33 @@ +
    +
    +
    + + {{@dependency.version.crateName}} + + + depends on {{@dependency.req}} + +
    +
    + {{svg-jar "download-arrow" local-class="download-icon"}} + {{format-num @dependency.downloads}} +
    +
    + + {{#if (or this.description this.loadCrateTask.isRunning)}} +
    + {{#if this.loadCrateTask.isRunning}} + + {{else}} + {{this.description}} + {{/if}} +
    + {{/if}} +
    diff --git a/collector/compile-benchmarks/crates.io/app/components/rev-dep-row.js b/collector/compile-benchmarks/crates.io/app/components/rev-dep-row.js new file mode 100644 index 000000000..b5c727144 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/rev-dep-row.js @@ -0,0 +1,33 @@ +import { action } from '@ember/object'; +import { service } from '@ember/service'; +import Component from '@glimmer/component'; +import { tracked } from '@glimmer/tracking'; + +import { task } from 'ember-concurrency'; + +export default class VersionRow extends Component { + @service store; + + @tracked focused = false; + + @action setFocused(value) { + this.focused = value; + } + + constructor() { + super(...arguments); + + this.loadCrateTask.perform().catch(() => { + // ignore all errors and just don't display a description if the request fails + }); + } + + get description() { + return this.loadCrateTask.lastSuccessful?.value?.description; + } + + loadCrateTask = task(async () => { + let { dependency } = this.args; + return await this.store.findRecord('crate', dependency.version.crateName); + }); +} diff --git a/collector/compile-benchmarks/crates.io/app/components/rev-dep-row.module.css b/collector/compile-benchmarks/crates.io/app/components/rev-dep-row.module.css new file mode 100644 index 000000000..9619fc516 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/rev-dep-row.module.css @@ -0,0 +1,104 @@ +.row { + --hover-bg-color: light-dark(hsl(217, 37%, 98%), hsl(204, 3%, 11%)); + --crate-color: light-dark(var(--grey700), var(--grey600)); + --placeholder-opacity: 0.35; + --shadow: 0 1px 3px light-dark(hsla(51, 90%, 42%, .35), #232321); + + position: relative; + font-size: 18px; + padding: var(--space-s) var(--space-m); + background-color: light-dark(white, #141413); + border-radius: var(--space-3xs); + box-shadow: var(--shadow); + transition: all var(--transition-slow); + + &:hover, &.focused { + background-color: var(--hover-bg-color); + transition: all var(--transition-instant); + } + + &.focused { + box-shadow: 0 0 0 3px var(--yellow500), var(--shadow); + } +} + +.top { + display: flex; + align-items: center; + justify-content: space-between; + flex-wrap: wrap; + + @media only screen and (max-width: 550px) { + display: block + } +} + +.left { + overflow: hidden; + text-overflow: ellipsis; +} + +.link { + color: var(--crate-color); + font-weight: 500; + margin-right: var(--space-s); + outline: none; + + &:hover { + color: var(--crate-color); + } + + &::after { + content: ''; + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; + } +} + +.range { + color: var(--grey600); + text-transform: uppercase; + letter-spacing: .7px; + font-size: 13px; +} + +.downloads { + display: flex; + align-items: center; + color: var(--grey600); + font-size: 16px; + font-weight: 500; + font-variant: tabular-nums; + + @media only screen and (max-width: 550px) { + margin-top: var(--space-xs); + } +} + +.download-icon { + width: auto; + height: 16px; + flex-shrink: 0; + margin-right: 7px; +} + +.description { + margin-top: var(--space-2xs); + color: var(--crate-color); + font-size: 90%; + line-height: 1.5; + + @media only screen and (max-width: 550px) { + margin-top: var(--space-xs); + } +} + +.description-placeholder { + height: 1em; + width: 70%; + border-radius: var(--space-3xs); + opacity: var(--placeholder-opacity); +} diff --git a/collector/compile-benchmarks/crates.io/app/components/search-form.hbs b/collector/compile-benchmarks/crates.io/app/components/search-form.hbs new file mode 100644 index 000000000..060114177 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/search-form.hbs @@ -0,0 +1,57 @@ +
    + {{! template-lint-disable require-input-label}} + {{! disabled due to https://github.com/ember-template-lint/ember-template-lint/issues/2141 }} + + {{! template-lint-disable no-autofocus-attribute}} + {{! disabled because this is a "form field that serves as the main purpose of the page" }} + {{! see https://github.com/ember-template-lint/ember-template-lint/blob/master/docs/rule/no-autofocus-attribute.md }} + + + + {{! Second input fields for narrow screens because CSS does not allow us to change the placeholder }} + + + + + {{on-key 's' (focus '#cargo-desktop-search')}} + {{on-key 'S' (focus '#cargo-desktop-search')}} + {{on-key 'shift+s' (focus '#cargo-desktop-search')}} + {{on-key '/' (focus '#cargo-desktop-search')}} +
    diff --git a/collector/compile-benchmarks/crates.io/app/components/search-form.js b/collector/compile-benchmarks/crates.io/app/components/search-form.js new file mode 100644 index 000000000..4b3aa5343 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/search-form.js @@ -0,0 +1,22 @@ +import { action } from '@ember/object'; +import { service } from '@ember/service'; +import Component from '@glimmer/component'; + +export default class Header extends Component { + @service header; + @service router; + + @action updateSearchValue(event) { + let { value } = event.target; + this.header.searchValue = value; + } + + @action search() { + this.router.transitionTo('search', { + queryParams: { + q: this.header.searchValue, + page: 1, + }, + }); + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/search-form.module.css b/collector/compile-benchmarks/crates.io/app/components/search-form.module.css new file mode 100644 index 000000000..75ed38393 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/search-form.module.css @@ -0,0 +1,81 @@ +.form { + --border-radius: 5000px; + --submit-icon-size: 1em; + --submit-button-padding-left: var(--space-2xs); + --submit-button-padding-right: var(--space-xs); + --submit-button-width: calc(var(--submit-button-padding-left) + var(--submit-icon-size) + var(--submit-button-padding-right)); + --input-padding: var(--space-3xs); + --input-padding-left: var(--space-xs); + --input-padding-right: calc(var(--submit-button-width) + var(--input-padding)); + + position: relative; + font-size: calc(var(--space-s) * 0.9); + + &.size-big { + --input-padding: 8px; + --input-padding-left: 16px; + --submit-button-padding-left: 12px; + --submit-button-padding-right: 16px; + + font-size: var(--space-s); + } +} + +.input-lg, .input-sm { + --search-form-focus-shadow: 0 0 0 var(--space-3xs) var(--yellow500); + + border: none; + color: light-dark(black, var(--main-color)); + background: light-dark(white, hsl(0, 1%, 19%)); + width: 100%; + padding: var(--input-padding) var(--input-padding-right) var(--input-padding) var(--input-padding-left); + border-radius: var(--border-radius); + box-shadow: 1px 2px 4px 0 light-dark(var(--green900), hsl(111, 10%, 8%)); + transition: box-shadow var(--transition-fast); + + &:focus { + outline: none; + box-shadow: var(--search-form-focus-shadow), + 1px 2px 3px 4px var(--green900); + } +} + +.input-lg { + @media only screen and (max-width: 820px) { + display: none; + } +} + +.input-sm { + display: none; + + @media only screen and (max-width: 820px) { + display: unset; + } +} + +.submit-button { + position: absolute; + /* see https://github.com/rust-lang/crates.io/issues/8677 🤷 */ + right: -.5px; + top: 0; + bottom: 0; + display: inline-grid; + place-items: center; + padding-left: var(--submit-button-padding-left); + padding-right: var(--submit-button-padding-right); + color: white; + background-color: var(--yellow500); + border-top-right-radius: var(--border-radius); + border-bottom-right-radius: var(--border-radius); + cursor: pointer; + + &:hover { + background-color: var(--yellow700); + } +} + +.submit-icon { + width: var(--submit-icon-size); + height: var(--submit-icon-size); +} diff --git a/collector/compile-benchmarks/crates.io/app/components/settings-page.hbs b/collector/compile-benchmarks/crates.io/app/components/settings-page.hbs new file mode 100644 index 000000000..c678a43ff --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/settings-page.hbs @@ -0,0 +1,10 @@ +
    + + Profile + API Tokens + + +
    + {{yield}} +
    +
    \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/settings-page.module.css b/collector/compile-benchmarks/crates.io/app/components/settings-page.module.css new file mode 100644 index 000000000..fcdf3ed2b --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/settings-page.module.css @@ -0,0 +1,16 @@ +.page { + display: grid; + gap: var(--space-s); + + @media (min-width: 768px) { + grid-template: + "menu content" auto / + 200px auto; + } +} + +.content { + h2:first-child { + margin-top: var(--space-3xs); + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/settings/api-tokens.hbs b/collector/compile-benchmarks/crates.io/app/components/settings/api-tokens.hbs new file mode 100644 index 000000000..413733b86 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/settings/api-tokens.hbs @@ -0,0 +1,158 @@ +
    +

    API Tokens

    +
    + + New Token + +
    +
    + +

    + You can use the API tokens generated on this page to run cargo + commands that need write access to crates.io. If you want to publish your own + crates then this is required. +

    + +

    + To prevent keys being silently leaked they are stored on crates.io in hashed form. This means you + can only download keys when you first create them. If you have old unused keys you can safely delete + them and create a new one. +

    + +

    + To use an API token, run cargo login + on the command line and paste the key when prompted. This will save it to a + local credentials file. + For CI systems you can use the + CARGO_REGISTRY_TOKEN + environment variable, but make sure that the token stays secret! +

    + +{{#if this.sortedTokens}} +
      + {{#each this.sortedTokens as |token|}} +
    • +

      + {{token.name}} +

      + + {{#if (or token.endpoint_scopes token.crate_scopes)}} +
      + {{#if token.endpoint_scopes}} +
      + Scopes: + + {{#each (this.listToParts token.endpoint_scopes) as |part|~}} + {{#if (eq part.type "element")}} + {{part.value}} + {{~else~}} + {{part.value}} + {{/if}} + {{~/each}} +
      + {{/if}} + + {{#if token.crate_scopes}} +
      + Crates: + + {{#each (this.listToParts token.crate_scopes) as |part|~}} + {{#if (eq part.type "element")}} + {{part.value}} + {{~else~}} + {{part.value}} + {{/if}} + {{~/each}} +
      + {{/if}} +
      + {{/if}} + +
      +
      + {{#if token.last_used_at}} + Last used {{date-format-distance-to-now token.last_used_at addSuffix=true}} + {{else}} + Never used + {{/if}} +
      + +
      + Created {{date-format-distance-to-now token.created_at addSuffix=true}} +
      + + {{#if token.expired_at}} +
      + {{if token.isExpired "Expired" "Expires"}} {{date-format-distance-to-now token.expired_at addSuffix=true}} +
      + {{/if}} +
      + + {{#if token.token}} +
      +
      + Make sure to copy your API token now. You won’t be able to see it again! +
      + +
      + {{token.token}} + + {{#if (is-clipboard-supported)}} + + Copy + {{svg-jar "copy" aria-hidden="true" local-class="copy-button-icon"}} + + {{/if}} +
      +
      + {{/if}} + +
      + + Regenerate + + {{#unless token.isExpired}} + + {{#if token.isSaving}} + + {{/if}} + {{/unless}} +
      +
    • + {{/each}} +
    +{{else}} +
    +
    + You have not generated any API tokens yet. +
    + + + New Token + +
    +{{/if}} \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/settings/api-tokens.js b/collector/compile-benchmarks/crates.io/app/components/settings/api-tokens.js new file mode 100644 index 000000000..dc66cdd70 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/settings/api-tokens.js @@ -0,0 +1,61 @@ +import { action } from '@ember/object'; +import { service } from '@ember/service'; +import Component from '@glimmer/component'; + +import { task } from 'ember-concurrency'; + +import { patternDescription, scopeDescription } from '../../utils/token-scopes'; + +export default class ApiTokens extends Component { + @service store; + @service notifications; + @service router; + + scopeDescription = scopeDescription; + patternDescription = patternDescription; + + get sortedTokens() { + return this.args.tokens + .filter(t => !t.isNew) + .sort((a, b) => { + // Expired tokens are always shown after active ones. + if (a.isExpired && !b.isExpired) { + return 1; + } else if (b.isExpired && !a.isExpired) { + return -1; + } + + // Otherwise, sort normally based on creation time. + return a.created_at < b.created_at ? 1 : -1; + }); + } + + listToParts(list) { + // We hardcode `en-US` here because the rest of the interface text is also currently displayed only in English. + return new Intl.ListFormat('en-US').formatToParts(list); + } + + @action startNewToken() { + this.router.transitionTo('settings.tokens.new'); + } + + revokeTokenTask = task(async token => { + try { + await token.destroyRecord(); + + let index = this.args.tokens.indexOf(token); + if (index !== -1) { + this.args.tokens.splice(index, 1); + } + } catch (error) { + let detail = error.errors?.[0]?.detail; + + let msg = + detail && !detail.startsWith('{') + ? `An error occurred while revoking this token, ${detail}` + : 'An unknown error occurred while revoking this token'; + + this.notifications.error(msg); + } + }); +} diff --git a/collector/compile-benchmarks/crates.io/app/components/settings/api-tokens.module.css b/collector/compile-benchmarks/crates.io/app/components/settings/api-tokens.module.css new file mode 100644 index 000000000..f59f9125e --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/settings/api-tokens.module.css @@ -0,0 +1,200 @@ +.me-subheading { + display: flex; + + .right { + flex: 2; + display: flex; + justify-content: flex-end; + align-self: center; + } +} + +.explainer { + line-height: 1.5; +} + +.token-list { + margin: var(--space-m) 0; + padding: 0; + list-style: none; + border-radius: var(--space-3xs); + background-color: light-dark(white, #141413); + box-shadow: 0 1px 3px light-dark(hsla(51, 90%, 42%, .35), #232321); + + > * { + padding: var(--space-m); + } + + > * + * { + border-top: 1px solid light-dark(hsla(51, 90%, 42%, .25), #424242); + } +} + +.name { + margin: 0 0 var(--space-s); + font-weight: 500; +} + +.scopes, +.metadata { + > * + * { + margin-top: var(--space-3xs); + } +} + +.scopes { + margin-bottom: var(--space-xs); +} + +.new-token-form { + padding: var(--space-m); + border-radius: var(--space-3xs); + background-color: white; + box-shadow: 0 2px 3px hsla(51, 50%, 44%, .35); + margin-top: var(--space-m); + + .input { + padding: var(--space-2xs); + width: 100%; + border: 1px solid #ada796; + border-radius: var(--space-3xs); + } +} + +.actions { + margin-top: var(--space-s); + display: flex; + align-items: center; +} + +.spinner { + margin-left: var(--space-xs); +} + +.revoke-button { + flex-grow: 1; + border-radius: var(--space-3xs); +} + +.regenerate-button { + flex-grow: 1; + border-radius: var(--space-3xs); +} + +.new-token { + margin-top: var(--space-s); +} + +.new-token-explainer { + font-size: 20px; +} + +.token-display { + display: grid; + grid-template-columns: 1fr auto; + align-items: center; + background: var(--main-color); + color: light-dark(white, #141413); + font-family: var(--font-monospace); + border-radius: var(--space-3xs); + margin-top: var(--space-xs); +} + +.token-value { + padding: var(--space-s); + user-select: all; +} + +.copy-button { + align-self: stretch; + padding: 0 var(--space-s); + cursor: pointer; + + &:hover { + color: light-dark(#ddd8b2, #65655e); + } +} + +.copy-button-icon { + width: auto; + height: 1.3em; +} + +.empty-state { + display: grid; + place-items: center; + align-content: center; + margin: var(--space-m) 0; + padding: var(--space-xl-2xl); + border: 2px light-dark(black, white) dashed; + border-radius: var(--space-3xs); + background-color: light-dark(white, #141413); + box-shadow: 0 2px 3px light-dark(hsla(51, 50%, 45%, .35), #232321); +} + +.empty-state-label { + font-size: 20px; +} + +.empty-state-button { + margin-top: var(--space-m); + border-radius: 4px; +} + +.expired { + opacity: 0.6; +} + +@media (min-width: 640px) { + .new-token-form { + display: grid; + grid-template-columns: 1fr auto; + align-items: stretch; + padding: var(--space-s) var(--space-m); + + .actions { + margin: 0 0 0 var(--space-xs); + } + } + + + .row { + display: grid; + grid-template: + "name actions" auto + "scopes actions" auto + "metadata actions" auto + "details details" auto + / 1fr auto; + + .scopes { + grid-area: scopes; + } + + .metadata { + grid-area: metadata; + } + + .actions { + display: flex; + flex-direction: column; + grid-area: actions; + align-self: start; + margin: 0 0 0 var(--space-xs); + } + + .actions > * { + flex-grow: 1; + width: 100%; + + & + * { + margin-top: var(--space-xs); + } + } + + .new-token { + grid-area: details; + margin-bottom: 0; + } + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/side-menu.hbs b/collector/compile-benchmarks/crates.io/app/components/side-menu.hbs new file mode 100644 index 000000000..1e232c598 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/side-menu.hbs @@ -0,0 +1,3 @@ +
      + {{yield (hash Item=(component "side-menu/item"))}} +
    \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/side-menu.module.css b/collector/compile-benchmarks/crates.io/app/components/side-menu.module.css new file mode 100644 index 000000000..880066e34 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/side-menu.module.css @@ -0,0 +1,9 @@ +.list { + list-style: none; + margin: 0; + padding: 0; + + > * + * { + margin-top: var(--space-3xs); + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/side-menu/item.hbs b/collector/compile-benchmarks/crates.io/app/components/side-menu/item.hbs new file mode 100644 index 000000000..9190eac58 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/side-menu/item.hbs @@ -0,0 +1,3 @@ +
  • + {{yield}} +
  • \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/side-menu/item.module.css b/collector/compile-benchmarks/crates.io/app/components/side-menu/item.module.css new file mode 100644 index 000000000..01f2b24b1 --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/side-menu/item.module.css @@ -0,0 +1,22 @@ +.link { + display: block; + padding: var(--space-2xs) var(--space-xs); + border-radius: var(--space-3xs); + color: var(--main-color-light); + transition: all var(--transition-medium) ease-in; + + &:hover { + background-color: var(--main-bg-dark); + color: var(--main-color); + transition: none; + } +} + +.active { + background-color: var(--main-bg-dark); + color: var(--main-color); + + &:hover { + background-color: light-dark(#e5e1cd, #262522); + } +} diff --git a/collector/compile-benchmarks/crates.io/app/components/sort-dropdown.hbs b/collector/compile-benchmarks/crates.io/app/components/sort-dropdown.hbs new file mode 100644 index 000000000..2d9ffb65e --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/sort-dropdown.hbs @@ -0,0 +1,10 @@ + + + {{svg-jar "sort" local-class="icon"}} + {{@current}} + + + + {{yield (hash Option=(component "sort-dropdown/option" menu=menu))}} + + \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/sort-dropdown.module.css b/collector/compile-benchmarks/crates.io/app/components/sort-dropdown.module.css new file mode 100644 index 000000000..c381235aa --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/sort-dropdown.module.css @@ -0,0 +1,12 @@ +.trigger { + background-color: var(--main-bg-dark); + font-size: 85%; + padding: var(--space-2xs); + border: none; + border-radius: var(--space-3xs); +} + +.icon { + color: #1a9c5d; + margin-right: var(--space-2xs); +} diff --git a/collector/compile-benchmarks/crates.io/app/components/sort-dropdown/option.hbs b/collector/compile-benchmarks/crates.io/app/components/sort-dropdown/option.hbs new file mode 100644 index 000000000..c0322393a --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/sort-dropdown/option.hbs @@ -0,0 +1,3 @@ +<@menu.Item ...attributes> + {{yield}} + \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/stats-value.hbs b/collector/compile-benchmarks/crates.io/app/components/stats-value.hbs new file mode 100644 index 000000000..69c94dacd --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/stats-value.hbs @@ -0,0 +1,5 @@ +
    + {{@value}} + {{@label}} + {{svg-jar @icon role="img" aria-hidden="true" local-class="icon"}} +
    \ No newline at end of file diff --git a/collector/compile-benchmarks/crates.io/app/components/stats-value.module.css b/collector/compile-benchmarks/crates.io/app/components/stats-value.module.css new file mode 100644 index 000000000..14a0a585f --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/stats-value.module.css @@ -0,0 +1,31 @@ +.stats-value { + display: grid; + grid-template-columns: 1fr auto; + grid-template-rows: auto auto; + justify-items: end; +} + +.value { + font-size: var(--space-m-l); + font-weight: bold; + line-height: 1em; +} + +.label { + grid-column: 1; + grid-row: 2; + color: #76838a; + font-size: var(--space-s); + font-weight: normal; + line-height: 1.6; +} + +.icon { + grid-column: 2; + grid-row: 1 / 3; + width: var(--space-l-xl); + height: var(--space-l-xl); + margin-left: var(--space-s); + margin-top: var(--space-3xs); + color: #76838a; +} diff --git a/collector/compile-benchmarks/crates.io/app/components/support/crate-report-form.hbs b/collector/compile-benchmarks/crates.io/app/components/support/crate-report-form.hbs new file mode 100644 index 000000000..7786da18e --- /dev/null +++ b/collector/compile-benchmarks/crates.io/app/components/support/crate-report-form.hbs @@ -0,0 +1,91 @@ +
    +

    Report A Crate

    + +
    + {{#let (unique-id) as |id|}} + + + {{#if this.crateInvalid}} +
    + Please specify a crate. +
    + {{/if}} + {{/let}} +
    + +
    +
    Reasons
    +
      + {{#each this.reasons as |option|}} +
    • + +
    • + {{/each}} +
    + {{#if this.reasonsInvalid}} +
    + Please choose reasons to report. +
    + {{/if}} +
    + +
    + {{#let (unique-id) as |id|}} + +