@modern-js/plugin-v2 0.0.0-nightly-20241126170728 → 2.63.0

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.
@@ -26,7 +26,7 @@ function initPluginAPI({ context }) {
26
26
  const { hooks, extendsHooks, plugins } = context;
27
27
  function getAppContext() {
28
28
  if (context) {
29
- const { hooks: hooks2, config, normalizedConfig, pluginAPI, ...appContext } = context;
29
+ const { hooks: hooks2, extendsHooks: extendsHooks2, config, normalizedConfig, pluginAPI, ...appContext } = context;
30
30
  appContext._internalContext = context;
31
31
  return appContext;
32
32
  }
@@ -57,9 +57,11 @@ function initPluginAPI({ context }) {
57
57
  });
58
58
  }
59
59
  });
60
- Object.keys(extendsHooks).forEach((hookName) => {
61
- extendsPluginApi[hookName] = extendsHooks[hookName].tap;
62
- });
60
+ if (extendsHooks) {
61
+ Object.keys(extendsHooks).forEach((hookName) => {
62
+ extendsPluginApi[hookName] = extendsHooks[hookName].tap;
63
+ });
64
+ }
63
65
  function updateAppContext(updateContext) {
64
66
  context = (0, import_lodash.merge)(context, updateContext);
65
67
  }
@@ -19,6 +19,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  var cli_exports = {};
20
20
  __export(cli_exports, {
21
21
  cli: () => import_run.cli,
22
+ createContext: () => import_context.createContext,
22
23
  createLoadedConfig: () => import_run.createLoadedConfig,
23
24
  initAppContext: () => import_context.initAppContext,
24
25
  initAppDir: () => import_run.initAppDir,
@@ -33,6 +34,7 @@ var import_run = require("./run");
33
34
  // Annotate the CommonJS export names for ESM import in node:
34
35
  0 && (module.exports = {
35
36
  cli,
37
+ createContext,
36
38
  createLoadedConfig,
37
39
  initAppContext,
38
40
  initAppDir,
@@ -3,7 +3,7 @@ function initPluginAPI({ context }) {
3
3
  const { hooks, extendsHooks, plugins } = context;
4
4
  function getAppContext() {
5
5
  if (context) {
6
- const { hooks: hooks2, config, normalizedConfig, pluginAPI, ...appContext } = context;
6
+ const { hooks: hooks2, extendsHooks: extendsHooks2, config, normalizedConfig, pluginAPI, ...appContext } = context;
7
7
  appContext._internalContext = context;
8
8
  return appContext;
9
9
  }
@@ -34,9 +34,11 @@ function initPluginAPI({ context }) {
34
34
  });
35
35
  }
36
36
  });
37
- Object.keys(extendsHooks).forEach((hookName) => {
38
- extendsPluginApi[hookName] = extendsHooks[hookName].tap;
39
- });
37
+ if (extendsHooks) {
38
+ Object.keys(extendsHooks).forEach((hookName) => {
39
+ extendsPluginApi[hookName] = extendsHooks[hookName].tap;
40
+ });
41
+ }
40
42
  function updateAppContext(updateContext) {
41
43
  context = merge(context, updateContext);
42
44
  }
@@ -1,9 +1,10 @@
1
1
  import { initPluginAPI } from "./api";
2
- import { initAppContext } from "./context";
2
+ import { initAppContext, createContext } from "./context";
3
3
  import { initHooks } from "./hooks";
4
4
  import { cli, createLoadedConfig, initAppDir } from "./run";
5
5
  export {
6
6
  cli,
7
+ createContext,
7
8
  createLoadedConfig,
8
9
  initAppContext,
9
10
  initAppDir,
@@ -1,7 +1,8 @@
1
1
  import type { CLIPluginAPI } from '../types/cli/api';
2
2
  import type { InternalContext } from '../types/cli/context';
3
+ import type { CLIPluginExtends } from '../types/cli/plugin';
3
4
  import type { PluginManager } from '../types/plugin';
4
- export declare function initPluginAPI<Config, NormalizedConfig, ExtendsHooksKey extends string>({ context, }: {
5
- context: InternalContext<Config, NormalizedConfig, ExtendsHooksKey>;
5
+ export declare function initPluginAPI<Extends extends CLIPluginExtends>({ context, }: {
6
+ context: InternalContext<Extends>;
6
7
  pluginManager: PluginManager;
7
- }): CLIPluginAPI<Config, NormalizedConfig>;
8
+ }): CLIPluginAPI<Extends>;
@@ -1,18 +1,18 @@
1
1
  import type { AppContext, InternalContext } from '../types/cli/context';
2
- import type { CLIPlugin } from '../types/cli/plugin';
3
- interface ContextParams<Config, NormalizedConfig> {
4
- appContext: AppContext<Config, NormalizedConfig>;
5
- config: Config;
6
- normalizedConfig: NormalizedConfig;
2
+ import type { CLIPlugin, CLIPluginExtends } from '../types/cli/plugin';
3
+ interface ContextParams<Extends extends CLIPluginExtends> {
4
+ appContext: AppContext<Extends>;
5
+ config: Extends['config'];
6
+ normalizedConfig: Extends['normalizedConfig'];
7
7
  }
8
- export declare function initAppContext<Config, NormalizedConfig>(params: {
8
+ export declare function initAppContext<Extends extends CLIPluginExtends>(params: {
9
9
  packageName: string;
10
10
  configFile: string;
11
11
  command: string;
12
12
  appDirectory: string;
13
- plugins: CLIPlugin<Config, NormalizedConfig>[];
13
+ plugins: CLIPlugin<Extends>[];
14
14
  srcDir?: string;
15
15
  distDir?: string;
16
- }): AppContext<Config, NormalizedConfig>;
17
- export declare function createContext<Config, NormalizedConfig, ExtendsHooksKey extends string>({ appContext, config, normalizedConfig, }: ContextParams<Config, NormalizedConfig>): Promise<InternalContext<Config, NormalizedConfig, ExtendsHooksKey>>;
16
+ }): AppContext<Extends>;
17
+ export declare function createContext<Extends extends CLIPluginExtends>({ appContext, config, normalizedConfig, }: ContextParams<Extends>): Promise<InternalContext<Extends>>;
18
18
  export {};
@@ -5,35 +5,35 @@ export declare function initHooks<Config, NormalizedConfig>(): {
5
5
  /**
6
6
  * add config for this cli plugin
7
7
  */
8
- config: import("../types").CollectAsyncHook<ConfigFn<DeepPartial<Config>>>;
8
+ config: import("..").CollectAsyncHook<ConfigFn<DeepPartial<Config>>>;
9
9
  /**
10
10
  * @private
11
11
  * modify config for this cli plugin
12
12
  */
13
- modifyConfig: import("../types").AsyncHook<ModifyConfigFn<Config>>;
13
+ modifyConfig: import("..").AsyncHook<ModifyConfigFn<Config>>;
14
14
  /**
15
15
  * modify final config
16
16
  */
17
- modifyResolvedConfig: import("../types").AsyncHook<ModifyResolvedConfigFn<NormalizedConfig>>;
18
- modifyRsbuildConfig: import("../types").AsyncHook<ModifyRsbuildConfigFn>;
19
- modifyBundlerChain: import("../types").AsyncHook<ModifyBundlerChainFn>;
20
- modifyRspackConfig: import("../types").AsyncHook<ModifyRspackConfigFn>;
21
- modifyWebpackChain: import("../types").AsyncHook<ModifyWebpackChainFn>;
22
- modifyWebpackConfig: import("../types").AsyncHook<ModifyWebpackConfigFn>;
23
- modifyHtmlPartials: import("../types").AsyncHook<ModifyHtmlPartialsFn>;
24
- addCommand: import("../types").AsyncHook<AddCommandFn>;
25
- addWatchFiles: import("../types").CollectAsyncHook<AddWatchFilesFn>;
26
- onPrepare: import("../types").AsyncHook<OnPrepareFn>;
27
- onFileChanged: import("../types").AsyncHook<OnFileChangedFn>;
28
- onBeforeRestart: import("../types").AsyncHook<OnBeforeRestartFn>;
29
- onBeforeCreateCompiler: import("../types").AsyncHook<OnBeforeCreateCompilerFn>;
30
- onAfterCreateCompiler: import("../types").AsyncHook<OnAfterCreateCompilerFn>;
31
- onBeforeBuild: import("../types").AsyncHook<OnBeforeBuildFn>;
32
- onAfterBuild: import("../types").AsyncHook<OnAfterBuildFn>;
33
- onBeforeDev: import("../types").AsyncHook<OnBeforeDevFn>;
34
- onAfterDev: import("../types").AsyncHook<OnAfterDevFn>;
35
- onBeforeDeploy: import("../types").AsyncHook<OnBeforeDeployFn>;
36
- onAfterDeploy: import("../types").AsyncHook<OnAfterDeployFn>;
37
- onBeforeExit: import("../types").AsyncHook<OnBeforeExitFn>;
17
+ modifyResolvedConfig: import("..").AsyncHook<ModifyResolvedConfigFn<NormalizedConfig>>;
18
+ modifyRsbuildConfig: import("..").AsyncHook<ModifyRsbuildConfigFn>;
19
+ modifyBundlerChain: import("..").AsyncHook<ModifyBundlerChainFn>;
20
+ modifyRspackConfig: import("..").AsyncHook<ModifyRspackConfigFn>;
21
+ modifyWebpackChain: import("..").AsyncHook<ModifyWebpackChainFn>;
22
+ modifyWebpackConfig: import("..").AsyncHook<ModifyWebpackConfigFn>;
23
+ modifyHtmlPartials: import("..").AsyncHook<ModifyHtmlPartialsFn>;
24
+ addCommand: import("..").AsyncHook<AddCommandFn>;
25
+ addWatchFiles: import("..").CollectAsyncHook<AddWatchFilesFn>;
26
+ onPrepare: import("..").AsyncHook<OnPrepareFn>;
27
+ onFileChanged: import("..").AsyncHook<OnFileChangedFn>;
28
+ onBeforeRestart: import("..").AsyncHook<OnBeforeRestartFn>;
29
+ onBeforeCreateCompiler: import("..").AsyncHook<OnBeforeCreateCompilerFn>;
30
+ onAfterCreateCompiler: import("..").AsyncHook<OnAfterCreateCompilerFn>;
31
+ onBeforeBuild: import("..").AsyncHook<OnBeforeBuildFn>;
32
+ onAfterBuild: import("..").AsyncHook<OnAfterBuildFn>;
33
+ onBeforeDev: import("..").AsyncHook<OnBeforeDevFn>;
34
+ onAfterDev: import("..").AsyncHook<OnAfterDevFn>;
35
+ onBeforeDeploy: import("..").AsyncHook<OnBeforeDeployFn>;
36
+ onAfterDeploy: import("..").AsyncHook<OnAfterDeployFn>;
37
+ onBeforeExit: import("..").AsyncHook<OnBeforeExitFn>;
38
38
  };
39
39
  export type Hooks<Config, NormalizedConfig> = ReturnType<typeof initHooks<Config, NormalizedConfig>>;
@@ -1,4 +1,4 @@
1
1
  export { initPluginAPI } from './api';
2
- export { initAppContext } from './context';
2
+ export { initAppContext, createContext } from './context';
3
3
  export { initHooks } from './hooks';
4
4
  export { cli, createLoadedConfig, initAppDir } from './run';
@@ -1,7 +1,8 @@
1
+ import type { CLIPluginExtends } from '../../types/cli/plugin';
1
2
  import type { CLIRunOptions } from './types';
2
- export declare const createCli: <Config, NormalizedConfig, ExtendsHooksKey extends string>() => {
3
+ export declare const createCli: <Extends extends CLIPluginExtends>() => {
3
4
  init: (options: CLIRunOptions) => Promise<{
4
- appContext: import("../../types").InternalContext<Config, NormalizedConfig, ExtendsHooksKey>;
5
+ appContext: import("../..").InternalContext<Extends>;
5
6
  }>;
6
7
  run: (options: CLIRunOptions) => Promise<void>;
7
8
  getPrevInitOptions: () => CLIRunOptions;
@@ -2,7 +2,7 @@ export { createLoadedConfig } from './config/createLoadedConfig';
2
2
  export { initAppDir } from './utils/initAppDir';
3
3
  export declare const cli: {
4
4
  init: (options: import("./types").CLIRunOptions) => Promise<{
5
- appContext: import("../../types").InternalContext<unknown, unknown, string>;
5
+ appContext: import("../..").InternalContext<import("../..").CLIPluginExtends<{}, {}, {}, {}, {}>>;
6
6
  }>;
7
7
  run: (options: import("./types").CLIRunOptions) => Promise<void>;
8
8
  getPrevInitOptions: () => import("./types").CLIRunOptions;
@@ -1,2 +1,3 @@
1
1
  import type { InternalContext } from '../../../types';
2
- export declare const createFileWatcher: <Config, NormalizedConfig, ExtendsHooksKey extends string>(appContext: InternalContext<Config, NormalizedConfig, ExtendsHooksKey>) => Promise<import("@modern-js/utils").FSWatcher | undefined>;
2
+ import type { CLIPluginExtends } from '../../../types/cli/plugin';
3
+ export declare const createFileWatcher: <Extends extends CLIPluginExtends>(appContext: InternalContext<Extends>) => Promise<import("@modern-js/utils").FSWatcher | undefined>;
@@ -1,2 +1,5 @@
1
1
  export { createPluginManager } from './manager';
2
2
  export { createAsyncHook, createCollectAsyncHook } from './hooks';
3
+ export type { Plugin, PluginManager, TransformFunction, } from './types/plugin';
4
+ export type { CLIPluginAPI, AppContext, InternalContext, Entrypoint, CLIPlugin, CLIPluginExtends, } from './types/cli';
5
+ export type { AsyncHook, CollectAsyncHook, PluginHook, PluginHookTap, } from './types/hooks';
@@ -1,21 +1,22 @@
1
1
  import type { ModifyBundlerChainFn, ModifyRsbuildConfigFn, ModifyRspackConfigFn, ModifyWebpackChainFn, ModifyWebpackConfigFn, OnAfterBuildFn, OnAfterCreateCompilerFn, OnBeforeBuildFn, OnBeforeCreateCompilerFn } from '@rsbuild/core';
2
2
  import type { Hooks } from '../../cli/hooks';
3
- import type { PluginHook, PluginHookTap } from '../hooks';
3
+ import type { PluginHookTap } from '../hooks';
4
4
  import type { DeepPartial } from '../utils';
5
5
  import type { AppContext } from './context';
6
6
  import type { AddCommandFn, AddWatchFilesFn, ConfigFn, ModifyConfigFn, ModifyHtmlPartialsFn, ModifyResolvedConfigFn, OnAfterDeployFn, OnAfterDevFn, OnBeforeDeployFn, OnBeforeDevFn, OnBeforeExitFn, OnBeforeRestartFn, OnFileChangedFn, OnPrepareFn } from './hooks';
7
+ import type { CLIPluginExtends } from './plugin';
7
8
  /**
8
9
  * Define a generic CLI plugin API that provider can extend as needed.
9
10
  */
10
- export type CLIPluginAPI<Config, NormalizedConfig> = Readonly<{
11
- getAppContext: () => Readonly<AppContext<Config, NormalizedConfig>>;
12
- getConfig: () => Readonly<Config>;
13
- getNormalizedConfig: () => Readonly<NormalizedConfig>;
14
- getHooks: () => Readonly<Hooks<Config, NormalizedConfig> & Record<string, PluginHook<(...args: any[]) => any>>>;
15
- updateAppContext: (appContext: DeepPartial<AppContext<Config, NormalizedConfig>>) => void;
16
- config: PluginHookTap<ConfigFn<DeepPartial<Config>>>;
17
- modifyConfig: PluginHookTap<ModifyConfigFn<Config>>;
18
- modifyResolvedConfig: PluginHookTap<ModifyResolvedConfigFn<NormalizedConfig>>;
11
+ export type CLIPluginAPI<Extends extends CLIPluginExtends> = Readonly<{
12
+ getAppContext: () => Readonly<AppContext<Extends> & Extends['extendContext']>;
13
+ getConfig: () => Readonly<Extends['config']>;
14
+ getNormalizedConfig: () => Readonly<Extends['normalizedConfig']>;
15
+ getHooks: () => Readonly<Hooks<Extends['config'], Extends['normalizedConfig']> & Extends['extendHooks']>;
16
+ updateAppContext: (appContext: DeepPartial<AppContext<Extends>>) => void;
17
+ config: PluginHookTap<ConfigFn<DeepPartial<Extends['config']>>>;
18
+ modifyConfig: PluginHookTap<ModifyConfigFn<Extends['config']>>;
19
+ modifyResolvedConfig: PluginHookTap<ModifyResolvedConfigFn<Extends['normalizedConfig']>>;
19
20
  modifyRsbuildConfig: PluginHookTap<ModifyRsbuildConfigFn>;
20
21
  modifyBundlerChain: PluginHookTap<ModifyBundlerChainFn>;
21
22
  /** Only works when bundler is Rspack */
@@ -1,15 +1,14 @@
1
1
  import type { ServerRoute } from '@modern-js/types';
2
2
  import type { UniBuilderInstance, UniBuilderWebpackInstance } from '@modern-js/uni-builder';
3
3
  import type { Hooks } from '../../cli/hooks';
4
- import type { PluginHook } from '../hooks';
5
4
  import type { CLIPluginAPI } from './api';
6
- import type { CLIPlugin } from './plugin';
5
+ import type { CLIPlugin, CLIPluginExtends } from './plugin';
7
6
  export interface Entrypoint {
8
7
  name: string;
9
8
  entry: string;
10
9
  }
11
10
  /** The public context */
12
- export type AppContext<Config, NormalizedConfig> = {
11
+ export type AppContext<Extends extends CLIPluginExtends> = {
13
12
  packageName: string;
14
13
  configFile: string;
15
14
  command: string;
@@ -18,7 +17,7 @@ export type AppContext<Config, NormalizedConfig> = {
18
17
  srcDirectory?: string;
19
18
  distDirectory?: string;
20
19
  nodeModulesDirectory?: string;
21
- plugins: CLIPlugin<Config, NormalizedConfig>[];
20
+ plugins: CLIPlugin<Extends>[];
22
21
  bundlerType?: 'webpack' | 'rspack' | 'esbuild';
23
22
  builder?: UniBuilderInstance | UniBuilderWebpackInstance;
24
23
  port?: number;
@@ -27,15 +26,15 @@ export type AppContext<Config, NormalizedConfig> = {
27
26
  serverRoutes?: ServerRoute[];
28
27
  };
29
28
  /** The inner context. */
30
- export type InternalContext<Config, NormalizedConfig, ExtendsHooksKey extends string> = AppContext<Config, NormalizedConfig> & {
29
+ export type InternalContext<Extends extends CLIPluginExtends> = AppContext<Extends> & {
31
30
  /** All hooks. */
32
- hooks: Hooks<Config, NormalizedConfig> & Record<ExtendsHooksKey, PluginHook<(...args: any[]) => any>>;
31
+ hooks: Hooks<Extends['config'], Extends['normalizedConfig']> & Extends['extendHooks'];
33
32
  /** All plugin registry hooks */
34
- extendsHooks: Record<ExtendsHooksKey, PluginHook<(...args: any[]) => any>>;
33
+ extendsHooks: Extends['extendHooks'];
35
34
  /** Current App config. */
36
- config: Readonly<Config>;
35
+ config: Readonly<Extends['config']>;
37
36
  /** The normalized Rsbuild config. */
38
- normalizedConfig?: NormalizedConfig;
39
- pluginAPI?: CLIPluginAPI<Config, NormalizedConfig> & Record<string, (...args: any[]) => any>;
40
- _internalContext?: InternalContext<Config, NormalizedConfig, ExtendsHooksKey>;
37
+ normalizedConfig?: Extends['normalizedConfig'];
38
+ pluginAPI?: CLIPluginAPI<Extends> & Record<string, (...args: any[]) => any>;
39
+ _internalContext?: InternalContext<Extends>;
41
40
  };
@@ -1,3 +1,3 @@
1
1
  export type { CLIPluginAPI } from './api';
2
2
  export type { AppContext, InternalContext, Entrypoint } from './context';
3
- export type { CLIPlugin } from './plugin';
3
+ export type { CLIPlugin, CLIPluginExtends } from './plugin';
@@ -1,6 +1,15 @@
1
+ import type { PluginHook } from '../hooks';
1
2
  import type { Plugin } from '../plugin';
2
3
  import type { CLIPluginAPI } from './api';
4
+ import type { AppContext } from './context';
5
+ export interface CLIPluginExtends<Config extends Record<string, any> = {}, NormalizedConfig 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
+ normalizedConfig?: NormalizedConfig;
8
+ extendContext?: ExtendContext;
9
+ extendApi?: ExtendAPI;
10
+ extendHooks?: ExtendHook;
11
+ }
3
12
  /**
4
13
  * The type of the CLI plugin object.
5
14
  */
6
- export type CLIPlugin<Config, NormalizedConfig> = Plugin<CLIPluginAPI<Config, NormalizedConfig>>;
15
+ export type CLIPlugin<Extends extends CLIPluginExtends> = Plugin<CLIPluginAPI<Extends> & Extends['extendApi'], AppContext<Extends> & Extends['extendContext']>;
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "0.0.0-nightly-20241126170728",
18
+ "version": "2.63.0",
19
19
  "jsnext:source": "./src/index.ts",
20
20
  "types": "./dist/types/index.d.ts",
21
21
  "main": "./dist/cjs/index.js",
@@ -51,9 +51,6 @@
51
51
  ".": [
52
52
  "./dist/index.d.ts"
53
53
  ],
54
- "types": [
55
- "./dist/types/types/index.d.ts"
56
- ],
57
54
  "run": [
58
55
  "./dist/types/cli/run/run.d.ts"
59
56
  ],
@@ -64,8 +61,8 @@
64
61
  },
65
62
  "dependencies": {
66
63
  "@swc/helpers": "0.5.13",
67
- "@modern-js/utils": "0.0.0-nightly-20241126170728",
68
- "@modern-js/node-bundle-require": "0.0.0-nightly-20241126170728"
64
+ "@modern-js/utils": "2.63.0",
65
+ "@modern-js/node-bundle-require": "2.63.0"
69
66
  },
70
67
  "devDependencies": {
71
68
  "@rsbuild/core": "~1.1.5",
@@ -73,10 +70,10 @@
73
70
  "@types/node": "^14",
74
71
  "jest": "^29",
75
72
  "typescript": "^5",
76
- "@modern-js/uni-builder": "0.0.0-nightly-20241126170728",
77
- "@modern-js/types": "0.0.0-nightly-20241126170728",
78
- "@scripts/build": "0.0.0-nightly-20241126170728",
79
- "@scripts/jest-config": "0.0.0-nightly-20241126170728"
73
+ "@modern-js/uni-builder": "2.63.0",
74
+ "@modern-js/types": "2.63.0",
75
+ "@scripts/build": "2.63.0",
76
+ "@scripts/jest-config": "2.63.0"
80
77
  },
81
78
  "sideEffects": false,
82
79
  "publishConfig": {