-
-
Notifications
You must be signed in to change notification settings - Fork 3
/
hooks.ts
67 lines (53 loc) · 2.25 KB
/
hooks.ts
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
import type { TSConfig } from 'pkg-types';
import type { Server as HttpServer } from 'node:http';
import type { Server as HttpsServer } from 'node:https';
import type { InlineConfig as ViteInlineConfig, ViteDevServer } from 'vite';
import type { EventHandler } from 'h3';
import type { Import, InlinePreset } from 'unimport';
import type { Remix, RemixApp } from './remix';
import type { AssetsManifest } from './remix';
export type HookResult = Promise<void> | void;
// https://www.typescriptlang.org/docs/handbook/triple-slash-directives.html
export type TSReference = { types: string } | { path: string };
export type WatchEvent = 'add' | 'addDir' | 'change' | 'unlink' | 'unlinkDir';
export type ImportPresetWithDeprecation = InlinePreset;
export interface RemixHooks {
// Remix
ready: (Remix: Remix) => HookResult;
close: (Remix: Remix) => HookResult;
'modules:before': () => HookResult;
'modules:done': () => HookResult;
'app:resolve': (app: RemixApp) => HookResult;
'build:before': () => HookResult;
'build:done': () => HookResult;
'build:assetsManifest': (manifest: AssetsManifest) => HookResult;
'builder:watch': (event: WatchEvent, path: string) => HookResult;
'server:devHandler': (handler: EventHandler) => HookResult;
'imports:sources': (presets: ImportPresetWithDeprecation[]) => HookResult;
'imports:extend': (imports: Import[]) => HookResult;
'imports:dirs': (dirs: string[]) => HookResult;
// CLI
'build:error': (error: Error) => HookResult;
'prepare:types': (options: {
references: TSReference[];
declarations: string[];
tsConfig: TSConfig;
}) => HookResult;
listen: (listenerServer: HttpServer | HttpsServer, listener: any) => HookResult;
// Vite
'vite:extend': (viteBuildContext: { remix: Remix; config: ViteInlineConfig }) => HookResult;
'vite:extendConfig': (
viteInlineConfig: ViteInlineConfig,
env: { isClient: boolean; isServer: boolean }
) => HookResult;
'vite:serverCreating': (
viteInlineConfig: ViteInlineConfig,
env: { isClient: boolean; isServer: boolean }
) => HookResult;
'vite:serverCreated': (
viteServer: ViteDevServer,
env: { isClient: boolean; isServer: boolean }
) => HookResult;
'vite:compiled': () => HookResult;
}
export type RemixHookName = keyof RemixHooks;