Skip to main content

@idpass/data-collect-core / AttachmentService

Class: AttachmentService

Defined in: services/AttachmentService.ts:59

Service for managing file attachments associated with entities.

Wraps an AttachmentStore with business logic including:

  • SHA-256 hash computation for content integrity verification
  • File size validation against configurable limits
  • MIME type validation against configurable allow-lists
  • Sync status tracking for offline-first upload workflows

Constructors​

Constructor​

new AttachmentService(store, options?): AttachmentService

Defined in: services/AttachmentService.ts:64

Parameters​

store​

AttachmentStore

options?​

AttachmentServiceOptions

Returns​

AttachmentService

Methods​

computeHash()​

computeHash(data): Promise<string>

Defined in: services/AttachmentService.ts:76

Compute a SHA-256 hash of the given data.

Uses the Web Crypto API (SubtleCrypto) when available (browser and Node 22+), falling back to Node.js crypto module for server environments.

Parameters​

data​

ArrayBuffer

Returns​

Promise<string>


validateFileSize()​

validateFileSize(sizeBytes): void

Defined in: services/AttachmentService.ts:96

Validate file size against the configured maximum.

Parameters​

sizeBytes​

number

Returns​

void

Throws​

If the file exceeds the maximum allowed size.


validateMimeType()​

validateMimeType(mimeType): void

Defined in: services/AttachmentService.ts:111

Validate MIME type against the configured allow-list.

Parameters​

mimeType​

string

Returns​

void

Throws​

If the MIME type is not in the allowed list.


saveAttachment()​

saveAttachment(params, data): Promise<AttachmentMetadata>

Defined in: services/AttachmentService.ts:127

Save an attachment with automatic hash computation and validation.

Parameters​

params​

Attachment parameters (guid, entityGuid, filename, mimeType, tenantId)

guid​

string

entityGuid​

string

filename​

string

mimeType​

string

tenantId​

string

data​

ArrayBuffer

Binary content of the attachment

Returns​

Promise<AttachmentMetadata>

The saved AttachmentMetadata with computed hash

Throws​

If file size or MIME type validation fails


getAttachment()​

getAttachment(guid): Promise<{ metadata: AttachmentMetadata; data: ArrayBuffer; } | null>

Defined in: services/AttachmentService.ts:165

Get an attachment's metadata and binary data by GUID.

Parameters​

guid​

string

Returns​

Promise<{ metadata: AttachmentMetadata; data: ArrayBuffer; } | null>


getAttachmentMetadata()​

getAttachmentMetadata(guid): Promise<AttachmentMetadata | null>

Defined in: services/AttachmentService.ts:172

Get only the metadata for an attachment (without loading binary data).

Parameters​

guid​

string

Returns​

Promise<AttachmentMetadata | null>


listAttachments()​

listAttachments(entityGuid): Promise<AttachmentMetadata[]>

Defined in: services/AttachmentService.ts:179

List all attachments for a specific entity.

Parameters​

entityGuid​

string

Returns​

Promise<AttachmentMetadata[]>


deleteAttachment()​

deleteAttachment(guid): Promise<void>

Defined in: services/AttachmentService.ts:186

Delete an attachment and its binary data.

Parameters​

guid​

string

Returns​

Promise<void>


getPendingAttachments()​

getPendingAttachments(tenantId): Promise<AttachmentMetadata[]>

Defined in: services/AttachmentService.ts:194

Get all attachments with 'pending' sync status for a tenant.

Parameters​

tenantId​

string

Returns​

Promise<AttachmentMetadata[]>


updateSyncStatus()​

updateSyncStatus(guid, status): Promise<void>

Defined in: services/AttachmentService.ts:201

Update the sync status of an attachment.

Parameters​

guid​

string

status​

"pending" | "uploaded" | "failed"

Returns​

Promise<void>