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

100% Statements 42/42
100% Branches 1/1
100% Functions 2/2
100% Lines 40/40

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 411x 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 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 datesMonthNumber = new AmaliaFunctionDefault<[ComputeEngineDayjsInput], number>({
  name: AmaliaFunctionKeys.monthNumber,
  category: AmaliaFunctionCategory.DATES,
  nbParamsRequired: 1,
  description: 'Return the month in number format of a given date',
 
  exec: (date: ComputeEngineDayjsInput) => dayjs(date, 'X').month() + 1,
 
  params: [
    {
      name: 'date',
      description: 'Date: 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 9',
      formula: 'monthNumber(toDate("2023-09-16"))' as AmaliaFormula,
      result: 9,
    },
    {
      desc: 'Returns the month in number format of Close Date.',
      formula: 'monthNumber(opportunity.closeDate)' as AmaliaFormula,
    },
  ],
});