source: frontend/node_modules/tapable/tapable.d.ts

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 4.8 KB
RevLine 
[9af201e]1type FixedSizeArray<T extends number, U> = T extends 0
2 ? void[]
3 : ReadonlyArray<U> & {
4 0: U;
5 length: T;
6 };
7type Measure<T extends number> = T extends 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8
8 ? T
9 : never;
10type Append<T extends any[], U> = {
11 0: [U];
12 1: [T[0], U];
13 2: [T[0], T[1], U];
14 3: [T[0], T[1], T[2], U];
15 4: [T[0], T[1], T[2], T[3], U];
16 5: [T[0], T[1], T[2], T[3], T[4], U];
17 6: [T[0], T[1], T[2], T[3], T[4], T[5], U];
18 7: [T[0], T[1], T[2], T[3], T[4], T[5], T[6], U];
19 8: [T[0], T[1], T[2], T[3], T[4], T[5], T[6], T[7], U];
20}[Measure<T["length"]>];
21type AsArray<T> = T extends any[] ? T : [T];
22
23declare class UnsetAdditionalOptions {
24 _UnsetAdditionalOptions: true;
25}
26type IfSet<X> = X extends UnsetAdditionalOptions ? {} : X;
27
28type Callback<E, T> = (error: E | null, result?: T) => void;
29type InnerCallback<E, T> = (error?: E | null | false, result?: T) => void;
30
31type FullTap = Tap & {
32 type: "sync" | "async" | "promise";
33 fn: Function;
34};
35
36type Tap = TapOptions & {
37 name: string;
38};
39
40type TapOptions = {
41 before?: string;
42 stage?: number;
43};
44
45interface HookInterceptor<T, R, AdditionalOptions = UnsetAdditionalOptions> {
46 name?: string;
47 tap?: (tap: FullTap & IfSet<AdditionalOptions>) => void;
48 call?: (...args: any[]) => void;
49 loop?: (...args: any[]) => void;
50 error?: (err: Error) => void;
51 result?: (result: R) => void;
52 done?: () => void;
53 register?: (
54 tap: FullTap & IfSet<AdditionalOptions>
55 ) => FullTap & IfSet<AdditionalOptions>;
56}
57
58type ArgumentNames<T extends any[]> = FixedSizeArray<T["length"], string>;
59
60declare class Hook<T, R, AdditionalOptions = UnsetAdditionalOptions> {
61 constructor(args?: ArgumentNames<AsArray<T>>, name?: string);
62 name: string | undefined;
63 interceptors: HookInterceptor<T, R, AdditionalOptions>[];
64 taps: FullTap[];
65 intercept(interceptor: HookInterceptor<T, R, AdditionalOptions>): void;
66 isUsed(): boolean;
67 callAsync(...args: Append<AsArray<T>, Callback<Error, R>>): void;
68 promise(...args: AsArray<T>): Promise<R>;
69 tap(
70 options: string | (Tap & IfSet<AdditionalOptions>),
71 fn: (...args: AsArray<T>) => R
72 ): void;
73 withOptions(
74 options: TapOptions & IfSet<AdditionalOptions>
75 ): Omit<this, "call" | "callAsync" | "promise">;
76}
77
78export class SyncHook<
79 T,
80 R = void,
81 AdditionalOptions = UnsetAdditionalOptions
82> extends Hook<T, R, AdditionalOptions> {
83 call(...args: AsArray<T>): R;
84}
85
86export class SyncBailHook<
87 T,
88 R,
89 AdditionalOptions = UnsetAdditionalOptions
90> extends SyncHook<T, R, AdditionalOptions> {}
91export class SyncLoopHook<
92 T,
93 AdditionalOptions = UnsetAdditionalOptions
94> extends SyncHook<T, void, AdditionalOptions> {}
95export class SyncWaterfallHook<
96 T,
97 R = AsArray<T>[0],
98 AdditionalOptions = UnsetAdditionalOptions
99> extends SyncHook<T, R, AdditionalOptions> {}
100
101declare class AsyncHook<
102 T,
103 R,
104 AdditionalOptions = UnsetAdditionalOptions
105> extends Hook<T, R, AdditionalOptions> {
106 tapAsync(
107 options: string | (Tap & IfSet<AdditionalOptions>),
108 fn: (...args: Append<AsArray<T>, InnerCallback<Error, R>>) => void
109 ): void;
110 tapPromise(
111 options: string | (Tap & IfSet<AdditionalOptions>),
112 fn: (...args: AsArray<T>) => Promise<R>
113 ): void;
114}
115
116export class AsyncParallelHook<
117 T,
118 AdditionalOptions = UnsetAdditionalOptions
119> extends AsyncHook<T, void, AdditionalOptions> {}
120export class AsyncParallelBailHook<
121 T,
122 R,
123 AdditionalOptions = UnsetAdditionalOptions
124> extends AsyncHook<T, R, AdditionalOptions> {}
125export class AsyncSeriesHook<
126 T,
127 AdditionalOptions = UnsetAdditionalOptions
128> extends AsyncHook<T, void, AdditionalOptions> {}
129export class AsyncSeriesBailHook<
130 T,
131 R,
132 AdditionalOptions = UnsetAdditionalOptions
133> extends AsyncHook<T, R, AdditionalOptions> {}
134export class AsyncSeriesLoopHook<
135 T,
136 AdditionalOptions = UnsetAdditionalOptions
137> extends AsyncHook<T, void, AdditionalOptions> {}
138export class AsyncSeriesWaterfallHook<
139 T,
140 R = AsArray<T>[0],
141 AdditionalOptions = UnsetAdditionalOptions
142> extends AsyncHook<T, R, AdditionalOptions> {}
143
144type HookFactory<H, K = any> = (key: K) => H;
145
146interface HookMapInterceptor<H, K = any> {
147 factory?: (key: K, hook: H) => H;
148}
149
150export class HookMap<H> {
151 constructor(factory: HookFactory<H>, name?: string);
152 name: string | undefined;
153 get(key: any): H | undefined;
154 for(key: any): H;
155 intercept(interceptor: HookMapInterceptor<H>): void;
156}
157
158type AnyHook = Hook<any, any>;
159
160export class TypedHookMap<M extends Record<any, AnyHook>> {
161 constructor(factory: HookFactory<M[keyof M], keyof M>, name?: string);
162 name: string | undefined;
163 get<K extends keyof M>(key: K): M[K] | undefined;
164 for<K extends keyof M>(key: K): M[K];
165 intercept(interceptor: HookMapInterceptor<M[keyof M], keyof M>): void;
166}
167
168export class MultiHook<H> {
169 constructor(hooks: H[], name?: string);
170 name: string | undefined;
171 tap(options: string | Tap, fn?: Function): void;
172 tapAsync(options: string | Tap, fn?: Function): void;
173 tapPromise(options: string | Tap, fn?: Function): void;
174}
Note: See TracBrowser for help on using the repository browser.