@modern-js/utils 2.28.0 → 2.29.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 +24 -0
- package/dist/cjs/cli/constants/chainId.js +6 -0
- package/dist/cjs/cli/constants/index.js +1 -1
- package/dist/cjs/cli/index.js +0 -1
- package/dist/cjs/cli/is/config.js +4 -3
- package/dist/cjs/cli/logger.js +9 -0
- package/dist/cjs/cli/path.js +0 -23
- package/dist/cjs/cli/prettyInstructions.js +3 -3
- package/dist/cjs/universal/time.js +38 -0
- package/dist/esm/cli/constants/chainId.js +6 -0
- package/dist/esm/cli/constants/index.js +1 -1
- package/dist/esm/cli/index.js +0 -1
- package/dist/esm/cli/is/config.js +5 -3
- package/dist/esm/cli/logger.js +10 -0
- package/dist/esm/cli/path.js +2 -22
- package/dist/esm/cli/prettyInstructions.js +3 -3
- package/dist/esm/universal/time.js +29 -0
- package/dist/esm-node/cli/constants/chainId.js +6 -0
- package/dist/esm-node/cli/constants/index.js +1 -1
- package/dist/esm-node/cli/index.js +0 -1
- package/dist/esm-node/cli/is/config.js +4 -3
- package/dist/esm-node/cli/logger.js +6 -0
- package/dist/esm-node/cli/path.js +2 -16
- package/dist/esm-node/cli/prettyInstructions.js +3 -3
- package/dist/esm-node/universal/time.js +28 -0
- package/dist/types/cli/constants/chainId.d.ts +6 -0
- package/dist/types/cli/constants/index.d.ts +1 -1
- package/dist/types/cli/index.d.ts +0 -1
- package/dist/types/cli/is/config.d.ts +1 -1
- package/dist/types/cli/logger.d.ts +1 -0
- package/dist/types/cli/path.d.ts +0 -9
- package/dist/types/universal/time.d.ts +1 -0
- package/package.json +12 -4
- package/dist/cjs/cli/pathSerializer.js +0 -72
- package/dist/esm/cli/pathSerializer.js +0 -60
- package/dist/esm-node/cli/pathSerializer.js +0 -46
- package/dist/types/cli/pathSerializer.d.ts +0 -16
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,29 @@
|
|
1
1
|
# @modern-js/utils
|
2
2
|
|
3
|
+
## 2.29.0
|
4
|
+
|
5
|
+
### Minor Changes
|
6
|
+
|
7
|
+
- cba7675: feat: add a server reporter that report server cost, logger about error, info etc.
|
8
|
+
feat: 添加一个 server 端 reporter,来报告 server 端耗时,报错等
|
9
|
+
|
10
|
+
### Patch Changes
|
11
|
+
|
12
|
+
- e6b5355: feat(utils): change the color of error stacks to gray
|
13
|
+
|
14
|
+
feat(utils): 将 error stack 的颜色改为灰色
|
15
|
+
|
16
|
+
- 93db783: fix(utils): remove hard code 'main'
|
17
|
+
|
18
|
+
fix(utils): 移除 'main' 硬编码
|
19
|
+
|
20
|
+
- 99052ea: feat(builder): improve error stacks if dev compilation failed
|
21
|
+
|
22
|
+
feat(builder): 优化 dev 编译失败时的错误堆栈格式
|
23
|
+
|
24
|
+
- 1d71d2e: fix(@modern-js/utils): add missing url in devServer console
|
25
|
+
fix(@modern-js/utils): 修复 devServer console 中丢失的 url
|
26
|
+
|
3
27
|
## 2.28.0
|
4
28
|
|
5
29
|
### Patch Changes
|
@@ -107,6 +107,8 @@ const CHAIN_ID = {
|
|
107
107
|
CSS_MODULES_TS: "css-modules-typescript",
|
108
108
|
/** mini-css-extract-plugin.loader */
|
109
109
|
MINI_CSS_EXTRACT: "mini-css-extract",
|
110
|
+
/** resolve-url-loader */
|
111
|
+
RESOLVE_URL_LOADER_FOR_SASS: "resolve-url-loader",
|
110
112
|
/** builder-plugin-image-compress.loader */
|
111
113
|
IMAGE_COMPRESS: "image-compress",
|
112
114
|
/** builder-plugin-image-compress svgo-loader */
|
@@ -154,6 +156,10 @@ const CHAIN_ID = {
|
|
154
156
|
HTML_NONCE: "html-nonce",
|
155
157
|
/** HtmlCrossOriginPlugin */
|
156
158
|
HTML_CROSS_ORIGIN: "html-cross-origin",
|
159
|
+
/** htmlPreconnectPlugin */
|
160
|
+
HTML_PRECONNECT: "html-preconnect-plugin",
|
161
|
+
/** htmlDnsPrefetchPlugin */
|
162
|
+
HTML_DNS_PREFETCH: "html-dns-prefetch-plugin",
|
157
163
|
/** MiniCssExtractPlugin */
|
158
164
|
MINI_CSS_EXTRACT: "mini-css-extract",
|
159
165
|
/** VueLoaderPlugin */
|
@@ -117,7 +117,7 @@ const LOADABLE_STATS_FILE = "loadable-stats.json";
|
|
117
117
|
const API_DIR = "api";
|
118
118
|
const SERVER_DIR = "server";
|
119
119
|
const SHARED_DIR = "shared";
|
120
|
-
const CONFIG_CACHE_DIR = "./node_modules/.cache/
|
120
|
+
const CONFIG_CACHE_DIR = "./node_modules/.cache/bundle-require";
|
121
121
|
const CONFIG_FILE_EXTENSIONS = [
|
122
122
|
".js",
|
123
123
|
".ts",
|
package/dist/cjs/cli/index.js
CHANGED
@@ -17,7 +17,6 @@ _export_star._(require("./logger"), exports);
|
|
17
17
|
_export_star._(require("./monorepo"), exports);
|
18
18
|
_export_star._(require("./package"), exports);
|
19
19
|
_export_star._(require("./path"), exports);
|
20
|
-
_export_star._(require("./pathSerializer"), exports);
|
21
20
|
_export_star._(require("./port"), exports);
|
22
21
|
_export_star._(require("./prettyInstructions"), exports);
|
23
22
|
_export_star._(require("./require"), exports);
|
@@ -29,6 +29,7 @@ _export(exports, {
|
|
29
29
|
return isSingleEntry;
|
30
30
|
}
|
31
31
|
});
|
32
|
+
const _constants = require("../constants");
|
32
33
|
const _type = require("./type");
|
33
34
|
const isSSR = (config) => {
|
34
35
|
var _server, _server1;
|
@@ -66,9 +67,9 @@ const isRouterV5 = (config) => {
|
|
66
67
|
return typeof ((_config_runtime = config.runtime) === null || _config_runtime === void 0 ? void 0 : _config_runtime.router) !== "boolean" && ((_config = config) === null || _config === void 0 ? void 0 : (_config_runtime1 = _config.runtime) === null || _config_runtime1 === void 0 ? void 0 : (_config_runtime_router = _config_runtime1.router) === null || _config_runtime_router === void 0 ? void 0 : _config_runtime_router.mode) === "react-router-5";
|
67
68
|
};
|
68
69
|
const isSSGEntry = (config, entryName, entrypoints) => {
|
69
|
-
var _ssgConfig, _ssgConfig1;
|
70
|
+
var _config_source, _ssgConfig, _ssgConfig1;
|
70
71
|
const ssgConfig = config.output.ssg;
|
71
|
-
const useSSG = isSingleEntry(entrypoints) ? Boolean(ssgConfig) : ssgConfig === true || typeof ((_ssgConfig = ssgConfig) === null || _ssgConfig === void 0 ? void 0 : _ssgConfig[0]) === "function" || Boolean((_ssgConfig1 = ssgConfig) === null || _ssgConfig1 === void 0 ? void 0 : _ssgConfig1[entryName]);
|
72
|
+
const useSSG = isSingleEntry(entrypoints, (_config_source = config.source) === null || _config_source === void 0 ? void 0 : _config_source.mainEntryName) ? Boolean(ssgConfig) : ssgConfig === true || typeof ((_ssgConfig = ssgConfig) === null || _ssgConfig === void 0 ? void 0 : _ssgConfig[0]) === "function" || Boolean((_ssgConfig1 = ssgConfig) === null || _ssgConfig1 === void 0 ? void 0 : _ssgConfig1[entryName]);
|
72
73
|
return useSSG;
|
73
74
|
};
|
74
|
-
const isSingleEntry = (entrypoints) => entrypoints.length === 1 && entrypoints[0].entryName ===
|
75
|
+
const isSingleEntry = (entrypoints, mainEntryName = _constants.MAIN_ENTRY_NAME) => entrypoints.length === 1 && entrypoints[0].entryName === mainEntryName;
|
package/dist/cjs/cli/logger.js
CHANGED
@@ -10,6 +10,9 @@ function _export(target, all) {
|
|
10
10
|
});
|
11
11
|
}
|
12
12
|
_export(exports, {
|
13
|
+
isErrorStackMessage: function() {
|
14
|
+
return isErrorStackMessage;
|
15
|
+
},
|
13
16
|
Logger: function() {
|
14
17
|
return Logger;
|
15
18
|
},
|
@@ -60,6 +63,9 @@ const DEFAULT_CONFIG = {
|
|
60
63
|
displayLabel: true,
|
61
64
|
uppercaseLabel: false
|
62
65
|
};
|
66
|
+
const errorStackRegExp = /^\s*at\s.*:\d+:\d+[\s)]*$/;
|
67
|
+
const anonymousErrorStackRegExp = /^\s*at\s.*\(<anonymous>\)$/;
|
68
|
+
const isErrorStackMessage = (message) => errorStackRegExp.test(message) || anonymousErrorStackRegExp.test(message);
|
63
69
|
class Logger {
|
64
70
|
_log(type, message, ...args) {
|
65
71
|
if (message === void 0 || message === null) {
|
@@ -85,6 +91,9 @@ ${_chalk.default.grey(rest.join("\n"))}`;
|
|
85
91
|
} else {
|
86
92
|
text = message.message;
|
87
93
|
}
|
94
|
+
} else if (logType.level === "error" && typeof message === "string") {
|
95
|
+
const lines = message.split("\n");
|
96
|
+
text = lines.map((line) => isErrorStackMessage(line) ? _chalk.default.gray(line) : line).join("\n");
|
88
97
|
} else {
|
89
98
|
text = `${message}`;
|
90
99
|
}
|
package/dist/cjs/cli/path.js
CHANGED
@@ -25,15 +25,6 @@ _export(exports, {
|
|
25
25
|
getTemplatePath: function() {
|
26
26
|
return getTemplatePath;
|
27
27
|
},
|
28
|
-
compilePathMatcherRegExp: function() {
|
29
|
-
return compilePathMatcherRegExp;
|
30
|
-
},
|
31
|
-
_joinPathParts: function() {
|
32
|
-
return _joinPathParts;
|
33
|
-
},
|
34
|
-
upwardPaths: function() {
|
35
|
-
return upwardPaths;
|
36
|
-
},
|
37
28
|
getRealTemporaryDirectory: function() {
|
38
29
|
return getRealTemporaryDirectory;
|
39
30
|
},
|
@@ -71,20 +62,6 @@ const getTemplatePath = (prefix) => {
|
|
71
62
|
parts.push((0, _compiled.nanoid)());
|
72
63
|
return _path.default.resolve(...parts);
|
73
64
|
};
|
74
|
-
function compilePathMatcherRegExp(match) {
|
75
|
-
if (typeof match !== "string") {
|
76
|
-
return match;
|
77
|
-
}
|
78
|
-
const escaped = _compiled.lodash.escapeRegExp(match);
|
79
|
-
return new RegExp(`(?<=\\W|^)${escaped}(?=\\W|$)`);
|
80
|
-
}
|
81
|
-
const _joinPathParts = (_part, i, parts) => (0, _compiled.lodash)(parts).filter((part) => ![
|
82
|
-
"/",
|
83
|
-
"\\"
|
84
|
-
].includes(part)).tap((parts2) => parts2.unshift("")).slice(0, i + 2).join("/");
|
85
|
-
function upwardPaths(start) {
|
86
|
-
return (0, _compiled.lodash)(start).split(/[/\\]/).filter(Boolean).map(_joinPathParts).reverse().push("/").value();
|
87
|
-
}
|
88
65
|
function getRealTemporaryDirectory() {
|
89
66
|
let ret = null;
|
90
67
|
try {
|
@@ -68,19 +68,19 @@ const getAddressUrls = (protocol = "http", port, host) => {
|
|
68
68
|
}, []);
|
69
69
|
};
|
70
70
|
const prettyInstructions = (appContext, config) => {
|
71
|
-
var _appContext_builder_context_devServer, _appContext_builder, _config_dev;
|
71
|
+
var _appContext_builder_context_devServer, _appContext_builder, _config_dev, _config_source;
|
72
72
|
const { entrypoints, serverRoutes, port, apiOnly, checkedEntries } = appContext;
|
73
73
|
const isHttps = (0, _is.isDev)() && ((_appContext_builder = appContext.builder) === null || _appContext_builder === void 0 ? void 0 : (_appContext_builder_context_devServer = _appContext_builder.context.devServer) === null || _appContext_builder_context_devServer === void 0 ? void 0 : _appContext_builder_context_devServer.https);
|
74
74
|
const urls = getAddressUrls(isHttps ? "https" : "http", port, (_config_dev = config.dev) === null || _config_dev === void 0 ? void 0 : _config_dev.host);
|
75
75
|
const routes = !apiOnly ? serverRoutes.filter((route) => route.entryName) : serverRoutes;
|
76
76
|
let message = "App running at:\n\n";
|
77
|
-
if ((0, _is.isSingleEntry)(entrypoints) || apiOnly) {
|
77
|
+
if ((0, _is.isSingleEntry)(entrypoints, (_config_source = config.source) === null || _config_source === void 0 ? void 0 : _config_source.mainEntryName) || apiOnly) {
|
78
78
|
message += urls.map(({ label, url }) => ` ${_compiled.chalk.bold(`> ${label.padEnd(10)}`)}${_compiled.chalk.cyanBright(normalizeUrl(`${url}/${routes[0].urlPath}`))}
|
79
79
|
`).join("");
|
80
80
|
} else {
|
81
81
|
const maxNameLength = Math.max(...routes.map((r) => r.entryName.length));
|
82
82
|
urls.forEach(({ label, url }) => {
|
83
|
-
message += ` ${_compiled.chalk.bold(`> ${label}`)}
|
83
|
+
message += ` ${_compiled.chalk.bold(`> ${label}`)}${routes.length === 0 ? _compiled.chalk.cyanBright(url) : ""}
|
84
84
|
`;
|
85
85
|
routes.forEach(({ entryName, urlPath, isSSR }) => {
|
86
86
|
if (!checkedEntries.includes(entryName)) {
|
@@ -0,0 +1,38 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
3
|
+
value: true
|
4
|
+
});
|
5
|
+
Object.defineProperty(exports, "time", {
|
6
|
+
enumerable: true,
|
7
|
+
get: function() {
|
8
|
+
return time;
|
9
|
+
}
|
10
|
+
});
|
11
|
+
function processHrtime(previousTimestamp) {
|
12
|
+
const now = (/* @__PURE__ */ new Date()).getTime();
|
13
|
+
const clocktime = now * 1e-3;
|
14
|
+
let seconds = Math.floor(clocktime);
|
15
|
+
let nanoseconds = Math.floor(clocktime % 1 * 1e9);
|
16
|
+
if (previousTimestamp) {
|
17
|
+
seconds -= previousTimestamp[0];
|
18
|
+
nanoseconds -= previousTimestamp[1];
|
19
|
+
if (nanoseconds < 0) {
|
20
|
+
seconds--;
|
21
|
+
nanoseconds += 1e9;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
return [
|
25
|
+
seconds,
|
26
|
+
nanoseconds
|
27
|
+
];
|
28
|
+
}
|
29
|
+
const getLatency = (hrtime) => {
|
30
|
+
const [s, ns] = processHrtime(hrtime);
|
31
|
+
return s * 1e3 + ns / 1e6;
|
32
|
+
};
|
33
|
+
const time = () => {
|
34
|
+
const hrtime = processHrtime();
|
35
|
+
return () => {
|
36
|
+
return getLatency(hrtime);
|
37
|
+
};
|
38
|
+
};
|
@@ -97,6 +97,8 @@ export var CHAIN_ID = {
|
|
97
97
|
CSS_MODULES_TS: "css-modules-typescript",
|
98
98
|
/** mini-css-extract-plugin.loader */
|
99
99
|
MINI_CSS_EXTRACT: "mini-css-extract",
|
100
|
+
/** resolve-url-loader */
|
101
|
+
RESOLVE_URL_LOADER_FOR_SASS: "resolve-url-loader",
|
100
102
|
/** builder-plugin-image-compress.loader */
|
101
103
|
IMAGE_COMPRESS: "image-compress",
|
102
104
|
/** builder-plugin-image-compress svgo-loader */
|
@@ -144,6 +146,10 @@ export var CHAIN_ID = {
|
|
144
146
|
HTML_NONCE: "html-nonce",
|
145
147
|
/** HtmlCrossOriginPlugin */
|
146
148
|
HTML_CROSS_ORIGIN: "html-cross-origin",
|
149
|
+
/** htmlPreconnectPlugin */
|
150
|
+
HTML_PRECONNECT: "html-preconnect-plugin",
|
151
|
+
/** htmlDnsPrefetchPlugin */
|
152
|
+
HTML_DNS_PREFETCH: "html-dns-prefetch-plugin",
|
147
153
|
/** MiniCssExtractPlugin */
|
148
154
|
MINI_CSS_EXTRACT: "mini-css-extract",
|
149
155
|
/** VueLoaderPlugin */
|
@@ -10,7 +10,7 @@ export var LOADABLE_STATS_FILE = "loadable-stats.json";
|
|
10
10
|
export var API_DIR = "api";
|
11
11
|
export var SERVER_DIR = "server";
|
12
12
|
export var SHARED_DIR = "shared";
|
13
|
-
export var CONFIG_CACHE_DIR = "./node_modules/.cache/
|
13
|
+
export var CONFIG_CACHE_DIR = "./node_modules/.cache/bundle-require";
|
14
14
|
export var CONFIG_FILE_EXTENSIONS = [
|
15
15
|
".js",
|
16
16
|
".ts",
|
package/dist/esm/cli/index.js
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
import { MAIN_ENTRY_NAME } from "../constants";
|
1
2
|
import { isEmpty } from "./type";
|
2
3
|
export var isSSR = function(config) {
|
3
4
|
var _server, _server1;
|
@@ -52,11 +53,12 @@ export var isRouterV5 = function(config) {
|
|
52
53
|
return typeof ((_config_runtime = config.runtime) === null || _config_runtime === void 0 ? void 0 : _config_runtime.router) !== "boolean" && ((_config = config) === null || _config === void 0 ? void 0 : (_config_runtime1 = _config.runtime) === null || _config_runtime1 === void 0 ? void 0 : (_config_runtime_router = _config_runtime1.router) === null || _config_runtime_router === void 0 ? void 0 : _config_runtime_router.mode) === "react-router-5";
|
53
54
|
};
|
54
55
|
export var isSSGEntry = function(config, entryName, entrypoints) {
|
55
|
-
var _ssgConfig, _ssgConfig1;
|
56
|
+
var _config_source, _ssgConfig, _ssgConfig1;
|
56
57
|
var ssgConfig = config.output.ssg;
|
57
|
-
var useSSG = isSingleEntry(entrypoints) ? Boolean(ssgConfig) : ssgConfig === true || typeof ((_ssgConfig = ssgConfig) === null || _ssgConfig === void 0 ? void 0 : _ssgConfig[0]) === "function" || Boolean((_ssgConfig1 = ssgConfig) === null || _ssgConfig1 === void 0 ? void 0 : _ssgConfig1[entryName]);
|
58
|
+
var useSSG = isSingleEntry(entrypoints, (_config_source = config.source) === null || _config_source === void 0 ? void 0 : _config_source.mainEntryName) ? Boolean(ssgConfig) : ssgConfig === true || typeof ((_ssgConfig = ssgConfig) === null || _ssgConfig === void 0 ? void 0 : _ssgConfig[0]) === "function" || Boolean((_ssgConfig1 = ssgConfig) === null || _ssgConfig1 === void 0 ? void 0 : _ssgConfig1[entryName]);
|
58
59
|
return useSSG;
|
59
60
|
};
|
60
61
|
export var isSingleEntry = function(entrypoints) {
|
61
|
-
|
62
|
+
var mainEntryName = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : MAIN_ENTRY_NAME;
|
63
|
+
return entrypoints.length === 1 && entrypoints[0].entryName === mainEntryName;
|
62
64
|
};
|
package/dist/esm/cli/logger.js
CHANGED
@@ -45,6 +45,11 @@ var DEFAULT_CONFIG = {
|
|
45
45
|
displayLabel: true,
|
46
46
|
uppercaseLabel: false
|
47
47
|
};
|
48
|
+
var errorStackRegExp = /^\s*at\s.*:\d+:\d+[\s)]*$/;
|
49
|
+
var anonymousErrorStackRegExp = /^\s*at\s.*\(<anonymous>\)$/;
|
50
|
+
export var isErrorStackMessage = function(message) {
|
51
|
+
return errorStackRegExp.test(message) || anonymousErrorStackRegExp.test(message);
|
52
|
+
};
|
48
53
|
var Logger = /* @__PURE__ */ function() {
|
49
54
|
"use strict";
|
50
55
|
function Logger2() {
|
@@ -87,6 +92,11 @@ var Logger = /* @__PURE__ */ function() {
|
|
87
92
|
} else {
|
88
93
|
text = message.message;
|
89
94
|
}
|
95
|
+
} else if (logType.level === "error" && typeof message === "string") {
|
96
|
+
var lines = message.split("\n");
|
97
|
+
text = lines.map(function(line) {
|
98
|
+
return isErrorStackMessage(line) ? chalk.gray(line) : line;
|
99
|
+
}).join("\n");
|
90
100
|
} else {
|
91
101
|
text = "".concat(message);
|
92
102
|
}
|
package/dist/esm/cli/path.js
CHANGED
@@ -2,7 +2,7 @@ import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
|
|
2
2
|
import path from "path";
|
3
3
|
import os from "os";
|
4
4
|
import fs from "fs";
|
5
|
-
import { nanoid, upath
|
5
|
+
import { nanoid, upath } from "../compiled";
|
6
6
|
export var isPathString = function(test) {
|
7
7
|
return path.posix.basename(test) !== test || path.win32.basename(test) !== test;
|
8
8
|
};
|
@@ -13,7 +13,7 @@ export var normalizeOutputPath = function(s) {
|
|
13
13
|
return s.replace(/\\/g, "\\\\");
|
14
14
|
};
|
15
15
|
export var normalizeToPosixPath = function(p) {
|
16
|
-
return upath.normalizeSafe(path.normalize(p || "")).replace(/^([a-zA-Z]+):/, function(
|
16
|
+
return upath.normalizeSafe(path.normalize(p || "")).replace(/^([a-zA-Z]+):/, function(_, m) {
|
17
17
|
return "/".concat(m.toLowerCase());
|
18
18
|
});
|
19
19
|
};
|
@@ -27,26 +27,6 @@ export var getTemplatePath = function(prefix) {
|
|
27
27
|
parts.push(nanoid());
|
28
28
|
return (_path = path).resolve.apply(_path, _to_consumable_array(parts));
|
29
29
|
};
|
30
|
-
export function compilePathMatcherRegExp(match) {
|
31
|
-
if (typeof match !== "string") {
|
32
|
-
return match;
|
33
|
-
}
|
34
|
-
var escaped = _.escapeRegExp(match);
|
35
|
-
return new RegExp("(?<=\\W|^)".concat(escaped, "(?=\\W|$)"));
|
36
|
-
}
|
37
|
-
export var _joinPathParts = function(_part, i, parts) {
|
38
|
-
return _(parts).filter(function(part) {
|
39
|
-
return ![
|
40
|
-
"/",
|
41
|
-
"\\"
|
42
|
-
].includes(part);
|
43
|
-
}).tap(function(parts2) {
|
44
|
-
return parts2.unshift("");
|
45
|
-
}).slice(0, i + 2).join("/");
|
46
|
-
};
|
47
|
-
export function upwardPaths(start) {
|
48
|
-
return _(start).split(/[/\\]/).filter(Boolean).map(_joinPathParts).reverse().push("/").value();
|
49
|
-
}
|
50
30
|
export function getRealTemporaryDirectory() {
|
51
31
|
var ret = null;
|
52
32
|
try {
|
@@ -52,7 +52,7 @@ export var getAddressUrls = function() {
|
|
52
52
|
}, []);
|
53
53
|
};
|
54
54
|
export var prettyInstructions = function(appContext, config) {
|
55
|
-
var _appContext_builder_context_devServer, _appContext_builder, _config_dev;
|
55
|
+
var _appContext_builder_context_devServer, _appContext_builder, _config_dev, _config_source;
|
56
56
|
var entrypoints = appContext.entrypoints, serverRoutes = appContext.serverRoutes, port = appContext.port, apiOnly = appContext.apiOnly, checkedEntries = appContext.checkedEntries;
|
57
57
|
var isHttps = isDev() && ((_appContext_builder = appContext.builder) === null || _appContext_builder === void 0 ? void 0 : (_appContext_builder_context_devServer = _appContext_builder.context.devServer) === null || _appContext_builder_context_devServer === void 0 ? void 0 : _appContext_builder_context_devServer.https);
|
58
58
|
var urls = getAddressUrls(isHttps ? "https" : "http", port, (_config_dev = config.dev) === null || _config_dev === void 0 ? void 0 : _config_dev.host);
|
@@ -60,7 +60,7 @@ export var prettyInstructions = function(appContext, config) {
|
|
60
60
|
return route.entryName;
|
61
61
|
}) : serverRoutes;
|
62
62
|
var message = "App running at:\n\n";
|
63
|
-
if (isSingleEntry(entrypoints) || apiOnly) {
|
63
|
+
if (isSingleEntry(entrypoints, (_config_source = config.source) === null || _config_source === void 0 ? void 0 : _config_source.mainEntryName) || apiOnly) {
|
64
64
|
message += urls.map(function(param) {
|
65
65
|
var label = param.label, url = param.url;
|
66
66
|
return " ".concat(chalk.bold("> ".concat(label.padEnd(10)))).concat(chalk.cyanBright(normalizeUrl("".concat(url, "/").concat(routes[0].urlPath))), "\n");
|
@@ -72,7 +72,7 @@ export var prettyInstructions = function(appContext, config) {
|
|
72
72
|
})));
|
73
73
|
urls.forEach(function(param) {
|
74
74
|
var label = param.label, url = param.url;
|
75
|
-
message += " ".concat(chalk.bold("> ".concat(label)), "\n");
|
75
|
+
message += " ".concat(chalk.bold("> ".concat(label))).concat(routes.length === 0 ? chalk.cyanBright(url) : "", "\n");
|
76
76
|
routes.forEach(function(param2) {
|
77
77
|
var entryName = param2.entryName, urlPath = param2.urlPath, isSSR = param2.isSSR;
|
78
78
|
if (!checkedEntries.includes(entryName)) {
|
@@ -0,0 +1,29 @@
|
|
1
|
+
import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
|
2
|
+
function processHrtime(previousTimestamp) {
|
3
|
+
var now = (/* @__PURE__ */ new Date()).getTime();
|
4
|
+
var clocktime = now * 1e-3;
|
5
|
+
var seconds = Math.floor(clocktime);
|
6
|
+
var nanoseconds = Math.floor(clocktime % 1 * 1e9);
|
7
|
+
if (previousTimestamp) {
|
8
|
+
seconds -= previousTimestamp[0];
|
9
|
+
nanoseconds -= previousTimestamp[1];
|
10
|
+
if (nanoseconds < 0) {
|
11
|
+
seconds--;
|
12
|
+
nanoseconds += 1e9;
|
13
|
+
}
|
14
|
+
}
|
15
|
+
return [
|
16
|
+
seconds,
|
17
|
+
nanoseconds
|
18
|
+
];
|
19
|
+
}
|
20
|
+
var getLatency = function(hrtime) {
|
21
|
+
var _processHrtime = _sliced_to_array(processHrtime(hrtime), 2), s = _processHrtime[0], ns = _processHrtime[1];
|
22
|
+
return s * 1e3 + ns / 1e6;
|
23
|
+
};
|
24
|
+
export var time = function() {
|
25
|
+
var hrtime = processHrtime();
|
26
|
+
return function() {
|
27
|
+
return getLatency(hrtime);
|
28
|
+
};
|
29
|
+
};
|
@@ -97,6 +97,8 @@ export const CHAIN_ID = {
|
|
97
97
|
CSS_MODULES_TS: "css-modules-typescript",
|
98
98
|
/** mini-css-extract-plugin.loader */
|
99
99
|
MINI_CSS_EXTRACT: "mini-css-extract",
|
100
|
+
/** resolve-url-loader */
|
101
|
+
RESOLVE_URL_LOADER_FOR_SASS: "resolve-url-loader",
|
100
102
|
/** builder-plugin-image-compress.loader */
|
101
103
|
IMAGE_COMPRESS: "image-compress",
|
102
104
|
/** builder-plugin-image-compress svgo-loader */
|
@@ -144,6 +146,10 @@ export const CHAIN_ID = {
|
|
144
146
|
HTML_NONCE: "html-nonce",
|
145
147
|
/** HtmlCrossOriginPlugin */
|
146
148
|
HTML_CROSS_ORIGIN: "html-cross-origin",
|
149
|
+
/** htmlPreconnectPlugin */
|
150
|
+
HTML_PRECONNECT: "html-preconnect-plugin",
|
151
|
+
/** htmlDnsPrefetchPlugin */
|
152
|
+
HTML_DNS_PREFETCH: "html-dns-prefetch-plugin",
|
147
153
|
/** MiniCssExtractPlugin */
|
148
154
|
MINI_CSS_EXTRACT: "mini-css-extract",
|
149
155
|
/** VueLoaderPlugin */
|
@@ -9,7 +9,7 @@ export const LOADABLE_STATS_FILE = "loadable-stats.json";
|
|
9
9
|
export const API_DIR = "api";
|
10
10
|
export const SERVER_DIR = "server";
|
11
11
|
export const SHARED_DIR = "shared";
|
12
|
-
export const CONFIG_CACHE_DIR = "./node_modules/.cache/
|
12
|
+
export const CONFIG_CACHE_DIR = "./node_modules/.cache/bundle-require";
|
13
13
|
export const CONFIG_FILE_EXTENSIONS = [
|
14
14
|
".js",
|
15
15
|
".ts",
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import { MAIN_ENTRY_NAME } from "../constants";
|
1
2
|
import { isEmpty } from "./type";
|
2
3
|
export const isSSR = (config) => {
|
3
4
|
var _server, _server1;
|
@@ -35,9 +36,9 @@ export const isRouterV5 = (config) => {
|
|
35
36
|
return typeof ((_config_runtime = config.runtime) === null || _config_runtime === void 0 ? void 0 : _config_runtime.router) !== "boolean" && ((_config = config) === null || _config === void 0 ? void 0 : (_config_runtime1 = _config.runtime) === null || _config_runtime1 === void 0 ? void 0 : (_config_runtime_router = _config_runtime1.router) === null || _config_runtime_router === void 0 ? void 0 : _config_runtime_router.mode) === "react-router-5";
|
36
37
|
};
|
37
38
|
export const isSSGEntry = (config, entryName, entrypoints) => {
|
38
|
-
var _ssgConfig, _ssgConfig1;
|
39
|
+
var _config_source, _ssgConfig, _ssgConfig1;
|
39
40
|
const ssgConfig = config.output.ssg;
|
40
|
-
const useSSG = isSingleEntry(entrypoints) ? Boolean(ssgConfig) : ssgConfig === true || typeof ((_ssgConfig = ssgConfig) === null || _ssgConfig === void 0 ? void 0 : _ssgConfig[0]) === "function" || Boolean((_ssgConfig1 = ssgConfig) === null || _ssgConfig1 === void 0 ? void 0 : _ssgConfig1[entryName]);
|
41
|
+
const useSSG = isSingleEntry(entrypoints, (_config_source = config.source) === null || _config_source === void 0 ? void 0 : _config_source.mainEntryName) ? Boolean(ssgConfig) : ssgConfig === true || typeof ((_ssgConfig = ssgConfig) === null || _ssgConfig === void 0 ? void 0 : _ssgConfig[0]) === "function" || Boolean((_ssgConfig1 = ssgConfig) === null || _ssgConfig1 === void 0 ? void 0 : _ssgConfig1[entryName]);
|
41
42
|
return useSSG;
|
42
43
|
};
|
43
|
-
export const isSingleEntry = (entrypoints) => entrypoints.length === 1 && entrypoints[0].entryName ===
|
44
|
+
export const isSingleEntry = (entrypoints, mainEntryName = MAIN_ENTRY_NAME) => entrypoints.length === 1 && entrypoints[0].entryName === mainEntryName;
|
@@ -40,6 +40,9 @@ const DEFAULT_CONFIG = {
|
|
40
40
|
displayLabel: true,
|
41
41
|
uppercaseLabel: false
|
42
42
|
};
|
43
|
+
const errorStackRegExp = /^\s*at\s.*:\d+:\d+[\s)]*$/;
|
44
|
+
const anonymousErrorStackRegExp = /^\s*at\s.*\(<anonymous>\)$/;
|
45
|
+
export const isErrorStackMessage = (message) => errorStackRegExp.test(message) || anonymousErrorStackRegExp.test(message);
|
43
46
|
class Logger {
|
44
47
|
_log(type, message, ...args) {
|
45
48
|
if (message === void 0 || message === null) {
|
@@ -65,6 +68,9 @@ ${chalk.grey(rest.join("\n"))}`;
|
|
65
68
|
} else {
|
66
69
|
text = message.message;
|
67
70
|
}
|
71
|
+
} else if (logType.level === "error" && typeof message === "string") {
|
72
|
+
const lines = message.split("\n");
|
73
|
+
text = lines.map((line) => isErrorStackMessage(line) ? chalk.gray(line) : line).join("\n");
|
68
74
|
} else {
|
69
75
|
text = `${message}`;
|
70
76
|
}
|
@@ -1,11 +1,11 @@
|
|
1
1
|
import path from "path";
|
2
2
|
import os from "os";
|
3
3
|
import fs from "fs";
|
4
|
-
import { nanoid, upath
|
4
|
+
import { nanoid, upath } from "../compiled";
|
5
5
|
export const isPathString = (test) => path.posix.basename(test) !== test || path.win32.basename(test) !== test;
|
6
6
|
export const isRelativePath = (test) => /^\.\.?($|[\\/])/.test(test);
|
7
7
|
export const normalizeOutputPath = (s) => s.replace(/\\/g, "\\\\");
|
8
|
-
export const normalizeToPosixPath = (p) => upath.normalizeSafe(path.normalize(p || "")).replace(/^([a-zA-Z]+):/, (
|
8
|
+
export const normalizeToPosixPath = (p) => upath.normalizeSafe(path.normalize(p || "")).replace(/^([a-zA-Z]+):/, (_, m) => `/${m.toLowerCase()}`);
|
9
9
|
export const getTemplatePath = (prefix) => {
|
10
10
|
const tmpRoot = fs.realpathSync(os.tmpdir());
|
11
11
|
const parts = [
|
@@ -15,20 +15,6 @@ export const getTemplatePath = (prefix) => {
|
|
15
15
|
parts.push(nanoid());
|
16
16
|
return path.resolve(...parts);
|
17
17
|
};
|
18
|
-
export function compilePathMatcherRegExp(match) {
|
19
|
-
if (typeof match !== "string") {
|
20
|
-
return match;
|
21
|
-
}
|
22
|
-
const escaped = _.escapeRegExp(match);
|
23
|
-
return new RegExp(`(?<=\\W|^)${escaped}(?=\\W|$)`);
|
24
|
-
}
|
25
|
-
export const _joinPathParts = (_part, i, parts) => _(parts).filter((part) => ![
|
26
|
-
"/",
|
27
|
-
"\\"
|
28
|
-
].includes(part)).tap((parts2) => parts2.unshift("")).slice(0, i + 2).join("/");
|
29
|
-
export function upwardPaths(start) {
|
30
|
-
return _(start).split(/[/\\]/).filter(Boolean).map(_joinPathParts).reverse().push("/").value();
|
31
|
-
}
|
32
18
|
export function getRealTemporaryDirectory() {
|
33
19
|
let ret = null;
|
34
20
|
try {
|
@@ -48,19 +48,19 @@ export const getAddressUrls = (protocol = "http", port, host) => {
|
|
48
48
|
}, []);
|
49
49
|
};
|
50
50
|
export const prettyInstructions = (appContext, config) => {
|
51
|
-
var _appContext_builder_context_devServer, _appContext_builder, _config_dev;
|
51
|
+
var _appContext_builder_context_devServer, _appContext_builder, _config_dev, _config_source;
|
52
52
|
const { entrypoints, serverRoutes, port, apiOnly, checkedEntries } = appContext;
|
53
53
|
const isHttps = isDev() && ((_appContext_builder = appContext.builder) === null || _appContext_builder === void 0 ? void 0 : (_appContext_builder_context_devServer = _appContext_builder.context.devServer) === null || _appContext_builder_context_devServer === void 0 ? void 0 : _appContext_builder_context_devServer.https);
|
54
54
|
const urls = getAddressUrls(isHttps ? "https" : "http", port, (_config_dev = config.dev) === null || _config_dev === void 0 ? void 0 : _config_dev.host);
|
55
55
|
const routes = !apiOnly ? serverRoutes.filter((route) => route.entryName) : serverRoutes;
|
56
56
|
let message = "App running at:\n\n";
|
57
|
-
if (isSingleEntry(entrypoints) || apiOnly) {
|
57
|
+
if (isSingleEntry(entrypoints, (_config_source = config.source) === null || _config_source === void 0 ? void 0 : _config_source.mainEntryName) || apiOnly) {
|
58
58
|
message += urls.map(({ label, url }) => ` ${chalk.bold(`> ${label.padEnd(10)}`)}${chalk.cyanBright(normalizeUrl(`${url}/${routes[0].urlPath}`))}
|
59
59
|
`).join("");
|
60
60
|
} else {
|
61
61
|
const maxNameLength = Math.max(...routes.map((r) => r.entryName.length));
|
62
62
|
urls.forEach(({ label, url }) => {
|
63
|
-
message += ` ${chalk.bold(`> ${label}`)}
|
63
|
+
message += ` ${chalk.bold(`> ${label}`)}${routes.length === 0 ? chalk.cyanBright(url) : ""}
|
64
64
|
`;
|
65
65
|
routes.forEach(({ entryName, urlPath, isSSR }) => {
|
66
66
|
if (!checkedEntries.includes(entryName)) {
|
@@ -0,0 +1,28 @@
|
|
1
|
+
function processHrtime(previousTimestamp) {
|
2
|
+
const now = (/* @__PURE__ */ new Date()).getTime();
|
3
|
+
const clocktime = now * 1e-3;
|
4
|
+
let seconds = Math.floor(clocktime);
|
5
|
+
let nanoseconds = Math.floor(clocktime % 1 * 1e9);
|
6
|
+
if (previousTimestamp) {
|
7
|
+
seconds -= previousTimestamp[0];
|
8
|
+
nanoseconds -= previousTimestamp[1];
|
9
|
+
if (nanoseconds < 0) {
|
10
|
+
seconds--;
|
11
|
+
nanoseconds += 1e9;
|
12
|
+
}
|
13
|
+
}
|
14
|
+
return [
|
15
|
+
seconds,
|
16
|
+
nanoseconds
|
17
|
+
];
|
18
|
+
}
|
19
|
+
const getLatency = (hrtime) => {
|
20
|
+
const [s, ns] = processHrtime(hrtime);
|
21
|
+
return s * 1e3 + ns / 1e6;
|
22
|
+
};
|
23
|
+
export const time = () => {
|
24
|
+
const hrtime = processHrtime();
|
25
|
+
return () => {
|
26
|
+
return getLatency(hrtime);
|
27
|
+
};
|
28
|
+
};
|
@@ -97,6 +97,8 @@ export declare const CHAIN_ID: {
|
|
97
97
|
readonly CSS_MODULES_TS: "css-modules-typescript";
|
98
98
|
/** mini-css-extract-plugin.loader */
|
99
99
|
readonly MINI_CSS_EXTRACT: "mini-css-extract";
|
100
|
+
/** resolve-url-loader */
|
101
|
+
readonly RESOLVE_URL_LOADER_FOR_SASS: "resolve-url-loader";
|
100
102
|
/** builder-plugin-image-compress.loader */
|
101
103
|
readonly IMAGE_COMPRESS: "image-compress";
|
102
104
|
/** builder-plugin-image-compress svgo-loader */
|
@@ -144,6 +146,10 @@ export declare const CHAIN_ID: {
|
|
144
146
|
readonly HTML_NONCE: "html-nonce";
|
145
147
|
/** HtmlCrossOriginPlugin */
|
146
148
|
readonly HTML_CROSS_ORIGIN: "html-cross-origin";
|
149
|
+
/** htmlPreconnectPlugin */
|
150
|
+
readonly HTML_PRECONNECT: "html-preconnect-plugin";
|
151
|
+
/** htmlDnsPrefetchPlugin */
|
152
|
+
readonly HTML_DNS_PREFETCH: "html-dns-prefetch-plugin";
|
147
153
|
/** MiniCssExtractPlugin */
|
148
154
|
readonly MINI_CSS_EXTRACT: "mini-css-extract";
|
149
155
|
/** VueLoaderPlugin */
|
@@ -40,7 +40,7 @@ export declare const SHARED_DIR = "shared";
|
|
40
40
|
/**
|
41
41
|
* Modern.config.ts cached dir
|
42
42
|
*/
|
43
|
-
export declare const CONFIG_CACHE_DIR = "./node_modules/.cache/
|
43
|
+
export declare const CONFIG_CACHE_DIR = "./node_modules/.cache/bundle-require";
|
44
44
|
export declare const CONFIG_FILE_EXTENSIONS: string[];
|
45
45
|
/**
|
46
46
|
* Serialized config path
|
@@ -24,5 +24,5 @@ export declare const isRouterV5: (config: {
|
|
24
24
|
};
|
25
25
|
}) => boolean;
|
26
26
|
export declare const isSSGEntry: (config: any, entryName: string, entrypoints: EntryPoint[]) => boolean;
|
27
|
-
export declare const isSingleEntry: (entrypoints: EntryPoint[]) => boolean;
|
27
|
+
export declare const isSingleEntry: (entrypoints: EntryPoint[], mainEntryName?: string) => boolean;
|
28
28
|
export {};
|
package/dist/types/cli/path.d.ts
CHANGED
@@ -1,17 +1,8 @@
|
|
1
|
-
import { lodash as _ } from '../compiled';
|
2
1
|
export declare const isPathString: (test: string) => boolean;
|
3
2
|
export declare const isRelativePath: (test: string) => boolean;
|
4
3
|
export declare const normalizeOutputPath: (s: string) => string;
|
5
4
|
export declare const normalizeToPosixPath: (p: string | undefined) => string;
|
6
5
|
export declare const getTemplatePath: (prefix?: string) => string;
|
7
|
-
/**
|
8
|
-
* Compile path string to RegExp.
|
9
|
-
* @note Only support posix path.
|
10
|
-
*/
|
11
|
-
export declare function compilePathMatcherRegExp(match: string | RegExp): RegExp;
|
12
|
-
/** @internal @see {@link upwardPaths} */
|
13
|
-
export declare const _joinPathParts: (_part: unknown, i: number, parts: _.List<string>) => string;
|
14
|
-
export declare function upwardPaths(start: string): string[];
|
15
6
|
export declare function getRealTemporaryDirectory(): string | null;
|
16
7
|
export declare function splitPathString(str: string): string[];
|
17
8
|
export declare const removeLeadingSlash: (s: string) => string;
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const time: () => () => number;
|
package/package.json
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
"modern",
|
16
16
|
"modern.js"
|
17
17
|
],
|
18
|
-
"version": "2.
|
18
|
+
"version": "2.29.0",
|
19
19
|
"jsnext:source": "./src/index.ts",
|
20
20
|
"types": "./dist/types/index.d.ts",
|
21
21
|
"main": "./dist/cjs/index.js",
|
@@ -76,6 +76,11 @@
|
|
76
76
|
"import": "./dist/esm/universal/pluginDagSort.js",
|
77
77
|
"default": "./dist/cjs/universal/pluginDagSort.js"
|
78
78
|
},
|
79
|
+
"./universal/time": {
|
80
|
+
"types": "./dist/types/universal/time.d.ts",
|
81
|
+
"import": "./dist/esm/universal/time.js",
|
82
|
+
"default": "./dist/cjs/universal/time.js"
|
83
|
+
},
|
79
84
|
"./ajv": "./dist/compiled/ajv/index.js",
|
80
85
|
"./commander": "./dist/compiled/commander/index.js",
|
81
86
|
"./ora": "./dist/compiled/ora/index.js",
|
@@ -138,6 +143,9 @@
|
|
138
143
|
"universal/plugin-dag-sort": [
|
139
144
|
"./dist/types/universal/pluginDagSort.d.ts"
|
140
145
|
],
|
146
|
+
"universal/time": [
|
147
|
+
"./dist/types/universal/time.d.ts"
|
148
|
+
],
|
141
149
|
"ajv": [
|
142
150
|
"./dist/compiled/ajv/types/ajv.d.ts"
|
143
151
|
],
|
@@ -235,9 +243,9 @@
|
|
235
243
|
"typescript": "^5",
|
236
244
|
"webpack": "^5.88.1",
|
237
245
|
"@types/serialize-javascript": "^5.0.1",
|
238
|
-
"@modern-js/types": "2.
|
239
|
-
"@scripts/build": "2.
|
240
|
-
"@scripts/jest-config": "2.
|
246
|
+
"@modern-js/types": "2.29.0",
|
247
|
+
"@scripts/build": "2.29.0",
|
248
|
+
"@scripts/jest-config": "2.29.0"
|
241
249
|
},
|
242
250
|
"sideEffects": false,
|
243
251
|
"scripts": {
|
@@ -1,72 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
3
|
-
value: true
|
4
|
-
});
|
5
|
-
function _export(target, all) {
|
6
|
-
for (var name in all)
|
7
|
-
Object.defineProperty(target, name, {
|
8
|
-
enumerable: true,
|
9
|
-
get: all[name]
|
10
|
-
});
|
11
|
-
}
|
12
|
-
_export(exports, {
|
13
|
-
matchUpwardPathsAsUnknown: function() {
|
14
|
-
return matchUpwardPathsAsUnknown;
|
15
|
-
},
|
16
|
-
applyPathMatcher: function() {
|
17
|
-
return applyPathMatcher;
|
18
|
-
},
|
19
|
-
applyMatcherReplacement: function() {
|
20
|
-
return applyMatcherReplacement;
|
21
|
-
},
|
22
|
-
createDefaultPathMatchers: function() {
|
23
|
-
return createDefaultPathMatchers;
|
24
|
-
}
|
25
|
-
});
|
26
|
-
const _interop_require_default = require("@swc/helpers/_/_interop_require_default");
|
27
|
-
const _os = /* @__PURE__ */ _interop_require_default._(require("os"));
|
28
|
-
const _lodash = /* @__PURE__ */ _interop_require_default._(require("../../compiled/lodash"));
|
29
|
-
const _path = require("./path");
|
30
|
-
const matchUpwardPathsAsUnknown = (p) => (0, _lodash.default)((0, _path.upwardPaths)((0, _path.normalizeToPosixPath)(p))).map((match) => ({
|
31
|
-
match,
|
32
|
-
mark: "unknown"
|
33
|
-
})).slice(1, -1).value();
|
34
|
-
function applyPathMatcher(matcher, str, options = {}) {
|
35
|
-
const regex = (0, _path.compilePathMatcherRegExp)(matcher.match);
|
36
|
-
const replacer = (substring, ...args) => {
|
37
|
-
if (options.minPartials && (0, _path.splitPathString)(substring).length < options.minPartials) {
|
38
|
-
return substring;
|
39
|
-
}
|
40
|
-
const ret = typeof matcher.mark === "string" ? matcher.mark : matcher.mark(substring, ...args);
|
41
|
-
return `<${_lodash.default.snakeCase(ret).toUpperCase()}>`;
|
42
|
-
};
|
43
|
-
return str.replace(regex, replacer);
|
44
|
-
}
|
45
|
-
function applyMatcherReplacement(matchers, str, options = {}) {
|
46
|
-
return matchers.reduce((ret, matcher) => {
|
47
|
-
return applyPathMatcher(matcher, ret, options);
|
48
|
-
}, str);
|
49
|
-
}
|
50
|
-
const createDefaultPathMatchers = (root) => {
|
51
|
-
const ret = [
|
52
|
-
{
|
53
|
-
match: RegExp("(?<=\\/)(\\.pnpm\\/.+?\\/node_modules)(?=\\/)"),
|
54
|
-
mark: "pnpmInner"
|
55
|
-
}
|
56
|
-
];
|
57
|
-
const tmpdir = (0, _path.getRealTemporaryDirectory)();
|
58
|
-
tmpdir && ret.push({
|
59
|
-
match: tmpdir,
|
60
|
-
mark: "temp"
|
61
|
-
});
|
62
|
-
ret.push({
|
63
|
-
match: _os.default.tmpdir(),
|
64
|
-
mark: "temp"
|
65
|
-
});
|
66
|
-
ret.push({
|
67
|
-
match: _os.default.homedir(),
|
68
|
-
mark: "home"
|
69
|
-
});
|
70
|
-
ret.push(...matchUpwardPathsAsUnknown(root));
|
71
|
-
return ret;
|
72
|
-
};
|
@@ -1,60 +0,0 @@
|
|
1
|
-
import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
|
2
|
-
import os from "os";
|
3
|
-
import _ from "../../compiled/lodash";
|
4
|
-
import { compilePathMatcherRegExp, normalizeToPosixPath, getRealTemporaryDirectory, splitPathString, upwardPaths } from "./path";
|
5
|
-
export var matchUpwardPathsAsUnknown = function(p) {
|
6
|
-
return _(upwardPaths(normalizeToPosixPath(p))).map(function(match) {
|
7
|
-
return {
|
8
|
-
match: match,
|
9
|
-
mark: "unknown"
|
10
|
-
};
|
11
|
-
}).slice(1, -1).value();
|
12
|
-
};
|
13
|
-
export function applyPathMatcher(matcher, str) {
|
14
|
-
var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
|
15
|
-
var regex = compilePathMatcherRegExp(matcher.match);
|
16
|
-
var replacer = function(substring) {
|
17
|
-
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
18
|
-
args[_key - 1] = arguments[_key];
|
19
|
-
}
|
20
|
-
var _matcher;
|
21
|
-
if (options.minPartials && splitPathString(substring).length < options.minPartials) {
|
22
|
-
return substring;
|
23
|
-
}
|
24
|
-
var ret = typeof matcher.mark === "string" ? matcher.mark : (_matcher = matcher).mark.apply(_matcher, [
|
25
|
-
substring
|
26
|
-
].concat(_to_consumable_array(args)));
|
27
|
-
return "<".concat(_.snakeCase(ret).toUpperCase(), ">");
|
28
|
-
};
|
29
|
-
return str.replace(regex, replacer);
|
30
|
-
}
|
31
|
-
export function applyMatcherReplacement(matchers, str) {
|
32
|
-
var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
|
33
|
-
return matchers.reduce(function(ret, matcher) {
|
34
|
-
return applyPathMatcher(matcher, ret, options);
|
35
|
-
}, str);
|
36
|
-
}
|
37
|
-
export var createDefaultPathMatchers = function(root) {
|
38
|
-
var _ret;
|
39
|
-
var ret = [
|
40
|
-
{
|
41
|
-
match: RegExp("(?<=\\/)(\\.pnpm\\/.+?\\/node_modules)(?=\\/)"),
|
42
|
-
mark: "pnpmInner"
|
43
|
-
}
|
44
|
-
];
|
45
|
-
var tmpdir = getRealTemporaryDirectory();
|
46
|
-
tmpdir && ret.push({
|
47
|
-
match: tmpdir,
|
48
|
-
mark: "temp"
|
49
|
-
});
|
50
|
-
ret.push({
|
51
|
-
match: os.tmpdir(),
|
52
|
-
mark: "temp"
|
53
|
-
});
|
54
|
-
ret.push({
|
55
|
-
match: os.homedir(),
|
56
|
-
mark: "home"
|
57
|
-
});
|
58
|
-
(_ret = ret).push.apply(_ret, _to_consumable_array(matchUpwardPathsAsUnknown(root)));
|
59
|
-
return ret;
|
60
|
-
};
|
@@ -1,46 +0,0 @@
|
|
1
|
-
import os from "os";
|
2
|
-
import _ from "../../compiled/lodash";
|
3
|
-
import { compilePathMatcherRegExp, normalizeToPosixPath, getRealTemporaryDirectory, splitPathString, upwardPaths } from "./path";
|
4
|
-
export const matchUpwardPathsAsUnknown = (p) => _(upwardPaths(normalizeToPosixPath(p))).map((match) => ({
|
5
|
-
match,
|
6
|
-
mark: "unknown"
|
7
|
-
})).slice(1, -1).value();
|
8
|
-
export function applyPathMatcher(matcher, str, options = {}) {
|
9
|
-
const regex = compilePathMatcherRegExp(matcher.match);
|
10
|
-
const replacer = (substring, ...args) => {
|
11
|
-
if (options.minPartials && splitPathString(substring).length < options.minPartials) {
|
12
|
-
return substring;
|
13
|
-
}
|
14
|
-
const ret = typeof matcher.mark === "string" ? matcher.mark : matcher.mark(substring, ...args);
|
15
|
-
return `<${_.snakeCase(ret).toUpperCase()}>`;
|
16
|
-
};
|
17
|
-
return str.replace(regex, replacer);
|
18
|
-
}
|
19
|
-
export function applyMatcherReplacement(matchers, str, options = {}) {
|
20
|
-
return matchers.reduce((ret, matcher) => {
|
21
|
-
return applyPathMatcher(matcher, ret, options);
|
22
|
-
}, str);
|
23
|
-
}
|
24
|
-
export const createDefaultPathMatchers = (root) => {
|
25
|
-
const ret = [
|
26
|
-
{
|
27
|
-
match: RegExp("(?<=\\/)(\\.pnpm\\/.+?\\/node_modules)(?=\\/)"),
|
28
|
-
mark: "pnpmInner"
|
29
|
-
}
|
30
|
-
];
|
31
|
-
const tmpdir = getRealTemporaryDirectory();
|
32
|
-
tmpdir && ret.push({
|
33
|
-
match: tmpdir,
|
34
|
-
mark: "temp"
|
35
|
-
});
|
36
|
-
ret.push({
|
37
|
-
match: os.tmpdir(),
|
38
|
-
mark: "temp"
|
39
|
-
});
|
40
|
-
ret.push({
|
41
|
-
match: os.homedir(),
|
42
|
-
mark: "home"
|
43
|
-
});
|
44
|
-
ret.push(...matchUpwardPathsAsUnknown(root));
|
45
|
-
return ret;
|
46
|
-
};
|
@@ -1,16 +0,0 @@
|
|
1
|
-
/** Different from */
|
2
|
-
export type PathMatchExpression = string | RegExp;
|
3
|
-
export interface PathMatcher {
|
4
|
-
match: PathMatchExpression;
|
5
|
-
mark: string | ((substring: string, ...args: any[]) => string);
|
6
|
-
}
|
7
|
-
export declare const matchUpwardPathsAsUnknown: (p: string) => {
|
8
|
-
match: string;
|
9
|
-
mark: string;
|
10
|
-
}[];
|
11
|
-
export interface ApplyPathMatcherOptions {
|
12
|
-
minPartials?: number;
|
13
|
-
}
|
14
|
-
export declare function applyPathMatcher(matcher: PathMatcher, str: string, options?: ApplyPathMatcherOptions): string;
|
15
|
-
export declare function applyMatcherReplacement(matchers: PathMatcher[], str: string, options?: ApplyPathMatcherOptions): string;
|
16
|
-
export declare const createDefaultPathMatchers: (root: string) => PathMatcher[];
|