@@ -30,6 +30,27 @@ const REDIRECT_PARAM = "redirect";
3030const SESSION_COOKIE = "sdcp_session" ;
3131const COOKIE_MAX_AGE_SECONDS = 60 * 60 * 6 ;
3232const JSON_CONTENT = "application/json; charset=utf-8" ;
33+ const APPLE_APP_SITE_ASSOCIATION_PATHS = new Set ( [
34+ "/.well-known/apple-app-site-association" ,
35+ "/apple-app-site-association" ,
36+ ] ) ;
37+
38+ const APPLE_APP_SITE_ASSOCIATION = {
39+ applinks : {
40+ apps : [ ] ,
41+ details : [
42+ {
43+ appID : "CS838V553Y.org.nativescript.simdeck" ,
44+ paths : [ "*" ] ,
45+ components : [
46+ {
47+ "/" : "*" ,
48+ } ,
49+ ] ,
50+ } ,
51+ ] ,
52+ } ,
53+ } ;
3354
3455export default {
3556 async fetch ( request : Request ) : Promise < Response > {
@@ -48,6 +69,10 @@ export default {
4869async function handleRequest ( request : Request ) : Promise < Response > {
4970 const url = new URL ( request . url ) ;
5071
72+ if ( APPLE_APP_SITE_ASSOCIATION_PATHS . has ( url . pathname ) ) {
73+ return appleAppSiteAssociationResponse ( ) ;
74+ }
75+
5176 if ( url . pathname === "/api/session" ) {
5277 return sessionMetadata ( request ) ;
5378 }
@@ -94,6 +119,15 @@ async function handleRequest(request: Request): Promise<Response> {
94119 return proxyToSimDeck ( request , cookieSession ) ;
95120}
96121
122+ function appleAppSiteAssociationResponse ( ) : Response {
123+ return new Response ( JSON . stringify ( APPLE_APP_SITE_ASSOCIATION ) , {
124+ headers : {
125+ "Content-Type" : "application/json" ,
126+ "Cache-Control" : "public, max-age=3600" ,
127+ } ,
128+ } ) ;
129+ }
130+
97131function sessionMetadata ( request : Request ) : Response {
98132 const session = sessionFromCookie ( request ) ;
99133 if ( ! session ) {
0 commit comments