summaryrefslogtreecommitdiff
path: root/node_modules/roarr/dist/types.js.flow
blob: 18be1497546d8ba45c3d4f386d58567a5c17217e (plain)
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
// @flow

/* eslint-disable import/exports-last, flowtype/require-types-at-top */

export type SerializableValueType = string | number | boolean | null | {+[key: string]: SerializableValueType, ...} | $ReadOnlyArray<SerializableValueType>;

export type SerializableObjectType = {
  +[key: string]: SerializableValueType,
  ...
};

export type WriterType = {|
  +write: (message: string) => void,
|};

export type RoarrGlobalStateType = {|
  sequence: number,
  versions: $ReadOnlyArray<string>,
  ...WriterType,
|};

export type SprintfArgumentType = string | number | boolean | null;

// eslint-disable-next-line flowtype/no-weak-types
export type MessageContextType = Object;

export type MessageType = {|
  +context: MessageContextType,
  +message: string,
  +sequence: number,
  +time: number,
  +version: string,
|};

export type TranslateMessageFunctionType = (message: MessageType) => MessageType;

declare function Logger (
  context: MessageContextType,
  message: string,
  c?: SprintfArgumentType,
  d?: SprintfArgumentType,
  e?: SprintfArgumentType,
  f?: SprintfArgumentType,
  g?: SprintfArgumentType,
  h?: SprintfArgumentType,
  i?: SprintfArgumentType,
  k?: SprintfArgumentType
): void;

// eslint-disable-next-line no-redeclare
declare function Logger (
  message: string,
  b?: SprintfArgumentType,
  c?: SprintfArgumentType,
  d?: SprintfArgumentType,
  e?: SprintfArgumentType,
  f?: SprintfArgumentType,
  g?: SprintfArgumentType,
  h?: SprintfArgumentType,
  i?: SprintfArgumentType,
  k?: SprintfArgumentType
): void;

/**
 * see https://twitter.com/kuizinas/status/914139352908943360
 */
export type LoggerType = {|
  // eslint-disable-next-line no-undef
  [[call]]: typeof Logger,
  +adopt: <T>(routine: () => Promise<T>, context: MessageContextType) => Promise<T>,
  +child: (context: TranslateMessageFunctionType | MessageContextType) => LoggerType,
  +debug: typeof Logger,
  +error: typeof Logger,
  +fatal: typeof Logger,
  +getContext: () => MessageContextType,
  +info: typeof Logger,
  +trace: typeof Logger,
  +warn: typeof Logger,
|};

export type MessageEventHandlerType = (message: MessageType) => void;