Compare commits

..

4 Commits

Author SHA1 Message Date
32332309dc v4.3.8
Some checks failed
Default (tags) / security (push) Successful in 13s
Default (tags) / test (push) Failing after 37s
Default (tags) / release (push) Has been skipped
Default (tags) / metadata (push) Has been skipped
2025-11-16 21:55:40 +00:00
9d29bd92da fix(core): Ensure correct ArrayBuffer return, fix fetch body typing, reorganize node-only tests, and bump tsbuild devDependency 2025-11-16 21:55:40 +00:00
6d148bb59e 4.3.7
Some checks failed
Default (tags) / security (push) Successful in 10s
Default (tags) / test (push) Failing after 36s
Default (tags) / release (push) Has been skipped
Default (tags) / metadata (push) Has been skipped
2025-11-01 15:53:47 +00:00
e0f586693c fix(ci): Update dependencies, add deno.lock, and reorganize tests for browser and Node environments 2025-11-01 15:53:47 +00:00
13 changed files with 9607 additions and 3352 deletions

View File

@@ -1,5 +1,22 @@
# Changelog # Changelog
## 2025-11-16 - 4.3.8 - fix(core)
Ensure correct ArrayBuffer return, fix fetch body typing, reorganize node-only tests, and bump tsbuild devDependency
- core_node: Fix arrayBuffer() to ensure an ArrayBuffer is returned (avoid returning SharedArrayBuffer) to improve interoperability when consuming binary responses.
- core_fetch: Cast request body to BodyInit when assigning to fetch options and preserve duplex = 'half' for ReadableStream bodies to satisfy typings and streaming behavior.
- tests: Reorganize tests into Node-only variants (rename/remove multi-platform test files to test.*.node.ts) to separate platform-specific test coverage.
- chore: Bump devDependency @git.zone/tsbuild from ^2.6.8 to ^2.7.1.
## 2025-11-01 - 4.3.7 - fix(ci)
Update dependencies, add deno.lock, and reorganize tests for browser and Node environments
- Add deno.lock with resolved npm package versions for deterministic Deno/npm usage
- Bump @push.rocks/smartenv dependency to ^6.0.0
- Bump devDependencies: @git.zone/tsbuild -> ^2.6.8, @git.zone/tsrun -> ^1.6.2, @git.zone/tstest -> ^2.7.0
- Reorganize tests: move browser tests to chromium variants and add environment-specific test files for node, bun, deno (streaming, timeout, streamNode, etc.)
- Update package.json dependency ranges to match upgraded lockfile and test tooling
## 2025-10-26 - 4.3.6 - fix(ci) ## 2025-10-26 - 4.3.6 - fix(ci)
Use .npmrc for registry authentication in Gitea workflow and add conditional npmjs publish Use .npmrc for registry authentication in Gitea workflow and add conditional npmjs publish

7188
deno.lock generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{ {
"name": "@push.rocks/smartrequest", "name": "@push.rocks/smartrequest",
"version": "4.3.6", "version": "4.3.8",
"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": {
@@ -39,7 +39,7 @@
}, },
"homepage": "https://code.foss.global/push.rocks/smartrequest#readme", "homepage": "https://code.foss.global/push.rocks/smartrequest#readme",
"dependencies": { "dependencies": {
"@push.rocks/smartenv": "^5.0.13", "@push.rocks/smartenv": "^6.0.0",
"@push.rocks/smartpath": "^6.0.0", "@push.rocks/smartpath": "^6.0.0",
"@push.rocks/smartpromise": "^4.0.4", "@push.rocks/smartpromise": "^4.0.4",
"@push.rocks/smarturl": "^3.1.0", "@push.rocks/smarturl": "^3.1.0",
@@ -47,9 +47,9 @@
"form-data": "^4.0.4" "form-data": "^4.0.4"
}, },
"devDependencies": { "devDependencies": {
"@git.zone/tsbuild": "^2.6.4", "@git.zone/tsbuild": "^2.7.1",
"@git.zone/tsrun": "^1.3.3", "@git.zone/tsrun": "^1.6.2",
"@git.zone/tstest": "^2.3.4", "@git.zone/tstest": "^2.7.0",
"@types/node": "^22.9.0" "@types/node": "^22.9.0"
}, },
"files": [ "files": [

5734
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
import { tap, expect } from '@git.zone/tstest/tapbundle'; import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as fs from 'fs'; import * as fs from 'node:fs';
import { SmartRequest } from '../ts/index.js'; import { SmartRequest } from '../ts/index.js';
tap.test('should send a buffer using buffer() method', async () => { tap.test('should send a buffer using buffer() method', async () => {

View File

@@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@push.rocks/smartrequest', name: '@push.rocks/smartrequest',
version: '4.3.6', version: '4.3.8',
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

@@ -71,7 +71,7 @@ export class CoreRequest extends AbstractCoreRequest<
// Check for Buffer (Node.js polyfills in browser may provide this) // Check for Buffer (Node.js polyfills in browser may provide this)
(typeof Buffer !== 'undefined' && this.options.requestBody instanceof Buffer) (typeof Buffer !== 'undefined' && this.options.requestBody instanceof Buffer)
) { ) {
fetchOptions.body = this.options.requestBody; fetchOptions.body = this.options.requestBody as BodyInit;
// If streaming, we need to set duplex mode // If streaming, we need to set duplex mode
if (this.options.requestBody instanceof ReadableStream) { if (this.options.requestBody instanceof ReadableStream) {

View File

@@ -115,10 +115,12 @@ export class CoreResponse<T = any>
*/ */
async arrayBuffer(): Promise<ArrayBuffer> { async arrayBuffer(): Promise<ArrayBuffer> {
const buffer = await this.collectBody(); const buffer = await this.collectBody();
return buffer.buffer.slice( const sliced = buffer.buffer.slice(
buffer.byteOffset, buffer.byteOffset,
buffer.byteOffset + buffer.byteLength, buffer.byteOffset + buffer.byteLength,
); );
// Ensure we return ArrayBuffer, not SharedArrayBuffer
return sliced instanceof ArrayBuffer ? sliced : new ArrayBuffer(0);
} }
/** /**