in src/remote-config/remote-config.ts [265:359]
public readonly updateType?: ('REMOTE_CONFIG_UPDATE_TYPE_UNSPECIFIED' |
'INCREMENTAL_UPDATE' | 'FORCED_UPDATE' | 'ROLLBACK');
public readonly updateUser?: RemoteConfigUser;
public readonly description?: string;
public readonly rollbackSource?: string;
public readonly isLegacy?: boolean;
constructor(version: Version) {
if (!validator.isNonNullObject(version)) {
throw new FirebaseRemoteConfigError(
'invalid-argument',
`Invalid Remote Config version instance: ${JSON.stringify(version)}`);
}
if (typeof version.versionNumber !== 'undefined') {
if (!validator.isNonEmptyString(version.versionNumber) &&
!validator.isNumber(version.versionNumber)) {
throw new FirebaseRemoteConfigError(
'invalid-argument',
'Version number must be a non-empty string in int64 format or a number');
}
if (!Number.isInteger(Number(version.versionNumber))) {
throw new FirebaseRemoteConfigError(
'invalid-argument',
'Version number must be an integer or a string in int64 format');
}
this.versionNumber = version.versionNumber;
}
if (typeof version.updateOrigin !== 'undefined') {
if (!validator.isNonEmptyString(version.updateOrigin)) {
throw new FirebaseRemoteConfigError(
'invalid-argument',
'Version update origin must be a non-empty string');
}
this.updateOrigin = version.updateOrigin;
}
if (typeof version.updateType !== 'undefined') {
if (!validator.isNonEmptyString(version.updateType)) {
throw new FirebaseRemoteConfigError(
'invalid-argument',
'Version update type must be a non-empty string');
}
this.updateType = version.updateType;
}
if (typeof version.updateUser !== 'undefined') {
if (!validator.isNonNullObject(version.updateUser)) {
throw new FirebaseRemoteConfigError(
'invalid-argument',
'Version update user must be a non-null object');
}
this.updateUser = version.updateUser;
}
if (typeof version.description !== 'undefined') {
if (!validator.isNonEmptyString(version.description)) {
throw new FirebaseRemoteConfigError(
'invalid-argument',
'Version description must be a non-empty string');
}
this.description = version.description;
}
if (typeof version.rollbackSource !== 'undefined') {
if (!validator.isNonEmptyString(version.rollbackSource)) {
throw new FirebaseRemoteConfigError(
'invalid-argument',
'Version rollback source must be a non-empty string');
}
this.rollbackSource = version.rollbackSource;
}
if (typeof version.isLegacy !== 'undefined') {
if (!validator.isBoolean(version.isLegacy)) {
throw new FirebaseRemoteConfigError(
'invalid-argument',
'Version.isLegacy must be a boolean');
}
this.isLegacy = version.isLegacy;
}
// The backend API provides timestamps in ISO date strings. The Admin SDK exposes timestamps
// in UTC date strings. If a developer uses a previously obtained template with UTC timestamps
// we could still validate it below.
if (typeof version.updateTime !== 'undefined') {
if (!this.isValidTimestamp(version.updateTime)) {
throw new FirebaseRemoteConfigError(
'invalid-argument',
'Version update time must be a valid date string');
}
this.updateTime = new Date(version.updateTime).toUTCString();
}
}