(registry: string, request: BuildRequest)
| 177 | } |
| 178 | |
| 179 | export 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 |
no test coverage detected