@pipeline-builder/api-core 3.4.126 → 4.0.2
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/README.md +2 -2
- package/lib/constants/ai-providers.d.ts +18 -0
- package/lib/constants/ai-providers.js +51 -1
- package/lib/helpers/access-helpers.d.ts +52 -11
- package/lib/helpers/access-helpers.js +63 -18
- package/lib/helpers/restore-helpers.d.ts +8 -5
- package/lib/helpers/restore-helpers.js +12 -10
- package/lib/index.d.ts +1 -1
- package/lib/index.js +2 -2
- package/lib/middleware/auth.d.ts +11 -13
- package/lib/middleware/auth.js +61 -21
- package/lib/openapi/routes/ask-routes.d.ts +7 -0
- package/lib/openapi/routes/ask-routes.js +62 -0
- package/lib/openapi/routes/image-registry-routes.d.ts +7 -0
- package/lib/openapi/routes/image-registry-routes.js +98 -0
- package/lib/openapi/routes/index.js +8 -1
- package/lib/openapi/routes/pipeline-routes.js +10 -1
- package/lib/openapi/routes/pipeline-template-routes.js +8 -6
- package/lib/openapi/schema-registry.js +4 -4
- package/lib/services/circuit-breaker.d.ts +45 -0
- package/lib/services/circuit-breaker.js +138 -0
- package/lib/services/durable-event-bus.d.ts +96 -0
- package/lib/services/durable-event-bus.js +204 -0
- package/lib/services/http-client.js +42 -2
- package/lib/services/index.d.ts +2 -0
- package/lib/services/index.js +3 -1
- package/lib/services/quota.js +8 -1
- package/lib/services/remote-audit-client.d.ts +1 -1
- package/lib/services/remote-audit-client.js +7 -1
- package/lib/services/sse-ticket-store.d.ts +7 -0
- package/lib/services/sse-ticket-store.js +10 -5
- package/lib/services/token-revocation.js +10 -1
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.js +2 -1
- package/lib/types/permissions.d.ts +1 -1
- package/lib/types/permissions.js +6 -3
- package/lib/types/pipeline.d.ts +0 -11
- package/lib/types/pipeline.js +1 -11
- package/lib/types/visibility.d.ts +20 -0
- package/lib/types/visibility.js +22 -0
- package/lib/utils/audit.js +1 -1
- package/lib/utils/response.js +6 -3
- package/lib/validation/ai-schemas.d.ts +2 -1
- package/lib/validation/ai-schemas.js +3 -3
- package/lib/validation/common-schemas.d.ts +8 -6
- package/lib/validation/common-schemas.js +8 -7
- package/lib/validation/message-schemas.d.ts +2 -1
- package/lib/validation/pipeline-schemas.d.ts +6 -3
- package/lib/validation/pipeline-schemas.js +4 -4
- package/lib/validation/pipeline-template-schemas.d.ts +9 -6
- package/lib/validation/pipeline-template-schemas.js +5 -4
- package/lib/validation/plugin-schemas.d.ts +8 -4
- package/lib/validation/plugin-schemas.js +5 -5
- package/package.json +2 -2
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { registry } from '../registry.js';
|
|
4
|
+
const tags = ['Image Registry'];
|
|
5
|
+
const auth = [{ bearerAuth: [] }];
|
|
6
|
+
/**
|
|
7
|
+
* OpenAPI definitions for the image-registry service (api/image-registry): the
|
|
8
|
+
* Docker-registry token endpoint (`/token`), the org-scoped image API
|
|
9
|
+
* (`/api/images`), and the admin API (`/api/admin`). Image read/write is gated by
|
|
10
|
+
* the `registry:read` / `registry:write` permissions.
|
|
11
|
+
*/
|
|
12
|
+
export function registerImageRegistryRoutes() {
|
|
13
|
+
registry.registerPath({
|
|
14
|
+
method: 'get',
|
|
15
|
+
path: '/token',
|
|
16
|
+
summary: 'Mint a Docker registry token',
|
|
17
|
+
description: 'OAuth2-style token endpoint for `docker`/`crane`/`buildctl` clients. Verifies Basic-auth creds (a platform JWT or user login) and issues a scoped bearer token for pull/push.',
|
|
18
|
+
tags,
|
|
19
|
+
responses: { 200: { description: 'Registry access token' }, 401: { description: 'Invalid credentials' } },
|
|
20
|
+
});
|
|
21
|
+
registry.registerPath({
|
|
22
|
+
method: 'get',
|
|
23
|
+
path: '/api/images',
|
|
24
|
+
summary: 'List images',
|
|
25
|
+
description: "List the organization's container images in the registry.",
|
|
26
|
+
tags,
|
|
27
|
+
security: auth,
|
|
28
|
+
responses: { 200: { description: 'Image list' }, 403: { description: 'registry:read required' } },
|
|
29
|
+
});
|
|
30
|
+
registry.registerPath({
|
|
31
|
+
method: 'get',
|
|
32
|
+
path: '/api/images/{name}/tags',
|
|
33
|
+
summary: 'List image tags',
|
|
34
|
+
tags,
|
|
35
|
+
security: auth,
|
|
36
|
+
responses: { 200: { description: 'Tag list' }, 404: { description: 'Image not found' } },
|
|
37
|
+
});
|
|
38
|
+
registry.registerPath({
|
|
39
|
+
method: 'get',
|
|
40
|
+
path: '/api/images/{name}/manifests/{reference}',
|
|
41
|
+
summary: 'Get an image manifest',
|
|
42
|
+
tags,
|
|
43
|
+
security: auth,
|
|
44
|
+
responses: { 200: { description: 'OCI manifest / index' }, 404: { description: 'Manifest not found' } },
|
|
45
|
+
});
|
|
46
|
+
registry.registerPath({
|
|
47
|
+
method: 'get',
|
|
48
|
+
path: '/api/images/{name}/blobs/{digest}',
|
|
49
|
+
summary: 'Get an image blob',
|
|
50
|
+
tags,
|
|
51
|
+
security: auth,
|
|
52
|
+
responses: { 200: { description: 'Blob content' }, 404: { description: 'Blob not found' } },
|
|
53
|
+
});
|
|
54
|
+
registry.registerPath({
|
|
55
|
+
method: 'post',
|
|
56
|
+
path: '/api/images/copy',
|
|
57
|
+
summary: 'Copy an image',
|
|
58
|
+
description: 'Server-side copy of an image between repositories. Requires both registry:read and registry:write.',
|
|
59
|
+
tags,
|
|
60
|
+
security: auth,
|
|
61
|
+
responses: { 200: { description: 'Image copied' }, 403: { description: 'registry:read + registry:write required' } },
|
|
62
|
+
});
|
|
63
|
+
registry.registerPath({
|
|
64
|
+
method: 'delete',
|
|
65
|
+
path: '/api/images/{name}',
|
|
66
|
+
summary: 'Delete an image repository',
|
|
67
|
+
tags,
|
|
68
|
+
security: auth,
|
|
69
|
+
responses: { 200: { description: 'Repository deleted' }, 403: { description: 'registry:write required' } },
|
|
70
|
+
});
|
|
71
|
+
registry.registerPath({
|
|
72
|
+
method: 'delete',
|
|
73
|
+
path: '/api/images/{name}/manifests/{reference}',
|
|
74
|
+
summary: 'Delete an image manifest/tag',
|
|
75
|
+
tags,
|
|
76
|
+
security: auth,
|
|
77
|
+
responses: { 200: { description: 'Manifest deleted' }, 403: { description: 'registry:write required' } },
|
|
78
|
+
});
|
|
79
|
+
registry.registerPath({
|
|
80
|
+
method: 'get',
|
|
81
|
+
path: '/api/admin/storage/{prefix}',
|
|
82
|
+
summary: 'Registry storage rollup',
|
|
83
|
+
description: 'Storage usage rollup under a prefix (registry:read).',
|
|
84
|
+
tags,
|
|
85
|
+
security: auth,
|
|
86
|
+
responses: { 200: { description: 'Storage usage' }, 403: { description: 'registry:read required' } },
|
|
87
|
+
});
|
|
88
|
+
registry.registerPath({
|
|
89
|
+
method: 'post',
|
|
90
|
+
path: '/api/admin/gc',
|
|
91
|
+
summary: 'Run registry garbage collection',
|
|
92
|
+
description: 'Trigger blob/manifest garbage collection (registry:write).',
|
|
93
|
+
tags,
|
|
94
|
+
security: auth,
|
|
95
|
+
responses: { 202: { description: 'GC started' }, 403: { description: 'registry:write required' } },
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcmVnaXN0cnktcm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29wZW5hcGkvcm91dGVzL2ltYWdlLXJlZ2lzdHJ5LXJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxNQUFNLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDaEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRWxDOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLDJCQUEyQjtJQUN6QyxRQUFRLENBQUMsWUFBWSxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLFFBQVE7UUFDZCxPQUFPLEVBQUUsOEJBQThCO1FBQ3ZDLFdBQVcsRUFBRSwrS0FBK0s7UUFDNUwsSUFBSTtRQUNKLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxFQUFFO0tBQzFHLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFDcEIsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsYUFBYTtRQUNuQixPQUFPLEVBQUUsYUFBYTtRQUN0QixXQUFXLEVBQUUsMkRBQTJEO1FBQ3hFLElBQUk7UUFDSixRQUFRLEVBQUUsSUFBSTtRQUNkLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUUsRUFBRTtLQUNsRyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsWUFBWSxDQUFDO1FBQ3BCLE1BQU0s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LDREQUE0RDtRQUN6RSxJQUFJO1FBQ0osUUFBUSxFQUFFLElBQUk7UUFDZCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLHlCQUF5QixFQUFFLEVBQUU7S0FDbkcsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyByZWdpc3RyeSB9IGZyb20gJy4uL3JlZ2lzdHJ5LmpzJztcblxuY29uc3QgdGFncyA9IFsnSW1hZ2UgUmVnaXN0cnknXTtcbmNvbnN0IGF1dGggPSBbeyBiZWFyZXJBdXRoOiBbXSB9XTtcblxuLyoqXG4gKiBPcGVuQVBJIGRlZmluaXRpb25zIGZvciB0aGUgaW1hZ2UtcmVnaXN0cnkgc2VydmljZSAoYXBpL2ltYWdlLXJlZ2lzdHJ5KTogdGhlXG4gKiBEb2NrZXItcmVnaXN0cnkgdG9rZW4gZW5kcG9pbnQgKGAvdG9rZW5gKSwgdGhlIG9yZy1zY29wZWQgaW1hZ2UgQVBJXG4gKiAoYC9hcGkvaW1hZ2VzYCksIGFuZCB0aGUgYWRtaW4gQVBJIChgL2FwaS9hZG1pbmApLiBJbWFnZSByZWFkL3dyaXRlIGlzIGdhdGVkIGJ5XG4gKiB0aGUgYHJlZ2lzdHJ5OnJlYWRgIC8gYHJlZ2lzdHJ5OndyaXRlYCBwZXJtaXNzaW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVySW1hZ2VSZWdpc3RyeVJvdXRlcygpOiB2b2lkIHtcbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdnZXQnLFxuICAgIHBhdGg6ICcvdG9rZW4nLFxuICAgIHN1bW1hcnk6ICdNaW50IGEgRG9ja2VyIHJlZ2lzdHJ5IHRva2VuJyxcbiAgICBkZXNjcmlwdGlvbjogJ09BdXRoMi1zdHlsZSB0b2tlbiBlbmRwb2ludCBmb3IgYGRvY2tlcmAvYGNyYW5lYC9gYnVpbGRjdGxgIGNsaWVudHMuIFZlcmlmaWVzIEJhc2ljLWF1dGggY3JlZHMgKGEgcGxhdGZvcm0gSldUIG9yIHVzZXIgbG9naW4pIGFuZCBpc3N1ZXMgYSBzY29wZWQgYmVhcmVyIHRva2VuIGZvciBwdWxsL3B1c2guJyxcbiAgICB0YWdzLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdSZWdpc3RyeSBhY2Nlc3MgdG9rZW4nIH0sIDQwMTogeyBkZXNjcmlwdGlvbjogJ0ludmFsaWQgY3JlZGVudGlhbHMnIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdnZXQnLFxuICAgIHBhdGg6ICcvYXBpL2ltYWdlcycsXG4gICAgc3VtbWFyeTogJ0xpc3QgaW1hZ2VzJyxcbiAgICBkZXNjcmlwdGlvbjogXCJMaXN0IHRoZSBvcmdhbml6YXRpb24ncyBjb250YWluZXIgaW1hZ2VzIGluIHRoZSByZWdpc3RyeS5cIixcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdJbWFnZSBsaXN0JyB9LCA0MDM6IHsgZGVzY3JpcHRpb246ICdyZWdpc3RyeTpyZWFkIHJlcXVpcmVkJyB9IH0sXG4gIH0pO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyUGF0aCh7XG4gICAgbWV0aG9kOiAnZ2V0JyxcbiAgICBwYXRoOiAnL2FwaS9pbWFnZXMve25hbWV9L3RhZ3MnLFxuICAgIHN1bW1hcnk6ICdMaXN0IGltYWdlIHRhZ3MnLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMDogeyBkZXNjcmlwdGlvbjogJ1RhZyBsaXN0JyB9LCA0MDQ6IHsgZGVzY3JpcHRpb246ICdJbWFnZSBub3QgZm91bmQnIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdnZXQnLFxuICAgIHBhdGg6ICcvYXBpL2ltYWdlcy97bmFtZX0vbWFuaWZlc3RzL3tyZWZlcmVuY2V9JyxcbiAgICBzdW1tYXJ5OiAnR2V0IGFuIGltYWdlIG1hbmlmZXN0JyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdPQ0kgbWFuaWZlc3QgLyBpbmRleCcgfSwgNDA0OiB7IGRlc2NyaXB0aW9uOiAnTWFuaWZlc3Qgbm90IGZvdW5kJyB9IH0sXG4gIH0pO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyUGF0aCh7XG4gICAgbWV0aG9kOiAnZ2V0JyxcbiAgICBwYXRoOiAnL2FwaS9pbWFnZXMve25hbWV9L2Jsb2JzL3tkaWdlc3R9JyxcbiAgICBzdW1tYXJ5OiAnR2V0IGFuIGltYWdlIGJsb2InLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMDogeyBkZXNjcmlwdGlvbjogJ0Jsb2IgY29udGVudCcgfSwgNDA0OiB7IGRlc2NyaXB0aW9uOiAnQmxvYiBub3QgZm91bmQnIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICBwYXRoOiAnL2FwaS9pbWFnZXMvY29weScsXG4gICAgc3VtbWFyeTogJ0NvcHkgYW4gaW1hZ2UnLFxuICAgIGRlc2NyaXB0aW9uOiAnU2VydmVyLXNpZGUgY29weSBvZiBhbiBpbWFnZSBiZXR3ZWVuIHJlcG9zaXRvcmllcy4gUmVxdWlyZXMgYm90aCByZWdpc3RyeTpyZWFkIGFuZCByZWdpc3RyeTp3cml0ZS4nLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMDogeyBkZXNjcmlwdGlvbjogJ0ltYWdlIGNvcGllZCcgfSwgNDAzOiB7IGRlc2NyaXB0aW9uOiAncmVnaXN0cnk6cmVhZCArIHJlZ2lzdHJ5OndyaXRlIHJlcXVpcmVkJyB9IH0sXG4gIH0pO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyUGF0aCh7XG4gICAgbWV0aG9kOiAnZGVsZXRlJyxcbiAgICBwYXRoOiAnL2FwaS9pbWFnZXMve25hbWV9JyxcbiAgICBzdW1tYXJ5OiAnRGVsZXRlIGFuIGltYWdlIHJlcG9zaXRvcnknLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMDogeyBkZXNjcmlwdGlvbjogJ1JlcG9zaXRvcnkgZGVsZXRlZCcgfSwgNDAzOiB7IGRlc2NyaXB0aW9uOiAncmVnaXN0cnk6d3JpdGUgcmVxdWlyZWQnIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdkZWxldGUnLFxuICAgIHBhdGg6ICcvYXBpL2ltYWdlcy97bmFtZX0vbWFuaWZlc3RzL3tyZWZlcmVuY2V9JyxcbiAgICBzdW1tYXJ5OiAnRGVsZXRlIGFuIGltYWdlIG1hbmlmZXN0L3RhZycsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAwOiB7IGRlc2NyaXB0aW9uOiAnTWFuaWZlc3QgZGVsZXRlZCcgfSwgNDAzOiB7IGRlc2NyaXB0aW9uOiAncmVnaXN0cnk6d3JpdGUgcmVxdWlyZWQnIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdnZXQnLFxuICAgIHBhdGg6ICcvYXBpL2FkbWluL3N0b3JhZ2Uve3ByZWZpeH0nLFxuICAgIHN1bW1hcnk6ICdSZWdpc3RyeSBzdG9yYWdlIHJvbGx1cCcsXG4gICAgZGVzY3JpcHRpb246ICdTdG9yYWdlIHVzYWdlIHJvbGx1cCB1bmRlciBhIHByZWZpeCAocmVnaXN0cnk6cmVhZCkuJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdTdG9yYWdlIHVzYWdlJyB9LCA0MDM6IHsgZGVzY3JpcHRpb246ICdyZWdpc3RyeTpyZWFkIHJlcXVpcmVkJyB9IH0sXG4gIH0pO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyUGF0aCh7XG4gICAgbWV0aG9kOiAncG9zdCcsXG4gICAgcGF0aDogJy9hcGkvYWRtaW4vZ2MnLFxuICAgIHN1bW1hcnk6ICdSdW4gcmVnaXN0cnkgZ2FyYmFnZSBjb2xsZWN0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjogJ1RyaWdnZXIgYmxvYi9tYW5pZmVzdCBnYXJiYWdlIGNvbGxlY3Rpb24gKHJlZ2lzdHJ5OndyaXRlKS4nLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMjogeyBkZXNjcmlwdGlvbjogJ0dDIHN0YXJ0ZWQnIH0sIDQwMzogeyBkZXNjcmlwdGlvbjogJ3JlZ2lzdHJ5OndyaXRlIHJlcXVpcmVkJyB9IH0sXG4gIH0pO1xufVxuIl19
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { registerAskRoutes } from './ask-routes.js';
|
|
3
4
|
import { registerBillingRoutes } from './billing-routes.js';
|
|
5
|
+
import { registerImageRegistryRoutes } from './image-registry-routes.js';
|
|
4
6
|
import { registerMessageRoutes } from './message-routes.js';
|
|
5
7
|
import { registerPipelineRoutes } from './pipeline-routes.js';
|
|
6
8
|
import { registerPipelineTemplateRoutes } from './pipeline-template-routes.js';
|
|
@@ -11,11 +13,16 @@ import { registerQuotaRoutes } from './quota-routes.js';
|
|
|
11
13
|
* Call this once during spec generation initialization.
|
|
12
14
|
*/
|
|
13
15
|
export function registerAllRoutes() {
|
|
16
|
+
registerAskRoutes();
|
|
14
17
|
registerBillingRoutes();
|
|
18
|
+
registerImageRegistryRoutes();
|
|
15
19
|
registerMessageRoutes();
|
|
16
20
|
registerPipelineRoutes();
|
|
17
21
|
registerPipelineTemplateRoutes();
|
|
18
22
|
registerPluginRoutes();
|
|
19
23
|
registerQuotaRoutes();
|
|
24
|
+
// NOTE: compliance + reporting (large multi-router surfaces) and platform/auth
|
|
25
|
+
// are not yet registered — follow-on, and intentionally omitted rather than
|
|
26
|
+
// shipping inaccurate paths.
|
|
20
27
|
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvb3BlbmFwaS9yb3V0ZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV4RDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsaUJBQWlCO0lBQy9CLGlCQUFpQixFQUFFLENBQUM7SUFDcEIscUJBQXFCLEVBQUUsQ0FBQztJQUN4QiwyQkFBMkIsRUFBRSxDQUFDO0lBQzlCLHFCQUFxQixFQUFFLENBQUM7SUFDeEIsc0JBQXNCLEVBQUUsQ0FBQztJQUN6Qiw4QkFBOEIsRUFBRSxDQUFDO0lBQ2pDLG9CQUFvQixFQUFFLENBQUM7SUFDdkIsbUJBQW1CLEVBQUUsQ0FBQztJQUN0QiwrRUFBK0U7SUFDL0UsNEVBQTRFO0lBQzVFLDZCQUE2QjtBQUMvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IHJlZ2lzdGVyQXNrUm91dGVzIH0gZnJvbSAnLi9hc2stcm91dGVzLmpzJztcbmltcG9ydCB7IHJlZ2lzdGVyQmlsbGluZ1JvdXRlcyB9IGZyb20gJy4vYmlsbGluZy1yb3V0ZXMuanMnO1xuaW1wb3J0IHsgcmVnaXN0ZXJJbWFnZVJlZ2lzdHJ5Um91dGVzIH0gZnJvbSAnLi9pbWFnZS1yZWdpc3RyeS1yb3V0ZXMuanMnO1xuaW1wb3J0IHsgcmVnaXN0ZXJNZXNzYWdlUm91dGVzIH0gZnJvbSAnLi9tZXNzYWdlLXJvdXRlcy5qcyc7XG5pbXBvcnQgeyByZWdpc3RlclBpcGVsaW5lUm91dGVzIH0gZnJvbSAnLi9waXBlbGluZS1yb3V0ZXMuanMnO1xuaW1wb3J0IHsgcmVnaXN0ZXJQaXBlbGluZVRlbXBsYXRlUm91dGVzIH0gZnJvbSAnLi9waXBlbGluZS10ZW1wbGF0ZS1yb3V0ZXMuanMnO1xuaW1wb3J0IHsgcmVnaXN0ZXJQbHVnaW5Sb3V0ZXMgfSBmcm9tICcuL3BsdWdpbi1yb3V0ZXMuanMnO1xuaW1wb3J0IHsgcmVnaXN0ZXJRdW90YVJvdXRlcyB9IGZyb20gJy4vcXVvdGEtcm91dGVzLmpzJztcblxuLyoqXG4gKiBSZWdpc3RlciBhbGwgT3BlbkFQSSByb3V0ZSBkZWZpbml0aW9ucyB3aXRoIHRoZSBzaGFyZWQgcmVnaXN0cnkuXG4gKiBDYWxsIHRoaXMgb25jZSBkdXJpbmcgc3BlYyBnZW5lcmF0aW9uIGluaXRpYWxpemF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJBbGxSb3V0ZXMoKTogdm9pZCB7XG4gIHJlZ2lzdGVyQXNrUm91dGVzKCk7XG4gIHJlZ2lzdGVyQmlsbGluZ1JvdXRlcygpO1xuICByZWdpc3RlckltYWdlUmVnaXN0cnlSb3V0ZXMoKTtcbiAgcmVnaXN0ZXJNZXNzYWdlUm91dGVzKCk7XG4gIHJlZ2lzdGVyUGlwZWxpbmVSb3V0ZXMoKTtcbiAgcmVnaXN0ZXJQaXBlbGluZVRlbXBsYXRlUm91dGVzKCk7XG4gIHJlZ2lzdGVyUGx1Z2luUm91dGVzKCk7XG4gIHJlZ2lzdGVyUXVvdGFSb3V0ZXMoKTtcbiAgLy8gTk9URTogY29tcGxpYW5jZSArIHJlcG9ydGluZyAobGFyZ2UgbXVsdGktcm91dGVyIHN1cmZhY2VzKSBhbmQgcGxhdGZvcm0vYXV0aFxuICAvLyBhcmUgbm90IHlldCByZWdpc3RlcmVkIOKAlCBmb2xsb3ctb24sIGFuZCBpbnRlbnRpb25hbGx5IG9taXR0ZWQgcmF0aGVyIHRoYW5cbiAgLy8gc2hpcHBpbmcgaW5hY2N1cmF0ZSBwYXRocy5cbn1cbiJdfQ==
|
|
@@ -39,6 +39,15 @@ export function registerPipelineRoutes() {
|
|
|
39
39
|
security: auth,
|
|
40
40
|
responses: { 200: { description: 'Scorecard' }, 403: { description: 'Feature not enabled' }, 404: { description: 'Not found' } },
|
|
41
41
|
});
|
|
42
|
+
registry.registerPath({
|
|
43
|
+
method: 'get',
|
|
44
|
+
path: '/pipelines/scorecard',
|
|
45
|
+
summary: 'Org-wide scorecard roll-up (software-health leaderboard)',
|
|
46
|
+
description: 'Grades every pipeline in the organization and returns a ranked leaderboard plus aggregate stats (pipeline count, average score, grade distribution). Bounded per request. Requires the `advanced_reporting` feature.',
|
|
47
|
+
tags,
|
|
48
|
+
security: auth,
|
|
49
|
+
responses: { 200: { description: 'Org-wide scorecard roll-up' }, 403: { description: 'Feature not enabled' } },
|
|
50
|
+
});
|
|
42
51
|
registry.registerPath({
|
|
43
52
|
method: 'post',
|
|
44
53
|
path: '/pipelines',
|
|
@@ -93,4 +102,4 @@ export function registerPipelineRoutes() {
|
|
|
93
102
|
responses: { 200: { description: 'SSE event stream of partial pipeline objects' }, 400: { description: 'Validation error' } },
|
|
94
103
|
});
|
|
95
104
|
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtcm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29wZW5hcGkvcm91dGVzL3BpcGVsaW5lLXJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxNQUFNLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzNCLE1BQU0sSUFBSSxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUVsQyxNQUFNLFVBQVUsc0JBQXNCO0lBQ3BDLFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFDcEIsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsWUFBWTtRQUNsQixPQUFPLEVBQUUsZ0JBQWdCO1FBQ3pCLFdBQVcsRUFBRSx5REFBeUQ7UUFDdEUsSUFBSTtRQUNKLFFBQVEsRUFBRSxJQUFJO1FBQ2QsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLDZCQUE2QixFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxFQUFFO0tBQ3pHLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFDcEIsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsaUJBQWlCO1FBQ3ZCLE9BQU8sRUFBRSx3QkFBd0I7UUFDakMsV0FBVyxFQUFFLG9EQUFvRDtRQUNqRSxJQUFJO1FBQ0osUUFBUSxFQUFFLElBQUk7UUFDZCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEVBQUU7S0FDekYsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUNwQixNQUFNLEVBQUUs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QUVILFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFDcEIsTUFBTSxFQUFFLE1BQU07UUFDZCxJQUFJLEVBQUUsNEJBQTRCO1FBQ2xDLE9BQU8sRUFBRSxtQ0FBbUM7UUFDNUMsV0FBVyxFQUFFLDhHQUE4RztRQUMzSCxJQUFJO1FBQ0osUUFBUSxFQUFFLElBQUk7UUFDZCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsOENBQThDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsRUFBRTtLQUM5SCxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IHJlZ2lzdHJ5IH0gZnJvbSAnLi4vcmVnaXN0cnkuanMnO1xuXG5jb25zdCB0YWdzID0gWydQaXBlbGluZXMnXTtcbmNvbnN0IGF1dGggPSBbeyBiZWFyZXJBdXRoOiBbXSB9XTtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyUGlwZWxpbmVSb3V0ZXMoKTogdm9pZCB7XG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyUGF0aCh7XG4gICAgbWV0aG9kOiAnZ2V0JyxcbiAgICBwYXRoOiAnL3BpcGVsaW5lcycsXG4gICAgc3VtbWFyeTogJ0xpc3QgcGlwZWxpbmVzJyxcbiAgICBkZXNjcmlwdGlvbjogJ0xpc3QgcGlwZWxpbmVzIHdpdGggcGFnaW5hdGlvbiwgZmlsdGVyaW5nLCBhbmQgc29ydGluZy4nLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMDogeyBkZXNjcmlwdGlvbjogJ1BhZ2luYXRlZCBsaXN0IG9mIHBpcGVsaW5lcycgfSwgNDAxOiB7IGRlc2NyaXB0aW9uOiAnVW5hdXRob3JpemVkJyB9IH0sXG4gIH0pO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyUGF0aCh7XG4gICAgbWV0aG9kOiAnZ2V0JyxcbiAgICBwYXRoOiAnL3BpcGVsaW5lcy9maW5kJyxcbiAgICBzdW1tYXJ5OiAnRmluZCBhIHNpbmdsZSBwaXBlbGluZScsXG4gICAgZGVzY3JpcHRpb246ICdGaW5kIGEgc2luZ2xlIHBpcGVsaW5lIG1hdGNoaW5nIHRoZSBxdWVyeSBmaWx0ZXJzLicsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAwOiB7IGRlc2NyaXB0aW9uOiAnUGlwZWxpbmUgZm91bmQnIH0sIDQwNDogeyBkZXNjcmlwdGlvbjogJ05vdCBmb3VuZCcgfSB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ2dldCcsXG4gICAgcGF0aDogJy9waXBlbGluZXMve2lkfScsXG4gICAgc3VtbWFyeTogJ0dldCBwaXBlbGluZSBieSBJRCcsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAwOiB7IGRlc2NyaXB0aW9uOiAnUGlwZWxpbmUgZGV0YWlscycgfSwgNDA0OiB7IGRlc2NyaXB0aW9uOiAnTm90IGZvdW5kJyB9IH0sXG4gIH0pO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyUGF0aCh7XG4gICAgbWV0aG9kOiAnZ2V0JyxcbiAgICBwYXRoOiAnL3BpcGVsaW5lcy97aWR9L3Njb3JlY2FyZCcsXG4gICAgc3VtbWFyeTogJ0dldCBhIHBpcGVsaW5lIG1hdHVyaXR5IHNjb3JlY2FyZCcsXG4gICAgZGVzY3JpcHRpb246ICdQZXItcGlwZWxpbmUgbWF0dXJpdHkgc2NvcmVjYXJkIGJsZW5kaW5nIGNvbXBsaWFuY2UgcG9zdHVyZSB3aXRoIERPUkEgcGVyZm9ybWFuY2UgYmFuZHMgaW50byBhIDDigJMxMDAgc2NvcmUgYW5kIGxldHRlciBncmFkZS4gUmVxdWlyZXMgdGhlIGBhZHZhbmNlZF9yZXBvcnRpbmdgIGZlYXR1cmUuJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdTY29yZWNhcmQnIH0sIDQwMzogeyBkZXNjcmlwdGlvbjogJ0ZlYXR1cmUgbm90IGVuYWJsZWQnIH0sIDQwNDogeyBkZXNjcmlwdGlvbjogJ05vdCBmb3VuZCcgfSB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgIHBhdGg6ICcvcGlwZWxpbmVzJyxcbiAgICBzdW1tYXJ5OiAnQ3JlYXRlIGEgcGlwZWxpbmUnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ3JlYXRlIGEgbmV3IHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24uIENoZWNrcyBwaXBlbGluZSBxdW90YS4nLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMTogeyBkZXNjcmlwdGlvbjogJ1BpcGVsaW5lIGNyZWF0ZWQnIH0sIDQwMDogeyBkZXNjcmlwdGlvbjogJ1ZhbGlkYXRpb24gZXJyb3InIH0sIDQyOTogeyBkZXNjcmlwdGlvbjogJ1F1b3RhIGV4Y2VlZGVkJyB9IH0sXG4gIH0pO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyUGF0aCh7XG4gICAgbWV0aG9kOiAncHV0JyxcbiAgICBwYXRoOiAnL3BpcGVsaW5lcy97aWR9JyxcbiAgICBzdW1tYXJ5OiAnVXBkYXRlIGEgcGlwZWxpbmUnLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMDogeyBkZXNjcmlwdGlvbjogJ1BpcGVsaW5lIHVwZGF0ZWQnIH0sIDQwNDogeyBkZXNjcmlwdGlvbjogJ05vdCBmb3VuZCcgfSB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ2RlbGV0ZScsXG4gICAgcGF0aDogJy9waXBlbGluZXMve2lkfScsXG4gICAgc3VtbWFyeTogJ0RlbGV0ZSBhIHBpcGVsaW5lJyxcbiAgICBkZXNjcmlwdGlvbjogJ1NvZnQtZGVsZXRlIGEgcGlwZWxpbmUgYnkgc2V0dGluZyBpc0FjdGl2ZSB0byBmYWxzZS4nLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMDogeyBkZXNjcmlwdGlvbjogJ1BpcGVsaW5lIGRlbGV0ZWQnIH0sIDQwNDogeyBkZXNjcmlwdGlvbjogJ05vdCBmb3VuZCcgfSB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ2dldCcsXG4gICAgcGF0aDogJy9waXBlbGluZXMvcHJvdmlkZXJzJyxcbiAgICBzdW1tYXJ5OiAnTGlzdCBBSSBwcm92aWRlcnMnLFxuICAgIGRlc2NyaXB0aW9uOiAnTGlzdCBBSSBwcm92aWRlcnMgY29uZmlndXJlZCBmb3IgcGlwZWxpbmUgZ2VuZXJhdGlvbi4nLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMDogeyBkZXNjcmlwdGlvbjogJ0xpc3Qgb2YgYXZhaWxhYmxlIEFJIHByb3ZpZGVycyB3aXRoIG1vZGVscycgfSB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgIHBhdGg6ICcvcGlwZWxpbmVzL2dlbmVyYXRlJyxcbiAgICBzdW1tYXJ5OiAnR2VuZXJhdGUgcGlwZWxpbmUgdmlhIEFJJyxcbiAgICBkZXNjcmlwdGlvbjogJ0dlbmVyYXRlIGEgQnVpbGRlclByb3BzIGNvbmZpZ3VyYXRpb24gZnJvbSBhIG5hdHVyYWwgbGFuZ3VhZ2UgcHJvbXB0LiBSZXR1cm5zIHRoZSBjb21wbGV0ZSByZXN1bHQgd2hlbiBkb25lLicsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAwOiB7IGRlc2NyaXB0aW9uOiAnR2VuZXJhdGVkIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24nIH0sIDQwMDogeyBkZXNjcmlwdGlvbjogJ1ZhbGlkYXRpb24gZXJyb3InIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICBwYXRoOiAnL3BpcGVsaW5lcy9nZW5lcmF0ZS9zdHJlYW0nLFxuICAgIHN1bW1hcnk6ICdTdHJlYW0gcGlwZWxpbmUgZ2VuZXJhdGlvbiB2aWEgQUknLFxuICAgIGRlc2NyaXB0aW9uOiAnR2VuZXJhdGUgYSBCdWlsZGVyUHJvcHMgY29uZmlndXJhdGlvbiBmcm9tIGEgbmF0dXJhbCBsYW5ndWFnZSBwcm9tcHQuIFN0cmVhbXMgcGFydGlhbCByZXN1bHRzIGFzIFNTRSBldmVudHMuJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdTU0UgZXZlbnQgc3RyZWFtIG9mIHBhcnRpYWwgcGlwZWxpbmUgb2JqZWN0cycgfSwgNDAwOiB7IGRlc2NyaXB0aW9uOiAnVmFsaWRhdGlvbiBlcnJvcicgfSB9LFxuICB9KTtcbn1cbiJdfQ==
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtcm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29wZW5hcGkvcm91dGVzL3BpcGVsaW5lLXJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxNQUFNLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzNCLE1BQU0sSUFBSSxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUVsQyxNQUFNLFVBQVUsc0JBQXNCO0lBQ3BDLFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFDcEIsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsWUFBWTtRQUNsQixPQUFPLEVBQUUsZ0JBQWdCO1FBQ3pCLFdBQVcsRUFBRSx5REFBeUQ7UUFDdEUsSUFBSTtRQUNKLFFBQVEsRUFBRSxJQUFJO1FBQ2QsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLDZCQUE2QixFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxFQUFFO0tBQ3pHLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFDcEIsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsaUJBQWlCO1FBQ3ZCLE9BQU8sRUFBRSx3QkFBd0I7UUFDakMsV0FBVyxFQUFFLG9EQUFvRDtRQUNqRSxJQUFJO1FBQ0osUUFBUSxFQUFFLElBQUk7UUFDZCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEVBQUU7S0FDekYsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUNwQixNQUFNLEVBQUUs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QUVILFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFDcEIsTUFBTSxFQUFFLE1BQU07UUFDZCxJQUFJLEVBQUUscUJBQXFCO1FBQzNCLE9BQU8sRUFBRSwwQkFBMEI7UUFDbkMsV0FBVyxFQUFFLDhHQUE4RztRQUMzSCxJQUFJO1FBQ0osUUFBUSxFQUFFLElBQUk7UUFDZCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsa0NBQWtDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsRUFBRTtLQUNsSCxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsWUFBWSxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxNQUFNO1FBQ2QsSUFBSSxFQUFFLDRCQUE0QjtRQUNsQyxPQUFPLEVBQUUsbUNBQW1DO1FBQzVDLFdBQVcsRUFBRSw4R0FBOEc7UUFDM0gsSUFBSTtRQUNKLFFBQVEsRUFBRSxJQUFJO1FBQ2QsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLDhDQUE4QyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLEVBQUU7S0FDOUgsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyByZWdpc3RyeSB9IGZyb20gJy4uL3JlZ2lzdHJ5LmpzJztcblxuY29uc3QgdGFncyA9IFsnUGlwZWxpbmVzJ107XG5jb25zdCBhdXRoID0gW3sgYmVhcmVyQXV0aDogW10gfV07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlclBpcGVsaW5lUm91dGVzKCk6IHZvaWQge1xuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ2dldCcsXG4gICAgcGF0aDogJy9waXBlbGluZXMnLFxuICAgIHN1bW1hcnk6ICdMaXN0IHBpcGVsaW5lcycsXG4gICAgZGVzY3JpcHRpb246ICdMaXN0IHBpcGVsaW5lcyB3aXRoIHBhZ2luYXRpb24sIGZpbHRlcmluZywgYW5kIHNvcnRpbmcuJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdQYWdpbmF0ZWQgbGlzdCBvZiBwaXBlbGluZXMnIH0sIDQwMTogeyBkZXNjcmlwdGlvbjogJ1VuYXV0aG9yaXplZCcgfSB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ2dldCcsXG4gICAgcGF0aDogJy9waXBlbGluZXMvZmluZCcsXG4gICAgc3VtbWFyeTogJ0ZpbmQgYSBzaW5nbGUgcGlwZWxpbmUnLFxuICAgIGRlc2NyaXB0aW9uOiAnRmluZCBhIHNpbmdsZSBwaXBlbGluZSBtYXRjaGluZyB0aGUgcXVlcnkgZmlsdGVycy4nLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMDogeyBkZXNjcmlwdGlvbjogJ1BpcGVsaW5lIGZvdW5kJyB9LCA0MDQ6IHsgZGVzY3JpcHRpb246ICdOb3QgZm91bmQnIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdnZXQnLFxuICAgIHBhdGg6ICcvcGlwZWxpbmVzL3tpZH0nLFxuICAgIHN1bW1hcnk6ICdHZXQgcGlwZWxpbmUgYnkgSUQnLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMDogeyBkZXNjcmlwdGlvbjogJ1BpcGVsaW5lIGRldGFpbHMnIH0sIDQwNDogeyBkZXNjcmlwdGlvbjogJ05vdCBmb3VuZCcgfSB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ2dldCcsXG4gICAgcGF0aDogJy9waXBlbGluZXMve2lkfS9zY29yZWNhcmQnLFxuICAgIHN1bW1hcnk6ICdHZXQgYSBwaXBlbGluZSBtYXR1cml0eSBzY29yZWNhcmQnLFxuICAgIGRlc2NyaXB0aW9uOiAnUGVyLXBpcGVsaW5lIG1hdHVyaXR5IHNjb3JlY2FyZCBibGVuZGluZyBjb21wbGlhbmNlIHBvc3R1cmUgd2l0aCBET1JBIHBlcmZvcm1hbmNlIGJhbmRzIGludG8gYSAw4oCTMTAwIHNjb3JlIGFuZCBsZXR0ZXIgZ3JhZGUuIFJlcXVpcmVzIHRoZSBgYWR2YW5jZWRfcmVwb3J0aW5nYCBmZWF0dXJlLicsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAwOiB7IGRlc2NyaXB0aW9uOiAnU2NvcmVjYXJkJyB9LCA0MDM6IHsgZGVzY3JpcHRpb246ICdGZWF0dXJlIG5vdCBlbmFibGVkJyB9LCA0MDQ6IHsgZGVzY3JpcHRpb246ICdOb3QgZm91bmQnIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdnZXQnLFxuICAgIHBhdGg6ICcvcGlwZWxpbmVzL3Njb3JlY2FyZCcsXG4gICAgc3VtbWFyeTogJ09yZy13aWRlIHNjb3JlY2FyZCByb2xsLXVwIChzb2Z0d2FyZS1oZWFsdGggbGVhZGVyYm9hcmQpJyxcbiAgICBkZXNjcmlwdGlvbjogJ0dyYWRlcyBldmVyeSBwaXBlbGluZSBpbiB0aGUgb3JnYW5pemF0aW9uIGFuZCByZXR1cm5zIGEgcmFua2VkIGxlYWRlcmJvYXJkIHBsdXMgYWdncmVnYXRlIHN0YXRzIChwaXBlbGluZSBjb3VudCwgYXZlcmFnZSBzY29yZSwgZ3JhZGUgZGlzdHJpYnV0aW9uKS4gQm91bmRlZCBwZXIgcmVxdWVzdC4gUmVxdWlyZXMgdGhlIGBhZHZhbmNlZF9yZXBvcnRpbmdgIGZlYXR1cmUuJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdPcmctd2lkZSBzY29yZWNhcmQgcm9sbC11cCcgfSwgNDAzOiB7IGRlc2NyaXB0aW9uOiAnRmVhdHVyZSBub3QgZW5hYmxlZCcgfSB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgIHBhdGg6ICcvcGlwZWxpbmVzJyxcbiAgICBzdW1tYXJ5OiAnQ3JlYXRlIGEgcGlwZWxpbmUnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ3JlYXRlIGEgbmV3IHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24uIENoZWNrcyBwaXBlbGluZSBxdW90YS4nLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMTogeyBkZXNjcmlwdGlvbjogJ1BpcGVsaW5lIGNyZWF0ZWQnIH0sIDQwMDogeyBkZXNjcmlwdGlvbjogJ1ZhbGlkYXRpb24gZXJyb3InIH0sIDQyOTogeyBkZXNjcmlwdGlvbjogJ1F1b3RhIGV4Y2VlZGVkJyB9IH0sXG4gIH0pO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyUGF0aCh7XG4gICAgbWV0aG9kOiAncHV0JyxcbiAgICBwYXRoOiAnL3BpcGVsaW5lcy97aWR9JyxcbiAgICBzdW1tYXJ5OiAnVXBkYXRlIGEgcGlwZWxpbmUnLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMDogeyBkZXNjcmlwdGlvbjogJ1BpcGVsaW5lIHVwZGF0ZWQnIH0sIDQwNDogeyBkZXNjcmlwdGlvbjogJ05vdCBmb3VuZCcgfSB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ2RlbGV0ZScsXG4gICAgcGF0aDogJy9waXBlbGluZXMve2lkfScsXG4gICAgc3VtbWFyeTogJ0RlbGV0ZSBhIHBpcGVsaW5lJyxcbiAgICBkZXNjcmlwdGlvbjogJ1NvZnQtZGVsZXRlIGEgcGlwZWxpbmUgYnkgc2V0dGluZyBpc0FjdGl2ZSB0byBmYWxzZS4nLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMDogeyBkZXNjcmlwdGlvbjogJ1BpcGVsaW5lIGRlbGV0ZWQnIH0sIDQwNDogeyBkZXNjcmlwdGlvbjogJ05vdCBmb3VuZCcgfSB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ2dldCcsXG4gICAgcGF0aDogJy9waXBlbGluZXMvcHJvdmlkZXJzJyxcbiAgICBzdW1tYXJ5OiAnTGlzdCBBSSBwcm92aWRlcnMnLFxuICAgIGRlc2NyaXB0aW9uOiAnTGlzdCBBSSBwcm92aWRlcnMgY29uZmlndXJlZCBmb3IgcGlwZWxpbmUgZ2VuZXJhdGlvbi4nLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMDogeyBkZXNjcmlwdGlvbjogJ0xpc3Qgb2YgYXZhaWxhYmxlIEFJIHByb3ZpZGVycyB3aXRoIG1vZGVscycgfSB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgIHBhdGg6ICcvcGlwZWxpbmVzL2dlbmVyYXRlJyxcbiAgICBzdW1tYXJ5OiAnR2VuZXJhdGUgcGlwZWxpbmUgdmlhIEFJJyxcbiAgICBkZXNjcmlwdGlvbjogJ0dlbmVyYXRlIGEgQnVpbGRlclByb3BzIGNvbmZpZ3VyYXRpb24gZnJvbSBhIG5hdHVyYWwgbGFuZ3VhZ2UgcHJvbXB0LiBSZXR1cm5zIHRoZSBjb21wbGV0ZSByZXN1bHQgd2hlbiBkb25lLicsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAwOiB7IGRlc2NyaXB0aW9uOiAnR2VuZXJhdGVkIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24nIH0sIDQwMDogeyBkZXNjcmlwdGlvbjogJ1ZhbGlkYXRpb24gZXJyb3InIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICBwYXRoOiAnL3BpcGVsaW5lcy9nZW5lcmF0ZS9zdHJlYW0nLFxuICAgIHN1bW1hcnk6ICdTdHJlYW0gcGlwZWxpbmUgZ2VuZXJhdGlvbiB2aWEgQUknLFxuICAgIGRlc2NyaXB0aW9uOiAnR2VuZXJhdGUgYSBCdWlsZGVyUHJvcHMgY29uZmlndXJhdGlvbiBmcm9tIGEgbmF0dXJhbCBsYW5ndWFnZSBwcm9tcHQuIFN0cmVhbXMgcGFydGlhbCByZXN1bHRzIGFzIFNTRSBldmVudHMuJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdTU0UgZXZlbnQgc3RyZWFtIG9mIHBhcnRpYWwgcGlwZWxpbmUgb2JqZWN0cycgfSwgNDAwOiB7IGRlc2NyaXB0aW9uOiAnVmFsaWRhdGlvbiBlcnJvcicgfSB9LFxuICB9KTtcbn1cbiJdfQ==
|
|
@@ -8,7 +8,7 @@ export function registerPipelineTemplateRoutes() {
|
|
|
8
8
|
method: 'get',
|
|
9
9
|
path: '/pipeline-templates',
|
|
10
10
|
summary: 'List pipeline templates',
|
|
11
|
-
description: 'List golden-path pipeline templates (
|
|
11
|
+
description: 'List golden-path pipeline templates with pagination and filtering. Visibility is a three-rung ladder: `private` (author only), `org` (everyone in the owning org), `public` (the org, its teams, and — for the system org — every org). Optional `visibility` query param narrows within what the caller can already see.',
|
|
12
12
|
tags,
|
|
13
13
|
security: auth,
|
|
14
14
|
responses: { 200: { description: 'Paginated list of templates' }, 401: { description: 'Unauthorized' } },
|
|
@@ -34,26 +34,28 @@ export function registerPipelineTemplateRoutes() {
|
|
|
34
34
|
method: 'post',
|
|
35
35
|
path: '/pipeline-templates',
|
|
36
36
|
summary: 'Create a pipeline template',
|
|
37
|
-
description: 'Author a golden-path template. Requires
|
|
37
|
+
description: 'Author a golden-path template. Requires `templates:write`; `visibility: public` additionally requires `templates:publish` (a caller without it is clamped to `org`). Defaults to `private` — a personal draft only the author can see.',
|
|
38
38
|
tags,
|
|
39
39
|
security: auth,
|
|
40
|
-
responses: { 201: { description: 'Template created' }, 400: { description: 'Validation error' }, 403: { description: 'Forbidden' } },
|
|
40
|
+
responses: { 201: { description: 'Template created' }, 400: { description: 'Validation error' }, 403: { description: 'Forbidden' }, 409: { description: 'A template with that name already exists in the organization' } },
|
|
41
41
|
});
|
|
42
42
|
registry.registerPath({
|
|
43
43
|
method: 'put',
|
|
44
44
|
path: '/pipeline-templates/{id}',
|
|
45
45
|
summary: 'Update a pipeline template',
|
|
46
|
+
description: 'Requires `templates:write`, plus `templates:publish` for a `public` template and authorship for a `private` one.',
|
|
46
47
|
tags,
|
|
47
48
|
security: auth,
|
|
48
|
-
responses: { 200: { description: 'Template updated' }, 404: { description: 'Not found' } },
|
|
49
|
+
responses: { 200: { description: 'Template updated' }, 403: { description: 'Forbidden' }, 404: { description: 'Not found' } },
|
|
49
50
|
});
|
|
50
51
|
registry.registerPath({
|
|
51
52
|
method: 'delete',
|
|
52
53
|
path: '/pipeline-templates/{id}',
|
|
53
54
|
summary: 'Delete a pipeline template',
|
|
55
|
+
description: 'Same authority as update: `templates:write`, plus `templates:publish` for a `public` template and authorship for a `private` one.',
|
|
54
56
|
tags,
|
|
55
57
|
security: auth,
|
|
56
|
-
responses: { 200: { description: 'Template deleted' }, 404: { description: 'Not found' } },
|
|
58
|
+
responses: { 200: { description: 'Template deleted' }, 403: { description: 'Forbidden' }, 404: { description: 'Not found' } },
|
|
57
59
|
});
|
|
58
60
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtdGVtcGxhdGUtcm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29wZW5hcGkvcm91dGVzL3BpcGVsaW5lLXRlbXBsYXRlLXJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxNQUFNLElBQUksR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFDcEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRWxDLE1BQU0sVUFBVSw4QkFBOEI7SUFDNUMsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUNwQixNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSxxQkFBcUI7UUFDM0IsT0FBTyxFQUFFLHlCQUF5QjtRQUNsQyxXQUFXLEVBQUUsMlRBQTJUO1FBQ3hVLElBQUk7UUFDSixRQUFRLEVBQUUsSUFBSTtRQUNkLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSw2QkFBNkIsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsRUFBRTtLQUN6RyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsWUFBWSxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLDBCQUEwQjtRQUNoQyxPQUFPLEVBQUUsK0JBQStCO1FBQ3hDLElBQUk7UUFDSixRQUFRLEVBQUUsSUFBSTtRQUNkLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsRUFBRTtLQUMzRixDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsWUFBWSxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxNQUFNO1FBQ2QsSUFBSSxFQUFFLHNDQUFzQztRQUM1QyxPQUFPLEVBQUUsd0JBQXdCO1FBQ2pDLFdBQVcsRUFBRSxxTUFBcU07UUFDbE4sSUFBSTtRQUNKLFFBQVEsRUFBRSxJQUFJO1FBQ2QsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLHlCQUF5QixFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxFQUFFO0tBQzFJLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFDcEIsTUFBTSxFQUFFLE1BQU07UUFDZCxJQUFJLEVBQUUscUJBQXFCO1FBQzNCLE9BQU8sRUFBRSw0QkFBNEI7UUFDckMsV0FBVyxFQUFFLHdPQUF3TztRQUNyUCxJQUFJO1FBQ0osUUFBUSxFQUFFLElBQUk7UUFDZCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLDhEQUE4RCxFQUFFLEVBQUU7S0FDM04sQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUNwQixNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSwwQkFBMEI7UUFDaEMsT0FBTyxFQUFFLDRCQUE0QjtRQUNyQyxXQUFXLEVBQUUsa0hBQWtIO1FBQy9ILElBQUk7UUFDSixRQUFRLEVBQUUsSUFBSTtRQUNkLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEVBQUU7S0FDOUgsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUNwQixNQUFNLEVBQUUsUUFBUTtRQUNoQixJQUFJLEVBQUUsMEJBQTBCO1FBQ2hDLE9BQU8sRUFBRSw0QkFBNEI7UUFDckMsV0FBVyxFQUFFLG1JQUFtSTtRQUNoSixJQUFJO1FBQ0osUUFBUSxFQUFFLElBQUk7UUFDZCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxFQUFFO0tBQzlILENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgcmVnaXN0cnkgfSBmcm9tICcuLi9yZWdpc3RyeS5qcyc7XG5cbmNvbnN0IHRhZ3MgPSBbJ1BpcGVsaW5lIFRlbXBsYXRlcyddO1xuY29uc3QgYXV0aCA9IFt7IGJlYXJlckF1dGg6IFtdIH1dO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJQaXBlbGluZVRlbXBsYXRlUm91dGVzKCk6IHZvaWQge1xuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ2dldCcsXG4gICAgcGF0aDogJy9waXBlbGluZS10ZW1wbGF0ZXMnLFxuICAgIHN1bW1hcnk6ICdMaXN0IHBpcGVsaW5lIHRlbXBsYXRlcycsXG4gICAgZGVzY3JpcHRpb246ICdMaXN0IGdvbGRlbi1wYXRoIHBpcGVsaW5lIHRlbXBsYXRlcyB3aXRoIHBhZ2luYXRpb24gYW5kIGZpbHRlcmluZy4gVmlzaWJpbGl0eSBpcyBhIHRocmVlLXJ1bmcgbGFkZGVyOiBgcHJpdmF0ZWAgKGF1dGhvciBvbmx5KSwgYG9yZ2AgKGV2ZXJ5b25lIGluIHRoZSBvd25pbmcgb3JnKSwgYHB1YmxpY2AgKHRoZSBvcmcsIGl0cyB0ZWFtcywgYW5kIOKAlCBmb3IgdGhlIHN5c3RlbSBvcmcg4oCUIGV2ZXJ5IG9yZykuIE9wdGlvbmFsIGB2aXNpYmlsaXR5YCBxdWVyeSBwYXJhbSBuYXJyb3dzIHdpdGhpbiB3aGF0IHRoZSBjYWxsZXIgY2FuIGFscmVhZHkgc2VlLicsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAwOiB7IGRlc2NyaXB0aW9uOiAnUGFnaW5hdGVkIGxpc3Qgb2YgdGVtcGxhdGVzJyB9LCA0MDE6IHsgZGVzY3JpcHRpb246ICdVbmF1dGhvcml6ZWQnIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdnZXQnLFxuICAgIHBhdGg6ICcvcGlwZWxpbmUtdGVtcGxhdGVzL3tpZH0nLFxuICAgIHN1bW1hcnk6ICdHZXQgYSBwaXBlbGluZSB0ZW1wbGF0ZSBieSBJRCcsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAwOiB7IGRlc2NyaXB0aW9uOiAnVGVtcGxhdGUgZGV0YWlscycgfSwgNDA0OiB7IGRlc2NyaXB0aW9uOiAnTm90IGZvdW5kJyB9IH0sXG4gIH0pO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyUGF0aCh7XG4gICAgbWV0aG9kOiAncG9zdCcsXG4gICAgcGF0aDogJy9waXBlbGluZS10ZW1wbGF0ZXMve2lkfS9pbnN0YW50aWF0ZScsXG4gICAgc3VtbWFyeTogJ0luc3RhbnRpYXRlIGEgdGVtcGxhdGUnLFxuICAgIGRlc2NyaXB0aW9uOiAnUmVuZGVyIGEgdGVtcGxhdGUgaW50byBhIGNvbmNyZXRlIHBpcGVsaW5lIGBwcm9wc2AgYnkgc3VwcGx5aW5nIGl0cyBkZWNsYXJlZCBpbnB1dHMuIFRoZSByZXR1cm5lZCBwcm9wcyBhcmUgc3VibWl0dGVkIHRocm91Z2ggdGhlIG5vcm1hbCBwaXBlbGluZS1jcmVhdGUgZW5kcG9pbnQgKGNvbXBsaWFuY2UgKyBxdW90YSBhcHBseSB0aGVyZSkuJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdSZXNvbHZlZCBwaXBlbGluZSBwcm9wcycgfSwgNDAwOiB7IGRlc2NyaXB0aW9uOiAnSW52YWxpZCBpbnB1dHMnIH0sIDQwNDogeyBkZXNjcmlwdGlvbjogJ05vdCBmb3VuZCcgfSB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgIHBhdGg6ICcvcGlwZWxpbmUtdGVtcGxhdGVzJyxcbiAgICBzdW1tYXJ5OiAnQ3JlYXRlIGEgcGlwZWxpbmUgdGVtcGxhdGUnLFxuICAgIGRlc2NyaXB0aW9uOiAnQXV0aG9yIGEgZ29sZGVuLXBhdGggdGVtcGxhdGUuIFJlcXVpcmVzIGB0ZW1wbGF0ZXM6d3JpdGVgOyBgdmlzaWJpbGl0eTogcHVibGljYCBhZGRpdGlvbmFsbHkgcmVxdWlyZXMgYHRlbXBsYXRlczpwdWJsaXNoYCAoYSBjYWxsZXIgd2l0aG91dCBpdCBpcyBjbGFtcGVkIHRvIGBvcmdgKS4gRGVmYXVsdHMgdG8gYHByaXZhdGVgIOKAlCBhIHBlcnNvbmFsIGRyYWZ0IG9ubHkgdGhlIGF1dGhvciBjYW4gc2VlLicsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAxOiB7IGRlc2NyaXB0aW9uOiAnVGVtcGxhdGUgY3JlYXRlZCcgfSwgNDAwOiB7IGRlc2NyaXB0aW9uOiAnVmFsaWRhdGlvbiBlcnJvcicgfSwgNDAzOiB7IGRlc2NyaXB0aW9uOiAnRm9yYmlkZGVuJyB9LCA0MDk6IHsgZGVzY3JpcHRpb246ICdBIHRlbXBsYXRlIHdpdGggdGhhdCBuYW1lIGFscmVhZHkgZXhpc3RzIGluIHRoZSBvcmdhbml6YXRpb24nIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdwdXQnLFxuICAgIHBhdGg6ICcvcGlwZWxpbmUtdGVtcGxhdGVzL3tpZH0nLFxuICAgIHN1bW1hcnk6ICdVcGRhdGUgYSBwaXBlbGluZSB0ZW1wbGF0ZScsXG4gICAgZGVzY3JpcHRpb246ICdSZXF1aXJlcyBgdGVtcGxhdGVzOndyaXRlYCwgcGx1cyBgdGVtcGxhdGVzOnB1Ymxpc2hgIGZvciBhIGBwdWJsaWNgIHRlbXBsYXRlIGFuZCBhdXRob3JzaGlwIGZvciBhIGBwcml2YXRlYCBvbmUuJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdUZW1wbGF0ZSB1cGRhdGVkJyB9LCA0MDM6IHsgZGVzY3JpcHRpb246ICdGb3JiaWRkZW4nIH0sIDQwNDogeyBkZXNjcmlwdGlvbjogJ05vdCBmb3VuZCcgfSB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ2RlbGV0ZScsXG4gICAgcGF0aDogJy9waXBlbGluZS10ZW1wbGF0ZXMve2lkfScsXG4gICAgc3VtbWFyeTogJ0RlbGV0ZSBhIHBpcGVsaW5lIHRlbXBsYXRlJyxcbiAgICBkZXNjcmlwdGlvbjogJ1NhbWUgYXV0aG9yaXR5IGFzIHVwZGF0ZTogYHRlbXBsYXRlczp3cml0ZWAsIHBsdXMgYHRlbXBsYXRlczpwdWJsaXNoYCBmb3IgYSBgcHVibGljYCB0ZW1wbGF0ZSBhbmQgYXV0aG9yc2hpcCBmb3IgYSBgcHJpdmF0ZWAgb25lLicsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAwOiB7IGRlc2NyaXB0aW9uOiAnVGVtcGxhdGUgZGVsZXRlZCcgfSwgNDAzOiB7IGRlc2NyaXB0aW9uOiAnRm9yYmlkZGVuJyB9LCA0MDQ6IHsgZGVzY3JpcHRpb246ICdOb3QgZm91bmQnIH0gfSxcbiAgfSk7XG59XG4iXX0=
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { registry } from './registry.js';
|
|
5
5
|
import { AIGenerateBodySchema, PluginDeployGeneratedSchema, } from '../validation/ai-schemas.js';
|
|
6
|
-
import {
|
|
6
|
+
import { VisibilitySchema, PaginationSchema, BaseFilterSchema, } from '../validation/common-schemas.js';
|
|
7
7
|
import { MessageFilterSchema, MessageCreateSchema, MessageReplySchema, } from '../validation/message-schemas.js';
|
|
8
8
|
import { PipelineFilterSchema, PipelineCreateSchema, PipelineUpdateSchema, } from '../validation/pipeline-schemas.js';
|
|
9
9
|
import { PluginFilterSchema, PluginCreateSchema, PluginUpdateSchema, PluginUploadBodySchema, } from '../validation/plugin-schemas.js';
|
|
@@ -33,8 +33,8 @@ export const PaginatedResponseSchema = z.object({
|
|
|
33
33
|
});
|
|
34
34
|
export function registerSchemas() {
|
|
35
35
|
// Common schemas
|
|
36
|
-
registry.register('
|
|
37
|
-
description: '
|
|
36
|
+
registry.register('Visibility', VisibilitySchema.openapi({
|
|
37
|
+
description: 'Sharing rung: "private" (author only), "org" (everyone in the owning organization), or "public" (the org, its teams, and — from the system org — every org)',
|
|
38
38
|
example: 'private',
|
|
39
39
|
}));
|
|
40
40
|
registry.register('PaginationParams', PaginationSchema.openapi({
|
|
@@ -88,4 +88,4 @@ export function registerSchemas() {
|
|
|
88
88
|
registry.register('ErrorResponse', ErrorResponseSchema.openapi('ErrorResponse'));
|
|
89
89
|
registry.register('PaginatedResponse', PaginatedResponseSchema.openapi('PaginatedResponse'));
|
|
90
90
|
}
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLXJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZW5hcGkvc2NoZW1hLXJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsMkJBQTJCLEdBQzVCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEdBQ2pCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsa0JBQWtCLEdBQ25CLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsb0JBQW9CLEdBQ3JCLE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLHNCQUFzQixHQUN2QixNQUFNLGlDQUFpQyxDQUFDO0FBRXpDLDZDQUE2QztBQUM3QyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzVDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztJQUN4QixVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN0QixJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM1QixPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUMvQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUN6QixVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN0QixPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNuQixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUMzQixPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUNoQyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzlDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztJQUN4QixVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN0QixJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUIsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDakIsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDakIsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDbEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDNUIsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDL0IsQ0FBQyxDQUFDO0FBRUgsTUFBTSxVQUFVLGVBQWU7SUFDN0IsaUJBQWlCO0lBQ2pCLFFBQVEsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsb0JBQW9CLENBQUMsT0FBTyxDQUFDO1FBQy9ELFdBQVcsRUFBRSxpRkFBaUY7UUFDOUYsT0FBTyxFQUFFLFNBQVM7S0FDbkIsQ0FBQyxDQUFDLENBQUM7SUFFSixRQUFRLENBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUFFLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztRQUM3RCxXQUFXLEVBQUUsNENBQTRDO0tBQzFELENBQUMsQ0FBQyxDQUFDO0lBRUosUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO1FBQ3ZELFdBQVcsRUFBRSxtREFBbUQ7S0FDakUsQ0FBQyxDQUFDLENBQUM7SUFFSixtQkFBbUI7SUFDbkIsUUFBUSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxvQkFBb0IsQ0FBQyxPQUFPLENBQUM7UUFDL0QsV0FBVyxFQUFFLHFDQUFxQztLQUNuRCxDQUFDLENBQUMsQ0FBQztJQUVKLFFBQVEsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsb0JBQW9CLENBQUMsT0FBTyxDQUFDO1FBQy9ELFdBQVcsRUFBRSwwQ0FBMEM7S0FDeEQsQ0FBQyxDQUFDLENBQUM7SUFFSixRQUFRLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDLE9BQU8sQ0FBQztRQUMvRCxXQUFXLEVBQUUsZ0RBQWdEO0tBQzlELENBQUMsQ0FBQyxDQUFDO0lBRUosaUJBQWlCO0lBQ2pCLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztRQUMzRCxXQUFXLEVBQUUsbUNBQW1DO0tBQ2pELENBQUMsQ0FBQyxDQUFDO0lBRUosUUFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUMsT0FBTyxDQUFDO1FBQzNELFdBQVcsRUFBRSx3Q0FBd0M7S0FDdEQsQ0FBQyxDQUFDLENBQUM7SUFFSixRQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7UUFDM0QsV0FBVyxFQUFFLDhDQUE4QztLQUM1RCxDQUFDLENBQUMsQ0FBQztJQUVKLFFBQVEsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsc0JBQXNCLENBQUMsT0FBTyxDQUFDO1FBQ25FLFdBQVcsRUFBRSxzREFBc0Q7S0FDcEUsQ0FBQyxDQUFDLENBQUM7SUFFSixrQkFBa0I7SUFDbEIsUUFBUSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsbUJBQW1CLENBQUMsT0FBTyxDQUFDO1FBQzdELFdBQVcsRUFBRSxvQ0FBb0M7S0FDbEQsQ0FBQyxDQUFDLENBQUM7SUFFSixRQUFRLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxtQkFBbUIsQ0FBQyxPQUFPLENBQUM7UUFDN0QsV0FBVyxFQUFFLHlEQUF5RDtLQUN2RSxDQUFDLENBQUMsQ0FBQztJQUVKLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztRQUMzRCxXQUFXLEVBQUUsK0NBQStDO0tBQzdELENBQUMsQ0FBQyxDQUFDO0lBRUosYUFBYTtJQUNiLFFBQVEsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsb0JBQW9CLENBQUMsT0FBTyxDQUFDO1FBQy9ELFdBQVcsRUFBRSw2REFBNkQ7S0FDM0UsQ0FBQyxDQUFDLENBQUM7SUFFSixRQUFRLENBQUMsUUFBUSxDQUFDLHVCQUF1QixFQUFFLDJCQUEyQixDQUFDLE9BQU8sQ0FBQztRQUM3RSxXQUFXLEVBQUUsbURBQW1EO0tBQ2pFLENBQUMsQ0FBQyxDQUFDO0lBRUosbUJBQW1CO0lBQ25CLFFBQVEsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUscUJBQXFCLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUN2RixRQUFRLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUNqRixRQUFRLENBQUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7QUFDL0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcblxuaW1wb3J0IHsgcmVnaXN0cnkgfSBmcm9tICcuL3JlZ2lzdHJ5LmpzJztcbmltcG9ydCB7XG4gIEFJR2VuZXJhdGVCb2R5U2NoZW1hLFxuICBQbHVnaW5EZXBsb3lHZW5lcmF0ZWRTY2hlbWEsXG59IGZyb20gJy4uL3ZhbGlkYXRpb24vYWktc2NoZW1hcy5qcyc7XG5pbXBvcnQge1xuICBBY2Nlc3NNb2RpZmllclNjaGVtYSxcbiAgUGFnaW5hdGlvblNjaGVtYSxcbiAgQmFzZUZpbHRlclNjaGVtYSxcbn0gZnJvbSAnLi4vdmFsaWRhdGlvbi9jb21tb24tc2NoZW1hcy5qcyc7XG5pbXBvcnQge1xuICBNZXNzYWdlRmlsdGVyU2NoZW1hLFxuICBNZXNzYWdlQ3JlYXRlU2NoZW1hLFxuICBNZXNzYWdlUmVwbHlTY2hlbWEsXG59IGZyb20gJy4uL3ZhbGlkYXRpb24vbWVzc2FnZS1zY2hlbWFzLmpzJztcbmltcG9ydCB7XG4gIFBpcGVsaW5lRmlsdGVyU2NoZW1hLFxuICBQaXBlbGluZUNyZWF0ZVNjaGVtYSxcbiAgUGlwZWxpbmVVcGRhdGVTY2hlbWEsXG59IGZyb20gJy4uL3ZhbGlkYXRpb24vcGlwZWxpbmUtc2NoZW1hcy5qcyc7XG5pbXBvcnQge1xuICBQbHVnaW5GaWx0ZXJTY2hlbWEsXG4gIFBsdWdpbkNyZWF0ZVNjaGVtYSxcbiAgUGx1Z2luVXBkYXRlU2NoZW1hLFxuICBQbHVnaW5VcGxvYWRCb2R5U2NoZW1hLFxufSBmcm9tICcuLi92YWxpZGF0aW9uL3BsdWdpbi1zY2hlbWFzLmpzJztcblxuLy8gUmVzcG9uc2Ugc2NoZW1hcyAoZXhwb3J0ZWQgZm9yIHR5cGUgdXNhZ2UpXG5leHBvcnQgY29uc3QgU3VjY2Vzc1Jlc3BvbnNlU2NoZW1hID0gei5vYmplY3Qoe1xuICBzdWNjZXNzOiB6LmxpdGVyYWwodHJ1ZSksXG4gIHN0YXR1c0NvZGU6IHoubnVtYmVyKCksXG4gIGRhdGE6IHoudW5rbm93bigpLm9wdGlvbmFsKCksXG4gIG1lc3NhZ2U6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgRXJyb3JSZXNwb25zZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgc3VjY2Vzczogei5saXRlcmFsKGZhbHNlKSxcbiAgc3RhdHVzQ29kZTogei5udW1iZXIoKSxcbiAgbWVzc2FnZTogei5zdHJpbmcoKSxcbiAgY29kZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBkZXRhaWxzOiB6LnVua25vd24oKS5vcHRpb25hbCgpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBQYWdpbmF0ZWRSZXNwb25zZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgc3VjY2Vzczogei5saXRlcmFsKHRydWUpLFxuICBzdGF0dXNDb2RlOiB6Lm51bWJlcigpLFxuICBkYXRhOiB6LmFycmF5KHoudW5rbm93bigpKSxcbiAgY291bnQ6IHoubnVtYmVyKCksXG4gIGxpbWl0OiB6Lm51bWJlcigpLFxuICBvZmZzZXQ6IHoubnVtYmVyKCksXG4gIHRvdGFsOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIG1lc3NhZ2U6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJTY2hlbWFzKCk6IHZvaWQge1xuICAvLyBDb21tb24gc2NoZW1hc1xuICByZWdpc3RyeS5yZWdpc3RlcignQWNjZXNzTW9kaWZpZXInLCBBY2Nlc3NNb2RpZmllclNjaGVtYS5vcGVuYXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ1Jlc291cmNlIHZpc2liaWxpdHk6IFwicHVibGljXCIgKHZpc2libGUgdG8gYWxsKSBvciBcInByaXZhdGVcIiAob3JnYW5pemF0aW9uIG9ubHkpJyxcbiAgICBleGFtcGxlOiAncHJpdmF0ZScsXG4gIH0pKTtcblxuICByZWdpc3RyeS5yZWdpc3RlcignUGFnaW5hdGlvblBhcmFtcycsIFBhZ2luYXRpb25TY2hlbWEub3BlbmFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdTdGFuZGFyZCBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nIHBhcmFtZXRlcnMnLFxuICB9KSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXIoJ0Jhc2VGaWx0ZXInLCBCYXNlRmlsdGVyU2NoZW1hLm9wZW5hcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnQ29tbW9uIGZpbHRlciBmaWVsZHMgc2hhcmVkIGJ5IGFsbCBlbnRpdHkgcXVlcmllcycsXG4gIH0pKTtcblxuICAvLyBQaXBlbGluZSBzY2hlbWFzXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyKCdQaXBlbGluZUZpbHRlcicsIFBpcGVsaW5lRmlsdGVyU2NoZW1hLm9wZW5hcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnUXVlcnkgZmlsdGVycyBmb3IgbGlzdGluZyBwaXBlbGluZXMnLFxuICB9KSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXIoJ1BpcGVsaW5lQ3JlYXRlJywgUGlwZWxpbmVDcmVhdGVTY2hlbWEub3BlbmFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdSZXF1ZXN0IGJvZHkgZm9yIGNyZWF0aW5nIGEgbmV3IHBpcGVsaW5lJyxcbiAgfSkpO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyKCdQaXBlbGluZVVwZGF0ZScsIFBpcGVsaW5lVXBkYXRlU2NoZW1hLm9wZW5hcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnUmVxdWVzdCBib2R5IGZvciB1cGRhdGluZyBhbiBleGlzdGluZyBwaXBlbGluZScsXG4gIH0pKTtcblxuICAvLyBQbHVnaW4gc2NoZW1hc1xuICByZWdpc3RyeS5yZWdpc3RlcignUGx1Z2luRmlsdGVyJywgUGx1Z2luRmlsdGVyU2NoZW1hLm9wZW5hcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnUXVlcnkgZmlsdGVycyBmb3IgbGlzdGluZyBwbHVnaW5zJyxcbiAgfSkpO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyKCdQbHVnaW5DcmVhdGUnLCBQbHVnaW5DcmVhdGVTY2hlbWEub3BlbmFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdSZXF1ZXN0IGJvZHkgZm9yIGNyZWF0aW5nIGEgbmV3IHBsdWdpbicsXG4gIH0pKTtcblxuICByZWdpc3RyeS5yZWdpc3RlcignUGx1Z2luVXBkYXRlJywgUGx1Z2luVXBkYXRlU2NoZW1hLm9wZW5hcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnUmVxdWVzdCBib2R5IGZvciB1cGRhdGluZyBhbiBleGlzdGluZyBwbHVnaW4nLFxuICB9KSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXIoJ1BsdWdpblVwbG9hZEJvZHknLCBQbHVnaW5VcGxvYWRCb2R5U2NoZW1hLm9wZW5hcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnTWV0YWRhdGEgZm9yIHBsdWdpbiBaSVAgdXBsb2FkIChtdWx0aXBhcnQgZm9ybS1kYXRhKScsXG4gIH0pKTtcblxuICAvLyBNZXNzYWdlIHNjaGVtYXNcbiAgcmVnaXN0cnkucmVnaXN0ZXIoJ01lc3NhZ2VGaWx0ZXInLCBNZXNzYWdlRmlsdGVyU2NoZW1hLm9wZW5hcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnUXVlcnkgZmlsdGVycyBmb3IgbGlzdGluZyBtZXNzYWdlcycsXG4gIH0pKTtcblxuICByZWdpc3RyeS5yZWdpc3RlcignTWVzc2FnZUNyZWF0ZScsIE1lc3NhZ2VDcmVhdGVTY2hlbWEub3BlbmFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdSZXF1ZXN0IGJvZHkgZm9yIGNyZWF0aW5nIGEgbmV3IG1lc3NhZ2Ugb3IgYW5ub3VuY2VtZW50JyxcbiAgfSkpO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyKCdNZXNzYWdlUmVwbHknLCBNZXNzYWdlUmVwbHlTY2hlbWEub3BlbmFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdSZXF1ZXN0IGJvZHkgZm9yIHJlcGx5aW5nIHRvIGEgbWVzc2FnZSB0aHJlYWQnLFxuICB9KSk7XG5cbiAgLy8gQUkgc2NoZW1hc1xuICByZWdpc3RyeS5yZWdpc3RlcignQUlHZW5lcmF0ZUJvZHknLCBBSUdlbmVyYXRlQm9keVNjaGVtYS5vcGVuYXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ1JlcXVlc3QgYm9keSBmb3IgQUktcG93ZXJlZCBnZW5lcmF0aW9uIChwaXBlbGluZSBvciBwbHVnaW4pJyxcbiAgfSkpO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyKCdQbHVnaW5EZXBsb3lHZW5lcmF0ZWQnLCBQbHVnaW5EZXBsb3lHZW5lcmF0ZWRTY2hlbWEub3BlbmFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdSZXF1ZXN0IGJvZHkgZm9yIGRlcGxveWluZyBhbiBBSS1nZW5lcmF0ZWQgcGx1Z2luJyxcbiAgfSkpO1xuXG4gIC8vIFJlc3BvbnNlIHNjaGVtYXNcbiAgcmVnaXN0cnkucmVnaXN0ZXIoJ1N1Y2Nlc3NSZXNwb25zZScsIFN1Y2Nlc3NSZXNwb25zZVNjaGVtYS5vcGVuYXBpKCdTdWNjZXNzUmVzcG9uc2UnKSk7XG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyKCdFcnJvclJlc3BvbnNlJywgRXJyb3JSZXNwb25zZVNjaGVtYS5vcGVuYXBpKCdFcnJvclJlc3BvbnNlJykpO1xuICByZWdpc3RyeS5yZWdpc3RlcignUGFnaW5hdGVkUmVzcG9uc2UnLCBQYWdpbmF0ZWRSZXNwb25zZVNjaGVtYS5vcGVuYXBpKCdQYWdpbmF0ZWRSZXNwb25zZScpKTtcbn1cbiJdfQ==
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLXJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZW5hcGkvc2NoZW1hLXJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsMkJBQTJCLEdBQzVCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEdBQ2pCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsa0JBQWtCLEdBQ25CLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsb0JBQW9CLEdBQ3JCLE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLHNCQUFzQixHQUN2QixNQUFNLGlDQUFpQyxDQUFDO0FBRXpDLDZDQUE2QztBQUM3QyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzVDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztJQUN4QixVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN0QixJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM1QixPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUMvQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFD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QyxRQUFRLENBQUMsZUFBZSxFQUFFLG1CQUFtQixDQUFDLE9BQU8sQ0FBQztRQUM3RCxXQUFXLEVBQUUsb0NBQW9DO0tBQ2xELENBQUMsQ0FBQyxDQUFDO0lBRUosUUFBUSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsbUJBQW1CLENBQUMsT0FBTyxDQUFDO1FBQzdELFdBQVcsRUFBRSx5REFBeUQ7S0FDdkUsQ0FBQyxDQUFDLENBQUM7SUFFSixRQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7UUFDM0QsV0FBVyxFQUFFLCtDQUErQztLQUM3RCxDQUFDLENBQUMsQ0FBQztJQUVKLGFBQWE7SUFDYixRQUFRLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDLE9BQU8sQ0FBQztRQUMvRCxXQUFXLEVBQUUsNkRBQTZEO0tBQzNFLENBQUMsQ0FBQyxDQUFDO0lBRUosUUFBUSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsRUFBRSwyQkFBMkIsQ0FBQyxPQUFPLENBQUM7UUFDN0UsV0FBVyxFQUFFLG1EQUFtRDtLQUNqRSxDQUFDLENBQUMsQ0FBQztJQUVKLG1CQUFtQjtJQUNuQixRQUFRLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDdkYsUUFBUSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsbUJBQW1CLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDakYsUUFBUSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO0FBQy9GLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5cbmltcG9ydCB7IHJlZ2lzdHJ5IH0gZnJvbSAnLi9yZWdpc3RyeS5qcyc7XG5pbXBvcnQge1xuICBBSUdlbmVyYXRlQm9keVNjaGVtYSxcbiAgUGx1Z2luRGVwbG95R2VuZXJhdGVkU2NoZW1hLFxufSBmcm9tICcuLi92YWxpZGF0aW9uL2FpLXNjaGVtYXMuanMnO1xuaW1wb3J0IHtcbiAgVmlzaWJpbGl0eVNjaGVtYSxcbiAgUGFnaW5hdGlvblNjaGVtYSxcbiAgQmFzZUZpbHRlclNjaGVtYSxcbn0gZnJvbSAnLi4vdmFsaWRhdGlvbi9jb21tb24tc2NoZW1hcy5qcyc7XG5pbXBvcnQge1xuICBNZXNzYWdlRmlsdGVyU2NoZW1hLFxuICBNZXNzYWdlQ3JlYXRlU2NoZW1hLFxuICBNZXNzYWdlUmVwbHlTY2hlbWEsXG59IGZyb20gJy4uL3ZhbGlkYXRpb24vbWVzc2FnZS1zY2hlbWFzLmpzJztcbmltcG9ydCB7XG4gIFBpcGVsaW5lRmlsdGVyU2NoZW1hLFxuICBQaXBlbGluZUNyZWF0ZVNjaGVtYSxcbiAgUGlwZWxpbmVVcGRhdGVTY2hlbWEsXG59IGZyb20gJy4uL3ZhbGlkYXRpb24vcGlwZWxpbmUtc2NoZW1hcy5qcyc7XG5pbXBvcnQge1xuICBQbHVnaW5GaWx0ZXJTY2hlbWEsXG4gIFBsdWdpbkNyZWF0ZVNjaGVtYSxcbiAgUGx1Z2luVXBkYXRlU2NoZW1hLFxuICBQbHVnaW5VcGxvYWRCb2R5U2NoZW1hLFxufSBmcm9tICcuLi92YWxpZGF0aW9uL3BsdWdpbi1zY2hlbWFzLmpzJztcblxuLy8gUmVzcG9uc2Ugc2NoZW1hcyAoZXhwb3J0ZWQgZm9yIHR5cGUgdXNhZ2UpXG5leHBvcnQgY29uc3QgU3VjY2Vzc1Jlc3BvbnNlU2NoZW1hID0gei5vYmplY3Qoe1xuICBzdWNjZXNzOiB6LmxpdGVyYWwodHJ1ZSksXG4gIHN0YXR1c0NvZGU6IHoubnVtYmVyKCksXG4gIGRhdGE6IHoudW5rbm93bigpLm9wdGlvbmFsKCksXG4gIG1lc3NhZ2U6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgRXJyb3JSZXNwb25zZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgc3VjY2Vzczogei5saXRlcmFsKGZhbHNlKSxcbiAgc3RhdHVzQ29kZTogei5udW1iZXIoKSxcbiAgbWVzc2FnZTogei5zdHJpbmcoKSxcbiAgY29kZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBkZXRhaWxzOiB6LnVua25vd24oKS5vcHRpb25hbCgpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBQYWdpbmF0ZWRSZXNwb25zZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgc3VjY2Vzczogei5saXRlcmFsKHRydWUpLFxuICBzdGF0dXNDb2RlOiB6Lm51bWJlcigpLFxuICBkYXRhOiB6LmFycmF5KHoudW5rbm93bigpKSxcbiAgY291bnQ6IHoubnVtYmVyKCksXG4gIGxpbWl0OiB6Lm51bWJlcigpLFxuICBvZmZzZXQ6IHoubnVtYmVyKCksXG4gIHRvdGFsOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIG1lc3NhZ2U6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJTY2hlbWFzKCk6IHZvaWQge1xuICAvLyBDb21tb24gc2NoZW1hc1xuICByZWdpc3RyeS5yZWdpc3RlcignVmlzaWJpbGl0eScsIFZpc2liaWxpdHlTY2hlbWEub3BlbmFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdTaGFyaW5nIHJ1bmc6IFwicHJpdmF0ZVwiIChhdXRob3Igb25seSksIFwib3JnXCIgKGV2ZXJ5b25lIGluIHRoZSBvd25pbmcgb3JnYW5pemF0aW9uKSwgb3IgXCJwdWJsaWNcIiAodGhlIG9yZywgaXRzIHRlYW1zLCBhbmQg4oCUIGZyb20gdGhlIHN5c3RlbSBvcmcg4oCUIGV2ZXJ5IG9yZyknLFxuICAgIGV4YW1wbGU6ICdwcml2YXRlJyxcbiAgfSkpO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyKCdQYWdpbmF0aW9uUGFyYW1zJywgUGFnaW5hdGlvblNjaGVtYS5vcGVuYXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ1N0YW5kYXJkIHBhZ2luYXRpb24gYW5kIHNvcnRpbmcgcGFyYW1ldGVycycsXG4gIH0pKTtcblxuICByZWdpc3RyeS5yZWdpc3RlcignQmFzZUZpbHRlcicsIEJhc2VGaWx0ZXJTY2hlbWEub3BlbmFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdDb21tb24gZmlsdGVyIGZpZWxkcyBzaGFyZWQgYnkgYWxsIGVudGl0eSBxdWVyaWVzJyxcbiAgfSkpO1xuXG4gIC8vIFBpcGVsaW5lIHNjaGVtYXNcbiAgcmVnaXN0cnkucmVnaXN0ZXIoJ1BpcGVsaW5lRmlsdGVyJywgUGlwZWxpbmVGaWx0ZXJTY2hlbWEub3BlbmFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdRdWVyeSBmaWx0ZXJzIGZvciBsaXN0aW5nIHBpcGVsaW5lcycsXG4gIH0pKTtcblxuICByZWdpc3RyeS5yZWdpc3RlcignUGlwZWxpbmVDcmVhdGUnLCBQaXBlbGluZUNyZWF0ZVNjaGVtYS5vcGVuYXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ1JlcXVlc3QgYm9keSBmb3IgY3JlYXRpbmcgYSBuZXcgcGlwZWxpbmUnLFxuICB9KSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXIoJ1BpcGVsaW5lVXBkYXRlJywgUGlwZWxpbmVVcGRhdGVTY2hlbWEub3BlbmFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdSZXF1ZXN0IGJvZHkgZm9yIHVwZGF0aW5nIGFuIGV4aXN0aW5nIHBpcGVsaW5lJyxcbiAgfSkpO1xuXG4gIC8vIFBsdWdpbiBzY2hlbWFzXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyKCdQbHVnaW5GaWx0ZXInLCBQbHVnaW5GaWx0ZXJTY2hlbWEub3BlbmFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdRdWVyeSBmaWx0ZXJzIGZvciBsaXN0aW5nIHBsdWdpbnMnLFxuICB9KSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXIoJ1BsdWdpbkNyZWF0ZScsIFBsdWdpbkNyZWF0ZVNjaGVtYS5vcGVuYXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ1JlcXVlc3QgYm9keSBmb3IgY3JlYXRpbmcgYSBuZXcgcGx1Z2luJyxcbiAgfSkpO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyKCdQbHVnaW5VcGRhdGUnLCBQbHVnaW5VcGRhdGVTY2hlbWEub3BlbmFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdSZXF1ZXN0IGJvZHkgZm9yIHVwZGF0aW5nIGFuIGV4aXN0aW5nIHBsdWdpbicsXG4gIH0pKTtcblxuICByZWdpc3RyeS5yZWdpc3RlcignUGx1Z2luVXBsb2FkQm9keScsIFBsdWdpblVwbG9hZEJvZHlTY2hlbWEub3BlbmFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdNZXRhZGF0YSBmb3IgcGx1Z2luIFpJUCB1cGxvYWQgKG11bHRpcGFydCBmb3JtLWRhdGEpJyxcbiAgfSkpO1xuXG4gIC8vIE1lc3NhZ2Ugc2NoZW1hc1xuICByZWdpc3RyeS5yZWdpc3RlcignTWVzc2FnZUZpbHRlcicsIE1lc3NhZ2VGaWx0ZXJTY2hlbWEub3BlbmFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdRdWVyeSBmaWx0ZXJzIGZvciBsaXN0aW5nIG1lc3NhZ2VzJyxcbiAgfSkpO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyKCdNZXNzYWdlQ3JlYXRlJywgTWVzc2FnZUNyZWF0ZVNjaGVtYS5vcGVuYXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ1JlcXVlc3QgYm9keSBmb3IgY3JlYXRpbmcgYSBuZXcgbWVzc2FnZSBvciBhbm5vdW5jZW1lbnQnLFxuICB9KSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXIoJ01lc3NhZ2VSZXBseScsIE1lc3NhZ2VSZXBseVNjaGVtYS5vcGVuYXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ1JlcXVlc3QgYm9keSBmb3IgcmVwbHlpbmcgdG8gYSBtZXNzYWdlIHRocmVhZCcsXG4gIH0pKTtcblxuICAvLyBBSSBzY2hlbWFzXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyKCdBSUdlbmVyYXRlQm9keScsIEFJR2VuZXJhdGVCb2R5U2NoZW1hLm9wZW5hcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnUmVxdWVzdCBib2R5IGZvciBBSS1wb3dlcmVkIGdlbmVyYXRpb24gKHBpcGVsaW5lIG9yIHBsdWdpbiknLFxuICB9KSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXIoJ1BsdWdpbkRlcGxveUdlbmVyYXRlZCcsIFBsdWdpbkRlcGxveUdlbmVyYXRlZFNjaGVtYS5vcGVuYXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ1JlcXVlc3QgYm9keSBmb3IgZGVwbG95aW5nIGFuIEFJLWdlbmVyYXRlZCBwbHVnaW4nLFxuICB9KSk7XG5cbiAgLy8gUmVzcG9uc2Ugc2NoZW1hc1xuICByZWdpc3RyeS5yZWdpc3RlcignU3VjY2Vzc1Jlc3BvbnNlJywgU3VjY2Vzc1Jlc3BvbnNlU2NoZW1hLm9wZW5hcGkoJ1N1Y2Nlc3NSZXNwb25zZScpKTtcbiAgcmVnaXN0cnkucmVnaXN0ZXIoJ0Vycm9yUmVzcG9uc2UnLCBFcnJvclJlc3BvbnNlU2NoZW1hLm9wZW5hcGkoJ0Vycm9yUmVzcG9uc2UnKSk7XG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyKCdQYWdpbmF0ZWRSZXNwb25zZScsIFBhZ2luYXRlZFJlc3BvbnNlU2NoZW1hLm9wZW5hcGkoJ1BhZ2luYXRlZFJlc3BvbnNlJykpO1xufVxuIl19
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export type CircuitState = 'closed' | 'open' | 'half-open';
|
|
2
|
+
export interface CircuitBreakerConfig {
|
|
3
|
+
/** Consecutive failures that trip the breaker from closed → open. */
|
|
4
|
+
failureThreshold: number;
|
|
5
|
+
/** How long to stay open before allowing a half-open probe (ms). */
|
|
6
|
+
cooldownMs: number;
|
|
7
|
+
/** Master switch — when false, allowRequest() is always true and no state moves. */
|
|
8
|
+
enabled: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare const DEFAULT_BREAKER_CONFIG: CircuitBreakerConfig;
|
|
11
|
+
/**
|
|
12
|
+
* A single target's breaker. Not concurrency-locked (JS is single-threaded per
|
|
13
|
+
* event loop); `probeInFlight` gates half-open to one in-flight probe so a burst
|
|
14
|
+
* during cooldown doesn't stampede the recovering downstream.
|
|
15
|
+
*/
|
|
16
|
+
export declare class CircuitBreaker {
|
|
17
|
+
private readonly key;
|
|
18
|
+
private readonly config;
|
|
19
|
+
private state;
|
|
20
|
+
private consecutiveFailures;
|
|
21
|
+
private openedAt;
|
|
22
|
+
private probeInFlight;
|
|
23
|
+
constructor(key: string, config?: CircuitBreakerConfig);
|
|
24
|
+
getState(): CircuitState;
|
|
25
|
+
/**
|
|
26
|
+
* Whether a request may proceed. Transitions open→half-open once the cooldown
|
|
27
|
+
* elapses and lets exactly ONE probe through. Returns false when open (or a
|
|
28
|
+
* probe is already in flight) — the caller must fast-fail without any network.
|
|
29
|
+
*/
|
|
30
|
+
allowRequest(): boolean;
|
|
31
|
+
/** A logical request succeeded (2xx/3xx/4xx that isn't a downstream fault). */
|
|
32
|
+
recordSuccess(): void;
|
|
33
|
+
/** A logical request failed (connection error, timeout, or 5xx response). */
|
|
34
|
+
recordFailure(): void;
|
|
35
|
+
private open;
|
|
36
|
+
}
|
|
37
|
+
/** Get (or lazily create) the shared breaker for a `host:port` target. */
|
|
38
|
+
export declare function getCircuitBreaker(key: string): CircuitBreaker;
|
|
39
|
+
/** Test helper: clear all breaker state so suites don't leak across each other. */
|
|
40
|
+
export declare function resetCircuitBreakers(): void;
|
|
41
|
+
/** Thrown by the client when a request is fast-failed because the breaker is open. */
|
|
42
|
+
export declare class CircuitOpenError extends Error {
|
|
43
|
+
readonly code = "CIRCUIT_OPEN";
|
|
44
|
+
constructor(target: string);
|
|
45
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
/**
|
|
4
|
+
* Per-target circuit breaker for service-to-service calls.
|
|
5
|
+
*
|
|
6
|
+
* The shared {@link InternalHttpClient} already has timeouts, a bounded socket
|
|
7
|
+
* pool, and bounded retry-with-jitter — but no load-shedding. Under a sustained
|
|
8
|
+
* downstream brownout every caller keeps paying `timeout × (maxRetries+1)` per
|
|
9
|
+
* request, saturating the socket pool and turning one slow dependency into a
|
|
10
|
+
* fleet-wide latency cascade (the classic retry storm). Worse for fail-CLOSED
|
|
11
|
+
* dependencies (compliance): a brownout there blocks plugin/pipeline creation
|
|
12
|
+
* with full retry latency on every request.
|
|
13
|
+
*
|
|
14
|
+
* This breaker short-circuits that: after `failureThreshold` consecutive
|
|
15
|
+
* failures to a target it OPENS and fast-fails (no network, no retries) for
|
|
16
|
+
* `cooldownMs`, then allows a single half-open probe. A fail-closed caller still
|
|
17
|
+
* fails closed — just immediately, instead of after the full retry budget; a
|
|
18
|
+
* fail-open caller (createSafeClient) gets its `null` immediately.
|
|
19
|
+
*
|
|
20
|
+
* State is keyed by `host:port` in a process-level registry so it is shared even
|
|
21
|
+
* when callers mint a fresh client per request — one bad target trips once, not
|
|
22
|
+
* once-per-client. Disable entirely with `S2S_BREAKER_ENABLED=false`.
|
|
23
|
+
*/
|
|
24
|
+
import { envInt, envBool } from '../utils/env.js';
|
|
25
|
+
import { createLogger } from '../utils/logger.js';
|
|
26
|
+
import { emitCounter } from '../utils/metric-emitter.js';
|
|
27
|
+
const logger = createLogger('circuit-breaker');
|
|
28
|
+
export const DEFAULT_BREAKER_CONFIG = {
|
|
29
|
+
failureThreshold: envInt('S2S_BREAKER_THRESHOLD', 5, { min: 1 }),
|
|
30
|
+
cooldownMs: envInt('S2S_BREAKER_COOLDOWN_MS', 10000, { min: 1 }),
|
|
31
|
+
enabled: envBool('S2S_BREAKER_ENABLED', true),
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* A single target's breaker. Not concurrency-locked (JS is single-threaded per
|
|
35
|
+
* event loop); `probeInFlight` gates half-open to one in-flight probe so a burst
|
|
36
|
+
* during cooldown doesn't stampede the recovering downstream.
|
|
37
|
+
*/
|
|
38
|
+
export class CircuitBreaker {
|
|
39
|
+
key;
|
|
40
|
+
config;
|
|
41
|
+
state = 'closed';
|
|
42
|
+
consecutiveFailures = 0;
|
|
43
|
+
openedAt = 0;
|
|
44
|
+
probeInFlight = false;
|
|
45
|
+
constructor(key, config = DEFAULT_BREAKER_CONFIG) {
|
|
46
|
+
this.key = key;
|
|
47
|
+
this.config = config;
|
|
48
|
+
}
|
|
49
|
+
getState() {
|
|
50
|
+
return this.state;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Whether a request may proceed. Transitions open→half-open once the cooldown
|
|
54
|
+
* elapses and lets exactly ONE probe through. Returns false when open (or a
|
|
55
|
+
* probe is already in flight) — the caller must fast-fail without any network.
|
|
56
|
+
*/
|
|
57
|
+
allowRequest() {
|
|
58
|
+
if (!this.config.enabled)
|
|
59
|
+
return true;
|
|
60
|
+
if (this.state === 'closed')
|
|
61
|
+
return true;
|
|
62
|
+
if (this.state === 'open') {
|
|
63
|
+
if (Date.now() - this.openedAt >= this.config.cooldownMs) {
|
|
64
|
+
this.state = 'half-open';
|
|
65
|
+
this.probeInFlight = true;
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
// half-open: allow only a single probe at a time.
|
|
71
|
+
if (this.probeInFlight)
|
|
72
|
+
return false;
|
|
73
|
+
this.probeInFlight = true;
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
/** A logical request succeeded (2xx/3xx/4xx that isn't a downstream fault). */
|
|
77
|
+
recordSuccess() {
|
|
78
|
+
if (!this.config.enabled)
|
|
79
|
+
return;
|
|
80
|
+
this.consecutiveFailures = 0;
|
|
81
|
+
this.probeInFlight = false;
|
|
82
|
+
if (this.state !== 'closed') {
|
|
83
|
+
logger.info('circuit closed (downstream recovered)', { target: this.key });
|
|
84
|
+
this.state = 'closed';
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/** A logical request failed (connection error, timeout, or 5xx response). */
|
|
88
|
+
recordFailure() {
|
|
89
|
+
if (!this.config.enabled)
|
|
90
|
+
return;
|
|
91
|
+
this.probeInFlight = false;
|
|
92
|
+
this.consecutiveFailures++;
|
|
93
|
+
// A failed half-open probe means the downstream is still bad — re-open.
|
|
94
|
+
if (this.state === 'half-open') {
|
|
95
|
+
this.open();
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
if (this.state === 'closed' && this.consecutiveFailures >= this.config.failureThreshold) {
|
|
99
|
+
this.open();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
open() {
|
|
103
|
+
const wasOpen = this.state === 'open';
|
|
104
|
+
this.state = 'open';
|
|
105
|
+
this.openedAt = Date.now();
|
|
106
|
+
if (!wasOpen) {
|
|
107
|
+
logger.warn('circuit opened — shedding load to target', {
|
|
108
|
+
target: this.key,
|
|
109
|
+
consecutiveFailures: this.consecutiveFailures,
|
|
110
|
+
cooldownMs: this.config.cooldownMs,
|
|
111
|
+
});
|
|
112
|
+
emitCounter('s2s_circuit_opened_total', { target: this.key });
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
const registry = new Map();
|
|
117
|
+
/** Get (or lazily create) the shared breaker for a `host:port` target. */
|
|
118
|
+
export function getCircuitBreaker(key) {
|
|
119
|
+
let breaker = registry.get(key);
|
|
120
|
+
if (!breaker) {
|
|
121
|
+
breaker = new CircuitBreaker(key);
|
|
122
|
+
registry.set(key, breaker);
|
|
123
|
+
}
|
|
124
|
+
return breaker;
|
|
125
|
+
}
|
|
126
|
+
/** Test helper: clear all breaker state so suites don't leak across each other. */
|
|
127
|
+
export function resetCircuitBreakers() {
|
|
128
|
+
registry.clear();
|
|
129
|
+
}
|
|
130
|
+
/** Thrown by the client when a request is fast-failed because the breaker is open. */
|
|
131
|
+
export class CircuitOpenError extends Error {
|
|
132
|
+
code = 'CIRCUIT_OPEN';
|
|
133
|
+
constructor(target) {
|
|
134
|
+
super(`Circuit open for ${target} — fast-failing to shed load`);
|
|
135
|
+
this.name = 'CircuitOpenError';
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lyY3VpdC1icmVha2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2NpcmN1aXQtYnJlYWtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQWEvQyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBeUI7SUFDMUQsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLHVCQUF1QixFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNoRSxVQUFVLEVBQUUsTUFBTSxDQUFDLHlCQUF5QixFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNoRSxPQUFPLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQztDQUM5QyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBT04sR0FBRztJQUNILE1BQU07SUFQakIsS0FBSyxHQUFpQixRQUFRLENBQUM7SUFDL0IsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDYixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBRTlCLFlBQ21CLEdBQVcsRUFDWCxNQUFNLEdBQXlCLHNCQUFzQjttQkFEckQsR0FBRztzQkFDSCxNQUFNO0lBQ3RCLENBQUM7SUFFSixRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lB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QyxHQUFXO0lBQzNDLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsT0FBTyxHQUFHLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsbUZBQW1GO0FBQ25GLE1BQU0sVUFBVSxvQkFBb0I7SUFDbEMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ25CLENBQUM7QUFFRCxzRkFBc0Y7QUFDdEYsTUFBTSxPQUFPLGdCQUFpQixTQUFRLEtBQUs7SUFDaEMsSUFBSSxHQUFHLGNBQWMsQ0FBQztJQUMvQixZQUFZLE1BQWM7UUFDeEIsS0FBSyxDQUFDLG9CQUFvQixNQUFNLDhCQUE4QixDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLElBQUksR0FBRyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBQZXItdGFyZ2V0IGNpcmN1aXQgYnJlYWtlciBmb3Igc2VydmljZS10by1zZXJ2aWNlIGNhbGxzLlxuICpcbiAqIFRoZSBzaGFyZWQge0BsaW5rIEludGVybmFsSHR0cENsaWVudH0gYWxyZWFkeSBoYXMgdGltZW91dHMsIGEgYm91bmRlZCBzb2NrZXRcbiAqIHBvb2wsIGFuZCBib3VuZGVkIHJldHJ5LXdpdGgtaml0dGVyIOKAlCBidXQgbm8gbG9hZC1zaGVkZGluZy4gVW5kZXIgYSBzdXN0YWluZWRcbiAqIGRvd25zdHJlYW0gYnJvd25vdXQgZXZlcnkgY2FsbGVyIGtlZXBzIHBheWluZyBgdGltZW91dCDDlyAobWF4UmV0cmllcysxKWAgcGVyXG4gKiByZXF1ZXN0LCBzYXR1cmF0aW5nIHRoZSBzb2NrZXQgcG9vbCBhbmQgdHVybmluZyBvbmUgc2xvdyBkZXBlbmRlbmN5IGludG8gYVxuICogZmxlZXQtd2lkZSBsYXRlbmN5IGNhc2NhZGUgKHRoZSBjbGFzc2ljIHJldHJ5IHN0b3JtKS4gV29yc2UgZm9yIGZhaWwtQ0xPU0VEXG4gKiBkZXBlbmRlbmNpZXMgKGNvbXBsaWFuY2UpOiBhIGJyb3dub3V0IHRoZXJlIGJsb2NrcyBwbHVnaW4vcGlwZWxpbmUgY3JlYXRpb25cbiAqIHdpdGggZnVsbCByZXRyeSBsYXRlbmN5IG9uIGV2ZXJ5IHJlcXVlc3QuXG4gKlxuICogVGhpcyBicmVha2VyIHNob3J0LWNpcmN1aXRzIHRoYXQ6IGFmdGVyIGBmYWlsdXJlVGhyZXNob2xkYCBjb25zZWN1dGl2ZVxuICogZmFpbHVyZXMgdG8gYSB0YXJnZXQgaXQgT1BFTlMgYW5kIGZhc3QtZmFpbHMgKG5vIG5ldHdvcmssIG5vIHJldHJpZXMpIGZvclxuICogYGNvb2xkb3duTXNgLCB0aGVuIGFsbG93cyBhIHNpbmdsZSBoYWxmLW9wZW4gcHJvYmUuIEEgZmFpbC1jbG9zZWQgY2FsbGVyIHN0aWxsXG4gKiBmYWlscyBjbG9zZWQg4oCUIGp1c3QgaW1tZWRpYXRlbHksIGluc3RlYWQgb2YgYWZ0ZXIgdGhlIGZ1bGwgcmV0cnkgYnVkZ2V0OyBhXG4gKiBmYWlsLW9wZW4gY2FsbGVyIChjcmVhdGVTYWZlQ2xpZW50KSBnZXRzIGl0cyBgbnVsbGAgaW1tZWRpYXRlbHkuXG4gKlxuICogU3RhdGUgaXMga2V5ZWQgYnkgYGhvc3Q6cG9ydGAgaW4gYSBwcm9jZXNzLWxldmVsIHJlZ2lzdHJ5IHNvIGl0IGlzIHNoYXJlZCBldmVuXG4gKiB3aGVuIGNhbGxlcnMgbWludCBhIGZyZXNoIGNsaWVudCBwZXIgcmVxdWVzdCDigJQgb25lIGJhZCB0YXJnZXQgdHJpcHMgb25jZSwgbm90XG4gKiBvbmNlLXBlci1jbGllbnQuIERpc2FibGUgZW50aXJlbHkgd2l0aCBgUzJTX0JSRUFLRVJfRU5BQkxFRD1mYWxzZWAuXG4gKi9cblxuaW1wb3J0IHsgZW52SW50LCBlbnZCb29sIH0gZnJvbSAnLi4vdXRpbHMvZW52LmpzJztcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyBlbWl0Q291bnRlciB9IGZyb20gJy4uL3V0aWxzL21ldHJpYy1lbWl0dGVyLmpzJztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdjaXJjdWl0LWJyZWFrZXInKTtcblxuZXhwb3J0IHR5cGUgQ2lyY3VpdFN0YXRlID0gJ2Nsb3NlZCcgfCAnb3BlbicgfCAnaGFsZi1vcGVuJztcblxuZXhwb3J0IGludGVyZmFjZSBDaXJjdWl0QnJlYWtlckNvbmZpZyB7XG4gIC8qKiBDb25zZWN1dGl2ZSBmYWlsdXJlcyB0aGF0IHRyaXAgdGhlIGJyZWFrZXIgZnJvbSBjbG9zZWQg4oaSIG9wZW4uICovXG4gIGZhaWx1cmVUaHJlc2hvbGQ6IG51bWJlcjtcbiAgLyoqIEhvdyBsb25nIHRvIHN0YXkgb3BlbiBiZWZvcmUgYWxsb3dpbmcgYSBoYWxmLW9wZW4gcHJvYmUgKG1zKS4gKi9cbiAgY29vbGRvd25NczogbnVtYmVyO1xuICAvKiogTWFzdGVyIHN3aXRjaCDigJQgd2hlbiBmYWxzZSwgYWxsb3dSZXF1ZXN0KCkgaXMgYWx3YXlzIHRydWUgYW5kIG5vIHN0YXRlIG1vdmVzLiAqL1xuICBlbmFibGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9CUkVBS0VSX0NPTkZJRzogQ2lyY3VpdEJyZWFrZXJDb25maWcgPSB7XG4gIGZhaWx1cmVUaHJlc2hvbGQ6IGVudkludCgnUzJTX0JSRUFLRVJfVEhSRVNIT0xEJywgNSwgeyBtaW46IDEgfSksXG4gIGNvb2xkb3duTXM6IGVudkludCgnUzJTX0JSRUFLRVJfQ09PTERPV05fTVMnLCAxMDAwMCwgeyBtaW46IDEgfSksXG4gIGVuYWJsZWQ6IGVudkJvb2woJ1MyU19CUkVBS0VSX0VOQUJMRUQnLCB0cnVlKSxcbn07XG5cbi8qKlxuICogQSBzaW5nbGUgdGFyZ2V0J3MgYnJlYWtlci4gTm90IGNvbmN1cnJlbmN5LWxvY2tlZCAoSlMgaXMgc2luZ2xlLXRocmVhZGVkIHBlclxuICogZXZlbnQgbG9vcCk7IGBwcm9iZUluRmxpZ2h0YCBnYXRlcyBoYWxmLW9wZW4gdG8gb25lIGluLWZsaWdodCBwcm9iZSBzbyBhIGJ1cnN0XG4gKiBkdXJpbmcgY29vbGRvd24gZG9lc24ndCBzdGFtcGVkZSB0aGUgcmVjb3ZlcmluZyBkb3duc3RyZWFtLlxuICovXG5leHBvcnQgY2xhc3MgQ2lyY3VpdEJyZWFrZXIge1xuICBwcml2YXRlIHN0YXRlOiBDaXJjdWl0U3RhdGUgPSAnY2xvc2VkJztcbiAgcHJpdmF0ZSBjb25zZWN1dGl2ZUZhaWx1cmVzID0gMDtcbiAgcHJpdmF0ZSBvcGVuZWRBdCA9IDA7XG4gIHByaXZhdGUgcHJvYmVJbkZsaWdodCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkga2V5OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IENpcmN1aXRCcmVha2VyQ29uZmlnID0gREVGQVVMVF9CUkVBS0VSX0NPTkZJRyxcbiAgKSB7fVxuXG4gIGdldFN0YXRlKCk6IENpcmN1aXRTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGU7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBhIHJlcXVlc3QgbWF5IHByb2NlZWQuIFRyYW5zaXRpb25zIG9wZW7ihpJoYWxmLW9wZW4gb25jZSB0aGUgY29vbGRvd25cbiAgICogZWxhcHNlcyBhbmQgbGV0cyBleGFjdGx5IE9ORSBwcm9iZSB0aHJvdWdoLiBSZXR1cm5zIGZhbHNlIHdoZW4gb3BlbiAob3IgYVxuICAgKiBwcm9iZSBpcyBhbHJlYWR5IGluIGZsaWdodCkg4oCUIHRoZSBjYWxsZXIgbXVzdCBmYXN0LWZhaWwgd2l0aG91dCBhbnkgbmV0d29yay5cbiAgICovXG4gIGFsbG93UmVxdWVzdCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmVuYWJsZWQpIHJldHVybiB0cnVlO1xuICAgIGlmICh0aGlzLnN0YXRlID09PSAnY2xvc2VkJykgcmV0dXJuIHRydWU7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdvcGVuJykge1xuICAgICAgaWYgKERhdGUubm93KCkgLSB0aGlzLm9wZW5lZEF0ID49IHRoaXMuY29uZmlnLmNvb2xkb3duTXMpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdoYWxmLW9wZW4nO1xuICAgICAgICB0aGlzLnByb2JlSW5GbGlnaHQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gaGFsZi1vcGVuOiBhbGxvdyBvbmx5IGEgc2luZ2xlIHByb2JlIGF0IGEgdGltZS5cbiAgICBpZiAodGhpcy5wcm9iZUluRmxpZ2h0KSByZXR1cm4gZmFsc2U7XG4gICAgdGhpcy5wcm9iZUluRmxpZ2h0ID0gdHJ1ZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBBIGxvZ2ljYWwgcmVxdWVzdCBzdWNjZWVkZWQgKDJ4eC8zeHgvNHh4IHRoYXQgaXNuJ3QgYSBkb3duc3RyZWFtIGZhdWx0KS4gKi9cbiAgcmVjb3JkU3VjY2VzcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmVuYWJsZWQpIHJldHVybjtcbiAgICB0aGlzLmNvbnNlY3V0aXZlRmFpbHVyZXMgPSAwO1xuICAgIHRoaXMucHJvYmVJbkZsaWdodCA9IGZhbHNlO1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnY2xvc2VkJykge1xuICAgICAgbG9nZ2VyLmluZm8oJ2NpcmN1aXQgY2xvc2VkIChkb3duc3RyZWFtIHJlY292ZXJlZCknLCB7IHRhcmdldDogdGhpcy5rZXkgfSk7XG4gICAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgfVxuICB9XG5cbiAgLyoqIEEgbG9naWNhbCByZXF1ZXN0IGZhaWxlZCAoY29ubmVjdGlvbiBlcnJvciwgdGltZW91dCwgb3IgNXh4IHJlc3BvbnNlKS4gKi9cbiAgcmVjb3JkRmFpbHVyZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmVuYWJsZWQpIHJldHVybjtcbiAgICB0aGlzLnByb2JlSW5GbGlnaHQgPSBmYWxzZTtcbiAgICB0aGlzLmNvbnNlY3V0aXZlRmFpbHVyZXMrKztcbiAgICAvLyBBIGZhaWxlZCBoYWxmLW9wZW4gcHJvYmUgbWVhbnMgdGhlIGRvd25zdHJlYW0gaXMgc3RpbGwgYmFkIOKAlCByZS1vcGVuLlxuICAgIGlmICh0aGlzLnN0YXRlID09PSAnaGFsZi1vcGVuJykge1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnN0YXRlID09PSAnY2xvc2VkJyAmJiB0aGlzLmNvbnNlY3V0aXZlRmFpbHVyZXMgPj0gdGhpcy5jb25maWcuZmFpbHVyZVRocmVzaG9sZCkge1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvcGVuKCk6IHZvaWQge1xuICAgIGNvbnN0IHdhc09wZW4gPSB0aGlzLnN0YXRlID09PSAnb3Blbic7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuJztcbiAgICB0aGlzLm9wZW5lZEF0ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAoIXdhc09wZW4pIHtcbiAgICAgIGxvZ2dlci53YXJuKCdjaXJjdWl0IG9wZW5lZCDigJQgc2hlZGRpbmcgbG9hZCB0byB0YXJnZXQnLCB7XG4gICAgICAgIHRhcmdldDogdGhpcy5rZXksXG4gICAgICAgIGNvbnNlY3V0aXZlRmFpbHVyZXM6IHRoaXMuY29uc2VjdXRpdmVGYWlsdXJlcyxcbiAgICAgICAgY29vbGRvd25NczogdGhpcy5jb25maWcuY29vbGRvd25NcyxcbiAgICAgIH0pO1xuICAgICAgZW1pdENvdW50ZXIoJ3Myc19jaXJjdWl0X29wZW5lZF90b3RhbCcsIHsgdGFyZ2V0OiB0aGlzLmtleSB9KTtcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgcmVnaXN0cnkgPSBuZXcgTWFwPHN0cmluZywgQ2lyY3VpdEJyZWFrZXI+KCk7XG5cbi8qKiBHZXQgKG9yIGxhemlseSBjcmVhdGUpIHRoZSBzaGFyZWQgYnJlYWtlciBmb3IgYSBgaG9zdDpwb3J0YCB0YXJnZXQuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2lyY3VpdEJyZWFrZXIoa2V5OiBzdHJpbmcpOiBDaXJjdWl0QnJlYWtlciB7XG4gIGxldCBicmVha2VyID0gcmVnaXN0cnkuZ2V0KGtleSk7XG4gIGlmICghYnJlYWtlcikge1xuICAgIGJyZWFrZXIgPSBuZXcgQ2lyY3VpdEJyZWFrZXIoa2V5KTtcbiAgICByZWdpc3RyeS5zZXQoa2V5LCBicmVha2VyKTtcbiAgfVxuICByZXR1cm4gYnJlYWtlcjtcbn1cblxuLyoqIFRlc3QgaGVscGVyOiBjbGVhciBhbGwgYnJlYWtlciBzdGF0ZSBzbyBzdWl0ZXMgZG9uJ3QgbGVhayBhY3Jvc3MgZWFjaCBvdGhlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNldENpcmN1aXRCcmVha2VycygpOiB2b2lkIHtcbiAgcmVnaXN0cnkuY2xlYXIoKTtcbn1cblxuLyoqIFRocm93biBieSB0aGUgY2xpZW50IHdoZW4gYSByZXF1ZXN0IGlzIGZhc3QtZmFpbGVkIGJlY2F1c2UgdGhlIGJyZWFrZXIgaXMgb3Blbi4gKi9cbmV4cG9ydCBjbGFzcyBDaXJjdWl0T3BlbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICByZWFkb25seSBjb2RlID0gJ0NJUkNVSVRfT1BFTic7XG4gIGNvbnN0cnVjdG9yKHRhcmdldDogc3RyaW5nKSB7XG4gICAgc3VwZXIoYENpcmN1aXQgb3BlbiBmb3IgJHt0YXJnZXR9IOKAlCBmYXN0LWZhaWxpbmcgdG8gc2hlZCBsb2FkYCk7XG4gICAgdGhpcy5uYW1lID0gJ0NpcmN1aXRPcGVuRXJyb3InO1xuICB9XG59XG4iXX0=
|