in src/remote-config/remote-config-api-client-internal.ts [342:395]
private validateListVersionsOptions(options: ListVersionsOptions): ListVersionsOptions {
const optionsCopy = deepCopy(options);
if (!validator.isNonNullObject(optionsCopy)) {
throw new FirebaseRemoteConfigError(
'invalid-argument',
'ListVersionsOptions must be a non-null object.');
}
if (typeof optionsCopy.pageSize !== 'undefined') {
if (!validator.isNumber(optionsCopy.pageSize)) {
throw new FirebaseRemoteConfigError(
'invalid-argument', 'pageSize must be a number.');
}
if (optionsCopy.pageSize < 1 || optionsCopy.pageSize > 300) {
throw new FirebaseRemoteConfigError(
'invalid-argument', 'pageSize must be a number between 1 and 300 (inclusive).');
}
}
if (typeof optionsCopy.pageToken !== 'undefined' && !validator.isNonEmptyString(optionsCopy.pageToken)) {
throw new FirebaseRemoteConfigError(
'invalid-argument', 'pageToken must be a string value.');
}
if (typeof optionsCopy.endVersionNumber !== 'undefined') {
optionsCopy.endVersionNumber = this.validateVersionNumber(optionsCopy.endVersionNumber, 'endVersionNumber');
}
if (typeof optionsCopy.startTime !== 'undefined') {
if (!(optionsCopy.startTime instanceof Date) && !validator.isUTCDateString(optionsCopy.startTime)) {
throw new FirebaseRemoteConfigError(
'invalid-argument', 'startTime must be a valid Date object or a UTC date string.');
}
// Convert startTime to RFC3339 UTC "Zulu" format.
if (optionsCopy.startTime instanceof Date) {
optionsCopy.startTime = optionsCopy.startTime.toISOString();
} else {
optionsCopy.startTime = new Date(optionsCopy.startTime).toISOString();
}
}
if (typeof optionsCopy.endTime !== 'undefined') {
if (!(optionsCopy.endTime instanceof Date) && !validator.isUTCDateString(optionsCopy.endTime)) {
throw new FirebaseRemoteConfigError(
'invalid-argument', 'endTime must be a valid Date object or a UTC date string.');
}
// Convert endTime to RFC3339 UTC "Zulu" format.
if (optionsCopy.endTime instanceof Date) {
optionsCopy.endTime = optionsCopy.endTime.toISOString();
} else {
optionsCopy.endTime = new Date(optionsCopy.endTime).toISOString();
}
}
// Remove undefined fields from optionsCopy
Object.keys(optionsCopy).forEach(key =>
(typeof (optionsCopy as any)[key] === 'undefined') && delete (optionsCopy as any)[key]
);
return optionsCopy;
}