screw-up 0.15.0 → 0.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/dist/{internal-DoM-p19R.cjs → analyzer-BxxtJjNH.cjs} +265 -244
- package/dist/analyzer-BxxtJjNH.cjs.map +1 -0
- package/dist/{internal-Dy8K0duL.js → analyzer-DxAKRQPj.js} +264 -243
- package/dist/analyzer-DxAKRQPj.js.map +1 -0
- package/dist/analyzer.d.ts +8 -8
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/cli-internal.d.ts +8 -5
- package/dist/cli-internal.d.ts.map +1 -1
- package/dist/cli.d.ts +3 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/generated/packageMetadata.d.ts +4 -4
- package/dist/index.cjs +28 -13
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -6
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +11 -12
- package/dist/internal.d.ts.map +1 -1
- package/dist/main.cjs +61 -52
- package/dist/main.cjs.map +1 -1
- package/dist/main.d.ts +2 -2
- package/dist/main.js +26 -17
- package/dist/main.js.map +1 -1
- package/dist/{packageMetadata-B4rW4ext.cjs → packageMetadata-DGRPlTsF.cjs} +4 -4
- package/dist/{packageMetadata-B4rW4ext.cjs.map → packageMetadata-DGRPlTsF.cjs.map} +1 -1
- package/dist/{packageMetadata-svUXyND1.js → packageMetadata-DYnOuFrt.js} +4 -4
- package/dist/{packageMetadata-svUXyND1.js.map → packageMetadata-DYnOuFrt.js.map} +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/vite-plugin.d.ts +3 -3
- package/dist/vite-plugin.d.ts.map +1 -1
- package/package.json +6 -6
- package/dist/internal-DoM-p19R.cjs.map +0 -1
- package/dist/internal-Dy8K0duL.js.map +0 -1
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* name: screw-up
|
|
3
|
-
* version: 0.
|
|
3
|
+
* version: 0.17.0
|
|
4
4
|
* description: Simply package metadata inserter on Vite plugin
|
|
5
5
|
* author: Kouji Matsui (@kekyo@mi.kekyo.net)
|
|
6
6
|
* license: MIT
|
|
7
7
|
* repository.url: https://github.com/kekyo/screw-up.git
|
|
8
|
-
* git.commit.hash:
|
|
8
|
+
* git.commit.hash: 6ca2d4183d3123c9e0cf7aa444bdb85c1e60e9fb
|
|
9
9
|
*/
|
|
10
|
-
import * as fs from "fs";
|
|
11
10
|
import { existsSync } from "fs";
|
|
11
|
+
import * as fs from "fs/promises";
|
|
12
12
|
import { readFile } from "fs/promises";
|
|
13
13
|
import { dirname, join } from "path";
|
|
14
14
|
import { glob } from "glob";
|
|
@@ -1095,6 +1095,241 @@ const JSON5 = {
|
|
|
1095
1095
|
stringify
|
|
1096
1096
|
};
|
|
1097
1097
|
var lib = JSON5;
|
|
1098
|
+
const createConsoleLogger = () => {
|
|
1099
|
+
return {
|
|
1100
|
+
debug: (msg) => console.debug(msg),
|
|
1101
|
+
info: (msg) => console.info(msg),
|
|
1102
|
+
warn: (msg) => console.warn(msg),
|
|
1103
|
+
error: (msg) => console.error(msg)
|
|
1104
|
+
};
|
|
1105
|
+
};
|
|
1106
|
+
const flattenObject = (obj, prefix, map) => {
|
|
1107
|
+
for (const [key2, value] of Object.entries(obj)) {
|
|
1108
|
+
if (!value)
|
|
1109
|
+
continue;
|
|
1110
|
+
const fullKey = prefix ? `${prefix}.${key2}` : key2;
|
|
1111
|
+
if (typeof value === "string") {
|
|
1112
|
+
map[fullKey] = value;
|
|
1113
|
+
} else if (Array.isArray(value)) {
|
|
1114
|
+
map[fullKey] = value.map((v) => String(v)).join(",");
|
|
1115
|
+
} else if (typeof value === "object") {
|
|
1116
|
+
flattenObject(value, fullKey, map);
|
|
1117
|
+
} else {
|
|
1118
|
+
map[fullKey] = String(value);
|
|
1119
|
+
}
|
|
1120
|
+
}
|
|
1121
|
+
};
|
|
1122
|
+
const findWorkspaceRoot = async (startPath, logger) => {
|
|
1123
|
+
let currentPath = startPath;
|
|
1124
|
+
while (currentPath !== dirname(currentPath)) {
|
|
1125
|
+
const packageJsonPath = join(currentPath, "package.json");
|
|
1126
|
+
if (existsSync(packageJsonPath)) {
|
|
1127
|
+
try {
|
|
1128
|
+
const content = await readFile(packageJsonPath, "utf-8");
|
|
1129
|
+
const packageJson = lib.parse(content);
|
|
1130
|
+
if (packageJson.workspaces || existsSync(join(currentPath, "pnpm-workspace.yaml")) || existsSync(join(currentPath, "lerna.json"))) {
|
|
1131
|
+
return currentPath;
|
|
1132
|
+
}
|
|
1133
|
+
} catch (error) {
|
|
1134
|
+
logger.warn(`Failed to parse package.json at ${packageJsonPath}: ${error}`);
|
|
1135
|
+
}
|
|
1136
|
+
}
|
|
1137
|
+
currentPath = dirname(currentPath);
|
|
1138
|
+
}
|
|
1139
|
+
return void 0;
|
|
1140
|
+
};
|
|
1141
|
+
const collectWorkspaceSiblings = async (workspaceRoot, fetchGitMetadata, alwaysOverrideVersionFromGit, inheritableFields, logger) => {
|
|
1142
|
+
const siblings = /* @__PURE__ */ new Map();
|
|
1143
|
+
try {
|
|
1144
|
+
const rootPackageJsonPath = join(workspaceRoot, "package.json");
|
|
1145
|
+
const content = await readFile(rootPackageJsonPath, "utf-8");
|
|
1146
|
+
const rootPackageJson = lib.parse(content);
|
|
1147
|
+
const workspacePatterns = rootPackageJson.workspaces;
|
|
1148
|
+
if (!workspacePatterns || !Array.isArray(workspacePatterns)) {
|
|
1149
|
+
return siblings;
|
|
1150
|
+
}
|
|
1151
|
+
const workspaceDirs = /* @__PURE__ */ new Set();
|
|
1152
|
+
for (const pattern of workspacePatterns) {
|
|
1153
|
+
const matches = await glob(pattern, {
|
|
1154
|
+
cwd: workspaceRoot
|
|
1155
|
+
});
|
|
1156
|
+
matches.forEach((match) => workspaceDirs.add(match));
|
|
1157
|
+
}
|
|
1158
|
+
for (const workspaceDir of workspaceDirs) {
|
|
1159
|
+
const packageJsonPath = join(workspaceRoot, workspaceDir, "package.json");
|
|
1160
|
+
if (existsSync(packageJsonPath)) {
|
|
1161
|
+
try {
|
|
1162
|
+
const packagePath = join(workspaceRoot, workspaceDir);
|
|
1163
|
+
const resolvedPackage = await resolveRawPackageJsonObject(
|
|
1164
|
+
packagePath,
|
|
1165
|
+
fetchGitMetadata,
|
|
1166
|
+
alwaysOverrideVersionFromGit,
|
|
1167
|
+
inheritableFields,
|
|
1168
|
+
logger
|
|
1169
|
+
);
|
|
1170
|
+
const packageJson = resolvedPackage.metadata;
|
|
1171
|
+
if (packageJson.name && packageJson.version) {
|
|
1172
|
+
siblings.set(packageJson.name, {
|
|
1173
|
+
name: packageJson.name,
|
|
1174
|
+
version: packageJson.version,
|
|
1175
|
+
path: packagePath
|
|
1176
|
+
});
|
|
1177
|
+
}
|
|
1178
|
+
} catch (error) {
|
|
1179
|
+
logger.warn(`Failed to resolve package.json from ${packageJsonPath}: ${error}`);
|
|
1180
|
+
}
|
|
1181
|
+
}
|
|
1182
|
+
}
|
|
1183
|
+
} catch (error) {
|
|
1184
|
+
logger.warn(`Failed to collect workspace siblings from ${workspaceRoot}: ${error}`);
|
|
1185
|
+
}
|
|
1186
|
+
return siblings;
|
|
1187
|
+
};
|
|
1188
|
+
const replacePeerDependenciesWildcards = (packageJson, siblings, versionPrefix) => {
|
|
1189
|
+
const modifiedPackageJson = lib.parse(JSON.stringify(packageJson));
|
|
1190
|
+
if (!modifiedPackageJson.peerDependencies || typeof modifiedPackageJson.peerDependencies !== "object") {
|
|
1191
|
+
return modifiedPackageJson;
|
|
1192
|
+
}
|
|
1193
|
+
for (const [depName, depVersion] of Object.entries(modifiedPackageJson.peerDependencies)) {
|
|
1194
|
+
if (depVersion === "*" && siblings.has(depName)) {
|
|
1195
|
+
const sibling = siblings.get(depName);
|
|
1196
|
+
modifiedPackageJson.peerDependencies[depName] = `${versionPrefix}${sibling.version}`;
|
|
1197
|
+
}
|
|
1198
|
+
}
|
|
1199
|
+
return modifiedPackageJson;
|
|
1200
|
+
};
|
|
1201
|
+
const mergePackageMetadata = async (fetchGitMetadata, alwaysOverrideVersionFromGit, sourceMap, parentMetadata, childMetadata, parentSourceDir, childSourceDir, _repositoryPath) => {
|
|
1202
|
+
const metadata = await fetchGitMetadata();
|
|
1203
|
+
const merged = {};
|
|
1204
|
+
flattenObject(metadata, "", merged);
|
|
1205
|
+
for (const key2 in parentMetadata) {
|
|
1206
|
+
const value = parentMetadata[key2];
|
|
1207
|
+
if (value !== void 0) {
|
|
1208
|
+
merged[key2] = value;
|
|
1209
|
+
sourceMap.set(key2, parentSourceDir);
|
|
1210
|
+
}
|
|
1211
|
+
}
|
|
1212
|
+
for (const key2 in childMetadata) {
|
|
1213
|
+
const value = childMetadata[key2];
|
|
1214
|
+
if (value !== void 0) {
|
|
1215
|
+
merged[key2] = value;
|
|
1216
|
+
sourceMap.set(key2, childSourceDir);
|
|
1217
|
+
}
|
|
1218
|
+
}
|
|
1219
|
+
if (alwaysOverrideVersionFromGit && metadata.version) {
|
|
1220
|
+
merged.version = metadata.version;
|
|
1221
|
+
}
|
|
1222
|
+
return merged;
|
|
1223
|
+
};
|
|
1224
|
+
const mergeRawPackageJson = async (fetchGitMetadata, alwaysOverrideVersionFromGit, inheritableFields, sourceMap, parentMetadata, childMetadata, parentSourceDir, childSourceDir, repositoryPath) => {
|
|
1225
|
+
const gitMetadata = await fetchGitMetadata();
|
|
1226
|
+
const merged = { ...gitMetadata };
|
|
1227
|
+
for (const key2 in parentMetadata) {
|
|
1228
|
+
if (inheritableFields.has(key2)) {
|
|
1229
|
+
const value = parentMetadata[key2];
|
|
1230
|
+
if (value !== void 0) {
|
|
1231
|
+
merged[key2] = value;
|
|
1232
|
+
sourceMap.set(key2, parentSourceDir);
|
|
1233
|
+
}
|
|
1234
|
+
}
|
|
1235
|
+
}
|
|
1236
|
+
for (const key2 in childMetadata) {
|
|
1237
|
+
const value = childMetadata[key2];
|
|
1238
|
+
if (value !== void 0) {
|
|
1239
|
+
merged[key2] = value;
|
|
1240
|
+
sourceMap.set(key2, childSourceDir);
|
|
1241
|
+
}
|
|
1242
|
+
}
|
|
1243
|
+
if (alwaysOverrideVersionFromGit && gitMetadata.version) {
|
|
1244
|
+
merged.version = gitMetadata.version;
|
|
1245
|
+
sourceMap.set("version", repositoryPath);
|
|
1246
|
+
}
|
|
1247
|
+
return merged;
|
|
1248
|
+
};
|
|
1249
|
+
const resolvePackageMetadataT = async (projectRoot, logger, readPackageMetadataFn, mergePackageMetadataFn) => {
|
|
1250
|
+
const workspaceRoot = await findWorkspaceRoot(projectRoot, logger);
|
|
1251
|
+
if (!workspaceRoot) {
|
|
1252
|
+
const localPackagePath = join(projectRoot, "package.json");
|
|
1253
|
+
const localMetadata = await readPackageMetadataFn(localPackagePath);
|
|
1254
|
+
return mergePackageMetadataFn(
|
|
1255
|
+
{},
|
|
1256
|
+
localMetadata,
|
|
1257
|
+
"",
|
|
1258
|
+
// dummy
|
|
1259
|
+
projectRoot,
|
|
1260
|
+
projectRoot
|
|
1261
|
+
);
|
|
1262
|
+
}
|
|
1263
|
+
const projectPackagePath = join(projectRoot, "package.json");
|
|
1264
|
+
const rootPackagePath = join(workspaceRoot, "package.json");
|
|
1265
|
+
const metadata = await readPackageMetadataFn(rootPackagePath);
|
|
1266
|
+
if (projectPackagePath !== rootPackagePath && existsSync(projectPackagePath)) {
|
|
1267
|
+
const projectMetadata = await readPackageMetadataFn(projectPackagePath);
|
|
1268
|
+
return mergePackageMetadataFn(
|
|
1269
|
+
metadata,
|
|
1270
|
+
projectMetadata,
|
|
1271
|
+
workspaceRoot,
|
|
1272
|
+
projectRoot,
|
|
1273
|
+
projectRoot
|
|
1274
|
+
);
|
|
1275
|
+
} else {
|
|
1276
|
+
return mergePackageMetadataFn(
|
|
1277
|
+
{},
|
|
1278
|
+
metadata,
|
|
1279
|
+
"",
|
|
1280
|
+
// dummy
|
|
1281
|
+
workspaceRoot,
|
|
1282
|
+
projectRoot
|
|
1283
|
+
);
|
|
1284
|
+
}
|
|
1285
|
+
};
|
|
1286
|
+
const readPackageMetadata = async (logger, packagePath) => {
|
|
1287
|
+
try {
|
|
1288
|
+
const content = await readFile(packagePath, "utf-8");
|
|
1289
|
+
const json = lib.parse(content);
|
|
1290
|
+
const map = {};
|
|
1291
|
+
flattenObject(json, "", map);
|
|
1292
|
+
return map;
|
|
1293
|
+
} catch (error) {
|
|
1294
|
+
logger.error(`Failed to read package.json from ${packagePath}: ${error}`);
|
|
1295
|
+
return {};
|
|
1296
|
+
}
|
|
1297
|
+
};
|
|
1298
|
+
const resolvePackageMetadata = async (projectRoot, fetchGitMetadata, alwaysOverrideVersionFromGit, logger) => {
|
|
1299
|
+
const sourceMap = /* @__PURE__ */ new Map();
|
|
1300
|
+
const metadata = await resolvePackageMetadataT(
|
|
1301
|
+
projectRoot,
|
|
1302
|
+
logger,
|
|
1303
|
+
readPackageMetadata.bind(void 0, logger),
|
|
1304
|
+
mergePackageMetadata.bind(void 0, fetchGitMetadata, alwaysOverrideVersionFromGit, sourceMap)
|
|
1305
|
+
);
|
|
1306
|
+
return {
|
|
1307
|
+
metadata,
|
|
1308
|
+
sourceMap
|
|
1309
|
+
};
|
|
1310
|
+
};
|
|
1311
|
+
const readRawPackageJson = async (logger, packagePath) => {
|
|
1312
|
+
try {
|
|
1313
|
+
const content = await readFile(packagePath, "utf-8");
|
|
1314
|
+
return lib.parse(content);
|
|
1315
|
+
} catch (error) {
|
|
1316
|
+
logger.error(`Failed to read package.json from ${packagePath}: ${error}`);
|
|
1317
|
+
throw error;
|
|
1318
|
+
}
|
|
1319
|
+
};
|
|
1320
|
+
const resolveRawPackageJsonObject = async (projectRoot, fetchGitMetadata, alwaysOverrideVersionFromGit, inheritableFields, logger) => {
|
|
1321
|
+
const sourceMap = /* @__PURE__ */ new Map();
|
|
1322
|
+
const packageJson = await resolvePackageMetadataT(
|
|
1323
|
+
projectRoot,
|
|
1324
|
+
logger,
|
|
1325
|
+
readRawPackageJson.bind(void 0, logger),
|
|
1326
|
+
mergeRawPackageJson.bind(void 0, fetchGitMetadata, alwaysOverrideVersionFromGit, inheritableFields, sourceMap)
|
|
1327
|
+
);
|
|
1328
|
+
return {
|
|
1329
|
+
metadata: packageJson,
|
|
1330
|
+
sourceMap
|
|
1331
|
+
};
|
|
1332
|
+
};
|
|
1098
1333
|
function getDefaultExportFromCjs(x) {
|
|
1099
1334
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
|
|
1100
1335
|
}
|
|
@@ -1574,10 +1809,10 @@ const getRelatedBranches = async (repositoryPath, commitHash) => {
|
|
|
1574
1809
|
return [];
|
|
1575
1810
|
}
|
|
1576
1811
|
};
|
|
1577
|
-
const
|
|
1812
|
+
const getModifiedFiles = async (repositoryPath) => {
|
|
1578
1813
|
try {
|
|
1579
1814
|
const status = await git.statusMatrix({ fs, dir: repositoryPath });
|
|
1580
|
-
return status.
|
|
1815
|
+
return status.filter(
|
|
1581
1816
|
([, head, workdir, stage]) => workdir === 2 || // modified in working directory (unstaged)
|
|
1582
1817
|
stage === 2 || // modified in stage (staged)
|
|
1583
1818
|
stage === 3 || // added to stage (staged)
|
|
@@ -1586,9 +1821,12 @@ const hasModifiedFiles = async (repositoryPath) => {
|
|
|
1586
1821
|
// untracked files (respecting .gitignore)
|
|
1587
1822
|
);
|
|
1588
1823
|
} catch (e) {
|
|
1589
|
-
return
|
|
1824
|
+
return [];
|
|
1590
1825
|
}
|
|
1591
1826
|
};
|
|
1827
|
+
const formatModifiedFile = (modifiedFile) => {
|
|
1828
|
+
return `'${modifiedFile[0]}':${modifiedFile[1]}:${modifiedFile[2]}:${modifiedFile[3]}`;
|
|
1829
|
+
};
|
|
1592
1830
|
const lookupVersionLabelRecursive = async (cwd, commit, reachedCommits) => {
|
|
1593
1831
|
const scheduledStack = [];
|
|
1594
1832
|
let version = { major: 0, minor: 0, build: 1, original: "0.0.1" };
|
|
@@ -1653,9 +1891,13 @@ const getGitMetadata = async (repositoryPath, checkWorkingDirectoryStatus, logge
|
|
|
1653
1891
|
const gitMetadata = { tags: [], branches: [] };
|
|
1654
1892
|
metadata.git = gitMetadata;
|
|
1655
1893
|
if (version) {
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1894
|
+
if (checkWorkingDirectoryStatus) {
|
|
1895
|
+
const modifiedFiles = await getModifiedFiles(gitRootPath);
|
|
1896
|
+
if (modifiedFiles.length >= 1) {
|
|
1897
|
+
const newVersion = incrementLastVersionComponent(version);
|
|
1898
|
+
logger.debug(`Increased git version by detected modified items: ${formatVersion(version)} ---> ${formatVersion(newVersion)}, Files=[${modifiedFiles.map(formatModifiedFile).join(", ")}]`);
|
|
1899
|
+
version = newVersion;
|
|
1900
|
+
}
|
|
1659
1901
|
}
|
|
1660
1902
|
const gitVersion = formatVersion(version);
|
|
1661
1903
|
gitMetadata.version = gitVersion;
|
|
@@ -1676,239 +1918,17 @@ const getGitMetadata = async (repositoryPath, checkWorkingDirectoryStatus, logge
|
|
|
1676
1918
|
}
|
|
1677
1919
|
return metadata;
|
|
1678
1920
|
};
|
|
1679
|
-
const
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
continue;
|
|
1691
|
-
const fullKey = prefix ? `${prefix}.${key2}` : key2;
|
|
1692
|
-
if (typeof value === "string") {
|
|
1693
|
-
map[fullKey] = value;
|
|
1694
|
-
} else if (Array.isArray(value)) {
|
|
1695
|
-
map[fullKey] = value.map((v) => String(v)).join(",");
|
|
1696
|
-
} else if (typeof value === "object") {
|
|
1697
|
-
flattenObject(value, fullKey, map);
|
|
1698
|
-
} else {
|
|
1699
|
-
map[fullKey] = String(value);
|
|
1700
|
-
}
|
|
1701
|
-
}
|
|
1702
|
-
};
|
|
1703
|
-
const findWorkspaceRoot = async (startPath, logger) => {
|
|
1704
|
-
let currentPath = startPath;
|
|
1705
|
-
while (currentPath !== dirname(currentPath)) {
|
|
1706
|
-
const packageJsonPath = join(currentPath, "package.json");
|
|
1707
|
-
if (existsSync(packageJsonPath)) {
|
|
1708
|
-
try {
|
|
1709
|
-
const content = await readFile(packageJsonPath, "utf-8");
|
|
1710
|
-
const packageJson = lib.parse(content);
|
|
1711
|
-
if (packageJson.workspaces || existsSync(join(currentPath, "pnpm-workspace.yaml")) || existsSync(join(currentPath, "lerna.json"))) {
|
|
1712
|
-
return currentPath;
|
|
1713
|
-
}
|
|
1714
|
-
} catch (error) {
|
|
1715
|
-
logger.warn(`Failed to parse package.json at ${packageJsonPath}: ${error}`);
|
|
1716
|
-
}
|
|
1717
|
-
}
|
|
1718
|
-
currentPath = dirname(currentPath);
|
|
1719
|
-
}
|
|
1720
|
-
return void 0;
|
|
1721
|
-
};
|
|
1722
|
-
const collectWorkspaceSiblings = async (workspaceRoot, checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, inheritableFields, logger) => {
|
|
1723
|
-
const siblings = /* @__PURE__ */ new Map();
|
|
1724
|
-
try {
|
|
1725
|
-
const rootPackageJsonPath = join(workspaceRoot, "package.json");
|
|
1726
|
-
const content = await readFile(rootPackageJsonPath, "utf-8");
|
|
1727
|
-
const rootPackageJson = lib.parse(content);
|
|
1728
|
-
const workspacePatterns = rootPackageJson.workspaces;
|
|
1729
|
-
if (!workspacePatterns || !Array.isArray(workspacePatterns)) {
|
|
1730
|
-
return siblings;
|
|
1731
|
-
}
|
|
1732
|
-
const workspaceDirs = /* @__PURE__ */ new Set();
|
|
1733
|
-
for (const pattern of workspacePatterns) {
|
|
1734
|
-
const matches = await glob(pattern, {
|
|
1735
|
-
cwd: workspaceRoot
|
|
1736
|
-
});
|
|
1737
|
-
matches.forEach((match) => workspaceDirs.add(match));
|
|
1738
|
-
}
|
|
1739
|
-
for (const workspaceDir of workspaceDirs) {
|
|
1740
|
-
const packageJsonPath = join(workspaceRoot, workspaceDir, "package.json");
|
|
1741
|
-
if (existsSync(packageJsonPath)) {
|
|
1742
|
-
try {
|
|
1743
|
-
const packagePath = join(workspaceRoot, workspaceDir);
|
|
1744
|
-
const resolvedPackage = await resolveRawPackageJsonObject(
|
|
1745
|
-
packagePath,
|
|
1746
|
-
checkWorkingDirectoryStatus,
|
|
1747
|
-
alwaysOverrideVersionFromGit,
|
|
1748
|
-
inheritableFields,
|
|
1749
|
-
logger
|
|
1750
|
-
);
|
|
1751
|
-
const packageJson = resolvedPackage.metadata;
|
|
1752
|
-
if (packageJson.name && packageJson.version) {
|
|
1753
|
-
siblings.set(packageJson.name, {
|
|
1754
|
-
name: packageJson.name,
|
|
1755
|
-
version: packageJson.version,
|
|
1756
|
-
path: packagePath
|
|
1757
|
-
});
|
|
1758
|
-
}
|
|
1759
|
-
} catch (error) {
|
|
1760
|
-
logger.warn(`Failed to resolve package.json from ${packageJsonPath}: ${error}`);
|
|
1761
|
-
}
|
|
1762
|
-
}
|
|
1763
|
-
}
|
|
1764
|
-
} catch (error) {
|
|
1765
|
-
logger.warn(`Failed to collect workspace siblings from ${workspaceRoot}: ${error}`);
|
|
1766
|
-
}
|
|
1767
|
-
return siblings;
|
|
1768
|
-
};
|
|
1769
|
-
const replacePeerDependenciesWildcards = (packageJson, siblings, versionPrefix) => {
|
|
1770
|
-
const modifiedPackageJson = lib.parse(JSON.stringify(packageJson));
|
|
1771
|
-
if (!modifiedPackageJson.peerDependencies || typeof modifiedPackageJson.peerDependencies !== "object") {
|
|
1772
|
-
return modifiedPackageJson;
|
|
1773
|
-
}
|
|
1774
|
-
for (const [depName, depVersion] of Object.entries(modifiedPackageJson.peerDependencies)) {
|
|
1775
|
-
if (depVersion === "*" && siblings.has(depName)) {
|
|
1776
|
-
const sibling = siblings.get(depName);
|
|
1777
|
-
modifiedPackageJson.peerDependencies[depName] = `${versionPrefix}${sibling.version}`;
|
|
1778
|
-
}
|
|
1779
|
-
}
|
|
1780
|
-
return modifiedPackageJson;
|
|
1781
|
-
};
|
|
1782
|
-
const mergePackageMetadata = async (checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, sourceMap, logger, parentMetadata, childMetadata, parentSourceDir, childSourceDir, repositoryPath) => {
|
|
1783
|
-
const metadata = await getGitMetadata(repositoryPath, checkWorkingDirectoryStatus, logger);
|
|
1784
|
-
const merged = {};
|
|
1785
|
-
flattenObject(metadata, "", merged);
|
|
1786
|
-
for (const key2 in parentMetadata) {
|
|
1787
|
-
const value = parentMetadata[key2];
|
|
1788
|
-
if (value !== void 0) {
|
|
1789
|
-
merged[key2] = value;
|
|
1790
|
-
sourceMap.set(key2, parentSourceDir);
|
|
1791
|
-
}
|
|
1792
|
-
}
|
|
1793
|
-
for (const key2 in childMetadata) {
|
|
1794
|
-
const value = childMetadata[key2];
|
|
1795
|
-
if (value !== void 0) {
|
|
1796
|
-
merged[key2] = value;
|
|
1797
|
-
sourceMap.set(key2, childSourceDir);
|
|
1798
|
-
}
|
|
1799
|
-
}
|
|
1800
|
-
if (alwaysOverrideVersionFromGit && metadata.version) {
|
|
1801
|
-
merged.version = metadata.version;
|
|
1802
|
-
}
|
|
1803
|
-
return merged;
|
|
1804
|
-
};
|
|
1805
|
-
const mergeRawPackageJson = async (checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, inheritableFields, sourceMap, logger, parentMetadata, childMetadata, parentSourceDir, childSourceDir, repositoryPath) => {
|
|
1806
|
-
const gitMetadata = await getGitMetadata(repositoryPath, checkWorkingDirectoryStatus, logger);
|
|
1807
|
-
const merged = { ...gitMetadata };
|
|
1808
|
-
for (const key2 in parentMetadata) {
|
|
1809
|
-
if (inheritableFields.has(key2)) {
|
|
1810
|
-
const value = parentMetadata[key2];
|
|
1811
|
-
if (value !== void 0) {
|
|
1812
|
-
merged[key2] = value;
|
|
1813
|
-
sourceMap.set(key2, parentSourceDir);
|
|
1814
|
-
}
|
|
1815
|
-
}
|
|
1816
|
-
}
|
|
1817
|
-
for (const key2 in childMetadata) {
|
|
1818
|
-
const value = childMetadata[key2];
|
|
1819
|
-
if (value !== void 0) {
|
|
1820
|
-
merged[key2] = value;
|
|
1821
|
-
sourceMap.set(key2, childSourceDir);
|
|
1822
|
-
}
|
|
1823
|
-
}
|
|
1824
|
-
if (alwaysOverrideVersionFromGit && gitMetadata.version) {
|
|
1825
|
-
merged.version = gitMetadata.version;
|
|
1826
|
-
sourceMap.set("version", repositoryPath);
|
|
1827
|
-
}
|
|
1828
|
-
return merged;
|
|
1829
|
-
};
|
|
1830
|
-
const resolvePackageMetadataT = async (projectRoot, logger, readPackageMetadataFn, mergePackageMetadataFn) => {
|
|
1831
|
-
const workspaceRoot = await findWorkspaceRoot(projectRoot, logger);
|
|
1832
|
-
if (!workspaceRoot) {
|
|
1833
|
-
const localPackagePath = join(projectRoot, "package.json");
|
|
1834
|
-
const localMetadata = await readPackageMetadataFn(localPackagePath);
|
|
1835
|
-
return mergePackageMetadataFn(
|
|
1836
|
-
{},
|
|
1837
|
-
localMetadata,
|
|
1838
|
-
"",
|
|
1839
|
-
// dummy
|
|
1840
|
-
projectRoot,
|
|
1841
|
-
projectRoot
|
|
1842
|
-
);
|
|
1843
|
-
}
|
|
1844
|
-
const projectPackagePath = join(projectRoot, "package.json");
|
|
1845
|
-
const rootPackagePath = join(workspaceRoot, "package.json");
|
|
1846
|
-
const metadata = await readPackageMetadataFn(rootPackagePath);
|
|
1847
|
-
if (projectPackagePath !== rootPackagePath && existsSync(projectPackagePath)) {
|
|
1848
|
-
const projectMetadata = await readPackageMetadataFn(projectPackagePath);
|
|
1849
|
-
return mergePackageMetadataFn(
|
|
1850
|
-
metadata,
|
|
1851
|
-
projectMetadata,
|
|
1852
|
-
workspaceRoot,
|
|
1853
|
-
projectRoot,
|
|
1854
|
-
projectRoot
|
|
1855
|
-
);
|
|
1856
|
-
} else {
|
|
1857
|
-
return mergePackageMetadataFn(
|
|
1858
|
-
{},
|
|
1859
|
-
metadata,
|
|
1860
|
-
"",
|
|
1861
|
-
// dummy
|
|
1862
|
-
workspaceRoot,
|
|
1863
|
-
projectRoot
|
|
1864
|
-
);
|
|
1865
|
-
}
|
|
1866
|
-
};
|
|
1867
|
-
const readPackageMetadata = async (logger, packagePath) => {
|
|
1868
|
-
try {
|
|
1869
|
-
const content = await readFile(packagePath, "utf-8");
|
|
1870
|
-
const json = lib.parse(content);
|
|
1871
|
-
const map = {};
|
|
1872
|
-
flattenObject(json, "", map);
|
|
1873
|
-
return map;
|
|
1874
|
-
} catch (error) {
|
|
1875
|
-
logger.error(`Failed to read package.json from ${packagePath}: ${error}`);
|
|
1876
|
-
return {};
|
|
1877
|
-
}
|
|
1878
|
-
};
|
|
1879
|
-
const resolvePackageMetadata = async (projectRoot, checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, logger) => {
|
|
1880
|
-
const sourceMap = /* @__PURE__ */ new Map();
|
|
1881
|
-
const metadata = await resolvePackageMetadataT(
|
|
1882
|
-
projectRoot,
|
|
1883
|
-
logger,
|
|
1884
|
-
readPackageMetadata.bind(void 0, logger),
|
|
1885
|
-
mergePackageMetadata.bind(void 0, checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, sourceMap, logger)
|
|
1886
|
-
);
|
|
1887
|
-
return {
|
|
1888
|
-
metadata,
|
|
1889
|
-
sourceMap
|
|
1890
|
-
};
|
|
1891
|
-
};
|
|
1892
|
-
const readRawPackageJson = async (logger, packagePath) => {
|
|
1893
|
-
try {
|
|
1894
|
-
const content = await readFile(packagePath, "utf-8");
|
|
1895
|
-
return lib.parse(content);
|
|
1896
|
-
} catch (error) {
|
|
1897
|
-
logger.error(`Failed to read package.json from ${packagePath}: ${error}`);
|
|
1898
|
-
throw error;
|
|
1899
|
-
}
|
|
1900
|
-
};
|
|
1901
|
-
const resolveRawPackageJsonObject = async (projectRoot, checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, inheritableFields, logger) => {
|
|
1902
|
-
const sourceMap = /* @__PURE__ */ new Map();
|
|
1903
|
-
const packageJson = await resolvePackageMetadataT(
|
|
1904
|
-
projectRoot,
|
|
1905
|
-
logger,
|
|
1906
|
-
readRawPackageJson.bind(void 0, logger),
|
|
1907
|
-
mergeRawPackageJson.bind(void 0, checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, inheritableFields, sourceMap, logger)
|
|
1908
|
-
);
|
|
1909
|
-
return {
|
|
1910
|
-
metadata: packageJson,
|
|
1911
|
-
sourceMap
|
|
1921
|
+
const getFetchGitMetadata = (targetDir, checkWorkingDirectoryStatus, logger) => {
|
|
1922
|
+
let cachedMetadata;
|
|
1923
|
+
return async () => {
|
|
1924
|
+
if (!cachedMetadata) {
|
|
1925
|
+
cachedMetadata = await getGitMetadata(
|
|
1926
|
+
targetDir,
|
|
1927
|
+
checkWorkingDirectoryStatus,
|
|
1928
|
+
logger
|
|
1929
|
+
);
|
|
1930
|
+
}
|
|
1931
|
+
return cachedMetadata;
|
|
1912
1932
|
};
|
|
1913
1933
|
};
|
|
1914
1934
|
export {
|
|
@@ -1917,6 +1937,7 @@ export {
|
|
|
1917
1937
|
createConsoleLogger as c,
|
|
1918
1938
|
replacePeerDependenciesWildcards as d,
|
|
1919
1939
|
findWorkspaceRoot as f,
|
|
1940
|
+
getFetchGitMetadata as g,
|
|
1920
1941
|
resolvePackageMetadata as r
|
|
1921
1942
|
};
|
|
1922
|
-
//# sourceMappingURL=
|
|
1943
|
+
//# sourceMappingURL=analyzer-DxAKRQPj.js.map
|