const {slugify} = require('@tryghost/string'); const ValueObject = require('./shared/ValueObject'); const InvalidOfferCode = require('../errors').InvalidOfferCode; /** @extends ValueObject */ class OfferCode extends ValueObject { /** @param {unknown} code */ static create(code) { if (!code || typeof code !== 'string') { throw new InvalidOfferCode({ message: 'Offer `code` must be a string.' }); } const slugged = slugify(code); if (slugged.length > 191) { throw new InvalidOfferCode({ message: 'Offer `code` can be a maximum of 191 characters.' }); } return new OfferCode(slugged); } static InvalidOfferCode = InvalidOfferCode; } module.exports = OfferCode;