Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
ed2962b
chore(renovate): updated config
christopherpickering Jun 26, 2026
b2e8bcf
merge conflic
christopherpickering Jun 26, 2026
24db4bc
chore(renovate): update config
christopherpickering Jun 26, 2026
b2e133a
chore: flatten frontend package into root
Seme30 Jun 29, 2026
e942a1b
fix: align frontend build and tests with root workspace
Seme30 Jun 29, 2026
5b6246a
fix: lock frontend docker dependencies
Seme30 Jun 29, 2026
4505320
Merge pull request #732 from atlas-bi/chore/flatten-frontend-root
christopherpickering Jul 1, 2026
3aadf4e
test: add api auth coverage and frontend cov gates
Seme30 Jul 1, 2026
373e06a
ci: use pnpm in test workflow
Seme30 Jul 1, 2026
b8cb0f7
build: sync pnpm lockfile
Seme30 Jul 1, 2026
d274345
ci: pin pnpm setup and harden workflow
Seme30 Jul 1, 2026
7973b5d
test: fix auth service vitest mocks
Seme30 Jul 1, 2026
1eb4271
ci: align function tests and coverage gates
Seme30 Jul 1, 2026
5637905
Add auth and bearer coverage tests
Seme30 Jul 3, 2026
f552a28
Stabilize test fixtures across CI environments
Seme30 Jul 3, 2026
595f2b0
Upload JUnit test results to Codecov
Seme30 Jul 3, 2026
6fe40d8
Use Codecov uploader for test results
Seme30 Jul 3, 2026
ba8e7bd
style(terms): align codeblock styles to razor legacy dark theme
vbeni30 Jul 3, 2026
7d0f497
style(terms): synchronize UI structures across term module views
vbeni30 Jul 3, 2026
19f05f2
feat(terms): upgrade rich text markdown boxes to CodeMirror
vbeni30 Jul 3, 2026
f1b1ce2
feat(terms): implement edit and create pages with server actions
vbeni30 Jul 4, 2026
ac980d7
feat(terms): add missing term modules and frontend components
vbeni30 Jul 4, 2026
82281af
fix(terms): add term entity type support to card footer
vbeni30 Jul 4, 2026
634f3b5
refactor(terms): simplify markdown editor and migrate dependencies
vbeni30 Jul 4, 2026
2cbe740
refactor(terms): simplify detail page structure to match Razor
vbeni30 Jul 4, 2026
595557c
refactor(terms): decouple terms snippet from generic entity footer
vbeni30 Jul 4, 2026
b051cbf
fix(terms): type codemirror change handler
Seme30 Jul 6, 2026
ceb9c9d
Merge pull request #735 from atlas-bi/feat/issue-721-terms-api
christopherpickering Jul 6, 2026
d622635
Merge pull request #734 from atlas-bi/feat/test-coverage-auth
christopherpickering Jul 6, 2026
d73e57f
chore(deps) Update all non-major dependencies (#695)
renovate[bot] Jul 6, 2026
eeedf64
chore(deps) Update dependency @rollup/plugin-terser to v1 (#689)
renovate[bot] Jul 7, 2026
370162e
fix: ignore large Docker build artifacts
Seme30 Jul 7, 2026
cd38d73
fix: run frontend standalone server from app root
Seme30 Jul 7, 2026
f284ae7
chore(deps) Update dependency eslint to v10 (#697)
renovate[bot] Jul 7, 2026
1f1b3a2
fix: trace frontend standalone dependencies from repo root
Seme30 Jul 7, 2026
19d63fb
chore(deps) Update dependency gulp-purgecss to v8 (#698)
renovate[bot] Jul 7, 2026
ac4eb98
chore(deps) Update dependency lint-staged to v17 (#699)
renovate[bot] Jul 7, 2026
0a71a04
chore(deps) Update dependency xo to v2 (#702)
renovate[bot] Jul 7, 2026
b1f87b7
Merge pull request #738 from atlas-bi/dockergitgnore
christopherpickering Jul 7, 2026
11d78e6
feat(groups): finalize route migration and api integration (fixes #722)
vbeni30 Jul 8, 2026
a4edb19
Merge pull request #737 from atlas-bi/feat/issue-736-razor-parity
christopherpickering Jul 9, 2026
c1de1c7
feat(initiatives): add initiatives api
Seme30 Jul 9, 2026
d7dd530
fix: rollback sqlserver image to 2022
Seme30 Jul 10, 2026
6a2e0a0
Merge pull request #743 from atlas-bi/fix/rollback-sqlserver-2022
christopherpickering Jul 12, 2026
6b2b133
chore(deps) Update all non-major dependencies (#745)
renovate[bot] Jul 12, 2026
ac1b718
chore(deps) Update test packages to v3.2.7 (#746)
renovate[bot] Jul 12, 2026
0f0ef99
chore(deps) Update dependency prettier to v3.9.5 (#747)
renovate[bot] Jul 12, 2026
2f04c47
chore(deps) Update dependency @types/node to v22 (#750)
renovate[bot] Jul 13, 2026
ab05bd9
chore(deps) Update dependency NUglify to 1.22.0 (#753)
renovate[bot] Jul 13, 2026
c3d5c89
chore(deps) Update dependency jsdom to v27 (#752)
renovate[bot] Jul 13, 2026
8ba8491
Merge pull request #741 from atlas-bi/feat/initiatives-api
christopherpickering Jul 17, 2026
8453385
ci: fix Lighthouse and test jobs
Seme30 Jul 17, 2026
66ce7a8
feat(initiatives): implement Next.js CRUD pages and wire up live API …
vbeni30 Jul 10, 2026
4c26917
fix(initiatives): **Resolve API mismatches, handle 204 responses, and…
vbeni30 Jul 17, 2026
cbba276
fix(initiatives): align star and share with global interactions API a…
vbeni30 Jul 17, 2026
f3a8014
chore(deps) Update all non-major dependencies (#754)
renovate[bot] Jul 19, 2026
e1e52ca
chore(deps) Update dependency eslint to v10.7.0 (#755)
renovate[bot] Jul 19, 2026
bb11752
chore(deps) Update all non-major dependencies to v4.3.3 (#757)
renovate[bot] Jul 19, 2026
10fe766
chore(deps) Update dependency jsdom to v28 (#758)
renovate[bot] Jul 19, 2026
d72daaa
chore(deps) Update dependency jsdom to v29 (#759)
renovate[bot] Jul 20, 2026
76b5876
chore(deps) Update actions/cache action to v6
renovate[bot] Jul 20, 2026
df9acb2
chore(deps) Update actions/setup-node action to v7
renovate[bot] Jul 20, 2026
127c645
chore(deps) Update dependency coverlet.collector to v10
renovate[bot] Jul 20, 2026
bb98765
Merge pull request #751 from atlas-bi/renovate/coverlet.collector-10.x
christopherpickering Jul 21, 2026
e688b21
Merge pull request #756 from atlas-bi/renovate/actions-setup-node-7.x
christopherpickering Jul 21, 2026
70de5fd
Merge pull request #748 from atlas-bi/renovate/actions-cache-6.x
christopherpickering Jul 21, 2026
d725005
Merge branch 'dev' into feat/issue-722-groups-api
Seme30 Jul 21, 2026
b61dd3a
Merge pull request #740 from atlas-bi/feat/issue-722-groups-api
christopherpickering Jul 21, 2026
d3933a3
fix(initiatives): address PR #744 review: fix share payload & star op…
vbeni30 Jul 24, 2026
8ac9256
test(initiatives): add tests for share modal validation and star togg…
vbeni30 Jul 24, 2026
4a329ee
chore(deps) Update all non-major dependencies (#760)
renovate[bot] Jul 26, 2026
0d4e6ee
chore(deps) Update dependency prettier to v3.9.6 (#761)
renovate[bot] Jul 26, 2026
ee2c25b
chore(deps) Update dependency @semantic-release/changelog to v7 (#762)
renovate[bot] Jul 26, 2026
6f90c54
chore(deps) Update all non-major dependencies (#764)
renovate[bot] Jul 26, 2026
1b1e2a5
chore(deps) Update dependency @semantic-release/git to v11 (#763)
renovate[bot] Jul 27, 2026
3249b0d
chore(deps) Update dependency @testing-library/jest-dom to v7 (#765)
renovate[bot] Jul 27, 2026
24f0ef0
chore(deps) Update all non-major dependencies (#768)
renovate[bot] Jul 27, 2026
82f10ea
fix(initiatives): close remaining review gaps
Seme30 Jul 29, 2026
0089a1f
Merge pull request #744 from atlas-bi/issue-742-initiatives-api-integ…
christopherpickering Jul 29, 2026
24676c4
feat(interactions): add access request API
Seme30 Jul 31, 2026
719e215
Merge pull request #771 from atlas-bi/feat/access-requests-api
christopherpickering Aug 1, 2026
22783d0
fix: pin radix ui for frontend build
Seme30 Aug 1, 2026
5c5ecaf
Merge pull request #773 from atlas-bi/fix/radix-ui-build
christopherpickering Aug 1, 2026
4b954ad
chore(deps) Update all non-major dependencies (#774)
renovate[bot] Aug 2, 2026
11088ad
chore(deps) Update dependency eslint to v10.8.0 (#775)
renovate[bot] Aug 2, 2026
1519370
chore(deps) Update dependency jsdom to v30 (#776)
renovate[bot] Aug 2, 2026
f0e424d
chore(deps) Update dependency markdown-it to v15 (#778)
renovate[bot] Aug 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
.git
.github
.DS_Store

frontend/node_modules
frontend/.next

web/bin
web/obj
2 changes: 1 addition & 1 deletion .github/workflows/lighthouse.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
- name: setup dotnet ef
run: dotnet tool install --tool-path .\.dotnet-tools dotnet-ef --version 9.0.11
- name: setup node
uses: actions/setup-node@v6
uses: actions/setup-node@v7
with:
node-version: '22.x'
- name: install node deps
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
fetch-depth: 0
persist-credentials: false
- name: setup node
uses: actions/setup-node@v6
uses: actions/setup-node@v7
with:
node-version: '22.x'
- name: install node deps
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/sonar.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@ jobs:
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: Cache SonarCloud packages
uses: actions/cache@v5
uses: actions/cache@v6
with:
path: ~\sonar\cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
- name: Cache SonarCloud scanner
id: cache-sonar-scanner
uses: actions/cache@v5
uses: actions/cache@v6
with:
path: .\.sonar\scanner
key: ${{ runner.os }}-sonar-scanner
Expand Down
150 changes: 134 additions & 16 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,63 @@ jobs:
- name: checkout
uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98

- name: setup pnpm
uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093
with:
version: 10.34.5

- name: setup node
uses: actions/setup-node@v6
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
with:
node-version: '22.x'
cache: 'pnpm'

- name: install node deps
run: npm install --ignore-scripts --no-audit --no-fund
run: pnpm install --ignore-scripts --frozen-lockfile

- name: lint
run: npm run lint
run: pnpm run lint
frontend_tests:
name: 'frontend tests'
runs-on: ubuntu-latest

steps:
- name: checkout
uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98

- name: setup pnpm
uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093
with:
version: 10.34.5

- name: setup node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
with:
node-version: '22.x'
cache: 'pnpm'

- name: install node deps
run: pnpm install --ignore-scripts --frozen-lockfile

- name: test with coverage
run: pnpm run frontend:test:coverage

- name: upload cov
if: always()
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de
with:
files: ./frontend/coverage/cobertura-coverage.xml
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
verbose: true

- name: upload test results
if: ${{ !cancelled() }}
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./frontend/coverage/test-report.junit.xml
report-type: test_results
install_test:
name: 'install test'
runs-on: windows-latest
Expand All @@ -38,14 +85,19 @@ jobs:
uses: actions/setup-dotnet@131b410979e0b49e2162c0718030257b22d6dc2c
with:
dotnet-version: '9.0.x'
- name: setup pnpm
uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093
with:
version: 10.34.5
- name: setup node
uses: actions/setup-node@v6
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
with:
node-version: '22.x'
cache: 'pnpm'
- name: install node deps
run: npm install --ignore-scripts --no-audit --no-fund
run: pnpm install --ignore-scripts --frozen-lockfile
- name: node build
run: npm run build
run: pnpm run build
- name: create settings file
run: |
cd web
Expand Down Expand Up @@ -79,31 +131,36 @@ jobs:
dotnet-version: '9.0.x'
- name: setup dotnet ef
run: dotnet tool install --tool-path .\.dotnet-tools dotnet-ef --version 9.0.11
- name: setup pnpm
uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093
with:
version: 10.34.5
- name: setup node
uses: actions/setup-node@v6
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
with:
node-version: '22.x'
cache: 'pnpm'
- name: setup java
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654
with:
distribution: 'microsoft'
java-version: '17'
- name: install node deps
run: npm install --ignore-scripts --no-audit --no-fund
run: pnpm install --ignore-scripts --frozen-lockfile
- name: node build
run: npm run build
run: pnpm run build
- name: install dotnet deps
run: |
dotnet tool install -g dotnet-reportgenerator-globaltool
dotnet restore
- name: build
run: npm run dotnet:build
run: pnpm run dotnet:build
- name: start solr
run: ./web/solr/bin/solr start

- name: test
run: |
npm run test:integrationTests
dotnet test web.Tests/web.Tests.csproj --filter IntegrationTests --no-build -e Demo=True --collect:"XPlat Code Coverage;Format=cobertura" --results-directory TestResults --logger:"junit;LogFilePath=TestResults/integration-tests.junit.xml"
env:
BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }}
Expand Down Expand Up @@ -135,6 +192,25 @@ jobs:
Write-Host "Coverage file not found, skipping report generation"
}

- name: enforce coverage threshold
if: always()
shell: pwsh
env:
COVERAGE_THRESHOLD: '1'
run: |
if (!(Test-Path coverage.cobertura.xml)) {
Write-Host "Coverage file not found, skipping threshold check."
exit 0
}

[xml]$coverage = Get-Content coverage.cobertura.xml
$lineRate = [double]$coverage.coverage.'line-rate' * 100
Write-Host ("Line coverage: {0:N2}%" -f $lineRate)

if ($lineRate -lt [double]$env:COVERAGE_THRESHOLD) {
throw "Line coverage $lineRate is below threshold $env:COVERAGE_THRESHOLD."
}

- name: upload cov
if: always()
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de
Expand All @@ -144,6 +220,15 @@ jobs:
fail_ci_if_error: false
verbose: true

- name: upload test results
if: ${{ !cancelled() }}
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./TestResults/integration-tests.junit.xml
report-type: test_results
flags: integration

# browser_tests:
# name: 'browser tests'
# runs-on: windows-latest
Expand Down Expand Up @@ -217,31 +302,36 @@ jobs:
uses: actions/setup-dotnet@131b410979e0b49e2162c0718030257b22d6dc2c
with:
dotnet-version: '9.0.x'
- name: setup pnpm
uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093
with:
version: 10.34.5
- name: setup node
uses: actions/setup-node@v6
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
with:
node-version: '22.x'
cache: 'pnpm'
- name: setup java
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654
with:
distribution: 'microsoft'
java-version: '17'
- name: install node deps
run: npm install --ignore-scripts --no-audit --no-fund
run: pnpm install --ignore-scripts --frozen-lockfile
- name: node build
run: npm run build
run: pnpm run build
- name: install dotnet deps
run: |
dotnet tool install -g dotnet-reportgenerator-globaltool
dotnet restore
- name: build
run: npm run dotnet:build
run: pnpm run dotnet:build
- name: start solr
run: ./web/solr/bin/solr start

- name: test
run: |
npm run test:functionTests
dotnet test web.Tests/web.Tests.csproj --filter FunctionTests --no-build -e Demo=True --collect:"XPlat Code Coverage;Format=cobertura" --results-directory TestResults --logger:"junit;LogFilePath=TestResults/function-tests.junit.xml"
env:
BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }}
Expand Down Expand Up @@ -273,6 +363,25 @@ jobs:
Write-Host "Coverage file not found, skipping report generation"
}

- name: enforce coverage threshold
if: always()
shell: pwsh
env:
COVERAGE_THRESHOLD: '1'
run: |
if (!(Test-Path coverage.cobertura.xml)) {
Write-Host "Coverage file not found, skipping threshold check."
exit 0
}

[xml]$coverage = Get-Content coverage.cobertura.xml
$lineRate = [double]$coverage.coverage.'line-rate' * 100
Write-Host ("Line coverage: {0:N2}%" -f $lineRate)

if ($lineRate -lt [double]$env:COVERAGE_THRESHOLD) {
throw "Line coverage $lineRate is below threshold $env:COVERAGE_THRESHOLD."
}

- name: upload cov
if: always()
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de
Expand All @@ -281,3 +390,12 @@ jobs:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
verbose: true

- name: upload test results
if: ${{ !cancelled() }}
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./TestResults/function-tests.junit.xml
report-type: test_results
flags: function
6 changes: 3 additions & 3 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
services:
sqlserver:
image: mcr.microsoft.com/mssql/server:2025-latest
image: mcr.microsoft.com/mssql/server:2022-latest
container_name: atlas_sqlserver
environment:
ACCEPT_EULA: 'Y'
Expand Down Expand Up @@ -80,8 +80,8 @@ services:

frontend:
build:
context: ./frontend
dockerfile: Dockerfile
context: .
dockerfile: frontend/Dockerfile
args:
API_URL: http://web:${WEB_PORT:-5000}
NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL:-http://localhost:5000}
Expand Down
20 changes: 12 additions & 8 deletions frontend/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,29 +1,33 @@
FROM node:22-alpine AS base
RUN apk add --no-cache git

Check warning on line 2 in frontend/Dockerfile

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Merge this RUN instruction with the consecutive ones.

See more on https://sonarcloud.io/project/issues?id=atlas-bi_atlas-bi-library&issues=AZ8dseeVUa5zTy8LHGZ4&open=AZ8dseeVUa5zTy8LHGZ4&pullRequest=731
RUN npm install -g pnpm@10.32.1

FROM base AS deps
WORKDIR /app
COPY package.json pnpm-lock.yaml ./
COPY .husky/install.mjs ./.husky/install.mjs
RUN pnpm install --frozen-lockfile
COPY package.json ./package.json
COPY pnpm-lock.yaml ./pnpm-lock.yaml
COPY frontend ./frontend
RUN pnpm install --ignore-scripts --frozen-lockfile

FROM base AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
COPY package.json ./package.json
COPY frontend ./frontend
ARG API_URL
ARG NEXT_PUBLIC_API_URL
ENV API_URL=$API_URL
ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL
RUN pnpm build
RUN pnpm frontend:build

FROM base AS runner
WORKDIR /app
ENV NODE_ENV=production
RUN addgroup --system --gid 1001 nodejs && adduser --system --uid 1001 nextjs
COPY --from=builder /app/public ./public
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
COPY --from=builder --chown=nextjs:nodejs /app/frontend/public ./frontend/public
COPY --from=builder --chown=nextjs:nodejs /app/frontend/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/frontend/.next/static ./frontend/.next/static
WORKDIR /app/frontend
USER nextjs
EXPOSE 3000
ENV PORT=3000
Expand Down
4 changes: 2 additions & 2 deletions frontend/app/auth/redirect-origin.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { NextRequest } from "next/server"
import { NextRequest } from "next/server"
import { afterEach, describe, expect, test } from "vitest"
import { GET as callbackGet } from "./callback/route"
import { GET as logoutGet } from "./logout/route"
Expand All @@ -25,7 +25,7 @@ describe("auth public redirect origin", () => {
test("logout redirects to configured public origin", () => {
process.env.AUTH_RETURN_URL_ORIGIN = "https://library.atlas.bi"

const response = logoutGet(new Request("https://0.0.0.0:3000/auth/logout") as NextRequest)
const response = logoutGet(new NextRequest("https://0.0.0.0:3000/auth/logout"))

expect(response.headers.get("location")).toBe("https://library.atlas.bi/")
})
Expand Down
5 changes: 3 additions & 2 deletions frontend/app/collections/edit/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@
return undefined
}

export default async function EditCollectionPage({
searchParams,
}: {
searchParams: EditSearchParams
searchParams: Promise<EditSearchParams>
}) {

Check warning on line 21 in frontend/app/collections/edit/page.tsx

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Mark the props of the component as read-only.

See more on https://sonarcloud.io/project/issues?id=atlas-bi_atlas-bi-library&issues=AZ8dsedxUa5zTy8LHGZ2&open=AZ8dsedxUa5zTy8LHGZ2&pullRequest=731
const token = await getToken()
if (!token) redirect("/auth/login")

Expand All @@ -43,7 +43,8 @@
)
}

const idRaw = getSingleValue(searchParams.id)
const resolvedSearchParams = await searchParams
const idRaw = getSingleValue(resolvedSearchParams.id)
const id = idRaw ? Number(idRaw) : NaN
if (!Number.isFinite(id) || id <= 0) {
return (
Expand Down
Loading
Loading