@pipeline-builder/api-core 3.4.21 → 3.4.22
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/lib/types/audit-events.d.ts +41 -0
- package/lib/types/audit-events.js +5 -0
- package/lib/types/error-codes.d.ts +1 -0
- package/lib/types/error-codes.js +4 -1
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.js +2 -1
- package/lib/utils/audit.d.ts +15 -0
- package/lib/utils/audit.js +37 -0
- package/lib/utils/concurrency.d.ts +9 -0
- package/lib/utils/concurrency.js +32 -0
- package/lib/utils/index.d.ts +2 -0
- package/lib/utils/index.js +3 -1
- package/package.json +1 -1
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-service audit events emitted via structured logs.
|
|
3
|
+
*
|
|
4
|
+
* Platform's own audit events (user.login, org.create, …) live in MongoDB
|
|
5
|
+
* via the AuditEvent model — that's a separate persistence path scoped to
|
|
6
|
+
* the platform service. The events below are emitted by other services
|
|
7
|
+
* (image-registry, etc.) via the `emitAudit` helper as structured log
|
|
8
|
+
* lines with `eventCategory: 'audit'`, scraped by Loki for queryable
|
|
9
|
+
* audit history.
|
|
10
|
+
*
|
|
11
|
+
* Add a new event:
|
|
12
|
+
* 1. Extend the union type below.
|
|
13
|
+
* 2. Document it in `docs/audit-events.md` (or wherever the audit-events
|
|
14
|
+
* doc lives) including any payload-specific fields.
|
|
15
|
+
* 3. Emit via `emitAudit(logger, 'event.name', { … })` from the route.
|
|
16
|
+
*/
|
|
17
|
+
/** Tag-copy emitted from image-registry's POST /api/images/copy. */
|
|
18
|
+
export interface RegistryTagCopyAudit {
|
|
19
|
+
event: 'registry.tag.copy';
|
|
20
|
+
actor: string;
|
|
21
|
+
source: string;
|
|
22
|
+
target: string;
|
|
23
|
+
sourceDigest: string;
|
|
24
|
+
targetDigest: string;
|
|
25
|
+
/** True when target's repo starts with `system/` — the highest-privilege case. */
|
|
26
|
+
isPromotionToSystem: boolean;
|
|
27
|
+
mounted: {
|
|
28
|
+
manifests: number;
|
|
29
|
+
blobs: number;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/** Tag-delete emitted from image-registry's DELETE /api/images/:name/manifests/:reference. */
|
|
33
|
+
export interface RegistryTagDeleteAudit {
|
|
34
|
+
event: 'registry.tag.delete';
|
|
35
|
+
actor: string;
|
|
36
|
+
repo: string;
|
|
37
|
+
ref: string;
|
|
38
|
+
digest: string;
|
|
39
|
+
}
|
|
40
|
+
/** Union of every cross-service audit event currently emitted. */
|
|
41
|
+
export type AuditEvent = RegistryTagCopyAudit | RegistryTagDeleteAudit;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2F1ZGl0LWV2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHNDQUFzQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIENyb3NzLXNlcnZpY2UgYXVkaXQgZXZlbnRzIGVtaXR0ZWQgdmlhIHN0cnVjdHVyZWQgbG9ncy5cbiAqXG4gKiBQbGF0Zm9ybSdzIG93biBhdWRpdCBldmVudHMgKHVzZXIubG9naW4sIG9yZy5jcmVhdGUsIOKApikgbGl2ZSBpbiBNb25nb0RCXG4gKiB2aWEgdGhlIEF1ZGl0RXZlbnQgbW9kZWwg4oCUIHRoYXQncyBhIHNlcGFyYXRlIHBlcnNpc3RlbmNlIHBhdGggc2NvcGVkIHRvXG4gKiB0aGUgcGxhdGZvcm0gc2VydmljZS4gVGhlIGV2ZW50cyBiZWxvdyBhcmUgZW1pdHRlZCBieSBvdGhlciBzZXJ2aWNlc1xuICogKGltYWdlLXJlZ2lzdHJ5LCBldGMuKSB2aWEgdGhlIGBlbWl0QXVkaXRgIGhlbHBlciBhcyBzdHJ1Y3R1cmVkIGxvZ1xuICogbGluZXMgd2l0aCBgZXZlbnRDYXRlZ29yeTogJ2F1ZGl0J2AsIHNjcmFwZWQgYnkgTG9raSBmb3IgcXVlcnlhYmxlXG4gKiBhdWRpdCBoaXN0b3J5LlxuICpcbiAqIEFkZCBhIG5ldyBldmVudDpcbiAqICAgMS4gRXh0ZW5kIHRoZSB1bmlvbiB0eXBlIGJlbG93LlxuICogICAyLiBEb2N1bWVudCBpdCBpbiBgZG9jcy9hdWRpdC1ldmVudHMubWRgIChvciB3aGVyZXZlciB0aGUgYXVkaXQtZXZlbnRzXG4gKiAgICAgIGRvYyBsaXZlcykgaW5jbHVkaW5nIGFueSBwYXlsb2FkLXNwZWNpZmljIGZpZWxkcy5cbiAqICAgMy4gRW1pdCB2aWEgYGVtaXRBdWRpdChsb2dnZXIsICdldmVudC5uYW1lJywgeyDigKYgfSlgIGZyb20gdGhlIHJvdXRlLlxuICovXG5cbi8qKiBUYWctY29weSBlbWl0dGVkIGZyb20gaW1hZ2UtcmVnaXN0cnkncyBQT1NUIC9hcGkvaW1hZ2VzL2NvcHkuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdHJ5VGFnQ29weUF1ZGl0IHtcbiAgZXZlbnQ6ICdyZWdpc3RyeS50YWcuY29weSc7XG4gIGFjdG9yOiBzdHJpbmc7XG4gIHNvdXJjZTogc3RyaW5nO1xuICB0YXJnZXQ6IHN0cmluZztcbiAgc291cmNlRGlnZXN0OiBzdHJpbmc7XG4gIHRhcmdldERpZ2VzdDogc3RyaW5nO1xuICAvKiogVHJ1ZSB3aGVuIHRhcmdldCdzIHJlcG8gc3RhcnRzIHdpdGggYHN5c3RlbS9gIOKAlCB0aGUgaGlnaGVzdC1wcml2aWxlZ2UgY2FzZS4gKi9cbiAgaXNQcm9tb3Rpb25Ub1N5c3RlbTogYm9vbGVhbjtcbiAgbW91bnRlZDogeyBtYW5pZmVzdHM6IG51bWJlcjsgYmxvYnM6IG51bWJlciB9O1xufVxuXG4vKiogVGFnLWRlbGV0ZSBlbWl0dGVkIGZyb20gaW1hZ2UtcmVnaXN0cnkncyBERUxFVEUgL2FwaS9pbWFnZXMvOm5hbWUvbWFuaWZlc3RzLzpyZWZlcmVuY2UuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdHJ5VGFnRGVsZXRlQXVkaXQge1xuICBldmVudDogJ3JlZ2lzdHJ5LnRhZy5kZWxldGUnO1xuICBhY3Rvcjogc3RyaW5nO1xuICByZXBvOiBzdHJpbmc7XG4gIHJlZjogc3RyaW5nO1xuICBkaWdlc3Q6IHN0cmluZztcbn1cblxuLyoqIFVuaW9uIG9mIGV2ZXJ5IGNyb3NzLXNlcnZpY2UgYXVkaXQgZXZlbnQgY3VycmVudGx5IGVtaXR0ZWQuICovXG5leHBvcnQgdHlwZSBBdWRpdEV2ZW50ID0gUmVnaXN0cnlUYWdDb3B5QXVkaXQgfCBSZWdpc3RyeVRhZ0RlbGV0ZUF1ZGl0O1xuIl19
|
|
@@ -28,6 +28,7 @@ export declare enum ErrorCode {
|
|
|
28
28
|
TEMPLATE_VALIDATION_FAILED = "TEMPLATE_VALIDATION_FAILED",
|
|
29
29
|
QUOTA_EXCEEDED = "QUOTA_EXCEEDED",
|
|
30
30
|
RATE_LIMIT_EXCEEDED = "RATE_LIMIT_EXCEEDED",
|
|
31
|
+
PAYLOAD_TOO_LARGE = "PAYLOAD_TOO_LARGE",
|
|
31
32
|
CONFLICT = "CONFLICT",
|
|
32
33
|
DUPLICATE_ENTRY = "DUPLICATE_ENTRY",
|
|
33
34
|
SCAN_CONFLICT = "SCAN_CONFLICT",
|
package/lib/types/error-codes.js
CHANGED
|
@@ -40,6 +40,8 @@ var ErrorCode;
|
|
|
40
40
|
// Quota/Rate limit errors (429)
|
|
41
41
|
ErrorCode["QUOTA_EXCEEDED"] = "QUOTA_EXCEEDED";
|
|
42
42
|
ErrorCode["RATE_LIMIT_EXCEEDED"] = "RATE_LIMIT_EXCEEDED";
|
|
43
|
+
// Payload errors (413)
|
|
44
|
+
ErrorCode["PAYLOAD_TOO_LARGE"] = "PAYLOAD_TOO_LARGE";
|
|
43
45
|
// Conflict errors (409)
|
|
44
46
|
ErrorCode["CONFLICT"] = "CONFLICT";
|
|
45
47
|
ErrorCode["DUPLICATE_ENTRY"] = "DUPLICATE_ENTRY";
|
|
@@ -76,6 +78,7 @@ exports.ErrorCodeStatus = {
|
|
|
76
78
|
[ErrorCode.TEMPLATE_VALIDATION_FAILED]: 400,
|
|
77
79
|
[ErrorCode.QUOTA_EXCEEDED]: 429,
|
|
78
80
|
[ErrorCode.RATE_LIMIT_EXCEEDED]: 429,
|
|
81
|
+
[ErrorCode.PAYLOAD_TOO_LARGE]: 413,
|
|
79
82
|
[ErrorCode.CONFLICT]: 409,
|
|
80
83
|
[ErrorCode.DUPLICATE_ENTRY]: 409,
|
|
81
84
|
[ErrorCode.SCAN_CONFLICT]: 409,
|
|
@@ -90,4 +93,4 @@ exports.ErrorCodeStatus = {
|
|
|
90
93
|
function getStatusForErrorCode(code) {
|
|
91
94
|
return exports.ErrorCodeStatus[code] ?? 500;
|
|
92
95
|
}
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItY29kZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvZXJyb3ItY29kZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7OztBQWlHdEMsc0RBRUM7QUFqR0Q7Ozs7Ozs7R0FPRztBQUNILElBQVksU0ErQ1g7QUEvQ0QsV0FBWSxTQUFTO0lBQ25CLDhCQUE4QjtJQUM5QiwwQ0FBNkIsQ0FBQTtJQUM3Qiw0Q0FBK0IsQ0FBQTtJQUMvQiw0Q0FBK0IsQ0FBQTtJQUMvQiw0Q0FBK0IsQ0FBQTtJQUUvQiw2QkFBNkI7SUFDN0Isa0VBQXFELENBQUE7SUFDckQsMENBQTZCLENBQUE7SUFDN0IsMERBQTZDLENBQUE7SUFFN0MseUJBQXlCO0lBQ3pCLG9DQUF1QixDQUFBO0lBQ3ZCLDRDQUErQixDQUFBO0lBRS9CLDBCQUEwQjtJQUMxQixrREFBcUMsQ0FBQTtJQUNyQyw4REFBaUQsQ0FBQTtJQUNqRCw0REFBK0MsQ0FBQTtJQUMvQyw4Q0FBaUMsQ0FBQTtJQUNqQywwREFBNkMsQ0FBQTtJQUM3Qyw4REFBaUQsQ0FBQTtJQUNqRCxvRUFBdUQsQ0FBQTtJQUN2RCx3RUFBMkQsQ0FBQTtJQUMzRCw4REFBaUQsQ0FBQTtJQUNqRCxzRUFBeUQsQ0FBQTtJQUV6RCxnQ0FBZ0M7SUFDaEMsOENBQWlDLENBQUE7SUFDakMsd0RBQTJDLENBQUE7SUFFM0MsdUJBQXVCO0lBQ3ZCLG9EQUF1QyxDQUFBO0lBRXZDLHdCQUF3QjtJQUN4QixrQ0FBcUIsQ0FBQTtJQUNyQixnREFBbUMsQ0FBQTtJQUNuQyw0Q0FBK0IsQ0FBQTtJQUUvQixzQkFBc0I7SUFDdEIsOENBQWlDLENBQUE7SUFDakMsOENBQWlDLENBQUE7SUFFakMsNEJBQTRCO0lBQzVCLHdEQUEyQyxDQUFBO0lBQzNDLDhFQUFpRSxDQUFBO0FBQ25FLENBQUMsRUEvQ1csU0FBUyx5QkFBVCxTQUFTLFFBK0NwQjtBQUVEOztHQUVHO0FBQ1UsUUFBQSxlQUFlLEdBQThCO0lBQ3hELENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFLEdBQUc7SUFDN0IsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsR0FBRztJQUM5QixDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxHQUFHO0lBQzlCLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEdBQUc7SUFDOUIsQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUMsRUFBRSxHQUFHO0lBQ3pDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFLEdBQUc7SUFDN0IsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsRUFBRSxHQUFHO0lBQ3JDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUc7SUFDMUIsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsR0FBRztJQUM5QixDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEdBQUc7SUFDakMsQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsRUFBRSxHQUFHO0lBQ3ZDLENBQUMsU0FBUyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsR0FBRztJQUN0QyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRSxHQUFHO0lBQy9CLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsR0FBRztJQUNyQyxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLEdBQUc7SUFDdkMsQ0FBQyxTQUFTLENBQUMseUJBQXlCLENBQUMsRUFBRSxHQUFHO0lBQzFDLENBQUMsU0FBUyxDQUFDLDJCQUEyQixDQUFDLEVBQUUsR0FBRztJQUM1QyxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLEdBQUc7SUFDdkMsQ0FBQyxTQUFTLENBQUMsMEJBQTBCLENBQUMsRUFBRSxHQUFHO0lBQzNDLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEdBQUc7SUFDL0IsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsRUFBRSxHQUFHO0lBQ3BDLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsR0FBRztJQUNsQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHO0lBQ3pCLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxFQUFFLEdBQUc7SUFDaEMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsR0FBRztJQUM5QixDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRSxHQUFHO0lBQy9CLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEdBQUc7SUFDL0IsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsRUFBRSxHQUFHO0lBQ3BDLENBQUMsU0FBUyxDQUFDLDhCQUE4QixDQUFDLEVBQUUsR0FBRztDQUNoRCxDQUFDO0FBRUY7O0dBRUc7QUFDSCxTQUFnQixxQkFBcUIsQ0FBQyxJQUFlO0lBQ25ELE9BQU8sdUJBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDdEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFN0YW5kYXJkaXplZCBlcnJvciBjb2RlcyB1c2VkIGFjcm9zcyBhbGwgQVBJIG1pY3Jvc2VydmljZXMuXG4gKiBVc2UgdGhlc2UgY29kZXMgaW4gZXJyb3IgcmVzcG9uc2VzIGZvciBjb25zaXN0ZW50IGNsaWVudCBoYW5kbGluZy5cbiAqXG4gKiBFYWNoIEhUVFAgc3RhdHVzIGNhdGVnb3J5IGhhcyBvbmUgcHJpbWFyeSBjb2RlLiBVc2UgdGhlIGBkZXRhaWxzYFxuICogZmllbGQgaW4gZXJyb3IgcmVzcG9uc2VzIGZvciBzdWItdHlwZSBpbmZvcm1hdGlvbiAoZS5nLiB3aGljaCBxdW90YVxuICogd2FzIGV4Y2VlZGVkLCB3aGljaCBmaWVsZCBmYWlsZWQgdmFsaWRhdGlvbikuXG4gKi9cbmV4cG9ydCBlbnVtIEVycm9yQ29kZSB7XG4gIC8vIEF1dGhlbnRpY2F0aW9uIGVycm9ycyAoNDAxKVxuICBVTkFVVEhPUklaRUQgPSAnVU5BVVRIT1JJWkVEJyxcbiAgVE9LRU5fRVhQSVJFRCA9ICdUT0tFTl9FWFBJUkVEJyxcbiAgVE9LRU5fSU5WQUxJRCA9ICdUT0tFTl9JTlZBTElEJyxcbiAgVE9LRU5fTUlTU0lORyA9ICdUT0tFTl9NSVNTSU5HJyxcblxuICAvLyBBdXRob3JpemF0aW9uIGVycm9ycyAoNDAzKVxuICBJTlNVRkZJQ0lFTlRfUEVSTUlTU0lPTlMgPSAnSU5TVUZGSUNJRU5UX1BFUk1JU1NJT05TJyxcbiAgT1JHX01JU01BVENIID0gJ09SR19NSVNNQVRDSCcsXG4gIENPTVBMSUFOQ0VfVklPTEFUSU9OID0gJ0NPTVBMSUFOQ0VfVklPTEFUSU9OJyxcblxuICAvLyBOb3QgZm91bmQgZXJyb3JzICg0MDQpXG4gIE5PVF9GT1VORCA9ICdOT1RfRk9VTkQnLFxuICBPUkdfTk9UX0ZPVU5EID0gJ09SR19OT1RfRk9VTkQnLFxuXG4gIC8vIFZhbGlkYXRpb24gZXJyb3JzICg0MDApXG4gIFZBTElEQVRJT05fRVJST1IgPSAnVkFMSURBVElPTl9FUlJPUicsXG4gIE1JU1NJTkdfUkVRVUlSRURfRklFTEQgPSAnTUlTU0lOR19SRVFVSVJFRF9GSUVMRCcsXG4gIFRFTVBMQVRFX1VOS05PV05fUEFUSCA9ICdURU1QTEFURV9VTktOT1dOX1BBVEgnLFxuICBURU1QTEFURV9DWUNMRSA9ICdURU1QTEFURV9DWUNMRScsXG4gIFRFTVBMQVRFX1BBUlNFX0VSUk9SID0gJ1RFTVBMQVRFX1BBUlNFX0VSUk9SJyxcbiAgVEVNUExBVEVfVFlQRV9NSVNNQVRDSCA9ICdURU1QTEFURV9UWVBFX01JU01BVENIJyxcbiAgVEVNUExBVEVfU0VDUkVUU19SRVNFUlZFRCA9ICdURU1QTEFURV9TRUNSRVRTX1JFU0VSVkVEJyxcbiAgVEVNUExBVEVfQ09OVFJBQ1RfVklPTEFUSU9OID0gJ1RFTVBMQVRFX0NPTlRSQUNUX1ZJT0xBVElPTicsXG4gIFRFTVBMQVRFX1NJWkVfRVhDRUVERUQgPSAnVEVNUExBVEVfU0laRV9FWENFRURFRCcsXG4gIFRFTVBMQVRFX1ZBTElEQVRJT05fRkFJTEVEID0gJ1RFTVBMQVRFX1ZBTElEQVRJT05fRkFJTEVEJyxcblxuICAvLyBRdW90YS9SYXRlIGxpbWl0IGVycm9ycyAoNDI5KVxuICBRVU9UQV9FWENFRURFRCA9ICdRVU9UQV9FWENFRURFRCcsXG4gIFJBVEVfTElNSVRfRVhDRUVERUQgPSAnUkFURV9MSU1JVF9FWENFRURFRCcsXG5cbiAgLy8gUGF5bG9hZCBlcnJvcnMgKDQxMylcbiAgUEFZTE9BRF9UT09fTEFSR0UgPSAnUEFZTE9BRF9UT09fTEFSR0UnLFxuXG4gIC8vIENvbmZsaWN0IGVycm9ycyAoNDA5KVxuICBDT05GTElDVCA9ICdDT05GTElDVCcsXG4gIERVUExJQ0FURV9FTlRSWSA9ICdEVVBMSUNBVEVfRU5UUlknLFxuICBTQ0FOX0NPTkZMSUNUID0gJ1NDQU5fQ09ORkxJQ1QnLFxuXG4gIC8vIFNlcnZlciBlcnJvcnMgKDUwMClcbiAgSU5URVJOQUxfRVJST1IgPSAnSU5URVJOQUxfRVJST1InLFxuICBEQVRBQkFTRV9FUlJPUiA9ICdEQVRBQkFTRV9FUlJPUicsXG5cbiAgLy8gU2VydmljZSB1bmF2YWlsYWJsZSAoNTAzKVxuICBTRVJWSUNFX1VOQVZBSUxBQkxFID0gJ1NFUlZJQ0VfVU5BVkFJTEFCTEUnLFxuICBDT01QTElBTkNFX1NFUlZJQ0VfVU5BVkFJTEFCTEUgPSAnQ09NUExJQU5DRV9TRVJWSUNFX1VOQVZBSUxBQkxFJyxcbn1cblxuLyoqXG4gKiBNYXBzIGVycm9yIGNvZGVzIHRvIHRoZWlyIGRlZmF1bHQgSFRUUCBzdGF0dXMgY29kZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBFcnJvckNvZGVTdGF0dXM6IFJlY29yZDxFcnJvckNvZGUsIG51bWJlcj4gPSB7XG4gIFtFcnJvckNvZGUuVU5BVVRIT1JJWkVEXTogNDAxLFxuICBbRXJyb3JDb2RlLlRPS0VOX0VYUElSRURdOiA0MDEsXG4gIFtFcnJvckNvZGUuVE9LRU5fSU5WQUxJRF06IDQwMSxcbiAgW0Vycm9yQ29kZS5UT0tFTl9NSVNTSU5HXTogNDAxLFxuICBbRXJyb3JDb2RlLklOU1VGRklDSUVOVF9QRVJNSVNTSU9OU106IDQwMyxcbiAgW0Vycm9yQ29kZS5PUkdfTUlTTUFUQ0hdOiA0MDMsXG4gIFtFcnJvckNvZGUuQ09NUExJQU5DRV9WSU9MQVRJT05dOiA0MDMsXG4gIFtFcnJvckNvZGUuTk9UX0ZPVU5EXTogNDA0LFxuICBbRXJyb3JDb2RlLk9SR19OT1RfRk9VTkRdOiA0MDQsXG4gIFtFcnJvckNvZGUuVkFMSURBVElPTl9FUlJPUl06IDQwMCxcbiAgW0Vycm9yQ29kZS5NSVNTSU5HX1JFUVVJUkVEX0ZJRUxEXTogNDAwLFxuICBbRXJyb3JDb2RlLlRFTVBMQVRFX1VOS05PV05fUEFUSF06IDQwMCxcbiAgW0Vycm9yQ29kZS5URU1QTEFURV9DWUNMRV06IDQwMCxcbiAgW0Vycm9yQ29kZS5URU1QTEFURV9QQVJTRV9FUlJPUl06IDQwMCxcbiAgW0Vycm9yQ29kZS5URU1QTEFURV9UWVBFX01JU01BVENIXTogNDAwLFxuICBbRXJyb3JDb2RlLlRFTVBMQVRFX1NFQ1JFVFNfUkVTRVJWRURdOiA0MDAsXG4gIFtFcnJvckNvZGUuVEVNUExBVEVfQ09OVFJBQ1RfVklPTEFUSU9OXTogNDAwLFxuICBbRXJyb3JDb2RlLlRFTVBMQVRFX1NJWkVfRVhDRUVERURdOiA0MDAsXG4gIFtFcnJvckNvZGUuVEVNUExBVEVfVkFMSURBVElPTl9GQUlMRURdOiA0MDAsXG4gIFtFcnJvckNvZGUuUVVPVEFfRVhDRUVERURdOiA0MjksXG4gIFtFcnJvckNvZGUuUkFURV9MSU1JVF9FWENFRURFRF06IDQyOSxcbiAgW0Vycm9yQ29kZS5QQVlMT0FEX1RPT19MQVJHRV06IDQxMyxcbiAgW0Vycm9yQ29kZS5DT05GTElDVF06IDQwOSxcbiAgW0Vycm9yQ29kZS5EVVBMSUNBVEVfRU5UUlldOiA0MDksXG4gIFtFcnJvckNvZGUuU0NBTl9DT05GTElDVF06IDQwOSxcbiAgW0Vycm9yQ29kZS5JTlRFUk5BTF9FUlJPUl06IDUwMCxcbiAgW0Vycm9yQ29kZS5EQVRBQkFTRV9FUlJPUl06IDUwMCxcbiAgW0Vycm9yQ29kZS5TRVJWSUNFX1VOQVZBSUxBQkxFXTogNTAzLFxuICBbRXJyb3JDb2RlLkNPTVBMSUFOQ0VfU0VSVklDRV9VTkFWQUlMQUJMRV06IDUwMyxcbn07XG5cbi8qKlxuICogR2V0IHRoZSBIVFRQIHN0YXR1cyBjb2RlIGZvciBhbiBlcnJvciBjb2RlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzRm9yRXJyb3JDb2RlKGNvZGU6IEVycm9yQ29kZSk6IG51bWJlciB7XG4gIHJldHVybiBFcnJvckNvZGVTdGF0dXNbY29kZV0gPz8gNTAwO1xufVxuIl19
|
package/lib/types/index.d.ts
CHANGED
package/lib/types/index.js
CHANGED
|
@@ -22,4 +22,5 @@ __exportStar(require("./pipeline"), exports);
|
|
|
22
22
|
__exportStar(require("./http"), exports);
|
|
23
23
|
__exportStar(require("./quota-tiers"), exports);
|
|
24
24
|
__exportStar(require("./feature-flags"), exports);
|
|
25
|
-
|
|
25
|
+
__exportStar(require("./audit-events"), exports);
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdEMsZ0RBQThCO0FBQzlCLDJDQUF5QjtBQUN6Qiw2Q0FBMkI7QUFDM0IseUNBQXVCO0FBQ3ZCLGdEQUE4QjtBQUM5QixrREFBZ0M7QUFDaEMsaURBQStCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmV4cG9ydCAqIGZyb20gJy4vZXJyb3ItY29kZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21tb24nO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlbGluZSc7XG5leHBvcnQgKiBmcm9tICcuL2h0dHAnO1xuZXhwb3J0ICogZnJvbSAnLi9xdW90YS10aWVycyc7XG5leHBvcnQgKiBmcm9tICcuL2ZlYXR1cmUtZmxhZ3MnO1xuZXhwb3J0ICogZnJvbSAnLi9hdWRpdC1ldmVudHMnO1xuIl19
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type winston from 'winston';
|
|
2
|
+
import type { AuditEvent } from '../types/audit-events';
|
|
3
|
+
/**
|
|
4
|
+
* Emit a cross-service audit event as a structured log line.
|
|
5
|
+
*
|
|
6
|
+
* Best-effort: if the underlying logger transport fails, the caller's
|
|
7
|
+
* mutation still succeeds — we never let audit-write failure roll back
|
|
8
|
+
* the user-visible operation. The line is tagged `eventCategory: 'audit'`
|
|
9
|
+
* so downstream log aggregators (Loki, CloudWatch) can route audit
|
|
10
|
+
* events into a separate index.
|
|
11
|
+
*
|
|
12
|
+
* For platform's own audit events (user.login, org.create, …), use
|
|
13
|
+
* platform's `helpers/audit.ts` instead — those persist to MongoDB.
|
|
14
|
+
*/
|
|
15
|
+
export declare function emitAudit(logger: winston.Logger, audit: AuditEvent): void;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.emitAudit = emitAudit;
|
|
6
|
+
/**
|
|
7
|
+
* Emit a cross-service audit event as a structured log line.
|
|
8
|
+
*
|
|
9
|
+
* Best-effort: if the underlying logger transport fails, the caller's
|
|
10
|
+
* mutation still succeeds — we never let audit-write failure roll back
|
|
11
|
+
* the user-visible operation. The line is tagged `eventCategory: 'audit'`
|
|
12
|
+
* so downstream log aggregators (Loki, CloudWatch) can route audit
|
|
13
|
+
* events into a separate index.
|
|
14
|
+
*
|
|
15
|
+
* For platform's own audit events (user.login, org.create, …), use
|
|
16
|
+
* platform's `helpers/audit.ts` instead — those persist to MongoDB.
|
|
17
|
+
*/
|
|
18
|
+
function emitAudit(logger, audit) {
|
|
19
|
+
try {
|
|
20
|
+
logger.info('audit', { eventCategory: 'audit', ...audit });
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
// The winston logger normally never throws synchronously, but if a
|
|
24
|
+
// transport explodes during a route call, we don't want the mutation
|
|
25
|
+
// to fail because the audit write didn't land.
|
|
26
|
+
try {
|
|
27
|
+
logger.warn('Failed to emit audit event', {
|
|
28
|
+
event: audit.event,
|
|
29
|
+
error: err instanceof Error ? err.message : String(err),
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
// Logger itself is unrecoverable — give up silently.
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvYXVkaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7O0FBaUJ0Qyw4QkFtQkM7QUEvQkQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFnQixTQUFTLENBQ3ZCLE1BQXNCLEVBQ3RCLEtBQWlCO0lBRWpCLElBQUksQ0FBQztRQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDYixtRUFBbUU7UUFDbkUscUVBQXFFO1FBQ3JFLCtDQUErQztRQUMvQyxJQUFJLENBQUM7WUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFO2dCQUN4QyxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7Z0JBQ2xCLEtBQUssRUFBRSxHQUFHLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2FBQ3hELENBQUMsQ0FBQztRQUNMLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxxREFBcUQ7UUFDdkQsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB0eXBlIHdpbnN0b24gZnJvbSAnd2luc3Rvbic7XG5pbXBvcnQgdHlwZSB7IEF1ZGl0RXZlbnQgfSBmcm9tICcuLi90eXBlcy9hdWRpdC1ldmVudHMnO1xuXG4vKipcbiAqIEVtaXQgYSBjcm9zcy1zZXJ2aWNlIGF1ZGl0IGV2ZW50IGFzIGEgc3RydWN0dXJlZCBsb2cgbGluZS5cbiAqXG4gKiBCZXN0LWVmZm9ydDogaWYgdGhlIHVuZGVybHlpbmcgbG9nZ2VyIHRyYW5zcG9ydCBmYWlscywgdGhlIGNhbGxlcidzXG4gKiBtdXRhdGlvbiBzdGlsbCBzdWNjZWVkcyDigJQgd2UgbmV2ZXIgbGV0IGF1ZGl0LXdyaXRlIGZhaWx1cmUgcm9sbCBiYWNrXG4gKiB0aGUgdXNlci12aXNpYmxlIG9wZXJhdGlvbi4gVGhlIGxpbmUgaXMgdGFnZ2VkIGBldmVudENhdGVnb3J5OiAnYXVkaXQnYFxuICogc28gZG93bnN0cmVhbSBsb2cgYWdncmVnYXRvcnMgKExva2ksIENsb3VkV2F0Y2gpIGNhbiByb3V0ZSBhdWRpdFxuICogZXZlbnRzIGludG8gYSBzZXBhcmF0ZSBpbmRleC5cbiAqXG4gKiBGb3IgcGxhdGZvcm0ncyBvd24gYXVkaXQgZXZlbnRzICh1c2VyLmxvZ2luLCBvcmcuY3JlYXRlLCDigKYpLCB1c2VcbiAqIHBsYXRmb3JtJ3MgYGhlbHBlcnMvYXVkaXQudHNgIGluc3RlYWQg4oCUIHRob3NlIHBlcnNpc3QgdG8gTW9uZ29EQi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVtaXRBdWRpdChcbiAgbG9nZ2VyOiB3aW5zdG9uLkxvZ2dlcixcbiAgYXVkaXQ6IEF1ZGl0RXZlbnQsXG4pOiB2b2lkIHtcbiAgdHJ5IHtcbiAgICBsb2dnZXIuaW5mbygnYXVkaXQnLCB7IGV2ZW50Q2F0ZWdvcnk6ICdhdWRpdCcsIC4uLmF1ZGl0IH0pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBUaGUgd2luc3RvbiBsb2dnZXIgbm9ybWFsbHkgbmV2ZXIgdGhyb3dzIHN5bmNocm9ub3VzbHksIGJ1dCBpZiBhXG4gICAgLy8gdHJhbnNwb3J0IGV4cGxvZGVzIGR1cmluZyBhIHJvdXRlIGNhbGwsIHdlIGRvbid0IHdhbnQgdGhlIG11dGF0aW9uXG4gICAgLy8gdG8gZmFpbCBiZWNhdXNlIHRoZSBhdWRpdCB3cml0ZSBkaWRuJ3QgbGFuZC5cbiAgICB0cnkge1xuICAgICAgbG9nZ2VyLndhcm4oJ0ZhaWxlZCB0byBlbWl0IGF1ZGl0IGV2ZW50Jywge1xuICAgICAgICBldmVudDogYXVkaXQuZXZlbnQsXG4gICAgICAgIGVycm9yOiBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVyciksXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIExvZ2dlciBpdHNlbGYgaXMgdW5yZWNvdmVyYWJsZSDigJQgZ2l2ZSB1cCBzaWxlbnRseS5cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run `worker` over `items` with at most `limit` invocations in flight.
|
|
3
|
+
* Preserves order in the returned array. Rejects on the first error.
|
|
4
|
+
*
|
|
5
|
+
* Use this anywhere we fan out N HTTP calls and want to cap concurrency
|
|
6
|
+
* (e.g. registry blob mounts, parallel manifest fetches). Hand-rolled to
|
|
7
|
+
* avoid adding a dep — keeps the bundle/footprint tiny.
|
|
8
|
+
*/
|
|
9
|
+
export declare function runConcurrent<T, R>(items: T[], limit: number, worker: (item: T, index: number) => Promise<R>): Promise<R[]>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.runConcurrent = runConcurrent;
|
|
6
|
+
/**
|
|
7
|
+
* Run `worker` over `items` with at most `limit` invocations in flight.
|
|
8
|
+
* Preserves order in the returned array. Rejects on the first error.
|
|
9
|
+
*
|
|
10
|
+
* Use this anywhere we fan out N HTTP calls and want to cap concurrency
|
|
11
|
+
* (e.g. registry blob mounts, parallel manifest fetches). Hand-rolled to
|
|
12
|
+
* avoid adding a dep — keeps the bundle/footprint tiny.
|
|
13
|
+
*/
|
|
14
|
+
async function runConcurrent(items, limit, worker) {
|
|
15
|
+
if (limit < 1)
|
|
16
|
+
throw new Error('runConcurrent: limit must be >= 1');
|
|
17
|
+
if (items.length === 0)
|
|
18
|
+
return [];
|
|
19
|
+
const results = new Array(items.length);
|
|
20
|
+
let nextIndex = 0;
|
|
21
|
+
const runners = Array.from({ length: Math.min(limit, items.length) }, async () => {
|
|
22
|
+
while (true) {
|
|
23
|
+
const i = nextIndex++;
|
|
24
|
+
if (i >= items.length)
|
|
25
|
+
return;
|
|
26
|
+
results[i] = await worker(items[i], i);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
await Promise.all(runners);
|
|
30
|
+
return results;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uY3VycmVuY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvY29uY3VycmVuY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7O0FBVXRDLHNDQXFCQztBQTdCRDs7Ozs7OztHQU9HO0FBQ0ksS0FBSyxVQUFVLGFBQWEsQ0FDakMsS0FBVSxFQUNWLEtBQWEsRUFDYixNQUE4QztJQUU5QyxJQUFJLEtBQUssR0FBRyxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQ3BFLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFFbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxLQUFLLENBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztJQUVsQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQy9FLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDWixNQUFNLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTTtnQkFBRSxPQUFPO1lBQzlCLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNCLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBSdW4gYHdvcmtlcmAgb3ZlciBgaXRlbXNgIHdpdGggYXQgbW9zdCBgbGltaXRgIGludm9jYXRpb25zIGluIGZsaWdodC5cbiAqIFByZXNlcnZlcyBvcmRlciBpbiB0aGUgcmV0dXJuZWQgYXJyYXkuIFJlamVjdHMgb24gdGhlIGZpcnN0IGVycm9yLlxuICpcbiAqIFVzZSB0aGlzIGFueXdoZXJlIHdlIGZhbiBvdXQgTiBIVFRQIGNhbGxzIGFuZCB3YW50IHRvIGNhcCBjb25jdXJyZW5jeVxuICogKGUuZy4gcmVnaXN0cnkgYmxvYiBtb3VudHMsIHBhcmFsbGVsIG1hbmlmZXN0IGZldGNoZXMpLiBIYW5kLXJvbGxlZCB0b1xuICogYXZvaWQgYWRkaW5nIGEgZGVwIOKAlCBrZWVwcyB0aGUgYnVuZGxlL2Zvb3RwcmludCB0aW55LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQ29uY3VycmVudDxULCBSPihcbiAgaXRlbXM6IFRbXSxcbiAgbGltaXQ6IG51bWJlcixcbiAgd29ya2VyOiAoaXRlbTogVCwgaW5kZXg6IG51bWJlcikgPT4gUHJvbWlzZTxSPixcbik6IFByb21pc2U8UltdPiB7XG4gIGlmIChsaW1pdCA8IDEpIHRocm93IG5ldyBFcnJvcigncnVuQ29uY3VycmVudDogbGltaXQgbXVzdCBiZSA+PSAxJyk7XG4gIGlmIChpdGVtcy5sZW5ndGggPT09IDApIHJldHVybiBbXTtcblxuICBjb25zdCByZXN1bHRzID0gbmV3IEFycmF5PFI+KGl0ZW1zLmxlbmd0aCk7XG4gIGxldCBuZXh0SW5kZXggPSAwO1xuXG4gIGNvbnN0IHJ1bm5lcnMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiBNYXRoLm1pbihsaW1pdCwgaXRlbXMubGVuZ3RoKSB9LCBhc3luYyAoKSA9PiB7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGNvbnN0IGkgPSBuZXh0SW5kZXgrKztcbiAgICAgIGlmIChpID49IGl0ZW1zLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgcmVzdWx0c1tpXSA9IGF3YWl0IHdvcmtlcihpdGVtc1tpXSwgaSk7XG4gICAgfVxuICB9KTtcblxuICBhd2FpdCBQcm9taXNlLmFsbChydW5uZXJzKTtcbiAgcmV0dXJuIHJlc3VsdHM7XG59XG4iXX0=
|
package/lib/utils/index.d.ts
CHANGED
package/lib/utils/index.js
CHANGED
|
@@ -23,4 +23,6 @@ __exportStar(require("./headers"), exports);
|
|
|
23
23
|
__exportStar(require("./identity"), exports);
|
|
24
24
|
__exportStar(require("./object"), exports);
|
|
25
25
|
__exportStar(require("./alias-resolver"), exports);
|
|
26
|
-
|
|
26
|
+
__exportStar(require("./concurrency"), exports);
|
|
27
|
+
__exportStar(require("./audit"), exports);
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdEMsMkNBQXlCO0FBQ3pCLDZDQUEyQjtBQUMzQiwyQ0FBeUI7QUFDekIsNENBQTBCO0FBQzFCLDZDQUEyQjtBQUMzQiwyQ0FBeUI7QUFDekIsbURBQWlDO0FBQ2pDLGdEQUE4QjtBQUM5QiwwQ0FBd0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuZXhwb3J0ICogZnJvbSAnLi9sb2dnZXInO1xuZXhwb3J0ICogZnJvbSAnLi9yZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL3BhcmFtcyc7XG5leHBvcnQgKiBmcm9tICcuL2hlYWRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9pZGVudGl0eSc7XG5leHBvcnQgKiBmcm9tICcuL29iamVjdCc7XG5leHBvcnQgKiBmcm9tICcuL2FsaWFzLXJlc29sdmVyJztcbmV4cG9ydCAqIGZyb20gJy4vY29uY3VycmVuY3knO1xuZXhwb3J0ICogZnJvbSAnLi9hdWRpdCc7XG4iXX0=
|
package/package.json
CHANGED