screw-up 1.4.0 → 1.6.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/analyzer.d.ts +27 -2
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/cache-manager.d.ts +52 -0
- package/dist/cache-manager.d.ts.map +1 -0
- package/dist/cache-operations.d.ts +79 -0
- package/dist/cache-operations.d.ts.map +1 -0
- package/dist/cache.d.ts +67 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cli-internal.d.ts +2 -2
- package/dist/cli.d.ts +2 -2
- package/dist/generated/packageMetadata.d.ts +4 -4
- package/dist/git-operations.d.ts +68 -0
- package/dist/git-operations.d.ts.map +1 -0
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +2 -2
- package/dist/main.cjs +4 -4
- package/dist/main.cjs.map +1 -1
- package/dist/main.d.ts +2 -2
- package/dist/main.js +4 -4
- package/dist/main.js.map +1 -1
- package/dist/{packageMetadata-BR1AdagI.cjs → packageMetadata-CCW9p12u.cjs} +445 -70
- package/dist/packageMetadata-CCW9p12u.cjs.map +1 -0
- package/dist/{packageMetadata-CPcWAWcQ.js → packageMetadata-LkGK6Bjw.js} +447 -72
- package/dist/packageMetadata-LkGK6Bjw.js.map +1 -0
- package/dist/types.d.ts +2 -2
- package/dist/vite-plugin.d.ts +2 -2
- package/package.json +7 -7
- package/dist/packageMetadata-BR1AdagI.cjs.map +0 -1
- package/dist/packageMetadata-CPcWAWcQ.js.map +0 -1
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* name: screw-up
|
|
3
|
-
* version: 1.
|
|
3
|
+
* version: 1.6.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: 10c04af9c9b127002592d48cbb6ec18cfe5048bb
|
|
9
9
|
*/
|
|
10
10
|
import { existsSync } from "fs";
|
|
11
11
|
import * as fs from "fs/promises";
|
|
12
|
-
import { readFile } from "fs/promises";
|
|
13
|
-
import { dirname, join } from "path";
|
|
12
|
+
import fs__default, { readFile } from "fs/promises";
|
|
13
|
+
import path, { dirname, join } from "path";
|
|
14
14
|
import { glob } from "glob";
|
|
15
15
|
import * as git from "isomorphic-git";
|
|
16
|
+
import crypto from "crypto";
|
|
17
|
+
import os from "os";
|
|
16
18
|
var Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/;
|
|
17
19
|
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]/;
|
|
18
20
|
var ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\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\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\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\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\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-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\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-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\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\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\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-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\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\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\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\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\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]|\uDB40[\uDD00-\uDDEF]/;
|
|
@@ -1651,6 +1653,397 @@ function requireDayjs_min() {
|
|
|
1651
1653
|
}
|
|
1652
1654
|
var dayjs_minExports = requireDayjs_min();
|
|
1653
1655
|
const dayjs = /* @__PURE__ */ getDefaultExportFromCjs(dayjs_minExports);
|
|
1656
|
+
const CLEANUP_DELETE_AGE_MS = 10 * 24 * 60 * 60 * 1e3;
|
|
1657
|
+
const getCachePath = (repoPath) => {
|
|
1658
|
+
const absoluteRepoPath = path.resolve(repoPath);
|
|
1659
|
+
const pathHash = crypto.createHash("sha1").update(absoluteRepoPath).digest("hex");
|
|
1660
|
+
return path.join(
|
|
1661
|
+
os.homedir(),
|
|
1662
|
+
".cache",
|
|
1663
|
+
"screw-up",
|
|
1664
|
+
"tag-cache",
|
|
1665
|
+
`${pathHash}.json`
|
|
1666
|
+
);
|
|
1667
|
+
};
|
|
1668
|
+
const buildCacheValidation = async (repoPath) => {
|
|
1669
|
+
const tags = await git.listTags({ fs: fs__default, dir: repoPath });
|
|
1670
|
+
const tagListHash = crypto.createHash("sha256").update(tags.sort().join("\n")).digest("hex");
|
|
1671
|
+
const validation = {
|
|
1672
|
+
tagListHash,
|
|
1673
|
+
tagCount: tags.length
|
|
1674
|
+
};
|
|
1675
|
+
try {
|
|
1676
|
+
const packedRefsPath = path.join(repoPath, ".git", "packed-refs");
|
|
1677
|
+
const stats = await fs__default.stat(packedRefsPath);
|
|
1678
|
+
validation.packedRefsMtime = stats.mtimeMs;
|
|
1679
|
+
} catch (e) {
|
|
1680
|
+
}
|
|
1681
|
+
try {
|
|
1682
|
+
const refsTagsPath = path.join(repoPath, ".git", "refs", "tags");
|
|
1683
|
+
const stats = await fs__default.stat(refsTagsPath);
|
|
1684
|
+
validation.refsTagsMtime = stats.mtimeMs;
|
|
1685
|
+
} catch (e) {
|
|
1686
|
+
}
|
|
1687
|
+
return validation;
|
|
1688
|
+
};
|
|
1689
|
+
const isCacheValid = async (cachedData, repoPath) => {
|
|
1690
|
+
try {
|
|
1691
|
+
const currentTags = await git.listTags({ fs: fs__default, dir: repoPath });
|
|
1692
|
+
if (currentTags.length !== cachedData.validation.tagCount) {
|
|
1693
|
+
return false;
|
|
1694
|
+
}
|
|
1695
|
+
const tagListHash = crypto.createHash("sha256").update(currentTags.sort().join("\n")).digest("hex");
|
|
1696
|
+
if (cachedData.validation.tagListHash !== tagListHash) {
|
|
1697
|
+
return false;
|
|
1698
|
+
}
|
|
1699
|
+
if (cachedData.validation.packedRefsMtime !== void 0) {
|
|
1700
|
+
try {
|
|
1701
|
+
const packedRefsPath = path.join(repoPath, ".git", "packed-refs");
|
|
1702
|
+
const stats = await fs__default.stat(packedRefsPath);
|
|
1703
|
+
if (stats.mtimeMs > cachedData.timestamp) {
|
|
1704
|
+
return false;
|
|
1705
|
+
}
|
|
1706
|
+
} catch (e) {
|
|
1707
|
+
}
|
|
1708
|
+
}
|
|
1709
|
+
if (cachedData.validation.refsTagsMtime !== void 0) {
|
|
1710
|
+
try {
|
|
1711
|
+
const refsTagsPath = path.join(repoPath, ".git", "refs", "tags");
|
|
1712
|
+
const stats = await fs__default.stat(refsTagsPath);
|
|
1713
|
+
if (stats.mtimeMs > cachedData.timestamp) {
|
|
1714
|
+
return false;
|
|
1715
|
+
}
|
|
1716
|
+
} catch (e) {
|
|
1717
|
+
}
|
|
1718
|
+
}
|
|
1719
|
+
return true;
|
|
1720
|
+
} catch (e) {
|
|
1721
|
+
return false;
|
|
1722
|
+
}
|
|
1723
|
+
};
|
|
1724
|
+
const loadCachedTags = async (repoPath) => {
|
|
1725
|
+
try {
|
|
1726
|
+
const cachePath = getCachePath(repoPath);
|
|
1727
|
+
const data = await fs__default.readFile(cachePath, "utf-8");
|
|
1728
|
+
const cachedData = JSON.parse(data);
|
|
1729
|
+
if (cachedData.version !== "1.0.0") {
|
|
1730
|
+
return null;
|
|
1731
|
+
}
|
|
1732
|
+
return cachedData;
|
|
1733
|
+
} catch (e) {
|
|
1734
|
+
return null;
|
|
1735
|
+
}
|
|
1736
|
+
};
|
|
1737
|
+
const saveCachedTags = async (repoPath, tagCache, validation) => {
|
|
1738
|
+
const cachePath = getCachePath(repoPath);
|
|
1739
|
+
const cacheDir = path.dirname(cachePath);
|
|
1740
|
+
await fs__default.mkdir(cacheDir, { recursive: true });
|
|
1741
|
+
const randomSuffix = crypto.randomBytes(8).toString("hex");
|
|
1742
|
+
const tempPath = cachePath.replace(".json", `_${randomSuffix}.json`);
|
|
1743
|
+
const data = {
|
|
1744
|
+
version: "1.0.0",
|
|
1745
|
+
timestamp: Date.now(),
|
|
1746
|
+
repository: {
|
|
1747
|
+
path: repoPath
|
|
1748
|
+
},
|
|
1749
|
+
validation,
|
|
1750
|
+
tagCache: {
|
|
1751
|
+
commitToTags: Object.fromEntries(tagCache.commitToTags)
|
|
1752
|
+
}
|
|
1753
|
+
};
|
|
1754
|
+
try {
|
|
1755
|
+
await fs__default.writeFile(tempPath, JSON.stringify(data, null, 2), "utf-8");
|
|
1756
|
+
await fs__default.rename(tempPath, cachePath);
|
|
1757
|
+
} catch (error) {
|
|
1758
|
+
try {
|
|
1759
|
+
await fs__default.unlink(tempPath);
|
|
1760
|
+
} catch (e) {
|
|
1761
|
+
}
|
|
1762
|
+
throw error;
|
|
1763
|
+
}
|
|
1764
|
+
};
|
|
1765
|
+
const reconstructTagCache = (cachedData) => {
|
|
1766
|
+
return {
|
|
1767
|
+
commitToTags: new Map(Object.entries(cachedData.tagCache.commitToTags)),
|
|
1768
|
+
initialized: true
|
|
1769
|
+
};
|
|
1770
|
+
};
|
|
1771
|
+
const cleanupOldCacheFiles = async (currentCachePath, currentTimestamp) => {
|
|
1772
|
+
let deletedCount = 0;
|
|
1773
|
+
try {
|
|
1774
|
+
const cacheDir = path.dirname(currentCachePath);
|
|
1775
|
+
const currentFileName = path.basename(currentCachePath);
|
|
1776
|
+
const files = await fs__default.readdir(cacheDir);
|
|
1777
|
+
await Promise.all(
|
|
1778
|
+
files.map(async (fileName) => {
|
|
1779
|
+
if (!fileName.endsWith(".json") || fileName === currentFileName) {
|
|
1780
|
+
return;
|
|
1781
|
+
}
|
|
1782
|
+
const filePath = path.join(cacheDir, fileName);
|
|
1783
|
+
try {
|
|
1784
|
+
const stats = await fs__default.stat(filePath);
|
|
1785
|
+
const fileAge = currentTimestamp - stats.mtimeMs;
|
|
1786
|
+
if (fileAge > CLEANUP_DELETE_AGE_MS) {
|
|
1787
|
+
await fs__default.unlink(filePath);
|
|
1788
|
+
deletedCount++;
|
|
1789
|
+
}
|
|
1790
|
+
} catch (e) {
|
|
1791
|
+
}
|
|
1792
|
+
})
|
|
1793
|
+
);
|
|
1794
|
+
} catch (e) {
|
|
1795
|
+
}
|
|
1796
|
+
return deletedCount;
|
|
1797
|
+
};
|
|
1798
|
+
const calculateTagDiff = (cachedTags, currentTagList) => {
|
|
1799
|
+
const cachedTagNames = /* @__PURE__ */ new Set();
|
|
1800
|
+
for (const tags of cachedTags.values()) {
|
|
1801
|
+
for (const tag of tags) {
|
|
1802
|
+
cachedTagNames.add(tag.name);
|
|
1803
|
+
}
|
|
1804
|
+
}
|
|
1805
|
+
const currentSet = new Set(currentTagList);
|
|
1806
|
+
const added = [];
|
|
1807
|
+
const unchanged = [];
|
|
1808
|
+
for (const tagName of currentTagList) {
|
|
1809
|
+
if (cachedTagNames.has(tagName)) {
|
|
1810
|
+
unchanged.push(tagName);
|
|
1811
|
+
} else {
|
|
1812
|
+
added.push(tagName);
|
|
1813
|
+
}
|
|
1814
|
+
}
|
|
1815
|
+
const deleted = [];
|
|
1816
|
+
for (const tagName of cachedTagNames) {
|
|
1817
|
+
if (!currentSet.has(tagName)) {
|
|
1818
|
+
deleted.push(tagName);
|
|
1819
|
+
}
|
|
1820
|
+
}
|
|
1821
|
+
return { added, deleted, unchanged };
|
|
1822
|
+
};
|
|
1823
|
+
const removeTagsFromCache = (cache, tagNames) => {
|
|
1824
|
+
const tagNamesToRemove = new Set(tagNames);
|
|
1825
|
+
const newCache = /* @__PURE__ */ new Map();
|
|
1826
|
+
for (const [commitHash, tags] of cache.entries()) {
|
|
1827
|
+
const filteredTags = tags.filter((tag) => !tagNamesToRemove.has(tag.name));
|
|
1828
|
+
if (filteredTags.length > 0) {
|
|
1829
|
+
newCache.set(commitHash, filteredTags);
|
|
1830
|
+
}
|
|
1831
|
+
}
|
|
1832
|
+
return newCache;
|
|
1833
|
+
};
|
|
1834
|
+
const addTagsToCache = (cache, newTags) => {
|
|
1835
|
+
const newCache = new Map(cache);
|
|
1836
|
+
for (const tag of newTags) {
|
|
1837
|
+
const existing = newCache.get(tag.hash) || [];
|
|
1838
|
+
const updated = [...existing, tag];
|
|
1839
|
+
updated.sort((a, b) => a.name.localeCompare(b.name));
|
|
1840
|
+
newCache.set(tag.hash, updated);
|
|
1841
|
+
}
|
|
1842
|
+
return newCache;
|
|
1843
|
+
};
|
|
1844
|
+
const updateTagsInCache = (cache, tagNames, updatedTags) => {
|
|
1845
|
+
let newCache = removeTagsFromCache(cache, tagNames);
|
|
1846
|
+
newCache = addTagsToCache(newCache, updatedTags);
|
|
1847
|
+
return newCache;
|
|
1848
|
+
};
|
|
1849
|
+
const resolveTagToCommit = async (repoPath, tagOid) => {
|
|
1850
|
+
var _a;
|
|
1851
|
+
try {
|
|
1852
|
+
const tagObject = await git.readTag({
|
|
1853
|
+
fs: fs__default,
|
|
1854
|
+
dir: repoPath,
|
|
1855
|
+
oid: tagOid
|
|
1856
|
+
});
|
|
1857
|
+
if ((_a = tagObject == null ? void 0 : tagObject.tag) == null ? void 0 : _a.object) {
|
|
1858
|
+
return tagObject.tag.object;
|
|
1859
|
+
}
|
|
1860
|
+
} catch (e) {
|
|
1861
|
+
}
|
|
1862
|
+
return tagOid;
|
|
1863
|
+
};
|
|
1864
|
+
const getTagsInfo = async (repoPath, tagNames, parseVersion2) => {
|
|
1865
|
+
const result = [];
|
|
1866
|
+
await Promise.all(
|
|
1867
|
+
tagNames.map(async (tagName) => {
|
|
1868
|
+
try {
|
|
1869
|
+
const oid = await git.resolveRef({
|
|
1870
|
+
fs: fs__default,
|
|
1871
|
+
dir: repoPath,
|
|
1872
|
+
ref: `refs/tags/${tagName}`
|
|
1873
|
+
});
|
|
1874
|
+
const commitHash = await resolveTagToCommit(repoPath, oid);
|
|
1875
|
+
const version2 = parseVersion2(tagName);
|
|
1876
|
+
result.push({
|
|
1877
|
+
name: tagName,
|
|
1878
|
+
hash: commitHash,
|
|
1879
|
+
version: version2
|
|
1880
|
+
});
|
|
1881
|
+
} catch (error) {
|
|
1882
|
+
console.warn(`Failed to get info for tag ${tagName}:`, error);
|
|
1883
|
+
}
|
|
1884
|
+
})
|
|
1885
|
+
);
|
|
1886
|
+
return result;
|
|
1887
|
+
};
|
|
1888
|
+
const buildCompleteTagCache = async (repoPath, parseVersion2) => {
|
|
1889
|
+
const cache = /* @__PURE__ */ new Map();
|
|
1890
|
+
const tags = await git.listTags({ fs: fs__default, dir: repoPath });
|
|
1891
|
+
await Promise.all(
|
|
1892
|
+
tags.map(async (tagName) => {
|
|
1893
|
+
const oid = await git.resolveRef({
|
|
1894
|
+
fs: fs__default,
|
|
1895
|
+
dir: repoPath,
|
|
1896
|
+
ref: `refs/tags/${tagName}`
|
|
1897
|
+
});
|
|
1898
|
+
const commitHash = await resolveTagToCommit(repoPath, oid);
|
|
1899
|
+
const version2 = parseVersion2(tagName);
|
|
1900
|
+
const tagInfo = {
|
|
1901
|
+
name: tagName,
|
|
1902
|
+
hash: commitHash,
|
|
1903
|
+
version: version2
|
|
1904
|
+
};
|
|
1905
|
+
if (!cache.has(commitHash)) {
|
|
1906
|
+
cache.set(commitHash, []);
|
|
1907
|
+
}
|
|
1908
|
+
cache.get(commitHash).push(tagInfo);
|
|
1909
|
+
})
|
|
1910
|
+
);
|
|
1911
|
+
for (const tags2 of cache.values()) {
|
|
1912
|
+
tags2.sort((a, b) => a.name.localeCompare(b.name));
|
|
1913
|
+
}
|
|
1914
|
+
return cache;
|
|
1915
|
+
};
|
|
1916
|
+
const hasTagMoved = async (repoPath, tagName, cachedCommit) => {
|
|
1917
|
+
try {
|
|
1918
|
+
const oid = await git.resolveRef({
|
|
1919
|
+
fs: fs__default,
|
|
1920
|
+
dir: repoPath,
|
|
1921
|
+
ref: `refs/tags/${tagName}`
|
|
1922
|
+
});
|
|
1923
|
+
const currentCommit = await resolveTagToCommit(repoPath, oid);
|
|
1924
|
+
return currentCommit !== cachedCommit;
|
|
1925
|
+
} catch (e) {
|
|
1926
|
+
return true;
|
|
1927
|
+
}
|
|
1928
|
+
};
|
|
1929
|
+
const findModifiedTags = async (repoPath, tagNames, cache) => {
|
|
1930
|
+
const modified = [];
|
|
1931
|
+
await Promise.all(
|
|
1932
|
+
tagNames.map(async (tagName) => {
|
|
1933
|
+
let cachedCommit;
|
|
1934
|
+
for (const [commit, tags] of cache.entries()) {
|
|
1935
|
+
const tag = tags.find((t) => t.name === tagName);
|
|
1936
|
+
if (tag) {
|
|
1937
|
+
cachedCommit = commit;
|
|
1938
|
+
break;
|
|
1939
|
+
}
|
|
1940
|
+
}
|
|
1941
|
+
if (cachedCommit) {
|
|
1942
|
+
const moved = await hasTagMoved(repoPath, tagName, cachedCommit);
|
|
1943
|
+
if (moved) {
|
|
1944
|
+
modified.push(tagName);
|
|
1945
|
+
}
|
|
1946
|
+
}
|
|
1947
|
+
})
|
|
1948
|
+
);
|
|
1949
|
+
return modified;
|
|
1950
|
+
};
|
|
1951
|
+
const loadOrBuildTagCache = async (repoPath, parseVersion2, logger) => {
|
|
1952
|
+
const startTime = Date.now();
|
|
1953
|
+
const cachedData = await loadCachedTags(repoPath);
|
|
1954
|
+
const currentTags = await git.listTags({ fs: fs__default, dir: repoPath });
|
|
1955
|
+
if (cachedData && await isCacheValid(cachedData, repoPath)) {
|
|
1956
|
+
logger.debug(`Cache valid, performing differential update...`);
|
|
1957
|
+
const cache = reconstructTagCache(cachedData);
|
|
1958
|
+
const stats = await performDifferentialUpdate(
|
|
1959
|
+
repoPath,
|
|
1960
|
+
cache.commitToTags,
|
|
1961
|
+
currentTags,
|
|
1962
|
+
parseVersion2,
|
|
1963
|
+
logger
|
|
1964
|
+
);
|
|
1965
|
+
const validation = await buildCacheValidation(repoPath);
|
|
1966
|
+
await saveCachedTags(repoPath, cache, validation);
|
|
1967
|
+
if (cachedData && Date.now() - cachedData.timestamp > 24 * 60 * 60 * 1e3) {
|
|
1968
|
+
try {
|
|
1969
|
+
const cachePath = getCachePath(repoPath);
|
|
1970
|
+
const deletedCount = await cleanupOldCacheFiles(cachePath, Date.now());
|
|
1971
|
+
if (deletedCount > 0) {
|
|
1972
|
+
logger.debug(`Cleaned up ${deletedCount} old cache files`);
|
|
1973
|
+
}
|
|
1974
|
+
} catch (e) {
|
|
1975
|
+
}
|
|
1976
|
+
}
|
|
1977
|
+
return {
|
|
1978
|
+
cache,
|
|
1979
|
+
stats: {
|
|
1980
|
+
...stats,
|
|
1981
|
+
updateTime: Date.now() - startTime,
|
|
1982
|
+
fullRebuild: false
|
|
1983
|
+
}
|
|
1984
|
+
};
|
|
1985
|
+
} else {
|
|
1986
|
+
logger.debug(`Cache invalid or missing, building from scratch...`);
|
|
1987
|
+
const commitToTags = await buildCompleteTagCache(repoPath, parseVersion2);
|
|
1988
|
+
const cache = {
|
|
1989
|
+
commitToTags,
|
|
1990
|
+
initialized: true
|
|
1991
|
+
};
|
|
1992
|
+
const validation = await buildCacheValidation(repoPath);
|
|
1993
|
+
await saveCachedTags(repoPath, cache, validation);
|
|
1994
|
+
return {
|
|
1995
|
+
cache,
|
|
1996
|
+
stats: {
|
|
1997
|
+
added: currentTags.length,
|
|
1998
|
+
deleted: 0,
|
|
1999
|
+
modified: 0,
|
|
2000
|
+
unchanged: 0,
|
|
2001
|
+
totalTags: currentTags.length,
|
|
2002
|
+
updateTime: Date.now() - startTime,
|
|
2003
|
+
fullRebuild: true
|
|
2004
|
+
}
|
|
2005
|
+
};
|
|
2006
|
+
}
|
|
2007
|
+
};
|
|
2008
|
+
async function performDifferentialUpdate(repoPath, cache, currentTags, parseVersion2, logger) {
|
|
2009
|
+
const diff = calculateTagDiff(cache, currentTags);
|
|
2010
|
+
logger.debug(
|
|
2011
|
+
`Tag diff: +${diff.added.length} -${diff.deleted.length} =${diff.unchanged.length}`
|
|
2012
|
+
);
|
|
2013
|
+
const modified = await findModifiedTags(repoPath, diff.unchanged, cache);
|
|
2014
|
+
logger.debug(`Found ${modified.length} modified tags`);
|
|
2015
|
+
if (diff.deleted.length > 0) {
|
|
2016
|
+
const newCache = removeTagsFromCache(cache, diff.deleted);
|
|
2017
|
+
cache.clear();
|
|
2018
|
+
for (const [k, v] of newCache) {
|
|
2019
|
+
cache.set(k, v);
|
|
2020
|
+
}
|
|
2021
|
+
}
|
|
2022
|
+
if (diff.added.length > 0) {
|
|
2023
|
+
const newTags = await getTagsInfo(repoPath, diff.added, parseVersion2);
|
|
2024
|
+
const newCache = addTagsToCache(cache, newTags);
|
|
2025
|
+
cache.clear();
|
|
2026
|
+
for (const [k, v] of newCache) {
|
|
2027
|
+
cache.set(k, v);
|
|
2028
|
+
}
|
|
2029
|
+
}
|
|
2030
|
+
if (modified.length > 0) {
|
|
2031
|
+
const updatedTags = await getTagsInfo(repoPath, modified, parseVersion2);
|
|
2032
|
+
const newCache = updateTagsInCache(cache, modified, updatedTags);
|
|
2033
|
+
cache.clear();
|
|
2034
|
+
for (const [k, v] of newCache) {
|
|
2035
|
+
cache.set(k, v);
|
|
2036
|
+
}
|
|
2037
|
+
}
|
|
2038
|
+
const unchangedCount = diff.unchanged.length - modified.length;
|
|
2039
|
+
return {
|
|
2040
|
+
added: diff.added.length,
|
|
2041
|
+
deleted: diff.deleted.length,
|
|
2042
|
+
modified: modified.length,
|
|
2043
|
+
unchanged: unchangedCount,
|
|
2044
|
+
totalTags: currentTags.length
|
|
2045
|
+
};
|
|
2046
|
+
}
|
|
1654
2047
|
const parseVersionComponent = (value) => {
|
|
1655
2048
|
const num = parseInt(value, 10);
|
|
1656
2049
|
return num < 0 || num > 65535 ? void 0 : num;
|
|
@@ -1776,52 +2169,11 @@ const getCurrentCommit = async (repositoryPath) => {
|
|
|
1776
2169
|
return void 0;
|
|
1777
2170
|
}
|
|
1778
2171
|
};
|
|
1779
|
-
const
|
|
1780
|
-
|
|
1781
|
-
const tags = await git.listTags({ fs, dir: repositoryPath });
|
|
1782
|
-
const tagInfos = [];
|
|
1783
|
-
for (const tagName of tags) {
|
|
1784
|
-
try {
|
|
1785
|
-
const tagOid = await git.resolveRef({
|
|
1786
|
-
fs,
|
|
1787
|
-
dir: repositoryPath,
|
|
1788
|
-
ref: `refs/tags/${tagName}`
|
|
1789
|
-
});
|
|
1790
|
-
let targetCommitOid = tagOid;
|
|
1791
|
-
try {
|
|
1792
|
-
const tagObject = await git.readTag({
|
|
1793
|
-
fs,
|
|
1794
|
-
dir: repositoryPath,
|
|
1795
|
-
oid: tagOid
|
|
1796
|
-
});
|
|
1797
|
-
if (tagObject && tagObject.tag.object) {
|
|
1798
|
-
targetCommitOid = tagObject.tag.object;
|
|
1799
|
-
}
|
|
1800
|
-
} catch (e) {
|
|
1801
|
-
}
|
|
1802
|
-
if (targetCommitOid === commitHash) {
|
|
1803
|
-
const version2 = parseVersion(tagName);
|
|
1804
|
-
if (version2 && isValidVersion(version2)) {
|
|
1805
|
-
tagInfos.push({
|
|
1806
|
-
name: tagName,
|
|
1807
|
-
hash: commitHash,
|
|
1808
|
-
version: version2
|
|
1809
|
-
});
|
|
1810
|
-
} else {
|
|
1811
|
-
tagInfos.push({
|
|
1812
|
-
name: tagName,
|
|
1813
|
-
hash: commitHash,
|
|
1814
|
-
version: void 0
|
|
1815
|
-
});
|
|
1816
|
-
}
|
|
1817
|
-
}
|
|
1818
|
-
} catch (e) {
|
|
1819
|
-
}
|
|
1820
|
-
}
|
|
1821
|
-
return tagInfos.sort((a, b) => a.name.localeCompare(b.name));
|
|
1822
|
-
} catch (e) {
|
|
2172
|
+
const getRelatedTagsFromCache = (cache, commitHash) => {
|
|
2173
|
+
if (!cache.initialized) {
|
|
1823
2174
|
return [];
|
|
1824
2175
|
}
|
|
2176
|
+
return cache.commitToTags.get(commitHash) || [];
|
|
1825
2177
|
};
|
|
1826
2178
|
const getRelatedTagsForVersioning = async (repositoryPath, commitHash) => {
|
|
1827
2179
|
try {
|
|
@@ -1834,19 +2186,7 @@ const getRelatedTagsForVersioning = async (repositoryPath, commitHash) => {
|
|
|
1834
2186
|
dir: repositoryPath,
|
|
1835
2187
|
ref: `refs/tags/${tagName}`
|
|
1836
2188
|
});
|
|
1837
|
-
|
|
1838
|
-
try {
|
|
1839
|
-
const tagObject = await git.readTag({
|
|
1840
|
-
fs,
|
|
1841
|
-
dir: repositoryPath,
|
|
1842
|
-
oid: tagOid
|
|
1843
|
-
});
|
|
1844
|
-
if (tagObject && tagObject.tag.object) {
|
|
1845
|
-
targetCommitOid = tagObject.tag.object;
|
|
1846
|
-
}
|
|
1847
|
-
} catch (e) {
|
|
1848
|
-
}
|
|
1849
|
-
if (targetCommitOid === commitHash) {
|
|
2189
|
+
if (tagOid === commitHash) {
|
|
1850
2190
|
const version2 = parseVersion(tagName);
|
|
1851
2191
|
if (version2 && isValidVersion(version2)) {
|
|
1852
2192
|
tagInfos.push({
|
|
@@ -1855,6 +2195,25 @@ const getRelatedTagsForVersioning = async (repositoryPath, commitHash) => {
|
|
|
1855
2195
|
version: version2
|
|
1856
2196
|
});
|
|
1857
2197
|
}
|
|
2198
|
+
} else {
|
|
2199
|
+
try {
|
|
2200
|
+
const tagObject = await git.readTag({
|
|
2201
|
+
fs,
|
|
2202
|
+
dir: repositoryPath,
|
|
2203
|
+
oid: tagOid
|
|
2204
|
+
});
|
|
2205
|
+
if (tagObject && tagObject.tag.object === commitHash) {
|
|
2206
|
+
const version2 = parseVersion(tagName);
|
|
2207
|
+
if (version2 && isValidVersion(version2)) {
|
|
2208
|
+
tagInfos.push({
|
|
2209
|
+
name: tagName,
|
|
2210
|
+
hash: commitHash,
|
|
2211
|
+
version: version2
|
|
2212
|
+
});
|
|
2213
|
+
}
|
|
2214
|
+
}
|
|
2215
|
+
} catch (e) {
|
|
2216
|
+
}
|
|
1858
2217
|
}
|
|
1859
2218
|
} catch (e) {
|
|
1860
2219
|
}
|
|
@@ -1904,7 +2263,7 @@ const getModifiedFiles = async (repositoryPath) => {
|
|
|
1904
2263
|
const formatModifiedFile = (modifiedFile) => {
|
|
1905
2264
|
return `'${modifiedFile[0]}':${modifiedFile[1]}:${modifiedFile[2]}:${modifiedFile[3]}`;
|
|
1906
2265
|
};
|
|
1907
|
-
const lookupVersionLabelRecursive = async (cwd, commit, reachedCommits) => {
|
|
2266
|
+
const lookupVersionLabelRecursive = async (cwd, commit, reachedCommits, tagCache) => {
|
|
1908
2267
|
const scheduledStack = [];
|
|
1909
2268
|
let version2 = { major: 0, minor: 0, build: 1, original: "0.0.1" };
|
|
1910
2269
|
let currentCommit = commit;
|
|
@@ -1913,10 +2272,7 @@ const lookupVersionLabelRecursive = async (cwd, commit, reachedCommits) => {
|
|
|
1913
2272
|
version2 = reachedCommits.get(currentCommit.hash);
|
|
1914
2273
|
break;
|
|
1915
2274
|
}
|
|
1916
|
-
const relatedTags = await getRelatedTagsForVersioning(
|
|
1917
|
-
cwd,
|
|
1918
|
-
currentCommit.hash
|
|
1919
|
-
);
|
|
2275
|
+
const relatedTags = tagCache ? getRelatedTagsFromCache(tagCache, currentCommit.hash) : await getRelatedTagsForVersioning(cwd, currentCommit.hash);
|
|
1920
2276
|
const versionCandidates = relatedTags.filter((tag) => tag.version && isValidVersion(tag.version)).filter((tag) => tag.version.minor !== void 0).sort((a, b) => compareVersions(a.version, b.version));
|
|
1921
2277
|
if (versionCandidates.length >= 1) {
|
|
1922
2278
|
version2 = versionCandidates[0].version;
|
|
@@ -1951,7 +2307,8 @@ const lookupVersionLabelRecursive = async (cwd, commit, reachedCommits) => {
|
|
|
1951
2307
|
const alternateParentVersion = await lookupVersionLabelRecursive(
|
|
1952
2308
|
cwd,
|
|
1953
2309
|
parents[index],
|
|
1954
|
-
reachedCommits
|
|
2310
|
+
reachedCommits,
|
|
2311
|
+
tagCache
|
|
1955
2312
|
);
|
|
1956
2313
|
if (alternateParentVersion && compareVersions(alternateParentVersion, version2) < 0) {
|
|
1957
2314
|
version2 = alternateParentVersion;
|
|
@@ -1976,11 +2333,29 @@ const getGitMetadata = async (repositoryPath, checkWorkingDirectoryStatus, logge
|
|
|
1976
2333
|
if (!currentCommit) {
|
|
1977
2334
|
return metadata;
|
|
1978
2335
|
}
|
|
2336
|
+
const { cache: tagCache, stats } = await loadOrBuildTagCache(
|
|
2337
|
+
gitRootPath,
|
|
2338
|
+
(tagName) => {
|
|
2339
|
+
const version22 = parseVersion(tagName);
|
|
2340
|
+
return version22 && isValidVersion(version22) ? version22 : void 0;
|
|
2341
|
+
},
|
|
2342
|
+
logger
|
|
2343
|
+
);
|
|
2344
|
+
if (stats.fullRebuild) {
|
|
2345
|
+
logger.debug(
|
|
2346
|
+
`Built new tag cache: ${stats.totalTags} tags in ${stats.updateTime}ms`
|
|
2347
|
+
);
|
|
2348
|
+
} else {
|
|
2349
|
+
logger.debug(
|
|
2350
|
+
`Updated cache differentially: +${stats.added} -${stats.deleted} ~${stats.modified} =${stats.unchanged} (${stats.updateTime}ms)`
|
|
2351
|
+
);
|
|
2352
|
+
}
|
|
1979
2353
|
const reachedCommits = /* @__PURE__ */ new Map();
|
|
1980
2354
|
let version2 = await lookupVersionLabelRecursive(
|
|
1981
2355
|
gitRootPath,
|
|
1982
2356
|
currentCommit,
|
|
1983
|
-
reachedCommits
|
|
2357
|
+
reachedCommits,
|
|
2358
|
+
tagCache
|
|
1984
2359
|
);
|
|
1985
2360
|
const gitMetadata = { tags: [], branches: [] };
|
|
1986
2361
|
metadata.git = gitMetadata;
|
|
@@ -2005,7 +2380,7 @@ const getGitMetadata = async (repositoryPath, checkWorkingDirectoryStatus, logge
|
|
|
2005
2380
|
date: dayjs(currentCommit.date).format("YYYY-MM-DDTHH:mm:ssZ[Z]"),
|
|
2006
2381
|
message: currentCommit.message
|
|
2007
2382
|
};
|
|
2008
|
-
const relatedTags =
|
|
2383
|
+
const relatedTags = getRelatedTagsFromCache(tagCache, currentCommit.hash);
|
|
2009
2384
|
gitMetadata.tags = relatedTags.map((tag) => tag.name);
|
|
2010
2385
|
const relatedBranches = await getRelatedBranches(
|
|
2011
2386
|
gitRootPath,
|
|
@@ -2031,11 +2406,11 @@ const getFetchGitMetadata = (targetDir, checkWorkingDirectoryStatus, logger) =>
|
|
|
2031
2406
|
};
|
|
2032
2407
|
};
|
|
2033
2408
|
const name = "screw-up";
|
|
2034
|
-
const version = "1.
|
|
2409
|
+
const version = "1.6.0";
|
|
2035
2410
|
const author = "Kouji Matsui (@kekyo@mi.kekyo.net)";
|
|
2036
2411
|
const license = "MIT";
|
|
2037
2412
|
const repository_url = "https://github.com/kekyo/screw-up.git";
|
|
2038
|
-
const git_commit_hash = "
|
|
2413
|
+
const git_commit_hash = "10c04af9c9b127002592d48cbb6ec18cfe5048bb";
|
|
2039
2414
|
const packageMetadata = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
2040
2415
|
__proto__: null,
|
|
2041
2416
|
author,
|
|
@@ -2058,4 +2433,4 @@ export {
|
|
|
2058
2433
|
resolvePackageMetadata as r,
|
|
2059
2434
|
version as v
|
|
2060
2435
|
};
|
|
2061
|
-
//# sourceMappingURL=packageMetadata-
|
|
2436
|
+
//# sourceMappingURL=packageMetadata-LkGK6Bjw.js.map
|