public function make(Settings $settings) : string
    {
        $cacheKey = $this->getCacheKey($settings);

        if ($this->hasCachedData($cacheKey)) {
            return $this->getCachedData($cacheKey);
        }

        $settings->hasRequiredSettings();

        return $this->cacheData($cacheKey, $this->createOutput($settings));
    }