Skip to content

Commit a9f94b2

Browse files
author
Thomasr
committed
Fixed /api/npm/package/* endpoint response type
1 parent 5609af5 commit a9f94b2

File tree

3 files changed

+13
-10
lines changed

3 files changed

+13
-10
lines changed

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/npm/PrivateNpmRegistryController.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,20 +40,23 @@ public Mono<ResponseEntity<Resource>> getNpmPackageAsset(String path) {
4040

4141
@NotNull
4242
private Mono<ResponseEntity<Resource>> forwardToNodeService(String path, String prefix) {
43+
String withoutLeadingSlash = path.startsWith("/") ? path.substring(1) : path;
4344
return sessionUserService.getVisitorOrgMemberCache().flatMap(orgMember -> organizationService.getOrgCommonSettings(orgMember.getOrgId()).flatMap(organizationCommonSettings -> {
4445
Map<String, Object> config = Map.of("npmRegistries", organizationCommonSettings.get("npmRegistries"), "workspaceId", orgMember.getOrgId());
4546
return WebClientBuildHelper.builder()
4647
.systemProxy()
4748
.build()
4849
.post()
49-
.uri(nodeServerHelper.createUri(prefix + "/" + path))
50+
.uri(nodeServerHelper.createUri(prefix + "/" + withoutLeadingSlash))
5051
.contentType(MediaType.APPLICATION_JSON)
5152
.body(BodyInserters.fromValue(config))
5253
.retrieve().toEntity(Resource.class)
53-
.map(response -> ResponseEntity
54-
.status(response.getStatusCode())
55-
.headers(response.getHeaders())
56-
.body(response.getBody()));
54+
.map(response -> {
55+
return ResponseEntity
56+
.status(response.getStatusCode())
57+
.headers(response.getHeaders())
58+
.body(response.getBody());
59+
});
5760
}));
5861
}
5962
}

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/npm/PrivateNpmRegistryEndpoint.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public interface PrivateNpmRegistryEndpoint {
2121
summary = "Get NPM registry Metadata",
2222
description = "Retrieve the metadata of private NPM registry package."
2323
)
24-
// @GetMapping("/registry/{name}")
24+
@GetMapping("/registry/{name}")
2525
public Mono<ResponseEntity<Resource>> getNpmPackageMeta(@PathVariable String name);
2626

2727
@Operation(
@@ -30,6 +30,6 @@ public interface PrivateNpmRegistryEndpoint {
3030
summary = "Get NPM registry asset",
3131
description = "Retrieve the asset of private NPM registry package."
3232
)
33-
// @GetMapping("/package/{path}")
33+
@GetMapping("/package/{*path}")
3434
public Mono<ResponseEntity<Resource>> getNpmPackageAsset(@PathVariable String path);
3535
}

server/node-service/src/controllers/npm.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import fs from "fs/promises";
33
import { spawn } from "child_process";
44
import { Request as ServerRequest, Response as ServerResponse } from "express";
55
import { NpmRegistryService, NpmRegistryConfigEntry, NpmRegistryConfig } from "../services/npmRegistry";
6-
6+
import {default as pathlib} from 'path';
77

88
type RequestConfig = {
99
workspaceId: string;
@@ -217,7 +217,7 @@ async function fetchPackageFileInner(request: ServerRequest, response: ServerRes
217217
logger.info(`Fetching tarball: ${tarball}`);
218218
await fetchAndUnpackTarball(tarball, packageId, packageVersion, registry, baseDir);
219219
} catch (error) {
220-
logger.error(`Error fetching package: ${error} ${(error as {stack: string}).stack}`);
220+
logger.error(`Error fetching package: ${error} ${(error as any)?.stack}`);
221221
return response.status(500).send("Internal server error");
222222
} finally {
223223
PackageProcessingQueue.resolve(packageId);
@@ -232,7 +232,7 @@ async function fetchPackageFileInner(request: ServerRequest, response: ServerRes
232232
return response.sendFile(`${packageBaseDir}/index.mjs`);
233233
}
234234

235-
return response.sendFile(`${packageBaseDir}/${file}`);
235+
return response.sendFile(pathlib.resolve(`${packageBaseDir}/${file}`));
236236
} catch (error) {
237237
logger.error(`Error fetching package file: ${error} ${(error as {stack: string})?.stack?.toString()}`);
238238
response.status(500).send("Internal server error");

0 commit comments

Comments
 (0)