@superblocksteam/sabs-client 0.684.0 → 0.686.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/dist/sabs.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ApplicationMetadata, BuildResponse, BuildStatus, ListResponse, StatusResponse, TerminateResponse, BulkStatusResponse, CreateLiveEditResponse, TerminateLiveEditResponse } from '@superblocksteam/sabs-types';
1
+ import { ApplicationMetadata, BuildResponse, BuildStatus, ListResponse, StatusResponse, TerminateResponse, BulkStatusResponse, CreateLiveEditResponse, TerminateLiveEditResponse, ScanApplicationMetadata, ScanListResponse, ScanResponse, ScanStatus, ScanStatusResponse, ScanTerminateResponse } from '@superblocksteam/sabs-types';
2
2
  /**
3
3
  * Optional configuration for retry and backoff behavior.
4
4
  * Inject these in tests to exercise retry logic without real delays.
@@ -223,6 +223,114 @@ export declare class SabsClient {
223
223
  branch: string;
224
224
  };
225
225
  }>;
226
+ /**
227
+ * Start a security scan of an application directory
228
+ *
229
+ * @param params - Scan parameters
230
+ * @param params.artifactReadToken - Token the scan pod presents to Bucketeer for artifact presigns
231
+ * @param params.directoryHash - Hash of the application directory to scan
232
+ * @param params.meta - Application metadata (ID and organization ID)
233
+ * @param params.scanKey - Secret scan key, later required to terminate the scan
234
+ * @param params.accessToken - JWT access token for authorization
235
+ * @param params.policyGate - Optional review-run attribution. Omit for an unattributed scan
236
+ * @returns Promise resolving to scan information including scan ID
237
+ * @throws BadRequestError if the directory hash, application metadata, application ID, organization ID, scan key, artifact read token, or access token are empty or invalid
238
+ * @throws UnauthorizedError if the access token is invalid or missing the required scopes
239
+ * @throws InternalServerError if the service has an unexpected error while performing this request
240
+ * @throws HttpError if the request fails for an unknown reason
241
+ */
242
+ scan({ artifactReadToken, directoryHash, meta, scanKey, accessToken, policyGate }: {
243
+ artifactReadToken: string;
244
+ directoryHash: string;
245
+ meta: ScanApplicationMetadata;
246
+ scanKey: string;
247
+ accessToken?: string;
248
+ policyGate?: {
249
+ aiAgentRunId?: string;
250
+ applicationCommitId?: string;
251
+ executionContext?: string;
252
+ profileId?: string;
253
+ reviewPolicyId?: string;
254
+ reviewPolicyVersionId?: string;
255
+ runnerType?: string;
256
+ runtime?: string;
257
+ token?: string;
258
+ trigger?: string;
259
+ };
260
+ }): Promise<ScanResponse>;
261
+ /**
262
+ * Get the status of a security scan
263
+ *
264
+ * @param params - Status query parameters
265
+ * @param params.scanId - ID of the scan to check
266
+ * @param params.accessToken - JWT access token for authorization
267
+ * @returns Promise resolving to scan status, including a findings summary once terminal
268
+ * @throws BadRequestError if the scan ID or access token is empty or invalid
269
+ * @throws UnauthorizedError if the access token is invalid or missing the required scopes
270
+ * @throws NotFoundError if the scan ID is invalid
271
+ * @throws HttpError if the request fails for an unknown reason
272
+ */
273
+ scanStatus({ scanId, accessToken }: {
274
+ scanId: string;
275
+ accessToken?: string;
276
+ }): Promise<ScanStatusResponse>;
277
+ /**
278
+ * List the scans recorded for an application directory
279
+ *
280
+ * @param params - List query parameters
281
+ * @param params.organizationId - Organization ID
282
+ * @param params.applicationId - Application ID
283
+ * @param params.directoryHash - Hash of the application directory
284
+ * @param params.accessToken - JWT access token for authorization
285
+ * @returns Promise resolving to the scans for that directory
286
+ * @throws BadRequestError if any parameter is empty or invalid
287
+ * @throws UnauthorizedError if the access token is invalid or missing the required scopes
288
+ * @throws HttpError if the request fails for an unknown reason
289
+ */
290
+ scanList({ organizationId, applicationId, directoryHash, accessToken }: {
291
+ organizationId: string;
292
+ applicationId: string;
293
+ directoryHash: string;
294
+ accessToken?: string;
295
+ }): Promise<ScanListResponse>;
296
+ /**
297
+ * Terminate a running scan with a final status
298
+ *
299
+ * @param params - Termination parameters
300
+ * @param params.scanId - ID of the scan to terminate
301
+ * @param params.status - Final status of the scan
302
+ * @param params.scanKey - Secret scan key issued when the scan was created
303
+ * @param params.error - Optional error message if the scan failed
304
+ * @param params.summary - Optional tally of what the scan found
305
+ * @param params.stepTimings - Optional step timing metrics in milliseconds
306
+ * @param params.accessToken - JWT access token for authorization
307
+ * @returns Promise resolving to termination confirmation
308
+ * @throws BadRequestError if the scan ID, status, scan key, or access token are empty or invalid
309
+ * @throws UnauthorizedError if the access token is invalid or the scan key does not match
310
+ * @throws NotFoundError if the scan ID is invalid
311
+ * @throws HttpError if the request fails for an unknown reason
312
+ */
313
+ scanTerminate({ scanId, status, scanKey, error, summary, stepTimings, accessToken }: {
314
+ scanId: string;
315
+ status: ScanStatus;
316
+ scanKey?: string;
317
+ error?: string;
318
+ summary?: {
319
+ totalFindings?: number;
320
+ highSeverityFindings?: number;
321
+ sourceFindings?: number;
322
+ builtAssetFindings?: number;
323
+ scannerVersion?: string;
324
+ };
325
+ stepTimings?: {
326
+ fetchSourceMs?: number;
327
+ fetchArtifactsMs?: number;
328
+ sourceScanMs?: number;
329
+ builtAssetScanMs?: number;
330
+ reportFindingsMs?: number;
331
+ };
332
+ accessToken?: string;
333
+ }): Promise<ScanTerminateResponse>;
226
334
  private executeRequest;
227
335
  private getRequestHeaders;
228
336
  private isRetriableError;
@@ -1 +1 @@
1
- {"version":3,"file":"sabs.d.ts","sourceRoot":"","sources":["../src/sabs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sabs.d.ts","sourceRoot":"","sources":["../src/sabs.ts"],"names":[],"mappings":"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"}
package/dist/sabs.js CHANGED
@@ -7,6 +7,13 @@ exports.SabsClient = void 0;
7
7
  const sabs_types_1 = require("@superblocksteam/sabs-types");
8
8
  const axios_1 = __importDefault(require("axios"));
9
9
  const errors_1 = require("./errors");
10
+ /**
11
+ * Converts a count or duration to protobuf int64. Unlike a truthiness check
12
+ * this preserves 0, which for a scan means "found nothing" rather than "unknown".
13
+ */
14
+ function toOptionalBigInt(value) {
15
+ return value === undefined ? undefined : BigInt(value);
16
+ }
10
17
  /**
11
18
  * SABS (Superblocks Application Build System) TypeScript Client
12
19
  *
@@ -367,6 +374,179 @@ class SabsClient {
367
374
  }
368
375
  }, accessToken, { idempotent: false });
369
376
  }
377
+ /**
378
+ * Start a security scan of an application directory
379
+ *
380
+ * @param params - Scan parameters
381
+ * @param params.artifactReadToken - Token the scan pod presents to Bucketeer for artifact presigns
382
+ * @param params.directoryHash - Hash of the application directory to scan
383
+ * @param params.meta - Application metadata (ID and organization ID)
384
+ * @param params.scanKey - Secret scan key, later required to terminate the scan
385
+ * @param params.accessToken - JWT access token for authorization
386
+ * @param params.policyGate - Optional review-run attribution. Omit for an unattributed scan
387
+ * @returns Promise resolving to scan information including scan ID
388
+ * @throws BadRequestError if the directory hash, application metadata, application ID, organization ID, scan key, artifact read token, or access token are empty or invalid
389
+ * @throws UnauthorizedError if the access token is invalid or missing the required scopes
390
+ * @throws InternalServerError if the service has an unexpected error while performing this request
391
+ * @throws HttpError if the request fails for an unknown reason
392
+ */
393
+ async scan({ artifactReadToken, directoryHash, meta, scanKey, accessToken, policyGate }) {
394
+ if (!directoryHash || directoryHash.length === 0) {
395
+ throw (0, errors_1.createClientError)('Directory hash is required');
396
+ }
397
+ if (!meta) {
398
+ throw (0, errors_1.createClientError)('Application metadata is required');
399
+ }
400
+ if (!meta.id || meta.id.length === 0) {
401
+ throw (0, errors_1.createClientError)('Application ID is required');
402
+ }
403
+ if (!meta.organizationId || meta.organizationId.length === 0) {
404
+ throw (0, errors_1.createClientError)('Organization ID is required');
405
+ }
406
+ if (!scanKey || scanKey.length === 0) {
407
+ throw (0, errors_1.createClientError)('Scan key is required');
408
+ }
409
+ if (!accessToken || accessToken.length === 0) {
410
+ throw (0, errors_1.createClientError)('Access token is required');
411
+ }
412
+ // Without it the pod cannot presign its artifacts, so it would start only
413
+ // to fail after paying the cost of scheduling.
414
+ if (!artifactReadToken || artifactReadToken.length === 0) {
415
+ throw (0, errors_1.createClientError)('Artifact read token is required');
416
+ }
417
+ const data = new sabs_types_1.ScanRequest({
418
+ artifactReadToken,
419
+ directoryHash,
420
+ applicationMetadata: new sabs_types_1.ScanApplicationMetadata({ ...meta }),
421
+ scanKey
422
+ });
423
+ if (policyGate) {
424
+ data.policyGate = new sabs_types_1.PolicyGateContext({ ...policyGate });
425
+ }
426
+ return this.executeRequest({
427
+ method: 'POST',
428
+ url: `${this.baseUrl}/v1/scans`,
429
+ data
430
+ }, accessToken, { idempotent: false });
431
+ }
432
+ /**
433
+ * Get the status of a security scan
434
+ *
435
+ * @param params - Status query parameters
436
+ * @param params.scanId - ID of the scan to check
437
+ * @param params.accessToken - JWT access token for authorization
438
+ * @returns Promise resolving to scan status, including a findings summary once terminal
439
+ * @throws BadRequestError if the scan ID or access token is empty or invalid
440
+ * @throws UnauthorizedError if the access token is invalid or missing the required scopes
441
+ * @throws NotFoundError if the scan ID is invalid
442
+ * @throws HttpError if the request fails for an unknown reason
443
+ */
444
+ async scanStatus({ scanId, accessToken }) {
445
+ if (!scanId || scanId.length === 0) {
446
+ throw (0, errors_1.createClientError)('Scan ID is required');
447
+ }
448
+ if (!accessToken || accessToken.length === 0) {
449
+ throw (0, errors_1.createClientError)('Access token is required');
450
+ }
451
+ return this.executeRequest({
452
+ method: 'GET',
453
+ url: `${this.baseUrl}/v1/scans/${scanId}`
454
+ }, accessToken);
455
+ }
456
+ /**
457
+ * List the scans recorded for an application directory
458
+ *
459
+ * @param params - List query parameters
460
+ * @param params.organizationId - Organization ID
461
+ * @param params.applicationId - Application ID
462
+ * @param params.directoryHash - Hash of the application directory
463
+ * @param params.accessToken - JWT access token for authorization
464
+ * @returns Promise resolving to the scans for that directory
465
+ * @throws BadRequestError if any parameter is empty or invalid
466
+ * @throws UnauthorizedError if the access token is invalid or missing the required scopes
467
+ * @throws HttpError if the request fails for an unknown reason
468
+ */
469
+ async scanList({ organizationId, applicationId, directoryHash, accessToken }) {
470
+ if (!organizationId || organizationId.length === 0) {
471
+ throw (0, errors_1.createClientError)('Organization ID is required');
472
+ }
473
+ if (!applicationId || applicationId.length === 0) {
474
+ throw (0, errors_1.createClientError)('Application ID is required');
475
+ }
476
+ if (!directoryHash || directoryHash.length === 0) {
477
+ throw (0, errors_1.createClientError)('Directory hash is required');
478
+ }
479
+ if (!accessToken || accessToken.length === 0) {
480
+ throw (0, errors_1.createClientError)('Access token is required');
481
+ }
482
+ return this.executeRequest({
483
+ method: 'GET',
484
+ url: `${this.baseUrl}/v1/scans`,
485
+ params: new sabs_types_1.ScanListRequest({ organizationId, applicationId, directoryHash })
486
+ }, accessToken);
487
+ }
488
+ /**
489
+ * Terminate a running scan with a final status
490
+ *
491
+ * @param params - Termination parameters
492
+ * @param params.scanId - ID of the scan to terminate
493
+ * @param params.status - Final status of the scan
494
+ * @param params.scanKey - Secret scan key issued when the scan was created
495
+ * @param params.error - Optional error message if the scan failed
496
+ * @param params.summary - Optional tally of what the scan found
497
+ * @param params.stepTimings - Optional step timing metrics in milliseconds
498
+ * @param params.accessToken - JWT access token for authorization
499
+ * @returns Promise resolving to termination confirmation
500
+ * @throws BadRequestError if the scan ID, status, scan key, or access token are empty or invalid
501
+ * @throws UnauthorizedError if the access token is invalid or the scan key does not match
502
+ * @throws NotFoundError if the scan ID is invalid
503
+ * @throws HttpError if the request fails for an unknown reason
504
+ */
505
+ async scanTerminate({ scanId, status, scanKey, error, summary, stepTimings, accessToken }) {
506
+ if (!scanId || scanId.length === 0) {
507
+ throw (0, errors_1.createClientError)('Scan ID is required');
508
+ }
509
+ if (!status) {
510
+ throw (0, errors_1.createClientError)('Scan status is required');
511
+ }
512
+ if (!scanKey || scanKey.length === 0) {
513
+ throw (0, errors_1.createClientError)('Scan key is required');
514
+ }
515
+ if (!accessToken || accessToken.length === 0) {
516
+ throw (0, errors_1.createClientError)('Access token is required');
517
+ }
518
+ const requestData = new sabs_types_1.ScanTerminateRequest({
519
+ scanId,
520
+ status,
521
+ error,
522
+ scanKey
523
+ });
524
+ // A scan that found nothing is a meaningful result, so counts are converted
525
+ // whenever they are present rather than only when truthy.
526
+ if (summary) {
527
+ requestData.summary = new sabs_types_1.ScanSummary({
528
+ totalFindings: toOptionalBigInt(summary.totalFindings),
529
+ highSeverityFindings: toOptionalBigInt(summary.highSeverityFindings),
530
+ sourceFindings: toOptionalBigInt(summary.sourceFindings),
531
+ builtAssetFindings: toOptionalBigInt(summary.builtAssetFindings),
532
+ scannerVersion: summary.scannerVersion
533
+ });
534
+ }
535
+ if (stepTimings) {
536
+ requestData.stepTimings = new sabs_types_1.ScanStepTimings({
537
+ fetchSourceMs: toOptionalBigInt(stepTimings.fetchSourceMs),
538
+ fetchArtifactsMs: toOptionalBigInt(stepTimings.fetchArtifactsMs),
539
+ sourceScanMs: toOptionalBigInt(stepTimings.sourceScanMs),
540
+ builtAssetScanMs: toOptionalBigInt(stepTimings.builtAssetScanMs),
541
+ reportFindingsMs: toOptionalBigInt(stepTimings.reportFindingsMs)
542
+ });
543
+ }
544
+ return this.executeRequest({
545
+ method: 'POST',
546
+ url: `${this.baseUrl}/v1/scans/${scanId}/terminate`,
547
+ data: requestData
548
+ }, accessToken);
549
+ }
370
550
  async executeRequest(config, accessToken, opts = {}) {
371
551
  const idempotent = opts.idempotent ?? true;
372
552
  const attemptRequest = async (attempt) => {
package/dist/sabs.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sabs.js","sourceRoot":"","sources":["../src/sabs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sabs.js","sourceRoot":"","sources":["../src/sabs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=scan.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.test.d.ts","sourceRoot":"","sources":["../src/scan.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,249 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const sabs_types_1 = require("@superblocksteam/sabs-types");
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const errors_1 = require("./errors");
9
+ const sabs_1 = require("./sabs");
10
+ describe('sabs scan api', () => {
11
+ const anyAccessToken = 'any-access-token';
12
+ const anyArtifactReadToken = 'bucketeer-org-read-token';
13
+ const anyScanKey = 'any-secret-scan-key';
14
+ const anyMeta = new sabs_types_1.ScanApplicationMetadata({
15
+ id: 'anyApplicationId',
16
+ organizationId: 'anyOrganizationId'
17
+ });
18
+ afterEach(() => {
19
+ jest.restoreAllMocks();
20
+ });
21
+ const sentScanRequest = (mockAxios) => mockAxios.mock.calls[0][0].data;
22
+ const sentTerminateRequest = (mockAxios) => mockAxios.mock.calls[0][0].data;
23
+ describe('scan', () => {
24
+ test('posts the directory hash, scan key, and artifact read token to the scans endpoint', async () => {
25
+ const mockAxios = jest.spyOn(axios_1.default, 'request');
26
+ mockAxios.mockResolvedValue({ data: { scanId: 'expectedScanId' } });
27
+ const sabs = new sabs_1.SabsClient('http://localhost:3000');
28
+ const result = await sabs.scan({
29
+ artifactReadToken: anyArtifactReadToken,
30
+ directoryHash: 'anyDirectoryHash',
31
+ meta: anyMeta,
32
+ scanKey: anyScanKey,
33
+ accessToken: anyAccessToken
34
+ });
35
+ expect(result).toEqual({ scanId: 'expectedScanId' });
36
+ expect(sentScanRequest(mockAxios).artifactReadToken).toEqual(anyArtifactReadToken);
37
+ expect(mockAxios).toHaveBeenCalledWith(expect.objectContaining({
38
+ method: 'POST',
39
+ url: 'http://localhost:3000/v1/scans',
40
+ headers: { Authorization: `Bearer ${anyAccessToken}` }
41
+ }));
42
+ });
43
+ test('sends the policy gate context so findings can be attributed to a review run', async () => {
44
+ const mockAxios = jest.spyOn(axios_1.default, 'request');
45
+ mockAxios.mockResolvedValue({ data: { scanId: 'expectedScanId' } });
46
+ const sabs = new sabs_1.SabsClient('http://localhost:3000');
47
+ await sabs.scan({
48
+ artifactReadToken: anyArtifactReadToken,
49
+ directoryHash: 'anyDirectoryHash',
50
+ meta: anyMeta,
51
+ scanKey: anyScanKey,
52
+ accessToken: anyAccessToken,
53
+ policyGate: {
54
+ reviewPolicyId: 'anyReviewPolicyId',
55
+ reviewPolicyVersionId: 'anyReviewPolicyVersionId',
56
+ token: 'policy-gate-callback-token',
57
+ trigger: 'anyTrigger'
58
+ }
59
+ });
60
+ expect(sentScanRequest(mockAxios).policyGate).toEqual(expect.objectContaining({
61
+ reviewPolicyId: 'anyReviewPolicyId',
62
+ reviewPolicyVersionId: 'anyReviewPolicyVersionId',
63
+ token: 'policy-gate-callback-token',
64
+ trigger: 'anyTrigger'
65
+ }));
66
+ });
67
+ test('omits the policy gate when the caller did not supply one', async () => {
68
+ const mockAxios = jest.spyOn(axios_1.default, 'request');
69
+ mockAxios.mockResolvedValue({ data: { scanId: 'expectedScanId' } });
70
+ const sabs = new sabs_1.SabsClient('http://localhost:3000');
71
+ await sabs.scan({
72
+ artifactReadToken: anyArtifactReadToken,
73
+ directoryHash: 'anyDirectoryHash',
74
+ meta: anyMeta,
75
+ scanKey: anyScanKey,
76
+ accessToken: anyAccessToken
77
+ });
78
+ expect(sentScanRequest(mockAxios).policyGate).toBeUndefined();
79
+ });
80
+ test.each([
81
+ ['directory hash', { directoryHash: '' }],
82
+ ['scan key', { scanKey: '' }],
83
+ ['access token', { accessToken: '' }],
84
+ ['artifact read token', { artifactReadToken: '' }]
85
+ ])('rejects a missing %s before issuing a request', async (_name, override) => {
86
+ const mockAxios = jest.spyOn(axios_1.default, 'request');
87
+ const sabs = new sabs_1.SabsClient('http://localhost:3000');
88
+ await expect(sabs.scan({
89
+ artifactReadToken: anyArtifactReadToken,
90
+ directoryHash: 'anyDirectoryHash',
91
+ meta: anyMeta,
92
+ scanKey: anyScanKey,
93
+ accessToken: anyAccessToken,
94
+ ...override
95
+ })).rejects.toThrow(errors_1.BadRequestError);
96
+ expect(mockAxios).not.toHaveBeenCalled();
97
+ });
98
+ test('rejects application metadata that is missing the organization', async () => {
99
+ const mockAxios = jest.spyOn(axios_1.default, 'request');
100
+ const sabs = new sabs_1.SabsClient('http://localhost:3000');
101
+ await expect(sabs.scan({
102
+ artifactReadToken: anyArtifactReadToken,
103
+ directoryHash: 'anyDirectoryHash',
104
+ meta: new sabs_types_1.ScanApplicationMetadata({ id: 'anyApplicationId', organizationId: '' }),
105
+ scanKey: anyScanKey,
106
+ accessToken: anyAccessToken
107
+ })).rejects.toThrow(errors_1.BadRequestError);
108
+ expect(mockAxios).not.toHaveBeenCalled();
109
+ });
110
+ });
111
+ describe('scanStatus', () => {
112
+ test('reads the status of a single scan', async () => {
113
+ const mockAxios = jest.spyOn(axios_1.default, 'request');
114
+ mockAxios.mockResolvedValue({ data: { scanId: 'anyScanId', status: sabs_types_1.ScanStatus.SUCCESS } });
115
+ const sabs = new sabs_1.SabsClient('http://localhost:3000');
116
+ const result = await sabs.scanStatus({ scanId: 'anyScanId', accessToken: anyAccessToken });
117
+ expect(result.status).toEqual(sabs_types_1.ScanStatus.SUCCESS);
118
+ expect(mockAxios).toHaveBeenCalledWith(expect.objectContaining({
119
+ method: 'GET',
120
+ url: 'http://localhost:3000/v1/scans/anyScanId'
121
+ }));
122
+ });
123
+ test('rejects a missing scan id before issuing a request', async () => {
124
+ const mockAxios = jest.spyOn(axios_1.default, 'request');
125
+ const sabs = new sabs_1.SabsClient('http://localhost:3000');
126
+ await expect(sabs.scanStatus({ scanId: '', accessToken: anyAccessToken })).rejects.toThrow(errors_1.BadRequestError);
127
+ expect(mockAxios).not.toHaveBeenCalled();
128
+ });
129
+ });
130
+ describe('scanList', () => {
131
+ test('queries scans for an application directory', async () => {
132
+ const mockAxios = jest.spyOn(axios_1.default, 'request');
133
+ mockAxios.mockResolvedValue({ data: { scans: [] } });
134
+ const sabs = new sabs_1.SabsClient('http://localhost:3000');
135
+ const result = await sabs.scanList({
136
+ organizationId: 'anyOrganizationId',
137
+ applicationId: 'anyApplicationId',
138
+ directoryHash: 'anyDirectoryHash',
139
+ accessToken: anyAccessToken
140
+ });
141
+ expect(result).toEqual({ scans: [] });
142
+ expect(mockAxios).toHaveBeenCalledWith(expect.objectContaining({
143
+ method: 'GET',
144
+ url: 'http://localhost:3000/v1/scans',
145
+ params: {
146
+ organizationId: 'anyOrganizationId',
147
+ applicationId: 'anyApplicationId',
148
+ directoryHash: 'anyDirectoryHash'
149
+ }
150
+ }));
151
+ });
152
+ });
153
+ describe('scanTerminate', () => {
154
+ test('reports the terminal status, summary and timings', async () => {
155
+ const mockAxios = jest.spyOn(axios_1.default, 'request');
156
+ mockAxios.mockResolvedValue({ data: { scanId: 'anyScanId', status: sabs_types_1.ScanStatus.SUCCESS } });
157
+ const sabs = new sabs_1.SabsClient('http://localhost:3000');
158
+ await sabs.scanTerminate({
159
+ scanId: 'anyScanId',
160
+ status: sabs_types_1.ScanStatus.SUCCESS,
161
+ scanKey: anyScanKey,
162
+ accessToken: anyAccessToken,
163
+ summary: {
164
+ totalFindings: 3,
165
+ highSeverityFindings: 1,
166
+ sourceFindings: 2,
167
+ builtAssetFindings: 1,
168
+ scannerVersion: '1.2.3'
169
+ },
170
+ stepTimings: { sourceScanMs: 250 }
171
+ });
172
+ const sent = sentTerminateRequest(mockAxios);
173
+ expect(mockAxios.mock.calls[0][0].url).toEqual('http://localhost:3000/v1/scans/anyScanId/terminate');
174
+ // Counts cross the wire as protobuf int64, which serializes as bigint.
175
+ expect(sent.summary?.totalFindings).toEqual(BigInt(3));
176
+ expect(sent.summary?.highSeverityFindings).toEqual(BigInt(1));
177
+ expect(sent.summary?.scannerVersion).toEqual('1.2.3');
178
+ expect(sent.stepTimings?.sourceScanMs).toEqual(BigInt(250));
179
+ });
180
+ test('reports a step that took under a millisecond as measured rather than unmeasured', async () => {
181
+ const mockAxios = jest.spyOn(axios_1.default, 'request');
182
+ mockAxios.mockResolvedValue({ data: { scanId: 'anyScanId', status: sabs_types_1.ScanStatus.SUCCESS } });
183
+ const sabs = new sabs_1.SabsClient('http://localhost:3000');
184
+ await sabs.scanTerminate({
185
+ scanId: 'anyScanId',
186
+ status: sabs_types_1.ScanStatus.SUCCESS,
187
+ scanKey: anyScanKey,
188
+ accessToken: anyAccessToken,
189
+ stepTimings: { fetchSourceMs: 0, sourceScanMs: 120 }
190
+ });
191
+ // Step timings have explicit presence, so a 0 must arrive as 0 and not as
192
+ // an absent field, which would read as "this step never ran".
193
+ const sent = sentTerminateRequest(mockAxios);
194
+ expect(sent.stepTimings?.fetchSourceMs).toEqual(BigInt(0));
195
+ expect(sent.stepTimings?.builtAssetScanMs).toBeUndefined();
196
+ });
197
+ test('reports a zero finding count as a real result', async () => {
198
+ const mockAxios = jest.spyOn(axios_1.default, 'request');
199
+ mockAxios.mockResolvedValue({ data: { scanId: 'anyScanId', status: sabs_types_1.ScanStatus.SUCCESS } });
200
+ const sabs = new sabs_1.SabsClient('http://localhost:3000');
201
+ await sabs.scanTerminate({
202
+ scanId: 'anyScanId',
203
+ status: sabs_types_1.ScanStatus.SUCCESS,
204
+ scanKey: anyScanKey,
205
+ accessToken: anyAccessToken,
206
+ summary: {
207
+ totalFindings: 0,
208
+ highSeverityFindings: 0,
209
+ sourceFindings: 0,
210
+ builtAssetFindings: 0,
211
+ scannerVersion: '1.2.3'
212
+ }
213
+ });
214
+ const sent = sentTerminateRequest(mockAxios);
215
+ expect(sent.summary?.totalFindings).toEqual(BigInt(0));
216
+ expect(sent.summary?.scannerVersion).toEqual('1.2.3');
217
+ });
218
+ test('reports a failure with its error message', async () => {
219
+ const mockAxios = jest.spyOn(axios_1.default, 'request');
220
+ mockAxios.mockResolvedValue({ data: { scanId: 'anyScanId', status: sabs_types_1.ScanStatus.FAILED } });
221
+ const sabs = new sabs_1.SabsClient('http://localhost:3000');
222
+ await sabs.scanTerminate({
223
+ scanId: 'anyScanId',
224
+ status: sabs_types_1.ScanStatus.FAILED,
225
+ scanKey: anyScanKey,
226
+ accessToken: anyAccessToken,
227
+ error: 'semgrep exploded'
228
+ });
229
+ expect(sentTerminateRequest(mockAxios).error).toEqual('semgrep exploded');
230
+ });
231
+ test.each([
232
+ ['scan id', { scanId: '' }],
233
+ ['scan key', { scanKey: '' }],
234
+ ['access token', { accessToken: '' }]
235
+ ])('rejects a missing %s before issuing a request', async (_name, override) => {
236
+ const mockAxios = jest.spyOn(axios_1.default, 'request');
237
+ const sabs = new sabs_1.SabsClient('http://localhost:3000');
238
+ await expect(sabs.scanTerminate({
239
+ scanId: 'anyScanId',
240
+ status: sabs_types_1.ScanStatus.SUCCESS,
241
+ scanKey: anyScanKey,
242
+ accessToken: anyAccessToken,
243
+ ...override
244
+ })).rejects.toThrow(errors_1.BadRequestError);
245
+ expect(mockAxios).not.toHaveBeenCalled();
246
+ });
247
+ });
248
+ });
249
+ //# sourceMappingURL=scan.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.test.js","sourceRoot":"","sources":["../src/scan.test.ts"],"names":[],"mappings":";;;;;AAAA,4DAAqH;AACrH,kDAA0B;AAE1B,qCAA2C;AAC3C,iCAAoC;AAEpC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,MAAM,cAAc,GAAG,kBAAkB,CAAC;IAC1C,MAAM,oBAAoB,GAAG,0BAA0B,CAAC;IACxD,MAAM,UAAU,GAAG,qBAAqB,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,oCAAuB,CAAC;QAC1C,EAAE,EAAE,kBAAkB;QACtB,cAAc,EAAE,mBAAmB;KACpC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,CAAC,SAA2B,EAAe,EAAE,CACnE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAmB,CAAC;IAEjD,MAAM,oBAAoB,GAAG,CAAC,SAA2B,EAAwB,EAAE,CACjF,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAA4B,CAAC;IAE1D,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;QACpB,IAAI,CAAC,mFAAmF,EAAE,KAAK,IAAI,EAAE;YACnG,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAK,EAAE,SAAS,CAAC,CAAC;YAC/C,SAAS,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;YAEpE,MAAM,IAAI,GAAG,IAAI,iBAAU,CAAC,uBAAuB,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;gBAC7B,iBAAiB,EAAE,oBAAoB;gBACvC,aAAa,EAAE,kBAAkB;gBACjC,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,UAAU;gBACnB,WAAW,EAAE,cAAc;aAC5B,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;YACrD,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;YACnF,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CACpC,MAAM,CAAC,gBAAgB,CAAC;gBACtB,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,gCAAgC;gBACrC,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,cAAc,EAAE,EAAE;aACvD,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;YAC7F,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAK,EAAE,SAAS,CAAC,CAAC;YAC/C,SAAS,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;YAEpE,MAAM,IAAI,GAAG,IAAI,iBAAU,CAAC,uBAAuB,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,IAAI,CAAC;gBACd,iBAAiB,EAAE,oBAAoB;gBACvC,aAAa,EAAE,kBAAkB;gBACjC,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,UAAU;gBACnB,WAAW,EAAE,cAAc;gBAC3B,UAAU,EAAE;oBACV,cAAc,EAAE,mBAAmB;oBACnC,qBAAqB,EAAE,0BAA0B;oBACjD,KAAK,EAAE,4BAA4B;oBACnC,OAAO,EAAE,YAAY;iBACtB;aACF,CAAC,CAAC;YAEH,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CACnD,MAAM,CAAC,gBAAgB,CAAC;gBACtB,cAAc,EAAE,mBAAmB;gBACnC,qBAAqB,EAAE,0BAA0B;gBACjD,KAAK,EAAE,4BAA4B;gBACnC,OAAO,EAAE,YAAY;aACtB,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAK,EAAE,SAAS,CAAC,CAAC;YAC/C,SAAS,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;YAEpE,MAAM,IAAI,GAAG,IAAI,iBAAU,CAAC,uBAAuB,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,IAAI,CAAC;gBACd,iBAAiB,EAAE,oBAAoB;gBACvC,aAAa,EAAE,kBAAkB;gBACjC,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,UAAU;gBACnB,WAAW,EAAE,cAAc;aAC5B,CAAC,CAAC;YAEH,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC;YACR,CAAC,gBAAgB,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;YACzC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YAC7B,CAAC,cAAc,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;YACrC,CAAC,qBAAqB,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAC;SACnD,CAAC,CAAC,+CAA+C,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAK,EAAE,SAAS,CAAC,CAAC;YAE/C,MAAM,IAAI,GAAG,IAAI,iBAAU,CAAC,uBAAuB,CAAC,CAAC;YACrD,MAAM,MAAM,CACV,IAAI,CAAC,IAAI,CAAC;gBACR,iBAAiB,EAAE,oBAAoB;gBACvC,aAAa,EAAE,kBAAkB;gBACjC,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,UAAU;gBACnB,WAAW,EAAE,cAAc;gBAC3B,GAAG,QAAQ;aACZ,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,wBAAe,CAAC,CAAC;YAEnC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC/E,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAK,EAAE,SAAS,CAAC,CAAC;YAE/C,MAAM,IAAI,GAAG,IAAI,iBAAU,CAAC,uBAAuB,CAAC,CAAC;YACrD,MAAM,MAAM,CACV,IAAI,CAAC,IAAI,CAAC;gBACR,iBAAiB,EAAE,oBAAoB;gBACvC,aAAa,EAAE,kBAAkB;gBACjC,IAAI,EAAE,IAAI,oCAAuB,CAAC,EAAE,EAAE,EAAE,kBAAkB,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;gBACjF,OAAO,EAAE,UAAU;gBACnB,WAAW,EAAE,cAAc;aAC5B,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,wBAAe,CAAC,CAAC;YAEnC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,IAAI,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAK,EAAE,SAAS,CAAC,CAAC;YAC/C,SAAS,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,uBAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAE3F,MAAM,IAAI,GAAG,IAAI,iBAAU,CAAC,uBAAuB,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,CAAC;YAE3F,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,uBAAU,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CACpC,MAAM,CAAC,gBAAgB,CAAC;gBACtB,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,0CAA0C;aAChD,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAK,EAAE,SAAS,CAAC,CAAC;YAE/C,MAAM,IAAI,GAAG,IAAI,iBAAU,CAAC,uBAAuB,CAAC,CAAC;YACrD,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,wBAAe,CAAC,CAAC;YAE5G,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,IAAI,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAK,EAAE,SAAS,CAAC,CAAC;YAC/C,SAAS,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAErD,MAAM,IAAI,GAAG,IAAI,iBAAU,CAAC,uBAAuB,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC;gBACjC,cAAc,EAAE,mBAAmB;gBACnC,aAAa,EAAE,kBAAkB;gBACjC,aAAa,EAAE,kBAAkB;gBACjC,WAAW,EAAE,cAAc;aAC5B,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YACtC,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CACpC,MAAM,CAAC,gBAAgB,CAAC;gBACtB,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,gCAAgC;gBACrC,MAAM,EAAE;oBACN,cAAc,EAAE,mBAAmB;oBACnC,aAAa,EAAE,kBAAkB;oBACjC,aAAa,EAAE,kBAAkB;iBAClC;aACF,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,IAAI,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAK,EAAE,SAAS,CAAC,CAAC;YAC/C,SAAS,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,uBAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAE3F,MAAM,IAAI,GAAG,IAAI,iBAAU,CAAC,uBAAuB,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,aAAa,CAAC;gBACvB,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,uBAAU,CAAC,OAAO;gBAC1B,OAAO,EAAE,UAAU;gBACnB,WAAW,EAAE,cAAc;gBAC3B,OAAO,EAAE;oBACP,aAAa,EAAE,CAAC;oBAChB,oBAAoB,EAAE,CAAC;oBACvB,cAAc,EAAE,CAAC;oBACjB,kBAAkB,EAAE,CAAC;oBACrB,cAAc,EAAE,OAAO;iBACxB;gBACD,WAAW,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE;aACnC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAC7C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC;YACrG,uEAAuE;YACvE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;YACjG,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAK,EAAE,SAAS,CAAC,CAAC;YAC/C,SAAS,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,uBAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAE3F,MAAM,IAAI,GAAG,IAAI,iBAAU,CAAC,uBAAuB,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,aAAa,CAAC;gBACvB,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,uBAAU,CAAC,OAAO;gBAC1B,OAAO,EAAE,UAAU;gBACnB,WAAW,EAAE,cAAc;gBAC3B,WAAW,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE;aACrD,CAAC,CAAC;YAEH,0EAA0E;YAC1E,8DAA8D;YAC9D,MAAM,IAAI,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3D,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,aAAa,EAAE,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAK,EAAE,SAAS,CAAC,CAAC;YAC/C,SAAS,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,uBAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAE3F,MAAM,IAAI,GAAG,IAAI,iBAAU,CAAC,uBAAuB,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,aAAa,CAAC;gBACvB,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,uBAAU,CAAC,OAAO;gBAC1B,OAAO,EAAE,UAAU;gBACnB,WAAW,EAAE,cAAc;gBAC3B,OAAO,EAAE;oBACP,aAAa,EAAE,CAAC;oBAChB,oBAAoB,EAAE,CAAC;oBACvB,cAAc,EAAE,CAAC;oBACjB,kBAAkB,EAAE,CAAC;oBACrB,cAAc,EAAE,OAAO;iBACxB;aACF,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAK,EAAE,SAAS,CAAC,CAAC;YAC/C,SAAS,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,uBAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAE1F,MAAM,IAAI,GAAG,IAAI,iBAAU,CAAC,uBAAuB,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,aAAa,CAAC;gBACvB,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,uBAAU,CAAC,MAAM;gBACzB,OAAO,EAAE,UAAU;gBACnB,WAAW,EAAE,cAAc;gBAC3B,KAAK,EAAE,kBAAkB;aAC1B,CAAC,CAAC;YAEH,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC;YACR,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;YAC3B,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YAC7B,CAAC,cAAc,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;SACtC,CAAC,CAAC,+CAA+C,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAK,EAAE,SAAS,CAAC,CAAC;YAE/C,MAAM,IAAI,GAAG,IAAI,iBAAU,CAAC,uBAAuB,CAAC,CAAC;YACrD,MAAM,MAAM,CACV,IAAI,CAAC,aAAa,CAAC;gBACjB,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,uBAAU,CAAC,OAAO;gBAC1B,OAAO,EAAE,UAAU;gBACnB,WAAW,EAAE,cAAc;gBAC3B,GAAG,QAAQ;aACZ,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,wBAAe,CAAC,CAAC;YAEnC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@superblocksteam/sabs-client",
3
- "version": "v0.684.0",
3
+ "version": "v0.686.0",
4
4
  "description": "Superblocks Application Build System Client for TypeScript",
5
5
  "license": "Superblocks Community Software License",
6
6
  "repository": {
@@ -17,7 +17,7 @@
17
17
  "dependencies": {
18
18
  "@superblocksteam/shared": "0.9586.7",
19
19
  "axios": "^1.16.1",
20
- "@superblocksteam/sabs-types": "v0.684.0"
20
+ "@superblocksteam/sabs-types": "v0.686.0"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@babel/preset-typescript": "^7.26.0",