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.
@@ -1,15 +1,15 @@
1
1
  /*!
2
2
  * name: screw-up
3
- * version: 0.15.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: 63679526c0d6c7819c2b3e78d96ac3e2c8fc0d46
8
+ * git.commit.hash: 6ca2d4183d3123c9e0cf7aa444bdb85c1e60e9fb
9
9
  */
10
10
  "use strict";
11
11
  const fs = require("fs");
12
- const promises = require("fs/promises");
12
+ const fs$1 = require("fs/promises");
13
13
  const path = require("path");
14
14
  const glob = require("glob");
15
15
  const git = require("isomorphic-git");
@@ -29,7 +29,7 @@ function _interopNamespaceDefault(e) {
29
29
  n.default = e;
30
30
  return Object.freeze(n);
31
31
  }
32
- const fs__namespace = /* @__PURE__ */ _interopNamespaceDefault(fs);
32
+ const fs__namespace = /* @__PURE__ */ _interopNamespaceDefault(fs$1);
33
33
  const git__namespace = /* @__PURE__ */ _interopNamespaceDefault(git);
34
34
  var Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/;
35
35
  var ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/;
@@ -1113,6 +1113,241 @@ const JSON5 = {
1113
1113
  stringify
1114
1114
  };
1115
1115
  var lib = JSON5;
1116
+ const createConsoleLogger = () => {
1117
+ return {
1118
+ debug: (msg) => console.debug(msg),
1119
+ info: (msg) => console.info(msg),
1120
+ warn: (msg) => console.warn(msg),
1121
+ error: (msg) => console.error(msg)
1122
+ };
1123
+ };
1124
+ const flattenObject = (obj, prefix, map) => {
1125
+ for (const [key2, value] of Object.entries(obj)) {
1126
+ if (!value)
1127
+ continue;
1128
+ const fullKey = prefix ? `${prefix}.${key2}` : key2;
1129
+ if (typeof value === "string") {
1130
+ map[fullKey] = value;
1131
+ } else if (Array.isArray(value)) {
1132
+ map[fullKey] = value.map((v) => String(v)).join(",");
1133
+ } else if (typeof value === "object") {
1134
+ flattenObject(value, fullKey, map);
1135
+ } else {
1136
+ map[fullKey] = String(value);
1137
+ }
1138
+ }
1139
+ };
1140
+ const findWorkspaceRoot = async (startPath, logger) => {
1141
+ let currentPath = startPath;
1142
+ while (currentPath !== path.dirname(currentPath)) {
1143
+ const packageJsonPath = path.join(currentPath, "package.json");
1144
+ if (fs.existsSync(packageJsonPath)) {
1145
+ try {
1146
+ const content = await fs$1.readFile(packageJsonPath, "utf-8");
1147
+ const packageJson = lib.parse(content);
1148
+ if (packageJson.workspaces || fs.existsSync(path.join(currentPath, "pnpm-workspace.yaml")) || fs.existsSync(path.join(currentPath, "lerna.json"))) {
1149
+ return currentPath;
1150
+ }
1151
+ } catch (error) {
1152
+ logger.warn(`Failed to parse package.json at ${packageJsonPath}: ${error}`);
1153
+ }
1154
+ }
1155
+ currentPath = path.dirname(currentPath);
1156
+ }
1157
+ return void 0;
1158
+ };
1159
+ const collectWorkspaceSiblings = async (workspaceRoot, fetchGitMetadata, alwaysOverrideVersionFromGit, inheritableFields, logger) => {
1160
+ const siblings = /* @__PURE__ */ new Map();
1161
+ try {
1162
+ const rootPackageJsonPath = path.join(workspaceRoot, "package.json");
1163
+ const content = await fs$1.readFile(rootPackageJsonPath, "utf-8");
1164
+ const rootPackageJson = lib.parse(content);
1165
+ const workspacePatterns = rootPackageJson.workspaces;
1166
+ if (!workspacePatterns || !Array.isArray(workspacePatterns)) {
1167
+ return siblings;
1168
+ }
1169
+ const workspaceDirs = /* @__PURE__ */ new Set();
1170
+ for (const pattern of workspacePatterns) {
1171
+ const matches = await glob.glob(pattern, {
1172
+ cwd: workspaceRoot
1173
+ });
1174
+ matches.forEach((match) => workspaceDirs.add(match));
1175
+ }
1176
+ for (const workspaceDir of workspaceDirs) {
1177
+ const packageJsonPath = path.join(workspaceRoot, workspaceDir, "package.json");
1178
+ if (fs.existsSync(packageJsonPath)) {
1179
+ try {
1180
+ const packagePath = path.join(workspaceRoot, workspaceDir);
1181
+ const resolvedPackage = await resolveRawPackageJsonObject(
1182
+ packagePath,
1183
+ fetchGitMetadata,
1184
+ alwaysOverrideVersionFromGit,
1185
+ inheritableFields,
1186
+ logger
1187
+ );
1188
+ const packageJson = resolvedPackage.metadata;
1189
+ if (packageJson.name && packageJson.version) {
1190
+ siblings.set(packageJson.name, {
1191
+ name: packageJson.name,
1192
+ version: packageJson.version,
1193
+ path: packagePath
1194
+ });
1195
+ }
1196
+ } catch (error) {
1197
+ logger.warn(`Failed to resolve package.json from ${packageJsonPath}: ${error}`);
1198
+ }
1199
+ }
1200
+ }
1201
+ } catch (error) {
1202
+ logger.warn(`Failed to collect workspace siblings from ${workspaceRoot}: ${error}`);
1203
+ }
1204
+ return siblings;
1205
+ };
1206
+ const replacePeerDependenciesWildcards = (packageJson, siblings, versionPrefix) => {
1207
+ const modifiedPackageJson = lib.parse(JSON.stringify(packageJson));
1208
+ if (!modifiedPackageJson.peerDependencies || typeof modifiedPackageJson.peerDependencies !== "object") {
1209
+ return modifiedPackageJson;
1210
+ }
1211
+ for (const [depName, depVersion] of Object.entries(modifiedPackageJson.peerDependencies)) {
1212
+ if (depVersion === "*" && siblings.has(depName)) {
1213
+ const sibling = siblings.get(depName);
1214
+ modifiedPackageJson.peerDependencies[depName] = `${versionPrefix}${sibling.version}`;
1215
+ }
1216
+ }
1217
+ return modifiedPackageJson;
1218
+ };
1219
+ const mergePackageMetadata = async (fetchGitMetadata, alwaysOverrideVersionFromGit, sourceMap, parentMetadata, childMetadata, parentSourceDir, childSourceDir, _repositoryPath) => {
1220
+ const metadata = await fetchGitMetadata();
1221
+ const merged = {};
1222
+ flattenObject(metadata, "", merged);
1223
+ for (const key2 in parentMetadata) {
1224
+ const value = parentMetadata[key2];
1225
+ if (value !== void 0) {
1226
+ merged[key2] = value;
1227
+ sourceMap.set(key2, parentSourceDir);
1228
+ }
1229
+ }
1230
+ for (const key2 in childMetadata) {
1231
+ const value = childMetadata[key2];
1232
+ if (value !== void 0) {
1233
+ merged[key2] = value;
1234
+ sourceMap.set(key2, childSourceDir);
1235
+ }
1236
+ }
1237
+ if (alwaysOverrideVersionFromGit && metadata.version) {
1238
+ merged.version = metadata.version;
1239
+ }
1240
+ return merged;
1241
+ };
1242
+ const mergeRawPackageJson = async (fetchGitMetadata, alwaysOverrideVersionFromGit, inheritableFields, sourceMap, parentMetadata, childMetadata, parentSourceDir, childSourceDir, repositoryPath) => {
1243
+ const gitMetadata = await fetchGitMetadata();
1244
+ const merged = { ...gitMetadata };
1245
+ for (const key2 in parentMetadata) {
1246
+ if (inheritableFields.has(key2)) {
1247
+ const value = parentMetadata[key2];
1248
+ if (value !== void 0) {
1249
+ merged[key2] = value;
1250
+ sourceMap.set(key2, parentSourceDir);
1251
+ }
1252
+ }
1253
+ }
1254
+ for (const key2 in childMetadata) {
1255
+ const value = childMetadata[key2];
1256
+ if (value !== void 0) {
1257
+ merged[key2] = value;
1258
+ sourceMap.set(key2, childSourceDir);
1259
+ }
1260
+ }
1261
+ if (alwaysOverrideVersionFromGit && gitMetadata.version) {
1262
+ merged.version = gitMetadata.version;
1263
+ sourceMap.set("version", repositoryPath);
1264
+ }
1265
+ return merged;
1266
+ };
1267
+ const resolvePackageMetadataT = async (projectRoot, logger, readPackageMetadataFn, mergePackageMetadataFn) => {
1268
+ const workspaceRoot = await findWorkspaceRoot(projectRoot, logger);
1269
+ if (!workspaceRoot) {
1270
+ const localPackagePath = path.join(projectRoot, "package.json");
1271
+ const localMetadata = await readPackageMetadataFn(localPackagePath);
1272
+ return mergePackageMetadataFn(
1273
+ {},
1274
+ localMetadata,
1275
+ "",
1276
+ // dummy
1277
+ projectRoot,
1278
+ projectRoot
1279
+ );
1280
+ }
1281
+ const projectPackagePath = path.join(projectRoot, "package.json");
1282
+ const rootPackagePath = path.join(workspaceRoot, "package.json");
1283
+ const metadata = await readPackageMetadataFn(rootPackagePath);
1284
+ if (projectPackagePath !== rootPackagePath && fs.existsSync(projectPackagePath)) {
1285
+ const projectMetadata = await readPackageMetadataFn(projectPackagePath);
1286
+ return mergePackageMetadataFn(
1287
+ metadata,
1288
+ projectMetadata,
1289
+ workspaceRoot,
1290
+ projectRoot,
1291
+ projectRoot
1292
+ );
1293
+ } else {
1294
+ return mergePackageMetadataFn(
1295
+ {},
1296
+ metadata,
1297
+ "",
1298
+ // dummy
1299
+ workspaceRoot,
1300
+ projectRoot
1301
+ );
1302
+ }
1303
+ };
1304
+ const readPackageMetadata = async (logger, packagePath) => {
1305
+ try {
1306
+ const content = await fs$1.readFile(packagePath, "utf-8");
1307
+ const json = lib.parse(content);
1308
+ const map = {};
1309
+ flattenObject(json, "", map);
1310
+ return map;
1311
+ } catch (error) {
1312
+ logger.error(`Failed to read package.json from ${packagePath}: ${error}`);
1313
+ return {};
1314
+ }
1315
+ };
1316
+ const resolvePackageMetadata = async (projectRoot, fetchGitMetadata, alwaysOverrideVersionFromGit, logger) => {
1317
+ const sourceMap = /* @__PURE__ */ new Map();
1318
+ const metadata = await resolvePackageMetadataT(
1319
+ projectRoot,
1320
+ logger,
1321
+ readPackageMetadata.bind(void 0, logger),
1322
+ mergePackageMetadata.bind(void 0, fetchGitMetadata, alwaysOverrideVersionFromGit, sourceMap)
1323
+ );
1324
+ return {
1325
+ metadata,
1326
+ sourceMap
1327
+ };
1328
+ };
1329
+ const readRawPackageJson = async (logger, packagePath) => {
1330
+ try {
1331
+ const content = await fs$1.readFile(packagePath, "utf-8");
1332
+ return lib.parse(content);
1333
+ } catch (error) {
1334
+ logger.error(`Failed to read package.json from ${packagePath}: ${error}`);
1335
+ throw error;
1336
+ }
1337
+ };
1338
+ const resolveRawPackageJsonObject = async (projectRoot, fetchGitMetadata, alwaysOverrideVersionFromGit, inheritableFields, logger) => {
1339
+ const sourceMap = /* @__PURE__ */ new Map();
1340
+ const packageJson = await resolvePackageMetadataT(
1341
+ projectRoot,
1342
+ logger,
1343
+ readRawPackageJson.bind(void 0, logger),
1344
+ mergeRawPackageJson.bind(void 0, fetchGitMetadata, alwaysOverrideVersionFromGit, inheritableFields, sourceMap)
1345
+ );
1346
+ return {
1347
+ metadata: packageJson,
1348
+ sourceMap
1349
+ };
1350
+ };
1116
1351
  function getDefaultExportFromCjs(x) {
1117
1352
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
1118
1353
  }
@@ -1592,10 +1827,10 @@ const getRelatedBranches = async (repositoryPath, commitHash) => {
1592
1827
  return [];
1593
1828
  }
1594
1829
  };
1595
- const hasModifiedFiles = async (repositoryPath) => {
1830
+ const getModifiedFiles = async (repositoryPath) => {
1596
1831
  try {
1597
1832
  const status = await git__namespace.statusMatrix({ fs: fs__namespace, dir: repositoryPath });
1598
- return status.some(
1833
+ return status.filter(
1599
1834
  ([, head, workdir, stage]) => workdir === 2 || // modified in working directory (unstaged)
1600
1835
  stage === 2 || // modified in stage (staged)
1601
1836
  stage === 3 || // added to stage (staged)
@@ -1604,9 +1839,12 @@ const hasModifiedFiles = async (repositoryPath) => {
1604
1839
  // untracked files (respecting .gitignore)
1605
1840
  );
1606
1841
  } catch (e) {
1607
- return false;
1842
+ return [];
1608
1843
  }
1609
1844
  };
1845
+ const formatModifiedFile = (modifiedFile) => {
1846
+ return `'${modifiedFile[0]}':${modifiedFile[1]}:${modifiedFile[2]}:${modifiedFile[3]}`;
1847
+ };
1610
1848
  const lookupVersionLabelRecursive = async (cwd, commit, reachedCommits) => {
1611
1849
  const scheduledStack = [];
1612
1850
  let version = { major: 0, minor: 0, build: 1, original: "0.0.1" };
@@ -1671,9 +1909,13 @@ const getGitMetadata = async (repositoryPath, checkWorkingDirectoryStatus, logge
1671
1909
  const gitMetadata = { tags: [], branches: [] };
1672
1910
  metadata.git = gitMetadata;
1673
1911
  if (version) {
1674
- const hasModified = checkWorkingDirectoryStatus && await hasModifiedFiles(gitRootPath);
1675
- if (hasModified) {
1676
- version = incrementLastVersionComponent(version);
1912
+ if (checkWorkingDirectoryStatus) {
1913
+ const modifiedFiles = await getModifiedFiles(gitRootPath);
1914
+ if (modifiedFiles.length >= 1) {
1915
+ const newVersion = incrementLastVersionComponent(version);
1916
+ logger.debug(`Increased git version by detected modified items: ${formatVersion(version)} ---> ${formatVersion(newVersion)}, Files=[${modifiedFiles.map(formatModifiedFile).join(", ")}]`);
1917
+ version = newVersion;
1918
+ }
1677
1919
  }
1678
1920
  const gitVersion = formatVersion(version);
1679
1921
  gitMetadata.version = gitVersion;
@@ -1694,245 +1936,24 @@ const getGitMetadata = async (repositoryPath, checkWorkingDirectoryStatus, logge
1694
1936
  }
1695
1937
  return metadata;
1696
1938
  };
1697
- const createConsoleLogger = () => {
1698
- return {
1699
- debug: (msg) => console.debug(msg),
1700
- info: (msg) => console.info(msg),
1701
- warn: (msg) => console.warn(msg),
1702
- error: (msg) => console.error(msg)
1703
- };
1704
- };
1705
- const flattenObject = (obj, prefix, map) => {
1706
- for (const [key2, value] of Object.entries(obj)) {
1707
- if (!value)
1708
- continue;
1709
- const fullKey = prefix ? `${prefix}.${key2}` : key2;
1710
- if (typeof value === "string") {
1711
- map[fullKey] = value;
1712
- } else if (Array.isArray(value)) {
1713
- map[fullKey] = value.map((v) => String(v)).join(",");
1714
- } else if (typeof value === "object") {
1715
- flattenObject(value, fullKey, map);
1716
- } else {
1717
- map[fullKey] = String(value);
1718
- }
1719
- }
1720
- };
1721
- const findWorkspaceRoot = async (startPath, logger) => {
1722
- let currentPath = startPath;
1723
- while (currentPath !== path.dirname(currentPath)) {
1724
- const packageJsonPath = path.join(currentPath, "package.json");
1725
- if (fs.existsSync(packageJsonPath)) {
1726
- try {
1727
- const content = await promises.readFile(packageJsonPath, "utf-8");
1728
- const packageJson = lib.parse(content);
1729
- if (packageJson.workspaces || fs.existsSync(path.join(currentPath, "pnpm-workspace.yaml")) || fs.existsSync(path.join(currentPath, "lerna.json"))) {
1730
- return currentPath;
1731
- }
1732
- } catch (error) {
1733
- logger.warn(`Failed to parse package.json at ${packageJsonPath}: ${error}`);
1734
- }
1735
- }
1736
- currentPath = path.dirname(currentPath);
1737
- }
1738
- return void 0;
1739
- };
1740
- const collectWorkspaceSiblings = async (workspaceRoot, checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, inheritableFields, logger) => {
1741
- const siblings = /* @__PURE__ */ new Map();
1742
- try {
1743
- const rootPackageJsonPath = path.join(workspaceRoot, "package.json");
1744
- const content = await promises.readFile(rootPackageJsonPath, "utf-8");
1745
- const rootPackageJson = lib.parse(content);
1746
- const workspacePatterns = rootPackageJson.workspaces;
1747
- if (!workspacePatterns || !Array.isArray(workspacePatterns)) {
1748
- return siblings;
1749
- }
1750
- const workspaceDirs = /* @__PURE__ */ new Set();
1751
- for (const pattern of workspacePatterns) {
1752
- const matches = await glob.glob(pattern, {
1753
- cwd: workspaceRoot
1754
- });
1755
- matches.forEach((match) => workspaceDirs.add(match));
1756
- }
1757
- for (const workspaceDir of workspaceDirs) {
1758
- const packageJsonPath = path.join(workspaceRoot, workspaceDir, "package.json");
1759
- if (fs.existsSync(packageJsonPath)) {
1760
- try {
1761
- const packagePath = path.join(workspaceRoot, workspaceDir);
1762
- const resolvedPackage = await resolveRawPackageJsonObject(
1763
- packagePath,
1764
- checkWorkingDirectoryStatus,
1765
- alwaysOverrideVersionFromGit,
1766
- inheritableFields,
1767
- logger
1768
- );
1769
- const packageJson = resolvedPackage.metadata;
1770
- if (packageJson.name && packageJson.version) {
1771
- siblings.set(packageJson.name, {
1772
- name: packageJson.name,
1773
- version: packageJson.version,
1774
- path: packagePath
1775
- });
1776
- }
1777
- } catch (error) {
1778
- logger.warn(`Failed to resolve package.json from ${packageJsonPath}: ${error}`);
1779
- }
1780
- }
1781
- }
1782
- } catch (error) {
1783
- logger.warn(`Failed to collect workspace siblings from ${workspaceRoot}: ${error}`);
1784
- }
1785
- return siblings;
1786
- };
1787
- const replacePeerDependenciesWildcards = (packageJson, siblings, versionPrefix) => {
1788
- const modifiedPackageJson = lib.parse(JSON.stringify(packageJson));
1789
- if (!modifiedPackageJson.peerDependencies || typeof modifiedPackageJson.peerDependencies !== "object") {
1790
- return modifiedPackageJson;
1791
- }
1792
- for (const [depName, depVersion] of Object.entries(modifiedPackageJson.peerDependencies)) {
1793
- if (depVersion === "*" && siblings.has(depName)) {
1794
- const sibling = siblings.get(depName);
1795
- modifiedPackageJson.peerDependencies[depName] = `${versionPrefix}${sibling.version}`;
1796
- }
1797
- }
1798
- return modifiedPackageJson;
1799
- };
1800
- const mergePackageMetadata = async (checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, sourceMap, logger, parentMetadata, childMetadata, parentSourceDir, childSourceDir, repositoryPath) => {
1801
- const metadata = await getGitMetadata(repositoryPath, checkWorkingDirectoryStatus, logger);
1802
- const merged = {};
1803
- flattenObject(metadata, "", merged);
1804
- for (const key2 in parentMetadata) {
1805
- const value = parentMetadata[key2];
1806
- if (value !== void 0) {
1807
- merged[key2] = value;
1808
- sourceMap.set(key2, parentSourceDir);
1809
- }
1810
- }
1811
- for (const key2 in childMetadata) {
1812
- const value = childMetadata[key2];
1813
- if (value !== void 0) {
1814
- merged[key2] = value;
1815
- sourceMap.set(key2, childSourceDir);
1816
- }
1817
- }
1818
- if (alwaysOverrideVersionFromGit && metadata.version) {
1819
- merged.version = metadata.version;
1820
- }
1821
- return merged;
1822
- };
1823
- const mergeRawPackageJson = async (checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, inheritableFields, sourceMap, logger, parentMetadata, childMetadata, parentSourceDir, childSourceDir, repositoryPath) => {
1824
- const gitMetadata = await getGitMetadata(repositoryPath, checkWorkingDirectoryStatus, logger);
1825
- const merged = { ...gitMetadata };
1826
- for (const key2 in parentMetadata) {
1827
- if (inheritableFields.has(key2)) {
1828
- const value = parentMetadata[key2];
1829
- if (value !== void 0) {
1830
- merged[key2] = value;
1831
- sourceMap.set(key2, parentSourceDir);
1832
- }
1833
- }
1834
- }
1835
- for (const key2 in childMetadata) {
1836
- const value = childMetadata[key2];
1837
- if (value !== void 0) {
1838
- merged[key2] = value;
1839
- sourceMap.set(key2, childSourceDir);
1840
- }
1841
- }
1842
- if (alwaysOverrideVersionFromGit && gitMetadata.version) {
1843
- merged.version = gitMetadata.version;
1844
- sourceMap.set("version", repositoryPath);
1845
- }
1846
- return merged;
1847
- };
1848
- const resolvePackageMetadataT = async (projectRoot, logger, readPackageMetadataFn, mergePackageMetadataFn) => {
1849
- const workspaceRoot = await findWorkspaceRoot(projectRoot, logger);
1850
- if (!workspaceRoot) {
1851
- const localPackagePath = path.join(projectRoot, "package.json");
1852
- const localMetadata = await readPackageMetadataFn(localPackagePath);
1853
- return mergePackageMetadataFn(
1854
- {},
1855
- localMetadata,
1856
- "",
1857
- // dummy
1858
- projectRoot,
1859
- projectRoot
1860
- );
1861
- }
1862
- const projectPackagePath = path.join(projectRoot, "package.json");
1863
- const rootPackagePath = path.join(workspaceRoot, "package.json");
1864
- const metadata = await readPackageMetadataFn(rootPackagePath);
1865
- if (projectPackagePath !== rootPackagePath && fs.existsSync(projectPackagePath)) {
1866
- const projectMetadata = await readPackageMetadataFn(projectPackagePath);
1867
- return mergePackageMetadataFn(
1868
- metadata,
1869
- projectMetadata,
1870
- workspaceRoot,
1871
- projectRoot,
1872
- projectRoot
1873
- );
1874
- } else {
1875
- return mergePackageMetadataFn(
1876
- {},
1877
- metadata,
1878
- "",
1879
- // dummy
1880
- workspaceRoot,
1881
- projectRoot
1882
- );
1883
- }
1884
- };
1885
- const readPackageMetadata = async (logger, packagePath) => {
1886
- try {
1887
- const content = await promises.readFile(packagePath, "utf-8");
1888
- const json = lib.parse(content);
1889
- const map = {};
1890
- flattenObject(json, "", map);
1891
- return map;
1892
- } catch (error) {
1893
- logger.error(`Failed to read package.json from ${packagePath}: ${error}`);
1894
- return {};
1895
- }
1896
- };
1897
- const resolvePackageMetadata = async (projectRoot, checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, logger) => {
1898
- const sourceMap = /* @__PURE__ */ new Map();
1899
- const metadata = await resolvePackageMetadataT(
1900
- projectRoot,
1901
- logger,
1902
- readPackageMetadata.bind(void 0, logger),
1903
- mergePackageMetadata.bind(void 0, checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, sourceMap, logger)
1904
- );
1905
- return {
1906
- metadata,
1907
- sourceMap
1908
- };
1909
- };
1910
- const readRawPackageJson = async (logger, packagePath) => {
1911
- try {
1912
- const content = await promises.readFile(packagePath, "utf-8");
1913
- return lib.parse(content);
1914
- } catch (error) {
1915
- logger.error(`Failed to read package.json from ${packagePath}: ${error}`);
1916
- throw error;
1917
- }
1918
- };
1919
- const resolveRawPackageJsonObject = async (projectRoot, checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, inheritableFields, logger) => {
1920
- const sourceMap = /* @__PURE__ */ new Map();
1921
- const packageJson = await resolvePackageMetadataT(
1922
- projectRoot,
1923
- logger,
1924
- readRawPackageJson.bind(void 0, logger),
1925
- mergeRawPackageJson.bind(void 0, checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, inheritableFields, sourceMap, logger)
1926
- );
1927
- return {
1928
- metadata: packageJson,
1929
- sourceMap
1939
+ const getFetchGitMetadata = (targetDir, checkWorkingDirectoryStatus, logger) => {
1940
+ let cachedMetadata;
1941
+ return async () => {
1942
+ if (!cachedMetadata) {
1943
+ cachedMetadata = await getGitMetadata(
1944
+ targetDir,
1945
+ checkWorkingDirectoryStatus,
1946
+ logger
1947
+ );
1948
+ }
1949
+ return cachedMetadata;
1930
1950
  };
1931
1951
  };
1932
1952
  exports.collectWorkspaceSiblings = collectWorkspaceSiblings;
1933
1953
  exports.createConsoleLogger = createConsoleLogger;
1934
1954
  exports.findWorkspaceRoot = findWorkspaceRoot;
1955
+ exports.getFetchGitMetadata = getFetchGitMetadata;
1935
1956
  exports.replacePeerDependenciesWildcards = replacePeerDependenciesWildcards;
1936
1957
  exports.resolvePackageMetadata = resolvePackageMetadata;
1937
1958
  exports.resolveRawPackageJsonObject = resolveRawPackageJsonObject;
1938
- //# sourceMappingURL=internal-DoM-p19R.cjs.map
1959
+ //# sourceMappingURL=analyzer-BxxtJjNH.cjs.map