FileServiceDeps
@forge/monorepo / backend/src / FileServiceDeps
Type Alias: FileServiceDeps
FileServiceDeps =
object
Defined in: backend/src/files/index.ts:128
Properties
authorization
readonlyauthorization:AuthorizationPolicy
Defined in: backend/src/files/index.ts:138
AC-3, enforced rather than asserted.
Required, not optional. Entitlement to a file is entitlement to its conversation, and a service that would run without a policy is a service someone constructs without one — at which point every attachment in the tenant is readable by every member of it. Tenant scoping alone is not AC-3.
clock?
readonlyoptionalclock?: () =>string
Defined in: backend/src/files/index.ts:140
Returns
string
content
readonlycontent:FileContentStore
Defined in: backend/src/files/index.ts:130
contentKey?
readonlyoptionalcontentKey?: () =>string
Defined in: backend/src/files/index.ts:149
Mints the opaque content key.
Injectable so it can be asserted, and not derived from the filename or the file id: a key a caller
can construct is a key a caller can guess. sanitizeMediaRefs in ShareFlow is the cautionary tale — its
workspace-prefix check was "the ONLY thing standing between a forged path and a signed URL to another
tenant's private object."
Returns
string
fileId?
readonlyoptionalfileId?: () =>string
Defined in: backend/src/files/index.ts:150
Returns
string
limits?
readonlyoptionallimits?:UploadLimits
Defined in: backend/src/files/index.ts:139
log?
readonlyoptionallog?: (message,detail?) =>void
Defined in: backend/src/files/index.ts:167
Parameters
message
string
detail?
Readonly<Record<string, unknown>>
Returns
void
metadata
readonlymetadata:FileMetadataStore
Defined in: backend/src/files/index.ts:129
requestExtraction?
readonlyoptionalrequestExtraction?: (input) =>Promise<unknown>
Defined in: backend/src/files/index.ts:162
Asks for text extraction after a successful upload (#131).
A function rather than the service itself, so files does not depend on documents — the dependency
runs the other way, and a cycle here would make attaching a file require the extraction pipeline to
exist. Optional: a deployment with no extraction is a valid one.
It is not awaited in a way that can fail the upload. AC-2 is that the user's next request is served without waiting, so a rejection here is logged and dropped — the file is stored, and the sweep will find an extraction that never got requested.
Parameters
input
fileId
mediaType
string
tenantId
Returns
Promise<unknown>