@abyss-project/tools 2.3.0 → 2.4.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.
@@ -7,8 +7,14 @@ export declare enum BeamServeDenyReasonCode {
7
7
  EXPIRED = "expired",
8
8
  FORBIDDEN_VISIBILITY = "forbidden_visibility",
9
9
  MAX_DOWNLOADS = "max_downloads",
10
- SCAN_PENDING = "scan_pending",
11
- SCAN_INFECTED = "scan_infected"
10
+ SCAN_PENDING = "scan_pending"
11
+ }
12
+ export declare enum BeamFileScanStatus {
13
+ PENDING_SCAN = "pending_scan",
14
+ CLEAN = "clean",
15
+ INFECTED = "infected",
16
+ SKIPPED = "skipped",
17
+ ERROR = "error"
12
18
  }
13
19
  export declare enum BeamDownloadKind {
14
20
  FILE = "file",
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BeamDownloadKind = exports.BeamServeDenyReasonCode = exports.BeamVisibility = void 0;
3
+ exports.BeamDownloadKind = exports.BeamFileScanStatus = exports.BeamServeDenyReasonCode = exports.BeamVisibility = void 0;
4
4
  var BeamVisibility;
5
5
  (function (BeamVisibility) {
6
6
  BeamVisibility["PUBLIC"] = "PUBLIC";
@@ -13,8 +13,15 @@ var BeamServeDenyReasonCode;
13
13
  BeamServeDenyReasonCode["FORBIDDEN_VISIBILITY"] = "forbidden_visibility";
14
14
  BeamServeDenyReasonCode["MAX_DOWNLOADS"] = "max_downloads";
15
15
  BeamServeDenyReasonCode["SCAN_PENDING"] = "scan_pending";
16
- BeamServeDenyReasonCode["SCAN_INFECTED"] = "scan_infected";
17
16
  })(BeamServeDenyReasonCode || (exports.BeamServeDenyReasonCode = BeamServeDenyReasonCode = {}));
17
+ var BeamFileScanStatus;
18
+ (function (BeamFileScanStatus) {
19
+ BeamFileScanStatus["PENDING_SCAN"] = "pending_scan";
20
+ BeamFileScanStatus["CLEAN"] = "clean";
21
+ BeamFileScanStatus["INFECTED"] = "infected";
22
+ BeamFileScanStatus["SKIPPED"] = "skipped";
23
+ BeamFileScanStatus["ERROR"] = "error";
24
+ })(BeamFileScanStatus || (exports.BeamFileScanStatus = BeamFileScanStatus = {}));
18
25
  var BeamDownloadKind;
19
26
  (function (BeamDownloadKind) {
20
27
  BeamDownloadKind["FILE"] = "file";
@@ -1 +1 @@
1
- {"version":3,"file":"beam.enum.js","sourceRoot":"","sources":["../../../src/types/enum/beam.enum.ts"],"names":[],"mappings":";;;AAIA,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,2CAAyB,CAAA;AAC3B,CAAC,EAHW,cAAc,8BAAd,cAAc,QAGzB;AASD,IAAY,uBAOX;AAPD,WAAY,uBAAuB;IACjC,kDAAuB,CAAA;IACvB,8CAAmB,CAAA;IACnB,wEAA6C,CAAA;IAC7C,0DAA+B,CAAA;IAC/B,wDAA6B,CAAA;IAC7B,0DAA+B,CAAA;AACjC,CAAC,EAPW,uBAAuB,uCAAvB,uBAAuB,QAOlC;AAKD,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,iCAAa,CAAA;IACb,+BAAW,CAAA;AACb,CAAC,EAHW,gBAAgB,gCAAhB,gBAAgB,QAG3B"}
1
+ {"version":3,"file":"beam.enum.js","sourceRoot":"","sources":["../../../src/types/enum/beam.enum.ts"],"names":[],"mappings":";;;AAIA,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,2CAAyB,CAAA;AAC3B,CAAC,EAHW,cAAc,8BAAd,cAAc,QAGzB;AASD,IAAY,uBAMX;AAND,WAAY,uBAAuB;IACjC,kDAAuB,CAAA;IACvB,8CAAmB,CAAA;IACnB,wEAA6C,CAAA;IAC7C,0DAA+B,CAAA;IAC/B,wDAA6B,CAAA;AAC/B,CAAC,EANW,uBAAuB,uCAAvB,uBAAuB,QAMlC;AAWD,IAAY,kBAMX;AAND,WAAY,kBAAkB;IAC5B,mDAA6B,CAAA;IAC7B,qCAAe,CAAA;IACf,2CAAqB,CAAA;IACrB,yCAAmB,CAAA;IACnB,qCAAe,CAAA;AACjB,CAAC,EANW,kBAAkB,kCAAlB,kBAAkB,QAM7B;AAKD,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,iCAAa,CAAA;IACb,+BAAW,CAAA;AACb,CAAC,EAHW,gBAAgB,gCAAhB,gBAAgB,QAG3B"}
@@ -2,7 +2,7 @@ import { BasePaginate } from '../type-message/base-paginate';
2
2
  import { IResponse } from '../type-message/response';
3
3
  import { IBeamTransfer, IBeamFile, IBeamRecipient } from '../../models/beam.dto';
4
4
  import { IContentShare } from '../../models/content-share.dto';
5
- import { BeamVisibility, BeamServeDenyReasonCode, BeamDownloadKind } from '../../../enum/beam.enum';
5
+ import { BeamVisibility, BeamServeDenyReasonCode, BeamDownloadKind, BeamFileScanStatus } from '../../../enum/beam.enum';
6
6
  export interface IGetBeamData {
7
7
  beamTransfer: IBeamTransfer;
8
8
  }
@@ -39,6 +39,7 @@ export interface IBeamPublicFile {
39
39
  hasThumbnail: boolean;
40
40
  width: number | null;
41
41
  height: number | null;
42
+ scanStatus: BeamFileScanStatus;
42
43
  }
43
44
  export interface IBeamPublicView {
44
45
  slug: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abyss-project/tools",
3
- "version": "2.3.0",
3
+ "version": "2.4.0",
4
4
  "description": "Core package to interact with Abyss-Project Tools",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -20,7 +20,23 @@ export enum BeamServeDenyReasonCode {
20
20
  FORBIDDEN_VISIBILITY = 'forbidden_visibility',
21
21
  MAX_DOWNLOADS = 'max_downloads',
22
22
  SCAN_PENDING = 'scan_pending',
23
- SCAN_INFECTED = 'scan_infected',
23
+ }
24
+
25
+ // Per-file AV verdict surfaced on the public listing (GET /b/:slug) so the
26
+ // front can render a per-file badge — clean / "en analyse" (pending) /
27
+ // "infecté" — independently of the whole-transfer denial reason above.
28
+ // Storage-neutral: AbyssBeam serves an INFECTED file's bytes (spec decision —
29
+ // infected files stay downloadable, not blocked; the front is expected to
30
+ // warn before/at download). Mirrors the storage extension's `FileScanStatus`
31
+ // (`@abyss-project/storage`) byte-for-byte; duplicated locally because this
32
+ // package does not depend on `@abyss-project/storage` (same rationale as
33
+ // BeamServeDenyReasonCode above).
34
+ export enum BeamFileScanStatus {
35
+ PENDING_SCAN = 'pending_scan',
36
+ CLEAN = 'clean',
37
+ INFECTED = 'infected',
38
+ SKIPPED = 'skipped',
39
+ ERROR = 'error',
24
40
  }
25
41
 
26
42
  // What a beam_download_events row counted: a single-file download (/b/:slug/
@@ -2,7 +2,12 @@ import { BasePaginate } from '../type-message/base-paginate';
2
2
  import { IResponse } from '../type-message/response';
3
3
  import { IBeamTransfer, IBeamFile, IBeamRecipient } from '../../models/beam.dto';
4
4
  import { IContentShare } from '../../models/content-share.dto';
5
- import { BeamVisibility, BeamServeDenyReasonCode, BeamDownloadKind } from '../../../enum/beam.enum';
5
+ import {
6
+ BeamVisibility,
7
+ BeamServeDenyReasonCode,
8
+ BeamDownloadKind,
9
+ BeamFileScanStatus,
10
+ } from '../../../enum/beam.enum';
6
11
 
7
12
  export interface IGetBeamData {
8
13
  beamTransfer: IBeamTransfer;
@@ -39,6 +44,9 @@ export type IFinalizeBeamResponse = IResponse<IFinalizeBeamData>;
39
44
  // Public serving (B3) — safe, purpose-built projection of a transfer for the
40
45
  // browser-facing view: no owner ids, no password/manage hashes; adds
41
46
  // hasPassword/isLocked/hasThumbnail so the front can render the locked state.
47
+ // `scanStatus` is the per-file AV verdict (storage-neutral — an INFECTED file
48
+ // is still listed and downloadable; the front renders the warning from this
49
+ // field, see BeamFileScanStatus).
42
50
  export interface IBeamPublicFile {
43
51
  id: string;
44
52
  name: string;
@@ -48,6 +56,7 @@ export interface IBeamPublicFile {
48
56
  hasThumbnail: boolean;
49
57
  width: number | null;
50
58
  height: number | null;
59
+ scanStatus: BeamFileScanStatus;
51
60
  }
52
61
 
53
62
  export interface IBeamPublicView {