node-karin 1.12.0 → 1.12.1
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/CHANGELOG.md +7 -0
- package/dist/index.d.ts +22 -14
- package/dist/index.mjs +49 -6
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# 更新日志
|
|
2
2
|
|
|
3
|
+
## [1.12.1](https://github.com/KarinJS/Karin/compare/core-v1.12.0...core-v1.12.1) (2025-10-17)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### 🐛 Bug Fixes
|
|
7
|
+
|
|
8
|
+
* Support all semantic versioning formats in changelog parser ([#566](https://github.com/KarinJS/Karin/issues/566)) ([de6b397](https://github.com/KarinJS/Karin/commit/de6b397ebb9fdba85d8b5999a96ed29bb1da9dd8))
|
|
9
|
+
|
|
3
10
|
## [1.12.0](https://github.com/KarinJS/Karin/compare/core-v1.11.6...core-v1.12.0) (2025-10-15)
|
|
4
11
|
|
|
5
12
|
|
package/dist/index.d.ts
CHANGED
|
@@ -8327,28 +8327,36 @@ declare const lock: {
|
|
|
8327
8327
|
|
|
8328
8328
|
/**
|
|
8329
8329
|
* 提取指定版本号的更新日志
|
|
8330
|
-
* @param version
|
|
8331
|
-
* @param data `CHANGELOG.md
|
|
8332
|
-
* @returns
|
|
8330
|
+
* @param version 版本号,可包含预发布/构建元数据(如 `-beta`)
|
|
8331
|
+
* @param data `CHANGELOG.md` 文件内容
|
|
8332
|
+
* @returns 命中的更新日志字符串;无法定位返回 `null`
|
|
8333
|
+
* @description
|
|
8334
|
+
* - 先将版本规范化为稳定版 `x.y.z`;
|
|
8335
|
+
* - 不存在时按新 -> 旧顺序回退到不超过目标稳定版的最新版本。
|
|
8333
8336
|
*/
|
|
8334
8337
|
declare const log: (version: string, data: string) => string | null;
|
|
8335
8338
|
/**
|
|
8336
|
-
*
|
|
8339
|
+
* 从指定版本开始提取连续的更新日志
|
|
8337
8340
|
* @param version 起始版本号
|
|
8338
|
-
* @param data `CHANGELOG.md
|
|
8339
|
-
* @param length
|
|
8340
|
-
* @param reverse
|
|
8341
|
+
* @param data `CHANGELOG.md` 文件内容
|
|
8342
|
+
* @param length 提取条数,默认为 1
|
|
8343
|
+
* @param reverse 是否反向提取;`false` 向后,`true` 向前
|
|
8344
|
+
* @returns 拼接后的更新日志字符串;找不到起始版本返回空字符串
|
|
8345
|
+
* @description
|
|
8346
|
+
* - 起始版本会规范化并回退到不超过目标稳定版的最新版本;
|
|
8347
|
+
* - 切片范围将做边界裁剪以避免越界。
|
|
8341
8348
|
*/
|
|
8342
8349
|
declare const logs: (version: string, data: string, length?: number, reverse?: boolean) => string;
|
|
8343
8350
|
/**
|
|
8344
|
-
*
|
|
8345
|
-
* @param data `CHANGELOG.md
|
|
8346
|
-
* @param startVersion
|
|
8347
|
-
* @param endVersion
|
|
8351
|
+
* 提取指定版本区间的更新日志
|
|
8352
|
+
* @param data `CHANGELOG.md` 文件内容
|
|
8353
|
+
* @param startVersion 起始版本号(较旧)
|
|
8354
|
+
* @param endVersion 结束版本号(较新)
|
|
8355
|
+
* @returns 拼接后的更新日志字符串;若任一版本无法定位返回空字符串
|
|
8348
8356
|
* @description
|
|
8349
|
-
* -
|
|
8350
|
-
* -
|
|
8351
|
-
* -
|
|
8357
|
+
* - CHANGELOG 的版本排序约定为从新到旧;
|
|
8358
|
+
* - 若传入版本不存在,将回退到不超过目标稳定版的最新版本;
|
|
8359
|
+
* - 当 `start > end` 时会自动调整为有效区间。
|
|
8352
8360
|
*/
|
|
8353
8361
|
declare const range: (data: string, startVersion: string, endVersion: string) => string;
|
|
8354
8362
|
/**
|
package/dist/index.mjs
CHANGED
|
@@ -1960,11 +1960,15 @@ __export(changelog_exports, {
|
|
|
1960
1960
|
parseChangelog: () => parseChangelog,
|
|
1961
1961
|
range: () => range
|
|
1962
1962
|
});
|
|
1963
|
-
var log, logs, range, parseChangelog;
|
|
1963
|
+
var escapeRegex, log, logs, range, parseChangelog, normalizeStableVersion, parseSemverParts, compareSemver, findFallbackVersionKey;
|
|
1964
1964
|
var init_changelog = __esm({
|
|
1965
1965
|
"src/utils/fs/changelog.ts"() {
|
|
1966
|
+
escapeRegex = (str) => {
|
|
1967
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
1968
|
+
};
|
|
1966
1969
|
log = (version2, data) => {
|
|
1967
|
-
const
|
|
1970
|
+
const escapedVersion = escapeRegex(version2);
|
|
1971
|
+
const regex = new RegExp(`## \\[${escapedVersion}\\](.|\\n)*?(?=## \\[|$)`, "g");
|
|
1968
1972
|
const match = data.match(regex);
|
|
1969
1973
|
return match ? match[0] : null;
|
|
1970
1974
|
};
|
|
@@ -1974,17 +1978,24 @@ var init_changelog = __esm({
|
|
|
1974
1978
|
}
|
|
1975
1979
|
const list2 = parseChangelog(data);
|
|
1976
1980
|
const keys = Object.keys(list2);
|
|
1977
|
-
const
|
|
1981
|
+
const startKey = findFallbackVersionKey(keys, version2);
|
|
1982
|
+
if (!startKey) return "";
|
|
1983
|
+
const index5 = keys.indexOf(startKey);
|
|
1978
1984
|
const start3 = reverse ? index5 - length : index5;
|
|
1979
1985
|
const end = reverse ? index5 : index5 + length;
|
|
1980
|
-
const
|
|
1986
|
+
const sliceStart = Math.max(0, start3);
|
|
1987
|
+
const sliceEnd = Math.min(keys.length, end);
|
|
1988
|
+
const versions = keys.slice(sliceStart, sliceEnd).map((key) => list2[key] ? list2[key] : "");
|
|
1981
1989
|
return versions.join("");
|
|
1982
1990
|
};
|
|
1983
1991
|
range = (data, startVersion, endVersion) => {
|
|
1984
1992
|
const list2 = parseChangelog(data);
|
|
1985
1993
|
const keys = Object.keys(list2);
|
|
1986
|
-
const
|
|
1987
|
-
const
|
|
1994
|
+
const startKey = findFallbackVersionKey(keys, startVersion);
|
|
1995
|
+
const endKey = findFallbackVersionKey(keys, endVersion);
|
|
1996
|
+
if (!startKey || !endKey) return "";
|
|
1997
|
+
const start3 = keys.indexOf(startKey);
|
|
1998
|
+
const end = keys.indexOf(endKey);
|
|
1988
1999
|
if (start3 > end) {
|
|
1989
2000
|
const versions2 = keys.slice(end, start3).map((key) => list2[key] ? list2[key] : "");
|
|
1990
2001
|
return versions2.join("");
|
|
@@ -2002,6 +2013,38 @@ var init_changelog = __esm({
|
|
|
2002
2013
|
}
|
|
2003
2014
|
return changelog;
|
|
2004
2015
|
};
|
|
2016
|
+
normalizeStableVersion = (ver) => {
|
|
2017
|
+
const m = ver.match(/(\d+)\.(\d+)\.(\d+)/);
|
|
2018
|
+
return m ? `${m[1]}.${m[2]}.${m[3]}` : ver;
|
|
2019
|
+
};
|
|
2020
|
+
parseSemverParts = (ver) => {
|
|
2021
|
+
const v = normalizeStableVersion(ver);
|
|
2022
|
+
const m = v.match(/^(\d+)\.(\d+)\.(\d+)$/);
|
|
2023
|
+
return m ? [parseInt(m[1], 10), parseInt(m[2], 10), parseInt(m[3], 10)] : null;
|
|
2024
|
+
};
|
|
2025
|
+
compareSemver = (a, b) => {
|
|
2026
|
+
const pa = parseSemverParts(a);
|
|
2027
|
+
const pb = parseSemverParts(b);
|
|
2028
|
+
if (!pa && !pb) return 0;
|
|
2029
|
+
if (!pa) return -1;
|
|
2030
|
+
if (!pb) return 1;
|
|
2031
|
+
if (pa[0] !== pb[0]) return pa[0] - pb[0];
|
|
2032
|
+
if (pa[1] !== pb[1]) return pa[1] - pb[1];
|
|
2033
|
+
if (pa[2] !== pb[2]) return pa[2] - pb[2];
|
|
2034
|
+
return 0;
|
|
2035
|
+
};
|
|
2036
|
+
findFallbackVersionKey = (keys, input2) => {
|
|
2037
|
+
if (keys.includes(input2)) return input2;
|
|
2038
|
+
const target = normalizeStableVersion(input2);
|
|
2039
|
+
if (keys.includes(target)) return target;
|
|
2040
|
+
for (const key of keys) {
|
|
2041
|
+
const kval = normalizeStableVersion(key);
|
|
2042
|
+
if (compareSemver(kval, target) <= 0) {
|
|
2043
|
+
return key;
|
|
2044
|
+
}
|
|
2045
|
+
}
|
|
2046
|
+
return null;
|
|
2047
|
+
};
|
|
2005
2048
|
}
|
|
2006
2049
|
});
|
|
2007
2050
|
|