Compare commits

..

2 Commits

Author SHA1 Message Date
e14800f077 v4.4.1
Some checks failed
Default (tags) / security (push) Successful in 13s
Default (tags) / test (push) Failing after 35s
Default (tags) / release (push) Has been skipped
Default (tags) / metadata (push) Has been skipped
2025-11-16 23:22:58 +00:00
9f3503704b fix(core_node): Fix unix socket URL parsing and handling in CoreRequest 2025-11-16 23:22:58 +00:00
5 changed files with 23 additions and 6 deletions

View File

@@ -1,5 +1,12 @@
# Changelog
## 2025-11-16 - 4.4.1 - fix(core_node)
Fix unix socket URL parsing and handling in CoreRequest
- CoreRequest.parseUnixSocketUrl now strips http:// and https:// prefixes so it correctly parses both full URLs (e.g. http://unix:/path/to/socket:/route) and already-stripped unix: paths.
- Node.js CoreRequest now passes the original request URL to parseUnixSocketUrl instead of options.path, preventing incorrect socketPath/path extraction.
- Fixes connection failures when using unix socket URLs (for example when targeting Docker via http://unix:/var/run/docker.sock:/v1.24/...).
## 2025-11-16 - 4.4.0 - feat(core)
Add Bun and Deno runtime support, unify core loader, unix-socket support and cross-runtime streaming/tests

View File

@@ -1,6 +1,6 @@
{
"name": "@push.rocks/smartrequest",
"version": "4.4.0",
"version": "4.4.1",
"private": false,
"description": "A module for modern HTTP/HTTPS requests with support for form data, file uploads, JSON, binary data, streams, and more.",
"exports": {

View File

@@ -3,6 +3,6 @@
*/
export const commitinfo = {
name: '@push.rocks/smartrequest',
version: '4.4.0',
version: '4.4.1',
description: 'A module for modern HTTP/HTTPS requests with support for form data, file uploads, JSON, binary data, streams, and more.'
}

View File

@@ -17,10 +17,22 @@ export abstract class CoreRequest<
/**
* Parses socket path and route from unix socket URL
* Handles both full URLs (http://unix:/path/to/socket:/route) and pre-stripped paths (unix:/path/to/socket:/route)
*/
static parseUnixSocketUrl(url: string): { socketPath: string; path: string } {
// Strip http:// or https:// prefix if present
// This makes the method work with both full URLs and pre-stripped paths
let cleanUrl = url;
if (cleanUrl.startsWith('http://')) {
cleanUrl = cleanUrl.substring('http://'.length);
} else if (cleanUrl.startsWith('https://')) {
cleanUrl = cleanUrl.substring('https://'.length);
}
// Parse the socket path and HTTP path
// Format: unix:/path/to/socket:/route/path
const parseRegex = /(.*):(.*)/;
const result = parseRegex.exec(url);
const result = parseRegex.exec(cleanUrl);
return {
socketPath: result[1],
path: result[2],

View File

@@ -86,9 +86,7 @@ export class CoreRequest extends AbstractCoreRequest<
// Handle unix socket URLs
if (CoreRequest.isUnixSocket(this.url)) {
const { socketPath, path } = CoreRequest.parseUnixSocketUrl(
this.options.path,
);
const { socketPath, path } = CoreRequest.parseUnixSocketUrl(this.url);
this.options.socketPath = socketPath;
this.options.path = path;
}