@modern-js/app-tools 2.47.1 → 2.48.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. package/bin/modern.js +7 -1
  2. package/dist/cjs/builder/generator/index.js +3 -2
  3. package/dist/cjs/builder/shared/builderPlugins/adapterSSR.js +2 -1
  4. package/dist/cjs/builder/shared/builderPlugins/adapterWorker.js +49 -0
  5. package/dist/cjs/builder/shared/builderPlugins/index.js +3 -1
  6. package/dist/cjs/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +0 -3
  7. package/dist/cjs/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +2 -5
  8. package/dist/cjs/builder/shared/bundlerPlugins/RouterPlugin.js +1 -8
  9. package/dist/cjs/index.js +5 -5
  10. package/dist/esm/builder/generator/index.js +4 -3
  11. package/dist/esm/builder/shared/builderPlugins/adapterSSR.js +2 -1
  12. package/dist/esm/builder/shared/builderPlugins/adapterWorker.js +41 -0
  13. package/dist/esm/builder/shared/builderPlugins/index.js +1 -0
  14. package/dist/esm/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +35 -43
  15. package/dist/esm/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +24 -32
  16. package/dist/esm/builder/shared/bundlerPlugins/RouterPlugin.js +240 -261
  17. package/dist/esm/index.js +20 -19
  18. package/dist/esm-node/builder/generator/index.js +3 -2
  19. package/dist/esm-node/builder/shared/builderPlugins/adapterSSR.js +2 -1
  20. package/dist/esm-node/builder/shared/builderPlugins/adapterWorker.js +25 -0
  21. package/dist/esm-node/builder/shared/builderPlugins/index.js +1 -0
  22. package/dist/esm-node/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +0 -3
  23. package/dist/esm-node/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +2 -5
  24. package/dist/esm-node/builder/shared/bundlerPlugins/RouterPlugin.js +1 -8
  25. package/dist/esm-node/index.js +6 -6
  26. package/dist/types/builder/shared/builderPlugins/adapterWorker.d.ts +2 -0
  27. package/dist/types/builder/shared/builderPlugins/index.d.ts +1 -0
  28. package/dist/types/config/legacy/index.d.ts +1 -1
  29. package/dist/types/defineConfig.d.ts +1 -1
  30. package/dist/types/types/config/index.d.ts +4 -3
  31. package/dist/types/types/config/tools.d.ts +5 -3
  32. package/dist/types/types/index.d.ts +2 -2
  33. package/package.json +21 -23
@@ -0,0 +1,25 @@
1
+ import { posix } from "path";
2
+ const getDistPath = (outputConfig, type) => {
3
+ const { distPath } = outputConfig;
4
+ const ret = distPath[type];
5
+ if (typeof ret !== "string") {
6
+ throw new Error(`unknown key ${type} in "output.distPath"`);
7
+ }
8
+ return ret;
9
+ };
10
+ const builderPluginAdapterWorker = () => ({
11
+ name: "builder-plugin-adapter-worker",
12
+ setup(api) {
13
+ api.modifyBundlerChain(async (chain, { isServiceWorker }) => {
14
+ const config = api.getNormalizedConfig();
15
+ if (isServiceWorker) {
16
+ const workerPath = getDistPath(config.output, "worker");
17
+ const filename = posix.join(workerPath, `[name].js`);
18
+ chain.output.filename(filename).chunkFilename(filename).libraryTarget("commonjs2");
19
+ }
20
+ });
21
+ }
22
+ });
23
+ export {
24
+ builderPluginAdapterWorker
25
+ };
@@ -1,3 +1,4 @@
1
1
  export * from "./adapterBasic";
2
2
  export * from "./adapterHtml";
3
3
  export * from "./adapterSSR";
4
+ export * from "./adapterWorker";
@@ -1,4 +1,3 @@
1
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
1
  class HtmlAsyncChunkPlugin {
3
2
  apply(compiler) {
4
3
  compiler.hooks.compilation.tap(this.name, (compilation) => {
@@ -22,8 +21,6 @@ class HtmlAsyncChunkPlugin {
22
21
  });
23
22
  }
24
23
  constructor(htmlWebpackPlugin) {
25
- _define_property(this, "name", void 0);
26
- _define_property(this, "htmlWebpackPlugin", void 0);
27
24
  this.name = "HtmlAsyncChunkPlugin";
28
25
  this.htmlWebpackPlugin = htmlWebpackPlugin;
29
26
  }
@@ -1,4 +1,3 @@
1
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
1
  class BottomTemplatePlugin {
3
2
  apply(compiler) {
4
3
  compiler.hooks.compilation.tap(this.name, (compilation) => {
@@ -21,10 +20,8 @@ ${match}`);
21
20
  });
22
21
  }
23
22
  constructor(htmlWebpackPlugin) {
24
- _define_property(this, "htmlWebpackPlugin", void 0);
25
- _define_property(this, "bottomTemplateReg", /<!--<\?-\s*bottomTemplate\s*\?>-->/);
26
- _define_property(this, "bodyRegExp", /(<\/\s*body\s*>)/i);
27
- _define_property(this, "name", void 0);
23
+ this.bottomTemplateReg = /<!--<\?-\s*bottomTemplate\s*\?>-->/;
24
+ this.bodyRegExp = /(<\/\s*body\s*>)/i;
28
25
  this.htmlWebpackPlugin = htmlWebpackPlugin;
29
26
  this.name = "bottom-template";
30
27
  }
@@ -1,4 +1,3 @@
1
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
1
  import { createHash } from "crypto";
3
2
  import { mergeWith } from "@modern-js/utils/lodash";
4
3
  import { ROUTE_MANIFEST_FILE } from "@modern-js/utils";
@@ -206,13 +205,7 @@ class RouterPlugin {
206
205
  });
207
206
  }
208
207
  constructor({ staticJsDir = "static/js", HtmlBundlerPlugin, enableInlineRouteManifests, disableFilenameHash = false, scriptLoading = "defer", nonce }) {
209
- _define_property(this, "name", "RouterPlugin");
210
- _define_property(this, "HtmlBundlerPlugin", void 0);
211
- _define_property(this, "enableInlineRouteManifests", void 0);
212
- _define_property(this, "staticJsDir", void 0);
213
- _define_property(this, "disableFilenameHash", void 0);
214
- _define_property(this, "scriptLoading", void 0);
215
- _define_property(this, "nonce", void 0);
208
+ this.name = "RouterPlugin";
216
209
  this.HtmlBundlerPlugin = HtmlBundlerPlugin;
217
210
  this.enableInlineRouteManifests = enableInlineRouteManifests;
218
211
  this.staticJsDir = staticJsDir;
@@ -1,6 +1,6 @@
1
1
  import path from "path";
2
2
  import { lintPlugin } from "@modern-js/plugin-lint";
3
- import { cleanRequireCache, emptyDir, getCommand, getArgv, fs, NESTED_ROUTE_SPEC_FILE } from "@modern-js/utils";
3
+ import { cleanRequireCache, emptyDir, getCommand, getArgv, fs, NESTED_ROUTE_SPEC_FILE, newAction, upgradeAction } from "@modern-js/utils";
4
4
  import { castArray } from "@modern-js/utils/lodash";
5
5
  import { getLocaleLanguage } from "@modern-js/plugin-i18n/language-detector";
6
6
  import analyzePlugin from "./analyze";
@@ -123,18 +123,18 @@ const appTools = (options = {
123
123
  process.exit(0);
124
124
  });
125
125
  program.command("new").usage("[options]").description(i18n.t(localeKeys.command.new.describe)).option("--config-file <configFile>", i18n.t(localeKeys.command.shared.config)).option("--lang <lang>", i18n.t(localeKeys.command.new.lang)).option("-c, --config <config>", i18n.t(localeKeys.command.new.config)).option("-d, --debug", i18n.t(localeKeys.command.new.debug), false).option("--dist-tag <tag>", i18n.t(localeKeys.command.new.distTag)).option("--registry", i18n.t(localeKeys.command.new.registry)).option("--no-need-install", i18n.t(localeKeys.command.shared.noNeedInstall)).action(async (options2) => {
126
- const { MWANewAction } = await import("@modern-js/new-action");
127
- await MWANewAction({
126
+ await newAction({
128
127
  ...options2,
129
128
  locale: options2.lang || locale
130
- });
129
+ }, "mwa");
131
130
  });
132
131
  program.command("inspect").description("inspect the internal configs").option(`--env <env>`, i18n.t(localeKeys.command.inspect.env), "development").option("--output <output>", i18n.t(localeKeys.command.inspect.output), "/").option("--verbose", i18n.t(localeKeys.command.inspect.verbose)).option("-c --config <config>", i18n.t(localeKeys.command.shared.config)).action(async (options2) => {
133
132
  const { inspect } = await import("./commands/inspect");
134
133
  inspect(api, options2);
135
134
  });
136
- const { defineCommand } = await import("@modern-js/upgrade");
137
- defineCommand(program.command("upgrade").option("-c --config <config>", i18n.t(localeKeys.command.shared.config)).option("--no-need-install", i18n.t(localeKeys.command.shared.noNeedInstall)));
135
+ program.command("upgrade").allowUnknownOption().option("-h --help", "Show help").action(async () => {
136
+ await upgradeAction();
137
+ });
138
138
  },
139
139
  async prepare() {
140
140
  const command = getCommand();
@@ -0,0 +1,2 @@
1
+ import { RsbuildPlugin } from '@rsbuild/shared';
2
+ export declare const builderPluginAdapterWorker: () => RsbuildPlugin;
@@ -1,3 +1,4 @@
1
1
  export * from './adapterBasic';
2
2
  export * from './adapterHtml';
3
3
  export * from './adapterSSR';
4
+ export * from './adapterWorker';
@@ -1,3 +1,3 @@
1
1
  import type { AppLegacyNormalizedConfig, AppLegacyUserConfig, AppNormalizedConfig, AppUserConfig } from '../../types';
2
2
  export declare function transformNormalizedConfig(config: AppLegacyNormalizedConfig): AppNormalizedConfig<'webpack'>;
3
- export declare function checkIsLegacyConfig(config: AppLegacyUserConfig | AppUserConfig): config is AppLegacyUserConfig;
3
+ export declare function checkIsLegacyConfig(config: AppLegacyUserConfig | AppUserConfig<'shared'>): config is AppLegacyUserConfig;
@@ -4,7 +4,7 @@ import type { AppLegacyUserConfig, AppUserConfig } from './types';
4
4
  * This function helps you to autocomplete configuration types.
5
5
  * It accepts a direct config object, or a function that returns a config.
6
6
  */
7
- export declare const defineConfig: <B extends "rspack" | "webpack" = "webpack">(config: UserConfigExport<AppUserConfig<B_1>>) => UserConfigExport<AppUserConfig<B_1>>;
7
+ export declare const defineConfig: <B extends "rspack" | "webpack" = "webpack">(config: UserConfigExport<AppUserConfig<B>>) => UserConfigExport<AppUserConfig<B>>;
8
8
  /**
9
9
  * @deprecated Please use `defineConfig` instead.
10
10
  * `defineLegacyConfig` will be removed in the future major version.
@@ -1,5 +1,6 @@
1
1
  import type { ServerUserConfig, BffUserConfig } from '@modern-js/server-core';
2
2
  import type { UniBuilderPlugin } from '@modern-js/uni-builder';
3
+ import type { Bundler } from '../utils';
3
4
  import type { OutputUserConfig } from './output';
4
5
  import type { SourceUserConfig } from './source';
5
6
  import type { TestingUserConfig } from './testing';
@@ -17,7 +18,7 @@ export interface RuntimeUserConfig {
17
18
  export interface RuntimeByEntriesUserConfig {
18
19
  [name: string]: RuntimeUserConfig;
19
20
  }
20
- export interface AppToolsUserConfig {
21
+ export interface AppToolsUserConfig<B extends Bundler> {
21
22
  server?: ServerUserConfig;
22
23
  source?: SourceUserConfig;
23
24
  output?: OutputUserConfig;
@@ -33,7 +34,7 @@ export interface AppToolsUserConfig {
33
34
  runtime?: RuntimeUserConfig;
34
35
  runtimeByEntries?: RuntimeByEntriesUserConfig;
35
36
  html?: HtmlUserConfig;
36
- tools?: ToolsUserConfig;
37
+ tools?: ToolsUserConfig<B>;
37
38
  security?: SecurityUserConfig;
38
39
  testing?: TestingUserConfig;
39
40
  builderPlugins?: UniBuilderPlugin[];
@@ -44,4 +45,4 @@ interface SharedNormalizedConfig<RawConfig> {
44
45
  cliOptions?: Record<string, any>;
45
46
  _raw: RawConfig;
46
47
  }
47
- export type AppToolsNormalizedConfig<Config = AppToolsUserConfig> = Required<Config> & SharedNormalizedConfig<Config>;
48
+ export type AppToolsNormalizedConfig<Config = AppToolsUserConfig<'shared'>> = Required<Config> & SharedNormalizedConfig<Config>;
@@ -2,9 +2,10 @@ import type { JestConfig } from '@modern-js/types';
2
2
  import type { PluginSwcOptions } from '@rsbuild/plugin-swc';
3
3
  import type { PluginEsbuildOptions } from '@rsbuild/plugin-esbuild';
4
4
  import type { UniBuilderConfig } from '@modern-js/uni-builder';
5
- import type { UnwrapBuilderConfig } from '../utils';
5
+ import type { UnwrapBuilderConfig, Bundler } from '../utils';
6
6
  export type Tailwindcss = Record<string, any> | ((options: Record<string, any>) => Record<string, any> | void);
7
- export interface ToolsUserConfig extends UnwrapBuilderConfig<UniBuilderConfig, 'tools'> {
7
+ type BuilderToolsConfig = UnwrapBuilderConfig<UniBuilderConfig, 'tools'>;
8
+ export interface ToolsUserConfig<B extends Bundler = 'webpack'> extends Omit<BuilderToolsConfig, 'swc'> {
8
9
  /**
9
10
  * Used to custom Tailwind CSS configurations.
10
11
  * @requires `tailwindcss` plugin.
@@ -25,7 +26,7 @@ export interface ToolsUserConfig extends UnwrapBuilderConfig<UniBuilderConfig, '
25
26
  * The configuration of `swc` is provided by `swc` plugin.
26
27
  * Please use `yarn new` or `pnpm new` to enable the corresponding capability.
27
28
  */
28
- swc?: PluginSwcOptions<'outer'>;
29
+ swc?: B extends 'shared' ? undefined : B extends 'webpack' ? PluginSwcOptions<'outer'> : BuilderToolsConfig['swc'];
29
30
  /**
30
31
  * Used to custom Esbuild configurations.
31
32
  * @requires `esbuild` plugin.
@@ -34,3 +35,4 @@ export interface ToolsUserConfig extends UnwrapBuilderConfig<UniBuilderConfig, '
34
35
  */
35
36
  esbuild?: PluginEsbuildOptions;
36
37
  }
38
+ export {};
@@ -12,8 +12,8 @@ export type { ServerUserConfig, ServerNormalizedConfig, BffUserConfig, BffNormal
12
12
  export type { IAppContext, PluginAPI, CliPlugin, NormalizedConfig, UserConfig, } from '@modern-js/core';
13
13
  export type AppTools<B extends Bundler = 'webpack'> = {
14
14
  hooks: AppToolsHooks<B>;
15
- userConfig: AppToolsUserConfig;
16
- normalizedConfig: AppToolsNormalizedConfig<AppToolsUserConfig>;
15
+ userConfig: AppToolsUserConfig<B>;
16
+ normalizedConfig: AppToolsNormalizedConfig<AppToolsUserConfig<'shared'>>;
17
17
  };
18
18
  export type LegacyAppTools = {
19
19
  hooks: AppToolsHooks;
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "2.47.1",
18
+ "version": "2.48.1",
19
19
  "jsnext:source": "./src/index.ts",
20
20
  "types": "./dist/types/index.d.ts",
21
21
  "main": "./dist/cjs/index.js",
@@ -69,39 +69,37 @@
69
69
  "@babel/parser": "^7.22.15",
70
70
  "@babel/traverse": "^7.23.2",
71
71
  "@babel/types": "^7.23.0",
72
- "@rsbuild/plugin-esbuild": "0.4.6",
73
- "@rsbuild/plugin-node-polyfill": "0.4.6",
74
- "@rsbuild/shared": "0.4.6",
75
- "@rsbuild/core": "0.4.6",
72
+ "@rsbuild/plugin-esbuild": "0.4.15",
73
+ "@rsbuild/plugin-node-polyfill": "0.4.15",
74
+ "@rsbuild/shared": "0.4.15",
75
+ "@rsbuild/core": "0.4.15",
76
76
  "es-module-lexer": "^1.1.0",
77
77
  "esbuild": "0.17.19",
78
78
  "@swc/helpers": "0.5.3",
79
- "@modern-js/uni-builder": "2.47.1",
80
- "@modern-js/core": "2.47.1",
81
- "@modern-js/new-action": "2.47.1",
82
- "@modern-js/plugin": "2.47.1",
83
- "@modern-js/plugin-data-loader": "2.47.1",
84
- "@modern-js/node-bundle-require": "2.47.1",
85
- "@modern-js/plugin-i18n": "2.47.1",
86
- "@modern-js/prod-server": "2.47.1",
87
- "@modern-js/server": "2.47.1",
88
- "@modern-js/server-utils": "2.47.1",
89
- "@modern-js/plugin-lint": "2.47.1",
90
- "@modern-js/types": "2.47.1",
91
- "@modern-js/upgrade": "2.47.1",
92
- "@modern-js/utils": "2.47.1",
93
- "@modern-js/server-core": "2.47.1"
79
+ "@modern-js/uni-builder": "2.48.1",
80
+ "@modern-js/core": "2.48.1",
81
+ "@modern-js/plugin": "2.48.1",
82
+ "@modern-js/node-bundle-require": "2.48.1",
83
+ "@modern-js/plugin-data-loader": "2.48.1",
84
+ "@modern-js/plugin-lint": "2.48.1",
85
+ "@modern-js/plugin-i18n": "2.48.1",
86
+ "@modern-js/prod-server": "2.48.1",
87
+ "@modern-js/server": "2.48.1",
88
+ "@modern-js/server-utils": "2.48.1",
89
+ "@modern-js/types": "2.48.1",
90
+ "@modern-js/utils": "2.48.1",
91
+ "@modern-js/server-core": "2.48.1"
94
92
  },
95
93
  "devDependencies": {
96
- "@rsbuild/plugin-swc": "0.4.6",
94
+ "@rsbuild/plugin-swc": "0.4.15",
97
95
  "@types/babel__traverse": "7.18.5",
98
96
  "@types/jest": "^29",
99
97
  "@types/node": "^14",
100
98
  "jest": "^29",
101
99
  "typescript": "^5",
102
100
  "webpack": "^5.89.0",
103
- "@scripts/build": "2.47.1",
104
- "@scripts/jest-config": "2.47.1"
101
+ "@scripts/build": "2.48.1",
102
+ "@scripts/jest-config": "2.48.1"
105
103
  },
106
104
  "sideEffects": false,
107
105
  "publishConfig": {