fix(core): Normalize binary data handling across registries and add buffer helpers
This commit is contained in:
@@ -7,6 +7,7 @@ import { BaseRegistry } from '../core/classes.baseregistry.js';
|
||||
import type { RegistryStorage } from '../core/classes.registrystorage.js';
|
||||
import type { AuthManager } from '../core/classes.authmanager.js';
|
||||
import type { IRequestContext, IResponse, IAuthToken } from '../core/interfaces.core.js';
|
||||
import { isBinaryData, toBuffer } from '../core/helpers.buffer.js';
|
||||
import type {
|
||||
IComposerPackage,
|
||||
IComposerPackageMetadata,
|
||||
@@ -255,7 +256,7 @@ export class ComposerRegistry extends BaseRegistry {
|
||||
};
|
||||
}
|
||||
|
||||
if (!body || !Buffer.isBuffer(body)) {
|
||||
if (!body || !isBinaryData(body)) {
|
||||
return {
|
||||
status: 400,
|
||||
headers: {},
|
||||
@@ -263,8 +264,11 @@ export class ComposerRegistry extends BaseRegistry {
|
||||
};
|
||||
}
|
||||
|
||||
// Convert to Buffer for ZIP processing
|
||||
const zipData = toBuffer(body);
|
||||
|
||||
// Extract and validate composer.json from ZIP
|
||||
const composerJson = await extractComposerJsonFromZip(body);
|
||||
const composerJson = await extractComposerJsonFromZip(zipData);
|
||||
if (!composerJson || !validateComposerJson(composerJson)) {
|
||||
return {
|
||||
status: 400,
|
||||
@@ -292,13 +296,13 @@ export class ComposerRegistry extends BaseRegistry {
|
||||
}
|
||||
|
||||
// Calculate SHA-1 hash
|
||||
const shasum = await calculateSha1(body);
|
||||
const shasum = await calculateSha1(zipData);
|
||||
|
||||
// Generate reference (use version or commit hash)
|
||||
const reference = composerJson.source?.reference || version.replace(/[^a-zA-Z0-9.-]/g, '-');
|
||||
|
||||
// Store ZIP file
|
||||
await this.storage.putComposerPackageZip(vendorPackage, reference, body);
|
||||
await this.storage.putComposerPackageZip(vendorPackage, reference, zipData);
|
||||
|
||||
// Get or create metadata
|
||||
let metadata = await this.storage.getComposerPackageMetadata(vendorPackage);
|
||||
|
||||
Reference in New Issue
Block a user