private validateListVersionsOptions()

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;
  }