Compare commits

...

2 Commits

Author SHA1 Message Date
1305b92ebe v4.4.2
Some checks failed
Default (tags) / security (push) Successful in 5s
Default (tags) / test (push) Failing after 1m41s
Default (tags) / release (push) Has been skipped
Default (tags) / metadata (push) Has been skipped
2025-11-16 23:41:24 +00:00
8b52ca1021 fix(core_base/request): Strip unix: prefix when parsing unix socket URLs so socketPath is a clean filesystem path 2025-11-16 23:41:24 +00:00
7 changed files with 19 additions and 6 deletions

View File

@@ -1,5 +1,12 @@
# Changelog # Changelog
## 2025-11-16 - 4.4.2 - fix(core_base/request)
Strip 'unix:' prefix when parsing unix socket URLs so socketPath is a clean filesystem path
- CoreRequest.parseUnixSocketUrl now removes a leading 'unix:' prefix and returns socketPath as a filesystem path (e.g., /var/run/docker.sock)
- Updated tests for Bun, Deno and Node to expect socketPath without the 'unix:' prefix
- Adjusted comments/documentation in core_base/request.ts to clarify returned socketPath format
## 2025-11-16 - 4.4.1 - fix(core_node) ## 2025-11-16 - 4.4.1 - fix(core_node)
Fix unix socket URL parsing and handling in CoreRequest Fix unix socket URL parsing and handling in CoreRequest

View File

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

View File

@@ -25,7 +25,7 @@ tap.test('bun: should detect unix socket URLs correctly', async () => {
tap.test('bun: should parse unix socket URLs correctly', async () => { tap.test('bun: should parse unix socket URLs correctly', async () => {
const result = CoreRequest.parseUnixSocketUrl('unix:/var/run/docker.sock:/v1.24/version'); const result = CoreRequest.parseUnixSocketUrl('unix:/var/run/docker.sock:/v1.24/version');
expect(result.socketPath).toEqual('unix:/var/run/docker.sock'); expect(result.socketPath).toEqual('/var/run/docker.sock');
expect(result.path).toEqual('/v1.24/version'); expect(result.path).toEqual('/v1.24/version');
}); });

View File

@@ -25,7 +25,7 @@ tap.test('deno: should detect unix socket URLs correctly', async () => {
tap.test('deno: should parse unix socket URLs correctly', async () => { tap.test('deno: should parse unix socket URLs correctly', async () => {
const result = CoreRequest.parseUnixSocketUrl('unix:/var/run/docker.sock:/v1.24/version'); const result = CoreRequest.parseUnixSocketUrl('unix:/var/run/docker.sock:/v1.24/version');
expect(result.socketPath).toEqual('unix:/var/run/docker.sock'); expect(result.socketPath).toEqual('/var/run/docker.sock');
expect(result.path).toEqual('/v1.24/version'); expect(result.path).toEqual('/v1.24/version');
}); });

View File

@@ -26,7 +26,7 @@ tap.test('node: should detect unix socket URLs correctly', async () => {
tap.test('node: should parse unix socket URLs correctly', async () => { tap.test('node: should parse unix socket URLs correctly', async () => {
const result = CoreRequest.parseUnixSocketUrl('unix:/var/run/docker.sock:/v1.24/version'); const result = CoreRequest.parseUnixSocketUrl('unix:/var/run/docker.sock:/v1.24/version');
expect(result.socketPath).toEqual('unix:/var/run/docker.sock'); expect(result.socketPath).toEqual('/var/run/docker.sock');
expect(result.path).toEqual('/v1.24/version'); expect(result.path).toEqual('/v1.24/version');
}); });

View File

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

View File

@@ -18,6 +18,7 @@ export abstract class CoreRequest<
/** /**
* Parses socket path and route from unix socket URL * 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) * Handles both full URLs (http://unix:/path/to/socket:/route) and pre-stripped paths (unix:/path/to/socket:/route)
* Returns clean file system path for socketPath (e.g., /var/run/docker.sock)
*/ */
static parseUnixSocketUrl(url: string): { socketPath: string; path: string } { static parseUnixSocketUrl(url: string): { socketPath: string; path: string } {
// Strip http:// or https:// prefix if present // Strip http:// or https:// prefix if present
@@ -29,8 +30,13 @@ export abstract class CoreRequest<
cleanUrl = cleanUrl.substring('https://'.length); cleanUrl = cleanUrl.substring('https://'.length);
} }
// Strip unix: prefix if present to get clean file system path
if (cleanUrl.startsWith('unix:')) {
cleanUrl = cleanUrl.substring('unix:'.length);
}
// Parse the socket path and HTTP path // Parse the socket path and HTTP path
// Format: unix:/path/to/socket:/route/path // Format: /path/to/socket:/route/path
const parseRegex = /(.*):(.*)/; const parseRegex = /(.*):(.*)/;
const result = parseRegex.exec(cleanUrl); const result = parseRegex.exec(cleanUrl);
return { return {