Commit Graph

42 Commits

Author SHA1 Message Date
Ryan Walters
13fc05226d feat: add TLD validation with real-time warnings
Implement comprehensive TLD validation that checks domain inputs against
the IANA TLD list and RDAP registry to provide context-aware error
messages and real-time UI warnings.

Key changes:
- Add tld-validation service that validates TLDs against IANA list and
  RDAP registry availability
- Show warning icons in LookupInput for invalid TLDs (error) and valid
  TLDs without RDAP support (warning) with explanatory tooltips
- Enhance error messages in getRegistryURL to differentiate between
  invalid TLDs, valid TLDs without RDAP, and malformed domains
- Add NotFoundError class for better 404 handling with context-specific
  messages per target type (domain, IP, ASN, entity, TLD)
- Make getRegistryURL async to support TLD validation in error path
- Add comprehensive test coverage for TLD validation and error messages
- Track TLD warning displays in telemetry

This improves UX by catching common mistakes (typos, non-existent TLDs,
reserved TLDs) before query execution and providing clear guidance.
2025-11-06 15:40:28 -06:00
5fcf9dd94b refactor: reorganize project structure and consolidate test files
Consolidate test files into centralized __tests__ directory with clearer
naming. Rename utility modules for improved clarity and consistency.
Rename Generic component to RdapObjectRouter to better reflect purpose.
2025-10-23 16:34:05 -05:00
a51d21df83 feat: add shareable URL functionality with copy-to-clipboard button
Implement URL parameter serialization for sharing RDAP queries with
deep linking support. Add ShareButton component with clipboard
integration and visual feedback. Queries are automatically restored
from URL parameters on page load, enabling direct navigation to
specific RDAP lookups.
2025-10-23 11:59:33 -05:00
ada17fc9a9 feat: add dynamic filename generation for RDAP JSON downloads
Implement context-aware filename generation for downloaded RDAP
responses, replacing the generic "response.json" with descriptive
names based on object type, identifier, and query timestamp.
Filenames follow the pattern: rdap-{type}-{identifier}-{timestamp}.json,
with automatic CIDR conversion for IP networks and proper sanitization
of special characters.
2025-10-23 11:12:58 -05:00
a2a83e9593 feat: add OverlayScrollbars for improved scrolling UI
Replace native ScrollArea with OverlayScrollbars library in
AbstractCard raw view and main page layout. Provides consistent,
customizable scrollbars with auto-hide behavior across the
application.
2025-10-23 10:21:48 -05:00
ec9509e880 refactor: replace lucide-react with Radix icons and add GitHub link
Replace lucide-react dependency with Radix UI's native icon system.
Increase theme toggle icon size from 18px to 22px for better visibility.
Add GitHub repository link with icon button in the navigation header.
2025-10-23 10:06:54 -05:00
99b65363b4 fix: address code quality issues and critical bugs
- Fix getBestURL HTTPS prioritization bug (critical security issue)
- Standardize equality operators to === for status code checks
- Add JSON parsing error handling with try-catch
- Improve IP address validation with explicit error messages
- Fix ARIA label accessibility (add id="search" to TextField)
- Remove unused callback hook in useLookup
- Add type detection debouncing (150ms) using @mantine/hooks
- Remove duplicate LookupInput component from src/components/form/
2025-10-22 16:56:42 -05:00
3ff347b81f feat: enhance RDAP component rendering with comprehensive data display
Major improvements to RDAP card components:
- Add tooltips to action buttons in AbstractCard for better UX
- Implement dedicated section components (EntitiesSection, LinksSection,
  NameserversSection, RemarksSection, SecureDNSSection, VCardDisplay)
- Add conditional rendering for optional fields across all card types
- Enhance Entity and Nameserver cards with full data display
- Add WHOIS server (port43) display to relevant cards
- Improve visual hierarchy with nested entity displays
- Fix autodetection to only run when in autodetect mode
- Add proper null/undefined checks throughout components
2025-10-22 16:19:04 -05:00
0e9336df1d refactor: reorganize project structure and consolidate network utilities
Major restructuring to improve codebase organization:
- Moved test files to src/__tests__/ directory
- Reorganized UI components from src/components/common to src/components/ui
- Consolidated RDAP-related code into src/rdap/ directory structure
- Split network helpers into modular files (asn.ts, ipv4.ts, ipv6.ts)
- Created centralized exports via src/lib/network/index.ts
- Migrated utility functions from src/helpers.ts to src/lib/utils.ts
- Separated RDAP services into dedicated modules (rdap-api.ts, registry.ts, url-resolver.ts)

This refactoring enhances code maintainability and follows a clearer separation of concerns.
2025-10-22 12:31:08 -05:00
7073936e6c feat: migrate to Radix UI and implement dark mode with next-themes
Replace @headlessui/react and @heroicons/react with @radix-ui/themes and
@radix-ui/react-icons for a more comprehensive component library. Add
next-themes for dark mode support with a new ThemeToggle component. Update
all components to use Radix UI primitives and theming system, including
AbstractCard, DynamicDate, ErrorCard, Property, PropertyList, LookupInput,
and all card components (AutnumCard, DomainCard, EntityCard, IPCard,
NameserverCard). Update global styles and app configuration to support theme
switching.
2025-10-22 11:59:52 -05:00
c17f733da1 ci: implement comprehensive CI/CD and workflow automation
- Add GitHub Actions workflows for CI, release, and deployment
- Configure Renovate for automated dependency updates
- Set up Husky pre-commit hooks with lint-staged
- Add commitlint for enforcing Conventional Commits
- Configure semantic-release for automated versioning
- Add Prettier configuration for consistent formatting
- Reformat codebase with new formatting rules
2025-10-22 02:48:18 -05:00
771a27da29 build: upgrade Tailwind CSS from v3 to v4
- Migrate from Tailwind CSS 3.x to 4.1.15
- Replace autoprefixer with @tailwindcss/postcss 4.1.15
- Update PostCSS configuration for Tailwind v4 compatibility
- Convert globals.scss to globals.css for CSS-first configuration
- Remove legacy tailwind.config.cjs in favor of CSS-based config
- Update all component imports to use new globals.css
- Remove old.tsx.disabled file
2025-10-22 02:11:09 -05:00
5fb095a498 test: add comprehensive testing infrastructure with critical bug fixes
- Add Vitest testing framework with 88 passing tests across 4 test files
- Fix critical entity validator bug (service array index)
- Implement validator architecture with 'matched but invalid' state support
- Add strict IPv4/IPv6 validation with detailed error messages
- Add case-insensitive domain and ASN matching
- Add explicit validator priority ordering (url→json→tld→ip→domain)
- Add integration tests with real IANA registry validation
- Add AutnumCard component for AS number display
- Update dependencies: prettier 2.8.1→2.8.8

Test coverage:
- helpers.test.ts: IPv4/IPv6 CIDR matching (27 tests)
- helpers.asn.test.ts: ASN range validation (22 tests)
- rdap.test.ts: Type detection with edge cases (36 tests)
- rdap.integration.test.ts: Real IANA registry tests (3 tests)

Bug fixes:
- Entity validator now correctly uses service[1] for tags (0=email, 1=tags, 2=urls)
- IPv4 validation rejects octets >255 with specific error messages
- IPv6 validation checks for invalid hex chars and multiple ::
- Domain regex supports multi-label domains (a.b.c.d.example.net)
- Type detection priority prevents URL/JSON false matches as domains
2025-10-22 01:23:15 -05:00
09cd0bf49b build: migrate to pnpm and add vitest testing infrastructure
- Replace Yarn with pnpm as package manager
- Add Vitest with React Testing Library and happy-dom
- Configure test setup and add test scripts (test, test:ui, test:run)
- Add IPCard component and update lookup components
- Remove unused react-ogp dependency
- Add type-check script
2025-10-22 00:34:53 -05:00
b3048086c3 Add await registry-informed getTypes method with smart entity tag validation
fuck type coloring madness
2024-05-12 02:10:15 -05:00
71a52ba2e3 Fix anchor HTML spec 2024-05-10 23:46:09 -05:00
9e48075d53 add repo/personal links to header 2024-05-10 06:05:53 -05:00
597863ea70 Add metadata to ParsedGeneric submit response 2024-05-10 05:42:43 -05:00
a88f3dcff3 Simplify ip4/ip6 handling with refined TargetType 2024-05-10 02:14:20 -05:00
bd49b57376 begin adding URL, link action on AbstractCard 2024-05-09 23:08:32 -05:00
1b026e6af4 implement detectedType, fix wrapping inside listbox button 2024-05-09 23:06:10 -05:00
1b78d7e37c add favicon, fix import 2024-05-09 21:45:55 -05:00
cb798c4ec1 Add proper isLoading implementation/spinning icon, detectedType prop stub 2024-05-09 21:45:23 -05:00
86d4bc5d2e Fix primary onSubmit invocation to properly use Maybe types 2024-05-09 02:30:00 -05:00
f37e6f87a2 add clsx, add bottom padding for ErrorCard 2024-05-09 02:15:11 -05:00
e325942c37 Highlight 'rdap' in title with span darkening 1st/2nd level namespaces 2023-08-26 00:19:42 -05:00
425240e39b Add separate description prop for ErrorCard, lighten header line, fix typo 2023-08-26 00:18:18 -05:00
cb424781e6 Create ErrorCard component for displaying errors better 2023-08-26 00:09:05 -05:00
d3419713c8 Add manual target type selection ListBox, add targetType to onChange return, autodetect interface 2023-08-25 23:55:32 -05:00
4553e1d30d Set target on change automatically, set response to null on exception 2023-05-23 23:39:15 -05:00
ece0ffc7a0 Commit latest design, styling & functionality 2023-05-23 20:00:16 -05:00
Xevion
bd8a1130aa Move all components into /components/ subfolders
- Fixed last remaining axios to fetch switch
2023-02-20 00:50:17 -06:00
Xevion
8218210c41 Update constants, remove unused inputRef 2023-02-20 00:24:37 -06:00
Xevion
063397625c Rewrite index with useLookup hook, add react-ogp 2023-02-20 00:17:28 -06:00
Xevion
ffc690edce Move current RDAP implementation into old.tsx page 2023-02-20 00:06:59 -06:00
Xevion
7ae7f5b337 Move types into schema, prepare for full lookup implementation 2023-01-21 00:57:28 -06:00
Xevion
0fa1cfaabd Add primitive dark mode 2023-01-15 02:28:14 -06:00
Xevion
9787076922 Add registrar RDAP schema, improve error handling & remove all typescript errors 2023-01-15 01:41:17 -06:00
Xevion
3010cf22b3 Add better Domain/Events/Status rendering, implement zod schema parsing & handling 2023-01-15 00:05:37 -06:00
Xevion
34819bd195 Build out primitive object schemas 2023-01-14 14:53:12 -06:00
Xevion
496a25cf59 Prototype commit 2023-01-14 13:58:36 -06:00
Xevion
a8373d27cd Commit blank index page 2023-01-12 21:05:16 -06:00