MCPcopy
hub / github.com/entropic-dev/entropic / syncVersion

Function syncVersion

tools/vcpm-sync/main.js:14–89  ·  view source on GitHub ↗
(token, pkg, version, packumentVersion, progress)

Source from the content-addressed store, hash-verified

12const enc = encodeURIComponent;
13
14async function syncVersion(token, pkg, version, packumentVersion, progress) {
15 progress(`${pkg}@${version} start`);
16
17 const form = new FormData();
18
19 form.append(
20 'dependencies',
21 JSON.stringify(packumentVersion.dependencies || {})
22 );
23 form.append(
24 'devDependencies',
25 JSON.stringify(packumentVersion.devDependencies || {})
26 );
27 form.append(
28 'optionalDependencies',
29 JSON.stringify(packumentVersion.optionalDependencies || {})
30 );
31 form.append(
32 'peerDependencies',
33 JSON.stringify(packumentVersion.peerDependencies || {})
34 );
35 form.append(
36 'bundledDependencies',
37 JSON.stringify(packumentVersion.bundledDependencies || {})
38 );
39
40 const tarball = pacote.tarball.stream(`${pkg}@${version}`);
41 const untar = tar.t();
42
43 tarball.pipe(untar);
44 untar.on('entry', entry => {
45 const buf = [];
46 entry.on('data', chunk => buf.push(chunk));
47 entry.on('end', () => {
48 form.append('entry[]', Buffer.concat(buf), {
49 filename: enc(entry.path)
50 });
51 });
52 });
53
54 await new Promise((resolve, reject) => {
55 tarball.on('error', reject);
56 untar.on('end', resolve).on('error', reject);
57 });
58
59 const createPackageVersion = await fetch(
60 `${REG}/packages/package/legacy@${HOST}/${enc(pkg)}/versions/${enc(
61 version
62 )}`,
63 {
64 method: 'PUT',
65 body: form,
66 headers: {
67 authorization: `Bearer ${token}`,
68 ...form.getHeaders()
69 }
70 }
71 );

Callers 1

syncPackageFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected