MCPcopy
hub / github.com/unpkg/unpkg / buildEsmModule

Function buildEsmModule

packages/unpkg-files/src/lib/esm-build-service.ts:179–235  ·  view source on GitHub ↗
(registry: string, request: BuildRequest)

Source from the content-addressed store, hash-verified

177}
178
179export async function buildEsmModule(registry: string, request: BuildRequest): Promise<BuildResult | null> {
180 let packageJsonFile = await getFile(registry, request.packageName, request.version, "/package.json");
181 if (packageJsonFile == null) {
182 return null;
183 }
184
185 let packageJson = JSON.parse(new TextDecoder().decode(packageJsonFile.body)) as PackageJson;
186 let filename = resolveBuildFilename(packageJson, request.filename, request.options);
187 if (filename == null) {
188 return null;
189 }
190 if (isUnsupportedSourceFile(filename)) {
191 throw new UnsupportedSourceTypeError(filename);
192 }
193
194 filename = await resolveExistingSourceFilename(registry, request.packageName, request.version, filename);
195 if (filename == null) {
196 return null;
197 }
198
199 let file = await getFile(registry, request.packageName, request.version, filename);
200 if (file == null || !isSupportedSourceFile(filename)) {
201 return null;
202 }
203
204 let code = new TextDecoder().decode(file.body);
205 let deps = Object.assign({}, packageJson.peerDependencies, packageJson.dependencies);
206 let transformed =
207 request.options.bundleMode === "none"
208 ? await transformSource(code, filename, request.options)
209 : await withPackageFileDirectory(registry, request.packageName, request.version, (packageDirectory) =>
210 bundleSource(packageDirectory, packageJson, request.packageName, request.version, filename, code, request.options)
211 );
212 let rewritten = await rewriteEsmImports(transformed.code, registry, request.options.origin, deps, request.options);
213 let buildKey = createBuildKey(request, filename);
214 let metadata: BuildMetadata = {
215 buildKey,
216 input: filename,
217 output: `/${request.packageName}@${request.version}${request.filename ?? ""}`,
218 packageName: request.packageName,
219 target: request.options.target,
220 version: request.version,
221 };
222
223 return {
224 code: rewritten,
225 headers: {
226 "Cache-Control": moduleCacheControl,
227 "Content-Type": "application/javascript; charset=utf-8",
228 "X-UNPKG-Bundle-Mode": request.options.bundleMode,
229 "X-UNPKG-Build-Key": buildKey,
230 "X-UNPKG-Build-Input": filename,
231 "X-UNPKG-Transformer": "esbuild",
232 },
233 metadata,
234 };
235}
236

Callers 1

handleRequest_Function · 0.90

Calls 10

getFileFunction · 0.90
withPackageFileDirectoryFunction · 0.90
resolveBuildFilenameFunction · 0.85
isUnsupportedSourceFileFunction · 0.85
isSupportedSourceFileFunction · 0.85
transformSourceFunction · 0.85
bundleSourceFunction · 0.85
rewriteEsmImportsFunction · 0.85
createBuildKeyFunction · 0.85

Tested by

no test coverage detected