quanyawei
2023-10-20 e5f4a463ed9a9af66035f72da8e8aef54a07baad
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import { PluginFunc } from 'dayjs/esm'
import { OpUnitType, UnitTypeLongPlural } from 'dayjs/esm';
 
declare const plugin: PluginFunc
export as namespace plugin;
export = plugin
 
declare namespace plugin {
  /**
   * @deprecated Please use more strict types
   */
  type DurationInputType = string | number | object
  /**
   * @deprecated Please use more strict types
   */
  type DurationAddType = number | object | Duration
  
  type DurationUnitsObjectType = Partial<{
    [unit in Exclude<UnitTypeLongPlural, "dates"> | "weeks"]: number
  }>;
  type DurationUnitType = Exclude<OpUnitType, "date" | "dates">
  type CreateDurationType = 
    ((units: DurationUnitsObjectType) => Duration)
    & ((time: number, unit?: DurationUnitType) => Duration)
    & ((ISO_8601: string) => Duration)
  type AddDurationType = CreateDurationType & ((duration: Duration) => Duration)
 
  interface Duration {
    new (input: string | number | object, unit?: string, locale?: string): Duration
 
    clone(): Duration
 
    humanize(withSuffix?: boolean): string
 
    milliseconds(): number
    asMilliseconds(): number
 
    seconds(): number
    asSeconds(): number
 
    minutes(): number
    asMinutes(): number
 
    hours(): number
    asHours(): number
 
    days(): number
    asDays(): number
 
    weeks(): number
    asWeeks(): number
 
    months(): number
    asMonths(): number
 
    years(): number
    asYears(): number
 
    as(unit: DurationUnitType): number
 
    get(unit: DurationUnitType): number
 
    add: AddDurationType
    
    subtract: AddDurationType
 
    toJSON(): string
 
    toISOString(): string
 
    format(formatStr?: string): string
 
    locale(locale: string): Duration
  }
}
 
declare module 'dayjs/esm' {
  interface Dayjs {
    add(duration: plugin.Duration): Dayjs
    subtract(duration: plugin.Duration): Dayjs
  }
 
  /**
   * @param time If unit is not present, time treated as number of milliseconds
   */
  export const duration: plugin.CreateDurationType;
  export function isDuration(d: any): d is plugin.Duration
}