@volontariapp/domain-storage 0.12.18 → 0.13.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.13.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Add the purge of orphaned files: `releaseForOwner` now writes a `storage.cleanup_files` job in the same transaction when at least one file is released, and `IFileRepository` / `PostgresFileRepository` gain `listPurgeCandidates(limit)` and `markDeleted(fileIds)` (plus `FilePurgeCandidate` and `MAX_PURGE_BATCH_SIZE`).
8
+
3
9
  ## 0.12.18
4
10
 
5
11
  ### Patch Changes
@@ -8,6 +8,7 @@ import type { ScanTransitionRow } from './file-repository.types.js';
8
8
  export declare const FILE_OUTBOX_EMITTER = "ms-storage";
9
9
  export declare const FILE_SCAN_RESULT_TARGET_SERVICES: EventQueueEntity['targetServices'];
10
10
  export declare const buildScanFileJob: (fileId: string, ownerId: string) => JobsOutboxEntity<StorageJobType.SCAN_FILE>;
11
+ export declare const buildCleanupFilesJob: (emitterId: string) => JobsOutboxEntity<StorageJobType.CLEANUP_FILES>;
11
12
  export declare const buildFileScannedEvent: (row: ScanTransitionRow) => EventQueueEntity<StorageEventMessagingType.FILE_SCANNED>;
12
13
  export declare const buildFileRejectedEvent: (row: ScanTransitionRow, reason: RejectionReason) => EventQueueEntity<StorageEventMessagingType.FILE_REJECTED>;
13
14
  export declare const toAttachmentRejectionReason: (refusal: AttachmentRefusalReason | "NOT_FOUND", scanStatus: ScanStatus | null) => StorageAttachmentRejectionReason;
@@ -1 +1 @@
1
- {"version":3,"file":"file-outbox.builders.d.ts","sourceRoot":"","sources":["../../src/repositories/file-outbox.builders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EACzB,cAAc,EAEf,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAYhD,eAAO,MAAM,gCAAgC,EAAE,gBAAgB,CAAC,gBAAgB,CAAM,CAAC;AAEvF,eAAO,MAAM,gBAAgB,WACnB,MAAM,WACL,MAAM,KACd,gBAAgB,CAAC,cAAc,CAAC,SAAS,CAQxC,CAAC;AAiBL,eAAO,MAAM,qBAAqB,QAC3B,iBAAiB,KACrB,gBAAgB,CAAC,yBAAyB,CAAC,YAAY,CAYtD,CAAC;AAEL,eAAO,MAAM,sBAAsB,QAC5B,iBAAiB,UACd,eAAe,KACtB,gBAAgB,CAAC,yBAAyB,CAAC,aAAa,CAavD,CAAC;AAQL,eAAO,MAAM,2BAA2B,YAC7B,uBAAuB,GAAG,WAAW,cAClC,UAAU,GAAG,IAAI,KAC5B,gCAcF,CAAC;AAEF,eAAO,MAAM,4BAA4B,cAC5B;IACT,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,gCAAgC,CAAC;CAC1C,WACQ,MAAM,KACd,gBAAgB,CAAC,yBAAyB,CAAC,mBAAmB,CAO7D,CAAC"}
1
+ {"version":3,"file":"file-outbox.builders.d.ts","sourceRoot":"","sources":["../../src/repositories/file-outbox.builders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EACzB,cAAc,EAEf,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAYhD,eAAO,MAAM,gCAAgC,EAAE,gBAAgB,CAAC,gBAAgB,CAAM,CAAC;AAEvF,eAAO,MAAM,gBAAgB,WACnB,MAAM,WACL,MAAM,KACd,gBAAgB,CAAC,cAAc,CAAC,SAAS,CAQxC,CAAC;AAGL,eAAO,MAAM,oBAAoB,cACpB,MAAM,KAChB,gBAAgB,CAAC,cAAc,CAAC,aAAa,CAQ5C,CAAC;AAiBL,eAAO,MAAM,qBAAqB,QAC3B,iBAAiB,KACrB,gBAAgB,CAAC,yBAAyB,CAAC,YAAY,CAYtD,CAAC;AAEL,eAAO,MAAM,sBAAsB,QAC5B,iBAAiB,UACd,eAAe,KACtB,gBAAgB,CAAC,yBAAyB,CAAC,aAAa,CAavD,CAAC;AAQL,eAAO,MAAM,2BAA2B,YAC7B,uBAAuB,GAAG,WAAW,cAClC,UAAU,GAAG,IAAI,KAC5B,gCAcF,CAAC;AAEF,eAAO,MAAM,4BAA4B,cAC5B;IACT,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,gCAAgC,CAAC;CAC1C,WACQ,MAAM,KACd,gBAAgB,CAAC,yBAAyB,CAAC,mBAAmB,CAO7D,CAAC"}
@@ -13,6 +13,14 @@ export const buildScanFileJob = (fileId, ownerId) => JobsOutboxEntity.createJob(
13
13
  payload: { fileId },
14
14
  scheduledAt: new Date(),
15
15
  });
16
+ export const buildCleanupFilesJob = (emitterId) => JobsOutboxEntity.createJob({
17
+ type: StorageJobType.CLEANUP_FILES,
18
+ emitter: FILE_OUTBOX_EMITTER,
19
+ emitterId,
20
+ target: StorageQueue.STORAGE,
21
+ payload: {},
22
+ scheduledAt: new Date(),
23
+ });
16
24
  const requireEntityId = (row) => {
17
25
  if (row.entity_id === null) {
18
26
  throw new InternalServerError(`Attached file ${row.id} has no entity_id`, 'FILE_ATTACHED_WITHOUT_ENTITY', { fileId: row.id });
@@ -1 +1 @@
1
- {"version":3,"file":"file-outbox.builders.js","sourceRoot":"","sources":["../../src/repositories/file-outbox.builders.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-outbox.builders.js","sourceRoot":"","sources":["../../src/repositories/file-outbox.builders.ts"],"names":[],"mappings":"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"}
@@ -84,4 +84,10 @@ export interface ReleaseFileInput {
84
84
  export interface ReleaseForOwnerInput {
85
85
  ownerId: string;
86
86
  }
87
+ export declare const MAX_PURGE_BATCH_SIZE = 100;
88
+ export interface FilePurgeCandidate {
89
+ id: string;
90
+ quarantineKey: string;
91
+ publicKey: string | null;
92
+ }
87
93
  //# sourceMappingURL=file-repository.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-repository.types.d.ts","sourceRoot":"","sources":["../../src/repositories/file-repository.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-repository.types.d.ts","sourceRoot":"","sources":["../../src/repositories/file-repository.types.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export {};
1
+ export const MAX_PURGE_BATCH_SIZE = 100;
2
2
  //# sourceMappingURL=file-repository.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-repository.types.js","sourceRoot":"","sources":["../../src/repositories/file-repository.types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"file-repository.types.js","sourceRoot":"","sources":["../../src/repositories/file-repository.types.ts"],"names":[],"mappings":"AA+HA,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { FileEntity } from '../../entities/file.entity.js';
2
2
  import type { EntityType } from '../../enums/entity-type.enum.js';
3
- import type { AttachFromConfirmationEventInput, CompleteScanInput, ConfirmUploadInput, ConfirmUploadResult, CreatePendingFileInput, FileAttachmentResult, RejectScanInput, ReleaseFileInput, ReleaseForEntityInput, ReleaseForEntityResult, ReleaseForOwnerInput, ReserveFilesInput, ScanTransitionResult } from '../file-repository.types.js';
3
+ import type { AttachFromConfirmationEventInput, CompleteScanInput, ConfirmUploadInput, ConfirmUploadResult, CreatePendingFileInput, FileAttachmentResult, FilePurgeCandidate, RejectScanInput, ReleaseFileInput, ReleaseForEntityInput, ReleaseForEntityResult, ReleaseForOwnerInput, ReserveFilesInput, ScanTransitionResult } from '../file-repository.types.js';
4
4
  export interface IFileRepository {
5
5
  createPending(input: CreatePendingFileInput): Promise<FileEntity>;
6
6
  findById(id: string): Promise<FileEntity | null>;
@@ -17,5 +17,7 @@ export interface IFileRepository {
17
17
  releaseFile(input: ReleaseFileInput): Promise<boolean>;
18
18
  releaseForOwner(input: ReleaseForOwnerInput): Promise<string[]>;
19
19
  markFilesForDeletionByOwner(ownerId: string): Promise<string[]>;
20
+ listPurgeCandidates(limit: number): Promise<FilePurgeCandidate[]>;
21
+ markDeleted(fileIds: readonly string[]): Promise<string[]>;
20
22
  }
21
23
  //# sourceMappingURL=file.repository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file.repository.d.ts","sourceRoot":"","sources":["../../../src/repositories/interfaces/file.repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EACV,gCAAgC,EAChC,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,6BAA6B,CAAC;AASrC,MAAM,WAAW,eAAe;IAE9B,aAAa,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAElE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACjD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAChD,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAG9E,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IAE9E,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhD,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAExD,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAE7E,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAEzE,OAAO,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IASzD,2BAA2B,CACzB,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAKnC,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAKhF,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAKvD,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAIhE,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACjE"}
1
+ {"version":3,"file":"file.repository.d.ts","sourceRoot":"","sources":["../../../src/repositories/interfaces/file.repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EACV,gCAAgC,EAChC,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,6BAA6B,CAAC;AASrC,MAAM,WAAW,eAAe;IAE9B,aAAa,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAElE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACjD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAChD,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAG9E,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IAE9E,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhD,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAExD,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAE7E,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAEzE,OAAO,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IASzD,2BAA2B,CACzB,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAKnC,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAKhF,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAOvD,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAIhE,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAMhE,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAKlE,WAAW,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC5D"}
@@ -4,7 +4,7 @@ import { FileEntity } from '../entities/file.entity.js';
4
4
  import { EntityType } from '../enums/entity-type.enum.js';
5
5
  import { FileModel } from '../models/index.js';
6
6
  import type { IFileRepository } from './interfaces/file.repository.js';
7
- import type { AttachFromConfirmationEventInput, CompleteScanInput, ConfirmUploadInput, ConfirmUploadResult, CreatePendingFileInput, FileAttachmentResult, RejectScanInput, ReleaseFileInput, ReleaseForEntityInput, ReleaseForEntityResult, ReleaseForOwnerInput, ReserveFilesInput, ScanTransitionResult } from './file-repository.types.js';
7
+ import type { AttachFromConfirmationEventInput, CompleteScanInput, ConfirmUploadInput, ConfirmUploadResult, CreatePendingFileInput, FileAttachmentResult, FilePurgeCandidate, RejectScanInput, ReleaseFileInput, ReleaseForEntityInput, ReleaseForEntityResult, ReleaseForOwnerInput, ReserveFilesInput, ScanTransitionResult } from './file-repository.types.js';
8
8
  export declare const RESET_UPLOAD_DELAY_MINUTES = 15;
9
9
  export declare const OWNER_RELEASE_EXCLUDED_ENTITY_TYPES: readonly EntityType[];
10
10
  export declare class PostgresFileRepository extends BaseRepository<FileModel, FileEntity> implements IFileRepository {
@@ -22,12 +22,15 @@ export declare class PostgresFileRepository extends BaseRepository<FileModel, Fi
22
22
  releaseFile(input: ReleaseFileInput): Promise<boolean>;
23
23
  releaseForOwner(input: ReleaseForOwnerInput): Promise<string[]>;
24
24
  markFilesForDeletionByOwner(ownerId: string): Promise<string[]>;
25
+ listPurgeCandidates(limit: number): Promise<FilePurgeCandidate[]>;
26
+ markDeleted(fileIds: readonly string[]): Promise<string[]>;
25
27
  private lockEntity;
26
28
  completeScan(input: CompleteScanInput): Promise<ScanTransitionResult | null>;
27
29
  rejectScan(input: RejectScanInput): Promise<ScanTransitionResult | null>;
28
30
  private finishScan;
29
31
  private runInTransaction;
30
32
  private writeScanJob;
33
+ private writeCleanupJob;
31
34
  private eventQueueRepository;
32
35
  private logTransition;
33
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-file.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/postgres-file.repository.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAoC,MAAM,wBAAwB,CAAC;AAM1F,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAU1D,OAAO,EAAE,SAAS,EAAuB,MAAM,oBAAoB,CAAC;AAiBpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAEV,gCAAgC,EAChC,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EAEpB,iBAAiB,EACjB,oBAAoB,EAErB,MAAM,4BAA4B,CAAC;AAGpC,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAM7C,eAAO,MAAM,mCAAmC,EAAE,SAAS,UAAU,EAA4B,CAAC;AAoBlG,qBACa,sBACX,SAAQ,cAAc,CAAC,SAAS,EAAE,UAAU,CAC5C,YAAW,eAAe;gBAEe,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC;IAQpE,aAAa,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC;IAUjE,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAS7E,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAsC7E,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAyB/C,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BvD,OAAO,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IA6GxD,2BAA2B,CAC/B,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAAC,oBAAoB,EAAE,CAAC;YA0HpB,kBAAkB;YA2DlB,4BAA4B;IAkCpC,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAkD/E,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAyCtD,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA2B/D,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YASvD,UAAU;IAelB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAoB5E,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;YAgBhE,UAAU;YAmCV,gBAAgB;YAahB,YAAY;IAW1B,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,aAAa;CAOtB"}
1
+ {"version":3,"file":"postgres-file.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/postgres-file.repository.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAoC,MAAM,wBAAwB,CAAC;AAM1F,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAU1D,OAAO,EAAE,SAAS,EAAuB,MAAM,oBAAoB,CAAC;AAkBpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE,OAAO,KAAK,EAEV,gCAAgC,EAChC,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EAEpB,iBAAiB,EACjB,oBAAoB,EAErB,MAAM,4BAA4B,CAAC;AAGpC,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAM7C,eAAO,MAAM,mCAAmC,EAAE,SAAS,UAAU,EAA4B,CAAC;AAoBlG,qBACa,sBACX,SAAQ,cAAc,CAAC,SAAS,EAAE,UAAU,CAC5C,YAAW,eAAe;gBAEe,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC;IAQpE,aAAa,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC;IAUjE,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAS7E,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAsC7E,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAyB/C,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BvD,OAAO,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IA6GxD,2BAA2B,CAC/B,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAAC,oBAAoB,EAAE,CAAC;YA0HpB,kBAAkB;YA2DlB,4BAA4B;IAkCpC,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAkD/E,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAyCtD,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAqC/D,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAQ/D,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAgCjE,WAAW,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAwBlD,UAAU;IAelB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAoB5E,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;YAgBhE,UAAU;YAmCV,gBAAgB;YAahB,YAAY;YAUZ,eAAe;IAO7B,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,aAAa;CAOtB"}
@@ -13,7 +13,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
13
13
  import { Injectable } from '@nestjs/common';
14
14
  import { InjectRepository } from '@nestjs/typeorm';
15
15
  import { BaseRepository, EventQueueModel, JobsOutboxModel } from '@volontariapp/database';
16
- import { InternalServerError } from '@volontariapp/errors';
16
+ import { BadRequestError, InternalServerError } from '@volontariapp/errors';
17
17
  import { EventQueueRepository, JobsOutboxRepository } from '@volontariapp/outbox';
18
18
  import { In } from 'typeorm';
19
19
  import { FileEntity } from '../entities/file.entity.js';
@@ -29,7 +29,8 @@ import { TooManyFilesException } from '../exceptions/too-many-files.exception.js
29
29
  import { FileModel, ReleasedEntityModel } from '../models/index.js';
30
30
  import { classifyFileForAttachment, classifyFileForConfirmation, } from '../policies/attachment-validation.rule.js';
31
31
  import { getValidationPolicy } from '../policies/get-validation-policy.js';
32
- import { buildAttachmentRejectedEvent, buildFileRejectedEvent, buildFileScannedEvent, buildScanFileJob, toAttachmentRejectionReason, } from './file-outbox.builders.js';
32
+ import { buildAttachmentRejectedEvent, buildCleanupFilesJob, buildFileRejectedEvent, buildFileScannedEvent, buildScanFileJob, toAttachmentRejectionReason, } from './file-outbox.builders.js';
33
+ import { MAX_PURGE_BATCH_SIZE } from './file-repository.types.js';
33
34
  export const RESET_UPLOAD_DELAY_MINUTES = 15;
34
35
  export const OWNER_RELEASE_EXCLUDED_ENTITY_TYPES = [EntityType.BADGE_ICON];
35
36
  let PostgresFileRepository = class PostgresFileRepository extends BaseRepository {
@@ -347,25 +348,58 @@ let PostgresFileRepository = class PostgresFileRepository extends BaseRepository
347
348
  return released;
348
349
  }
349
350
  async releaseForOwner(input) {
350
- const [rows] = await this.repository.manager.query(`UPDATE files
351
- SET status = $1, updated_at = now()
352
- WHERE owner_id = $2
353
- AND entity_type <> ALL($3::varchar[])
354
- AND status IN ($4, $5, $6)
355
- RETURNING id`, [
356
- FileStatus.ORPHANED,
357
- input.ownerId,
358
- OWNER_RELEASE_EXCLUDED_ENTITY_TYPES,
359
- FileStatus.PENDING,
360
- FileStatus.RESERVED,
361
- FileStatus.ATTACHED,
362
- ]);
363
- this.logger.log(`releaseForOwner for ${input.ownerId}: ${String(rows.length)} file(s) released`);
364
- return rows.map((row) => row.id);
351
+ const releasedIds = await this.runInTransaction('releaseForOwner', input.ownerId, async (manager) => {
352
+ const [rows] = await manager.query(`UPDATE files
353
+ SET status = $1, updated_at = now()
354
+ WHERE owner_id = $2
355
+ AND entity_type <> ALL($3::varchar[])
356
+ AND status IN ($4, $5, $6)
357
+ RETURNING id`, [
358
+ FileStatus.ORPHANED,
359
+ input.ownerId,
360
+ OWNER_RELEASE_EXCLUDED_ENTITY_TYPES,
361
+ FileStatus.PENDING,
362
+ FileStatus.RESERVED,
363
+ FileStatus.ATTACHED,
364
+ ]);
365
+ if (rows.length > 0) {
366
+ await this.writeCleanupJob(manager, input.ownerId);
367
+ }
368
+ return rows.map((row) => row.id);
369
+ });
370
+ this.logger.log(`releaseForOwner for ${input.ownerId}: ${String(releasedIds.length)} file(s) released`);
371
+ return releasedIds;
365
372
  }
366
373
  async markFilesForDeletionByOwner(ownerId) {
367
374
  return this.releaseForOwner({ ownerId });
368
375
  }
376
+ async listPurgeCandidates(limit) {
377
+ if (!Number.isInteger(limit) || limit < 1 || limit > MAX_PURGE_BATCH_SIZE) {
378
+ throw new BadRequestError(`Purge batch size must be an integer between 1 and ${String(MAX_PURGE_BATCH_SIZE)}.`, 'INVALID_PURGE_BATCH_SIZE', { limit, max: MAX_PURGE_BATCH_SIZE });
379
+ }
380
+ const rows = await this.repository.manager.query(`SELECT id, quarantine_key, public_key
381
+ FROM files
382
+ WHERE status = $1
383
+ ORDER BY updated_at ASC, id ASC
384
+ LIMIT $2`, [FileStatus.ORPHANED, limit]);
385
+ this.logger.log(`listPurgeCandidates: ${String(rows.length)} file(s) to purge`);
386
+ return rows.map((row) => ({
387
+ id: row.id,
388
+ quarantineKey: row.quarantine_key,
389
+ publicKey: row.public_key,
390
+ }));
391
+ }
392
+ async markDeleted(fileIds) {
393
+ if (fileIds.length === 0) {
394
+ return [];
395
+ }
396
+ const [rows] = await this.repository.manager.query(`UPDATE files
397
+ SET status = $1, updated_at = now()
398
+ WHERE id = ANY($2::uuid[]) AND status = $3
399
+ RETURNING id`, [FileStatus.DELETED, [...new Set(fileIds)], FileStatus.ORPHANED]);
400
+ this.logger.log(`markDeleted: ${String(rows.length)} of ${String(fileIds.length)} file(s) marked DELETED`);
401
+ return rows.map((row) => row.id);
402
+ }
369
403
  async lockEntity(manager, entityType, entityId) {
370
404
  await manager.query(`SELECT pg_advisory_xact_lock(hashtext($1))`, [
371
405
  `${entityType}:${entityId.toLowerCase()}`,
@@ -420,6 +454,9 @@ let PostgresFileRepository = class PostgresFileRepository extends BaseRepository
420
454
  async writeScanJob(manager, fileId, ownerId) {
421
455
  await new JobsOutboxRepository(manager.getRepository(JobsOutboxModel)).create(buildScanFileJob(fileId, ownerId));
422
456
  }
457
+ async writeCleanupJob(manager, ownerId) {
458
+ await new JobsOutboxRepository(manager.getRepository(JobsOutboxModel)).create(buildCleanupFilesJob(ownerId));
459
+ }
423
460
  eventQueueRepository(manager) {
424
461
  return new EventQueueRepository(manager.getRepository(EventQueueModel));
425
462
  }
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-file.repository.js","sourceRoot":"","sources":["../../src/repositories/postgres-file.repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postgres-file.repository.js","sourceRoot":"","sources":["../../src/repositories/postgres-file.repository.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { describe, expect, it } from '@jest/globals';
2
2
  import { OutboxStatus } from '@volontariapp/database';
3
3
  import { StorageAttachmentRejectionReason, StorageEventMessagingType, StorageJobType, StorageQueue, } from '@volontariapp/messaging';
4
4
  import { AttachmentRefusalReason, EntityType, FileStatus, RejectionReason, ScanStatus, } from '../index.js';
5
- import { buildAttachmentRejectedEvent, buildFileRejectedEvent, buildFileScannedEvent, buildScanFileJob, FILE_OUTBOX_EMITTER, FILE_SCAN_RESULT_TARGET_SERVICES, toAttachmentRejectionReason, } from '../repositories/file-outbox.builders.js';
5
+ import { buildAttachmentRejectedEvent, buildCleanupFilesJob, buildFileRejectedEvent, buildFileScannedEvent, buildScanFileJob, FILE_OUTBOX_EMITTER, FILE_SCAN_RESULT_TARGET_SERVICES, toAttachmentRejectionReason, } from '../repositories/file-outbox.builders.js';
6
6
  const attachedRow = (overrides = {}) => ({
7
7
  id: '11111111-1111-4111-8111-111111111111',
8
8
  status: FileStatus.ATTACHED,
@@ -25,6 +25,19 @@ describe('file outbox builders', () => {
25
25
  expect(job.scheduledAt?.getTime()).toBeGreaterThanOrEqual(before);
26
26
  });
27
27
  });
28
+ describe('buildCleanupFilesJob()', () => {
29
+ it('targets the storage queue with an empty payload and is schedulable immediately', () => {
30
+ const before = Date.now();
31
+ const job = buildCleanupFilesJob('owner-1');
32
+ expect(job.type).toBe(StorageJobType.CLEANUP_FILES);
33
+ expect(job.target).toBe(StorageQueue.STORAGE);
34
+ expect(job.payload).toEqual({});
35
+ expect(job.emitter).toBe(FILE_OUTBOX_EMITTER);
36
+ expect(job.emitterId).toBe('owner-1');
37
+ expect(job.status).toBe(OutboxStatus.PENDING);
38
+ expect(job.scheduledAt?.getTime()).toBeGreaterThanOrEqual(before);
39
+ });
40
+ });
28
41
  describe('buildFileScannedEvent()', () => {
29
42
  it('carries the file, its owner, its entity and the owner as emitter id', () => {
30
43
  const event = buildFileScannedEvent(attachedRow());
@@ -1 +1 @@
1
- {"version":3,"file":"file-outbox.builders.unit.spec.js","sourceRoot":"","sources":["../../src/test/file-outbox.builders.unit.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-outbox.builders.unit.spec.js","sourceRoot":"","sources":["../../src/test/file-outbox.builders.unit.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=postgres-file.repository.purge.int.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-file.repository.purge.int.spec.d.ts","sourceRoot":"","sources":["../../../src/test/integration/postgres-file.repository.purge.int.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,141 @@
1
+ import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, jest, } from '@jest/globals';
2
+ import { StorageJobType, StorageQueue } from '@volontariapp/messaging';
3
+ import { EntityType, FileId, FileStatus, ScanStatus } from '../../index.js';
4
+ import { FileModel } from '../../models/index.js';
5
+ import { MAX_PURGE_BATCH_SIZE, PostgresFileRepository } from '../../repositories/index.js';
6
+ import { closeTestDb, initializeTestDb, testDataSource, truncateAll } from '../data-source.js';
7
+ import { insertFile, readFile, readJobs } from '../helpers/file-db.helper.js';
8
+ const newId = () => FileId.generate().getValue();
9
+ describe('PostgresFileRepository purge (integration)', () => {
10
+ let repository;
11
+ const ownerId = newId();
12
+ const fileOf = (status, updatedAt, overrides = {}) => insertFile({ ownerId, status, scanStatus: ScanStatus.CLEAN, ...overrides }).then(async (file) => {
13
+ await testDataSource.query('UPDATE files SET updated_at = $1 WHERE id = $2', [
14
+ updatedAt,
15
+ file.id,
16
+ ]);
17
+ return file;
18
+ });
19
+ beforeAll(async () => {
20
+ await initializeTestDb();
21
+ repository = new PostgresFileRepository(testDataSource.getRepository(FileModel));
22
+ });
23
+ afterAll(async () => {
24
+ await closeTestDb();
25
+ });
26
+ beforeEach(async () => {
27
+ await truncateAll();
28
+ });
29
+ afterEach(() => {
30
+ jest.restoreAllMocks();
31
+ });
32
+ describe('releaseForOwner() cleanup job', () => {
33
+ it('writes exactly one storage.cleanup_files job when files are released', async () => {
34
+ await insertFile({ ownerId });
35
+ await insertFile({ ownerId });
36
+ const released = await repository.releaseForOwner({ ownerId });
37
+ expect(released).toHaveLength(2);
38
+ const jobs = await readJobs();
39
+ expect(jobs).toHaveLength(1);
40
+ expect(jobs[0].type).toBe(StorageJobType.CLEANUP_FILES);
41
+ expect(jobs[0].target).toBe(StorageQueue.STORAGE);
42
+ expect(jobs[0].payload).toEqual({});
43
+ expect(jobs[0].emitterId).toBe(ownerId);
44
+ });
45
+ it('writes no job when nothing is released', async () => {
46
+ await insertFile({ ownerId, entityType: EntityType.BADGE_ICON });
47
+ await insertFile({ ownerId, status: FileStatus.ORPHANED });
48
+ expect(await repository.releaseForOwner({ ownerId })).toEqual([]);
49
+ expect(await readJobs()).toHaveLength(0);
50
+ });
51
+ it('writes no job on a replay', async () => {
52
+ await insertFile({ ownerId });
53
+ await repository.releaseForOwner({ ownerId });
54
+ await repository.releaseForOwner({ ownerId });
55
+ expect(await readJobs()).toHaveLength(1);
56
+ });
57
+ it('rolls the release back when the job cannot be written', async () => {
58
+ const file = await insertFile({ ownerId });
59
+ await testDataSource.query('ALTER TABLE jobs_outbox RENAME TO jobs_outbox_tmp');
60
+ try {
61
+ await expect(repository.releaseForOwner({ ownerId })).rejects.toThrow();
62
+ }
63
+ finally {
64
+ await testDataSource.query('ALTER TABLE jobs_outbox_tmp RENAME TO jobs_outbox');
65
+ }
66
+ expect((await readFile(file.id)).status).toBe(FileStatus.PENDING);
67
+ });
68
+ });
69
+ describe('listPurgeCandidates()', () => {
70
+ it('returns only ORPHANED rows, oldest first, limited', async () => {
71
+ const newest = await fileOf(FileStatus.ORPHANED, new Date('2026-03-01T00:00:00Z'));
72
+ const oldest = await fileOf(FileStatus.ORPHANED, new Date('2026-01-01T00:00:00Z'), {
73
+ publicKey: 'public/oldest.png',
74
+ });
75
+ const middle = await fileOf(FileStatus.ORPHANED, new Date('2026-02-01T00:00:00Z'));
76
+ for (const status of [
77
+ FileStatus.PENDING,
78
+ FileStatus.RESERVED,
79
+ FileStatus.ATTACHED,
80
+ FileStatus.DELETED,
81
+ ]) {
82
+ await fileOf(status, new Date('2025-01-01T00:00:00Z'));
83
+ }
84
+ const all = await repository.listPurgeCandidates(10);
85
+ const limited = await repository.listPurgeCandidates(2);
86
+ expect(all.map((candidate) => candidate.id)).toEqual([oldest.id, middle.id, newest.id]);
87
+ expect(limited.map((candidate) => candidate.id)).toEqual([oldest.id, middle.id]);
88
+ expect(all[0]).toEqual({
89
+ id: oldest.id,
90
+ quarantineKey: oldest.quarantineKey,
91
+ publicKey: 'public/oldest.png',
92
+ });
93
+ expect(all[1].publicKey).toBeNull();
94
+ });
95
+ it('returns an empty list when nothing is orphaned', async () => {
96
+ await insertFile({ ownerId });
97
+ expect(await repository.listPurgeCandidates(10)).toEqual([]);
98
+ });
99
+ it.each([0, -1, 1.5, Number.NaN, MAX_PURGE_BATCH_SIZE + 1])('refuses the batch size %s', async (limit) => {
100
+ await expect(repository.listPurgeCandidates(limit)).rejects.toThrow('Purge batch size must be an integer');
101
+ });
102
+ it('accepts the maximum batch size', async () => {
103
+ await expect(repository.listPurgeCandidates(MAX_PURGE_BATCH_SIZE)).resolves.toEqual([]);
104
+ });
105
+ });
106
+ describe('markDeleted()', () => {
107
+ it('moves ORPHANED files to DELETED and refreshes updated_at', async () => {
108
+ const orphaned = await fileOf(FileStatus.ORPHANED, new Date('2026-01-01T00:00:00Z'));
109
+ const deleted = await repository.markDeleted([orphaned.id]);
110
+ expect(deleted).toEqual([orphaned.id]);
111
+ const row = await readFile(orphaned.id);
112
+ expect(row.status).toBe(FileStatus.DELETED);
113
+ expect(row.updatedAt.getTime()).toBeGreaterThan(new Date('2026-01-01T00:00:00Z').getTime());
114
+ });
115
+ it('never touches a file in another status', async () => {
116
+ const others = await Promise.all([FileStatus.PENDING, FileStatus.RESERVED, FileStatus.ATTACHED, FileStatus.DELETED].map((status) => insertFile({ ownerId, status })));
117
+ const before = await Promise.all(others.map((file) => readFile(file.id)));
118
+ const deleted = await repository.markDeleted(others.map((file) => file.id));
119
+ expect(deleted).toEqual([]);
120
+ expect(await Promise.all(others.map((file) => readFile(file.id)))).toEqual(before);
121
+ });
122
+ it('only returns the ids it moved, duplicates and unknown ids included in the input', async () => {
123
+ const orphaned = await insertFile({ ownerId, status: FileStatus.ORPHANED });
124
+ const pending = await insertFile({ ownerId });
125
+ const deleted = await repository.markDeleted([orphaned.id, orphaned.id, pending.id, newId()]);
126
+ expect(deleted).toEqual([orphaned.id]);
127
+ expect((await readFile(pending.id)).status).toBe(FileStatus.PENDING);
128
+ });
129
+ it('is a no-op on a second call', async () => {
130
+ const orphaned = await insertFile({ ownerId, status: FileStatus.ORPHANED });
131
+ expect(await repository.markDeleted([orphaned.id])).toEqual([orphaned.id]);
132
+ expect(await repository.markDeleted([orphaned.id])).toEqual([]);
133
+ });
134
+ it('runs no query for an empty input', async () => {
135
+ const query = jest.spyOn(testDataSource.manager, 'query');
136
+ expect(await repository.markDeleted([])).toEqual([]);
137
+ expect(query).not.toHaveBeenCalled();
138
+ });
139
+ });
140
+ });
141
+ //# sourceMappingURL=postgres-file.repository.purge.int.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-file.repository.purge.int.spec.js","sourceRoot":"","sources":["../../../src/test/integration/postgres-file.repository.purge.int.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volontariapp/domain-storage",
3
- "version": "0.12.18",
3
+ "version": "0.13.0",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "provenance": true