All files / libs/amalia-lang/formula/evaluate/shared/src/functions/dates/start-of-month index.ts

100% Statements 47/47
100% Branches 1/1
100% Functions 2/2
100% Lines 45/45

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 461x 1x 1x 1x 1x 1x 1x 1x 67x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 1x  
import { AmaliaFunctionCategory, AmaliaFunctionKeys, type AmaliaFormula } from '@amalia/amalia-lang/formula/types';
import { TokenType } from '@amalia/amalia-lang/tokens/types';
import { FormatsEnum } from '@amalia/data-capture/fields/types';
import { dayjs } from '@amalia/ext/dayjs';
 
import { AmaliaFunctionDefault } from '../../AmaliaFunction';
import { type ComputeEngineDayjsInput } from '../dates.types';
 
export const datesStartOfMonth = new AmaliaFunctionDefault<[ComputeEngineDayjsInput], number>({
  name: AmaliaFunctionKeys.startOfMonth,
  category: AmaliaFunctionCategory.DATES,
  nbParamsRequired: 1,
  description: 'Return the first day of month of a given date',
 
  exec: (date) => dayjs(date, 'X').startOf('month').unix(),
 
  params: [
    {
      name: 'date',
      description:
        'Date to apply function on: variables, properties, fields, keywords or date with format toDate("YYYY-MM-DD")',
      validTokenTypes: [TokenType.VARIABLE, TokenType.PROPERTY, TokenType.FIELD, TokenType.KEYWORD, TokenType.FUNCTION],
      validTokenValues: {
        [TokenType.FUNCTION]: [AmaliaFunctionKeys.toDate],
      },
      validFormats: [FormatsEnum.date, FormatsEnum['date-time']],
    },
  ],
 
  examples: [
    {
      desc: 'Returns "2023-06-01"',
      formula: 'startOfMonth(toDate("2023-06-19"))' as AmaliaFormula,
      result: 1_685_577_600,
    },
    {
      desc: "Returns first day of month of the user's plan assignment start date.",
      formula: 'startOfMonth(planAssignement.effectiveAsOf)' as AmaliaFormula,
    },
    {
      desc: 'Returns first day of month of opportunity close date.',
      formula: 'startOfMonth(opportunity.closeDate)' as AmaliaFormula,
    },
  ],
});