@dsh-plugin/dsh-synapse 0.1.0-dev.41044228975 → 0.1.0-dev.41044818627
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/README.md +1 -1
- package/package.json +1 -1
- package/scripts/dump-npm-latest.mjs +29 -10
package/README.md
CHANGED
|
@@ -126,7 +126,7 @@ node scripts/model-smoke.mjs --rerank
|
|
|
126
126
|
|
|
127
127
|
- PR 和手动运行:执行 Linux、Windows、macOS 的类型检查、构建、测试与打包检查。
|
|
128
128
|
- 推送 `main`:三平台检查全部成功后,将 `X.Y.Z-dev.<GitHub run ID>` 发布到 npm 的 `next` 标签;重跑已发布的同一版本会跳过发布。
|
|
129
|
-
- 推送 `vX.Y.Z` 标签:必须与 `package.json` 的稳定版本号完全一致,检查成功后发布到 `latest`,并将 npm 元数据写入 `npm-latest.json`、提交回 `main
|
|
129
|
+
- 推送 `vX.Y.Z` 标签:必须与 `package.json` 的稳定版本号完全一致,检查成功后发布到 `latest`,并将 npm 元数据写入 `npm-latest.json`、提交回 `main`;遇到 registry 处理延迟时,每 30 秒重试,最多重试 10 次,并核对目标版本。
|
|
130
130
|
|
|
131
131
|
开发版只在发布任务的临时检出中修改 `package.json` 和锁文件;仓库保持稳定的 `X.Y.Z` 基础版本。正式发布前先更新两个文件中的版本号,再推送对应 Git 标签。
|
|
132
132
|
|
package/package.json
CHANGED
|
@@ -1,19 +1,38 @@
|
|
|
1
1
|
import { readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { setTimeout } from 'node:timers/promises';
|
|
2
3
|
|
|
3
4
|
// 与其他 DSH 插件保持一致:正式版发布后将 registry 的 latest 元数据回写仓库。
|
|
4
5
|
const registry = (process.env.NPM_REGISTRY ?? 'https://registry.npmjs.org').replace(/\/+$/, '');
|
|
5
6
|
const pkg = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'));
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
const expected = process.env.EXPECTED_VERSION;
|
|
8
|
+
const attempts = expected ? 11 : 1;
|
|
9
|
+
let metadata;
|
|
10
|
+
for (let attempt = 1; attempt <= attempts; attempt++) {
|
|
11
|
+
try {
|
|
12
|
+
const response = await fetch(`${registry}/${encodeURIComponent(pkg.name)}`, {
|
|
13
|
+
signal: AbortSignal.timeout(30_000),
|
|
14
|
+
headers: { 'cache-control': 'no-cache' },
|
|
15
|
+
});
|
|
16
|
+
if (!response.ok) {
|
|
17
|
+
throw new Error(`Registry request failed: ${response.status} ${response.statusText} (${registry})`);
|
|
18
|
+
}
|
|
19
|
+
const candidate = await response.json();
|
|
20
|
+
const latest = candidate['dist-tags']?.latest;
|
|
21
|
+
if (!latest) throw new Error(`${pkg.name}: no latest dist-tag on ${registry}`);
|
|
22
|
+
if (expected && latest !== expected) {
|
|
23
|
+
throw new Error(`${pkg.name}: latest is ${latest}; waiting for ${expected}`);
|
|
24
|
+
}
|
|
25
|
+
if (!candidate.versions?.[latest]) throw new Error(`${pkg.name}: metadata for ${latest} missing on ${registry}`);
|
|
26
|
+
metadata = candidate;
|
|
27
|
+
break;
|
|
28
|
+
} catch (error) {
|
|
29
|
+
if (attempt === attempts) throw error;
|
|
30
|
+
console.warn(`${error.message}; retry ${attempt}/${attempts - 1} in 30s`);
|
|
31
|
+
await setTimeout(30_000);
|
|
32
|
+
}
|
|
11
33
|
}
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
if (!latest) throw new Error(`${pkg.name}: no latest dist-tag on ${registry}`);
|
|
15
|
-
const version = metadata.versions?.[latest];
|
|
16
|
-
if (!version) throw new Error(`${pkg.name}: metadata for ${latest} missing on ${registry}`);
|
|
34
|
+
const latest = metadata['dist-tags'].latest;
|
|
35
|
+
const version = metadata.versions[latest];
|
|
17
36
|
|
|
18
37
|
// 不包含执行时间;同一正式版本重复运行不会产生空提交。
|
|
19
38
|
const dump = {
|