|
|
@ -74,13 +74,13 @@ export class DeepLinkHandler { |
|
|
|
* @throws {DeepLinkError} If validation fails or route is invalid |
|
|
|
*/ |
|
|
|
async handleDeepLink(url: string): Promise<void> { |
|
|
|
logger.info(`[DeepLink] 🚀 Starting deeplink processing for URL: ${url}`); |
|
|
|
logger.debug(`[DeepLink] 🚀 Starting deeplink processing for URL: ${url}`); |
|
|
|
|
|
|
|
try { |
|
|
|
logger.info(`[DeepLink] 📍 Parsing URL: ${url}`); |
|
|
|
logger.debug(`[DeepLink] 📍 Parsing URL: ${url}`); |
|
|
|
const { path, params, query } = this.parseDeepLink(url); |
|
|
|
|
|
|
|
logger.info(`[DeepLink] ✅ URL parsed successfully:`, { |
|
|
|
logger.debug(`[DeepLink] ✅ URL parsed successfully:`, { |
|
|
|
path, |
|
|
|
params: Object.keys(params), |
|
|
|
query: Object.keys(query), |
|
|
@ -93,10 +93,10 @@ export class DeepLinkHandler { |
|
|
|
Object.entries(params).map(([key, value]) => [key, value ?? ""]), |
|
|
|
); |
|
|
|
|
|
|
|
logger.info(`[DeepLink] 🧹 Parameters sanitized:`, sanitizedParams); |
|
|
|
logger.debug(`[DeepLink] 🧹 Parameters sanitized:`, sanitizedParams); |
|
|
|
|
|
|
|
await this.validateAndRoute(path, sanitizedParams, query); |
|
|
|
logger.info(`[DeepLink] 🎯 Deeplink processing completed successfully`); |
|
|
|
logger.debug(`[DeepLink] 🎯 Deeplink processing completed successfully`); |
|
|
|
} catch (error) { |
|
|
|
logger.error(`[DeepLink] ❌ Deeplink processing failed:`, { |
|
|
|
url, |
|
|
@ -159,7 +159,7 @@ export class DeepLinkHandler { |
|
|
|
logger.debug(`[DeepLink] 🔗 Query parameters extracted:`, query); |
|
|
|
} |
|
|
|
|
|
|
|
logger.info(`[DeepLink] ✅ Parse completed:`, { |
|
|
|
logger.debug(`[DeepLink] ✅ Parse completed:`, { |
|
|
|
routePath, |
|
|
|
pathParams: pathParams.length, |
|
|
|
queryParams: Object.keys(query).length, |
|
|
@ -186,7 +186,7 @@ export class DeepLinkHandler { |
|
|
|
params: Record<string, string>, |
|
|
|
query: Record<string, string>, |
|
|
|
): Promise<void> { |
|
|
|
logger.info( |
|
|
|
logger.debug( |
|
|
|
`[DeepLink] 🎯 Starting validation and routing for path: ${path}`, |
|
|
|
); |
|
|
|
|
|
|
@ -197,11 +197,11 @@ export class DeepLinkHandler { |
|
|
|
logger.debug(`[DeepLink] 🔍 Validating route path: ${path}`); |
|
|
|
// Validate route exists
|
|
|
|
const validRoute = routeSchema.parse(path) as DeepLinkRoute; |
|
|
|
logger.info(`[DeepLink] ✅ Route validation passed: ${validRoute}`); |
|
|
|
logger.debug(`[DeepLink] ✅ Route validation passed: ${validRoute}`); |
|
|
|
|
|
|
|
// Get route configuration
|
|
|
|
const routeConfig = ROUTE_MAP[validRoute]; |
|
|
|
logger.info(`[DeepLink] 📋 Route config retrieved:`, routeConfig); |
|
|
|
logger.debug(`[DeepLink] 📋 Route config retrieved:`, routeConfig); |
|
|
|
|
|
|
|
if (!routeConfig) { |
|
|
|
logger.error(`[DeepLink] ❌ No route config found for: ${validRoute}`); |
|
|
@ -209,7 +209,7 @@ export class DeepLinkHandler { |
|
|
|
} |
|
|
|
|
|
|
|
routeName = routeConfig.name; |
|
|
|
logger.info(`[DeepLink] 🎯 Route name resolved: ${routeName}`); |
|
|
|
logger.debug(`[DeepLink] 🎯 Route name resolved: ${routeName}`); |
|
|
|
} catch (error) { |
|
|
|
logger.error(`[DeepLink] ❌ Route validation failed:`, { |
|
|
|
path, |
|
|
@ -228,14 +228,14 @@ export class DeepLinkHandler { |
|
|
|
}, |
|
|
|
}); |
|
|
|
|
|
|
|
logger.info( |
|
|
|
logger.debug( |
|
|
|
`[DeepLink] 🔄 Redirected to error page for invalid route: ${path}`, |
|
|
|
); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// Continue with parameter validation
|
|
|
|
logger.info( |
|
|
|
logger.debug( |
|
|
|
`[DeepLink] 🔍 Starting parameter validation for route: ${routeName}`, |
|
|
|
); |
|
|
|
|
|
|
@ -258,7 +258,7 @@ export class DeepLinkHandler { |
|
|
|
if (pathSchema) { |
|
|
|
logger.debug(`[DeepLink] 🔍 Validating path parameters:`, params); |
|
|
|
validatedPathParams = await pathSchema.parseAsync(params); |
|
|
|
logger.info( |
|
|
|
logger.debug( |
|
|
|
`[DeepLink] ✅ Path parameters validated:`, |
|
|
|
validatedPathParams, |
|
|
|
); |
|
|
@ -270,7 +270,7 @@ export class DeepLinkHandler { |
|
|
|
if (querySchema) { |
|
|
|
logger.debug(`[DeepLink] 🔍 Validating query parameters:`, query); |
|
|
|
validatedQueryParams = await querySchema.parseAsync(query); |
|
|
|
logger.info( |
|
|
|
logger.debug( |
|
|
|
`[DeepLink] ✅ Query parameters validated:`, |
|
|
|
validatedQueryParams, |
|
|
|
); |
|
|
@ -299,7 +299,7 @@ export class DeepLinkHandler { |
|
|
|
}, |
|
|
|
}); |
|
|
|
|
|
|
|
logger.info( |
|
|
|
logger.debug( |
|
|
|
`[DeepLink] 🔄 Redirected to error page for invalid parameters`, |
|
|
|
); |
|
|
|
return; |
|
|
@ -307,7 +307,7 @@ export class DeepLinkHandler { |
|
|
|
|
|
|
|
// Attempt navigation
|
|
|
|
try { |
|
|
|
logger.info(`[DeepLink] 🚀 Attempting navigation:`, { |
|
|
|
logger.debug(`[DeepLink] 🚀 Attempting navigation:`, { |
|
|
|
routeName, |
|
|
|
pathParams: validatedPathParams, |
|
|
|
queryParams: validatedQueryParams, |
|
|
@ -319,7 +319,7 @@ export class DeepLinkHandler { |
|
|
|
query: validatedQueryParams, |
|
|
|
}); |
|
|
|
|
|
|
|
logger.info(`[DeepLink] ✅ Navigation successful to: ${routeName}`); |
|
|
|
logger.debug(`[DeepLink] ✅ Navigation successful to: ${routeName}`); |
|
|
|
} catch (error) { |
|
|
|
logger.error(`[DeepLink] ❌ Navigation failed:`, { |
|
|
|
routeName, |
|
|
@ -342,7 +342,7 @@ export class DeepLinkHandler { |
|
|
|
}, |
|
|
|
}); |
|
|
|
|
|
|
|
logger.info( |
|
|
|
logger.debug( |
|
|
|
`[DeepLink] 🔄 Redirected to error page for navigation failure`, |
|
|
|
); |
|
|
|
} |
|
|
|