How to use @shopify/decorators - 8 common examples

To help you get started, we’ve selected a few @shopify/decorators examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github Shopify / quilt / packages / dates / src / get-date-time-parts.ts View on Github external
static getSecond(date: Date, timeZone?: string) {
    const secondString = formatDate(date, 'en', {
      timeZone,
      second: 'numeric',
    });

    let second = parseInt(secondString, 10);

    if (isNaN(second)) {
      second = DateTimeParts.getTimePartsFallback(date, timeZone).second;
    }

    return second;
  }

  @memoize(dateTimeCacheKey('timePartsFallback'))
  private static getTimePartsFallback(date: Date, timeZone?: string) {
    const timeString = formatDate(date, 'en', {
      timeZone,
      hour12: false,
      hour: '2-digit',
      minute: '2-digit',
      second: '2-digit',
    });

    // In Microsoft Edge, Intl.DateTimeFormat returns invisible characters around the individual numbers
    const [dirtyHour, dirtyMinute, dirtySecond] = timeString.split(':');

    const rawHour = new RegExp(TWO_DIGIT_REGEX).exec(dirtyHour);
    const rawMinute = new RegExp(TWO_DIGIT_REGEX).exec(dirtyMinute);
    const rawSecond = new RegExp(TWO_DIGIT_REGEX).exec(dirtySecond);
github Shopify / quilt / packages / dates / src / get-date-time-parts.ts View on Github external
function assertNever(message: string): never {
  throw new Error(message);
}

function getWeekdayValue(weekday: string) {
  if (!isWeekday(weekday)) {
    return assertNever(`Unexpected weekday: ${weekday}`);
  }

  return weekdays[weekday];
}

// eslint-disable-next-line @typescript-eslint/no-extraneous-class
class DateTimeParts {
  @memoize(dateTimeCacheKey('year'))
  static getYear(date: Date, timeZone?: string) {
    if (isNaN(date.valueOf())) {
      throw new Error(
        `Unable to parse date: ${date} for timezone: ${timeZone}`,
      );
    }

    const yearString = formatDate(date, 'en', {
      timeZone,
      year: 'numeric',
    });

    const sanitisedYearString = sanitiseDateString(yearString);

    const year = parseInt(sanitisedYearString, 10);
github Shopify / quilt / packages / dates / src / get-date-time-parts.ts View on Github external
timeZone,
      month: 'numeric',
    });

    const sanitisedMonthString = sanitiseDateString(monthString);

    const month = parseInt(sanitisedMonthString, 10);

    if (isNaN(month)) {
      throw new Error(`Unable to parse month: '${monthString}'`);
    }

    return month;
  }

  @memoize(dateTimeCacheKey('day'))
  static getDay(date: Date, timeZone?: string) {
    const dayString = formatDate(date, 'en', {
      timeZone,
      day: 'numeric',
    });

    const sanitisedDayString = sanitiseDateString(dayString);

    const day = parseInt(sanitisedDayString, 10);

    if (isNaN(day)) {
      throw new Error(`Unable to parse day: '${dayString}'`);
    }

    return day;
  }
github Shopify / quilt / packages / dates / src / get-date-time-parts.ts View on Github external
timeZone,
      year: 'numeric',
    });

    const sanitisedYearString = sanitiseDateString(yearString);

    const year = parseInt(sanitisedYearString, 10);

    if (isNaN(year)) {
      throw new Error(`Unable to parse year: '${yearString}'`);
    }

    return year;
  }

  @memoize(dateTimeCacheKey('month'))
  static getMonth(date: Date, timeZone?: string) {
    const monthString = formatDate(date, 'en', {
      timeZone,
      month: 'numeric',
    });

    const sanitisedMonthString = sanitiseDateString(monthString);

    const month = parseInt(sanitisedMonthString, 10);

    if (isNaN(month)) {
      throw new Error(`Unable to parse month: '${monthString}'`);
    }

    return month;
  }
github Shopify / quilt / packages / dates / src / get-date-time-parts.ts View on Github external
return day;
  }

  @memoize(dateTimeCacheKey('weekday'))
  static getWeekday(date: Date, timeZone?: string) {
    const weekdayString = formatDate(date, 'en', {
      timeZone,
      weekday: 'long',
    });

    const sanitisedWeekdayString = sanitiseDateString(weekdayString);

    return getWeekdayValue(sanitisedWeekdayString);
  }

  @memoize(dateTimeCacheKey('hour'))
  static getHour(date: Date, timeZone?: string) {
    const hourString = formatDate(date, 'en', {
      timeZone,
      hour12: false,
      hour: 'numeric',
    });

    let hour = parseInt(hourString, 10);

    if (isNaN(hour)) {
      hour = DateTimeParts.getTimePartsFallback(date, timeZone).hour;
    }

    return hour;
  }
github Shopify / quilt / packages / dates / src / get-date-time-parts.ts View on Github external
static getMinute(date: Date, timeZone?: string) {
    const minuteString = formatDate(date, 'en', {
      timeZone,
      minute: 'numeric',
    });

    let minute = parseInt(minuteString, 10);

    if (isNaN(minute)) {
      minute = DateTimeParts.getTimePartsFallback(date, timeZone).minute;
    }

    return minute;
  }

  @memoize(dateTimeCacheKey('second'))
  static getSecond(date: Date, timeZone?: string) {
    const secondString = formatDate(date, 'en', {
      timeZone,
      second: 'numeric',
    });

    let second = parseInt(secondString, 10);

    if (isNaN(second)) {
      second = DateTimeParts.getTimePartsFallback(date, timeZone).second;
    }

    return second;
  }

  @memoize(dateTimeCacheKey('timePartsFallback'))
github Shopify / quilt / packages / dates / src / get-date-time-parts.ts View on Github external
timeZone,
      day: 'numeric',
    });

    const sanitisedDayString = sanitiseDateString(dayString);

    const day = parseInt(sanitisedDayString, 10);

    if (isNaN(day)) {
      throw new Error(`Unable to parse day: '${dayString}'`);
    }

    return day;
  }

  @memoize(dateTimeCacheKey('weekday'))
  static getWeekday(date: Date, timeZone?: string) {
    const weekdayString = formatDate(date, 'en', {
      timeZone,
      weekday: 'long',
    });

    const sanitisedWeekdayString = sanitiseDateString(weekdayString);

    return getWeekdayValue(sanitisedWeekdayString);
  }

  @memoize(dateTimeCacheKey('hour'))
  static getHour(date: Date, timeZone?: string) {
    const hourString = formatDate(date, 'en', {
      timeZone,
      hour12: false,
github Shopify / quilt / packages / dates / src / get-date-time-parts.ts View on Github external
const hourString = formatDate(date, 'en', {
      timeZone,
      hour12: false,
      hour: 'numeric',
    });

    let hour = parseInt(hourString, 10);

    if (isNaN(hour)) {
      hour = DateTimeParts.getTimePartsFallback(date, timeZone).hour;
    }

    return hour;
  }

  @memoize(dateTimeCacheKey('minute'))
  static getMinute(date: Date, timeZone?: string) {
    const minuteString = formatDate(date, 'en', {
      timeZone,
      minute: 'numeric',
    });

    let minute = parseInt(minuteString, 10);

    if (isNaN(minute)) {
      minute = DateTimeParts.getTimePartsFallback(date, timeZone).minute;
    }

    return minute;
  }

  @memoize(dateTimeCacheKey('second'))

@shopify/decorators

A set of decorators to aid your JavaScript journey

MIT
Latest version published 1 year ago

Package Health Score

79 / 100
Full package analysis

Popular @shopify/decorators functions

Similar packages