@lssm/lib.files 0.0.0-canary-20251210171026 → 0.0.0-canary-20251212210835
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/docs/files.docblock.js +51 -0
- package/dist/docs/index.js +1 -0
- package/dist/index.js +1 -1
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -162,7 +162,7 @@ const attachments = await attachmentService.list({
|
|
|
162
162
|
This module integrates with:
|
|
163
163
|
|
|
164
164
|
- `@lssm/lib.identity-rbac` - Access control
|
|
165
|
-
- `@lssm/
|
|
165
|
+
- `@lssm/module.audit-trail` - File operations audit
|
|
166
166
|
|
|
167
167
|
## Schema Contribution
|
|
168
168
|
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import{registerDocBlocks as e}from"@lssm/lib.contracts/docs";e([{id:`docs.files.attachments`,title:`Files, Versions & Attachments`,summary:`Spec-first file management with storage adapters, versioning, presigned URLs, and polymorphic attachments for any entity.`,kind:`reference`,visibility:`public`,route:`/docs/files/attachments`,tags:[`files`,`attachments`,`storage`,`versions`],body:`## Capabilities
|
|
2
|
+
|
|
3
|
+
- **Entities**: File, FileVersion, Attachment, UploadSession with retention, checksum, ACLs.
|
|
4
|
+
- **Contracts**: upload/update/delete/list/get files; presigned upload/download; version create/list; attach/detach/list attachments.
|
|
5
|
+
- **Storage**: pluggable adapters (Local, S3 placeholder + interface), in-memory for tests.
|
|
6
|
+
- **Events**: file.uploaded/deleted, attachment.added/removed (see events export).
|
|
7
|
+
|
|
8
|
+
## Usage
|
|
9
|
+
|
|
10
|
+
1) Compose schema
|
|
11
|
+
- Include \`filesSchemaContribution\` in your schema composition.
|
|
12
|
+
|
|
13
|
+
2) Register contracts/events
|
|
14
|
+
- Import contracts and events from \`@lssm/lib.files\` in your spec registry.
|
|
15
|
+
|
|
16
|
+
3) Wire storage
|
|
17
|
+
- Provide a \`StorageAdapter\` implementation (local/in-memory or S3 via custom impl).
|
|
18
|
+
- Use \`createStorageAdapter\` with config to instantiate.
|
|
19
|
+
|
|
20
|
+
4) Attach to domain entities
|
|
21
|
+
- Use \`attachment.attach\` with \`entityType/entityId\` to link files to deals, orders, runs, etc.
|
|
22
|
+
|
|
23
|
+
## Example
|
|
24
|
+
|
|
25
|
+
\`\`\`ts
|
|
26
|
+
import {
|
|
27
|
+
UploadFileContract,
|
|
28
|
+
AttachFileContract,
|
|
29
|
+
InMemoryStorageAdapter,
|
|
30
|
+
} from '@lssm/lib.files';
|
|
31
|
+
|
|
32
|
+
// storage
|
|
33
|
+
const storage = new InMemoryStorageAdapter();
|
|
34
|
+
|
|
35
|
+
// upload
|
|
36
|
+
const file = await storage.upload({
|
|
37
|
+
path: 'org-1/reports/r1.pdf',
|
|
38
|
+
content: Buffer.from(pdfBytes),
|
|
39
|
+
mimeType: 'application/pdf',
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// attach
|
|
43
|
+
await AttachFileContract; // register in spec to enable attach flows
|
|
44
|
+
\`\`\`,
|
|
45
|
+
|
|
46
|
+
## Guardrails
|
|
47
|
+
|
|
48
|
+
- Enforce size/MIME limits in your handlers; avoid storing PII in paths.
|
|
49
|
+
- Keep \`orgId\` scoped for multi-tenant isolation; prefer presigned URLs for public delivery.
|
|
50
|
+
- Persist checksums for integrity; emit audit + events for access/retention changes.
|
|
51
|
+
`}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./files.docblock.js";
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{AttachmentAttachedEvent as e,AttachmentDetachedEvent as t,FileDeletedEvent as n,FileEvents as r,FileUpdatedEvent as i,FileUploadedEvent as a,FileVersionCreatedEvent as o,UploadSessionCompletedEvent as s,UploadSessionStartedEvent as c}from"./events.js";import{AttachmentEntity as l,FileEntity as u,FileStatusEnum as d,FileVersionEntity as f,StorageProviderEnum as p,UploadSessionEntity as m,fileEntities as h,filesSchemaContribution as g}from"./entities/index.js";import{AttachFileContract as _,AttachmentModel as v,CreatePresignedUrlContract as y,CreateVersionContract as b,DeleteFileContract as x,DetachFileContract as S,FileModel as C,FileVersionModel as w,GetDownloadUrlContract as T,GetFileContract as E,GetVersionsContract as D,ListAttachmentsContract as O,ListFilesContract as k,PresignedUrlModel as A,UpdateFileContract as j,UploadFileContract as M}from"./contracts/index.js";import{InMemoryStorageAdapter as N,LocalStorageAdapter as P,S3StorageAdapter as F,createStorageAdapter as I}from"./storage/index.js";export{_ as AttachFileContract,e as AttachmentAttachedEvent,t as AttachmentDetachedEvent,l as AttachmentEntity,v as AttachmentModel,y as CreatePresignedUrlContract,b as CreateVersionContract,x as DeleteFileContract,S as DetachFileContract,n as FileDeletedEvent,u as FileEntity,r as FileEvents,C as FileModel,d as FileStatusEnum,i as FileUpdatedEvent,a as FileUploadedEvent,o as FileVersionCreatedEvent,f as FileVersionEntity,w as FileVersionModel,T as GetDownloadUrlContract,E as GetFileContract,D as GetVersionsContract,N as InMemoryStorageAdapter,O as ListAttachmentsContract,k as ListFilesContract,P as LocalStorageAdapter,A as PresignedUrlModel,F as S3StorageAdapter,p as StorageProviderEnum,j as UpdateFileContract,M as UploadFileContract,s as UploadSessionCompletedEvent,m as UploadSessionEntity,c as UploadSessionStartedEvent,I as createStorageAdapter,h as fileEntities,g as filesSchemaContribution};
|
|
1
|
+
import{AttachmentAttachedEvent as e,AttachmentDetachedEvent as t,FileDeletedEvent as n,FileEvents as r,FileUpdatedEvent as i,FileUploadedEvent as a,FileVersionCreatedEvent as o,UploadSessionCompletedEvent as s,UploadSessionStartedEvent as c}from"./events.js";import{AttachmentEntity as l,FileEntity as u,FileStatusEnum as d,FileVersionEntity as f,StorageProviderEnum as p,UploadSessionEntity as m,fileEntities as h,filesSchemaContribution as g}from"./entities/index.js";import{AttachFileContract as _,AttachmentModel as v,CreatePresignedUrlContract as y,CreateVersionContract as b,DeleteFileContract as x,DetachFileContract as S,FileModel as C,FileVersionModel as w,GetDownloadUrlContract as T,GetFileContract as E,GetVersionsContract as D,ListAttachmentsContract as O,ListFilesContract as k,PresignedUrlModel as A,UpdateFileContract as j,UploadFileContract as M}from"./contracts/index.js";import{InMemoryStorageAdapter as N,LocalStorageAdapter as P,S3StorageAdapter as F,createStorageAdapter as I}from"./storage/index.js";import"./docs/index.js";export{_ as AttachFileContract,e as AttachmentAttachedEvent,t as AttachmentDetachedEvent,l as AttachmentEntity,v as AttachmentModel,y as CreatePresignedUrlContract,b as CreateVersionContract,x as DeleteFileContract,S as DetachFileContract,n as FileDeletedEvent,u as FileEntity,r as FileEvents,C as FileModel,d as FileStatusEnum,i as FileUpdatedEvent,a as FileUploadedEvent,o as FileVersionCreatedEvent,f as FileVersionEntity,w as FileVersionModel,T as GetDownloadUrlContract,E as GetFileContract,D as GetVersionsContract,N as InMemoryStorageAdapter,O as ListAttachmentsContract,k as ListFilesContract,P as LocalStorageAdapter,A as PresignedUrlModel,F as S3StorageAdapter,p as StorageProviderEnum,j as UpdateFileContract,M as UploadFileContract,s as UploadSessionCompletedEvent,m as UploadSessionEntity,c as UploadSessionStartedEvent,I as createStorageAdapter,h as fileEntities,g as filesSchemaContribution};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lssm/lib.files",
|
|
3
|
-
"version": "0.0.0-canary-
|
|
3
|
+
"version": "0.0.0-canary-20251212210835",
|
|
4
4
|
"description": "Files, documents and attachments module for ContractSpec applications",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -29,6 +29,8 @@
|
|
|
29
29
|
"exports": {
|
|
30
30
|
".": "./src/index.ts",
|
|
31
31
|
"./contracts": "./src/contracts/index.ts",
|
|
32
|
+
"./docs": "./src/docs/index.ts",
|
|
33
|
+
"./docs/files.docblock": "./src/docs/files.docblock.ts",
|
|
32
34
|
"./entities": "./src/entities/index.ts",
|
|
33
35
|
"./events": "./src/events.ts",
|
|
34
36
|
"./storage": "./src/storage/index.ts",
|
|
@@ -44,6 +46,8 @@
|
|
|
44
46
|
"exports": {
|
|
45
47
|
".": "./dist/index.js",
|
|
46
48
|
"./contracts": "./dist/contracts/index.js",
|
|
49
|
+
"./docs": "./dist/docs/index.js",
|
|
50
|
+
"./docs/files.docblock": "./dist/docs/files.docblock.js",
|
|
47
51
|
"./entities": "./dist/entities/index.js",
|
|
48
52
|
"./events": "./dist/events.js",
|
|
49
53
|
"./storage": "./dist/storage/index.js",
|