@abyss-project/probe 1.0.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.
Files changed (93) hide show
  1. package/README.md +32 -0
  2. package/dist/api/index.d.ts +2 -0
  3. package/dist/api/index.js +19 -0
  4. package/dist/api/index.js.map +1 -0
  5. package/dist/api/probe-scan.api.d.ts +10 -0
  6. package/dist/api/probe-scan.api.js +60 -0
  7. package/dist/api/probe-scan.api.js.map +1 -0
  8. package/dist/api/probe-scan.api.test.d.ts +1 -0
  9. package/dist/api/probe-scan.api.test.js +37 -0
  10. package/dist/api/probe-scan.api.test.js.map +1 -0
  11. package/dist/api/probe-webhook.api.d.ts +4 -0
  12. package/dist/api/probe-webhook.api.js +21 -0
  13. package/dist/api/probe-webhook.api.js.map +1 -0
  14. package/dist/api/probe-webhook.api.test.d.ts +1 -0
  15. package/dist/api/probe-webhook.api.test.js +33 -0
  16. package/dist/api/probe-webhook.api.test.js.map +1 -0
  17. package/dist/index.d.ts +35 -0
  18. package/dist/index.js +110 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/types/enum/api-error.enum.d.ts +17 -0
  21. package/dist/types/enum/api-error.enum.js +23 -0
  22. package/dist/types/enum/api-error.enum.js.map +1 -0
  23. package/dist/types/enum/index.d.ts +2 -0
  24. package/dist/types/enum/index.js +19 -0
  25. package/dist/types/enum/index.js.map +1 -0
  26. package/dist/types/enum/probe-scan.enum.d.ts +14 -0
  27. package/dist/types/enum/probe-scan.enum.js +21 -0
  28. package/dist/types/enum/probe-scan.enum.js.map +1 -0
  29. package/dist/types/index.d.ts +2 -0
  30. package/dist/types/index.js +19 -0
  31. package/dist/types/index.js.map +1 -0
  32. package/dist/types/interface/api/index.d.ts +5 -0
  33. package/dist/types/interface/api/index.js +22 -0
  34. package/dist/types/interface/api/index.js.map +1 -0
  35. package/dist/types/interface/api/requests/index.d.ts +2 -0
  36. package/dist/types/interface/api/requests/index.js +19 -0
  37. package/dist/types/interface/api/requests/index.js.map +1 -0
  38. package/dist/types/interface/api/requests/probe-scan.request.d.ts +22 -0
  39. package/dist/types/interface/api/requests/probe-scan.request.js +3 -0
  40. package/dist/types/interface/api/requests/probe-scan.request.js.map +1 -0
  41. package/dist/types/interface/api/requests/probe-webhook.request.d.ts +6 -0
  42. package/dist/types/interface/api/requests/probe-webhook.request.js +3 -0
  43. package/dist/types/interface/api/requests/probe-webhook.request.js.map +1 -0
  44. package/dist/types/interface/api/responses/index.d.ts +2 -0
  45. package/dist/types/interface/api/responses/index.js +19 -0
  46. package/dist/types/interface/api/responses/index.js.map +1 -0
  47. package/dist/types/interface/api/responses/probe-scan.response.d.ts +18 -0
  48. package/dist/types/interface/api/responses/probe-scan.response.js +3 -0
  49. package/dist/types/interface/api/responses/probe-scan.response.js.map +1 -0
  50. package/dist/types/interface/api/responses/probe-webhook.response.d.ts +10 -0
  51. package/dist/types/interface/api/responses/probe-webhook.response.js +3 -0
  52. package/dist/types/interface/api/responses/probe-webhook.response.js.map +1 -0
  53. package/dist/types/interface/api/type-message/api-error.d.ts +6 -0
  54. package/dist/types/interface/api/type-message/api-error.js +3 -0
  55. package/dist/types/interface/api/type-message/api-error.js.map +1 -0
  56. package/dist/types/interface/api/type-message/base-paginate.d.ts +10 -0
  57. package/dist/types/interface/api/type-message/base-paginate.js +3 -0
  58. package/dist/types/interface/api/type-message/base-paginate.js.map +1 -0
  59. package/dist/types/interface/api/type-message/response.d.ts +5 -0
  60. package/dist/types/interface/api/type-message/response.js +3 -0
  61. package/dist/types/interface/api/type-message/response.js.map +1 -0
  62. package/dist/types/interface/dto/index.d.ts +1 -0
  63. package/dist/types/interface/dto/index.js +18 -0
  64. package/dist/types/interface/dto/index.js.map +1 -0
  65. package/dist/types/interface/dto/probe-webhook-delivery.dto.d.ts +7 -0
  66. package/dist/types/interface/dto/probe-webhook-delivery.dto.js +3 -0
  67. package/dist/types/interface/dto/probe-webhook-delivery.dto.js.map +1 -0
  68. package/dist/types/interface/index.d.ts +3 -0
  69. package/dist/types/interface/index.js +20 -0
  70. package/dist/types/interface/index.js.map +1 -0
  71. package/dist/types/interface/models/index.d.ts +2 -0
  72. package/dist/types/interface/models/index.js +19 -0
  73. package/dist/types/interface/models/index.js.map +1 -0
  74. package/dist/types/interface/models/probe-scan.model.d.ts +22 -0
  75. package/dist/types/interface/models/probe-scan.model.js +3 -0
  76. package/dist/types/interface/models/probe-scan.model.js.map +1 -0
  77. package/dist/types/interface/models/probe-webhook.model.d.ts +9 -0
  78. package/dist/types/interface/models/probe-webhook.model.js +3 -0
  79. package/dist/types/interface/models/probe-webhook.model.js.map +1 -0
  80. package/dist/types/tests/probe.dto.test.d.ts +1 -0
  81. package/dist/types/tests/probe.dto.test.js +62 -0
  82. package/dist/types/tests/probe.dto.test.js.map +1 -0
  83. package/dist/utils/http.utils.d.ts +3 -0
  84. package/dist/utils/http.utils.js +20 -0
  85. package/dist/utils/http.utils.js.map +1 -0
  86. package/dist/utils/index.d.ts +2 -0
  87. package/dist/utils/index.js +19 -0
  88. package/dist/utils/index.js.map +1 -0
  89. package/dist/utils/probe-webhook-signature.utils.d.ts +8 -0
  90. package/dist/utils/probe-webhook-signature.utils.js +22 -0
  91. package/dist/utils/probe-webhook-signature.utils.js.map +1 -0
  92. package/package.json +50 -0
  93. package/tsconfig.json +36 -0
@@ -0,0 +1,22 @@
1
+ import { ProbeScanMode, ProbeScanStatus, ProbeScanVerdict } from '../../../enum';
2
+ export interface IScanOptions {
3
+ mode?: ProbeScanMode;
4
+ organizationId?: string;
5
+ context?: Record<string, unknown>;
6
+ callbackUrl?: string;
7
+ filename?: string;
8
+ mimeType?: string;
9
+ }
10
+ export interface IListScansQuery {
11
+ organizationId?: string;
12
+ verdict?: ProbeScanVerdict;
13
+ mode?: ProbeScanMode;
14
+ status?: ProbeScanStatus;
15
+ from?: Date;
16
+ to?: Date;
17
+ fileName?: string;
18
+ contextKey?: string;
19
+ contextValue?: string;
20
+ page?: number;
21
+ limit?: number;
22
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=probe-scan.request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probe-scan.request.js","sourceRoot":"","sources":["../../../../../src/types/interface/api/requests/probe-scan.request.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export interface IProbeWebhookScopeQuery {
2
+ organizationId?: string;
3
+ }
4
+ export interface ICreateProbeWebhookBody {
5
+ callbackUrl: string;
6
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=probe-webhook.request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probe-webhook.request.js","sourceRoot":"","sources":["../../../../../src/types/interface/api/requests/probe-webhook.request.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from './probe-scan.response';
2
+ export * from './probe-webhook.response';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./probe-scan.response"), exports);
18
+ __exportStar(require("./probe-webhook.response"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/types/interface/api/responses/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,2DAAyC"}
@@ -0,0 +1,18 @@
1
+ import { IResponse } from '../type-message/response';
2
+ import { BasePaginate } from '../type-message/base-paginate';
3
+ import { ProbeScanStatus, ProbeScanVerdict } from '../../../enum';
4
+ import { IProbeScanDetail, IProbeScanHistoryItem } from '../../models';
5
+ export interface IScanSyncData {
6
+ scanId: string;
7
+ verdict: ProbeScanVerdict;
8
+ viruses: string[];
9
+ }
10
+ export type IScanSyncResponse = IResponse<IScanSyncData>;
11
+ export interface IScanAsyncData {
12
+ scanId: string;
13
+ status: ProbeScanStatus.QUEUED;
14
+ }
15
+ export type IScanAsyncResponse = IResponse<IScanAsyncData>;
16
+ export type IScanResponse = IScanSyncResponse | IScanAsyncResponse;
17
+ export type IGetScanResponse = IResponse<IProbeScanDetail>;
18
+ export type IPaginateScanResponse = IResponse<BasePaginate<IProbeScanHistoryItem>>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=probe-scan.response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probe-scan.response.js","sourceRoot":"","sources":["../../../../../src/types/interface/api/responses/probe-scan.response.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import { IResponse } from '../type-message/response';
2
+ import { IProbeWebhook, IProbeWebhookCreated } from '../../models';
3
+ export type ICreateProbeWebhookResponse = IResponse<IProbeWebhookCreated>;
4
+ export interface IListProbeWebhookData {
5
+ webhooks: IProbeWebhook[];
6
+ }
7
+ export type IListProbeWebhookResponse = IResponse<IListProbeWebhookData>;
8
+ export type IDeleteProbeWebhookResponse = IResponse<{
9
+ ok: true;
10
+ }>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=probe-webhook.response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probe-webhook.response.js","sourceRoot":"","sources":["../../../../../src/types/interface/api/responses/probe-webhook.response.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { Code, ErrorType } from '../../../enum';
2
+ export interface IApiError {
3
+ code: Code;
4
+ type: ErrorType;
5
+ message?: string;
6
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=api-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-error.js","sourceRoot":"","sources":["../../../../../src/types/interface/api/type-message/api-error.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ export interface BasePaginate<T> {
2
+ maxPages: number;
3
+ currentPage: number;
4
+ data: T[];
5
+ totalItems: number;
6
+ }
7
+ export interface QueryPaginate {
8
+ page?: number;
9
+ limit?: number;
10
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=base-paginate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-paginate.js","sourceRoot":"","sources":["../../../../../src/types/interface/api/type-message/base-paginate.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { IApiError } from './api-error';
2
+ export interface IResponse<T> {
3
+ data: T;
4
+ error?: IApiError | Error;
5
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.js","sourceRoot":"","sources":["../../../../../src/types/interface/api/type-message/response.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export * from './probe-webhook-delivery.dto';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./probe-webhook-delivery.dto"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/types/interface/dto/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA6C"}
@@ -0,0 +1,7 @@
1
+ import { ProbeScanVerdict } from '../../enum';
2
+ export interface IProbeWebhookDeliveryPayload {
3
+ scanId: string;
4
+ context: Record<string, unknown> | null;
5
+ verdict: ProbeScanVerdict;
6
+ viruses: string[];
7
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=probe-webhook-delivery.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probe-webhook-delivery.dto.js","sourceRoot":"","sources":["../../../../src/types/interface/dto/probe-webhook-delivery.dto.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export * from './models';
2
+ export * from './dto';
3
+ export * from './api';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./models"), exports);
18
+ __exportStar(require("./dto"), exports);
19
+ __exportStar(require("./api"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/interface/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,wCAAsB;AACtB,wCAAsB"}
@@ -0,0 +1,2 @@
1
+ export * from './probe-scan.model';
2
+ export * from './probe-webhook.model';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./probe-scan.model"), exports);
18
+ __exportStar(require("./probe-webhook.model"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/types/interface/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,wDAAsC"}
@@ -0,0 +1,22 @@
1
+ import { ProbeScanMode, ProbeScanStatus, ProbeScanVerdict } from '../../enum';
2
+ export interface IProbeScanDetail {
3
+ scanId: string;
4
+ status: ProbeScanStatus;
5
+ verdict: ProbeScanVerdict | null;
6
+ viruses: string[] | null;
7
+ context: Record<string, unknown> | null;
8
+ }
9
+ export interface IProbeScanHistoryItem {
10
+ scanId: string;
11
+ fileName: string;
12
+ fileSize: number;
13
+ mimeType: string;
14
+ verdict: ProbeScanVerdict | null;
15
+ viruses: string[] | null;
16
+ mode: ProbeScanMode;
17
+ status: ProbeScanStatus;
18
+ context: Record<string, unknown> | null;
19
+ startedAt: Date;
20
+ finishedAt: Date | null;
21
+ createdAt: Date;
22
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=probe-scan.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probe-scan.model.js","sourceRoot":"","sources":["../../../../src/types/interface/models/probe-scan.model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ export interface IProbeWebhook {
2
+ id: string;
3
+ callbackUrl: string;
4
+ active: boolean;
5
+ createdAt: Date;
6
+ }
7
+ export interface IProbeWebhookCreated extends IProbeWebhook {
8
+ secret: string;
9
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=probe-webhook.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probe-webhook.model.js","sourceRoot":"","sources":["../../../../src/types/interface/models/probe-webhook.model.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const __1 = require("..");
4
+ const _verdicts = { clean: true, infected: true };
5
+ const _modes = { sync: true, async: true };
6
+ const _statuses = {
7
+ queued: true,
8
+ scanning: true,
9
+ done: true,
10
+ error: true,
11
+ };
12
+ const _scanDetail = {
13
+ scanId: 's1',
14
+ status: __1.ProbeScanStatus.DONE,
15
+ verdict: __1.ProbeScanVerdict.CLEAN,
16
+ viruses: [],
17
+ context: null,
18
+ };
19
+ const _historyItem = {
20
+ scanId: 's1',
21
+ fileName: 'invoice.pdf',
22
+ fileSize: 1024,
23
+ mimeType: 'application/pdf',
24
+ verdict: __1.ProbeScanVerdict.INFECTED,
25
+ viruses: ['Eicar-Test-Signature'],
26
+ mode: __1.ProbeScanMode.ASYNC,
27
+ status: __1.ProbeScanStatus.DONE,
28
+ context: { applicationFileId: 'af1' },
29
+ startedAt: new Date(),
30
+ finishedAt: new Date(),
31
+ createdAt: new Date(),
32
+ };
33
+ const _scanSyncData = {
34
+ scanId: 's1',
35
+ verdict: __1.ProbeScanVerdict.CLEAN,
36
+ viruses: [],
37
+ };
38
+ const _scanAsyncData = { scanId: 's1', status: __1.ProbeScanStatus.QUEUED };
39
+ const _webhook = {
40
+ id: 'w1',
41
+ callbackUrl: 'https://example.com/hook',
42
+ active: true,
43
+ createdAt: new Date(),
44
+ };
45
+ const _webhookCreated = { ..._webhook, secret: 'shh' };
46
+ const _deliveryPayload = {
47
+ scanId: 's1',
48
+ context: null,
49
+ verdict: __1.ProbeScanVerdict.INFECTED,
50
+ viruses: ['Eicar-Test-Signature'],
51
+ };
52
+ void _verdicts;
53
+ void _modes;
54
+ void _statuses;
55
+ void _scanDetail;
56
+ void _historyItem;
57
+ void _scanSyncData;
58
+ void _scanAsyncData;
59
+ void _webhook;
60
+ void _webhookCreated;
61
+ void _deliveryPayload;
62
+ //# sourceMappingURL=probe.dto.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probe.dto.test.js","sourceRoot":"","sources":["../../../src/types/tests/probe.dto.test.ts"],"names":[],"mappings":";;AAQA,0BAWY;AAMZ,MAAM,SAAS,GAAmC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAClF,MAAM,MAAM,GAAgC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACxE,MAAM,SAAS,GAAkC;IAC/C,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;CACZ,CAAC;AAGF,MAAM,WAAW,GAAqB;IACpC,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,mBAAe,CAAC,IAAI;IAC5B,OAAO,EAAE,oBAAgB,CAAC,KAAK;IAC/B,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,IAAI;CACd,CAAC;AAIF,MAAM,YAAY,GAA0B;IAC1C,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,aAAa;IACvB,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,iBAAiB;IAC3B,OAAO,EAAE,oBAAgB,CAAC,QAAQ;IAClC,OAAO,EAAE,CAAC,sBAAsB,CAAC;IACjC,IAAI,EAAE,iBAAa,CAAC,KAAK;IACzB,MAAM,EAAE,mBAAe,CAAC,IAAI;IAC5B,OAAO,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE;IACrC,SAAS,EAAE,IAAI,IAAI,EAAE;IACrB,UAAU,EAAE,IAAI,IAAI,EAAE;IACtB,SAAS,EAAE,IAAI,IAAI,EAAE;CACtB,CAAC;AAGF,MAAM,aAAa,GAAkB;IACnC,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,oBAAgB,CAAC,KAAK;IAC/B,OAAO,EAAE,EAAE;CACZ,CAAC;AACF,MAAM,cAAc,GAAmB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAe,CAAC,MAAM,EAAE,CAAC;AAGxF,MAAM,QAAQ,GAAkB;IAC9B,EAAE,EAAE,IAAI;IACR,WAAW,EAAE,0BAA0B;IACvC,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,IAAI,IAAI,EAAE;CACtB,CAAC;AACF,MAAM,eAAe,GAAyB,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAI7E,MAAM,gBAAgB,GAAiC;IACrD,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,oBAAgB,CAAC,QAAQ;IAClC,OAAO,EAAE,CAAC,sBAAsB,CAAC;CAClC,CAAC;AAEF,KAAK,SAAS,CAAC;AACf,KAAK,MAAM,CAAC;AACZ,KAAK,SAAS,CAAC;AACf,KAAK,WAAW,CAAC;AACjB,KAAK,YAAY,CAAC;AAClB,KAAK,aAAa,CAAC;AACnB,KAAK,cAAc,CAAC;AACpB,KAAK,QAAQ,CAAC;AACd,KAAK,eAAe,CAAC;AACrB,KAAK,gBAAgB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const API_KEY_HEADER = "abyss-api-key";
2
+ export declare function authHeader(apiKey?: string): Record<string, string>;
3
+ export declare function serializeProbeQuery<T extends object>(query: T): Record<string, unknown>;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serializeProbeQuery = exports.authHeader = exports.API_KEY_HEADER = void 0;
4
+ exports.API_KEY_HEADER = 'abyss-api-key';
5
+ function authHeader(apiKey) {
6
+ return apiKey ? { [exports.API_KEY_HEADER]: apiKey } : {};
7
+ }
8
+ exports.authHeader = authHeader;
9
+ function serializeProbeQuery(query) {
10
+ const out = {};
11
+ for (const [key, value] of Object.entries(query)) {
12
+ if (value === undefined || value === null)
13
+ continue;
14
+ const wireKey = key === 'organizationId' ? 'organization_id' : key;
15
+ out[wireKey] = value instanceof Date ? value.toISOString() : value;
16
+ }
17
+ return out;
18
+ }
19
+ exports.serializeProbeQuery = serializeProbeQuery;
20
+ //# sourceMappingURL=http.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.utils.js","sourceRoot":"","sources":["../../src/utils/http.utils.ts"],"names":[],"mappings":";;;AAQa,QAAA,cAAc,GAAG,eAAe,CAAC;AAS9C,SAAgB,UAAU,CAAC,MAAe;IACxC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,sBAAc,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACpD,CAAC;AAFD,gCAEC;AASD,SAAgB,mBAAmB,CAAmB,KAAQ;IAC5D,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;QAC5E,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,SAAS;QACpD,MAAM,OAAO,GAAG,GAAG,KAAK,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC;QACnE,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACrE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AARD,kDAQC"}
@@ -0,0 +1,2 @@
1
+ export * from './http.utils';
2
+ export * from './probe-webhook-signature.utils';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./http.utils"), exports);
18
+ __exportStar(require("./probe-webhook-signature.utils"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,kEAAgD"}
@@ -0,0 +1,8 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ export interface VerifyProbeWebhookSignatureInput {
4
+ rawBody: string | Buffer;
5
+ signatureHeader: string | undefined;
6
+ secret: string;
7
+ }
8
+ export declare function verifyProbeWebhookSignature(input: VerifyProbeWebhookSignatureInput): boolean;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.verifyProbeWebhookSignature = void 0;
4
+ function verifyProbeWebhookSignature(input) {
5
+ if (!input.signatureHeader || !input.secret)
6
+ return false;
7
+ const crypto = require('crypto');
8
+ const computed = crypto
9
+ .createHmac('sha256', input.secret)
10
+ .update(input.rawBody)
11
+ .digest('hex');
12
+ if (input.signatureHeader.length !== computed.length)
13
+ return false;
14
+ try {
15
+ return crypto.timingSafeEqual(Buffer.from(input.signatureHeader, 'hex'), Buffer.from(computed, 'hex'));
16
+ }
17
+ catch {
18
+ return false;
19
+ }
20
+ }
21
+ exports.verifyProbeWebhookSignature = verifyProbeWebhookSignature;
22
+ //# sourceMappingURL=probe-webhook-signature.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probe-webhook-signature.utils.js","sourceRoot":"","sources":["../../src/utils/probe-webhook-signature.utils.ts"],"names":[],"mappings":";;;AAiCA,SAAgB,2BAA2B,CAAC,KAAuC;IACjF,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAG1D,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAW,MAAM;SAC5B,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;SAClC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;SACrB,MAAM,CAAC,KAAK,CAAC,CAAC;IAEjB,IAAI,KAAK,CAAC,eAAe,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAEnE,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,eAAe,CAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,EACzC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAC7B,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QAGP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAtBD,kEAsBC"}
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@abyss-project/probe",
3
+ "version": "1.0.0",
4
+ "description": "Core package to interact with AbyssProbe (antivirus scanning platform primitive)",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "publishConfig": {
8
+ "access": "public"
9
+ },
10
+ "scripts": {
11
+ "lint": "eslint \"{src,apps,libs,test,core}/**/*.ts\" --fix",
12
+ "lint:check": "eslint \"{src,apps,libs,test,core}/**/*.ts\" --max-warnings 0",
13
+ "tsc": "tsc",
14
+ "build": "tsc",
15
+ "prepublishOnly": "tsc",
16
+ "dev": "tsc --watch"
17
+ },
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "https://gitlab.com/abyss-group"
21
+ },
22
+ "keywords": [],
23
+ "author": "scylla",
24
+ "license": "ISC",
25
+ "bugs": {
26
+ "url": "https://gitlab.com/abyss-group/abyss-tools/abyss-tools"
27
+ },
28
+ "homepage": "https://gitlab.com/abyss-group/abyss-tools/abyss-tools",
29
+ "dependencies": {
30
+ "axios": "^1.6.0",
31
+ "axios-retry": "^4.5.0",
32
+ "form-data": "^4.0.0"
33
+ },
34
+ "devDependencies": {
35
+ "@types/node": "^20.11.0",
36
+ "@typescript-eslint/eslint-plugin": "6.21.0",
37
+ "@typescript-eslint/parser": "7.3.1",
38
+ "eslint": "^7.28.0",
39
+ "eslint-config-prettier": "^8.3.0",
40
+ "eslint-config-standard": "^16.0.3",
41
+ "eslint-plugin-filenames-simple": "^0.7.0",
42
+ "eslint-plugin-import": "^2.27.4",
43
+ "eslint-plugin-node": "^11.1.0",
44
+ "eslint-plugin-prettier": "^3.4.0",
45
+ "eslint-plugin-promise": "^5.1.0",
46
+ "prettier": "2.3.1",
47
+ "tsc-watch": "^4.6.2",
48
+ "typescript": "5.4.2"
49
+ }
50
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "compilerOptions": {
3
+ "incremental": false,
4
+ "target": "es2021",
5
+ "lib": [
6
+ "dom",
7
+ "es2021"
8
+ ],
9
+ "experimentalDecorators": true,
10
+ "emitDecoratorMetadata": true,
11
+ "module": "commonjs",
12
+ "rootDir": "src",
13
+ "moduleResolution": "node",
14
+ "resolveJsonModule": true,
15
+ "allowJs": true,
16
+ "declaration": true,
17
+ "sourceMap": true,
18
+ "outDir": "./dist",
19
+ "removeComments": true,
20
+ "allowSyntheticDefaultImports": true,
21
+ "esModuleInterop": true,
22
+ "forceConsistentCasingInFileNames": true,
23
+ "strict": true,
24
+ "strictNullChecks": true,
25
+ "strictFunctionTypes": true,
26
+ "strictPropertyInitialization": false,
27
+ "skipLibCheck": true
28
+ },
29
+ "include": [
30
+ "./src"
31
+ ],
32
+ "exclude": [
33
+ "./dist/**/*",
34
+ "./src/**/*.spec.ts"
35
+ ]
36
+ }