@targetd/date-range
TypeScript icon, indicating that this package has built-in type declarations

4.0.0 • Public • Published

@targetd/date-range

Adds date range targeting

Example

import { Data } from '@targetd/api'
import dateRangeTargeting from '@targetd/date-range'
import z from 'zod'

let data = Data.create({
  data: {
    foo: z.string(),
  },
  targeting: {
    dateRange: dateRangeTargeting,
  },
})

data = await data.addRules('foo', [
  {
    targeting: {
      dateRange: {
        start: '1939-09-01',
        end: '1945-09-02',
      },
    },
    payload: 'WWII',
  },
  {
    targeting: {
      dateRange: {
        start: '2020-01-01T00:00:00',
      },
    },
    payload: '😷',
  },
  {
    payload: 'bar',
  },
])

test('will use system time when no targeting is specified', async () => {
  jestDate.advanceTo(new Date('1930-01-01'))
  expect(await data.getPayload('foo', {})).toBe('bar')

  jestDate.advanceTo(new Date('1940-01-01'))
  expect(await data.getPayload('foo', {})).toBe('WWII')

  jestDate.advanceTo(new Date('2021-01-01'))
  expect(await data.getPayload('foo', {})).toBe('😷')
})

test('filter by queries', async () => {
  expect(
    await data.getPayload('foo', { dateRange: { start: '2020-01-01' } }),
  ).toBe('😷')

  expect(
    await data.getPayload('foo', { dateRange: { start: '2019-01-01' } }),
  ).toBe('😷')

  expect(
    await data.getPayload('foo', {
      dateRange: { start: '2019-01-01', end: '2019-12-01' },
    }),
  ).toBe('bar')
})

Readme

Keywords

none

Package Sidebar

Install

npm i @targetd/date-range

Weekly Downloads

2

Version

4.0.0

License

MIT

Unpacked Size

12.3 kB

Total Files

12

Last publish

Collaborators

  • johngeorgewright