Skip to content

Commit a18d29b

Browse files
authored
fix: firebase.json:functions as optional array (#197)
1 parent d5e9691 commit a18d29b

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

.tool-versions

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
firebase 11.18.0
1+
firebase 11.19.0
22
nodejs 18.12.1
33
pnpm 7.18.2
44

src/utils.js

+11-5
Original file line numberDiff line numberDiff line change
@@ -159,16 +159,22 @@ function parseFirebaseConfiguration({target, sourceRewriteMatch, firebaseJsonPat
159159
throw new Error('Error: Cloud Function name must use only alphanumeric characters and underscores and cannot be longer than 63 characters');
160160
}
161161

162-
// If function, ensure function root-level field is present
163-
if (!firebaseConfig?.functions || !firebaseConfig.functions?.source || !isString(firebaseConfig.functions.source)) {
164-
throw new Error('Error: Required "functions.source" field is missing from Firebase Configuration file.');
162+
// If function, ensure function root-level field is present. If functions is an array, gets the first entry
163+
let functions;
164+
if (firebaseConfig?.functions) {
165+
functions = Array.isArray(firebaseConfig.functions) ? firebaseConfig.functions[0] : firebaseConfig.functions;
166+
if (!functions || !isString(functions.source)) {
167+
throw new Error('Error: Required "functions.source" or "functions[].source" field is missing from Firebase Configuration file.');
168+
}
169+
} else {
170+
throw new Error('Error: Required "functions" field is missing from Firebase Configuration file.');
165171
}
166172

167173
return {
168174
functions: {
169175
name: rewriteConfig.function ?? rewriteConfig.run.serviceId,
170-
source: path.join(path.dirname(firebaseJson), firebaseConfig.functions.source),
171-
runtime: firebaseConfig.functions?.runtime,
176+
source: path.join(path.dirname(firebaseJson), functions.source),
177+
runtime: functions?.runtime,
172178
},
173179
publicDir: path.join(path.dirname(firebaseJson), hostingConfig.public),
174180
};

0 commit comments

Comments
 (0)