@@ -11,6 +11,7 @@ export enum Platform {
1111 WEB = "WEB" ,
1212 IOS = "IOS" ,
1313 FLUTTER = "FLUTTER" ,
14+ ADMIN_NODE = "ADMIN_NODE" ,
1415}
1516
1617/**
@@ -62,7 +63,11 @@ export async function detectApps(dirPath: string): Promise<App[]> {
6263 const pubSpecYamlFiles = await detectFiles ( dirPath , "pubspec.yaml" ) ;
6364 const srcMainFolders = await detectFiles ( dirPath , "src/main/" ) ;
6465 const xCodeProjects = await detectFiles ( dirPath , "*.xcodeproj/" ) ;
65- const webApps = await Promise . all ( packageJsonFiles . map ( ( p ) => packageJsonToWebApp ( dirPath , p ) ) ) ;
66+ const adminAndWebApps = (
67+ await Promise . all ( packageJsonFiles . map ( ( p ) => packageJsonToAdminOrWebApp ( dirPath , p ) ) )
68+ ) . flat ( ) ;
69+ console . log ( "packageJsonFiles" , packageJsonFiles ) ;
70+ console . log ( "adminAndWebApps" , adminAndWebApps ) ;
6671
6772 const flutterAppPromises = await Promise . all (
6873 pubSpecYamlFiles . map ( ( f ) => processFlutterDir ( dirPath , f ) ) ,
@@ -80,7 +85,7 @@ export async function detectApps(dirPath: string): Promise<App[]> {
8085 const iosApps = iosAppPromises
8186 . flat ( )
8287 . filter ( ( a ) => ! flutterApps . some ( ( f ) => isPathInside ( f . directory , a . directory ) ) ) ;
83- return [ ...webApps , ...flutterApps , ...androidApps , ...iosApps ] ;
88+ return [ ...flutterApps , ...androidApps , ...iosApps , ...adminAndWebApps ] ;
8489}
8590
8691async function processIosDir ( dirPath : string , filePath : string ) : Promise < App [ ] > {
@@ -164,14 +169,35 @@ function isPathInside(parent: string, child: string): boolean {
164169 return ! relativePath . startsWith ( `..` ) ;
165170}
166171
167- async function packageJsonToWebApp ( dirPath : string , packageJsonFile : string ) : Promise < App > {
172+ export function getAllDepsFromPackageJson ( packageJson : PackageJSON ) {
173+ const devDependencies = Object . keys ( packageJson . devDependencies ?? { } ) ;
174+ const dependencies = Object . keys ( packageJson . dependencies ?? { } ) ;
175+ const allDeps = Array . from ( new Set ( [ ...devDependencies , ...dependencies ] ) ) ;
176+ return allDeps ;
177+ }
178+
179+ async function packageJsonToAdminOrWebApp (
180+ dirPath : string ,
181+ packageJsonFile : string ,
182+ ) : Promise < App [ ] > {
168183 const fullPath = path . join ( dirPath , packageJsonFile ) ;
169184 const packageJson = JSON . parse ( ( await fs . readFile ( fullPath ) ) . toString ( ) ) as PackageJSON ;
170- return {
171- platform : Platform . WEB ,
172- directory : path . dirname ( packageJsonFile ) ,
173- frameworks : getFrameworksFromPackageJson ( packageJson ) ,
174- } ;
185+ const allDeps = getAllDepsFromPackageJson ( packageJson ) ;
186+ const detectedApps = [ ] ;
187+ if ( allDeps . includes ( "firebase-admin" ) || allDeps . includes ( "firebase-functions" ) ) {
188+ detectedApps . push ( {
189+ platform : Platform . ADMIN_NODE ,
190+ directory : path . dirname ( packageJsonFile ) ,
191+ } ) ;
192+ }
193+ if ( allDeps . includes ( "firebase" ) || detectedApps . length === 0 ) {
194+ detectedApps . push ( {
195+ platform : Platform . WEB ,
196+ directory : path . dirname ( packageJsonFile ) ,
197+ frameworks : getFrameworksFromPackageJson ( packageJson ) ,
198+ } ) ;
199+ }
200+ return detectedApps ;
175201}
176202
177203const WEB_FRAMEWORKS : Framework [ ] = Object . values ( Framework ) ;
@@ -215,9 +241,7 @@ async function detectAppIdsForPlatform(
215241}
216242
217243function getFrameworksFromPackageJson ( packageJson : PackageJSON ) : Framework [ ] {
218- const devDependencies = Object . keys ( packageJson . devDependencies ?? { } ) ;
219- const dependencies = Object . keys ( packageJson . dependencies ?? { } ) ;
220- const allDeps = Array . from ( new Set ( [ ...devDependencies , ...dependencies ] ) ) ;
244+ const allDeps = getAllDepsFromPackageJson ( packageJson ) ;
221245 return WEB_FRAMEWORKS . filter ( ( framework ) =>
222246 WEB_FRAMEWORKS_SIGNALS [ framework ] . find ( ( dep ) => allDeps . includes ( dep ) ) ,
223247 ) ;
0 commit comments