forked from jsnbuchanan/crowd-funder-for-time-pwa
Changes: - Add detailed JSDoc headers to deep linking files - Document type system and validation strategy - Add architecture overview and error handling docs - Include usage examples and integration points - Improve code organization comments This improves maintainability by documenting the deep linking system's architecture, type safety, and integration points.
2.1 KiB
2.1 KiB
TimeSafari Deep Linking Documentation
Type System Overview
The deep linking system uses a multi-layered type safety approach:
-
Runtime Validation (Zod Schemas)
- Validates URL structure
- Enforces parameter requirements
- Sanitizes input data
- Provides detailed validation errors
-
TypeScript Types
- Generated from Zod schemas
- Ensures compile-time type safety
- Provides IDE autocompletion
- Catches type errors during development
-
Router Integration
- Type-safe parameter passing
- Route-specific parameter validation
- Query parameter type checking
Implementation Files
src/types/deepLinks.ts: Type definitions and validation schemassrc/services/deepLinks.ts: Deep link processing servicesrc/main.capacitor.ts: Capacitor integration
Type Safety Examples
// Parameter type safety
type ClaimParams = DeepLinkParams["claim"];
// TypeScript knows this has:
// - id: string
// - view?: "details" | "certificate" | "raw"
// Runtime validation
const result = deepLinkSchemas.claim.safeParse({
id: "123",
view: "details"
});
// Validates at runtime with detailed error messages
Supported URL Schemes
All deep links follow the format: timesafari://<route>/<param>?<query>
Claim Routes
-
timesafari://claim/:id- Query params:
view: "details" | "certificate" | "raw"
- Query params:
-
timesafari://claim-cert/:id -
timesafari://claim-add-raw/:id- Query params:
claim: JSON string of claim dataclaimJwtId: JWT ID for claim
- Query params:
Contact Routes
timesafari://contact-edit/:didtimesafari://contact-import/:jwt- Query params:
contacts: JSON array of contacts
- Query params:
Project Routes
timesafari://project/:id- Query params:
view: "details" | "edit"
- Query params:
Invite Routes
timesafari://invite-one-accept/:jwt- Query params:
type: "one" | "many"
- Query params:
Gift Routes
timesafari://confirm-gift/:id- Query params:
action: "confirm" | "details"
- Query params:
Offer Routes
timesafari://offer-details/:id- Query params:
view: "details"
- Query params: