constructor(config) {
    const {
      packageName,
      packageSupportUrl,
      yamlFilePath,
      ciEnvironmentsKeyPath,
      ciVersionKey,
      releasedVersions,
      ignoreReleasedVersions = [],
      latestComponent = CiVersionCheck.versionComponents.patch,
    } = config;

    // Ensure required params are set
    if ([
      packageName,
      packageSupportUrl,
      yamlFilePath,
      ciEnvironmentsKeyPath,
      ciVersionKey,
      releasedVersions,
    ].includes(undefined)) {
      throw 'invalid configuration';
    }

    if (!Object.keys(CiVersionCheck.versionComponents).includes(latestComponent)) {
      throw 'invalid configuration for latestComponent';
    }

    this.packageName = packageName;
    this.packageSupportUrl = packageSupportUrl;
    this.yamlFilePath = yamlFilePath;
    this.ciEnvironmentsKeyPath = ciEnvironmentsKeyPath;
    this.ciVersionKey = ciVersionKey;
    this.releasedVersions = releasedVersions;
    this.ignoreReleasedVersions = ignoreReleasedVersions;
    this.latestComponent = latestComponent;
  }
The constructor.
@param {Object} config The config.
@param {String} config.packageName The package name to check.
@param {String} config.packageSupportUrl The URL to the package website
that shows the End-of-Life support dates.
@param {String} config.yamlFilePath The path to the GitHub workflow YAML
file that contains the tests.
@param {String} config.ciEnvironmentsKeyPath The key path in the CI YAML
file to the environment specifications.
@param {String} config.ciVersionKey The key in the CI YAML file to
determine the package version.
@param {Array<String>} config.releasedVersions The released versions of
the package to check against.
@param {Array<String>} config.ignoreReleasedVersions The versions to
ignore when checking whether the CI tests against the latest versions.
This can be used in case there is a package release for which Parse
Server compatibility is not required.
@param {String} [config.latestComponent='patch'] The version component
(`major`, `minor`, `patch`) that must be the latest released version.
Default is `patch`.

For example:
- Released versions: 1.0.0, 1.2.0, 1.2.1, 1.3.0, 1.3.1, 2.0.0
- Tested version: 1.2.0

If the latest version component is `patch`, then the check would
fail and recommend an upgrade to version 1.2.1 and to add additional
tests against 1.3.1 and 2.0.0.
If the latest version component is `minor` then the check would
fail and recommend an upgrade to version 1.3.0 and to add an additional
test against 2.0.0.
If the latest version component is `major` then the check would
fail and recommend an upgrade to version 2.0.0.