Files
vtj/scripts/sync.mjs
“chenhuachun” 6e5f460091 ci: 👷commit
2025-02-20 10:31:46 +08:00

77 lines
1.5 KiB
JavaScript

import axios from 'axios';
const modules = [
'create-vtj',
'@vtj/cli',
'@vtj/utils',
'@vtj/icons',
'@vtj/ui',
'@vtj/charts',
'@vtj/designer',
'@vtj/matrials',
'@vtj/renderer',
'@vtj/local',
'@vtj/coder',
'@vtj/node',
'@vtj/base',
'@vtj/core',
'@vtj/web',
'@vtj/pro',
'@vtj/uni',
'@vtj/h5',
'@vtj/uni-app',
'@vtj/parser'
];
const maxTimes = 60;
let counter = 0;
async function sendSync(name) {
const res = await axios
.put(
`https://registry-direct.npmmirror.com/${name}/sync?sync_upstream=true`
)
.catch((e) => {
console.log('error', e.message);
return {};
});
if (res.data) {
const logId = res.data.logId || res.data.id;
counter = 0;
await checkDone(name, logId);
console.log('sendSync:', name, 'done!');
}
}
async function checkDone(name, logId) {
const res = await axios
.get(`https://registry-direct.npmmirror.com/${name}/sync/log/${logId}`)
.catch((e) => {
console.log('error:', e.message);
return {};
});
let syncDone = !!res.data?.syncDone;
return new Promise((resolve) => {
if (!syncDone) {
++counter;
if (counter > maxTimes) {
console.log('error:', `${logId} checkDone timeout`);
resolve(true);
return;
}
setTimeout(async () => {
syncDone = await checkDone(name, logId);
if (syncDone) {
resolve(true);
}
}, 1000);
} else {
resolve(true);
}
});
}
for (let mod of modules) {
await sendSync(mod);
}