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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy