screw-up 1.32.0 → 1.33.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.
Files changed (34) hide show
  1. package/dist/index.cjs +108 -54
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.mjs +4 -4
  4. package/dist/main.cjs +108 -54
  5. package/dist/main.cjs.map +1 -1
  6. package/dist/main.mjs +5 -5
  7. package/dist/{metadata-file-D79yMa_A.js → metadata-file-Case8fsm.js} +105 -51
  8. package/dist/metadata-file-Case8fsm.js.map +1 -0
  9. package/dist/{packageMetadata-Sm2NpI2b.js → packageMetadata-4rUlIBjt.js} +6 -6
  10. package/dist/{packageMetadata-Sm2NpI2b.js.map → packageMetadata-4rUlIBjt.js.map} +1 -1
  11. package/dist/{packageMetadata-Cwh4Fqmw.cjs → packageMetadata-CaaD3Ehh.cjs} +3 -3
  12. package/dist/{packageMetadata-6po5LHyH.cjs → packageMetadata-k_QXJ2PH.cjs} +5 -5
  13. package/dist/{packageMetadata-6po5LHyH.cjs.map → packageMetadata-k_QXJ2PH.cjs.map} +1 -1
  14. package/dist/src/analyzer.d.ts +2 -2
  15. package/dist/src/analyzer.d.ts.map +1 -1
  16. package/dist/src/cli-internal.d.ts +2 -2
  17. package/dist/src/cli.d.ts +2 -2
  18. package/dist/src/declaration-import-fix.d.ts +2 -2
  19. package/dist/src/default-import-fix.d.ts +2 -2
  20. package/dist/src/fast-tags.d.ts +2 -2
  21. package/dist/src/generated/packageMetadata.d.ts +4 -4
  22. package/dist/src/git-operations.d.ts +2 -2
  23. package/dist/src/git-operations.d.ts.map +1 -1
  24. package/dist/src/git-ref-utils.d.ts +32 -4
  25. package/dist/src/git-ref-utils.d.ts.map +1 -1
  26. package/dist/src/index.d.ts +2 -2
  27. package/dist/src/internal.d.ts +2 -2
  28. package/dist/src/main.d.ts +2 -2
  29. package/dist/src/metadata-file.d.ts +2 -2
  30. package/dist/src/text-edits.d.ts +2 -2
  31. package/dist/src/types.d.ts +2 -2
  32. package/dist/src/vite-plugin.d.ts +2 -2
  33. package/package.json +8 -8
  34. package/dist/metadata-file-D79yMa_A.js.map +0 -1
package/dist/index.mjs CHANGED
@@ -1,14 +1,14 @@
1
1
  /*!
2
2
  * name: screw-up
3
- * version: 1.32.0
3
+ * version: 1.33.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: 8a0078c34fa41bdb0cbf2d23837ac5e3217cbf53
8
+ * git.commit.hash: be56ff1901b5073e1b0238a28b80d0c4f3c1e894
9
9
  */
10
- import { i as getFetchGitMetadata, l as resolvePackageMetadata, n as generateMetadataFileContent, o as createConsoleLogger, r as writeFileIfChanged, t as ensureMetadataGitignore } from "./metadata-file-D79yMa_A.js";
11
- import { i as version, n as name, t as git_commit_hash } from "./packageMetadata-Sm2NpI2b.js";
10
+ import { i as getFetchGitMetadata, l as resolvePackageMetadata, n as generateMetadataFileContent, o as createConsoleLogger, r as writeFileIfChanged, t as ensureMetadataGitignore } from "./metadata-file-Case8fsm.js";
11
+ import { i as version, n as name, t as git_commit_hash } from "./packageMetadata-4rUlIBjt.js";
12
12
  import { readFile, readdir, writeFile } from "fs/promises";
13
13
  import { existsSync } from "fs";
14
14
  import { dirname, extname, join, posix, resolve } from "path";
package/dist/main.cjs CHANGED
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  /*!
3
3
  * name: screw-up
4
- * version: 1.32.0
4
+ * version: 1.33.0
5
5
  * description: Simply package metadata inserter on Vite plugin
6
6
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
7
7
  * license: MIT
8
8
  * repository.url: https://github.com/kekyo/screw-up.git
9
- * git.commit.hash: 8a0078c34fa41bdb0cbf2d23837ac5e3217cbf53
9
+ * git.commit.hash: be56ff1901b5073e1b0238a28b80d0c4f3c1e894
10
10
  */
11
11
  //#region \0rolldown/runtime.js
12
12
  var __create = Object.create;
@@ -31,11 +31,11 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
31
31
  enumerable: true
32
32
  }) : target, mod));
33
33
  //#endregion
34
- const require_packageMetadata = require("./packageMetadata-6po5LHyH.cjs");
34
+ const require_packageMetadata = require("./packageMetadata-k_QXJ2PH.cjs");
35
35
  let path = require("path");
36
36
  let fs = require("fs");
37
37
  let fs_promises = require("fs/promises");
38
- fs_promises = __toESM(fs_promises);
38
+ fs_promises = __toESM(fs_promises, 1);
39
39
  let child_process = require("child_process");
40
40
  let os = require("os");
41
41
  let stream = require("stream");
@@ -43,7 +43,7 @@ let zlib = require("zlib");
43
43
  let stream_promises = require("stream/promises");
44
44
  let glob = require("glob");
45
45
  let isomorphic_git = require("isomorphic-git");
46
- isomorphic_git = __toESM(isomorphic_git);
46
+ isomorphic_git = __toESM(isomorphic_git, 1);
47
47
  let crypto = require("crypto");
48
48
  //#region node_modules/tar-vern/dist/index.js
49
49
  /*!
@@ -2417,17 +2417,45 @@ var PACKED_OBJECT_TYPE_BY_CODE = new Map([
2417
2417
  [7, "ref-delta"]
2418
2418
  ]);
2419
2419
  /**
2420
- * Resolve the actual Git directory for repositories, worktrees, and submodules.
2420
+ * Resolve Git directory paths for repositories, worktrees, and submodules.
2421
2421
  * @param repoPath - Repository path
2422
- * @returns The resolved Git directory path
2422
+ * @returns The resolved Git directory paths
2423
2423
  */
2424
- var getActualGitDir = async (repoPath) => {
2424
+ var resolveGitDirectoryPaths = async (repoPath) => {
2425
2425
  const gitDir = (0, path.join)(repoPath, ".git");
2426
2426
  const gitStat = await (0, fs_promises.stat)(gitDir).catch(() => null);
2427
- if (!(gitStat === null || gitStat === void 0 ? void 0 : gitStat.isFile())) return gitDir;
2428
- const match = (await (0, fs_promises.readFile)(gitDir, "utf-8")).match(/^gitdir:\s*(.+)$/m);
2429
- if (!match) return gitDir;
2430
- return (0, path.isAbsolute)(match[1]) ? match[1] : (0, path.join)(repoPath, match[1]);
2427
+ const resolvedGitDir = !(gitStat === null || gitStat === void 0 ? void 0 : gitStat.isFile()) ? gitDir : await (async () => {
2428
+ const match = (await (0, fs_promises.readFile)(gitDir, "utf-8")).match(/^gitdir:\s*(.+)$/m);
2429
+ if (!match) return gitDir;
2430
+ return (0, path.isAbsolute)(match[1]) ? match[1] : (0, path.join)(repoPath, match[1]);
2431
+ })();
2432
+ return {
2433
+ gitDir: resolvedGitDir,
2434
+ commonGitDir: await (0, fs_promises.readFile)((0, path.join)(resolvedGitDir, "commondir"), "utf-8").then((content) => {
2435
+ const commondir = content.trim();
2436
+ if (!commondir) return resolvedGitDir;
2437
+ return (0, path.isAbsolute)(commondir) ? commondir : (0, path.join)(resolvedGitDir, commondir);
2438
+ }).catch((error) => {
2439
+ if ((error === null || error === void 0 ? void 0 : error.code) !== "ENOENT") throw error;
2440
+ return resolvedGitDir;
2441
+ })
2442
+ };
2443
+ };
2444
+ /**
2445
+ * Resolve the worktree-specific Git directory.
2446
+ * @param repoPath - Repository path
2447
+ * @returns The resolved worktree-specific Git directory path
2448
+ */
2449
+ var getActualGitDir = async (repoPath) => {
2450
+ return (await resolveGitDirectoryPaths(repoPath)).gitDir;
2451
+ };
2452
+ /**
2453
+ * Resolve the common Git directory used for refs and objects.
2454
+ * @param repoPath - Repository path
2455
+ * @returns The resolved common Git directory path
2456
+ */
2457
+ var getCommonGitDir = async (repoPath) => {
2458
+ return (await resolveGitDirectoryPaths(repoPath)).commonGitDir;
2431
2459
  };
2432
2460
  var readFixedRange = async (fileHandle, offset, length) => {
2433
2461
  const buffer = Buffer.alloc(length);
@@ -2644,11 +2672,11 @@ var parseTreeEntries = (treeContent) => {
2644
2672
  return entries;
2645
2673
  };
2646
2674
  var createGitObjectResolver = async (repoPath) => {
2647
- const actualGitDir = await getActualGitDir(repoPath);
2675
+ const commonGitDir = await getCommonGitDir(repoPath);
2648
2676
  const resolvedObjects = /* @__PURE__ */ new Map();
2649
2677
  let packStorePromise;
2650
2678
  const getPackStore = async () => {
2651
- if (!packStorePromise) packStorePromise = loadPackStore(actualGitDir);
2679
+ if (!packStorePromise) packStorePromise = loadPackStore(commonGitDir);
2652
2680
  return packStorePromise;
2653
2681
  };
2654
2682
  const readPackedObject = async (location) => {
@@ -2684,7 +2712,7 @@ var createGitObjectResolver = async (repoPath) => {
2684
2712
  const cachedObject = resolvedObjects.get(oid);
2685
2713
  if (cachedObject) return cachedObject;
2686
2714
  const objectPromise = (async () => {
2687
- const looseObject = await readLooseObject(actualGitDir, oid);
2715
+ const looseObject = await readLooseObject(commonGitDir, oid);
2688
2716
  if (looseObject) return looseObject;
2689
2717
  const location = (await getPackStore()).objectByOid.get(oid);
2690
2718
  if (!location) throw new Error(`Git object not found: ${oid}`);
@@ -2829,8 +2857,8 @@ var readLooseTags = async (refsTagsPath) => {
2829
2857
  * @returns Array of all tag names
2830
2858
  */
2831
2859
  var listTagsFast = async (repoPath) => {
2832
- const actualGitDir = await getActualGitDir(repoPath);
2833
- const [packedTags, looseTags] = await Promise.all([parsePackedRefs((0, path.join)(actualGitDir, "packed-refs")), readLooseTags((0, path.join)(actualGitDir, "refs", "tags"))]);
2860
+ const commonGitDir = await getCommonGitDir(repoPath);
2861
+ const [packedTags, looseTags] = await Promise.all([parsePackedRefs((0, path.join)(commonGitDir, "packed-refs")), readLooseTags((0, path.join)(commonGitDir, "refs", "tags"))]);
2834
2862
  const allTags = new Set([...packedTags, ...looseTags]);
2835
2863
  return Array.from(allTags).sort();
2836
2864
  };
@@ -2843,11 +2871,11 @@ var listTagsFast = async (repoPath) => {
2843
2871
  var resolveTagsBatchWithCommit = async (repoPath, tagNames, logger) => {
2844
2872
  const startTime = Date.now();
2845
2873
  const result = /* @__PURE__ */ new Map();
2846
- const actualGitDir = await getActualGitDir(repoPath);
2874
+ const commonGitDir = await getCommonGitDir(repoPath);
2847
2875
  const tagSet = new Set(tagNames);
2848
2876
  const packedRefsStart = Date.now();
2849
2877
  try {
2850
- const lines = (await (0, fs_promises.readFile)((0, path.join)(actualGitDir, "packed-refs"), "utf-8")).split("\n");
2878
+ const lines = (await (0, fs_promises.readFile)((0, path.join)(commonGitDir, "packed-refs"), "utf-8")).split("\n");
2851
2879
  for (let i = 0; i < lines.length; i++) {
2852
2880
  const line = lines[i];
2853
2881
  if (line.startsWith("#") || !line.trim()) continue;
@@ -2871,7 +2899,7 @@ var resolveTagsBatchWithCommit = async (repoPath, tagNames, logger) => {
2871
2899
  if (remainingTags.length > 0) {
2872
2900
  const looseRefsStart = Date.now();
2873
2901
  const looseTagEntries = (await Promise.all(remainingTags.map(async (tagName) => {
2874
- const looseRefPath = (0, path.join)(actualGitDir, "refs", "tags", tagName);
2902
+ const looseRefPath = (0, path.join)(commonGitDir, "refs", "tags", tagName);
2875
2903
  try {
2876
2904
  return {
2877
2905
  tagName,
@@ -3087,16 +3115,26 @@ var formatVersion = (version) => {
3087
3115
  return result;
3088
3116
  };
3089
3117
  /**
3090
- * Get a commit by hash
3118
+ * Build a Git read context that can operate correctly inside worktrees.
3091
3119
  * @param repositoryPath - Local Git repository directory
3120
+ * @returns The resolved Git read context
3121
+ */
3122
+ var createGitReadContext = async (repositoryPath) => ({
3123
+ dir: repositoryPath,
3124
+ gitdir: await getCommonGitDir(repositoryPath)
3125
+ });
3126
+ /**
3127
+ * Get a commit by hash
3128
+ * @param context - Git read context
3092
3129
  * @param hash - The hash of the commit
3093
3130
  * @returns The commit or undefined if the commit is not found
3094
3131
  */
3095
- var getCommit = async (repositoryPath, hash) => {
3132
+ var getCommit = async (context, hash) => {
3096
3133
  try {
3097
3134
  const commit = await isomorphic_git.readCommit({
3098
3135
  fs: fs_promises.default,
3099
- dir: repositoryPath,
3136
+ dir: context.dir,
3137
+ gitdir: context.gitdir,
3100
3138
  oid: hash
3101
3139
  });
3102
3140
  return {
@@ -3113,19 +3151,20 @@ var getCommit = async (repositoryPath, hash) => {
3113
3151
  };
3114
3152
  /**
3115
3153
  * Get the current commit
3116
- * @param repositoryPath - Local Git repository directory
3154
+ * @param context - Git read context
3117
3155
  * @returns The current commit or undefined if the current commit is not found
3118
3156
  */
3119
- var getCurrentCommit = async (repositoryPath) => {
3157
+ var getCurrentCommit = async (context) => {
3120
3158
  try {
3121
3159
  const currentOid = await isomorphic_git.resolveRef({
3122
3160
  fs: fs_promises.default,
3123
- dir: repositoryPath,
3161
+ dir: context.dir,
3124
3162
  ref: "HEAD"
3125
3163
  });
3126
3164
  const commit = await isomorphic_git.readCommit({
3127
3165
  fs: fs_promises.default,
3128
- dir: repositoryPath,
3166
+ dir: context.dir,
3167
+ gitdir: context.gitdir,
3129
3168
  oid: currentOid
3130
3169
  });
3131
3170
  return {
@@ -3151,21 +3190,23 @@ var getRelatedTagsFromMap = (commitToTags, commitHash) => {
3151
3190
  };
3152
3191
  /**
3153
3192
  * Get the commit related branch name.
3154
- * @param repositoryPath - Local Git repository directory
3193
+ * @param context - Git read context
3155
3194
  * @param commitHash - The hash of the commit
3156
3195
  * @returns The commit related branch name or undefined if not found
3157
3196
  */
3158
- var getRelatedBranches = async (repositoryPath, commitHash) => {
3197
+ var getRelatedBranches = async (context, commitHash) => {
3159
3198
  try {
3160
3199
  const branches = await isomorphic_git.listBranches({
3161
3200
  fs: fs_promises.default,
3162
- dir: repositoryPath
3201
+ dir: context.dir,
3202
+ gitdir: context.gitdir
3163
3203
  });
3164
3204
  const relatedBranches = [];
3165
3205
  for (const branch of branches) try {
3166
3206
  if (await isomorphic_git.resolveRef({
3167
3207
  fs: fs_promises.default,
3168
- dir: repositoryPath,
3208
+ dir: context.dir,
3209
+ gitdir: context.gitdir,
3169
3210
  ref: branch
3170
3211
  }) === commitHash) relatedBranches.push(branch);
3171
3212
  } catch (_unused3) {}
@@ -3309,7 +3350,7 @@ var formatModifiedFile = (modifiedFile) => `'${modifiedFile.path}':${modifiedFil
3309
3350
  * @param commitToTags - Map of commit hash to tags for performance
3310
3351
  * @returns The version or undefined if no version is found
3311
3352
  */
3312
- var lookupVersionLabelRecursive = async (cwd, commit, reachedCommits, commitToTags) => {
3353
+ var lookupVersionLabelRecursive = async (context, commit, reachedCommits, commitToTags) => {
3313
3354
  const scheduledStack = [];
3314
3355
  let version = {
3315
3356
  major: 0,
@@ -3333,10 +3374,11 @@ var lookupVersionLabelRecursive = async (cwd, commit, reachedCommits, commitToTa
3333
3374
  try {
3334
3375
  const parentHashes = (await isomorphic_git.readCommit({
3335
3376
  fs: fs_promises.default,
3336
- dir: cwd,
3377
+ dir: context.dir,
3378
+ gitdir: context.gitdir,
3337
3379
  oid: currentCommit.hash
3338
3380
  })).commit.parent || [];
3339
- parentCommits = (await Promise.all(parentHashes.map((parentHash) => getCommit(cwd, parentHash)))).filter((ci) => ci !== void 0);
3381
+ parentCommits = (await Promise.all(parentHashes.map((parentHash) => getCommit(context, parentHash)))).filter((ci) => ci !== void 0);
3340
3382
  } catch (_unused6) {}
3341
3383
  if (parentCommits.length === 0) {
3342
3384
  reachedCommits.set(currentCommit.hash, version);
@@ -3351,7 +3393,7 @@ var lookupVersionLabelRecursive = async (cwd, commit, reachedCommits, commitToTa
3351
3393
  while (scheduledStack.length >= 1) {
3352
3394
  const { commit: scheduledCommit, parents } = scheduledStack.pop();
3353
3395
  if (parents.length >= 2) for (let index = 1; index < parents.length; index++) {
3354
- const alternateParentVersion = await lookupVersionLabelRecursive(cwd, parents[index], reachedCommits, commitToTags);
3396
+ const alternateParentVersion = await lookupVersionLabelRecursive(context, parents[index], reachedCommits, commitToTags);
3355
3397
  if (alternateParentVersion && compareVersions(alternateParentVersion, version) < 0) version = alternateParentVersion;
3356
3398
  }
3357
3399
  version = incrementLastVersionComponent(version);
@@ -3379,12 +3421,31 @@ var getGitMetadata = async (repositoryPath, checkWorkingDirectoryStatus, logger)
3379
3421
  logger.debug(`[screw-up] Total getGitMetadata: ${Date.now() - startTime}ms`);
3380
3422
  return metadata;
3381
3423
  }
3424
+ let gitContext;
3382
3425
  try {
3383
- const currentCommit = await getCurrentCommit(gitRootPath);
3384
- if (!currentCommit) {
3385
- logger.debug(`[screw-up] Total getGitMetadata: ${Date.now() - startTime}ms`);
3386
- return metadata;
3426
+ gitContext = await createGitReadContext(gitRootPath);
3427
+ } catch (error) {
3428
+ logger.warn(`Failed to resolve git metadata context: ${error}`);
3429
+ logger.debug(`[screw-up] Total getGitMetadata: ${Date.now() - startTime}ms`);
3430
+ return metadata;
3431
+ }
3432
+ const currentCommit = await getCurrentCommit(gitContext);
3433
+ if (!currentCommit) {
3434
+ logger.debug(`[screw-up] Total getGitMetadata: ${Date.now() - startTime}ms`);
3435
+ return metadata;
3436
+ }
3437
+ const gitMetadata = {
3438
+ tags: [],
3439
+ branches: [],
3440
+ commit: {
3441
+ hash: currentCommit.hash,
3442
+ shortHash: currentCommit.shortHash,
3443
+ date: dayjs(currentCommit.date).format("YYYY-MM-DDTHH:mm:ssZ"),
3444
+ message: currentCommit.message
3387
3445
  }
3446
+ };
3447
+ metadata.git = gitMetadata;
3448
+ try {
3388
3449
  const buildStart = Date.now();
3389
3450
  const commitToTags = await buildCompleteTagCache(gitRootPath, (tagName) => {
3390
3451
  const version = parseVersion(tagName);
@@ -3392,12 +3453,7 @@ var getGitMetadata = async (repositoryPath, checkWorkingDirectoryStatus, logger)
3392
3453
  }, logger);
3393
3454
  logger.debug(`[screw-up] buildCompleteTagCache: ${Date.now() - buildStart}ms`);
3394
3455
  logger.debug(`Built tag map with ${commitToTags.size} commits`);
3395
- let version = await lookupVersionLabelRecursive(gitRootPath, currentCommit, /* @__PURE__ */ new Map(), commitToTags);
3396
- const gitMetadata = {
3397
- tags: [],
3398
- branches: []
3399
- };
3400
- metadata.git = gitMetadata;
3456
+ let version = await lookupVersionLabelRecursive(gitContext, currentCommit, /* @__PURE__ */ new Map(), commitToTags);
3401
3457
  if (version) {
3402
3458
  if (checkWorkingDirectoryStatus) {
3403
3459
  const modifiedFiles = await getModifiedFiles(gitRootPath, currentCommit.tree);
@@ -3411,16 +3467,14 @@ var getGitMetadata = async (repositoryPath, checkWorkingDirectoryStatus, logger)
3411
3467
  gitMetadata.version = gitVersion;
3412
3468
  metadata.version = gitVersion;
3413
3469
  }
3414
- gitMetadata.commit = {
3415
- hash: currentCommit.hash,
3416
- shortHash: currentCommit.shortHash,
3417
- date: dayjs(currentCommit.date).format("YYYY-MM-DDTHH:mm:ssZ"),
3418
- message: currentCommit.message
3419
- };
3420
3470
  gitMetadata.tags = getRelatedTagsFromMap(commitToTags, currentCommit.hash).map((tag) => tag.name);
3421
- gitMetadata.branches = await getRelatedBranches(gitRootPath, currentCommit.hash);
3422
3471
  } catch (error) {
3423
- logger.warn(`Failed to extract git metadata: ${error}`);
3472
+ logger.warn(`Failed to resolve git versioning metadata: ${error}`);
3473
+ }
3474
+ try {
3475
+ gitMetadata.branches = await getRelatedBranches(gitContext, currentCommit.hash);
3476
+ } catch (error) {
3477
+ logger.warn(`Failed to resolve git branch metadata: ${error}`);
3424
3478
  }
3425
3479
  logger.debug(`[screw-up] Total getGitMetadata: ${Date.now() - startTime}ms`);
3426
3480
  return metadata;
@@ -4317,7 +4371,7 @@ var publishCommand = async (args, logger) => {
4317
4371
  }
4318
4372
  };
4319
4373
  var showHelp = async () => {
4320
- const { author, license, repository_url, version, git_commit_hash } = await Promise.resolve().then(() => require("./packageMetadata-Cwh4Fqmw.cjs"));
4374
+ const { author, license, repository_url, version, git_commit_hash } = await Promise.resolve().then(() => require("./packageMetadata-CaaD3Ehh.cjs"));
4321
4375
  console.info(`screw-up [${version}-${git_commit_hash}]
4322
4376
  Easy package metadata inserter CLI
4323
4377
  Copyright (c) ${author}