Blame view

天文台pc/tianwentai-ui/node_modules/date-fns/interval.mjs 1.38 KB
bc518174   王天杨   提交两个项目文件
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
  import { toDate } from "./toDate.mjs";
  
  /**
   * The {@link interval} function options.
   */
  
  /**
   * @name interval
   * @category Interval Helpers
   * @summary Creates an interval object and validates its values.
   *
   * @description
   * Creates a normalized interval object and validates its values. If the interval is invalid, an exception is thrown.
   *
   * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).
   *
   * @param start - The start of the interval.
   * @param end - The end of the interval.
   * @param options - The options object.
   *
   * @throws `Start date is invalid` when `start` is invalid.
   * @throws `End date is invalid` when `end` is invalid.
   * @throws `End date must be after start date` when end is before `start` and `options.assertPositive` is true.
   *
   * @returns The normalized and validated interval object.
   */
  export function interval(start, end, options) {
    const _start = toDate(start);
    if (isNaN(+_start)) throw new TypeError("Start date is invalid");
  
    const _end = toDate(end);
    if (isNaN(+_end)) throw new TypeError("End date is invalid");
  
    if (options?.assertPositive && +_start > +_end)
      throw new TypeError("End date must be after start date");
  
    return { start: _start, end: _end };
  }
  
  // Fallback for modularized imports:
  export default interval;