@@ -26,9 +26,9 @@ class CoCreateFileSystem {
2626		this . sitemap  =  sitemap ; 
2727	} 
2828
29- 	async  send ( req ,  res ,  crud ,  organization ,  valideUrl )  { 
29+ 	async  send ( req ,  res ,  crud ,  organization ,  urlObject )  { 
3030		try  { 
31- 			const  hostname  =  valideUrl . hostname ; 
31+ 			const  hostname  =  urlObject . hostname ; 
3232
3333			let  data  =  { 
3434				method : "object.read" , 
@@ -72,12 +72,12 @@ class CoCreateFileSystem {
7272				} ) ; 
7373			} 
7474
75- 			let  parameters  =  valideUrl . searchParams ; 
75+ 			let  parameters  =  urlObject . searchParams ; 
7676			if  ( parameters . size )  { 
7777				console . log ( "parameters" ,  parameters ) ; 
7878			} 
7979
80- 			let  pathname  =  valideUrl . pathname ; 
80+ 			let  pathname  =  urlObject . pathname ; 
8181
8282			if  ( pathname . endsWith ( "/" ) )  { 
8383				pathname  +=  "index.html" ; 
@@ -86,7 +86,17 @@ class CoCreateFileSystem {
8686				if  ( ! directory . includes ( "." ) )  pathname  +=  "/index.html" ; 
8787			} 
8888
89- 			data . $filter . query . pathname  =  pathname ; 
89+ 			const  bcp47Regex  =  / ^ \/ ( [ a - z A - Z ] { 2 , 3 } (?: - [ a - z A - Z 0 - 9 ] { 2 , 8 } ) + ) \/ / ; 
90+ 			const  match  =  pathname . match ( bcp47Regex ) ; 
91+ 			let  lang ,  langRegion ; 
92+ 			if  ( match )  { 
93+ 				langRegion  =  match [ 1 ] ; 
94+ 				lang  =  langRegion . split ( "-" ) [ 0 ] ;  // Get just the base language (e.g., 'en', 'es', 'fr') 
95+ 				let  newPathname  =  pathname . replace ( langRegion ,  lang ) ; 
96+ 				data . $filter . query . pathname  =  {  $in : [ newPathname ,  pathname ]  } ; 
97+ 			}  else  { 
98+ 				data . $filter . query . pathname  =  pathname ; 
99+ 			} 
90100
91101			let  file ; 
92102			if  ( 
@@ -105,54 +115,9 @@ class CoCreateFileSystem {
105115				file  =  await  crud . send ( data ) ; 
106116			} 
107117
108- 			// --- Only check for BCP 47 if file not found --- 
109- 			const  bcp47Regex  =  / ^ \/ ( [ a - z A - Z ] { 2 , 3 } (?: - [ a - z A - Z 0 - 9 ] { 2 , 8 } ) + ) \/ / ; 
110- 			if  ( ! file  ||  ! file . object  ||  ! file . object [ 0 ] )  { 
111- 				const  match  =  pathname . match ( bcp47Regex ) ; 
112- 				if  ( match )  { 
113- 					const  langCode  =  match [ 1 ] ; 
114- 					// Remove BCP 47 segment from pathname 
115- 					const  strippedPathname  =  pathname . replace ( bcp47Regex ,  "/" ) ; 
116- 					// Query for a file where languages[langCode].href matches strippedPathname 
117- 					data . $filter . query  =  { 
118- 						...data . $filter . query , 
119- 						[ `languages.${ langCode }  .href` ] : strippedPathname 
120- 					} ; 
121- 					file  =  await  crud . send ( data ) ; 
122- 					if  ( file  &&  file . object  &&  file . object [ 0 ] )  { 
123- 						let  language  =  file . languages [ langCode ] ; 
124- 						let  translation  =  language . translation ; 
125- 						if  ( typeof  translation  ===  "object" )  { 
126- 							// Handle translation object case 
127- 						}  else  { 
128- 							translation  =  await  crud . send ( { 
129- 								method : "object.read" , 
130- 								host : hostname , 
131- 								array : "translation" , 
132- 								object : { 
133- 									_id : translation 
134- 								} , 
135- 								organization_id
136- 							} ) ; 
137- 						} 
138- 						if  ( translation )  { 
139- 							// ToDo: apply translation to file 
140- 						} 
141- 
142- 						if  ( file . languages )  { 
143- 							// ToDo: Apply languages as links to to head of file 
144- 							file . languages . forEach ( ( lang )  =>  { 
145- 								let  link  =  `<link rel="alternate" hreflang="${ lang . code }  " href="${ lang . href }  ">` ; 
146- 								// Insert link into head of file 
147- 							} ) ; 
148- 						} 
149- 					} 
150- 				} 
151- 			} 
152- 
153118			// --- Wildcard fallback --- 
154119			if  ( ! file  ||  ! file . object  ||  ! file . object [ 0 ] )  { 
155- 				pathname  =  valideUrl . pathname ; 
120+ 				pathname  =  urlObject . pathname ; 
156121				let  lastIndex  =  pathname . lastIndexOf ( "/" ) ; 
157122				let  wildcardPath  =  pathname . substring ( 0 ,  lastIndex  +  1 ) ; 
158123				let  wildcard  =  pathname . substring ( lastIndex  +  1 ) ; 
@@ -228,11 +193,10 @@ class CoCreateFileSystem {
228193				src  =  Buffer . from ( src ,  "base64" ) ; 
229194			}  else  if  ( contentType  ===  "text/html" )  { 
230195				try  { 
231- 					src  =  await  this . render . HTML ( 
232- 						src , 
233- 						organization_id , 
234- 						valideUrl 
235- 					) ; 
196+ 					file . urlObject  =  urlObject ; 
197+ 					file . langRegion  =  langRegion ; 
198+ 					file . lang  =  lang ; 
199+ 					src  =  await  this . render . HTML ( file ) ; 
236200				}  catch  ( err )  { 
237201					console . warn ( "server-side-render: "  +  err . message ) ; 
238202				} 
@@ -379,4 +343,3 @@ class CoCreateFileSystem {
379343} 
380344
381345module . exports  =  CoCreateFileSystem ; 
382- module . exports  =  CoCreateFileSystem ; 
0 commit comments