From 84bd40deba3e100ca1361e0551cc6e1005760b40 Mon Sep 17 00:00:00 2001 From: bluwy Date: Mon, 25 May 2026 23:34:49 +0800 Subject: [PATCH] Simplify getChangelogEntry --- .changeset/green-cougars-listen.md | 5 + package.json | 7 +- pnpm-lock.yaml | 318 --------------------------- src/__snapshots__/run.test.ts.snap | 25 +-- src/__snapshots__/utils.test.ts.snap | 14 +- src/utils.ts | 82 ++++--- 6 files changed, 61 insertions(+), 390 deletions(-) create mode 100644 .changeset/green-cougars-listen.md diff --git a/.changeset/green-cougars-listen.md b/.changeset/green-cougars-listen.md new file mode 100644 index 00000000..20a49094 --- /dev/null +++ b/.changeset/green-cougars-listen.md @@ -0,0 +1,5 @@ +--- +"@changesets/action": patch +--- + +Simplify internal implementation to get changelog entries for a package version diff --git a/package.json b/package.json index e73bdf51..cb53415a 100644 --- a/package.json +++ b/package.json @@ -26,12 +26,7 @@ "@manypkg/get-packages": "^1.1.3", "@octokit/core": "^7.0.6", "@octokit/plugin-throttling": "^11.0.3", - "@types/mdast": "^3.0.15", - "mdast-util-to-string": "^1.1.0", - "remark-parse": "^7.0.2", - "remark-stringify": "^7.0.4", - "semver": "^7.8.0", - "unified": "^8.4.2" + "semver": "^7.8.0" }, "devDependencies": { "@changesets/changelog-github": "^0.7.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f5951ac4..747b6e08 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -40,24 +40,9 @@ importers: '@octokit/plugin-throttling': specifier: ^11.0.3 version: 11.0.3(@octokit/core@7.0.6) - '@types/mdast': - specifier: ^3.0.15 - version: 3.0.15 - mdast-util-to-string: - specifier: ^1.1.0 - version: 1.1.0 - remark-parse: - specifier: ^7.0.2 - version: 7.0.2 - remark-stringify: - specifier: ^7.0.4 - version: 7.0.4 semver: specifier: ^7.8.0 version: 7.8.0 - unified: - specifier: ^8.4.2 - version: 8.4.2 devDependencies: '@changesets/changelog-github': specifier: ^0.7.0 @@ -512,9 +497,6 @@ packages: '@types/estree@1.0.9': resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} - '@types/mdast@3.0.15': - resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} - '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} @@ -524,9 +506,6 @@ packages: '@types/semver@7.7.1': resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} - '@types/unist@2.0.11': - resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} - '@vitest/expect@4.1.6': resolution: {integrity: sha512-7EHDquPthALSV0jhhjgEW8FXaviMx7rSqu8W6oqCoAuOhKov814P99QDV1pxMA3QPv21YudvJngIhjrNI4opLg==} @@ -589,9 +568,6 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - bail@1.0.5: - resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} - base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -624,34 +600,16 @@ packages: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} - ccount@1.1.0: - resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} - chai@6.2.2: resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} - character-entities-html4@1.1.4: - resolution: {integrity: sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==} - - character-entities-legacy@1.1.4: - resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} - - character-entities@1.2.4: - resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} - - character-reference-invalid@1.1.4: - resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} - chardet@2.1.1: resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} clean-git-ref@2.0.1: resolution: {integrity: sha512-bLSptAy2P0s6hU4PzuIMKmMJJSE6gLXGH1cntDu7bWJUksvuM+7ReOK61mozULErYvP6a15rnYl0zFDef+pyPw==} - collapse-white-space@1.0.6: - resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} - content-type@2.0.0: resolution: {integrity: sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==} engines: {node: '>=18'} @@ -737,9 +695,6 @@ packages: resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} - extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} @@ -850,27 +805,10 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - is-alphabetical@1.0.4: - resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} - - is-alphanumeric@1.0.0: - resolution: {integrity: sha512-ZmRL7++ZkcMOfDuWZuMJyIVLr2keE1o/DeNWh1EmgqGhUcV+9BIVsx0BcSBOHTZqzjs4+dISzr2KAeBEWGgXeA==} - engines: {node: '>=0.10.0'} - - is-alphanumerical@1.0.4: - resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} - - is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-decimal@1.0.4: - resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} - is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -879,17 +817,10 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-hexadecimal@1.0.4: - resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} - is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - is-subdir@1.2.0: resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} engines: {node: '>=4'} @@ -898,16 +829,10 @@ packages: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} - is-whitespace-character@1.0.4: - resolution: {integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==} - is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} - is-word-character@1.0.4: - resolution: {integrity: sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==} - isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} @@ -940,28 +865,13 @@ packages: lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - longest-streak@2.0.4: - resolution: {integrity: sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==} - magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - markdown-escapes@1.0.4: - resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==} - - markdown-table@1.1.3: - resolution: {integrity: sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==} - math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} - mdast-util-compact@1.0.4: - resolution: {integrity: sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==} - - mdast-util-to-string@1.1.0: - resolution: {integrity: sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==} - merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -1033,9 +943,6 @@ packages: pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - parse-entities@1.2.2: - resolution: {integrity: sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==} - path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -1093,16 +1000,6 @@ packages: resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - remark-parse@7.0.2: - resolution: {integrity: sha512-9+my0lQS80IQkYXsMA8Sg6m9QfXYJBnXjWYN5U+kFc5/n69t+XZVXU/ZBYr3cYH8FheEGf1v87rkFDhJ8bVgMA==} - - remark-stringify@7.0.4: - resolution: {integrity: sha512-qck+8NeA1D0utk1ttKcWAoHRrJxERYQzkHDyn+pF5Z4whX1ug98uCNPPSeFgLSaNERRxnD6oxIug6DzZQth6Pg==} - - repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} @@ -1173,18 +1070,12 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - state-toggle@1.0.3: - resolution: {integrity: sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==} - std-env@4.1.0: resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - stringify-entities@2.0.0: - resolution: {integrity: sha512-fqqhZzXyAM6pGD9lky/GOPq6V4X0SeTAFBl0iXb/BzOegl40gpf/bV3QQP7zULNYvjr6+Dx8SCaDULjVoOru0A==} - strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -1227,16 +1118,6 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - trim-trailing-lines@1.1.4: - resolution: {integrity: sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==} - - trim@0.0.1: - resolution: {integrity: sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==} - deprecated: Use String.prototype.trim() instead - - trough@1.0.5: - resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} - tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -1260,27 +1141,6 @@ packages: resolution: {integrity: sha512-ZgpWDC5gmNiuY9CnLVXEH8rl50xhRCuLNA97fAUnKi8RRuV4E6KG31pDTsLVUKnohJE0I3XDrTeEydAXRw47xg==} engines: {node: '>=18.17'} - unherit@1.1.3: - resolution: {integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==} - - unified@8.4.2: - resolution: {integrity: sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==} - - unist-util-is@3.0.0: - resolution: {integrity: sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==} - - unist-util-remove-position@1.1.4: - resolution: {integrity: sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==} - - unist-util-stringify-position@2.0.3: - resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} - - unist-util-visit-parents@2.1.2: - resolution: {integrity: sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==} - - unist-util-visit@1.4.1: - resolution: {integrity: sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==} - universal-user-agent@7.0.3: resolution: {integrity: sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==} @@ -1288,15 +1148,6 @@ packages: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} - vfile-location@2.0.6: - resolution: {integrity: sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==} - - vfile-message@2.0.4: - resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} - - vfile@4.2.1: - resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} - vite@8.0.13: resolution: {integrity: sha512-MFtjBYgzmSxmgA4RAfjIyXWpGe1oALnjgUTzzV7QLx/TKxCzjtMH6Fd9/eVK+5Fg1qNoz5VAwsmMs/NofrmJvw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1404,10 +1255,6 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - snapshots: '@actions/core@3.0.1': @@ -1850,10 +1697,6 @@ snapshots: '@types/estree@1.0.9': {} - '@types/mdast@3.0.15': - dependencies: - '@types/unist': 2.0.11 - '@types/node@12.20.55': {} '@types/node@24.12.4': @@ -1862,8 +1705,6 @@ snapshots: '@types/semver@7.7.1': {} - '@types/unist@2.0.11': {} - '@vitest/expect@4.1.6': dependencies: '@standard-schema/spec': 1.1.0 @@ -1929,8 +1770,6 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - bail@1.0.5: {} - base64-js@1.5.1: {} before-after-hook@4.0.0: {} @@ -1967,24 +1806,12 @@ snapshots: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 - ccount@1.1.0: {} - chai@6.2.2: {} - character-entities-html4@1.1.4: {} - - character-entities-legacy@1.1.4: {} - - character-entities@1.2.4: {} - - character-reference-invalid@1.1.4: {} - chardet@2.1.1: {} clean-git-ref@2.0.1: {} - collapse-white-space@1.0.6: {} - content-type@2.0.0: {} convert-source-map@2.0.0: {} @@ -2052,8 +1879,6 @@ snapshots: expect-type@1.3.0: {} - extend@3.0.2: {} - extendable-error@0.1.7: {} fast-content-type-parse@3.0.0: {} @@ -2167,33 +1992,16 @@ snapshots: inherits@2.0.4: {} - is-alphabetical@1.0.4: {} - - is-alphanumeric@1.0.0: {} - - is-alphanumerical@1.0.4: - dependencies: - is-alphabetical: 1.0.4 - is-decimal: 1.0.4 - - is-buffer@2.0.5: {} - is-callable@1.2.7: {} - is-decimal@1.0.4: {} - is-extglob@2.1.1: {} is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - is-hexadecimal@1.0.4: {} - is-number@7.0.0: {} - is-plain-obj@2.1.0: {} - is-subdir@1.2.0: dependencies: better-path-resolve: 1.0.0 @@ -2202,12 +2010,8 @@ snapshots: dependencies: which-typed-array: 1.1.20 - is-whitespace-character@1.0.4: {} - is-windows@1.0.2: {} - is-word-character@1.0.4: {} - isarray@2.0.5: {} isexe@2.0.0: {} @@ -2247,24 +2051,12 @@ snapshots: lodash.startcase@4.4.0: {} - longest-streak@2.0.4: {} - magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - markdown-escapes@1.0.4: {} - - markdown-table@1.1.3: {} - math-intrinsics@1.1.0: {} - mdast-util-compact@1.0.4: - dependencies: - unist-util-visit: 1.4.1 - - mdast-util-to-string@1.1.0: {} - merge2@1.4.1: {} micromatch@4.0.8: @@ -2340,15 +2132,6 @@ snapshots: pako@1.0.11: {} - parse-entities@1.2.2: - dependencies: - character-entities: 1.2.4 - character-entities-legacy: 1.1.4 - character-reference-invalid: 1.1.4 - is-alphanumerical: 1.0.4 - is-decimal: 1.0.4 - is-hexadecimal: 1.0.4 - path-exists@4.0.0: {} path-key@3.1.1: {} @@ -2390,43 +2173,6 @@ snapshots: process: 0.11.10 string_decoder: 1.3.0 - remark-parse@7.0.2: - dependencies: - collapse-white-space: 1.0.6 - is-alphabetical: 1.0.4 - is-decimal: 1.0.4 - is-whitespace-character: 1.0.4 - is-word-character: 1.0.4 - markdown-escapes: 1.0.4 - parse-entities: 1.2.2 - repeat-string: 1.6.1 - state-toggle: 1.0.3 - trim: 0.0.1 - trim-trailing-lines: 1.1.4 - unherit: 1.1.3 - unist-util-remove-position: 1.1.4 - vfile-location: 2.0.6 - xtend: 4.0.2 - - remark-stringify@7.0.4: - dependencies: - ccount: 1.1.0 - is-alphanumeric: 1.0.0 - is-decimal: 1.0.4 - is-whitespace-character: 1.0.4 - longest-streak: 2.0.4 - markdown-escapes: 1.0.4 - markdown-table: 1.1.3 - mdast-util-compact: 1.0.4 - parse-entities: 1.2.2 - repeat-string: 1.6.1 - state-toggle: 1.0.3 - stringify-entities: 2.0.0 - unherit: 1.1.3 - xtend: 4.0.2 - - repeat-string@1.6.1: {} - resolve-from@5.0.0: {} reusify@1.1.0: {} @@ -2506,22 +2252,12 @@ snapshots: stackback@0.0.2: {} - state-toggle@1.0.3: {} - std-env@4.1.0: {} string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 - stringify-entities@2.0.0: - dependencies: - character-entities-html4: 1.1.4 - character-entities-legacy: 1.1.4 - is-alphanumerical: 1.0.4 - is-decimal: 1.0.4 - is-hexadecimal: 1.0.4 - strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -2555,12 +2291,6 @@ snapshots: tr46@0.0.3: {} - trim-trailing-lines@1.1.4: {} - - trim@0.0.1: {} - - trough@1.0.5: {} - tslib@2.8.1: optional: true @@ -2578,56 +2308,10 @@ snapshots: undici@6.25.0: {} - unherit@1.1.3: - dependencies: - inherits: 2.0.4 - xtend: 4.0.2 - - unified@8.4.2: - dependencies: - '@types/unist': 2.0.11 - bail: 1.0.5 - extend: 3.0.2 - is-plain-obj: 2.1.0 - trough: 1.0.5 - vfile: 4.2.1 - - unist-util-is@3.0.0: {} - - unist-util-remove-position@1.1.4: - dependencies: - unist-util-visit: 1.4.1 - - unist-util-stringify-position@2.0.3: - dependencies: - '@types/unist': 2.0.11 - - unist-util-visit-parents@2.1.2: - dependencies: - unist-util-is: 3.0.0 - - unist-util-visit@1.4.1: - dependencies: - unist-util-visit-parents: 2.1.2 - universal-user-agent@7.0.3: {} universalify@0.1.2: {} - vfile-location@2.0.6: {} - - vfile-message@2.0.4: - dependencies: - '@types/unist': 2.0.11 - unist-util-stringify-position: 2.0.3 - - vfile@4.2.1: - dependencies: - '@types/unist': 2.0.11 - is-buffer: 2.0.5 - unist-util-stringify-position: 2.0.3 - vfile-message: 2.0.4 - vite@8.0.13(@types/node@24.12.4): dependencies: picomatch: 4.0.4 @@ -2691,5 +2375,3 @@ snapshots: stackback: 0.0.2 wrappy@1.0.2: {} - - xtend@4.0.2: {} diff --git a/src/__snapshots__/run.test.ts.snap b/src/__snapshots__/run.test.ts.snap index fc8afe22..9c05fd53 100644 --- a/src/__snapshots__/run.test.ts.snap +++ b/src/__snapshots__/run.test.ts.snap @@ -12,8 +12,7 @@ exports[`version > creates a draft PR when prDraft is "create" 1`] = ` ### Minor Changes -- Awesome feature -", +- Awesome feature", "draft": true, "head": "changeset-release/some-branch", "owner": "changesets", @@ -35,19 +34,17 @@ exports[`version > creates simple PR 1`] = ` ### Minor Changes -- Awesome feature +- Awesome feature ### Patch Changes -- Updated dependencies - - changesets-dev-simple-project-pkg-b@1.1.0 - +- Updated dependencies + - changesets-dev-simple-project-pkg-b@1.1.0 ## changesets-dev-simple-project-pkg-b@1.1.0 ### Minor Changes -- Awesome feature -", +- Awesome feature", "draft": false, "head": "changeset-release/some-branch", "owner": "changesets", @@ -111,8 +108,7 @@ exports[`version > doesn't include ignored package that got a dependency update ### Minor Changes -- Awesome feature -", +- Awesome feature", "draft": false, "head": "changeset-release/some-branch", "owner": "changesets", @@ -134,8 +130,7 @@ exports[`version > only includes bumped packages in the PR body 1`] = ` ### Minor Changes -- Awesome feature -", +- Awesome feature", "draft": false, "head": "changeset-release/some-branch", "owner": "changesets", @@ -187,8 +182,7 @@ exports[`version > updates an existing PR via GraphQL and converts it to draft w ### Minor Changes -- Awesome feature -", +- Awesome feature", "pullRequestId": "PR_kwDOA", "title": "Version Packages", }, @@ -228,8 +222,7 @@ exports[`version > updates an existing PR via GraphQL without converting it to d ### Minor Changes -- Awesome feature -", +- Awesome feature", "pullRequestId": "PR_kwDOA", "title": "Version Packages", }, diff --git a/src/__snapshots__/utils.test.ts.snap b/src/__snapshots__/utils.test.ts.snap index 81e249de..68e73d5f 100644 --- a/src/__snapshots__/utils.test.ts.snap +++ b/src/__snapshots__/utils.test.ts.snap @@ -23,23 +23,21 @@ exports[`it sorts the things right 1`] = ` exports[`it works 1`] = ` "### Major Changes -- [2164a779](https://github.com/keystonejs/keystone-5/commit/2164a779): +- [2164a779](https://github.com/keystonejs/keystone-5/commit/2164a779): - - Replace jade with pug because Jade was renamed to Pug, and \`jade\` package is outdated + - Replace jade with pug because Jade was renamed to Pug, and \`jade\` package is outdated ### Patch Changes -- [81dc0be5](https://github.com/keystonejs/keystone-5/commit/81dc0be5): +- [81dc0be5](https://github.com/keystonejs/keystone-5/commit/81dc0be5): - - Update dependencies -" + - Update dependencies" `; exports[`it works 2`] = ` "### Patch Changes -- [19fe6c1b](https://github.com/keystonejs/keystone-5/commit/19fe6c1b): +- [19fe6c1b](https://github.com/keystonejs/keystone-5/commit/19fe6c1b): - Move frontmatter in docs into comments -" + Move frontmatter in docs into comments" `; diff --git a/src/utils.ts b/src/utils.ts index 9d3f67f5..76e756c2 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,11 +1,5 @@ import fs from "node:fs/promises"; import { getPackages, type Package } from "@manypkg/get-packages"; -import type { Root } from "mdast"; -// @ts-ignore -import mdastToString from "mdast-util-to-string"; -import remarkParse from "remark-parse"; -import remarkStringify from "remark-stringify"; -import unified from "unified"; export const BumpLevels = { dep: 0, @@ -37,51 +31,55 @@ export async function getChangedPackages( } export function getChangelogEntry(changelog: string, version: string) { - let ast = unified().use(remarkParse).parse(changelog) as Root; - let highestLevel: number = BumpLevels.dep; - - let nodes = ast.children; - let headingStartInfo: - | { - index: number; - depth: number; - } - | undefined; + let headingStartInfo: { index: number; depth: number } | undefined; let endIndex: number | undefined; - for (let i = 0; i < nodes.length; i++) { - let node = nodes[i]; - if (node.type === "heading") { - let stringified: string = mdastToString(node); - let match = stringified.toLowerCase().match(/(major|minor|patch)/); - if (match !== null) { - let level = BumpLevels[match[0] as "major" | "minor" | "patch"]; - highestLevel = Math.max(level, highestLevel); - } - if (headingStartInfo === undefined && stringified === version) { - headingStartInfo = { - index: i, - depth: node.depth, - }; + // Iterate through each headings and code blocks (for skipping its contents) + const regex = /^(#{1,6})\s(.*)$|^(`{3,})/gm; + let match: RegExpExecArray | null; + while ((match = regex.exec(changelog)) != null) { + // Skip over code blocks so we don't match any headings inside of them + if (match[3]) { + const endOfCodeBlockRegex = new RegExp(`^${match[3]}`, "gm"); + endOfCodeBlockRegex.lastIndex = regex.lastIndex; + const endMatch = endOfCodeBlockRegex.exec(changelog); + if (endMatch) { + // Start next search for headings after the end of the code block + regex.lastIndex = endOfCodeBlockRegex.lastIndex; continue; - } - if ( - endIndex === undefined && - headingStartInfo !== undefined && - headingStartInfo.depth === node.depth - ) { - endIndex = i; + } else { + // Can't find end of code block, probably malformed break; } } + + const headingDepth = match[1].length; + const headingText = match[2].trim(); + + // Search for the highest bump level in the entire changelog + const levelMatch = /(major|minor|patch)/.exec(headingText.toLowerCase()); + if (levelMatch != null) { + const level = BumpLevels[levelMatch[0] as "major" | "minor" | "patch"]; + highestLevel = Math.max(level, highestLevel); + } + + // Search for heading of the entry + if (headingText === version) { + headingStartInfo = { index: regex.lastIndex, depth: headingDepth }; + continue; + } + + // If we've found the entry heading, search for the closing heading with the same depth + if (headingStartInfo && headingDepth === headingStartInfo.depth) { + endIndex = match.index; + break; + } } - if (headingStartInfo) { - ast.children = ast.children.slice(headingStartInfo.index + 1, endIndex); - } + return { - content: unified().use(remarkStringify).stringify(ast), - highestLevel: highestLevel, + content: changelog.slice(headingStartInfo?.index, endIndex).trim(), + highestLevel, }; }