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

Function syncPackage

tools/vcpm-sync/main.js:91–170  ·  view source on GitHub ↗
(token, pkg, progress)

Source from the content-addressed store, hash-verified

89}
90
91async function syncPackage(token, pkg, progress) {
92 progress(`${pkg} start`);
93 const json = await pacote.packument(pkg);
94
95 const createPackage = await fetch(
96 `${REG}/packages/package/legacy@${HOST}/${enc(pkg)}`,
97 {
98 method: 'PUT',
99 body: '{}',
100 headers: {
101 'content-type': 'application/json',
102 authorization: `Bearer ${token}`
103 }
104 }
105 );
106
107 if (createPackage.status > 399) {
108 progress(
109 `${pkg} saw ${createPackage.status}: ${await createPackage.text()}`
110 );
111 return;
112 }
113
114 const versions = Object.keys(json.versions);
115 const latest = json['dist-tags'].latest;
116
117 // Because entropic does not let users modify the latest tag, we have
118 // to be sure to mirror the version pointed at by "latest" last.
119 if (latest) {
120 const idx = versions.indexOf(latest);
121 const tmp = versions[versions.length - 1];
122 versions[versions.length - 1] = versions[idx];
123 versions[idx] = tmp;
124 }
125
126 if (createPackage.status === 200) {
127 return [
128 ...new Set(
129 versions
130 .map(v => Object.keys(json.versions[v].dependencies || {}))
131 .flat()
132 )
133 ];
134 }
135
136 if (createPackage.status > 399) {
137 progress(
138 `package failed with ${
139 createPackage.status
140 }: ${await createPackage.text()}`
141 );
142 return [
143 ...new Set(
144 versions
145 .map(v => Object.keys(json.versions[v].dependencies || {}))
146 .flat()
147 )
148 ];

Callers 1

mainFunction · 0.85

Calls 1

syncVersionFunction · 0.70

Tested by

no test coverage detected