From 48912a7926754d8c39767ea8f410c29f095ec115 Mon Sep 17 00:00:00 2001 From: bitbiter-dev Date: Thu, 15 Oct 2026 19:25:51 +1300 Subject: [PATCH 1/2] ci: Run mutation testing in parallel and gate merges through CI gate Stryker was ~72% of the single Build & Test job, and the Docker builds waited behind it, so the required checks took ~12 min. Checks (build, test, coverage, format, helper scripts, schema) and Mutation now run in parallel; PR Docker builds follow Checks and finish long before Stryker. Expected PR gate: ~8.5 min. - CI gate (if: always()) needs Checks, Mutation and Docker; its rule lives in scripts/ci-gate.sh, tested by ci-gate.test.sh. A skipped required check counts as passing on GitHub, so every need must succeed; only the PR Docker builds may be skipped, and only outside pull requests. - Images are pushed only by Publish image, after CI gate, so no edge, sha, version or latest tag can exist for a commit whose checks or mutation score failed. Jobs downstream of the gate check needs..result explicitly, because the implicit success() also sees the transitively skipped PR Docker job. - Badges, high-water mark and Pages move to a master-only publish job, the only job holding contents: write; the badge and mark payloads travel from Mutation as the mutation-state artifact. - Schema diagram no longer waits for anything. - cancel-in-progress applies to pull requests only, so every master commit finishes its pushes and its high-water advance. Considered and rejected: Checks/Mutation as direct required checks (every job rename becomes a protection change), keeping the name Build & Test, letting Docker push right after Checks, a separate format job, and NuGet caching (restore is ~5 s, setup-dotnet caching needs lock files). Requires swapping the required checks to "CI gate" and "CodeQL" immediately before merging. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/ci.yml | 338 ++++++++++++++++++++++++--------------- CLAUDE.md | 3 +- docs/mutation-testing.md | 54 ++++--- scripts/ci-gate.sh | 54 +++++++ scripts/ci-gate.test.sh | 91 +++++++++++ 5 files changed, 387 insertions(+), 153 deletions(-) create mode 100755 scripts/ci-gate.sh create mode 100755 scripts/ci-gate.test.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cb96b5a..4cd86b2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,16 +15,14 @@ on: concurrency: group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true + cancel-in-progress: ${{ github.event_name == 'pull_request' }} jobs: - build-and-test: - name: Build & Test + checks: + name: Checks runs-on: ubuntu-latest permissions: - contents: write - outputs: - pages-artifact: ${{ steps.pages-upload.outcome == 'success' }} + contents: read steps: - uses: actions/checkout@v7 @@ -50,6 +48,14 @@ jobs: if: always() run: cat coverage/report/SummaryGithub.md >> $GITHUB_STEP_SUMMARY + - name: Upload coverage report + if: always() + uses: actions/upload-artifact@v7 + with: + name: coverage-report + path: coverage/report/ + retention-days: 30 + - name: Check formatting run: dotnet format --verify-no-changes src/ @@ -68,13 +74,30 @@ jobs: scripts/assemble-pages.test.sh scripts/mutation-ratchet.test.sh scripts/derive-db-docs.test.sh + scripts/ci-gate.test.sh # Regenerates docs/schema.sql and fails if anything moved. No database is needed — - # `dotnet ef dbcontext script` works off the model — so this stays in the build job - # rather than the database-docs job below. See docs/adr/0004-schema-documentation.md. + # `dotnet ef dbcontext script` works off the model — so this stays in this job rather + # than the database-docs job below. It runs with --no-build, so it must follow Build. + # See docs/adr/0004-schema-documentation.md. - name: Schema documentation is current run: scripts/derive-db-docs.sh --check + mutation: + name: Mutation + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - uses: actions/checkout@v7 + + - uses: actions/setup-dotnet@v6 + with: + dotnet-version: '10.0.x' + + - name: Restore .NET tools + run: dotnet tool restore + # Reads the ratchet's stored high-water mark from the badges branch and # turns it into Stryker flags. See docs/mutation-testing.md, "The ratchet". # @@ -132,8 +155,7 @@ jobs: echo "flags=$flags" >> "$GITHUB_OUTPUT" echo "mark=$mark" >> "$GITHUB_OUTPUT" - # Deferred enforcement — see docs/mutation-testing.md. Must run before the - # badge step, which switches the tree to the badges branch. + # Deferred enforcement — see docs/mutation-testing.md. - name: Mutation test id: mutation continue-on-error: true @@ -164,69 +186,208 @@ jobs: path: mutation/reports/ retention-days: 30 - # Written to RUNNER_TEMP, not the work tree: the badge step below switches - # to the badges branch, where scripts/ does not exist. - # # The write is staged through a temp file and moved only on success. # Redirecting straight to the final path would create it before the # generator ran, so a refused report would leave a zero-byte file for the # badge step to publish — destroying a working badge. The badge step # validates the payload as well; both guards are cheap and it force-pushes. - # - # continue-on-error is required, not belt-and-braces: without it a failure - # here would skip the badge, Pages and formatting steps below, which is - # the trap documented on the Enforce step. - name: Build mutation badge payload if: always() continue-on-error: true run: | - scripts/mutation-report.sh badge mutation/reports/mutation-report.json > "$RUNNER_TEMP/mutation.json.tmp" - mv "$RUNNER_TEMP/mutation.json.tmp" "$RUNNER_TEMP/mutation.json" + mkdir -p mutation-state + scripts/mutation-report.sh badge mutation/reports/mutation-report.json > mutation-state/mutation.json.tmp + mv mutation-state/mutation.json.tmp mutation-state/mutation.json # Default-branch only, so an in-flight pull request cannot move the bar # for every other open one. Pull requests still READ the mark above and # are gated against it; they simply never reach this step. # - # continue-on-error and always() for the same reason as the badge payload - # step: "the score did not beat the mark" is the common case, not a - # failure, and it must not skip the publish steps below. The script exits - # 3 to say so. It refuses outright on a sweep with pending mutants — - # recording a score from an interrupted run would raise the bar - # permanently on a measurement that never happened. + # "The score did not beat the mark" is the common case, not a failure; + # the script exits 3 to say so. It refuses outright on a sweep with + # pending mutants — recording a score from an interrupted run would raise + # the bar permanently on a measurement that never happened. - name: Advance the high-water mark if: always() && github.ref == 'refs/heads/master' continue-on-error: true env: MARK: ${{ steps.gate.outputs.mark }} run: | - out="$RUNNER_TEMP/highwater-new.json" + mkdir -p mutation-state + out=mutation-state/highwater-new.json scripts/mutation-ratchet.sh advance src/stryker-config.json \ mutation/reports/mutation-report.json "$MARK" > "$out.tmp" mv "$out.tmp" "$out" printf 'raising the high-water mark to %s%%\n' "$(jq -r '.mark' "$out")" - - name: Upload coverage report - if: always() + # Absent files are meaningful to publish-badges.sh: no payload leaves the + # badge alone, no highwater-new.json leaves the stored mark alone. + - name: Upload badge and high-water state + if: always() && github.ref == 'refs/heads/master' uses: actions/upload-artifact@v7 + with: + name: mutation-state + path: mutation-state/*.json + if-no-files-found: ignore + retention-days: 1 + + # Any non-zero Stryker exit counts — 2 is a break-threshold violation, + # 1 is Stryker itself failing. + - name: Enforce mutation score + if: always() && steps.mutation.outcome == 'failure' + run: | + echo "::error::Mutation testing failed. See the job summary for the score, and the mutation-report artifact for surviving mutants." + exit 1 + + docker: + name: Docker — ${{ matrix.name }} + runs-on: ubuntu-latest + needs: checks + if: github.event_name == 'pull_request' || (github.event_name == 'workflow_dispatch' && !inputs.push_to_registry) + permissions: + contents: read + strategy: + fail-fast: false + matrix: + include: + - name: API + repo: anichron-api + dockerfile: src/Anichron.API/Dockerfile + - name: Worker + repo: anichron-worker + dockerfile: src/Anichron.Worker/Dockerfile + + steps: + - uses: actions/checkout@v7 + + - uses: docker/setup-qemu-action@v4 + + - uses: docker/setup-buildx-action@v4 + + - name: Build ${{ matrix.name }} + uses: docker/build-push-action@v7 + with: + context: src + file: ${{ matrix.dockerfile }} + platforms: linux/amd64,linux/arm64 + push: false + cache-from: type=registry,ref=${{ vars.DOCKERHUB_USERNAME }}/${{ matrix.repo }}:edge + provenance: false + secrets: | + sixlabors_license=${{ secrets.SIXLABORS_LICENSE_KEY }} + + gate: + name: CI gate + runs-on: ubuntu-latest + needs: [checks, mutation, docker] + if: always() + permissions: + contents: read + steps: + - uses: actions/checkout@v7 + + - name: Every required job succeeded + env: + EVENT: ${{ github.event_name }} + NEEDS: ${{ toJSON(needs) }} + run: scripts/ci-gate.sh "$EVENT" "$NEEDS" docker + + docker-publish: + name: Publish image — ${{ matrix.name }} + runs-on: ubuntu-latest + needs: gate + if: >- + ${{ !cancelled() && needs.gate.result == 'success' + && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/v') || inputs.push_to_registry == true) }} + permissions: + contents: read + strategy: + fail-fast: false + matrix: + include: + - name: API + repo: anichron-api + dockerfile: src/Anichron.API/Dockerfile + - name: Worker + repo: anichron-worker + dockerfile: src/Anichron.Worker/Dockerfile + + steps: + - uses: actions/checkout@v7 + + - uses: docker/setup-qemu-action@v4 + + - uses: docker/setup-buildx-action@v4 + + - uses: docker/login-action@v4 + with: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - uses: docker/metadata-action@v6 + id: meta + with: + images: ${{ vars.DOCKERHUB_USERNAME }}/${{ matrix.repo }} + flavor: | + latest=false + tags: | + type=sha,prefix=sha-,format=short + type=raw,value=edge,enable={{is_default_branch}} + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} + type=raw,value=latest,enable=${{ startsWith(github.ref, 'refs/tags/v') && !contains(github.ref_name, '-') }} + + - name: Build and push ${{ matrix.name }} + uses: docker/build-push-action@v7 + with: + context: src + file: ${{ matrix.dockerfile }} + platforms: linux/amd64,linux/arm64 + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=registry,ref=${{ vars.DOCKERHUB_USERNAME }}/${{ matrix.repo }}:edge + cache-to: type=inline + provenance: false + secrets: | + sixlabors_license=${{ secrets.SIXLABORS_LICENSE_KEY }} + + # Not gated on the mutation result, so a failed sweep still publishes its + # report — see docs/mutation-testing.md. + publish: + name: Publish quality reports + runs-on: ubuntu-latest + needs: [checks, mutation] + if: ${{ !cancelled() && github.ref == 'refs/heads/master' && needs.checks.result == 'success' }} + permissions: + contents: write + outputs: + pages-artifact: ${{ steps.pages-upload.outcome == 'success' }} + steps: + - uses: actions/checkout@v7 + + - uses: actions/download-artifact@v8 with: name: coverage-report - path: coverage/report/ - retention-days: 30 + path: coverage/report + + - uses: actions/download-artifact@v8 + continue-on-error: true + with: + name: mutation-report + path: mutation/reports - # Assembles both reports into one artifact. Runs BEFORE the badge step, - # and that order is load-bearing — see docs/mutation-testing.md, "Why it + - uses: actions/download-artifact@v8 + continue-on-error: true + with: + name: mutation-state + path: ${{ runner.temp }}/mutation-state + + # Before the badge step, which switches the tree to the badges branch, + # where scripts/ does not exist. See docs/mutation-testing.md, "Why it # runs before the badge step". - # - # What the order COSTS, which is not nothing: this step has a bare `if:`, - # so it implies success(), and an assemble failure now skips the badge - # publish below. The previous order carried the same coupling reversed — - # a badge failure skipped the Pages steps. Reordering moved the coupling - # rather than removing it. This direction is preferred because assembling - # is the cheaper and more deterministic of the two: failing before the - # branch switch beats discovering it afterwards, on a branch where - # scripts/ no longer exists. - name: Assemble Pages site - if: github.ref == 'refs/heads/master' run: scripts/assemble-pages.sh coverage/report mutation/reports pages-site # Branch manipulation lives in a script so it can be tested against a @@ -234,14 +395,9 @@ jobs: # the badges branch rather than rebuilding it, which is what keeps the # mutation badge and the ratchet's stored high-water mark alive. - name: Update quality badges - if: github.ref == 'refs/heads/master' env: - MUTATION_BADGE: ${{ runner.temp }}/mutation.json - # Written only when the score actually beat the mark. When it did - # not, the path simply does not exist, and publish-badges.sh treats - # an absent payload as "leave the stored mark alone" — the same - # semantics as the badge, so no extra conditional is needed here. - HIGHWATER: ${{ runner.temp }}/highwater-new.json + MUTATION_BADGE: ${{ runner.temp }}/mutation-state/mutation.json + HIGHWATER: ${{ runner.temp }}/mutation-state/highwater-new.json run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" @@ -251,29 +407,15 @@ jobs: # deploy-pages job. Renaming the step is fine; dropping the id is not. - name: Upload Pages artifact id: pages-upload - if: github.ref == 'refs/heads/master' uses: actions/upload-pages-artifact@v5 with: path: pages-site/ - # Deliberately the last step, and deliberately inside this job rather than a - # job of its own: "Build & Test" is a required status check, so failing here is - # what actually blocks a merge. Any non-zero Stryker exit counts — 2 is a - # break-threshold violation, 1 is Stryker itself failing. - - name: Enforce mutation score - if: always() && steps.mutation.outcome == 'failure' - run: | - echo "::error::Mutation testing failed. See the job summary for the score, and the mutation-report artifact for surviving mutants." - exit 1 - deploy-pages: name: Deploy quality reports to Pages runs-on: ubuntu-latest - needs: build-and-test - # !cancelled() rather than the implicit success(), so a failed mutation gate - # still deploys the reports. Gated on the artifact actually existing, so an - # earlier failure skips this cleanly instead of failing with no artifact. - if: ${{ !cancelled() && github.ref == 'refs/heads/master' && needs.build-and-test.outputs.pages-artifact == 'true' }} + needs: publish + if: ${{ !cancelled() && github.ref == 'refs/heads/master' && needs.publish.outputs.pages-artifact == 'true' }} permissions: pages: write id-token: write @@ -292,16 +434,15 @@ jobs: # exactly what drifted before (see docs/adr/0004-schema-documentation.md); an artefact cannot # go stale because it is rebuilt from the migrations on every run. # - # ⛔ Separate from build-and-test because it needs a live PostgreSQL. The committed - # docs/schema.sql needs none, so its drift gate stays in the build job and keeps working on - # runners that hold no Docker daemon. + # ⛔ Separate from checks because it needs a live PostgreSQL. The committed docs/schema.sql + # needs none, so its drift gate stays in the checks job and keeps working on runners that + # hold no Docker daemon. # # ⚠️ Deliberately NOT a required check. It documents; it does not gate. `continue-on-error` # keeps a tbls or container hiccup from blocking a merge on a schema that is otherwise fine. database-docs: name: Schema diagram runs-on: ubuntu-latest - needs: build-and-test continue-on-error: true services: @@ -336,7 +477,7 @@ jobs: # connection string and never reads IConfiguration, so those variables would be read by # nobody — present only to mislead the next person debugging this job. run: | - # Three prerequisites this job does NOT inherit from build-and-test, each of which + # Two prerequisites this job does NOT inherit from the checks job, each of which # failed it in turn before being added. It is a separate job on a clean checkout: # 1. dotnet-ef is a MANIFEST tool — `--global` is ignored inside a repo carrying # dotnet-tools.json, and `dotnet ef` then demands a restore. @@ -373,60 +514,3 @@ jobs: name: schema-docs path: schema-docs/ retention-days: 30 - - docker: - name: Docker — ${{ matrix.name }} - runs-on: ubuntu-latest - needs: build-and-test - strategy: - fail-fast: false - matrix: - include: - - name: API - repo: anichron-api - dockerfile: src/Anichron.API/Dockerfile - - name: Worker - repo: anichron-worker - dockerfile: src/Anichron.Worker/Dockerfile - - steps: - - uses: actions/checkout@v7 - - - uses: docker/setup-qemu-action@v4 - - - uses: docker/setup-buildx-action@v4 - - - uses: docker/login-action@v4 - if: github.event_name != 'pull_request' - with: - username: ${{ vars.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - uses: docker/metadata-action@v6 - id: meta - with: - images: ${{ vars.DOCKERHUB_USERNAME }}/${{ matrix.repo }} - flavor: | - latest=false - tags: | - type=sha,prefix=sha-,format=short - type=raw,value=edge,enable={{is_default_branch}} - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=semver,pattern={{major}} - type=raw,value=latest,enable=${{ startsWith(github.ref, 'refs/tags/v') && !contains(github.ref_name, '-') }} - - - name: Build and push ${{ matrix.name }} - uses: docker/build-push-action@v7 - with: - context: src - file: ${{ matrix.dockerfile }} - platforms: linux/amd64,linux/arm64 - push: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/v') || inputs.push_to_registry == true }} - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - cache-from: type=registry,ref=${{ vars.DOCKERHUB_USERNAME }}/${{ matrix.repo }}:edge - cache-to: type=inline - provenance: false - secrets: | - sixlabors_license=${{ secrets.SIXLABORS_LICENSE_KEY }} diff --git a/CLAUDE.md b/CLAUDE.md index 53c4c74..394ffce 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -164,7 +164,8 @@ Processing uses a bounded-concurrency `Channel` pipeline. The crawler produce - Worker Dockerfile targets `mcr.microsoft.com/dotnet/runtime:10.0-noble` (not Alpine); published as multi-arch (`linux/amd64` + `linux/arm64`). `intel-media-va-driver` installed on `amd64` only; GPU fallback handles its absence at runtime. - API Dockerfile uses Alpine (no GPU/FFmpeg needed) -- CI/CD runs on GitHub Actions (`.github/workflows/ci.yml`); API and Worker images built in parallel; tagged `sha-` on every build, `edge` on master, SemVer tags on releases +- CI/CD runs on GitHub Actions (`.github/workflows/ci.yml`); API and Worker images built in parallel; pushed only after `CI gate` passes, tagged `sha-` on every master build, `edge` on master, SemVer tags on releases +- Branch protection requires only `CI gate` and `CodeQL`. To make a new job required, add it to the gate's `needs`, never to branch protection. The gate's rule is `scripts/ci-gate.sh` - PostgreSQL connection is never hardcoded — always read from `POSTGRES_CONNECTION__*` env vars or Docker secrets - CORS allowed origins configured via `CORS__ALLOWEDORIGINS` env var (comma-separated); the same value switches the refresh cookie to `SameSite=None`. Leave empty for same-origin / reverse proxy deployments. - `X-Forwarded-For` is honoured only from loopback or from addresses listed in `FORWARDEDHEADERS__KNOWNPROXIES` / `FORWARDEDHEADERS__KNOWNNETWORKS` (comma-separated IPs / CIDRs; `ForwardLimit = 1`). Rate limiting partitions on the resulting client IP, so a reverse-proxy deployment must set one of these or all clients share the proxy's bucket. Never trust the Docker bridge network for a directly published port — that lets any client spoof its IP. diff --git a/docs/mutation-testing.md b/docs/mutation-testing.md index 5ba2fa5..6e61013 100644 --- a/docs/mutation-testing.md +++ b/docs/mutation-testing.md @@ -58,23 +58,26 @@ Stryker exits `2` when the score is below the `break` threshold in the config what its documentation says — so CI treats any non-zero value as failure rather than matching on a specific code. -In CI the sweep runs with `continue-on-error` and the job's **last** step fails on the outcome. -Three constraints force that shape, and changing any part of it tends to break one of the others: +In CI the sweep runs in its own `Mutation` job, in parallel with `Checks`, with +`continue-on-error` on the sweep and the job's **last** step failing on the outcome. Three +constraints force that shape, and changing any part of it tends to break one of the others: - GitHub applies an implicit `success()` to any `if:` without a status-check function. A step that - aborted mid-job would therefore silently skip the formatting result, the coverage badge push and - the Pages upload — so enforcement has to be deferred to the end. -- Enforcement must stay **inside the `Build & Test` job**, because that job is a required status - check on the default branch. A separate gate job would turn the workflow red but could not block - a merge until someone added it to the required-checks list. + aborted mid-job would therefore silently skip the summary, the report upload and the badge and + high-water payloads — so enforcement has to be deferred to the end. +- The `Mutation` job is not itself a required check. It blocks a merge through `CI gate`, the one + required check this workflow reports, which fails unless `Checks`, `Mutation` and the pull-request + Docker builds all succeeded (`scripts/ci-gate.sh`). - A job-level `if:` does **not** relax a `needs:` success requirement — only `always()` or - `!cancelled()` does. So `deploy-pages` uses `!cancelled()`, guarded on the Pages artifact - actually having been uploaded, which keeps the coverage report deploying when the gate fails - while still skipping cleanly when an earlier failure meant no artifact was produced. + `!cancelled()` does, and the implicit `success()` looks at *every* upstream job, not only the + direct ones. So `publish` uses `!cancelled()` plus an explicit `needs.checks.result`, and + `deploy-pages` uses `!cancelled()` guarded on the Pages artifact actually having been uploaded. + That keeps the reports publishing when the gate fails, while still skipping cleanly when an + earlier failure meant no artifact was produced. -A mutation regression therefore fails a required check and blocks the merge, without suppressing -the formatting result, the coverage artifact, the badge or the Pages deployment. The Docker jobs -do get skipped, since they need `Build & Test` to succeed. +A mutation regression therefore fails `CI gate` and blocks the merge, without suppressing the +coverage artifact, the badge or the Pages deployment. Image pushes do get skipped: they run only +after `CI gate` succeeds. ## Configuration @@ -183,8 +186,10 @@ scratch and wipe every artifact on it. The fetch is forcing, so a local `badges` earlier run cannot diverge and then be pushed over the top of the remote. Note the ordering constraint in CI: the badge payload is generated **before** this script runs, -because checking out `badges` removes `scripts/` from the work tree. The payload goes to -`$RUNNER_TEMP`, outside the repository entirely. +because checking out `badges` removes `scripts/` from the work tree. The `Mutation` job writes the +payload and any new high-water mark, and hands them to the `publish` job as the `mutation-state` +artifact, which is downloaded into `$RUNNER_TEMP`, outside the repository entirely. A file missing +from that artifact means "nothing new", exactly as an absent path does. ## Publishing the report @@ -221,8 +226,8 @@ page says the mutation report is unavailable *for this build*, naming the distin the sweep **failed** rather than scored badly. An earlier draft of this script enforced "both reports or neither" and failed when either was -missing. That was wrong in two ways. It would fail the required `Build & Test` check a second time -for a reason that is only about publishing, when the mutation gate had already reported the real +missing. That was wrong in two ways. It would fail CI a second time for a reason that is only +about publishing, when the mutation gate had already reported the real problem. And it would publish *nothing* — losing the coverage report, which used to ship regardless of the mutation outcome. A missing report is honest; a stale one is misleading; neither is worth blocking a merge over. @@ -283,16 +288,15 @@ mark whose derived gate falls below the committed floor, and a mark high enough chain is asserted directly, since that inequality is what Stryker rejects before it mutates anything. -All four run in CI, in the `Build & Test` job ahead of the mutation sweep — so they are skipped, not -run, if the build, tests, coverage or formatting steps have already failed. +All four run in CI, in the `Checks` job — so they are skipped, not run, if the build, tests, +coverage or formatting steps have already failed. -They are deliberately *not* isolated into their own job, even though `publish-badges.test.sh` -executes real `git push` commands inside a checkout that holds push credentials. A separate job -would not gate a merge: branch protection requires `Build & Test`, and adding a new required check -is a repository-settings change. The test script instead guards itself twice — every setup step is -checked, and it refuses to run at all unless `origin` resolves inside its own temp directory. +`publish-badges.test.sh` executes real `git push` commands, but the `Checks` job's checkout holds +only a read token; push rights exist only in the master-only `publish` job. The test script still +guards itself twice — every setup step is checked, and it refuses to run at all unless `origin` +resolves inside its own temp directory. -One consequence worth knowing: because the badge publishing step runs after these tests, a failing +One consequence worth knowing: because the `publish` job needs `Checks` to succeed, a failing helper test stops the coverage badge and the Pages upload too. That is intended for the badge — a publisher whose tests fail should not publish — but it does mean the Pages site can go stale on a failure unrelated to coverage. diff --git a/scripts/ci-gate.sh b/scripts/ci-gate.sh new file mode 100755 index 0000000..23149ad --- /dev/null +++ b/scripts/ci-gate.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash +# Usage: ci-gate.sh [pull-request-only-job ...] +# +# Exits 0 when every job in (the workflow's `toJSON(needs)`) +# succeeded. A pull-request-only job may also be skipped, but only when the +# event is not a pull request. Anything else exits 1 and names each job at fault. +set -euo pipefail + +if [ "$#" -lt 2 ]; then + echo 'usage: ci-gate.sh [pull-request-only-job ...]' >&2 + exit 2 +fi + +event="$1" +needs="$2" +shift 2 + +if ! jq -e 'type == "object"' >/dev/null 2>&1 <<<"$needs"; then + echo 'needs is not a JSON object' >&2 + exit 2 +fi + +if [ "$(jq 'length' <<<"$needs")" -eq 0 ]; then + echo 'needs lists no jobs; the gate would pass vacuously' >&2 + exit 2 +fi + +for job in "$@"; do + if ! jq -e --arg job "$job" 'has($job)' >/dev/null <<<"$needs"; then + echo "pull-request-only job '$job' is not in needs" >&2 + exit 2 + fi +done + +pr_only=$(printf '%s\n' "$@" | jq -R . | jq -sc 'map(select(. != ""))') + +blocked=$(jq -r --arg event "$event" --argjson pr_only "$pr_only" ' + to_entries[] + | .key as $job + | select( + .value.result != "success" + and ((.value.result == "skipped" and $event != "pull_request" and ($pr_only | index($job) != null)) | not) + ) + | "\(.key): \(.value.result)" +' <<<"$needs") + +jq -r 'to_entries[] | "\(.key): \(.value.result)"' <<<"$needs" + +if [ -n "$blocked" ]; then + echo + echo 'blocked by:' >&2 + printf ' %s\n' "$blocked" >&2 + exit 1 +fi diff --git a/scripts/ci-gate.test.sh b/scripts/ci-gate.test.sh new file mode 100755 index 0000000..709cfb1 --- /dev/null +++ b/scripts/ci-gate.test.sh @@ -0,0 +1,91 @@ +#!/usr/bin/env bash +# Tests for ci-gate.sh. Run: scripts/ci-gate.test.sh +set -uo pipefail + +here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +script="$here/ci-gate.sh" +failures=0 + +pass() { printf ' ok %s\n' "$1"; } +fail() { printf ' FAIL %s\n expected: %s\n actual: %s\n' "$1" "$2" "$3"; failures=$((failures + 1)); } + +assert_contains() { + case "$3" in + *"$2"*) pass "$1" ;; + *) fail "$1" "output containing '$2'" "$3" ;; + esac +} + +assert_passes() { + local label="$1"; shift + local out status + out=$("$@" 2>&1); status=$? + if [ "$status" -eq 0 ]; then pass "$label"; else fail "$label" 'exit 0' "exit $status with: $out"; fi +} + +assert_fails() { + local label="$1" needle="$2"; shift 2 + local out status + out=$("$@" 2>&1); status=$? + if [ "$status" -eq 0 ]; then + fail "$label" "non-zero exit" "exit 0 with: $out" + else + assert_contains "$label" "$needle" "$out" + fi +} + +needs() { + local json='{' sep='' pair + for pair in "$@"; do + json+="$sep\"${pair%%=*}\":{\"result\":\"${pair#*=}\",\"outputs\":{}}" + sep=',' + done + printf '%s}' "$json" +} + +echo "pull requests" + +assert_passes 'every job succeeded' \ + "$script" pull_request "$(needs checks=success mutation=success docker=success)" docker +assert_fails 'a failed job blocks' 'mutation: failure' \ + "$script" pull_request "$(needs checks=success mutation=failure docker=success)" docker +assert_fails 'a cancelled job blocks' 'checks: cancelled' \ + "$script" pull_request "$(needs checks=cancelled mutation=success docker=success)" docker +assert_fails 'a skipped job blocks' 'checks: skipped' \ + "$script" pull_request "$(needs checks=skipped mutation=success docker=success)" docker +assert_fails 'a skipped pull-request-only job blocks on a pull request' 'docker: skipped' \ + "$script" pull_request "$(needs checks=success mutation=success docker=skipped)" docker +assert_fails 'every blocking job is named, not only the first' 'mutation: failure' \ + "$script" pull_request "$(needs checks=failure mutation=failure docker=success)" docker + +echo "pushes" + +assert_passes 'a skipped pull-request-only job passes outside a pull request' \ + "$script" push "$(needs checks=success mutation=success docker=skipped)" docker +assert_passes 'a pull-request-only job that ran and succeeded still passes' \ + "$script" workflow_dispatch "$(needs checks=success mutation=success docker=success)" docker +assert_fails 'a failed pull-request-only job blocks outside a pull request' 'docker: failure' \ + "$script" push "$(needs checks=success mutation=success docker=failure)" docker +assert_fails 'a skipped job that is not pull-request-only blocks outside a pull request' 'mutation: skipped' \ + "$script" push "$(needs checks=success mutation=skipped docker=skipped)" docker +assert_fails 'with no pull-request-only jobs, a skip blocks on a push too' 'docker: skipped' \ + "$script" push "$(needs checks=success mutation=success docker=skipped)" + +echo "misconfiguration" + +assert_fails 'an empty needs object is refused' 'no jobs' \ + "$script" push '{}' +assert_fails 'input that is not JSON is refused' 'not a JSON object' \ + "$script" push 'not json' +assert_fails 'a pull-request-only job missing from needs is refused' 'dockr' \ + "$script" push "$(needs checks=success mutation=success docker=skipped)" dockr +assert_fails 'a missing event name is refused' 'usage' \ + "$script" + +echo +if [ "$failures" -eq 0 ]; then + echo 'all ci-gate tests passed' +else + echo "$failures ci-gate test(s) failed" + exit 1 +fi From d7c9b2794e0f153fbd2622886b9c16bc080e9394 Mon Sep 17 00:00:00 2001 From: bitbiter-dev Date: Thu, 15 Oct 2026 19:28:59 +1300 Subject: [PATCH 2/2] chore: Regenerate graphify knowledge graph Co-Authored-By: Claude Opus 5.5 --- graphify-out/GRAPH_REPORT.md | 526 +- graphify-out/graph.json | 16960 +++++++++++++++++---------------- 2 files changed, 8865 insertions(+), 8621 deletions(-) diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md index 3282b57..a72a05b 100644 --- a/graphify-out/GRAPH_REPORT.md +++ b/graphify-out/GRAPH_REPORT.md @@ -1,17 +1,17 @@ -# Graph Report - fix-221-originals-namespace (2026-10-15) +# Graph Report - ci-parallelize (2026-10-15) ## Corpus Check -- 283 files · ~100,432 words +- 285 files · ~101,130 words - Verdict: corpus is large enough that graph structure adds value. - Unclassified: 12 file(s) not represented in the graph (top: (none) 7, .props 2, .example 1) ## Summary -- 6592 nodes · 12922 edges · 441 communities (428 shown, 13 thin omitted) +- 6602 nodes · 12938 edges · 423 communities (410 shown, 13 thin omitted) - Extraction: 95% EXTRACTED · 5% INFERRED · 0% AMBIGUOUS · INFERRED: 680 edges (avg confidence: 0.84) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `23a13655` +- Built from commit: `48912a79` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -45,9 +45,9 @@ - TestFixture - FileIngestionPipeline - Anichron.API.Tests.Unit/packages.lock.json -- Worker +- ProxyStagingWriter - dependencies -- UserStorageConfig +- IIngestionMiddleware - JwtFactoryTests - Anichron.API.Infrastructure - FfmpegVideoProcessorTests @@ -87,7 +87,7 @@ - SixLabors.ImageSharp - Microsoft.EntityFrameworkCore - .InvokeAsync_KnownHash_DoesNotCallNextAsync -- IdempotencyCheckMiddleware +- .Create - TestFixture - TestFixture - ProxyBound @@ -112,7 +112,7 @@ - Microsoft.Extensions.Primitives - Microsoft.Extensions.Configuration.Abstractions - OriginalsStorageHealthCheck -- Microsoft.Extensions.Primitives +- Microsoft.Extensions.Logging.Abstractions - ApiPaths - dependencies - dependencies @@ -250,7 +250,7 @@ - TestFixture - Mono.TextTemplating - TestFixture -- EfUserStorageConfigRepository +- VideoProxyMiddleware - xunit.v3.common - TestFixture - Architecture @@ -299,55 +299,55 @@ - Mutation scope: exclude generated, append-only code; include everything we author - Microsoft.Extensions.Hosting - Microsoft.VisualStudio.Threading.Analyzers -- Files (`mutate` in `src/stryker-config.json`) +- Consequences - SonarAnalyzer.CSharp - Microsoft.VisualStudio.Threading.Analyzers - FluentAssertions - BootstrapResetService -- IIngestionMiddleware +- IngestionPipelineRunner - .EnsureUpToDate_ConcurrentFileCreationRace_NoExceptionThrown - PersistenceMiddleware -- RefreshToken -- StoragePathTests +- LockoutService +- WorkerInitializer - Castle.Core -- TestFixture +- UserStorageConfig - Self-host mutation reports; do not use the Stryker Dashboard - Microsoft.VisualStudio.Threading.Analyzers -- EfRefreshTokenRepository +- ForwardedHeadersRateLimitTests - Microsoft.Bcl.Cryptography -- TestFixture +- IProxyDirectoryStrategy - Microsoft.Extensions.Logging -- WorkerInitializer +- ci-gate.test.sh - Microsoft.IdentityModel.Abstractions - Microsoft.Extensions.Logging.Debug - Newtonsoft.Json -- JwtSettings +- .BuildTargetModel - Anichron.Core.Tests.Unit - System.Composition.Runtime - TestFixture - Konscious.Security.Cryptography.Blake2 -- IniEntry +- .EnsureUpToDate - Microsoft.Bcl.AsyncInterfaces - Microsoft.CodeCoverage - Microsoft.TestPlatform.ObjectModel -- .Read +- .BuildTargetModel - Microsoft.EntityFrameworkCore.Abstractions - Microsoft.Win32.Registry - BootstrapSeeder - Microsoft.Extensions.Diagnostics.ExceptionSummarization - CapturingLogger -- SignallingTimeProvider +- System.IO.Hashing - .MapRoutes - assemble-pages.test.sh - Microsoft.VisualStudio.SolutionPersistence -- AdminCreatedUser +- IUnitOfWork - Log - Blurhash.ImageSharp - Anichron.Worker.Ingestion.Pipeline - Microsoft.Extensions.Logging - Microsoft.EntityFrameworkCore - ExifExtractionMiddlewareTests -- .CreateNpgsqlModelOnlyDb +- Microsoft.Extensions.Options - Microsoft.CodeAnalysis.Analyzers - Microsoft.Extensions.ObjectPool - Microsoft.Extensions.Configuration.Abstractions @@ -384,7 +384,7 @@ - Testably.Abstractions.FileSystem.Interface - assemble-pages.sh - .InvokeAsync -- LivePhotoLinker.cs +- Roslynator.Analyzers - RecordingGenerator - .Detect - Burst @@ -396,7 +396,7 @@ - Microsoft.Extensions.Primitives - Newtonsoft.Json - Microsoft.Testing.Platform -- Castle.Core +- Microsoft.EntityFrameworkCore.Analyzers - System.Composition.Runtime - Microsoft.TestPlatform.ObjectModel - Newtonsoft.Json @@ -406,7 +406,7 @@ - .AddAuthServices_ValidatesEveryPartOfTheTokenWithNoClockSkew - .AddAuthServices_RegistersTheImplementationWithItsLifetime - Microsoft.Extensions.DependencyInjection.AutoActivation -- .ItemFailed +- Microsoft.VisualStudio.SolutionPersistence - Corner - Microsoft.EntityFrameworkCore.Design - SonarAnalyzer.CSharp @@ -414,20 +414,20 @@ - xunit.runner.visualstudio - .BuildTargetModel - Microsoft.Extensions.Primitives -- .BuildTargetModel +- Microsoft.ApplicationInsights - Microsoft.Testing.Platform - .BuildTargetModel -- Microsoft.EntityFrameworkCore.Design -- Microsoft.Extensions.Configuration.Ini -- Microsoft.Extensions.DependencyInjection +- Microsoft.EntityFrameworkCore.Abstractions +- Microsoft.EntityFrameworkCore.Analyzers +- Microsoft.Extensions.Logging.EventSource - Anichron.Infrastructure.Data - triage-labels.md - pre-commit - pre-push -- Roslynator.Analyzers +- Microsoft.TestPlatform.ObjectModel - XmpCore -- Microsoft.Extensions.DependencyInjection -- xunit.runner.visualstudio +- Microsoft.Win32.Registry +- Newtonsoft.Json - Microsoft.EntityFrameworkCore.Analyzers - Microsoft.Extensions.AmbientMetadata.Application - Microsoft.Extensions.Compliance.Abstractions @@ -435,26 +435,8 @@ - Microsoft.Extensions.Primitives - Microsoft.IdentityModel.Abstractions - Microsoft.OpenApi -- Blurhash.Core -- Humanizer.Core -- Microsoft.Build.Framework -- Microsoft.Extensions.Configuration.Binder -- Microsoft.Extensions.Configuration.CommandLine -- Microsoft.Extensions.Configuration.FileExtensions -- Microsoft.Extensions.Configuration.Json -- Microsoft.Extensions.Configuration.UserSecrets -- Microsoft.Extensions.DependencyModel -- Microsoft.Extensions.Diagnostics -- Microsoft.Extensions.Logging.Configuration -- Microsoft.Extensions.Primitives -- System.Diagnostics.EventLog -- Blurhash.Core -- Microsoft.Bcl.AsyncInterfaces -- Microsoft.Extensions.Diagnostics -- Microsoft.Extensions.Hosting.Abstractions -- System.Diagnostics.EventLog -- Testably.Abstractions.FileSystem.Interface -- xunit.analyzers +- xunit.v3.assert +- ci-gate.sh - AuthCookieSettings - ApiIniDefaultsTests @@ -473,14 +455,14 @@ ## Surprising Connections (you probably didn't know these) - `Calls (`ignore-methods`)` --references--> `FileIngestionPipeline` [INFERRED] docs/adr/0005-mutation-scope-excludes-unkillable-and-wiring-code.md → src/Anichron.Worker/Crawling/FileIngestionPipeline.cs +- `Consequences` --references--> `ApiIniDefaults` [INFERRED] + docs/adr/0005-mutation-scope-excludes-unkillable-and-wiring-code.md → src/Anichron.API/Infrastructure/ApiIniDefaults.cs - `Files (`mutate` in `src/stryker-config.json`)` --references--> `ApiIniDefaults` [INFERRED] docs/adr/0005-mutation-scope-excludes-unkillable-and-wiring-code.md → src/Anichron.API/Infrastructure/ApiIniDefaults.cs - `Individual sites (`// Stryker disable once `)` --references--> `Argon2PasswordHasher` [INFERRED] docs/adr/0005-mutation-scope-excludes-unkillable-and-wiring-code.md → src/Anichron.API/Security/PasswordHasher.cs - `Individual sites (`// Stryker disable once `)` --references--> `LoginResponseFloor` [INFERRED] docs/adr/0005-mutation-scope-excludes-unkillable-and-wiring-code.md → src/Anichron.API/Services/LoginResponseFloor.cs -- `Consequences` --references--> `PwnedPasswordClient` [INFERRED] - docs/adr/0005-mutation-scope-excludes-unkillable-and-wiring-code.md → src/Anichron.API/Services/PwnedPasswordClient.cs ## Import Cycles - None detected. @@ -490,39 +472,39 @@ - **CI Pipeline: Build/Test then Pages and Docker** — github_workflows_ci_build_and_test, github_workflows_ci_deploy_pages, github_workflows_ci_docker_job [EXTRACTED 1.00] - **MediaAsset-Centric Domain Graph** — claude_md_mediaasset, claude_md_metadata, claude_md_proxyfile, claude_md_burst, claude_md_assetinteraction [EXTRACTED 1.00] -## Communities (441 total, 13 thin omitted) +## Communities (423 total, 13 thin omitted) ### Community 0 - "TestFixture" Cohesion: 0.05 -Nodes (44): GeneratedRegex, Regex, AuthError, AccountDisabled, AccountTemporarilyLocked, CannotModifySelf, EmailTaken, InvalidCredentials (+36 more) +Nodes (45): GeneratedRegex, Regex, AuthError, AccountDisabled, AccountTemporarilyLocked, CannotModifySelf, EmailTaken, InvalidCredentials (+37 more) ### Community 1 - "AuthResponseMapperTests" Cohesion: 0.12 -Nodes (19): JsonOptions, AdminStorageConfigResponse, AdminUserResponse, AuthResponseMapperTests, TestFixture, DefaultHttpContext, Fact, HttpResponse (+11 more) +Nodes (19): Created, JsonOptions, AuthTokens, AuthResponseMapperTests, TestFixture, DefaultHttpContext, Fact, HttpResponse (+11 more) ### Community 2 - "CorsConfigurationTests" Cohesion: 0.25 Nodes (8): CorsPolicy, CorsConfigurationTests, CorsOptions, Dictionary, Fact, IConfiguration, IOptions, SameSiteMode ### Community 3 - "IngestionPipelineRunnerTests" -Cohesion: 0.17 -Nodes (21): IngestionPipelineRunnerTests, ProxyDirectoryCreatingMiddleware, Order, ProxyWritingMiddleware, Order, TestFixture, DirectoryStrategy, FileSystem (+13 more) +Cohesion: 0.19 +Nodes (18): IngestionPipelineRunnerTests, ProxyWritingMiddleware, Order, TestFixture, DirectoryStrategy, FileSystem, ThrowingMiddleware, Order (+10 more) ### Community 4 - "Anichron" Cohesion: 0.17 Nodes (11): Month/Day Composite Index (On This Day), FFmpeg GPU Detection Fallback Chain, Anichron.UI (Planned NextJS/React), Anichron, Documentation, Get started, Highlights, License (+3 more) ### Community 5 - "EfUserRepository" -Cohesion: 0.29 -Nodes (5): EfUserRepository, AnichronDbContext, UserRepositoryTests, Fact, Task +Cohesion: 0.22 +Nodes (7): EfUserRepository, AnichronDbContext, UserRepositoryTests, Fact, InlineData, Task, Theory ### Community 6 - "ExifExtractionMiddleware" Cohesion: 0.09 Nodes (23): Directory, Individual sites (`// Stryker disable once `), Latitude, LocalDateTimePattern, Longitude, ExifData, Empty, LocalDateTime (+15 more) ### Community 7 - "TestFixture" -Cohesion: 0.19 -Nodes (13): TestFixture, Tokens, UnitOfWork, TokenServiceTests, Action, CancellationToken, Fact, IClock (+5 more) +Cohesion: 0.07 +Nodes (35): TestFixture, Tokens, UnitOfWork, TokenServiceTests, Action, CancellationToken, Fact, IClock (+27 more) ### Community 8 - "Anichron.Worker.Tests.Unit/packages.lock.json" Cohesion: 0.03 @@ -541,24 +523,24 @@ Cohesion: 0.17 Nodes (16): PersistenceMiddlewareTests, TestFixture, Clock, FileSystem, GuidFactory, Now, Repository, UnitOfWork (+8 more) ### Community 12 - "AuthResult" -Cohesion: 0.08 -Nodes (23): PostgresException, AuthResponseMapper, HttpContext, IClock, IResult, List, IPasswordHasher, AuthResult (+15 more) +Cohesion: 0.11 +Nodes (14): AuthResponseMapper, HttpContext, IClock, IResult, List, AuthResult, Error, IsSuccess (+6 more) ### Community 13 - "net10.0" -Cohesion: 0.04 -Nodes (47): dependencies, net10.0, contentHash, resolved, type, contentHash, resolved, type (+39 more) +Cohesion: 0.03 +Nodes (67): contentHash, resolved, type, dependencies, net10.0, contentHash, resolved, type (+59 more) ### Community 14 - "LockoutServiceTests" -Cohesion: 0.15 -Nodes (12): ILockoutService, LockoutService, CancellationToken, Instant, Task, LockoutServiceTests, TestFixture, Fact (+4 more) +Cohesion: 0.39 +Nodes (5): LockoutServiceTests, TestFixture, Fact, Instant, Task ### Community 15 - "TestFixture" Cohesion: 0.16 Nodes (15): ImageProxyMiddlewareTests, TestFixture, Clock, DirectoryStrategy, FileSystem, GuidFactory, ImageProcessor, Now (+7 more) ### Community 16 - "DatabaseMigratorService" -Cohesion: 0.05 -Nodes (46): Attempt, DatabaseStartupRetry, Action, CancellationToken, Exception, Func, Task, TimeProvider (+38 more) +Cohesion: 0.06 +Nodes (42): Attempt, DatabaseStartupRetry, Action, CancellationToken, Exception, Func, Task, TimeProvider (+34 more) ### Community 17 - "TestFixture" Cohesion: 0.22 @@ -569,16 +551,16 @@ Cohesion: 0.04 Nodes (54): Konscious.Security.Cryptography.Blake2, Microsoft.Extensions.Http.Diagnostics, Microsoft.Extensions.Resilience, Microsoft.IdentityModel.JsonWebTokens, Microsoft.IdentityModel.Protocols.OpenIdConnect, Microsoft.OpenApi, Polly.Core, Humanizer.Core (+46 more) ### Community 19 - ".WriteResponseAsync" -Cohesion: 0.25 -Nodes (10): HealthCheckResponseWriter, HealthReport, HttpContext, Task, HealthCheckResponseWriterTests, DefaultHttpContext, Fact, HealthReport (+2 more) +Cohesion: 0.14 +Nodes (16): HealthCheckResponseWriter, HealthReport, HttpContext, Task, JwtConfiguration, IConfiguration, HealthCheckResponseWriterTests, DefaultHttpContext (+8 more) ### Community 20 - "AppIniInitializer" -Cohesion: 0.23 +Cohesion: 0.21 Nodes (6): AppIniInitializer, IFileSystem, AppIniInitializerTests, Action, Fact, IReadOnlyList ### Community 21 - ".Ok" -Cohesion: 0.16 -Nodes (23): microsoft_aspnetcore_mvc, AuthEndpoints, LoginRequest, RefreshRequest, RegisterRequest, CancellationToken, HttpContext, IEndpointRouteBuilder (+15 more) +Cohesion: 0.18 +Nodes (19): microsoft_aspnetcore_mvc, AuthEndpoints, LoginRequest, RefreshRequest, RegisterRequest, CancellationToken, HttpContext, IEndpointRouteBuilder (+11 more) ### Community 22 - "PasswordPolicy" Cohesion: 0.13 @@ -589,36 +571,36 @@ Cohesion: 0.13 Nodes (15): WorkerSettings, BlurhashSampleLongEdge, CrawlIntervalHours, FfmpegPath, MaxConcurrentFiles, PreviewJpegQuality, PreviewLongEdge, ProxyPath (+7 more) ### Community 24 - "MustChangePasswordMiddleware" -Cohesion: 0.11 -Nodes (23): Claim, HttpRequest, Method, Path, PathString, RequestDelegate, MustChangePasswordMiddleware, HttpContext (+15 more) +Cohesion: 0.19 +Nodes (15): Claim, HttpRequest, Method, Path, PathString, RequestDelegate, MustChangePasswordMiddleware, HttpContext (+7 more) ### Community 25 - "SingleFileItem" -Cohesion: 0.19 -Nodes (14): DirectoryNotFoundException, SingleFileItem, PrimaryMediaType, SecondaryFile, FileIngestionPipelineTests, TestFixture, FileSystem, ProcessedContexts (+6 more) +Cohesion: 0.24 +Nodes (12): DirectoryNotFoundException, SingleFileItem, PrimaryMediaType, SecondaryFile, FileIngestionPipelineTests, TestFixture, FileSystem, ProcessedContexts (+4 more) ### Community 26 - "TestFixture" Cohesion: 0.20 Nodes (13): LivePhotoPairingMiddlewareTests, TestFixture, Clock, GuidFactory, Repository, UnitOfWork, CancellationToken, Fact (+5 more) ### Community 27 - "FileIngestionPipeline" -Cohesion: 0.18 -Nodes (15): ChannelReader, ChannelWriter, IList, MediaType, FileIngestionPipeline, IFileIngestionPipeline, CancellationToken, IFileSystem (+7 more) +Cohesion: 0.10 +Nodes (26): ChannelReader, ChannelWriter, IList, IReadOnlySet, MediaType, FileIngestionPipeline, IFileIngestionPipeline, Log (+18 more) ### Community 28 - "Anichron.API.Tests.Unit/packages.lock.json" Cohesion: 0.04 Nodes (51): Microsoft.AspNetCore.TestHost, Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions, Microsoft.Extensions.Http, Microsoft.Extensions.ObjectPool, Castle.Core, Microsoft.ApplicationInsights, Microsoft.Bcl.Cryptography, Microsoft.CodeCoverage (+43 more) -### Community 29 - "Worker" -Cohesion: 0.17 -Nodes (12): BackgroundService, Log, Worker, CancellationToken, Guid, ILogger, IOptions, IServiceScopeFactory (+4 more) +### Community 29 - "ProxyStagingWriter" +Cohesion: 0.12 +Nodes (14): Log, ProxyStagingWriter, CancellationToken, Exception, Func, IClock, IFileSystem, ILogger (+6 more) ### Community 30 - "dependencies" -Cohesion: 0.09 -Nodes (37): Microsoft.Extensions.Configuration, Microsoft.Extensions.Configuration.Abstractions, Microsoft.Extensions.Configuration.Binder, Microsoft.Extensions.Configuration.CommandLine, Microsoft.Extensions.Configuration.EnvironmentVariables, Microsoft.Extensions.Configuration.FileExtensions, Microsoft.Extensions.Configuration.Json, Microsoft.Extensions.Configuration.UserSecrets (+29 more) +Cohesion: 0.03 +Nodes (76): Microsoft.Extensions.Configuration, Microsoft.Extensions.Configuration.Abstractions, Microsoft.Extensions.Configuration.Binder, Microsoft.Extensions.Configuration.CommandLine, Microsoft.Extensions.Configuration.EnvironmentVariables, Microsoft.Extensions.Configuration.FileExtensions, Microsoft.Extensions.Configuration.Json, Microsoft.Extensions.Configuration.UserSecrets (+68 more) -### Community 31 - "UserStorageConfig" -Cohesion: 0.19 -Nodes (14): IUserStorageConfigRepository, CancellationToken, Guid, List, Task, UserStorageConfig, Assets, Id (+6 more) +### Community 31 - "IIngestionMiddleware" +Cohesion: 0.10 +Nodes (15): IServiceProvider, IServiceScope, IIngestionMiddleware, Order, IngestionOrder, CancellationToken, IngestionDelegate, Task (+7 more) ### Community 32 - "JwtFactoryTests" Cohesion: 0.25 @@ -629,12 +611,12 @@ Cohesion: 0.06 Nodes (36): Anichron.API.Tests.Unit.Security, Anichron.API.Tests.Unit.Infrastructure, Anichron.API.Endpoints, Anichron.API.Infrastructure, Anichron.API.Settings, Anichron.API.Tests.Unit.Endpoints, konscious_security_cryptography, microsoft_aspnetcore_authentication (+28 more) ### Community 34 - "FfmpegVideoProcessorTests" -Cohesion: 0.09 -Nodes (30): Exception, SemaphoreSlim, IProcessLauncher, ProcessResult, CancellationToken, IReadOnlyList, Task, SystemProcessLauncher (+22 more) +Cohesion: 0.06 +Nodes (40): Exception, SemaphoreSlim, IProcessLauncher, ProcessResult, CancellationToken, IReadOnlyList, Task, SystemProcessLauncher (+32 more) ### Community 35 - "IAuthResponseMapper" -Cohesion: 0.13 -Nodes (26): AdminEndpoints, CreateStorageConfigRequest, PatchAdminUserRequest, CancellationToken, ClaimsPrincipal, Guid, IEndpointRouteBuilder, IResult (+18 more) +Cohesion: 0.10 +Nodes (33): AdminCreatedUserResponse, AdminEndpoints, AdminPasswordResetResponse, AdminStorageConfigResponse, AdminUserResponse, CreateAdminUserRequest, CreateStorageConfigRequest, PatchAdminUserRequest (+25 more) ### Community 36 - "Anichron.Core.Domain" Cohesion: 0.10 @@ -642,7 +624,7 @@ Nodes (20): Anichron.API.Tests.Unit.Services, Anichron.Core.Tests.Unit.Data, Ani ### Community 37 - "IngestionContext" Cohesion: 0.06 -Nodes (31): Lock, IngestionContext, Asset, AssetId, Config, ContentHash, Exif, Item (+23 more) +Nodes (33): Lock, IngestionContext, Asset, AssetId, Config, ContentHash, Exif, Item (+25 more) ### Community 38 - "dependencies" Cohesion: 0.17 @@ -657,8 +639,8 @@ Cohesion: 0.04 Nodes (47): Castle.Core, Microsoft.ApplicationInsights, Microsoft.Bcl.AsyncInterfaces, Microsoft.CodeCoverage, Microsoft.EntityFrameworkCore, Microsoft.EntityFrameworkCore.Abstractions, Microsoft.EntityFrameworkCore.Analyzers, Microsoft.EntityFrameworkCore.Relational (+39 more) ### Community 41 - "Microsoft.Extensions.DependencyInjection.Abstractions" -Cohesion: 0.05 -Nodes (47): Microsoft.Extensions.Caching.Abstractions, Microsoft.Extensions.DependencyInjection.Abstractions, Microsoft.Extensions.Logging, Microsoft.Extensions.Logging.Configuration, Microsoft.Extensions.Options, System.Diagnostics.EventLog, contentHash, dependencies (+39 more) +Cohesion: 0.04 +Nodes (59): Microsoft.Extensions.Caching.Abstractions, Microsoft.Extensions.DependencyInjection, Microsoft.Extensions.DependencyInjection.Abstractions, Microsoft.Extensions.Diagnostics.Abstractions, Microsoft.Extensions.Logging, Microsoft.Extensions.Logging.Abstractions, Microsoft.Extensions.Logging.Configuration, Microsoft.Extensions.Options (+51 more) ### Community 42 - ".GetConnectionString" Cohesion: 0.25 @@ -673,12 +655,12 @@ Cohesion: 0.05 Nodes (43): Castle.Core, Microsoft.ApplicationInsights, Microsoft.Bcl.AsyncInterfaces, Microsoft.CodeCoverage, Microsoft.EntityFrameworkCore, Microsoft.EntityFrameworkCore.Abstractions, Microsoft.EntityFrameworkCore.Analyzers, Microsoft.EntityFrameworkCore.Relational (+35 more) ### Community 45 - "ProxyFile" -Cohesion: 0.18 -Nodes (10): ProxyFile, Asset, AssetId, CreatedAt, Id, ProxyPath, ProxyType, SizeBytes (+2 more) +Cohesion: 0.13 +Nodes (11): ProxyFile, Asset, AssetId, CreatedAt, Id, ProxyPath, ProxyType, SizeBytes (+3 more) ### Community 46 - "dependencies" Cohesion: 0.06 -Nodes (39): Humanizer.Core, Microsoft.Build.Framework, Microsoft.CodeAnalysis.Analyzers, Microsoft.CodeAnalysis.Common, Microsoft.CodeAnalysis.CSharp, Microsoft.CodeAnalysis.CSharp.Workspaces, Microsoft.CodeAnalysis.Workspaces.Common, Microsoft.CodeAnalysis.Workspaces.MSBuild (+31 more) +Nodes (44): Humanizer.Core, Microsoft.Build.Framework, Microsoft.CodeAnalysis.Analyzers, Microsoft.CodeAnalysis.Common, Microsoft.CodeAnalysis.CSharp, Microsoft.CodeAnalysis.CSharp.Workspaces, Microsoft.CodeAnalysis.Workspaces.Common, Microsoft.CodeAnalysis.Workspaces.MSBuild (+36 more) ### Community 47 - ".TryAcquireAsync" Cohesion: 0.12 @@ -693,12 +675,12 @@ Cohesion: 0.57 Nodes (7): cmd_advance(), cmd_thresholds(), config_threshold(), read_mark(), mutation-ratchet.sh script, SLACK, usage() ### Community 50 - "SoftDeleteQueryFilterTests" -Cohesion: 0.25 -Nodes (5): IAsyncLifetime, SoftDeleteQueryFilterTests, Fact, Task, ValueTask +Cohesion: 0.36 +Nodes (4): IAsyncLifetime, SoftDeleteQueryFilterTests, Fact, Task ### Community 51 - "TestFixture" -Cohesion: 0.06 -Nodes (44): Log, VideoProxyMiddleware, Order, CancellationToken, IEnumerable, ILogger, IngestionDelegate, LoggerMessage (+36 more) +Cohesion: 0.16 +Nodes (16): TestFixture, Clock, DirectoryStrategy, FileSystem, Generator, GuidFactory, Now, VideoProxyMiddlewareTests (+8 more) ### Community 52 - "mutation-ratchet.test.sh" Cohesion: 0.81 @@ -713,8 +695,8 @@ Cohesion: 0.06 Nodes (39): Humanizer.Core, Microsoft.Build.Framework, Microsoft.CodeAnalysis.Analyzers, Microsoft.CodeAnalysis.Common, Microsoft.CodeAnalysis.CSharp, Microsoft.CodeAnalysis.CSharp.Workspaces, Microsoft.CodeAnalysis.Workspaces.Common, Microsoft.CodeAnalysis.Workspaces.MSBuild (+31 more) ### Community 55 - "net10.0" -Cohesion: 0.04 -Nodes (54): dependencies, net10.0, contentHash, resolved, type, contentHash, resolved, type (+46 more) +Cohesion: 0.05 +Nodes (42): contentHash, resolved, type, dependencies, net10.0, contentHash, resolved, type (+34 more) ### Community 56 - "CorsOriginsTests" Cohesion: 0.10 @@ -738,7 +720,7 @@ Nodes (5): NodaTime, contentHash, requested, resolved, type ### Community 61 - "Microsoft.Extensions.DependencyInjection.Abstractions" Cohesion: 0.05 -Nodes (56): dependencies, Microsoft.Extensions.Caching.Abstractions, Microsoft.Extensions.Configuration.Binder, Microsoft.Extensions.DependencyInjection, Microsoft.Extensions.DependencyInjection.Abstractions, Microsoft.Extensions.Diagnostics.Abstractions, Microsoft.Extensions.Logging, Microsoft.Extensions.Logging.Abstractions (+48 more) +Nodes (48): contentHash, dependencies, resolved, type, Microsoft.Extensions.DependencyInjection, Microsoft.Extensions.DependencyInjection.Abstractions, Microsoft.Extensions.Logging, Microsoft.Extensions.Logging.Abstractions (+40 more) ### Community 62 - "Microsoft.Extensions.DependencyInjection.Abstractions" Cohesion: 0.05 @@ -773,16 +755,16 @@ Cohesion: 0.09 Nodes (23): Microsoft.EntityFrameworkCore.Abstractions, Microsoft.EntityFrameworkCore.Analyzers, Microsoft.Extensions.Caching.Memory, Microsoft.Extensions.Configuration.Abstractions, Microsoft.Extensions.Logging, contentHash, dependencies, contentHash (+15 more) ### Community 70 - ".InvokeAsync_KnownHash_DoesNotCallNextAsync" -Cohesion: 0.33 -Nodes (8): IdempotencyCheckMiddlewareTests, TestFixture, Repository, CancellationToken, Fact, Guid, ILogger, Task +Cohesion: 0.44 +Nodes (7): IdempotencyCheckMiddlewareTests, TestFixture, Repository, CancellationToken, Fact, Guid, Task -### Community 71 - "IdempotencyCheckMiddleware" -Cohesion: 0.20 -Nodes (8): IdempotencyCheckMiddleware, Order, Log, CancellationToken, ILogger, IngestionDelegate, LoggerMessage, Task +### Community 71 - ".Create" +Cohesion: 0.09 +Nodes (17): IdempotencyCheckMiddleware, Order, Log, CancellationToken, ILogger, IngestionDelegate, LoggerMessage, Task (+9 more) ### Community 72 - "TestFixture" -Cohesion: 0.08 -Nodes (28): Log, ProxyStagingWriter, CancellationToken, Exception, Func, IClock, IFileSystem, ILogger (+20 more) +Cohesion: 0.19 +Nodes (15): ProxyStagingWriterTests, TestFixture, Clock, FileSystem, GuidFactory, Now, CancellationToken, Fact (+7 more) ### Community 73 - "TestFixture" Cohesion: 0.15 @@ -801,7 +783,7 @@ Cohesion: 0.06 Nodes (36): contentHash, requested, resolved, type, dependencies, net10.0, contentHash, resolved (+28 more) ### Community 77 - ".Build" -Cohesion: 0.14 +Cohesion: 0.13 Nodes (17): IngestionPipelineBuilder, Log, ILogger, IngestionDelegate, IReadOnlyList, LoggerMessage, ConditionalMiddleware, Order (+9 more) ### Community 78 - "Invite" @@ -810,7 +792,7 @@ Nodes (16): IInviteRepository, CancellationToken, Instant, Task, Invite, Created ### Community 79 - "MediaAsset" Cohesion: 0.06 -Nodes (34): EfMediaAssetRepository, IMediaAssetRepository, AnichronDbContext, CancellationToken, Guid, Task, MediaAsset, Burst (+26 more) +Nodes (37): EfMediaAssetRepository, IMediaAssetRepository, AnichronDbContext, CancellationToken, Guid, Task, MediaAsset, Burst (+29 more) ### Community 80 - "Anichron.Core" Cohesion: 0.25 @@ -876,9 +858,9 @@ Nodes (59): Microsoft.Extensions.Configuration, Microsoft.Extensions.Configurati Cohesion: 0.08 Nodes (29): HealthCheckServiceOptions, IHealthCheck, OriginalsStorageHealthCheck, CancellationToken, HealthCheckContext, HealthCheckResult, IFileSystem, Task (+21 more) -### Community 96 - "Microsoft.Extensions.Primitives" -Cohesion: 0.07 -Nodes (27): Microsoft.Extensions.FileSystemGlobbing, Microsoft.Extensions.Primitives, contentHash, dependencies, resolved, type, contentHash, dependencies (+19 more) +### Community 96 - "Microsoft.Extensions.Logging.Abstractions" +Cohesion: 0.18 +Nodes (10): contentHash, dependencies, resolved, type, contentHash, dependencies, resolved, type (+2 more) ### Community 97 - "ApiPaths" Cohesion: 0.33 @@ -909,8 +891,8 @@ Cohesion: 0.08 Nodes (24): TestableIO.System.IO.Abstractions, TestableIO.System.IO.Abstractions.Wrappers, Testably.Abstractions.FileSystem.Interface, System.IO.Abstractions, TestableIO.System.IO.Abstractions, TestableIO.System.IO.Abstractions.TestingHelpers, TestableIO.System.IO.Abstractions.Wrappers, contentHash (+16 more) ### Community 104 - "nodatime" -Cohesion: 0.07 -Nodes (30): Anichron.Core.Migrations, microsoft_entityframeworkcore_infrastructure, microsoft_entityframeworkcore_migrations, microsoft_entityframeworkcore_storage_valueconversion, Migration, nodatime, npgsql_entityframeworkcore_postgresql_metadata, Guid (+22 more) +Cohesion: 0.08 +Nodes (27): Anichron.Core.Migrations, Why the rationale goes in `COMMENT`, not in Markdown, microsoft_entityframeworkcore_infrastructure, microsoft_entityframeworkcore_migrations, microsoft_entityframeworkcore_storage_valueconversion, Migration, nodatime, npgsql_entityframeworkcore_postgresql_metadata (+19 more) ### Community 105 - "dependencies" Cohesion: 0.09 @@ -926,7 +908,7 @@ Nodes (21): Microsoft.EntityFrameworkCore, Microsoft.EntityFrameworkCore.Abstrac ### Community 108 - "microsoft_extensions_options" Cohesion: 0.09 -Nodes (23): blurhash_imagesharp, Anichron.Worker.Tests.Unit.Startup, Anichron.Worker.Tests.Unit.Settings, Anichron.Worker.Tests.Unit.Crawling, Anichron.Worker.Startup, Anichron.Worker.Tests.Unit.Maintenance, Anichron.Worker.Maintenance, Anichron.Worker.Settings (+15 more) +Nodes (22): blurhash_imagesharp, Anichron.Worker.Tests.Unit.Startup, Anichron.Worker.Tests.Unit.Settings, Anichron.Worker.Tests.Unit.Crawling, Anichron.Worker.Startup, Anichron.Worker.Tests.Unit.Maintenance, Anichron.Worker.Maintenance, Anichron.Worker.Settings (+14 more) ### Community 109 - "ExifDataMappingTests" Cohesion: 0.12 @@ -973,8 +955,8 @@ Cohesion: 0.17 Nodes (10): LivePhotoPairingMiddleware, Order, Log, CancellationToken, Guid, ILogger, IngestionDelegate, LoggerMessage (+2 more) ### Community 121 - "Anichron.Infrastructure.Configuration" -Cohesion: 0.08 -Nodes (14): Anichron.Infrastructure.Tests.Unit.Infrastructure, Anichron.Infrastructure.Configuration, Anichron.Worker.Tests.Unit.Infrastructure, Anichron.Worker.Infrastructure, Consequences, ApiIniDefaults, Entries, IReadOnlyList (+6 more) +Cohesion: 0.10 +Nodes (12): Anichron.Infrastructure.Tests.Unit.Infrastructure, Anichron.Infrastructure.Configuration, Anichron.Worker.Tests.Unit.Infrastructure, Anichron.Worker.Infrastructure, ApiIniDefaults, Entries, IReadOnlyList, WebApplicationBuilderExtensions (+4 more) ### Community 122 - "Microsoft.Testing.Extensions.Telemetry" Cohesion: 0.12 @@ -1053,7 +1035,7 @@ Cohesion: 0.08 Nodes (27): dependencies, type, Microsoft.EntityFrameworkCore, Microsoft.EntityFrameworkCore.Relational, NodaTime, Npgsql, Npgsql.EntityFrameworkCore.PostgreSQL, Npgsql.EntityFrameworkCore.PostgreSQL.NodaTime (+19 more) ### Community 142 - "User" -Cohesion: 0.22 +Cohesion: 0.25 Nodes (6): IUserRepository, CancellationToken, Guid, List, Task, User ### Community 143 - "derive-db-docs.test.sh" @@ -1101,8 +1083,8 @@ Cohesion: 0.18 Nodes (11): Microsoft.IdentityModel.Tokens, contentHash, dependencies, resolved, type, contentHash, dependencies, resolved (+3 more) ### Community 158 - "Schema documentation is generated, and its rationale lives in the schema" -Cohesion: 0.17 -Nodes (10): Consequences, Schema documentation is generated, and its rationale lives in the schema, What went wrong, which is the only reason to take this decision, Why not simply generate a nicer document, Why the rationale goes in `COMMENT`, not in Markdown, ProxyType, BlurHash, FullPreview (+2 more) +Cohesion: 0.18 +Nodes (9): Consequences, Schema documentation is generated, and its rationale lives in the schema, What went wrong, which is the only reason to take this decision, Why not simply generate a nicer document, ProxyType, BlurHash, FullPreview, Thumbnail (+1 more) ### Community 159 - "Microsoft.Extensions.Caching.Abstractions" Cohesion: 0.18 @@ -1197,8 +1179,8 @@ Cohesion: 0.25 Nodes (8): TestableIO.System.IO.Abstractions, TestableIO.System.IO.Abstractions.Wrappers, System.IO.Abstractions, contentHash, dependencies, requested, resolved, type ### Community 182 - ".AddAsync" -Cohesion: 0.32 -Nodes (6): AdminStorageConfigService, CancellationToken, Guid, IGuidFactory, List, Task +Cohesion: 0.24 +Nodes (11): AdminStorageConfigService, IAdminStorageConfigService, CancellationToken, Guid, IGuidFactory, List, Task, AdminStorageConfigEndpointsTests (+3 more) ### Community 183 - "Microsoft.NET.Test.Sdk" Cohesion: 0.25 @@ -1400,9 +1382,9 @@ Nodes (6): System.CodeDom, contentHash, dependencies, resolved, type, Mono.TextT Cohesion: 0.28 Nodes (10): BootstrapResetServiceTests, TestFixture, UnitOfWork, Users, CancellationToken, Fact, IConfiguration, ILogger (+2 more) -### Community 234 - "EfUserStorageConfigRepository" -Cohesion: 0.33 -Nodes (6): EfUserStorageConfigRepository, AnichronDbContext, UserStorageConfigRepositoryTests, Fact, Guid, Task +### Community 234 - "VideoProxyMiddleware" +Cohesion: 0.13 +Nodes (13): Log, VideoProxyMiddleware, Order, CancellationToken, IEnumerable, ILogger, IngestionDelegate, LoggerMessage (+5 more) ### Community 235 - "xunit.v3.common" Cohesion: 0.33 @@ -1425,8 +1407,8 @@ Cohesion: 0.81 Nodes (6): assert_contains(), assert_eq(), assert_fails(), fail(), pass(), mutation-report.test.sh script ### Community 240 - "TokenService" -Cohesion: 0.25 -Nodes (9): ITokenService, TokenService, CancellationToken, Guid, IClock, IGuidFactory, Instant, IOptions (+1 more) +Cohesion: 0.11 +Nodes (21): JwtSecurityTokenHandler, SigningCredentials, IJwtFactory, JwtFactory, IClock, IGuidFactory, ITokenService, TokenService (+13 more) ### Community 241 - "Anichron.API.Tests.Unit/GlobalUsings.cs" Cohesion: 0.52 @@ -1461,8 +1443,8 @@ Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.Extensions.DependencyModel ### Community 250 - "Microsoft.Extensions.Primitives" -Cohesion: 0.06 -Nodes (34): Microsoft.Extensions.FileProviders.Abstractions, Microsoft.Extensions.FileProviders.Physical, Microsoft.Extensions.FileSystemGlobbing, Microsoft.Extensions.Primitives, contentHash, dependencies, resolved, type (+26 more) +Cohesion: 0.05 +Nodes (41): Microsoft.Extensions.Caching.Abstractions, Microsoft.Extensions.Configuration.Json, Microsoft.Extensions.FileProviders.Abstractions, Microsoft.Extensions.FileProviders.Physical, Microsoft.Extensions.FileSystemGlobbing, Microsoft.Extensions.Primitives, contentHash, dependencies (+33 more) ### Community 251 - "Testably.Abstractions.FileSystem.Interface" Cohesion: 0.50 @@ -1561,8 +1543,8 @@ Cohesion: 0.40 Nodes (5): SonarAnalyzer.CSharp, contentHash, requested, resolved, type ### Community 275 - "IGuidFactory" -Cohesion: 0.10 -Nodes (18): IGuidFactory, TimeOrderedGuidFactory, Guid, PairedMovResolver, IClock, IFileSystem, ProxyFileBuilder, IClock (+10 more) +Cohesion: 0.33 +Nodes (5): IGuidFactory, TimeOrderedGuidFactory, ProxyFileBuilder, IClock, ProxyType ### Community 276 - "FluentAssertions" Cohesion: 0.40 @@ -1581,8 +1563,8 @@ Cohesion: 0.40 Nodes (5): SonarAnalyzer.CSharp, contentHash, requested, resolved, type ### Community 280 - "Mutation scope: exclude generated, append-only code; include everything we author" -Cohesion: 0.12 -Nodes (13): Consequences, Mutation testing with Stryker.NET on the Microsoft.Testing.Platform runner, Why not a different tool, Why not the default runner, Consequences, Mutation scope: exclude generated, append-only code; include everything we author, One combined score, not one per project, What we deliberately do not exclude (+5 more) +Cohesion: 0.14 +Nodes (10): Consequences, Mutation testing with Stryker.NET on the Microsoft.Testing.Platform runner, Why not a different tool, Why not the default runner, Consequences, Mutation scope: exclude generated, append-only code; include everything we author, One combined score, not one per project, What we deliberately do not exclude (+2 more) ### Community 281 - "Microsoft.Extensions.Hosting" Cohesion: 0.40 @@ -1592,9 +1574,9 @@ Nodes (5): contentHash, requested, resolved, type, Microsoft.Extensions.Hosting Cohesion: 0.40 Nodes (5): contentHash, requested, resolved, type, Microsoft.VisualStudio.Threading.Analyzers -### Community 283 - "Files (`mutate` in `src/stryker-config.json`)" -Cohesion: 0.20 -Nodes (7): Calls (`ignore-methods`), Files (`mutate` in `src/stryker-config.json`), Members that need real PostgreSQL (`// Stryker disable all` before each member), What is excluded, CancellationToken, Func, Task +### Community 283 - "Consequences" +Cohesion: 0.12 +Nodes (15): Calls (`ignore-methods`), Consequences, Files (`mutate` in `src/stryker-config.json`), Members that need real PostgreSQL (`// Stryker disable all` before each member), Mutation scope: 100% over code that can carry a signal, The rule, What is excluded, Why ADR 0002 no longer fits (+7 more) ### Community 284 - "SonarAnalyzer.CSharp" Cohesion: 0.40 @@ -1612,33 +1594,33 @@ Nodes (5): contentHash, requested, resolved, type, FluentAssertions Cohesion: 0.23 Nodes (8): BootstrapResetService, IBootstrapResetService, Log, CancellationToken, IConfiguration, ILogger, LoggerMessage, Task -### Community 288 - "IIngestionMiddleware" -Cohesion: 0.08 -Nodes (25): IServiceProvider, IServiceScope, IIngestionMiddleware, Order, IngestionOrder, CancellationToken, IngestionDelegate, Task (+17 more) +### Community 288 - "IngestionPipelineRunner" +Cohesion: 0.15 +Nodes (13): IIngestionPipelineRunner, IngestionPipelineRunner, Log, CancellationToken, Exception, IEnumerable, IFileSystem, ILogger (+5 more) ### Community 289 - ".EnsureUpToDate_ConcurrentFileCreationRace_NoExceptionThrown" Cohesion: 0.39 Nodes (6): IFileStreamFactory, IPath, IDirectory, IFile, IFileSystem, UnauthorizedAccessException ### Community 290 - "PersistenceMiddleware" -Cohesion: 0.12 -Nodes (14): Log, PersistenceMiddleware, Order, CancellationToken, DbUpdateException, Guid, IClock, IFileSystem (+6 more) +Cohesion: 0.11 +Nodes (15): Log, PersistenceMiddleware, Order, CancellationToken, DbUpdateException, Guid, IClock, IFileSystem (+7 more) -### Community 291 - "RefreshToken" -Cohesion: 0.15 -Nodes (15): IRefreshTokenRepository, CancellationToken, Guid, Instant, Task, RefreshToken, CreatedAt, ExpiresAt (+7 more) +### Community 291 - "LockoutService" +Cohesion: 0.22 +Nodes (7): ILockoutService, LockoutService, CancellationToken, Instant, Task, InlineData, Theory -### Community 292 - "StoragePathTests" -Cohesion: 0.17 -Nodes (7): Anichron.Core.Tests.Unit, StoragePath, IEnumerable, StoragePathTests, Fact, InlineData, Theory +### Community 292 - "WorkerInitializer" +Cohesion: 0.09 +Nodes (19): Anichron.Core.Tests.Unit, IHostedService, StoragePath, IEnumerable, StoragePathTests, Fact, InlineData, Theory (+11 more) ### Community 293 - "Castle.Core" Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Castle.Core -### Community 294 - "TestFixture" -Cohesion: 0.18 -Nodes (15): AdminStorageConfigServiceTests, TestFixture, GuidFactory, StorageConfigs, UnitOfWork, Users, ArgumentNullException, CancellationToken (+7 more) +### Community 294 - "UserStorageConfig" +Cohesion: 0.06 +Nodes (50): AdminStorageConfigServiceTests, TestFixture, GuidFactory, StorageConfigs, UnitOfWork, Users, ArgumentNullException, CancellationToken (+42 more) ### Community 295 - "Self-host mutation reports; do not use the Stryker Dashboard" Cohesion: 0.50 @@ -1648,25 +1630,25 @@ Nodes (3): Consequences, Self-host mutation reports; do not use the Stryker Dash Cohesion: 0.40 Nodes (5): contentHash, requested, resolved, type, Microsoft.VisualStudio.Threading.Analyzers -### Community 297 - "EfRefreshTokenRepository" -Cohesion: 0.31 -Nodes (7): EfRefreshTokenRepository, AnichronDbContext, RefreshTokenRepositoryTests, Fact, Guid, Instant, Task +### Community 297 - "ForwardedHeadersRateLimitTests" +Cohesion: 0.30 +Nodes (8): ForwardedHeadersRateLimitTests, Dictionary, Fact, FormatException, HttpResponseMessage, List, Task, WebApplication ### Community 298 - "Microsoft.Bcl.Cryptography" Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.Bcl.Cryptography -### Community 299 - "TestFixture" -Cohesion: 0.20 -Nodes (15): TestFixture, StorageConfigRepository, UnitOfWork, UserRepository, WorkerState, WorkerInitializerTests, CancellationToken, Fact (+7 more) +### Community 299 - "IProxyDirectoryStrategy" +Cohesion: 0.33 +Nodes (5): IProxyDirectoryStrategy, TwoLevelHexShardStrategy, Guid, ProxyShardStrategyTests, Fact ### Community 300 - "Microsoft.Extensions.Logging" Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Logging -### Community 301 - "WorkerInitializer" -Cohesion: 0.16 -Nodes (12): IHostedService, WorkerState, ResolvedUserId, Guid, Log, WorkerInitializer, CancellationToken, ILogger (+4 more) +### Community 301 - "ci-gate.test.sh" +Cohesion: 0.54 +Nodes (6): assert_contains(), assert_fails(), assert_passes(), fail(), pass(), ci-gate.test.sh script ### Community 302 - "Microsoft.IdentityModel.Abstractions" Cohesion: 0.50 @@ -1680,9 +1662,9 @@ Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Logging.Debug Cohesion: 0.50 Nodes (4): Newtonsoft.Json, contentHash, resolved, type -### Community 305 - "JwtSettings" -Cohesion: 0.14 -Nodes (12): JwtSecurityTokenHandler, SigningCredentials, IJwtFactory, JwtFactory, IClock, IGuidFactory, JwtSettings, AccessTokenMinutes (+4 more) +### Community 305 - ".BuildTargetModel" +Cohesion: 0.40 +Nodes (4): Guid, Instant, LocalDateTime, ModelBuilder ### Community 306 - "Anichron.Core.Tests.Unit" Cohesion: 0.50 @@ -1693,16 +1675,16 @@ Cohesion: 0.50 Nodes (4): System.Composition.Runtime, contentHash, resolved, type ### Community 308 - "TestFixture" -Cohesion: 0.25 -Nodes (12): TestFixture, ConfigRepository, Pipeline, Time, WorkerState, WorkerTests, CancellationToken, Fact (+4 more) +Cohesion: 0.07 +Nodes (32): BackgroundService, Channel, FakeTimeProvider, ITimer, Log, Worker, CancellationToken, Guid (+24 more) ### Community 309 - "Konscious.Security.Cryptography.Blake2" Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Konscious.Security.Cryptography.Blake2 -### Community 310 - "IniEntry" -Cohesion: 0.29 -Nodes (6): IniEntry, Func, IReadOnlyList, WorkerIniDefaults, Entries, IReadOnlyList +### Community 310 - ".EnsureUpToDate" +Cohesion: 0.48 +Nodes (3): IniEntry, Func, IReadOnlyList ### Community 311 - "Microsoft.Bcl.AsyncInterfaces" Cohesion: 0.50 @@ -1716,9 +1698,9 @@ Nodes (4): contentHash, resolved, type, Microsoft.CodeCoverage Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.TestPlatform.ObjectModel -### Community 314 - ".Read" -Cohesion: 0.32 -Nodes (6): JwtConfiguration, IConfiguration, JwtConfigurationTests, Fact, IConfiguration, InvalidOperationException +### Community 314 - ".BuildTargetModel" +Cohesion: 0.40 +Nodes (4): Guid, Instant, LocalDateTime, ModelBuilder ### Community 315 - "Microsoft.EntityFrameworkCore.Abstractions" Cohesion: 0.50 @@ -1729,8 +1711,8 @@ Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.Win32.Registry ### Community 317 - "BootstrapSeeder" -Cohesion: 0.19 -Nodes (10): BootstrapSeeder, IBootstrapSeeder, Log, CancellationToken, Exception, IConfiguration, IGuidFactory, ILogger (+2 more) +Cohesion: 0.24 +Nodes (8): BootstrapSeeder, IBootstrapSeeder, Log, Exception, IConfiguration, IGuidFactory, ILogger, LoggerMessage ### Community 318 - "Microsoft.Extensions.Diagnostics.ExceptionSummarization" Cohesion: 0.50 @@ -1740,9 +1722,9 @@ Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Diagnostics.Excepti Cohesion: 0.15 Nodes (13): CapturingLogger, Entries, EventId, Exception, Func, IDisposable, InlineData, IReadOnlyList (+5 more) -### Community 320 - "SignallingTimeProvider" -Cohesion: 0.22 -Nodes (8): Channel, FakeTimeProvider, ITimer, SignallingTimeProvider, CancellationToken, Task, TimeSpan, TimerCallback +### Community 320 - "System.IO.Hashing" +Cohesion: 0.40 +Nodes (5): System.IO.Hashing, contentHash, requested, resolved, type ### Community 321 - ".MapRoutes" Cohesion: 0.14 @@ -1756,9 +1738,9 @@ Nodes (8): assert_contains_file(), assert_eq(), assert_fails(), assert_file(), a Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.VisualStudio.SolutionPersistence -### Community 324 - "AdminCreatedUser" -Cohesion: 0.12 -Nodes (16): Created, AdminCreatedUserResponse, AdminPasswordResetResponse, CreateAdminUserRequest, AdminResetService, AdminUserPasswordReset, IAdminResetService, CancellationToken (+8 more) +### Community 324 - "IUnitOfWork" +Cohesion: 0.09 +Nodes (21): PostgresException, IPasswordHasher, AdminResetService, CancellationToken, Guid, IClock, Task, AuthService (+13 more) ### Community 325 - "Log" Cohesion: 0.43 @@ -1770,7 +1752,7 @@ Nodes (8): contentHash, dependencies, requested, resolved, type, Blurhash.Core, ### Community 327 - "Anichron.Worker.Ingestion.Pipeline" Cohesion: 0.09 -Nodes (22): Anichron.Worker.Tests.Unit.Ingestion.Middlewares, Anichron.Worker.Tests.Unit.Ingestion.Pipeline, Anichron.Worker.Ingestion.Pipeline, Anichron.Infrastructure.Tests.Unit.Configuration, Anichron.Worker.Ingestion.Middlewares, Anichron.Worker.Ingestion, Anichron.Worker.Tests.Unit.TestDoubles, Anichron.Core (+14 more) +Nodes (20): Anichron.Worker.Tests.Unit.Ingestion.Middlewares, Anichron.Worker.Tests.Unit.Ingestion.Pipeline, Anichron.Worker.Ingestion.Pipeline, Anichron.Infrastructure.Tests.Unit.Configuration, Anichron.Worker.Ingestion.Middlewares, Anichron.Worker.Ingestion, Anichron.Worker.Tests.Unit.TestDoubles, Anichron.Worker.Tests.Unit.Ingestion (+12 more) ### Community 328 - "Microsoft.Extensions.Logging" Cohesion: 0.50 @@ -1784,6 +1766,10 @@ Nodes (9): Microsoft.EntityFrameworkCore.Abstractions, Microsoft.EntityFramework Cohesion: 0.31 Nodes (7): ExifExtractionMiddlewareTests, Fact, ILogger, InlineData, MockFileSystem, Task, Theory +### Community 331 - "Microsoft.Extensions.Options" +Cohesion: 0.40 +Nodes (5): contentHash, dependencies, resolved, type, Microsoft.Extensions.Options + ### Community 332 - "Microsoft.CodeAnalysis.Analyzers" Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.CodeAnalysis.Analyzers @@ -1928,9 +1914,9 @@ Nodes (3): die(), assemble-pages.sh script, usage() Cohesion: 0.26 Nodes (7): CancellationToken, IngestionDelegate, Rgb24, Task, CancellationToken, Rgb24, Task -### Community 368 - "LivePhotoLinker.cs" -Cohesion: 0.31 -Nodes (7): IReadOnlySet, ILivePhotoLinker, LivePhotoLinker, LivePhotoLinkResult, IEnumerable, IFileSystem, IReadOnlyList +### Community 368 - "Roslynator.Analyzers" +Cohesion: 0.40 +Nodes (5): Roslynator.Analyzers, contentHash, requested, resolved, type ### Community 369 - "RecordingGenerator" Cohesion: 0.22 @@ -1976,9 +1962,9 @@ Nodes (4): Newtonsoft.Json, contentHash, resolved, type Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.Testing.Platform -### Community 380 - "Castle.Core" -Cohesion: 0.21 -Nodes (8): contentHash, resolved, type, contentHash, resolved, type, Castle.Core, Microsoft.Extensions.Logging.EventLog +### Community 380 - "Microsoft.EntityFrameworkCore.Analyzers" +Cohesion: 0.50 +Nodes (4): contentHash, resolved, type, Microsoft.EntityFrameworkCore.Analyzers ### Community 381 - "System.Composition.Runtime" Cohesion: 0.50 @@ -1997,8 +1983,8 @@ Cohesion: 0.50 Nodes (4): xunit.analyzers, contentHash, resolved, type ### Community 385 - "Microsoft.Extensions.Configuration.Abstractions" -Cohesion: 0.08 -Nodes (29): Microsoft.Extensions.Configuration, Microsoft.Extensions.Configuration.Abstractions, Microsoft.Extensions.Configuration.FileExtensions, Microsoft.Extensions.Configuration.Json, contentHash, dependencies, resolved, type (+21 more) +Cohesion: 0.05 +Nodes (46): Microsoft.Extensions.Configuration, Microsoft.Extensions.Configuration.Abstractions, Microsoft.Extensions.Configuration.Binder, Microsoft.Extensions.Configuration.FileExtensions, Microsoft.Extensions.Diagnostics.Abstractions, Microsoft.Extensions.Options.ConfigurationExtensions, contentHash, dependencies (+38 more) ### Community 386 - "Log" Cohesion: 0.52 @@ -2016,9 +2002,9 @@ Nodes (5): MemberData, ServiceDescriptor, ServiceLifetime, Theory, Type Cohesion: 0.33 Nodes (6): Microsoft.Extensions.Hosting.Abstractions, contentHash, dependencies, resolved, type, Microsoft.Extensions.DependencyInjection.AutoActivation -### Community 390 - ".ItemFailed" -Cohesion: 0.47 -Nodes (4): Log, Exception, ILogger, LoggerMessage +### Community 390 - "Microsoft.VisualStudio.SolutionPersistence" +Cohesion: 0.50 +Nodes (4): contentHash, resolved, type, Microsoft.VisualStudio.SolutionPersistence ### Community 391 - "Corner" Cohesion: 0.40 @@ -2048,9 +2034,9 @@ Nodes (4): Guid, Instant, LocalDateTime, ModelBuilder Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Primitives -### Community 398 - ".BuildTargetModel" -Cohesion: 0.40 -Nodes (4): Guid, Instant, LocalDateTime, ModelBuilder +### Community 398 - "Microsoft.ApplicationInsights" +Cohesion: 0.50 +Nodes (4): contentHash, resolved, type, Microsoft.ApplicationInsights ### Community 399 - "Microsoft.Testing.Platform" Cohesion: 0.50 @@ -2060,37 +2046,37 @@ Nodes (4): contentHash, resolved, type, Microsoft.Testing.Platform Cohesion: 0.40 Nodes (4): Guid, Instant, LocalDateTime, ModelBuilder -### Community 401 - "Microsoft.EntityFrameworkCore.Design" -Cohesion: 0.40 -Nodes (5): contentHash, requested, resolved, type, Microsoft.EntityFrameworkCore.Design +### Community 401 - "Microsoft.EntityFrameworkCore.Abstractions" +Cohesion: 0.50 +Nodes (4): contentHash, resolved, type, Microsoft.EntityFrameworkCore.Abstractions -### Community 402 - "Microsoft.Extensions.Configuration.Ini" -Cohesion: 0.40 -Nodes (5): contentHash, requested, resolved, type, Microsoft.Extensions.Configuration.Ini +### Community 402 - "Microsoft.EntityFrameworkCore.Analyzers" +Cohesion: 0.50 +Nodes (4): contentHash, resolved, type, Microsoft.EntityFrameworkCore.Analyzers -### Community 403 - "Microsoft.Extensions.DependencyInjection" -Cohesion: 0.40 -Nodes (5): contentHash, dependencies, resolved, type, Microsoft.Extensions.DependencyInjection +### Community 403 - "Microsoft.Extensions.Logging.EventSource" +Cohesion: 0.50 +Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Logging.EventSource ### Community 404 - "Anichron.Infrastructure.Data" -Cohesion: 0.18 -Nodes (7): Anichron.Infrastructure.Tests.Unit.Data, Anichron.Infrastructure.Data, microsoft_extensions_time_testing, PostgresConstants, system_data_common, system_diagnostics_codeanalysis, system_threading_channels +Cohesion: 0.12 +Nodes (11): Anichron.Infrastructure.Tests.Unit.Data, Anichron.Infrastructure.Data, microsoft_extensions_time_testing, PostgresConstants, EfDatabaseMigrator, IDatabaseMigrator, CancellationToken, Task (+3 more) -### Community 408 - "Roslynator.Analyzers" -Cohesion: 0.40 -Nodes (5): Roslynator.Analyzers, contentHash, requested, resolved, type +### Community 408 - "Microsoft.TestPlatform.ObjectModel" +Cohesion: 0.50 +Nodes (4): contentHash, resolved, type, Microsoft.TestPlatform.ObjectModel ### Community 409 - "XmpCore" Cohesion: 0.50 Nodes (4): XmpCore, contentHash, resolved, type -### Community 410 - "Microsoft.Extensions.DependencyInjection" -Cohesion: 0.40 -Nodes (5): contentHash, dependencies, resolved, type, Microsoft.Extensions.DependencyInjection +### Community 410 - "Microsoft.Win32.Registry" +Cohesion: 0.50 +Nodes (4): contentHash, resolved, type, Microsoft.Win32.Registry -### Community 411 - "xunit.runner.visualstudio" -Cohesion: 0.40 -Nodes (5): xunit.runner.visualstudio, contentHash, requested, resolved, type +### Community 411 - "Newtonsoft.Json" +Cohesion: 0.50 +Nodes (4): Newtonsoft.Json, contentHash, resolved, type ### Community 412 - "Microsoft.EntityFrameworkCore.Analyzers" Cohesion: 0.50 @@ -2120,109 +2106,33 @@ Nodes (4): contentHash, resolved, type, Microsoft.IdentityModel.Abstractions Cohesion: 0.50 Nodes (4): contentHash, resolved, type, Microsoft.OpenApi -### Community 419 - "Blurhash.Core" +### Community 419 - "xunit.v3.assert" Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Blurhash.Core - -### Community 420 - "Humanizer.Core" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Humanizer.Core - -### Community 421 - "Microsoft.Build.Framework" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Build.Framework - -### Community 422 - "Microsoft.Extensions.Configuration.Binder" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Configuration.Binder - -### Community 423 - "Microsoft.Extensions.Configuration.CommandLine" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Configuration.CommandLine - -### Community 424 - "Microsoft.Extensions.Configuration.FileExtensions" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Configuration.FileExtensions - -### Community 425 - "Microsoft.Extensions.Configuration.Json" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Configuration.Json - -### Community 426 - "Microsoft.Extensions.Configuration.UserSecrets" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Configuration.UserSecrets - -### Community 427 - "Microsoft.Extensions.DependencyModel" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.DependencyModel - -### Community 428 - "Microsoft.Extensions.Diagnostics" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Diagnostics - -### Community 429 - "Microsoft.Extensions.Logging.Configuration" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Logging.Configuration - -### Community 430 - "Microsoft.Extensions.Primitives" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Primitives - -### Community 431 - "System.Diagnostics.EventLog" -Cohesion: 0.50 -Nodes (4): System.Diagnostics.EventLog, contentHash, resolved, type - -### Community 432 - "Blurhash.Core" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Blurhash.Core - -### Community 433 - "Microsoft.Bcl.AsyncInterfaces" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Bcl.AsyncInterfaces - -### Community 434 - "Microsoft.Extensions.Diagnostics" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Diagnostics - -### Community 435 - "Microsoft.Extensions.Hosting.Abstractions" -Cohesion: 0.50 -Nodes (4): contentHash, resolved, type, Microsoft.Extensions.Hosting.Abstractions - -### Community 436 - "System.Diagnostics.EventLog" -Cohesion: 0.50 -Nodes (4): System.Diagnostics.EventLog, contentHash, resolved, type - -### Community 437 - "Testably.Abstractions.FileSystem.Interface" -Cohesion: 0.50 -Nodes (4): Testably.Abstractions.FileSystem.Interface, contentHash, resolved, type - -### Community 438 - "xunit.analyzers" -Cohesion: 0.50 -Nodes (4): xunit.analyzers, contentHash, resolved, type +Nodes (4): xunit.v3.assert, contentHash, resolved, type ### Community 449 - "AuthCookieSettings" Cohesion: 0.40 Nodes (4): AuthCookieSettings, RefreshTokenDays, SameSite, SameSiteMode ## Knowledge Gaps -- **2542 isolated node(s):** `$schema`, `tasks`, `SLACK`, `TALLY`, `Microsoft.AspNetCore.Mvc.Testing` (+2537 more) - These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 3101 node(s) total have ≤1 connection when file, concept and rationale nodes are included.) +- **2543 isolated node(s):** `$schema`, `tasks`, `ci-gate.sh script`, `SLACK`, `TALLY` (+2538 more) + These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 3104 node(s) total have ≤1 connection when file, concept and rationale nodes are included.) - **13 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ -- **Why does `UserStorageConfig` connect `UserStorageConfig` to `AuthResponseMapperTests`, `IngestionPipelineRunnerTests`, `EfUserRepository`, `ExifExtractionMiddleware`, `TestFixture`, `AuthResult`, `User`, `TestFixture`, `SingleFileItem`, `TestFixture`, `FileIngestionPipeline`, `Worker`, `IAuthResponseMapper`, `IngestionContext`, `TestFixture`, `TestFixture`, `WorkerInitializer`, `SoftDeleteQueryFilterTests`, `TestFixture`, `TestFixture`, `.AddAsync`, `.InvokeAsync`, `.InvokeAsync_KnownHash_DoesNotCallNextAsync`, `TestFixture`, `ExifExtractionMiddlewareTests`, `.Build`, `MediaAsset`, `ContentHashingMiddleware`, `EfUserStorageConfigRepository`, `AnichronDbContext`, `User`?** +- **Why does `UserStorageConfig` connect `UserStorageConfig` to `AuthResponseMapperTests`, `IngestionPipelineRunnerTests`, `EfUserRepository`, `ExifExtractionMiddleware`, `TestFixture`, `AuthResult`, `User`, `TestFixture`, `SingleFileItem`, `TestFixture`, `FileIngestionPipeline`, `WorkerInitializer`, `IngestionContext`, `ProxyFile`, `TestFixture`, `TestFixture`, `.AddAsync`, `.InvokeAsync`, `.InvokeAsync_KnownHash_DoesNotCallNextAsync`, `TestFixture`, `ExifExtractionMiddlewareTests`, `.Build`, `MediaAsset`, `ContentHashingMiddleware`, `AnichronDbContext`, `User`?** + _High betweenness centrality (0.053) - this node is a cross-community bridge._ +- **Why does `Anichron.Core.Domain` connect `Anichron.Core.Domain` to `Anichron.API.Infrastructure`, `UserStorageConfig`, `TestFixture`, `Anichron.Worker.Ingestion.Pipeline`, `FileIngestionPipeline`, `Metadata`, `ProxyFile`, `Invite`, `MediaAsset`, `AssetInteraction`, `microsoft_extensions_options`, `Burst`, `Image`, `User`, `Schema documentation is generated, and its rationale lives in the schema`?** _High betweenness centrality (0.036) - this node is a cross-community bridge._ -- **Why does `Anichron.Core.Domain` connect `Anichron.Core.Domain` to `Metadata`, `AssetInteraction`, `FileIngestionPipeline`, `Schema documentation is generated, and its rationale lives in the schema`, `UserStorageConfig`, `Anichron.API.Infrastructure`, `RefreshToken`, `IngestionContext`, `ProxyFile`, `TestFixture`, `Anichron.Worker.Ingestion.Pipeline`, `Invite`, `MediaAsset`, `nodatime`, `microsoft_extensions_options`, `LivePhotoLinker.cs`, `Burst`, `Image`, `Anichron.Infrastructure.Configuration`, `User`?** +- **Why does `IUnitOfWork` connect `IUnitOfWork` to `TestFixture`, `TestFixture`, `TestFixture`, `TestFixture`, `LockoutServiceTests`, `TestFixture`, `TestFixture`, `BootstrapResetService`, `PersistenceMiddleware`, `LockoutService`, `WorkerInitializer`, `UserStorageConfig`, `.AddAsync`, `BootstrapSeeder`, `WorkerServiceCollectionExtensionsTests`, `.Create`, `TestFixture`, `TestFixture`, `TokenService`, `AnichronDbContext`, `LivePhotoPairingMiddleware`, `.DeleteAsync`?** _High betweenness centrality (0.027) - this node is a cross-community bridge._ -- **Why does `Individual sites (`// Stryker disable once `)` connect `ExifExtractionMiddleware` to `IIngestionMiddleware`, `FfmpegVideoProcessorTests`, `RefreshToken`, `DeleteFailingFileSystem`, `FileIngestionPipeline`, `LoginResponseFloor`, `TestFixture`, `ProxyFile`, `Invite`, `MediaAsset`, `Argon2PasswordHasher`, `AnichronDbContext`, `JwtSettings`, `WorkerInitializer`, `Files (`mutate` in `src/stryker-config.json`)`, `User`, `UserStorageConfig`?** - _High betweenness centrality (0.025) - this node is a cross-community bridge._ - **Are the 31 inferred relationships involving `UserStorageConfig` (e.g. with `Individual sites (`// Stryker disable once `)` and `.CreateStorageConfigAsync_CallsServiceWithUserIdAndRootPathAndReturnsMapperResult()`) actually correct?** _`UserStorageConfig` has 31 INFERRED edges - model-reasoned connections that need verification._ - **Are the 3 inferred relationships involving `IngestionContext` (e.g. with `.ConsumeAsync()` and `.Asset_CanBeSetAndRead()`) actually correct?** _`IngestionContext` has 3 INFERRED edges - model-reasoned connections that need verification._ -- **What connects `$schema`, `tasks`, `SLACK` to the rest of the system?** - _2542 weakly-connected nodes found - possible documentation gaps or missing edges._ +- **What connects `$schema`, `tasks`, `ci-gate.sh script` to the rest of the system?** + _2543 weakly-connected nodes found - possible documentation gaps or missing edges._ - **Should `TestFixture` be split into smaller, more focused modules?** - _Cohesion score 0.05465155425878128 - nodes in this community are weakly interconnected._ \ No newline at end of file + _Cohesion score 0.05395245992260918 - nodes in this community are weakly interconnected._ \ No newline at end of file diff --git a/graphify-out/graph.json b/graphify-out/graph.json index 2c9eb52..a65d95d 100644 --- a/graphify-out/graph.json +++ b/graphify-out/graph.json @@ -144,27 +144,8 @@ "source_location": "L14" }, { - "id": "src_anichron_api_endpoints_adminendpoints_anichron_api_endpoints_adminstorageconfigresponse", - "label": "AdminStorageConfigResponse", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 1, - "community_name": "AuthResponseMapperTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Endpoints", - "scope_chain": [ - "s95" - ] - }, - "norm_label": "adminstorageconfigresponse", - "source_file": "src/Anichron.API/Endpoints/AdminEndpoints.cs", - "source_location": "L138" - }, - { - "id": "src_anichron_api_endpoints_adminendpoints_anichron_api_endpoints_adminuserresponse", - "label": "AdminUserResponse", + "id": "src_anichron_api_services_authservice_anichron_api_services_authtokens", + "label": "AuthTokens", "_callable": true, "_callable_class": true, "_origin": "ast", @@ -172,14 +153,14 @@ "community_name": "AuthResponseMapperTests", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Endpoints", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s95" + "s253" ] }, - "norm_label": "adminuserresponse", - "source_file": "src/Anichron.API/Endpoints/AdminEndpoints.cs", - "source_location": "L135" + "norm_label": "authtokens", + "source_file": "src/Anichron.API/Services/AuthService.cs", + "source_location": "L13" }, { "id": "src_anichron_api_tests_unit_endpoints_authresponsemappertests_anichron_api_tests_unit_endpoints_authresponsemappertests", @@ -359,25 +340,6 @@ "source_file": "src/Anichron.Core/Migrations/20261012025151_DocumentIdentityNormalization.Designer.cs", "source_location": "L15" }, - { - "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_h264encoder", - "label": "H264Encoder", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 108, - "community_name": "microsoft_extensions_options", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s69" - ] - }, - "norm_label": "h264encoder", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", - "source_location": "L115" - }, { "id": "src_anichron_worker_settings_workerdefaults_anichron_worker_settings_migrator", "label": "Migrator", @@ -608,25 +570,6 @@ "source_file": "src/Anichron.API/Endpoints/AuthResponseMapper.cs", "source_location": "L28" }, - { - "id": "src_anichron_api_security_passwordhasher_anichron_api_security_ipasswordhasher", - "label": "IPasswordHasher", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Security", - "scope_chain": [ - "s124" - ] - }, - "norm_label": "ipasswordhasher", - "source_file": "src/Anichron.API/Security/PasswordHasher.cs", - "source_location": "L8" - }, { "id": "src_anichron_api_services_authservice_anichron_api_services_authresult", "label": "AuthResult", @@ -647,46 +590,8 @@ "source_location": "L16" }, { - "id": "src_anichron_api_services_authservice_anichron_api_services_authservice", - "label": "AuthService", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s253" - ] - }, - "norm_label": "authservice", - "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L53" - }, - { - "id": "src_anichron_api_services_authservice_anichron_api_services_authtokens", - "label": "AuthTokens", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s253" - ] - }, - "norm_label": "authtokens", - "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L13" - }, - { - "id": "src_anichron_core_data_iunitofwork_anichron_core_data_iunitofwork", - "label": "IUnitOfWork", + "id": "src_anichron_api_settings_usernamepolicy_anichron_api_settings_usernamepolicy", + "label": "UsernamePolicy", "_callable": true, "_callable_class": true, "_origin": "ast", @@ -694,14 +599,15 @@ "community_name": "AuthResult", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data", + "is_partial": true, + "namespace": "Anichron.API.Settings", "scope_chain": [ - "s0" + "s39" ] }, - "norm_label": "iunitofwork", - "source_file": "src/Anichron.Core/Data/IUnitOfWork.cs", - "source_location": "L3" + "norm_label": "usernamepolicy", + "source_file": "src/Anichron.API/Settings/UsernamePolicy.cs", + "source_location": "L5" }, { "id": "src_anichron_worker_ingestion_middlewares_livephotopairingmiddleware_anichron_worker_ingestion_middlewares_livephotopairingmiddleware", @@ -801,25 +707,6 @@ "source_file": "src/Anichron.Worker/Infrastructure/HostApplicationBuilderExtensions.cs", "source_location": "L6" }, - { - "id": "src_anichron_worker_ingestion_mediatypedetector_anichron_worker_ingestion_mediatypedetector", - "label": "MediaTypeDetector", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Infrastructure.Configuration", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion", - "scope_chain": [ - "s29" - ] - }, - "norm_label": "mediatypedetector", - "source_file": "src/Anichron.Worker/Ingestion/MediaTypeDetector.cs", - "source_location": "L5" - }, { "id": "src_anichron_worker_tests_unit_infrastructure_workerinidefaultstests_anichron_worker_tests_unit_infrastructure_workerinidefaultstests", "label": "WorkerIniDefaultsTests", @@ -1178,44 +1065,6 @@ "source_file": "src/Anichron.Worker/Maintenance/TokenCleanupService.cs", "source_location": "L8" }, - { - "id": "src_anichron_api_services_lockoutservice_anichron_api_services_ilockoutservice", - "label": "ILockoutService", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 14, - "community_name": "LockoutServiceTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s84" - ] - }, - "norm_label": "ilockoutservice", - "source_file": "src/Anichron.API/Services/LockoutService.cs", - "source_location": "L7" - }, - { - "id": "src_anichron_api_services_lockoutservice_anichron_api_services_lockoutservice", - "label": "LockoutService", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 14, - "community_name": "LockoutServiceTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s84" - ] - }, - "norm_label": "lockoutservice", - "source_file": "src/Anichron.API/Services/LockoutService.cs", - "source_location": "L15" - }, { "id": "src_anichron_api_tests_unit_services_lockoutservicetests_anichron_api_tests_unit_services_lockoutservicetests", "label": "LockoutServiceTests", @@ -1449,44 +1298,6 @@ "source_file": "src/Anichron.Worker/Startup/DatabaseMigratorService.cs", "source_location": "L30" }, - { - "id": "src_anichron_worker_startup_idatabasemigrator_anichron_worker_startup_efdatabasemigrator", - "label": "EfDatabaseMigrator", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 16, - "community_name": "DatabaseMigratorService", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Startup", - "scope_chain": [ - "s63" - ] - }, - "norm_label": "efdatabasemigrator", - "source_file": "src/Anichron.Worker/Startup/IDatabaseMigrator.cs", - "source_location": "L11" - }, - { - "id": "src_anichron_worker_startup_idatabasemigrator_anichron_worker_startup_idatabasemigrator", - "label": "IDatabaseMigrator", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 16, - "community_name": "DatabaseMigratorService", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Startup", - "scope_chain": [ - "s63" - ] - }, - "norm_label": "idatabasemigrator", - "source_file": "src/Anichron.Worker/Startup/IDatabaseMigrator.cs", - "source_location": "L6" - }, { "id": "src_anichron_worker_tests_unit_startup_databasemigratorservicetests_anichron_worker_tests_unit_startup_databasemigratorservicetests", "label": "DatabaseMigratorServiceTests", @@ -1681,6 +1492,44 @@ "source_file": "src/Anichron.API/Services/AdminStorageConfigService.cs", "source_location": "L16" }, + { + "id": "src_anichron_api_services_adminstorageconfigservice_anichron_api_services_iadminstorageconfigservice", + "label": "IAdminStorageConfigService", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 182, + "community_name": ".AddAsync", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s143" + ] + }, + "norm_label": "iadminstorageconfigservice", + "source_file": "src/Anichron.API/Services/AdminStorageConfigService.cs", + "source_location": "L9" + }, + { + "id": "src_anichron_api_tests_unit_endpoints_adminstorageconfigendpointstests_anichron_api_tests_unit_endpoints_adminstorageconfigendpointstests", + "label": "AdminStorageConfigEndpointsTests", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 182, + "community_name": ".AddAsync", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Endpoints", + "scope_chain": [ + "s121" + ] + }, + "norm_label": "adminstorageconfigendpointstests", + "source_file": "src/Anichron.API.Tests.Unit/Endpoints/AdminStorageConfigEndpointsTests.cs", + "source_location": "L8" + }, { "id": "src_anichron_worker_ingestion_middlewares_loggingmiddleware_anichron_worker_ingestion_middlewares_log", "label": "Log", @@ -1741,6 +1590,25 @@ "source_file": "src/Anichron.API/Infrastructure/HealthCheckResponseWriter.cs", "source_location": "L5" }, + { + "id": "src_anichron_api_infrastructure_jwtconfiguration_anichron_api_infrastructure_jwtconfiguration", + "label": "JwtConfiguration", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 19, + "community_name": ".WriteResponseAsync", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Infrastructure", + "scope_chain": [ + "s20" + ] + }, + "norm_label": "jwtconfiguration", + "source_file": "src/Anichron.API/Infrastructure/JwtConfiguration.cs", + "source_location": "L5" + }, { "id": "src_anichron_api_tests_unit_infrastructure_healthcheckresponsewritertests_anichron_api_tests_unit_infrastructure_healthcheckresponsewritertests", "label": "HealthCheckResponseWriterTests", @@ -1760,6 +1628,25 @@ "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/HealthCheckResponseWriterTests.cs", "source_location": "L8" }, + { + "id": "src_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_anichron_api_tests_unit_infrastructure_jwtconfigurationtests", + "label": "JwtConfigurationTests", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 19, + "community_name": ".WriteResponseAsync", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Infrastructure", + "scope_chain": [ + "s78" + ] + }, + "norm_label": "jwtconfigurationtests", + "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/JwtConfigurationTests.cs", + "source_location": "L6" + }, { "id": "src_anichron_api_tests_unit_infrastructure_corsconfigurationtests_anichron_api_tests_unit_infrastructure_corsconfigurationtests", "label": "CorsConfigurationTests", @@ -1931,26 +1818,6 @@ "source_file": "src/Anichron.API/Services/AuthService.cs", "source_location": "L43" }, - { - "id": "src_anichron_api_settings_usernamepolicy_anichron_api_settings_usernamepolicy", - "label": "UsernamePolicy", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 21, - "community_name": ".Ok", - "file_type": "code", - "metadata": { - "is_partial": true, - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s39" - ] - }, - "norm_label": "usernamepolicy", - "source_file": "src/Anichron.API/Settings/UsernamePolicy.cs", - "source_location": "L5" - }, { "id": "src_anichron_api_tests_unit_endpoints_authendpointstests_anichron_api_tests_unit_endpoints_authendpointstests", "label": "AuthEndpointsTests", @@ -2182,42 +2049,64 @@ "source_location": "L13" }, { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_efuserstorageconfigrepository", - "label": "EfUserStorageConfigRepository", + "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_anichron_worker_ingestion_middlewares_log", + "label": "Log", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 234, - "community_name": "EfUserStorageConfigRepository", + "community_name": "VideoProxyMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "is_nested_type": true, + "is_partial": true, + "namespace": "Anichron.Worker.Ingestion.Middlewares", "scope_chain": [ - "s66" + "s110" ] }, - "norm_label": "efuserstorageconfigrepository", - "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", - "source_location": "L18" + "norm_label": "log", + "source_file": "src/Anichron.Worker/Ingestion/Middlewares/VideoProxyMiddleware.cs", + "source_location": "L39" }, { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests", - "label": "UserStorageConfigRepositoryTests", + "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_anichron_worker_ingestion_middlewares_videoproxymiddleware", + "label": "VideoProxyMiddleware", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 234, - "community_name": "EfUserStorageConfigRepository", + "community_name": "VideoProxyMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "is_partial": true, + "namespace": "Anichron.Worker.Ingestion.Middlewares", "scope_chain": [ - "s129" + "s110" ] }, - "norm_label": "userstorageconfigrepositorytests", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L8" + "norm_label": "videoproxymiddleware", + "source_file": "src/Anichron.Worker/Ingestion/Middlewares/VideoProxyMiddleware.cs", + "source_location": "L7" + }, + { + "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_ivideoproxygenerator", + "label": "IVideoProxyGenerator", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 234, + "community_name": "VideoProxyMiddleware", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion.Proxy", + "scope_chain": [ + "s29" + ] + }, + "norm_label": "ivideoproxygenerator", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", + "source_location": "L5" }, { "id": "src_anichron_api_tests_unit_services_pwnedpasswordclienttests_anichron_api_tests_unit_services_capturinglogger", @@ -2338,8 +2227,8 @@ "source_location": "L5" }, { - "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests", - "label": "ForwardedHeadersRateLimitTests", + "id": "src_anichron_api_tests_unit_infrastructure_mustchangepasswordmiddlewaretests_anichron_api_tests_unit_infrastructure_mustchangepasswordmiddlewaretests", + "label": "MustChangePasswordMiddlewareTests", "_callable": true, "_callable_class": true, "_origin": "ast", @@ -2349,31 +2238,50 @@ "metadata": { "namespace": "Anichron.API.Tests.Unit.Infrastructure", "scope_chain": [ - "s279" + "s99" ] }, - "norm_label": "forwardedheadersratelimittests", - "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/ForwardedHeadersRateLimitTests.cs", - "source_location": "L12" + "norm_label": "mustchangepasswordmiddlewaretests", + "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/MustChangePasswordMiddlewareTests.cs", + "source_location": "L7" }, { - "id": "src_anichron_api_tests_unit_infrastructure_mustchangepasswordmiddlewaretests_anichron_api_tests_unit_infrastructure_mustchangepasswordmiddlewaretests", - "label": "MustChangePasswordMiddlewareTests", + "id": "src_anichron_api_security_jwtfactory_anichron_api_security_ijwtfactory", + "label": "IJwtFactory", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 24, - "community_name": "MustChangePasswordMiddleware", + "community": 240, + "community_name": "TokenService", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Tests.Unit.Infrastructure", + "namespace": "Anichron.API.Security", "scope_chain": [ - "s99" + "s220" ] }, - "norm_label": "mustchangepasswordmiddlewaretests", - "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/MustChangePasswordMiddlewareTests.cs", - "source_location": "L7" + "norm_label": "ijwtfactory", + "source_file": "src/Anichron.API/Security/JwtFactory.cs", + "source_location": "L11" + }, + { + "id": "src_anichron_api_security_jwtfactory_anichron_api_security_jwtfactory", + "label": "JwtFactory", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 240, + "community_name": "TokenService", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Security", + "scope_chain": [ + "s220" + ] + }, + "norm_label": "jwtfactory", + "source_file": "src/Anichron.API/Security/JwtFactory.cs", + "source_location": "L16" }, { "id": "src_anichron_api_services_tokenservice_anichron_api_services_itokenservice", @@ -2413,6 +2321,25 @@ "source_file": "src/Anichron.API/Services/TokenService.cs", "source_location": "L19" }, + { + "id": "src_anichron_api_settings_jwtsettings_anichron_api_settings_jwtsettings", + "label": "JwtSettings", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 240, + "community_name": "TokenService", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "jwtsettings", + "source_file": "src/Anichron.API/Settings/JwtSettings.cs", + "source_location": "L3" + }, { "id": "src_anichron_worker_ingestion_proxy_imageprocessor_anichron_worker_ingestion_proxy_iimageprocessor", "label": "IImageProcessor", @@ -2623,25 +2550,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/FileIngestionPipelineTests.cs", "source_location": "L24" }, - { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests", - "label": "IngestionContextTests", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 25, - "community_name": "SingleFileItem", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", - "scope_chain": [ - "s104" - ] - }, - "norm_label": "ingestioncontexttests", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionContextTests.cs", - "source_location": "L7" - }, { "id": "src_anichron_api_services_adminuserservice_anichron_api_services_adminuserservice", "label": "AdminUserService", @@ -2780,6 +2688,27 @@ "source_file": "src/Anichron.Worker/Crawling/FileIngestionPipeline.cs", "source_location": "L12" }, + { + "id": "src_anichron_worker_crawling_fileingestionpipeline_anichron_worker_crawling_log", + "label": "Log", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 27, + "community_name": "FileIngestionPipeline", + "file_type": "code", + "metadata": { + "is_nested_type": true, + "is_partial": true, + "namespace": "Anichron.Worker.Crawling", + "scope_chain": [ + "s256" + ] + }, + "norm_label": "log", + "source_file": "src/Anichron.Worker/Crawling/FileIngestionPipeline.cs", + "source_location": "L127" + }, { "id": "src_anichron_worker_ingestion_ingestionitem_anichron_worker_ingestion_ingestionitem", "label": "IngestionItem", @@ -2818,6 +2747,63 @@ "source_file": "src/Anichron.Worker/Ingestion/IngestionItem.cs", "source_location": "L5" }, + { + "id": "src_anichron_worker_ingestion_livephotolinker_anichron_worker_ingestion_ilivephotolinker", + "label": "ILivePhotoLinker", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 27, + "community_name": "FileIngestionPipeline", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion", + "scope_chain": [ + "s59" + ] + }, + "norm_label": "ilivephotolinker", + "source_file": "src/Anichron.Worker/Ingestion/LivePhotoLinker.cs", + "source_location": "L10" + }, + { + "id": "src_anichron_worker_ingestion_livephotolinker_anichron_worker_ingestion_livephotolinker", + "label": "LivePhotoLinker", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 27, + "community_name": "FileIngestionPipeline", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion", + "scope_chain": [ + "s59" + ] + }, + "norm_label": "livephotolinker", + "source_file": "src/Anichron.Worker/Ingestion/LivePhotoLinker.cs", + "source_location": "L15" + }, + { + "id": "src_anichron_worker_ingestion_livephotolinker_anichron_worker_ingestion_livephotolinkresult", + "label": "LivePhotoLinkResult", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 27, + "community_name": "FileIngestionPipeline", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion", + "scope_chain": [ + "s59" + ] + }, + "norm_label": "livephotolinkresult", + "source_file": "src/Anichron.Worker/Ingestion/LivePhotoLinker.cs", + "source_location": "L6" + }, { "id": "src_anichron_core_guidfactory_anichron_core_iguidfactory", "label": "IGuidFactory", @@ -2857,8 +2843,8 @@ "source_location": "L8" }, { - "id": "src_anichron_worker_ingestion_pairedmovresolver_anichron_worker_ingestion_pairedmovresolver", - "label": "PairedMovResolver", + "id": "src_anichron_worker_ingestion_proxy_proxyfilebuilder_anichron_worker_ingestion_proxy_proxyfilebuilder", + "label": "ProxyFileBuilder", "_callable": true, "_callable_class": true, "_origin": "ast", @@ -2866,71 +2852,71 @@ "community_name": "IGuidFactory", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s133" + "s108" ] }, - "norm_label": "pairedmovresolver", - "source_file": "src/Anichron.Worker/Ingestion/PairedMovResolver.cs", - "source_location": "L9" + "norm_label": "proxyfilebuilder", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyFileBuilder.cs", + "source_location": "L8" }, { - "id": "src_anichron_worker_ingestion_proxy_proxyfilebuilder_anichron_worker_ingestion_proxy_proxyfilebuilder", - "label": "ProxyFileBuilder", + "id": "src_anichron_worker_infrastructure_workerservicecollectionextensions_anichron_worker_infrastructure_workerservicecollectionextensions", + "label": "WorkerServiceCollectionExtensions", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 275, - "community_name": "IGuidFactory", + "community": 280, + "community_name": "Mutation scope: exclude generated, append-only code; include everything we author", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", + "namespace": "Anichron.Worker.Infrastructure", "scope_chain": [ - "s108" + "s558" ] }, - "norm_label": "proxyfilebuilder", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyFileBuilder.cs", - "source_location": "L8" + "norm_label": "workerservicecollectionextensions", + "source_file": "src/Anichron.Worker/Infrastructure/WorkerServiceCollectionExtensions.cs", + "source_location": "L20" }, { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests", - "label": "AlwaysOnMiddlewareTests", + "id": "src_anichron_worker_infrastructure_workerinidefaults_anichron_worker_infrastructure_workerinidefaults", + "label": "WorkerIniDefaults", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 275, - "community_name": "IGuidFactory", + "community": 283, + "community_name": "Consequences", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", + "namespace": "Anichron.Worker.Infrastructure", "scope_chain": [ - "s287" + "s46" ] }, - "norm_label": "alwaysonmiddlewaretests", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/AlwaysOnMiddlewareTests.cs", - "source_location": "L13" + "norm_label": "workerinidefaults", + "source_file": "src/Anichron.Worker/Infrastructure/WorkerIniDefaults.cs", + "source_location": "L5" }, { - "id": "src_anichron_worker_infrastructure_workerservicecollectionextensions_anichron_worker_infrastructure_workerservicecollectionextensions", - "label": "WorkerServiceCollectionExtensions", + "id": "src_anichron_worker_ingestion_mediatypedetector_anichron_worker_ingestion_mediatypedetector", + "label": "MediaTypeDetector", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 280, - "community_name": "Mutation scope: exclude generated, append-only code; include everything we author", + "community": 283, + "community_name": "Consequences", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Infrastructure", + "namespace": "Anichron.Worker.Ingestion", "scope_chain": [ - "s558" + "s29" ] }, - "norm_label": "workerservicecollectionextensions", - "source_file": "src/Anichron.Worker/Infrastructure/WorkerServiceCollectionExtensions.cs", - "source_location": "L20" + "norm_label": "mediatypedetector", + "source_file": "src/Anichron.Worker/Ingestion/MediaTypeDetector.cs", + "source_location": "L5" }, { "id": "src_anichron_api_services_bootstrapresetservice_anichron_api_services_bootstrapresetservice", @@ -2992,44 +2978,6 @@ "source_file": "src/Anichron.API/Services/BootstrapResetService.cs", "source_location": "L61" }, - { - "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_anichron_worker_ingestion_pipeline_iingestionmiddleware", - "label": "IIngestionMiddleware", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 288, - "community_name": "IIngestionMiddleware", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Pipeline", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "iingestionmiddleware", - "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IIngestionMiddleware.cs", - "source_location": "L5" - }, - { - "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_anichron_worker_ingestion_pipeline_ingestionorder", - "label": "IngestionOrder", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 288, - "community_name": "IIngestionMiddleware", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Pipeline", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "ingestionorder", - "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IIngestionMiddleware.cs", - "source_location": "L12" - }, { "id": "src_anichron_worker_ingestion_pipeline_ingestionpipelinerunner_anichron_worker_ingestion_pipeline_iingestionpipelinerunner", "label": "IIngestionPipelineRunner", @@ -3037,7 +2985,7 @@ "_callable_class": true, "_origin": "ast", "community": 288, - "community_name": "IIngestionMiddleware", + "community_name": "IngestionPipelineRunner", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Pipeline", @@ -3056,7 +3004,7 @@ "_callable_class": true, "_origin": "ast", "community": 288, - "community_name": "IIngestionMiddleware", + "community_name": "IngestionPipelineRunner", "file_type": "code", "metadata": { "is_partial": true, @@ -3076,7 +3024,7 @@ "_callable_class": true, "_origin": "ast", "community": 288, - "community_name": "IIngestionMiddleware", + "community_name": "IngestionPipelineRunner", "file_type": "code", "metadata": { "is_nested_type": true, @@ -3091,45 +3039,45 @@ "source_location": "L130" }, { - "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_log", + "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_anichron_worker_ingestion_proxy_log", "label": "Log", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 29, - "community_name": "Worker", + "community_name": "ProxyStagingWriter", "file_type": "code", "metadata": { "is_nested_type": true, "is_partial": true, - "namespace": "Anichron.Worker.Crawling", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s134" + "s206" ] }, "norm_label": "log", - "source_file": "src/Anichron.Worker/Crawling/Worker.cs", - "source_location": "L50" + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyStagingWriter.cs", + "source_location": "L80" }, { - "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_worker", - "label": "Worker", + "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_anichron_worker_ingestion_proxy_proxystagingwriter", + "label": "ProxyStagingWriter", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 29, - "community_name": "Worker", + "community_name": "ProxyStagingWriter", "file_type": "code", "metadata": { "is_partial": true, - "namespace": "Anichron.Worker.Crawling", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s134" + "s206" ] }, - "norm_label": "worker", - "source_file": "src/Anichron.Worker/Crawling/Worker.cs", - "source_location": "L8" + "norm_label": "proxystagingwriter", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyStagingWriter.cs", + "source_location": "L11" }, { "id": "src_anichron_worker_ingestion_middlewares_persistencemiddleware_anichron_worker_ingestion_middlewares_log", @@ -3173,42 +3121,42 @@ "source_location": "L12" }, { - "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_irefreshtokenrepository", - "label": "IRefreshTokenRepository", + "id": "src_anichron_api_services_lockoutservice_anichron_api_services_ilockoutservice", + "label": "ILockoutService", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 291, - "community_name": "RefreshToken", + "community_name": "LockoutService", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s66" + "s84" ] }, - "norm_label": "irefreshtokenrepository", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", - "source_location": "L6" + "norm_label": "ilockoutservice", + "source_file": "src/Anichron.API/Services/LockoutService.cs", + "source_location": "L7" }, { - "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken", - "label": "RefreshToken", + "id": "src_anichron_api_services_lockoutservice_anichron_api_services_lockoutservice", + "label": "LockoutService", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 291, - "community_name": "RefreshToken", + "community_name": "LockoutService", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Domain", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s0" + "s84" ] }, - "norm_label": "refreshtoken", - "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", - "source_location": "L3" + "norm_label": "lockoutservice", + "source_file": "src/Anichron.API/Services/LockoutService.cs", + "source_location": "L15" }, { "id": "src_anichron_core_storagepath_anichron_core_storagepath", @@ -3217,7 +3165,7 @@ "_callable_class": true, "_origin": "ast", "community": 292, - "community_name": "StoragePathTests", + "community_name": "WorkerInitializer", "file_type": "code", "metadata": { "namespace": "Anichron.Core", @@ -3236,7 +3184,7 @@ "_callable_class": true, "_origin": "ast", "community": 292, - "community_name": "StoragePathTests", + "community_name": "WorkerInitializer", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Tests.Unit", @@ -3248,6 +3196,66 @@ "source_file": "src/Anichron.Core.Tests.Unit/StoragePathTests.cs", "source_location": "L3" }, + { + "id": "src_anichron_worker_crawling_workerstate_anichron_worker_crawling_workerstate", + "label": "WorkerState", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 292, + "community_name": "WorkerInitializer", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Crawling", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "workerstate", + "source_file": "src/Anichron.Worker/Crawling/WorkerState.cs", + "source_location": "L3" + }, + { + "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_log", + "label": "Log", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 292, + "community_name": "WorkerInitializer", + "file_type": "code", + "metadata": { + "is_nested_type": true, + "is_partial": true, + "namespace": "Anichron.Worker.Startup", + "scope_chain": [ + "s213" + ] + }, + "norm_label": "log", + "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", + "source_location": "L89" + }, + { + "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_workerinitializer", + "label": "WorkerInitializer", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 292, + "community_name": "WorkerInitializer", + "file_type": "code", + "metadata": { + "is_partial": true, + "namespace": "Anichron.Worker.Startup", + "scope_chain": [ + "s213" + ] + }, + "norm_label": "workerinitializer", + "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", + "source_location": "L11" + }, { "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_adminstorageconfigservicetests", "label": "AdminStorageConfigServiceTests", @@ -3255,7 +3263,7 @@ "_callable_class": true, "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -3274,7 +3282,7 @@ "_callable_class": true, "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "is_nested_type": true, @@ -3288,13 +3296,13 @@ "source_location": "L13" }, { - "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_efrefreshtokenrepository", - "label": "EfRefreshTokenRepository", + "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_efuserstorageconfigrepository", + "label": "EfUserStorageConfigRepository", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 297, - "community_name": "EfRefreshTokenRepository", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Data.Repository", @@ -3302,28 +3310,66 @@ "s66" ] }, - "norm_label": "efrefreshtokenrepository", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", - "source_location": "L15" + "norm_label": "efuserstorageconfigrepository", + "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", + "source_location": "L18" }, { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests", - "label": "RefreshTokenRepositoryTests", + "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_iuserstorageconfigrepository", + "label": "IUserStorageConfigRepository", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 297, - "community_name": "EfRefreshTokenRepository", + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": "iuserstorageconfigrepository", + "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", + "source_location": "L6" + }, + { + "id": "src_anichron_core_domain_userstorageconfig_anichron_core_domain_userstorageconfig", + "label": "UserStorageConfig", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s3" + ] + }, + "norm_label": "userstorageconfig", + "source_file": "src/Anichron.Core/Domain/UserStorageConfig.cs", + "source_location": "L3" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests", + "label": "UserStorageConfigRepositoryTests", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Tests.Unit.Data.Repository", "scope_chain": [ - "s145" + "s129" ] }, - "norm_label": "refreshtokenrepositorytests", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", - "source_location": "L9" + "norm_label": "userstorageconfigrepositorytests", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L8" }, { "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_testfixture", @@ -3331,8 +3377,8 @@ "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "is_nested_type": true, @@ -3351,8 +3397,8 @@ "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -3365,27 +3411,84 @@ "source_location": "L13" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests", - "label": "IngestionPipelineRunnerTests", + "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests", + "label": "ForwardedHeadersRateLimitTests", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 3, - "community_name": "IngestionPipelineRunnerTests", + "community": 297, + "community_name": "ForwardedHeadersRateLimitTests", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", + "namespace": "Anichron.API.Tests.Unit.Infrastructure", "scope_chain": [ - "s368" + "s279" ] }, - "norm_label": "ingestionpipelinerunnertests", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", - "source_location": "L14" + "norm_label": "forwardedheadersratelimittests", + "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/ForwardedHeadersRateLimitTests.cs", + "source_location": "L12" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_proxydirectorycreatingmiddleware", - "label": "ProxyDirectoryCreatingMiddleware", + "id": "src_anichron_worker_ingestion_proxy_proxyshardstrategy_anichron_worker_ingestion_proxy_iproxydirectorystrategy", + "label": "IProxyDirectoryStrategy", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 299, + "community_name": "IProxyDirectoryStrategy", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion.Proxy", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "iproxydirectorystrategy", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyShardStrategy.cs", + "source_location": "L3" + }, + { + "id": "src_anichron_worker_ingestion_proxy_proxyshardstrategy_anichron_worker_ingestion_proxy_twolevelhexshardstrategy", + "label": "TwoLevelHexShardStrategy", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 299, + "community_name": "IProxyDirectoryStrategy", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion.Proxy", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "twolevelhexshardstrategy", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyShardStrategy.cs", + "source_location": "L8" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests", + "label": "ProxyShardStrategyTests", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 299, + "community_name": "IProxyDirectoryStrategy", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", + "scope_chain": [ + "s40" + ] + }, + "norm_label": "proxyshardstrategytests", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ProxyShardStrategyTests.cs", + "source_location": "L5" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests", + "label": "IngestionPipelineRunnerTests", "_callable": true, "_callable_class": true, "_origin": "ast", @@ -3393,15 +3496,14 @@ "community_name": "IngestionPipelineRunnerTests", "file_type": "code", "metadata": { - "is_nested_type": true, "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", "scope_chain": [ "s368" ] }, - "norm_label": "proxydirectorycreatingmiddleware", + "norm_label": "ingestionpipelinerunnertests", "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", - "source_location": "L367" + "source_location": "L14" }, { "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_proxywritingmiddleware", @@ -3464,121 +3566,45 @@ "source_location": "L380" }, { - "id": "src_anichron_worker_crawling_workerstate_anichron_worker_crawling_workerstate", - "label": "WorkerState", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 301, - "community_name": "WorkerInitializer", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Crawling", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "workerstate", - "source_file": "src/Anichron.Worker/Crawling/WorkerState.cs", - "source_location": "L3" - }, - { - "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_log", + "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_log", "label": "Log", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 301, - "community_name": "WorkerInitializer", + "community": 308, + "community_name": "TestFixture", "file_type": "code", "metadata": { "is_nested_type": true, "is_partial": true, - "namespace": "Anichron.Worker.Startup", + "namespace": "Anichron.Worker.Crawling", "scope_chain": [ - "s213" + "s134" ] }, "norm_label": "log", - "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", - "source_location": "L89" + "source_file": "src/Anichron.Worker/Crawling/Worker.cs", + "source_location": "L50" }, { - "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_workerinitializer", - "label": "WorkerInitializer", + "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_worker", + "label": "Worker", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 301, - "community_name": "WorkerInitializer", + "community": 308, + "community_name": "TestFixture", "file_type": "code", "metadata": { "is_partial": true, - "namespace": "Anichron.Worker.Startup", - "scope_chain": [ - "s213" - ] - }, - "norm_label": "workerinitializer", - "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", - "source_location": "L11" - }, - { - "id": "src_anichron_api_security_jwtfactory_anichron_api_security_ijwtfactory", - "label": "IJwtFactory", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 305, - "community_name": "JwtSettings", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Security", - "scope_chain": [ - "s220" - ] - }, - "norm_label": "ijwtfactory", - "source_file": "src/Anichron.API/Security/JwtFactory.cs", - "source_location": "L11" - }, - { - "id": "src_anichron_api_security_jwtfactory_anichron_api_security_jwtfactory", - "label": "JwtFactory", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 305, - "community_name": "JwtSettings", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Security", - "scope_chain": [ - "s220" - ] - }, - "norm_label": "jwtfactory", - "source_file": "src/Anichron.API/Security/JwtFactory.cs", - "source_location": "L16" - }, - { - "id": "src_anichron_api_settings_jwtsettings_anichron_api_settings_jwtsettings", - "label": "JwtSettings", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 305, - "community_name": "JwtSettings", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Settings", + "namespace": "Anichron.Worker.Crawling", "scope_chain": [ - "s0" + "s134" ] }, - "norm_label": "jwtsettings", - "source_file": "src/Anichron.API/Settings/JwtSettings.cs", - "source_location": "L3" + "norm_label": "worker", + "source_file": "src/Anichron.Worker/Crawling/Worker.cs", + "source_location": "L8" }, { "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_testfixture", @@ -3620,118 +3646,100 @@ "source_location": "L13" }, { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_iuserstorageconfigrepository", - "label": "IUserStorageConfigRepository", + "id": "src_anichron_worker_tests_unit_testdoubles_signallingtimeprovider_anichron_worker_tests_unit_testdoubles_signallingtimeprovider", + "label": "SignallingTimeProvider", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 308, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.Worker.Tests.Unit.TestDoubles", "scope_chain": [ - "s66" + "s75" ] }, - "norm_label": "iuserstorageconfigrepository", - "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", + "norm_label": "signallingtimeprovider", + "source_file": "src/Anichron.Worker.Tests.Unit/TestDoubles/SignallingTimeProvider.cs", "source_location": "L6" }, { - "id": "src_anichron_core_domain_userstorageconfig_anichron_core_domain_userstorageconfig", - "label": "UserStorageConfig", + "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_anichron_worker_ingestion_pipeline_iingestionmiddleware", + "label": "IIngestionMiddleware", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s3" - ] - }, - "norm_label": "userstorageconfig", - "source_file": "src/Anichron.Core/Domain/UserStorageConfig.cs", - "source_location": "L3" - }, - { - "id": "src_anichron_infrastructure_configuration_appiniinitializer_anichron_infrastructure_configuration_inientry", - "label": "IniEntry", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 310, - "community_name": "IniEntry", + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Infrastructure.Configuration", + "namespace": "Anichron.Worker.Ingestion.Pipeline", "scope_chain": [ - "s120" + "s0" ] }, - "norm_label": "inientry", - "source_file": "src/Anichron.Infrastructure/Configuration/AppIniInitializer.cs", - "source_location": "L8" + "norm_label": "iingestionmiddleware", + "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IIngestionMiddleware.cs", + "source_location": "L5" }, { - "id": "src_anichron_worker_infrastructure_workerinidefaults_anichron_worker_infrastructure_workerinidefaults", - "label": "WorkerIniDefaults", + "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_anichron_worker_ingestion_pipeline_ingestionorder", + "label": "IngestionOrder", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 310, - "community_name": "IniEntry", + "community": 31, + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Infrastructure", + "namespace": "Anichron.Worker.Ingestion.Pipeline", "scope_chain": [ - "s46" + "s0" ] }, - "norm_label": "workerinidefaults", - "source_file": "src/Anichron.Worker/Infrastructure/WorkerIniDefaults.cs", - "source_location": "L5" + "norm_label": "ingestionorder", + "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IIngestionMiddleware.cs", + "source_location": "L12" }, { - "id": "src_anichron_api_infrastructure_jwtconfiguration_anichron_api_infrastructure_jwtconfiguration", - "label": "JwtConfiguration", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_cancellingmiddleware", + "label": "CancellingMiddleware", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 314, - "community_name": ".Read", + "community": 31, + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Infrastructure", + "is_nested_type": true, + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", "scope_chain": [ - "s20" + "s368" ] }, - "norm_label": "jwtconfiguration", - "source_file": "src/Anichron.API/Infrastructure/JwtConfiguration.cs", - "source_location": "L5" + "norm_label": "cancellingmiddleware", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", + "source_location": "L392" }, { - "id": "src_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_anichron_api_tests_unit_infrastructure_jwtconfigurationtests", - "label": "JwtConfigurationTests", + "id": "src_anichron_infrastructure_configuration_appiniinitializer_anichron_infrastructure_configuration_inientry", + "label": "IniEntry", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 314, - "community_name": ".Read", + "community": 310, + "community_name": ".EnsureUpToDate", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Tests.Unit.Infrastructure", + "namespace": "Anichron.Infrastructure.Configuration", "scope_chain": [ - "s78" + "s120" ] }, - "norm_label": "jwtconfigurationtests", - "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/JwtConfigurationTests.cs", - "source_location": "L6" + "norm_label": "inientry", + "source_file": "src/Anichron.Infrastructure/Configuration/AppIniInitializer.cs", + "source_location": "L8" }, { "id": "src_anichron_api_services_bootstrapseeder_anichron_api_services_bootstrapseeder", @@ -3852,25 +3860,6 @@ "source_file": "src/Anichron.API.Tests.Unit/Security/JwtFactoryTests.cs", "source_location": "L19" }, - { - "id": "src_anichron_worker_tests_unit_testdoubles_signallingtimeprovider_anichron_worker_tests_unit_testdoubles_signallingtimeprovider", - "label": "SignallingTimeProvider", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 320, - "community_name": "SignallingTimeProvider", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.TestDoubles", - "scope_chain": [ - "s75" - ] - }, - "norm_label": "signallingtimeprovider", - "source_file": "src/Anichron.Worker.Tests.Unit/TestDoubles/SignallingTimeProvider.cs", - "source_location": "L6" - }, { "id": "src_anichron_api_tests_unit_infrastructure_routetabletests_anichron_api_tests_unit_infrastructure_route", "label": "Route", @@ -3911,61 +3900,23 @@ "source_location": "L14" }, { - "id": "src_anichron_api_endpoints_adminendpoints_anichron_api_endpoints_admincreateduserresponse", - "label": "AdminCreatedUserResponse", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 324, - "community_name": "AdminCreatedUser", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Endpoints", - "scope_chain": [ - "s95" - ] - }, - "norm_label": "admincreateduserresponse", - "source_file": "src/Anichron.API/Endpoints/AdminEndpoints.cs", - "source_location": "L133" - }, - { - "id": "src_anichron_api_endpoints_adminendpoints_anichron_api_endpoints_adminpasswordresetresponse", - "label": "AdminPasswordResetResponse", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 324, - "community_name": "AdminCreatedUser", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Endpoints", - "scope_chain": [ - "s95" - ] - }, - "norm_label": "adminpasswordresetresponse", - "source_file": "src/Anichron.API/Endpoints/AdminEndpoints.cs", - "source_location": "L134" - }, - { - "id": "src_anichron_api_endpoints_adminendpoints_anichron_api_endpoints_createadminuserrequest", - "label": "CreateAdminUserRequest", + "id": "src_anichron_api_security_passwordhasher_anichron_api_security_ipasswordhasher", + "label": "IPasswordHasher", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 324, - "community_name": "AdminCreatedUser", + "community_name": "IUnitOfWork", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Endpoints", + "namespace": "Anichron.API.Security", "scope_chain": [ - "s95" + "s124" ] }, - "norm_label": "createadminuserrequest", - "source_file": "src/Anichron.API/Endpoints/AdminEndpoints.cs", - "source_location": "L132" + "norm_label": "ipasswordhasher", + "source_file": "src/Anichron.API/Security/PasswordHasher.cs", + "source_location": "L8" }, { "id": "src_anichron_api_services_adminresetservice_anichron_api_services_adminresetservice", @@ -3974,7 +3925,7 @@ "_callable_class": true, "_origin": "ast", "community": 324, - "community_name": "AdminCreatedUser", + "community_name": "IUnitOfWork", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -3987,80 +3938,61 @@ "source_location": "L15" }, { - "id": "src_anichron_api_services_adminresetservice_anichron_api_services_adminuserpasswordreset", - "label": "AdminUserPasswordReset", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 324, - "community_name": "AdminCreatedUser", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s129" - ] - }, - "norm_label": "adminuserpasswordreset", - "source_file": "src/Anichron.API/Services/AdminResetService.cs", - "source_location": "L8" - }, - { - "id": "src_anichron_api_services_adminresetservice_anichron_api_services_iadminresetservice", - "label": "IAdminResetService", + "id": "src_anichron_api_services_authservice_anichron_api_services_authservice", + "label": "AuthService", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 324, - "community_name": "AdminCreatedUser", + "community_name": "IUnitOfWork", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", "scope_chain": [ - "s129" + "s253" ] }, - "norm_label": "iadminresetservice", - "source_file": "src/Anichron.API/Services/AdminResetService.cs", - "source_location": "L10" + "norm_label": "authservice", + "source_file": "src/Anichron.API/Services/AuthService.cs", + "source_location": "L53" }, { - "id": "src_anichron_api_services_authservice_anichron_api_services_admincreateduser", - "label": "AdminCreatedUser", + "id": "src_anichron_core_data_iunitofwork_anichron_core_data_iunitofwork", + "label": "IUnitOfWork", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 324, - "community_name": "AdminCreatedUser", + "community_name": "IUnitOfWork", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Services", + "namespace": "Anichron.Core.Data", "scope_chain": [ - "s253" + "s0" ] }, - "norm_label": "admincreateduser", - "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L14" + "norm_label": "iunitofwork", + "source_file": "src/Anichron.Core/Data/IUnitOfWork.cs", + "source_location": "L3" }, { - "id": "src_anichron_api_tests_unit_endpoints_adminendpointstests_anichron_api_tests_unit_endpoints_adminendpointstests", - "label": "AdminEndpointsTests", + "id": "src_anichron_core_identitynormalizer_anichron_core_identitynormalizer", + "label": "IdentityNormalizer", "_callable": true, "_callable_class": true, "_origin": "ast", "community": 324, - "community_name": "AdminCreatedUser", + "community_name": "IUnitOfWork", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Tests.Unit.Endpoints", + "namespace": "Anichron.Core", "scope_chain": [ - "s93" + "s0" ] }, - "norm_label": "adminendpointstests", - "source_file": "src/Anichron.API.Tests.Unit/Endpoints/AdminEndpointsTests.cs", - "source_location": "L7" + "norm_label": "identitynormalizer", + "source_file": "src/Anichron.Core/IdentityNormalizer.cs", + "source_location": "L3" }, { "id": "src_anichron_api_infrastructure_databasestartupextensions_anichron_api_infrastructure_databasestartupextensions", @@ -4103,25 +4035,6 @@ "source_file": "src/Anichron.API/Infrastructure/DatabaseStartupExtensions.cs", "source_location": "L41" }, - { - "id": "src_anichron_core_identitynormalizer_anichron_core_identitynormalizer", - "label": "IdentityNormalizer", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 327, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "identitynormalizer", - "source_file": "src/Anichron.Core/IdentityNormalizer.cs", - "source_location": "L3" - }, { "id": "src_anichron_worker_ingestion_mediafileextensions_anichron_worker_ingestion_mediafileextensions", "label": "MediaFileExtensions", @@ -4390,6 +4303,44 @@ "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", "source_location": "L11" }, + { + "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_h264encoder", + "label": "H264Encoder", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessorTests", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion.Proxy", + "scope_chain": [ + "s69" + ] + }, + "norm_label": "h264encoder", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", + "source_location": "L115" + }, + { + "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_ivideoprocessor", + "label": "IVideoProcessor", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessorTests", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion.Proxy", + "scope_chain": [ + "s69" + ] + }, + "norm_label": "ivideoprocessor", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", + "source_location": "L6" + }, { "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_log", "label": "Log", @@ -4411,6 +4362,25 @@ "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", "source_location": "L105" }, + { + "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_video720pgenerator", + "label": "Video720PGenerator", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessorTests", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion.Proxy", + "scope_chain": [ + "s29" + ] + }, + "norm_label": "video720pgenerator", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", + "source_location": "L12" + }, { "id": "src_anichron_worker_tests_unit_ingestion_proxy_ffmpegvideoprocessortests_anichron_worker_tests_unit_ingestion_proxy_ffmpegvideoprocessortests", "label": "FfmpegVideoProcessorTests", @@ -4450,6 +4420,44 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/FfmpegVideoProcessorTests.cs", "source_location": "L10" }, + { + "id": "src_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests", + "label": "VideoProxyGeneratorsTests", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessorTests", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", + "scope_chain": [ + "s68" + ] + }, + "norm_label": "videoproxygeneratorstests", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/VideoProxyGeneratorsTests.cs", + "source_location": "L6" + }, + { + "id": "src_anichron_api_endpoints_adminendpoints_anichron_api_endpoints_admincreateduserresponse", + "label": "AdminCreatedUserResponse", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 35, + "community_name": "IAuthResponseMapper", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Endpoints", + "scope_chain": [ + "s95" + ] + }, + "norm_label": "admincreateduserresponse", + "source_file": "src/Anichron.API/Endpoints/AdminEndpoints.cs", + "source_location": "L133" + }, { "id": "src_anichron_api_endpoints_adminendpoints_anichron_api_endpoints_adminendpoints", "label": "AdminEndpoints", @@ -4469,6 +4477,82 @@ "source_file": "src/Anichron.API/Endpoints/AdminEndpoints.cs", "source_location": "L7" }, + { + "id": "src_anichron_api_endpoints_adminendpoints_anichron_api_endpoints_adminpasswordresetresponse", + "label": "AdminPasswordResetResponse", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 35, + "community_name": "IAuthResponseMapper", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Endpoints", + "scope_chain": [ + "s95" + ] + }, + "norm_label": "adminpasswordresetresponse", + "source_file": "src/Anichron.API/Endpoints/AdminEndpoints.cs", + "source_location": "L134" + }, + { + "id": "src_anichron_api_endpoints_adminendpoints_anichron_api_endpoints_adminstorageconfigresponse", + "label": "AdminStorageConfigResponse", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 35, + "community_name": "IAuthResponseMapper", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Endpoints", + "scope_chain": [ + "s95" + ] + }, + "norm_label": "adminstorageconfigresponse", + "source_file": "src/Anichron.API/Endpoints/AdminEndpoints.cs", + "source_location": "L138" + }, + { + "id": "src_anichron_api_endpoints_adminendpoints_anichron_api_endpoints_adminuserresponse", + "label": "AdminUserResponse", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 35, + "community_name": "IAuthResponseMapper", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Endpoints", + "scope_chain": [ + "s95" + ] + }, + "norm_label": "adminuserresponse", + "source_file": "src/Anichron.API/Endpoints/AdminEndpoints.cs", + "source_location": "L135" + }, + { + "id": "src_anichron_api_endpoints_adminendpoints_anichron_api_endpoints_createadminuserrequest", + "label": "CreateAdminUserRequest", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 35, + "community_name": "IAuthResponseMapper", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Endpoints", + "scope_chain": [ + "s95" + ] + }, + "norm_label": "createadminuserrequest", + "source_file": "src/Anichron.API/Endpoints/AdminEndpoints.cs", + "source_location": "L132" + }, { "id": "src_anichron_api_endpoints_adminendpoints_anichron_api_endpoints_createstorageconfigrequest", "label": "CreateStorageConfigRequest", @@ -4527,8 +4611,8 @@ "source_location": "L10" }, { - "id": "src_anichron_api_services_adminstorageconfigservice_anichron_api_services_iadminstorageconfigservice", - "label": "IAdminStorageConfigService", + "id": "src_anichron_api_services_adminresetservice_anichron_api_services_adminuserpasswordreset", + "label": "AdminUserPasswordReset", "_callable": true, "_callable_class": true, "_origin": "ast", @@ -4538,12 +4622,31 @@ "metadata": { "namespace": "Anichron.API.Services", "scope_chain": [ - "s143" + "s129" ] }, - "norm_label": "iadminstorageconfigservice", - "source_file": "src/Anichron.API/Services/AdminStorageConfigService.cs", - "source_location": "L9" + "norm_label": "adminuserpasswordreset", + "source_file": "src/Anichron.API/Services/AdminResetService.cs", + "source_location": "L8" + }, + { + "id": "src_anichron_api_services_adminresetservice_anichron_api_services_iadminresetservice", + "label": "IAdminResetService", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 35, + "community_name": "IAuthResponseMapper", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s129" + ] + }, + "norm_label": "iadminresetservice", + "source_file": "src/Anichron.API/Services/AdminResetService.cs", + "source_location": "L10" }, { "id": "src_anichron_api_services_adminuserservice_anichron_api_services_iadminuserservice", @@ -4565,8 +4668,27 @@ "source_location": "L7" }, { - "id": "src_anichron_api_tests_unit_endpoints_adminstorageconfigendpointstests_anichron_api_tests_unit_endpoints_adminstorageconfigendpointstests", - "label": "AdminStorageConfigEndpointsTests", + "id": "src_anichron_api_services_authservice_anichron_api_services_admincreateduser", + "label": "AdminCreatedUser", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 35, + "community_name": "IAuthResponseMapper", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s253" + ] + }, + "norm_label": "admincreateduser", + "source_file": "src/Anichron.API/Services/AuthService.cs", + "source_location": "L14" + }, + { + "id": "src_anichron_api_tests_unit_endpoints_adminendpointstests_anichron_api_tests_unit_endpoints_adminendpointstests", + "label": "AdminEndpointsTests", "_callable": true, "_callable_class": true, "_origin": "ast", @@ -4576,12 +4698,12 @@ "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", "scope_chain": [ - "s121" + "s93" ] }, - "norm_label": "adminstorageconfigendpointstests", - "source_file": "src/Anichron.API.Tests.Unit/Endpoints/AdminStorageConfigEndpointsTests.cs", - "source_location": "L8" + "norm_label": "adminendpointstests", + "source_file": "src/Anichron.API.Tests.Unit/Endpoints/AdminEndpointsTests.cs", + "source_location": "L7" }, { "id": "src_anichron_api_tests_unit_endpoints_adminuserendpointstests_anichron_api_tests_unit_endpoints_adminuserendpointstests", @@ -4811,63 +4933,6 @@ "source_file": "src/Anichron.API/Services/LoginResponseFloor.cs", "source_location": "L9" }, - { - "id": "src_anichron_worker_ingestion_livephotolinker_anichron_worker_ingestion_ilivephotolinker", - "label": "ILivePhotoLinker", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 368, - "community_name": "LivePhotoLinker.cs", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion", - "scope_chain": [ - "s59" - ] - }, - "norm_label": "ilivephotolinker", - "source_file": "src/Anichron.Worker/Ingestion/LivePhotoLinker.cs", - "source_location": "L10" - }, - { - "id": "src_anichron_worker_ingestion_livephotolinker_anichron_worker_ingestion_livephotolinker", - "label": "LivePhotoLinker", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 368, - "community_name": "LivePhotoLinker.cs", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion", - "scope_chain": [ - "s59" - ] - }, - "norm_label": "livephotolinker", - "source_file": "src/Anichron.Worker/Ingestion/LivePhotoLinker.cs", - "source_location": "L15" - }, - { - "id": "src_anichron_worker_ingestion_livephotolinker_anichron_worker_ingestion_livephotolinkresult", - "label": "LivePhotoLinkResult", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 368, - "community_name": "LivePhotoLinker.cs", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion", - "scope_chain": [ - "s59" - ] - }, - "norm_label": "livephotolinkresult", - "source_file": "src/Anichron.Worker/Ingestion/LivePhotoLinker.cs", - "source_location": "L6" - }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_imageproxymiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_recordinggenerator", "label": "RecordingGenerator", @@ -4948,8 +5013,27 @@ "source_location": "L325" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_cancellingmiddleware", - "label": "CancellingMiddleware", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests", + "label": "IngestionContextTests", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 37, + "community_name": "IngestionContext", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", + "scope_chain": [ + "s104" + ] + }, + "norm_label": "ingestioncontexttests", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionContextTests.cs", + "source_location": "L7" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_proxydirectorycreatingmiddleware", + "label": "ProxyDirectoryCreatingMiddleware", "_callable": true, "_callable_class": true, "_origin": "ast", @@ -4963,9 +5047,9 @@ "s368" ] }, - "norm_label": "cancellingmiddleware", + "norm_label": "proxydirectorycreatingmiddleware", "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", - "source_location": "L392" + "source_location": "L367" }, { "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_stubmiddleware", @@ -5103,27 +5187,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/LivePhotoLinkerTests.cs", "source_location": "L7" }, - { - "id": "src_anichron_worker_crawling_fileingestionpipeline_anichron_worker_crawling_log", - "label": "Log", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 390, - "community_name": ".ItemFailed", - "file_type": "code", - "metadata": { - "is_nested_type": true, - "is_partial": true, - "namespace": "Anichron.Worker.Crawling", - "scope_chain": [ - "s256" - ] - }, - "norm_label": "log", - "source_file": "src/Anichron.Worker/Crawling/FileIngestionPipeline.cs", - "source_location": "L127" - }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_imageproxymiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_corner", "label": "Corner", @@ -5220,6 +5283,44 @@ "source_file": "src/Anichron.Infrastructure/Data/PostgresConstants.cs", "source_location": "L3" }, + { + "id": "src_anichron_worker_startup_idatabasemigrator_anichron_worker_startup_efdatabasemigrator", + "label": "EfDatabaseMigrator", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 404, + "community_name": "Anichron.Infrastructure.Data", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Startup", + "scope_chain": [ + "s63" + ] + }, + "norm_label": "efdatabasemigrator", + "source_file": "src/Anichron.Worker/Startup/IDatabaseMigrator.cs", + "source_location": "L11" + }, + { + "id": "src_anichron_worker_startup_idatabasemigrator_anichron_worker_startup_idatabasemigrator", + "label": "IDatabaseMigrator", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 404, + "community_name": "Anichron.Infrastructure.Data", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Startup", + "scope_chain": [ + "s63" + ] + }, + "norm_label": "idatabasemigrator", + "source_file": "src/Anichron.Worker/Startup/IDatabaseMigrator.cs", + "source_location": "L6" + }, { "id": "src_anichron_infrastructure_configuration_databaseconfiguration_anichron_infrastructure_configuration_databaseconfiguration", "label": "DatabaseConfiguration", @@ -5468,142 +5569,6 @@ "source_file": "src/Anichron.Core.Tests.Unit/Data/SoftDeleteQueryFilterTests.cs", "source_location": "L7" }, - { - "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_anichron_worker_ingestion_middlewares_log", - "label": "Log", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "is_nested_type": true, - "is_partial": true, - "namespace": "Anichron.Worker.Ingestion.Middlewares", - "scope_chain": [ - "s110" - ] - }, - "norm_label": "log", - "source_file": "src/Anichron.Worker/Ingestion/Middlewares/VideoProxyMiddleware.cs", - "source_location": "L39" - }, - { - "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_anichron_worker_ingestion_middlewares_videoproxymiddleware", - "label": "VideoProxyMiddleware", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "is_partial": true, - "namespace": "Anichron.Worker.Ingestion.Middlewares", - "scope_chain": [ - "s110" - ] - }, - "norm_label": "videoproxymiddleware", - "source_file": "src/Anichron.Worker/Ingestion/Middlewares/VideoProxyMiddleware.cs", - "source_location": "L7" - }, - { - "id": "src_anichron_worker_ingestion_proxy_proxyshardstrategy_anichron_worker_ingestion_proxy_iproxydirectorystrategy", - "label": "IProxyDirectoryStrategy", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "iproxydirectorystrategy", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyShardStrategy.cs", - "source_location": "L3" - }, - { - "id": "src_anichron_worker_ingestion_proxy_proxyshardstrategy_anichron_worker_ingestion_proxy_twolevelhexshardstrategy", - "label": "TwoLevelHexShardStrategy", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "twolevelhexshardstrategy", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyShardStrategy.cs", - "source_location": "L8" - }, - { - "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_ivideoprocessor", - "label": "IVideoProcessor", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s69" - ] - }, - "norm_label": "ivideoprocessor", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", - "source_location": "L6" - }, - { - "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_ivideoproxygenerator", - "label": "IVideoProxyGenerator", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s29" - ] - }, - "norm_label": "ivideoproxygenerator", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", - "source_location": "L5" - }, - { - "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_video720pgenerator", - "label": "Video720PGenerator", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s29" - ] - }, - "norm_label": "video720pgenerator", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", - "source_location": "L12" - }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_videoproxymiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_testfixture", "label": "TestFixture", @@ -5643,44 +5608,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/VideoProxyMiddlewareTests.cs", "source_location": "L15" }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests", - "label": "ProxyShardStrategyTests", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", - "scope_chain": [ - "s40" - ] - }, - "norm_label": "proxyshardstrategytests", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ProxyShardStrategyTests.cs", - "source_location": "L5" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests", - "label": "VideoProxyGeneratorsTests", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", - "scope_chain": [ - "s68" - ] - }, - "norm_label": "videoproxygeneratorstests", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/VideoProxyGeneratorsTests.cs", - "source_location": "L6" - }, { "id": "src_anichron_api_infrastructure_configurationlist_anichron_api_infrastructure_configurationlist", "label": "ConfigurationList", @@ -5892,6 +5819,82 @@ "source_file": "src/Anichron.API.Tests.Unit/Services/TokenServiceTests.cs", "source_location": "L12" }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_efrefreshtokenrepository", + "label": "EfRefreshTokenRepository", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": "efrefreshtokenrepository", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L15" + }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_irefreshtokenrepository", + "label": "IRefreshTokenRepository", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": "irefreshtokenrepository", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L6" + }, + { + "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken", + "label": "RefreshToken", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "refreshtoken", + "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", + "source_location": "L3" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests", + "label": "RefreshTokenRepositoryTests", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s145" + ] + }, + "norm_label": "refreshtokenrepositorytests", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", + "source_location": "L9" + }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_idempotencycheckmiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_idempotencycheckmiddlewaretests", "label": "IdempotencyCheckMiddlewareTests", @@ -5938,7 +5941,7 @@ "_callable_class": true, "_origin": "ast", "community": 71, - "community_name": "IdempotencyCheckMiddleware", + "community_name": ".Create", "file_type": "code", "metadata": { "is_partial": true, @@ -5958,7 +5961,7 @@ "_callable_class": true, "_origin": "ast", "community": 71, - "community_name": "IdempotencyCheckMiddleware", + "community_name": ".Create", "file_type": "code", "metadata": { "is_nested_type": true, @@ -5973,45 +5976,23 @@ "source_location": "L26" }, { - "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_anichron_worker_ingestion_proxy_log", - "label": "Log", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 72, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "is_nested_type": true, - "is_partial": true, - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s206" - ] - }, - "norm_label": "log", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyStagingWriter.cs", - "source_location": "L80" - }, - { - "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_anichron_worker_ingestion_proxy_proxystagingwriter", - "label": "ProxyStagingWriter", + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests", + "label": "AlwaysOnMiddlewareTests", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 72, - "community_name": "TestFixture", + "community": 71, + "community_name": ".Create", "file_type": "code", "metadata": { - "is_partial": true, - "namespace": "Anichron.Worker.Ingestion.Proxy", + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", "scope_chain": [ - "s206" + "s287" ] }, - "norm_label": "proxystagingwriter", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyStagingWriter.cs", - "source_location": "L11" + "norm_label": "alwaysonmiddlewaretests", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/AlwaysOnMiddlewareTests.cs", + "source_location": "L13" }, { "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxystagingwritertests_anichron_worker_tests_unit_ingestion_proxy_proxystagingwritertests", @@ -6403,6 +6384,25 @@ "source_file": "src/Anichron.Core/Domain/MediaAsset.cs", "source_location": "L3" }, + { + "id": "src_anichron_worker_ingestion_pairedmovresolver_anichron_worker_ingestion_pairedmovresolver", + "label": "PairedMovResolver", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 79, + "community_name": "MediaAsset", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion", + "scope_chain": [ + "s133" + ] + }, + "norm_label": "pairedmovresolver", + "source_file": "src/Anichron.Worker/Ingestion/PairedMovResolver.cs", + "source_location": "L9" + }, { "id": "src_anichron_api_infrastructure_ratelimiting_anichron_api_infrastructure_ratelimiting", "label": "RateLimiting", @@ -6712,38 +6712,6 @@ "source_file": "src/Anichron.API/Infrastructure/ApiPaths.cs", "source_location": "L22" }, - { - "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_hashinvitetoken", - "label": ".HashInviteToken()", - "_callable": true, - "_origin": "ast", - "community": 0, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s253" - ], - "unresolved_calls": [ - { - "callee": "ToBase64String", - "receiver_type": "Convert", - "lang": "csharp", - "line": "L122" - }, - { - "callee": "HashData", - "receiver_type": "SHA256", - "lang": "csharp", - "line": "L122" - } - ] - }, - "norm_label": ".hashinvitetoken()", - "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L121" - }, { "id": "src_anichron_api_services_registrationvalidator_anichron_api_services_iregistrationvalidator_validateasync", "label": ".ValidateAsync()", @@ -9004,6 +8972,32 @@ "source_file": "src/Anichron.API.Tests.Unit/Endpoints/AuthResponseMapperTests.cs", "source_location": "L471" }, + { + "id": "src_anichron_api_tests_unit_endpoints_authresponsemappertests_anichron_api_tests_unit_endpoints_authresponsemappertests_getadmincreateuserresult_success_returns201withlocationandbody", + "label": ".GetAdminCreateUserResult_Success_Returns201WithLocationAndBody()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "AuthResponseMapperTests", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Endpoints", + "scope_chain": [ + "s208" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L458" + } + ] + }, + "norm_label": ".getadmincreateuserresult_success_returns201withlocationandbody()", + "source_file": "src/Anichron.API.Tests.Unit/Endpoints/AuthResponseMapperTests.cs", + "source_location": "L455" + }, { "id": "src_anichron_api_tests_unit_endpoints_authresponsemappertests_anichron_api_tests_unit_endpoints_authresponsemappertests_getadmincreateuserresult_undefinedautherror_throwsunreachableexception", "label": ".GetAdminCreateUserResult_UndefinedAuthError_ThrowsUnreachableException()", @@ -10568,44 +10562,6 @@ "source_file": "src/Anichron.Core/Migrations/20260927145042_AddSchemaComments.cs", "source_location": "L12" }, - { - "id": "src_anichron_core_migrations_20260927145042_addschemacomments_designer_anichron_core_migrations_addschemacomments_buildtargetmodel", - "label": ".BuildTargetModel()", - "_callable": true, - "_origin": "ast", - "community": 104, - "community_name": "nodatime", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Migrations", - "scope_chain": [ - "s353" - ], - "unresolved_calls": [ - { - "callee": "HasAnnotation", - "receiver_type": "ModelBuilder", - "lang": "csharp", - "line": "L23" - }, - { - "callee": "UseIdentityByDefaultColumns", - "receiver_type": "NpgsqlModelBuilderExtensions", - "lang": "csharp", - "line": "L27" - }, - { - "callee": "Entity", - "receiver_type": "ModelBuilder", - "lang": "csharp", - "line": "L29" - } - ] - }, - "norm_label": ".buildtargetmodel()", - "source_file": "src/Anichron.Core/Migrations/20260927145042_AddSchemaComments.Designer.cs", - "source_location": "L20" - }, { "id": "src_anichron_core_migrations_20261010235916_uniqueactivecontenthashperconfig_anichron_core_migrations_uniqueactivecontenthashperconfig_down", "label": ".Down()", @@ -10670,6 +10626,44 @@ "source_file": "src/Anichron.Core/Migrations/20261010235916_UniqueActiveContentHashPerConfig.cs", "source_location": "L11" }, + { + "id": "src_anichron_core_migrations_20261010235916_uniqueactivecontenthashperconfig_designer_anichron_core_migrations_uniqueactivecontenthashperconfig_buildtargetmodel", + "label": ".BuildTargetModel()", + "_callable": true, + "_origin": "ast", + "community": 104, + "community_name": "nodatime", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Migrations", + "scope_chain": [ + "s353" + ], + "unresolved_calls": [ + { + "callee": "HasAnnotation", + "receiver_type": "ModelBuilder", + "lang": "csharp", + "line": "L23" + }, + { + "callee": "UseIdentityByDefaultColumns", + "receiver_type": "NpgsqlModelBuilderExtensions", + "lang": "csharp", + "line": "L27" + }, + { + "callee": "Entity", + "receiver_type": "ModelBuilder", + "lang": "csharp", + "line": "L29" + } + ] + }, + "norm_label": ".buildtargetmodel()", + "source_file": "src/Anichron.Core/Migrations/20261010235916_UniqueActiveContentHashPerConfig.Designer.cs", + "source_location": "L20" + }, { "id": "src_anichron_core_migrations_20261012023903_storerawexiforientation_anichron_core_migrations_storerawexiforientation_down", "label": ".Down()", @@ -10798,44 +10792,6 @@ "source_file": "src/Anichron.Core/Migrations/20261012025151_DocumentIdentityNormalization.cs", "source_location": "L11" }, - { - "id": "src_anichron_core_migrations_20261012025151_documentidentitynormalization_designer_anichron_core_migrations_documentidentitynormalization_buildtargetmodel", - "label": ".BuildTargetModel()", - "_callable": true, - "_origin": "ast", - "community": 104, - "community_name": "nodatime", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Migrations", - "scope_chain": [ - "s353" - ], - "unresolved_calls": [ - { - "callee": "HasAnnotation", - "receiver_type": "ModelBuilder", - "lang": "csharp", - "line": "L23" - }, - { - "callee": "UseIdentityByDefaultColumns", - "receiver_type": "NpgsqlModelBuilderExtensions", - "lang": "csharp", - "line": "L27" - }, - { - "callee": "Entity", - "receiver_type": "ModelBuilder", - "lang": "csharp", - "line": "L29" - } - ] - }, - "norm_label": ".buildtargetmodel()", - "source_file": "src/Anichron.Core/Migrations/20261012025151_DocumentIdentityNormalization.Designer.cs", - "source_location": "L20" - }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_exifdatamappingtests_anichron_worker_tests_unit_ingestion_middlewares_exifdatamappingtests_buildexifdata_cameraandlens_areread", "label": ".BuildExifData_CameraAndLens_AreRead()", @@ -12780,6 +12736,44 @@ "source_file": "src/Anichron.API/Endpoints/AuthResponseMapper.cs", "source_location": "L172" }, + { + "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_authresponsemapper_getadmincreateuserresult", + "label": ".GetAdminCreateUserResult()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "AuthResult", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Endpoints", + "scope_chain": [ + "s195" + ], + "unresolved_calls": [ + { + "callee": "UnprocessableEntity", + "receiver_type": "Results", + "lang": "csharp", + "line": "L121" + }, + { + "callee": "Conflict", + "receiver_type": "Results", + "lang": "csharp", + "line": "L123" + }, + { + "callee": "Created", + "receiver_type": "Results", + "lang": "csharp", + "line": "L131" + } + ] + }, + "norm_label": ".getadmincreateuserresult()", + "source_file": "src/Anichron.API/Endpoints/AuthResponseMapper.cs", + "source_location": "L115" + }, { "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_authresponsemapper_getadmindeletestorageconfigresult", "label": ".GetAdminDeleteStorageConfigResult()", @@ -13230,6 +13224,24 @@ "source_file": "src/Anichron.API/Endpoints/AuthResponseMapper.cs", "source_location": "L23" }, + { + "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_iauthresponsemapper_getadmincreateuserresult", + "label": ".GetAdminCreateUserResult()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "AuthResult", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Endpoints", + "scope_chain": [ + "s195" + ] + }, + "norm_label": ".getadmincreateuserresult()", + "source_file": "src/Anichron.API/Endpoints/AuthResponseMapper.cs", + "source_location": "L16" + }, { "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_iauthresponsemapper_getadmindeletestorageconfigresult", "label": ".GetAdminDeleteStorageConfigResult()", @@ -13284,6 +13296,24 @@ "source_file": "src/Anichron.API/Endpoints/AuthResponseMapper.cs", "source_location": "L22" }, + { + "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_iauthresponsemapper_getadmingetuserresult", + "label": ".GetAdminGetUserResult()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "AuthResult", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Endpoints", + "scope_chain": [ + "s195" + ] + }, + "norm_label": ".getadmingetuserresult()", + "source_file": "src/Anichron.API/Endpoints/AuthResponseMapper.cs", + "source_location": "L19" + }, { "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_iauthresponsemapper_getadmingetusersresult", "label": ".GetAdminGetUsersResult()", @@ -13392,424 +13422,6 @@ "source_file": "src/Anichron.API/Endpoints/AuthResponseMapper.cs", "source_location": "L12" }, - { - "id": "src_anichron_api_security_passwordhasher_anichron_api_security_ipasswordhasher_hash", - "label": ".Hash()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Security", - "scope_chain": [ - "s124" - ] - }, - "norm_label": ".hash()", - "source_file": "src/Anichron.API/Security/PasswordHasher.cs", - "source_location": "L10" - }, - { - "id": "src_anichron_api_security_passwordhasher_anichron_api_security_ipasswordhasher_verify", - "label": ".Verify()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Security", - "scope_chain": [ - "s124" - ] - }, - "norm_label": ".verify()", - "source_file": "src/Anichron.API/Security/PasswordHasher.cs", - "source_location": "L15" - }, - { - "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_admincreateuserasync", - "label": ".AdminCreateUserAsync()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s253" - ], - "unresolved_calls": [ - { - "callee": "ThrowIfNull", - "receiver_type": "ArgumentNullException", - "lang": "csharp", - "line": "L212" - }, - { - "callee": "ToBase64String", - "receiver_type": "Convert", - "lang": "csharp", - "line": "L228" - }, - { - "callee": "GetBytes", - "receiver_type": "RandomNumberGenerator", - "lang": "csharp", - "line": "L228" - } - ] - }, - "norm_label": ".admincreateuserasync()", - "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L210" - }, - { - "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_authenticateasync", - "label": ".AuthenticateAsync()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s253" - ], - "unresolved_calls": [ - { - "callee": "GetCurrentInstant", - "receiver_type": "IClock", - "lang": "csharp", - "line": "L146" - }, - { - "callee": "Ceiling", - "receiver_type": "Math", - "lang": "csharp", - "line": "L162" - }, - { - "callee": "Max", - "receiver_type": "Math", - "lang": "csharp", - "line": "L163" - } - ] - }, - "norm_label": ".authenticateasync()", - "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L137" - }, - { - "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_changepasswordasync", - "label": ".ChangePasswordAsync()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s253" - ], - "unresolved_calls": [ - { - "callee": "ThrowIfNull", - "receiver_type": "ArgumentNullException", - "lang": "csharp", - "line": "L187" - }, - { - "callee": "GetCurrentInstant", - "receiver_type": "IClock", - "lang": "csharp", - "line": "L202" - } - ] - }, - "norm_label": ".changepasswordasync()", - "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L185" - }, - { - "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_detectconstrainterror", - "label": ".DetectConstraintError()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s253" - ] - }, - "norm_label": ".detectconstrainterror()", - "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L253" - }, - { - "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_loginasync", - "label": ".LoginAsync()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s253" - ], - "unresolved_calls": [ - { - "callee": "ThrowIfNull", - "receiver_type": "ArgumentNullException", - "lang": "csharp", - "line": "L126" - } - ] - }, - "norm_label": ".loginasync()", - "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L124" - }, - { - "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_refreshasync", - "label": ".RefreshAsync()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s253" - ] - }, - "norm_label": ".refreshasync()", - "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L179" - }, - { - "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_registerasync", - "label": ".RegisterAsync()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s253" - ], - "unresolved_calls": [ - { - "callee": "ThrowIfNull", - "receiver_type": "ArgumentNullException", - "lang": "csharp", - "line": "L68" - }, - { - "callee": "GetCurrentInstant", - "receiver_type": "IClock", - "lang": "csharp", - "line": "L73" - } - ] - }, - "norm_label": ".registerasync()", - "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L66" - }, - { - "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_revokeasync", - "label": ".RevokeAsync()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s253" - ] - }, - "norm_label": ".revokeasync()", - "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L182" - }, - { - "id": "src_anichron_api_services_authservice_anichron_api_services_iauthservice_admincreateuserasync", - "label": ".AdminCreateUserAsync()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s253" - ] - }, - "norm_label": ".admincreateuserasync()", - "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L50" - }, - { - "id": "src_anichron_api_services_authservice_anichron_api_services_iauthservice_changepasswordasync", - "label": ".ChangePasswordAsync()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s253" - ] - }, - "norm_label": ".changepasswordasync()", - "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L49" - }, - { - "id": "src_anichron_api_services_authservice_anichron_api_services_iauthservice_loginasync", - "label": ".LoginAsync()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s253" - ] - }, - "norm_label": ".loginasync()", - "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L46" - }, - { - "id": "src_anichron_api_services_authservice_anichron_api_services_iauthservice_refreshasync", - "label": ".RefreshAsync()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s253" - ] - }, - "norm_label": ".refreshasync()", - "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L47" - }, - { - "id": "src_anichron_api_services_authservice_anichron_api_services_iauthservice_registerasync", - "label": ".RegisterAsync()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s253" - ] - }, - "norm_label": ".registerasync()", - "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L45" - }, - { - "id": "src_anichron_api_services_authservice_anichron_api_services_iauthservice_revokeasync", - "label": ".RevokeAsync()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s253" - ] - }, - "norm_label": ".revokeasync()", - "source_file": "src/Anichron.API/Services/AuthService.cs", - "source_location": "L48" - }, - { - "id": "src_anichron_core_data_iunitofwork_anichron_core_data_iunitofwork_executeintransactionasync", - "label": ".ExecuteInTransactionAsync()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data", - "scope_chain": [ - "s0" - ] - }, - "norm_label": ".executeintransactionasync()", - "source_file": "src/Anichron.Core/Data/IUnitOfWork.cs", - "source_location": "L6" - }, - { - "id": "src_anichron_core_data_iunitofwork_anichron_core_data_iunitofwork_savechangesasync", - "label": ".SaveChangesAsync()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data", - "scope_chain": [ - "s0" - ] - }, - "norm_label": ".savechangesasync()", - "source_file": "src/Anichron.Core/Data/IUnitOfWork.cs", - "source_location": "L5" - }, - { - "id": "src_anichron_core_identitynormalizer_anichron_core_identitynormalizer_normalize", - "label": ".Normalize()", - "_callable": true, - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core", - "scope_chain": [ - "s0" - ] - }, - "norm_label": ".normalize()", - "source_file": "src/Anichron.Core/IdentityNormalizer.cs", - "source_location": "L5" - }, { "id": "src_anichron_worker_ingestion_middlewares_livephotopairingmiddleware_anichron_worker_ingestion_middlewares_livephotopairingmiddleware_caninvoke", "label": ".CanInvoke()", @@ -14014,172 +13626,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Maintenance/TokenCleanupServiceTests.cs", "source_location": "L38" }, - { - "id": "src_anichron_api_services_lockoutservice_anichron_api_services_ilockoutservice_islockedout", - "label": ".IsLockedOut()", - "_callable": true, - "_origin": "ast", - "community": 14, - "community_name": "LockoutServiceTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s84" - ] - }, - "norm_label": ".islockedout()", - "source_file": "src/Anichron.API/Services/LockoutService.cs", - "source_location": "L9" - }, - { - "id": "src_anichron_api_services_lockoutservice_anichron_api_services_ilockoutservice_preparereset", - "label": ".PrepareReset()", - "_callable": true, - "_origin": "ast", - "community": 14, - "community_name": "LockoutServiceTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s84" - ] - }, - "norm_label": ".preparereset()", - "source_file": "src/Anichron.API/Services/LockoutService.cs", - "source_location": "L12" - }, - { - "id": "src_anichron_api_services_lockoutservice_anichron_api_services_ilockoutservice_recordfailedattemptasync", - "label": ".RecordFailedAttemptAsync()", - "_callable": true, - "_origin": "ast", - "community": 14, - "community_name": "LockoutServiceTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s84" - ] - }, - "norm_label": ".recordfailedattemptasync()", - "source_file": "src/Anichron.API/Services/LockoutService.cs", - "source_location": "L10" - }, - { - "id": "src_anichron_api_services_lockoutservice_anichron_api_services_lockoutservice_computebackoffseconds", - "label": ".ComputeBackoffSeconds()", - "_callable": true, - "_origin": "ast", - "community": 14, - "community_name": "LockoutServiceTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s84" - ], - "unresolved_calls": [ - { - "callee": "Pow", - "receiver_type": "Math", - "lang": "csharp", - "line": "L39" - } - ] - }, - "norm_label": ".computebackoffseconds()", - "source_file": "src/Anichron.API/Services/LockoutService.cs", - "source_location": "L35" - }, - { - "id": "src_anichron_api_services_lockoutservice_anichron_api_services_lockoutservice_islockedout", - "label": ".IsLockedOut()", - "_callable": true, - "_origin": "ast", - "community": 14, - "community_name": "LockoutServiceTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s84" - ] - }, - "norm_label": ".islockedout()", - "source_file": "src/Anichron.API/Services/LockoutService.cs", - "source_location": "L17" - }, - { - "id": "src_anichron_api_services_lockoutservice_anichron_api_services_lockoutservice_preparereset", - "label": ".PrepareReset()", - "_callable": true, - "_origin": "ast", - "community": 14, - "community_name": "LockoutServiceTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s84" - ] - }, - "norm_label": ".preparereset()", - "source_file": "src/Anichron.API/Services/LockoutService.cs", - "source_location": "L29" - }, - { - "id": "src_anichron_api_services_lockoutservice_anichron_api_services_lockoutservice_recordfailedattemptasync", - "label": ".RecordFailedAttemptAsync()", - "_callable": true, - "_origin": "ast", - "community": 14, - "community_name": "LockoutServiceTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s84" - ], - "unresolved_calls": [ - { - "callee": "Plus", - "receiver_type": "Instant", - "lang": "csharp", - "line": "L25" - }, - { - "callee": "FromSeconds", - "receiver_type": "Duration", - "lang": "csharp", - "line": "L25" - } - ] - }, - "norm_label": ".recordfailedattemptasync()", - "source_file": "src/Anichron.API/Services/LockoutService.cs", - "source_location": "L20" - }, - { - "id": "src_anichron_api_tests_unit_services_lockoutservicetests_anichron_api_tests_unit_services_lockoutservicetests_computebackoffseconds_returnsexpectedseconds", - "label": ".ComputeBackoffSeconds_ReturnsExpectedSeconds()", - "_callable": true, - "_origin": "ast", - "community": 14, - "community_name": "LockoutServiceTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Services", - "scope_chain": [ - "s84" - ] - }, - "norm_label": ".computebackoffseconds_returnsexpectedseconds()", - "source_file": "src/Anichron.API.Tests.Unit/Services/LockoutServiceTests.cs", - "source_location": "L154" - }, { "id": "src_anichron_api_tests_unit_services_lockoutservicetests_anichron_api_tests_unit_services_lockoutservicetests_islockedout_lockeduntilexactlynow_returnsfalse", "label": ".IsLockedOut_LockedUntilExactlyNow_ReturnsFalse()", @@ -14454,24 +13900,6 @@ "source_file": "src/Anichron.API.Tests.Unit/Services/LockoutServiceTests.cs", "source_location": "L15" }, - { - "id": "src_anichron_core_data_repository_userrepository_anichron_core_data_repository_efuserrepository_add", - "label": ".Add()", - "_callable": true, - "_origin": "ast", - "community": 142, - "community_name": "User", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": ".add()", - "source_file": "src/Anichron.Core/Data/Repository/UserRepository.cs", - "source_location": "L51" - }, { "id": "src_anichron_core_data_repository_userrepository_anichron_core_data_repository_efuserrepository_anyasync", "label": ".AnyAsync()", @@ -14652,24 +14080,6 @@ "source_file": "src/Anichron.Core/Data/Repository/UserRepository.cs", "source_location": "L54" }, - { - "id": "src_anichron_core_data_repository_userrepository_anichron_core_data_repository_iuserrepository_add", - "label": ".Add()", - "_callable": true, - "_origin": "ast", - "community": 142, - "community_name": "User", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": ".add()", - "source_file": "src/Anichron.Core/Data/Repository/UserRepository.cs", - "source_location": "L17" - }, { "id": "src_anichron_core_data_repository_userrepository_anichron_core_data_repository_iuserrepository_anyasync", "label": ".AnyAsync()", @@ -15684,42 +15094,6 @@ "source_file": "src/Anichron.Worker/Startup/DatabaseMigratorService.cs", "source_location": "L32" }, - { - "id": "src_anichron_worker_startup_idatabasemigrator_anichron_worker_startup_efdatabasemigrator_migrateasync", - "label": ".MigrateAsync()", - "_callable": true, - "_origin": "ast", - "community": 16, - "community_name": "DatabaseMigratorService", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Startup", - "scope_chain": [ - "s63" - ] - }, - "norm_label": ".migrateasync()", - "source_file": "src/Anichron.Worker/Startup/IDatabaseMigrator.cs", - "source_location": "L13" - }, - { - "id": "src_anichron_worker_startup_idatabasemigrator_anichron_worker_startup_idatabasemigrator_migrateasync", - "label": ".MigrateAsync()", - "_callable": true, - "_origin": "ast", - "community": 16, - "community_name": "DatabaseMigratorService", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Startup", - "scope_chain": [ - "s63" - ] - }, - "norm_label": ".migrateasync()", - "source_file": "src/Anichron.Worker/Startup/IDatabaseMigrator.cs", - "source_location": "L8" - }, { "id": "src_anichron_worker_tests_unit_startup_databasemigratorservicetests_anichron_worker_tests_unit_startup_databasemigratorservicetests_startasync_allattemptsexhausted_migratecalledmaxattemptstimesasync", "label": ".StartAsync_AllAttemptsExhausted_MigrateCalledMaxAttemptsTimesAsync()", @@ -16703,40 +16077,136 @@ "source_location": "L11" }, { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_iuserstorageconfigrepository_add", - "label": ".Add()", + "id": "src_anichron_api_tests_unit_endpoints_adminstorageconfigendpointstests_anichron_api_tests_unit_endpoints_adminstorageconfigendpointstests_createstorageconfigasync_callsservicewithuseridandrootpathandreturnsmapperresult", + "label": ".CreateStorageConfigAsync_CallsServiceWithUserIdAndRootPathAndReturnsMapperResult()", "_callable": true, "_origin": "ast", "community": 182, "community_name": ".AddAsync", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.API.Tests.Unit.Endpoints", "scope_chain": [ - "s66" + "s121" + ], + "unresolved_calls": [ + { + "callee": "For", + "receiver_type": "Substitute", + "lang": "csharp", + "line": "L39" + }, + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L41" + }, + { + "callee": "Created", + "receiver_type": "Results", + "lang": "csharp", + "line": "L45" + }, + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L46" + } ] }, - "norm_label": ".add()", - "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", - "source_location": "L14" + "norm_label": ".createstorageconfigasync_callsservicewithuseridandrootpathandreturnsmapperresult()", + "source_file": "src/Anichron.API.Tests.Unit/Endpoints/AdminStorageConfigEndpointsTests.cs", + "source_location": "L36" }, { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_iuserstorageconfigrepository_remove", - "label": ".Remove()", + "id": "src_anichron_api_tests_unit_endpoints_adminstorageconfigendpointstests_anichron_api_tests_unit_endpoints_adminstorageconfigendpointstests_deletestorageconfigasync_callsservicewithuseridandconfigidandreturnsmapperresult", + "label": ".DeleteStorageConfigAsync_CallsServiceWithUserIdAndConfigIdAndReturnsMapperResult()", "_callable": true, "_origin": "ast", "community": 182, "community_name": ".AddAsync", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.API.Tests.Unit.Endpoints", "scope_chain": [ - "s66" + "s121" + ], + "unresolved_calls": [ + { + "callee": "For", + "receiver_type": "Substitute", + "lang": "csharp", + "line": "L63" + }, + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L65" + }, + { + "callee": "NoContent", + "receiver_type": "Results", + "lang": "csharp", + "line": "L68" + }, + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L69" + } ] }, - "norm_label": ".remove()", - "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", - "source_location": "L15" + "norm_label": ".deletestorageconfigasync_callsservicewithuseridandconfigidandreturnsmapperresult()", + "source_file": "src/Anichron.API.Tests.Unit/Endpoints/AdminStorageConfigEndpointsTests.cs", + "source_location": "L60" + }, + { + "id": "src_anichron_api_tests_unit_endpoints_adminstorageconfigendpointstests_anichron_api_tests_unit_endpoints_adminstorageconfigendpointstests_getstorageconfigsasync_callsserviceandreturnsmapperresult", + "label": ".GetStorageConfigsAsync_CallsServiceAndReturnsMapperResult()", + "_callable": true, + "_origin": "ast", + "community": 182, + "community_name": ".AddAsync", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Endpoints", + "scope_chain": [ + "s121" + ], + "unresolved_calls": [ + { + "callee": "For", + "receiver_type": "Substitute", + "lang": "csharp", + "line": "L17" + }, + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L19" + }, + { + "callee": "Ok", + "receiver_type": "Results", + "lang": "csharp", + "line": "L21" + }, + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L22" + } + ] + }, + "norm_label": ".getstorageconfigsasync_callsserviceandreturnsmapperresult()", + "source_file": "src/Anichron.API.Tests.Unit/Endpoints/AdminStorageConfigEndpointsTests.cs", + "source_location": "L14" }, { "id": "src_anichron_worker_ingestion_middlewares_loggingmiddleware_anichron_worker_ingestion_middlewares_log_itemcompleted", @@ -16792,6 +16262,24 @@ "source_file": "src/Anichron.API/Infrastructure/HealthCheckResponseWriter.cs", "source_location": "L7" }, + { + "id": "src_anichron_api_infrastructure_jwtconfiguration_anichron_api_infrastructure_jwtconfiguration_read", + "label": ".Read()", + "_callable": true, + "_origin": "ast", + "community": 19, + "community_name": ".WriteResponseAsync", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Infrastructure", + "scope_chain": [ + "s20" + ] + }, + "norm_label": ".read()", + "source_file": "src/Anichron.API/Infrastructure/JwtConfiguration.cs", + "source_location": "L9" + }, { "id": "src_anichron_api_tests_unit_infrastructure_healthcheckresponsewritertests_anichron_api_tests_unit_infrastructure_healthcheckresponsewritertests_buildcontext", "label": ".BuildContext()", @@ -16942,6 +16430,132 @@ "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/HealthCheckResponseWriterTests.cs", "source_location": "L47" }, + { + "id": "src_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_configuration", + "label": ".Configuration()", + "_callable": true, + "_origin": "ast", + "community": 19, + "community_name": ".WriteResponseAsync", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Infrastructure", + "scope_chain": [ + "s78" + ] + }, + "norm_label": ".configuration()", + "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/JwtConfigurationTests.cs", + "source_location": "L10" + }, + { + "id": "src_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_read_allvaluespresent_returnsthem", + "label": ".Read_AllValuesPresent_ReturnsThem()", + "_callable": true, + "_origin": "ast", + "community": 19, + "community_name": ".WriteResponseAsync", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Infrastructure", + "scope_chain": [ + "s78" + ] + }, + "norm_label": ".read_allvaluespresent_returnsthem()", + "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/JwtConfigurationTests.cs", + "source_location": "L20" + }, + { + "id": "src_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_read_audiencemissing_throws", + "label": ".Read_AudienceMissing_Throws()", + "_callable": true, + "_origin": "ast", + "community": 19, + "community_name": ".WriteResponseAsync", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Infrastructure", + "scope_chain": [ + "s78" + ] + }, + "norm_label": ".read_audiencemissing_throws()", + "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/JwtConfigurationTests.cs", + "source_location": "L44" + }, + { + "id": "src_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_read_issuermissing_throws", + "label": ".Read_IssuerMissing_Throws()", + "_callable": true, + "_origin": "ast", + "community": 19, + "community_name": ".WriteResponseAsync", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Infrastructure", + "scope_chain": [ + "s78" + ] + }, + "norm_label": ".read_issuermissing_throws()", + "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/JwtConfigurationTests.cs", + "source_location": "L36" + }, + { + "id": "src_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_read_secretlengthcountedinutf8bytes_acceptssixteentwobytecharacters", + "label": ".Read_SecretLengthCountedInUtf8Bytes_AcceptsSixteenTwoByteCharacters()", + "_callable": true, + "_origin": "ast", + "community": 19, + "community_name": ".WriteResponseAsync", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Infrastructure", + "scope_chain": [ + "s78" + ] + }, + "norm_label": ".read_secretlengthcountedinutf8bytes_acceptssixteentwobytecharacters()", + "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/JwtConfigurationTests.cs", + "source_location": "L60" + }, + { + "id": "src_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_read_secretmissing_throws", + "label": ".Read_SecretMissing_Throws()", + "_callable": true, + "_origin": "ast", + "community": 19, + "community_name": ".WriteResponseAsync", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Infrastructure", + "scope_chain": [ + "s78" + ] + }, + "norm_label": ".read_secretmissing_throws()", + "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/JwtConfigurationTests.cs", + "source_location": "L28" + }, + { + "id": "src_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_read_secretonebyteshortofminimum_throws", + "label": ".Read_SecretOneByteShortOfMinimum_Throws()", + "_callable": true, + "_origin": "ast", + "community": 19, + "community_name": ".WriteResponseAsync", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Infrastructure", + "scope_chain": [ + "s78" + ] + }, + "norm_label": ".read_secretonebyteshortofminimum_throws()", + "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/JwtConfigurationTests.cs", + "source_location": "L52" + }, { "id": "src_anichron_api_tests_unit_infrastructure_corsconfigurationtests_anichron_api_tests_unit_infrastructure_corsconfigurationtests_addauthservices_commaseparatedorigins_usessamesitenone", "label": ".AddAuthServices_CommaSeparatedOrigins_UsesSameSiteNone()", @@ -17068,32 +16682,6 @@ "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/CorsConfigurationTests.cs", "source_location": "L16" }, - { - "id": "src_anichron_infrastructure_configuration_appiniinitializer_anichron_infrastructure_configuration_appiniinitializer_ensureuptodate", - "label": ".EnsureUpToDate()", - "_callable": true, - "_origin": "ast", - "community": 20, - "community_name": "AppIniInitializer", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Infrastructure.Configuration", - "scope_chain": [ - "s120" - ], - "unresolved_calls": [ - { - "callee": "Where", - "receiver_type": "IReadOnlyList", - "lang": "csharp", - "line": "L27" - } - ] - }, - "norm_label": ".ensureuptodate()", - "source_file": "src/Anichron.Infrastructure/Configuration/AppIniInitializer.cs", - "source_location": "L15" - }, { "id": "src_anichron_infrastructure_tests_unit_configuration_appiniinitializertests_anichron_infrastructure_tests_unit_configuration_appiniinitializertests_capturestderr", "label": ".CaptureStderr()", @@ -17416,32 +17004,6 @@ "source_file": "src/Anichron.Infrastructure.Tests.Unit/Configuration/AppIniInitializerTests.cs", "source_location": "L129" }, - { - "id": "src_anichron_infrastructure_tests_unit_configuration_appiniinitializertests_anichron_infrastructure_tests_unit_configuration_appiniinitializertests_ensureuptodate_someentriesmissing_appendsmissingentries", - "label": ".EnsureUpToDate_SomeEntriesMissing_AppendsMissingEntries()", - "_callable": true, - "_origin": "ast", - "community": 20, - "community_name": "AppIniInitializer", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Infrastructure.Tests.Unit.Configuration", - "scope_chain": [ - "s121" - ], - "unresolved_calls": [ - { - "callee": "Multiple", - "receiver_type": "Assert", - "lang": "csharp", - "line": "L210" - } - ] - }, - "norm_label": ".ensureuptodate_someentriesmissing_appendsmissingentries()", - "source_file": "src/Anichron.Infrastructure.Tests.Unit/Configuration/AppIniInitializerTests.cs", - "source_location": "L197" - }, { "id": "src_anichron_infrastructure_tests_unit_configuration_appiniinitializertests_anichron_infrastructure_tests_unit_configuration_appiniinitializertests_ensureuptodate_someentriesmissing_existingentryfactorynotcalled", "label": ".EnsureUpToDate_SomeEntriesMissing_ExistingEntryFactoryNotCalled()", @@ -19497,448 +19059,66 @@ "source_location": "L33" }, { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_efuserstorageconfigrepository_add", - "label": ".Add()", - "_callable": true, - "_origin": "ast", - "community": 234, - "community_name": "EfUserStorageConfigRepository", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": ".add()", - "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", - "source_location": "L38" - }, - { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_efuserstorageconfigrepository_findbyrootpathasync", - "label": ".FindByRootPathAsync()", - "_callable": true, - "_origin": "ast", - "community": 234, - "community_name": "EfUserStorageConfigRepository", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": ".findbyrootpathasync()", - "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", - "source_location": "L23" - }, - { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_efuserstorageconfigrepository_remove", - "label": ".Remove()", + "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_anichron_worker_ingestion_middlewares_log_proxiesgenerated", + "label": ".ProxiesGenerated()", "_callable": true, "_origin": "ast", "community": 234, - "community_name": "EfUserStorageConfigRepository", + "community_name": "VideoProxyMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.Worker.Ingestion.Middlewares", "scope_chain": [ - "s66" + "s110" ] }, - "norm_label": ".remove()", - "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", + "norm_label": ".proxiesgenerated()", + "source_file": "src/Anichron.Worker/Ingestion/Middlewares/VideoProxyMiddleware.cs", "source_location": "L41" }, { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_add_config_appearsinsubsequentquery", - "label": ".Add_Config_AppearsInSubsequentQuery()", - "_callable": true, - "_origin": "ast", - "community": 234, - "community_name": "EfUserStorageConfigRepository", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s129" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L156" - } - ] - }, - "norm_label": ".add_config_appearsinsubsequentquery()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L150" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_createdb", - "label": ".CreateDb()", - "_callable": true, - "_origin": "ast", - "community": 234, - "community_name": "EfUserStorageConfigRepository", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s129" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L13" - } - ] - }, - "norm_label": ".createdb()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L10" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_findbyidasync_matchingid_returnsconfig", - "label": ".FindByIdAsync_MatchingId_ReturnsConfig()", - "_callable": true, - "_origin": "ast", - "community": 234, - "community_name": "EfUserStorageConfigRepository", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s129" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L175" - } - ] - }, - "norm_label": ".findbyidasync_matchingid_returnsconfig()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L170" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_findbyidasync_nomatch_returnsnull", - "label": ".FindByIdAsync_NoMatch_ReturnsNull()", - "_callable": true, - "_origin": "ast", - "community": 234, - "community_name": "EfUserStorageConfigRepository", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s129" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L191" - } - ] - }, - "norm_label": ".findbyidasync_nomatch_returnsnull()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L186" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_findbyrootpathasync_matchingrootpath_returnsconfig", - "label": ".FindByRootPathAsync_MatchingRootPath_ReturnsConfig()", - "_callable": true, - "_origin": "ast", - "community": 234, - "community_name": "EfUserStorageConfigRepository", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s129" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L32" - } - ] - }, - "norm_label": ".findbyrootpathasync_matchingrootpath_returnsconfig()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L25" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_findbyrootpathasync_nomatch_returnsnull", - "label": ".FindByRootPathAsync_NoMatch_ReturnsNull()", - "_callable": true, - "_origin": "ast", - "community": 234, - "community_name": "EfUserStorageConfigRepository", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s129" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L48" - } - ] - }, - "norm_label": ".findbyrootpathasync_nomatch_returnsnull()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L43" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_findbyrootpathasync_partialpath_returnsnull", - "label": ".FindByRootPathAsync_PartialPath_ReturnsNull()", - "_callable": true, - "_origin": "ast", - "community": 234, - "community_name": "EfUserStorageConfigRepository", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s129" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L62" - } - ] - }, - "norm_label": ".findbyrootpathasync_partialpath_returnsnull()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L57" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_getactivebyuseridasync_inactiveconfigforuser_excluded", - "label": ".GetActiveByUserIdAsync_InactiveConfigForUser_Excluded()", - "_callable": true, - "_origin": "ast", - "community": 234, - "community_name": "EfUserStorageConfigRepository", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s129" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L136" - } - ] - }, - "norm_label": ".getactivebyuseridasync_inactiveconfigforuser_excluded()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L131" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_getactivebyuseridasync_matchinguserid_returnsonlythatusersconfigs", - "label": ".GetActiveByUserIdAsync_MatchingUserId_ReturnsOnlyThatUsersConfigs()", - "_callable": true, - "_origin": "ast", - "community": 234, - "community_name": "EfUserStorageConfigRepository", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s129" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L117" - } - ] - }, - "norm_label": ".getactivebyuseridasync_matchinguserid_returnsonlythatusersconfigs()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L112" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_getallactiveasync_mixedactive_returnsonlyactive", - "label": ".GetAllActiveAsync_MixedActive_ReturnsOnlyActive()", - "_callable": true, - "_origin": "ast", - "community": 234, - "community_name": "EfUserStorageConfigRepository", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s129" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L80" - } - ] - }, - "norm_label": ".getallactiveasync_mixedactive_returnsonlyactive()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L75" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_getallactiveasync_noneactive_returnsempty", - "label": ".GetAllActiveAsync_NoneActive_ReturnsEmpty()", - "_callable": true, - "_origin": "ast", - "community": 234, - "community_name": "EfUserStorageConfigRepository", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s129" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L99" - } - ] - }, - "norm_label": ".getallactiveasync_noneactive_returnsempty()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L94" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_getbyuseridasync_noconfigs_returnsempty", - "label": ".GetByUserIdAsync_NoConfigs_ReturnsEmpty()", - "_callable": true, - "_origin": "ast", - "community": 234, - "community_name": "EfUserStorageConfigRepository", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s129" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L232" - } - ] - }, - "norm_label": ".getbyuseridasync_noconfigs_returnsempty()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L225" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_getbyuseridasync_returnsallconfigsforuser_includinginactive", - "label": ".GetByUserIdAsync_ReturnsAllConfigsForUser_IncludingInactive()", - "_callable": true, - "_origin": "ast", - "community": 234, - "community_name": "EfUserStorageConfigRepository", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s129" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L209" - } - ] - }, - "norm_label": ".getbyuseridasync_returnsallconfigsforuser_includinginactive()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L204" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_makeconfig", - "label": ".MakeConfig()", + "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_anichron_worker_ingestion_middlewares_videoproxymiddleware_caninvoke", + "label": ".CanInvoke()", "_callable": true, "_origin": "ast", "community": 234, - "community_name": "EfUserStorageConfigRepository", + "community_name": "VideoProxyMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "namespace": "Anichron.Worker.Ingestion.Middlewares", "scope_chain": [ - "s129" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L19" - } + "s110" ] }, - "norm_label": ".makeconfig()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L18" + "norm_label": ".caninvoke()", + "source_file": "src/Anichron.Worker/Ingestion/Middlewares/VideoProxyMiddleware.cs", + "source_location": "L14" }, { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_remove_config_disappearsfromsubsequentquery", - "label": ".Remove_Config_DisappearsFromSubsequentQuery()", + "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_anichron_worker_ingestion_middlewares_videoproxymiddleware_invokeasync", + "label": ".InvokeAsync()", "_callable": true, "_origin": "ast", "community": 234, - "community_name": "EfUserStorageConfigRepository", + "community_name": "VideoProxyMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "namespace": "Anichron.Worker.Ingestion.Middlewares", "scope_chain": [ - "s129" + "s110" ], "unresolved_calls": [ { - "callee": "NewGuid", - "receiver_type": "Guid", + "callee": "ToArray", + "receiver_type": "IEnumerable", "lang": "csharp", - "line": "L246" + "line": "L23" } ] }, - "norm_label": ".remove_config_disappearsfromsubsequentquery()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", - "source_location": "L241" + "norm_label": ".invokeasync()", + "source_file": "src/Anichron.Worker/Ingestion/Middlewares/VideoProxyMiddleware.cs", + "source_location": "L17" }, { "id": "src_anichron_api_tests_unit_services_pwnedpasswordclienttests_anichron_api_tests_unit_services_capturinglogger_beginscope", @@ -20284,174 +19464,6 @@ "source_file": "src/Anichron.API/Infrastructure/MustChangePasswordMiddleware.cs", "source_location": "L29" }, - { - "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_addforwardedheaderssupport_unparseablenetwork_throwsatregistration", - "label": ".AddForwardedHeadersSupport_UnparseableNetwork_ThrowsAtRegistration()", - "_callable": true, - "_origin": "ast", - "community": 24, - "community_name": "MustChangePasswordMiddleware", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Infrastructure", - "scope_chain": [ - "s279" - ] - }, - "norm_label": ".addforwardedheaderssupport_unparseablenetwork_throwsatregistration()", - "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/ForwardedHeadersRateLimitTests.cs", - "source_location": "L116" - }, - { - "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_knownnetwork_ipv4mappedpeer_istrustedasync", - "label": ".KnownNetwork_Ipv4MappedPeer_IsTrustedAsync()", - "_callable": true, - "_origin": "ast", - "community": 24, - "community_name": "MustChangePasswordMiddleware", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Infrastructure", - "scope_chain": [ - "s279" - ] - }, - "norm_label": ".knownnetwork_ipv4mappedpeer_istrustedasync()", - "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/ForwardedHeadersRateLimitTests.cs", - "source_location": "L86" - }, - { - "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_knownproxy_forwardedfor_getsbucketperclientasync", - "label": ".KnownProxy_ForwardedFor_GetsBucketPerClientAsync()", - "_callable": true, - "_origin": "ast", - "community": 24, - "community_name": "MustChangePasswordMiddleware", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Infrastructure", - "scope_chain": [ - "s279" - ] - }, - "norm_label": ".knownproxy_forwardedfor_getsbucketperclientasync()", - "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/ForwardedHeadersRateLimitTests.cs", - "source_location": "L73" - }, - { - "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_refreshpolicy_allowsitspermitlimitthenrejectsasync", - "label": ".RefreshPolicy_AllowsItsPermitLimitThenRejectsAsync()", - "_callable": true, - "_origin": "ast", - "community": 24, - "community_name": "MustChangePasswordMiddleware", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Infrastructure", - "scope_chain": [ - "s279" - ], - "unresolved_calls": [ - { - "callee": "Add", - "receiver_type": "List", - "lang": "csharp", - "line": "L108" - }, - { - "callee": "Should", - "receiver_type": "List", - "lang": "csharp", - "line": "L111" - } - ] - }, - "norm_label": ".refreshpolicy_allowsitspermitlimitthenrejectsasync()", - "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/ForwardedHeadersRateLimitTests.cs", - "source_location": "L97" - }, - { - "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_sendwithdistinctforwardedforasync", - "label": ".SendWithDistinctForwardedForAsync()", - "_callable": true, - "_origin": "ast", - "community": 24, - "community_name": "MustChangePasswordMiddleware", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Infrastructure", - "scope_chain": [ - "s279" - ], - "unresolved_calls": [ - { - "callee": "GetTestClient", - "receiver_type": "WebApplication", - "lang": "csharp", - "line": "L47" - }, - { - "callee": "Add", - "receiver_type": "List", - "lang": "csharp", - "line": "L54" - } - ] - }, - "norm_label": ".sendwithdistinctforwardedforasync()", - "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/ForwardedHeadersRateLimitTests.cs", - "source_location": "L44" - }, - { - "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_startasync", - "label": ".StartAsync()", - "_callable": true, - "_origin": "ast", - "community": 24, - "community_name": "MustChangePasswordMiddleware", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Infrastructure", - "scope_chain": [ - "s279" - ], - "unresolved_calls": [ - { - "callee": "CreateSlimBuilder", - "receiver_type": "WebApplication", - "lang": "csharp", - "line": "L20" - }, - { - "callee": "Parse", - "receiver_type": "IPAddress", - "lang": "csharp", - "line": "L30" - } - ] - }, - "norm_label": ".startasync()", - "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/ForwardedHeadersRateLimitTests.cs", - "source_location": "L18" - }, - { - "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_untrustedpeer_spoofedforwardedfor_sharesonebucketasync", - "label": ".UntrustedPeer_SpoofedForwardedFor_SharesOneBucketAsync()", - "_callable": true, - "_origin": "ast", - "community": 24, - "community_name": "MustChangePasswordMiddleware", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Infrastructure", - "scope_chain": [ - "s279" - ] - }, - "norm_label": ".untrustedpeer_spoofedforwardedfor_sharesonebucketasync()", - "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/ForwardedHeadersRateLimitTests.cs", - "source_location": "L60" - }, { "id": "src_anichron_api_tests_unit_infrastructure_mustchangepasswordmiddlewaretests_anichron_api_tests_unit_infrastructure_mustchangepasswordmiddlewaretests_authenticated", "label": ".Authenticated()", @@ -20704,6 +19716,62 @@ "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/MustChangePasswordMiddlewareTests.cs", "source_location": "L24" }, + { + "id": "src_anichron_api_security_jwtfactory_anichron_api_security_ijwtfactory_create", + "label": ".Create()", + "_callable": true, + "_origin": "ast", + "community": 240, + "community_name": "TokenService", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Security", + "scope_chain": [ + "s220" + ] + }, + "norm_label": ".create()", + "source_file": "src/Anichron.API/Security/JwtFactory.cs", + "source_location": "L13" + }, + { + "id": "src_anichron_api_security_jwtfactory_anichron_api_security_jwtfactory_create", + "label": ".Create()", + "_callable": true, + "_origin": "ast", + "community": 240, + "community_name": "TokenService", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Security", + "scope_chain": [ + "s220" + ], + "unresolved_calls": [ + { + "callee": "Add", + "receiver_type": "List", + "lang": "csharp", + "line": "L44" + }, + { + "callee": "GetCurrentInstant", + "receiver_type": "IClock", + "lang": "csharp", + "line": "L53" + }, + { + "callee": "WriteToken", + "receiver_type": "JwtSecurityTokenHandler", + "lang": "csharp", + "line": "L56" + } + ] + }, + "norm_label": ".create()", + "source_file": "src/Anichron.API/Security/JwtFactory.cs", + "source_location": "L34" + }, { "id": "src_anichron_api_services_tokenservice_anichron_api_services_itokenservice_issueasync", "label": ".IssueAsync()", @@ -21772,58 +20840,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/FileIngestionPipelineTests.cs", "source_location": "L160" }, - { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests_asset_canbesetandread", - "label": ".Asset_CanBeSetAndRead()", - "_callable": true, - "_origin": "ast", - "community": 25, - "community_name": "SingleFileItem", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", - "scope_chain": [ - "s104" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L27" - } - ] - }, - "norm_label": ".asset_canbesetandread()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionContextTests.cs", - "source_location": "L21" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests_proxyfiles_defaultstoemptylist", - "label": ".ProxyFiles_DefaultsToEmptyList()", - "_callable": true, - "_origin": "ast", - "community": 25, - "community_name": "SingleFileItem", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", - "scope_chain": [ - "s104" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L15" - } - ] - }, - "norm_label": ".proxyfiles_defaultstoemptylist()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionContextTests.cs", - "source_location": "L9" - }, { "id": "src_anichron_api_services_adminuserservice_anichron_api_services_adminuserservice_deleteasync", "label": ".DeleteAsync()", @@ -22447,121 +21463,99 @@ "source_location": "L14" }, { - "id": "src_anichron_core_guidfactory_anichron_core_iguidfactory_newguid", - "label": ".NewGuid()", - "_callable": true, - "_origin": "ast", - "community": 275, - "community_name": "IGuidFactory", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core", - "scope_chain": [ - "s0" - ] - }, - "norm_label": ".newguid()", - "source_file": "src/Anichron.Core/GuidFactory.cs", - "source_location": "L5" - }, - { - "id": "src_anichron_core_guidfactory_anichron_core_timeorderedguidfactory_newguid", - "label": ".NewGuid()", + "id": "src_anichron_worker_crawling_fileingestionpipeline_anichron_worker_crawling_log_itemfailed", + "label": ".ItemFailed()", "_callable": true, "_origin": "ast", - "community": 275, - "community_name": "IGuidFactory", + "community": 27, + "community_name": "FileIngestionPipeline", "file_type": "code", "metadata": { - "namespace": "Anichron.Core", + "namespace": "Anichron.Worker.Crawling", "scope_chain": [ - "s0" - ], - "unresolved_calls": [ - { - "callee": "CreateVersion7", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L10" - } + "s256" ] }, - "norm_label": ".newguid()", - "source_file": "src/Anichron.Core/GuidFactory.cs", - "source_location": "L10" + "norm_label": ".itemfailed()", + "source_file": "src/Anichron.Worker/Crawling/FileIngestionPipeline.cs", + "source_location": "L132" }, { - "id": "src_anichron_worker_ingestion_proxy_proxyfilebuilder_anichron_worker_ingestion_proxy_proxyfilebuilder_build", - "label": ".Build()", + "id": "src_anichron_worker_crawling_fileingestionpipeline_anichron_worker_crawling_log_unsupportedfile", + "label": ".UnsupportedFile()", "_callable": true, "_origin": "ast", - "community": 275, - "community_name": "IGuidFactory", + "community": 27, + "community_name": "FileIngestionPipeline", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", + "namespace": "Anichron.Worker.Crawling", "scope_chain": [ - "s108" - ], - "unresolved_calls": [ - { - "callee": "GetCurrentInstant", - "receiver_type": "IClock", - "lang": "csharp", - "line": "L24" - } + "s256" ] }, - "norm_label": ".build()", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyFileBuilder.cs", - "source_location": "L10" + "norm_label": ".unsupportedfile()", + "source_file": "src/Anichron.Worker/Crawling/FileIngestionPipeline.cs", + "source_location": "L129" }, { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_caninvoke_istrueforeveryitem", - "label": ".CanInvoke_IsTrueForEveryItem()", + "id": "src_anichron_worker_ingestion_livephotolinker_anichron_worker_ingestion_ilivephotolinker_link", + "label": ".Link()", "_callable": true, "_origin": "ast", - "community": 275, - "community_name": "IGuidFactory", + "community": 27, + "community_name": "FileIngestionPipeline", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", + "namespace": "Anichron.Worker.Ingestion", "scope_chain": [ - "s287" + "s59" ] }, - "norm_label": ".caninvoke_istrueforeveryitem()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/AlwaysOnMiddlewareTests.cs", - "source_location": "L34" + "norm_label": ".link()", + "source_file": "src/Anichron.Worker/Ingestion/LivePhotoLinker.cs", + "source_location": "L12" }, { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_create", - "label": ".Create()", + "id": "src_anichron_worker_ingestion_livephotolinker_anichron_worker_ingestion_livephotolinker_link", + "label": ".Link()", "_callable": true, "_origin": "ast", - "community": 275, - "community_name": "IGuidFactory", + "community": 27, + "community_name": "FileIngestionPipeline", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", + "namespace": "Anichron.Worker.Ingestion", "scope_chain": [ - "s287" + "s59" ], "unresolved_calls": [ { - "callee": "For", - "receiver_type": "Substitute", + "callee": "Add", + "receiver_type": "List", "lang": "csharp", - "line": "L19" + "line": "L26" + }, + { + "callee": "Add", + "receiver_type": "HashSet", + "lang": "csharp", + "line": "L36" + }, + { + "callee": "TryGetValue", + "receiver_type": "Dictionary", + "lang": "csharp", + "line": "L40" } ] }, - "norm_label": ".create()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/AlwaysOnMiddlewareTests.cs", + "norm_label": ".link()", + "source_file": "src/Anichron.Worker/Ingestion/LivePhotoLinker.cs", "source_location": "L17" }, { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_persistencemiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_testfixture_build", + "id": "src_anichron_worker_ingestion_proxy_proxyfilebuilder_anichron_worker_ingestion_proxy_proxyfilebuilder_build", "label": ".Build()", "_callable": true, "_origin": "ast", @@ -22569,22 +21563,22 @@ "community_name": "IGuidFactory", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s420" + "s108" ], "unresolved_calls": [ { - "callee": "For", - "receiver_type": "Substitute", + "callee": "GetCurrentInstant", + "receiver_type": "IClock", "lang": "csharp", - "line": "L48" + "line": "L24" } ] }, "norm_label": ".build()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/PersistenceMiddlewareTests.cs", - "source_location": "L45" + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyFileBuilder.cs", + "source_location": "L10" }, { "id": "src_anichron_core_data_anichrondbcontext_anichron_core_data_anichrondbcontext_executeintransactionasync", @@ -22592,7 +21586,7 @@ "_callable": true, "_origin": "ast", "community": 283, - "community_name": "Files (`mutate` in `src/stryker-config.json`)", + "community_name": "Consequences", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Data", @@ -22618,7 +21612,7 @@ "_callable": true, "_origin": "ast", "community": 283, - "community_name": "Files (`mutate` in `src/stryker-config.json`)", + "community_name": "Consequences", "file_type": "code", "metadata": { "namespace": "Anichron.Infrastructure.Configuration", @@ -22644,7 +21638,7 @@ "_callable": true, "_origin": "ast", "community": 283, - "community_name": "Files (`mutate` in `src/stryker-config.json`)", + "community_name": "Consequences", "file_type": "code", "metadata": { "namespace": "Anichron.Infrastructure.Tests.Unit.Configuration", @@ -22782,49 +21776,13 @@ "source_file": "src/Anichron.API.Tests.Unit/Services/BootstrapResetServiceTests.cs", "source_location": "L51" }, - { - "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_anichron_worker_ingestion_pipeline_iingestionmiddleware_caninvoke", - "label": ".CanInvoke()", - "_callable": true, - "_origin": "ast", - "community": 288, - "community_name": "IIngestionMiddleware", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Pipeline", - "scope_chain": [ - "s0" - ] - }, - "norm_label": ".caninvoke()", - "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IIngestionMiddleware.cs", - "source_location": "L8" - }, - { - "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_anichron_worker_ingestion_pipeline_iingestionmiddleware_invokeasync", - "label": ".InvokeAsync()", - "_callable": true, - "_origin": "ast", - "community": 288, - "community_name": "IIngestionMiddleware", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Pipeline", - "scope_chain": [ - "s0" - ] - }, - "norm_label": ".invokeasync()", - "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IIngestionMiddleware.cs", - "source_location": "L9" - }, { "id": "src_anichron_worker_ingestion_pipeline_ingestionpipelinerunner_anichron_worker_ingestion_pipeline_iingestionpipelinerunner_runasync", "label": ".RunAsync()", "_callable": true, "_origin": "ast", "community": 288, - "community_name": "IIngestionMiddleware", + "community_name": "IngestionPipelineRunner", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Pipeline", @@ -22842,7 +21800,7 @@ "_callable": true, "_origin": "ast", "community": 288, - "community_name": "IIngestionMiddleware", + "community_name": "IngestionPipelineRunner", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Pipeline", @@ -22860,7 +21818,7 @@ "_callable": true, "_origin": "ast", "community": 288, - "community_name": "IIngestionMiddleware", + "community_name": "IngestionPipelineRunner", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Pipeline", @@ -22878,7 +21836,7 @@ "_callable": true, "_origin": "ast", "community": 288, - "community_name": "IIngestionMiddleware", + "community_name": "IngestionPipelineRunner", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Pipeline", @@ -22896,7 +21854,7 @@ "_callable": true, "_origin": "ast", "community": 288, - "community_name": "IIngestionMiddleware", + "community_name": "IngestionPipelineRunner", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Pipeline", @@ -22914,7 +21872,7 @@ "_callable": true, "_origin": "ast", "community": 288, - "community_name": "IIngestionMiddleware", + "community_name": "IngestionPipelineRunner", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Pipeline", @@ -22932,7 +21890,7 @@ "_callable": true, "_origin": "ast", "community": 288, - "community_name": "IIngestionMiddleware", + "community_name": "IngestionPipelineRunner", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Pipeline", @@ -22950,7 +21908,7 @@ "_callable": true, "_origin": "ast", "community": 288, - "community_name": "IIngestionMiddleware", + "community_name": "IngestionPipelineRunner", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Pipeline", @@ -22968,7 +21926,7 @@ "_callable": true, "_origin": "ast", "community": 288, - "community_name": "IIngestionMiddleware", + "community_name": "IngestionPipelineRunner", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Pipeline", @@ -22986,7 +21944,7 @@ "_callable": true, "_origin": "ast", "community": 288, - "community_name": "IIngestionMiddleware", + "community_name": "IngestionPipelineRunner", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Pipeline", @@ -22998,44 +21956,6 @@ "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IngestionPipelineRunner.cs", "source_location": "L136" }, - { - "id": "src_anichron_worker_tests_unit_crawling_fileingestionpipelinetests_anichron_worker_tests_unit_crawling_testfixture_buildwithmiddlewares", - "label": ".BuildWithMiddlewares()", - "_callable": true, - "_origin": "ast", - "community": 288, - "community_name": "IIngestionMiddleware", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Crawling", - "scope_chain": [ - "s393" - ], - "unresolved_calls": [ - { - "callee": "For", - "receiver_type": "Substitute", - "lang": "csharp", - "line": "L52" - }, - { - "callee": "Any", - "receiver_type": "Arg", - "lang": "csharp", - "line": "L53" - }, - { - "callee": "Create", - "receiver_type": "Options", - "lang": "csharp", - "line": "L59" - } - ] - }, - "norm_label": ".buildwithmiddlewares()", - "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/FileIngestionPipelineTests.cs", - "source_location": "L48" - }, { "id": "src_anichron_infrastructure_tests_unit_configuration_appiniinitializertests_anichron_infrastructure_tests_unit_configuration_appiniinitializertests_ensureuptodate_concurrentfilecreationrace_noexceptionthrown", "label": ".EnsureUpToDate_ConcurrentFileCreationRace_NoExceptionThrown()", @@ -23089,148 +22009,184 @@ "source_location": "L354" }, { - "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_log_crawlingpath", - "label": ".CrawlingPath()", + "id": "src_anichron_worker_ingestion_pipeline_ingestioncontext_anichron_worker_ingestion_pipeline_ingestioncontext_addproxyfile", + "label": ".AddProxyFile()", "_callable": true, "_origin": "ast", "community": 29, - "community_name": "Worker", + "community_name": "ProxyStagingWriter", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Crawling", + "namespace": "Anichron.Worker.Ingestion.Pipeline", "scope_chain": [ - "s134" + "s29" + ], + "unresolved_calls": [ + { + "callee": "Add", + "receiver_type": "List", + "lang": "csharp", + "line": "L35" + } ] }, - "norm_label": ".crawlingpath()", - "source_file": "src/Anichron.Worker/Crawling/Worker.cs", - "source_location": "L55" + "norm_label": ".addproxyfile()", + "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IngestionContext.cs", + "source_location": "L32" }, { - "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_log_starting", - "label": ".Starting()", + "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_anichron_worker_ingestion_proxy_log_discardfailed", + "label": ".DiscardFailed()", "_callable": true, "_origin": "ast", "community": 29, - "community_name": "Worker", + "community_name": "ProxyStagingWriter", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Crawling", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s134" + "s206" ] }, - "norm_label": ".starting()", - "source_file": "src/Anichron.Worker/Crawling/Worker.cs", - "source_location": "L52" + "norm_label": ".discardfailed()", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyStagingWriter.cs", + "source_location": "L85" }, { - "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_worker_crawlallasync", - "label": ".CrawlAllAsync()", + "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_anichron_worker_ingestion_proxy_log_proxywritten", + "label": ".ProxyWritten()", "_callable": true, "_origin": "ast", "community": 29, - "community_name": "Worker", + "community_name": "ProxyStagingWriter", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Crawling", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s134" - ], - "unresolved_calls": [ - { - "callee": "CreateScope", - "receiver_type": "IServiceScopeFactory", - "lang": "csharp", - "line": "L33" - } + "s206" ] }, - "norm_label": ".crawlallasync()", - "source_file": "src/Anichron.Worker/Crawling/Worker.cs", - "source_location": "L31" + "norm_label": ".proxywritten()", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyStagingWriter.cs", + "source_location": "L82" }, { - "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_worker_crawlasync", - "label": ".CrawlAsync()", + "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_anichron_worker_ingestion_proxy_proxystagingwriter_discardtemporaryfile", + "label": ".DiscardTemporaryFile()", "_callable": true, "_origin": "ast", "community": 29, - "community_name": "Worker", + "community_name": "ProxyStagingWriter", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Crawling", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s134" + "s206" ] }, - "norm_label": ".crawlasync()", - "source_file": "src/Anichron.Worker/Crawling/Worker.cs", - "source_location": "L44" + "norm_label": ".discardtemporaryfile()", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyStagingWriter.cs", + "source_location": "L67" }, { - "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_worker_executeasync", - "label": ".ExecuteAsync()", + "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_anichron_worker_ingestion_proxy_proxystagingwriter_temporarypathfor", + "label": ".TemporaryPathFor()", "_callable": true, "_origin": "ast", "community": 29, - "community_name": "Worker", + "community_name": "ProxyStagingWriter", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Crawling", + "namespace": "Anichron.Worker.Ingestion.Proxy", "scope_chain": [ - "s134" + "s206" + ] + }, + "norm_label": ".temporarypathfor()", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyStagingWriter.cs", + "source_location": "L28" + }, + { + "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_anichron_worker_ingestion_proxy_proxystagingwriter_writeasync", + "label": ".WriteAsync()", + "_callable": true, + "_origin": "ast", + "community": 29, + "community_name": "ProxyStagingWriter", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion.Proxy", + "scope_chain": [ + "s206" + ] + }, + "norm_label": ".writeasync()", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyStagingWriter.cs", + "source_location": "L34" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_videoproxymiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_testfixture_buildwith", + "label": ".BuildWith()", + "_callable": true, + "_origin": "ast", + "community": 29, + "community_name": "ProxyStagingWriter", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", + "scope_chain": [ + "s374" ], "unresolved_calls": [ { - "callee": "Delay", - "receiver_type": "Task", + "callee": "Create", + "receiver_type": "Options", "lang": "csharp", - "line": "L27" + "line": "L57" }, { - "callee": "FromHours", - "receiver_type": "TimeSpan", + "callee": "For", + "receiver_type": "Substitute", "lang": "csharp", - "line": "L27" + "line": "L60" } ] }, - "norm_label": ".executeasync()", - "source_file": "src/Anichron.Worker/Crawling/Worker.cs", - "source_location": "L18" + "norm_label": ".buildwith()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/VideoProxyMiddlewareTests.cs", + "source_location": "L52" }, { - "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_testfixture_build", + "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxystagingwritertests_anichron_worker_tests_unit_ingestion_proxy_testfixture_build", "label": ".Build()", "_callable": true, "_origin": "ast", "community": 29, - "community_name": "Worker", + "community_name": "ProxyStagingWriter", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Crawling", + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", "scope_chain": [ - "s352" + "s405" ], "unresolved_calls": [ { "callee": "Create", "receiver_type": "Options", "lang": "csharp", - "line": "L48" + "line": "L34" }, { "callee": "For", "receiver_type": "Substitute", "lang": "csharp", - "line": "L49" + "line": "L37" } ] }, "norm_label": ".build()", - "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", - "source_location": "L42" + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ProxyStagingWriterTests.cs", + "source_location": "L32" }, { "id": "src_anichron_worker_ingestion_middlewares_persistencemiddleware_anichron_worker_ingestion_middlewares_log_alreadypersisted", @@ -23381,148 +22337,196 @@ "source_location": "L90" }, { - "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_efrefreshtokenrepository_deleteexpiredasync", - "label": ".DeleteExpiredAsync()", + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_persistencemiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_testfixture_build", + "label": ".Build()", "_callable": true, "_origin": "ast", - "community": 291, - "community_name": "RefreshToken", + "community": 290, + "community_name": "PersistenceMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", "scope_chain": [ - "s66" + "s420" + ], + "unresolved_calls": [ + { + "callee": "For", + "receiver_type": "Substitute", + "lang": "csharp", + "line": "L48" + } ] }, - "norm_label": ".deleteexpiredasync()", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", - "source_location": "L33" + "norm_label": ".build()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/PersistenceMiddlewareTests.cs", + "source_location": "L45" }, { - "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_efrefreshtokenrepository_findbyhashwithuserasync", - "label": ".FindByHashWithUserAsync()", + "id": "src_anichron_api_services_lockoutservice_anichron_api_services_ilockoutservice_islockedout", + "label": ".IsLockedOut()", "_callable": true, "_origin": "ast", "community": 291, - "community_name": "RefreshToken", + "community_name": "LockoutService", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s66" + "s84" ] }, - "norm_label": ".findbyhashwithuserasync()", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", - "source_location": "L17" + "norm_label": ".islockedout()", + "source_file": "src/Anichron.API/Services/LockoutService.cs", + "source_location": "L9" }, { - "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_efrefreshtokenrepository_revokeallactivebyuseridasync", - "label": ".RevokeAllActiveByUserIdAsync()", + "id": "src_anichron_api_services_lockoutservice_anichron_api_services_ilockoutservice_preparereset", + "label": ".PrepareReset()", "_callable": true, "_origin": "ast", "community": 291, - "community_name": "RefreshToken", + "community_name": "LockoutService", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s66" + "s84" ] }, - "norm_label": ".revokeallactivebyuseridasync()", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", - "source_location": "L27" + "norm_label": ".preparereset()", + "source_file": "src/Anichron.API/Services/LockoutService.cs", + "source_location": "L12" }, { - "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_irefreshtokenrepository_add", - "label": ".Add()", + "id": "src_anichron_api_services_lockoutservice_anichron_api_services_ilockoutservice_recordfailedattemptasync", + "label": ".RecordFailedAttemptAsync()", "_callable": true, "_origin": "ast", "community": 291, - "community_name": "RefreshToken", + "community_name": "LockoutService", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s66" + "s84" ] }, - "norm_label": ".add()", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "norm_label": ".recordfailedattemptasync()", + "source_file": "src/Anichron.API/Services/LockoutService.cs", "source_location": "L10" }, { - "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_irefreshtokenrepository_deleteexpiredasync", - "label": ".DeleteExpiredAsync()", + "id": "src_anichron_api_services_lockoutservice_anichron_api_services_lockoutservice_computebackoffseconds", + "label": ".ComputeBackoffSeconds()", "_callable": true, "_origin": "ast", "community": 291, - "community_name": "RefreshToken", + "community_name": "LockoutService", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s66" + "s84" + ], + "unresolved_calls": [ + { + "callee": "Pow", + "receiver_type": "Math", + "lang": "csharp", + "line": "L39" + } ] }, - "norm_label": ".deleteexpiredasync()", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", - "source_location": "L12" + "norm_label": ".computebackoffseconds()", + "source_file": "src/Anichron.API/Services/LockoutService.cs", + "source_location": "L35" }, { - "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_irefreshtokenrepository_findbyhashasync", - "label": ".FindByHashAsync()", + "id": "src_anichron_api_services_lockoutservice_anichron_api_services_lockoutservice_islockedout", + "label": ".IsLockedOut()", "_callable": true, "_origin": "ast", "community": 291, - "community_name": "RefreshToken", + "community_name": "LockoutService", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s66" + "s84" ] }, - "norm_label": ".findbyhashasync()", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", - "source_location": "L9" + "norm_label": ".islockedout()", + "source_file": "src/Anichron.API/Services/LockoutService.cs", + "source_location": "L17" }, { - "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_irefreshtokenrepository_findbyhashwithuserasync", - "label": ".FindByHashWithUserAsync()", + "id": "src_anichron_api_services_lockoutservice_anichron_api_services_lockoutservice_preparereset", + "label": ".PrepareReset()", "_callable": true, "_origin": "ast", "community": 291, - "community_name": "RefreshToken", + "community_name": "LockoutService", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s66" + "s84" ] }, - "norm_label": ".findbyhashwithuserasync()", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", - "source_location": "L8" + "norm_label": ".preparereset()", + "source_file": "src/Anichron.API/Services/LockoutService.cs", + "source_location": "L29" }, { - "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_irefreshtokenrepository_revokeallactivebyuseridasync", - "label": ".RevokeAllActiveByUserIdAsync()", + "id": "src_anichron_api_services_lockoutservice_anichron_api_services_lockoutservice_recordfailedattemptasync", + "label": ".RecordFailedAttemptAsync()", "_callable": true, "_origin": "ast", "community": 291, - "community_name": "RefreshToken", + "community_name": "LockoutService", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s66" + "s84" + ], + "unresolved_calls": [ + { + "callee": "Plus", + "receiver_type": "Instant", + "lang": "csharp", + "line": "L25" + }, + { + "callee": "FromSeconds", + "receiver_type": "Duration", + "lang": "csharp", + "line": "L25" + } ] }, - "norm_label": ".revokeallactivebyuseridasync()", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", - "source_location": "L11" + "norm_label": ".recordfailedattemptasync()", + "source_file": "src/Anichron.API/Services/LockoutService.cs", + "source_location": "L20" + }, + { + "id": "src_anichron_api_tests_unit_services_lockoutservicetests_anichron_api_tests_unit_services_lockoutservicetests_computebackoffseconds_returnsexpectedseconds", + "label": ".ComputeBackoffSeconds_ReturnsExpectedSeconds()", + "_callable": true, + "_origin": "ast", + "community": 291, + "community_name": "LockoutService", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Services", + "scope_chain": [ + "s84" + ] + }, + "norm_label": ".computebackoffseconds_returnsexpectedseconds()", + "source_file": "src/Anichron.API.Tests.Unit/Services/LockoutServiceTests.cs", + "source_location": "L154" }, { "id": "src_anichron_core_storagepath_anichron_core_storagepath_canonicalize", @@ -23530,7 +22534,7 @@ "_callable": true, "_origin": "ast", "community": 292, - "community_name": "StoragePathTests", + "community_name": "WorkerInitializer", "file_type": "code", "metadata": { "namespace": "Anichron.Core", @@ -23568,7 +22572,7 @@ "_callable": true, "_origin": "ast", "community": 292, - "community_name": "StoragePathTests", + "community_name": "WorkerInitializer", "file_type": "code", "metadata": { "namespace": "Anichron.Core", @@ -23594,7 +22598,7 @@ "_callable": true, "_origin": "ast", "community": 292, - "community_name": "StoragePathTests", + "community_name": "WorkerInitializer", "file_type": "code", "metadata": { "namespace": "Anichron.Core", @@ -23612,7 +22616,7 @@ "_callable": true, "_origin": "ast", "community": 292, - "community_name": "StoragePathTests", + "community_name": "WorkerInitializer", "file_type": "code", "metadata": { "namespace": "Anichron.Core", @@ -23630,7 +22634,7 @@ "_callable": true, "_origin": "ast", "community": 292, - "community_name": "StoragePathTests", + "community_name": "WorkerInitializer", "file_type": "code", "metadata": { "namespace": "Anichron.Core", @@ -23648,7 +22652,7 @@ "_callable": true, "_origin": "ast", "community": 292, - "community_name": "StoragePathTests", + "community_name": "WorkerInitializer", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Tests.Unit", @@ -23666,7 +22670,7 @@ "_callable": true, "_origin": "ast", "community": 292, - "community_name": "StoragePathTests", + "community_name": "WorkerInitializer", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Tests.Unit", @@ -23684,7 +22688,7 @@ "_callable": true, "_origin": "ast", "community": 292, - "community_name": "StoragePathTests", + "community_name": "WorkerInitializer", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Tests.Unit", @@ -23702,7 +22706,7 @@ "_callable": true, "_origin": "ast", "community": 292, - "community_name": "StoragePathTests", + "community_name": "WorkerInitializer", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Tests.Unit", @@ -23720,7 +22724,7 @@ "_callable": true, "_origin": "ast", "community": 292, - "community_name": "StoragePathTests", + "community_name": "WorkerInitializer", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Tests.Unit", @@ -23738,7 +22742,7 @@ "_callable": true, "_origin": "ast", "community": 292, - "community_name": "StoragePathTests", + "community_name": "WorkerInitializer", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Tests.Unit", @@ -23756,7 +22760,7 @@ "_callable": true, "_origin": "ast", "community": 292, - "community_name": "StoragePathTests", + "community_name": "WorkerInitializer", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Tests.Unit", @@ -23774,7 +22778,7 @@ "_callable": true, "_origin": "ast", "community": 292, - "community_name": "StoragePathTests", + "community_name": "WorkerInitializer", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Tests.Unit", @@ -23792,7 +22796,7 @@ "_callable": true, "_origin": "ast", "community": 292, - "community_name": "StoragePathTests", + "community_name": "WorkerInitializer", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Tests.Unit", @@ -23804,13 +22808,117 @@ "source_file": "src/Anichron.Core.Tests.Unit/StoragePathTests.cs", "source_location": "L42" }, + { + "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_log_allusermode", + "label": ".AllUserMode()", + "_callable": true, + "_origin": "ast", + "community": 292, + "community_name": "WorkerInitializer", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Startup", + "scope_chain": [ + "s213" + ] + }, + "norm_label": ".allusermode()", + "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", + "source_location": "L91" + }, + { + "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_log_storageconfigcreated", + "label": ".StorageConfigCreated()", + "_callable": true, + "_origin": "ast", + "community": 292, + "community_name": "WorkerInitializer", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Startup", + "scope_chain": [ + "s213" + ] + }, + "norm_label": ".storageconfigcreated()", + "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", + "source_location": "L97" + }, + { + "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_log_storageconfigexists", + "label": ".StorageConfigExists()", + "_callable": true, + "_origin": "ast", + "community": 292, + "community_name": "WorkerInitializer", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Startup", + "scope_chain": [ + "s213" + ] + }, + "norm_label": ".storageconfigexists()", + "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", + "source_location": "L94" + }, + { + "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_workerinitializer_startasync", + "label": ".StartAsync()", + "_callable": true, + "_origin": "ast", + "community": 292, + "community_name": "WorkerInitializer", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Startup", + "scope_chain": [ + "s213" + ], + "unresolved_calls": [ + { + "callee": "CreateAsyncScope", + "receiver_type": "IServiceScopeFactory", + "lang": "csharp", + "line": "L27" + }, + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L76" + } + ] + }, + "norm_label": ".startasync()", + "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", + "source_location": "L19" + }, + { + "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_workerinitializer_stopasync", + "label": ".StopAsync()", + "_callable": true, + "_origin": "ast", + "community": 292, + "community_name": "WorkerInitializer", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Startup", + "scope_chain": [ + "s213" + ] + }, + "norm_label": ".stopasync()", + "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", + "source_location": "L87" + }, { "id": "src_anichron_api_tests_unit_services_adminstorageconfigservicetests_anichron_api_tests_unit_services_adminstorageconfigservicetests_addasync_blankorrelativerootpath_returnspathinvalid", "label": ".AddAsync_BlankOrRelativeRootPath_ReturnsPathInvalid()", "_callable": true, "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -23842,7 +22950,7 @@ "_callable": true, "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -23874,7 +22982,7 @@ "_callable": true, "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -23906,7 +23014,7 @@ "_callable": true, "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -23932,7 +23040,7 @@ "_callable": true, "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -23964,7 +23072,7 @@ "_callable": true, "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -23996,7 +23104,7 @@ "_callable": true, "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -24028,7 +23136,7 @@ "_callable": true, "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -24060,7 +23168,7 @@ "_callable": true, "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -24092,7 +23200,7 @@ "_callable": true, "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -24124,7 +23232,7 @@ "_callable": true, "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -24162,7 +23270,7 @@ "_callable": true, "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -24194,7 +23302,7 @@ "_callable": true, "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -24226,7 +23334,7 @@ "_callable": true, "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -24258,7 +23366,7 @@ "_callable": true, "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -24290,7 +23398,7 @@ "_callable": true, "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -24322,7 +23430,7 @@ "_callable": true, "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -24354,7 +23462,7 @@ "_callable": true, "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -24372,7 +23480,7 @@ "_callable": true, "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -24385,12 +23493,12 @@ "source_location": "L20" }, { - "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_efrefreshtokenrepository_add", + "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_efuserstorageconfigrepository_add", "label": ".Add()", "_callable": true, "_origin": "ast", - "community": 297, - "community_name": "EfRefreshTokenRepository", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Data.Repository", @@ -24399,16 +23507,16 @@ ] }, "norm_label": ".add()", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", - "source_location": "L23" + "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", + "source_location": "L38" }, { - "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_efrefreshtokenrepository_findbyhashasync", - "label": ".FindByHashAsync()", + "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_efuserstorageconfigrepository_findbyidasync", + "label": ".FindByIdAsync()", "_callable": true, "_origin": "ast", - "community": 297, - "community_name": "EfRefreshTokenRepository", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Data.Repository", @@ -24416,191 +23524,659 @@ "s66" ] }, - "norm_label": ".findbyhashasync()", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "norm_label": ".findbyidasync()", + "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", "source_location": "L20" }, { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_add_addstokentocontext", - "label": ".Add_AddsTokenToContext()", + "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_efuserstorageconfigrepository_findbyrootpathasync", + "label": ".FindByRootPathAsync()", "_callable": true, "_origin": "ast", - "community": 297, - "community_name": "EfRefreshTokenRepository", + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".findbyrootpathasync()", + "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", + "source_location": "L23" + }, + { + "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_efuserstorageconfigrepository_getactivebyuseridasync", + "label": ".GetActiveByUserIdAsync()", + "_callable": true, + "_origin": "ast", + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".getactivebyuseridasync()", + "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", + "source_location": "L32" + }, + { + "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_efuserstorageconfigrepository_getallactiveasync", + "label": ".GetAllActiveAsync()", + "_callable": true, + "_origin": "ast", + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".getallactiveasync()", + "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", + "source_location": "L29" + }, + { + "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_efuserstorageconfigrepository_getallrootpathsasync", + "label": ".GetAllRootPathsAsync()", + "_callable": true, + "_origin": "ast", + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".getallrootpathsasync()", + "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", + "source_location": "L26" + }, + { + "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_efuserstorageconfigrepository_getbyuseridasync", + "label": ".GetByUserIdAsync()", + "_callable": true, + "_origin": "ast", + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".getbyuseridasync()", + "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", + "source_location": "L35" + }, + { + "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_efuserstorageconfigrepository_remove", + "label": ".Remove()", + "_callable": true, + "_origin": "ast", + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".remove()", + "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", + "source_location": "L41" + }, + { + "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_iuserstorageconfigrepository_add", + "label": ".Add()", + "_callable": true, + "_origin": "ast", + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".add()", + "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", + "source_location": "L14" + }, + { + "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_iuserstorageconfigrepository_findbyidasync", + "label": ".FindByIdAsync()", + "_callable": true, + "_origin": "ast", + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".findbyidasync()", + "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", + "source_location": "L8" + }, + { + "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_iuserstorageconfigrepository_findbyrootpathasync", + "label": ".FindByRootPathAsync()", + "_callable": true, + "_origin": "ast", + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".findbyrootpathasync()", + "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", + "source_location": "L9" + }, + { + "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_iuserstorageconfigrepository_getactivebyuseridasync", + "label": ".GetActiveByUserIdAsync()", + "_callable": true, + "_origin": "ast", + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".getactivebyuseridasync()", + "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", + "source_location": "L12" + }, + { + "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_iuserstorageconfigrepository_getallactiveasync", + "label": ".GetAllActiveAsync()", + "_callable": true, + "_origin": "ast", + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".getallactiveasync()", + "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", + "source_location": "L11" + }, + { + "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_iuserstorageconfigrepository_getallrootpathsasync", + "label": ".GetAllRootPathsAsync()", + "_callable": true, + "_origin": "ast", + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".getallrootpathsasync()", + "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", + "source_location": "L10" + }, + { + "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_iuserstorageconfigrepository_getbyuseridasync", + "label": ".GetByUserIdAsync()", + "_callable": true, + "_origin": "ast", + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".getbyuseridasync()", + "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", + "source_location": "L13" + }, + { + "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_iuserstorageconfigrepository_remove", + "label": ".Remove()", + "_callable": true, + "_origin": "ast", + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".remove()", + "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", + "source_location": "L15" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_add_config_appearsinsubsequentquery", + "label": ".Add_Config_AppearsInSubsequentQuery()", + "_callable": true, + "_origin": "ast", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Tests.Unit.Data.Repository", "scope_chain": [ - "s145" + "s129" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L156" + } ] }, - "norm_label": ".add_addstokentocontext()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", - "source_location": "L105" + "norm_label": ".add_config_appearsinsubsequentquery()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L150" }, { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_createdb", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_createdb", "label": ".CreateDb()", "_callable": true, "_origin": "ast", - "community": 297, - "community_name": "EfRefreshTokenRepository", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Tests.Unit.Data.Repository", "scope_chain": [ - "s145" + "s129" ], "unresolved_calls": [ { "callee": "NewGuid", "receiver_type": "Guid", "lang": "csharp", - "line": "L16" + "line": "L13" } ] }, "norm_label": ".createdb()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", - "source_location": "L13" + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L10" }, { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_findbyhashasync_knownhash_returnstoken", - "label": ".FindByHashAsync_KnownHash_ReturnsToken()", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_findbyidasync_matchingid_returnsconfig", + "label": ".FindByIdAsync_MatchingId_ReturnsConfig()", "_callable": true, "_origin": "ast", - "community": 297, - "community_name": "EfRefreshTokenRepository", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Tests.Unit.Data.Repository", "scope_chain": [ - "s145" + "s129" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L175" + } ] }, - "norm_label": ".findbyhashasync_knownhash_returnstoken()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", - "source_location": "L72" + "norm_label": ".findbyidasync_matchingid_returnsconfig()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L170" }, { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_findbyhashasync_unknownhash_returnsnull", - "label": ".FindByHashAsync_UnknownHash_ReturnsNull()", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_findbyidasync_nomatch_returnsnull", + "label": ".FindByIdAsync_NoMatch_ReturnsNull()", "_callable": true, "_origin": "ast", - "community": 297, - "community_name": "EfRefreshTokenRepository", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Tests.Unit.Data.Repository", "scope_chain": [ - "s145" + "s129" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L191" + } ] }, - "norm_label": ".findbyhashasync_unknownhash_returnsnull()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", - "source_location": "L90" + "norm_label": ".findbyidasync_nomatch_returnsnull()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L186" }, { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_findbyhashwithuserasync_knownhash_returnstokenwithuserloaded", - "label": ".FindByHashWithUserAsync_KnownHash_ReturnsTokenWithUserLoaded()", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_findbyrootpathasync_matchingrootpath_returnsconfig", + "label": ".FindByRootPathAsync_MatchingRootPath_ReturnsConfig()", "_callable": true, "_origin": "ast", - "community": 297, - "community_name": "EfRefreshTokenRepository", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Tests.Unit.Data.Repository", "scope_chain": [ - "s145" + "s129" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L32" + } ] }, - "norm_label": ".findbyhashwithuserasync_knownhash_returnstokenwithuserloaded()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", - "source_location": "L39" + "norm_label": ".findbyrootpathasync_matchingrootpath_returnsconfig()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L25" }, { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_findbyhashwithuserasync_unknownhash_returnsnull", - "label": ".FindByHashWithUserAsync_UnknownHash_ReturnsNull()", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_findbyrootpathasync_nomatch_returnsnull", + "label": ".FindByRootPathAsync_NoMatch_ReturnsNull()", "_callable": true, "_origin": "ast", - "community": 297, - "community_name": "EfRefreshTokenRepository", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Tests.Unit.Data.Repository", "scope_chain": [ - "s145" + "s129" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L48" + } ] }, - "norm_label": ".findbyhashwithuserasync_unknownhash_returnsnull()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", + "norm_label": ".findbyrootpathasync_nomatch_returnsnull()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L43" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_findbyrootpathasync_partialpath_returnsnull", + "label": ".FindByRootPathAsync_PartialPath_ReturnsNull()", + "_callable": true, + "_origin": "ast", + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s129" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L62" + } + ] + }, + "norm_label": ".findbyrootpathasync_partialpath_returnsnull()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", "source_location": "L57" }, { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_maketoken", - "label": ".MakeToken()", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_getactivebyuseridasync_inactiveconfigforuser_excluded", + "label": ".GetActiveByUserIdAsync_InactiveConfigForUser_Excluded()", "_callable": true, "_origin": "ast", - "community": 297, - "community_name": "EfRefreshTokenRepository", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Tests.Unit.Data.Repository", "scope_chain": [ - "s145" + "s129" ], "unresolved_calls": [ { "callee": "NewGuid", "receiver_type": "Guid", "lang": "csharp", - "line": "L27" - }, + "line": "L136" + } + ] + }, + "norm_label": ".getactivebyuseridasync_inactiveconfigforuser_excluded()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L131" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_getactivebyuseridasync_matchinguserid_returnsonlythatusersconfigs", + "label": ".GetActiveByUserIdAsync_MatchingUserId_ReturnsOnlyThatUsersConfigs()", + "_callable": true, + "_origin": "ast", + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s129" + ], + "unresolved_calls": [ { - "callee": "FromDays", - "receiver_type": "Duration", + "callee": "NewGuid", + "receiver_type": "Guid", "lang": "csharp", - "line": "L31" + "line": "L117" } ] }, - "norm_label": ".maketoken()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", - "source_location": "L24" + "norm_label": ".getactivebyuseridasync_matchinguserid_returnsonlythatusersconfigs()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L112" }, { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_makeuser", - "label": ".MakeUser()", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_getallactiveasync_mixedactive_returnsonlyactive", + "label": ".GetAllActiveAsync_MixedActive_ReturnsOnlyActive()", "_callable": true, "_origin": "ast", - "community": 297, - "community_name": "EfRefreshTokenRepository", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Core.Tests.Unit.Data.Repository", "scope_chain": [ - "s145" + "s129" ], "unresolved_calls": [ { "callee": "NewGuid", "receiver_type": "Guid", "lang": "csharp", - "line": "L22" + "line": "L80" } ] }, - "norm_label": ".makeuser()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", - "source_location": "L21" + "norm_label": ".getallactiveasync_mixedactive_returnsonlyactive()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L75" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_getallactiveasync_noneactive_returnsempty", + "label": ".GetAllActiveAsync_NoneActive_ReturnsEmpty()", + "_callable": true, + "_origin": "ast", + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s129" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L99" + } + ] + }, + "norm_label": ".getallactiveasync_noneactive_returnsempty()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L94" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_getbyuseridasync_noconfigs_returnsempty", + "label": ".GetByUserIdAsync_NoConfigs_ReturnsEmpty()", + "_callable": true, + "_origin": "ast", + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s129" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L232" + } + ] + }, + "norm_label": ".getbyuseridasync_noconfigs_returnsempty()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L225" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_getbyuseridasync_returnsallconfigsforuser_includinginactive", + "label": ".GetByUserIdAsync_ReturnsAllConfigsForUser_IncludingInactive()", + "_callable": true, + "_origin": "ast", + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s129" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L209" + } + ] + }, + "norm_label": ".getbyuseridasync_returnsallconfigsforuser_includinginactive()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L204" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_makeconfig", + "label": ".MakeConfig()", + "_callable": true, + "_origin": "ast", + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s129" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L19" + } + ] + }, + "norm_label": ".makeconfig()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L18" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_remove_config_disappearsfromsubsequentquery", + "label": ".Remove_Config_DisappearsFromSubsequentQuery()", + "_callable": true, + "_origin": "ast", + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s129" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L246" + } + ] + }, + "norm_label": ".remove_config_disappearsfromsubsequentquery()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserStorageConfigRepositoryTests.cs", + "source_location": "L241" }, { "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_testfixture_build", "label": ".Build()", "_callable": true, "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -24631,8 +24207,8 @@ "label": ".StartAsync_ExistingConfigDifferentUser_ThrowsInvalidOperationExceptionWithRootPathInMessageAsync()", "_callable": true, "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -24663,8 +24239,8 @@ "label": ".StartAsync_ExistingConfigSameUser_ResumesWithoutCheckingOverlapAsync()", "_callable": true, "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -24695,8 +24271,8 @@ "label": ".StartAsync_ExistingConfigSameUser_SkipsSaveAndSetsResolvedUserIdAsync()", "_callable": true, "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -24727,8 +24303,8 @@ "label": ".StartAsync_NoExistingConfig_CreatesStorageConfigWithCorrectFieldsAndSetsResolvedUserIdAsync()", "_callable": true, "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -24765,8 +24341,8 @@ "label": ".StartAsync_NonCanonicalRootPath_LooksUpAndStoresCanonicalFormAsync()", "_callable": true, "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -24803,8 +24379,8 @@ "label": ".StartAsync_RelativeRootPath_ThrowsBeforeTouchingStorageConfigsAsync()", "_callable": true, "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -24835,8 +24411,8 @@ "label": ".StartAsync_RootPathIsTheOriginalsRootItself_ThrowsAsync()", "_callable": true, "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -24867,8 +24443,8 @@ "label": ".StartAsync_RootPathNestedWithAnotherConfig_ThrowsNamingBothPathsAsync()", "_callable": true, "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -24899,8 +24475,8 @@ "label": ".StartAsync_RootPathOutsideOriginalsRoot_ThrowsBeforeTouchingStorageConfigsAsync()", "_callable": true, "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -24931,8 +24507,8 @@ "label": ".StartAsync_SiblingConfigSharingANamePrefix_CreatesConfigAsync()", "_callable": true, "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -24963,8 +24539,8 @@ "label": ".StartAsync_UnknownUser_ThrowsInvalidOperationExceptionWithUserInMessageAsync()", "_callable": true, "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -24989,8 +24565,8 @@ "label": ".StartAsync_UserIsEmpty_LogsAllUserModeAndMakesNoDbCallsAsync()", "_callable": true, "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -25015,8 +24591,8 @@ "label": ".StartAsync_UserIsWhitespace_LogsAllUserModeAndMakesNoDbCallsAsync()", "_callable": true, "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -25041,8 +24617,8 @@ "label": ".StartAsync_UserSetWithoutRootPath_ThrowsNamingTheSettingAsync()", "_callable": true, "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -25073,8 +24649,8 @@ "label": ".StopAsync_AlwaysCompletesSuccessfullyAsync()", "_callable": true, "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -25086,6 +24662,314 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Startup/WorkerInitializerTests.cs", "source_location": "L300" }, + { + "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_addforwardedheaderssupport_unparseablenetwork_throwsatregistration", + "label": ".AddForwardedHeadersSupport_UnparseableNetwork_ThrowsAtRegistration()", + "_callable": true, + "_origin": "ast", + "community": 297, + "community_name": "ForwardedHeadersRateLimitTests", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Infrastructure", + "scope_chain": [ + "s279" + ] + }, + "norm_label": ".addforwardedheaderssupport_unparseablenetwork_throwsatregistration()", + "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/ForwardedHeadersRateLimitTests.cs", + "source_location": "L116" + }, + { + "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_knownnetwork_ipv4mappedpeer_istrustedasync", + "label": ".KnownNetwork_Ipv4MappedPeer_IsTrustedAsync()", + "_callable": true, + "_origin": "ast", + "community": 297, + "community_name": "ForwardedHeadersRateLimitTests", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Infrastructure", + "scope_chain": [ + "s279" + ] + }, + "norm_label": ".knownnetwork_ipv4mappedpeer_istrustedasync()", + "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/ForwardedHeadersRateLimitTests.cs", + "source_location": "L86" + }, + { + "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_knownproxy_forwardedfor_getsbucketperclientasync", + "label": ".KnownProxy_ForwardedFor_GetsBucketPerClientAsync()", + "_callable": true, + "_origin": "ast", + "community": 297, + "community_name": "ForwardedHeadersRateLimitTests", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Infrastructure", + "scope_chain": [ + "s279" + ] + }, + "norm_label": ".knownproxy_forwardedfor_getsbucketperclientasync()", + "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/ForwardedHeadersRateLimitTests.cs", + "source_location": "L73" + }, + { + "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_refreshpolicy_allowsitspermitlimitthenrejectsasync", + "label": ".RefreshPolicy_AllowsItsPermitLimitThenRejectsAsync()", + "_callable": true, + "_origin": "ast", + "community": 297, + "community_name": "ForwardedHeadersRateLimitTests", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Infrastructure", + "scope_chain": [ + "s279" + ], + "unresolved_calls": [ + { + "callee": "Add", + "receiver_type": "List", + "lang": "csharp", + "line": "L108" + }, + { + "callee": "Should", + "receiver_type": "List", + "lang": "csharp", + "line": "L111" + } + ] + }, + "norm_label": ".refreshpolicy_allowsitspermitlimitthenrejectsasync()", + "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/ForwardedHeadersRateLimitTests.cs", + "source_location": "L97" + }, + { + "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_sendwithdistinctforwardedforasync", + "label": ".SendWithDistinctForwardedForAsync()", + "_callable": true, + "_origin": "ast", + "community": 297, + "community_name": "ForwardedHeadersRateLimitTests", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Infrastructure", + "scope_chain": [ + "s279" + ], + "unresolved_calls": [ + { + "callee": "GetTestClient", + "receiver_type": "WebApplication", + "lang": "csharp", + "line": "L47" + }, + { + "callee": "Add", + "receiver_type": "List", + "lang": "csharp", + "line": "L54" + } + ] + }, + "norm_label": ".sendwithdistinctforwardedforasync()", + "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/ForwardedHeadersRateLimitTests.cs", + "source_location": "L44" + }, + { + "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_startasync", + "label": ".StartAsync()", + "_callable": true, + "_origin": "ast", + "community": 297, + "community_name": "ForwardedHeadersRateLimitTests", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Infrastructure", + "scope_chain": [ + "s279" + ], + "unresolved_calls": [ + { + "callee": "CreateSlimBuilder", + "receiver_type": "WebApplication", + "lang": "csharp", + "line": "L20" + }, + { + "callee": "Parse", + "receiver_type": "IPAddress", + "lang": "csharp", + "line": "L30" + } + ] + }, + "norm_label": ".startasync()", + "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/ForwardedHeadersRateLimitTests.cs", + "source_location": "L18" + }, + { + "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_untrustedpeer_spoofedforwardedfor_sharesonebucketasync", + "label": ".UntrustedPeer_SpoofedForwardedFor_SharesOneBucketAsync()", + "_callable": true, + "_origin": "ast", + "community": 297, + "community_name": "ForwardedHeadersRateLimitTests", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Tests.Unit.Infrastructure", + "scope_chain": [ + "s279" + ] + }, + "norm_label": ".untrustedpeer_spoofedforwardedfor_sharesonebucketasync()", + "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/ForwardedHeadersRateLimitTests.cs", + "source_location": "L60" + }, + { + "id": "src_anichron_worker_ingestion_proxy_proxyshardstrategy_anichron_worker_ingestion_proxy_iproxydirectorystrategy_getdirectory", + "label": ".GetDirectory()", + "_callable": true, + "_origin": "ast", + "community": 299, + "community_name": "IProxyDirectoryStrategy", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion.Proxy", + "scope_chain": [ + "s0" + ] + }, + "norm_label": ".getdirectory()", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyShardStrategy.cs", + "source_location": "L5" + }, + { + "id": "src_anichron_worker_ingestion_proxy_proxyshardstrategy_anichron_worker_ingestion_proxy_twolevelhexshardstrategy_getdirectory", + "label": ".GetDirectory()", + "_callable": true, + "_origin": "ast", + "community": 299, + "community_name": "IProxyDirectoryStrategy", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion.Proxy", + "scope_chain": [ + "s0" + ] + }, + "norm_label": ".getdirectory()", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyShardStrategy.cs", + "source_location": "L16" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_getdirectory_differentconfigssamehash_producedifferentdirectories", + "label": ".GetDirectory_DifferentConfigsSameHash_ProduceDifferentDirectories()", + "_callable": true, + "_origin": "ast", + "community": 299, + "community_name": "IProxyDirectoryStrategy", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", + "scope_chain": [ + "s40" + ], + "unresolved_calls": [ + { + "callee": "Parse", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L49" + } + ] + }, + "norm_label": ".getdirectory_differentconfigssamehash_producedifferentdirectories()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ProxyShardStrategyTests.cs", + "source_location": "L44" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_getdirectory_differenthashsameconfig_bucketfollowsthecontenthash", + "label": ".GetDirectory_DifferentHashSameConfig_BucketFollowsTheContentHash()", + "_callable": true, + "_origin": "ast", + "community": 299, + "community_name": "IProxyDirectoryStrategy", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", + "scope_chain": [ + "s40" + ], + "unresolved_calls": [ + { + "callee": "Parse", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L24" + } + ] + }, + "norm_label": ".getdirectory_differenthashsameconfig_bucketfollowsthecontenthash()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ProxyShardStrategyTests.cs", + "source_location": "L21" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_getdirectory_knownconfigandhash_producesliteraltwolevelpath", + "label": ".GetDirectory_KnownConfigAndHash_ProducesLiteralTwoLevelPath()", + "_callable": true, + "_origin": "ast", + "community": 299, + "community_name": "IProxyDirectoryStrategy", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", + "scope_chain": [ + "s40" + ], + "unresolved_calls": [ + { + "callee": "Parse", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L14" + } + ] + }, + "norm_label": ".getdirectory_knownconfigandhash_producesliteraltwolevelpath()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ProxyShardStrategyTests.cs", + "source_location": "L11" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_getdirectory_sameconfigandhash_isstableacrosscalls", + "label": ".GetDirectory_SameConfigAndHash_IsStableAcrossCalls()", + "_callable": true, + "_origin": "ast", + "community": 299, + "community_name": "IProxyDirectoryStrategy", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", + "scope_chain": [ + "s40" + ], + "unresolved_calls": [ + { + "callee": "Parse", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L35" + } + ] + }, + "norm_label": ".getdirectory_sameconfigandhash_isstableacrosscalls()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ProxyShardStrategyTests.cs", + "source_location": "L31" + }, { "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_constructor_duplicateorders_throwsinvalidoperationexception", "label": ".Constructor_DuplicateOrders_ThrowsInvalidOperationException()", @@ -25513,164 +25397,186 @@ "source_location": "L27" }, { - "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_log_allusermode", - "label": ".AllUserMode()", + "id": "src_anichron_core_migrations_20260927145042_addschemacomments_designer_anichron_core_migrations_addschemacomments_buildtargetmodel", + "label": ".BuildTargetModel()", "_callable": true, "_origin": "ast", - "community": 301, - "community_name": "WorkerInitializer", + "community": 305, + "community_name": ".BuildTargetModel", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Startup", + "namespace": "Anichron.Core.Migrations", "scope_chain": [ - "s213" - ] - }, - "norm_label": ".allusermode()", - "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", - "source_location": "L91" - }, - { - "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_log_storageconfigcreated", - "label": ".StorageConfigCreated()", - "_callable": true, - "_origin": "ast", - "community": 301, - "community_name": "WorkerInitializer", + "s353" + ], + "unresolved_calls": [ + { + "callee": "HasAnnotation", + "receiver_type": "ModelBuilder", + "lang": "csharp", + "line": "L23" + }, + { + "callee": "UseIdentityByDefaultColumns", + "receiver_type": "NpgsqlModelBuilderExtensions", + "lang": "csharp", + "line": "L27" + }, + { + "callee": "Entity", + "receiver_type": "ModelBuilder", + "lang": "csharp", + "line": "L29" + } + ] + }, + "norm_label": ".buildtargetmodel()", + "source_file": "src/Anichron.Core/Migrations/20260927145042_AddSchemaComments.Designer.cs", + "source_location": "L20" + }, + { + "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_log_crawlingpath", + "label": ".CrawlingPath()", + "_callable": true, + "_origin": "ast", + "community": 308, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Startup", + "namespace": "Anichron.Worker.Crawling", "scope_chain": [ - "s213" + "s134" ] }, - "norm_label": ".storageconfigcreated()", - "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", - "source_location": "L97" + "norm_label": ".crawlingpath()", + "source_file": "src/Anichron.Worker/Crawling/Worker.cs", + "source_location": "L55" }, { - "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_log_storageconfigexists", - "label": ".StorageConfigExists()", + "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_log_starting", + "label": ".Starting()", "_callable": true, "_origin": "ast", - "community": 301, - "community_name": "WorkerInitializer", + "community": 308, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Startup", + "namespace": "Anichron.Worker.Crawling", "scope_chain": [ - "s213" + "s134" ] }, - "norm_label": ".storageconfigexists()", - "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", - "source_location": "L94" + "norm_label": ".starting()", + "source_file": "src/Anichron.Worker/Crawling/Worker.cs", + "source_location": "L52" }, { - "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_workerinitializer_startasync", - "label": ".StartAsync()", + "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_worker_crawlallasync", + "label": ".CrawlAllAsync()", "_callable": true, "_origin": "ast", - "community": 301, - "community_name": "WorkerInitializer", + "community": 308, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Startup", + "namespace": "Anichron.Worker.Crawling", "scope_chain": [ - "s213" + "s134" ], "unresolved_calls": [ { - "callee": "CreateAsyncScope", + "callee": "CreateScope", "receiver_type": "IServiceScopeFactory", "lang": "csharp", - "line": "L27" - }, - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L76" + "line": "L33" } ] }, - "norm_label": ".startasync()", - "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", - "source_location": "L19" + "norm_label": ".crawlallasync()", + "source_file": "src/Anichron.Worker/Crawling/Worker.cs", + "source_location": "L31" }, { - "id": "src_anichron_worker_startup_workerinitializer_anichron_worker_startup_workerinitializer_stopasync", - "label": ".StopAsync()", + "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_worker_crawlasync", + "label": ".CrawlAsync()", "_callable": true, "_origin": "ast", - "community": 301, - "community_name": "WorkerInitializer", + "community": 308, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Startup", + "namespace": "Anichron.Worker.Crawling", "scope_chain": [ - "s213" + "s134" ] }, - "norm_label": ".stopasync()", - "source_file": "src/Anichron.Worker/Startup/WorkerInitializer.cs", - "source_location": "L87" + "norm_label": ".crawlasync()", + "source_file": "src/Anichron.Worker/Crawling/Worker.cs", + "source_location": "L44" }, { - "id": "src_anichron_api_security_jwtfactory_anichron_api_security_ijwtfactory_create", - "label": ".Create()", + "id": "src_anichron_worker_crawling_worker_anichron_worker_crawling_worker_executeasync", + "label": ".ExecuteAsync()", "_callable": true, "_origin": "ast", - "community": 305, - "community_name": "JwtSettings", + "community": 308, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Security", + "namespace": "Anichron.Worker.Crawling", "scope_chain": [ - "s220" + "s134" + ], + "unresolved_calls": [ + { + "callee": "Delay", + "receiver_type": "Task", + "lang": "csharp", + "line": "L27" + }, + { + "callee": "FromHours", + "receiver_type": "TimeSpan", + "lang": "csharp", + "line": "L27" + } ] }, - "norm_label": ".create()", - "source_file": "src/Anichron.API/Security/JwtFactory.cs", - "source_location": "L13" + "norm_label": ".executeasync()", + "source_file": "src/Anichron.Worker/Crawling/Worker.cs", + "source_location": "L18" }, { - "id": "src_anichron_api_security_jwtfactory_anichron_api_security_jwtfactory_create", - "label": ".Create()", + "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_testfixture_build", + "label": ".Build()", "_callable": true, "_origin": "ast", - "community": 305, - "community_name": "JwtSettings", + "community": 308, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Security", + "namespace": "Anichron.Worker.Tests.Unit.Crawling", "scope_chain": [ - "s220" + "s352" ], "unresolved_calls": [ { - "callee": "Add", - "receiver_type": "List", - "lang": "csharp", - "line": "L44" - }, - { - "callee": "GetCurrentInstant", - "receiver_type": "IClock", + "callee": "Create", + "receiver_type": "Options", "lang": "csharp", - "line": "L53" + "line": "L48" }, { - "callee": "WriteToken", - "receiver_type": "JwtSecurityTokenHandler", + "callee": "For", + "receiver_type": "Substitute", "lang": "csharp", - "line": "L56" + "line": "L49" } ] }, - "norm_label": ".create()", - "source_file": "src/Anichron.API/Security/JwtFactory.cs", - "source_location": "L34" + "norm_label": ".build()", + "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/WorkerTests.cs", + "source_location": "L42" }, { "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_workertests_crawlallasync_activeconfig_runspipelinewithcorrectconfigasync", @@ -25909,202 +25815,140 @@ "source_location": "L79" }, { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_efuserstorageconfigrepository_findbyidasync", - "label": ".FindByIdAsync()", - "_callable": true, - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": ".findbyidasync()", - "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", - "source_location": "L20" - }, - { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_efuserstorageconfigrepository_getactivebyuseridasync", - "label": ".GetActiveByUserIdAsync()", - "_callable": true, - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": ".getactivebyuseridasync()", - "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", - "source_location": "L32" - }, - { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_efuserstorageconfigrepository_getallactiveasync", - "label": ".GetAllActiveAsync()", - "_callable": true, - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": ".getallactiveasync()", - "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", - "source_location": "L29" - }, - { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_efuserstorageconfigrepository_getallrootpathsasync", - "label": ".GetAllRootPathsAsync()", + "id": "src_anichron_worker_tests_unit_testdoubles_signallingtimeprovider_anichron_worker_tests_unit_testdoubles_signallingtimeprovider_createtimer", + "label": ".CreateTimer()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 308, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.Worker.Tests.Unit.TestDoubles", "scope_chain": [ - "s66" + "s75" ] }, - "norm_label": ".getallrootpathsasync()", - "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", - "source_location": "L26" + "norm_label": ".createtimer()", + "source_file": "src/Anichron.Worker.Tests.Unit/TestDoubles/SignallingTimeProvider.cs", + "source_location": "L10" }, { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_efuserstorageconfigrepository_getbyuseridasync", - "label": ".GetByUserIdAsync()", + "id": "src_anichron_worker_tests_unit_testdoubles_signallingtimeprovider_anichron_worker_tests_unit_testdoubles_signallingtimeprovider_waitfortimerasync", + "label": ".WaitForTimerAsync()", "_callable": true, "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", + "community": 308, + "community_name": "TestFixture", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.Worker.Tests.Unit.TestDoubles", "scope_chain": [ - "s66" + "s75" + ], + "unresolved_calls": [ + { + "callee": "FromSeconds", + "receiver_type": "TimeSpan", + "lang": "csharp", + "line": "L18" + } ] }, - "norm_label": ".getbyuseridasync()", - "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", - "source_location": "L35" + "norm_label": ".waitfortimerasync()", + "source_file": "src/Anichron.Worker.Tests.Unit/TestDoubles/SignallingTimeProvider.cs", + "source_location": "L17" }, { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_iuserstorageconfigrepository_findbyidasync", - "label": ".FindByIdAsync()", + "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_anichron_worker_ingestion_pipeline_iingestionmiddleware_caninvoke", + "label": ".CanInvoke()", "_callable": true, "_origin": "ast", "community": 31, - "community_name": "UserStorageConfig", + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.Worker.Ingestion.Pipeline", "scope_chain": [ - "s66" + "s0" ] }, - "norm_label": ".findbyidasync()", - "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", + "norm_label": ".caninvoke()", + "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IIngestionMiddleware.cs", "source_location": "L8" }, { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_iuserstorageconfigrepository_findbyrootpathasync", - "label": ".FindByRootPathAsync()", + "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_anichron_worker_ingestion_pipeline_iingestionmiddleware_invokeasync", + "label": ".InvokeAsync()", "_callable": true, "_origin": "ast", "community": 31, - "community_name": "UserStorageConfig", + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.Worker.Ingestion.Pipeline", "scope_chain": [ - "s66" + "s0" ] }, - "norm_label": ".findbyrootpathasync()", - "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", + "norm_label": ".invokeasync()", + "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IIngestionMiddleware.cs", "source_location": "L9" }, { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_iuserstorageconfigrepository_getactivebyuseridasync", - "label": ".GetActiveByUserIdAsync()", - "_callable": true, - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": ".getactivebyuseridasync()", - "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", - "source_location": "L12" - }, - { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_iuserstorageconfigrepository_getallactiveasync", - "label": ".GetAllActiveAsync()", - "_callable": true, - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Data.Repository", - "scope_chain": [ - "s66" - ] - }, - "norm_label": ".getallactiveasync()", - "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", - "source_location": "L11" - }, - { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_iuserstorageconfigrepository_getallrootpathsasync", - "label": ".GetAllRootPathsAsync()", + "id": "src_anichron_worker_tests_unit_crawling_fileingestionpipelinetests_anichron_worker_tests_unit_crawling_testfixture_buildwithmiddlewares", + "label": ".BuildWithMiddlewares()", "_callable": true, "_origin": "ast", "community": 31, - "community_name": "UserStorageConfig", + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.Worker.Tests.Unit.Crawling", "scope_chain": [ - "s66" + "s393" + ], + "unresolved_calls": [ + { + "callee": "For", + "receiver_type": "Substitute", + "lang": "csharp", + "line": "L52" + }, + { + "callee": "Any", + "receiver_type": "Arg", + "lang": "csharp", + "line": "L53" + }, + { + "callee": "Create", + "receiver_type": "Options", + "lang": "csharp", + "line": "L59" + } ] }, - "norm_label": ".getallrootpathsasync()", - "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", - "source_location": "L10" + "norm_label": ".buildwithmiddlewares()", + "source_file": "src/Anichron.Worker.Tests.Unit/Crawling/FileIngestionPipelineTests.cs", + "source_location": "L48" }, { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_anichron_core_data_repository_iuserstorageconfigrepository_getbyuseridasync", - "label": ".GetByUserIdAsync()", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_cancellingmiddleware_caninvoke", + "label": ".CanInvoke()", "_callable": true, "_origin": "ast", "community": 31, - "community_name": "UserStorageConfig", + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Data.Repository", + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", "scope_chain": [ - "s66" + "s368" ] }, - "norm_label": ".getbyuseridasync()", - "source_file": "src/Anichron.Core/Data/Repository/UserStorageConfigRepository.cs", - "source_location": "L13" + "norm_label": ".caninvoke()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", + "source_location": "L395" }, { "id": "src_anichron_infrastructure_configuration_appiniinitializer_anichron_infrastructure_configuration_appiniinitializer_appendmissing", @@ -26112,7 +25956,7 @@ "_callable": true, "_origin": "ast", "community": 310, - "community_name": "IniEntry", + "community_name": ".EnsureUpToDate", "file_type": "code", "metadata": { "namespace": "Anichron.Infrastructure.Configuration", @@ -26144,13 +25988,39 @@ "source_file": "src/Anichron.Infrastructure/Configuration/AppIniInitializer.cs", "source_location": "L64" }, + { + "id": "src_anichron_infrastructure_configuration_appiniinitializer_anichron_infrastructure_configuration_appiniinitializer_ensureuptodate", + "label": ".EnsureUpToDate()", + "_callable": true, + "_origin": "ast", + "community": 310, + "community_name": ".EnsureUpToDate", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Infrastructure.Configuration", + "scope_chain": [ + "s120" + ], + "unresolved_calls": [ + { + "callee": "Where", + "receiver_type": "IReadOnlyList", + "lang": "csharp", + "line": "L27" + } + ] + }, + "norm_label": ".ensureuptodate()", + "source_file": "src/Anichron.Infrastructure/Configuration/AppIniInitializer.cs", + "source_location": "L15" + }, { "id": "src_anichron_infrastructure_configuration_appiniinitializer_anichron_infrastructure_configuration_appiniinitializer_writenew", "label": ".WriteNew()", "_callable": true, "_origin": "ast", "community": 310, - "community_name": "IniEntry", + "community_name": ".EnsureUpToDate", "file_type": "code", "metadata": { "namespace": "Anichron.Infrastructure.Configuration", @@ -26189,185 +26059,69 @@ "source_location": "L37" }, { - "id": "src_anichron_api_infrastructure_jwtconfiguration_anichron_api_infrastructure_jwtconfiguration_read", - "label": ".Read()", - "_callable": true, - "_origin": "ast", - "community": 314, - "community_name": ".Read", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Infrastructure", - "scope_chain": [ - "s20" - ] - }, - "norm_label": ".read()", - "source_file": "src/Anichron.API/Infrastructure/JwtConfiguration.cs", - "source_location": "L9" - }, - { - "id": "src_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_configuration", - "label": ".Configuration()", + "id": "src_anichron_infrastructure_tests_unit_configuration_appiniinitializertests_anichron_infrastructure_tests_unit_configuration_appiniinitializertests_ensureuptodate_someentriesmissing_appendsmissingentries", + "label": ".EnsureUpToDate_SomeEntriesMissing_AppendsMissingEntries()", "_callable": true, "_origin": "ast", - "community": 314, - "community_name": ".Read", + "community": 310, + "community_name": ".EnsureUpToDate", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Tests.Unit.Infrastructure", + "namespace": "Anichron.Infrastructure.Tests.Unit.Configuration", "scope_chain": [ - "s78" + "s121" + ], + "unresolved_calls": [ + { + "callee": "Multiple", + "receiver_type": "Assert", + "lang": "csharp", + "line": "L210" + } ] }, - "norm_label": ".configuration()", - "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/JwtConfigurationTests.cs", - "source_location": "L10" + "norm_label": ".ensureuptodate_someentriesmissing_appendsmissingentries()", + "source_file": "src/Anichron.Infrastructure.Tests.Unit/Configuration/AppIniInitializerTests.cs", + "source_location": "L197" }, { - "id": "src_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_read_allvaluespresent_returnsthem", - "label": ".Read_AllValuesPresent_ReturnsThem()", + "id": "src_anichron_core_migrations_20261012025151_documentidentitynormalization_designer_anichron_core_migrations_documentidentitynormalization_buildtargetmodel", + "label": ".BuildTargetModel()", "_callable": true, "_origin": "ast", "community": 314, - "community_name": ".Read", + "community_name": ".BuildTargetModel", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Tests.Unit.Infrastructure", + "namespace": "Anichron.Core.Migrations", "scope_chain": [ - "s78" + "s353" + ], + "unresolved_calls": [ + { + "callee": "HasAnnotation", + "receiver_type": "ModelBuilder", + "lang": "csharp", + "line": "L23" + }, + { + "callee": "UseIdentityByDefaultColumns", + "receiver_type": "NpgsqlModelBuilderExtensions", + "lang": "csharp", + "line": "L27" + }, + { + "callee": "Entity", + "receiver_type": "ModelBuilder", + "lang": "csharp", + "line": "L29" + } ] }, - "norm_label": ".read_allvaluespresent_returnsthem()", - "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/JwtConfigurationTests.cs", + "norm_label": ".buildtargetmodel()", + "source_file": "src/Anichron.Core/Migrations/20261012025151_DocumentIdentityNormalization.Designer.cs", "source_location": "L20" }, - { - "id": "src_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_read_audiencemissing_throws", - "label": ".Read_AudienceMissing_Throws()", - "_callable": true, - "_origin": "ast", - "community": 314, - "community_name": ".Read", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Infrastructure", - "scope_chain": [ - "s78" - ] - }, - "norm_label": ".read_audiencemissing_throws()", - "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/JwtConfigurationTests.cs", - "source_location": "L44" - }, - { - "id": "src_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_read_issuermissing_throws", - "label": ".Read_IssuerMissing_Throws()", - "_callable": true, - "_origin": "ast", - "community": 314, - "community_name": ".Read", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Infrastructure", - "scope_chain": [ - "s78" - ] - }, - "norm_label": ".read_issuermissing_throws()", - "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/JwtConfigurationTests.cs", - "source_location": "L36" - }, - { - "id": "src_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_read_secretlengthcountedinutf8bytes_acceptssixteentwobytecharacters", - "label": ".Read_SecretLengthCountedInUtf8Bytes_AcceptsSixteenTwoByteCharacters()", - "_callable": true, - "_origin": "ast", - "community": 314, - "community_name": ".Read", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Infrastructure", - "scope_chain": [ - "s78" - ] - }, - "norm_label": ".read_secretlengthcountedinutf8bytes_acceptssixteentwobytecharacters()", - "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/JwtConfigurationTests.cs", - "source_location": "L60" - }, - { - "id": "src_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_read_secretmissing_throws", - "label": ".Read_SecretMissing_Throws()", - "_callable": true, - "_origin": "ast", - "community": 314, - "community_name": ".Read", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Infrastructure", - "scope_chain": [ - "s78" - ] - }, - "norm_label": ".read_secretmissing_throws()", - "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/JwtConfigurationTests.cs", - "source_location": "L28" - }, - { - "id": "src_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_read_secretonebyteshortofminimum_throws", - "label": ".Read_SecretOneByteShortOfMinimum_Throws()", - "_callable": true, - "_origin": "ast", - "community": 314, - "community_name": ".Read", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Tests.Unit.Infrastructure", - "scope_chain": [ - "s78" - ] - }, - "norm_label": ".read_secretonebyteshortofminimum_throws()", - "source_file": "src/Anichron.API.Tests.Unit/Infrastructure/JwtConfigurationTests.cs", - "source_location": "L52" - }, - { - "id": "src_anichron_api_services_bootstrapseeder_anichron_api_services_bootstrapseeder_seedasync", - "label": ".SeedAsync()", - "_callable": true, - "_origin": "ast", - "community": 317, - "community_name": "BootstrapSeeder", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s201" - ] - }, - "norm_label": ".seedasync()", - "source_file": "src/Anichron.API/Services/BootstrapSeeder.cs", - "source_location": "L24" - }, - { - "id": "src_anichron_api_services_bootstrapseeder_anichron_api_services_ibootstrapseeder_seedasync", - "label": ".SeedAsync()", - "_callable": true, - "_origin": "ast", - "community": 317, - "community_name": "BootstrapSeeder", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Services", - "scope_chain": [ - "s201" - ] - }, - "norm_label": ".seedasync()", - "source_file": "src/Anichron.API/Services/BootstrapSeeder.cs", - "source_location": "L13" - }, { "id": "src_anichron_api_services_bootstrapseeder_anichron_api_services_log_bootstrapadminalreadyexists", "label": ".BootstrapAdminAlreadyExists()", @@ -26908,50 +26662,6 @@ "source_file": "src/Anichron.API.Tests.Unit/Security/JwtFactoryTests.cs", "source_location": "L37" }, - { - "id": "src_anichron_worker_tests_unit_testdoubles_signallingtimeprovider_anichron_worker_tests_unit_testdoubles_signallingtimeprovider_createtimer", - "label": ".CreateTimer()", - "_callable": true, - "_origin": "ast", - "community": 320, - "community_name": "SignallingTimeProvider", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.TestDoubles", - "scope_chain": [ - "s75" - ] - }, - "norm_label": ".createtimer()", - "source_file": "src/Anichron.Worker.Tests.Unit/TestDoubles/SignallingTimeProvider.cs", - "source_location": "L10" - }, - { - "id": "src_anichron_worker_tests_unit_testdoubles_signallingtimeprovider_anichron_worker_tests_unit_testdoubles_signallingtimeprovider_waitfortimerasync", - "label": ".WaitForTimerAsync()", - "_callable": true, - "_origin": "ast", - "community": 320, - "community_name": "SignallingTimeProvider", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.TestDoubles", - "scope_chain": [ - "s75" - ], - "unresolved_calls": [ - { - "callee": "FromSeconds", - "receiver_type": "TimeSpan", - "lang": "csharp", - "line": "L18" - } - ] - }, - "norm_label": ".waitfortimerasync()", - "source_file": "src/Anichron.Worker.Tests.Unit/TestDoubles/SignallingTimeProvider.cs", - "source_location": "L17" - }, { "id": "src_anichron_api_tests_unit_infrastructure_routetabletests_anichron_api_tests_unit_infrastructure_routetabletests_adminroutes_requiretheadminpolicy", "label": ".AdminRoutes_RequireTheAdminPolicy()", @@ -27147,110 +26857,40 @@ "source_location": "L112" }, { - "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_authresponsemapper_getadmincreateuserresult", - "label": ".GetAdminCreateUserResult()", - "_callable": true, - "_origin": "ast", - "community": 324, - "community_name": "AdminCreatedUser", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Endpoints", - "scope_chain": [ - "s195" - ], - "unresolved_calls": [ - { - "callee": "UnprocessableEntity", - "receiver_type": "Results", - "lang": "csharp", - "line": "L121" - }, - { - "callee": "Conflict", - "receiver_type": "Results", - "lang": "csharp", - "line": "L123" - }, - { - "callee": "Created", - "receiver_type": "Results", - "lang": "csharp", - "line": "L131" - } - ] - }, - "norm_label": ".getadmincreateuserresult()", - "source_file": "src/Anichron.API/Endpoints/AuthResponseMapper.cs", - "source_location": "L115" - }, - { - "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_authresponsemapper_getadminresetpasswordresult", - "label": ".GetAdminResetPasswordResult()", - "_callable": true, - "_origin": "ast", - "community": 324, - "community_name": "AdminCreatedUser", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Endpoints", - "scope_chain": [ - "s195" - ], - "unresolved_calls": [ - { - "callee": "NotFound", - "receiver_type": "Results", - "lang": "csharp", - "line": "L137" - }, - { - "callee": "Ok", - "receiver_type": "Results", - "lang": "csharp", - "line": "L138" - } - ] - }, - "norm_label": ".getadminresetpasswordresult()", - "source_file": "src/Anichron.API/Endpoints/AuthResponseMapper.cs", - "source_location": "L135" - }, - { - "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_iauthresponsemapper_getadmincreateuserresult", - "label": ".GetAdminCreateUserResult()", + "id": "src_anichron_api_security_passwordhasher_anichron_api_security_ipasswordhasher_hash", + "label": ".Hash()", "_callable": true, "_origin": "ast", "community": 324, - "community_name": "AdminCreatedUser", + "community_name": "IUnitOfWork", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Endpoints", + "namespace": "Anichron.API.Security", "scope_chain": [ - "s195" + "s124" ] }, - "norm_label": ".getadmincreateuserresult()", - "source_file": "src/Anichron.API/Endpoints/AuthResponseMapper.cs", - "source_location": "L16" + "norm_label": ".hash()", + "source_file": "src/Anichron.API/Security/PasswordHasher.cs", + "source_location": "L10" }, { - "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_iauthresponsemapper_getadminresetpasswordresult", - "label": ".GetAdminResetPasswordResult()", + "id": "src_anichron_api_security_passwordhasher_anichron_api_security_ipasswordhasher_verify", + "label": ".Verify()", "_callable": true, "_origin": "ast", "community": 324, - "community_name": "AdminCreatedUser", + "community_name": "IUnitOfWork", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Endpoints", + "namespace": "Anichron.API.Security", "scope_chain": [ - "s195" + "s124" ] }, - "norm_label": ".getadminresetpasswordresult()", - "source_file": "src/Anichron.API/Endpoints/AuthResponseMapper.cs", - "source_location": "L17" + "norm_label": ".verify()", + "source_file": "src/Anichron.API/Security/PasswordHasher.cs", + "source_location": "L15" }, { "id": "src_anichron_api_services_adminresetservice_anichron_api_services_adminresetservice_resetuserpasswordasync", @@ -27258,7 +26898,7 @@ "_callable": true, "_origin": "ast", "community": 324, - "community_name": "AdminCreatedUser", + "community_name": "IUnitOfWork", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -27296,7 +26936,7 @@ "_callable": true, "_origin": "ast", "community": 324, - "community_name": "AdminCreatedUser", + "community_name": "IUnitOfWork", "file_type": "code", "metadata": { "namespace": "Anichron.API.Services", @@ -27309,162 +26949,400 @@ "source_location": "L12" }, { - "id": "src_anichron_api_tests_unit_endpoints_adminendpointstests_anichron_api_tests_unit_endpoints_adminendpointstests_createuserasync_callsmapperwithserviceresult", - "label": ".CreateUserAsync_CallsMapperWithServiceResult()", + "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_admincreateuserasync", + "label": ".AdminCreateUserAsync()", "_callable": true, "_origin": "ast", "community": 324, - "community_name": "AdminCreatedUser", + "community_name": "IUnitOfWork", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Tests.Unit.Endpoints", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s93" + "s253" ], "unresolved_calls": [ { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L18" - }, - { - "callee": "Created", - "receiver_type": "Results", + "callee": "ThrowIfNull", + "receiver_type": "ArgumentNullException", "lang": "csharp", - "line": "L20" + "line": "L212" }, { - "callee": "For", - "receiver_type": "Substitute", + "callee": "ToBase64String", + "receiver_type": "Convert", "lang": "csharp", - "line": "L21" + "line": "L228" }, { - "callee": "Any", - "receiver_type": "Arg", + "callee": "GetBytes", + "receiver_type": "RandomNumberGenerator", "lang": "csharp", - "line": "L23" + "line": "L228" } ] }, - "norm_label": ".createuserasync_callsmapperwithserviceresult()", - "source_file": "src/Anichron.API.Tests.Unit/Endpoints/AdminEndpointsTests.cs", - "source_location": "L15" + "norm_label": ".admincreateuserasync()", + "source_file": "src/Anichron.API/Services/AuthService.cs", + "source_location": "L210" }, { - "id": "src_anichron_api_tests_unit_endpoints_adminendpointstests_anichron_api_tests_unit_endpoints_adminendpointstests_createuserasync_callsservicewithrequestvalues", - "label": ".CreateUserAsync_CallsServiceWithRequestValues()", + "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_authenticateasync", + "label": ".AuthenticateAsync()", "_callable": true, "_origin": "ast", "community": 324, - "community_name": "AdminCreatedUser", + "community_name": "IUnitOfWork", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Tests.Unit.Endpoints", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s93" + "s253" ], "unresolved_calls": [ { - "callee": "For", - "receiver_type": "Substitute", - "lang": "csharp", - "line": "L36" - }, - { - "callee": "Any", - "receiver_type": "Arg", + "callee": "GetCurrentInstant", + "receiver_type": "IClock", "lang": "csharp", - "line": "L38" + "line": "L146" }, { - "callee": "NewGuid", - "receiver_type": "Guid", + "callee": "Ceiling", + "receiver_type": "Math", "lang": "csharp", - "line": "L39" + "line": "L162" }, { - "callee": "Created", - "receiver_type": "Results", + "callee": "Max", + "receiver_type": "Math", "lang": "csharp", - "line": "L41" + "line": "L163" } ] }, - "norm_label": ".createuserasync_callsservicewithrequestvalues()", - "source_file": "src/Anichron.API.Tests.Unit/Endpoints/AdminEndpointsTests.cs", - "source_location": "L33" + "norm_label": ".authenticateasync()", + "source_file": "src/Anichron.API/Services/AuthService.cs", + "source_location": "L137" }, { - "id": "src_anichron_api_tests_unit_endpoints_adminendpointstests_anichron_api_tests_unit_endpoints_adminendpointstests_resetuserpasswordasync_callsservicewithuseridandpassesresulttomapper", - "label": ".ResetUserPasswordAsync_CallsServiceWithUserIdAndPassesResultToMapper()", + "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_changepasswordasync", + "label": ".ChangePasswordAsync()", "_callable": true, "_origin": "ast", "community": 324, - "community_name": "AdminCreatedUser", + "community_name": "IUnitOfWork", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Tests.Unit.Endpoints", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s93" + "s253" ], "unresolved_calls": [ { - "callee": "NewGuid", - "receiver_type": "Guid", + "callee": "ThrowIfNull", + "receiver_type": "ArgumentNullException", "lang": "csharp", - "line": "L56" + "line": "L187" }, { - "callee": "Ok", - "receiver_type": "Results", + "callee": "GetCurrentInstant", + "receiver_type": "IClock", "lang": "csharp", - "line": "L58" - }, + "line": "L202" + } + ] + }, + "norm_label": ".changepasswordasync()", + "source_file": "src/Anichron.API/Services/AuthService.cs", + "source_location": "L185" + }, + { + "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_detectconstrainterror", + "label": ".DetectConstraintError()", + "_callable": true, + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s253" + ] + }, + "norm_label": ".detectconstrainterror()", + "source_file": "src/Anichron.API/Services/AuthService.cs", + "source_location": "L253" + }, + { + "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_hashinvitetoken", + "label": ".HashInviteToken()", + "_callable": true, + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s253" + ], + "unresolved_calls": [ { - "callee": "For", - "receiver_type": "Substitute", + "callee": "ToBase64String", + "receiver_type": "Convert", "lang": "csharp", - "line": "L59" + "line": "L122" }, { - "callee": "Any", - "receiver_type": "Arg", + "callee": "HashData", + "receiver_type": "SHA256", "lang": "csharp", - "line": "L61" + "line": "L122" } ] }, - "norm_label": ".resetuserpasswordasync_callsservicewithuseridandpassesresulttomapper()", - "source_file": "src/Anichron.API.Tests.Unit/Endpoints/AdminEndpointsTests.cs", - "source_location": "L53" + "norm_label": ".hashinvitetoken()", + "source_file": "src/Anichron.API/Services/AuthService.cs", + "source_location": "L121" }, { - "id": "src_anichron_api_tests_unit_endpoints_authresponsemappertests_anichron_api_tests_unit_endpoints_authresponsemappertests_getadmincreateuserresult_success_returns201withlocationandbody", - "label": ".GetAdminCreateUserResult_Success_Returns201WithLocationAndBody()", + "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_loginasync", + "label": ".LoginAsync()", "_callable": true, "_origin": "ast", "community": 324, - "community_name": "AdminCreatedUser", + "community_name": "IUnitOfWork", "file_type": "code", "metadata": { - "namespace": "Anichron.API.Tests.Unit.Endpoints", + "namespace": "Anichron.API.Services", "scope_chain": [ - "s208" + "s253" ], "unresolved_calls": [ { - "callee": "NewGuid", - "receiver_type": "Guid", + "callee": "ThrowIfNull", + "receiver_type": "ArgumentNullException", "lang": "csharp", - "line": "L458" + "line": "L126" } ] }, - "norm_label": ".getadmincreateuserresult_success_returns201withlocationandbody()", - "source_file": "src/Anichron.API.Tests.Unit/Endpoints/AuthResponseMapperTests.cs", - "source_location": "L455" + "norm_label": ".loginasync()", + "source_file": "src/Anichron.API/Services/AuthService.cs", + "source_location": "L124" + }, + { + "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_refreshasync", + "label": ".RefreshAsync()", + "_callable": true, + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s253" + ] + }, + "norm_label": ".refreshasync()", + "source_file": "src/Anichron.API/Services/AuthService.cs", + "source_location": "L179" + }, + { + "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_registerasync", + "label": ".RegisterAsync()", + "_callable": true, + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s253" + ], + "unresolved_calls": [ + { + "callee": "ThrowIfNull", + "receiver_type": "ArgumentNullException", + "lang": "csharp", + "line": "L68" + }, + { + "callee": "GetCurrentInstant", + "receiver_type": "IClock", + "lang": "csharp", + "line": "L73" + } + ] + }, + "norm_label": ".registerasync()", + "source_file": "src/Anichron.API/Services/AuthService.cs", + "source_location": "L66" + }, + { + "id": "src_anichron_api_services_authservice_anichron_api_services_authservice_revokeasync", + "label": ".RevokeAsync()", + "_callable": true, + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s253" + ] + }, + "norm_label": ".revokeasync()", + "source_file": "src/Anichron.API/Services/AuthService.cs", + "source_location": "L182" + }, + { + "id": "src_anichron_api_services_authservice_anichron_api_services_iauthservice_admincreateuserasync", + "label": ".AdminCreateUserAsync()", + "_callable": true, + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s253" + ] + }, + "norm_label": ".admincreateuserasync()", + "source_file": "src/Anichron.API/Services/AuthService.cs", + "source_location": "L50" + }, + { + "id": "src_anichron_api_services_authservice_anichron_api_services_iauthservice_changepasswordasync", + "label": ".ChangePasswordAsync()", + "_callable": true, + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s253" + ] + }, + "norm_label": ".changepasswordasync()", + "source_file": "src/Anichron.API/Services/AuthService.cs", + "source_location": "L49" + }, + { + "id": "src_anichron_api_services_authservice_anichron_api_services_iauthservice_loginasync", + "label": ".LoginAsync()", + "_callable": true, + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s253" + ] + }, + "norm_label": ".loginasync()", + "source_file": "src/Anichron.API/Services/AuthService.cs", + "source_location": "L46" + }, + { + "id": "src_anichron_api_services_authservice_anichron_api_services_iauthservice_refreshasync", + "label": ".RefreshAsync()", + "_callable": true, + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s253" + ] + }, + "norm_label": ".refreshasync()", + "source_file": "src/Anichron.API/Services/AuthService.cs", + "source_location": "L47" + }, + { + "id": "src_anichron_api_services_authservice_anichron_api_services_iauthservice_registerasync", + "label": ".RegisterAsync()", + "_callable": true, + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s253" + ] + }, + "norm_label": ".registerasync()", + "source_file": "src/Anichron.API/Services/AuthService.cs", + "source_location": "L45" + }, + { + "id": "src_anichron_api_services_authservice_anichron_api_services_iauthservice_revokeasync", + "label": ".RevokeAsync()", + "_callable": true, + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s253" + ] + }, + "norm_label": ".revokeasync()", + "source_file": "src/Anichron.API/Services/AuthService.cs", + "source_location": "L48" + }, + { + "id": "src_anichron_api_services_bootstrapseeder_anichron_api_services_bootstrapseeder_seedasync", + "label": ".SeedAsync()", + "_callable": true, + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s201" + ] + }, + "norm_label": ".seedasync()", + "source_file": "src/Anichron.API/Services/BootstrapSeeder.cs", + "source_location": "L24" + }, + { + "id": "src_anichron_api_services_bootstrapseeder_anichron_api_services_ibootstrapseeder_seedasync", + "label": ".SeedAsync()", + "_callable": true, + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Services", + "scope_chain": [ + "s201" + ] + }, + "norm_label": ".seedasync()", + "source_file": "src/Anichron.API/Services/BootstrapSeeder.cs", + "source_location": "L13" }, { "id": "src_anichron_api_tests_unit_services_adminresetservicetests_anichron_api_tests_unit_services_testfixture_createtestee", @@ -27472,7 +27350,7 @@ "_callable": true, "_origin": "ast", "community": 324, - "community_name": "AdminCreatedUser", + "community_name": "IUnitOfWork", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -27484,6 +27362,122 @@ "source_file": "src/Anichron.API.Tests.Unit/Services/AdminResetServiceTests.cs", "source_location": "L28" }, + { + "id": "src_anichron_core_data_iunitofwork_anichron_core_data_iunitofwork_executeintransactionasync", + "label": ".ExecuteInTransactionAsync()", + "_callable": true, + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data", + "scope_chain": [ + "s0" + ] + }, + "norm_label": ".executeintransactionasync()", + "source_file": "src/Anichron.Core/Data/IUnitOfWork.cs", + "source_location": "L6" + }, + { + "id": "src_anichron_core_data_iunitofwork_anichron_core_data_iunitofwork_savechangesasync", + "label": ".SaveChangesAsync()", + "_callable": true, + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data", + "scope_chain": [ + "s0" + ] + }, + "norm_label": ".savechangesasync()", + "source_file": "src/Anichron.Core/Data/IUnitOfWork.cs", + "source_location": "L5" + }, + { + "id": "src_anichron_core_data_repository_userrepository_anichron_core_data_repository_iuserrepository_add", + "label": ".Add()", + "_callable": true, + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".add()", + "source_file": "src/Anichron.Core/Data/Repository/UserRepository.cs", + "source_location": "L17" + }, + { + "id": "src_anichron_core_guidfactory_anichron_core_iguidfactory_newguid", + "label": ".NewGuid()", + "_callable": true, + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core", + "scope_chain": [ + "s0" + ] + }, + "norm_label": ".newguid()", + "source_file": "src/Anichron.Core/GuidFactory.cs", + "source_location": "L5" + }, + { + "id": "src_anichron_core_guidfactory_anichron_core_timeorderedguidfactory_newguid", + "label": ".NewGuid()", + "_callable": true, + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core", + "scope_chain": [ + "s0" + ], + "unresolved_calls": [ + { + "callee": "CreateVersion7", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L10" + } + ] + }, + "norm_label": ".newguid()", + "source_file": "src/Anichron.Core/GuidFactory.cs", + "source_location": "L10" + }, + { + "id": "src_anichron_core_identitynormalizer_anichron_core_identitynormalizer_normalize", + "label": ".Normalize()", + "_callable": true, + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core", + "scope_chain": [ + "s0" + ] + }, + "norm_label": ".normalize()", + "source_file": "src/Anichron.Core/IdentityNormalizer.cs", + "source_location": "L5" + }, { "id": "src_anichron_api_infrastructure_databasestartupextensions_anichron_api_infrastructure_log_databasenotready", "label": ".DatabaseNotReady()", @@ -27748,60 +27742,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/ExifExtractionMiddlewareTests.cs", "source_location": "L44" }, - { - "id": "src_anichron_core_tests_unit_data_repository_userrepositorytests_anichron_core_tests_unit_data_repository_userrepositorytests_createnpgsqlmodelonlydb", - "label": ".CreateNpgsqlModelOnlyDb()", - "_callable": true, - "_origin": "ast", - "community": 331, - "community_name": ".CreateNpgsqlModelOnlyDb", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s129" - ] - }, - "norm_label": ".createnpgsqlmodelonlydb()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserRepositoryTests.cs", - "source_location": "L396" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_userrepositorytests_anichron_core_tests_unit_data_repository_userrepositorytests_emailcomparison_unnormalizedinput_sendsnormalizedvalue", - "label": ".EmailComparison_UnnormalizedInput_SendsNormalizedValue()", - "_callable": true, - "_origin": "ast", - "community": 331, - "community_name": ".CreateNpgsqlModelOnlyDb", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s129" - ] - }, - "norm_label": ".emailcomparison_unnormalizedinput_sendsnormalizedvalue()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserRepositoryTests.cs", - "source_location": "L412" - }, - { - "id": "src_anichron_core_tests_unit_data_repository_userrepositorytests_anichron_core_tests_unit_data_repository_userrepositorytests_usernamecomparison_unnormalizedinput_sendsnormalizedvalue", - "label": ".UsernameComparison_UnnormalizedInput_SendsNormalizedValue()", - "_callable": true, - "_origin": "ast", - "community": 331, - "community_name": ".CreateNpgsqlModelOnlyDb", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data.Repository", - "scope_chain": [ - "s129" - ] - }, - "norm_label": ".usernamecomparison_unnormalizedinput_sendsnormalizedvalue()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserRepositoryTests.cs", - "source_location": "L401" - }, { "id": "src_anichron_worker_tests_unit_ingestion_proxy_imagesharpprocessortests_anichron_worker_tests_unit_ingestion_proxy_imagesharpprocessortests_computeblurhashasync_encodesfourbythreecomponentsasync", "label": ".ComputeBlurhashAsync_EncodesFourByThreeComponentsAsync()", @@ -28494,6 +28434,42 @@ "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", "source_location": "L110" }, + { + "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_ivideoproxygenerator_transcodeasync", + "label": ".TranscodeAsync()", + "_callable": true, + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessorTests", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion.Proxy", + "scope_chain": [ + "s29" + ] + }, + "norm_label": ".transcodeasync()", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", + "source_location": "L9" + }, + { + "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_video720pgenerator_transcodeasync", + "label": ".TranscodeAsync()", + "_callable": true, + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessorTests", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion.Proxy", + "scope_chain": [ + "s29" + ] + }, + "norm_label": ".transcodeasync()", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", + "source_location": "L17" + }, { "id": "src_anichron_worker_tests_unit_ingestion_proxy_ffmpegvideoprocessortests_anichron_worker_tests_unit_ingestion_proxy_ffmpegvideoprocessortests_capturecalls", "label": ".CaptureCalls()", @@ -28978,6 +28954,84 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/FfmpegVideoProcessorTests.cs", "source_location": "L14" }, + { + "id": "src_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_video720pgenerator_filename_isvideo720pmp4", + "label": ".Video720PGenerator_FileName_IsVideo720pMp4()", + "_callable": true, + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessorTests", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", + "scope_chain": [ + "s68" + ], + "unresolved_calls": [ + { + "callee": "For", + "receiver_type": "Substitute", + "lang": "csharp", + "line": "L15" + } + ] + }, + "norm_label": ".video720pgenerator_filename_isvideo720pmp4()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/VideoProxyGeneratorsTests.cs", + "source_location": "L12" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_video720pgenerator_proxytype_iswebvideo", + "label": ".Video720PGenerator_ProxyType_IsWebVideo()", + "_callable": true, + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessorTests", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", + "scope_chain": [ + "s68" + ], + "unresolved_calls": [ + { + "callee": "For", + "receiver_type": "Substitute", + "lang": "csharp", + "line": "L23" + } + ] + }, + "norm_label": ".video720pgenerator_proxytype_iswebvideo()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/VideoProxyGeneratorsTests.cs", + "source_location": "L20" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_video720pgenerator_transcodeasync_delegatestovideoprocessorasync", + "label": ".Video720PGenerator_TranscodeAsync_DelegatesToVideoProcessorAsync()", + "_callable": true, + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessorTests", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", + "scope_chain": [ + "s68" + ], + "unresolved_calls": [ + { + "callee": "For", + "receiver_type": "Substitute", + "lang": "csharp", + "line": "L31" + } + ] + }, + "norm_label": ".video720pgenerator_transcodeasync_delegatestovideoprocessorasync()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/VideoProxyGeneratorsTests.cs", + "source_location": "L28" + }, { "id": "src_anichron_api_endpoints_adminendpoints_anichron_api_endpoints_adminendpoints_createstorageconfigasync", "label": ".CreateStorageConfigAsync()", @@ -29207,8 +29261,8 @@ "source_location": "L41" }, { - "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_iauthresponsemapper_getadmingetuserresult", - "label": ".GetAdminGetUserResult()", + "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_authresponsemapper_getadminresetpasswordresult", + "label": ".GetAdminResetPasswordResult()", "_callable": true, "_origin": "ast", "community": 35, @@ -29218,15 +29272,47 @@ "namespace": "Anichron.API.Endpoints", "scope_chain": [ "s195" + ], + "unresolved_calls": [ + { + "callee": "NotFound", + "receiver_type": "Results", + "lang": "csharp", + "line": "L137" + }, + { + "callee": "Ok", + "receiver_type": "Results", + "lang": "csharp", + "line": "L138" + } ] }, - "norm_label": ".getadmingetuserresult()", + "norm_label": ".getadminresetpasswordresult()", "source_file": "src/Anichron.API/Endpoints/AuthResponseMapper.cs", - "source_location": "L19" + "source_location": "L135" }, { - "id": "src_anichron_api_tests_unit_endpoints_adminstorageconfigendpointstests_anichron_api_tests_unit_endpoints_adminstorageconfigendpointstests_createstorageconfigasync_callsservicewithuseridandrootpathandreturnsmapperresult", - "label": ".CreateStorageConfigAsync_CallsServiceWithUserIdAndRootPathAndReturnsMapperResult()", + "id": "src_anichron_api_endpoints_authresponsemapper_anichron_api_endpoints_iauthresponsemapper_getadminresetpasswordresult", + "label": ".GetAdminResetPasswordResult()", + "_callable": true, + "_origin": "ast", + "community": 35, + "community_name": "IAuthResponseMapper", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Endpoints", + "scope_chain": [ + "s195" + ] + }, + "norm_label": ".getadminresetpasswordresult()", + "source_file": "src/Anichron.API/Endpoints/AuthResponseMapper.cs", + "source_location": "L17" + }, + { + "id": "src_anichron_api_tests_unit_endpoints_adminendpointstests_anichron_api_tests_unit_endpoints_adminendpointstests_createuserasync_callsmapperwithserviceresult", + "label": ".CreateUserAsync_CallsMapperWithServiceResult()", "_callable": true, "_origin": "ast", "community": 35, @@ -29235,42 +29321,42 @@ "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", "scope_chain": [ - "s121" + "s93" ], "unresolved_calls": [ - { - "callee": "For", - "receiver_type": "Substitute", - "lang": "csharp", - "line": "L39" - }, { "callee": "NewGuid", "receiver_type": "Guid", "lang": "csharp", - "line": "L41" + "line": "L18" }, { "callee": "Created", "receiver_type": "Results", "lang": "csharp", - "line": "L45" + "line": "L20" + }, + { + "callee": "For", + "receiver_type": "Substitute", + "lang": "csharp", + "line": "L21" }, { "callee": "Any", "receiver_type": "Arg", "lang": "csharp", - "line": "L46" + "line": "L23" } ] }, - "norm_label": ".createstorageconfigasync_callsservicewithuseridandrootpathandreturnsmapperresult()", - "source_file": "src/Anichron.API.Tests.Unit/Endpoints/AdminStorageConfigEndpointsTests.cs", - "source_location": "L36" + "norm_label": ".createuserasync_callsmapperwithserviceresult()", + "source_file": "src/Anichron.API.Tests.Unit/Endpoints/AdminEndpointsTests.cs", + "source_location": "L15" }, { - "id": "src_anichron_api_tests_unit_endpoints_adminstorageconfigendpointstests_anichron_api_tests_unit_endpoints_adminstorageconfigendpointstests_deletestorageconfigasync_callsservicewithuseridandconfigidandreturnsmapperresult", - "label": ".DeleteStorageConfigAsync_CallsServiceWithUserIdAndConfigIdAndReturnsMapperResult()", + "id": "src_anichron_api_tests_unit_endpoints_adminendpointstests_anichron_api_tests_unit_endpoints_adminendpointstests_createuserasync_callsservicewithrequestvalues", + "label": ".CreateUserAsync_CallsServiceWithRequestValues()", "_callable": true, "_origin": "ast", "community": 35, @@ -29279,42 +29365,42 @@ "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", "scope_chain": [ - "s121" + "s93" ], "unresolved_calls": [ { "callee": "For", "receiver_type": "Substitute", "lang": "csharp", - "line": "L63" + "line": "L36" }, { - "callee": "NewGuid", - "receiver_type": "Guid", + "callee": "Any", + "receiver_type": "Arg", "lang": "csharp", - "line": "L65" + "line": "L38" }, { - "callee": "NoContent", - "receiver_type": "Results", + "callee": "NewGuid", + "receiver_type": "Guid", "lang": "csharp", - "line": "L68" + "line": "L39" }, { - "callee": "Any", - "receiver_type": "Arg", + "callee": "Created", + "receiver_type": "Results", "lang": "csharp", - "line": "L69" + "line": "L41" } ] }, - "norm_label": ".deletestorageconfigasync_callsservicewithuseridandconfigidandreturnsmapperresult()", - "source_file": "src/Anichron.API.Tests.Unit/Endpoints/AdminStorageConfigEndpointsTests.cs", - "source_location": "L60" + "norm_label": ".createuserasync_callsservicewithrequestvalues()", + "source_file": "src/Anichron.API.Tests.Unit/Endpoints/AdminEndpointsTests.cs", + "source_location": "L33" }, { - "id": "src_anichron_api_tests_unit_endpoints_adminstorageconfigendpointstests_anichron_api_tests_unit_endpoints_adminstorageconfigendpointstests_getstorageconfigsasync_callsserviceandreturnsmapperresult", - "label": ".GetStorageConfigsAsync_CallsServiceAndReturnsMapperResult()", + "id": "src_anichron_api_tests_unit_endpoints_adminendpointstests_anichron_api_tests_unit_endpoints_adminendpointstests_resetuserpasswordasync_callsservicewithuseridandpassesresulttomapper", + "label": ".ResetUserPasswordAsync_CallsServiceWithUserIdAndPassesResultToMapper()", "_callable": true, "_origin": "ast", "community": 35, @@ -29323,38 +29409,38 @@ "metadata": { "namespace": "Anichron.API.Tests.Unit.Endpoints", "scope_chain": [ - "s121" + "s93" ], "unresolved_calls": [ - { - "callee": "For", - "receiver_type": "Substitute", - "lang": "csharp", - "line": "L17" - }, { "callee": "NewGuid", "receiver_type": "Guid", "lang": "csharp", - "line": "L19" + "line": "L56" }, { "callee": "Ok", "receiver_type": "Results", "lang": "csharp", - "line": "L21" + "line": "L58" + }, + { + "callee": "For", + "receiver_type": "Substitute", + "lang": "csharp", + "line": "L59" }, { "callee": "Any", "receiver_type": "Arg", "lang": "csharp", - "line": "L22" + "line": "L61" } ] }, - "norm_label": ".getstorageconfigsasync_callsserviceandreturnsmapperresult()", - "source_file": "src/Anichron.API.Tests.Unit/Endpoints/AdminStorageConfigEndpointsTests.cs", - "source_location": "L14" + "norm_label": ".resetuserpasswordasync_callsservicewithuseridandpassesresulttomapper()", + "source_file": "src/Anichron.API.Tests.Unit/Endpoints/AdminEndpointsTests.cs", + "source_location": "L53" }, { "id": "src_anichron_api_tests_unit_endpoints_adminuserendpointstests_anichron_api_tests_unit_endpoints_adminuserendpointstests_deleteuserasync_nonameidentifierclaim_returnsunauthorized", @@ -30120,62 +30206,6 @@ "source_file": "src/Anichron.Worker/Ingestion/Proxy/ImageProxyGenerators.cs", "source_location": "L30" }, - { - "id": "src_anichron_worker_ingestion_livephotolinker_anichron_worker_ingestion_ilivephotolinker_link", - "label": ".Link()", - "_callable": true, - "_origin": "ast", - "community": 368, - "community_name": "LivePhotoLinker.cs", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion", - "scope_chain": [ - "s59" - ] - }, - "norm_label": ".link()", - "source_file": "src/Anichron.Worker/Ingestion/LivePhotoLinker.cs", - "source_location": "L12" - }, - { - "id": "src_anichron_worker_ingestion_livephotolinker_anichron_worker_ingestion_livephotolinker_link", - "label": ".Link()", - "_callable": true, - "_origin": "ast", - "community": 368, - "community_name": "LivePhotoLinker.cs", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion", - "scope_chain": [ - "s59" - ], - "unresolved_calls": [ - { - "callee": "Add", - "receiver_type": "List", - "lang": "csharp", - "line": "L26" - }, - { - "callee": "Add", - "receiver_type": "HashSet", - "lang": "csharp", - "line": "L36" - }, - { - "callee": "TryGetValue", - "receiver_type": "Dictionary", - "lang": "csharp", - "line": "L40" - } - ] - }, - "norm_label": ".link()", - "source_file": "src/Anichron.Worker/Ingestion/LivePhotoLinker.cs", - "source_location": "L17" - }, { "id": "src_anichron_worker_ingestion_middlewares_loggingmiddleware_anichron_worker_ingestion_middlewares_loggingmiddleware_caninvoke", "label": ".CanInvoke()", @@ -30327,8 +30357,8 @@ "source_location": "L29" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinebuildertests_anichron_worker_tests_unit_ingestion_pipeline_conditionalmiddleware_caninvoke", - "label": ".CanInvoke()", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests_asset_canbesetandread", + "label": ".Asset_CanBeSetAndRead()", "_callable": true, "_origin": "ast", "community": 37, @@ -30337,16 +30367,24 @@ "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", "scope_chain": [ - "s140" + "s104" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L27" + } ] }, - "norm_label": ".caninvoke()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineBuilderTests.cs", - "source_location": "L61" + "norm_label": ".asset_canbesetandread()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionContextTests.cs", + "source_location": "L21" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_cancellingmiddleware_caninvoke", - "label": ".CanInvoke()", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests_proxyfiles_defaultstoemptylist", + "label": ".ProxyFiles_DefaultsToEmptyList()", "_callable": true, "_origin": "ast", "community": 37, @@ -30355,12 +30393,20 @@ "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", "scope_chain": [ - "s368" + "s104" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L15" + } ] }, - "norm_label": ".caninvoke()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", - "source_location": "L395" + "norm_label": ".proxyfiles_defaultstoemptylist()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionContextTests.cs", + "source_location": "L9" }, { "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_cancellingmiddleware_invokeasync", @@ -31184,42 +31230,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/LivePhotoLinkerTests.cs", "source_location": "L9" }, - { - "id": "src_anichron_worker_crawling_fileingestionpipeline_anichron_worker_crawling_log_itemfailed", - "label": ".ItemFailed()", - "_callable": true, - "_origin": "ast", - "community": 390, - "community_name": ".ItemFailed", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Crawling", - "scope_chain": [ - "s256" - ] - }, - "norm_label": ".itemfailed()", - "source_file": "src/Anichron.Worker/Crawling/FileIngestionPipeline.cs", - "source_location": "L132" - }, - { - "id": "src_anichron_worker_crawling_fileingestionpipeline_anichron_worker_crawling_log_unsupportedfile", - "label": ".UnsupportedFile()", - "_callable": true, - "_origin": "ast", - "community": 390, - "community_name": ".ItemFailed", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Crawling", - "scope_chain": [ - "s256" - ] - }, - "norm_label": ".unsupportedfile()", - "source_file": "src/Anichron.Worker/Crawling/FileIngestionPipeline.cs", - "source_location": "L129" - }, { "id": "src_anichron_api_infrastructure_authmessages_anichron_api_infrastructure_authmessages_accounttemporarilylocked", "label": ".AccountTemporarilyLocked()", @@ -31331,11 +31341,11 @@ "source_location": "L20" }, { - "id": "src_anichron_core_migrations_20261010235916_uniqueactivecontenthashperconfig_designer_anichron_core_migrations_uniqueactivecontenthashperconfig_buildtargetmodel", + "id": "src_anichron_core_migrations_20261012023903_storerawexiforientation_designer_anichron_core_migrations_storerawexiforientation_buildtargetmodel", "label": ".BuildTargetModel()", "_callable": true, "_origin": "ast", - "community": 398, + "community": 400, "community_name": ".BuildTargetModel", "file_type": "code", "metadata": { @@ -31365,46 +31375,44 @@ ] }, "norm_label": ".buildtargetmodel()", - "source_file": "src/Anichron.Core/Migrations/20261010235916_UniqueActiveContentHashPerConfig.Designer.cs", + "source_file": "src/Anichron.Core/Migrations/20261012023903_StoreRawExifOrientation.Designer.cs", "source_location": "L20" }, { - "id": "src_anichron_core_migrations_20261012023903_storerawexiforientation_designer_anichron_core_migrations_storerawexiforientation_buildtargetmodel", - "label": ".BuildTargetModel()", + "id": "src_anichron_worker_startup_idatabasemigrator_anichron_worker_startup_efdatabasemigrator_migrateasync", + "label": ".MigrateAsync()", "_callable": true, "_origin": "ast", - "community": 400, - "community_name": ".BuildTargetModel", + "community": 404, + "community_name": "Anichron.Infrastructure.Data", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Migrations", + "namespace": "Anichron.Worker.Startup", "scope_chain": [ - "s353" - ], - "unresolved_calls": [ - { - "callee": "HasAnnotation", - "receiver_type": "ModelBuilder", - "lang": "csharp", - "line": "L23" - }, - { - "callee": "UseIdentityByDefaultColumns", - "receiver_type": "NpgsqlModelBuilderExtensions", - "lang": "csharp", - "line": "L27" - }, - { - "callee": "Entity", - "receiver_type": "ModelBuilder", - "lang": "csharp", - "line": "L29" - } + "s63" ] }, - "norm_label": ".buildtargetmodel()", - "source_file": "src/Anichron.Core/Migrations/20261012023903_StoreRawExifOrientation.Designer.cs", - "source_location": "L20" + "norm_label": ".migrateasync()", + "source_file": "src/Anichron.Worker/Startup/IDatabaseMigrator.cs", + "source_location": "L13" + }, + { + "id": "src_anichron_worker_startup_idatabasemigrator_anichron_worker_startup_idatabasemigrator_migrateasync", + "label": ".MigrateAsync()", + "_callable": true, + "_origin": "ast", + "community": 404, + "community_name": "Anichron.Infrastructure.Data", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Startup", + "scope_chain": [ + "s63" + ] + }, + "norm_label": ".migrateasync()", + "source_file": "src/Anichron.Worker/Startup/IDatabaseMigrator.cs", + "source_location": "L8" }, { "id": "src_anichron_infrastructure_configuration_databaseconfiguration_anichron_infrastructure_configuration_databaseconfiguration_getconnectionstring", @@ -31698,6 +31706,68 @@ "source_file": "src/Anichron.Infrastructure.Tests.Unit/Infrastructure/DatabaseConfigurationTests.cs", "source_location": "L114" }, + { + "id": "src_anichron_core_tests_unit_data_softdeletequeryfiltertests_anichron_core_tests_unit_data_softdeletequeryfiltertests_disposeasync", + "label": ".DisposeAsync()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ProxyFile", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data", + "scope_chain": [ + "s92" + ] + }, + "norm_label": ".disposeasync()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/SoftDeleteQueryFilterTests.cs", + "source_location": "L44" + }, + { + "id": "src_anichron_core_tests_unit_data_softdeletequeryfiltertests_anichron_core_tests_unit_data_softdeletequeryfiltertests_initializeasync", + "label": ".InitializeAsync()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ProxyFile", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data", + "scope_chain": [ + "s92" + ] + }, + "norm_label": ".initializeasync()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/SoftDeleteQueryFilterTests.cs", + "source_location": "L21" + }, + { + "id": "src_anichron_core_tests_unit_data_softdeletequeryfiltertests_anichron_core_tests_unit_data_softdeletequeryfiltertests_seed", + "label": ".Seed()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ProxyFile", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data", + "scope_chain": [ + "s92" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L30" + } + ] + }, + "norm_label": ".seed()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/SoftDeleteQueryFilterTests.cs", + "source_location": "L28" + }, { "id": "src_anichron_api_tests_unit_infrastructure_apiinidefaultstests_anichron_api_tests_unit_infrastructure_apiinidefaultstests_entries_exceptgeneratedsecret_havethedocumenteddefaults", "label": ".Entries_ExceptGeneratedSecret_HaveTheDocumentedDefaults()", @@ -32040,6 +32110,24 @@ "source_file": "src/Anichron.Infrastructure.Tests.Unit/Data/AdvisoryLockMigratorTests.cs", "source_location": "L65" }, + { + "id": "src_anichron_core_data_repository_userrepository_anichron_core_data_repository_efuserrepository_add", + "label": ".Add()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "EfUserRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".add()", + "source_file": "src/Anichron.Core/Data/Repository/UserRepository.cs", + "source_location": "L51" + }, { "id": "src_anichron_core_tests_unit_data_repository_userrepositorytests_anichron_core_tests_unit_data_repository_userrepositorytests_add_addsusertocontext", "label": ".Add_AddsUserToContext()", @@ -32210,6 +32298,42 @@ "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserRepositoryTests.cs", "source_location": "L10" }, + { + "id": "src_anichron_core_tests_unit_data_repository_userrepositorytests_anichron_core_tests_unit_data_repository_userrepositorytests_createnpgsqlmodelonlydb", + "label": ".CreateNpgsqlModelOnlyDb()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "EfUserRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s129" + ] + }, + "norm_label": ".createnpgsqlmodelonlydb()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserRepositoryTests.cs", + "source_location": "L396" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_userrepositorytests_anichron_core_tests_unit_data_repository_userrepositorytests_emailcomparison_unnormalizedinput_sendsnormalizedvalue", + "label": ".EmailComparison_UnnormalizedInput_SendsNormalizedValue()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "EfUserRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s129" + ] + }, + "norm_label": ".emailcomparison_unnormalizedinput_sendsnormalizedvalue()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserRepositoryTests.cs", + "source_location": "L412" + }, { "id": "src_anichron_core_tests_unit_data_repository_userrepositorytests_anichron_core_tests_unit_data_repository_userrepositorytests_findadminbyusernameasync_adminexists_returnsuser", "label": ".FindAdminByUsernameAsync_AdminExists_ReturnsUser()", @@ -32574,6 +32698,24 @@ "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserRepositoryTests.cs", "source_location": "L360" }, + { + "id": "src_anichron_core_tests_unit_data_repository_userrepositorytests_anichron_core_tests_unit_data_repository_userrepositorytests_usernamecomparison_unnormalizedinput_sendsnormalizedvalue", + "label": ".UsernameComparison_UnnormalizedInput_SendsNormalizedValue()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "EfUserRepository", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s129" + ] + }, + "norm_label": ".usernamecomparison_unnormalizedinput_sendsnormalizedvalue()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/UserRepositoryTests.cs", + "source_location": "L401" + }, { "id": "src_anichron_core_tests_unit_data_softdeletequeryfiltertests_anichron_core_tests_unit_data_softdeletequeryfiltertests_asset", "label": ".Asset()", @@ -32618,24 +32760,6 @@ "source_file": "src/Anichron.Core.Tests.Unit/Data/SoftDeleteQueryFilterTests.cs", "source_location": "L66" }, - { - "id": "src_anichron_core_tests_unit_data_softdeletequeryfiltertests_anichron_core_tests_unit_data_softdeletequeryfiltertests_disposeasync", - "label": ".DisposeAsync()", - "_callable": true, - "_origin": "ast", - "community": 50, - "community_name": "SoftDeleteQueryFilterTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data", - "scope_chain": [ - "s92" - ] - }, - "norm_label": ".disposeasync()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/SoftDeleteQueryFilterTests.cs", - "source_location": "L44" - }, { "id": "src_anichron_core_tests_unit_data_softdeletequeryfiltertests_anichron_core_tests_unit_data_softdeletequeryfiltertests_ignorequeryfilters_stillseessoftdeletedassetsasync", "label": ".IgnoreQueryFilters_StillSeesSoftDeletedAssetsAsync()", @@ -32654,24 +32778,6 @@ "source_file": "src/Anichron.Core.Tests.Unit/Data/SoftDeleteQueryFilterTests.cs", "source_location": "L71" }, - { - "id": "src_anichron_core_tests_unit_data_softdeletequeryfiltertests_anichron_core_tests_unit_data_softdeletequeryfiltertests_initializeasync", - "label": ".InitializeAsync()", - "_callable": true, - "_origin": "ast", - "community": 50, - "community_name": "SoftDeleteQueryFilterTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data", - "scope_chain": [ - "s92" - ] - }, - "norm_label": ".initializeasync()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/SoftDeleteQueryFilterTests.cs", - "source_location": "L21" - }, { "id": "src_anichron_core_tests_unit_data_softdeletequeryfiltertests_anichron_core_tests_unit_data_softdeletequeryfiltertests_interactions_onsoftdeletedassetarehiddenasync", "label": ".Interactions_OnSoftDeletedAssetAreHiddenAsync()", @@ -32744,166 +32850,6 @@ "source_file": "src/Anichron.Core.Tests.Unit/Data/SoftDeleteQueryFilterTests.cs", "source_location": "L56" }, - { - "id": "src_anichron_core_tests_unit_data_softdeletequeryfiltertests_anichron_core_tests_unit_data_softdeletequeryfiltertests_seed", - "label": ".Seed()", - "_callable": true, - "_origin": "ast", - "community": 50, - "community_name": "SoftDeleteQueryFilterTests", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Tests.Unit.Data", - "scope_chain": [ - "s92" - ], - "unresolved_calls": [ - { - "callee": "NewGuid", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L30" - } - ] - }, - "norm_label": ".seed()", - "source_file": "src/Anichron.Core.Tests.Unit/Data/SoftDeleteQueryFilterTests.cs", - "source_location": "L28" - }, - { - "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_anichron_worker_ingestion_middlewares_log_proxiesgenerated", - "label": ".ProxiesGenerated()", - "_callable": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Middlewares", - "scope_chain": [ - "s110" - ] - }, - "norm_label": ".proxiesgenerated()", - "source_file": "src/Anichron.Worker/Ingestion/Middlewares/VideoProxyMiddleware.cs", - "source_location": "L41" - }, - { - "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_anichron_worker_ingestion_middlewares_videoproxymiddleware_caninvoke", - "label": ".CanInvoke()", - "_callable": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Middlewares", - "scope_chain": [ - "s110" - ] - }, - "norm_label": ".caninvoke()", - "source_file": "src/Anichron.Worker/Ingestion/Middlewares/VideoProxyMiddleware.cs", - "source_location": "L14" - }, - { - "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_anichron_worker_ingestion_middlewares_videoproxymiddleware_invokeasync", - "label": ".InvokeAsync()", - "_callable": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Middlewares", - "scope_chain": [ - "s110" - ], - "unresolved_calls": [ - { - "callee": "ToArray", - "receiver_type": "IEnumerable", - "lang": "csharp", - "line": "L23" - } - ] - }, - "norm_label": ".invokeasync()", - "source_file": "src/Anichron.Worker/Ingestion/Middlewares/VideoProxyMiddleware.cs", - "source_location": "L17" - }, - { - "id": "src_anichron_worker_ingestion_proxy_proxyshardstrategy_anichron_worker_ingestion_proxy_iproxydirectorystrategy_getdirectory", - "label": ".GetDirectory()", - "_callable": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s0" - ] - }, - "norm_label": ".getdirectory()", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyShardStrategy.cs", - "source_location": "L5" - }, - { - "id": "src_anichron_worker_ingestion_proxy_proxyshardstrategy_anichron_worker_ingestion_proxy_twolevelhexshardstrategy_getdirectory", - "label": ".GetDirectory()", - "_callable": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s0" - ] - }, - "norm_label": ".getdirectory()", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyShardStrategy.cs", - "source_location": "L16" - }, - { - "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_ivideoproxygenerator_transcodeasync", - "label": ".TranscodeAsync()", - "_callable": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s29" - ] - }, - "norm_label": ".transcodeasync()", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", - "source_location": "L9" - }, - { - "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_video720pgenerator_transcodeasync", - "label": ".TranscodeAsync()", - "_callable": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s29" - ] - }, - "norm_label": ".transcodeasync()", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", - "source_location": "L17" - }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_videoproxymiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_testfixture_build", "label": ".Build()", @@ -32922,38 +32868,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/VideoProxyMiddlewareTests.cs", "source_location": "L50" }, - { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_videoproxymiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_testfixture_buildwith", - "label": ".BuildWith()", - "_callable": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", - "scope_chain": [ - "s374" - ], - "unresolved_calls": [ - { - "callee": "Create", - "receiver_type": "Options", - "lang": "csharp", - "line": "L57" - }, - { - "callee": "For", - "receiver_type": "Substitute", - "lang": "csharp", - "line": "L60" - } - ] - }, - "norm_label": ".buildwith()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/VideoProxyMiddlewareTests.cs", - "source_location": "L52" - }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_videoproxymiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_videoproxymiddlewaretests_cancellinggenerator", "label": ".CancellingGenerator()", @@ -33442,188 +33356,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/VideoProxyMiddlewareTests.cs", "source_location": "L74" }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_getdirectory_differentconfigssamehash_producedifferentdirectories", - "label": ".GetDirectory_DifferentConfigsSameHash_ProduceDifferentDirectories()", - "_callable": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", - "scope_chain": [ - "s40" - ], - "unresolved_calls": [ - { - "callee": "Parse", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L49" - } - ] - }, - "norm_label": ".getdirectory_differentconfigssamehash_producedifferentdirectories()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ProxyShardStrategyTests.cs", - "source_location": "L44" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_getdirectory_differenthashsameconfig_bucketfollowsthecontenthash", - "label": ".GetDirectory_DifferentHashSameConfig_BucketFollowsTheContentHash()", - "_callable": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", - "scope_chain": [ - "s40" - ], - "unresolved_calls": [ - { - "callee": "Parse", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L24" - } - ] - }, - "norm_label": ".getdirectory_differenthashsameconfig_bucketfollowsthecontenthash()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ProxyShardStrategyTests.cs", - "source_location": "L21" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_getdirectory_knownconfigandhash_producesliteraltwolevelpath", - "label": ".GetDirectory_KnownConfigAndHash_ProducesLiteralTwoLevelPath()", - "_callable": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", - "scope_chain": [ - "s40" - ], - "unresolved_calls": [ - { - "callee": "Parse", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L14" - } - ] - }, - "norm_label": ".getdirectory_knownconfigandhash_producesliteraltwolevelpath()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ProxyShardStrategyTests.cs", - "source_location": "L11" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_getdirectory_sameconfigandhash_isstableacrosscalls", - "label": ".GetDirectory_SameConfigAndHash_IsStableAcrossCalls()", - "_callable": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", - "scope_chain": [ - "s40" - ], - "unresolved_calls": [ - { - "callee": "Parse", - "receiver_type": "Guid", - "lang": "csharp", - "line": "L35" - } - ] - }, - "norm_label": ".getdirectory_sameconfigandhash_isstableacrosscalls()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ProxyShardStrategyTests.cs", - "source_location": "L31" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_video720pgenerator_filename_isvideo720pmp4", - "label": ".Video720PGenerator_FileName_IsVideo720pMp4()", - "_callable": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", - "scope_chain": [ - "s68" - ], - "unresolved_calls": [ - { - "callee": "For", - "receiver_type": "Substitute", - "lang": "csharp", - "line": "L15" - } - ] - }, - "norm_label": ".video720pgenerator_filename_isvideo720pmp4()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/VideoProxyGeneratorsTests.cs", - "source_location": "L12" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_video720pgenerator_proxytype_iswebvideo", - "label": ".Video720PGenerator_ProxyType_IsWebVideo()", - "_callable": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", - "scope_chain": [ - "s68" - ], - "unresolved_calls": [ - { - "callee": "For", - "receiver_type": "Substitute", - "lang": "csharp", - "line": "L23" - } - ] - }, - "norm_label": ".video720pgenerator_proxytype_iswebvideo()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/VideoProxyGeneratorsTests.cs", - "source_location": "L20" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_video720pgenerator_transcodeasync_delegatestovideoprocessorasync", - "label": ".Video720PGenerator_TranscodeAsync_DelegatesToVideoProcessorAsync()", - "_callable": true, - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", - "scope_chain": [ - "s68" - ], - "unresolved_calls": [ - { - "callee": "For", - "receiver_type": "Substitute", - "lang": "csharp", - "line": "L31" - } - ] - }, - "norm_label": ".video720pgenerator_transcodeasync_delegatestovideoprocessorasync()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/VideoProxyGeneratorsTests.cs", - "source_location": "L28" - }, { "id": "src_anichron_api_infrastructure_configurationlist_anichron_api_infrastructure_configurationlist_parse", "label": ".Parse()", @@ -35696,6 +35428,360 @@ "source_file": "src/Anichron.API.Tests.Unit/Services/TokenServiceTests.cs", "source_location": "L267" }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_efrefreshtokenrepository_add", + "label": ".Add()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".add()", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L23" + }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_efrefreshtokenrepository_deleteexpiredasync", + "label": ".DeleteExpiredAsync()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".deleteexpiredasync()", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L33" + }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_efrefreshtokenrepository_findbyhashasync", + "label": ".FindByHashAsync()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".findbyhashasync()", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L20" + }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_efrefreshtokenrepository_findbyhashwithuserasync", + "label": ".FindByHashWithUserAsync()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".findbyhashwithuserasync()", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L17" + }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_efrefreshtokenrepository_revokeallactivebyuseridasync", + "label": ".RevokeAllActiveByUserIdAsync()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".revokeallactivebyuseridasync()", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L27" + }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_irefreshtokenrepository_add", + "label": ".Add()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".add()", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L10" + }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_irefreshtokenrepository_deleteexpiredasync", + "label": ".DeleteExpiredAsync()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".deleteexpiredasync()", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L12" + }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_irefreshtokenrepository_findbyhashasync", + "label": ".FindByHashAsync()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".findbyhashasync()", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L9" + }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_irefreshtokenrepository_findbyhashwithuserasync", + "label": ".FindByHashWithUserAsync()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".findbyhashwithuserasync()", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L8" + }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_anichron_core_data_repository_irefreshtokenrepository_revokeallactivebyuseridasync", + "label": ".RevokeAllActiveByUserIdAsync()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Data.Repository", + "scope_chain": [ + "s66" + ] + }, + "norm_label": ".revokeallactivebyuseridasync()", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L11" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_add_addstokentocontext", + "label": ".Add_AddsTokenToContext()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s145" + ] + }, + "norm_label": ".add_addstokentocontext()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", + "source_location": "L105" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_createdb", + "label": ".CreateDb()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s145" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L16" + } + ] + }, + "norm_label": ".createdb()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", + "source_location": "L13" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_findbyhashasync_knownhash_returnstoken", + "label": ".FindByHashAsync_KnownHash_ReturnsToken()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s145" + ] + }, + "norm_label": ".findbyhashasync_knownhash_returnstoken()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", + "source_location": "L72" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_findbyhashasync_unknownhash_returnsnull", + "label": ".FindByHashAsync_UnknownHash_ReturnsNull()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s145" + ] + }, + "norm_label": ".findbyhashasync_unknownhash_returnsnull()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", + "source_location": "L90" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_findbyhashwithuserasync_knownhash_returnstokenwithuserloaded", + "label": ".FindByHashWithUserAsync_KnownHash_ReturnsTokenWithUserLoaded()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s145" + ] + }, + "norm_label": ".findbyhashwithuserasync_knownhash_returnstokenwithuserloaded()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", + "source_location": "L39" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_findbyhashwithuserasync_unknownhash_returnsnull", + "label": ".FindByHashWithUserAsync_UnknownHash_ReturnsNull()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s145" + ] + }, + "norm_label": ".findbyhashwithuserasync_unknownhash_returnsnull()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", + "source_location": "L57" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_maketoken", + "label": ".MakeToken()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s145" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L27" + }, + { + "callee": "FromDays", + "receiver_type": "Duration", + "lang": "csharp", + "line": "L31" + } + ] + }, + "norm_label": ".maketoken()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", + "source_location": "L24" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_makeuser", + "label": ".MakeUser()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Tests.Unit.Data.Repository", + "scope_chain": [ + "s145" + ], + "unresolved_calls": [ + { + "callee": "NewGuid", + "receiver_type": "Guid", + "lang": "csharp", + "line": "L22" + } + ] + }, + "norm_label": ".makeuser()", + "source_file": "src/Anichron.Core.Tests.Unit/Data/Repository/RefreshTokenRepositoryTests.cs", + "source_location": "L21" + }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_idempotencycheckmiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_idempotencycheckmiddlewaretests_invokeasync_knownhash_doesnotcallnextasync", "label": ".InvokeAsync_KnownHash_DoesNotCallNextAsync()", @@ -35806,39 +35892,13 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/IdempotencyCheckMiddlewareTests.cs", "source_location": "L20" }, - { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_idempotencycheckmiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_testfixture_build", - "label": ".Build()", - "_callable": true, - "_origin": "ast", - "community": 70, - "community_name": ".InvokeAsync_KnownHash_DoesNotCallNextAsync", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", - "scope_chain": [ - "s222" - ], - "unresolved_calls": [ - { - "callee": "For", - "receiver_type": "Substitute", - "lang": "csharp", - "line": "L17" - } - ] - }, - "norm_label": ".build()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/IdempotencyCheckMiddlewareTests.cs", - "source_location": "L16" - }, { "id": "src_anichron_worker_ingestion_middlewares_idempotencycheckmiddleware_anichron_worker_ingestion_middlewares_idempotencycheckmiddleware_caninvoke", "label": ".CanInvoke()", "_callable": true, "_origin": "ast", "community": 71, - "community_name": "IdempotencyCheckMiddleware", + "community_name": ".Create", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Middlewares", @@ -35856,7 +35916,7 @@ "_callable": true, "_origin": "ast", "community": 71, - "community_name": "IdempotencyCheckMiddleware", + "community_name": ".Create", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Middlewares", @@ -35874,7 +35934,7 @@ "_callable": true, "_origin": "ast", "community": 71, - "community_name": "IdempotencyCheckMiddleware", + "community_name": ".Create", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Middlewares", @@ -35887,120 +35947,74 @@ "source_location": "L28" }, { - "id": "src_anichron_worker_ingestion_pipeline_ingestioncontext_anichron_worker_ingestion_pipeline_ingestioncontext_addproxyfile", - "label": ".AddProxyFile()", - "_callable": true, - "_origin": "ast", - "community": 72, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Pipeline", - "scope_chain": [ - "s29" - ], - "unresolved_calls": [ - { - "callee": "Add", - "receiver_type": "List", - "lang": "csharp", - "line": "L35" - } - ] - }, - "norm_label": ".addproxyfile()", - "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IngestionContext.cs", - "source_location": "L32" - }, - { - "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_anichron_worker_ingestion_proxy_log_discardfailed", - "label": ".DiscardFailed()", - "_callable": true, - "_origin": "ast", - "community": 72, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s206" - ] - }, - "norm_label": ".discardfailed()", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyStagingWriter.cs", - "source_location": "L85" - }, - { - "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_anichron_worker_ingestion_proxy_log_proxywritten", - "label": ".ProxyWritten()", - "_callable": true, - "_origin": "ast", - "community": 72, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s206" - ] - }, - "norm_label": ".proxywritten()", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyStagingWriter.cs", - "source_location": "L82" - }, - { - "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_anichron_worker_ingestion_proxy_proxystagingwriter_discardtemporaryfile", - "label": ".DiscardTemporaryFile()", + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_caninvoke_istrueforeveryitem", + "label": ".CanInvoke_IsTrueForEveryItem()", "_callable": true, "_origin": "ast", - "community": 72, - "community_name": "TestFixture", + "community": 71, + "community_name": ".Create", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", "scope_chain": [ - "s206" + "s287" ] }, - "norm_label": ".discardtemporaryfile()", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyStagingWriter.cs", - "source_location": "L67" + "norm_label": ".caninvoke_istrueforeveryitem()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/AlwaysOnMiddlewareTests.cs", + "source_location": "L34" }, { - "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_anichron_worker_ingestion_proxy_proxystagingwriter_temporarypathfor", - "label": ".TemporaryPathFor()", + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_create", + "label": ".Create()", "_callable": true, "_origin": "ast", - "community": 72, - "community_name": "TestFixture", + "community": 71, + "community_name": ".Create", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", "scope_chain": [ - "s206" + "s287" + ], + "unresolved_calls": [ + { + "callee": "For", + "receiver_type": "Substitute", + "lang": "csharp", + "line": "L19" + } ] }, - "norm_label": ".temporarypathfor()", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyStagingWriter.cs", - "source_location": "L28" + "norm_label": ".create()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/AlwaysOnMiddlewareTests.cs", + "source_location": "L17" }, { - "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_anichron_worker_ingestion_proxy_proxystagingwriter_writeasync", - "label": ".WriteAsync()", + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_idempotencycheckmiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_testfixture_build", + "label": ".Build()", "_callable": true, "_origin": "ast", - "community": 72, - "community_name": "TestFixture", + "community": 71, + "community_name": ".Create", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", "scope_chain": [ - "s206" + "s222" + ], + "unresolved_calls": [ + { + "callee": "For", + "receiver_type": "Substitute", + "lang": "csharp", + "line": "L17" + } ] }, - "norm_label": ".writeasync()", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyStagingWriter.cs", - "source_location": "L34" + "norm_label": ".build()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/IdempotencyCheckMiddlewareTests.cs", + "source_location": "L16" }, { "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxystagingwritertests_anichron_worker_tests_unit_ingestion_proxy_proxystagingwritertests_makecontext", @@ -36198,38 +36212,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ProxyStagingWriterTests.cs", "source_location": "L48" }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxystagingwritertests_anichron_worker_tests_unit_ingestion_proxy_testfixture_build", - "label": ".Build()", - "_callable": true, - "_origin": "ast", - "community": 72, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", - "scope_chain": [ - "s405" - ], - "unresolved_calls": [ - { - "callee": "Create", - "receiver_type": "Options", - "lang": "csharp", - "line": "L34" - }, - { - "callee": "For", - "receiver_type": "Substitute", - "lang": "csharp", - "line": "L37" - } - ] - }, - "norm_label": ".build()", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Proxy/ProxyStagingWriterTests.cs", - "source_location": "L32" - }, { "id": "src_anichron_api_services_pwnedpasswordclient_anichron_api_services_ipwnedpasswordclient_ispwnedasync", "label": ".IsPwnedAsync()", @@ -36958,6 +36940,24 @@ "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IngestionPipelineBuilder.cs", "source_location": "L35" }, + { + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinebuildertests_anichron_worker_tests_unit_ingestion_pipeline_conditionalmiddleware_caninvoke", + "label": ".CanInvoke()", + "_callable": true, + "_origin": "ast", + "community": 77, + "community_name": ".Build", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", + "scope_chain": [ + "s140" + ] + }, + "norm_label": ".caninvoke()", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineBuilderTests.cs", + "source_location": "L61" + }, { "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinebuildertests_anichron_worker_tests_unit_ingestion_pipeline_conditionalmiddleware_invokeasync", "label": ".InvokeAsync()", @@ -38758,6 +38758,17 @@ "source_file": "src/Anichron.API/Services/AuthError.cs", "source_location": "L19" }, + { + "id": "src_anichron_api_services_registrationvalidator", + "label": "RegistrationValidator.cs", + "_origin": "ast", + "community": 0, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "registrationvalidator.cs", + "source_file": "src/Anichron.API/Services/RegistrationValidator.cs", + "source_location": "L1" + }, { "id": "src_anichron_api_services_registrationvalidator_cs_cancellationtoken", "label": "CancellationToken", @@ -38962,6 +38973,17 @@ "source_file": "", "source_location": "" }, + { + "id": "created", + "label": "Created", + "_origin": "ast", + "community": 1, + "community_name": "AuthResponseMapperTests", + "file_type": "code", + "norm_label": "created", + "source_file": "", + "source_location": "" + }, { "id": "jsonoptions", "label": "JsonOptions", @@ -40537,81 +40559,81 @@ "source_location": "L1" }, { - "id": "src_anichron_core_migrations_20260927145042_addschemacomments_designer_cs_guid", - "label": "Guid", + "id": "src_anichron_core_migrations_20261010235916_uniqueactivecontenthashperconfig", + "label": "20261010235916_UniqueActiveContentHashPerConfig.cs", "_origin": "ast", "community": 104, "community_name": "nodatime", "file_type": "code", - "norm_label": "guid", - "source_file": "", - "source_location": "" + "norm_label": "20261010235916_uniqueactivecontenthashperconfig.cs", + "source_file": "src/Anichron.Core/Migrations/20261010235916_UniqueActiveContentHashPerConfig.cs", + "source_location": "L1" }, { - "id": "src_anichron_core_migrations_20260927145042_addschemacomments_designer_cs_instant", - "label": "Instant", + "id": "src_anichron_core_migrations_20261010235916_uniqueactivecontenthashperconfig_cs_migrationbuilder", + "label": "MigrationBuilder", "_origin": "ast", "community": 104, "community_name": "nodatime", "file_type": "code", - "norm_label": "instant", + "norm_label": "migrationbuilder", "source_file": "", "source_location": "" }, { - "id": "src_anichron_core_migrations_20260927145042_addschemacomments_designer_cs_localdatetime", - "label": "LocalDateTime", + "id": "src_anichron_core_migrations_20261010235916_uniqueactivecontenthashperconfig_designer", + "label": "20261010235916_UniqueActiveContentHashPerConfig.Designer.cs", "_origin": "ast", "community": 104, "community_name": "nodatime", "file_type": "code", - "norm_label": "localdatetime", - "source_file": "", - "source_location": "" + "norm_label": "20261010235916_uniqueactivecontenthashperconfig.designer.cs", + "source_file": "src/Anichron.Core/Migrations/20261010235916_UniqueActiveContentHashPerConfig.Designer.cs", + "source_location": "L1" }, { - "id": "src_anichron_core_migrations_20260927145042_addschemacomments_designer_cs_modelbuilder", - "label": "ModelBuilder", + "id": "src_anichron_core_migrations_20261010235916_uniqueactivecontenthashperconfig_designer_cs_guid", + "label": "Guid", "_origin": "ast", "community": 104, "community_name": "nodatime", "file_type": "code", - "norm_label": "modelbuilder", + "norm_label": "guid", "source_file": "", "source_location": "" }, { - "id": "src_anichron_core_migrations_20261010235916_uniqueactivecontenthashperconfig", - "label": "20261010235916_UniqueActiveContentHashPerConfig.cs", + "id": "src_anichron_core_migrations_20261010235916_uniqueactivecontenthashperconfig_designer_cs_instant", + "label": "Instant", "_origin": "ast", "community": 104, "community_name": "nodatime", "file_type": "code", - "norm_label": "20261010235916_uniqueactivecontenthashperconfig.cs", - "source_file": "src/Anichron.Core/Migrations/20261010235916_UniqueActiveContentHashPerConfig.cs", - "source_location": "L1" + "norm_label": "instant", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_core_migrations_20261010235916_uniqueactivecontenthashperconfig_cs_migrationbuilder", - "label": "MigrationBuilder", + "id": "src_anichron_core_migrations_20261010235916_uniqueactivecontenthashperconfig_designer_cs_localdatetime", + "label": "LocalDateTime", "_origin": "ast", "community": 104, "community_name": "nodatime", "file_type": "code", - "norm_label": "migrationbuilder", + "norm_label": "localdatetime", "source_file": "", "source_location": "" }, { - "id": "src_anichron_core_migrations_20261010235916_uniqueactivecontenthashperconfig_designer", - "label": "20261010235916_UniqueActiveContentHashPerConfig.Designer.cs", + "id": "src_anichron_core_migrations_20261010235916_uniqueactivecontenthashperconfig_designer_cs_modelbuilder", + "label": "ModelBuilder", "_origin": "ast", "community": 104, "community_name": "nodatime", "file_type": "code", - "norm_label": "20261010235916_uniqueactivecontenthashperconfig.designer.cs", - "source_file": "src/Anichron.Core/Migrations/20261010235916_UniqueActiveContentHashPerConfig.Designer.cs", - "source_location": "L1" + "norm_label": "modelbuilder", + "source_file": "", + "source_location": "" }, { "id": "src_anichron_core_migrations_20261012023903_storerawexiforientation", @@ -40679,50 +40701,6 @@ "source_file": "src/Anichron.Core/Migrations/20261012025151_DocumentIdentityNormalization.Designer.cs", "source_location": "L1" }, - { - "id": "src_anichron_core_migrations_20261012025151_documentidentitynormalization_designer_cs_guid", - "label": "Guid", - "_origin": "ast", - "community": 104, - "community_name": "nodatime", - "file_type": "code", - "norm_label": "guid", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_core_migrations_20261012025151_documentidentitynormalization_designer_cs_instant", - "label": "Instant", - "_origin": "ast", - "community": 104, - "community_name": "nodatime", - "file_type": "code", - "norm_label": "instant", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_core_migrations_20261012025151_documentidentitynormalization_designer_cs_localdatetime", - "label": "LocalDateTime", - "_origin": "ast", - "community": 104, - "community_name": "nodatime", - "file_type": "code", - "norm_label": "localdatetime", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_core_migrations_20261012025151_documentidentitynormalization_designer_cs_modelbuilder", - "label": "ModelBuilder", - "_origin": "ast", - "community": 104, - "community_name": "nodatime", - "file_type": "code", - "norm_label": "modelbuilder", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_core_migrations_anichrondbcontextmodelsnapshot", "label": "AnichronDbContextModelSnapshot.cs", @@ -40735,15 +40713,16 @@ "source_location": "L1" }, { - "id": "src_anichron_worker_ingestion_exifdata", - "label": "ExifData.cs", + "id": "docs_adr_0004_schema_documentation_why_the_rationale_goes_in_comment_not_in_markdown", + "label": "Why the rationale goes in `COMMENT`, not in Markdown", "_origin": "ast", "community": 104, "community_name": "nodatime", - "file_type": "code", - "norm_label": "exifdata.cs", - "source_file": "src/Anichron.Worker/Ingestion/ExifData.cs", - "source_location": "L1" + "file_type": "document", + "node_kind": "heading", + "norm_label": "why the rationale goes in `comment`, not in markdown", + "source_file": "docs/adr/0004-schema-documentation.md", + "source_location": "L42" }, { "id": "src_anichron_infrastructure_packages_lock_dependencies_microsoft_extensions_configuration", @@ -41610,6 +41589,22 @@ "source_location": "L10", "type": "namespace" }, + { + "id": "csharp_namespace:d8591ca7c666c4a0", + "label": "Anichron.Core", + "_origin": "ast", + "community": 108, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "metadata": { + "kind": "csharp_namespace", + "namespace": "Anichron.Core" + }, + "norm_label": "anichron.core", + "source_file": "src/Anichron.Core/GuidFactory.cs", + "source_location": "L1", + "type": "namespace" + }, { "id": "csharp_namespace:ef074de659b610bc", "label": "Anichron.Worker.Tests.Unit.Ingestion.Proxy", @@ -41642,17 +41637,6 @@ "source_location": "L8", "type": "namespace" }, - { - "id": "src_anichron_api_services_registrationvalidator", - "label": "RegistrationValidator.cs", - "_origin": "ast", - "community": 108, - "community_name": "microsoft_extensions_options", - "file_type": "code", - "norm_label": "registrationvalidator.cs", - "source_file": "src/Anichron.API/Services/RegistrationValidator.cs", - "source_location": "L1" - }, { "id": "src_anichron_worker_crawling_fileingestionpipeline", "label": "FileIngestionPipeline.cs", @@ -41741,6 +41725,17 @@ "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyBound.cs", "source_location": "L1" }, + { + "id": "src_anichron_worker_ingestion_proxy_proxyfilebuilder", + "label": "ProxyFileBuilder.cs", + "_origin": "ast", + "community": 108, + "community_name": "microsoft_extensions_options", + "file_type": "code", + "norm_label": "proxyfilebuilder.cs", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyFileBuilder.cs", + "source_location": "L1" + }, { "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter", "label": "ProxyStagingWriter.cs", @@ -41753,14 +41748,14 @@ "source_location": "L1" }, { - "id": "src_anichron_worker_ingestion_proxy_videoprocessor", - "label": "VideoProcessor.cs", + "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators", + "label": "VideoProxyGenerators.cs", "_origin": "ast", "community": 108, "community_name": "microsoft_extensions_options", "file_type": "code", - "norm_label": "videoprocessor.cs", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", + "norm_label": "videoproxygenerators.cs", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", "source_location": "L1" }, { @@ -43049,7 +43044,7 @@ "node_kind": "heading", "norm_label": "configuration", "source_file": "docs/mutation-testing.md", - "source_location": "L79" + "source_location": "L82" }, { "id": "docs_mutation_testing_known_weak_spots", @@ -43061,7 +43056,7 @@ "node_kind": "heading", "norm_label": "known weak spots", "source_file": "docs/mutation-testing.md", - "source_location": "L497" + "source_location": "L501" }, { "id": "docs_mutation_testing_lowering_the_mark_by_hand", @@ -43073,7 +43068,7 @@ "node_kind": "heading", "norm_label": "\u26a0\ufe0f lowering the mark by hand", "source_file": "docs/mutation-testing.md", - "source_location": "L393" + "source_location": "L397" }, { "id": "docs_mutation_testing_mutation_testing", @@ -43097,7 +43092,7 @@ "node_kind": "heading", "norm_label": "post-processing the report", "source_file": "docs/mutation-testing.md", - "source_location": "L119" + "source_location": "L122" }, { "id": "docs_mutation_testing_publishing_the_badge", @@ -43109,7 +43104,7 @@ "node_kind": "heading", "norm_label": "publishing the badge", "source_file": "docs/mutation-testing.md", - "source_location": "L159" + "source_location": "L162" }, { "id": "docs_mutation_testing_publishing_the_report", @@ -43121,7 +43116,7 @@ "node_kind": "heading", "norm_label": "publishing the report", "source_file": "docs/mutation-testing.md", - "source_location": "L189" + "source_location": "L194" }, { "id": "docs_mutation_testing_reading_the_result", @@ -43157,7 +43152,7 @@ "node_kind": "heading", "norm_label": "the output guard, and why it is a sentinel rather than a blocklist", "source_file": "docs/mutation-testing.md", - "source_location": "L244" + "source_location": "L249" }, { "id": "docs_mutation_testing_the_ratchet", @@ -43169,7 +43164,7 @@ "node_kind": "heading", "norm_label": "the ratchet", "source_file": "docs/mutation-testing.md", - "source_location": "L313" + "source_location": "L317" }, { "id": "docs_mutation_testing_the_weekly_divergence_check", @@ -43181,7 +43176,7 @@ "node_kind": "heading", "norm_label": "the weekly divergence check", "source_file": "docs/mutation-testing.md", - "source_location": "L430" + "source_location": "L434" }, { "id": "docs_mutation_testing_verifying_the_scripts", @@ -43193,7 +43188,7 @@ "node_kind": "heading", "norm_label": "verifying the scripts", "source_file": "docs/mutation-testing.md", - "source_location": "L264" + "source_location": "L269" }, { "id": "docs_mutation_testing_what_not_to_reach_for_when_a_run_looks_wrong", @@ -43205,7 +43200,7 @@ "node_kind": "heading", "norm_label": "what not to reach for when a run looks wrong", "source_file": "docs/mutation-testing.md", - "source_location": "L465" + "source_location": "L469" }, { "id": "docs_mutation_testing_when_it_fails", @@ -43217,7 +43212,7 @@ "node_kind": "heading", "norm_label": "when it fails", "source_file": "docs/mutation-testing.md", - "source_location": "L475" + "source_location": "L479" }, { "id": "docs_mutation_testing_when_there_is_no_mark_and_when_there_is_a_broken_one", @@ -43229,7 +43224,7 @@ "node_kind": "heading", "norm_label": "when there is no mark \u2014 and when there is a broken one", "source_file": "docs/mutation-testing.md", - "source_location": "L356" + "source_location": "L360" }, { "id": "docs_mutation_testing_when_to_re_measure_the_baseline", @@ -43241,7 +43236,7 @@ "node_kind": "heading", "norm_label": "when to re-measure the baseline", "source_file": "docs/mutation-testing.md", - "source_location": "L94" + "source_location": "L97" }, { "id": "docs_mutation_testing_when_to_run_it_by_hand_rather_than_waiting_for_monday", @@ -43253,7 +43248,7 @@ "node_kind": "heading", "norm_label": "\u26a0\ufe0f when to run it by hand, rather than waiting for monday", "source_file": "docs/mutation-testing.md", - "source_location": "L440" + "source_location": "L444" }, { "id": "docs_mutation_testing_why_it_compares_counts_rather_than_scores", @@ -43265,7 +43260,7 @@ "node_kind": "heading", "norm_label": "why it compares counts rather than scores", "source_file": "docs/mutation-testing.md", - "source_location": "L454" + "source_location": "L458" }, { "id": "docs_mutation_testing_why_it_runs_before_the_badge_step", @@ -43277,7 +43272,7 @@ "node_kind": "heading", "norm_label": "why it runs before the badge step", "source_file": "docs/mutation-testing.md", - "source_location": "L230" + "source_location": "L235" }, { "id": "docs_mutation_testing_why_the_gate_is_not_simply_mark_5", @@ -43289,7 +43284,7 @@ "node_kind": "heading", "norm_label": "why the gate is not simply `mark - 5`", "source_file": "docs/mutation-testing.md", - "source_location": "L334" + "source_location": "L338" }, { "id": "docs_mutation_testing_why_the_mutation_report_is_optional_and_the_earlier_rule_that_got_reversed", @@ -43301,7 +43296,7 @@ "node_kind": "heading", "norm_label": "why the mutation report is optional, and the earlier rule that got reversed", "source_file": "docs/mutation-testing.md", - "source_location": "L217" + "source_location": "L222" }, { "id": "src_anichron_infrastructure_packages_lock_dependencies", @@ -43792,17 +43787,6 @@ "source_file": "src/Anichron.API/packages.lock.json", "source_location": "L123" }, - { - "id": "postgresexception", - "label": "PostgresException", - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "norm_label": "postgresexception", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_api_endpoints_authresponsemapper_cs_httpcontext", "label": "HttpContext", @@ -43916,103 +43900,55 @@ "source_location": "L18" }, { - "id": "src_anichron_api_services_authservice_cs_cancellationtoken", - "label": "CancellationToken", - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_services_authservice_cs_guid", - "label": "Guid", - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "norm_label": "guid", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_services_authservice_cs_iclock", - "label": "IClock", - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "norm_label": "iclock", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_services_authservice_cs_iguidfactory", - "label": "IGuidFactory", - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "norm_label": "iguidfactory", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_services_authservice_cs_task", - "label": "Task", - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_core_data_iunitofwork", - "label": "IUnitOfWork.cs", - "_origin": "ast", - "community": 12, - "community_name": "AuthResult", - "file_type": "code", - "norm_label": "iunitofwork.cs", - "source_file": "src/Anichron.Core/Data/IUnitOfWork.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_core_data_iunitofwork_cs_cancellationtoken", - "label": "CancellationToken", + "id": "src_anichron_api_settings_usernamepolicy_anichron_api_settings_usernamepolicy_invalidformatmessage", + "label": "InvalidFormatMessage", "_origin": "ast", "community": 12, "community_name": "AuthResult", "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s39" + ] + }, + "norm_label": "invalidformatmessage", + "source_file": "src/Anichron.API/Settings/UsernamePolicy.cs", + "source_location": "L13" }, { - "id": "src_anichron_core_data_iunitofwork_cs_func", - "label": "Func", + "id": "src_anichron_api_settings_usernamepolicy_anichron_api_settings_usernamepolicy_maxlength", + "label": "MaxLength", "_origin": "ast", "community": 12, "community_name": "AuthResult", "file_type": "code", - "norm_label": "func", - "source_file": "", - "source_location": "" + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s39" + ] + }, + "norm_label": "maxlength", + "source_file": "src/Anichron.API/Settings/UsernamePolicy.cs", + "source_location": "L8" }, { - "id": "src_anichron_core_data_iunitofwork_cs_task", - "label": "Task", + "id": "src_anichron_api_settings_usernamepolicy_anichron_api_settings_usernamepolicy_minlength", + "label": "MinLength", "_origin": "ast", "community": 12, "community_name": "AuthResult", "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s39" + ] + }, + "norm_label": "minlength", + "source_file": "src/Anichron.API/Settings/UsernamePolicy.cs", + "source_location": "L7" }, { "id": "src_anichron_worker_ingestion_middlewares_livephotopairingmiddleware_anichron_worker_ingestion_middlewares_livephotopairingmiddleware_order", @@ -44277,17 +44213,6 @@ "source_file": "src/Anichron.Worker/Infrastructure/WorkerIniDefaults.cs", "source_location": "L1" }, - { - "id": "src_anichron_worker_ingestion_mediatypedetector", - "label": "MediaTypeDetector.cs", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Infrastructure.Configuration", - "file_type": "code", - "norm_label": "mediatypedetector.cs", - "source_file": "src/Anichron.Worker/Ingestion/MediaTypeDetector.cs", - "source_location": "L1" - }, { "id": "src_anichron_worker_program", "label": "Anichron.Worker/Program.cs", @@ -44321,18 +44246,6 @@ "source_file": "", "source_location": "" }, - { - "id": "docs_adr_0005_mutation_scope_excludes_unkillable_and_wiring_code_consequences", - "label": "Consequences", - "_origin": "ast", - "community": 121, - "community_name": "Anichron.Infrastructure.Configuration", - "file_type": "document", - "node_kind": "heading", - "norm_label": "consequences", - "source_file": "docs/adr/0005-mutation-scope-excludes-unkillable-and-wiring-code.md", - "source_location": "L93" - }, { "id": "src_anichron_api_tests_unit_packages_lock_dependencies_microsoft_applicationinsights", "label": "Microsoft.ApplicationInsights", @@ -45736,6 +45649,39 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L469" }, + { + "id": "src_anichron_worker_packages_lock_blurhash_core_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L165" + }, + { + "id": "src_anichron_worker_packages_lock_blurhash_core_resolved", + "label": "resolved", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L164" + }, + { + "id": "src_anichron_worker_packages_lock_blurhash_core_type", + "label": "type", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L163" + }, { "id": "src_anichron_worker_packages_lock_dependencies", "label": "dependencies", @@ -45759,7 +45705,7 @@ "source_location": "L4" }, { - "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_abstractions_contenthash", + "id": "src_anichron_worker_packages_lock_humanizer_core_contenthash", "label": "contentHash", "_origin": "ast", "community": 13, @@ -45767,10 +45713,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L245" + "source_location": "L170" }, { - "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_abstractions_resolved", + "id": "src_anichron_worker_packages_lock_humanizer_core_resolved", "label": "resolved", "_origin": "ast", "community": 13, @@ -45778,10 +45724,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L244" + "source_location": "L169" }, { - "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_abstractions_type", + "id": "src_anichron_worker_packages_lock_humanizer_core_type", "label": "type", "_origin": "ast", "community": 13, @@ -45789,10 +45735,10 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L243" + "source_location": "L168" }, { - "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_analyzers_contenthash", + "id": "src_anichron_worker_packages_lock_microsoft_build_framework_contenthash", "label": "contentHash", "_origin": "ast", "community": 13, @@ -45800,10 +45746,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L250" + "source_location": "L175" }, { - "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_analyzers_resolved", + "id": "src_anichron_worker_packages_lock_microsoft_build_framework_resolved", "label": "resolved", "_origin": "ast", "community": 13, @@ -45811,10 +45757,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L249" + "source_location": "L174" }, { - "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_analyzers_type", + "id": "src_anichron_worker_packages_lock_microsoft_build_framework_type", "label": "type", "_origin": "ast", "community": 13, @@ -45822,10 +45768,10 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L248" + "source_location": "L173" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_environmentvariables_contenthash", + "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_abstractions_contenthash", "label": "contentHash", "_origin": "ast", "community": 13, @@ -45833,10 +45779,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L301" + "source_location": "L245" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_environmentvariables_resolved", + "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_abstractions_resolved", "label": "resolved", "_origin": "ast", "community": 13, @@ -45844,10 +45790,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L300" + "source_location": "L244" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_environmentvariables_type", + "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_abstractions_type", "label": "type", "_origin": "ast", "community": 13, @@ -45855,7 +45801,40 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L299" + "source_location": "L243" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_caching_memory_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L263" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_caching_memory_resolved", + "label": "resolved", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L262" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_caching_memory_type", + "label": "type", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L261" }, { "id": "src_anichron_worker_packages_lock_microsoft_extensions_dependencyinjection_abstractions_contenthash", @@ -45890,6 +45869,39 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L350" }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_dependencymodel_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L357" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_dependencymodel_resolved", + "label": "resolved", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L356" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_dependencymodel_type", + "label": "type", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L355" + }, { "id": "src_anichron_worker_packages_lock_microsoft_extensions_filesystemglobbing_contenthash", "label": "contentHash", @@ -45924,7 +45936,7 @@ "source_location": "L397" }, { - "id": "src_anichron_worker_packages_lock_microsoft_visualstudio_solutionpersistence_contenthash", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_configuration_contenthash", "label": "contentHash", "_origin": "ast", "community": 13, @@ -45932,10 +45944,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L521" + "source_location": "L434" }, { - "id": "src_anichron_worker_packages_lock_microsoft_visualstudio_solutionpersistence_resolved", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_configuration_resolved", "label": "resolved", "_origin": "ast", "community": 13, @@ -45943,10 +45955,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L520" + "source_location": "L433" }, { - "id": "src_anichron_worker_packages_lock_microsoft_visualstudio_solutionpersistence_type", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_configuration_type", "label": "type", "_origin": "ast", "community": 13, @@ -45954,40 +45966,95 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L519" + "source_location": "L432" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_entityframeworkcore_abstractions", - "label": "Microsoft.EntityFrameworkCore.Abstractions", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_primitives_contenthash", + "label": "contentHash", "_origin": "ast", "community": 13, "community_name": "net10.0", "file_type": "code", - "norm_label": "microsoft.entityframeworkcore.abstractions", + "norm_label": "contenthash", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L242" + "source_location": "L516" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_entityframeworkcore_analyzers", - "label": "Microsoft.EntityFrameworkCore.Analyzers", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_primitives_resolved", + "label": "resolved", "_origin": "ast", "community": 13, "community_name": "net10.0", "file_type": "code", - "norm_label": "microsoft.entityframeworkcore.analyzers", + "norm_label": "resolved", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L247" + "source_location": "L515" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_environmentvariables", - "label": "Microsoft.Extensions.Configuration.EnvironmentVariables", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_primitives_type", + "label": "type", "_origin": "ast", "community": 13, "community_name": "net10.0", "file_type": "code", - "norm_label": "microsoft.extensions.configuration.environmentvariables", + "norm_label": "type", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L298" + "source_location": "L514" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_blurhash_core", + "label": "Blurhash.Core", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "blurhash.core", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L162" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_humanizer_core", + "label": "Humanizer.Core", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "humanizer.core", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L167" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_build_framework", + "label": "Microsoft.Build.Framework", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "microsoft.build.framework", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L172" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_entityframeworkcore_abstractions", + "label": "Microsoft.EntityFrameworkCore.Abstractions", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "microsoft.entityframeworkcore.abstractions", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L242" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_caching_memory", + "label": "Microsoft.Extensions.Caching.Memory", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "microsoft.extensions.caching.memory", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L260" }, { "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_dependencyinjection_abstractions", @@ -46000,6 +46067,17 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L349" }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_dependencymodel", + "label": "Microsoft.Extensions.DependencyModel", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "microsoft.extensions.dependencymodel", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L354" + }, { "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_filesystemglobbing", "label": "Microsoft.Extensions.FileSystemGlobbing", @@ -46012,15 +46090,37 @@ "source_location": "L396" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_visualstudio_solutionpersistence", - "label": "Microsoft.VisualStudio.SolutionPersistence", + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_logging_configuration", + "label": "Microsoft.Extensions.Logging.Configuration", "_origin": "ast", "community": 13, "community_name": "net10.0", "file_type": "code", - "norm_label": "microsoft.visualstudio.solutionpersistence", + "norm_label": "microsoft.extensions.logging.configuration", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L518" + "source_location": "L431" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_primitives", + "label": "Microsoft.Extensions.Primitives", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "microsoft.extensions.primitives", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L513" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_roslynator_analyzers", + "label": "Roslynator.Analyzers", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "roslynator.analyzers", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L125" }, { "id": "src_anichron_worker_packages_lock_net10_0_sonaranalyzer_csharp", @@ -46056,15 +46156,15 @@ "source_location": "L562" }, { - "id": "src_anichron_worker_packages_lock_net10_0_system_io_hashing", - "label": "System.IO.Hashing", + "id": "src_anichron_worker_packages_lock_net10_0_system_diagnostics_eventlog", + "label": "System.Diagnostics.EventLog", "_origin": "ast", "community": 13, "community_name": "net10.0", "file_type": "code", - "norm_label": "system.io.hashing", + "norm_label": "system.diagnostics.eventlog", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L156" + "source_location": "L598" }, { "id": "src_anichron_worker_packages_lock_net10_0_testableio_system_io_abstractions_wrappers", @@ -46077,6 +46177,50 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L611" }, + { + "id": "src_anichron_worker_packages_lock_roslynator_analyzers_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L129" + }, + { + "id": "src_anichron_worker_packages_lock_roslynator_analyzers_requested", + "label": "requested", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "requested", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L127" + }, + { + "id": "src_anichron_worker_packages_lock_roslynator_analyzers_resolved", + "label": "resolved", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L128" + }, + { + "id": "src_anichron_worker_packages_lock_roslynator_analyzers_type", + "label": "type", + "_origin": "ast", + "community": 13, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L126" + }, { "id": "src_anichron_worker_packages_lock_sonaranalyzer_csharp_contenthash", "label": "contentHash", @@ -46188,7 +46332,7 @@ "source_location": "L563" }, { - "id": "src_anichron_worker_packages_lock_system_io_hashing_contenthash", + "id": "src_anichron_worker_packages_lock_system_diagnostics_eventlog_contenthash", "label": "contentHash", "_origin": "ast", "community": 13, @@ -46196,21 +46340,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L160" - }, - { - "id": "src_anichron_worker_packages_lock_system_io_hashing_requested", - "label": "requested", - "_origin": "ast", - "community": 13, - "community_name": "net10.0", - "file_type": "code", - "norm_label": "requested", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L158" + "source_location": "L601" }, { - "id": "src_anichron_worker_packages_lock_system_io_hashing_resolved", + "id": "src_anichron_worker_packages_lock_system_diagnostics_eventlog_resolved", "label": "resolved", "_origin": "ast", "community": 13, @@ -46218,10 +46351,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L159" + "source_location": "L600" }, { - "id": "src_anichron_worker_packages_lock_system_io_hashing_type", + "id": "src_anichron_worker_packages_lock_system_diagnostics_eventlog_type", "label": "type", "_origin": "ast", "community": 13, @@ -46229,7 +46362,7 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L157" + "source_location": "L599" }, { "id": "src_anichron_worker_packages_lock_testableio_system_io_abstractions_wrappers_resolved", @@ -47749,39 +47882,6 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L537" }, - { - "id": "src_anichron_api_services_lockoutservice_cs_cancellationtoken", - "label": "CancellationToken", - "_origin": "ast", - "community": 14, - "community_name": "LockoutServiceTests", - "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_services_lockoutservice_cs_instant", - "label": "Instant", - "_origin": "ast", - "community": 14, - "community_name": "LockoutServiceTests", - "file_type": "code", - "norm_label": "instant", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_services_lockoutservice_cs_task", - "label": "Task", - "_origin": "ast", - "community": 14, - "community_name": "LockoutServiceTests", - "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_api_tests_unit_services_lockoutservicetests_cs_fact", "label": "Fact", @@ -47793,17 +47893,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_api_tests_unit_services_lockoutservicetests_cs_inlinedata", - "label": "InlineData", - "_origin": "ast", - "community": 14, - "community_name": "LockoutServiceTests", - "file_type": "code", - "norm_label": "inlinedata", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_api_tests_unit_services_lockoutservicetests_cs_instant", "label": "Instant", @@ -47826,17 +47915,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_api_tests_unit_services_lockoutservicetests_cs_theory", - "label": "Theory", - "_origin": "ast", - "community": 14, - "community_name": "LockoutServiceTests", - "file_type": "code", - "norm_label": "theory", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_core_domain_metadata", "label": "Metadata.cs", @@ -50153,18 +50231,6 @@ "source_file": "docs/adr/0004-schema-documentation.md", "source_location": "L32" }, - { - "id": "docs_adr_0004_schema_documentation_why_the_rationale_goes_in_comment_not_in_markdown", - "label": "Why the rationale goes in `COMMENT`, not in Markdown", - "_origin": "ast", - "community": 158, - "community_name": "Schema documentation is generated, and its rationale lives in the schema", - "file_type": "document", - "node_kind": "heading", - "norm_label": "why the rationale goes in `comment`, not in markdown", - "source_file": "docs/adr/0004-schema-documentation.md", - "source_location": "L42" - }, { "id": "src_anichron_core_tests_unit_packages_lock_dependencies_microsoft_extensions_primitives", "label": "Microsoft.Extensions.Primitives", @@ -50611,39 +50677,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_worker_startup_idatabasemigrator", - "label": "IDatabaseMigrator.cs", - "_origin": "ast", - "community": 16, - "community_name": "DatabaseMigratorService", - "file_type": "code", - "norm_label": "idatabasemigrator.cs", - "source_file": "src/Anichron.Worker/Startup/IDatabaseMigrator.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_worker_startup_idatabasemigrator_cs_cancellationtoken", - "label": "CancellationToken", - "_origin": "ast", - "community": 16, - "community_name": "DatabaseMigratorService", - "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_startup_idatabasemigrator_cs_task", - "label": "Task", - "_origin": "ast", - "community": 16, - "community_name": "DatabaseMigratorService", - "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_worker_tests_unit_startup_databasemigratorservicetests_anichron_worker_tests_unit_startup_testfixture_migrator", "label": "Migrator", @@ -53431,6 +53464,39 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_api_tests_unit_endpoints_adminstorageconfigendpointstests_cs_cancellationtoken", + "label": "CancellationToken", + "_origin": "ast", + "community": 182, + "community_name": ".AddAsync", + "file_type": "code", + "norm_label": "cancellationtoken", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_api_tests_unit_endpoints_adminstorageconfigendpointstests_cs_fact", + "label": "Fact", + "_origin": "ast", + "community": 182, + "community_name": ".AddAsync", + "file_type": "code", + "norm_label": "fact", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_api_tests_unit_endpoints_adminstorageconfigendpointstests_cs_task", + "label": "Task", + "_origin": "ast", + "community": 182, + "community_name": ".AddAsync", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_codecoverage", "label": "Microsoft.CodeCoverage", @@ -53972,6 +54038,28 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_api_infrastructure_jwtconfiguration", + "label": "JwtConfiguration.cs", + "_origin": "ast", + "community": 19, + "community_name": ".WriteResponseAsync", + "file_type": "code", + "norm_label": "jwtconfiguration.cs", + "source_file": "src/Anichron.API/Infrastructure/JwtConfiguration.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_api_infrastructure_jwtconfiguration_cs_iconfiguration", + "label": "IConfiguration", + "_origin": "ast", + "community": 19, + "community_name": ".WriteResponseAsync", + "file_type": "code", + "norm_label": "iconfiguration", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_api_tests_unit_infrastructure_healthcheckresponsewritertests_cs_defaulthttpcontext", "label": "DefaultHttpContext", @@ -54027,6 +54115,39 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_cs_fact", + "label": "Fact", + "_origin": "ast", + "community": 19, + "community_name": ".WriteResponseAsync", + "file_type": "code", + "norm_label": "fact", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_cs_iconfiguration", + "label": "IConfiguration", + "_origin": "ast", + "community": 19, + "community_name": ".WriteResponseAsync", + "file_type": "code", + "norm_label": "iconfiguration", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_cs_invalidoperationexception", + "label": "InvalidOperationException", + "_origin": "ast", + "community": 19, + "community_name": ".WriteResponseAsync", + "file_type": "code", + "norm_label": "invalidoperationexception", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_api_packages_lock_dependencies_microsoft_identitymodel_protocols_openidconnect", "label": "Microsoft.IdentityModel.Protocols.OpenIdConnect", @@ -55699,57 +55820,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_api_settings_usernamepolicy_anichron_api_settings_usernamepolicy_invalidformatmessage", - "label": "InvalidFormatMessage", - "_origin": "ast", - "community": 21, - "community_name": ".Ok", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s39" - ] - }, - "norm_label": "invalidformatmessage", - "source_file": "src/Anichron.API/Settings/UsernamePolicy.cs", - "source_location": "L13" - }, - { - "id": "src_anichron_api_settings_usernamepolicy_anichron_api_settings_usernamepolicy_maxlength", - "label": "MaxLength", - "_origin": "ast", - "community": 21, - "community_name": ".Ok", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s39" - ] - }, - "norm_label": "maxlength", - "source_file": "src/Anichron.API/Settings/UsernamePolicy.cs", - "source_location": "L8" - }, - { - "id": "src_anichron_api_settings_usernamepolicy_anichron_api_settings_usernamepolicy_minlength", - "label": "MinLength", - "_origin": "ast", - "community": 21, - "community_name": ".Ok", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s39" - ] - }, - "norm_label": "minlength", - "source_file": "src/Anichron.API/Settings/UsernamePolicy.cs", - "source_location": "L7" - }, { "id": "src_anichron_api_tests_unit_endpoints_authendpointstests_cs_cancellationtoken", "label": "CancellationToken", @@ -58090,49 +58160,133 @@ "source_location": "" }, { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_cs_anichrondbcontext", - "label": "AnichronDbContext", + "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_anichron_worker_ingestion_middlewares_videoproxymiddleware_order", + "label": "Order", "_origin": "ast", "community": 234, - "community_name": "EfUserStorageConfigRepository", + "community_name": "VideoProxyMiddleware", "file_type": "code", - "norm_label": "anichrondbcontext", + "metadata": { + "namespace": "Anichron.Worker.Ingestion.Middlewares", + "scope_chain": [ + "s110" + ] + }, + "norm_label": "order", + "source_file": "src/Anichron.Worker/Ingestion/Middlewares/VideoProxyMiddleware.cs", + "source_location": "L13" + }, + { + "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_cs_cancellationtoken", + "label": "CancellationToken", + "_origin": "ast", + "community": 234, + "community_name": "VideoProxyMiddleware", + "file_type": "code", + "norm_label": "cancellationtoken", "source_file": "", "source_location": "" }, { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_cs_fact", - "label": "Fact", + "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_cs_ienumerable", + "label": "IEnumerable", "_origin": "ast", "community": 234, - "community_name": "EfUserStorageConfigRepository", + "community_name": "VideoProxyMiddleware", "file_type": "code", - "norm_label": "fact", + "norm_label": "ienumerable", "source_file": "", "source_location": "" }, { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_cs_guid", - "label": "Guid", + "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_cs_ilogger", + "label": "ILogger", "_origin": "ast", "community": 234, - "community_name": "EfUserStorageConfigRepository", + "community_name": "VideoProxyMiddleware", "file_type": "code", - "norm_label": "guid", + "norm_label": "ilogger", "source_file": "", "source_location": "" }, { - "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_cs_task", + "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_cs_ingestiondelegate", + "label": "IngestionDelegate", + "_origin": "ast", + "community": 234, + "community_name": "VideoProxyMiddleware", + "file_type": "code", + "norm_label": "ingestiondelegate", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_cs_loggermessage", + "label": "LoggerMessage", + "_origin": "ast", + "community": 234, + "community_name": "VideoProxyMiddleware", + "file_type": "code", + "norm_label": "loggermessage", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_cs_task", "label": "Task", "_origin": "ast", "community": 234, - "community_name": "EfUserStorageConfigRepository", + "community_name": "VideoProxyMiddleware", "file_type": "code", "norm_label": "task", "source_file": "", "source_location": "" }, + { + "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_ivideoproxygenerator_filename", + "label": "FileName", + "_origin": "ast", + "community": 234, + "community_name": "VideoProxyMiddleware", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion.Proxy", + "scope_chain": [ + "s29" + ] + }, + "norm_label": "filename", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", + "source_location": "L7" + }, + { + "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_ivideoproxygenerator_proxytype", + "label": "ProxyType", + "_origin": "ast", + "community": 234, + "community_name": "VideoProxyMiddleware", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion.Proxy", + "scope_chain": [ + "s29" + ] + }, + "norm_label": "proxytype", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", + "source_location": "L8" + }, + { + "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_cs_proxytype", + "label": "ProxyType", + "_origin": "ast", + "community": 234, + "community_name": "VideoProxyMiddleware", + "file_type": "code", + "norm_label": "proxytype", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_bcl_asyncinterfaces", "label": "Microsoft.Bcl.AsyncInterfaces", @@ -58736,62 +58890,51 @@ "source_location": "" }, { - "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_cs_dictionary", - "label": "Dictionary", - "_origin": "ast", - "community": 24, - "community_name": "MustChangePasswordMiddleware", - "file_type": "code", - "norm_label": "dictionary", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_cs_fact", - "label": "Fact", + "id": "src_anichron_api_tests_unit_infrastructure_mustchangepasswordmiddlewaretests_cs_claimsprincipal", + "label": "ClaimsPrincipal", "_origin": "ast", "community": 24, "community_name": "MustChangePasswordMiddleware", "file_type": "code", - "norm_label": "fact", + "norm_label": "claimsprincipal", "source_file": "", "source_location": "" }, { - "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_cs_formatexception", - "label": "FormatException", + "id": "src_anichron_api_tests_unit_infrastructure_mustchangepasswordmiddlewaretests_cs_defaulthttpcontext", + "label": "DefaultHttpContext", "_origin": "ast", "community": 24, "community_name": "MustChangePasswordMiddleware", "file_type": "code", - "norm_label": "formatexception", + "norm_label": "defaulthttpcontext", "source_file": "", "source_location": "" }, { - "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_cs_httpresponsemessage", - "label": "HttpResponseMessage", + "id": "src_anichron_api_tests_unit_infrastructure_mustchangepasswordmiddlewaretests_cs_fact", + "label": "Fact", "_origin": "ast", "community": 24, "community_name": "MustChangePasswordMiddleware", "file_type": "code", - "norm_label": "httpresponsemessage", + "norm_label": "fact", "source_file": "", "source_location": "" }, { - "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_cs_list", - "label": "List", + "id": "src_anichron_api_tests_unit_infrastructure_mustchangepasswordmiddlewaretests_cs_httpresponse", + "label": "HttpResponse", "_origin": "ast", "community": 24, "community_name": "MustChangePasswordMiddleware", "file_type": "code", - "norm_label": "list", + "norm_label": "httpresponse", "source_file": "", "source_location": "" }, { - "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_cs_task", + "id": "src_anichron_api_tests_unit_infrastructure_mustchangepasswordmiddlewaretests_cs_task", "label": "Task", "_origin": "ast", "community": 24, @@ -58802,68 +58945,46 @@ "source_location": "" }, { - "id": "src_anichron_api_tests_unit_infrastructure_mustchangepasswordmiddlewaretests_cs_claimsprincipal", - "label": "ClaimsPrincipal", - "_origin": "ast", - "community": 24, - "community_name": "MustChangePasswordMiddleware", - "file_type": "code", - "norm_label": "claimsprincipal", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_tests_unit_infrastructure_mustchangepasswordmiddlewaretests_cs_defaulthttpcontext", - "label": "DefaultHttpContext", - "_origin": "ast", - "community": 24, - "community_name": "MustChangePasswordMiddleware", - "file_type": "code", - "norm_label": "defaulthttpcontext", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_api_tests_unit_infrastructure_mustchangepasswordmiddlewaretests_cs_fact", - "label": "Fact", + "id": "jwtsecuritytokenhandler", + "label": "JwtSecurityTokenHandler", "_origin": "ast", - "community": 24, - "community_name": "MustChangePasswordMiddleware", + "community": 240, + "community_name": "TokenService", "file_type": "code", - "norm_label": "fact", + "norm_label": "jwtsecuritytokenhandler", "source_file": "", "source_location": "" }, { - "id": "src_anichron_api_tests_unit_infrastructure_mustchangepasswordmiddlewaretests_cs_httpresponse", - "label": "HttpResponse", + "id": "signingcredentials", + "label": "SigningCredentials", "_origin": "ast", - "community": 24, - "community_name": "MustChangePasswordMiddleware", + "community": 240, + "community_name": "TokenService", "file_type": "code", - "norm_label": "httpresponse", + "norm_label": "signingcredentials", "source_file": "", "source_location": "" }, { - "id": "src_anichron_api_tests_unit_infrastructure_mustchangepasswordmiddlewaretests_cs_task", - "label": "Task", + "id": "src_anichron_api_security_jwtfactory_cs_iclock", + "label": "IClock", "_origin": "ast", - "community": 24, - "community_name": "MustChangePasswordMiddleware", + "community": 240, + "community_name": "TokenService", "file_type": "code", - "norm_label": "task", + "norm_label": "iclock", "source_file": "", "source_location": "" }, { - "id": "webapplication", - "label": "WebApplication", + "id": "src_anichron_api_security_jwtfactory_cs_iguidfactory", + "label": "IGuidFactory", "_origin": "ast", - "community": 24, - "community_name": "MustChangePasswordMiddleware", + "community": 240, + "community_name": "TokenService", "file_type": "code", - "norm_label": "webapplication", + "norm_label": "iguidfactory", "source_file": "", "source_location": "" }, @@ -58944,6 +59065,102 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_api_settings_jwtsettings", + "label": "JwtSettings.cs", + "_origin": "ast", + "community": 240, + "community_name": "TokenService", + "file_type": "code", + "norm_label": "jwtsettings.cs", + "source_file": "src/Anichron.API/Settings/JwtSettings.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_api_settings_jwtsettings_anichron_api_settings_jwtsettings_accesstokenminutes", + "label": "AccessTokenMinutes", + "_origin": "ast", + "community": 240, + "community_name": "TokenService", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "accesstokenminutes", + "source_file": "src/Anichron.API/Settings/JwtSettings.cs", + "source_location": "L11" + }, + { + "id": "src_anichron_api_settings_jwtsettings_anichron_api_settings_jwtsettings_audience", + "label": "Audience", + "_origin": "ast", + "community": 240, + "community_name": "TokenService", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "audience", + "source_file": "src/Anichron.API/Settings/JwtSettings.cs", + "source_location": "L10" + }, + { + "id": "src_anichron_api_settings_jwtsettings_anichron_api_settings_jwtsettings_issuer", + "label": "Issuer", + "_origin": "ast", + "community": 240, + "community_name": "TokenService", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "issuer", + "source_file": "src/Anichron.API/Settings/JwtSettings.cs", + "source_location": "L8" + }, + { + "id": "src_anichron_api_settings_jwtsettings_anichron_api_settings_jwtsettings_refreshtokendays", + "label": "RefreshTokenDays", + "_origin": "ast", + "community": 240, + "community_name": "TokenService", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "refreshtokendays", + "source_file": "src/Anichron.API/Settings/JwtSettings.cs", + "source_location": "L12" + }, + { + "id": "src_anichron_api_settings_jwtsettings_anichron_api_settings_jwtsettings_secret", + "label": "Secret", + "_origin": "ast", + "community": 240, + "community_name": "TokenService", + "file_type": "code", + "metadata": { + "namespace": "Anichron.API.Settings", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "secret", + "source_file": "src/Anichron.API/Settings/JwtSettings.cs", + "source_location": "L6" + }, { "id": "src_anichron_api_tests_unit_globalusings", "label": "Anichron.API.Tests.Unit/GlobalUsings.cs", @@ -60032,15 +60249,26 @@ "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests_cs_fact", - "label": "Fact", + "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_caching_abstractions", + "label": "Microsoft.Extensions.Caching.Abstractions", "_origin": "ast", - "community": 25, - "community_name": "SingleFileItem", + "community": 250, + "community_name": "Microsoft.Extensions.Primitives", "file_type": "code", - "norm_label": "fact", - "source_file": "", - "source_location": "" + "norm_label": "microsoft.extensions.caching.abstractions", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L135" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_configuration_json", + "label": "Microsoft.Extensions.Configuration.Json", + "_origin": "ast", + "community": 250, + "community_name": "Microsoft.Extensions.Primitives", + "file_type": "code", + "norm_label": "microsoft.extensions.configuration.json", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L206" }, { "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_fileproviders_abstractions", @@ -60130,6 +60358,50 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L123" }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_caching_memory_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 250, + "community_name": "Microsoft.Extensions.Primitives", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L133" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_caching_memory_dependencies", + "label": "dependencies", + "_origin": "ast", + "community": 250, + "community_name": "Microsoft.Extensions.Primitives", + "file_type": "code", + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L134" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_caching_memory_resolved", + "label": "resolved", + "_origin": "ast", + "community": 250, + "community_name": "Microsoft.Extensions.Primitives", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L132" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_caching_memory_type", + "label": "type", + "_origin": "ast", + "community": 250, + "community_name": "Microsoft.Extensions.Primitives", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L131" + }, { "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_abstractions_contenthash", "label": "contentHash", @@ -60219,7 +60491,7 @@ "source_location": "L178" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_abstractions_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_usersecrets_contenthash", "label": "contentHash", "_origin": "ast", "community": 250, @@ -60227,10 +60499,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L246" + "source_location": "L203" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_abstractions_dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_usersecrets_dependencies", "label": "dependencies", "_origin": "ast", "community": 250, @@ -60238,10 +60510,10 @@ "file_type": "code", "norm_label": "dependencies", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L247" + "source_location": "L204" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_abstractions_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_usersecrets_resolved", "label": "resolved", "_origin": "ast", "community": 250, @@ -60249,10 +60521,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L245" + "source_location": "L202" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_abstractions_type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_usersecrets_type", "label": "type", "_origin": "ast", "community": 250, @@ -60260,10 +60532,10 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L244" + "source_location": "L201" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_physical_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_abstractions_contenthash", "label": "contentHash", "_origin": "ast", "community": 250, @@ -60271,10 +60543,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L254" + "source_location": "L246" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_physical_dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_abstractions_dependencies", "label": "dependencies", "_origin": "ast", "community": 250, @@ -60282,10 +60554,10 @@ "file_type": "code", "norm_label": "dependencies", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L255" + "source_location": "L247" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_physical_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_abstractions_resolved", "label": "resolved", "_origin": "ast", "community": 250, @@ -60293,10 +60565,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L253" + "source_location": "L245" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_physical_type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_abstractions_type", "label": "type", "_origin": "ast", "community": 250, @@ -60304,10 +60576,10 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L252" + "source_location": "L244" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_physical_contenthash", "label": "contentHash", "_origin": "ast", "community": 250, @@ -60315,10 +60587,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L360" + "source_location": "L254" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_physical_dependencies", "label": "dependencies", "_origin": "ast", "community": 250, @@ -60326,10 +60598,10 @@ "file_type": "code", "norm_label": "dependencies", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L361" + "source_location": "L255" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_physical_resolved", "label": "resolved", "_origin": "ast", "community": 250, @@ -60337,10 +60609,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L359" + "source_location": "L253" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_fileproviders_physical_type", "label": "type", "_origin": "ast", "community": 250, @@ -60348,7 +60620,7 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L358" + "source_location": "L252" }, { "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_caching_abstractions", @@ -60361,6 +60633,17 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L122" }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_caching_memory", + "label": "Microsoft.Extensions.Caching.Memory", + "_origin": "ast", + "community": 250, + "community_name": "Microsoft.Extensions.Primitives", + "file_type": "code", + "norm_label": "microsoft.extensions.caching.memory", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L130" + }, { "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_configuration_abstractions", "label": "Microsoft.Extensions.Configuration.Abstractions", @@ -60383,6 +60666,17 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L177" }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_configuration_usersecrets", + "label": "Microsoft.Extensions.Configuration.UserSecrets", + "_origin": "ast", + "community": 250, + "community_name": "Microsoft.Extensions.Primitives", + "file_type": "code", + "norm_label": "microsoft.extensions.configuration.usersecrets", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L200" + }, { "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_fileproviders_abstractions", "label": "Microsoft.Extensions.FileProviders.Abstractions", @@ -60405,17 +60699,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L251" }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_options", - "label": "Microsoft.Extensions.Options", - "_origin": "ast", - "community": 250, - "community_name": "Microsoft.Extensions.Primitives", - "file_type": "code", - "norm_label": "microsoft.extensions.options", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L357" - }, { "id": "src_anichron_api_packages_lock_net10_0_testably_abstractions_filesystem_interface", "label": "Testably.Abstractions.FileSystem.Interface", @@ -61689,6 +61972,17 @@ "source_file": "", "source_location": "" }, + { + "id": "ireadonlyset", + "label": "IReadOnlySet", + "_origin": "ast", + "community": 27, + "community_name": "FileIngestionPipeline", + "file_type": "code", + "norm_label": "ireadonlyset", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_core_domain_mediaasset_anichron_core_domain_mediaasset_mediatype", "label": "MediaType", @@ -61717,6 +62011,17 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_worker_crawling_fileingestionpipeline_cs_exception", + "label": "Exception", + "_origin": "ast", + "community": 27, + "community_name": "FileIngestionPipeline", + "file_type": "code", + "norm_label": "exception", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_worker_crawling_fileingestionpipeline_cs_ifilesystem", "label": "IFileSystem", @@ -61728,6 +62033,17 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_worker_crawling_fileingestionpipeline_cs_ilogger", + "label": "ILogger", + "_origin": "ast", + "community": 27, + "community_name": "FileIngestionPipeline", + "file_type": "code", + "norm_label": "ilogger", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_worker_crawling_fileingestionpipeline_cs_ioptions", "label": "IOptions", @@ -61750,6 +62066,17 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_worker_crawling_fileingestionpipeline_cs_loggermessage", + "label": "LoggerMessage", + "_origin": "ast", + "community": 27, + "community_name": "FileIngestionPipeline", + "file_type": "code", + "norm_label": "loggermessage", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_worker_crawling_fileingestionpipeline_cs_task", "label": "Task", @@ -61806,6 +62133,39 @@ "source_file": "src/Anichron.Worker/Ingestion/IngestionItem.cs", "source_location": "L13" }, + { + "id": "src_anichron_worker_ingestion_livephotolinker_cs_ienumerable", + "label": "IEnumerable", + "_origin": "ast", + "community": 27, + "community_name": "FileIngestionPipeline", + "file_type": "code", + "norm_label": "ienumerable", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_livephotolinker_cs_ifilesystem", + "label": "IFileSystem", + "_origin": "ast", + "community": 27, + "community_name": "FileIngestionPipeline", + "file_type": "code", + "norm_label": "ifilesystem", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_livephotolinker_cs_ireadonlylist", + "label": "IReadOnlyList", + "_origin": "ast", + "community": 27, + "community_name": "FileIngestionPipeline", + "file_type": "code", + "norm_label": "ireadonlylist", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_infrastructure_packages_lock_microsoft_extensions_fileproviders_abstractions_contenthash", "label": "contentHash", @@ -62092,39 +62452,6 @@ "source_file": "src/Anichron.Core/GuidFactory.cs", "source_location": "L1" }, - { - "id": "src_anichron_core_guidfactory_cs_guid", - "label": "Guid", - "_origin": "ast", - "community": 275, - "community_name": "IGuidFactory", - "file_type": "code", - "norm_label": "guid", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_ingestion_pairedmovresolver_cs_iclock", - "label": "IClock", - "_origin": "ast", - "community": 275, - "community_name": "IGuidFactory", - "file_type": "code", - "norm_label": "iclock", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_ingestion_pairedmovresolver_cs_ifilesystem", - "label": "IFileSystem", - "_origin": "ast", - "community": 275, - "community_name": "IGuidFactory", - "file_type": "code", - "norm_label": "ifilesystem", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_worker_ingestion_proxy_proxyfilebuilder_cs_iclock", "label": "IClock", @@ -62147,100 +62474,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_names", - "label": "Names", - "_origin": "ast", - "community": 275, - "community_name": "IGuidFactory", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", - "scope_chain": [ - "s287" - ] - }, - "norm_label": "names", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/AlwaysOnMiddlewareTests.cs", - "source_location": "L15" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_cs_iclock", - "label": "IClock", - "_origin": "ast", - "community": 275, - "community_name": "IGuidFactory", - "file_type": "code", - "norm_label": "iclock", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_cs_ifilesystem", - "label": "IFileSystem", - "_origin": "ast", - "community": 275, - "community_name": "IGuidFactory", - "file_type": "code", - "norm_label": "ifilesystem", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_cs_ilogger", - "label": "ILogger", - "_origin": "ast", - "community": 275, - "community_name": "IGuidFactory", - "file_type": "code", - "norm_label": "ilogger", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_cs_memberdata", - "label": "MemberData", - "_origin": "ast", - "community": 275, - "community_name": "IGuidFactory", - "file_type": "code", - "norm_label": "memberdata", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_cs_theory", - "label": "Theory", - "_origin": "ast", - "community": 275, - "community_name": "IGuidFactory", - "file_type": "code", - "norm_label": "theory", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_cs_theorydata", - "label": "TheoryData", - "_origin": "ast", - "community": 275, - "community_name": "IGuidFactory", - "file_type": "code", - "norm_label": "theorydata", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_persistencemiddlewaretests_cs_ilogger", - "label": "ILogger", - "_origin": "ast", - "community": 275, - "community_name": "IGuidFactory", - "file_type": "code", - "norm_label": "ilogger", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_infrastructure_tests_unit_packages_lock_fluentassertions_contenthash", "label": "contentHash", @@ -63177,42 +63410,6 @@ "source_file": "docs/adr/0005-mutation-scope-excludes-unkillable-and-wiring-code.md", "source_location": "L1" }, - { - "id": "docs_adr_0005_mutation_scope_excludes_unkillable_and_wiring_code_mutation_scope_100_over_code_that_can_carry_a_signal", - "label": "Mutation scope: 100% over code that can carry a signal", - "_origin": "ast", - "community": 280, - "community_name": "Mutation scope: exclude generated, append-only code; include everything we author", - "file_type": "document", - "node_kind": "heading", - "norm_label": "mutation scope: 100% over code that can carry a signal", - "source_file": "docs/adr/0005-mutation-scope-excludes-unkillable-and-wiring-code.md", - "source_location": "L1" - }, - { - "id": "docs_adr_0005_mutation_scope_excludes_unkillable_and_wiring_code_the_rule", - "label": "The rule", - "_origin": "ast", - "community": 280, - "community_name": "Mutation scope: exclude generated, append-only code; include everything we author", - "file_type": "document", - "node_kind": "heading", - "norm_label": "the rule", - "source_file": "docs/adr/0005-mutation-scope-excludes-unkillable-and-wiring-code.md", - "source_location": "L19" - }, - { - "id": "docs_adr_0005_mutation_scope_excludes_unkillable_and_wiring_code_why_adr_0002_no_longer_fits", - "label": "Why ADR 0002 no longer fits", - "_origin": "ast", - "community": 280, - "community_name": "Mutation scope: exclude generated, append-only code; include everything we author", - "file_type": "document", - "node_kind": "heading", - "norm_label": "why adr 0002 no longer fits", - "source_file": "docs/adr/0005-mutation-scope-excludes-unkillable-and-wiring-code.md", - "source_location": "L10" - }, { "id": "docs_mutation_testing", "label": "mutation-testing.md", @@ -63340,7 +63537,7 @@ "label": "CancellationToken", "_origin": "ast", "community": 283, - "community_name": "Files (`mutate` in `src/stryker-config.json`)", + "community_name": "Consequences", "file_type": "code", "norm_label": "cancellationtoken", "source_file": "", @@ -63351,7 +63548,7 @@ "label": "Func", "_origin": "ast", "community": 283, - "community_name": "Files (`mutate` in `src/stryker-config.json`)", + "community_name": "Consequences", "file_type": "code", "norm_label": "func", "source_file": "", @@ -63362,30 +63559,70 @@ "label": "Task", "_origin": "ast", "community": 283, - "community_name": "Files (`mutate` in `src/stryker-config.json`)", + "community_name": "Consequences", "file_type": "code", "norm_label": "task", "source_file": "", "source_location": "" }, + { + "id": "src_anichron_worker_infrastructure_workerinidefaults_anichron_worker_infrastructure_workerinidefaults_entries", + "label": "Entries", + "_origin": "ast", + "community": 283, + "community_name": "Consequences", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Infrastructure", + "scope_chain": [ + "s46" + ] + }, + "norm_label": "entries", + "source_file": "src/Anichron.Worker/Infrastructure/WorkerIniDefaults.cs", + "source_location": "L7" + }, + { + "id": "src_anichron_worker_infrastructure_workerinidefaults_cs_ireadonlylist", + "label": "IReadOnlyList", + "_origin": "ast", + "community": 283, + "community_name": "Consequences", + "file_type": "code", + "norm_label": "ireadonlylist", + "source_file": "", + "source_location": "" + }, { "id": "docs_adr_0005_mutation_scope_excludes_unkillable_and_wiring_code_calls_ignore_methods", "label": "Calls (`ignore-methods`)", "_origin": "ast", "community": 283, - "community_name": "Files (`mutate` in `src/stryker-config.json`)", + "community_name": "Consequences", "file_type": "document", "node_kind": "heading", "norm_label": "calls (`ignore-methods`)", "source_file": "docs/adr/0005-mutation-scope-excludes-unkillable-and-wiring-code.md", "source_location": "L52" }, + { + "id": "docs_adr_0005_mutation_scope_excludes_unkillable_and_wiring_code_consequences", + "label": "Consequences", + "_origin": "ast", + "community": 283, + "community_name": "Consequences", + "file_type": "document", + "node_kind": "heading", + "norm_label": "consequences", + "source_file": "docs/adr/0005-mutation-scope-excludes-unkillable-and-wiring-code.md", + "source_location": "L93" + }, { "id": "docs_adr_0005_mutation_scope_excludes_unkillable_and_wiring_code_files_mutate_in_src_stryker_config_json", "label": "Files (`mutate` in `src/stryker-config.json`)", "_origin": "ast", "community": 283, - "community_name": "Files (`mutate` in `src/stryker-config.json`)", + "community_name": "Consequences", "file_type": "document", "node_kind": "heading", "norm_label": "files (`mutate` in `src/stryker-config.json`)", @@ -63397,25 +63634,61 @@ "label": "Members that need real PostgreSQL (`// Stryker disable all` before each member)", "_origin": "ast", "community": 283, - "community_name": "Files (`mutate` in `src/stryker-config.json`)", + "community_name": "Consequences", "file_type": "document", "node_kind": "heading", "norm_label": "members that need real postgresql (`// stryker disable all` before each member)", "source_file": "docs/adr/0005-mutation-scope-excludes-unkillable-and-wiring-code.md", "source_location": "L77" }, + { + "id": "docs_adr_0005_mutation_scope_excludes_unkillable_and_wiring_code_mutation_scope_100_over_code_that_can_carry_a_signal", + "label": "Mutation scope: 100% over code that can carry a signal", + "_origin": "ast", + "community": 283, + "community_name": "Consequences", + "file_type": "document", + "node_kind": "heading", + "norm_label": "mutation scope: 100% over code that can carry a signal", + "source_file": "docs/adr/0005-mutation-scope-excludes-unkillable-and-wiring-code.md", + "source_location": "L1" + }, + { + "id": "docs_adr_0005_mutation_scope_excludes_unkillable_and_wiring_code_the_rule", + "label": "The rule", + "_origin": "ast", + "community": 283, + "community_name": "Consequences", + "file_type": "document", + "node_kind": "heading", + "norm_label": "the rule", + "source_file": "docs/adr/0005-mutation-scope-excludes-unkillable-and-wiring-code.md", + "source_location": "L19" + }, { "id": "docs_adr_0005_mutation_scope_excludes_unkillable_and_wiring_code_what_is_excluded", "label": "What is excluded", "_origin": "ast", "community": 283, - "community_name": "Files (`mutate` in `src/stryker-config.json`)", + "community_name": "Consequences", "file_type": "document", "node_kind": "heading", "norm_label": "what is excluded", "source_file": "docs/adr/0005-mutation-scope-excludes-unkillable-and-wiring-code.md", "source_location": "L36" }, + { + "id": "docs_adr_0005_mutation_scope_excludes_unkillable_and_wiring_code_why_adr_0002_no_longer_fits", + "label": "Why ADR 0002 no longer fits", + "_origin": "ast", + "community": 283, + "community_name": "Consequences", + "file_type": "document", + "node_kind": "heading", + "norm_label": "why adr 0002 no longer fits", + "source_file": "docs/adr/0005-mutation-scope-excludes-unkillable-and-wiring-code.md", + "source_location": "L10" + }, { "id": "src_anichron_api_tests_unit_packages_lock_net10_0_sonaranalyzer_csharp", "label": "SonarAnalyzer.CSharp", @@ -63636,95 +63909,12 @@ "source_file": "", "source_location": "" }, - { - "id": "iserviceprovider", - "label": "IServiceProvider", - "_origin": "ast", - "community": 288, - "community_name": "IIngestionMiddleware", - "file_type": "code", - "norm_label": "iserviceprovider", - "source_file": "", - "source_location": "" - }, - { - "id": "iservicescope", - "label": "IServiceScope", - "_origin": "ast", - "community": 288, - "community_name": "IIngestionMiddleware", - "file_type": "code", - "norm_label": "iservicescope", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware", - "label": "IIngestionMiddleware.cs", - "_origin": "ast", - "community": 288, - "community_name": "IIngestionMiddleware", - "file_type": "code", - "norm_label": "iingestionmiddleware.cs", - "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IIngestionMiddleware.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_anichron_worker_ingestion_pipeline_iingestionmiddleware_order", - "label": "Order", - "_origin": "ast", - "community": 288, - "community_name": "IIngestionMiddleware", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Pipeline", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "order", - "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IIngestionMiddleware.cs", - "source_location": "L7" - }, - { - "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_cs_cancellationtoken", - "label": "CancellationToken", - "_origin": "ast", - "community": 288, - "community_name": "IIngestionMiddleware", - "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_cs_ingestiondelegate", - "label": "IngestionDelegate", - "_origin": "ast", - "community": 288, - "community_name": "IIngestionMiddleware", - "file_type": "code", - "norm_label": "ingestiondelegate", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_cs_task", - "label": "Task", - "_origin": "ast", - "community": 288, - "community_name": "IIngestionMiddleware", - "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_worker_ingestion_pipeline_ingestionpipelinerunner_cs_cancellationtoken", "label": "CancellationToken", "_origin": "ast", "community": 288, - "community_name": "IIngestionMiddleware", + "community_name": "IngestionPipelineRunner", "file_type": "code", "norm_label": "cancellationtoken", "source_file": "", @@ -63735,7 +63925,7 @@ "label": "Exception", "_origin": "ast", "community": 288, - "community_name": "IIngestionMiddleware", + "community_name": "IngestionPipelineRunner", "file_type": "code", "norm_label": "exception", "source_file": "", @@ -63746,7 +63936,7 @@ "label": "IEnumerable", "_origin": "ast", "community": 288, - "community_name": "IIngestionMiddleware", + "community_name": "IngestionPipelineRunner", "file_type": "code", "norm_label": "ienumerable", "source_file": "", @@ -63757,7 +63947,7 @@ "label": "IFileSystem", "_origin": "ast", "community": 288, - "community_name": "IIngestionMiddleware", + "community_name": "IngestionPipelineRunner", "file_type": "code", "norm_label": "ifilesystem", "source_file": "", @@ -63768,7 +63958,7 @@ "label": "ILogger", "_origin": "ast", "community": 288, - "community_name": "IIngestionMiddleware", + "community_name": "IngestionPipelineRunner", "file_type": "code", "norm_label": "ilogger", "source_file": "", @@ -63779,7 +63969,7 @@ "label": "IngestionDelegate", "_origin": "ast", "community": 288, - "community_name": "IIngestionMiddleware", + "community_name": "IngestionPipelineRunner", "file_type": "code", "norm_label": "ingestiondelegate", "source_file": "", @@ -63790,7 +63980,7 @@ "label": "IOptions", "_origin": "ast", "community": 288, - "community_name": "IIngestionMiddleware", + "community_name": "IngestionPipelineRunner", "file_type": "code", "norm_label": "ioptions", "source_file": "", @@ -63801,7 +63991,7 @@ "label": "IReadOnlyList", "_origin": "ast", "community": 288, - "community_name": "IIngestionMiddleware", + "community_name": "IngestionPipelineRunner", "file_type": "code", "norm_label": "ireadonlylist", "source_file": "", @@ -63812,7 +64002,7 @@ "label": "LoggerMessage", "_origin": "ast", "community": 288, - "community_name": "IIngestionMiddleware", + "community_name": "IngestionPipelineRunner", "file_type": "code", "norm_label": "loggermessage", "source_file": "", @@ -63823,56 +64013,12 @@ "label": "Task", "_origin": "ast", "community": 288, - "community_name": "IIngestionMiddleware", + "community_name": "IngestionPipelineRunner", "file_type": "code", "norm_label": "task", "source_file": "", "source_location": "" }, - { - "id": "src_anichron_worker_tests_unit_crawling_fileingestionpipelinetests_cs_guid", - "label": "Guid", - "_origin": "ast", - "community": 288, - "community_name": "IIngestionMiddleware", - "file_type": "code", - "norm_label": "guid", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_crawling_fileingestionpipelinetests_cs_ienumerable", - "label": "IEnumerable", - "_origin": "ast", - "community": 288, - "community_name": "IIngestionMiddleware", - "file_type": "code", - "norm_label": "ienumerable", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_crawling_fileingestionpipelinetests_cs_ilogger", - "label": "ILogger", - "_origin": "ast", - "community": 288, - "community_name": "IIngestionMiddleware", - "file_type": "code", - "norm_label": "ilogger", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_crawling_fileingestionpipelinetests_cs_iservicescopefactory", - "label": "IServiceScopeFactory", - "_origin": "ast", - "community": 288, - "community_name": "IIngestionMiddleware", - "file_type": "code", - "norm_label": "iservicescopefactory", - "source_file": "", - "source_location": "" - }, { "id": "ifilestreamfactory", "label": "IFileStreamFactory", @@ -63940,110 +64086,132 @@ "source_location": "" }, { - "id": "backgroundservice", - "label": "BackgroundService", + "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_cs_cancellationtoken", + "label": "CancellationToken", "_origin": "ast", "community": 29, - "community_name": "Worker", + "community_name": "ProxyStagingWriter", "file_type": "code", - "norm_label": "backgroundservice", + "norm_label": "cancellationtoken", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_crawling_worker_cs_cancellationtoken", - "label": "CancellationToken", + "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_cs_exception", + "label": "Exception", "_origin": "ast", "community": 29, - "community_name": "Worker", + "community_name": "ProxyStagingWriter", "file_type": "code", - "norm_label": "cancellationtoken", + "norm_label": "exception", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_crawling_worker_cs_guid", - "label": "Guid", + "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_cs_func", + "label": "Func", "_origin": "ast", "community": 29, - "community_name": "Worker", + "community_name": "ProxyStagingWriter", "file_type": "code", - "norm_label": "guid", + "norm_label": "func", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_crawling_worker_cs_ilogger", + "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_cs_iclock", + "label": "IClock", + "_origin": "ast", + "community": 29, + "community_name": "ProxyStagingWriter", + "file_type": "code", + "norm_label": "iclock", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_cs_ifilesystem", + "label": "IFileSystem", + "_origin": "ast", + "community": 29, + "community_name": "ProxyStagingWriter", + "file_type": "code", + "norm_label": "ifilesystem", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_cs_ilogger", "label": "ILogger", "_origin": "ast", "community": 29, - "community_name": "Worker", + "community_name": "ProxyStagingWriter", "file_type": "code", "norm_label": "ilogger", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_crawling_worker_cs_ioptions", + "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_cs_ioptions", "label": "IOptions", "_origin": "ast", "community": 29, - "community_name": "Worker", + "community_name": "ProxyStagingWriter", "file_type": "code", "norm_label": "ioptions", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_crawling_worker_cs_iservicescopefactory", - "label": "IServiceScopeFactory", + "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_cs_loggermessage", + "label": "LoggerMessage", "_origin": "ast", "community": 29, - "community_name": "Worker", + "community_name": "ProxyStagingWriter", "file_type": "code", - "norm_label": "iservicescopefactory", + "norm_label": "loggermessage", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_crawling_worker_cs_loggermessage", - "label": "LoggerMessage", + "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_cs_proxytype", + "label": "ProxyType", "_origin": "ast", "community": 29, - "community_name": "Worker", + "community_name": "ProxyStagingWriter", "file_type": "code", - "norm_label": "loggermessage", + "norm_label": "proxytype", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_crawling_worker_cs_task", + "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_cs_task", "label": "Task", "_origin": "ast", "community": 29, - "community_name": "Worker", + "community_name": "ProxyStagingWriter", "file_type": "code", "norm_label": "task", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_crawling_worker_cs_timeprovider", - "label": "TimeProvider", + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_videoproxymiddlewaretests_cs_ilogger", + "label": "ILogger", "_origin": "ast", "community": 29, - "community_name": "Worker", + "community_name": "ProxyStagingWriter", "file_type": "code", - "norm_label": "timeprovider", + "norm_label": "ilogger", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_crawling_workertests_cs_ilogger", + "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxystagingwritertests_cs_ilogger", "label": "ILogger", "_origin": "ast", "community": 29, - "community_name": "Worker", + "community_name": "ProxyStagingWriter", "file_type": "code", "norm_label": "ilogger", "source_file": "", @@ -64188,280 +64356,266 @@ "source_location": "" }, { - "id": "src_anichron_core_data_repository_refreshtokenrepository_cs_cancellationtoken", - "label": "CancellationToken", + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_persistencemiddlewaretests_cs_ilogger", + "label": "ILogger", "_origin": "ast", - "community": 291, - "community_name": "RefreshToken", + "community": 290, + "community_name": "PersistenceMiddleware", "file_type": "code", - "norm_label": "cancellationtoken", + "norm_label": "ilogger", "source_file": "", "source_location": "" }, { - "id": "src_anichron_core_data_repository_refreshtokenrepository_cs_guid", - "label": "Guid", + "id": "src_anichron_api_services_lockoutservice_cs_cancellationtoken", + "label": "CancellationToken", "_origin": "ast", "community": 291, - "community_name": "RefreshToken", + "community_name": "LockoutService", "file_type": "code", - "norm_label": "guid", + "norm_label": "cancellationtoken", "source_file": "", "source_location": "" }, { - "id": "src_anichron_core_data_repository_refreshtokenrepository_cs_instant", + "id": "src_anichron_api_services_lockoutservice_cs_instant", "label": "Instant", "_origin": "ast", "community": 291, - "community_name": "RefreshToken", + "community_name": "LockoutService", "file_type": "code", "norm_label": "instant", "source_file": "", "source_location": "" }, { - "id": "src_anichron_core_data_repository_refreshtokenrepository_cs_task", + "id": "src_anichron_api_services_lockoutservice_cs_task", "label": "Task", "_origin": "ast", "community": 291, - "community_name": "RefreshToken", + "community_name": "LockoutService", "file_type": "code", "norm_label": "task", "source_file": "", "source_location": "" }, { - "id": "src_anichron_core_domain_refreshtoken", - "label": "RefreshToken.cs", + "id": "src_anichron_api_tests_unit_services_lockoutservicetests_cs_inlinedata", + "label": "InlineData", "_origin": "ast", "community": 291, - "community_name": "RefreshToken", + "community_name": "LockoutService", "file_type": "code", - "norm_label": "refreshtoken.cs", - "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", - "source_location": "L1" + "norm_label": "inlinedata", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_createdat", - "label": "CreatedAt", + "id": "src_anichron_api_tests_unit_services_lockoutservicetests_cs_theory", + "label": "Theory", "_origin": "ast", "community": 291, - "community_name": "RefreshToken", + "community_name": "LockoutService", "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "createdat", - "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", - "source_location": "L9" + "norm_label": "theory", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_expiresat", - "label": "ExpiresAt", + "id": "csharp_namespace:b5e33ebde16061e7", + "label": "Anichron.Core.Tests.Unit", "_origin": "ast", - "community": 291, - "community_name": "RefreshToken", + "community": 292, + "community_name": "WorkerInitializer", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s0" - ] + "kind": "csharp_namespace", + "namespace": "Anichron.Core.Tests.Unit" }, - "norm_label": "expiresat", - "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", - "source_location": "L10" + "norm_label": "anichron.core.tests.unit", + "source_file": "src/Anichron.Core.Tests.Unit/StoragePathTests.cs", + "source_location": "L1", + "type": "namespace" }, { - "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_id", - "label": "Id", + "id": "ihostedservice", + "label": "IHostedService", "_origin": "ast", - "community": 291, - "community_name": "RefreshToken", + "community": 292, + "community_name": "WorkerInitializer", "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "id", - "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", - "source_location": "L5" + "norm_label": "ihostedservice", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_revokedat", - "label": "RevokedAt", + "id": "src_anichron_core_storagepath", + "label": "StoragePath.cs", "_origin": "ast", - "community": 291, - "community_name": "RefreshToken", + "community": 292, + "community_name": "WorkerInitializer", "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "revokedat", - "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", - "source_location": "L11" + "norm_label": "storagepath.cs", + "source_file": "src/Anichron.Core/StoragePath.cs", + "source_location": "L1" }, { - "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_tokenhash", - "label": "TokenHash", + "id": "src_anichron_core_storagepath_cs_ienumerable", + "label": "IEnumerable", "_origin": "ast", - "community": 291, - "community_name": "RefreshToken", + "community": 292, + "community_name": "WorkerInitializer", "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "tokenhash", - "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", - "source_location": "L8" + "norm_label": "ienumerable", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_user", - "label": "User", + "id": "src_anichron_core_tests_unit_storagepathtests", + "label": "StoragePathTests.cs", "_origin": "ast", - "community": 291, - "community_name": "RefreshToken", + "community": 292, + "community_name": "WorkerInitializer", "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "user", - "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", - "source_location": "L13" + "norm_label": "storagepathtests.cs", + "source_file": "src/Anichron.Core.Tests.Unit/StoragePathTests.cs", + "source_location": "L1" }, { - "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_userid", - "label": "UserId", + "id": "src_anichron_core_tests_unit_storagepathtests_cs_fact", + "label": "Fact", "_origin": "ast", - "community": 291, - "community_name": "RefreshToken", + "community": 292, + "community_name": "WorkerInitializer", "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "userid", - "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", - "source_location": "L6" + "norm_label": "fact", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_core_domain_refreshtoken_cs_guid", - "label": "Guid", + "id": "src_anichron_core_tests_unit_storagepathtests_cs_inlinedata", + "label": "InlineData", "_origin": "ast", - "community": 291, - "community_name": "RefreshToken", + "community": 292, + "community_name": "WorkerInitializer", "file_type": "code", - "norm_label": "guid", + "norm_label": "inlinedata", "source_file": "", "source_location": "" }, { - "id": "src_anichron_core_domain_refreshtoken_cs_instant", - "label": "Instant", + "id": "src_anichron_core_tests_unit_storagepathtests_cs_theory", + "label": "Theory", "_origin": "ast", - "community": 291, - "community_name": "RefreshToken", + "community": 292, + "community_name": "WorkerInitializer", "file_type": "code", - "norm_label": "instant", + "norm_label": "theory", "source_file": "", "source_location": "" }, { - "id": "csharp_namespace:b5e33ebde16061e7", - "label": "Anichron.Core.Tests.Unit", + "id": "src_anichron_worker_crawling_workerstate", + "label": "WorkerState.cs", + "_origin": "ast", + "community": 292, + "community_name": "WorkerInitializer", + "file_type": "code", + "norm_label": "workerstate.cs", + "source_file": "src/Anichron.Worker/Crawling/WorkerState.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_worker_crawling_workerstate_anichron_worker_crawling_workerstate_resolveduserid", + "label": "ResolvedUserId", "_origin": "ast", "community": 292, - "community_name": "StoragePathTests", + "community_name": "WorkerInitializer", "file_type": "code", "metadata": { - "kind": "csharp_namespace", - "namespace": "Anichron.Core.Tests.Unit" + "namespace": "Anichron.Worker.Crawling", + "scope_chain": [ + "s0" + ] }, - "norm_label": "anichron.core.tests.unit", - "source_file": "src/Anichron.Core.Tests.Unit/StoragePathTests.cs", - "source_location": "L1", - "type": "namespace" + "norm_label": "resolveduserid", + "source_file": "src/Anichron.Worker/Crawling/WorkerState.cs", + "source_location": "L7" }, { - "id": "src_anichron_core_storagepath", - "label": "StoragePath.cs", + "id": "src_anichron_worker_crawling_workerstate_cs_guid", + "label": "Guid", "_origin": "ast", "community": 292, - "community_name": "StoragePathTests", + "community_name": "WorkerInitializer", "file_type": "code", - "norm_label": "storagepath.cs", - "source_file": "src/Anichron.Core/StoragePath.cs", - "source_location": "L1" + "norm_label": "guid", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_core_storagepath_cs_ienumerable", - "label": "IEnumerable", + "id": "src_anichron_worker_startup_workerinitializer_cs_cancellationtoken", + "label": "CancellationToken", "_origin": "ast", "community": 292, - "community_name": "StoragePathTests", + "community_name": "WorkerInitializer", "file_type": "code", - "norm_label": "ienumerable", + "norm_label": "cancellationtoken", "source_file": "", "source_location": "" }, { - "id": "src_anichron_core_tests_unit_storagepathtests", - "label": "StoragePathTests.cs", + "id": "src_anichron_worker_startup_workerinitializer_cs_ilogger", + "label": "ILogger", "_origin": "ast", "community": 292, - "community_name": "StoragePathTests", + "community_name": "WorkerInitializer", "file_type": "code", - "norm_label": "storagepathtests.cs", - "source_file": "src/Anichron.Core.Tests.Unit/StoragePathTests.cs", - "source_location": "L1" + "norm_label": "ilogger", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_core_tests_unit_storagepathtests_cs_fact", - "label": "Fact", + "id": "src_anichron_worker_startup_workerinitializer_cs_ioptions", + "label": "IOptions", "_origin": "ast", "community": 292, - "community_name": "StoragePathTests", + "community_name": "WorkerInitializer", "file_type": "code", - "norm_label": "fact", + "norm_label": "ioptions", "source_file": "", "source_location": "" }, { - "id": "src_anichron_core_tests_unit_storagepathtests_cs_inlinedata", - "label": "InlineData", + "id": "src_anichron_worker_startup_workerinitializer_cs_iservicescopefactory", + "label": "IServiceScopeFactory", "_origin": "ast", "community": 292, - "community_name": "StoragePathTests", + "community_name": "WorkerInitializer", "file_type": "code", - "norm_label": "inlinedata", + "norm_label": "iservicescopefactory", "source_file": "", "source_location": "" }, { - "id": "src_anichron_core_tests_unit_storagepathtests_cs_theory", - "label": "Theory", + "id": "src_anichron_worker_startup_workerinitializer_cs_loggermessage", + "label": "LoggerMessage", "_origin": "ast", "community": 292, - "community_name": "StoragePathTests", + "community_name": "WorkerInitializer", "file_type": "code", - "norm_label": "theory", + "norm_label": "loggermessage", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_startup_workerinitializer_cs_task", + "label": "Task", + "_origin": "ast", + "community": 292, + "community_name": "WorkerInitializer", + "file_type": "code", + "norm_label": "task", "source_file": "", "source_location": "" }, @@ -64514,7 +64668,7 @@ "label": "GuidFactory", "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -64531,7 +64685,7 @@ "label": "StorageConfigs", "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -64548,7 +64702,7 @@ "label": "UnitOfWork", "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -64565,7 +64719,7 @@ "label": "Users", "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.API.Tests.Unit.Services", @@ -64582,7 +64736,7 @@ "label": "ArgumentNullException", "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "norm_label": "argumentnullexception", "source_file": "", @@ -64593,7 +64747,7 @@ "label": "CancellationToken", "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "norm_label": "cancellationtoken", "source_file": "", @@ -64604,7 +64758,7 @@ "label": "DbUpdateException", "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "norm_label": "dbupdateexception", "source_file": "", @@ -64615,7 +64769,7 @@ "label": "Fact", "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "norm_label": "fact", "source_file": "", @@ -64626,7 +64780,7 @@ "label": "Guid", "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "norm_label": "guid", "source_file": "", @@ -64637,7 +64791,7 @@ "label": "IGuidFactory", "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "norm_label": "iguidfactory", "source_file": "", @@ -64648,7 +64802,7 @@ "label": "InlineData", "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "norm_label": "inlinedata", "source_file": "", @@ -64659,7 +64813,7 @@ "label": "Task", "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "norm_label": "task", "source_file": "", @@ -64670,220 +64824,241 @@ "label": "Theory", "_origin": "ast", "community": 294, - "community_name": "TestFixture", + "community_name": "UserStorageConfig", "file_type": "code", "norm_label": "theory", "source_file": "", "source_location": "" }, { - "id": "docs_adr_0003_self_host_mutation_reports", - "label": "0003-self-host-mutation-reports.md", + "id": "src_anichron_core_data_repository_userstorageconfigrepository_cs_anichrondbcontext", + "label": "AnichronDbContext", "_origin": "ast", - "community": 295, - "community_name": "Self-host mutation reports; do not use the Stryker Dashboard", - "file_type": "document", - "node_kind": "page", - "norm_label": "0003-self-host-mutation-reports.md", - "source_file": "docs/adr/0003-self-host-mutation-reports.md", - "source_location": "L1" + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "norm_label": "anichrondbcontext", + "source_file": "", + "source_location": "" }, { - "id": "docs_adr_0003_self_host_mutation_reports_consequences", - "label": "Consequences", + "id": "src_anichron_core_data_repository_userstorageconfigrepository_cs_cancellationtoken", + "label": "CancellationToken", "_origin": "ast", - "community": 295, - "community_name": "Self-host mutation reports; do not use the Stryker Dashboard", - "file_type": "document", - "node_kind": "heading", - "norm_label": "consequences", - "source_file": "docs/adr/0003-self-host-mutation-reports.md", - "source_location": "L29" + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "norm_label": "cancellationtoken", + "source_file": "", + "source_location": "" }, { - "id": "docs_adr_0003_self_host_mutation_reports_self_host_mutation_reports_do_not_use_the_stryker_dashboard", - "label": "Self-host mutation reports; do not use the Stryker Dashboard", + "id": "src_anichron_core_data_repository_userstorageconfigrepository_cs_guid", + "label": "Guid", "_origin": "ast", - "community": 295, - "community_name": "Self-host mutation reports; do not use the Stryker Dashboard", - "file_type": "document", - "node_kind": "heading", - "norm_label": "self-host mutation reports; do not use the stryker dashboard", - "source_file": "docs/adr/0003-self-host-mutation-reports.md", - "source_location": "L1" + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "norm_label": "guid", + "source_file": "", + "source_location": "" }, { - "id": "docs_adr_0003_self_host_mutation_reports_why_when_the_dashboard_is_the_obvious_path", - "label": "Why, when the dashboard is the obvious path", + "id": "src_anichron_core_data_repository_userstorageconfigrepository_cs_list", + "label": "List", "_origin": "ast", - "community": 295, - "community_name": "Self-host mutation reports; do not use the Stryker Dashboard", - "file_type": "document", - "node_kind": "heading", - "norm_label": "why, when the dashboard is the obvious path", - "source_file": "docs/adr/0003-self-host-mutation-reports.md", - "source_location": "L12" + "community": 294, + "community_name": "UserStorageConfig", + "file_type": "code", + "norm_label": "list", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_visualstudio_threading_analyzers_contenthash", - "label": "contentHash", + "id": "src_anichron_core_data_repository_userstorageconfigrepository_cs_task", + "label": "Task", "_origin": "ast", - "community": 296, - "community_name": "Microsoft.VisualStudio.Threading.Analyzers", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L37" + "norm_label": "task", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_visualstudio_threading_analyzers_requested", - "label": "requested", + "id": "src_anichron_core_domain_userstorageconfig", + "label": "UserStorageConfig.cs", "_origin": "ast", - "community": 296, - "community_name": "Microsoft.VisualStudio.Threading.Analyzers", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", - "norm_label": "requested", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L35" + "norm_label": "userstorageconfig.cs", + "source_file": "src/Anichron.Core/Domain/UserStorageConfig.cs", + "source_location": "L1" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_visualstudio_threading_analyzers_resolved", - "label": "resolved", + "id": "src_anichron_core_domain_userstorageconfig_anichron_core_domain_userstorageconfig_assets", + "label": "Assets", "_origin": "ast", - "community": 296, - "community_name": "Microsoft.VisualStudio.Threading.Analyzers", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L36" + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s3" + ] + }, + "norm_label": "assets", + "source_file": "src/Anichron.Core/Domain/UserStorageConfig.cs", + "source_location": "L14" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_visualstudio_threading_analyzers_type", - "label": "type", + "id": "src_anichron_core_domain_userstorageconfig_anichron_core_domain_userstorageconfig_id", + "label": "Id", "_origin": "ast", - "community": 296, - "community_name": "Microsoft.VisualStudio.Threading.Analyzers", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L34" + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s3" + ] + }, + "norm_label": "id", + "source_file": "src/Anichron.Core/Domain/UserStorageConfig.cs", + "source_location": "L5" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_visualstudio_threading_analyzers", - "label": "Microsoft.VisualStudio.Threading.Analyzers", + "id": "src_anichron_core_domain_userstorageconfig_anichron_core_domain_userstorageconfig_isactive", + "label": "IsActive", "_origin": "ast", - "community": 296, - "community_name": "Microsoft.VisualStudio.Threading.Analyzers", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", - "norm_label": "microsoft.visualstudio.threading.analyzers", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L33" + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s3" + ] + }, + "norm_label": "isactive", + "source_file": "src/Anichron.Core/Domain/UserStorageConfig.cs", + "source_location": "L10" }, { - "id": "src_anichron_core_data_repository_refreshtokenrepository_cs_anichrondbcontext", - "label": "AnichronDbContext", + "id": "src_anichron_core_domain_userstorageconfig_anichron_core_domain_userstorageconfig_rootpath", + "label": "RootPath", "_origin": "ast", - "community": 297, - "community_name": "EfRefreshTokenRepository", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", - "norm_label": "anichrondbcontext", - "source_file": "", - "source_location": "" + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s3" + ] + }, + "norm_label": "rootpath", + "source_file": "src/Anichron.Core/Domain/UserStorageConfig.cs", + "source_location": "L9" }, { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_cs_fact", - "label": "Fact", + "id": "src_anichron_core_domain_userstorageconfig_anichron_core_domain_userstorageconfig_user", + "label": "User", "_origin": "ast", - "community": 297, - "community_name": "EfRefreshTokenRepository", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", - "norm_label": "fact", - "source_file": "", - "source_location": "" + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s3" + ] + }, + "norm_label": "user", + "source_file": "src/Anichron.Core/Domain/UserStorageConfig.cs", + "source_location": "L13" }, { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_cs_guid", - "label": "Guid", + "id": "src_anichron_core_domain_userstorageconfig_anichron_core_domain_userstorageconfig_userid", + "label": "UserId", "_origin": "ast", - "community": 297, - "community_name": "EfRefreshTokenRepository", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", - "norm_label": "guid", - "source_file": "", - "source_location": "" + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s3" + ] + }, + "norm_label": "userid", + "source_file": "src/Anichron.Core/Domain/UserStorageConfig.cs", + "source_location": "L6" }, { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_cs_instant", - "label": "Instant", + "id": "src_anichron_core_domain_userstorageconfig_cs_guid", + "label": "Guid", "_origin": "ast", - "community": 297, - "community_name": "EfRefreshTokenRepository", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", - "norm_label": "instant", + "norm_label": "guid", "source_file": "", "source_location": "" }, { - "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_cs_task", - "label": "Task", + "id": "src_anichron_core_domain_userstorageconfig_cs_icollection", + "label": "ICollection", "_origin": "ast", - "community": 297, - "community_name": "EfRefreshTokenRepository", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", - "norm_label": "task", + "norm_label": "icollection", "source_file": "", "source_location": "" }, { - "id": "src_anichron_api_tests_unit_packages_lock_microsoft_bcl_cryptography_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 298, - "community_name": "Microsoft.Bcl.Cryptography", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.API.Tests.Unit/packages.lock.json", - "source_location": "L126" - }, - { - "id": "src_anichron_api_tests_unit_packages_lock_microsoft_bcl_cryptography_resolved", - "label": "resolved", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_cs_fact", + "label": "Fact", "_origin": "ast", - "community": 298, - "community_name": "Microsoft.Bcl.Cryptography", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.API.Tests.Unit/packages.lock.json", - "source_location": "L125" + "norm_label": "fact", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_api_tests_unit_packages_lock_microsoft_bcl_cryptography_type", - "label": "type", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_cs_guid", + "label": "Guid", "_origin": "ast", - "community": 298, - "community_name": "Microsoft.Bcl.Cryptography", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.API.Tests.Unit/packages.lock.json", - "source_location": "L124" + "norm_label": "guid", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_api_tests_unit_packages_lock_net10_0_microsoft_bcl_cryptography", - "label": "Microsoft.Bcl.Cryptography", + "id": "src_anichron_core_tests_unit_data_repository_userstorageconfigrepositorytests_cs_task", + "label": "Task", "_origin": "ast", - "community": 298, - "community_name": "Microsoft.Bcl.Cryptography", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", - "norm_label": "microsoft.bcl.cryptography", - "source_file": "src/Anichron.API.Tests.Unit/packages.lock.json", - "source_location": "L123" + "norm_label": "task", + "source_file": "", + "source_location": "" }, { "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_testfixture_storageconfigrepository", "label": "StorageConfigRepository", "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -64899,8 +65074,8 @@ "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_testfixture_unitofwork", "label": "UnitOfWork", "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -64916,8 +65091,8 @@ "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_testfixture_userrepository", "label": "UserRepository", "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -64933,8 +65108,8 @@ "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_anichron_worker_tests_unit_startup_testfixture_workerstate", "label": "WorkerState", "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Tests.Unit.Startup", @@ -64950,8 +65125,8 @@ "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_cs_cancellationtoken", "label": "CancellationToken", "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "norm_label": "cancellationtoken", "source_file": "", @@ -64961,8 +65136,8 @@ "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_cs_fact", "label": "Fact", "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "norm_label": "fact", "source_file": "", @@ -64972,8 +65147,8 @@ "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_cs_ilogger", "label": "ILogger", "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "norm_label": "ilogger", "source_file": "", @@ -64983,8 +65158,8 @@ "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_cs_inlinedata", "label": "InlineData", "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "norm_label": "inlinedata", "source_file": "", @@ -64994,8 +65169,8 @@ "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_cs_invalidoperationexception", "label": "InvalidOperationException", "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "norm_label": "invalidoperationexception", "source_file": "", @@ -65005,8 +65180,8 @@ "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_cs_iservicescopefactory", "label": "IServiceScopeFactory", "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "norm_label": "iservicescopefactory", "source_file": "", @@ -65016,8 +65191,8 @@ "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_cs_task", "label": "Task", "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "norm_label": "task", "source_file": "", @@ -65027,8 +65202,8 @@ "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_cs_theory", "label": "Theory", "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "norm_label": "theory", "source_file": "", @@ -65038,29 +65213,269 @@ "id": "src_anichron_worker_tests_unit_startup_workerinitializertests_cs_workerstate", "label": "WorkerState", "_origin": "ast", - "community": 299, - "community_name": "TestFixture", + "community": 294, + "community_name": "UserStorageConfig", "file_type": "code", "norm_label": "workerstate", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_proxydirectorycreatingmiddleware_order", - "label": "Order", + "id": "docs_adr_0003_self_host_mutation_reports", + "label": "0003-self-host-mutation-reports.md", "_origin": "ast", - "community": 3, - "community_name": "IngestionPipelineRunnerTests", + "community": 295, + "community_name": "Self-host mutation reports; do not use the Stryker Dashboard", + "file_type": "document", + "node_kind": "page", + "norm_label": "0003-self-host-mutation-reports.md", + "source_file": "docs/adr/0003-self-host-mutation-reports.md", + "source_location": "L1" + }, + { + "id": "docs_adr_0003_self_host_mutation_reports_consequences", + "label": "Consequences", + "_origin": "ast", + "community": 295, + "community_name": "Self-host mutation reports; do not use the Stryker Dashboard", + "file_type": "document", + "node_kind": "heading", + "norm_label": "consequences", + "source_file": "docs/adr/0003-self-host-mutation-reports.md", + "source_location": "L29" + }, + { + "id": "docs_adr_0003_self_host_mutation_reports_self_host_mutation_reports_do_not_use_the_stryker_dashboard", + "label": "Self-host mutation reports; do not use the Stryker Dashboard", + "_origin": "ast", + "community": 295, + "community_name": "Self-host mutation reports; do not use the Stryker Dashboard", + "file_type": "document", + "node_kind": "heading", + "norm_label": "self-host mutation reports; do not use the stryker dashboard", + "source_file": "docs/adr/0003-self-host-mutation-reports.md", + "source_location": "L1" + }, + { + "id": "docs_adr_0003_self_host_mutation_reports_why_when_the_dashboard_is_the_obvious_path", + "label": "Why, when the dashboard is the obvious path", + "_origin": "ast", + "community": 295, + "community_name": "Self-host mutation reports; do not use the Stryker Dashboard", + "file_type": "document", + "node_kind": "heading", + "norm_label": "why, when the dashboard is the obvious path", + "source_file": "docs/adr/0003-self-host-mutation-reports.md", + "source_location": "L12" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_visualstudio_threading_analyzers_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 296, + "community_name": "Microsoft.VisualStudio.Threading.Analyzers", "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", - "scope_chain": [ - "s368" - ] - }, - "norm_label": "order", - "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", - "source_location": "L370" + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L37" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_visualstudio_threading_analyzers_requested", + "label": "requested", + "_origin": "ast", + "community": 296, + "community_name": "Microsoft.VisualStudio.Threading.Analyzers", + "file_type": "code", + "norm_label": "requested", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L35" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_visualstudio_threading_analyzers_resolved", + "label": "resolved", + "_origin": "ast", + "community": 296, + "community_name": "Microsoft.VisualStudio.Threading.Analyzers", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L36" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_visualstudio_threading_analyzers_type", + "label": "type", + "_origin": "ast", + "community": 296, + "community_name": "Microsoft.VisualStudio.Threading.Analyzers", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L34" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_visualstudio_threading_analyzers", + "label": "Microsoft.VisualStudio.Threading.Analyzers", + "_origin": "ast", + "community": 296, + "community_name": "Microsoft.VisualStudio.Threading.Analyzers", + "file_type": "code", + "norm_label": "microsoft.visualstudio.threading.analyzers", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L33" + }, + { + "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_cs_dictionary", + "label": "Dictionary", + "_origin": "ast", + "community": 297, + "community_name": "ForwardedHeadersRateLimitTests", + "file_type": "code", + "norm_label": "dictionary", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_cs_fact", + "label": "Fact", + "_origin": "ast", + "community": 297, + "community_name": "ForwardedHeadersRateLimitTests", + "file_type": "code", + "norm_label": "fact", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_cs_formatexception", + "label": "FormatException", + "_origin": "ast", + "community": 297, + "community_name": "ForwardedHeadersRateLimitTests", + "file_type": "code", + "norm_label": "formatexception", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_cs_httpresponsemessage", + "label": "HttpResponseMessage", + "_origin": "ast", + "community": 297, + "community_name": "ForwardedHeadersRateLimitTests", + "file_type": "code", + "norm_label": "httpresponsemessage", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_cs_list", + "label": "List", + "_origin": "ast", + "community": 297, + "community_name": "ForwardedHeadersRateLimitTests", + "file_type": "code", + "norm_label": "list", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_api_tests_unit_infrastructure_forwardedheadersratelimittests_cs_task", + "label": "Task", + "_origin": "ast", + "community": 297, + "community_name": "ForwardedHeadersRateLimitTests", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, + { + "id": "webapplication", + "label": "WebApplication", + "_origin": "ast", + "community": 297, + "community_name": "ForwardedHeadersRateLimitTests", + "file_type": "code", + "norm_label": "webapplication", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_api_tests_unit_packages_lock_microsoft_bcl_cryptography_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 298, + "community_name": "Microsoft.Bcl.Cryptography", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.API.Tests.Unit/packages.lock.json", + "source_location": "L126" + }, + { + "id": "src_anichron_api_tests_unit_packages_lock_microsoft_bcl_cryptography_resolved", + "label": "resolved", + "_origin": "ast", + "community": 298, + "community_name": "Microsoft.Bcl.Cryptography", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.API.Tests.Unit/packages.lock.json", + "source_location": "L125" + }, + { + "id": "src_anichron_api_tests_unit_packages_lock_microsoft_bcl_cryptography_type", + "label": "type", + "_origin": "ast", + "community": 298, + "community_name": "Microsoft.Bcl.Cryptography", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.API.Tests.Unit/packages.lock.json", + "source_location": "L124" + }, + { + "id": "src_anichron_api_tests_unit_packages_lock_net10_0_microsoft_bcl_cryptography", + "label": "Microsoft.Bcl.Cryptography", + "_origin": "ast", + "community": 298, + "community_name": "Microsoft.Bcl.Cryptography", + "file_type": "code", + "norm_label": "microsoft.bcl.cryptography", + "source_file": "src/Anichron.API.Tests.Unit/packages.lock.json", + "source_location": "L123" + }, + { + "id": "src_anichron_worker_ingestion_proxy_proxyshardstrategy", + "label": "ProxyShardStrategy.cs", + "_origin": "ast", + "community": 299, + "community_name": "IProxyDirectoryStrategy", + "file_type": "code", + "norm_label": "proxyshardstrategy.cs", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyShardStrategy.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_worker_ingestion_proxy_proxyshardstrategy_cs_guid", + "label": "Guid", + "_origin": "ast", + "community": 299, + "community_name": "IProxyDirectoryStrategy", + "file_type": "code", + "norm_label": "guid", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_cs_fact", + "label": "Fact", + "_origin": "ast", + "community": 299, + "community_name": "IProxyDirectoryStrategy", + "file_type": "code", + "norm_label": "fact", + "source_file": "", + "source_location": "" }, { "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_proxywritingmiddleware_order", @@ -65163,17 +65578,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_cs_ifilesystem", - "label": "IFileSystem", - "_origin": "ast", - "community": 3, - "community_name": "IngestionPipelineRunnerTests", - "file_type": "code", - "norm_label": "ifilesystem", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_cs_ilogger", "label": "ILogger", @@ -65339,17 +65743,6 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L81" }, - { - "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_dependencyinjection", - "label": "Microsoft.Extensions.DependencyInjection", - "_origin": "ast", - "community": 30, - "community_name": "dependencies", - "file_type": "code", - "norm_label": "microsoft.extensions.dependencyinjection", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L82" - }, { "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_diagnostics", "label": "Microsoft.Extensions.Diagnostics", @@ -65361,17 +65754,6 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L84" }, - { - "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_diagnostics_abstractions", - "label": "Microsoft.Extensions.Diagnostics.Abstractions", - "_origin": "ast", - "community": 30, - "community_name": "dependencies", - "file_type": "code", - "norm_label": "microsoft.extensions.diagnostics.abstractions", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L365" - }, { "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_fileproviders_abstractions", "label": "Microsoft.Extensions.FileProviders.Abstractions", @@ -65395,26 +65777,26 @@ "source_location": "L86" }, { - "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_hosting_abstractions", - "label": "Microsoft.Extensions.Hosting.Abstractions", + "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_filesystemglobbing", + "label": "Microsoft.Extensions.FileSystemGlobbing", "_origin": "ast", "community": 30, "community_name": "dependencies", "file_type": "code", - "norm_label": "microsoft.extensions.hosting.abstractions", + "norm_label": "microsoft.extensions.filesystemglobbing", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L87" + "source_location": "L392" }, { - "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_logging_abstractions", - "label": "Microsoft.Extensions.Logging.Abstractions", + "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_hosting_abstractions", + "label": "Microsoft.Extensions.Hosting.Abstractions", "_origin": "ast", "community": 30, "community_name": "dependencies", "file_type": "code", - "norm_label": "microsoft.extensions.logging.abstractions", + "norm_label": "microsoft.extensions.hosting.abstractions", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L89" + "source_location": "L87" }, { "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_logging_console", @@ -65461,15 +65843,114 @@ "source_location": "L94" }, { - "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_options_configurationextensions", - "label": "Microsoft.Extensions.Options.ConfigurationExtensions", + "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_primitives", + "label": "Microsoft.Extensions.Primitives", "_origin": "ast", "community": 30, "community_name": "dependencies", "file_type": "code", - "norm_label": "microsoft.extensions.options.configurationextensions", + "norm_label": "microsoft.extensions.primitives", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L366" + "source_location": "L236" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_caching_abstractions_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L255" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_caching_abstractions_dependencies", + "label": "dependencies", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L256" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_caching_abstractions_resolved", + "label": "resolved", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L254" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_caching_abstractions_type", + "label": "type", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L253" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_abstractions_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L275" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_abstractions_dependencies", + "label": "dependencies", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L276" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_abstractions_resolved", + "label": "resolved", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L274" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_abstractions_type", + "label": "type", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L273" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_binder_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L283" }, { "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_binder_dependencies", @@ -65482,6 +65963,39 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L284" }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_binder_resolved", + "label": "resolved", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L282" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_binder_type", + "label": "type", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L281" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_commandline_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L292" + }, { "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_commandline_dependencies", "label": "dependencies", @@ -65493,6 +66007,39 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L293" }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_commandline_resolved", + "label": "resolved", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L291" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_commandline_type", + "label": "type", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L290" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_environmentvariables_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L301" + }, { "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_environmentvariables_dependencies", "label": "dependencies", @@ -65504,6 +66051,39 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L302" }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_environmentvariables_resolved", + "label": "resolved", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L300" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_environmentvariables_type", + "label": "type", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L299" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_fileextensions_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L310" + }, { "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_fileextensions_dependencies", "label": "dependencies", @@ -65515,6 +66095,39 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L311" }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_fileextensions_resolved", + "label": "resolved", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L309" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_fileextensions_type", + "label": "type", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L308" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_ini_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L60" + }, { "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_ini_dependencies", "label": "dependencies", @@ -65526,6 +66139,50 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L61" }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_ini_requested", + "label": "requested", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "requested", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L58" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_ini_resolved", + "label": "resolved", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L59" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_ini_type", + "label": "type", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L57" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_json_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L322" + }, { "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_json_dependencies", "label": "dependencies", @@ -65537,6 +66194,39 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L323" }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_json_resolved", + "label": "resolved", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L321" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_json_type", + "label": "type", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L320" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_usersecrets_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L333" + }, { "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_usersecrets_dependencies", "label": "dependencies", @@ -65549,18 +66239,29 @@ "source_location": "L334" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_diagnostics_dependencies", - "label": "dependencies", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_usersecrets_resolved", + "label": "resolved", "_origin": "ast", "community": 30, "community_name": "dependencies", "file_type": "code", - "norm_label": "dependencies", + "norm_label": "resolved", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L363" + "source_location": "L332" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_hosting_abstractions_contenthash", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_usersecrets_type", + "label": "type", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L331" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_fileproviders_abstractions_contenthash", "label": "contentHash", "_origin": "ast", "community": 30, @@ -65568,10 +66269,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L404" + "source_location": "L381" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_hosting_abstractions_dependencies", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_fileproviders_abstractions_dependencies", "label": "dependencies", "_origin": "ast", "community": 30, @@ -65579,10 +66280,10 @@ "file_type": "code", "norm_label": "dependencies", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L405" + "source_location": "L382" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_hosting_abstractions_resolved", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_fileproviders_abstractions_resolved", "label": "resolved", "_origin": "ast", "community": 30, @@ -65590,10 +66291,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L403" + "source_location": "L380" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_hosting_abstractions_type", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_fileproviders_abstractions_type", "label": "type", "_origin": "ast", "community": 30, @@ -65601,21 +66302,21 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L402" + "source_location": "L379" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_hosting_dependencies", - "label": "dependencies", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_fileproviders_physical_contenthash", + "label": "contentHash", "_origin": "ast", "community": 30, "community_name": "dependencies", "file_type": "code", - "norm_label": "dependencies", + "norm_label": "contenthash", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L73" + "source_location": "L389" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_configuration_dependencies", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_fileproviders_physical_dependencies", "label": "dependencies", "_origin": "ast", "community": 30, @@ -65623,10 +66324,32 @@ "file_type": "code", "norm_label": "dependencies", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L435" + "source_location": "L390" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_dependencies", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_fileproviders_physical_resolved", + "label": "resolved", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L388" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_fileproviders_physical_type", + "label": "type", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L387" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_hosting_dependencies", "label": "dependencies", "_origin": "ast", "community": 30, @@ -65634,7 +66357,7 @@ "file_type": "code", "norm_label": "dependencies", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L417" + "source_location": "L73" }, { "id": "src_anichron_worker_packages_lock_microsoft_extensions_options_configurationextensions_dependencies", @@ -65648,15 +66371,125 @@ "source_location": "L505" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_hosting_abstractions", - "label": "Microsoft.Extensions.Hosting.Abstractions", + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_caching_abstractions", + "label": "Microsoft.Extensions.Caching.Abstractions", "_origin": "ast", "community": 30, "community_name": "dependencies", "file_type": "code", - "norm_label": "microsoft.extensions.hosting.abstractions", + "norm_label": "microsoft.extensions.caching.abstractions", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L401" + "source_location": "L252" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_abstractions", + "label": "Microsoft.Extensions.Configuration.Abstractions", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "microsoft.extensions.configuration.abstractions", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L272" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_binder", + "label": "Microsoft.Extensions.Configuration.Binder", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "microsoft.extensions.configuration.binder", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L280" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_commandline", + "label": "Microsoft.Extensions.Configuration.CommandLine", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "microsoft.extensions.configuration.commandline", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L289" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_environmentvariables", + "label": "Microsoft.Extensions.Configuration.EnvironmentVariables", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "microsoft.extensions.configuration.environmentvariables", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L298" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_fileextensions", + "label": "Microsoft.Extensions.Configuration.FileExtensions", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "microsoft.extensions.configuration.fileextensions", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L307" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_ini", + "label": "Microsoft.Extensions.Configuration.Ini", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "microsoft.extensions.configuration.ini", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L56" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_json", + "label": "Microsoft.Extensions.Configuration.Json", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "microsoft.extensions.configuration.json", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L319" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_usersecrets", + "label": "Microsoft.Extensions.Configuration.UserSecrets", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "microsoft.extensions.configuration.usersecrets", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L330" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_fileproviders_abstractions", + "label": "Microsoft.Extensions.FileProviders.Abstractions", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "microsoft.extensions.fileproviders.abstractions", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L378" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_fileproviders_physical", + "label": "Microsoft.Extensions.FileProviders.Physical", + "_origin": "ast", + "community": 30, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "microsoft.extensions.fileproviders.physical", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L386" }, { "id": "src_anichron_api_tests_unit_packages_lock_microsoft_extensions_logging_contenthash", @@ -65703,120 +66536,124 @@ "source_location": "L377" }, { - "id": "ihostedservice", - "label": "IHostedService", + "id": "scripts_ci_gate_test", + "label": "ci-gate.test.sh", "_origin": "ast", "community": 301, - "community_name": "WorkerInitializer", + "community_name": "ci-gate.test.sh", "file_type": "code", - "norm_label": "ihostedservice", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_crawling_workerstate", - "label": "WorkerState.cs", - "_origin": "ast", - "community": 301, - "community_name": "WorkerInitializer", - "file_type": "code", - "norm_label": "workerstate.cs", - "source_file": "src/Anichron.Worker/Crawling/WorkerState.cs", + "metadata": { + "language": "bash", + "kind": "file" + }, + "norm_label": "ci-gate.test.sh", + "source_file": "scripts/ci-gate.test.sh", "source_location": "L1" }, { - "id": "src_anichron_worker_crawling_workerstate_anichron_worker_crawling_workerstate_resolveduserid", - "label": "ResolvedUserId", + "id": "scripts_ci_gate_test_assert_contains", + "label": "assert_contains()", "_origin": "ast", "community": 301, - "community_name": "WorkerInitializer", + "community_name": "ci-gate.test.sh", "file_type": "code", "metadata": { - "namespace": "Anichron.Worker.Crawling", - "scope_chain": [ - "s0" - ] + "language": "bash", + "kind": "bash_function" }, - "norm_label": "resolveduserid", - "source_file": "src/Anichron.Worker/Crawling/WorkerState.cs", - "source_location": "L7" - }, - { - "id": "src_anichron_worker_crawling_workerstate_cs_guid", - "label": "Guid", - "_origin": "ast", - "community": 301, - "community_name": "WorkerInitializer", - "file_type": "code", - "norm_label": "guid", - "source_file": "", - "source_location": "" + "norm_label": "assert_contains()", + "source_file": "scripts/ci-gate.test.sh", + "source_location": "L12" }, { - "id": "src_anichron_worker_startup_workerinitializer_cs_cancellationtoken", - "label": "CancellationToken", + "id": "scripts_ci_gate_test_assert_fails", + "label": "assert_fails()", "_origin": "ast", "community": 301, - "community_name": "WorkerInitializer", + "community_name": "ci-gate.test.sh", "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" + "metadata": { + "language": "bash", + "kind": "bash_function" + }, + "norm_label": "assert_fails()", + "source_file": "scripts/ci-gate.test.sh", + "source_location": "L26" }, { - "id": "src_anichron_worker_startup_workerinitializer_cs_ilogger", - "label": "ILogger", + "id": "scripts_ci_gate_test_assert_passes", + "label": "assert_passes()", "_origin": "ast", "community": 301, - "community_name": "WorkerInitializer", + "community_name": "ci-gate.test.sh", "file_type": "code", - "norm_label": "ilogger", - "source_file": "", - "source_location": "" + "metadata": { + "language": "bash", + "kind": "bash_function" + }, + "norm_label": "assert_passes()", + "source_file": "scripts/ci-gate.test.sh", + "source_location": "L19" }, { - "id": "src_anichron_worker_startup_workerinitializer_cs_ioptions", - "label": "IOptions", + "id": "scripts_ci_gate_test_fail", + "label": "fail()", "_origin": "ast", "community": 301, - "community_name": "WorkerInitializer", + "community_name": "ci-gate.test.sh", "file_type": "code", - "norm_label": "ioptions", - "source_file": "", - "source_location": "" + "metadata": { + "language": "bash", + "kind": "bash_function" + }, + "norm_label": "fail()", + "source_file": "scripts/ci-gate.test.sh", + "source_location": "L10" }, { - "id": "src_anichron_worker_startup_workerinitializer_cs_iservicescopefactory", - "label": "IServiceScopeFactory", + "id": "scripts_ci_gate_test_needs", + "label": "needs()", "_origin": "ast", "community": 301, - "community_name": "WorkerInitializer", + "community_name": "ci-gate.test.sh", "file_type": "code", - "norm_label": "iservicescopefactory", - "source_file": "", - "source_location": "" + "metadata": { + "language": "bash", + "kind": "bash_function" + }, + "norm_label": "needs()", + "source_file": "scripts/ci-gate.test.sh", + "source_location": "L37" }, { - "id": "src_anichron_worker_startup_workerinitializer_cs_loggermessage", - "label": "LoggerMessage", + "id": "scripts_ci_gate_test_pass", + "label": "pass()", "_origin": "ast", "community": 301, - "community_name": "WorkerInitializer", + "community_name": "ci-gate.test.sh", "file_type": "code", - "norm_label": "loggermessage", - "source_file": "", - "source_location": "" + "metadata": { + "language": "bash", + "kind": "bash_function" + }, + "norm_label": "pass()", + "source_file": "scripts/ci-gate.test.sh", + "source_location": "L9" }, { - "id": "src_anichron_worker_startup_workerinitializer_cs_task", - "label": "Task", + "id": "scripts_ci_gate_test_sh__entry", + "label": "ci-gate.test.sh script", "_origin": "ast", "community": 301, - "community_name": "WorkerInitializer", + "community_name": "ci-gate.test.sh", "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" + "metadata": { + "language": "bash", + "kind": "bash_entrypoint" + }, + "norm_label": "ci-gate.test.sh script", + "source_file": "scripts/ci-gate.test.sh", + "source_location": "L1" }, { "id": "src_anichron_api_packages_lock_microsoft_identitymodel_abstractions_contenthash", @@ -65951,145 +66788,49 @@ "source_location": "L360" }, { - "id": "jwtsecuritytokenhandler", - "label": "JwtSecurityTokenHandler", + "id": "src_anichron_core_migrations_20260927145042_addschemacomments_designer_cs_guid", + "label": "Guid", "_origin": "ast", "community": 305, - "community_name": "JwtSettings", + "community_name": ".BuildTargetModel", "file_type": "code", - "norm_label": "jwtsecuritytokenhandler", + "norm_label": "guid", "source_file": "", "source_location": "" }, { - "id": "signingcredentials", - "label": "SigningCredentials", + "id": "src_anichron_core_migrations_20260927145042_addschemacomments_designer_cs_instant", + "label": "Instant", "_origin": "ast", "community": 305, - "community_name": "JwtSettings", + "community_name": ".BuildTargetModel", "file_type": "code", - "norm_label": "signingcredentials", + "norm_label": "instant", "source_file": "", "source_location": "" }, { - "id": "src_anichron_api_security_jwtfactory_cs_iclock", - "label": "IClock", + "id": "src_anichron_core_migrations_20260927145042_addschemacomments_designer_cs_localdatetime", + "label": "LocalDateTime", "_origin": "ast", "community": 305, - "community_name": "JwtSettings", + "community_name": ".BuildTargetModel", "file_type": "code", - "norm_label": "iclock", + "norm_label": "localdatetime", "source_file": "", "source_location": "" }, { - "id": "src_anichron_api_security_jwtfactory_cs_iguidfactory", - "label": "IGuidFactory", + "id": "src_anichron_core_migrations_20260927145042_addschemacomments_designer_cs_modelbuilder", + "label": "ModelBuilder", "_origin": "ast", "community": 305, - "community_name": "JwtSettings", + "community_name": ".BuildTargetModel", "file_type": "code", - "norm_label": "iguidfactory", + "norm_label": "modelbuilder", "source_file": "", "source_location": "" }, - { - "id": "src_anichron_api_settings_jwtsettings", - "label": "JwtSettings.cs", - "_origin": "ast", - "community": 305, - "community_name": "JwtSettings", - "file_type": "code", - "norm_label": "jwtsettings.cs", - "source_file": "src/Anichron.API/Settings/JwtSettings.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_api_settings_jwtsettings_anichron_api_settings_jwtsettings_accesstokenminutes", - "label": "AccessTokenMinutes", - "_origin": "ast", - "community": 305, - "community_name": "JwtSettings", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "accesstokenminutes", - "source_file": "src/Anichron.API/Settings/JwtSettings.cs", - "source_location": "L11" - }, - { - "id": "src_anichron_api_settings_jwtsettings_anichron_api_settings_jwtsettings_audience", - "label": "Audience", - "_origin": "ast", - "community": 305, - "community_name": "JwtSettings", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "audience", - "source_file": "src/Anichron.API/Settings/JwtSettings.cs", - "source_location": "L10" - }, - { - "id": "src_anichron_api_settings_jwtsettings_anichron_api_settings_jwtsettings_issuer", - "label": "Issuer", - "_origin": "ast", - "community": 305, - "community_name": "JwtSettings", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "issuer", - "source_file": "src/Anichron.API/Settings/JwtSettings.cs", - "source_location": "L8" - }, - { - "id": "src_anichron_api_settings_jwtsettings_anichron_api_settings_jwtsettings_refreshtokendays", - "label": "RefreshTokenDays", - "_origin": "ast", - "community": 305, - "community_name": "JwtSettings", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "refreshtokendays", - "source_file": "src/Anichron.API/Settings/JwtSettings.cs", - "source_location": "L12" - }, - { - "id": "src_anichron_api_settings_jwtsettings_anichron_api_settings_jwtsettings_secret", - "label": "Secret", - "_origin": "ast", - "community": 305, - "community_name": "JwtSettings", - "file_type": "code", - "metadata": { - "namespace": "Anichron.API.Settings", - "scope_chain": [ - "s0" - ] - }, - "norm_label": "secret", - "source_file": "src/Anichron.API/Settings/JwtSettings.cs", - "source_location": "L6" - }, { "id": "nuget_microsoft_entityframeworkcore_inmemory", "label": "Microsoft.EntityFrameworkCore.InMemory", @@ -66178,6 +66919,138 @@ "source_file": "src/Anichron.API/packages.lock.json", "source_location": "L433" }, + { + "id": "backgroundservice", + "label": "BackgroundService", + "_origin": "ast", + "community": 308, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "backgroundservice", + "source_file": "", + "source_location": "" + }, + { + "id": "channel", + "label": "Channel", + "_origin": "ast", + "community": 308, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "channel", + "source_file": "", + "source_location": "" + }, + { + "id": "faketimeprovider", + "label": "FakeTimeProvider", + "_origin": "ast", + "community": 308, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "faketimeprovider", + "source_file": "", + "source_location": "" + }, + { + "id": "itimer", + "label": "ITimer", + "_origin": "ast", + "community": 308, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "itimer", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_crawling_worker_cs_cancellationtoken", + "label": "CancellationToken", + "_origin": "ast", + "community": 308, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "cancellationtoken", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_crawling_worker_cs_guid", + "label": "Guid", + "_origin": "ast", + "community": 308, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "guid", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_crawling_worker_cs_ilogger", + "label": "ILogger", + "_origin": "ast", + "community": 308, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "ilogger", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_crawling_worker_cs_ioptions", + "label": "IOptions", + "_origin": "ast", + "community": 308, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "ioptions", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_crawling_worker_cs_iservicescopefactory", + "label": "IServiceScopeFactory", + "_origin": "ast", + "community": 308, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "iservicescopefactory", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_crawling_worker_cs_loggermessage", + "label": "LoggerMessage", + "_origin": "ast", + "community": 308, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "loggermessage", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_crawling_worker_cs_task", + "label": "Task", + "_origin": "ast", + "community": 308, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_crawling_worker_cs_timeprovider", + "label": "TimeProvider", + "_origin": "ast", + "community": 308, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "timeprovider", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_worker_tests_unit_crawling_workertests_anichron_worker_tests_unit_crawling_testfixture_configrepository", "label": "ConfigRepository", @@ -66279,6 +67152,17 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_worker_tests_unit_crawling_workertests_cs_ilogger", + "label": "ILogger", + "_origin": "ast", + "community": 308, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "ilogger", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_worker_tests_unit_crawling_workertests_cs_iservicescopefactory", "label": "IServiceScopeFactory", @@ -66312,6 +67196,50 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_worker_tests_unit_testdoubles_signallingtimeprovider_cs_cancellationtoken", + "label": "CancellationToken", + "_origin": "ast", + "community": 308, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "cancellationtoken", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_testdoubles_signallingtimeprovider_cs_task", + "label": "Task", + "_origin": "ast", + "community": 308, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_testdoubles_signallingtimeprovider_cs_timespan", + "label": "TimeSpan", + "_origin": "ast", + "community": 308, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "timespan", + "source_file": "", + "source_location": "" + }, + { + "id": "timercallback", + "label": "TimerCallback", + "_origin": "ast", + "community": 308, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "timercallback", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_api_packages_lock_konscious_security_cryptography_blake2_contenthash", "label": "contentHash", @@ -66357,229 +67285,177 @@ "source_location": "L147" }, { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_cs_cancellationtoken", - "label": "CancellationToken", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_cs_guid", - "label": "Guid", - "_origin": "ast", - "community": 31, - "community_name": "UserStorageConfig", - "file_type": "code", - "norm_label": "guid", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_cs_list", - "label": "List", + "id": "iserviceprovider", + "label": "IServiceProvider", "_origin": "ast", "community": 31, - "community_name": "UserStorageConfig", + "community_name": "IIngestionMiddleware", "file_type": "code", - "norm_label": "list", + "norm_label": "iserviceprovider", "source_file": "", "source_location": "" }, { - "id": "src_anichron_core_data_repository_userstorageconfigrepository_cs_task", - "label": "Task", + "id": "iservicescope", + "label": "IServiceScope", "_origin": "ast", "community": 31, - "community_name": "UserStorageConfig", + "community_name": "IIngestionMiddleware", "file_type": "code", - "norm_label": "task", + "norm_label": "iservicescope", "source_file": "", "source_location": "" }, { - "id": "src_anichron_core_domain_userstorageconfig", - "label": "UserStorageConfig.cs", + "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware", + "label": "IIngestionMiddleware.cs", "_origin": "ast", "community": 31, - "community_name": "UserStorageConfig", + "community_name": "IIngestionMiddleware", "file_type": "code", - "norm_label": "userstorageconfig.cs", - "source_file": "src/Anichron.Core/Domain/UserStorageConfig.cs", + "norm_label": "iingestionmiddleware.cs", + "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IIngestionMiddleware.cs", "source_location": "L1" }, { - "id": "src_anichron_core_domain_userstorageconfig_anichron_core_domain_userstorageconfig_assets", - "label": "Assets", + "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_anichron_worker_ingestion_pipeline_iingestionmiddleware_order", + "label": "Order", "_origin": "ast", "community": 31, - "community_name": "UserStorageConfig", + "community_name": "IIngestionMiddleware", "file_type": "code", "metadata": { - "namespace": "Anichron.Core.Domain", + "namespace": "Anichron.Worker.Ingestion.Pipeline", "scope_chain": [ - "s3" + "s0" ] }, - "norm_label": "assets", - "source_file": "src/Anichron.Core/Domain/UserStorageConfig.cs", - "source_location": "L14" + "norm_label": "order", + "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IIngestionMiddleware.cs", + "source_location": "L7" }, { - "id": "src_anichron_core_domain_userstorageconfig_anichron_core_domain_userstorageconfig_id", - "label": "Id", + "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_cs_cancellationtoken", + "label": "CancellationToken", "_origin": "ast", "community": 31, - "community_name": "UserStorageConfig", + "community_name": "IIngestionMiddleware", "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s3" - ] - }, - "norm_label": "id", - "source_file": "src/Anichron.Core/Domain/UserStorageConfig.cs", - "source_location": "L5" + "norm_label": "cancellationtoken", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_core_domain_userstorageconfig_anichron_core_domain_userstorageconfig_isactive", - "label": "IsActive", + "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_cs_ingestiondelegate", + "label": "IngestionDelegate", "_origin": "ast", "community": 31, - "community_name": "UserStorageConfig", + "community_name": "IIngestionMiddleware", "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s3" - ] - }, - "norm_label": "isactive", - "source_file": "src/Anichron.Core/Domain/UserStorageConfig.cs", - "source_location": "L10" + "norm_label": "ingestiondelegate", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_core_domain_userstorageconfig_anichron_core_domain_userstorageconfig_rootpath", - "label": "RootPath", + "id": "src_anichron_worker_ingestion_pipeline_iingestionmiddleware_cs_task", + "label": "Task", "_origin": "ast", "community": 31, - "community_name": "UserStorageConfig", + "community_name": "IIngestionMiddleware", "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s3" - ] - }, - "norm_label": "rootpath", - "source_file": "src/Anichron.Core/Domain/UserStorageConfig.cs", - "source_location": "L9" + "norm_label": "task", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_core_domain_userstorageconfig_anichron_core_domain_userstorageconfig_user", - "label": "User", + "id": "src_anichron_worker_tests_unit_crawling_fileingestionpipelinetests_cs_guid", + "label": "Guid", "_origin": "ast", "community": 31, - "community_name": "UserStorageConfig", + "community_name": "IIngestionMiddleware", "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s3" - ] - }, - "norm_label": "user", - "source_file": "src/Anichron.Core/Domain/UserStorageConfig.cs", - "source_location": "L13" + "norm_label": "guid", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_core_domain_userstorageconfig_anichron_core_domain_userstorageconfig_userid", - "label": "UserId", + "id": "src_anichron_worker_tests_unit_crawling_fileingestionpipelinetests_cs_ienumerable", + "label": "IEnumerable", "_origin": "ast", "community": 31, - "community_name": "UserStorageConfig", + "community_name": "IIngestionMiddleware", "file_type": "code", - "metadata": { - "namespace": "Anichron.Core.Domain", - "scope_chain": [ - "s3" - ] - }, - "norm_label": "userid", - "source_file": "src/Anichron.Core/Domain/UserStorageConfig.cs", - "source_location": "L6" + "norm_label": "ienumerable", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_core_domain_userstorageconfig_cs_guid", - "label": "Guid", + "id": "src_anichron_worker_tests_unit_crawling_fileingestionpipelinetests_cs_ilogger", + "label": "ILogger", "_origin": "ast", "community": 31, - "community_name": "UserStorageConfig", + "community_name": "IIngestionMiddleware", "file_type": "code", - "norm_label": "guid", + "norm_label": "ilogger", "source_file": "", "source_location": "" }, { - "id": "src_anichron_core_domain_userstorageconfig_cs_icollection", - "label": "ICollection", + "id": "src_anichron_worker_tests_unit_crawling_fileingestionpipelinetests_cs_iservicescopefactory", + "label": "IServiceScopeFactory", "_origin": "ast", "community": 31, - "community_name": "UserStorageConfig", + "community_name": "IIngestionMiddleware", "file_type": "code", - "norm_label": "icollection", + "norm_label": "iservicescopefactory", "source_file": "", "source_location": "" }, { - "id": "src_anichron_infrastructure_configuration_appiniinitializer_cs_func", - "label": "Func", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_cancellingmiddleware_order", + "label": "Order", "_origin": "ast", - "community": 310, - "community_name": "IniEntry", + "community": 31, + "community_name": "IIngestionMiddleware", "file_type": "code", - "norm_label": "func", - "source_file": "", - "source_location": "" + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Pipeline", + "scope_chain": [ + "s368" + ] + }, + "norm_label": "order", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", + "source_location": "L394" }, { - "id": "src_anichron_infrastructure_configuration_appiniinitializer_cs_ireadonlylist", - "label": "IReadOnlyList", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_cs_cancellationtokensource", + "label": "CancellationTokenSource", "_origin": "ast", - "community": 310, - "community_name": "IniEntry", + "community": 31, + "community_name": "IIngestionMiddleware", "file_type": "code", - "norm_label": "ireadonlylist", + "norm_label": "cancellationtokensource", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_infrastructure_workerinidefaults_anichron_worker_infrastructure_workerinidefaults_entries", - "label": "Entries", + "id": "src_anichron_infrastructure_configuration_appiniinitializer_cs_func", + "label": "Func", "_origin": "ast", "community": 310, - "community_name": "IniEntry", + "community_name": ".EnsureUpToDate", "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Infrastructure", - "scope_chain": [ - "s46" - ] - }, - "norm_label": "entries", - "source_file": "src/Anichron.Worker/Infrastructure/WorkerIniDefaults.cs", - "source_location": "L7" + "norm_label": "func", + "source_file": "", + "source_location": "" }, { - "id": "src_anichron_worker_infrastructure_workerinidefaults_cs_ireadonlylist", + "id": "src_anichron_infrastructure_configuration_appiniinitializer_cs_ireadonlylist", "label": "IReadOnlyList", "_origin": "ast", "community": 310, - "community_name": "IniEntry", + "community_name": ".EnsureUpToDate", "file_type": "code", "norm_label": "ireadonlylist", "source_file": "", @@ -66718,57 +67594,46 @@ "source_location": "L606" }, { - "id": "src_anichron_api_infrastructure_jwtconfiguration", - "label": "JwtConfiguration.cs", - "_origin": "ast", - "community": 314, - "community_name": ".Read", - "file_type": "code", - "norm_label": "jwtconfiguration.cs", - "source_file": "src/Anichron.API/Infrastructure/JwtConfiguration.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_api_infrastructure_jwtconfiguration_cs_iconfiguration", - "label": "IConfiguration", + "id": "src_anichron_core_migrations_20261012025151_documentidentitynormalization_designer_cs_guid", + "label": "Guid", "_origin": "ast", "community": 314, - "community_name": ".Read", + "community_name": ".BuildTargetModel", "file_type": "code", - "norm_label": "iconfiguration", + "norm_label": "guid", "source_file": "", "source_location": "" }, { - "id": "src_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_cs_fact", - "label": "Fact", + "id": "src_anichron_core_migrations_20261012025151_documentidentitynormalization_designer_cs_instant", + "label": "Instant", "_origin": "ast", "community": 314, - "community_name": ".Read", + "community_name": ".BuildTargetModel", "file_type": "code", - "norm_label": "fact", + "norm_label": "instant", "source_file": "", "source_location": "" }, { - "id": "src_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_cs_iconfiguration", - "label": "IConfiguration", + "id": "src_anichron_core_migrations_20261012025151_documentidentitynormalization_designer_cs_localdatetime", + "label": "LocalDateTime", "_origin": "ast", "community": 314, - "community_name": ".Read", + "community_name": ".BuildTargetModel", "file_type": "code", - "norm_label": "iconfiguration", + "norm_label": "localdatetime", "source_file": "", "source_location": "" }, { - "id": "src_anichron_api_tests_unit_infrastructure_jwtconfigurationtests_cs_invalidoperationexception", - "label": "InvalidOperationException", + "id": "src_anichron_core_migrations_20261012025151_documentidentitynormalization_designer_cs_modelbuilder", + "label": "ModelBuilder", "_origin": "ast", "community": 314, - "community_name": ".Read", + "community_name": ".BuildTargetModel", "file_type": "code", - "norm_label": "invalidoperationexception", + "norm_label": "modelbuilder", "source_file": "", "source_location": "" }, @@ -66860,17 +67725,6 @@ "source_file": "src/Anichron.API.Tests.Unit/packages.lock.json", "source_location": "L620" }, - { - "id": "src_anichron_api_services_bootstrapseeder_cs_cancellationtoken", - "label": "CancellationToken", - "_origin": "ast", - "community": 317, - "community_name": "BootstrapSeeder", - "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_api_services_bootstrapseeder_cs_exception", "label": "Exception", @@ -66926,17 +67780,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_api_services_bootstrapseeder_cs_task", - "label": "Task", - "_origin": "ast", - "community": 317, - "community_name": "BootstrapSeeder", - "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_api_packages_lock_microsoft_extensions_diagnostics_exceptionsummarization_contenthash", "label": "contentHash", @@ -67197,81 +68040,59 @@ "source_location": "" }, { - "id": "channel", - "label": "Channel", - "_origin": "ast", - "community": 320, - "community_name": "SignallingTimeProvider", - "file_type": "code", - "norm_label": "channel", - "source_file": "", - "source_location": "" - }, - { - "id": "faketimeprovider", - "label": "FakeTimeProvider", - "_origin": "ast", - "community": 320, - "community_name": "SignallingTimeProvider", - "file_type": "code", - "norm_label": "faketimeprovider", - "source_file": "", - "source_location": "" - }, - { - "id": "itimer", - "label": "ITimer", + "id": "src_anichron_worker_packages_lock_net10_0_system_io_hashing", + "label": "System.IO.Hashing", "_origin": "ast", "community": 320, - "community_name": "SignallingTimeProvider", + "community_name": "System.IO.Hashing", "file_type": "code", - "norm_label": "itimer", - "source_file": "", - "source_location": "" + "norm_label": "system.io.hashing", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L156" }, { - "id": "src_anichron_worker_tests_unit_testdoubles_signallingtimeprovider_cs_cancellationtoken", - "label": "CancellationToken", + "id": "src_anichron_worker_packages_lock_system_io_hashing_contenthash", + "label": "contentHash", "_origin": "ast", "community": 320, - "community_name": "SignallingTimeProvider", + "community_name": "System.IO.Hashing", "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L160" }, { - "id": "src_anichron_worker_tests_unit_testdoubles_signallingtimeprovider_cs_task", - "label": "Task", + "id": "src_anichron_worker_packages_lock_system_io_hashing_requested", + "label": "requested", "_origin": "ast", "community": 320, - "community_name": "SignallingTimeProvider", + "community_name": "System.IO.Hashing", "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" + "norm_label": "requested", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L158" }, { - "id": "src_anichron_worker_tests_unit_testdoubles_signallingtimeprovider_cs_timespan", - "label": "TimeSpan", + "id": "src_anichron_worker_packages_lock_system_io_hashing_resolved", + "label": "resolved", "_origin": "ast", "community": 320, - "community_name": "SignallingTimeProvider", + "community_name": "System.IO.Hashing", "file_type": "code", - "norm_label": "timespan", - "source_file": "", - "source_location": "" + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L159" }, { - "id": "timercallback", - "label": "TimerCallback", + "id": "src_anichron_worker_packages_lock_system_io_hashing_type", + "label": "type", "_origin": "ast", "community": 320, - "community_name": "SignallingTimeProvider", + "community_name": "System.IO.Hashing", "file_type": "code", - "norm_label": "timercallback", - "source_file": "", - "source_location": "" + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L157" }, { "id": "enableratelimitingattribute", @@ -67591,13 +68412,13 @@ "source_location": "L346" }, { - "id": "created", - "label": "Created", + "id": "postgresexception", + "label": "PostgresException", "_origin": "ast", "community": 324, - "community_name": "AdminCreatedUser", + "community_name": "IUnitOfWork", "file_type": "code", - "norm_label": "created", + "norm_label": "postgresexception", "source_file": "", "source_location": "" }, @@ -67606,7 +68427,7 @@ "label": "CancellationToken", "_origin": "ast", "community": 324, - "community_name": "AdminCreatedUser", + "community_name": "IUnitOfWork", "file_type": "code", "norm_label": "cancellationtoken", "source_file": "", @@ -67617,7 +68438,7 @@ "label": "Guid", "_origin": "ast", "community": 324, - "community_name": "AdminCreatedUser", + "community_name": "IUnitOfWork", "file_type": "code", "norm_label": "guid", "source_file": "", @@ -67628,7 +68449,7 @@ "label": "IClock", "_origin": "ast", "community": 324, - "community_name": "AdminCreatedUser", + "community_name": "IUnitOfWork", "file_type": "code", "norm_label": "iclock", "source_file": "", @@ -67639,45 +68460,155 @@ "label": "Task", "_origin": "ast", "community": 324, - "community_name": "AdminCreatedUser", + "community_name": "IUnitOfWork", "file_type": "code", "norm_label": "task", "source_file": "", "source_location": "" }, { - "id": "src_anichron_api_tests_unit_endpoints_adminendpointstests_cs_cancellationtoken", + "id": "src_anichron_api_services_authservice_cs_cancellationtoken", "label": "CancellationToken", "_origin": "ast", "community": 324, - "community_name": "AdminCreatedUser", + "community_name": "IUnitOfWork", "file_type": "code", "norm_label": "cancellationtoken", "source_file": "", "source_location": "" }, { - "id": "src_anichron_api_tests_unit_endpoints_adminendpointstests_cs_fact", - "label": "Fact", + "id": "src_anichron_api_services_authservice_cs_guid", + "label": "Guid", "_origin": "ast", "community": 324, - "community_name": "AdminCreatedUser", + "community_name": "IUnitOfWork", "file_type": "code", - "norm_label": "fact", + "norm_label": "guid", "source_file": "", "source_location": "" }, { - "id": "src_anichron_api_tests_unit_endpoints_adminendpointstests_cs_task", + "id": "src_anichron_api_services_authservice_cs_iclock", + "label": "IClock", + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "norm_label": "iclock", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_api_services_authservice_cs_iguidfactory", + "label": "IGuidFactory", + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "norm_label": "iguidfactory", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_api_services_authservice_cs_task", + "label": "Task", + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_api_services_bootstrapseeder_cs_cancellationtoken", + "label": "CancellationToken", + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "norm_label": "cancellationtoken", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_api_services_bootstrapseeder_cs_task", + "label": "Task", + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_core_data_iunitofwork", + "label": "IUnitOfWork.cs", + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "norm_label": "iunitofwork.cs", + "source_file": "src/Anichron.Core/Data/IUnitOfWork.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_core_data_iunitofwork_cs_cancellationtoken", + "label": "CancellationToken", + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "norm_label": "cancellationtoken", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_core_data_iunitofwork_cs_func", + "label": "Func", + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "norm_label": "func", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_core_data_iunitofwork_cs_task", "label": "Task", "_origin": "ast", "community": 324, - "community_name": "AdminCreatedUser", + "community_name": "IUnitOfWork", "file_type": "code", "norm_label": "task", "source_file": "", "source_location": "" }, + { + "id": "src_anichron_core_guidfactory_cs_guid", + "label": "Guid", + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "norm_label": "guid", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_core_identitynormalizer", + "label": "IdentityNormalizer.cs", + "_origin": "ast", + "community": 324, + "community_name": "IUnitOfWork", + "file_type": "code", + "norm_label": "identitynormalizer.cs", + "source_file": "src/Anichron.Core/IdentityNormalizer.cs", + "source_location": "L1" + }, { "id": "src_anichron_api_infrastructure_databasestartupextensions_cs_exception", "label": "Exception", @@ -67911,22 +68842,6 @@ "source_location": "L4", "type": "namespace" }, - { - "id": "csharp_namespace:d8591ca7c666c4a0", - "label": "Anichron.Core", - "_origin": "ast", - "community": 327, - "community_name": "Anichron.Worker.Ingestion.Pipeline", - "file_type": "code", - "metadata": { - "kind": "csharp_namespace", - "namespace": "Anichron.Core" - }, - "norm_label": "anichron.core", - "source_file": "src/Anichron.Core/GuidFactory.cs", - "source_location": "L1", - "type": "namespace" - }, { "id": "csharp_namespace:deacb600b2c1e799", "label": "Anichron.Worker.Tests.Unit.Ingestion", @@ -67944,25 +68859,36 @@ "type": "namespace" }, { - "id": "src_anichron_core_identitynormalizer", - "label": "IdentityNormalizer.cs", + "id": "src_anichron_infrastructure_tests_unit_configuration_appiniinitializertests", + "label": "AppIniInitializerTests.cs", "_origin": "ast", "community": 327, "community_name": "Anichron.Worker.Ingestion.Pipeline", "file_type": "code", - "norm_label": "identitynormalizer.cs", - "source_file": "src/Anichron.Core/IdentityNormalizer.cs", + "norm_label": "appiniinitializertests.cs", + "source_file": "src/Anichron.Infrastructure.Tests.Unit/Configuration/AppIniInitializerTests.cs", "source_location": "L1" }, { - "id": "src_anichron_infrastructure_tests_unit_configuration_appiniinitializertests", - "label": "AppIniInitializerTests.cs", + "id": "src_anichron_worker_ingestion_exifdata", + "label": "ExifData.cs", "_origin": "ast", "community": 327, "community_name": "Anichron.Worker.Ingestion.Pipeline", "file_type": "code", - "norm_label": "appiniinitializertests.cs", - "source_file": "src/Anichron.Infrastructure.Tests.Unit/Configuration/AppIniInitializerTests.cs", + "norm_label": "exifdata.cs", + "source_file": "src/Anichron.Worker/Ingestion/ExifData.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_worker_ingestion_livephotolinker", + "label": "LivePhotoLinker.cs", + "_origin": "ast", + "community": 327, + "community_name": "Anichron.Worker.Ingestion.Pipeline", + "file_type": "code", + "norm_label": "livephotolinker.cs", + "source_file": "src/Anichron.Worker/Ingestion/LivePhotoLinker.cs", "source_location": "L1" }, { @@ -67976,6 +68902,17 @@ "source_file": "src/Anichron.Worker/Ingestion/MediaFileExtensions.cs", "source_location": "L1" }, + { + "id": "src_anichron_worker_ingestion_mediatypedetector", + "label": "MediaTypeDetector.cs", + "_origin": "ast", + "community": 327, + "community_name": "Anichron.Worker.Ingestion.Pipeline", + "file_type": "code", + "norm_label": "mediatypedetector.cs", + "source_file": "src/Anichron.Worker/Ingestion/MediaTypeDetector.cs", + "source_location": "L1" + }, { "id": "src_anichron_worker_ingestion_middlewares_contenthashingmiddleware", "label": "ContentHashingMiddleware.cs", @@ -68054,14 +68991,14 @@ "source_location": "L1" }, { - "id": "src_anichron_worker_ingestion_proxy_proxyfilebuilder", - "label": "ProxyFileBuilder.cs", + "id": "src_anichron_worker_ingestion_pipeline_ingestioncontext", + "label": "IngestionContext.cs", "_origin": "ast", "community": 327, "community_name": "Anichron.Worker.Ingestion.Pipeline", "file_type": "code", - "norm_label": "proxyfilebuilder.cs", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyFileBuilder.cs", + "norm_label": "ingestioncontext.cs", + "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IngestionContext.cs", "source_location": "L1" }, { @@ -68545,17 +69482,6 @@ "source_location": "L5", "type": "namespace" }, - { - "id": "src_anichron_api_endpoints_adminendpoints", - "label": "AdminEndpoints.cs", - "_origin": "ast", - "community": 33, - "community_name": "Anichron.API.Infrastructure", - "file_type": "code", - "norm_label": "adminendpoints.cs", - "source_file": "src/Anichron.API/Endpoints/AdminEndpoints.cs", - "source_location": "L1" - }, { "id": "src_anichron_api_endpoints_userendpoints", "label": "UserEndpoints.cs", @@ -68600,17 +69526,6 @@ "source_file": "src/Anichron.API/Infrastructure/CorsOrigins.cs", "source_location": "L1" }, - { - "id": "src_anichron_api_infrastructure_databasestartupextensions", - "label": "DatabaseStartupExtensions.cs", - "_origin": "ast", - "community": 33, - "community_name": "Anichron.API.Infrastructure", - "file_type": "code", - "norm_label": "databasestartupextensions.cs", - "source_file": "src/Anichron.API/Infrastructure/DatabaseStartupExtensions.cs", - "source_location": "L1" - }, { "id": "src_anichron_api_infrastructure_healthcheckresponsewriter", "label": "HealthCheckResponseWriter.cs", @@ -69041,26 +69956,59 @@ "source_location": "" }, { - "id": "src_anichron_core_tests_unit_data_repository_userrepositorytests_cs_inlinedata", - "label": "InlineData", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_contenthash", + "label": "contentHash", "_origin": "ast", "community": 331, - "community_name": ".CreateNpgsqlModelOnlyDb", + "community_name": "Microsoft.Extensions.Options", "file_type": "code", - "norm_label": "inlinedata", - "source_file": "", - "source_location": "" + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L360" }, { - "id": "src_anichron_core_tests_unit_data_repository_userrepositorytests_cs_theory", - "label": "Theory", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_dependencies", + "label": "dependencies", "_origin": "ast", "community": 331, - "community_name": ".CreateNpgsqlModelOnlyDb", + "community_name": "Microsoft.Extensions.Options", "file_type": "code", - "norm_label": "theory", - "source_file": "", - "source_location": "" + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L361" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_resolved", + "label": "resolved", + "_origin": "ast", + "community": 331, + "community_name": "Microsoft.Extensions.Options", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L359" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_type", + "label": "type", + "_origin": "ast", + "community": 331, + "community_name": "Microsoft.Extensions.Options", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L358" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_options", + "label": "Microsoft.Extensions.Options", + "_origin": "ast", + "community": 331, + "community_name": "Microsoft.Extensions.Options", + "file_type": "code", + "norm_label": "microsoft.extensions.options", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L357" }, { "id": "src_anichron_worker_packages_lock_microsoft_codeanalysis_analyzers_contenthash", @@ -69629,6 +70577,17 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_worker_ingestion_proxy_videoprocessor", + "label": "VideoProcessor.cs", + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessorTests", + "file_type": "code", + "norm_label": "videoprocessor.cs", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProcessor.cs", + "source_location": "L1" + }, { "id": "src_anichron_worker_ingestion_proxy_videoprocessor_anichron_worker_ingestion_proxy_ffmpegexception_exitcode", "label": "ExitCode", @@ -69718,6 +70677,62 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_video720pgenerator_filename", + "label": "FileName", + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessorTests", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion.Proxy", + "scope_chain": [ + "s29" + ] + }, + "norm_label": "filename", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", + "source_location": "L14" + }, + { + "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_video720pgenerator_proxytype", + "label": "ProxyType", + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessorTests", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Worker.Ingestion.Proxy", + "scope_chain": [ + "s29" + ] + }, + "norm_label": "proxytype", + "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", + "source_location": "L15" + }, + { + "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_cs_cancellationtoken", + "label": "CancellationToken", + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessorTests", + "file_type": "code", + "norm_label": "cancellationtoken", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_cs_task", + "label": "Task", + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessorTests", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_worker_tests_unit_ingestion_proxy_ffmpegvideoprocessortests_anichron_worker_tests_unit_ingestion_proxy_testfixture_launcher", "label": "Launcher", @@ -69801,6 +70816,28 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_cs_fact", + "label": "Fact", + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessorTests", + "file_type": "code", + "norm_label": "fact", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_cs_task", + "label": "Task", + "_origin": "ast", + "community": 34, + "community_name": "FfmpegVideoProcessorTests", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_core_packages_lock_microsoft_codeanalysis_analyzers_contenthash", "label": "contentHash", @@ -70241,6 +71278,17 @@ "source_file": "src/Anichron.Core.Tests.Unit/packages.lock.json", "source_location": "L129" }, + { + "id": "src_anichron_api_endpoints_adminendpoints", + "label": "AdminEndpoints.cs", + "_origin": "ast", + "community": 35, + "community_name": "IAuthResponseMapper", + "file_type": "code", + "norm_label": "adminendpoints.cs", + "source_file": "src/Anichron.API/Endpoints/AdminEndpoints.cs", + "source_location": "L1" + }, { "id": "src_anichron_api_endpoints_adminendpoints_cs_cancellationtoken", "label": "CancellationToken", @@ -70308,7 +71356,7 @@ "source_location": "" }, { - "id": "src_anichron_api_tests_unit_endpoints_adminstorageconfigendpointstests_cs_cancellationtoken", + "id": "src_anichron_api_tests_unit_endpoints_adminendpointstests_cs_cancellationtoken", "label": "CancellationToken", "_origin": "ast", "community": 35, @@ -70319,7 +71367,7 @@ "source_location": "" }, { - "id": "src_anichron_api_tests_unit_endpoints_adminstorageconfigendpointstests_cs_fact", + "id": "src_anichron_api_tests_unit_endpoints_adminendpointstests_cs_fact", "label": "Fact", "_origin": "ast", "community": 35, @@ -70330,7 +71378,7 @@ "source_location": "" }, { - "id": "src_anichron_api_tests_unit_endpoints_adminstorageconfigendpointstests_cs_task", + "id": "src_anichron_api_tests_unit_endpoints_adminendpointstests_cs_task", "label": "Task", "_origin": "ast", "community": 35, @@ -71304,28 +72352,6 @@ "source_file": "src/Anichron.Core/Data/Repository/InviteRepository.cs", "source_location": "L1" }, - { - "id": "src_anichron_core_data_repository_mediaassetrepository", - "label": "MediaAssetRepository.cs", - "_origin": "ast", - "community": 36, - "community_name": "Anichron.Core.Domain", - "file_type": "code", - "norm_label": "mediaassetrepository.cs", - "source_file": "src/Anichron.Core/Data/Repository/MediaAssetRepository.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_core_data_repository_refreshtokenrepository", - "label": "RefreshTokenRepository.cs", - "_origin": "ast", - "community": 36, - "community_name": "Anichron.Core.Domain", - "file_type": "code", - "norm_label": "refreshtokenrepository.cs", - "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", - "source_location": "L1" - }, { "id": "src_anichron_core_data_repository_userrepository", "label": "UserRepository.cs", @@ -71904,59 +72930,59 @@ "source_location": "" }, { - "id": "ireadonlyset", - "label": "IReadOnlySet", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_roslynator_analyzers", + "label": "Roslynator.Analyzers", "_origin": "ast", "community": 368, - "community_name": "LivePhotoLinker.cs", + "community_name": "Roslynator.Analyzers", "file_type": "code", - "norm_label": "ireadonlyset", - "source_file": "", - "source_location": "" + "norm_label": "roslynator.analyzers", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L48" }, { - "id": "src_anichron_worker_ingestion_livephotolinker", - "label": "LivePhotoLinker.cs", + "id": "src_anichron_worker_tests_unit_packages_lock_roslynator_analyzers_contenthash", + "label": "contentHash", "_origin": "ast", "community": 368, - "community_name": "LivePhotoLinker.cs", + "community_name": "Roslynator.Analyzers", "file_type": "code", - "norm_label": "livephotolinker.cs", - "source_file": "src/Anichron.Worker/Ingestion/LivePhotoLinker.cs", - "source_location": "L1" + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L52" }, { - "id": "src_anichron_worker_ingestion_livephotolinker_cs_ienumerable", - "label": "IEnumerable", + "id": "src_anichron_worker_tests_unit_packages_lock_roslynator_analyzers_requested", + "label": "requested", "_origin": "ast", "community": 368, - "community_name": "LivePhotoLinker.cs", + "community_name": "Roslynator.Analyzers", "file_type": "code", - "norm_label": "ienumerable", - "source_file": "", - "source_location": "" + "norm_label": "requested", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L50" }, { - "id": "src_anichron_worker_ingestion_livephotolinker_cs_ifilesystem", - "label": "IFileSystem", + "id": "src_anichron_worker_tests_unit_packages_lock_roslynator_analyzers_resolved", + "label": "resolved", "_origin": "ast", "community": 368, - "community_name": "LivePhotoLinker.cs", + "community_name": "Roslynator.Analyzers", "file_type": "code", - "norm_label": "ifilesystem", - "source_file": "", - "source_location": "" + "norm_label": "resolved", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L51" }, { - "id": "src_anichron_worker_ingestion_livephotolinker_cs_ireadonlylist", - "label": "IReadOnlyList", + "id": "src_anichron_worker_tests_unit_packages_lock_roslynator_analyzers_type", + "label": "type", "_origin": "ast", "community": 368, - "community_name": "LivePhotoLinker.cs", + "community_name": "Roslynator.Analyzers", "file_type": "code", - "norm_label": "ireadonlylist", - "source_file": "", - "source_location": "" + "norm_label": "type", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L49" }, { "id": "marker", @@ -72075,17 +73101,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_worker_ingestion_pipeline_ingestioncontext", - "label": "IngestionContext.cs", - "_origin": "ast", - "community": 37, - "community_name": "IngestionContext", - "file_type": "code", - "norm_label": "ingestioncontext.cs", - "source_file": "src/Anichron.Worker/Ingestion/Pipeline/IngestionContext.cs", - "source_location": "L1" - }, { "id": "src_anichron_worker_ingestion_pipeline_ingestioncontext_anichron_worker_ingestion_pipeline_ingestioncontext_asset", "label": "Asset", @@ -72356,7 +73371,18 @@ "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_cancellingmiddleware_order", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestioncontexttests_cs_fact", + "label": "Fact", + "_origin": "ast", + "community": 37, + "community_name": "IngestionContext", + "file_type": "code", + "norm_label": "fact", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_proxydirectorycreatingmiddleware_order", "label": "Order", "_origin": "ast", "community": 37, @@ -72370,7 +73396,7 @@ }, "norm_label": "order", "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Pipeline/IngestionPipelineRunnerTests.cs", - "source_location": "L394" + "source_location": "L370" }, { "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_anichron_worker_tests_unit_ingestion_pipeline_stubmiddleware_order", @@ -72401,13 +73427,13 @@ "source_location": "" }, { - "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_cs_cancellationtokensource", - "label": "CancellationTokenSource", + "id": "src_anichron_worker_tests_unit_ingestion_pipeline_ingestionpipelinerunnertests_cs_ifilesystem", + "label": "IFileSystem", "_origin": "ast", "community": 37, "community_name": "IngestionContext", "file_type": "code", - "norm_label": "cancellationtokensource", + "norm_label": "ifilesystem", "source_file": "", "source_location": "" }, @@ -73175,92 +74201,48 @@ "source_location": "L512" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_castle_core_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 380, - "community_name": "Castle.Core", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L92" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_castle_core_resolved", - "label": "resolved", - "_origin": "ast", - "community": 380, - "community_name": "Castle.Core", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L91" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_castle_core_type", - "label": "type", - "_origin": "ast", - "community": 380, - "community_name": "Castle.Core", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L90" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventlog_contenthash", + "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_analyzers_contenthash", "label": "contentHash", "_origin": "ast", "community": 380, - "community_name": "Castle.Core", + "community_name": "Microsoft.EntityFrameworkCore.Analyzers", "file_type": "code", "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L336" + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L250" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventlog_resolved", + "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_analyzers_resolved", "label": "resolved", "_origin": "ast", "community": 380, - "community_name": "Castle.Core", + "community_name": "Microsoft.EntityFrameworkCore.Analyzers", "file_type": "code", "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L335" + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L249" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventlog_type", + "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_analyzers_type", "label": "type", "_origin": "ast", "community": 380, - "community_name": "Castle.Core", + "community_name": "Microsoft.EntityFrameworkCore.Analyzers", "file_type": "code", "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L334" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_castle_core", - "label": "Castle.Core", - "_origin": "ast", - "community": 380, - "community_name": "Castle.Core", - "file_type": "code", - "norm_label": "castle.core", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L89" + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L248" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_logging_eventlog", - "label": "Microsoft.Extensions.Logging.EventLog", + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_entityframeworkcore_analyzers", + "label": "Microsoft.EntityFrameworkCore.Analyzers", "_origin": "ast", "community": 380, - "community_name": "Castle.Core", + "community_name": "Microsoft.EntityFrameworkCore.Analyzers", "file_type": "code", - "norm_label": "microsoft.extensions.logging.eventlog", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L333" + "norm_label": "microsoft.entityframeworkcore.analyzers", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L247" }, { "id": "src_anichron_worker_packages_lock_net10_0_system_composition_runtime", @@ -73460,6 +74442,17 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L156" }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_configuration_binder", + "label": "Microsoft.Extensions.Configuration.Binder", + "_origin": "ast", + "community": 385, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.configuration.binder", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L303" + }, { "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_configuration_fileextensions", "label": "Microsoft.Extensions.Configuration.FileExtensions", @@ -73472,15 +74465,26 @@ "source_location": "L196" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_configuration_json", - "label": "Microsoft.Extensions.Configuration.Json", + "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_diagnostics_abstractions", + "label": "Microsoft.Extensions.Diagnostics.Abstractions", "_origin": "ast", "community": 385, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.configuration.json", + "norm_label": "microsoft.extensions.diagnostics.abstractions", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L206" + "source_location": "L230" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_options_configurationextensions", + "label": "Microsoft.Extensions.Options.ConfigurationExtensions", + "_origin": "ast", + "community": 385, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.options.configurationextensions", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L231" }, { "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_binder_contenthash", @@ -73659,7 +74663,7 @@ "source_location": "L190" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_usersecrets_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_diagnostics_contenthash", "label": "contentHash", "_origin": "ast", "community": 385, @@ -73667,10 +74671,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L203" + "source_location": "L227" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_usersecrets_dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_diagnostics_dependencies", "label": "dependencies", "_origin": "ast", "community": 385, @@ -73678,10 +74682,10 @@ "file_type": "code", "norm_label": "dependencies", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L204" + "source_location": "L228" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_usersecrets_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_diagnostics_resolved", "label": "resolved", "_origin": "ast", "community": 385, @@ -73689,10 +74693,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L202" + "source_location": "L226" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_configuration_usersecrets_type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_diagnostics_type", "label": "type", "_origin": "ast", "community": 385, @@ -73700,7 +74704,139 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L201" + "source_location": "L225" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_hosting_abstractions_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 385, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L269" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_hosting_abstractions_dependencies", + "label": "dependencies", + "_origin": "ast", + "community": 385, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L270" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_hosting_abstractions_resolved", + "label": "resolved", + "_origin": "ast", + "community": 385, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L268" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_hosting_abstractions_type", + "label": "type", + "_origin": "ast", + "community": 385, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L267" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_configuration_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 385, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L299" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_configuration_dependencies", + "label": "dependencies", + "_origin": "ast", + "community": 385, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L300" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_configuration_resolved", + "label": "resolved", + "_origin": "ast", + "community": 385, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L298" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_configuration_type", + "label": "type", + "_origin": "ast", + "community": 385, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L297" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_configurationextensions_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 385, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L369" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_configurationextensions_dependencies", + "label": "dependencies", + "_origin": "ast", + "community": 385, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L370" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_configurationextensions_resolved", + "label": "resolved", + "_origin": "ast", + "community": 385, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L368" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_configurationextensions_type", + "label": "type", + "_origin": "ast", + "community": 385, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L367" }, { "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_configuration_binder", @@ -73747,15 +74883,48 @@ "source_location": "L189" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_configuration_usersecrets", - "label": "Microsoft.Extensions.Configuration.UserSecrets", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_diagnostics", + "label": "Microsoft.Extensions.Diagnostics", "_origin": "ast", "community": 385, "community_name": "Microsoft.Extensions.Configuration.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.configuration.usersecrets", + "norm_label": "microsoft.extensions.diagnostics", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L200" + "source_location": "L224" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_hosting_abstractions", + "label": "Microsoft.Extensions.Hosting.Abstractions", + "_origin": "ast", + "community": 385, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.hosting.abstractions", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L266" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_logging_configuration", + "label": "Microsoft.Extensions.Logging.Configuration", + "_origin": "ast", + "community": 385, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.logging.configuration", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L296" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_options_configurationextensions", + "label": "Microsoft.Extensions.Options.ConfigurationExtensions", + "_origin": "ast", + "community": 385, + "community_name": "Microsoft.Extensions.Configuration.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.options.configurationextensions", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L366" }, { "id": "src_anichron_worker_ingestion_middlewares_exifextractionmiddleware_cs_exception", @@ -74012,37 +75181,48 @@ "source_location": "" }, { - "id": "src_anichron_worker_crawling_fileingestionpipeline_cs_exception", - "label": "Exception", + "id": "src_anichron_worker_packages_lock_microsoft_visualstudio_solutionpersistence_contenthash", + "label": "contentHash", "_origin": "ast", "community": 390, - "community_name": ".ItemFailed", + "community_name": "Microsoft.VisualStudio.SolutionPersistence", "file_type": "code", - "norm_label": "exception", - "source_file": "", - "source_location": "" + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L521" }, { - "id": "src_anichron_worker_crawling_fileingestionpipeline_cs_ilogger", - "label": "ILogger", + "id": "src_anichron_worker_packages_lock_microsoft_visualstudio_solutionpersistence_resolved", + "label": "resolved", "_origin": "ast", "community": 390, - "community_name": ".ItemFailed", + "community_name": "Microsoft.VisualStudio.SolutionPersistence", "file_type": "code", - "norm_label": "ilogger", - "source_file": "", - "source_location": "" + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L520" }, { - "id": "src_anichron_worker_crawling_fileingestionpipeline_cs_loggermessage", - "label": "LoggerMessage", + "id": "src_anichron_worker_packages_lock_microsoft_visualstudio_solutionpersistence_type", + "label": "type", "_origin": "ast", "community": 390, - "community_name": ".ItemFailed", + "community_name": "Microsoft.VisualStudio.SolutionPersistence", "file_type": "code", - "norm_label": "loggermessage", - "source_file": "", - "source_location": "" + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L519" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_visualstudio_solutionpersistence", + "label": "Microsoft.VisualStudio.SolutionPersistence", + "_origin": "ast", + "community": 390, + "community_name": "Microsoft.VisualStudio.SolutionPersistence", + "file_type": "code", + "norm_label": "microsoft.visualstudio.solutionpersistence", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L518" }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_imageproxymiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_corner_bottomleft", @@ -74388,48 +75568,48 @@ "source_location": "L378" }, { - "id": "src_anichron_core_migrations_20261010235916_uniqueactivecontenthashperconfig_designer_cs_guid", - "label": "Guid", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_applicationinsights_contenthash", + "label": "contentHash", "_origin": "ast", "community": 398, - "community_name": ".BuildTargetModel", + "community_name": "Microsoft.ApplicationInsights", "file_type": "code", - "norm_label": "guid", - "source_file": "", - "source_location": "" + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L100" }, { - "id": "src_anichron_core_migrations_20261010235916_uniqueactivecontenthashperconfig_designer_cs_instant", - "label": "Instant", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_applicationinsights_resolved", + "label": "resolved", "_origin": "ast", "community": 398, - "community_name": ".BuildTargetModel", + "community_name": "Microsoft.ApplicationInsights", "file_type": "code", - "norm_label": "instant", - "source_file": "", - "source_location": "" + "norm_label": "resolved", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L99" }, { - "id": "src_anichron_core_migrations_20261010235916_uniqueactivecontenthashperconfig_designer_cs_localdatetime", - "label": "LocalDateTime", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_applicationinsights_type", + "label": "type", "_origin": "ast", "community": 398, - "community_name": ".BuildTargetModel", + "community_name": "Microsoft.ApplicationInsights", "file_type": "code", - "norm_label": "localdatetime", - "source_file": "", - "source_location": "" + "norm_label": "type", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L98" }, { - "id": "src_anichron_core_migrations_20261010235916_uniqueactivecontenthashperconfig_designer_cs_modelbuilder", - "label": "ModelBuilder", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_applicationinsights", + "label": "Microsoft.ApplicationInsights", "_origin": "ast", "community": 398, - "community_name": ".BuildTargetModel", + "community_name": "Microsoft.ApplicationInsights", "file_type": "code", - "norm_label": "modelbuilder", - "source_file": "", - "source_location": "" + "norm_label": "microsoft.applicationinsights", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L97" }, { "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_testing_platform_contenthash", @@ -75125,169 +76305,136 @@ "source_location": "" }, { - "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_design_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_entityframeworkcore_abstractions_contenthash", "label": "contentHash", "_origin": "ast", "community": 401, - "community_name": "Microsoft.EntityFrameworkCore.Design", + "community_name": "Microsoft.EntityFrameworkCore.Abstractions", "file_type": "code", "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L40" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_design_requested", - "label": "requested", - "_origin": "ast", - "community": 401, - "community_name": "Microsoft.EntityFrameworkCore.Design", - "file_type": "code", - "norm_label": "requested", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L38" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L115" }, { - "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_design_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_entityframeworkcore_abstractions_resolved", "label": "resolved", "_origin": "ast", "community": 401, - "community_name": "Microsoft.EntityFrameworkCore.Design", + "community_name": "Microsoft.EntityFrameworkCore.Abstractions", "file_type": "code", "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L39" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L114" }, { - "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_design_type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_entityframeworkcore_abstractions_type", "label": "type", "_origin": "ast", "community": 401, - "community_name": "Microsoft.EntityFrameworkCore.Design", + "community_name": "Microsoft.EntityFrameworkCore.Abstractions", "file_type": "code", "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L37" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L113" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_entityframeworkcore_design", - "label": "Microsoft.EntityFrameworkCore.Design", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_entityframeworkcore_abstractions", + "label": "Microsoft.EntityFrameworkCore.Abstractions", "_origin": "ast", "community": 401, - "community_name": "Microsoft.EntityFrameworkCore.Design", + "community_name": "Microsoft.EntityFrameworkCore.Abstractions", "file_type": "code", - "norm_label": "microsoft.entityframeworkcore.design", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L36" + "norm_label": "microsoft.entityframeworkcore.abstractions", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L112" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_ini_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_entityframeworkcore_analyzers_contenthash", "label": "contentHash", "_origin": "ast", "community": 402, - "community_name": "Microsoft.Extensions.Configuration.Ini", + "community_name": "Microsoft.EntityFrameworkCore.Analyzers", "file_type": "code", "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L60" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_ini_requested", - "label": "requested", - "_origin": "ast", - "community": 402, - "community_name": "Microsoft.Extensions.Configuration.Ini", - "file_type": "code", - "norm_label": "requested", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L58" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L120" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_ini_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_entityframeworkcore_analyzers_resolved", "label": "resolved", "_origin": "ast", "community": 402, - "community_name": "Microsoft.Extensions.Configuration.Ini", + "community_name": "Microsoft.EntityFrameworkCore.Analyzers", "file_type": "code", "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L59" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L119" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_ini_type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_entityframeworkcore_analyzers_type", "label": "type", "_origin": "ast", "community": 402, - "community_name": "Microsoft.Extensions.Configuration.Ini", + "community_name": "Microsoft.EntityFrameworkCore.Analyzers", "file_type": "code", "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L57" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L118" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_ini", - "label": "Microsoft.Extensions.Configuration.Ini", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_entityframeworkcore_analyzers", + "label": "Microsoft.EntityFrameworkCore.Analyzers", "_origin": "ast", "community": 402, - "community_name": "Microsoft.Extensions.Configuration.Ini", + "community_name": "Microsoft.EntityFrameworkCore.Analyzers", "file_type": "code", - "norm_label": "microsoft.extensions.configuration.ini", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L56" + "norm_label": "microsoft.entityframeworkcore.analyzers", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L117" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_dependencyinjection_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventsource_contenthash", "label": "contentHash", "_origin": "ast", "community": 403, - "community_name": "Microsoft.Extensions.DependencyInjection", + "community_name": "Microsoft.Extensions.Logging.EventSource", "file_type": "code", "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L344" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_dependencyinjection_dependencies", - "label": "dependencies", - "_origin": "ast", - "community": 403, - "community_name": "Microsoft.Extensions.DependencyInjection", - "file_type": "code", - "norm_label": "dependencies", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L345" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L348" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_dependencyinjection_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventsource_resolved", "label": "resolved", "_origin": "ast", "community": 403, - "community_name": "Microsoft.Extensions.DependencyInjection", + "community_name": "Microsoft.Extensions.Logging.EventSource", "file_type": "code", "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L343" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L347" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_dependencyinjection_type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventsource_type", "label": "type", "_origin": "ast", "community": 403, - "community_name": "Microsoft.Extensions.DependencyInjection", + "community_name": "Microsoft.Extensions.Logging.EventSource", "file_type": "code", "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L342" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L346" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_dependencyinjection", - "label": "Microsoft.Extensions.DependencyInjection", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_logging_eventsource", + "label": "Microsoft.Extensions.Logging.EventSource", "_origin": "ast", "community": 403, - "community_name": "Microsoft.Extensions.DependencyInjection", + "community_name": "Microsoft.Extensions.Logging.EventSource", "file_type": "code", - "norm_label": "microsoft.extensions.dependencyinjection", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L341" + "norm_label": "microsoft.extensions.logging.eventsource", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L345" }, { "id": "csharp_namespace:14d5386a6c4e903d", @@ -75321,6 +76468,17 @@ "source_location": "L1", "type": "namespace" }, + { + "id": "src_anichron_api_infrastructure_databasestartupextensions", + "label": "DatabaseStartupExtensions.cs", + "_origin": "ast", + "community": 404, + "community_name": "Anichron.Infrastructure.Data", + "file_type": "code", + "norm_label": "databasestartupextensions.cs", + "source_file": "src/Anichron.API/Infrastructure/DatabaseStartupExtensions.cs", + "source_location": "L1" + }, { "id": "src_anichron_api_settings_appdefaults", "label": "AppDefaults.cs", @@ -75376,6 +76534,39 @@ "source_file": "src/Anichron.Infrastructure.Tests.Unit/Data/DatabaseStartupRetryTests.cs", "source_location": "L1" }, + { + "id": "src_anichron_worker_startup_idatabasemigrator", + "label": "IDatabaseMigrator.cs", + "_origin": "ast", + "community": 404, + "community_name": "Anichron.Infrastructure.Data", + "file_type": "code", + "norm_label": "idatabasemigrator.cs", + "source_file": "src/Anichron.Worker/Startup/IDatabaseMigrator.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_worker_startup_idatabasemigrator_cs_cancellationtoken", + "label": "CancellationToken", + "_origin": "ast", + "community": 404, + "community_name": "Anichron.Infrastructure.Data", + "file_type": "code", + "norm_label": "cancellationtoken", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_startup_idatabasemigrator_cs_task", + "label": "Task", + "_origin": "ast", + "community": 404, + "community_name": "Anichron.Infrastructure.Data", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_worker_tests_unit_testdoubles_signallingtimeprovider", "label": "SignallingTimeProvider.cs", @@ -75472,59 +76663,48 @@ "source_location": "L1" }, { - "id": "src_anichron_worker_packages_lock_net10_0_roslynator_analyzers", - "label": "Roslynator.Analyzers", - "_origin": "ast", - "community": 408, - "community_name": "Roslynator.Analyzers", - "file_type": "code", - "norm_label": "roslynator.analyzers", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L125" - }, - { - "id": "src_anichron_worker_packages_lock_roslynator_analyzers_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_testplatform_objectmodel_contenthash", "label": "contentHash", "_origin": "ast", "community": 408, - "community_name": "Roslynator.Analyzers", + "community_name": "Microsoft.TestPlatform.ObjectModel", "file_type": "code", "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L129" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L416" }, { - "id": "src_anichron_worker_packages_lock_roslynator_analyzers_requested", - "label": "requested", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_testplatform_objectmodel_resolved", + "label": "resolved", "_origin": "ast", "community": 408, - "community_name": "Roslynator.Analyzers", + "community_name": "Microsoft.TestPlatform.ObjectModel", "file_type": "code", - "norm_label": "requested", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L127" + "norm_label": "resolved", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L415" }, { - "id": "src_anichron_worker_packages_lock_roslynator_analyzers_resolved", - "label": "resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_testplatform_objectmodel_type", + "label": "type", "_origin": "ast", "community": 408, - "community_name": "Roslynator.Analyzers", + "community_name": "Microsoft.TestPlatform.ObjectModel", "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L128" + "norm_label": "type", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L414" }, { - "id": "src_anichron_worker_packages_lock_roslynator_analyzers_type", - "label": "type", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_testplatform_objectmodel", + "label": "Microsoft.TestPlatform.ObjectModel", "_origin": "ast", "community": 408, - "community_name": "Roslynator.Analyzers", + "community_name": "Microsoft.TestPlatform.ObjectModel", "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L126" + "norm_label": "microsoft.testplatform.objectmodel", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L413" }, { "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_xmpcore", @@ -75581,6 +76761,17 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L265" }, + { + "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_dependencyinjection", + "label": "Microsoft.Extensions.DependencyInjection", + "_origin": "ast", + "community": 41, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.dependencyinjection", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L82" + }, { "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_dependencyinjection_abstractions", "label": "Microsoft.Extensions.DependencyInjection.Abstractions", @@ -75592,6 +76783,17 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L83" }, + { + "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_diagnostics_abstractions", + "label": "Microsoft.Extensions.Diagnostics.Abstractions", + "_origin": "ast", + "community": 41, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.diagnostics.abstractions", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L365" + }, { "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_logging", "label": "Microsoft.Extensions.Logging", @@ -75603,6 +76805,17 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L33" }, + { + "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_logging_abstractions", + "label": "Microsoft.Extensions.Logging.Abstractions", + "_origin": "ast", + "community": 41, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.logging.abstractions", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L89" + }, { "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_logging_configuration", "label": "Microsoft.Extensions.Logging.Configuration", @@ -75625,6 +76838,17 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L95" }, + { + "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_options_configurationextensions", + "label": "Microsoft.Extensions.Options.ConfigurationExtensions", + "_origin": "ast", + "community": 41, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.options.configurationextensions", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L366" + }, { "id": "src_anichron_worker_packages_lock_dependencies_system_diagnostics_eventlog", "label": "System.Diagnostics.EventLog", @@ -75637,7 +76861,18 @@ "source_location": "L477" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_caching_memory_contenthash", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_caching_memory_dependencies", + "label": "dependencies", + "_origin": "ast", + "community": 41, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L264" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_dependencyinjection_contenthash", "label": "contentHash", "_origin": "ast", "community": 41, @@ -75645,10 +76880,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L263" + "source_location": "L344" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_caching_memory_dependencies", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_dependencyinjection_dependencies", "label": "dependencies", "_origin": "ast", "community": 41, @@ -75656,10 +76891,10 @@ "file_type": "code", "norm_label": "dependencies", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L264" + "source_location": "L345" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_caching_memory_resolved", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_dependencyinjection_resolved", "label": "resolved", "_origin": "ast", "community": 41, @@ -75667,10 +76902,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L262" + "source_location": "L343" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_caching_memory_type", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_dependencyinjection_type", "label": "type", "_origin": "ast", "community": 41, @@ -75678,7 +76913,7 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L261" + "source_location": "L342" }, { "id": "src_anichron_worker_packages_lock_microsoft_extensions_diagnostics_abstractions_contenthash", @@ -75725,7 +76960,7 @@ "source_location": "L370" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_abstractions_contenthash", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_diagnostics_contenthash", "label": "contentHash", "_origin": "ast", "community": 41, @@ -75733,10 +76968,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L426" + "source_location": "L362" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_abstractions_dependencies", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_diagnostics_dependencies", "label": "dependencies", "_origin": "ast", "community": 41, @@ -75744,10 +76979,10 @@ "file_type": "code", "norm_label": "dependencies", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L427" + "source_location": "L363" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_abstractions_resolved", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_diagnostics_resolved", "label": "resolved", "_origin": "ast", "community": 41, @@ -75755,10 +76990,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L425" + "source_location": "L361" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_abstractions_type", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_diagnostics_type", "label": "type", "_origin": "ast", "community": 41, @@ -75766,7 +77001,62 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L424" + "source_location": "L360" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_hosting_abstractions_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 41, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L404" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_hosting_abstractions_dependencies", + "label": "dependencies", + "_origin": "ast", + "community": 41, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L405" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_hosting_abstractions_resolved", + "label": "resolved", + "_origin": "ast", + "community": 41, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L403" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_hosting_abstractions_type", + "label": "type", + "_origin": "ast", + "community": 41, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L402" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_configuration_dependencies", + "label": "dependencies", + "_origin": "ast", + "community": 41, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L435" }, { "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_console_contenthash", @@ -75856,6 +77146,17 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L459" }, + { + "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_dependencies", + "label": "dependencies", + "_origin": "ast", + "community": 41, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L417" + }, { "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_eventlog_contenthash", "label": "contentHash", @@ -76000,15 +77301,26 @@ "source_location": "L99" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_caching_memory", - "label": "Microsoft.Extensions.Caching.Memory", + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_dependencyinjection", + "label": "Microsoft.Extensions.DependencyInjection", "_origin": "ast", "community": 41, "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.caching.memory", + "norm_label": "microsoft.extensions.dependencyinjection", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L260" + "source_location": "L341" + }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_diagnostics", + "label": "Microsoft.Extensions.Diagnostics", + "_origin": "ast", + "community": 41, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "microsoft.extensions.diagnostics", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L359" }, { "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_diagnostics_abstractions", @@ -76022,15 +77334,15 @@ "source_location": "L369" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_logging_abstractions", - "label": "Microsoft.Extensions.Logging.Abstractions", + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_hosting_abstractions", + "label": "Microsoft.Extensions.Hosting.Abstractions", "_origin": "ast", "community": 41, "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.logging.abstractions", + "norm_label": "microsoft.extensions.hosting.abstractions", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L423" + "source_location": "L401" }, { "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_logging_console", @@ -76088,114 +77400,92 @@ "source_location": "L98" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_dependencyinjection_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_win32_registry_contenthash", "label": "contentHash", "_origin": "ast", "community": 410, - "community_name": "Microsoft.Extensions.DependencyInjection", + "community_name": "Microsoft.Win32.Registry", "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L214" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_dependencyinjection_dependencies", - "label": "dependencies", - "_origin": "ast", - "community": 410, - "community_name": "Microsoft.Extensions.DependencyInjection", - "file_type": "code", - "norm_label": "dependencies", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L215" + "source_location": "L430" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_dependencyinjection_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_win32_registry_resolved", "label": "resolved", "_origin": "ast", "community": 410, - "community_name": "Microsoft.Extensions.DependencyInjection", + "community_name": "Microsoft.Win32.Registry", "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L213" + "source_location": "L429" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_dependencyinjection_type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_win32_registry_type", "label": "type", "_origin": "ast", "community": 410, - "community_name": "Microsoft.Extensions.DependencyInjection", + "community_name": "Microsoft.Win32.Registry", "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L212" + "source_location": "L428" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_dependencyinjection", - "label": "Microsoft.Extensions.DependencyInjection", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_win32_registry", + "label": "Microsoft.Win32.Registry", "_origin": "ast", "community": 410, - "community_name": "Microsoft.Extensions.DependencyInjection", + "community_name": "Microsoft.Win32.Registry", "file_type": "code", - "norm_label": "microsoft.extensions.dependencyinjection", + "norm_label": "microsoft.win32.registry", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L211" + "source_location": "L427" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_xunit_runner_visualstudio", - "label": "xunit.runner.visualstudio", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_newtonsoft_json", + "label": "Newtonsoft.Json", "_origin": "ast", "community": 411, - "community_name": "xunit.runner.visualstudio", + "community_name": "Newtonsoft.Json", "file_type": "code", - "norm_label": "xunit.runner.visualstudio", + "norm_label": "newtonsoft.json", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L69" + "source_location": "L432" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_xunit_runner_visualstudio_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_newtonsoft_json_contenthash", "label": "contentHash", "_origin": "ast", "community": 411, - "community_name": "xunit.runner.visualstudio", + "community_name": "Newtonsoft.Json", "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L73" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_xunit_runner_visualstudio_requested", - "label": "requested", - "_origin": "ast", - "community": 411, - "community_name": "xunit.runner.visualstudio", - "file_type": "code", - "norm_label": "requested", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L71" + "source_location": "L435" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_xunit_runner_visualstudio_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_newtonsoft_json_resolved", "label": "resolved", "_origin": "ast", "community": 411, - "community_name": "xunit.runner.visualstudio", + "community_name": "Newtonsoft.Json", "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L72" + "source_location": "L434" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_xunit_runner_visualstudio_type", + "id": "src_anichron_worker_tests_unit_packages_lock_newtonsoft_json_type", "label": "type", "_origin": "ast", "community": 411, - "community_name": "xunit.runner.visualstudio", + "community_name": "Newtonsoft.Json", "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L70" + "source_location": "L433" }, { "id": "src_anichron_api_packages_lock_microsoft_entityframeworkcore_analyzers_contenthash", @@ -76506,48 +77796,48 @@ "source_location": "L571" }, { - "id": "src_anichron_worker_packages_lock_blurhash_core_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_xunit_v3_assert", + "label": "xunit.v3.assert", + "_origin": "ast", + "community": 419, + "community_name": "xunit.v3.assert", + "file_type": "code", + "norm_label": "xunit.v3.assert", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L491" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_xunit_v3_assert_contenthash", "label": "contentHash", "_origin": "ast", "community": 419, - "community_name": "Blurhash.Core", + "community_name": "xunit.v3.assert", "file_type": "code", "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L165" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L494" }, { - "id": "src_anichron_worker_packages_lock_blurhash_core_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_xunit_v3_assert_resolved", "label": "resolved", "_origin": "ast", "community": 419, - "community_name": "Blurhash.Core", + "community_name": "xunit.v3.assert", "file_type": "code", "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L164" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L493" }, { - "id": "src_anichron_worker_packages_lock_blurhash_core_type", + "id": "src_anichron_worker_tests_unit_packages_lock_xunit_v3_assert_type", "label": "type", "_origin": "ast", "community": 419, - "community_name": "Blurhash.Core", + "community_name": "xunit.v3.assert", "file_type": "code", "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L163" - }, - { - "id": "src_anichron_worker_packages_lock_net10_0_blurhash_core", - "label": "Blurhash.Core", - "_origin": "ast", - "community": 419, - "community_name": "Blurhash.Core", - "file_type": "code", - "norm_label": "blurhash.core", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L162" + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L492" }, { "id": "iconfigurationsection", @@ -76627,444 +77917,34 @@ "source_location": "" }, { - "id": "src_anichron_worker_packages_lock_humanizer_core_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 420, - "community_name": "Humanizer.Core", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L170" - }, - { - "id": "src_anichron_worker_packages_lock_humanizer_core_resolved", - "label": "resolved", - "_origin": "ast", - "community": 420, - "community_name": "Humanizer.Core", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L169" - }, - { - "id": "src_anichron_worker_packages_lock_humanizer_core_type", - "label": "type", + "id": "scripts_ci_gate", + "label": "ci-gate.sh", "_origin": "ast", "community": 420, - "community_name": "Humanizer.Core", + "community_name": "ci-gate.sh", "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L168" + "metadata": { + "language": "bash", + "kind": "file" + }, + "norm_label": "ci-gate.sh", + "source_file": "scripts/ci-gate.sh", + "source_location": "L1" }, { - "id": "src_anichron_worker_packages_lock_net10_0_humanizer_core", - "label": "Humanizer.Core", + "id": "scripts_ci_gate_sh__entry", + "label": "ci-gate.sh script", "_origin": "ast", "community": 420, - "community_name": "Humanizer.Core", + "community_name": "ci-gate.sh", "file_type": "code", - "norm_label": "humanizer.core", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L167" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_build_framework_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 421, - "community_name": "Microsoft.Build.Framework", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L175" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_build_framework_resolved", - "label": "resolved", - "_origin": "ast", - "community": 421, - "community_name": "Microsoft.Build.Framework", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L174" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_build_framework_type", - "label": "type", - "_origin": "ast", - "community": 421, - "community_name": "Microsoft.Build.Framework", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L173" - }, - { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_build_framework", - "label": "Microsoft.Build.Framework", - "_origin": "ast", - "community": 421, - "community_name": "Microsoft.Build.Framework", - "file_type": "code", - "norm_label": "microsoft.build.framework", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L172" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_binder_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 422, - "community_name": "Microsoft.Extensions.Configuration.Binder", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L283" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_binder_resolved", - "label": "resolved", - "_origin": "ast", - "community": 422, - "community_name": "Microsoft.Extensions.Configuration.Binder", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L282" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_binder_type", - "label": "type", - "_origin": "ast", - "community": 422, - "community_name": "Microsoft.Extensions.Configuration.Binder", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L281" - }, - { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_binder", - "label": "Microsoft.Extensions.Configuration.Binder", - "_origin": "ast", - "community": 422, - "community_name": "Microsoft.Extensions.Configuration.Binder", - "file_type": "code", - "norm_label": "microsoft.extensions.configuration.binder", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L280" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_commandline_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 423, - "community_name": "Microsoft.Extensions.Configuration.CommandLine", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L292" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_commandline_resolved", - "label": "resolved", - "_origin": "ast", - "community": 423, - "community_name": "Microsoft.Extensions.Configuration.CommandLine", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L291" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_commandline_type", - "label": "type", - "_origin": "ast", - "community": 423, - "community_name": "Microsoft.Extensions.Configuration.CommandLine", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L290" - }, - { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_commandline", - "label": "Microsoft.Extensions.Configuration.CommandLine", - "_origin": "ast", - "community": 423, - "community_name": "Microsoft.Extensions.Configuration.CommandLine", - "file_type": "code", - "norm_label": "microsoft.extensions.configuration.commandline", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L289" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_fileextensions_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 424, - "community_name": "Microsoft.Extensions.Configuration.FileExtensions", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L310" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_fileextensions_resolved", - "label": "resolved", - "_origin": "ast", - "community": 424, - "community_name": "Microsoft.Extensions.Configuration.FileExtensions", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L309" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_fileextensions_type", - "label": "type", - "_origin": "ast", - "community": 424, - "community_name": "Microsoft.Extensions.Configuration.FileExtensions", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L308" - }, - { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_fileextensions", - "label": "Microsoft.Extensions.Configuration.FileExtensions", - "_origin": "ast", - "community": 424, - "community_name": "Microsoft.Extensions.Configuration.FileExtensions", - "file_type": "code", - "norm_label": "microsoft.extensions.configuration.fileextensions", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L307" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_json_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 425, - "community_name": "Microsoft.Extensions.Configuration.Json", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L322" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_json_resolved", - "label": "resolved", - "_origin": "ast", - "community": 425, - "community_name": "Microsoft.Extensions.Configuration.Json", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L321" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_json_type", - "label": "type", - "_origin": "ast", - "community": 425, - "community_name": "Microsoft.Extensions.Configuration.Json", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L320" - }, - { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_json", - "label": "Microsoft.Extensions.Configuration.Json", - "_origin": "ast", - "community": 425, - "community_name": "Microsoft.Extensions.Configuration.Json", - "file_type": "code", - "norm_label": "microsoft.extensions.configuration.json", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L319" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_usersecrets_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 426, - "community_name": "Microsoft.Extensions.Configuration.UserSecrets", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L333" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_usersecrets_resolved", - "label": "resolved", - "_origin": "ast", - "community": 426, - "community_name": "Microsoft.Extensions.Configuration.UserSecrets", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L332" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_usersecrets_type", - "label": "type", - "_origin": "ast", - "community": 426, - "community_name": "Microsoft.Extensions.Configuration.UserSecrets", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L331" - }, - { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_usersecrets", - "label": "Microsoft.Extensions.Configuration.UserSecrets", - "_origin": "ast", - "community": 426, - "community_name": "Microsoft.Extensions.Configuration.UserSecrets", - "file_type": "code", - "norm_label": "microsoft.extensions.configuration.usersecrets", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L330" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_dependencymodel_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 427, - "community_name": "Microsoft.Extensions.DependencyModel", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L357" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_dependencymodel_resolved", - "label": "resolved", - "_origin": "ast", - "community": 427, - "community_name": "Microsoft.Extensions.DependencyModel", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L356" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_dependencymodel_type", - "label": "type", - "_origin": "ast", - "community": 427, - "community_name": "Microsoft.Extensions.DependencyModel", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L355" - }, - { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_dependencymodel", - "label": "Microsoft.Extensions.DependencyModel", - "_origin": "ast", - "community": 427, - "community_name": "Microsoft.Extensions.DependencyModel", - "file_type": "code", - "norm_label": "microsoft.extensions.dependencymodel", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L354" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_diagnostics_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 428, - "community_name": "Microsoft.Extensions.Diagnostics", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L362" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_diagnostics_resolved", - "label": "resolved", - "_origin": "ast", - "community": 428, - "community_name": "Microsoft.Extensions.Diagnostics", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L361" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_diagnostics_type", - "label": "type", - "_origin": "ast", - "community": 428, - "community_name": "Microsoft.Extensions.Diagnostics", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L360" - }, - { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_diagnostics", - "label": "Microsoft.Extensions.Diagnostics", - "_origin": "ast", - "community": 428, - "community_name": "Microsoft.Extensions.Diagnostics", - "file_type": "code", - "norm_label": "microsoft.extensions.diagnostics", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L359" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_configuration_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 429, - "community_name": "Microsoft.Extensions.Logging.Configuration", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L434" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_configuration_resolved", - "label": "resolved", - "_origin": "ast", - "community": 429, - "community_name": "Microsoft.Extensions.Logging.Configuration", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L433" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_configuration_type", - "label": "type", - "_origin": "ast", - "community": 429, - "community_name": "Microsoft.Extensions.Logging.Configuration", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L432" - }, - { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_logging_configuration", - "label": "Microsoft.Extensions.Logging.Configuration", - "_origin": "ast", - "community": 429, - "community_name": "Microsoft.Extensions.Logging.Configuration", - "file_type": "code", - "norm_label": "microsoft.extensions.logging.configuration", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L431" + "metadata": { + "language": "bash", + "kind": "bash_entrypoint" + }, + "norm_label": "ci-gate.sh script", + "source_file": "scripts/ci-gate.sh", + "source_location": "L1" }, { "id": "src_anichron_api_tests_unit_packages_lock_dependencies", @@ -77638,402 +78518,6 @@ "source_file": "src/Anichron.API.Tests.Unit/packages.lock.json", "source_location": "L625" }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_primitives_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 430, - "community_name": "Microsoft.Extensions.Primitives", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L516" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_primitives_resolved", - "label": "resolved", - "_origin": "ast", - "community": 430, - "community_name": "Microsoft.Extensions.Primitives", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L515" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_primitives_type", - "label": "type", - "_origin": "ast", - "community": 430, - "community_name": "Microsoft.Extensions.Primitives", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L514" - }, - { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_primitives", - "label": "Microsoft.Extensions.Primitives", - "_origin": "ast", - "community": 430, - "community_name": "Microsoft.Extensions.Primitives", - "file_type": "code", - "norm_label": "microsoft.extensions.primitives", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L513" - }, - { - "id": "src_anichron_worker_packages_lock_net10_0_system_diagnostics_eventlog", - "label": "System.Diagnostics.EventLog", - "_origin": "ast", - "community": 431, - "community_name": "System.Diagnostics.EventLog", - "file_type": "code", - "norm_label": "system.diagnostics.eventlog", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L598" - }, - { - "id": "src_anichron_worker_packages_lock_system_diagnostics_eventlog_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 431, - "community_name": "System.Diagnostics.EventLog", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L601" - }, - { - "id": "src_anichron_worker_packages_lock_system_diagnostics_eventlog_resolved", - "label": "resolved", - "_origin": "ast", - "community": 431, - "community_name": "System.Diagnostics.EventLog", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L600" - }, - { - "id": "src_anichron_worker_packages_lock_system_diagnostics_eventlog_type", - "label": "type", - "_origin": "ast", - "community": 431, - "community_name": "System.Diagnostics.EventLog", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L599" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_blurhash_core_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 432, - "community_name": "Blurhash.Core", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L87" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_blurhash_core_resolved", - "label": "resolved", - "_origin": "ast", - "community": 432, - "community_name": "Blurhash.Core", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L86" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_blurhash_core_type", - "label": "type", - "_origin": "ast", - "community": 432, - "community_name": "Blurhash.Core", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L85" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_blurhash_core", - "label": "Blurhash.Core", - "_origin": "ast", - "community": 432, - "community_name": "Blurhash.Core", - "file_type": "code", - "norm_label": "blurhash.core", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L84" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_bcl_asyncinterfaces_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 433, - "community_name": "Microsoft.Bcl.AsyncInterfaces", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L105" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_bcl_asyncinterfaces_resolved", - "label": "resolved", - "_origin": "ast", - "community": 433, - "community_name": "Microsoft.Bcl.AsyncInterfaces", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L104" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_bcl_asyncinterfaces_type", - "label": "type", - "_origin": "ast", - "community": 433, - "community_name": "Microsoft.Bcl.AsyncInterfaces", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L103" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_bcl_asyncinterfaces", - "label": "Microsoft.Bcl.AsyncInterfaces", - "_origin": "ast", - "community": 433, - "community_name": "Microsoft.Bcl.AsyncInterfaces", - "file_type": "code", - "norm_label": "microsoft.bcl.asyncinterfaces", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L102" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_diagnostics_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 434, - "community_name": "Microsoft.Extensions.Diagnostics", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L227" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_diagnostics_resolved", - "label": "resolved", - "_origin": "ast", - "community": 434, - "community_name": "Microsoft.Extensions.Diagnostics", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L226" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_diagnostics_type", - "label": "type", - "_origin": "ast", - "community": 434, - "community_name": "Microsoft.Extensions.Diagnostics", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L225" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_diagnostics", - "label": "Microsoft.Extensions.Diagnostics", - "_origin": "ast", - "community": 434, - "community_name": "Microsoft.Extensions.Diagnostics", - "file_type": "code", - "norm_label": "microsoft.extensions.diagnostics", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L224" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_hosting_abstractions_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 435, - "community_name": "Microsoft.Extensions.Hosting.Abstractions", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L269" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_hosting_abstractions_resolved", - "label": "resolved", - "_origin": "ast", - "community": 435, - "community_name": "Microsoft.Extensions.Hosting.Abstractions", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L268" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_hosting_abstractions_type", - "label": "type", - "_origin": "ast", - "community": 435, - "community_name": "Microsoft.Extensions.Hosting.Abstractions", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L267" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_hosting_abstractions", - "label": "Microsoft.Extensions.Hosting.Abstractions", - "_origin": "ast", - "community": 435, - "community_name": "Microsoft.Extensions.Hosting.Abstractions", - "file_type": "code", - "norm_label": "microsoft.extensions.hosting.abstractions", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L266" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_system_diagnostics_eventlog", - "label": "System.Diagnostics.EventLog", - "_origin": "ast", - "community": 436, - "community_name": "System.Diagnostics.EventLog", - "file_type": "code", - "norm_label": "system.diagnostics.eventlog", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L446" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_system_diagnostics_eventlog_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 436, - "community_name": "System.Diagnostics.EventLog", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L449" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_system_diagnostics_eventlog_resolved", - "label": "resolved", - "_origin": "ast", - "community": 436, - "community_name": "System.Diagnostics.EventLog", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L448" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_system_diagnostics_eventlog_type", - "label": "type", - "_origin": "ast", - "community": 436, - "community_name": "System.Diagnostics.EventLog", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L447" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_testably_abstractions_filesystem_interface", - "label": "Testably.Abstractions.FileSystem.Interface", - "_origin": "ast", - "community": 437, - "community_name": "Testably.Abstractions.FileSystem.Interface", - "file_type": "code", - "norm_label": "testably.abstractions.filesystem.interface", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L476" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_testably_abstractions_filesystem_interface_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 437, - "community_name": "Testably.Abstractions.FileSystem.Interface", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L479" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_testably_abstractions_filesystem_interface_resolved", - "label": "resolved", - "_origin": "ast", - "community": 437, - "community_name": "Testably.Abstractions.FileSystem.Interface", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L478" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_testably_abstractions_filesystem_interface_type", - "label": "type", - "_origin": "ast", - "community": 437, - "community_name": "Testably.Abstractions.FileSystem.Interface", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L477" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_xunit_analyzers", - "label": "xunit.analyzers", - "_origin": "ast", - "community": 438, - "community_name": "xunit.analyzers", - "file_type": "code", - "norm_label": "xunit.analyzers", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L486" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_xunit_analyzers_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 438, - "community_name": "xunit.analyzers", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L489" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_xunit_analyzers_resolved", - "label": "resolved", - "_origin": "ast", - "community": 438, - "community_name": "xunit.analyzers", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L488" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_xunit_analyzers_type", - "label": "type", - "_origin": "ast", - "community": 438, - "community_name": "xunit.analyzers", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L487" - }, { "id": "src_anichron_core_tests_unit_packages_lock", "label": "Anichron.Core.Tests.Unit/packages.lock.json", @@ -78726,6 +79210,17 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_core_tests_unit_data_softdeletequeryfiltertests_cs_valuetask", + "label": "ValueTask", + "_origin": "ast", + "community": 45, + "community_name": "ProxyFile", + "file_type": "code", + "norm_label": "valuetask", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_api_tests_unit_infrastructure_apiinidefaultstests_cs_fact", "label": "Fact", @@ -79100,6 +79595,17 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L224" }, + { + "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_design_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 46, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L40" + }, { "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_design_dependencies", "label": "dependencies", @@ -79111,6 +79617,39 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L41" }, + { + "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_design_requested", + "label": "requested", + "_origin": "ast", + "community": 46, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "requested", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L38" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_design_resolved", + "label": "resolved", + "_origin": "ast", + "community": 46, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "resolved", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L39" + }, + { + "id": "src_anichron_worker_packages_lock_microsoft_entityframeworkcore_design_type", + "label": "type", + "_origin": "ast", + "community": 46, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L37" + }, { "id": "src_anichron_worker_packages_lock_net10_0_microsoft_codeanalysis_common", "label": "Microsoft.CodeAnalysis.Common", @@ -79166,6 +79705,17 @@ "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L223" }, + { + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_entityframeworkcore_design", + "label": "Microsoft.EntityFrameworkCore.Design", + "_origin": "ast", + "community": 46, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "microsoft.entityframeworkcore.design", + "source_file": "src/Anichron.Worker/packages.lock.json", + "source_location": "L36" + }, { "id": "databasefacade", "label": "DatabaseFacade", @@ -79561,6 +80111,17 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_core_tests_unit_data_repository_userrepositorytests_cs_inlinedata", + "label": "InlineData", + "_origin": "ast", + "community": 5, + "community_name": "EfUserRepository", + "file_type": "code", + "norm_label": "inlinedata", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_core_tests_unit_data_repository_userrepositorytests_cs_task", "label": "Task", @@ -79572,6 +80133,17 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_core_tests_unit_data_repository_userrepositorytests_cs_theory", + "label": "Theory", + "_origin": "ast", + "community": 5, + "community_name": "EfUserRepository", + "file_type": "code", + "norm_label": "theory", + "source_file": "", + "source_location": "" + }, { "id": "iasynclifetime", "label": "IAsyncLifetime", @@ -79605,234 +80177,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_core_tests_unit_data_softdeletequeryfiltertests_cs_valuetask", - "label": "ValueTask", - "_origin": "ast", - "community": 50, - "community_name": "SoftDeleteQueryFilterTests", - "file_type": "code", - "norm_label": "valuetask", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_anichron_worker_ingestion_middlewares_videoproxymiddleware_order", - "label": "Order", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Middlewares", - "scope_chain": [ - "s110" - ] - }, - "norm_label": "order", - "source_file": "src/Anichron.Worker/Ingestion/Middlewares/VideoProxyMiddleware.cs", - "source_location": "L13" - }, - { - "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_cs_cancellationtoken", - "label": "CancellationToken", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_cs_ienumerable", - "label": "IEnumerable", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "ienumerable", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_cs_ilogger", - "label": "ILogger", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "ilogger", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_cs_ingestiondelegate", - "label": "IngestionDelegate", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "ingestiondelegate", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_cs_loggermessage", - "label": "LoggerMessage", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "loggermessage", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_ingestion_middlewares_videoproxymiddleware_cs_task", - "label": "Task", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_ingestion_proxy_proxyshardstrategy", - "label": "ProxyShardStrategy.cs", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "proxyshardstrategy.cs", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/ProxyShardStrategy.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_worker_ingestion_proxy_proxyshardstrategy_cs_guid", - "label": "Guid", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "guid", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators", - "label": "VideoProxyGenerators.cs", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "videoproxygenerators.cs", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", - "source_location": "L1" - }, - { - "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_ivideoproxygenerator_filename", - "label": "FileName", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s29" - ] - }, - "norm_label": "filename", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", - "source_location": "L7" - }, - { - "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_ivideoproxygenerator_proxytype", - "label": "ProxyType", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s29" - ] - }, - "norm_label": "proxytype", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", - "source_location": "L8" - }, - { - "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_video720pgenerator_filename", - "label": "FileName", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s29" - ] - }, - "norm_label": "filename", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", - "source_location": "L14" - }, - { - "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_anichron_worker_ingestion_proxy_video720pgenerator_proxytype", - "label": "ProxyType", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "metadata": { - "namespace": "Anichron.Worker.Ingestion.Proxy", - "scope_chain": [ - "s29" - ] - }, - "norm_label": "proxytype", - "source_file": "src/Anichron.Worker/Ingestion/Proxy/VideoProxyGenerators.cs", - "source_location": "L15" - }, - { - "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_cs_cancellationtoken", - "label": "CancellationToken", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_cs_proxytype", - "label": "ProxyType", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "proxytype", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_ingestion_proxy_videoproxygenerators_cs_task", - "label": "Task", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_videoproxymiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_testfixture_clock", "label": "Clock", @@ -79979,17 +80323,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_videoproxymiddlewaretests_cs_ilogger", - "label": "ILogger", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "ilogger", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_videoproxymiddlewaretests_cs_instant", "label": "Instant", @@ -80034,39 +80367,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxyshardstrategytests_cs_fact", - "label": "Fact", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "fact", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_cs_fact", - "label": "Fact", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "fact", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_videoproxygeneratorstests_cs_task", - "label": "Task", - "_origin": "ast", - "community": 51, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "task", - "source_file": "", - "source_location": "" - }, { "id": "scripts_mutation_ratchet_test", "label": "mutation-ratchet.test.sh", @@ -80756,29 +81056,7 @@ "source_location": "L208" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_dependencies", - "label": "dependencies", - "_origin": "ast", - "community": 55, - "community_name": "net10.0", - "file_type": "code", - "norm_label": "dependencies", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L3" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_net10_0", - "label": "net10.0", - "_origin": "ast", - "community": 55, - "community_name": "net10.0", - "file_type": "code", - "norm_label": "net10.0", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L4" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_applicationinsights_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_blurhash_core_contenthash", "label": "contentHash", "_origin": "ast", "community": 55, @@ -80786,10 +81064,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L100" + "source_location": "L87" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_applicationinsights_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_blurhash_core_resolved", "label": "resolved", "_origin": "ast", "community": 55, @@ -80797,10 +81075,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L99" + "source_location": "L86" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_applicationinsights_type", + "id": "src_anichron_worker_tests_unit_packages_lock_blurhash_core_type", "label": "type", "_origin": "ast", "community": 55, @@ -80808,43 +81086,32 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L98" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_codecoverage_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 55, - "community_name": "net10.0", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L110" + "source_location": "L85" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_codecoverage_resolved", - "label": "resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_dependencies", + "label": "dependencies", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "resolved", + "norm_label": "dependencies", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L109" + "source_location": "L3" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_codecoverage_type", - "label": "type", + "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_net10_0", + "label": "net10.0", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "type", + "norm_label": "net10.0", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L108" + "source_location": "L4" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_entityframeworkcore_abstractions_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_bcl_asyncinterfaces_contenthash", "label": "contentHash", "_origin": "ast", "community": 55, @@ -80852,10 +81119,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L115" + "source_location": "L105" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_entityframeworkcore_abstractions_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_bcl_asyncinterfaces_resolved", "label": "resolved", "_origin": "ast", "community": 55, @@ -80863,10 +81130,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L114" + "source_location": "L104" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_entityframeworkcore_abstractions_type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_bcl_asyncinterfaces_type", "label": "type", "_origin": "ast", "community": 55, @@ -80874,10 +81141,10 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L113" + "source_location": "L103" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_entityframeworkcore_analyzers_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_codecoverage_contenthash", "label": "contentHash", "_origin": "ast", "community": 55, @@ -80885,10 +81152,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L120" + "source_location": "L110" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_entityframeworkcore_analyzers_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_codecoverage_resolved", "label": "resolved", "_origin": "ast", "community": 55, @@ -80896,10 +81163,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L119" + "source_location": "L109" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_entityframeworkcore_analyzers_type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_codecoverage_type", "label": "type", "_origin": "ast", "community": 55, @@ -80907,7 +81174,7 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L118" + "source_location": "L108" }, { "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_entityframeworkcore_relational_requested", @@ -80998,114 +81265,26 @@ "source_location": "L262" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_configuration_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 55, - "community_name": "net10.0", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L299" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_configuration_resolved", - "label": "resolved", - "_origin": "ast", - "community": 55, - "community_name": "net10.0", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L298" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_configuration_type", - "label": "type", - "_origin": "ast", - "community": 55, - "community_name": "net10.0", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L297" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_testplatform_objectmodel_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 55, - "community_name": "net10.0", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L416" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_testplatform_objectmodel_resolved", - "label": "resolved", - "_origin": "ast", - "community": 55, - "community_name": "net10.0", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L415" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_testplatform_objectmodel_type", - "label": "type", - "_origin": "ast", - "community": 55, - "community_name": "net10.0", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L414" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_win32_registry_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 55, - "community_name": "net10.0", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L430" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_win32_registry_resolved", - "label": "resolved", - "_origin": "ast", - "community": 55, - "community_name": "net10.0", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L429" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_win32_registry_type", - "label": "type", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_blurhash_core", + "label": "Blurhash.Core", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "type", + "norm_label": "blurhash.core", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L428" + "source_location": "L84" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_applicationinsights", - "label": "Microsoft.ApplicationInsights", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_bcl_asyncinterfaces", + "label": "Microsoft.Bcl.AsyncInterfaces", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "microsoft.applicationinsights", + "norm_label": "microsoft.bcl.asyncinterfaces", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L97" + "source_location": "L102" }, { "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_codecoverage", @@ -81118,28 +81297,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L107" }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_entityframeworkcore_abstractions", - "label": "Microsoft.EntityFrameworkCore.Abstractions", - "_origin": "ast", - "community": 55, - "community_name": "net10.0", - "file_type": "code", - "norm_label": "microsoft.entityframeworkcore.abstractions", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L112" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_entityframeworkcore_analyzers", - "label": "Microsoft.EntityFrameworkCore.Analyzers", - "_origin": "ast", - "community": 55, - "community_name": "net10.0", - "file_type": "code", - "norm_label": "microsoft.entityframeworkcore.analyzers", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L117" - }, { "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_entityframeworkcore_relational", "label": "Microsoft.EntityFrameworkCore.Relational", @@ -81174,73 +81331,84 @@ "source_location": "L261" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_logging_configuration", - "label": "Microsoft.Extensions.Logging.Configuration", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_system_diagnostics_eventlog", + "label": "System.Diagnostics.EventLog", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "microsoft.extensions.logging.configuration", + "norm_label": "system.diagnostics.eventlog", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L296" + "source_location": "L446" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_testplatform_objectmodel", - "label": "Microsoft.TestPlatform.ObjectModel", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_testably_abstractions_filesystem_interface", + "label": "Testably.Abstractions.FileSystem.Interface", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "microsoft.testplatform.objectmodel", + "norm_label": "testably.abstractions.filesystem.interface", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L413" + "source_location": "L476" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_win32_registry", - "label": "Microsoft.Win32.Registry", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_xunit_analyzers", + "label": "xunit.analyzers", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "microsoft.win32.registry", + "norm_label": "xunit.analyzers", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L427" + "source_location": "L486" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_newtonsoft_json", - "label": "Newtonsoft.Json", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_xunit_runner_visualstudio", + "label": "xunit.runner.visualstudio", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "newtonsoft.json", + "norm_label": "xunit.runner.visualstudio", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L432" + "source_location": "L69" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_roslynator_analyzers", - "label": "Roslynator.Analyzers", + "id": "src_anichron_worker_tests_unit_packages_lock_system_diagnostics_eventlog_contenthash", + "label": "contentHash", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "roslynator.analyzers", + "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L48" + "source_location": "L449" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_xunit_v3_assert", - "label": "xunit.v3.assert", + "id": "src_anichron_worker_tests_unit_packages_lock_system_diagnostics_eventlog_resolved", + "label": "resolved", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "xunit.v3.assert", + "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L491" + "source_location": "L448" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_newtonsoft_json_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_system_diagnostics_eventlog_type", + "label": "type", + "_origin": "ast", + "community": 55, + "community_name": "net10.0", + "file_type": "code", + "norm_label": "type", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L447" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_testably_abstractions_filesystem_interface_contenthash", "label": "contentHash", "_origin": "ast", "community": 55, @@ -81248,10 +81416,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L435" + "source_location": "L479" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_newtonsoft_json_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_testably_abstractions_filesystem_interface_resolved", "label": "resolved", "_origin": "ast", "community": 55, @@ -81259,10 +81427,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L434" + "source_location": "L478" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_newtonsoft_json_type", + "id": "src_anichron_worker_tests_unit_packages_lock_testably_abstractions_filesystem_interface_type", "label": "type", "_origin": "ast", "community": 55, @@ -81270,10 +81438,10 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L433" + "source_location": "L477" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_roslynator_analyzers_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_xunit_analyzers_contenthash", "label": "contentHash", "_origin": "ast", "community": 55, @@ -81281,54 +81449,54 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L52" + "source_location": "L489" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_roslynator_analyzers_requested", - "label": "requested", + "id": "src_anichron_worker_tests_unit_packages_lock_xunit_analyzers_resolved", + "label": "resolved", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "requested", + "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L50" + "source_location": "L488" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_roslynator_analyzers_resolved", - "label": "resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_xunit_analyzers_type", + "label": "type", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "resolved", + "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L51" + "source_location": "L487" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_roslynator_analyzers_type", - "label": "type", + "id": "src_anichron_worker_tests_unit_packages_lock_xunit_runner_visualstudio_contenthash", + "label": "contentHash", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "type", + "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L49" + "source_location": "L73" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_xunit_v3_assert_contenthash", - "label": "contentHash", + "id": "src_anichron_worker_tests_unit_packages_lock_xunit_runner_visualstudio_requested", + "label": "requested", "_origin": "ast", "community": 55, "community_name": "net10.0", "file_type": "code", - "norm_label": "contenthash", + "norm_label": "requested", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L494" + "source_location": "L71" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_xunit_v3_assert_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_xunit_runner_visualstudio_resolved", "label": "resolved", "_origin": "ast", "community": 55, @@ -81336,10 +81504,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L493" + "source_location": "L72" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_xunit_v3_assert_type", + "id": "src_anichron_worker_tests_unit_packages_lock_xunit_runner_visualstudio_type", "label": "type", "_origin": "ast", "community": 55, @@ -81347,7 +81515,7 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L492" + "source_location": "L70" }, { "id": "src_anichron_api_infrastructure_configurationlist", @@ -82551,6 +82719,17 @@ "source_file": "src/Anichron.API/packages.lock.json", "source_location": "L94" }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_castle_core_contenthash", + "label": "contentHash", + "_origin": "ast", + "community": 61, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "contenthash", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L92" + }, { "id": "src_anichron_worker_tests_unit_packages_lock_castle_core_dependencies", "label": "dependencies", @@ -82563,26 +82742,26 @@ "source_location": "L93" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_caching_abstractions", - "label": "Microsoft.Extensions.Caching.Abstractions", + "id": "src_anichron_worker_tests_unit_packages_lock_castle_core_resolved", + "label": "resolved", "_origin": "ast", "community": 61, "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.caching.abstractions", + "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L135" + "source_location": "L91" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_configuration_binder", - "label": "Microsoft.Extensions.Configuration.Binder", + "id": "src_anichron_worker_tests_unit_packages_lock_castle_core_type", + "label": "type", "_origin": "ast", "community": 61, "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.configuration.binder", + "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L303" + "source_location": "L90" }, { "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_dependencyinjection", @@ -82606,17 +82785,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L136" }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_diagnostics_abstractions", - "label": "Microsoft.Extensions.Diagnostics.Abstractions", - "_origin": "ast", - "community": 61, - "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", - "file_type": "code", - "norm_label": "microsoft.extensions.diagnostics.abstractions", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L230" - }, { "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_logging", "label": "Microsoft.Extensions.Logging", @@ -82661,17 +82829,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L138" }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_microsoft_extensions_options_configurationextensions", - "label": "Microsoft.Extensions.Options.ConfigurationExtensions", - "_origin": "ast", - "community": 61, - "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", - "file_type": "code", - "norm_label": "microsoft.extensions.options.configurationextensions", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L231" - }, { "id": "src_anichron_worker_tests_unit_packages_lock_dependencies_system_diagnostics_eventlog", "label": "System.Diagnostics.EventLog", @@ -82684,7 +82841,7 @@ "source_location": "L94" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_caching_memory_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_dependencyinjection_contenthash", "label": "contentHash", "_origin": "ast", "community": 61, @@ -82692,10 +82849,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L133" + "source_location": "L214" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_caching_memory_dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_dependencyinjection_dependencies", "label": "dependencies", "_origin": "ast", "community": 61, @@ -82703,10 +82860,10 @@ "file_type": "code", "norm_label": "dependencies", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L134" + "source_location": "L215" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_caching_memory_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_dependencyinjection_resolved", "label": "resolved", "_origin": "ast", "community": 61, @@ -82714,10 +82871,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L132" + "source_location": "L213" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_caching_memory_type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_dependencyinjection_type", "label": "type", "_origin": "ast", "community": 61, @@ -82725,7 +82882,7 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L131" + "source_location": "L212" }, { "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_diagnostics_abstractions_contenthash", @@ -82771,28 +82928,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L235" }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_diagnostics_dependencies", - "label": "dependencies", - "_origin": "ast", - "community": 61, - "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", - "file_type": "code", - "norm_label": "dependencies", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L228" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_hosting_abstractions_dependencies", - "label": "dependencies", - "_origin": "ast", - "community": 61, - "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", - "file_type": "code", - "norm_label": "dependencies", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L270" - }, { "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_abstractions_contenthash", "label": "contentHash", @@ -82837,17 +82972,6 @@ "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", "source_location": "L289" }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_configuration_dependencies", - "label": "dependencies", - "_origin": "ast", - "community": 61, - "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", - "file_type": "code", - "norm_label": "dependencies", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L300" - }, { "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_console_contenthash", "label": "contentHash", @@ -82959,18 +83083,7 @@ "source_location": "L282" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventlog_dependencies", - "label": "dependencies", - "_origin": "ast", - "community": 61, - "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", - "file_type": "code", - "norm_label": "dependencies", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L337" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventsource_contenthash", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventlog_contenthash", "label": "contentHash", "_origin": "ast", "community": 61, @@ -82978,10 +83091,10 @@ "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L348" + "source_location": "L336" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventsource_dependencies", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventlog_dependencies", "label": "dependencies", "_origin": "ast", "community": 61, @@ -82989,10 +83102,10 @@ "file_type": "code", "norm_label": "dependencies", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L349" + "source_location": "L337" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventsource_resolved", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventlog_resolved", "label": "resolved", "_origin": "ast", "community": 61, @@ -83000,10 +83113,10 @@ "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L347" + "source_location": "L335" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventsource_type", + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventlog_type", "label": "type", "_origin": "ast", "community": 61, @@ -83011,7 +83124,18 @@ "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L346" + "source_location": "L334" + }, + { + "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_eventsource_dependencies", + "label": "dependencies", + "_origin": "ast", + "community": 61, + "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", + "file_type": "code", + "norm_label": "dependencies", + "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", + "source_location": "L349" }, { "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_logging_resolved", @@ -83036,59 +83160,26 @@ "source_location": "L279" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_configurationextensions_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 61, - "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L369" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_configurationextensions_dependencies", - "label": "dependencies", - "_origin": "ast", - "community": 61, - "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", - "file_type": "code", - "norm_label": "dependencies", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L370" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_configurationextensions_resolved", - "label": "resolved", - "_origin": "ast", - "community": 61, - "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L368" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_microsoft_extensions_options_configurationextensions_type", - "label": "type", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_castle_core", + "label": "Castle.Core", "_origin": "ast", "community": 61, "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "type", + "norm_label": "castle.core", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L367" + "source_location": "L89" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_caching_memory", - "label": "Microsoft.Extensions.Caching.Memory", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_dependencyinjection", + "label": "Microsoft.Extensions.DependencyInjection", "_origin": "ast", "community": 61, "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.caching.memory", + "norm_label": "microsoft.extensions.dependencyinjection", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L130" + "source_location": "L211" }, { "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_diagnostics_abstractions", @@ -83146,26 +83237,15 @@ "source_location": "L323" }, { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_logging_eventsource", - "label": "Microsoft.Extensions.Logging.EventSource", - "_origin": "ast", - "community": 61, - "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", - "file_type": "code", - "norm_label": "microsoft.extensions.logging.eventsource", - "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L345" - }, - { - "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_options_configurationextensions", - "label": "Microsoft.Extensions.Options.ConfigurationExtensions", + "id": "src_anichron_worker_tests_unit_packages_lock_net10_0_microsoft_extensions_logging_eventlog", + "label": "Microsoft.Extensions.Logging.EventLog", "_origin": "ast", "community": 61, "community_name": "Microsoft.Extensions.DependencyInjection.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.options.configurationextensions", + "norm_label": "microsoft.extensions.logging.eventlog", "source_file": "src/Anichron.Worker.Tests.Unit/packages.lock.json", - "source_location": "L366" + "source_location": "L333" }, { "id": "src_anichron_api_tests_unit_packages_lock_castle_core_dependencies", @@ -84942,6 +85022,268 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository", + "label": "RefreshTokenRepository.cs", + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "refreshtokenrepository.cs", + "source_file": "src/Anichron.Core/Data/Repository/RefreshTokenRepository.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_cs_anichrondbcontext", + "label": "AnichronDbContext", + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "anichrondbcontext", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_cs_cancellationtoken", + "label": "CancellationToken", + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "cancellationtoken", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_cs_guid", + "label": "Guid", + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "guid", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_cs_instant", + "label": "Instant", + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "instant", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_core_data_repository_refreshtokenrepository_cs_task", + "label": "Task", + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_core_domain_refreshtoken", + "label": "RefreshToken.cs", + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "refreshtoken.cs", + "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", + "source_location": "L1" + }, + { + "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_createdat", + "label": "CreatedAt", + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "createdat", + "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", + "source_location": "L9" + }, + { + "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_expiresat", + "label": "ExpiresAt", + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "expiresat", + "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", + "source_location": "L10" + }, + { + "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_id", + "label": "Id", + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "id", + "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", + "source_location": "L5" + }, + { + "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_revokedat", + "label": "RevokedAt", + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "revokedat", + "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", + "source_location": "L11" + }, + { + "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_tokenhash", + "label": "TokenHash", + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "tokenhash", + "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", + "source_location": "L8" + }, + { + "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_user", + "label": "User", + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "user", + "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", + "source_location": "L13" + }, + { + "id": "src_anichron_core_domain_refreshtoken_anichron_core_domain_refreshtoken_userid", + "label": "UserId", + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "metadata": { + "namespace": "Anichron.Core.Domain", + "scope_chain": [ + "s0" + ] + }, + "norm_label": "userid", + "source_file": "src/Anichron.Core/Domain/RefreshToken.cs", + "source_location": "L6" + }, + { + "id": "src_anichron_core_domain_refreshtoken_cs_guid", + "label": "Guid", + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "guid", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_core_domain_refreshtoken_cs_instant", + "label": "Instant", + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "instant", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_cs_fact", + "label": "Fact", + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "fact", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_cs_guid", + "label": "Guid", + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "guid", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_cs_instant", + "label": "Instant", + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "instant", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_core_tests_unit_data_repository_refreshtokenrepositorytests_cs_task", + "label": "Task", + "_origin": "ast", + "community": 7, + "community_name": "TestFixture", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, { "id": "tokenservice", "label": "TokenService", @@ -85003,17 +85345,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_worker_tests_unit_ingestion_middlewares_idempotencycheckmiddlewaretests_cs_ilogger", - "label": "ILogger", - "_origin": "ast", - "community": 70, - "community_name": ".InvokeAsync_KnownHash_DoesNotCallNextAsync", - "file_type": "code", - "norm_label": "ilogger", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_worker_tests_unit_ingestion_middlewares_idempotencycheckmiddlewaretests_cs_task", "label": "Task", @@ -85030,7 +85361,7 @@ "label": "Order", "_origin": "ast", "community": 71, - "community_name": "IdempotencyCheckMiddleware", + "community_name": ".Create", "file_type": "code", "metadata": { "namespace": "Anichron.Worker.Ingestion.Middlewares", @@ -85047,7 +85378,7 @@ "label": "CancellationToken", "_origin": "ast", "community": 71, - "community_name": "IdempotencyCheckMiddleware", + "community_name": ".Create", "file_type": "code", "norm_label": "cancellationtoken", "source_file": "", @@ -85058,7 +85389,7 @@ "label": "ILogger", "_origin": "ast", "community": 71, - "community_name": "IdempotencyCheckMiddleware", + "community_name": ".Create", "file_type": "code", "norm_label": "ilogger", "source_file": "", @@ -85069,7 +85400,7 @@ "label": "IngestionDelegate", "_origin": "ast", "community": 71, - "community_name": "IdempotencyCheckMiddleware", + "community_name": ".Create", "file_type": "code", "norm_label": "ingestiondelegate", "source_file": "", @@ -85080,7 +85411,7 @@ "label": "LoggerMessage", "_origin": "ast", "community": 71, - "community_name": "IdempotencyCheckMiddleware", + "community_name": ".Create", "file_type": "code", "norm_label": "loggermessage", "source_file": "", @@ -85091,119 +85422,103 @@ "label": "Task", "_origin": "ast", "community": 71, - "community_name": "IdempotencyCheckMiddleware", + "community_name": ".Create", "file_type": "code", "norm_label": "task", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_cs_cancellationtoken", - "label": "CancellationToken", - "_origin": "ast", - "community": 72, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "cancellationtoken", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_cs_exception", - "label": "Exception", - "_origin": "ast", - "community": 72, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "exception", - "source_file": "", - "source_location": "" - }, - { - "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_cs_func", - "label": "Func", + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_names", + "label": "Names", "_origin": "ast", - "community": 72, - "community_name": "TestFixture", + "community": 71, + "community_name": ".Create", "file_type": "code", - "norm_label": "func", - "source_file": "", - "source_location": "" + "metadata": { + "namespace": "Anichron.Worker.Tests.Unit.Ingestion.Middlewares", + "scope_chain": [ + "s287" + ] + }, + "norm_label": "names", + "source_file": "src/Anichron.Worker.Tests.Unit/Ingestion/Middlewares/AlwaysOnMiddlewareTests.cs", + "source_location": "L15" }, { - "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_cs_iclock", + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_cs_iclock", "label": "IClock", "_origin": "ast", - "community": 72, - "community_name": "TestFixture", + "community": 71, + "community_name": ".Create", "file_type": "code", "norm_label": "iclock", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_cs_ifilesystem", + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_cs_ifilesystem", "label": "IFileSystem", "_origin": "ast", - "community": 72, - "community_name": "TestFixture", + "community": 71, + "community_name": ".Create", "file_type": "code", "norm_label": "ifilesystem", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_cs_ilogger", + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_cs_ilogger", "label": "ILogger", "_origin": "ast", - "community": 72, - "community_name": "TestFixture", + "community": 71, + "community_name": ".Create", "file_type": "code", "norm_label": "ilogger", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_cs_ioptions", - "label": "IOptions", + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_cs_memberdata", + "label": "MemberData", "_origin": "ast", - "community": 72, - "community_name": "TestFixture", + "community": 71, + "community_name": ".Create", "file_type": "code", - "norm_label": "ioptions", + "norm_label": "memberdata", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_cs_loggermessage", - "label": "LoggerMessage", + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_cs_theory", + "label": "Theory", "_origin": "ast", - "community": 72, - "community_name": "TestFixture", + "community": 71, + "community_name": ".Create", "file_type": "code", - "norm_label": "loggermessage", + "norm_label": "theory", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_cs_proxytype", - "label": "ProxyType", + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_alwaysonmiddlewaretests_cs_theorydata", + "label": "TheoryData", "_origin": "ast", - "community": 72, - "community_name": "TestFixture", + "community": 71, + "community_name": ".Create", "file_type": "code", - "norm_label": "proxytype", + "norm_label": "theorydata", "source_file": "", "source_location": "" }, { - "id": "src_anichron_worker_ingestion_proxy_proxystagingwriter_cs_task", - "label": "Task", + "id": "src_anichron_worker_tests_unit_ingestion_middlewares_idempotencycheckmiddlewaretests_cs_ilogger", + "label": "ILogger", "_origin": "ast", - "community": 72, - "community_name": "TestFixture", + "community": 71, + "community_name": ".Create", "file_type": "code", - "norm_label": "task", + "norm_label": "ilogger", "source_file": "", "source_location": "" }, @@ -85330,17 +85645,6 @@ "source_file": "", "source_location": "" }, - { - "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxystagingwritertests_cs_ilogger", - "label": "ILogger", - "_origin": "ast", - "community": 72, - "community_name": "TestFixture", - "file_type": "code", - "norm_label": "ilogger", - "source_file": "", - "source_location": "" - }, { "id": "src_anichron_worker_tests_unit_ingestion_proxy_proxystagingwritertests_cs_instant", "label": "Instant", @@ -86591,6 +86895,17 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_core_data_repository_mediaassetrepository", + "label": "MediaAssetRepository.cs", + "_origin": "ast", + "community": 79, + "community_name": "MediaAsset", + "file_type": "code", + "norm_label": "mediaassetrepository.cs", + "source_file": "src/Anichron.Core/Data/Repository/MediaAssetRepository.cs", + "source_location": "L1" + }, { "id": "src_anichron_core_data_repository_mediaassetrepository_cs_anichrondbcontext", "label": "AnichronDbContext", @@ -87035,6 +87350,28 @@ "source_file": "", "source_location": "" }, + { + "id": "src_anichron_worker_ingestion_pairedmovresolver_cs_iclock", + "label": "IClock", + "_origin": "ast", + "community": 79, + "community_name": "MediaAsset", + "file_type": "code", + "norm_label": "iclock", + "source_file": "", + "source_location": "" + }, + { + "id": "src_anichron_worker_ingestion_pairedmovresolver_cs_ifilesystem", + "label": "IFileSystem", + "_origin": "ast", + "community": 79, + "community_name": "MediaAsset", + "file_type": "code", + "norm_label": "ifilesystem", + "source_file": "", + "source_location": "" + }, { "id": "src_anichron_worker_ingestion_pairedmovresolver_cs_localdatetime", "label": "LocalDateTime", @@ -92423,209 +92760,55 @@ "source_location": "" }, { - "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_filesystemglobbing", - "label": "Microsoft.Extensions.FileSystemGlobbing", - "_origin": "ast", - "community": 96, - "community_name": "Microsoft.Extensions.Primitives", - "file_type": "code", - "norm_label": "microsoft.extensions.filesystemglobbing", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L392" - }, - { - "id": "src_anichron_worker_packages_lock_dependencies_microsoft_extensions_primitives", - "label": "Microsoft.Extensions.Primitives", - "_origin": "ast", - "community": 96, - "community_name": "Microsoft.Extensions.Primitives", - "file_type": "code", - "norm_label": "microsoft.extensions.primitives", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L236" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_caching_abstractions_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 96, - "community_name": "Microsoft.Extensions.Primitives", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L255" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_caching_abstractions_dependencies", - "label": "dependencies", - "_origin": "ast", - "community": 96, - "community_name": "Microsoft.Extensions.Primitives", - "file_type": "code", - "norm_label": "dependencies", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L256" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_caching_abstractions_resolved", - "label": "resolved", - "_origin": "ast", - "community": 96, - "community_name": "Microsoft.Extensions.Primitives", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L254" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_caching_abstractions_type", - "label": "type", - "_origin": "ast", - "community": 96, - "community_name": "Microsoft.Extensions.Primitives", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L253" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_abstractions_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 96, - "community_name": "Microsoft.Extensions.Primitives", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L275" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_abstractions_dependencies", - "label": "dependencies", - "_origin": "ast", - "community": 96, - "community_name": "Microsoft.Extensions.Primitives", - "file_type": "code", - "norm_label": "dependencies", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L276" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_abstractions_resolved", - "label": "resolved", - "_origin": "ast", - "community": 96, - "community_name": "Microsoft.Extensions.Primitives", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L274" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_configuration_abstractions_type", - "label": "type", - "_origin": "ast", - "community": 96, - "community_name": "Microsoft.Extensions.Primitives", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L273" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_fileproviders_abstractions_contenthash", - "label": "contentHash", - "_origin": "ast", - "community": 96, - "community_name": "Microsoft.Extensions.Primitives", - "file_type": "code", - "norm_label": "contenthash", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L381" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_fileproviders_abstractions_dependencies", - "label": "dependencies", - "_origin": "ast", - "community": 96, - "community_name": "Microsoft.Extensions.Primitives", - "file_type": "code", - "norm_label": "dependencies", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L382" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_fileproviders_abstractions_resolved", - "label": "resolved", - "_origin": "ast", - "community": 96, - "community_name": "Microsoft.Extensions.Primitives", - "file_type": "code", - "norm_label": "resolved", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L380" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_fileproviders_abstractions_type", - "label": "type", - "_origin": "ast", - "community": 96, - "community_name": "Microsoft.Extensions.Primitives", - "file_type": "code", - "norm_label": "type", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L379" - }, - { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_fileproviders_physical_contenthash", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_abstractions_contenthash", "label": "contentHash", "_origin": "ast", "community": 96, - "community_name": "Microsoft.Extensions.Primitives", + "community_name": "Microsoft.Extensions.Logging.Abstractions", "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L389" + "source_location": "L426" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_fileproviders_physical_dependencies", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_abstractions_dependencies", "label": "dependencies", "_origin": "ast", "community": 96, - "community_name": "Microsoft.Extensions.Primitives", + "community_name": "Microsoft.Extensions.Logging.Abstractions", "file_type": "code", "norm_label": "dependencies", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L390" + "source_location": "L427" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_fileproviders_physical_resolved", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_abstractions_resolved", "label": "resolved", "_origin": "ast", "community": 96, - "community_name": "Microsoft.Extensions.Primitives", + "community_name": "Microsoft.Extensions.Logging.Abstractions", "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L388" + "source_location": "L425" }, { - "id": "src_anichron_worker_packages_lock_microsoft_extensions_fileproviders_physical_type", + "id": "src_anichron_worker_packages_lock_microsoft_extensions_logging_abstractions_type", "label": "type", "_origin": "ast", "community": 96, - "community_name": "Microsoft.Extensions.Primitives", + "community_name": "Microsoft.Extensions.Logging.Abstractions", "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L387" + "source_location": "L424" }, { "id": "src_anichron_worker_packages_lock_microsoft_extensions_options_contenthash", "label": "contentHash", "_origin": "ast", "community": 96, - "community_name": "Microsoft.Extensions.Primitives", + "community_name": "Microsoft.Extensions.Logging.Abstractions", "file_type": "code", "norm_label": "contenthash", "source_file": "src/Anichron.Worker/packages.lock.json", @@ -92636,7 +92819,7 @@ "label": "dependencies", "_origin": "ast", "community": 96, - "community_name": "Microsoft.Extensions.Primitives", + "community_name": "Microsoft.Extensions.Logging.Abstractions", "file_type": "code", "norm_label": "dependencies", "source_file": "src/Anichron.Worker/packages.lock.json", @@ -92647,7 +92830,7 @@ "label": "resolved", "_origin": "ast", "community": 96, - "community_name": "Microsoft.Extensions.Primitives", + "community_name": "Microsoft.Extensions.Logging.Abstractions", "file_type": "code", "norm_label": "resolved", "source_file": "src/Anichron.Worker/packages.lock.json", @@ -92658,62 +92841,29 @@ "label": "type", "_origin": "ast", "community": 96, - "community_name": "Microsoft.Extensions.Primitives", + "community_name": "Microsoft.Extensions.Logging.Abstractions", "file_type": "code", "norm_label": "type", "source_file": "src/Anichron.Worker/packages.lock.json", "source_location": "L493" }, { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_caching_abstractions", - "label": "Microsoft.Extensions.Caching.Abstractions", - "_origin": "ast", - "community": 96, - "community_name": "Microsoft.Extensions.Primitives", - "file_type": "code", - "norm_label": "microsoft.extensions.caching.abstractions", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L252" - }, - { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_configuration_abstractions", - "label": "Microsoft.Extensions.Configuration.Abstractions", - "_origin": "ast", - "community": 96, - "community_name": "Microsoft.Extensions.Primitives", - "file_type": "code", - "norm_label": "microsoft.extensions.configuration.abstractions", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L272" - }, - { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_fileproviders_abstractions", - "label": "Microsoft.Extensions.FileProviders.Abstractions", - "_origin": "ast", - "community": 96, - "community_name": "Microsoft.Extensions.Primitives", - "file_type": "code", - "norm_label": "microsoft.extensions.fileproviders.abstractions", - "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L378" - }, - { - "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_fileproviders_physical", - "label": "Microsoft.Extensions.FileProviders.Physical", + "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_logging_abstractions", + "label": "Microsoft.Extensions.Logging.Abstractions", "_origin": "ast", "community": 96, - "community_name": "Microsoft.Extensions.Primitives", + "community_name": "Microsoft.Extensions.Logging.Abstractions", "file_type": "code", - "norm_label": "microsoft.extensions.fileproviders.physical", + "norm_label": "microsoft.extensions.logging.abstractions", "source_file": "src/Anichron.Worker/packages.lock.json", - "source_location": "L386" + "source_location": "L423" }, { "id": "src_anichron_worker_packages_lock_net10_0_microsoft_extensions_options", "label": "Microsoft.Extensions.Options", "_origin": "ast", "community": 96, - "community_name": "Microsoft.Extensions.Primitives", + "community_name": "Microsoft.Extensions.Logging.Abstractions", "file_type": "code", "norm_label": "microsoft.extensions.options", "source_file": "src/Anichron.Worker/packages.lock.json", @@ -93906,6 +94056,18 @@ "source_location": "lines 71-72", "source_url": null }, + { + "id": "system_net_mail", + "label": "system_net_mail", + "_origin": "semantic", + "community": 0, + "community_name": "TestFixture", + "external": true, + "file_type": "concept", + "norm_label": "system_net_mail", + "source_file": "", + "type": "external" + }, { "id": "microsoft_entityframeworkcore_infrastructure", "label": "microsoft_entityframeworkcore_infrastructure", @@ -94086,18 +94248,6 @@ "source_file": "", "type": "external" }, - { - "id": "system_net_mail", - "label": "system_net_mail", - "_origin": "semantic", - "community": 108, - "community_name": "microsoft_extensions_options", - "external": true, - "file_type": "concept", - "norm_label": "system_net_mail", - "source_file": "", - "type": "external" - }, { "id": "system_globalization", "label": "system_globalization", @@ -108098,6 +108248,102 @@ "source_location": "L93", "weight": 1.0 }, + { + "source": "scripts_ci_gate_test_assert_contains", + "target": "scripts_ci_gate_test_pass", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/ci-gate.test.sh", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "scripts_ci_gate_test_assert_contains", + "target": "scripts_ci_gate_test_fail", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/ci-gate.test.sh", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "scripts_ci_gate_test_assert_fails", + "target": "scripts_ci_gate_test_fail", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/ci-gate.test.sh", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "scripts_ci_gate_test_assert_fails", + "target": "scripts_ci_gate_test_assert_contains", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/ci-gate.test.sh", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "scripts_ci_gate_test_assert_passes", + "target": "scripts_ci_gate_test_fail", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/ci-gate.test.sh", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "scripts_ci_gate_test_assert_passes", + "target": "scripts_ci_gate_test_pass", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/ci-gate.test.sh", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "scripts_ci_gate_test_sh__entry", + "target": "scripts_ci_gate_test_assert_passes", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/ci-gate.test.sh", + "source_location": "L48", + "weight": 1.0 + }, + { + "source": "scripts_ci_gate_test_sh__entry", + "target": "scripts_ci_gate_test_assert_fails", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/ci-gate.test.sh", + "source_location": "L50", + "weight": 1.0 + }, { "source": "scripts_derive_db_docs_sh__entry", "target": "scripts_derive_db_docs_derive", @@ -194935,7 +195181,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/mutation-testing.md", - "source_location": "L119", + "source_location": "L122", "weight": 1.0 }, { @@ -194946,7 +195192,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/mutation-testing.md", - "source_location": "L159", + "source_location": "L162", "weight": 1.0 }, { @@ -194957,7 +195203,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/mutation-testing.md", - "source_location": "L189", + "source_location": "L194", "weight": 1.0 }, { @@ -194968,7 +195214,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/mutation-testing.md", - "source_location": "L313", + "source_location": "L317", "weight": 1.0 }, { @@ -194979,7 +195225,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/mutation-testing.md", - "source_location": "L430", + "source_location": "L434", "weight": 1.0 }, { @@ -195001,7 +195247,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/mutation-testing.md", - "source_location": "L497", + "source_location": "L501", "weight": 1.0 }, { @@ -195012,7 +195258,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/mutation-testing.md", - "source_location": "L79", + "source_location": "L82", "weight": 1.0 }, { @@ -195034,7 +195280,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/mutation-testing.md", - "source_location": "L94", + "source_location": "L97", "weight": 1.0 }, { @@ -195045,7 +195291,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/mutation-testing.md", - "source_location": "L217", + "source_location": "L222", "weight": 1.0 }, { @@ -195056,7 +195302,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/mutation-testing.md", - "source_location": "L230", + "source_location": "L235", "weight": 1.0 }, { @@ -195067,7 +195313,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/mutation-testing.md", - "source_location": "L244", + "source_location": "L249", "weight": 1.0 }, { @@ -195078,7 +195324,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/mutation-testing.md", - "source_location": "L264", + "source_location": "L269", "weight": 1.0 }, { @@ -195089,7 +195335,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/mutation-testing.md", - "source_location": "L334", + "source_location": "L338", "weight": 1.0 }, { @@ -195100,7 +195346,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/mutation-testing.md", - "source_location": "L356", + "source_location": "L360", "weight": 1.0 }, { @@ -195111,7 +195357,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/mutation-testing.md", - "source_location": "L393", + "source_location": "L397", "weight": 1.0 }, { @@ -195122,7 +195368,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/mutation-testing.md", - "source_location": "L440", + "source_location": "L444", "weight": 1.0 }, { @@ -195133,7 +195379,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/mutation-testing.md", - "source_location": "L454", + "source_location": "L458", "weight": 1.0 }, { @@ -195144,7 +195390,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/mutation-testing.md", - "source_location": "L465", + "source_location": "L469", "weight": 1.0 }, { @@ -195155,7 +195401,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/mutation-testing.md", - "source_location": "L475", + "source_location": "L479", "weight": 1.0 }, { @@ -195290,6 +195536,28 @@ "source_location": "L1", "weight": 1.0 }, + { + "source": "scripts_ci_gate", + "target": "scripts_ci_gate_sh__entry", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/ci-gate.sh", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "scripts_ci_gate_test", + "target": "scripts_ci_gate_test_sh__entry", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/ci-gate.test.sh", + "source_location": "L1", + "weight": 1.0 + }, { "source": "scripts_derive_db_docs", "target": "scripts_derive_db_docs_sh__entry", @@ -235619,6 +235887,72 @@ "source_location": "L45", "weight": 1.0 }, + { + "source": "scripts_ci_gate_test", + "target": "scripts_ci_gate_test_fail", + "relation": "defines", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/ci-gate.test.sh", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "scripts_ci_gate_test", + "target": "scripts_ci_gate_test_assert_contains", + "relation": "defines", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/ci-gate.test.sh", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "scripts_ci_gate_test", + "target": "scripts_ci_gate_test_assert_passes", + "relation": "defines", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/ci-gate.test.sh", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "scripts_ci_gate_test", + "target": "scripts_ci_gate_test_assert_fails", + "relation": "defines", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/ci-gate.test.sh", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "scripts_ci_gate_test", + "target": "scripts_ci_gate_test_needs", + "relation": "defines", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/ci-gate.test.sh", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "scripts_ci_gate_test", + "target": "scripts_ci_gate_test_pass", + "relation": "defines", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/ci-gate.test.sh", + "source_location": "L9", + "weight": 1.0 + }, { "source": "scripts_derive_db_docs", "target": "scripts_derive_db_docs_derive", @@ -251495,7 +251829,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/mutation-testing.md", - "source_location": "L84", + "source_location": "L87", "weight": 1.0 }, { @@ -260121,5 +260455,5 @@ "source_file": "CLAUDE.md" } ], - "built_at_commit": "23a13655686d746d1c65b3b914b798b84f240703" + "built_at_commit": "48912a7926754d8c39767ea8f410c29f095ec115" } \ No newline at end of file