screw-up 1.6.0 → 1.8.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 +2 -9
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/cli-internal.d.ts +2 -2
- package/dist/cli.d.ts +2 -2
- package/dist/fast-tags.d.ts +42 -0
- package/dist/fast-tags.d.ts.map +1 -0
- package/dist/generated/packageMetadata.d.ts +4 -4
- package/dist/git-operations.d.ts +6 -5
- package/dist/git-operations.d.ts.map +1 -1
- package/dist/index.cjs +26 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +26 -14
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +2 -2
- package/dist/main.cjs +4 -4
- package/dist/main.d.ts +2 -2
- package/dist/main.js +4 -4
- package/dist/{packageMetadata-CCW9p12u.cjs → packageMetadata-BwTlrgAe.cjs} +183 -434
- package/dist/packageMetadata-BwTlrgAe.cjs.map +1 -0
- package/dist/{packageMetadata-LkGK6Bjw.js → packageMetadata-CDIVnX1z.js} +183 -434
- package/dist/packageMetadata-CDIVnX1z.js.map +1 -0
- package/dist/types.d.ts +2 -2
- package/dist/vite-plugin.d.ts +2 -2
- package/dist/vite-plugin.d.ts.map +1 -1
- package/package.json +9 -9
- package/dist/cache-manager.d.ts +0 -52
- package/dist/cache-manager.d.ts.map +0 -1
- package/dist/cache-operations.d.ts +0 -79
- package/dist/cache-operations.d.ts.map +0 -1
- package/dist/cache.d.ts +0 -67
- package/dist/cache.d.ts.map +0 -1
- package/dist/packageMetadata-CCW9p12u.cjs.map +0 -1
- package/dist/packageMetadata-LkGK6Bjw.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"packageMetadata-LkGK6Bjw.js","sources":["../node_modules/json5/dist/index.mjs","../src/internal.ts","../node_modules/dayjs/dayjs.min.js","../src/cache.ts","../src/cache-operations.ts","../src/git-operations.ts","../src/cache-manager.ts","../src/analyzer.ts","../src/generated/packageMetadata.ts"],"sourcesContent":["// This is a generated file. Do not edit.\nvar Space_Separator = /[\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\nvar 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]/;\nvar 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]/;\n\nvar unicode = {\n\tSpace_Separator: Space_Separator,\n\tID_Start: ID_Start,\n\tID_Continue: ID_Continue\n};\n\nvar util = {\n isSpaceSeparator (c) {\n return typeof c === 'string' && unicode.Space_Separator.test(c)\n },\n\n isIdStartChar (c) {\n return typeof c === 'string' && (\n (c >= 'a' && c <= 'z') ||\n (c >= 'A' && c <= 'Z') ||\n (c === '$') || (c === '_') ||\n unicode.ID_Start.test(c)\n )\n },\n\n isIdContinueChar (c) {\n return typeof c === 'string' && (\n (c >= 'a' && c <= 'z') ||\n (c >= 'A' && c <= 'Z') ||\n (c >= '0' && c <= '9') ||\n (c === '$') || (c === '_') ||\n (c === '\\u200C') || (c === '\\u200D') ||\n unicode.ID_Continue.test(c)\n )\n },\n\n isDigit (c) {\n return typeof c === 'string' && /[0-9]/.test(c)\n },\n\n isHexDigit (c) {\n return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)\n },\n};\n\nlet source;\nlet parseState;\nlet stack;\nlet pos;\nlet line;\nlet column;\nlet token;\nlet key;\nlet root;\n\nvar parse = function parse (text, reviver) {\n source = String(text);\n parseState = 'start';\n stack = [];\n pos = 0;\n line = 1;\n column = 0;\n token = undefined;\n key = undefined;\n root = undefined;\n\n do {\n token = lex();\n\n // This code is unreachable.\n // if (!parseStates[parseState]) {\n // throw invalidParseState()\n // }\n\n parseStates[parseState]();\n } while (token.type !== 'eof')\n\n if (typeof reviver === 'function') {\n return internalize({'': root}, '', reviver)\n }\n\n return root\n};\n\nfunction internalize (holder, name, reviver) {\n const value = holder[name];\n if (value != null && typeof value === 'object') {\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const key = String(i);\n const replacement = internalize(value, key, reviver);\n if (replacement === undefined) {\n delete value[key];\n } else {\n Object.defineProperty(value, key, {\n value: replacement,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n }\n } else {\n for (const key in value) {\n const replacement = internalize(value, key, reviver);\n if (replacement === undefined) {\n delete value[key];\n } else {\n Object.defineProperty(value, key, {\n value: replacement,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n }\n }\n }\n\n return reviver.call(holder, name, value)\n}\n\nlet lexState;\nlet buffer;\nlet doubleQuote;\nlet sign;\nlet c;\n\nfunction lex () {\n lexState = 'default';\n buffer = '';\n doubleQuote = false;\n sign = 1;\n\n for (;;) {\n c = peek();\n\n // This code is unreachable.\n // if (!lexStates[lexState]) {\n // throw invalidLexState(lexState)\n // }\n\n const token = lexStates[lexState]();\n if (token) {\n return token\n }\n }\n}\n\nfunction peek () {\n if (source[pos]) {\n return String.fromCodePoint(source.codePointAt(pos))\n }\n}\n\nfunction read () {\n const c = peek();\n\n if (c === '\\n') {\n line++;\n column = 0;\n } else if (c) {\n column += c.length;\n } else {\n column++;\n }\n\n if (c) {\n pos += c.length;\n }\n\n return c\n}\n\nconst lexStates = {\n default () {\n switch (c) {\n case '\\t':\n case '\\v':\n case '\\f':\n case ' ':\n case '\\u00A0':\n case '\\uFEFF':\n case '\\n':\n case '\\r':\n case '\\u2028':\n case '\\u2029':\n read();\n return\n\n case '/':\n read();\n lexState = 'comment';\n return\n\n case undefined:\n read();\n return newToken('eof')\n }\n\n if (util.isSpaceSeparator(c)) {\n read();\n return\n }\n\n // This code is unreachable.\n // if (!lexStates[parseState]) {\n // throw invalidLexState(parseState)\n // }\n\n return lexStates[parseState]()\n },\n\n comment () {\n switch (c) {\n case '*':\n read();\n lexState = 'multiLineComment';\n return\n\n case '/':\n read();\n lexState = 'singleLineComment';\n return\n }\n\n throw invalidChar(read())\n },\n\n multiLineComment () {\n switch (c) {\n case '*':\n read();\n lexState = 'multiLineCommentAsterisk';\n return\n\n case undefined:\n throw invalidChar(read())\n }\n\n read();\n },\n\n multiLineCommentAsterisk () {\n switch (c) {\n case '*':\n read();\n return\n\n case '/':\n read();\n lexState = 'default';\n return\n\n case undefined:\n throw invalidChar(read())\n }\n\n read();\n lexState = 'multiLineComment';\n },\n\n singleLineComment () {\n switch (c) {\n case '\\n':\n case '\\r':\n case '\\u2028':\n case '\\u2029':\n read();\n lexState = 'default';\n return\n\n case undefined:\n read();\n return newToken('eof')\n }\n\n read();\n },\n\n value () {\n switch (c) {\n case '{':\n case '[':\n return newToken('punctuator', read())\n\n case 'n':\n read();\n literal('ull');\n return newToken('null', null)\n\n case 't':\n read();\n literal('rue');\n return newToken('boolean', true)\n\n case 'f':\n read();\n literal('alse');\n return newToken('boolean', false)\n\n case '-':\n case '+':\n if (read() === '-') {\n sign = -1;\n }\n\n lexState = 'sign';\n return\n\n case '.':\n buffer = read();\n lexState = 'decimalPointLeading';\n return\n\n case '0':\n buffer = read();\n lexState = 'zero';\n return\n\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n buffer = read();\n lexState = 'decimalInteger';\n return\n\n case 'I':\n read();\n literal('nfinity');\n return newToken('numeric', Infinity)\n\n case 'N':\n read();\n literal('aN');\n return newToken('numeric', NaN)\n\n case '\"':\n case \"'\":\n doubleQuote = (read() === '\"');\n buffer = '';\n lexState = 'string';\n return\n }\n\n throw invalidChar(read())\n },\n\n identifierNameStartEscape () {\n if (c !== 'u') {\n throw invalidChar(read())\n }\n\n read();\n const u = unicodeEscape();\n switch (u) {\n case '$':\n case '_':\n break\n\n default:\n if (!util.isIdStartChar(u)) {\n throw invalidIdentifier()\n }\n\n break\n }\n\n buffer += u;\n lexState = 'identifierName';\n },\n\n identifierName () {\n switch (c) {\n case '$':\n case '_':\n case '\\u200C':\n case '\\u200D':\n buffer += read();\n return\n\n case '\\\\':\n read();\n lexState = 'identifierNameEscape';\n return\n }\n\n if (util.isIdContinueChar(c)) {\n buffer += read();\n return\n }\n\n return newToken('identifier', buffer)\n },\n\n identifierNameEscape () {\n if (c !== 'u') {\n throw invalidChar(read())\n }\n\n read();\n const u = unicodeEscape();\n switch (u) {\n case '$':\n case '_':\n case '\\u200C':\n case '\\u200D':\n break\n\n default:\n if (!util.isIdContinueChar(u)) {\n throw invalidIdentifier()\n }\n\n break\n }\n\n buffer += u;\n lexState = 'identifierName';\n },\n\n sign () {\n switch (c) {\n case '.':\n buffer = read();\n lexState = 'decimalPointLeading';\n return\n\n case '0':\n buffer = read();\n lexState = 'zero';\n return\n\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n buffer = read();\n lexState = 'decimalInteger';\n return\n\n case 'I':\n read();\n literal('nfinity');\n return newToken('numeric', sign * Infinity)\n\n case 'N':\n read();\n literal('aN');\n return newToken('numeric', NaN)\n }\n\n throw invalidChar(read())\n },\n\n zero () {\n switch (c) {\n case '.':\n buffer += read();\n lexState = 'decimalPoint';\n return\n\n case 'e':\n case 'E':\n buffer += read();\n lexState = 'decimalExponent';\n return\n\n case 'x':\n case 'X':\n buffer += read();\n lexState = 'hexadecimal';\n return\n }\n\n return newToken('numeric', sign * 0)\n },\n\n decimalInteger () {\n switch (c) {\n case '.':\n buffer += read();\n lexState = 'decimalPoint';\n return\n\n case 'e':\n case 'E':\n buffer += read();\n lexState = 'decimalExponent';\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read();\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n decimalPointLeading () {\n if (util.isDigit(c)) {\n buffer += read();\n lexState = 'decimalFraction';\n return\n }\n\n throw invalidChar(read())\n },\n\n decimalPoint () {\n switch (c) {\n case 'e':\n case 'E':\n buffer += read();\n lexState = 'decimalExponent';\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read();\n lexState = 'decimalFraction';\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n decimalFraction () {\n switch (c) {\n case 'e':\n case 'E':\n buffer += read();\n lexState = 'decimalExponent';\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read();\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n decimalExponent () {\n switch (c) {\n case '+':\n case '-':\n buffer += read();\n lexState = 'decimalExponentSign';\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read();\n lexState = 'decimalExponentInteger';\n return\n }\n\n throw invalidChar(read())\n },\n\n decimalExponentSign () {\n if (util.isDigit(c)) {\n buffer += read();\n lexState = 'decimalExponentInteger';\n return\n }\n\n throw invalidChar(read())\n },\n\n decimalExponentInteger () {\n if (util.isDigit(c)) {\n buffer += read();\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n hexadecimal () {\n if (util.isHexDigit(c)) {\n buffer += read();\n lexState = 'hexadecimalInteger';\n return\n }\n\n throw invalidChar(read())\n },\n\n hexadecimalInteger () {\n if (util.isHexDigit(c)) {\n buffer += read();\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n string () {\n switch (c) {\n case '\\\\':\n read();\n buffer += escape();\n return\n\n case '\"':\n if (doubleQuote) {\n read();\n return newToken('string', buffer)\n }\n\n buffer += read();\n return\n\n case \"'\":\n if (!doubleQuote) {\n read();\n return newToken('string', buffer)\n }\n\n buffer += read();\n return\n\n case '\\n':\n case '\\r':\n throw invalidChar(read())\n\n case '\\u2028':\n case '\\u2029':\n separatorChar(c);\n break\n\n case undefined:\n throw invalidChar(read())\n }\n\n buffer += read();\n },\n\n start () {\n switch (c) {\n case '{':\n case '[':\n return newToken('punctuator', read())\n\n // This code is unreachable since the default lexState handles eof.\n // case undefined:\n // return newToken('eof')\n }\n\n lexState = 'value';\n },\n\n beforePropertyName () {\n switch (c) {\n case '$':\n case '_':\n buffer = read();\n lexState = 'identifierName';\n return\n\n case '\\\\':\n read();\n lexState = 'identifierNameStartEscape';\n return\n\n case '}':\n return newToken('punctuator', read())\n\n case '\"':\n case \"'\":\n doubleQuote = (read() === '\"');\n lexState = 'string';\n return\n }\n\n if (util.isIdStartChar(c)) {\n buffer += read();\n lexState = 'identifierName';\n return\n }\n\n throw invalidChar(read())\n },\n\n afterPropertyName () {\n if (c === ':') {\n return newToken('punctuator', read())\n }\n\n throw invalidChar(read())\n },\n\n beforePropertyValue () {\n lexState = 'value';\n },\n\n afterPropertyValue () {\n switch (c) {\n case ',':\n case '}':\n return newToken('punctuator', read())\n }\n\n throw invalidChar(read())\n },\n\n beforeArrayValue () {\n if (c === ']') {\n return newToken('punctuator', read())\n }\n\n lexState = 'value';\n },\n\n afterArrayValue () {\n switch (c) {\n case ',':\n case ']':\n return newToken('punctuator', read())\n }\n\n throw invalidChar(read())\n },\n\n end () {\n // This code is unreachable since it's handled by the default lexState.\n // if (c === undefined) {\n // read()\n // return newToken('eof')\n // }\n\n throw invalidChar(read())\n },\n};\n\nfunction newToken (type, value) {\n return {\n type,\n value,\n line,\n column,\n }\n}\n\nfunction literal (s) {\n for (const c of s) {\n const p = peek();\n\n if (p !== c) {\n throw invalidChar(read())\n }\n\n read();\n }\n}\n\nfunction escape () {\n const c = peek();\n switch (c) {\n case 'b':\n read();\n return '\\b'\n\n case 'f':\n read();\n return '\\f'\n\n case 'n':\n read();\n return '\\n'\n\n case 'r':\n read();\n return '\\r'\n\n case 't':\n read();\n return '\\t'\n\n case 'v':\n read();\n return '\\v'\n\n case '0':\n read();\n if (util.isDigit(peek())) {\n throw invalidChar(read())\n }\n\n return '\\0'\n\n case 'x':\n read();\n return hexEscape()\n\n case 'u':\n read();\n return unicodeEscape()\n\n case '\\n':\n case '\\u2028':\n case '\\u2029':\n read();\n return ''\n\n case '\\r':\n read();\n if (peek() === '\\n') {\n read();\n }\n\n return ''\n\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n throw invalidChar(read())\n\n case undefined:\n throw invalidChar(read())\n }\n\n return read()\n}\n\nfunction hexEscape () {\n let buffer = '';\n let c = peek();\n\n if (!util.isHexDigit(c)) {\n throw invalidChar(read())\n }\n\n buffer += read();\n\n c = peek();\n if (!util.isHexDigit(c)) {\n throw invalidChar(read())\n }\n\n buffer += read();\n\n return String.fromCodePoint(parseInt(buffer, 16))\n}\n\nfunction unicodeEscape () {\n let buffer = '';\n let count = 4;\n\n while (count-- > 0) {\n const c = peek();\n if (!util.isHexDigit(c)) {\n throw invalidChar(read())\n }\n\n buffer += read();\n }\n\n return String.fromCodePoint(parseInt(buffer, 16))\n}\n\nconst parseStates = {\n start () {\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n push();\n },\n\n beforePropertyName () {\n switch (token.type) {\n case 'identifier':\n case 'string':\n key = token.value;\n parseState = 'afterPropertyName';\n return\n\n case 'punctuator':\n // This code is unreachable since it's handled by the lexState.\n // if (token.value !== '}') {\n // throw invalidToken()\n // }\n\n pop();\n return\n\n case 'eof':\n throw invalidEOF()\n }\n\n // This code is unreachable since it's handled by the lexState.\n // throw invalidToken()\n },\n\n afterPropertyName () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'punctuator' || token.value !== ':') {\n // throw invalidToken()\n // }\n\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n parseState = 'beforePropertyValue';\n },\n\n beforePropertyValue () {\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n push();\n },\n\n beforeArrayValue () {\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n if (token.type === 'punctuator' && token.value === ']') {\n pop();\n return\n }\n\n push();\n },\n\n afterPropertyValue () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'punctuator') {\n // throw invalidToken()\n // }\n\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n switch (token.value) {\n case ',':\n parseState = 'beforePropertyName';\n return\n\n case '}':\n pop();\n }\n\n // This code is unreachable since it's handled by the lexState.\n // throw invalidToken()\n },\n\n afterArrayValue () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'punctuator') {\n // throw invalidToken()\n // }\n\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n switch (token.value) {\n case ',':\n parseState = 'beforeArrayValue';\n return\n\n case ']':\n pop();\n }\n\n // This code is unreachable since it's handled by the lexState.\n // throw invalidToken()\n },\n\n end () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'eof') {\n // throw invalidToken()\n // }\n },\n};\n\nfunction push () {\n let value;\n\n switch (token.type) {\n case 'punctuator':\n switch (token.value) {\n case '{':\n value = {};\n break\n\n case '[':\n value = [];\n break\n }\n\n break\n\n case 'null':\n case 'boolean':\n case 'numeric':\n case 'string':\n value = token.value;\n break\n\n // This code is unreachable.\n // default:\n // throw invalidToken()\n }\n\n if (root === undefined) {\n root = value;\n } else {\n const parent = stack[stack.length - 1];\n if (Array.isArray(parent)) {\n parent.push(value);\n } else {\n Object.defineProperty(parent, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n }\n\n if (value !== null && typeof value === 'object') {\n stack.push(value);\n\n if (Array.isArray(value)) {\n parseState = 'beforeArrayValue';\n } else {\n parseState = 'beforePropertyName';\n }\n } else {\n const current = stack[stack.length - 1];\n if (current == null) {\n parseState = 'end';\n } else if (Array.isArray(current)) {\n parseState = 'afterArrayValue';\n } else {\n parseState = 'afterPropertyValue';\n }\n }\n}\n\nfunction pop () {\n stack.pop();\n\n const current = stack[stack.length - 1];\n if (current == null) {\n parseState = 'end';\n } else if (Array.isArray(current)) {\n parseState = 'afterArrayValue';\n } else {\n parseState = 'afterPropertyValue';\n }\n}\n\n// This code is unreachable.\n// function invalidParseState () {\n// return new Error(`JSON5: invalid parse state '${parseState}'`)\n// }\n\n// This code is unreachable.\n// function invalidLexState (state) {\n// return new Error(`JSON5: invalid lex state '${state}'`)\n// }\n\nfunction invalidChar (c) {\n if (c === undefined) {\n return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n }\n\n return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\n}\n\nfunction invalidEOF () {\n return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n}\n\n// This code is unreachable.\n// function invalidToken () {\n// if (token.type === 'eof') {\n// return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n// }\n\n// const c = String.fromCodePoint(token.value.codePointAt(0))\n// return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\n// }\n\nfunction invalidIdentifier () {\n column -= 5;\n return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`)\n}\n\nfunction separatorChar (c) {\n console.warn(`JSON5: '${formatChar(c)}' in strings is not valid ECMAScript; consider escaping`);\n}\n\nfunction formatChar (c) {\n const replacements = {\n \"'\": \"\\\\'\",\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\',\n '\\b': '\\\\b',\n '\\f': '\\\\f',\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t',\n '\\v': '\\\\v',\n '\\0': '\\\\0',\n '\\u2028': '\\\\u2028',\n '\\u2029': '\\\\u2029',\n };\n\n if (replacements[c]) {\n return replacements[c]\n }\n\n if (c < ' ') {\n const hexString = c.charCodeAt(0).toString(16);\n return '\\\\x' + ('00' + hexString).substring(hexString.length)\n }\n\n return c\n}\n\nfunction syntaxError (message) {\n const err = new SyntaxError(message);\n err.lineNumber = line;\n err.columnNumber = column;\n return err\n}\n\nvar stringify = function stringify (value, replacer, space) {\n const stack = [];\n let indent = '';\n let propertyList;\n let replacerFunc;\n let gap = '';\n let quote;\n\n if (\n replacer != null &&\n typeof replacer === 'object' &&\n !Array.isArray(replacer)\n ) {\n space = replacer.space;\n quote = replacer.quote;\n replacer = replacer.replacer;\n }\n\n if (typeof replacer === 'function') {\n replacerFunc = replacer;\n } else if (Array.isArray(replacer)) {\n propertyList = [];\n for (const v of replacer) {\n let item;\n\n if (typeof v === 'string') {\n item = v;\n } else if (\n typeof v === 'number' ||\n v instanceof String ||\n v instanceof Number\n ) {\n item = String(v);\n }\n\n if (item !== undefined && propertyList.indexOf(item) < 0) {\n propertyList.push(item);\n }\n }\n }\n\n if (space instanceof Number) {\n space = Number(space);\n } else if (space instanceof String) {\n space = String(space);\n }\n\n if (typeof space === 'number') {\n if (space > 0) {\n space = Math.min(10, Math.floor(space));\n gap = ' '.substr(0, space);\n }\n } else if (typeof space === 'string') {\n gap = space.substr(0, 10);\n }\n\n return serializeProperty('', {'': value})\n\n function serializeProperty (key, holder) {\n let value = holder[key];\n if (value != null) {\n if (typeof value.toJSON5 === 'function') {\n value = value.toJSON5(key);\n } else if (typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n }\n }\n\n if (replacerFunc) {\n value = replacerFunc.call(holder, key, value);\n }\n\n if (value instanceof Number) {\n value = Number(value);\n } else if (value instanceof String) {\n value = String(value);\n } else if (value instanceof Boolean) {\n value = value.valueOf();\n }\n\n switch (value) {\n case null: return 'null'\n case true: return 'true'\n case false: return 'false'\n }\n\n if (typeof value === 'string') {\n return quoteString(value, false)\n }\n\n if (typeof value === 'number') {\n return String(value)\n }\n\n if (typeof value === 'object') {\n return Array.isArray(value) ? serializeArray(value) : serializeObject(value)\n }\n\n return undefined\n }\n\n function quoteString (value) {\n const quotes = {\n \"'\": 0.1,\n '\"': 0.2,\n };\n\n const replacements = {\n \"'\": \"\\\\'\",\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\',\n '\\b': '\\\\b',\n '\\f': '\\\\f',\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t',\n '\\v': '\\\\v',\n '\\0': '\\\\0',\n '\\u2028': '\\\\u2028',\n '\\u2029': '\\\\u2029',\n };\n\n let product = '';\n\n for (let i = 0; i < value.length; i++) {\n const c = value[i];\n switch (c) {\n case \"'\":\n case '\"':\n quotes[c]++;\n product += c;\n continue\n\n case '\\0':\n if (util.isDigit(value[i + 1])) {\n product += '\\\\x00';\n continue\n }\n }\n\n if (replacements[c]) {\n product += replacements[c];\n continue\n }\n\n if (c < ' ') {\n let hexString = c.charCodeAt(0).toString(16);\n product += '\\\\x' + ('00' + hexString).substring(hexString.length);\n continue\n }\n\n product += c;\n }\n\n const quoteChar = quote || Object.keys(quotes).reduce((a, b) => (quotes[a] < quotes[b]) ? a : b);\n\n product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]);\n\n return quoteChar + product + quoteChar\n }\n\n function serializeObject (value) {\n if (stack.indexOf(value) >= 0) {\n throw TypeError('Converting circular structure to JSON5')\n }\n\n stack.push(value);\n\n let stepback = indent;\n indent = indent + gap;\n\n let keys = propertyList || Object.keys(value);\n let partial = [];\n for (const key of keys) {\n const propertyString = serializeProperty(key, value);\n if (propertyString !== undefined) {\n let member = serializeKey(key) + ':';\n if (gap !== '') {\n member += ' ';\n }\n member += propertyString;\n partial.push(member);\n }\n }\n\n let final;\n if (partial.length === 0) {\n final = '{}';\n } else {\n let properties;\n if (gap === '') {\n properties = partial.join(',');\n final = '{' + properties + '}';\n } else {\n let separator = ',\\n' + indent;\n properties = partial.join(separator);\n final = '{\\n' + indent + properties + ',\\n' + stepback + '}';\n }\n }\n\n stack.pop();\n indent = stepback;\n return final\n }\n\n function serializeKey (key) {\n if (key.length === 0) {\n return quoteString(key, true)\n }\n\n const firstChar = String.fromCodePoint(key.codePointAt(0));\n if (!util.isIdStartChar(firstChar)) {\n return quoteString(key, true)\n }\n\n for (let i = firstChar.length; i < key.length; i++) {\n if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {\n return quoteString(key, true)\n }\n }\n\n return key\n }\n\n function serializeArray (value) {\n if (stack.indexOf(value) >= 0) {\n throw TypeError('Converting circular structure to JSON5')\n }\n\n stack.push(value);\n\n let stepback = indent;\n indent = indent + gap;\n\n let partial = [];\n for (let i = 0; i < value.length; i++) {\n const propertyString = serializeProperty(String(i), value);\n partial.push((propertyString !== undefined) ? propertyString : 'null');\n }\n\n let final;\n if (partial.length === 0) {\n final = '[]';\n } else {\n if (gap === '') {\n let properties = partial.join(',');\n final = '[' + properties + ']';\n } else {\n let separator = ',\\n' + indent;\n let properties = partial.join(separator);\n final = '[\\n' + indent + properties + ',\\n' + stepback + ']';\n }\n }\n\n stack.pop();\n indent = stepback;\n return final\n }\n};\n\nconst JSON5 = {\n parse,\n stringify,\n};\n\nvar lib = JSON5;\n\nexport default lib;\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport { existsSync } from 'fs';\nimport { readFile } from 'fs/promises';\nimport { dirname, join } from 'path';\nimport { glob } from 'glob';\nimport JSON5 from 'json5';\nimport { PackageMetadata } from './types';\n\n// We use async I/O except 'existsSync', because 'exists' will throw an error if the file does not exist.\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Logger interface\n */\nexport interface Logger {\n /**\n * Log an debug message\n * @param msg - The message to log\n */\n readonly debug: (msg: string) => void;\n /**\n * Log an info message\n * @param msg - The message to log\n */\n readonly info: (msg: string) => void;\n /**\n * Log a warning message\n * @param msg - The message to log\n */\n readonly warn: (msg: string) => void;\n /**\n * Log an error message\n * @param msg - The message to log\n */\n readonly error: (msg: string) => void;\n}\n\n/**\n * Default console logger implementation\n * @param prefix - Log prefix\n * @param driver - Console logging driver instance\n */\nexport const createConsoleLogger = (prefix?: string, driver?: any): Logger => {\n const d = driver?.debug ?? (() => {});\n const i = driver?.info ?? globalThis.console.info;\n const w = driver?.warn ?? globalThis.console.warn;\n const e = driver?.error ?? globalThis.console.error;\n if (prefix) {\n return {\n debug: (msg: string) => d(`[${prefix}]: ${msg}`),\n info: (msg: string) => i(`[${prefix}]: ${msg}`),\n warn: (msg: string) => w(`[${prefix}]: ${msg}`),\n error: (msg: string) => e(`[${prefix}]: ${msg}`),\n };\n } else {\n return {\n debug: (msg: string) => d(`${msg}`),\n info: (msg: string) => i(`${msg}`),\n warn: (msg: string) => w(`${msg}`),\n error: (msg: string) => e(`${msg}`),\n };\n }\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Result of package resolution with source tracking\n * @template T - Type of the package metadata\n */\nexport interface PackageResolutionResult<T> {\n readonly metadata: T;\n readonly sourceMap: Map<string, string>;\n}\n\n/**\n * Workspace sibling project information\n */\nexport interface WorkspaceSibling {\n readonly name: string;\n readonly version: string;\n readonly path: string;\n}\n\n/**\n * Recursively flatten an object into dot-notation key-value pairs\n * @param obj - Object to flatten\n * @param prefix - Current key prefix\n * @param map - Store key-value entries into this\n */\nconst flattenObject = (obj: any, prefix: string, map: PackageMetadata) => {\n for (const [key, value] of Object.entries(obj)) {\n if (!value) continue;\n const fullKey = prefix ? `${prefix}.${key}` : key;\n if (typeof value === 'string') {\n map[fullKey] = value;\n } else if (Array.isArray(value)) {\n map[fullKey] = value.map((v) => String(v)).join(',');\n } else if (typeof value === 'object') {\n // Recursively flatten nested objects\n flattenObject(value, fullKey, map);\n } else {\n // Convert other types to string\n map[fullKey] = String(value);\n }\n }\n};\n\n/**\n * Find workspace root by looking for workspace configuration files\n * @param startPath - Starting directory path\n * @param logger - Logger instance\n * @returns Promise resolving to workspace root path or undefined if not found\n */\nexport const findWorkspaceRoot = async (\n startPath: string,\n logger: Logger\n): Promise<string | undefined> => {\n let currentPath = startPath;\n\n while (currentPath !== dirname(currentPath)) {\n const packageJsonPath = join(currentPath, 'package.json');\n\n if (existsSync(packageJsonPath)) {\n try {\n const content = await readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON5.parse(content);\n\n // Check for workspace configurations\n if (\n packageJson.workspaces ||\n existsSync(join(currentPath, 'pnpm-workspace.yaml')) ||\n existsSync(join(currentPath, 'lerna.json'))\n ) {\n return currentPath;\n }\n } catch (error) {\n logger.warn(\n `Failed to parse package.json at ${packageJsonPath}: ${error}`\n );\n }\n }\n\n currentPath = dirname(currentPath);\n }\n\n return undefined;\n};\n\n/**\n * Collect workspace sibling projects\n * @param workspaceRoot - Workspace root directory\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param inheritableFields - Package metadata fields that should be inherited from parent\n * @param logger - Logger instance\n * @returns Promise resolving to map of sibling projects (name -> WorkspaceSibling)\n */\nexport const collectWorkspaceSiblings = async (\n workspaceRoot: string,\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n inheritableFields: Set<string>,\n logger: Logger\n): Promise<Map<string, WorkspaceSibling>> => {\n const siblings = new Map<string, WorkspaceSibling>();\n\n try {\n const rootPackageJsonPath = join(workspaceRoot, 'package.json');\n const content = await readFile(rootPackageJsonPath, 'utf-8');\n const rootPackageJson = JSON5.parse(content);\n\n // Get workspace patterns\n const workspacePatterns = rootPackageJson.workspaces;\n if (!workspacePatterns || !Array.isArray(workspacePatterns)) {\n return siblings;\n }\n\n // Find all workspace directories\n const workspaceDirs = new Set<string>();\n for (const pattern of workspacePatterns) {\n const matches = await glob(pattern, {\n cwd: workspaceRoot,\n });\n matches.forEach((match) => workspaceDirs.add(match));\n }\n\n // Read package.json from each workspace directory\n for (const workspaceDir of workspaceDirs) {\n const packageJsonPath = join(workspaceRoot, workspaceDir, 'package.json');\n if (existsSync(packageJsonPath)) {\n try {\n const packagePath = join(workspaceRoot, workspaceDir);\n\n // Use resolveRawPackageJsonObject to get the resolved version with Git tag consideration\n const resolvedPackage = await resolveRawPackageJsonObject(\n packagePath,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n logger\n );\n\n const packageJson = resolvedPackage.metadata;\n\n if (packageJson.name && packageJson.version) {\n siblings.set(packageJson.name, {\n name: packageJson.name,\n version: packageJson.version,\n path: packagePath,\n });\n }\n } catch (error) {\n logger.warn(\n `Failed to resolve package.json from ${packageJsonPath}: ${error}`\n );\n }\n }\n }\n } catch (error) {\n logger.warn(\n `Failed to collect workspace siblings from ${workspaceRoot}: ${error}`\n );\n }\n\n return siblings;\n};\n\n/**\n * Replace \"*\" wildcards in peerDependencies with actual workspace sibling versions\n * @param packageJson - Package.json object to modify\n * @param siblings - Map of workspace sibling projects\n * @param versionPrefix - Version prefix to add (e.g., \"^\", \"~\", \"\")\n * @returns Modified package.json object\n */\nexport const replacePeerDependenciesWildcards = (\n packageJson: any,\n siblings: Map<string, WorkspaceSibling>,\n versionPrefix: string\n): any => {\n // Deep clone the package.json to avoid modifying the original\n const modifiedPackageJson = JSON5.parse(JSON.stringify(packageJson));\n\n if (\n !modifiedPackageJson.peerDependencies ||\n typeof modifiedPackageJson.peerDependencies !== 'object'\n ) {\n return modifiedPackageJson;\n }\n\n // Process each peer dependency\n for (const [depName, depVersion] of Object.entries(\n modifiedPackageJson.peerDependencies\n )) {\n if (depVersion === '*' && siblings.has(depName)) {\n const sibling = siblings.get(depName)!;\n modifiedPackageJson.peerDependencies[depName] =\n `${versionPrefix}${sibling.version}`;\n }\n }\n\n return modifiedPackageJson;\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Merge package metadata with inheritance (child overrides parent)\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param sourceMap - Map to track field sources\n * @param parentMetadata - Parent package metadata\n * @param childMetadata - Child package metadata\n * @param parentSourceDir - Parent package.json directory (for source tracking)\n * @param childSourceDir - Child package.json directory (for source tracking)\n * @returns Merged package metadata\n */\nexport const mergePackageMetadata = async (\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n sourceMap: Map<string, string>,\n parentMetadata: PackageMetadata,\n childMetadata: PackageMetadata,\n parentSourceDir: string,\n childSourceDir: string,\n _repositoryPath: string\n): Promise<PackageMetadata> => {\n // Fetch git metadata\n const metadata = await fetchGitMetadata();\n\n const merged: PackageMetadata = {};\n flattenObject(metadata, '', merged);\n\n // Start with parent metadata\n for (const key in parentMetadata) {\n const value = parentMetadata[key];\n if (value !== undefined) {\n merged[key] = value;\n sourceMap.set(key, parentSourceDir);\n }\n }\n\n // Override with child metadata\n for (const key in childMetadata) {\n const value = childMetadata[key];\n if (value !== undefined) {\n merged[key] = value;\n sourceMap.set(key, childSourceDir);\n }\n }\n\n // Always override version from Git if enabled (new default behavior)\n if (alwaysOverrideVersionFromGit && metadata.version) {\n merged.version = metadata.version;\n }\n\n return merged;\n};\n\n/**\n * Merge raw package.json objects with inheritance (child overrides parent)\n * Only inherits package metadata fields, not project-specific configurations\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param inheritableFields - Package metadata fields that should be inherited from parent\n * @param sourceMap - Map to track field sources\n * @param parentMetadata - Parent package object\n * @param childMetadata - Child package object\n * @param parentSourceDir - Parent package.json directory (for source tracking)\n * @param childSourceDir - Child package.json directory (for source tracking)\n * @param repositoryPath - Path to Git repository root\n * @returns Merged package object with only metadata fields\n */\nconst mergeRawPackageJson = async (\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n inheritableFields: Set<string>,\n sourceMap: Map<string, string>,\n parentMetadata: any,\n childMetadata: any,\n parentSourceDir: string,\n childSourceDir: string,\n repositoryPath: string\n): Promise<any> => {\n // Fetch git metadata\n const gitMetadata = await fetchGitMetadata();\n const merged = { ...gitMetadata };\n\n // Start with parent metadata\n for (const key in parentMetadata) {\n if (inheritableFields.has(key)) {\n const value = parentMetadata[key];\n if (value !== undefined) {\n merged[key] = value;\n sourceMap.set(key, parentSourceDir);\n }\n }\n }\n\n // Override with child metadata\n for (const key in childMetadata) {\n const value = childMetadata[key];\n if (value !== undefined) {\n merged[key] = value;\n sourceMap.set(key, childSourceDir);\n }\n }\n\n // Always override version from Git if enabled (new default behavior)\n if (alwaysOverrideVersionFromGit && gitMetadata.version) {\n merged.version = gitMetadata.version;\n sourceMap.set('version', repositoryPath); // Mark as Git-sourced\n }\n\n return merged;\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Resolve package metadata for current project with workspace inheritance\n * @param projectRoot - Current project root\n * @param logger - Logger instance\n * @param readPackageMetadataFn - Function to read package metadata\n * @param mergePackageMetadataFn - Function to merge package metadata\n * @returns Promise resolving to resolved package metadata\n */\nconst resolvePackageMetadataT = async <T>(\n projectRoot: string,\n logger: Logger,\n readPackageMetadataFn: (path: string) => Promise<T>,\n mergePackageMetadataFn: (\n a: T,\n b: T,\n aDir: string,\n bDir: string,\n repositoryPath: string\n ) => Promise<T>\n): Promise<T> => {\n const workspaceRoot = await findWorkspaceRoot(projectRoot, logger);\n\n if (!workspaceRoot) {\n // No workspace, just read local package.json\n const localPackagePath = join(projectRoot, 'package.json');\n const localMetadata = await readPackageMetadataFn(localPackagePath);\n return mergePackageMetadataFn(\n {} as T,\n localMetadata,\n '', // dummy\n projectRoot,\n projectRoot\n );\n }\n\n const projectPackagePath = join(projectRoot, 'package.json');\n\n // Start with root package metadata\n const rootPackagePath = join(workspaceRoot, 'package.json');\n const metadata = await readPackageMetadataFn(rootPackagePath);\n\n // If current project is not the root, merge with project-specific metadata\n if (\n projectPackagePath !== rootPackagePath &&\n existsSync(projectPackagePath)\n ) {\n const projectMetadata = await readPackageMetadataFn(projectPackagePath);\n return mergePackageMetadataFn(\n metadata,\n projectMetadata,\n workspaceRoot,\n projectRoot,\n projectRoot\n );\n } else {\n return mergePackageMetadataFn(\n {} as T,\n metadata,\n '', // dummy\n workspaceRoot,\n projectRoot\n );\n }\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Read and parse package.json file\n * @param logger - Logger instance\n * @param packagePath - Path to package.json\n * @returns Promise resolving to package metadata\n */\nconst readPackageMetadata = async (\n logger: Logger,\n packagePath: string\n): Promise<PackageMetadata> => {\n try {\n const content = await readFile(packagePath, 'utf-8');\n const json = JSON5.parse(content);\n const map: PackageMetadata = {};\n flattenObject(json, '', map);\n return map;\n } catch (error) {\n logger.error(`Failed to read package.json from ${packagePath}: ${error}`);\n return {};\n }\n};\n\n/**\n * Resolve package metadata for current project with workspace inheritance\n * @param projectRoot - Current project root\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param logger - Logger instance\n * @returns Promise resolving to resolved package metadata\n */\nexport const resolvePackageMetadata = async (\n projectRoot: string,\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n logger: Logger\n): Promise<PackageResolutionResult<PackageMetadata>> => {\n const sourceMap = new Map<string, string>();\n const metadata = await resolvePackageMetadataT<PackageMetadata>(\n projectRoot,\n logger,\n readPackageMetadata.bind(undefined, logger),\n mergePackageMetadata.bind(\n undefined,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n sourceMap\n )\n );\n\n return {\n metadata,\n sourceMap,\n };\n};\n\n/**\n * Read and parse package.json file without flattening\n * @param logger - Logger instance\n * @param packagePath - Path to package.json\n * @returns Promise resolving to raw package object\n */\nconst readRawPackageJson = async (\n logger: Logger,\n packagePath: string\n): Promise<any> => {\n try {\n const content = await readFile(packagePath, 'utf-8');\n return JSON5.parse(content);\n } catch (error) {\n logger.error(`Failed to read package.json from ${packagePath}: ${error}`);\n throw error;\n }\n};\n\n/**\n * Resolve raw package.json for current project with workspace inheritance\n * @param projectRoot - Current project root\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param inheritableFields - Package metadata fields that should be inherited from parent\n * @param logger - Logger instance\n * @returns Promise resolving to resolved raw package.json object with source tracking\n */\nexport const resolveRawPackageJsonObject = async (\n projectRoot: string,\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n inheritableFields: Set<string>,\n logger: Logger\n): Promise<PackageResolutionResult<any>> => {\n const sourceMap = new Map<string, string>();\n const packageJson = await resolvePackageMetadataT<any>(\n projectRoot,\n logger,\n readRawPackageJson.bind(undefined, logger),\n mergeRawPackageJson.bind(\n undefined,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n sourceMap\n )\n );\n\n return {\n metadata: packageJson,\n sourceMap,\n };\n};\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport crypto from 'crypto';\nimport path from 'path';\nimport os from 'os';\nimport fs from 'fs/promises';\nimport * as git from 'isomorphic-git';\nimport type { TagCache, TagInfo } from './analyzer';\n\n/**\n * Cache management for tag information\n */\n\n// Cache cleanup constants\nconst CLEANUP_TRIGGER_AGE_MS = 24 * 60 * 60 * 1000; // 24 hours\nconst CLEANUP_DELETE_AGE_MS = 10 * 24 * 60 * 60 * 1000; // 10 days\n\n/**\n * Cache validation information\n */\ninterface CacheValidation {\n tagListHash: string; // SHA256 hash of all tag names\n tagCount: number; // Total number of tags\n packedRefsMtime?: number; // .git/packed-refs modification time\n refsTagsMtime?: number; // .git/refs/tags/ modification time\n}\n\n/**\n * Cached data structure\n */\ninterface CachedData {\n version: '1.0.0'; // Cache format version\n timestamp: number; // Cache creation timestamp (ms)\n repository: {\n path: string; // Original repository path (for debugging)\n };\n validation: CacheValidation;\n tagCache: {\n commitToTags: Record<string, TagInfo[]>;\n };\n}\n\n/**\n * Get cache file path for a repository\n */\nexport const getCachePath = (repoPath: string): string => {\n const absoluteRepoPath = path.resolve(repoPath);\n\n // Hash repository path with SHA1\n const pathHash = crypto\n .createHash('sha1')\n .update(absoluteRepoPath)\n .digest('hex');\n\n return path.join(\n os.homedir(),\n '.cache',\n 'screw-up',\n 'tag-cache',\n `${pathHash}.json`\n );\n};\n\n/**\n * Build cache validation information\n */\nexport const buildCacheValidation = async (\n repoPath: string\n): Promise<CacheValidation> => {\n // Get all tags\n const tags = await git.listTags({ fs, dir: repoPath });\n\n // Create hash of tag list\n const tagListHash = crypto\n .createHash('sha256')\n .update(tags.sort().join('\\n'))\n .digest('hex');\n\n const validation: CacheValidation = {\n tagListHash,\n tagCount: tags.length,\n };\n\n // Get file modification times\n try {\n const packedRefsPath = path.join(repoPath, '.git', 'packed-refs');\n const stats = await fs.stat(packedRefsPath);\n validation.packedRefsMtime = stats.mtimeMs;\n } catch {\n // packed-refs might not exist\n }\n\n try {\n const refsTagsPath = path.join(repoPath, '.git', 'refs', 'tags');\n const stats = await fs.stat(refsTagsPath);\n validation.refsTagsMtime = stats.mtimeMs;\n } catch {\n // refs/tags might not exist\n }\n\n return validation;\n};\n\n/**\n * Check if cached data is still valid\n */\nexport const isCacheValid = async (\n cachedData: CachedData,\n repoPath: string\n): Promise<boolean> => {\n try {\n // Quick check: tag count\n const currentTags = await git.listTags({ fs, dir: repoPath });\n if (currentTags.length !== cachedData.validation.tagCount) {\n return false;\n }\n\n // Definitive check: tag list hash\n const tagListHash = crypto\n .createHash('sha256')\n .update(currentTags.sort().join('\\n'))\n .digest('hex');\n\n if (cachedData.validation.tagListHash !== tagListHash) {\n return false;\n }\n\n // Additional filesystem checks\n if (cachedData.validation.packedRefsMtime !== undefined) {\n try {\n const packedRefsPath = path.join(repoPath, '.git', 'packed-refs');\n const stats = await fs.stat(packedRefsPath);\n if (stats.mtimeMs > cachedData.timestamp) {\n return false;\n }\n } catch {\n // File might have been deleted\n }\n }\n\n if (cachedData.validation.refsTagsMtime !== undefined) {\n try {\n const refsTagsPath = path.join(repoPath, '.git', 'refs', 'tags');\n const stats = await fs.stat(refsTagsPath);\n if (stats.mtimeMs > cachedData.timestamp) {\n return false;\n }\n } catch {\n // Directory might have been deleted\n }\n }\n\n return true;\n } catch {\n return false;\n }\n};\n\n/**\n * Load cached tags from disk\n */\nexport const loadCachedTags = async (\n repoPath: string\n): Promise<CachedData | null> => {\n try {\n const cachePath = getCachePath(repoPath);\n const data = await fs.readFile(cachePath, 'utf-8');\n const cachedData = JSON.parse(data) as CachedData;\n\n // Check version compatibility\n if (cachedData.version !== '1.0.0') {\n return null;\n }\n\n return cachedData;\n } catch {\n // Cache doesn't exist or is corrupted\n return null;\n }\n};\n\n/**\n * Save tag cache to disk atomically\n */\nexport const saveCachedTags = async (\n repoPath: string,\n tagCache: TagCache,\n validation: CacheValidation\n): Promise<void> => {\n const cachePath = getCachePath(repoPath);\n const cacheDir = path.dirname(cachePath);\n\n // Ensure cache directory exists\n await fs.mkdir(cacheDir, { recursive: true });\n\n // Generate random suffix for temp file\n const randomSuffix = crypto.randomBytes(8).toString('hex');\n const tempPath = cachePath.replace('.json', `_${randomSuffix}.json`);\n\n // Prepare data\n const data: CachedData = {\n version: '1.0.0',\n timestamp: Date.now(),\n repository: {\n path: repoPath,\n },\n validation,\n tagCache: {\n commitToTags: Object.fromEntries(tagCache.commitToTags),\n },\n };\n\n try {\n // Write to temp file\n await fs.writeFile(tempPath, JSON.stringify(data, null, 2), 'utf-8');\n\n // Atomically rename to final path\n await fs.rename(tempPath, cachePath);\n } catch (error) {\n // Clean up temp file if it exists\n try {\n await fs.unlink(tempPath);\n } catch {\n // Ignore cleanup errors\n }\n throw error;\n }\n};\n\n/**\n * Convert cached data back to Map structure\n */\nexport const reconstructTagCache = (cachedData: CachedData): TagCache => {\n return {\n commitToTags: new Map(Object.entries(cachedData.tagCache.commitToTags)),\n initialized: true,\n };\n};\n\n/**\n * Clean up old cache files in the cache directory\n * @param currentCachePath - Path of the current cache file (to exclude from deletion)\n * @param currentTimestamp - Current timestamp in milliseconds\n * @returns Number of deleted files\n */\nexport const cleanupOldCacheFiles = async (\n currentCachePath: string,\n currentTimestamp: number\n): Promise<number> => {\n let deletedCount = 0;\n\n try {\n const cacheDir = path.dirname(currentCachePath);\n const currentFileName = path.basename(currentCachePath);\n\n // List all files in cache directory\n const files = await fs.readdir(cacheDir);\n\n // Process each file\n await Promise.all(\n files.map(async (fileName) => {\n // Skip non-JSON files and current cache file\n if (!fileName.endsWith('.json') || fileName === currentFileName) {\n return;\n }\n\n const filePath = path.join(cacheDir, fileName);\n\n try {\n const stats = await fs.stat(filePath);\n const fileAge = currentTimestamp - stats.mtimeMs;\n\n // Delete if older than 10 days\n if (fileAge > CLEANUP_DELETE_AGE_MS) {\n await fs.unlink(filePath);\n deletedCount++;\n }\n } catch {\n // Ignore errors for individual files (permission issues, file already deleted, etc.)\n }\n })\n );\n } catch {\n // Ignore directory read errors\n }\n\n return deletedCount;\n};\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport type { TagInfo } from './analyzer';\n\n/**\n * Pure functions for cache operations\n * No side effects, fully testable\n */\n\n/**\n * Tag difference result\n */\nexport interface TagDiff {\n added: string[]; // Newly added tag names\n deleted: string[]; // Deleted tag names\n unchanged: string[]; // Unchanged tag names\n // Note: modified tags are detected later by checking OIDs\n}\n\n/**\n * Calculate differences between cached tags and current tag list\n * @param cachedTags - Map of commit hash to tag info array\n * @param currentTagList - Current list of tag names from git\n * @returns Tag difference information\n */\nexport const calculateTagDiff = (\n cachedTags: Map<string, TagInfo[]>,\n currentTagList: string[]\n): TagDiff => {\n // Extract all tag names from cache\n const cachedTagNames = new Set<string>();\n for (const tags of cachedTags.values()) {\n for (const tag of tags) {\n cachedTagNames.add(tag.name);\n }\n }\n\n const currentSet = new Set(currentTagList);\n\n // Calculate differences\n const added: string[] = [];\n const unchanged: string[] = [];\n\n for (const tagName of currentTagList) {\n if (cachedTagNames.has(tagName)) {\n unchanged.push(tagName);\n } else {\n added.push(tagName);\n }\n }\n\n const deleted: string[] = [];\n for (const tagName of cachedTagNames) {\n if (!currentSet.has(tagName)) {\n deleted.push(tagName);\n }\n }\n\n return { added, deleted, unchanged };\n};\n\n/**\n * Remove tags from cache\n * @param cache - Original cache (not modified)\n * @param tagNames - Tag names to remove\n * @returns New cache without specified tags\n */\nexport const removeTagsFromCache = (\n cache: Map<string, TagInfo[]>,\n tagNames: string[]\n): Map<string, TagInfo[]> => {\n const tagNamesToRemove = new Set(tagNames);\n const newCache = new Map<string, TagInfo[]>();\n\n for (const [commitHash, tags] of cache.entries()) {\n const filteredTags = tags.filter((tag) => !tagNamesToRemove.has(tag.name));\n if (filteredTags.length > 0) {\n newCache.set(commitHash, filteredTags);\n }\n }\n\n return newCache;\n};\n\n/**\n * Add tags to cache\n * @param cache - Original cache (not modified)\n * @param newTags - Tags to add\n * @returns New cache with added tags\n */\nexport const addTagsToCache = (\n cache: Map<string, TagInfo[]>,\n newTags: TagInfo[]\n): Map<string, TagInfo[]> => {\n const newCache = new Map<string, TagInfo[]>(cache);\n\n for (const tag of newTags) {\n const existing = newCache.get(tag.hash) || [];\n const updated = [...existing, tag];\n // Sort tags by name to ensure consistent ordering\n updated.sort((a, b) => a.name.localeCompare(b.name));\n newCache.set(tag.hash, updated);\n }\n\n return newCache;\n};\n\n/**\n * Update tags in cache (remove old versions, add new ones)\n * @param cache - Original cache (not modified)\n * @param tagNames - Tag names to update\n * @param updatedTags - New tag information\n * @returns New cache with updated tags\n */\nexport const updateTagsInCache = (\n cache: Map<string, TagInfo[]>,\n tagNames: string[],\n updatedTags: TagInfo[]\n): Map<string, TagInfo[]> => {\n // First remove old versions\n let newCache = removeTagsFromCache(cache, tagNames);\n\n // Then add new versions\n newCache = addTagsToCache(newCache, updatedTags);\n\n return newCache;\n};\n\n/**\n * Find a tag by name in the cache\n * @param cache - Cache to search\n * @param tagName - Tag name to find\n * @returns Tag info if found, undefined otherwise\n */\nexport const findTagInCache = (\n cache: Map<string, TagInfo[]>,\n tagName: string\n): TagInfo | undefined => {\n for (const tags of cache.values()) {\n const found = tags.find((tag) => tag.name === tagName);\n if (found) {\n return found;\n }\n }\n return undefined;\n};\n\n/**\n * Get all tag names from cache\n * @param cache - Cache to extract from\n * @returns Array of all tag names\n */\nexport const getAllTagNames = (cache: Map<string, TagInfo[]>): string[] => {\n const names: string[] = [];\n for (const tags of cache.values()) {\n for (const tag of tags) {\n names.push(tag.name);\n }\n }\n return names;\n};\n\n/**\n * Count total tags in cache\n * @param cache - Cache to count\n * @returns Total number of tags\n */\nexport const countTags = (cache: Map<string, TagInfo[]>): number => {\n let count = 0;\n for (const tags of cache.values()) {\n count += tags.length;\n }\n return count;\n};\n\n/**\n * Merge two caches\n * @param cache1 - First cache\n * @param cache2 - Second cache (takes precedence for conflicts)\n * @returns Merged cache\n */\nexport const mergeCaches = (\n cache1: Map<string, TagInfo[]>,\n cache2: Map<string, TagInfo[]>\n): Map<string, TagInfo[]> => {\n const merged = new Map<string, TagInfo[]>();\n\n // Add all from cache1\n for (const [hash, tags] of cache1.entries()) {\n merged.set(hash, [...tags]);\n }\n\n // Merge in cache2 (overwrites duplicates by tag name)\n for (const [hash, tags] of cache2.entries()) {\n const existing = merged.get(hash) || [];\n const existingNames = new Set(existing.map((t) => t.name));\n\n // Add only non-duplicate tags\n const newTags = tags.filter((tag) => !existingNames.has(tag.name));\n if (existing.length > 0 || newTags.length > 0) {\n const mergedTags = [...existing, ...newTags];\n // Sort tags by name to ensure consistent ordering\n mergedTags.sort((a, b) => a.name.localeCompare(b.name));\n merged.set(hash, mergedTags);\n }\n }\n\n return merged;\n};\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport fs from 'fs/promises';\nimport * as git from 'isomorphic-git';\nimport type { TagInfo, Version } from './analyzer';\n\n/**\n * Git operations for tag management\n * Handles all Git interactions\n */\n\n/**\n * Tag with OID information\n */\nexport interface TagWithOid {\n name: string;\n oid: string; // The OID this tag points to (could be tag object or commit)\n targetCommit?: string; // The commit this tag ultimately points to (resolved from annotated tags)\n}\n\n/**\n * Get all tags with their OIDs\n * @param repoPath - Repository path\n * @returns Array of tags with OID information\n */\nexport const getAllTagsWithOids = async (\n repoPath: string\n): Promise<TagWithOid[]> => {\n const tags = await git.listTags({ fs, dir: repoPath });\n const result: TagWithOid[] = [];\n\n await Promise.all(\n tags.map(async (tagName) => {\n const oid = await git.resolveRef({\n fs,\n dir: repoPath,\n ref: `refs/tags/${tagName}`,\n });\n result.push({ name: tagName, oid });\n })\n );\n\n return result;\n};\n\n/**\n * Resolve tag OID to commit hash\n * @param repoPath - Repository path\n * @param tagOid - Tag OID\n * @returns Commit hash this tag points to\n */\nexport const resolveTagToCommit = async (\n repoPath: string,\n tagOid: string\n): Promise<string> => {\n try {\n // Try to read as annotated tag\n const tagObject = await git.readTag({\n fs,\n dir: repoPath,\n oid: tagOid,\n });\n\n if (tagObject?.tag?.object) {\n // Annotated tag - return the commit it points to\n return tagObject.tag.object;\n }\n } catch {\n // Not an annotated tag, must be lightweight\n }\n\n // Lightweight tag - OID is the commit\n return tagOid;\n};\n\n/**\n * Get tag information for specific tags\n * @param repoPath - Repository path\n * @param tagNames - Tag names to get information for\n * @param parseVersion - Function to parse version from tag name\n * @returns Array of TagInfo\n */\nexport const getTagsInfo = async (\n repoPath: string,\n tagNames: string[],\n parseVersion: (tagName: string) => Version | undefined\n): Promise<TagInfo[]> => {\n const result: TagInfo[] = [];\n\n await Promise.all(\n tagNames.map(async (tagName) => {\n try {\n const oid = await git.resolveRef({\n fs,\n dir: repoPath,\n ref: `refs/tags/${tagName}`,\n });\n\n const commitHash = await resolveTagToCommit(repoPath, oid);\n const version = parseVersion(tagName);\n\n result.push({\n name: tagName,\n hash: commitHash,\n version,\n });\n } catch (error) {\n // Tag might have been deleted between operations\n console.warn(`Failed to get info for tag ${tagName}:`, error);\n }\n })\n );\n\n return result;\n};\n\n/**\n * Build complete tag cache from repository\n * @param repoPath - Repository path\n * @param parseVersion - Function to parse version from tag name\n * @returns Map of commit hash to TagInfo array\n */\nexport const buildCompleteTagCache = async (\n repoPath: string,\n parseVersion: (tagName: string) => Version | undefined\n): Promise<Map<string, TagInfo[]>> => {\n const cache = new Map<string, TagInfo[]>();\n const tags = await git.listTags({ fs, dir: repoPath });\n\n await Promise.all(\n tags.map(async (tagName) => {\n const oid = await git.resolveRef({\n fs,\n dir: repoPath,\n ref: `refs/tags/${tagName}`,\n });\n\n const commitHash = await resolveTagToCommit(repoPath, oid);\n const version = parseVersion(tagName);\n\n const tagInfo: TagInfo = {\n name: tagName,\n hash: commitHash,\n version,\n };\n\n if (!cache.has(commitHash)) {\n cache.set(commitHash, []);\n }\n cache.get(commitHash)!.push(tagInfo);\n })\n );\n\n // Sort tags by name for each commit to ensure consistent ordering\n for (const tags of cache.values()) {\n tags.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n return cache;\n};\n\n/**\n * Check if a tag has moved to a different commit\n * @param repoPath - Repository path\n * @param tagName - Tag name\n * @param cachedCommit - Commit hash from cache\n * @returns True if tag has moved\n */\nexport const hasTagMoved = async (\n repoPath: string,\n tagName: string,\n cachedCommit: string\n): Promise<boolean> => {\n try {\n const oid = await git.resolveRef({\n fs,\n dir: repoPath,\n ref: `refs/tags/${tagName}`,\n });\n\n const currentCommit = await resolveTagToCommit(repoPath, oid);\n return currentCommit !== cachedCommit;\n } catch {\n // Tag doesn't exist anymore\n return true;\n }\n};\n\n/**\n * Find modified tags (tags that point to different commits)\n * @param repoPath - Repository path\n * @param tagNames - Tag names to check\n * @param cache - Current cache\n * @returns Array of modified tag names\n */\nexport const findModifiedTags = async (\n repoPath: string,\n tagNames: string[],\n cache: Map<string, TagInfo[]>\n): Promise<string[]> => {\n const modified: string[] = [];\n\n await Promise.all(\n tagNames.map(async (tagName) => {\n // Find tag in cache\n let cachedCommit: string | undefined;\n for (const [commit, tags] of cache.entries()) {\n const tag = tags.find((t) => t.name === tagName);\n if (tag) {\n cachedCommit = commit;\n break;\n }\n }\n\n if (cachedCommit) {\n const moved = await hasTagMoved(repoPath, tagName, cachedCommit);\n if (moved) {\n modified.push(tagName);\n }\n }\n })\n );\n\n return modified;\n};\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport * as git from 'isomorphic-git';\nimport fs from 'fs/promises';\nimport type { TagInfo, Version, TagCache } from './analyzer';\nimport {\n loadCachedTags,\n saveCachedTags,\n isCacheValid,\n buildCacheValidation,\n reconstructTagCache,\n cleanupOldCacheFiles,\n getCachePath,\n} from './cache';\nimport {\n calculateTagDiff,\n removeTagsFromCache,\n addTagsToCache,\n updateTagsInCache,\n} from './cache-operations';\nimport {\n getTagsInfo,\n findModifiedTags,\n buildCompleteTagCache,\n} from './git-operations';\n\n/**\n * Cache manager for differential updates\n * Coordinates cache operations with Git operations\n */\n\n/**\n * Logger interface\n */\nexport interface Logger {\n debug: (message: string) => void;\n info: (message: string) => void;\n warn: (message: string) => void;\n}\n\n/**\n * Cache update statistics\n */\nexport interface CacheUpdateStats {\n added: number;\n deleted: number;\n modified: number;\n unchanged: number;\n totalTags: number;\n updateTime: number;\n fullRebuild: boolean;\n}\n\n/**\n * Load or build tag cache with differential updates\n * @param repoPath - Repository path\n * @param parseVersion - Function to parse version from tag name\n * @param logger - Optional logger\n * @returns Tag cache and statistics\n */\nexport const loadOrBuildTagCache = async (\n repoPath: string,\n parseVersion: (tagName: string) => Version | undefined,\n logger: Logger\n): Promise<{ cache: TagCache; stats: CacheUpdateStats }> => {\n const startTime = Date.now();\n\n // Try to load cached data\n const cachedData = await loadCachedTags(repoPath);\n\n // Get current tag list\n const currentTags = await git.listTags({ fs, dir: repoPath });\n\n if (cachedData && (await isCacheValid(cachedData, repoPath))) {\n // Cache is valid, perform differential update\n logger.debug(`Cache valid, performing differential update...`);\n\n const cache = reconstructTagCache(cachedData);\n const stats = await performDifferentialUpdate(\n repoPath,\n cache.commitToTags,\n currentTags,\n parseVersion,\n logger\n );\n\n // Save updated cache\n const validation = await buildCacheValidation(repoPath);\n await saveCachedTags(repoPath, cache, validation);\n\n // Cleanup old cache files if current cache is older than 24 hours\n if (cachedData && Date.now() - cachedData.timestamp > 24 * 60 * 60 * 1000) {\n try {\n const cachePath = getCachePath(repoPath);\n const deletedCount = await cleanupOldCacheFiles(cachePath, Date.now());\n if (deletedCount > 0) {\n logger.debug(`Cleaned up ${deletedCount} old cache files`);\n }\n } catch {\n // Ignore cleanup errors\n }\n }\n\n return {\n cache,\n stats: {\n ...stats,\n updateTime: Date.now() - startTime,\n fullRebuild: false,\n },\n };\n } else {\n // Cache invalid or doesn't exist, build from scratch\n logger.debug(`Cache invalid or missing, building from scratch...`);\n\n const commitToTags = await buildCompleteTagCache(repoPath, parseVersion);\n const cache: TagCache = {\n commitToTags,\n initialized: true,\n };\n\n // Save new cache\n const validation = await buildCacheValidation(repoPath);\n await saveCachedTags(repoPath, cache, validation);\n\n return {\n cache,\n stats: {\n added: currentTags.length,\n deleted: 0,\n modified: 0,\n unchanged: 0,\n totalTags: currentTags.length,\n updateTime: Date.now() - startTime,\n fullRebuild: true,\n },\n };\n }\n};\n\n/**\n * Perform differential cache update\n * @param repoPath - Repository path\n * @param cache - Current cache (will be modified)\n * @param currentTags - Current tag list from Git\n * @param parseVersion - Function to parse version from tag name\n * @param logger - Optional logger\n * @returns Update statistics\n */\nasync function performDifferentialUpdate(\n repoPath: string,\n cache: Map<string, TagInfo[]>,\n currentTags: string[],\n parseVersion: (tagName: string) => Version | undefined,\n logger: Logger\n): Promise<Omit<CacheUpdateStats, 'updateTime' | 'fullRebuild'>> {\n // Calculate diff\n const diff = calculateTagDiff(cache, currentTags);\n\n logger.debug(\n `Tag diff: +${diff.added.length} -${diff.deleted.length} =${diff.unchanged.length}`\n );\n\n // Find modified tags (tags that moved to different commits)\n const modified = await findModifiedTags(repoPath, diff.unchanged, cache);\n\n logger.debug(`Found ${modified.length} modified tags`);\n\n // Apply deletions\n if (diff.deleted.length > 0) {\n const newCache = removeTagsFromCache(cache, diff.deleted);\n cache.clear();\n for (const [k, v] of newCache) {\n cache.set(k, v);\n }\n }\n\n // Apply additions\n if (diff.added.length > 0) {\n const newTags = await getTagsInfo(repoPath, diff.added, parseVersion);\n const newCache = addTagsToCache(cache, newTags);\n cache.clear();\n for (const [k, v] of newCache) {\n cache.set(k, v);\n }\n }\n\n // Apply modifications\n if (modified.length > 0) {\n const updatedTags = await getTagsInfo(repoPath, modified, parseVersion);\n const newCache = updateTagsInCache(cache, modified, updatedTags);\n cache.clear();\n for (const [k, v] of newCache) {\n cache.set(k, v);\n }\n }\n\n // Calculate unchanged count (tags that weren't modified)\n const unchangedCount = diff.unchanged.length - modified.length;\n\n return {\n added: diff.added.length,\n deleted: diff.deleted.length,\n modified: modified.length,\n unchanged: unchangedCount,\n totalTags: currentTags.length,\n };\n}\n\n/**\n * Invalidate cache (force rebuild on next load)\n * @param repoPath - Repository path\n */\nexport const invalidateCache = async (repoPath: string): Promise<void> => {\n // Simply delete the cache file\n const cachedData = await loadCachedTags(repoPath);\n if (cachedData) {\n // Cache exists, but we won't delete it - just let validation fail\n // This preserves the cache for debugging\n return;\n }\n};\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport * as git from 'isomorphic-git';\nimport * as fs from 'fs/promises';\nimport dayjs from 'dayjs';\nimport { GitMetadata } from './types.js';\nimport { Logger } from './internal.js';\nimport { loadOrBuildTagCache } from './cache-manager.js';\n\n// Ported from: https://github.com/kekyo/RelaxVersioner/blob/master/RelaxVersioner.Core/Analyzer.cs\n\n/**\n * Version information\n */\nexport interface Version {\n major: number;\n minor?: number;\n build?: number;\n revision?: number;\n original: string;\n}\n\n/**\n * Primitive commit information\n */\ninterface CommitInfo {\n hash: string;\n shortHash: string;\n date: string;\n message: string;\n parents: string[];\n}\n\n/**\n * Tag information\n */\nexport interface TagInfo {\n name: string;\n hash: string;\n version: Version | undefined;\n}\n\n/**\n * Tag cache for performance optimization\n */\nexport interface TagCache {\n commitToTags: Map<string, TagInfo[]>;\n initialized: boolean;\n}\n\n/////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Parse and validate a version component\n * @param value - The string value to parse\n * @returns The parsed number or undefined if invalid (negative or > 65535)\n */\nconst parseVersionComponent = (value: string): number | undefined => {\n const num = parseInt(value, 10);\n return num < 0 || num > 65535 ? undefined : num;\n};\n\n/**\n * Parse a version tag name\n * @param tagName - The version tag name\n * @returns The parsed version or undefined if the tag name is invalid\n */\nconst parseVersion = (tagName: string): Version | undefined => {\n // Remove common prefix 'v'.\n const cleanTag = tagName.replace(/^v/i, '');\n\n // Match version pattern: major.minor[.build[.revision]].\n const versionRegex = /^(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:\\.(\\d+))?$/;\n const match = cleanTag.match(versionRegex);\n\n if (!match) {\n return undefined;\n }\n\n const major = parseVersionComponent(match[1]);\n if (major === undefined) {\n return undefined;\n }\n\n const version: Version = {\n major,\n original: tagName,\n };\n\n if (match[2] !== undefined) {\n const minor = parseVersionComponent(match[2]);\n if (minor === undefined) {\n return undefined;\n }\n version.minor = minor;\n }\n if (match[3] !== undefined) {\n const build = parseVersionComponent(match[3]);\n if (build === undefined) {\n return undefined;\n }\n version.build = build;\n }\n if (match[4] !== undefined) {\n const revision = parseVersionComponent(match[4]);\n if (revision === undefined) {\n return undefined;\n }\n version.revision = revision;\n }\n\n return version;\n};\n\n/**\n * Check if a version is valid\n * @param version - The version to check\n * @returns True if the version is valid, false otherwise\n */\nconst isValidVersion = (version: Version): boolean => {\n // At least major component and optionally minor\n return (\n version.major >= 0 && (version.minor === undefined || version.minor >= 0)\n );\n};\n\n/**\n * Compare two versions\n * @param a - The first version\n * @param b - The second version\n * @returns A negative number if a is less than b, a positive number if a is greater than b, or 0 if they are equal\n */\nconst compareVersions = (a: Version, b: Version): number => {\n // Compare major\n if (a.major !== b.major) return b.major - a.major;\n\n // Compare minor (treat undefined as 0)\n const aMinor = a.minor ?? 0;\n const bMinor = b.minor ?? 0;\n if (aMinor !== bMinor) return bMinor - aMinor;\n\n // Compare build (treat undefined as 0)\n const aBuild = a.build ?? 0;\n const bBuild = b.build ?? 0;\n if (aBuild !== bBuild) return bBuild - aBuild;\n\n // Compare revision (treat undefined as 0)\n const aRevision = a.revision ?? 0;\n const bRevision = b.revision ?? 0;\n if (aRevision !== bRevision) return bRevision - aRevision;\n\n return 0;\n};\n\n/**\n * Increment the last version component\n * @param version - The version to increment\n * @returns The incremented version\n */\nconst incrementLastVersionComponent = (version: Version): Version => {\n // Increment the rightmost existing component\n if (version.revision !== undefined) {\n return { ...version, revision: version.revision + 1 };\n }\n if (version.build !== undefined) {\n return { ...version, build: version.build + 1 };\n }\n if (version.minor !== undefined) {\n return { ...version, minor: version.minor + 1 };\n }\n\n // If only major exists, increment major\n return {\n ...version,\n major: version.major + 1,\n original: `${version.major + 1}`,\n };\n};\n\n/**\n * Format a version\n * @param version - The version to format\n * @returns The formatted version\n */\nconst formatVersion = (version: Version): string => {\n let result = `${version.major}`;\n\n if (version.minor !== undefined) {\n result += `.${version.minor}`;\n\n if (version.build !== undefined) {\n result += `.${version.build}`;\n\n if (version.revision !== undefined) {\n result += `.${version.revision}`;\n }\n }\n }\n\n return result;\n};\n\n/////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Get a commit by hash\n * @param repositoryPath - Local Git repository directory\n * @param hash - The hash of the commit\n * @returns The commit or undefined if the commit is not found\n */\nconst getCommit = async (\n repositoryPath: string,\n hash: string\n): Promise<CommitInfo | undefined> => {\n try {\n const commit = await git.readCommit({ fs, dir: repositoryPath, oid: hash });\n\n return {\n hash: commit.oid,\n shortHash: commit.oid.substring(0, 7),\n date: new Date(commit.commit.author.timestamp * 1000).toISOString(),\n message: commit.commit.message.trim(),\n parents: commit.commit.parent || [],\n };\n } catch {\n return undefined;\n }\n};\n\n/**\n * Get the current commit\n * @param repositoryPath - Local Git repository directory\n * @returns The current commit or undefined if the current commit is not found\n */\nconst getCurrentCommit = async (\n repositoryPath: string\n): Promise<CommitInfo | undefined> => {\n try {\n const currentOid = await git.resolveRef({\n fs,\n dir: repositoryPath,\n ref: 'HEAD',\n });\n const commit = await git.readCommit({\n fs,\n dir: repositoryPath,\n oid: currentOid,\n });\n\n return {\n hash: commit.oid,\n shortHash: commit.oid.substring(0, 7),\n date: new Date(commit.commit.author.timestamp * 1000).toISOString(),\n message: commit.commit.message.trim(),\n parents: commit.commit.parent || [],\n };\n } catch {\n return undefined;\n }\n};\n\n/**\n * Get related tags for a commit using cache\n * @param cache - Tag cache\n * @param commitHash - The hash of the commit\n * @returns The related tags or an empty array if no tags are found\n */\nconst getRelatedTagsFromCache = (\n cache: TagCache,\n commitHash: string\n): TagInfo[] => {\n if (!cache.initialized) {\n return [];\n }\n return cache.commitToTags.get(commitHash) || [];\n};\n\n/**\n * Get related tags for a commit\n * @param repositoryPath - Local Git repository directory\n * @param commitHash - The hash of the commit\n * @returns The related tags or an empty array if no tags are found\n */\nconst getRelatedTags = async (\n repositoryPath: string,\n commitHash: string\n): Promise<TagInfo[]> => {\n try {\n const tags = await git.listTags({ fs, dir: repositoryPath });\n const tagInfos: TagInfo[] = [];\n\n for (const tagName of tags) {\n try {\n const tagOid = await git.resolveRef({\n fs,\n dir: repositoryPath,\n ref: `refs/tags/${tagName}`,\n });\n\n // Optimization: Check if lightweight tag matches first\n if (tagOid === commitHash) {\n // Direct match - this is a lightweight tag pointing to our commit\n const version = parseVersion(tagName);\n if (version && isValidVersion(version)) {\n tagInfos.push({\n name: tagName,\n hash: commitHash,\n version,\n });\n } else {\n tagInfos.push({\n name: tagName,\n hash: commitHash,\n version: undefined,\n });\n }\n } else {\n // Not a direct match - check if it's an annotated tag\n try {\n const tagObject = await git.readTag({\n fs,\n dir: repositoryPath,\n oid: tagOid,\n });\n if (tagObject && tagObject.tag.object === commitHash) {\n // Annotated tag pointing to our commit\n const version = parseVersion(tagName);\n if (version && isValidVersion(version)) {\n tagInfos.push({\n name: tagName,\n hash: commitHash,\n version,\n });\n } else {\n tagInfos.push({\n name: tagName,\n hash: commitHash,\n version: undefined,\n });\n }\n }\n } catch {\n // This is a lightweight tag that doesn't point to our commit\n }\n }\n } catch {\n // Skip tags that can't be resolved\n }\n }\n\n // Sort by name\n return tagInfos.sort((a, b) => a.name.localeCompare(b.name));\n } catch {\n return [];\n }\n};\n\n/**\n * Get related tags for versioning\n * @param repositoryPath - Local Git repository directory\n * @param commitHash - The hash of the commit\n * @returns The related tags or an empty array if no tags are found\n */\nconst getRelatedTagsForVersioning = async (\n repositoryPath: string,\n commitHash: string\n): Promise<TagInfo[]> => {\n try {\n const tags = await git.listTags({ fs, dir: repositoryPath });\n const tagInfos: TagInfo[] = [];\n\n for (const tagName of tags) {\n try {\n const tagOid = await git.resolveRef({\n fs,\n dir: repositoryPath,\n ref: `refs/tags/${tagName}`,\n });\n\n // Optimization: Check if lightweight tag matches first\n if (tagOid === commitHash) {\n // Direct match - this is a lightweight tag pointing to our commit\n const version = parseVersion(tagName);\n if (version && isValidVersion(version)) {\n tagInfos.push({\n name: tagName,\n hash: commitHash,\n version,\n });\n }\n } else {\n // Not a direct match - check if it's an annotated tag\n try {\n const tagObject = await git.readTag({\n fs,\n dir: repositoryPath,\n oid: tagOid,\n });\n if (tagObject && tagObject.tag.object === commitHash) {\n // Annotated tag pointing to our commit\n const version = parseVersion(tagName);\n if (version && isValidVersion(version)) {\n tagInfos.push({\n name: tagName,\n hash: commitHash,\n version,\n });\n }\n }\n } catch {\n // This is a lightweight tag that doesn't point to our commit\n }\n }\n } catch {\n // Skip tags that can't be resolved\n }\n }\n return tagInfos;\n } catch {\n return [];\n }\n};\n\n/**\n * Get the commit related branch name.\n * @param repositoryPath - Local Git repository directory\n * @param commitHash - The hash of the commit\n * @returns The commit related branch name or undefined if not found\n */\nconst getRelatedBranches = async (\n repositoryPath: string,\n commitHash: string\n): Promise<string[]> => {\n try {\n const branches = await git.listBranches({ fs, dir: repositoryPath });\n const relatedBranches: string[] = [];\n\n for (const branch of branches) {\n try {\n // Check if the branch HEAD points to the specified commit\n const branchOid = await git.resolveRef({\n fs,\n dir: repositoryPath,\n ref: branch,\n });\n if (branchOid === commitHash) {\n relatedBranches.push(branch);\n }\n } catch {\n // Skip branches that can't be resolved\n }\n }\n\n return relatedBranches;\n } catch {\n return [];\n }\n};\n\n/**\n * Check if the repository has modified files (following RelaxVersioner logic).\n * Checks for staged files, unstaged files, and untracked files (respecting .gitignore).\n * @param repositoryPath - Local Git repository directory\n * @returns Modified files\n */\nconst getModifiedFiles = async (\n repositoryPath: string\n): Promise<git.StatusRow[]> => {\n try {\n const status = await git.statusMatrix({ fs, dir: repositoryPath });\n // statusMatrix returns [filepath, headStatus, workdirStatus, stageStatus]\n // headStatus: 0=absent, 1=present\n // workdirStatus: 0=absent, 1=present, 2=modified\n // stageStatus: 0=absent, 1=present, 2=modified, 3=added\n // By default, ignored files are excluded (ignored: false)\n return status.filter(\n ([, head, workdir, stage]) =>\n workdir === 2 || // modified in working directory (unstaged)\n stage === 2 || // modified in stage (staged)\n stage === 3 || // added to stage (staged)\n (head === 1 && workdir === 0) || // deleted from working directory\n (head === 0 && workdir === 1) // untracked files (respecting .gitignore)\n );\n } catch {\n return [];\n }\n};\n\nconst formatModifiedFile = (modifiedFile: git.StatusRow) => {\n return `'${modifiedFile[0]}':${modifiedFile[1]}:${modifiedFile[2]}:${modifiedFile[3]}`;\n};\n\n/////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Scheduled commit\n */\ninterface ScheduledCommit {\n commit: CommitInfo;\n parents: CommitInfo[];\n}\n\n/**\n * Lookup version label recursively core analyzer\n * @param cwd - The directory to check\n * @param commit - The commit to lookup\n * @param reachedCommits - The map of reached commits\n * @param tagCache - Optional tag cache for performance\n * @returns The version or undefined if no version is found\n */\nconst lookupVersionLabelRecursive = async (\n cwd: string,\n commit: CommitInfo,\n reachedCommits: Map<string, Version>,\n tagCache?: TagCache\n): Promise<Version | undefined> => {\n // Scheduled commit analysis stack\n const scheduledStack: ScheduledCommit[] = [];\n\n let version: Version = { major: 0, minor: 0, build: 1, original: '0.0.1' };\n let currentCommit = commit;\n\n // Trace back to the parent commit repeatedly with the following conditions:\n // * If the commit has already been reached, get its version.\n // * If there is a recognizable version string in the tag, get its version.\n // * If the parent commit does not exist, get the default version.\n // * If other than the above, push the commit on the stack for later processing in reverse order.\n while (true) {\n // If the commit has already been reached, get its version.\n if (reachedCommits.has(currentCommit.hash)) {\n version = reachedCommits.get(currentCommit.hash)!;\n break;\n }\n\n // Detected mostly larger version tag.\n const relatedTags = tagCache\n ? getRelatedTagsFromCache(tagCache, currentCommit.hash)\n : await getRelatedTagsForVersioning(cwd, currentCommit.hash);\n const versionCandidates = relatedTags\n .filter((tag) => tag.version && isValidVersion(tag.version))\n .filter((tag) => tag.version!.minor !== undefined) // \"1.2\" or more.\n .sort((a, b) => compareVersions(a.version!, b.version!));\n if (versionCandidates.length >= 1) {\n // Found version tags, use the highest version\n version = versionCandidates[0].version!;\n reachedCommits.set(currentCommit.hash, version);\n break;\n }\n\n // Get parent commits\n let parentCommits: CommitInfo[] = [];\n try {\n const commitObj = await git.readCommit({\n fs,\n dir: cwd,\n oid: currentCommit.hash,\n });\n const parentHashes = commitObj.commit.parent || [];\n parentCommits = (\n await Promise.all(\n parentHashes.map((parentHash) => getCommit(cwd, parentHash))\n )\n ).filter((ci) => ci !== undefined);\n } catch {\n // If we can't get parent information, use default version\n }\n if (parentCommits.length === 0) {\n // No parents, this is the root commit\n reachedCommits.set(currentCommit.hash, version);\n break;\n }\n\n // Schedule this commit for later processing\n scheduledStack.push({ commit: currentCommit, parents: parentCommits });\n\n // Move to the first parent (primary branch)\n currentCommit = parentCommits[0];\n }\n\n // As long as there are commits stacked on the stack,\n // retrieve a commit from the stack, and if there is more than one parent commit for that commit:\n // * Recursively get versions from parent commits other than the primary one.\n // * Compare the versions obtained and store the largest version.\n // * Increment the version and make it the version of the current commit.\n while (scheduledStack.length >= 1) {\n const scheduled = scheduledStack.pop()!;\n const { commit: scheduledCommit, parents } = scheduled;\n\n // Handle merge commits (multiple parents)\n if (parents.length >= 2) {\n // Check alternate parent commits (feature branches)\n for (let index = 1; index < parents.length; index++) {\n const alternateParentVersion = await lookupVersionLabelRecursive(\n cwd,\n parents[index],\n reachedCommits,\n tagCache\n );\n if (\n alternateParentVersion &&\n compareVersions(alternateParentVersion, version) < 0\n ) {\n // Use higher version from alternate parent\n version = alternateParentVersion;\n }\n }\n }\n\n // Increment version for this commit\n version = incrementLastVersionComponent(version);\n reachedCommits.set(scheduledCommit.hash, version);\n }\n\n return version;\n};\n\n/////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Get default Git metadata from local repository.\n * @param repositoryPath - Local Git repository directory\n * @param checkWorkingDirectoryStatus - Check working directory status to increase version\n * @param logger - Logger instance\n * @returns The metadata object with git metadata\n */\nconst getGitMetadata = async (\n repositoryPath: string,\n checkWorkingDirectoryStatus: boolean,\n logger: Logger\n) => {\n const metadata: any = {};\n\n // Try to find git root directory from the given path\n let gitRootPath: string;\n try {\n gitRootPath = await git.findRoot({ fs, filepath: repositoryPath });\n } catch {\n // No git repository found\n return metadata;\n }\n\n try {\n // Get current commit\n const currentCommit = await getCurrentCommit(gitRootPath);\n if (!currentCommit) {\n return metadata;\n }\n\n // Load or build tag cache with differential updates\n const { cache: tagCache, stats } = await loadOrBuildTagCache(\n gitRootPath,\n (tagName: string) => {\n const version = parseVersion(tagName);\n return version && isValidVersion(version) ? version : undefined;\n },\n logger\n );\n\n if (stats.fullRebuild) {\n logger.debug(\n `Built new tag cache: ${stats.totalTags} tags in ${stats.updateTime}ms`\n );\n } else {\n logger.debug(\n `Updated cache differentially: +${stats.added} -${stats.deleted} ~${stats.modified} =${stats.unchanged} (${stats.updateTime}ms)`\n );\n }\n\n // Initialize reached commits cache\n const reachedCommits = new Map<string, Version>();\n\n // Lookup version\n let version = await lookupVersionLabelRecursive(\n gitRootPath,\n currentCommit,\n reachedCommits,\n tagCache\n );\n\n // Set git metadata into 'git' key\n const gitMetadata: GitMetadata = { tags: [], branches: [] };\n metadata.git = gitMetadata;\n\n if (version) {\n // Check for working directory changes and increment version if needed\n if (checkWorkingDirectoryStatus) {\n const modifiedFiles = await getModifiedFiles(gitRootPath);\n if (modifiedFiles.length >= 1) {\n const newVersion = incrementLastVersionComponent(version);\n logger.debug(\n `Increased git version by detected modified items: ${formatVersion(version)} ---> ${formatVersion(newVersion)}, Files=[${modifiedFiles.map(formatModifiedFile).join(', ')}]`\n );\n version = newVersion;\n }\n }\n\n const gitVersion = formatVersion(version);\n gitMetadata.version = gitVersion;\n metadata.version = gitVersion; // Fallback default version metadata\n }\n\n // Set commit information\n gitMetadata.commit = {\n hash: currentCommit.hash,\n shortHash: currentCommit.shortHash,\n date: dayjs(currentCommit.date).format('YYYY-MM-DDTHH:mm:ssZ[Z]'),\n message: currentCommit.message,\n };\n\n // Try to find the actual tag name if it exists (use cache for performance)\n const relatedTags = getRelatedTagsFromCache(tagCache, currentCommit.hash);\n gitMetadata.tags = relatedTags.map((tag) => tag.name);\n\n // Get branch information\n const relatedBranches = await getRelatedBranches(\n gitRootPath,\n currentCommit.hash\n );\n gitMetadata.branches = relatedBranches;\n } catch (error) {\n // If any error occurs, return empty metadata\n logger.warn(`Failed to extract git metadata: ${error}`);\n }\n\n return metadata;\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Get cached Git metadata fetcher function\n * @param targetDir - Target directory to resolve Git metadata\n * @param checkWorkingDirectoryStatus - Check working directory status\n * @param logger - Logger\n * @returns Git metadata fetcher function\n */\nexport const getFetchGitMetadata = (\n targetDir: string,\n checkWorkingDirectoryStatus: boolean,\n logger: Logger\n) => {\n let cachedMetadata: any;\n return async () => {\n if (!cachedMetadata) {\n cachedMetadata = await getGitMetadata(\n targetDir,\n checkWorkingDirectoryStatus,\n logger\n );\n }\n return cachedMetadata;\n };\n};\n","// This file is auto-generated by screw-up plugin\n// Do not edit manually\n\nexport const name = \"screw-up\";\nexport const version = \"1.6.0\";\nexport const description = \"Simply package metadata inserter on Vite plugin\";\nexport const author = \"Kouji Matsui (@kekyo@mi.kekyo.net)\";\nexport const license = \"MIT\";\nexport const repository_url = \"https://github.com/kekyo/screw-up.git\";\nexport const git_commit_hash = \"10c04af9c9b127002592d48cbb6ec18cfe5048bb\";\n"],"names":["c","parse","name","key","token","buffer","stringify","stack","value","JSON5","this","t","e","n","r","i","s","u","a","M","m","f","l","$","y","v","g","D","o","d","h","fs","parseVersion","version","tags"],"mappings":"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","x_google_ignoreList":[0,2]}
|