@modern-js/app-tools 2.15.0 → 2.17.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.
- package/CHANGELOG.md +68 -0
- package/dist/cjs/analyze/constants.js +37 -61
- package/dist/cjs/analyze/generateCode.js +102 -127
- package/dist/cjs/analyze/getBundleEntry.js +33 -66
- package/dist/cjs/analyze/getClientRoutes/getRoutes.js +61 -117
- package/dist/cjs/analyze/getClientRoutes/getRoutesLegacy.js +61 -115
- package/dist/cjs/analyze/getClientRoutes/index.js +15 -28
- package/dist/cjs/analyze/getClientRoutes/utils.js +24 -48
- package/dist/cjs/analyze/getFileSystemEntry.js +39 -79
- package/dist/cjs/analyze/getHtmlTemplate.js +88 -98
- package/dist/cjs/analyze/getServerRoutes.js +67 -110
- package/dist/cjs/analyze/index.js +265 -257
- package/dist/cjs/analyze/isDefaultExportFunction.js +66 -44
- package/dist/cjs/analyze/makeLegalIdentifier.js +7 -25
- package/dist/cjs/analyze/nestedRoutes.js +99 -104
- package/dist/cjs/analyze/templates.js +49 -110
- package/dist/cjs/analyze/utils.js +98 -102
- package/dist/cjs/builder/builder-rspack/adapterCopy.js +58 -100
- package/dist/cjs/builder/builder-rspack/index.js +14 -30
- package/dist/cjs/builder/builder-webpack/adapterModern.js +33 -50
- package/dist/cjs/builder/builder-webpack/createCopyPattern.js +16 -32
- package/dist/cjs/builder/builder-webpack/index.js +65 -46
- package/dist/cjs/builder/generator/createBuilderOptions.js +10 -26
- package/dist/cjs/builder/generator/createBuilderProviderConfig.js +11 -27
- package/dist/cjs/builder/generator/getBuilderTargets.js +13 -29
- package/dist/cjs/builder/generator/index.js +61 -55
- package/dist/cjs/builder/index.js +53 -43
- package/dist/cjs/builder/shared/builderPlugins/adapterBasic.js +13 -36
- package/dist/cjs/builder/shared/builderPlugins/adapterHtml.js +90 -90
- package/dist/cjs/builder/shared/builderPlugins/adapterSSR.js +108 -111
- package/dist/cjs/builder/shared/builderPlugins/index.js +20 -19
- package/dist/cjs/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +30 -30
- package/dist/cjs/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +32 -38
- package/dist/cjs/builder/shared/bundlerPlugins/RouterPlugin.js +86 -116
- package/dist/cjs/builder/shared/bundlerPlugins/index.js +20 -19
- package/dist/cjs/builder/shared/createCopyInfo.js +16 -42
- package/dist/cjs/builder/shared/index.js +20 -19
- package/dist/cjs/builder/shared/loaders/serverModuleLoader.js +8 -24
- package/dist/cjs/builder/shared/types.js +4 -15
- package/dist/cjs/commands/build.js +23 -40
- package/dist/cjs/commands/deploy.js +7 -25
- package/dist/cjs/commands/dev.js +38 -57
- package/dist/cjs/commands/index.js +20 -19
- package/dist/cjs/commands/inspect.js +10 -30
- package/dist/cjs/commands/serve.js +28 -66
- package/dist/cjs/config/default.js +34 -34
- package/dist/cjs/config/index.js +20 -19
- package/dist/cjs/config/initialize/index.js +11 -29
- package/dist/cjs/config/initialize/inits.js +103 -82
- package/dist/cjs/config/legacy/createHtmlConfig.js +8 -40
- package/dist/cjs/config/legacy/createOutputConfig.js +8 -51
- package/dist/cjs/config/legacy/createSourceConfig.js +8 -38
- package/dist/cjs/config/legacy/createToolsConfig.js +8 -43
- package/dist/cjs/config/legacy/index.js +22 -46
- package/dist/cjs/defineConfig.js +16 -31
- package/dist/cjs/exports/server.js +7 -25
- package/dist/cjs/hooks.js +33 -51
- package/dist/cjs/index.js +185 -166
- package/dist/cjs/initialize/index.js +84 -100
- package/dist/cjs/locale/en.js +13 -27
- package/dist/cjs/locale/index.js +18 -28
- package/dist/cjs/locale/zh.js +13 -27
- package/dist/cjs/schema/Schema.js +27 -31
- package/dist/cjs/schema/index.js +141 -71
- package/dist/cjs/schema/legacy.js +273 -96
- package/dist/cjs/types/config/deploy.js +4 -15
- package/dist/cjs/types/config/dev.js +4 -15
- package/dist/cjs/types/config/experiments.js +4 -15
- package/dist/cjs/types/config/html.js +4 -15
- package/dist/cjs/types/config/index.js +18 -17
- package/dist/cjs/types/config/output.js +4 -15
- package/dist/cjs/types/config/performance.js +4 -15
- package/dist/cjs/types/config/security.js +4 -15
- package/dist/cjs/types/config/source.js +4 -15
- package/dist/cjs/types/config/tools.js +4 -15
- package/dist/cjs/types/hooks.js +4 -15
- package/dist/cjs/types/index.js +20 -19
- package/dist/cjs/types/legacyConfig/deploy.js +4 -15
- package/dist/cjs/types/legacyConfig/dev.js +4 -15
- package/dist/cjs/types/legacyConfig/index.js +4 -15
- package/dist/cjs/types/legacyConfig/output.js +4 -15
- package/dist/cjs/types/legacyConfig/source.js +4 -15
- package/dist/cjs/types/legacyConfig/tools.js +4 -15
- package/dist/cjs/types/utils.js +4 -15
- package/dist/cjs/utils/config.js +74 -79
- package/dist/cjs/utils/createServer.js +16 -42
- package/dist/cjs/utils/env.js +7 -25
- package/dist/cjs/utils/generateWatchFiles.js +31 -52
- package/dist/cjs/utils/getSelectedEntries.js +13 -35
- package/dist/cjs/utils/getServerInternalPlugins.js +8 -29
- package/dist/cjs/utils/printInstructions.js +10 -28
- package/dist/cjs/utils/restart.js +13 -31
- package/dist/cjs/utils/routes.js +18 -39
- package/dist/cjs/utils/types.js +4 -15
- package/dist/esm/analyze/constants.js +40 -41
- package/dist/esm/analyze/generateCode.js +477 -455
- package/dist/esm/analyze/getBundleEntry.js +53 -54
- package/dist/esm/analyze/getClientRoutes/getRoutes.js +201 -202
- package/dist/esm/analyze/getClientRoutes/getRoutesLegacy.js +199 -200
- package/dist/esm/analyze/getClientRoutes/index.js +2 -3
- package/dist/esm/analyze/getClientRoutes/utils.js +15 -15
- package/dist/esm/analyze/getFileSystemEntry.js +86 -87
- package/dist/esm/analyze/getHtmlTemplate.js +289 -278
- package/dist/esm/analyze/getServerRoutes.js +203 -190
- package/dist/esm/analyze/index.js +679 -651
- package/dist/esm/analyze/isDefaultExportFunction.js +38 -39
- package/dist/esm/analyze/makeLegalIdentifier.js +8 -9
- package/dist/esm/analyze/nestedRoutes.js +400 -392
- package/dist/esm/analyze/templates.js +536 -509
- package/dist/esm/analyze/utils.js +357 -336
- package/dist/esm/builder/builder-rspack/adapterCopy.js +347 -330
- package/dist/esm/builder/builder-rspack/index.js +8 -9
- package/dist/esm/builder/builder-webpack/adapterModern.js +51 -43
- package/dist/esm/builder/builder-webpack/createCopyPattern.js +31 -32
- package/dist/esm/builder/builder-webpack/index.js +266 -249
- package/dist/esm/builder/generator/createBuilderOptions.js +37 -38
- package/dist/esm/builder/generator/createBuilderProviderConfig.js +62 -63
- package/dist/esm/builder/generator/getBuilderTargets.js +13 -14
- package/dist/esm/builder/generator/index.js +203 -196
- package/dist/esm/builder/index.js +183 -176
- package/dist/esm/builder/shared/builderPlugins/adapterBasic.js +90 -91
- package/dist/esm/builder/shared/builderPlugins/adapterHtml.js +300 -291
- package/dist/esm/builder/shared/builderPlugins/adapterSSR.js +337 -329
- package/dist/esm/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +108 -97
- package/dist/esm/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +66 -64
- package/dist/esm/builder/shared/bundlerPlugins/RouterPlugin.js +364 -337
- package/dist/esm/builder/shared/createCopyInfo.js +9 -10
- package/dist/esm/builder/shared/loaders/serverModuleLoader.js +2 -3
- package/dist/esm/builder/shared/types.js +1 -1
- package/dist/esm/commands/build.js +279 -272
- package/dist/esm/commands/deploy.js +150 -144
- package/dist/esm/commands/dev.js +296 -289
- package/dist/esm/commands/inspect.js +144 -138
- package/dist/esm/commands/serve.js +241 -235
- package/dist/esm/config/default.js +202 -203
- package/dist/esm/config/initialize/index.js +7 -8
- package/dist/esm/config/initialize/inits.js +189 -181
- package/dist/esm/config/legacy/createHtmlConfig.js +17 -18
- package/dist/esm/config/legacy/createOutputConfig.js +41 -42
- package/dist/esm/config/legacy/createSourceConfig.js +38 -39
- package/dist/esm/config/legacy/createToolsConfig.js +24 -25
- package/dist/esm/config/legacy/index.js +31 -32
- package/dist/esm/defineConfig.js +52 -53
- package/dist/esm/exports/server.js +1 -2
- package/dist/esm/hooks.js +26 -27
- package/dist/esm/index.js +685 -671
- package/dist/esm/initialize/index.js +276 -269
- package/dist/esm/locale/en.js +36 -37
- package/dist/esm/locale/index.js +2 -2
- package/dist/esm/locale/zh.js +36 -37
- package/dist/esm/schema/Schema.js +255 -244
- package/dist/esm/schema/index.js +165 -165
- package/dist/esm/schema/legacy.js +316 -317
- package/dist/esm/types/config/deploy.js +1 -1
- package/dist/esm/types/config/dev.js +1 -1
- package/dist/esm/types/config/experiments.js +1 -1
- package/dist/esm/types/config/html.js +1 -1
- package/dist/esm/types/config/output.js +1 -1
- package/dist/esm/types/config/performance.js +1 -1
- package/dist/esm/types/config/security.js +1 -1
- package/dist/esm/types/config/source.js +1 -1
- package/dist/esm/types/config/tools.js +1 -1
- package/dist/esm/types/hooks.js +1 -1
- package/dist/esm/types/legacyConfig/deploy.js +1 -1
- package/dist/esm/types/legacyConfig/dev.js +1 -1
- package/dist/esm/types/legacyConfig/index.js +1 -1
- package/dist/esm/types/legacyConfig/output.js +1 -1
- package/dist/esm/types/legacyConfig/source.js +1 -1
- package/dist/esm/types/legacyConfig/tools.js +1 -1
- package/dist/esm/types/utils.js +1 -1
- package/dist/esm/utils/config.js +285 -278
- package/dist/esm/utils/createServer.js +242 -234
- package/dist/esm/utils/env.js +11 -12
- package/dist/esm/utils/generateWatchFiles.js +205 -190
- package/dist/esm/utils/getSelectedEntries.js +180 -173
- package/dist/esm/utils/getServerInternalPlugins.js +197 -191
- package/dist/esm/utils/printInstructions.js +147 -141
- package/dist/esm/utils/restart.js +179 -173
- package/dist/esm/utils/routes.js +146 -139
- package/dist/esm/utils/types.js +1 -1
- package/dist/esm-node/analyze/constants.js +31 -46
- package/dist/esm-node/analyze/generateCode.js +28 -94
- package/dist/esm-node/analyze/getBundleEntry.js +8 -27
- package/dist/esm-node/analyze/getClientRoutes/getRoutes.js +24 -65
- package/dist/esm-node/analyze/getClientRoutes/getRoutesLegacy.js +24 -63
- package/dist/esm-node/analyze/getClientRoutes/index.js +2 -6
- package/dist/esm-node/analyze/getClientRoutes/utils.js +5 -19
- package/dist/esm-node/analyze/getFileSystemEntry.js +10 -37
- package/dist/esm-node/analyze/getHtmlTemplate.js +29 -59
- package/dist/esm-node/analyze/getServerRoutes.js +43 -75
- package/dist/esm-node/analyze/index.js +208 -230
- package/dist/esm-node/analyze/isDefaultExportFunction.js +7 -5
- package/dist/esm-node/analyze/makeLegalIdentifier.js +1 -4
- package/dist/esm-node/analyze/nestedRoutes.js +23 -43
- package/dist/esm-node/analyze/templates.js +22 -69
- package/dist/esm-node/analyze/utils.js +66 -60
- package/dist/esm-node/builder/builder-rspack/adapterCopy.js +40 -62
- package/dist/esm-node/builder/builder-rspack/index.js +4 -5
- package/dist/esm-node/builder/builder-webpack/adapterModern.js +24 -26
- package/dist/esm-node/builder/builder-webpack/createCopyPattern.js +3 -10
- package/dist/esm-node/builder/builder-webpack/index.js +13 -11
- package/dist/esm-node/builder/generator/createBuilderOptions.js +4 -5
- package/dist/esm-node/builder/generator/createBuilderProviderConfig.js +5 -6
- package/dist/esm-node/builder/generator/getBuilderTargets.js +5 -11
- package/dist/esm-node/builder/generator/index.js +7 -16
- package/dist/esm-node/builder/index.js +2 -7
- package/dist/esm-node/builder/shared/builderPlugins/adapterBasic.js +2 -6
- package/dist/esm-node/builder/shared/builderPlugins/adapterHtml.js +34 -60
- package/dist/esm-node/builder/shared/builderPlugins/adapterSSR.js +54 -74
- package/dist/esm-node/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +23 -8
- package/dist/esm-node/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +25 -16
- package/dist/esm-node/builder/shared/bundlerPlugins/RouterPlugin.js +66 -76
- package/dist/esm-node/builder/shared/createCopyInfo.js +2 -8
- package/dist/esm-node/builder/shared/loaders/serverModuleLoader.js +1 -4
- package/dist/esm-node/builder/shared/types.js +1 -0
- package/dist/esm-node/commands/build.js +7 -9
- package/dist/esm-node/commands/deploy.js +1 -4
- package/dist/esm-node/commands/dev.js +19 -27
- package/dist/esm-node/commands/inspect.js +3 -8
- package/dist/esm-node/commands/serve.js +7 -25
- package/dist/esm-node/config/default.js +20 -11
- package/dist/esm-node/config/initialize/index.js +1 -4
- package/dist/esm-node/config/initialize/inits.js +48 -54
- package/dist/esm-node/config/legacy/createHtmlConfig.js +2 -19
- package/dist/esm-node/config/legacy/createOutputConfig.js +2 -30
- package/dist/esm-node/config/legacy/createSourceConfig.js +2 -17
- package/dist/esm-node/config/legacy/createToolsConfig.js +2 -22
- package/dist/esm-node/config/legacy/index.js +3 -18
- package/dist/esm-node/defineConfig.js +7 -13
- package/dist/esm-node/exports/server.js +1 -4
- package/dist/esm-node/hooks.js +2 -9
- package/dist/esm-node/index.js +95 -120
- package/dist/esm-node/initialize/index.js +74 -87
- package/dist/esm-node/locale/en.js +7 -6
- package/dist/esm-node/locale/index.js +5 -5
- package/dist/esm-node/locale/zh.js +7 -6
- package/dist/esm-node/schema/Schema.js +19 -8
- package/dist/esm-node/schema/index.js +121 -36
- package/dist/esm-node/schema/legacy.js +262 -72
- package/dist/esm-node/types/config/deploy.js +1 -0
- package/dist/esm-node/types/config/dev.js +1 -0
- package/dist/esm-node/types/config/experiments.js +1 -0
- package/dist/esm-node/types/config/html.js +1 -0
- package/dist/esm-node/types/config/output.js +1 -0
- package/dist/esm-node/types/config/performance.js +1 -0
- package/dist/esm-node/types/config/security.js +1 -0
- package/dist/esm-node/types/config/source.js +1 -0
- package/dist/esm-node/types/config/tools.js +1 -0
- package/dist/esm-node/types/hooks.js +1 -0
- package/dist/esm-node/types/legacyConfig/deploy.js +1 -0
- package/dist/esm-node/types/legacyConfig/dev.js +1 -0
- package/dist/esm-node/types/legacyConfig/index.js +1 -0
- package/dist/esm-node/types/legacyConfig/output.js +1 -0
- package/dist/esm-node/types/legacyConfig/source.js +1 -0
- package/dist/esm-node/types/legacyConfig/tools.js +1 -0
- package/dist/esm-node/types/utils.js +1 -0
- package/dist/esm-node/utils/config.js +16 -47
- package/dist/esm-node/utils/createServer.js +5 -12
- package/dist/esm-node/utils/env.js +1 -4
- package/dist/esm-node/utils/generateWatchFiles.js +13 -20
- package/dist/esm-node/utils/getSelectedEntries.js +2 -9
- package/dist/esm-node/utils/getServerInternalPlugins.js +2 -8
- package/dist/esm-node/utils/printInstructions.js +1 -4
- package/dist/esm-node/utils/restart.js +2 -11
- package/dist/esm-node/utils/routes.js +4 -4
- package/dist/esm-node/utils/types.js +1 -0
- package/dist/types/index.d.ts +2 -2
- package/package.json +29 -25
|
@@ -1,23 +1,14 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import fs from "fs";
|
|
3
|
-
import {
|
|
4
|
-
urlJoin,
|
|
5
|
-
isPlainObject,
|
|
6
|
-
removeLeadingSlash,
|
|
7
|
-
getEntryOptions,
|
|
8
|
-
SERVER_BUNDLE_DIRECTORY,
|
|
9
|
-
MAIN_ENTRY_NAME,
|
|
10
|
-
removeTailSlash,
|
|
11
|
-
SERVER_WORKER_BUNDLE_DIRECTORY
|
|
12
|
-
} from "@modern-js/utils";
|
|
3
|
+
import { urlJoin, isPlainObject, removeLeadingSlash, getEntryOptions, SERVER_BUNDLE_DIRECTORY, MAIN_ENTRY_NAME, removeTailSlash, SERVER_WORKER_BUNDLE_DIRECTORY } from "@modern-js/utils";
|
|
13
4
|
import { walkDirectory } from "./utils";
|
|
14
5
|
const applyBaseUrl = (baseUrl, routes) => {
|
|
15
6
|
if (baseUrl) {
|
|
16
7
|
if (Array.isArray(baseUrl)) {
|
|
17
|
-
return baseUrl.reduce(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
);
|
|
8
|
+
return baseUrl.reduce((previous, current) => [
|
|
9
|
+
...previous,
|
|
10
|
+
...applyBaseUrl(current, routes)
|
|
11
|
+
], []);
|
|
21
12
|
} else {
|
|
22
13
|
return routes.map((route) => {
|
|
23
14
|
const urlPath = urlJoin(baseUrl, route.urlPath);
|
|
@@ -70,88 +61,65 @@ const applyRouteOptions = (original, routeOptions) => {
|
|
|
70
61
|
];
|
|
71
62
|
}
|
|
72
63
|
} else {
|
|
73
|
-
routes = [
|
|
64
|
+
routes = [
|
|
65
|
+
original
|
|
66
|
+
];
|
|
74
67
|
}
|
|
75
68
|
return routes;
|
|
76
69
|
};
|
|
77
70
|
const collectHtmlRoutes = (entrypoints, appContext, config) => {
|
|
78
|
-
var
|
|
79
|
-
const {
|
|
80
|
-
html: { disableHtmlFolder },
|
|
81
|
-
output: { distPath: { html: htmlPath } = {} },
|
|
82
|
-
server: { baseUrl, routes, ssr, ssrByEntries },
|
|
83
|
-
deploy
|
|
84
|
-
} = config;
|
|
71
|
+
var _deploy_worker;
|
|
72
|
+
const { html: { disableHtmlFolder }, output: { distPath: { html: htmlPath } = {} }, server: { baseUrl, routes, ssr, ssrByEntries }, deploy } = config;
|
|
85
73
|
const { packageName } = appContext;
|
|
86
|
-
const workerSSR =
|
|
87
|
-
let htmlRoutes = entrypoints.reduce(
|
|
88
|
-
(
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
),
|
|
106
|
-
isSPA: true,
|
|
107
|
-
isSSR,
|
|
108
|
-
responseHeaders: resHeaders,
|
|
109
|
-
worker: isWorker ? `${SERVER_WORKER_BUNDLE_DIRECTORY}/${entryName}.js` : void 0,
|
|
110
|
-
bundle: isSSR ? `${SERVER_BUNDLE_DIRECTORY}/${entryName}.js` : void 0
|
|
74
|
+
const workerSSR = deploy === null || deploy === void 0 ? void 0 : (_deploy_worker = deploy.worker) === null || _deploy_worker === void 0 ? void 0 : _deploy_worker.ssr;
|
|
75
|
+
let htmlRoutes = entrypoints.reduce((previous, { entryName }) => {
|
|
76
|
+
const entryOptions = getEntryOptions(entryName, ssr, ssrByEntries, packageName);
|
|
77
|
+
const isSSR = Boolean(entryOptions);
|
|
78
|
+
const isWorker = Boolean(workerSSR);
|
|
79
|
+
const { resHeaders } = (routes === null || routes === void 0 ? void 0 : routes[entryName]) || {};
|
|
80
|
+
let route = {
|
|
81
|
+
urlPath: `/${entryName === MAIN_ENTRY_NAME ? "" : entryName}`,
|
|
82
|
+
entryName,
|
|
83
|
+
entryPath: removeLeadingSlash(path.posix.normalize(`${htmlPath}/${entryName}${disableHtmlFolder ? ".html" : "/index.html"}`)),
|
|
84
|
+
isSPA: true,
|
|
85
|
+
isSSR,
|
|
86
|
+
responseHeaders: resHeaders,
|
|
87
|
+
worker: isWorker ? `${SERVER_WORKER_BUNDLE_DIRECTORY}/${entryName}.js` : void 0,
|
|
88
|
+
bundle: isSSR ? `${SERVER_BUNDLE_DIRECTORY}/${entryName}.js` : void 0
|
|
89
|
+
};
|
|
90
|
+
if (routes === null || routes === void 0 ? void 0 : routes.hasOwnProperty(entryName)) {
|
|
91
|
+
const routeOptions = isPlainObject(routes[entryName]) ? routes[entryName] : {
|
|
92
|
+
route: routes[entryName]
|
|
111
93
|
};
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
94
|
+
route = applyRouteOptions(route, routeOptions);
|
|
95
|
+
}
|
|
96
|
+
return Array.isArray(route) ? [
|
|
97
|
+
...previous,
|
|
98
|
+
...route
|
|
99
|
+
] : [
|
|
100
|
+
...previous,
|
|
101
|
+
route
|
|
102
|
+
];
|
|
103
|
+
}, []);
|
|
120
104
|
htmlRoutes = applyBaseUrl(baseUrl, htmlRoutes);
|
|
121
105
|
return htmlRoutes;
|
|
122
106
|
};
|
|
123
107
|
const collectStaticRoutes = (appContext, config) => {
|
|
124
108
|
const { appDirectory } = appContext;
|
|
125
|
-
const {
|
|
126
|
-
source: { configDir },
|
|
127
|
-
server: { publicRoutes = {} }
|
|
128
|
-
} = config;
|
|
109
|
+
const { source: { configDir }, server: { publicRoutes = {} } } = config;
|
|
129
110
|
const publicFolder = path.resolve(appDirectory, configDir || "", "public");
|
|
130
111
|
return fs.existsSync(publicFolder) ? walkDirectory(publicFolder).map((filePath) => {
|
|
131
|
-
const urlPath = `${urlJoin(
|
|
132
|
-
toPosix(filePath).slice(toPosix(publicFolder).length)
|
|
133
|
-
)}`;
|
|
112
|
+
const urlPath = `${urlJoin(toPosix(filePath).slice(toPosix(publicFolder).length))}`;
|
|
134
113
|
return {
|
|
135
114
|
urlPath: publicRoutes[removeLeadingSlash(urlPath)] || urlPath,
|
|
136
115
|
isSPA: true,
|
|
137
116
|
isSSR: false,
|
|
138
|
-
entryPath: toPosix(
|
|
139
|
-
path.relative(
|
|
140
|
-
path.resolve(appDirectory, configDir || ""),
|
|
141
|
-
filePath
|
|
142
|
-
)
|
|
143
|
-
)
|
|
117
|
+
entryPath: toPosix(path.relative(path.resolve(appDirectory, configDir || ""), filePath))
|
|
144
118
|
};
|
|
145
119
|
}) : [];
|
|
146
120
|
};
|
|
147
|
-
const getServerRoutes = (entrypoints, {
|
|
148
|
-
appContext,
|
|
149
|
-
config
|
|
150
|
-
}) => [
|
|
121
|
+
export const getServerRoutes = (entrypoints, { appContext, config }) => [
|
|
151
122
|
...collectHtmlRoutes(entrypoints, appContext, config),
|
|
152
123
|
...collectStaticRoutes(appContext, config)
|
|
153
124
|
];
|
|
154
125
|
const toPosix = (pathStr) => pathStr.split(path.sep).join(path.posix.sep);
|
|
155
|
-
export {
|
|
156
|
-
getServerRoutes
|
|
157
|
-
};
|
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
import * as path from "path";
|
|
2
|
-
import {
|
|
3
|
-
createDebugger,
|
|
4
|
-
findExists,
|
|
5
|
-
fs,
|
|
6
|
-
isApiOnly,
|
|
7
|
-
minimist,
|
|
8
|
-
getCommand,
|
|
9
|
-
isDevCommand,
|
|
10
|
-
getArgv
|
|
11
|
-
} from "@modern-js/utils";
|
|
2
|
+
import { createDebugger, findExists, fs, isApiOnly, minimist, getCommand, isDevCommand, getArgv } from "@modern-js/utils";
|
|
12
3
|
import { cloneDeep } from "@modern-js/utils/lodash";
|
|
13
4
|
import { printInstructions } from "../utils/printInstructions";
|
|
14
5
|
import { generateRoutes } from "../utils/routes";
|
|
@@ -17,242 +8,229 @@ import { getSelectedEntries } from "../utils/getSelectedEntries";
|
|
|
17
8
|
import { initialNormalizedConfig } from "../config";
|
|
18
9
|
import { createBuilderGenerator } from "../builder";
|
|
19
10
|
import { isPageComponentFile, parseModule, replaceWithAlias } from "./utils";
|
|
20
|
-
import {
|
|
21
|
-
APP_CONFIG_NAME,
|
|
22
|
-
APP_INIT_EXPORTED,
|
|
23
|
-
APP_INIT_IMPORTED
|
|
24
|
-
} from "./constants";
|
|
11
|
+
import { APP_CONFIG_NAME, APP_INIT_EXPORTED, APP_INIT_IMPORTED } from "./constants";
|
|
25
12
|
const debug = createDebugger("plugin-analyze");
|
|
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
|
-
|
|
13
|
+
export default ({ bundler }) => {
|
|
14
|
+
return {
|
|
15
|
+
name: "@modern-js/plugin-analyze",
|
|
16
|
+
setup: (api) => {
|
|
17
|
+
let pagesDir = [];
|
|
18
|
+
let nestedRouteEntries = [];
|
|
19
|
+
let originEntrypoints = [];
|
|
20
|
+
return {
|
|
21
|
+
async prepare() {
|
|
22
|
+
var _resolvedConfig_source;
|
|
23
|
+
let appContext = api.useAppContext();
|
|
24
|
+
const resolvedConfig = api.useResolvedConfigContext();
|
|
25
|
+
const hookRunners = api.useHookRunners();
|
|
26
|
+
try {
|
|
27
|
+
fs.emptydirSync(appContext.internalDirectory);
|
|
28
|
+
} catch {
|
|
29
|
+
}
|
|
30
|
+
const apiOnly = await isApiOnly(appContext.appDirectory, (_resolvedConfig_source = resolvedConfig.source) === null || _resolvedConfig_source === void 0 ? void 0 : _resolvedConfig_source.entriesDir);
|
|
31
|
+
await hookRunners.addRuntimeExports();
|
|
32
|
+
if (apiOnly) {
|
|
33
|
+
const { routes: routes2 } = await hookRunners.modifyServerRoutes({
|
|
34
|
+
routes: []
|
|
35
|
+
});
|
|
36
|
+
debug(`server routes: %o`, routes2);
|
|
37
|
+
appContext = {
|
|
38
|
+
...appContext,
|
|
39
|
+
apiOnly,
|
|
40
|
+
serverRoutes: routes2
|
|
41
|
+
};
|
|
42
|
+
api.setAppContext(appContext);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const [{ getBundleEntry }, { getServerRoutes }, { generateCode }, { getHtmlTemplate }] = await Promise.all([
|
|
46
|
+
import("./getBundleEntry"),
|
|
47
|
+
import("./getServerRoutes"),
|
|
48
|
+
import("./generateCode"),
|
|
49
|
+
import("./getHtmlTemplate")
|
|
50
|
+
]);
|
|
51
|
+
const entrypoints = getBundleEntry(appContext, resolvedConfig);
|
|
52
|
+
debug(`entrypoints: %o`, entrypoints);
|
|
53
|
+
const initialRoutes = getServerRoutes(entrypoints, {
|
|
54
|
+
appContext,
|
|
55
|
+
config: resolvedConfig
|
|
52
56
|
});
|
|
53
|
-
|
|
57
|
+
const { routes } = await hookRunners.modifyServerRoutes({
|
|
58
|
+
routes: initialRoutes
|
|
59
|
+
});
|
|
60
|
+
debug(`server routes: %o`, routes);
|
|
54
61
|
appContext = {
|
|
55
62
|
...appContext,
|
|
56
|
-
|
|
57
|
-
serverRoutes:
|
|
63
|
+
entrypoints,
|
|
64
|
+
serverRoutes: routes
|
|
58
65
|
};
|
|
59
66
|
api.setAppContext(appContext);
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
{ generateCode },
|
|
66
|
-
{ getHtmlTemplate }
|
|
67
|
-
] = await Promise.all([
|
|
68
|
-
import("./getBundleEntry"),
|
|
69
|
-
import("./getServerRoutes"),
|
|
70
|
-
import("./generateCode"),
|
|
71
|
-
import("./getHtmlTemplate")
|
|
72
|
-
]);
|
|
73
|
-
const entrypoints = getBundleEntry(appContext, resolvedConfig);
|
|
74
|
-
debug(`entrypoints: %o`, entrypoints);
|
|
75
|
-
const initialRoutes = getServerRoutes(entrypoints, {
|
|
76
|
-
appContext,
|
|
77
|
-
config: resolvedConfig
|
|
78
|
-
});
|
|
79
|
-
const { routes } = await hookRunners.modifyServerRoutes({
|
|
80
|
-
routes: initialRoutes
|
|
81
|
-
});
|
|
82
|
-
debug(`server routes: %o`, routes);
|
|
83
|
-
appContext = {
|
|
84
|
-
...appContext,
|
|
85
|
-
entrypoints,
|
|
86
|
-
serverRoutes: routes
|
|
87
|
-
};
|
|
88
|
-
api.setAppContext(appContext);
|
|
89
|
-
nestedRouteEntries = entrypoints.map((point) => point.nestedRoutesEntry).filter(Boolean);
|
|
90
|
-
pagesDir = entrypoints.map((point) => point.entry).filter(Boolean).concat(nestedRouteEntries);
|
|
91
|
-
originEntrypoints = cloneDeep(entrypoints);
|
|
92
|
-
await generateCode(appContext, resolvedConfig, entrypoints, api);
|
|
93
|
-
const htmlTemplates = await getHtmlTemplate(entrypoints, api, {
|
|
94
|
-
appContext,
|
|
95
|
-
config: resolvedConfig
|
|
96
|
-
});
|
|
97
|
-
debug(`html templates: %o`, htmlTemplates);
|
|
98
|
-
await hookRunners.addDefineTypes();
|
|
99
|
-
debug(`add Define Types`);
|
|
100
|
-
let checkedEntries = entrypoints.map((point) => point.entryName);
|
|
101
|
-
if (isDevCommand()) {
|
|
102
|
-
const { entry } = minimist(getArgv());
|
|
103
|
-
checkedEntries = await getSelectedEntries(
|
|
104
|
-
typeof entry === "string" ? entry.split(",") : entry,
|
|
105
|
-
entrypoints
|
|
106
|
-
);
|
|
107
|
-
}
|
|
108
|
-
appContext = {
|
|
109
|
-
...appContext,
|
|
110
|
-
entrypoints,
|
|
111
|
-
checkedEntries,
|
|
112
|
-
apiOnly,
|
|
113
|
-
serverRoutes: routes,
|
|
114
|
-
htmlTemplates
|
|
115
|
-
};
|
|
116
|
-
api.setAppContext(appContext);
|
|
117
|
-
const command = getCommand();
|
|
118
|
-
const buildCommands = ["dev", "start", "build", "inspect", "deploy"];
|
|
119
|
-
if (buildCommands.includes(command)) {
|
|
120
|
-
const normalizedConfig = api.useResolvedConfigContext();
|
|
121
|
-
const createBuilderForModern = await createBuilderGenerator(bundler);
|
|
122
|
-
const builder = await createBuilderForModern({
|
|
123
|
-
normalizedConfig,
|
|
67
|
+
nestedRouteEntries = entrypoints.map((point) => point.nestedRoutesEntry).filter(Boolean);
|
|
68
|
+
pagesDir = entrypoints.map((point) => point.entry).filter(Boolean).concat(nestedRouteEntries);
|
|
69
|
+
originEntrypoints = cloneDeep(entrypoints);
|
|
70
|
+
await generateCode(appContext, resolvedConfig, entrypoints, api);
|
|
71
|
+
const htmlTemplates = await getHtmlTemplate(entrypoints, api, {
|
|
124
72
|
appContext,
|
|
125
|
-
|
|
126
|
-
const hookRunners2 = api.useHookRunners();
|
|
127
|
-
await generateRoutes(appContext);
|
|
128
|
-
await hookRunners2.beforeBuild({
|
|
129
|
-
bundlerConfigs
|
|
130
|
-
});
|
|
131
|
-
},
|
|
132
|
-
async onAfterBuild({ stats }) {
|
|
133
|
-
const hookRunners2 = api.useHookRunners();
|
|
134
|
-
await hookRunners2.afterBuild({ stats });
|
|
135
|
-
await emitResolvedConfig(
|
|
136
|
-
appContext.appDirectory,
|
|
137
|
-
normalizedConfig
|
|
138
|
-
);
|
|
139
|
-
},
|
|
140
|
-
async onDevCompileDone({ isFirstCompile }) {
|
|
141
|
-
const hookRunners2 = api.useHookRunners();
|
|
142
|
-
if (process.stdout.isTTY || isFirstCompile) {
|
|
143
|
-
hookRunners2.afterDev();
|
|
144
|
-
if (isFirstCompile) {
|
|
145
|
-
printInstructions(hookRunners2, appContext, normalizedConfig);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
},
|
|
149
|
-
async onBeforeCreateCompiler({ bundlerConfigs }) {
|
|
150
|
-
const hookRunners2 = api.useHookRunners();
|
|
151
|
-
await hookRunners2.beforeCreateCompiler({
|
|
152
|
-
bundlerConfigs
|
|
153
|
-
});
|
|
154
|
-
},
|
|
155
|
-
async onAfterCreateCompiler({ compiler }) {
|
|
156
|
-
const hookRunners2 = api.useHookRunners();
|
|
157
|
-
await hookRunners2.afterCreateCompiler({
|
|
158
|
-
compiler
|
|
159
|
-
});
|
|
160
|
-
}
|
|
73
|
+
config: resolvedConfig
|
|
161
74
|
});
|
|
162
|
-
|
|
75
|
+
debug(`html templates: %o`, htmlTemplates);
|
|
76
|
+
await hookRunners.addDefineTypes();
|
|
77
|
+
debug(`add Define Types`);
|
|
78
|
+
let checkedEntries = entrypoints.map((point) => point.entryName);
|
|
79
|
+
if (isDevCommand()) {
|
|
80
|
+
const { entry } = minimist(getArgv());
|
|
81
|
+
checkedEntries = await getSelectedEntries(typeof entry === "string" ? entry.split(",") : entry, entrypoints);
|
|
82
|
+
}
|
|
163
83
|
appContext = {
|
|
164
84
|
...appContext,
|
|
165
|
-
|
|
85
|
+
entrypoints,
|
|
86
|
+
checkedEntries,
|
|
87
|
+
apiOnly,
|
|
88
|
+
serverRoutes: routes,
|
|
89
|
+
htmlTemplates
|
|
166
90
|
};
|
|
167
91
|
api.setAppContext(appContext);
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
(
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
92
|
+
const command = getCommand();
|
|
93
|
+
const buildCommands = [
|
|
94
|
+
"dev",
|
|
95
|
+
"start",
|
|
96
|
+
"build",
|
|
97
|
+
"inspect",
|
|
98
|
+
"deploy"
|
|
99
|
+
];
|
|
100
|
+
if (buildCommands.includes(command)) {
|
|
101
|
+
const normalizedConfig = api.useResolvedConfigContext();
|
|
102
|
+
const createBuilderForModern = await createBuilderGenerator(bundler);
|
|
103
|
+
const builder = await createBuilderForModern({
|
|
104
|
+
normalizedConfig,
|
|
105
|
+
appContext,
|
|
106
|
+
async onBeforeBuild({ bundlerConfigs }) {
|
|
107
|
+
const hookRunners2 = api.useHookRunners();
|
|
108
|
+
await generateRoutes(appContext);
|
|
109
|
+
await hookRunners2.beforeBuild({
|
|
110
|
+
bundlerConfigs
|
|
111
|
+
});
|
|
112
|
+
},
|
|
113
|
+
async onAfterBuild({ stats }) {
|
|
114
|
+
const hookRunners2 = api.useHookRunners();
|
|
115
|
+
await hookRunners2.afterBuild({
|
|
116
|
+
stats
|
|
117
|
+
});
|
|
118
|
+
await emitResolvedConfig(appContext.appDirectory, normalizedConfig);
|
|
119
|
+
},
|
|
120
|
+
async onDevCompileDone({ isFirstCompile }) {
|
|
121
|
+
const hookRunners2 = api.useHookRunners();
|
|
122
|
+
if (process.stdout.isTTY || isFirstCompile) {
|
|
123
|
+
hookRunners2.afterDev();
|
|
124
|
+
if (isFirstCompile) {
|
|
125
|
+
printInstructions(hookRunners2, appContext, normalizedConfig);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
async onBeforeCreateCompiler({ bundlerConfigs }) {
|
|
130
|
+
const hookRunners2 = api.useHookRunners();
|
|
131
|
+
await hookRunners2.beforeCreateCompiler({
|
|
132
|
+
bundlerConfigs
|
|
133
|
+
});
|
|
134
|
+
},
|
|
135
|
+
async onAfterCreateCompiler({ compiler }) {
|
|
136
|
+
const hookRunners2 = api.useHookRunners();
|
|
137
|
+
await hookRunners2.afterCreateCompiler({
|
|
138
|
+
compiler
|
|
139
|
+
});
|
|
140
|
+
}
|
|
198
141
|
});
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
142
|
+
builder.addPlugins(resolvedConfig.builderPlugins);
|
|
143
|
+
appContext = {
|
|
144
|
+
...appContext,
|
|
145
|
+
builder
|
|
146
|
+
};
|
|
147
|
+
api.setAppContext(appContext);
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
watchFiles() {
|
|
151
|
+
return pagesDir;
|
|
152
|
+
},
|
|
153
|
+
resolvedConfig({ resolved }) {
|
|
154
|
+
const appContext = api.useAppContext();
|
|
155
|
+
const config = initialNormalizedConfig(resolved, appContext, bundler);
|
|
156
|
+
return {
|
|
157
|
+
resolved: config
|
|
158
|
+
};
|
|
159
|
+
},
|
|
160
|
+
// This logic is not in the router plugin to avoid having to include some dependencies in the utils package
|
|
161
|
+
async modifyEntryImports({ entrypoint, imports }) {
|
|
162
|
+
const appContext = api.useAppContext();
|
|
163
|
+
const { srcDirectory, internalSrcAlias } = appContext;
|
|
164
|
+
const { fileSystemRoutes, nestedRoutesEntry } = entrypoint;
|
|
165
|
+
if (fileSystemRoutes && nestedRoutesEntry) {
|
|
166
|
+
const rootLayoutPath = path.join(nestedRoutesEntry, "layout");
|
|
167
|
+
const rootLayoutFile = findExists([
|
|
168
|
+
".js",
|
|
169
|
+
".ts",
|
|
170
|
+
".jsx",
|
|
171
|
+
".tsx"
|
|
172
|
+
].map((ext) => `${rootLayoutPath}${ext}`));
|
|
173
|
+
if (rootLayoutFile) {
|
|
174
|
+
const rootLayoutBuffer = await fs.readFile(rootLayoutFile);
|
|
175
|
+
const rootLayout = rootLayoutBuffer.toString();
|
|
176
|
+
const [, moduleExports] = await parseModule({
|
|
177
|
+
source: rootLayout.toString(),
|
|
178
|
+
filename: rootLayoutFile
|
|
222
179
|
});
|
|
180
|
+
const hasAppConfig = moduleExports.some((e) => e.n === APP_CONFIG_NAME);
|
|
181
|
+
const generateLayoutPath = replaceWithAlias(srcDirectory, rootLayoutFile, internalSrcAlias);
|
|
182
|
+
if (hasAppConfig) {
|
|
183
|
+
imports.push({
|
|
184
|
+
value: generateLayoutPath,
|
|
185
|
+
specifiers: [
|
|
186
|
+
{
|
|
187
|
+
imported: APP_CONFIG_NAME
|
|
188
|
+
}
|
|
189
|
+
]
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
const hasAppInit = moduleExports.some((e) => e.n === APP_INIT_EXPORTED);
|
|
193
|
+
if (hasAppInit) {
|
|
194
|
+
imports.push({
|
|
195
|
+
value: generateLayoutPath,
|
|
196
|
+
specifiers: [
|
|
197
|
+
{
|
|
198
|
+
imported: APP_INIT_EXPORTED,
|
|
199
|
+
local: APP_INIT_IMPORTED
|
|
200
|
+
}
|
|
201
|
+
]
|
|
202
|
+
});
|
|
203
|
+
}
|
|
223
204
|
}
|
|
224
205
|
}
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
206
|
+
return {
|
|
207
|
+
entrypoint,
|
|
208
|
+
imports
|
|
209
|
+
};
|
|
210
|
+
},
|
|
211
|
+
validateSchema() {
|
|
212
|
+
return {
|
|
213
|
+
target: "output.splitRouteChunks",
|
|
214
|
+
schema: {
|
|
215
|
+
type: "boolean"
|
|
216
|
+
}
|
|
217
|
+
};
|
|
218
|
+
},
|
|
219
|
+
async fileChange(e) {
|
|
220
|
+
const appContext = api.useAppContext();
|
|
221
|
+
const { appDirectory } = appContext;
|
|
222
|
+
const { filename, eventType } = e;
|
|
223
|
+
const isPageFile = (name) => pagesDir.some((pageDir) => name.includes(pageDir));
|
|
224
|
+
const absoluteFilePath = path.resolve(appDirectory, filename);
|
|
225
|
+
const isRouteComponent = isPageFile(absoluteFilePath) && isPageComponentFile(absoluteFilePath);
|
|
226
|
+
if (isRouteComponent && (eventType === "add" || eventType === "unlink")) {
|
|
227
|
+
const resolvedConfig = api.useResolvedConfigContext();
|
|
228
|
+
const { generateCode } = await import("./generateCode");
|
|
229
|
+
const entrypoints = cloneDeep(originEntrypoints);
|
|
230
|
+
generateCode(appContext, resolvedConfig, entrypoints, api);
|
|
236
231
|
}
|
|
237
|
-
};
|
|
238
|
-
},
|
|
239
|
-
async fileChange(e) {
|
|
240
|
-
const appContext = api.useAppContext();
|
|
241
|
-
const { appDirectory } = appContext;
|
|
242
|
-
const { filename, eventType } = e;
|
|
243
|
-
const isPageFile = (name) => pagesDir.some((pageDir) => name.includes(pageDir));
|
|
244
|
-
const absoluteFilePath = path.resolve(appDirectory, filename);
|
|
245
|
-
const isRouteComponent = isPageFile(absoluteFilePath) && isPageComponentFile(absoluteFilePath);
|
|
246
|
-
if (isRouteComponent && (eventType === "add" || eventType === "unlink")) {
|
|
247
|
-
const resolvedConfig = api.useResolvedConfigContext();
|
|
248
|
-
const { generateCode } = await import("./generateCode");
|
|
249
|
-
const entrypoints = cloneDeep(originEntrypoints);
|
|
250
|
-
generateCode(appContext, resolvedConfig, entrypoints, api);
|
|
251
232
|
}
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
});
|
|
256
|
-
export {
|
|
257
|
-
analyze_default as default
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
};
|
|
258
236
|
};
|
|
@@ -3,7 +3,7 @@ import { parse } from "@babel/parser";
|
|
|
3
3
|
import traverse from "@babel/traverse";
|
|
4
4
|
import * as t from "@babel/types";
|
|
5
5
|
const isFunction = (node) => t.isFunctionDeclaration(node) || t.isFunctionExpression(node) || t.isArrowFunctionExpression(node);
|
|
6
|
-
const isDefaultExportFunction = (file) => {
|
|
6
|
+
export const isDefaultExportFunction = (file) => {
|
|
7
7
|
if (!file || !fs.existsSync(file)) {
|
|
8
8
|
return false;
|
|
9
9
|
}
|
|
@@ -19,7 +19,12 @@ const isDefaultExportFunction = (file) => {
|
|
|
19
19
|
"decorators-legacy",
|
|
20
20
|
"functionBind",
|
|
21
21
|
"classPrivateMethods",
|
|
22
|
-
[
|
|
22
|
+
[
|
|
23
|
+
"pipelineOperator",
|
|
24
|
+
{
|
|
25
|
+
proposal: "minimal"
|
|
26
|
+
}
|
|
27
|
+
],
|
|
23
28
|
"optionalChaining",
|
|
24
29
|
"optionalCatchBinding",
|
|
25
30
|
"objectRestSpread",
|
|
@@ -37,6 +42,3 @@ const isDefaultExportFunction = (file) => {
|
|
|
37
42
|
});
|
|
38
43
|
return isExportFunction;
|
|
39
44
|
};
|
|
40
|
-
export {
|
|
41
|
-
isDefaultExportFunction
|
|
42
|
-
};
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
const reservedWords = "break case class catch const continue debugger default delete do else export extends finally for function if import in instanceof let new return super switch this throw try typeof var void while with yield enum await implements package protected static interface private public";
|
|
2
2
|
const builtins = "arguments Infinity NaN undefined null true false eval uneval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Symbol Error EvalError InternalError RangeError ReferenceError SyntaxError TypeError URIError Number Math Date String RegExp Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array Map Set WeakMap WeakSet SIMD ArrayBuffer DataView JSON Promise Generator GeneratorFunction Reflect Proxy Intl";
|
|
3
3
|
const forbidList = new Set(`${reservedWords} ${builtins}`.split(" "));
|
|
4
|
-
function makeLegalIdentifier(str) {
|
|
4
|
+
export function makeLegalIdentifier(str) {
|
|
5
5
|
const identifier = str.replace(/-(\w)/g, (_, letter) => letter.toUpperCase()).replace(/[^$_a-zA-Z0-9]/g, "_");
|
|
6
6
|
if (/\d/.test(identifier[0]) || forbidList.has(identifier)) {
|
|
7
7
|
return `_${identifier}`;
|
|
8
8
|
}
|
|
9
9
|
return identifier || "_";
|
|
10
10
|
}
|
|
11
|
-
export {
|
|
12
|
-
makeLegalIdentifier
|
|
13
|
-
};
|