@modern-js/plugin-v2 2.65.1 → 2.65.2-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/cjs/cli/api.js +1 -1
  2. package/dist/cjs/hooks.js +29 -0
  3. package/dist/cjs/index.js +2 -0
  4. package/dist/cjs/server/api.js +94 -0
  5. package/dist/cjs/server/context.js +64 -0
  6. package/dist/cjs/server/hooks.js +35 -0
  7. package/dist/cjs/server/index.js +41 -0
  8. package/dist/cjs/server/run/create.js +75 -0
  9. package/dist/cjs/server/run/index.js +31 -0
  10. package/dist/cjs/server/run/types.js +16 -0
  11. package/dist/cjs/types/server/api.js +16 -0
  12. package/dist/cjs/types/server/context.js +16 -0
  13. package/dist/cjs/types/server/hooks.js +16 -0
  14. package/dist/cjs/types/server/index.js +16 -0
  15. package/dist/cjs/types/server/plugin.js +16 -0
  16. package/dist/esm/cli/api.js +2 -2
  17. package/dist/esm/hooks.js +129 -0
  18. package/dist/esm/index.js +2 -1
  19. package/dist/esm/server/api.js +76 -0
  20. package/dist/esm/server/context.js +38 -0
  21. package/dist/esm/server/hooks.js +11 -0
  22. package/dist/esm/server/index.js +12 -0
  23. package/dist/esm/server/run/create.js +95 -0
  24. package/dist/esm/server/run/index.js +6 -0
  25. package/dist/esm/server/run/types.js +0 -0
  26. package/dist/esm/types/server/api.js +0 -0
  27. package/dist/esm/types/server/context.js +0 -0
  28. package/dist/esm/types/server/hooks.js +0 -0
  29. package/dist/esm/types/server/index.js +0 -0
  30. package/dist/esm/types/server/plugin.js +0 -0
  31. package/dist/esm-node/cli/api.js +2 -2
  32. package/dist/esm-node/hooks.js +28 -0
  33. package/dist/esm-node/index.js +2 -1
  34. package/dist/esm-node/server/api.js +69 -0
  35. package/dist/esm-node/server/context.js +39 -0
  36. package/dist/esm-node/server/hooks.js +11 -0
  37. package/dist/esm-node/server/index.js +12 -0
  38. package/dist/esm-node/server/run/create.js +51 -0
  39. package/dist/esm-node/server/run/index.js +6 -0
  40. package/dist/esm-node/server/run/types.js +0 -0
  41. package/dist/esm-node/types/server/api.js +0 -0
  42. package/dist/esm-node/types/server/context.js +0 -0
  43. package/dist/esm-node/types/server/hooks.js +0 -0
  44. package/dist/esm-node/types/server/index.js +0 -0
  45. package/dist/esm-node/types/server/plugin.js +0 -0
  46. package/dist/types/hooks.d.ts +2 -1
  47. package/dist/types/index.d.ts +3 -2
  48. package/dist/types/server/api.d.ts +9 -0
  49. package/dist/types/server/context.d.ts +13 -0
  50. package/dist/types/server/hooks.d.ts +9 -0
  51. package/dist/types/server/index.d.ts +4 -0
  52. package/dist/types/server/run/create.d.ts +7 -0
  53. package/dist/types/server/run/index.d.ts +8 -0
  54. package/dist/types/server/run/types.d.ts +21 -0
  55. package/dist/types/types/hooks.d.ts +5 -1
  56. package/dist/types/types/server/api.d.ts +16 -0
  57. package/dist/types/types/server/context.d.ts +28 -0
  58. package/dist/types/types/server/hooks.d.ts +24 -0
  59. package/dist/types/types/server/index.d.ts +4 -0
  60. package/dist/types/types/server/plugin.d.ts +14 -0
  61. package/package.json +14 -3
@@ -11,6 +11,10 @@ export type AsyncInterruptHook<Callback extends (...args: any[]) => any> = {
11
11
  tap: (cb: Callback) => void;
12
12
  call: (...args: Tail<Parameters<Callback>>) => Promise<UnwrapPromise<ReturnType<Callback>>>;
13
13
  };
14
+ export type AsyncPipelineHook<Callback extends (...args: any[]) => any> = {
15
+ tap: (cb: Callback) => void;
16
+ call: (...args: Parameters<Callback>) => Promise<UnwrapPromise<ReturnType<Callback>>>;
17
+ };
14
18
  export type CollectAsyncHook<Callback extends (...params: any[]) => any> = {
15
19
  tap: (cb: Callback) => void;
16
20
  call: (...params: Parameters<Callback>) => Promise<UnwrapPromise<ReturnType<Callback>>[]>;
@@ -19,5 +23,5 @@ export type CollectSyncHook<Callback extends (...params: any[]) => any> = {
19
23
  tap: (cb: Callback) => void;
20
24
  call: (...params: Parameters<Callback>) => ReturnType<Callback>[];
21
25
  };
22
- export type PluginHook<Callback extends (...args: any[]) => any> = SyncHook<Callback> | AsyncHook<Callback> | CollectSyncHook<Callback> | CollectAsyncHook<Callback> | AsyncInterruptHook<Callback>;
26
+ export type PluginHook<Callback extends (...args: any[]) => any> = SyncHook<Callback> | AsyncHook<Callback> | CollectSyncHook<Callback> | CollectAsyncHook<Callback> | AsyncInterruptHook<Callback> | AsyncPipelineHook<Callback>;
23
27
  export type PluginHookTap<T extends (...args: any[]) => any> = (options: T) => void;
@@ -0,0 +1,16 @@
1
+ import type { PluginHook, PluginHookTap } from '../hooks';
2
+ import type { DeepPartial } from '../utils';
3
+ import type { ServerContext } from './context';
4
+ import type { Hooks } from './hooks';
5
+ import type { ServerPluginExtends } from './plugin';
6
+ export type ServerPluginAPI<Extends extends ServerPluginExtends> = Readonly<{
7
+ getServerContext: () => Readonly<ServerContext<Extends>>;
8
+ updateServerContext: (updateContext: DeepPartial<ServerContext<Extends>>) => void;
9
+ getHooks: () => Readonly<Hooks<Extends['config']> & Extends['extendHooks']>;
10
+ getServerConfig: () => Readonly<Extends['config']>;
11
+ } & ServerPluginExtendsAPI<Extends>>;
12
+ export type ServerPluginExtendsAPI<Extends extends ServerPluginExtends> = {
13
+ [K in keyof Extends['extendHooks']]: PluginHookTap<Extends['extendHooks'][K] extends PluginHook<infer Args> ? Args extends (...args: any[]) => any ? Args : (...args: any[]) => any : (...args: any[]) => any>;
14
+ } & Extends['extendApi'];
15
+ export type AllKeysForServerPluginExtendsAPI<Extends extends ServerPluginExtends> = keyof ServerPluginExtendsAPI<Extends>;
16
+ export type AllValueForServerPluginExtendsAPI<Extends extends ServerPluginExtends> = ServerPluginExtendsAPI<Extends>[AllKeysForServerPluginExtendsAPI<Extends>];
@@ -0,0 +1,28 @@
1
+ import type { ISAppContext, ServerRoute } from '@modern-js/types';
2
+ import type { ServerPluginAPI } from './api';
3
+ import type { Hooks } from './hooks';
4
+ import type { ServerPlugin, ServerPluginExtends } from './plugin';
5
+ export interface Middleware {
6
+ name: string;
7
+ }
8
+ export type ServerContext<Extends extends ServerPluginExtends> = Omit<ISAppContext, 'plugins'> & {
9
+ middlewares: Middleware[];
10
+ routes: ServerRoute[];
11
+ appDirectory: string;
12
+ apiDirectory?: string;
13
+ lambdaDirectory?: string;
14
+ internalDirectory?: string;
15
+ sharedDirectory?: string;
16
+ distDirectory?: string;
17
+ metaName: string;
18
+ plugins: ServerPlugin<Extends>[];
19
+ };
20
+ export type InternalServerContext<Extends extends ServerPluginExtends> = ServerContext<Extends> & {
21
+ /** All hooks. */
22
+ hooks: Hooks<Extends['config']> & Extends['extendHooks'];
23
+ /** All plugin registry hooks */
24
+ extendsHooks: Extends['extendHooks'];
25
+ config: Extends['config'];
26
+ pluginAPI?: ServerPluginAPI<Extends>;
27
+ _internalContext?: InternalServerContext<Extends>;
28
+ };
@@ -0,0 +1,24 @@
1
+ import type { AsyncHook } from '../hooks';
2
+ export type ModifyConfigFn<ServerConfig> = (arg: ServerConfig) => ServerConfig | Promise<ServerConfig>;
3
+ export type OnPrepareFn = () => Promise<void> | void;
4
+ export type ChangeEvent = 'add' | 'change' | 'unlink';
5
+ export interface Change {
6
+ filename: string;
7
+ event: ChangeEvent;
8
+ }
9
+ export interface RepackEvent {
10
+ type: 'repack';
11
+ }
12
+ export interface FileChangeEvent {
13
+ type: 'file-change';
14
+ payload: Change[];
15
+ }
16
+ export type ResetEvent = RepackEvent | FileChangeEvent;
17
+ export type OnResetFn = (params: {
18
+ event: ResetEvent;
19
+ }) => Promise<void> | void;
20
+ export type Hooks<ServerConfig> = {
21
+ modifyConfig: AsyncHook<ModifyConfigFn<ServerConfig>>;
22
+ onPrepare: AsyncHook<OnPrepareFn>;
23
+ onReset: AsyncHook<OnResetFn>;
24
+ };
@@ -0,0 +1,4 @@
1
+ export type { ServerPluginAPI } from './api';
2
+ export type { ServerContext, InternalServerContext } from './context';
3
+ export type { ServerPlugin, ServerPluginExtends } from './plugin';
4
+ export type { Hooks, FileChangeEvent, ResetEvent } from './hooks';
@@ -0,0 +1,14 @@
1
+ import type { PluginHook } from '../hooks';
2
+ import type { Plugin } from '../plugin';
3
+ import type { ServerPluginAPI } from './api';
4
+ import type { ServerContext } from './context';
5
+ export interface ServerPluginExtends<Config extends Record<string, any> = {}, ExtendContext extends Record<string, any> = {}, ExtendAPI extends Record<string, any> = {}, ExtendHook extends Record<string, PluginHook<(...args: any[]) => any>> = {}> {
6
+ config?: Config;
7
+ extendContext?: ExtendContext;
8
+ extendApi?: ExtendAPI;
9
+ extendHooks?: ExtendHook;
10
+ }
11
+ /**
12
+ * The type of the Server plugin object.
13
+ */
14
+ export type ServerPlugin<Extends extends ServerPluginExtends> = Plugin<ServerPluginAPI<Extends> & Extends['extendApi'], ServerContext<Extends> & Extends['extendContext']>;
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "2.65.1",
18
+ "version": "2.65.2-alpha.1",
19
19
  "jsnext:source": "./src/index.ts",
20
20
  "types": "./dist/types/index.d.ts",
21
21
  "main": "./dist/cjs/index.js",
@@ -48,6 +48,15 @@
48
48
  "require": "./dist/cjs/runtime/index.js"
49
49
  },
50
50
  "default": "./dist/esm/runtime/index.js"
51
+ },
52
+ "./server": {
53
+ "types": "./dist/types/server/index.d.ts",
54
+ "jsnext:source": "./src/server/index.ts",
55
+ "node": {
56
+ "import": "./dist/esm-node/server/index.js",
57
+ "require": "./dist/cjs/server/index.js"
58
+ },
59
+ "default": "./dist/esm/server/index.js"
51
60
  }
52
61
  },
53
62
  "typesVersions": {
@@ -63,6 +72,9 @@
63
72
  ],
64
73
  "runtime": [
65
74
  "./dist/types/runtime/index.d.ts"
75
+ ],
76
+ "server": [
77
+ "./dist/types/server/index.d.ts"
66
78
  ]
67
79
  }
68
80
  },
@@ -87,8 +99,7 @@
87
99
  "sideEffects": false,
88
100
  "publishConfig": {
89
101
  "registry": "https://registry.npmjs.org/",
90
- "access": "public",
91
- "provenance": true
102
+ "access": "public"
92
103
  },
93
104
  "scripts": {
94
105
  "new": "modern-lib new",