Skip to content

Architecture cleanup: remove duplication and tighten types#33

Open
kertal wants to merge 7 commits into
mainfrom
claude/code-architecture-review-guobxg
Open

Architecture cleanup: remove duplication and tighten types#33
kertal wants to merge 7 commits into
mainfrom
claude/code-architecture-review-guobxg

Conversation

@kertal

@kertal kertal commented Jul 4, 2026

Copy link
Copy Markdown
Owner

Consolidation-focused architecture pass. The data-flow layering was already sound; the drag was duplication that had silently forked (two fetch stacks, two filter stacks, several item-type classifiers, two context-type definitions), with one fork already quietly wrong. Each change is its own commit, and the test suite (476 passing) plus a production build (tsc && vite build) were green after every step.

Changes

  1. Remove orphaned githubSearch fetch stackperformGitHubSearch/fetchUserItems (624 lines + 35 tests) were never wired into any production path; the live fetching lives inline in useGitHubDataFetching. Deleted the module, its tests, the dead test mock, and the now-unused UsernameCache type.

  2. Consolidate filtering & classification into one module — Deleted resultsUtils.ts and filterUtils.ts, whose entire filter/classify API was unused in production (only parseSearchText and the ResultsFilter type were live). This removed a second, stale copy of the filtering logic that had already drifted — getItemType matched a 'Reviewed:' title prefix no item ever has. Moved parseSearchText into the live viewFiltering.ts and ResultsFilter/createDefaultFilter into urlState.ts (their only consumers), and added a canonical isReviewItem() used everywhere review detection was duplicated.

  3. Make IndexedDB storage generic over item type — The search-items store actually holds GitHubItem[] but was typed as GitHubEvent[] end-to-end, forcing as unknown as casts at every read/write. Parameterized EventsData<T>, eventsStorage.store/retrieve, and useIndexedDBStorage<T> so events and search items are typed honestly. Removes all storage-layer casts.

  4. Deduplicate FormContextType — It was defined both inline in App.tsx and in types.ts, and the two had drifted. Made types.ts the single definition matching the value App actually provides.

  5. Refactor transformEventToItem into a dispatch table — Replaced the ~500-line if/else-on-event.type chain with a Record<eventType, handler> map plus shared buildBaseItem/actorUserOf helpers. Behavior is identical (event-transform tests unchanged).

  6. Smaller cleanups — Extracted a LoadingScreen component (~130 lines) out of App.tsx; removed unreachable code after a throw; dropped debug console.logs; moved 12 root-level *_FIX.md/*_FEATURE.md process notes into docs/.

Verification

  • npx vitest run → 476 passing, 13 skipped
  • npm run build (tsc && vite build) → success
  • Lint: the changed files are clean. npm run lint still reports pre-existing problems in untouched test/e2e files (not introduced here).

Notes

  • No behavior changes intended — this is a refactor. The deletions in steps 1–3 are backed by the existing test coverage.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UgXeFcjEWsdHPRgb2Whcxh


Generated by Claude Code

claude added 6 commits July 4, 2026 07:17
performGitHubSearch/fetchUserItems in githubSearch.ts were never wired
into any production path — the live fetching lives inline in
useGitHubDataFetching. Delete the 624-line orphan module and its 35
tests, the dead test mock, and the now-unused UsernameCache type.
- Delete resultsUtils.ts and filterUtils.ts: their entire filter/classify
  API was unused in production (only parseSearchText and the ResultsFilter
  type were live). This removes a second, stale copy of the filtering logic
  that had already drifted (getItemType matched a 'Reviewed:' prefix no item
  ever has).
- Move parseSearchText into viewFiltering.ts (the live filtering module) and
  simplify its repeated regex loops via an extractQualifier helper.
- Move ResultsFilter + createDefaultFilter into urlState.ts, their only user.
- Add a canonical isReviewItem() in summaryGrouping and use it everywhere
  review detection was duplicated (Summary view, categorizeItem, getEventType).
- Rewrite utils/README.md to describe the actual modules.
The search-items store actually holds GitHubItem[] but was typed as
GitHubEvent[] end-to-end, forcing 'as unknown as' casts at every read and
write. Parameterize EventsData<T>, eventsStorage.store/retrieve, and
useIndexedDBStorage<T> so events use GitHubEvent and search items use
GitHubItem honestly; extract EventsMetadata. Removes all storage-layer casts.
FormContextType was defined both inline in App.tsx and in types.ts, and the
two had drifted (searchText/setSearchText, rawEventsCount optionality,
handleSearch signature). Make types.ts the single definition matching the
value App actually provides, import it into App, and update the test mock.
Replace the ~500-line if/else-on-event.type chain with a
Record<eventType, handler> map plus shared actorUserOf/buildBaseItem
helpers that supply the repository/user/provenance fields every handler
repeated. Behavior is identical (rawDataUtils tests unchanged); each event
type is now an independently readable handler.
- Extract the ~130-line inline initial-loading JSX from App into a
  LoadingScreen component; App no longer doubles as a styled view.
- Remove unreachable code after 'throw error' in fetchAllEvents.
- Drop debug console.log calls from the enrichment and avatar-fetch paths.
- Move root-level *_FIX.md / *_FEATURE.md process notes into docs/ so only
  README.md remains at the repo root.
@coderabbitai

coderabbitai Bot commented Jul 4, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@kertal, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 5 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 16ae8641-14cf-46e1-a746-b6d579835432

📥 Commits

Reviewing files that changed from the base of the PR and between 137b230 and 424bd0a.

📒 Files selected for processing (3)
  • .gitignore
  • src/utils/README.md
  • src/utils/rawDataUtils.ts
📝 Walkthrough

Walkthrough

This PR removes githubSearch.ts, resultsUtils.ts, and filterUtils.ts (with their tests), inlining search-text parsing into viewFiltering.ts and urlState.ts. It generalizes IndexedDB storage with generics, refactors rawDataUtils into a handler dispatch table, adds a LoadingScreen component, updates FormContextType, and adds review-grouping logic and build configs.

Changes

Utility consolidation and typed data flow

Layer / File(s) Summary
FormContextType updates
src/types.ts
Adds searchText/setSearchText, simplifies handleSearch, requires rawEventsCount, removes UsernameCache.
Generic IndexedDB storage
src/utils/indexedDB.ts, src/hooks/useIndexedDBStorage.ts
Adds EventsMetadata, generic EventsData<T>, generic storeEvents/getEvents/store/retrieve, and generic useIndexedDBStorage<T> hook.
Data hooks typed to storage
src/hooks/useGitHubDataFetching.ts, src/hooks/useGitHubDataProcessing.ts, src/hooks/useGitHubFormState.ts
Uses GitHubItem[]/EventsMetadata types, removes unsafe casts, simplifies error handling and debug logging.
Removed legacy search/filter modules, inlined parsing
src/utils/githubSearch.ts, src/utils/resultsUtils.ts, src/utils/filterUtils.ts (+tests), src/utils/viewFiltering.ts, src/utils/urlState.ts, src/utils/__tests__/searchParsing.test.ts, src/test/*
Deletes GitHub search/results/filter utilities and tests, adds local parseSearchText/ResultsFilter/createDefaultFilter, and new search-parsing test suite.
rawDataUtils dispatch refactor
src/utils/rawDataUtils.ts
Replaces if/else event mapping with eventHandlers dispatch table using shared actorUserOf/buildBaseItem helpers.
Review item detection
src/utils/summaryGrouping.ts, src/views/Summary.tsx
Adds isReviewItem helper used across getEventType, categorizeItem, and groupItemsByUrl.
LoadingScreen component and App wiring
src/components/LoadingScreen.tsx, src/App.tsx
Adds LoadingScreen with ready-state logic, replaces inline loading UI in App.tsx.
Build/test configs and docs
vite.config.*, vitest.config.*, tsconfig*.tsbuildinfo, src/utils/README.md
Adds Vite/Vitest configuration files, regenerates build metadata, and rewrites utils README.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant App
  participant LoadingScreen
  participant useIndexedDBStorage
  participant eventsStorage
  App->>useIndexedDBStorage: load typed events (GitHubEvent/GitHubItem)
  useIndexedDBStorage->>eventsStorage: retrieve<T>(key)
  eventsStorage-->>App: typed events + metadata
  App->>LoadingScreen: render(loading, isDataLoadingComplete, progress)
  LoadingScreen-->>App: onManualSpin() / onStart()
Loading

Poem

A rabbit hopped through tangled code,
Swept old files off the road,
Typed each carrot, generic and neat,
Loading screens now look so sweet,
Hop hop hooray, the build's complete! 🥕✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main refactor: removing duplication and tightening types.
Description check ✅ Passed The description is clearly about the same architecture cleanup and matches the code changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/code-architecture-review-guobxg

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

♻️ Duplicate comments (3)
vitest.config.js (1)

1-41: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Compiled config output checked into repo.

Same generated-artifact concern: context snippet shows a vitest.config.ts with matching alias/test setup, confirming this .js is compiled output that duplicates the real source and will drift if only the .ts is edited going forward.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@vitest.config.js` around lines 1 - 41, This vitest.config.js appears to be
compiled/generated output duplicating the real vitest.config.ts source, so keep
only the source config in sync and remove this checked-in artifact or regenerate
it as part of the build. Update the actual config definition in the canonical
vitest.config.ts (including alias, test, coverage, and define settings) and
ensure the repo no longer relies on maintaining both files separately.
vitest.config.d.ts (1)

1-2: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Compiled config output checked into repo.

Same generated-artifact concern as vite.config.d.ts — this appears to be tsc output of vitest.config.ts.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@vitest.config.d.ts` around lines 1 - 2, This file is generated TypeScript
declaration output and should not be checked into the repo. Remove the compiled
artifact for vitest.config.d.ts and, if needed, update the build/repo
conventions so vitest.config.ts is the source of truth instead of committed tsc
output. Keep the cleanup aligned with the same generated-artifact handling used
for the related vite.config.d.ts file.
vite.config.js (1)

1-86: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Compiled config output checked into repo.

Same concern as vite.config.d.ts: this var/ES5-transpiled file is tsc-compiled output of a .ts source, not hand-written. Committing generated build artifacts alongside their .ts source (if it still exists) duplicates the source of truth and will silently go stale if the .ts file is edited without re-running the build.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@vite.config.js` around lines 1 - 86, The checked-in vite.config.js appears to
be generated output rather than the source of truth, duplicating the TypeScript
config and risking drift. Remove this compiled artifact from version control and
keep only the original source config (or ensure the build pipeline generates it
consistently); if the repo intentionally tracks generated files, document that
explicitly and align it with the corresponding vite.config.ts source.
🧹 Nitpick comments (4)
src/App.tsx (1)

196-209: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚖️ Poor tradeoff

Consider adding test coverage for the new LoadingScreen wiring.

LoadingScreen extraction changes a previously inline-tested code path; adding a focused test (render with initialLoadingCount === 1, verify Start button disabled/enabled states) would guard this refactor going forward.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/App.tsx` around lines 196 - 209, Add focused test coverage for the
`LoadingScreen` branch in `App` that is taken when `initialLoadingCount === 1`;
render `App` in that state and verify the `LoadingScreen` wiring, especially the
Start button disabled/enabled behavior as `loading`, `isDataLoadingComplete`,
and related props change. Use the `LoadingScreen` component and the
`handleStartClick`/`handleManualSpin` path to confirm the extracted UI still
behaves like the previous inline implementation.
src/utils/rawDataUtils.ts (1)

90-220: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Consider extracting the shared PR-resolution logic.

PullRequestEvent, PullRequestReviewEvent, and PullRequestReviewCommentEvent each repeat the same prNumberhtmlUrlprTitle derivation. Since this PR is a consolidation effort, a small shared helper would remove the triplicated logic and keep the fallbacks in sync.

♻️ Sketch
const resolvePR = (event: GitHubEvent) => {
  const { payload, repo } = event;
  const pr = payload.pull_request!;
  const p = payload as { number?: number };
  let number = pr.number || p.number;
  if (!number) number = extractPRNumber(pr.html_url, (pr as { url?: string }).url);
  const htmlUrl = pr.html_url || (number
    ? `https://github.com/${repo.name}/pull/${number}`
    : `https://github.com/${repo.name}/pulls`);
  const title = (pr.title && pr.title !== 'undefined')
    ? pr.title
    : (number ? `Pull Request #${number}` : 'Pull Request');
  return { pr, number, htmlUrl, title };
};
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/utils/rawDataUtils.ts` around lines 90 - 220, The PR item builders in
PullRequestEvent, PullRequestReviewEvent, and PullRequestReviewCommentEvent
duplicate the same PR resolution flow for prNumber, htmlUrl, and prTitle.
Extract that shared logic into a small helper such as resolvePR in
rawDataUtils.ts, then update those handlers to use it so the fallback behavior
stays consistent and easier to maintain.
src/utils/viewFiltering.ts (1)

11-122: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Solid inlined implementation; qualifier-order handling is correct.

Verified the negated-before-positive extraction order (lines 90-96) correctly avoids \b word-boundary false matches on e.g. -label: being partially matched by \blabel: before it's stripped. The String.replace(m, ' ') loop (lines 47-49) also correctly handles duplicate qualifier values since matches are collected and replaced in left-to-right order.

One optional DRY improvement: the seven extractQualifier calls (lines 90-96) are structurally identical (regex + accumulator pairs) and could be driven by a small config array to reduce repetition and ease adding new qualifiers in the future.

♻️ Optional refactor to a config-driven loop
-  let cleanText = searchText;
-  cleanText = extractQualifier(cleanText, /-label:([^\s]+)/g, excludedLabels);
-  cleanText = extractQualifier(cleanText, /\blabel:([^\s]+)/g, includedLabels);
-  cleanText = extractQualifier(cleanText, /\buser:([^\s]+)/g, userFilters);
-  cleanText = extractQualifier(cleanText, /-repo:([^\s]+)/g, excludedRepos);
-  cleanText = extractQualifier(cleanText, /\brepo:([^\s]+)/g, includedRepos);
-  cleanText = extractQualifier(cleanText, /-org:([^\s]+)/g, excludedOrgs);
-  cleanText = extractQualifier(cleanText, /\borg:([^\s]+)/g, includedOrgs);
+  let cleanText = searchText;
+  const qualifierExtractions: [RegExp, string[]][] = [
+    [/-label:([^\s]+)/g, excludedLabels],
+    [/\blabel:([^\s]+)/g, includedLabels],
+    [/\buser:([^\s]+)/g, userFilters],
+    [/-repo:([^\s]+)/g, excludedRepos],
+    [/\brepo:([^\s]+)/g, includedRepos],
+    [/-org:([^\s]+)/g, excludedOrgs],
+    [/\borg:([^\s]+)/g, includedOrgs],
+  ];
+  for (const [regex, out] of qualifierExtractions) {
+    cleanText = extractQualifier(cleanText, regex, out);
+  }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/utils/viewFiltering.ts` around lines 11 - 122, Refactor parseSearchText
to reduce the repeated qualifier extraction calls by driving the seven
extractQualifier invocations from a small config array or similar mapping. Keep
the current negated-before-positive ordering and preserve the existing
accumulators in ParsedSearchText, but centralize the regex-to-target-array
wiring so adding new qualifiers later is easier.
vite.config.d.ts (1)

1-2: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Drop the generated Vite config artifacts. These files are emitted from vite.config.ts (tsconfig.node.json includes it) and aren’t referenced directly, so keeping vite.config.js, vite.config.d.ts, and tsconfig.node.tsbuildinfo checked in just adds drift risk.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@vite.config.d.ts` around lines 1 - 2, Remove the generated Vite config
artifacts from version control; the checked-in vite.config.d.ts is emitted by
vite.config.ts through tsconfig.node.json and is not meant to be maintained
manually. Delete the generated files alongside any other emitted config outputs
such as vite.config.js and tsconfig.node.tsbuildinfo so the repository only
keeps the source vite.config.ts and avoids drift.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/hooks/useGitHubDataFetching.ts`:
- Line 3: The `useGitHubDataFetching` module imports `EventsMetadata` as a value
import, which triggers a TS1484 error under `verbatimModuleSyntax`. Update the
import in `useGitHubDataFetching` to use a type-only import for
`EventsMetadata`, keeping the symbol reference intact while ensuring it is
erased from the emitted JavaScript.

In `@src/utils/rawDataUtils.ts`:
- Around line 352-367: The WatchEvent mapping is using the wrong default action,
which causes missing payload.action values to be treated as an unstarred event.
Update the WatchEvent handler in rawDataUtils so the fallback action is started,
and make sure the title/body logic in that mapper still uses the action value
consistently to render the starred variant when payload.action is absent.

In `@src/utils/README.md`:
- Around line 9-13: The README diagram block is missing a language identifier,
which causes markdownlint to flag it. Update the fenced block in the README so
the diagram uses an explicit language tag such as text, keeping the existing
content intact. Locate the markdown fence around the network → rawDataUtils →
viewFiltering / summaryGrouping → views diagram and add the language to that
fenced block only.

In `@tsconfig.node.tsbuildinfo`:
- Line 1: This change is a generated TypeScript incremental-build cache that
should not be versioned. Remove the committed tsbuildinfo artifact from the
repository, and update the project ignore rules to exclude all tsbuildinfo files
so future compiles do not reintroduce it. Locate and delete the incremental
cache entry named tsconfig.node.tsbuildinfo, and verify no other build-cache
artifacts are tracked.

In `@tsconfig.tsbuildinfo`:
- Line 1: Remove the generated tsbuildinfo artifact from version control and
keep it out of future commits by updating the repo’s ignore rules; the affected
file is the incremental build cache, so delete the tracked tsconfig.tsbuildinfo
entry and ensure the TypeScript build configuration continues to generate it
locally without committing it.

---

Duplicate comments:
In `@vite.config.js`:
- Around line 1-86: The checked-in vite.config.js appears to be generated output
rather than the source of truth, duplicating the TypeScript config and risking
drift. Remove this compiled artifact from version control and keep only the
original source config (or ensure the build pipeline generates it consistently);
if the repo intentionally tracks generated files, document that explicitly and
align it with the corresponding vite.config.ts source.

In `@vitest.config.d.ts`:
- Around line 1-2: This file is generated TypeScript declaration output and
should not be checked into the repo. Remove the compiled artifact for
vitest.config.d.ts and, if needed, update the build/repo conventions so
vitest.config.ts is the source of truth instead of committed tsc output. Keep
the cleanup aligned with the same generated-artifact handling used for the
related vite.config.d.ts file.

In `@vitest.config.js`:
- Around line 1-41: This vitest.config.js appears to be compiled/generated
output duplicating the real vitest.config.ts source, so keep only the source
config in sync and remove this checked-in artifact or regenerate it as part of
the build. Update the actual config definition in the canonical vitest.config.ts
(including alias, test, coverage, and define settings) and ensure the repo no
longer relies on maintaining both files separately.

---

Nitpick comments:
In `@src/App.tsx`:
- Around line 196-209: Add focused test coverage for the `LoadingScreen` branch
in `App` that is taken when `initialLoadingCount === 1`; render `App` in that
state and verify the `LoadingScreen` wiring, especially the Start button
disabled/enabled behavior as `loading`, `isDataLoadingComplete`, and related
props change. Use the `LoadingScreen` component and the
`handleStartClick`/`handleManualSpin` path to confirm the extracted UI still
behaves like the previous inline implementation.

In `@src/utils/rawDataUtils.ts`:
- Around line 90-220: The PR item builders in PullRequestEvent,
PullRequestReviewEvent, and PullRequestReviewCommentEvent duplicate the same PR
resolution flow for prNumber, htmlUrl, and prTitle. Extract that shared logic
into a small helper such as resolvePR in rawDataUtils.ts, then update those
handlers to use it so the fallback behavior stays consistent and easier to
maintain.

In `@src/utils/viewFiltering.ts`:
- Around line 11-122: Refactor parseSearchText to reduce the repeated qualifier
extraction calls by driving the seven extractQualifier invocations from a small
config array or similar mapping. Keep the current negated-before-positive
ordering and preserve the existing accumulators in ParsedSearchText, but
centralize the regex-to-target-array wiring so adding new qualifiers later is
easier.

In `@vite.config.d.ts`:
- Around line 1-2: Remove the generated Vite config artifacts from version
control; the checked-in vite.config.d.ts is emitted by vite.config.ts through
tsconfig.node.json and is not meant to be maintained manually. Delete the
generated files alongside any other emitted config outputs such as
vite.config.js and tsconfig.node.tsbuildinfo so the repository only keeps the
source vite.config.ts and avoids drift.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 513e291d-bbca-462a-8c77-f079930680ec

📥 Commits

Reviewing files that changed from the base of the PR and between 738a917 and 137b230.

📒 Files selected for processing (42)
  • docs/BUTTON_WIDTH_FIX.md
  • docs/CUSTOM_SECTIONS_FEATURE.md
  • docs/GITHUB_API_FORMAT_CHANGE.md
  • docs/PAGINATION_LIMIT_FIX.md
  • docs/PR_ENRICHMENT_FEATURE.md
  • docs/PWA_FEATURES.md
  • docs/PWA_UPDATE_FEATURE.md
  • docs/RACE_CONDITION_FIX.md
  • docs/README_FILTERING_OPTIMIZATION.md
  • docs/SEARCH_DEBOUNCING.md
  • docs/SLOTMACHINE_OPTIMIZATION.md
  • docs/UNDEFINED_TITLE_FIX.md
  • src/App.tsx
  • src/components/LoadingScreen.tsx
  • src/hooks/useGitHubDataFetching.ts
  • src/hooks/useGitHubDataProcessing.ts
  • src/hooks/useGitHubFormState.ts
  • src/hooks/useIndexedDBStorage.ts
  • src/test/URLStateIntegration.test.tsx
  • src/test/test-utils.tsx
  • src/types.ts
  • src/utils/README.md
  • src/utils/__tests__/searchParsing.test.ts
  • src/utils/filterUtils.test.ts
  • src/utils/filterUtils.ts
  • src/utils/githubSearch.test.ts
  • src/utils/githubSearch.ts
  • src/utils/indexedDB.ts
  • src/utils/rawDataUtils.ts
  • src/utils/resultsUtils.test.ts
  • src/utils/resultsUtils.ts
  • src/utils/summaryGrouping.ts
  • src/utils/urlState.test.ts
  • src/utils/urlState.ts
  • src/utils/viewFiltering.ts
  • src/views/Summary.tsx
  • tsconfig.node.tsbuildinfo
  • tsconfig.tsbuildinfo
  • vite.config.d.ts
  • vite.config.js
  • vitest.config.d.ts
  • vitest.config.js
💤 Files with no reviewable changes (7)
  • src/utils/filterUtils.test.ts
  • src/utils/filterUtils.ts
  • src/utils/resultsUtils.ts
  • src/utils/githubSearch.test.ts
  • src/utils/resultsUtils.test.ts
  • src/test/URLStateIntegration.test.tsx
  • src/utils/githubSearch.ts

Comment thread src/hooks/useGitHubDataFetching.ts
Comment thread src/utils/rawDataUtils.ts
Comment thread src/utils/README.md Outdated
Comment thread tsconfig.node.tsbuildinfo Outdated
@@ -0,0 +1 @@
{"fileNames":["./node_modules/typescript/lib/lib.d.ts","./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.webworker.importscripts.d.ts","./node_modules/typescript/lib/lib.scripthost.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/compatibility/index.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/dom-events.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/sqlite.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@types/estree/index.d.ts","./node_modules/rollup/dist/rollup.d.ts","./node_modules/rollup/dist/parseAst.d.ts","./node_modules/vite/types/hmrPayload.d.ts","./node_modules/vite/types/customEvent.d.ts","./node_modules/vite/types/hot.d.ts","./node_modules/vite/dist/node/moduleRunnerTransport.d-DJ_mE5sf.d.ts","./node_modules/vite/dist/node/module-runner.d.ts","./node_modules/esbuild/lib/main.d.ts","./node_modules/source-map-js/source-map.d.ts","./node_modules/postcss/lib/previous-map.d.ts","./node_modules/postcss/lib/input.d.ts","./node_modules/postcss/lib/css-syntax-error.d.ts","./node_modules/postcss/lib/declaration.d.ts","./node_modules/postcss/lib/root.d.ts","./node_modules/postcss/lib/warning.d.ts","./node_modules/postcss/lib/lazy-result.d.ts","./node_modules/postcss/lib/no-work-result.d.ts","./node_modules/postcss/lib/processor.d.ts","./node_modules/postcss/lib/result.d.ts","./node_modules/postcss/lib/document.d.ts","./node_modules/postcss/lib/rule.d.ts","./node_modules/postcss/lib/node.d.ts","./node_modules/postcss/lib/comment.d.ts","./node_modules/postcss/lib/container.d.ts","./node_modules/postcss/lib/at-rule.d.ts","./node_modules/postcss/lib/list.d.ts","./node_modules/postcss/lib/postcss.d.ts","./node_modules/postcss/lib/postcss.d.mts","./node_modules/vite/types/internal/lightningcssOptions.d.ts","./node_modules/vite/types/internal/cssPreprocessorOptions.d.ts","./node_modules/vite/types/importGlob.d.ts","./node_modules/vite/types/metadata.d.ts","./node_modules/vite/dist/node/index.d.ts","./node_modules/@babel/types/lib/index.d.ts","./node_modules/@types/babel__generator/index.d.ts","./node_modules/@babel/parser/typings/babel-parser.d.ts","./node_modules/@types/babel__template/index.d.ts","./node_modules/@types/babel__traverse/index.d.ts","./node_modules/@types/babel__core/index.d.ts","./node_modules/@vitejs/plugin-react/dist/index.d.mts","./node_modules/workbox-build/build/lib/copy-workbox-libraries.d.ts","./node_modules/type-fest/source/basic.d.ts","./node_modules/type-fest/source/typed-array.d.ts","./node_modules/type-fest/source/except.d.ts","./node_modules/type-fest/source/simplify.d.ts","./node_modules/type-fest/source/mutable.d.ts","./node_modules/type-fest/source/merge.d.ts","./node_modules/type-fest/source/merge-exclusive.d.ts","./node_modules/type-fest/source/require-at-least-one.d.ts","./node_modules/type-fest/source/require-exactly-one.d.ts","./node_modules/type-fest/source/partial-deep.d.ts","./node_modules/type-fest/source/readonly-deep.d.ts","./node_modules/type-fest/source/literal-union.d.ts","./node_modules/type-fest/source/promisable.d.ts","./node_modules/type-fest/source/opaque.d.ts","./node_modules/type-fest/source/set-optional.d.ts","./node_modules/type-fest/source/set-required.d.ts","./node_modules/type-fest/source/value-of.d.ts","./node_modules/type-fest/source/promise-value.d.ts","./node_modules/type-fest/source/async-return-type.d.ts","./node_modules/type-fest/source/conditional-keys.d.ts","./node_modules/type-fest/source/conditional-except.d.ts","./node_modules/type-fest/source/conditional-pick.d.ts","./node_modules/type-fest/source/union-to-intersection.d.ts","./node_modules/type-fest/source/stringified.d.ts","./node_modules/type-fest/source/fixed-length-array.d.ts","./node_modules/type-fest/source/iterable-element.d.ts","./node_modules/type-fest/source/entry.d.ts","./node_modules/type-fest/source/entries.d.ts","./node_modules/type-fest/source/set-return-type.d.ts","./node_modules/type-fest/source/asyncify.d.ts","./node_modules/type-fest/source/package-json.d.ts","./node_modules/type-fest/source/tsconfig-json.d.ts","./node_modules/type-fest/base.d.ts","./node_modules/type-fest/source/utilities.d.ts","./node_modules/type-fest/ts41/utilities.d.ts","./node_modules/type-fest/ts41/camel-case.d.ts","./node_modules/type-fest/ts41/delimiter-case.d.ts","./node_modules/type-fest/ts41/kebab-case.d.ts","./node_modules/type-fest/ts41/pascal-case.d.ts","./node_modules/type-fest/ts41/snake-case.d.ts","./node_modules/type-fest/ts41/get.d.ts","./node_modules/type-fest/ts41/index.d.ts","./node_modules/workbox-core/_version.d.ts","./node_modules/workbox-core/types.d.ts","./node_modules/workbox-broadcast-update/_version.d.ts","./node_modules/workbox-broadcast-update/BroadcastCacheUpdate.d.ts","./node_modules/workbox-google-analytics/_version.d.ts","./node_modules/workbox-google-analytics/initialize.d.ts","./node_modules/workbox-routing/_version.d.ts","./node_modules/workbox-routing/utils/constants.d.ts","./node_modules/workbox-background-sync/_version.d.ts","./node_modules/workbox-background-sync/Queue.d.ts","./node_modules/workbox-cacheable-response/_version.d.ts","./node_modules/workbox-cacheable-response/CacheableResponse.d.ts","./node_modules/workbox-expiration/_version.d.ts","./node_modules/workbox-expiration/ExpirationPlugin.d.ts","./node_modules/workbox-build/build/types.d.ts","./node_modules/workbox-build/build/lib/cdn-utils.d.ts","./node_modules/workbox-build/build/generate-sw.d.ts","./node_modules/workbox-build/build/get-manifest.d.ts","./node_modules/workbox-build/build/inject-manifest.d.ts","./node_modules/workbox-build/build/index.d.ts","./node_modules/vite-plugin-pwa/dist/index.d.ts","./node_modules/@rollup/pluginutils/types/index.d.ts","./node_modules/prettier/doc.d.ts","./node_modules/prettier/index.d.ts","./node_modules/@svgr/babel-plugin-transform-svg-component/dist/index.d.ts","./node_modules/@svgr/babel-preset/dist/index.d.ts","./node_modules/@svgr/core/dist/index.d.ts","./node_modules/vite-plugin-svgr/dist/index.d.ts","./vite.config.ts","./node_modules/@vitest/pretty-format/dist/index.d.ts","./node_modules/@vitest/utils/dist/types.d.ts","./node_modules/@vitest/utils/dist/helpers.d.ts","./node_modules/tinyrainbow/dist/index-8b61d5bc.d.ts","./node_modules/tinyrainbow/dist/node.d.ts","./node_modules/@vitest/utils/dist/index.d.ts","./node_modules/@vitest/runner/dist/tasks.d-hsdzc98-.d.ts","./node_modules/@vitest/utils/dist/types.d-BCElaP-c.d.ts","./node_modules/@vitest/utils/dist/diff.d.ts","./node_modules/@vitest/runner/dist/types.d.ts","./node_modules/@vitest/utils/dist/error.d.ts","./node_modules/@vitest/runner/dist/index.d.ts","./node_modules/parse5/dist/common/html.d.ts","./node_modules/parse5/dist/common/token.d.ts","./node_modules/parse5/dist/common/error-codes.d.ts","./node_modules/parse5/dist/tokenizer/preprocessor.d.ts","./node_modules/entities/dist/esm/generated/decode-data-html.d.ts","./node_modules/entities/dist/esm/generated/decode-data-xml.d.ts","./node_modules/entities/dist/esm/decode-codepoint.d.ts","./node_modules/entities/dist/esm/decode.d.ts","./node_modules/parse5/dist/tokenizer/index.d.ts","./node_modules/parse5/dist/tree-adapters/interface.d.ts","./node_modules/parse5/dist/parser/open-element-stack.d.ts","./node_modules/parse5/dist/parser/formatting-element-list.d.ts","./node_modules/parse5/dist/parser/index.d.ts","./node_modules/parse5/dist/tree-adapters/default.d.ts","./node_modules/parse5/dist/serializer/index.d.ts","./node_modules/parse5/dist/common/foreign-content.d.ts","./node_modules/parse5/dist/index.d.ts","./node_modules/tough-cookie/dist/cookie/constants.d.ts","./node_modules/tough-cookie/dist/cookie/cookie.d.ts","./node_modules/tough-cookie/dist/utils.d.ts","./node_modules/tough-cookie/dist/store.d.ts","./node_modules/tough-cookie/dist/memstore.d.ts","./node_modules/tough-cookie/dist/pathMatch.d.ts","./node_modules/tough-cookie/dist/permuteDomain.d.ts","./node_modules/tough-cookie/dist/getPublicSuffix.d.ts","./node_modules/tough-cookie/dist/validators.d.ts","./node_modules/tough-cookie/dist/version.d.ts","./node_modules/tough-cookie/dist/cookie/canonicalDomain.d.ts","./node_modules/tough-cookie/dist/cookie/cookieCompare.d.ts","./node_modules/tough-cookie/dist/cookie/cookieJar.d.ts","./node_modules/tough-cookie/dist/cookie/defaultPath.d.ts","./node_modules/tough-cookie/dist/cookie/domainMatch.d.ts","./node_modules/tough-cookie/dist/cookie/formatDate.d.ts","./node_modules/tough-cookie/dist/cookie/parseDate.d.ts","./node_modules/tough-cookie/dist/cookie/permutePath.d.ts","./node_modules/tough-cookie/dist/cookie/index.d.ts","./node_modules/@types/jsdom/base.d.ts","./node_modules/@types/jsdom/index.d.ts","./node_modules/vitest/optional-types.d.ts","./node_modules/vitest/dist/chunks/environment.d.Dmw5ulng.d.ts","./node_modules/@vitest/mocker/dist/registry.d-D765pazg.d.ts","./node_modules/@vitest/mocker/dist/types.d-D_aRZRdy.d.ts","./node_modules/@vitest/mocker/dist/index.d.ts","./node_modules/@vitest/utils/dist/source-map.d.ts","./node_modules/vite-node/dist/trace-mapping.d-DLVdEqOp.d.ts","./node_modules/vite-node/dist/index.d-CWZbpOcv.d.ts","./node_modules/vite-node/dist/index.d.ts","./node_modules/@vitest/snapshot/dist/environment.d-DHdQ1Csl.d.ts","./node_modules/@vitest/snapshot/dist/rawSnapshot.d-lFsMJFUd.d.ts","./node_modules/@vitest/snapshot/dist/index.d.ts","./node_modules/@vitest/snapshot/dist/environment.d.ts","./node_modules/vitest/dist/chunks/config.d.UqE-KR0o.d.ts","./node_modules/vitest/dist/chunks/worker.d.CHGSOG0s.d.ts","./node_modules/@vitest/runner/dist/utils.d.ts","./node_modules/tinybench/dist/index.d.ts","./node_modules/vitest/dist/chunks/benchmark.d.BwvBVTda.d.ts","./node_modules/vite-node/dist/client.d.ts","./node_modules/vitest/dist/chunks/coverage.d.S9RMNXIe.d.ts","./node_modules/@vitest/snapshot/dist/manager.d.ts","./node_modules/vitest/dist/chunks/reporters.d.C-cu31ET.d.ts","./node_modules/vitest/dist/chunks/worker.d.C-KN07Ls.d.ts","./node_modules/@vitest/expect/dist/chai.d.cts","./node_modules/@vitest/spy/dist/index.d.ts","./node_modules/@vitest/expect/dist/index.d.ts","./node_modules/@vitest/expect/index.d.ts","./node_modules/vitest/dist/chunks/global.d.CXRAxnWc.d.ts","./node_modules/vitest/dist/chunks/vite.d.iXCEVtFP.d.ts","./node_modules/vitest/dist/chunks/mocker.d.BE_2ls6u.d.ts","./node_modules/vitest/dist/chunks/suite.d.FvehnV49.d.ts","./node_modules/expect-type/dist/utils.d.ts","./node_modules/expect-type/dist/overloads.d.ts","./node_modules/expect-type/dist/branding.d.ts","./node_modules/expect-type/dist/messages.d.ts","./node_modules/expect-type/dist/index.d.ts","./node_modules/vitest/dist/index.d.ts","./vitest.config.ts","./node_modules/@types/aria-query/index.d.ts","./node_modules/@types/ms/index.d.ts","./node_modules/@types/debug/index.d.ts","./node_modules/@types/estree-jsx/index.d.ts","./node_modules/@types/graceful-fs/index.d.ts","./node_modules/@types/unist/index.d.ts","./node_modules/@types/hast/index.d.ts","./node_modules/@types/istanbul-lib-coverage/index.d.ts","./node_modules/@types/istanbul-lib-report/index.d.ts","./node_modules/@types/istanbul-reports/index.d.ts","./node_modules/@jest/expect-utils/build/index.d.ts","./node_modules/chalk/index.d.ts","./node_modules/@sinclair/typebox/typebox.d.ts","./node_modules/@jest/schemas/build/index.d.ts","./node_modules/jest-diff/node_modules/pretty-format/build/index.d.ts","./node_modules/jest-diff/build/index.d.ts","./node_modules/jest-matcher-utils/build/index.d.ts","./node_modules/expect/build/index.d.ts","./node_modules/@types/jest/node_modules/pretty-format/build/index.d.ts","./node_modules/@types/jest/index.d.ts","./node_modules/@types/json-schema/index.d.ts","./node_modules/@types/lodash/common/common.d.ts","./node_modules/@types/lodash/common/array.d.ts","./node_modules/@types/lodash/common/collection.d.ts","./node_modules/@types/lodash/common/date.d.ts","./node_modules/@types/lodash/common/function.d.ts","./node_modules/@types/lodash/common/lang.d.ts","./node_modules/@types/lodash/common/math.d.ts","./node_modules/@types/lodash/common/number.d.ts","./node_modules/@types/lodash/common/object.d.ts","./node_modules/@types/lodash/common/seq.d.ts","./node_modules/@types/lodash/common/string.d.ts","./node_modules/@types/lodash/common/util.d.ts","./node_modules/@types/lodash/index.d.ts","./node_modules/@types/mdast/index.d.ts","./node_modules/@types/prop-types/index.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/@types/react-dom/index.d.ts","./node_modules/@types/react-is/node_modules/@types/react/global.d.ts","./node_modules/@types/react-is/node_modules/@types/react/index.d.ts","./node_modules/@types/react-is/index.d.ts","./node_modules/@types/resolve/index.d.ts","./node_modules/@types/stack-utils/index.d.ts","./node_modules/@types/styled-system/index.d.ts","./node_modules/@types/styled-system__css/index.d.ts","./node_modules/@types/styled-system__theme-get/index.d.ts","./node_modules/@types/tough-cookie/index.d.ts","./node_modules/@types/trusted-types/lib/index.d.ts","./node_modules/@types/trusted-types/index.d.ts","./node_modules/@types/yargs-parser/index.d.ts","./node_modules/@types/yargs/index.d.ts"],"fileIdsList":[[56,98,183],[56,98],[56,98,362],[56,98,149,150,353],[56,98,186,188],[56,98,188,257],[56,98,188,256,258],[56,98,183,184,185,186,187],[56,98,183,185],[56,98,351],[56,98,111,148],[56,98,355],[56,98,357],[56,98,358],[56,98,364,367],[56,98,363],[56,98,110,144,148,290,309,311],[56,98,310],[56,98,371,373,374,375,376,377,378,379,380,381,382,383],[56,98,371,372,374,375,376,377,378,379,380,381,382,383],[56,98,372,373,374,375,376,377,378,379,380,381,382,383],[56,98,371,372,373,375,376,377,378,379,380,381,382,383],[56,98,371,372,373,374,376,377,378,379,380,381,382,383],[56,98,371,372,373,374,375,377,378,379,380,381,382,383],[56,98,371,372,373,374,375,376,378,379,380,381,382,383],[56,98,371,372,373,374,375,376,377,379,380,381,382,383],[56,98,371,372,373,374,375,376,377,378,380,381,382,383],[56,98,371,372,373,374,375,376,377,378,379,381,382,383],[56,98,371,372,373,374,375,376,377,378,379,380,382,383],[56,98,371,372,373,374,375,376,377,378,379,380,381,383],[56,98,371,372,373,374,375,376,377,378,379,380,381,382],[56,95,98],[56,97,98],[98],[56,98,103,133],[56,98,99,104,110,111,118,130,141],[56,98,99,100,110,118],[51,52,53,56,98],[56,98,101,142],[56,98,102,103,111,119],[56,98,103,130,138],[56,98,104,106,110,118],[56,97,98,105],[56,98,106,107],[56,98,108,110],[56,97,98,110],[56,98,110,111,112,130,141],[56,98,110,111,112,125,130,133],[56,93,98],[56,93,98,106,110,113,118,130,141],[56,98,110,111,113,114,118,130,138,141],[56,98,113,115,130,138,141],[54,55,56,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147],[56,98,110,116],[56,98,117,141],[56,98,106,110,118,130],[56,98,119],[56,98,120],[56,97,98,121],[56,95,96,97,98,99,100,101,102,103,104,105,106,107,108,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147],[56,98,123],[56,98,124],[56,98,110,125,126],[56,98,125,127,142,144],[56,98,110,130,131,133],[56,98,132,133],[56,98,130,131],[56,98,133],[56,98,134],[56,95,98,130],[56,98,110,136,137],[56,98,136,137],[56,98,103,118,130,138],[56,98,139],[56,98,118,140],[56,98,113,124,141],[56,98,103,142],[56,98,130,143],[56,98,117,144],[56,98,145],[56,98,110,112,121,130,133,141,144,146],[56,98,130,147],[56,98,388],[56,98,391],[56,98,385,387,390],[56,98,386,387],[56,98,387],[56,98,399],[56,98,401],[56,98,182,188,340],[56,98,266,267,270,336],[56,98,337],[56,98,314,315],[56,98,267,268,270,271,272],[56,98,267],[56,98,267,268,270],[56,98,267,268],[56,98,321],[56,98,262,321,322],[56,98,262,321],[56,98,262,269],[56,98,263],[56,98,262,263,264,266],[56,98,262],[56,98,278,279,280],[56,98,343,344],[56,98,343,344,345,346],[56,98,343,345],[56,98,343],[56,98,360,366],[56,98,364],[56,98,361,365],[56,98,275],[56,98,274,275],[56,98,274],[56,98,274,275,276,282,283,286,287,288,289],[56,98,275,283],[56,98,274,275,276,282,283,284,285],[56,98,274,283],[56,98,283,287],[56,98,275,276,277,281],[56,98,276],[56,98,274,275,283],[56,98,173],[56,98,171,173],[56,98,162,170,171,172,174],[56,98,160],[56,98,163,168,173,176],[56,98,159,176],[56,98,163,164,167,168,169,176],[56,98,163,164,165,167,168,176],[56,98,160,161,162,163,164,168,169,170,172,173,174,176],[56,98,176],[56,98,158,160,161,162,163,164,165,167,168,169,170,171,172,173,174,175],[56,98,158,176],[56,98,163,165,166,168,169,176],[56,98,167,176],[56,98,168,169,173,176],[56,98,161,171],[56,98,255],[56,98,150,181,182],[56,98,265],[56,98,293],[56,98,291],[56,98,292],[56,98,291,292,293,294],[56,98,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308],[56,98,292,293,294],[56,98,293,309],[56,98,191,192,193,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222],[56,98,208],[56,98,208,219],[56,98,193,210],[56,98,210],[56,98,217],[56,98,191],[56,98,193,194],[56,98,202],[56,98,193],[56,98,224,225],[56,98,224],[56,98,223,226,227,228,229,230,231],[56,98,227],[56,98,226],[56,65,69,98,141],[56,65,98,130,141],[56,60,98],[56,62,65,98,138,141],[56,98,118,138],[56,98,148],[56,60,98,148],[56,62,65,98,118,141],[56,57,58,61,64,98,110,130,141],[56,65,72,98],[56,57,63,98],[56,65,86,87,98],[56,61,65,98,133,141,148],[56,86,98,148],[56,59,60,98,148],[56,65,98],[56,59,60,61,62,63,64,65,66,67,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,87,88,89,90,91,92,98],[56,65,80,98],[56,65,72,73,98],[56,63,65,73,74,98],[56,64,98],[56,57,60,65,98],[56,65,69,73,74,98],[56,69,98],[56,63,65,68,98,141],[56,57,62,65,72,98],[56,98,130],[56,60,65,86,98,146,148],[56,98,318,319],[56,98,318],[56,98,150,181,182,252,340],[56,98,182,254,259,340],[56,98,110,111,113,114,115,118,130,138,141,147,148,150,151,152,153,155,156,157,177,178,179,180,181,182],[56,98,152,153,154,155],[56,98,152],[56,98,153],[56,98,150,182],[56,98,273,327,328,339],[56,98,262,270,273,323,324,339],[56,98,330],[56,98,312],[56,98,262,273,313,323,329,338,339],[56,98,316],[56,98,101,111,130,182,262,267,270,273,313,316,317,320,323,325,326,329,331,332,335,339,340],[56,98,273,327,328,329,339],[56,98,182,333,340],[56,98,146,326],[56,98,273,313,320,323,325,339],[56,98,101,111,130,146,182,262,267,270,273,312,313,316,317,320,323,324,325,326,327,328,329,330,331,332,333,334,335,336,338,339,340,341,342,347],[56,98,310,311],[56,98,234],[56,98,247],[56,98,190,247,248,249,250,251],[56,98,232,234,236,238,240,242,244,246],[56,98,182,189,253,260,340],[56,98,182,189,340,348]],"fileInfos":[{"version":"a7297ff837fcdf174a9524925966429eb8e5feecc2cc55cc06574e6b092c1eaa","impliedFormat":1},{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"07f073f19d67f74d732b1adea08e1dc66b1b58d77cb5b43931dee3d798a2fd53","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"a4ef5ccfd69b5bc2a2c29896aa07daaff7c5924a12e70cb3d9819145c06897db","affectsGlobalScope":true,"impliedFormat":1},{"version":"a38efe83ff77c34e0f418a806a01ca3910c02ee7d64212a59d59bca6c2c38fa1","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"3fe4022ba1e738034e38ad9afacbf0f1f16b458ed516326f5bf9e4a31e9be1dc","impliedFormat":1},{"version":"a957197054b074bcdf5555d26286e8461680c7c878040d0f4e2d5509a7524944","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"e9b97d69510658d2f4199b7d384326b7c4053b9e6645f5c19e1c2a54ede427fc","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"f478f6f5902dc144c0d6d7bdc919c5177cac4d17a8ca8653c2daf6d7dc94317f","affectsGlobalScope":true,"impliedFormat":1},{"version":"19d5f8d3930e9f99aa2c36258bf95abbe5adf7e889e6181872d1cdba7c9a7dd5","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"71450bbc2d82821d24ca05699a533e72758964e9852062c53b30f31c36978ab8","affectsGlobalScope":true,"impliedFormat":1},{"version":"88bc59b32d0d5b4e5d9632ac38edea23454057e643684c3c0b94511296f2998c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a0a1dda070290b92da5a50113b73ecc4dd6bcbffad66e3c86503d483eafbadcf","impliedFormat":1},{"version":"59dcad36c4549175a25998f6a8b33c1df8e18df9c12ebad1dfb25af13fd4b1ce","impliedFormat":1},{"version":"206a70e72af3e24688397b81304358526ce70d020e4c2606c4acfd1fa1e81fb2","impliedFormat":1},{"version":"3f3edb8e44e3b9df3b7ca3219ab539710b6a7f4fe16bd884d441af207e03cd57","impliedFormat":1},{"version":"528b62e4272e3ddfb50e8eed9e359dedea0a4d171c3eb8f337f4892aac37b24b","impliedFormat":1},{"version":"d71535813e39c23baa113bc4a29a0e187b87d1105ccc8c5a6ebaca38d9a9bff2","impliedFormat":1},{"version":"4a1c5b43d4d408cb0df0a6cc82ca7be314553d37e432fc1fd801bae1a9ab2cb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"f72bc8fe16da67e4e3268599295797b202b95e54bd215a03f97e925dd1502a36","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"915e18c559321c0afaa8d34674d3eb77e1ded12c3e85bf2a9891ec48b07a1ca5","affectsGlobalScope":true,"impliedFormat":1},{"version":"636302a00dfd1f9fe6e8e91e4e9350c6518dcc8d51a474e4fc3a9ba07135100b","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"e1ce1d622f1e561f6cdf246372ead3bbc07ce0342024d0e9c7caf3136f712698","impliedFormat":1},{"version":"199c8269497136f3a0f4da1d1d90ab033f899f070e0dd801946f2a241c8abba2","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"27e4532aaaa1665d0dd19023321e4dc12a35a741d6b8e1ca3517fcc2544e0efe","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"8c2ad42d5d1a2e8e6112625767f8794d9537f1247907378543106f7ba6c7df90","affectsGlobalScope":true,"impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"98ffdf93dfdd206516971d28e3e473f417a5cfd41172e46b4ce45008f640588e","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"12e8ce658dd17662d82fb0509d2057afc5e6ee30369a2e9e0957eff725b1f11d","affectsGlobalScope":true,"impliedFormat":1},{"version":"74736930d108365d7bbe740c7154706ccfb1b2a3855a897963ab3e5c07ecbf19","impliedFormat":1},{"version":"3a051941721a7f905544732b0eb819c8d88333a96576b13af08b82c4f17581e4","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"c6ab0dd29bf74b71a54ff2bbce509eb8ae3c4294d57cc54940f443c01cd1baae","affectsGlobalScope":true,"impliedFormat":1},{"version":"3797dd6f4ea3dc15f356f8cdd3128bfa18122213b38a80d6c1f05d8e13cbdad8","impliedFormat":1},{"version":"ad90122e1cb599b3bc06a11710eb5489101be678f2920f2322b0ac3e195af78d","impliedFormat":1},{"version":"e2b48abff5a8adc6bb1cd13a702b9ef05e6045a98e7cfa95a8779b53b6d0e69d","impliedFormat":1},{"version":"a02d26c056491b1ddfa53a671ad60ce852969b369f0e71993dbac8ddcf0d038b","affectsGlobalScope":true,"impliedFormat":1},{"version":"a660aa95476042d3fdcc1343cf6bb8fdf24772d31712b1db321c5a4dcc325434","impliedFormat":1},{"version":"a7ca8df4f2931bef2aa4118078584d84a0b16539598eaadf7dce9104dfaa381c","impliedFormat":1},{"version":"11443a1dcfaaa404c68d53368b5b818712b95dd19f188cab1669c39bee8b84b3","impliedFormat":1},{"version":"36977c14a7f7bfc8c0426ae4343875689949fb699f3f84ecbe5b300ebf9a2c55","impliedFormat":1},{"version":"035d0934d304483f07148427a5bd5b98ac265dae914a6b49749fe23fbd893ec7","impliedFormat":99},{"version":"e2ed5b81cbed3a511b21a18ab2539e79ac1f4bc1d1d28f8d35d8104caa3b429f","impliedFormat":99},{"version":"dd7ca4f0ef3661dac7043fb2cdf1b99e008d2b6bc5cd998dd1fa5a2968034984","affectsGlobalScope":true,"impliedFormat":1},{"version":"402e5c534fb2b85fa771170595db3ac0dd532112c8fa44fc23f233bc6967488b","impliedFormat":1},{"version":"8885cf05f3e2abf117590bbb951dcf6359e3e5ac462af1c901cfd24c6a6472e2","impliedFormat":1},{"version":"33f3718dababfc26dfd9832c150149ea4e934f255130f8c118a59ae69e5ed441","impliedFormat":1},{"version":"e61df3640a38d535fd4bc9f4a53aef17c296b58dc4b6394fd576b808dd2fe5e6","impliedFormat":1},{"version":"459920181700cec8cbdf2a5faca127f3f17fd8dd9d9e577ed3f5f3af5d12a2e4","impliedFormat":1},{"version":"4719c209b9c00b579553859407a7e5dcfaa1c472994bd62aa5dd3cc0757eb077","impliedFormat":1},{"version":"7ec359bbc29b69d4063fe7dad0baaf35f1856f914db16b3f4f6e3e1bca4099fa","impliedFormat":1},{"version":"70790a7f0040993ca66ab8a07a059a0f8256e7bb57d968ae945f696cbff4ac7a","impliedFormat":1},{"version":"d1b9a81e99a0050ca7f2d98d7eedc6cda768f0eb9fa90b602e7107433e64c04c","impliedFormat":1},{"version":"a022503e75d6953d0e82c2c564508a5c7f8556fad5d7f971372d2d40479e4034","impliedFormat":1},{"version":"b215c4f0096f108020f666ffcc1f072c81e9f2f95464e894a5d5f34c5ea2a8b1","impliedFormat":1},{"version":"644491cde678bd462bb922c1d0cfab8f17d626b195ccb7f008612dc31f445d2d","impliedFormat":1},{"version":"dfe54dab1fa4961a6bcfba68c4ca955f8b5bbeb5f2ab3c915aa7adaa2eabc03a","impliedFormat":1},{"version":"1bb61aa2f08ab4506d41dbe16c5f3f5010f014bbf46fa3d715c0cbe3b00f4e1c","impliedFormat":1},{"version":"47865c5e695a382a916b1eedda1b6523145426e48a2eae4647e96b3b5e52024f","impliedFormat":1},{"version":"e42820cd611b15910c204cd133f692dcd602532b39317d4f2a19389b27e6f03d","impliedFormat":1},{"version":"331b8f71bfae1df25d564f5ea9ee65a0d847c4a94baa45925b6f38c55c7039bf","impliedFormat":1},{"version":"2a771d907aebf9391ac1f50e4ad37952943515eeea0dcc7e78aa08f508294668","impliedFormat":1},{"version":"0146fd6262c3fd3da51cb0254bb6b9a4e42931eb2f56329edd4c199cb9aaf804","impliedFormat":1},{"version":"183f480885db5caa5a8acb833c2be04f98056bdcc5fb29e969ff86e07efe57ab","impliedFormat":99},{"version":"4ec16d7a4e366c06a4573d299e15fe6207fc080f41beac5da06f4af33ea9761e","impliedFormat":1},{"version":"7870becb94cbc11d2d01b77c4422589adcba4d8e59f726246d40cd0d129784d8","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f698624bbbb060ece7c0e51b7236520ebada74b747d7523c7df376453ed6fea","impliedFormat":1},{"version":"f70b8328a15ca1d10b1436b691e134a49bc30dcf3183a69bfaa7ba77e1b78ecd","impliedFormat":1},{"version":"ff3660e2664e6096196280deb4e176633b1bb1e58a7dcc9b021ec0e913a6f96f","impliedFormat":99},{"version":"d88b3dc8b7055665059ea06ffafce9467fc4bdfa7cb2d7a6f4262556bb482b0d","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"32ddc6ad753ae79571bbf28cebff7a383bf7f562ac5ef5d25c94ef7f71609d49","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"81df92841a7a12d551fcbc7e4e83dbb7d54e0c73f33a82162d13e9ae89700079","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"50d0f9f7c895c02124a84433b94fde0298450138c893f620f66c9e832ccdf26a","impliedFormat":99},{"version":"cd21651ff2dc71a2d2386cecd16eca9eed55064b792564c2ff09e9465f974521","impliedFormat":1},{"version":"9bd8219f88db1339a2203f7fa18cf01aeeb60bca80aeda842a9fd9599d84d2eb","affectsGlobalScope":true,"impliedFormat":1},{"version":"234ada61fbdcac5d8303c5aef3c937251a7a860a72e2fbfd376af71b1f28485d","impliedFormat":1},{"version":"c58be3e560989a877531d3ff7c9e5db41c5dd9282480ccf197abfcc708a95b8d","impliedFormat":1},{"version":"941f4fd3e572742e7b3cf81fd8bef220a7ff70ea3a1a61a460405a4378923427","impliedFormat":1},{"version":"9945033867c3240435d1c1dd5eeba80c54c3a6be1063c71fc87b66ee32968f43","impliedFormat":1},{"version":"d41055c9b49f6a0bbc2ea53ccdea2514d41a3d2cd0317c4d0df664114cc103ec","impliedFormat":1},{"version":"d33782b82eea0ee17b99ca563bd19b38259a3aaf096d306ceaf59cd4422629be","impliedFormat":1},{"version":"55a84db1ca921c86709117fabae152ab802511dd395c26d6049e6d4fb1e78112","impliedFormat":1},{"version":"2d14198b25428b7b8010a895085add8edfaae476ab863c0c15fe2867fc214fe4","impliedFormat":1},{"version":"61046f12c3cfafd353d2d03febc96b441c1a0e3bb82a5a88de78cc1be9e10520","impliedFormat":1},{"version":"f4e7f5824ac7b35539efc3bef36b3e6be89603b88224cb5c0ad3526a454fc895","impliedFormat":1},{"version":"b29ef0a32e75e0d2a08762d6af502c0ffcd7a83fec07ed7a153e95329b89d761","impliedFormat":1},{"version":"537aff717746703d2157ec563b5de4f6393ce9f69a84ae62b49e9b6c80b6e587","impliedFormat":1},{"version":"d4220a16027ddf0cc7d105d80cbb01f5070ca7ddd8b2d007cfb024b27e22b912","impliedFormat":1},{"version":"cba6e0e0a6740738cf4911ef772456a988467ca11a168e803b294756c2dd5d18","impliedFormat":1},{"version":"55407b9eec75e0c87095afb0c7ec58a06463bb37075088e518565fe598b3b8c1","impliedFormat":1},{"version":"69630ad0e50189fb7a6b8f138c5492450394cb45424a903c8b53b2d5dd1dbce2","impliedFormat":1},{"version":"c585e44fdf120eba5f6b12c874966f152792af727115570b21cb23574f465ce1","impliedFormat":1},{"version":"8e067d3c170e56dfe3502fc8ebd092ae76a5235baad6f825726f3bbcc8a3836a","impliedFormat":1},{"version":"ae7f57067310d6c4acbc4862b91b5799e88831f4ab77f865443a9bc5057b540a","impliedFormat":1},{"version":"955d0c60502897e9735fcd08d2c1ad484b6166786328b89386074aebcd735776","impliedFormat":1},{"version":"2fa69d202a513f2a6553f263d473cba85d598ce250261715d78e8aab42df6b93","impliedFormat":1},{"version":"55480aa69f3984607fa60b3862b5cd24c2ee7bdd4edaed1eef6a8b46554e947f","impliedFormat":1},{"version":"3c19e77a05c092cab5f4fd57f6864aa2657f3ad524882f917a05fdb025905199","impliedFormat":1},{"version":"708350608d7483a4c585233b95d2dc86d992d36e7da312d5802e9a8837b5829d","impliedFormat":1},{"version":"41ceb13974711a87f182145196a641ad804125baf1fca181595f1be8cb0a2cc1","impliedFormat":1},{"version":"94588f9466081454cf518bd769f57f0f1db1356db2c4f6db924a7793b862bc96","impliedFormat":1},{"version":"4d2f7644abb97ec0d681d89b455170cf2bd0e72ee2a3e52d396074d0def264c4","impliedFormat":1},{"version":"671da85fc40086ce6f7309c428511bd77aebc0405b88700a26590a75cf37ff10","impliedFormat":1},{"version":"6e95aab5b3ba30cdbc9d4ad350ae7cbeb519a1eda30a214d2b1ec1f53eecdf9c","impliedFormat":1},{"version":"e11ff96a6e720e91e52ac54c53ee5bea99929bf096ae6b34bca2276e2b277ef8","impliedFormat":1},{"version":"08ce78e8c4c047bb08ccadc6587f6b45f025d85829854199db891cf1de7b209e","impliedFormat":1},{"version":"9984b42ce92e450fd7d9f016c65597f7da7c6f48a6e71784a232b4e1a3cb45d3","impliedFormat":1},{"version":"679a500b60fdb879af3ff20dab0bc5937098dd1ea5b75f786c672fde09faaeef","impliedFormat":1},{"version":"035c74cad659923dd64bf6d84038675b352adca39eb1db2c5fb2aaad706ddb06","impliedFormat":1},{"version":"1dac9649d09ffda3912dae3d77a2c94211da01c9b6ee203c4acef0bfaff94083","impliedFormat":1},{"version":"9b83354a819146569dfe74a2468b7c11e287286d58b5654555ed1fec10688649","impliedFormat":1},{"version":"e90e58ad52b0d25a238f6a794be594bf647280a6e8478b2337ff729dce62a63c","impliedFormat":1},{"version":"ea1393c82a0cd229de6915d3682db9571c9b65803b971a04f6042bd3b3826b60","impliedFormat":1},{"version":"d4978c3f743921aefd2609c001cf4a6baf74dd5e67337b5088bb29cb6d832ebb","impliedFormat":1},{"version":"830ac81811b6e1729d758e59c82d41ac1793d74928458d7a245d8493df5eb337","impliedFormat":1},{"version":"2d1ee16a0a8d47965719fb5bfe0ca19fdbce45adb0ca386c0cac9fbc238c301b","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"f0ae1ac99c66a4827469b8942101642ae65971e36db438afe67d4985caa31222","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"46b907ed13bd5023adeb5446ad96e9680b1a40d4e4288344d0d0e31d9034d20a","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"ea689c41691ac977c4cf2cfe7fc7de5136851730c9d4dbc97d76eb65df8ee461","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"8d0f0aa989374cc6c7bc141649a9ca7d76b221a39375c8b98b844c3ad8c9b090","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"72c62b406af19eca8080ea63f90f4c907ee5b8348152b75ba106395cd7514f54","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"be3d53a4a6cc2e67e4b4b09c46bffce6282585fe504f77839863c53cb378a47f","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"3199d552cbbbac5a3c6e1499c09acf672ae8c8c8687cf2a3dbfa7c8902cc7054","impliedFormat":1},{"version":"ad5e92984ced4333aa01391f47fece9e6f61489c6c1f61e70df213c2acc82db6","impliedFormat":1},{"version":"e3bf0a5aa199a4fc9f478808c7ffc2aa01411944594c2b305a43ede96e4a521d","impliedFormat":1},{"version":"3b0951ca295694b8d7b8139c1d69c1e6c2085e65fd86c8968eae8224f3bf5bfe","impliedFormat":1},{"version":"f2393e9e894511d174544b3319d5ed107753cc76548e590454024ccf2dedc881","impliedFormat":1},{"version":"83af0534774218e8d8205fb55df878c77e2471708a9d1435778aa69dabc24839","impliedFormat":1},{"version":"0013a72eaf0d971739705e72d2334e90973516c348f3b42a070ea5ec5563f502","impliedFormat":1},{"version":"e4a7aaa55c5de2eb52e66cc343dfe460df0a2176cf6fd8d07ce49014c279cece","impliedFormat":99},{"version":"77b55f8bfab90aa408704132d98b72f8762e2fe955eeda093ace44120d6adc1a","impliedFormat":1},{"version":"f63cb353cd53da6be4a34f6fdece6316dac14fd62cccf9a4d2ce6bab2c37bc8c","impliedFormat":1},{"version":"54751c34f1e8c3bedd7a4501762c8a9567160ac76bd6bc35b73429d3e2cf2ec7","impliedFormat":1},{"version":"3d922ac35e7bd201c09c71d0a3be9cab0ac41bdd0d5115f2734c8555629e5414","impliedFormat":1},{"version":"ae18a824baa6829b4b687f4e678d97c2b3f0ee75a82e2cff792180002f1e2a82","impliedFormat":1},{"version":"fe1baccba85e2af0fdaca57b32b34f3fd602609bb0b29aeb0609000dbcd75446","impliedFormat":1},{"version":"ae04fe1adb6d10414645db0d9c264ae06a48cd73fbb043053afe9c72849e5e44","impliedFormat":99},{"version":"3e2cde4d5e13bbd8f1ccbd3a2dcd65b99003229495e56d89522e5a7ed1c56b11","signature":"f1a1b21a223c18a29308ebff0b002317e4bb8aa5e350164f8c8c3b8bde33a535"},{"version":"5c54a34e3d91727f7ae840bfe4d5d1c9a2f93c54cb7b6063d06ee4a6c3322656","impliedFormat":99},{"version":"07c0547e91d0c35c3d1bff1d2b7ffac3334b315e9eb5744a8440940e819ab13a","impliedFormat":99},{"version":"a6f223e9ef29edb1dc1ffa1a8507b9247589077081be99883ec5ac84d74e61d6","impliedFormat":99},{"version":"f9b028d3c3891dd817e24d53102132b8f696269309605e6ed4f0db2c113bbd82","impliedFormat":99},{"version":"fb7c8d90e52e2884509166f96f3d591020c7b7977ab473b746954b0c8d100960","impliedFormat":99},{"version":"373e16d44e57937558478c586396210e4eeac6c895787863381a6588185528e4","impliedFormat":99},{"version":"7c45fbd736e81fd9899cf4d75b242326ccda37eafdd9555e5b64a0ed59e8f6e9","impliedFormat":99},{"version":"ef13c73d6157a32933c612d476c1524dd674cf5b9a88571d7d6a0d147544d529","impliedFormat":99},{"version":"daf54402364627db51d8ccdcf98620ca7bd88dbd0036053bff51b87714a299b4","impliedFormat":99},{"version":"9c2fe4e4ddf257e9b40d4d9fca28f86a8653a98492239a5ba27790019570cb71","impliedFormat":99},{"version":"f8433f2a07ccab79429b2fd66d12731a13f18061d4e7f8dc8559796086b22bc4","impliedFormat":99},{"version":"e64b03ee2d4d53929ea13a1e2b52aaba0685c86185b0f6f3346fc548b75a2245","impliedFormat":99},{"version":"19990350fca066265b2c190c9b6cde1229f35002ea2d4df8c9e397e9942f6c89","impliedFormat":99},{"version":"8fb8fdda477cd7382477ffda92c2bb7d9f7ef583b1aa531eb6b2dc2f0a206c10","impliedFormat":99},{"version":"66995b0c991b5c5d42eff1d950733f85482c7419f7296ab8952e03718169e379","impliedFormat":99},{"version":"9863f888da357e35e013ca3465b794a490a198226bd8232c2f81fb44e16ff323","impliedFormat":99},{"version":"84bc2d80326a83ee4a6e7cba2fd480b86502660770c0e24da96535af597c9f1e","impliedFormat":99},{"version":"ea27768379b866ee3f5da2419650acdb01125479f7af73580a4bceb25b79e372","impliedFormat":99},{"version":"598931eeb4362542cae5845f95c5f0e45ac668925a40ce201e244d7fe808e965","impliedFormat":99},{"version":"da9ef88cde9f715756da642ad80c4cd87a987f465d325462d6bc2a0b11d202c8","impliedFormat":99},{"version":"b4c6184d78303b0816e779a48bef779b15aea4a66028eb819aac0abee8407dea","impliedFormat":99},{"version":"db085d2171d48938a99e851dafe0e486dce9859e5dfa73c21de5ed3d4d6fb0c5","impliedFormat":99},{"version":"62a3ad1ddd1f5974b3bf105680b3e09420f2230711d6520a521fab2be1a32838","impliedFormat":99},{"version":"a77be6fc44c876bc10c897107f84eaba10790913ebdcad40fcda7e47469b2160","impliedFormat":99},{"version":"06cf55b6da5cef54eaaf51cdc3d4e5ebf16adfdd9ebd20cec7fe719be9ced017","impliedFormat":99},{"version":"91f5dbcdb25d145a56cffe957ec665256827892d779ef108eb2f3864faff523b","impliedFormat":99},{"version":"052ba354bab8fb943e0bc05a0769f7b81d7c3b3c6cd0f5cfa53c7b2da2a525c5","impliedFormat":99},{"version":"927955a3de5857e0a1c575ced5a4245e74e6821d720ed213141347dd1870197f","impliedFormat":99},{"version":"fec804d54cd97dd77e956232fc37dc13f53e160d4bbeeb5489e86eeaa91f7ebd","impliedFormat":99},{"version":"c1d53a14aad7cda2cb0b91f5daccd06c8e3f25cb26c09e008f46ad2896c80bf1","impliedFormat":1},{"version":"c789127b81f23a44e7cd20eaff043bb8ddd8b75aca955504b81217d6347709d8","impliedFormat":1},{"version":"1e13bda0589d714493973ae87a135aadb8bdadc2b8ba412a62d6a8f05f13ae76","impliedFormat":1},{"version":"9e9217786bc4dced2d11b82eaf62c77f172a2b4671f1a6353835dcbf7eef0843","impliedFormat":1},{"version":"8c18473f354a9648fd8798196f520b3c3868181c315ab6a726177e5b5d2ada1c","impliedFormat":1},{"version":"067fe0fe11f79aa3eef819ee2f1d7beecc7a6d9e95ee1b2b84553495fb61b2fe","impliedFormat":1},{"version":"65e7aa0d38b9513dad1d66fa622ca0897efd8f6e11cb3887231451eb1dde719a","impliedFormat":1},{"version":"cf8d966c5b46aa3b4e2bc55aeaf5932253a734d2c09fc9e05867d47f7fc3fe31","impliedFormat":1},{"version":"e11fb3c6b0788cddcda16e472a173c03d8729201dc325beb1251f54d2630ebbb","impliedFormat":1},{"version":"9034c961e85ef73bdd4e07e2c56d7adfa4c00ee6cf568dcfc13d059575aac8a8","impliedFormat":1},{"version":"48676769d0f4904e916425f778ae25c140370fb90b33ad85151c7ebab166a0cc","impliedFormat":1},{"version":"b70a8d1c0d9628260158c2e96982f5ffb415ca87f97388ea743e52bd6ef37a9c","impliedFormat":1},{"version":"709bae51a9b0263a888c6adf48fb1380634e37267abcea46a52eb02a14b76292","impliedFormat":1},{"version":"7a625afe5721361715736bc3f9548206e1f173dcdc43eecaf7f70557f5151361","impliedFormat":1},{"version":"4d114e382693704d3792d2d6da45adc1aa2d8a86c1b8ebe5fc225dccd30aaf36","impliedFormat":1},{"version":"329760175a249a5e13e16f281ede4d8da4a4a72d511bf631bf7e5bd363146a80","impliedFormat":1},{"version":"9fbdb40eb68109a83dcc5f19c450556b20699b4fa19783dabdfc06a9937c9c30","impliedFormat":1},{"version":"afb75becf7075fc3673a6f1f7b669b5bb909ae67609284ce6548ec44d8038a61","impliedFormat":1},{"version":"4018b7fb337b14d2a40dd091208fbd39b3400136dfda00e9995b51cf64783a9f","impliedFormat":1},{"version":"fd0589ca571ad090b531d8c095e26caa53d4825c64d3ff2b2b1ab95d72294175","impliedFormat":1},{"version":"669843ecafb89ae1e944df06360e8966219e4c1c34c0d28aa2503272cdd444a7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8124828a11be7db984fcdab052fd4ff756b18edcfa8d71118b55388176210923","impliedFormat":99},{"version":"d06f9f2ba52c62a1d6cc63f4a015bc7ccd155f3bac2c07fbb979aec6013d966f","impliedFormat":99},{"version":"b34b5f6b506abb206b1ea73c6a332b9ee9c8c98be0f6d17cdbda9430ecc1efab","impliedFormat":99},{"version":"75d4c746c3d16af0df61e7b0afe9606475a23335d9f34fcc525d388c21e9058b","impliedFormat":99},{"version":"fa959bf357232201c32566f45d97e70538c75a093c940af594865d12f31d4912","impliedFormat":99},{"version":"7d0eecfbb8fd85a40b3f1218d7b53f193d4194543a4053d0b007fcc869bd2594","impliedFormat":99},{"version":"e6233e1c976265e85aa8ad76c3881febe6264cb06ae3136f0257e1eab4a6cc5a","impliedFormat":99},{"version":"cc99b45397f724c65ab5b16dd2b9add8e2f49513621ccba4e3a564b939bfe706","impliedFormat":99},{"version":"4734f2650122fed32bf168723cbc2e7b64f0c281fec9fc7c37a23d68ee4d4033","impliedFormat":99},{"version":"324ac98294dab54fbd580c7d0e707d94506d7b2c3d5efe981a8495f02cf9ad96","impliedFormat":99},{"version":"9ec72eb493ff209b470467e24264116b6a8616484bca438091433a545dfba17e","impliedFormat":99},{"version":"dd1e40affaae1edc4beefe3d9832e86a683dcfc66fdf8c93c851a47298b04276","impliedFormat":99},{"version":"49747416f08b3ba50500a215e7a55d75268b84e31e896a40313c8053e8dec908","impliedFormat":99},{"version":"bb14e4b17394d59bd9f08459ce36d460dca08bd885c1347cf4fa7166c5af80a3","impliedFormat":99},{"version":"b07c8a8ea750da9dea2d813f9d4f65d14c0090bb00c6dde9372ec1d38b74992e","impliedFormat":99},{"version":"77217723774e80cf137592086cb40cd7607e106155a4c4071773574057863635","impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","impliedFormat":99},{"version":"971a2c327ff166c770c5fb35699575ba2d13bba1f6d2757309c9be4b30036c8e","impliedFormat":99},{"version":"3dc60aac181aa635ad323906cdb76d723376299f0f7a4264f2f3e2ae9b8ecc1b","impliedFormat":99},{"version":"7bd51996fb7717941cbe094b05adc0d80b9503b350a77b789bbb0fc786f28053","impliedFormat":99},{"version":"b62006bbc815fe8190c7aee262aad6bff993e3f9ade70d7057dfceab6de79d2f","impliedFormat":99},{"version":"33c8acef655f35aa0f44e13a1573488662755a99884292702262b97df6b9b473","impliedFormat":99},{"version":"cb0ec5ea8c0bb861262b62e0fbb899a85d86796de4caaadb53d747706fda82e3","impliedFormat":99},{"version":"3c1291fa957007538097ce38f7f0d65bf4c6ba6c2fad80ab806b71264fd296f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"3b8d3c5051687a7454c8f54746ba62b86b91c1e77bce27fea8f86ffc2d0a1325","impliedFormat":99},{"version":"171c0308da0fc6251ea4184989d62c33dff3f277695ab1d556c421c0af59ddd3","affectsGlobalScope":true,"impliedFormat":99},{"version":"fe2d63fcfdde197391b6b70daf7be8c02a60afa90754a5f4a04bdc367f62793d","impliedFormat":99},{"version":"8f86cb232f12a7261a16b4afcd8222327255daac1620b00a734119baf2862fa5","affectsGlobalScope":true,"impliedFormat":99},{"version":"1cc7fab9dcb518f2081a84caf4802c99db543fddad7227bceb3c3c97ea04688b","impliedFormat":99},{"version":"5a88655bf852c8cc007d6bc874ab61d1d63fba97063020458177173c454e9b4a","impliedFormat":99},{"version":"7e4dfae2da12ec71ffd9f55f4641a6e05610ce0d6784838659490e259e4eb13c","impliedFormat":99},{"version":"c30a41267fc04c6518b17e55dcb2b810f267af4314b0b6d7df1c33a76ce1b330","impliedFormat":1},{"version":"72422d0bac4076912385d0c10911b82e4694fc106e2d70added091f88f0824ba","impliedFormat":1},{"version":"da251b82c25bee1d93f9fd80c5a61d945da4f708ca21285541d7aff83ecb8200","impliedFormat":1},{"version":"4c8ca51077f382498f47074cf304d654aba5d362416d4f809dfdd5d4f6b3aaca","impliedFormat":1},{"version":"c6bddf16578495abc8b5546850b047f30c4b5a2a2b7fecefc0e11a44a6e91399","impliedFormat":1},{"version":"58c3c65b66f856365ceaf4f7a8f311f298ea8e1c20080ee852e91be53c98ab1d","impliedFormat":99},{"version":"e4c1599b5db368848969da315b96fa605dd4180e49b5aa79a86e713ebf7c2869","signature":"4b96dd19fd2949d28ce80e913412b0026dc421e5bf6c31d87c7b5eb11b5753b4"},{"version":"ae77d81a5541a8abb938a0efedf9ac4bea36fb3a24cc28cfa11c598863aba571","impliedFormat":1},{"version":"fb893a0dfc3c9fb0f9ca93d0648694dd95f33cbad2c0f2c629f842981dfd4e2e","impliedFormat":1},{"version":"3eb11dbf3489064a47a2e1cf9d261b1f100ef0b3b50ffca6c44dd99d6dd81ac1","impliedFormat":1},{"version":"5d08a179b846f5ee674624b349ebebe2121c455e3a265dc93da4e8d9e89722b4","impliedFormat":1},{"version":"afe73051ff6a03a9565cbd8ebb0e956ee3df5e913ad5c1ded64218aabfa3dcb5","impliedFormat":1},{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","impliedFormat":1},{"version":"035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","impliedFormat":1},{"version":"a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","impliedFormat":1},{"version":"5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","impliedFormat":1},{"version":"cdcc132f207d097d7d3aa75615ab9a2e71d6a478162dde8b67f88ea19f3e54de","impliedFormat":1},{"version":"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","impliedFormat":1},{"version":"c085e9aa62d1ae1375794c1fb927a445fa105fed891a7e24edbb1c3300f7384a","impliedFormat":1},{"version":"f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","impliedFormat":1},{"version":"5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","impliedFormat":1},{"version":"3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","impliedFormat":1},{"version":"ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","impliedFormat":1},{"version":"d96cc6598148bf1a98fb2e8dcf01c63a4b3558bdaec6ef35e087fd0562eb40ec","impliedFormat":1},{"version":"5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","impliedFormat":1},{"version":"f8db4fea512ab759b2223b90ecbbe7dae919c02f8ce95ec03f7fb1cf757cfbeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"7220461ab7f6d600b313ce621346c315c3a0ebc65b5c6f268488c5c55b68d319","impliedFormat":1},{"version":"b14c272987c82d49f0f12184c9d8d07a7f71767be99cb76faa125b777c70e962","impliedFormat":1},{"version":"fcf79300e5257a23ed3bacaa6861d7c645139c6f7ece134d15e6669447e5e6db","impliedFormat":1},{"version":"187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","impliedFormat":1},{"version":"aa2c18a1b5a086bbcaae10a4efba409cc95ba7287d8cf8f2591b53704fea3dea","impliedFormat":1},{"version":"b88749bdb18fc1398370e33aa72bc4f88274118f4960e61ce26605f9b33c5ba2","impliedFormat":1},{"version":"0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","impliedFormat":1},{"version":"00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","impliedFormat":1},{"version":"a873c50d3e47c21aa09fbe1e2023d9a44efb07cc0cb8c72f418bf301b0771fd3","impliedFormat":1},{"version":"7c14ccd2eaa82619fffc1bfa877eb68a012e9fb723d07ee98db451fadb618906","impliedFormat":1},{"version":"49c36529ee09ea9ce19525af5bb84985ea8e782cb7ee8c493d9e36d027a3d019","impliedFormat":1},{"version":"df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","impliedFormat":1},{"version":"4f6a12044ee6f458db11964153830abbc499e73d065c51c329ec97407f4b13dd","impliedFormat":1},{"version":"d4a22007b481fe2a2e6bfd3a42c00cd62d41edb36d30fc4697df2692e9891fc8","impliedFormat":1},{"version":"65ff5a0aefd7817a03c1ad04fee85c9cdd3ec415cc3c9efec85d8008d4d5e4ee","impliedFormat":1},{"version":"742d4b7b02ffc3ba3c4258a3d196457da2b3fec0125872fd0776c50302a11b9d","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"8a3fdc84d91c2c7321fd2f8dba2ea90249cfdc31427ac71b5735dd51bc25cf91","impliedFormat":1},{"version":"a0acca63c9e39580f32a10945df231815f0fe554c074da96ba6564010ffbd2d8","impliedFormat":1},{"version":"36a2e4c9a67439aca5f91bb304611d5ae6e20d420503e96c230cf8fcdc948d94","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3c1869c8ed70306e756de0566c2d0c423c0e9c6e9fe7aebec141461f104dd49","affectsGlobalScope":true,"impliedFormat":1},{"version":"d93476b774279834b479a824430c296b5d2b913e534a9d163f2e20f6b5f7ae04","impliedFormat":1},{"version":"8baa5d0febc68db886c40bf341e5c90dc215a90cd64552e47e8184be6b7e3358","impliedFormat":1},{"version":"ab82804a14454734010dcdcd43f564ff7b0389bee4c5692eec76ff5b30d4cf66","impliedFormat":1},{"version":"460b6dffbb74ef21d52934f7770a5f956d4ecf63b4949eceabf8466e4d28fe9b","impliedFormat":1},{"version":"83a1e6434a2be3ddb77790a91cea19467fcbeabd3ff8f93f7bb83535b3f02218","impliedFormat":1},{"version":"b124a5a1750b89d1d4e99df8456fefb88f77c355f7a31b36c47a69827f7b9151","impliedFormat":1},{"version":"03c258e060b7da220973f84b89615e4e9850e9b5d30b3a8e4840b3e3268ae8eb","impliedFormat":1},{"version":"15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e","impliedFormat":1},{"version":"2c3b8be03577c98530ef9cb1a76e2c812636a871f367e9edf4c5f3ce702b77f8","affectsGlobalScope":true,"impliedFormat":1},{"version":"bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","impliedFormat":1},{"version":"26a770cec4bd2e7dbba95c6e536390fffe83c6268b78974a93727903b515c4e7","impliedFormat":1}],"root":[261,349],"options":{"allowSyntheticDefaultImports":true,"composite":true,"module":99,"skipLibCheck":true},"referencedMap":[[185,1],[183,2],[360,2],[363,3],[254,4],[362,2],[257,5],[258,6],[259,7],[350,2],[188,8],[184,1],[186,9],[187,1],[352,10],[353,4],[149,2],[354,11],[356,12],[357,2],[358,13],[359,14],[369,15],[368,16],[310,17],[311,18],[370,2],[372,19],[373,20],[371,21],[374,22],[375,23],[376,24],[377,25],[378,26],[379,27],[380,28],[381,29],[382,30],[383,31],[384,12],[351,2],[95,32],[96,32],[97,33],[56,34],[98,35],[99,36],[100,37],[51,2],[54,38],[52,2],[53,2],[101,39],[102,40],[103,41],[104,42],[105,43],[106,44],[107,44],[109,2],[108,45],[110,46],[111,47],[112,48],[94,49],[55,2],[113,50],[114,51],[115,52],[148,53],[116,54],[117,55],[118,56],[119,57],[120,58],[121,59],[122,60],[123,61],[124,62],[125,63],[126,63],[127,64],[128,2],[129,2],[130,65],[132,66],[131,67],[133,68],[134,69],[135,70],[136,71],[137,72],[138,73],[139,74],[140,75],[141,76],[142,77],[143,78],[144,79],[145,80],[146,81],[147,82],[385,2],[389,83],[392,84],[390,2],[391,85],[386,2],[388,86],[393,2],[394,2],[395,87],[396,87],[397,2],[398,2],[400,88],[399,2],[355,2],[401,2],[402,89],[189,90],[335,2],[337,91],[338,92],[316,93],[314,2],[315,2],[262,2],[273,94],[268,95],[271,96],[327,97],[321,2],[324,98],[323,99],[332,99],[322,100],[336,2],[270,101],[272,101],[264,102],[267,103],[317,102],[269,104],[263,2],[361,2],[387,2],[280,2],[281,105],[278,2],[279,2],[157,2],[345,106],[347,107],[346,108],[344,109],[343,2],[367,110],[365,111],[364,16],[366,112],[276,113],[289,114],[274,2],[275,115],[290,116],[285,117],[286,118],[284,119],[288,120],[282,121],[277,122],[287,123],[283,114],[174,124],[172,125],[173,126],[161,127],[162,125],[169,128],[160,129],[165,130],[175,2],[166,131],[171,132],[177,133],[176,134],[159,135],[167,136],[168,137],[163,138],[170,124],[164,139],[255,2],[256,140],[151,141],[150,4],[158,2],[328,2],[265,2],[266,142],[301,143],[291,2],[292,144],[302,145],[303,146],[304,143],[305,143],[306,2],[309,147],[307,143],[308,2],[298,2],[295,148],[296,2],[297,2],[294,149],[293,2],[299,143],[300,2],[223,150],[209,151],[220,152],[191,2],[211,153],[210,2],[212,154],[218,155],[217,2],[193,2],[215,2],[216,2],[202,156],[197,2],[196,157],[195,157],[204,2],[221,158],[200,156],[203,2],[208,2],[201,156],[198,159],[199,2],[205,157],[206,157],[219,2],[194,2],[214,2],[222,2],[192,2],[213,2],[224,2],[207,2],[226,160],[227,161],[231,160],[232,162],[228,163],[229,164],[230,163],[225,2],[1,2],[49,2],[50,2],[9,2],[10,2],[14,2],[13,2],[3,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[4,2],[23,2],[24,2],[5,2],[25,2],[29,2],[26,2],[27,2],[28,2],[30,2],[31,2],[32,2],[6,2],[33,2],[34,2],[35,2],[36,2],[7,2],[40,2],[37,2],[38,2],[39,2],[41,2],[8,2],[42,2],[47,2],[48,2],[43,2],[44,2],[45,2],[46,2],[2,2],[12,2],[11,2],[72,165],[82,166],[71,165],[92,167],[63,168],[62,169],[91,170],[85,171],[90,172],[65,173],[79,174],[64,175],[88,176],[60,177],[59,170],[89,178],[61,179],[66,180],[67,2],[70,180],[57,2],[93,181],[83,182],[74,183],[75,184],[77,185],[73,186],[76,187],[86,170],[68,188],[69,189],[78,190],[58,191],[81,182],[80,180],[84,2],[87,192],[330,193],[319,194],[320,193],[318,2],[253,195],[260,196],[182,197],[156,198],[155,199],[153,199],[152,2],[154,200],[180,2],[179,2],[178,2],[181,201],[329,202],[325,203],[331,204],[313,205],[339,206],[341,207],[333,208],[342,209],[340,210],[334,211],[326,212],[348,213],[312,214],[242,2],[241,2],[236,215],[235,2],[249,216],[250,216],[252,217],[251,216],[248,216],[190,2],[247,218],[244,2],[243,2],[233,2],[234,2],[246,215],[245,2],[237,2],[238,2],[239,2],[240,2],[261,219],[349,220]],"latestChangedDtsFile":"./vitest.config.d.ts","version":"5.8.3"} No newline at end of file

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Don't commit generated .tsbuildinfo build cache.

This is a TypeScript incremental-build artifact regenerated on every compile. Committing it adds diff noise, becomes stale immediately, and risks merge conflicts. Add *.tsbuildinfo to .gitignore and remove this file from the repo.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tsconfig.node.tsbuildinfo` at line 1, This change is a generated TypeScript
incremental-build cache that should not be versioned. Remove the committed
tsbuildinfo artifact from the repository, and update the project ignore rules to
exclude all tsbuildinfo files so future compiles do not reintroduce it. Locate
and delete the incremental cache entry named tsconfig.node.tsbuildinfo, and
verify no other build-cache artifacts are tracked.

Comment thread tsconfig.tsbuildinfo Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Refactor-focused architecture cleanup to remove duplicated/unused fetching/filtering code, tighten TypeScript types (notably around IndexedDB storage), and consolidate item classification logic to reduce drift across views and utilities.

Changes:

  • Removed unused utility modules (githubSearch, resultsUtils, filterUtils) and moved the remaining “live” pieces (e.g., parseSearchText, ResultsFilter) into their actual consumers.
  • Made IndexedDB storage APIs generic over stored item type to eliminate repeated casts and correct the Search-items store typing.
  • Refactored event→item transformation into a dispatch-table style and extracted a full-screen LoadingScreen component from App.tsx.

Reviewed changes

Copilot reviewed 28 out of 42 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
vitest.config.js Added JS Vitest config (appears to duplicate existing TS config).
vitest.config.d.ts Added generated type stub for JS Vitest config.
vite.config.js Added JS Vite config (appears to duplicate existing TS config).
vite.config.d.ts Added generated type stub for JS Vite config.
tsconfig.tsbuildinfo Added TS incremental build artifact to the repo.
src/views/Summary.tsx Switched ad-hoc review detection to shared isReviewItem() helper.
src/utils/viewFiltering.ts Inlined and documented parseSearchText + memoization; kept advanced filtering/sorting utilities.
src/utils/urlState.ts Moved ResultsFilter + createDefaultFilter into URL state owner module.
src/utils/urlState.test.ts Updated imports to use createDefaultFilter from urlState.
src/utils/summaryGrouping.ts Added isReviewItem() and reused it for consistent review detection.
src/utils/resultsUtils.ts Removed unused/stale duplicate results utilities module.
src/utils/README.md Rewrote utils documentation to match current module responsibilities and data flow.
src/utils/rawDataUtils.ts Refactored transformEventToItem into a handler dispatch table with shared base builders.
src/utils/indexedDB.ts Introduced EventsMetadata and made stored dataset shape generic over item type.
src/utils/githubSearch.ts Removed orphaned search/fetch stack (unused in production).
src/utils/githubSearch.test.ts Removed tests for deleted orphaned githubSearch module.
src/utils/filterUtils.ts Removed unused filter-counting utilities module.
src/utils/filterUtils.test.ts Removed tests for deleted filterUtils module.
src/utils/tests/searchParsing.test.ts Added unit tests covering parseSearchText behavior in its new home.
src/types.ts Consolidated FormContextType as the single source of truth; removed UsernameCache type.
src/test/URLStateIntegration.test.tsx Removed now-dead mock for deleted githubSearch module.
src/test/test-utils.tsx Updated FormContext test mock to include searchText / setSearchText.
src/hooks/useIndexedDBStorage.ts Made hook generic over stored item type and aligned metadata typing.
src/hooks/useGitHubFormState.ts Removed debug logging during avatar cache revalidation.
src/hooks/useGitHubDataProcessing.ts Correctly typed Search-items store as GitHubItem[]; removed casts; simplified enrichment progress callback.
src/hooks/useGitHubDataFetching.ts Correctly typed Search-items store as GitHubItem[]; removed casts; clarified error propagation.
src/components/LoadingScreen.tsx New extracted component for the initial full-screen loading/start experience.
src/App.tsx Adopted typed FormContextType, generic IndexedDB hooks, and extracted LoadingScreen; removed casts.
docs/UNDEFINED_TITLE_FIX.md Moved prior process/tech note into docs/.
docs/SLOTMACHINE_OPTIMIZATION.md Moved prior process/tech note into docs/.
docs/SEARCH_DEBOUNCING.md Moved prior process/tech note into docs/.
docs/README_FILTERING_OPTIMIZATION.md Moved prior process/tech note into docs/.
docs/RACE_CONDITION_FIX.md Moved prior process/tech note into docs/.
docs/PWA_UPDATE_FEATURE.md Moved prior process/tech note into docs/.
docs/PWA_FEATURES.md Moved prior process/tech note into docs/.
docs/PR_ENRICHMENT_FEATURE.md Moved prior process/tech note into docs/.
docs/PAGINATION_LIMIT_FIX.md Moved prior process/tech note into docs/.
docs/GITHUB_API_FORMAT_CHANGE.md Moved prior process/tech note into docs/.
docs/CUSTOM_SECTIONS_FEATURE.md Moved prior process/tech note into docs/.
docs/BUTTON_WIDTH_FIX.md Moved prior process/tech note into docs/.
Comments suppressed due to low confidence (1)

src/utils/summaryGrouping.ts:56

  • getEventType still calls item.title.startsWith(...) without guarding against missing titles. Elsewhere in this module you already use optional chaining on title, and the app has previously encountered items with missing titles (e.g., from corrupted/legacy cached Search API payloads). As written, a missing title will throw at runtime here.

Consider normalizing title once (e.g., const title = item.title ?? '') and using that for all prefix checks.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread vite.config.js Outdated
Comment on lines +1 to +8
import { defineConfig, loadEnv } from 'vite';
import react from '@vitejs/plugin-react';
import { VitePWA } from 'vite-plugin-pwa';
import svgr from 'vite-plugin-svgr';
// https://vite.dev/config/
export default defineConfig(function (_a) {
var mode = _a.mode;
// Load env file based on `mode` in the current directory
Comment thread vitest.config.js Outdated
Comment on lines +1 to +6
/// <reference types="vitest" />
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
export default defineConfig({
plugins: [react()],
resolve: {
Comment thread tsconfig.tsbuildinfo Outdated
@@ -0,0 +1 @@
{"root":["./src/App.tsx","./src/main.tsx","./src/types.ts","./src/utils.ts","./src/vite-env.d.ts","./src/components/ActionButtonsRow.tsx","./src/components/BulkCopyButton.tsx","./src/components/BulkCopyButtons.tsx","./src/components/CopyToClipboardButton.tsx","./src/components/DescriptionDialog.tsx","./src/components/DismissibleBanner.tsx","./src/components/EmptyState.tsx","./src/components/HeaderSearch.tsx","./src/components/ItemRow.tsx","./src/components/LoadingIndicator.tsx","./src/components/LoadingScreen.tsx","./src/components/OfflineBanner.tsx","./src/components/PWAUpdateNotification.tsx","./src/components/ResultsContainer.tsx","./src/components/SearchForm.tsx","./src/components/SettingsDialog.tsx","./src/components/ShareButton.tsx","./src/components/SlotMachineLoader.tsx","./src/hooks/useCopyFeedback.ts","./src/hooks/useDebouncedSearch.ts","./src/hooks/useDialogNavigation.ts","./src/hooks/useDismissibleBanner.ts","./src/hooks/useGitHubDataFetching.ts","./src/hooks/useGitHubDataProcessing.ts","./src/hooks/useGitHubFormState.ts","./src/hooks/useIndexedDBStorage.ts","./src/hooks/useListSelection.ts","./src/hooks/useLocalStorage.ts","./src/hooks/useOnlineStatus.ts","./src/hooks/usePWAUpdate.ts","./src/types/pwa.d.ts","./src/utils/actionUtils.ts","./src/utils/clipboard.ts","./src/utils/environment.ts","./src/utils/indexedDB.ts","./src/utils/prEnrichment.ts","./src/utils/pwaUtils.ts","./src/utils/rawDataUtils.ts","./src/utils/settings.ts","./src/utils/storageUtils.ts","./src/utils/summaryConstants.ts","./src/utils/summaryGrouping.ts","./src/utils/summaryHelpers.ts","./src/utils/textUtils.ts","./src/utils/urlState.ts","./src/utils/usernameCache.ts","./src/utils/viewFiltering.ts","./src/views/EventView.tsx","./src/views/IssuesAndPRsList.tsx","./src/views/Summary.tsx"],"version":"5.8.3"} No newline at end of file
…ME fence

- Remove generated tsconfig*.tsbuildinfo and vite/vitest config .js/.d.ts
  that were accidentally committed (emitted by tsc -b), and gitignore them.
- Default WatchEvent action to 'started' so a missing action renders as
  'Starred' rather than 'Unstarred'.
- Add 'text' language to the README data-flow code fence (markdownlint MD040).
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 4, 2026

Copy link
Copy Markdown

Deploying git-vegas with  Cloudflare Pages  Cloudflare Pages

Latest commit: 424bd0a
Status: ✅  Deploy successful!
Preview URL: https://ea639853.git-vegas.pages.dev
Branch Preview URL: https://claude-code-architecture-rev.git-vegas.pages.dev

View logs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants