screw-up 0.14.0 → 0.16.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,11 +1,11 @@
1
1
  /*!
2
2
  * name: screw-up
3
- * version: 0.14.0
3
+ * version: 0.16.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: f1871df4c43aee9ab389a6ab1b2769b32322793b
8
+ * git.commit.hash: c5c68d39d1ab116299338d31f0f208c0eb49be5c
9
9
  */
10
10
  import * as fs from "fs";
11
11
  import { existsSync } from "fs";
@@ -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
  }
@@ -1676,232 +1911,17 @@ const getGitMetadata = async (repositoryPath, checkWorkingDirectoryStatus, logge
1676
1911
  }
1677
1912
  return metadata;
1678
1913
  };
1679
- const createConsoleLogger = () => {
1680
- return {
1681
- debug: (msg) => console.debug(msg),
1682
- info: (msg) => console.info(msg),
1683
- warn: (msg) => console.warn(msg),
1684
- error: (msg) => console.error(msg)
1685
- };
1686
- };
1687
- const flattenObject = (obj, prefix, map) => {
1688
- for (const [key2, value] of Object.entries(obj)) {
1689
- if (!value)
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, 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 packageContent = await readFile(packageJsonPath, "utf-8");
1744
- const packageJson = lib.parse(packageContent);
1745
- if (packageJson.name && packageJson.version) {
1746
- siblings.set(packageJson.name, {
1747
- name: packageJson.name,
1748
- version: packageJson.version,
1749
- path: join(workspaceRoot, workspaceDir)
1750
- });
1751
- }
1752
- } catch (error) {
1753
- logger.warn(`Failed to read package.json from ${packageJsonPath}: ${error}`);
1754
- }
1755
- }
1756
- }
1757
- } catch (error) {
1758
- logger.warn(`Failed to collect workspace siblings from ${workspaceRoot}: ${error}`);
1759
- }
1760
- return siblings;
1761
- };
1762
- const replacePeerDependenciesWildcards = (packageJson, siblings, versionPrefix) => {
1763
- const modifiedPackageJson = lib.parse(JSON.stringify(packageJson));
1764
- if (!modifiedPackageJson.peerDependencies || typeof modifiedPackageJson.peerDependencies !== "object") {
1765
- return modifiedPackageJson;
1766
- }
1767
- for (const [depName, depVersion] of Object.entries(modifiedPackageJson.peerDependencies)) {
1768
- if (depVersion === "*" && siblings.has(depName)) {
1769
- const sibling = siblings.get(depName);
1770
- modifiedPackageJson.peerDependencies[depName] = `${versionPrefix}${sibling.version}`;
1771
- }
1772
- }
1773
- return modifiedPackageJson;
1774
- };
1775
- const mergePackageMetadata = async (checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, sourceMap, logger, parentMetadata, childMetadata, parentSourceDir, childSourceDir, repositoryPath) => {
1776
- const metadata = await getGitMetadata(repositoryPath, checkWorkingDirectoryStatus, logger);
1777
- const merged = {};
1778
- flattenObject(metadata, "", merged);
1779
- for (const key2 in parentMetadata) {
1780
- const value = parentMetadata[key2];
1781
- if (value !== void 0) {
1782
- merged[key2] = value;
1783
- sourceMap.set(key2, parentSourceDir);
1784
- }
1785
- }
1786
- for (const key2 in childMetadata) {
1787
- const value = childMetadata[key2];
1788
- if (value !== void 0) {
1789
- merged[key2] = value;
1790
- sourceMap.set(key2, childSourceDir);
1791
- }
1792
- }
1793
- if (alwaysOverrideVersionFromGit && metadata.version) {
1794
- merged.version = metadata.version;
1795
- }
1796
- return merged;
1797
- };
1798
- const mergeRawPackageJson = async (checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, inheritableFields, sourceMap, logger, parentMetadata, childMetadata, parentSourceDir, childSourceDir, repositoryPath) => {
1799
- const gitMetadata = await getGitMetadata(repositoryPath, checkWorkingDirectoryStatus, logger);
1800
- const merged = { ...gitMetadata };
1801
- for (const key2 in parentMetadata) {
1802
- if (inheritableFields.has(key2)) {
1803
- const value = parentMetadata[key2];
1804
- if (value !== void 0) {
1805
- merged[key2] = value;
1806
- sourceMap.set(key2, parentSourceDir);
1807
- }
1808
- }
1809
- }
1810
- for (const key2 in childMetadata) {
1811
- const value = childMetadata[key2];
1812
- if (value !== void 0) {
1813
- merged[key2] = value;
1814
- sourceMap.set(key2, childSourceDir);
1815
- }
1816
- }
1817
- if (alwaysOverrideVersionFromGit && gitMetadata.version) {
1818
- merged.version = gitMetadata.version;
1819
- sourceMap.set("version", repositoryPath);
1820
- }
1821
- return merged;
1822
- };
1823
- const resolvePackageMetadataT = async (projectRoot, logger, readPackageMetadataFn, mergePackageMetadataFn) => {
1824
- const workspaceRoot = await findWorkspaceRoot(projectRoot, logger);
1825
- if (!workspaceRoot) {
1826
- const localPackagePath = join(projectRoot, "package.json");
1827
- const localMetadata = await readPackageMetadataFn(localPackagePath);
1828
- return mergePackageMetadataFn(
1829
- {},
1830
- localMetadata,
1831
- "",
1832
- // dummy
1833
- projectRoot,
1834
- projectRoot
1835
- );
1836
- }
1837
- const projectPackagePath = join(projectRoot, "package.json");
1838
- const rootPackagePath = join(workspaceRoot, "package.json");
1839
- const metadata = await readPackageMetadataFn(rootPackagePath);
1840
- if (projectPackagePath !== rootPackagePath && existsSync(projectPackagePath)) {
1841
- const projectMetadata = await readPackageMetadataFn(projectPackagePath);
1842
- return mergePackageMetadataFn(
1843
- metadata,
1844
- projectMetadata,
1845
- workspaceRoot,
1846
- projectRoot,
1847
- projectRoot
1848
- );
1849
- } else {
1850
- return mergePackageMetadataFn(
1851
- {},
1852
- metadata,
1853
- "",
1854
- // dummy
1855
- workspaceRoot,
1856
- projectRoot
1857
- );
1858
- }
1859
- };
1860
- const readPackageMetadata = async (logger, packagePath) => {
1861
- try {
1862
- const content = await readFile(packagePath, "utf-8");
1863
- const json = lib.parse(content);
1864
- const map = {};
1865
- flattenObject(json, "", map);
1866
- return map;
1867
- } catch (error) {
1868
- logger.error(`Failed to read package.json from ${packagePath}: ${error}`);
1869
- return {};
1870
- }
1871
- };
1872
- const resolvePackageMetadata = async (projectRoot, checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, logger) => {
1873
- const sourceMap = /* @__PURE__ */ new Map();
1874
- const metadata = await resolvePackageMetadataT(
1875
- projectRoot,
1876
- logger,
1877
- readPackageMetadata.bind(void 0, logger),
1878
- mergePackageMetadata.bind(void 0, checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, sourceMap, logger)
1879
- );
1880
- return {
1881
- metadata,
1882
- sourceMap
1883
- };
1884
- };
1885
- const readRawPackageJson = async (logger, packagePath) => {
1886
- try {
1887
- const content = await readFile(packagePath, "utf-8");
1888
- return lib.parse(content);
1889
- } catch (error) {
1890
- logger.error(`Failed to read package.json from ${packagePath}: ${error}`);
1891
- throw error;
1892
- }
1893
- };
1894
- const resolveRawPackageJsonObject = async (projectRoot, checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, inheritableFields, logger) => {
1895
- const sourceMap = /* @__PURE__ */ new Map();
1896
- const packageJson = await resolvePackageMetadataT(
1897
- projectRoot,
1898
- logger,
1899
- readRawPackageJson.bind(void 0, logger),
1900
- mergeRawPackageJson.bind(void 0, checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, inheritableFields, sourceMap, logger)
1901
- );
1902
- return {
1903
- metadata: packageJson,
1904
- sourceMap
1914
+ const getFetchGitMetadata = (targetDir, checkWorkingDirectoryStatus, logger) => {
1915
+ let cachedMetadata;
1916
+ return async () => {
1917
+ if (!cachedMetadata) {
1918
+ cachedMetadata = await getGitMetadata(
1919
+ targetDir,
1920
+ checkWorkingDirectoryStatus,
1921
+ logger
1922
+ );
1923
+ }
1924
+ return cachedMetadata;
1905
1925
  };
1906
1926
  };
1907
1927
  export {
@@ -1910,6 +1930,7 @@ export {
1910
1930
  createConsoleLogger as c,
1911
1931
  replacePeerDependenciesWildcards as d,
1912
1932
  findWorkspaceRoot as f,
1933
+ getFetchGitMetadata as g,
1913
1934
  resolvePackageMetadata as r
1914
1935
  };
1915
- //# sourceMappingURL=internal-BgCvktPU.js.map
1936
+ //# sourceMappingURL=analyzer-CU8VuwpB.js.map