@pipeline-builder/api-core 0.0.1
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/LICENSE +202 -0
- package/README.md +98 -0
- package/lib/constants/ai-providers.d.ts +52 -0
- package/lib/constants/ai-providers.js +129 -0
- package/lib/constants/http-status.d.ts +20 -0
- package/lib/constants/http-status.js +26 -0
- package/lib/constants/index.d.ts +3 -0
- package/lib/constants/index.js +6 -0
- package/lib/constants/time.d.ts +10 -0
- package/lib/constants/time.js +13 -0
- package/lib/errors/app-errors.d.ts +30 -0
- package/lib/errors/app-errors.js +53 -0
- package/lib/errors/index.d.ts +1 -0
- package/lib/errors/index.js +4 -0
- package/lib/helpers/access-helpers.d.ts +63 -0
- package/lib/helpers/access-helpers.js +82 -0
- package/lib/helpers/crud-helpers.d.ts +9 -0
- package/lib/helpers/crud-helpers.js +23 -0
- package/lib/helpers/index.d.ts +6 -0
- package/lib/helpers/index.js +9 -0
- package/lib/helpers/org-hierarchy-http.d.ts +74 -0
- package/lib/helpers/org-hierarchy-http.js +144 -0
- package/lib/helpers/org-hierarchy.d.ts +57 -0
- package/lib/helpers/org-hierarchy.js +110 -0
- package/lib/helpers/restore-helpers.d.ts +49 -0
- package/lib/helpers/restore-helpers.js +78 -0
- package/lib/helpers/sse-helpers.d.ts +20 -0
- package/lib/helpers/sse-helpers.js +45 -0
- package/lib/index.d.ts +58 -0
- package/lib/index.js +71 -0
- package/lib/middleware/auth.d.ts +208 -0
- package/lib/middleware/auth.js +588 -0
- package/lib/middleware/index.d.ts +3 -0
- package/lib/middleware/index.js +6 -0
- package/lib/middleware/mongo-sanitize.d.ts +32 -0
- package/lib/middleware/mongo-sanitize.js +100 -0
- package/lib/middleware/step-up.d.ts +45 -0
- package/lib/middleware/step-up.js +138 -0
- package/lib/openapi/extend-zod.d.ts +1 -0
- package/lib/openapi/extend-zod.js +6 -0
- package/lib/openapi/index.d.ts +2 -0
- package/lib/openapi/index.js +5 -0
- package/lib/openapi/registry.d.ts +17 -0
- package/lib/openapi/registry.js +38 -0
- package/lib/openapi/routes/ask-routes.d.ts +7 -0
- package/lib/openapi/routes/ask-routes.js +62 -0
- package/lib/openapi/routes/billing-routes.d.ts +1 -0
- package/lib/openapi/routes/billing-routes.js +66 -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.d.ts +5 -0
- package/lib/openapi/routes/index.js +28 -0
- package/lib/openapi/routes/message-routes.d.ts +1 -0
- package/lib/openapi/routes/message-routes.js +105 -0
- package/lib/openapi/routes/pipeline-routes.d.ts +1 -0
- package/lib/openapi/routes/pipeline-routes.js +105 -0
- package/lib/openapi/routes/pipeline-template-routes.d.ts +1 -0
- package/lib/openapi/routes/pipeline-template-routes.js +61 -0
- package/lib/openapi/routes/plugin-routes.d.ts +1 -0
- package/lib/openapi/routes/plugin-routes.js +96 -0
- package/lib/openapi/routes/quota-routes.d.ts +1 -0
- package/lib/openapi/routes/quota-routes.js +62 -0
- package/lib/openapi/schema-registry.d.ts +25 -0
- package/lib/openapi/schema-registry.js +91 -0
- package/lib/routes/health.d.ts +41 -0
- package/lib/routes/health.js +82 -0
- package/lib/routes/index.d.ts +1 -0
- package/lib/routes/index.js +4 -0
- package/lib/services/audit-spool.d.ts +80 -0
- package/lib/services/audit-spool.js +172 -0
- package/lib/services/cache-service.d.ts +124 -0
- package/lib/services/cache-service.js +276 -0
- package/lib/services/circuit-breaker.d.ts +45 -0
- package/lib/services/circuit-breaker.js +138 -0
- package/lib/services/compliance-client.d.ts +46 -0
- package/lib/services/compliance-client.js +128 -0
- package/lib/services/compliance-event-subscriber.d.ts +16 -0
- package/lib/services/compliance-event-subscriber.js +72 -0
- package/lib/services/durable-event-bus.d.ts +96 -0
- package/lib/services/durable-event-bus.js +204 -0
- package/lib/services/entity-events.d.ts +48 -0
- package/lib/services/entity-events.js +79 -0
- package/lib/services/env-redis.d.ts +44 -0
- package/lib/services/env-redis.js +94 -0
- package/lib/services/http-client.d.ts +143 -0
- package/lib/services/http-client.js +335 -0
- package/lib/services/index.d.ts +18 -0
- package/lib/services/index.js +20 -0
- package/lib/services/leader-lock.d.ts +45 -0
- package/lib/services/leader-lock.js +85 -0
- package/lib/services/quota.d.ts +130 -0
- package/lib/services/quota.js +264 -0
- package/lib/services/remote-audit-client.d.ts +160 -0
- package/lib/services/remote-audit-client.js +390 -0
- package/lib/services/retry-strategy.d.ts +74 -0
- package/lib/services/retry-strategy.js +118 -0
- package/lib/services/scheduler.d.ts +41 -0
- package/lib/services/scheduler.js +86 -0
- package/lib/services/service-boot.d.ts +20 -0
- package/lib/services/service-boot.js +28 -0
- package/lib/services/sse-ticket-store.d.ts +51 -0
- package/lib/services/sse-ticket-store.js +130 -0
- package/lib/services/token-revocation.d.ts +52 -0
- package/lib/services/token-revocation.js +120 -0
- package/lib/testing/tier-mock.d.ts +44 -0
- package/lib/testing/tier-mock.js +65 -0
- package/lib/types/audit-events.d.ts +69 -0
- package/lib/types/audit-events.js +4 -0
- package/lib/types/catalog-metadata.d.ts +36 -0
- package/lib/types/catalog-metadata.js +21 -0
- package/lib/types/common.d.ts +255 -0
- package/lib/types/common.js +41 -0
- package/lib/types/error-codes.d.ts +54 -0
- package/lib/types/error-codes.js +107 -0
- package/lib/types/feature-flags.d.ts +36 -0
- package/lib/types/feature-flags.js +128 -0
- package/lib/types/http.d.ts +27 -0
- package/lib/types/http.js +4 -0
- package/lib/types/index.d.ts +11 -0
- package/lib/types/index.js +14 -0
- package/lib/types/permissions.d.ts +65 -0
- package/lib/types/permissions.js +131 -0
- package/lib/types/pipeline-template.d.ts +30 -0
- package/lib/types/pipeline-template.js +13 -0
- package/lib/types/pipeline.d.ts +59 -0
- package/lib/types/pipeline.js +31 -0
- package/lib/types/quota-tiers.d.ts +79 -0
- package/lib/types/quota-tiers.js +221 -0
- package/lib/types/visibility.d.ts +20 -0
- package/lib/types/visibility.js +22 -0
- package/lib/utils/alias-resolver.d.ts +37 -0
- package/lib/utils/alias-resolver.js +68 -0
- package/lib/utils/audit.d.ts +15 -0
- package/lib/utils/audit.js +39 -0
- package/lib/utils/aws-scrub.d.ts +11 -0
- package/lib/utils/aws-scrub.js +67 -0
- package/lib/utils/compliance-attributes.d.ts +6 -0
- package/lib/utils/compliance-attributes.js +69 -0
- package/lib/utils/concurrency.d.ts +9 -0
- package/lib/utils/concurrency.js +29 -0
- package/lib/utils/crash-handlers.d.ts +18 -0
- package/lib/utils/crash-handlers.js +36 -0
- package/lib/utils/env.d.ts +28 -0
- package/lib/utils/env.js +54 -0
- package/lib/utils/headers.d.ts +18 -0
- package/lib/utils/headers.js +21 -0
- package/lib/utils/identity.d.ts +40 -0
- package/lib/utils/identity.js +51 -0
- package/lib/utils/index.d.ts +17 -0
- package/lib/utils/index.js +20 -0
- package/lib/utils/logger.d.ts +38 -0
- package/lib/utils/logger.js +174 -0
- package/lib/utils/metric-emitter.d.ts +36 -0
- package/lib/utils/metric-emitter.js +32 -0
- package/lib/utils/object.d.ts +13 -0
- package/lib/utils/object.js +18 -0
- package/lib/utils/params.d.ts +150 -0
- package/lib/utils/params.js +206 -0
- package/lib/utils/response.d.ts +117 -0
- package/lib/utils/response.js +223 -0
- package/lib/utils/safe-require.d.ts +13 -0
- package/lib/utils/safe-require.js +19 -0
- package/lib/utils/secret-encryption.d.ts +176 -0
- package/lib/utils/secret-encryption.js +374 -0
- package/lib/utils/ssrf.d.ts +30 -0
- package/lib/utils/ssrf.js +106 -0
- package/lib/validation/ai-schemas.d.ts +56 -0
- package/lib/validation/ai-schemas.js +78 -0
- package/lib/validation/common-schemas.d.ts +133 -0
- package/lib/validation/common-schemas.js +94 -0
- package/lib/validation/index.d.ts +7 -0
- package/lib/validation/index.js +10 -0
- package/lib/validation/message-schemas.d.ts +160 -0
- package/lib/validation/message-schemas.js +156 -0
- package/lib/validation/middleware.d.ts +72 -0
- package/lib/validation/middleware.js +65 -0
- package/lib/validation/pipeline-schemas.d.ts +181 -0
- package/lib/validation/pipeline-schemas.js +101 -0
- package/lib/validation/pipeline-template-schemas.d.ts +155 -0
- package/lib/validation/pipeline-template-schemas.js +66 -0
- package/lib/validation/plugin-schemas.d.ts +171 -0
- package/lib/validation/plugin-schemas.js +81 -0
- package/openapi.yaml +292 -0
- package/package.json +167 -0
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Pipeline filter schema for query parameters
|
|
4
|
+
*/
|
|
5
|
+
export declare const PipelineFilterSchema: z.ZodObject<{
|
|
6
|
+
id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodString]>>;
|
|
7
|
+
visibility: z.ZodOptional<z.ZodEnum<{
|
|
8
|
+
org: "org";
|
|
9
|
+
private: "private";
|
|
10
|
+
public: "public";
|
|
11
|
+
}>>;
|
|
12
|
+
isActive: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodPipe<z.ZodEnum<{
|
|
13
|
+
false: "false";
|
|
14
|
+
true: "true";
|
|
15
|
+
}>, z.ZodTransform<boolean, "false" | "true">>, z.ZodPipe<z.ZodString, z.ZodTransform<boolean, string>>]>>;
|
|
16
|
+
isDefault: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodPipe<z.ZodEnum<{
|
|
17
|
+
false: "false";
|
|
18
|
+
true: "true";
|
|
19
|
+
}>, z.ZodTransform<boolean, "false" | "true">>, z.ZodPipe<z.ZodString, z.ZodTransform<boolean, string>>]>>;
|
|
20
|
+
ownerId: z.ZodOptional<z.ZodString>;
|
|
21
|
+
lifecycle: z.ZodOptional<z.ZodEnum<{
|
|
22
|
+
deprecated: "deprecated";
|
|
23
|
+
experimental: "experimental";
|
|
24
|
+
production: "production";
|
|
25
|
+
}>>;
|
|
26
|
+
project: z.ZodOptional<z.ZodString>;
|
|
27
|
+
organization: z.ZodOptional<z.ZodString>;
|
|
28
|
+
pipelineName: z.ZodOptional<z.ZodString>;
|
|
29
|
+
orgId: z.ZodOptional<z.ZodString>;
|
|
30
|
+
keyword: z.ZodOptional<z.ZodString>;
|
|
31
|
+
}, z.core.$strip>;
|
|
32
|
+
/**
|
|
33
|
+
* Pipeline creation schema
|
|
34
|
+
*/
|
|
35
|
+
export declare const PipelineCreateSchema: z.ZodObject<{
|
|
36
|
+
ownerId: z.ZodOptional<z.ZodString>;
|
|
37
|
+
ownerType: z.ZodOptional<z.ZodEnum<{
|
|
38
|
+
team: "team";
|
|
39
|
+
user: "user";
|
|
40
|
+
}>>;
|
|
41
|
+
lifecycle: z.ZodOptional<z.ZodEnum<{
|
|
42
|
+
deprecated: "deprecated";
|
|
43
|
+
experimental: "experimental";
|
|
44
|
+
production: "production";
|
|
45
|
+
}>>;
|
|
46
|
+
criticality: z.ZodOptional<z.ZodEnum<{
|
|
47
|
+
critical: "critical";
|
|
48
|
+
high: "high";
|
|
49
|
+
low: "low";
|
|
50
|
+
medium: "medium";
|
|
51
|
+
}>>;
|
|
52
|
+
labels: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
53
|
+
links: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
54
|
+
title: z.ZodString;
|
|
55
|
+
url: z.ZodString;
|
|
56
|
+
icon: z.ZodOptional<z.ZodString>;
|
|
57
|
+
}, z.core.$strip>>>;
|
|
58
|
+
project: z.ZodString;
|
|
59
|
+
organization: z.ZodString;
|
|
60
|
+
pipelineName: z.ZodOptional<z.ZodString>;
|
|
61
|
+
description: z.ZodOptional<z.ZodString>;
|
|
62
|
+
keywords: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
63
|
+
visibility: z.ZodOptional<z.ZodEnum<{
|
|
64
|
+
org: "org";
|
|
65
|
+
private: "private";
|
|
66
|
+
public: "public";
|
|
67
|
+
}>>;
|
|
68
|
+
props: z.ZodObject<{
|
|
69
|
+
project: z.ZodString;
|
|
70
|
+
organization: z.ZodString;
|
|
71
|
+
pipelineName: z.ZodOptional<z.ZodString>;
|
|
72
|
+
global: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
73
|
+
defaults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
74
|
+
role: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
75
|
+
synth: z.ZodObject<{
|
|
76
|
+
source: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
77
|
+
plugin: z.ZodObject<{
|
|
78
|
+
name: z.ZodString;
|
|
79
|
+
alias: z.ZodOptional<z.ZodString>;
|
|
80
|
+
filter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
81
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
82
|
+
}, z.core.$loose>;
|
|
83
|
+
}, z.core.$loose>;
|
|
84
|
+
stages: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
85
|
+
stageName: z.ZodString;
|
|
86
|
+
alias: z.ZodOptional<z.ZodString>;
|
|
87
|
+
steps: z.ZodArray<z.ZodObject<{
|
|
88
|
+
plugin: z.ZodObject<{
|
|
89
|
+
name: z.ZodString;
|
|
90
|
+
alias: z.ZodOptional<z.ZodString>;
|
|
91
|
+
filter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
92
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
93
|
+
}, z.core.$loose>;
|
|
94
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
95
|
+
network: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
96
|
+
position: z.ZodOptional<z.ZodEnum<{
|
|
97
|
+
post: "post";
|
|
98
|
+
pre: "pre";
|
|
99
|
+
}>>;
|
|
100
|
+
}, z.core.$loose>>;
|
|
101
|
+
}, z.core.$strip>>>;
|
|
102
|
+
}, z.core.$loose>;
|
|
103
|
+
}, z.core.$strip>;
|
|
104
|
+
/**
|
|
105
|
+
* Pipeline update schema
|
|
106
|
+
*/
|
|
107
|
+
export declare const PipelineUpdateSchema: z.ZodObject<{
|
|
108
|
+
ownerId: z.ZodOptional<z.ZodString>;
|
|
109
|
+
ownerType: z.ZodOptional<z.ZodEnum<{
|
|
110
|
+
team: "team";
|
|
111
|
+
user: "user";
|
|
112
|
+
}>>;
|
|
113
|
+
lifecycle: z.ZodOptional<z.ZodEnum<{
|
|
114
|
+
deprecated: "deprecated";
|
|
115
|
+
experimental: "experimental";
|
|
116
|
+
production: "production";
|
|
117
|
+
}>>;
|
|
118
|
+
criticality: z.ZodOptional<z.ZodEnum<{
|
|
119
|
+
critical: "critical";
|
|
120
|
+
high: "high";
|
|
121
|
+
low: "low";
|
|
122
|
+
medium: "medium";
|
|
123
|
+
}>>;
|
|
124
|
+
labels: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
125
|
+
links: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
126
|
+
title: z.ZodString;
|
|
127
|
+
url: z.ZodString;
|
|
128
|
+
icon: z.ZodOptional<z.ZodString>;
|
|
129
|
+
}, z.core.$strip>>>;
|
|
130
|
+
pipelineName: z.ZodOptional<z.ZodString>;
|
|
131
|
+
description: z.ZodOptional<z.ZodString>;
|
|
132
|
+
keywords: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
133
|
+
props: z.ZodOptional<z.ZodObject<{
|
|
134
|
+
project: z.ZodString;
|
|
135
|
+
organization: z.ZodString;
|
|
136
|
+
pipelineName: z.ZodOptional<z.ZodString>;
|
|
137
|
+
global: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
138
|
+
defaults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
139
|
+
role: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
140
|
+
synth: z.ZodObject<{
|
|
141
|
+
source: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
142
|
+
plugin: z.ZodObject<{
|
|
143
|
+
name: z.ZodString;
|
|
144
|
+
alias: z.ZodOptional<z.ZodString>;
|
|
145
|
+
filter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
146
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
147
|
+
}, z.core.$loose>;
|
|
148
|
+
}, z.core.$loose>;
|
|
149
|
+
stages: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
150
|
+
stageName: z.ZodString;
|
|
151
|
+
alias: z.ZodOptional<z.ZodString>;
|
|
152
|
+
steps: z.ZodArray<z.ZodObject<{
|
|
153
|
+
plugin: z.ZodObject<{
|
|
154
|
+
name: z.ZodString;
|
|
155
|
+
alias: z.ZodOptional<z.ZodString>;
|
|
156
|
+
filter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
157
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
158
|
+
}, z.core.$loose>;
|
|
159
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
160
|
+
network: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
161
|
+
position: z.ZodOptional<z.ZodEnum<{
|
|
162
|
+
post: "post";
|
|
163
|
+
pre: "pre";
|
|
164
|
+
}>>;
|
|
165
|
+
}, z.core.$loose>>;
|
|
166
|
+
}, z.core.$strip>>>;
|
|
167
|
+
}, z.core.$loose>>;
|
|
168
|
+
isActive: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodPipe<z.ZodEnum<{
|
|
169
|
+
false: "false";
|
|
170
|
+
true: "true";
|
|
171
|
+
}>, z.ZodTransform<boolean, "false" | "true">>, z.ZodPipe<z.ZodString, z.ZodTransform<boolean, string>>]>>;
|
|
172
|
+
isDefault: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodPipe<z.ZodEnum<{
|
|
173
|
+
false: "false";
|
|
174
|
+
true: "true";
|
|
175
|
+
}>, z.ZodTransform<boolean, "false" | "true">>, z.ZodPipe<z.ZodString, z.ZodTransform<boolean, string>>]>>;
|
|
176
|
+
visibility: z.ZodOptional<z.ZodEnum<{
|
|
177
|
+
org: "org";
|
|
178
|
+
private: "private";
|
|
179
|
+
public: "public";
|
|
180
|
+
}>>;
|
|
181
|
+
}, z.core.$strip>;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { BaseFilterSchema, BooleanQuerySchema, VisibilitySchema, CatalogMetadataShape } from './common-schemas.js';
|
|
5
|
+
/**
|
|
6
|
+
* Pipeline filter schema for query parameters
|
|
7
|
+
*/
|
|
8
|
+
export const PipelineFilterSchema = BaseFilterSchema.extend({
|
|
9
|
+
project: z.string().min(1).optional(),
|
|
10
|
+
organization: z.string().min(1).optional(),
|
|
11
|
+
pipelineName: z.string().min(1).optional(),
|
|
12
|
+
orgId: z.string().min(1).optional(),
|
|
13
|
+
keyword: z.string().min(1).optional(),
|
|
14
|
+
});
|
|
15
|
+
/**
|
|
16
|
+
* Plugin options schema (name-based selection)
|
|
17
|
+
*/
|
|
18
|
+
const PluginOptionsSchema = z.object({
|
|
19
|
+
name: z.string().min(1),
|
|
20
|
+
alias: z.string().optional(),
|
|
21
|
+
filter: z.record(z.string(), z.unknown()).optional(),
|
|
22
|
+
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
23
|
+
}).passthrough();
|
|
24
|
+
/**
|
|
25
|
+
* Stage step schema
|
|
26
|
+
*
|
|
27
|
+
* `passthrough()` keeps forward-compatible fields, but a few common mistakes are
|
|
28
|
+
* rejected loudly rather than silently ignored at synth — most notably a
|
|
29
|
+
* top-level `commands`, which is NOT a step field (the plugin's own commands run)
|
|
30
|
+
* and would otherwise do nothing.
|
|
31
|
+
*/
|
|
32
|
+
const STEP_NON_FIELDS = {
|
|
33
|
+
commands: '`commands` is not a step field — it is ignored at synth (the plugin\'s own commands run). '
|
|
34
|
+
+ 'To change what a step runs, use a plugin env knob (e.g. `metadata.GRADLE_TASK`), '
|
|
35
|
+
+ '`preCommands`/`postCommands` to add commands around the plugin\'s, or the '
|
|
36
|
+
+ '`aws:cdk:pipelines:codebuildstep:commands` metadata key for a full override.',
|
|
37
|
+
};
|
|
38
|
+
const StageStepSchema = z.object({
|
|
39
|
+
plugin: PluginOptionsSchema,
|
|
40
|
+
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
41
|
+
network: z.record(z.string(), z.unknown()).optional(),
|
|
42
|
+
position: z.enum(['pre', 'post']).optional(),
|
|
43
|
+
}).passthrough().superRefine((step, ctx) => {
|
|
44
|
+
for (const [key, message] of Object.entries(STEP_NON_FIELDS)) {
|
|
45
|
+
if (key in step) {
|
|
46
|
+
ctx.addIssue({ code: 'custom', path: [key], message });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
/**
|
|
51
|
+
* Stage schema
|
|
52
|
+
*/
|
|
53
|
+
const StageSchema = z.object({
|
|
54
|
+
stageName: z.string().min(1),
|
|
55
|
+
alias: z.string().optional(),
|
|
56
|
+
steps: z.array(StageStepSchema).min(1),
|
|
57
|
+
});
|
|
58
|
+
/**
|
|
59
|
+
* BuilderProps schema — structural validation for pipeline configuration.
|
|
60
|
+
* Uses passthrough() to allow additional fields without rejecting them.
|
|
61
|
+
*/
|
|
62
|
+
const BuilderPropsSchema = z.object({
|
|
63
|
+
project: z.string().min(1),
|
|
64
|
+
organization: z.string().min(1),
|
|
65
|
+
pipelineName: z.string().optional(),
|
|
66
|
+
global: z.record(z.string(), z.unknown()).optional(),
|
|
67
|
+
defaults: z.record(z.string(), z.unknown()).optional(),
|
|
68
|
+
role: z.record(z.string(), z.unknown()).optional(),
|
|
69
|
+
synth: z.object({
|
|
70
|
+
source: z.record(z.string(), z.unknown()).optional(),
|
|
71
|
+
plugin: PluginOptionsSchema,
|
|
72
|
+
}).passthrough(),
|
|
73
|
+
stages: z.array(StageSchema).optional(),
|
|
74
|
+
}).passthrough();
|
|
75
|
+
/**
|
|
76
|
+
* Pipeline creation schema
|
|
77
|
+
*/
|
|
78
|
+
export const PipelineCreateSchema = z.object({
|
|
79
|
+
...CatalogMetadataShape,
|
|
80
|
+
project: z.string().min(1, 'Project is required'),
|
|
81
|
+
organization: z.string().min(1, 'Organization is required'),
|
|
82
|
+
pipelineName: z.string().min(1).optional(),
|
|
83
|
+
description: z.string().optional(),
|
|
84
|
+
keywords: z.array(z.string()).optional(),
|
|
85
|
+
visibility: VisibilitySchema.optional(),
|
|
86
|
+
props: BuilderPropsSchema,
|
|
87
|
+
});
|
|
88
|
+
/**
|
|
89
|
+
* Pipeline update schema
|
|
90
|
+
*/
|
|
91
|
+
export const PipelineUpdateSchema = z.object({
|
|
92
|
+
...CatalogMetadataShape,
|
|
93
|
+
pipelineName: z.string().min(1).optional(),
|
|
94
|
+
description: z.string().optional(),
|
|
95
|
+
keywords: z.array(z.string()).optional(),
|
|
96
|
+
props: BuilderPropsSchema.optional(),
|
|
97
|
+
isActive: BooleanQuerySchema.optional(),
|
|
98
|
+
isDefault: BooleanQuerySchema.optional(),
|
|
99
|
+
visibility: VisibilitySchema.optional(),
|
|
100
|
+
});
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtc2NoZW1hcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWxpZGF0aW9uL3BpcGVsaW5lLXNjaGVtYXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5IOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO0lBQzFELE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUNyQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDMUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQzFDLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUNuQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7Q0FDdEMsQ0FBQyxDQUFDO0FBRUg7O0dBRUc7QUFDSCxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDbkMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMs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QUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQzFDLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2xDLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUN4QyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsUUFBUSxFQUFFO0lBQ3BDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUU7SUFDdkMsU0FBUyxFQUFFLGtCQUFrQixDQUFDLFFBQVEsRUFBRTtJQUN4QyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxFQUFFO0NBQ3hDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcbmltcG9ydCB7IEJhc2VGaWx0ZXJTY2hlbWEsIEJvb2xlYW5RdWVyeVNjaGVtYSwgVmlzaWJpbGl0eVNjaGVtYSwgQ2F0YWxvZ01ldGFkYXRhU2hhcGUgfSBmcm9tICcuL2NvbW1vbi1zY2hlbWFzLmpzJztcblxuLyoqXG4gKiBQaXBlbGluZSBmaWx0ZXIgc2NoZW1hIGZvciBxdWVyeSBwYXJhbWV0ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBQaXBlbGluZUZpbHRlclNjaGVtYSA9IEJhc2VGaWx0ZXJTY2hlbWEuZXh0ZW5kKHtcbiAgcHJvamVjdDogei5zdHJpbmcoKS5taW4oMSkub3B0aW9uYWwoKSxcbiAgb3JnYW5pemF0aW9uOiB6LnN0cmluZygpLm1pbigxKS5vcHRpb25hbCgpLFxuICBwaXBlbGluZU5hbWU6IHouc3RyaW5nKCkubWluKDEpLm9wdGlvbmFsKCksXG4gIG9yZ0lkOiB6LnN0cmluZygpLm1pbigxKS5vcHRpb25hbCgpLFxuICBrZXl3b3JkOiB6LnN0cmluZygpLm1pbigxKS5vcHRpb25hbCgpLFxufSk7XG5cbi8qKlxuICogUGx1Z2luIG9wdGlvbnMgc2NoZW1hIChuYW1lLWJhc2VkIHNlbGVjdGlvbilcbiAqL1xuY29uc3QgUGx1Z2luT3B0aW9uc1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgbmFtZTogei5zdHJpbmcoKS5taW4oMSksXG4gIGFsaWFzOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGZpbHRlcjogei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpLm9wdGlvbmFsKCksXG4gIG1ldGFkYXRhOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSkub3B0aW9uYWwoKSxcbn0pLnBhc3N0aHJvdWdoKCk7XG5cbi8qKlxuICogU3RhZ2Ugc3RlcCBzY2hlbWFcbiAqXG4gKiBgcGFzc3Rocm91Z2goKWAga2VlcHMgZm9yd2FyZC1jb21wYXRpYmxlIGZpZWxkcywgYnV0IGEgZmV3IGNvbW1vbiBtaXN0YWtlcyBhcmVcbiAqIHJlamVjdGVkIGxvdWRseSByYXRoZXIgdGhhbiBzaWxlbnRseSBpZ25vcmVkIGF0IHN5bnRoIOKAlCBtb3N0IG5vdGFibHkgYVxuICogdG9wLWxldmVsIGBjb21tYW5kc2AsIHdoaWNoIGlzIE5PVCBhIHN0ZXAgZmllbGQgKHRoZSBwbHVnaW4ncyBvd24gY29tbWFuZHMgcnVuKVxuICogYW5kIHdvdWxkIG90aGVyd2lzZSBkbyBub3RoaW5nLlxuICovXG5jb25zdCBTVEVQX05PTl9GSUVMRFM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGNvbW1hbmRzOlxuICAgICdgY29tbWFuZHNgIGlzIG5vdCBhIHN0ZXAgZmllbGQg4oCUIGl0IGlzIGlnbm9yZWQgYXQgc3ludGggKHRoZSBwbHVnaW5cXCdzIG93biBjb21tYW5kcyBydW4pLiAnXG4gICAgKyAnVG8gY2hhbmdlIHdoYXQgYSBzdGVwIHJ1bnMsIHVzZSBhIHBsdWdpbiBlbnYga25vYiAoZS5nLiBgbWV0YWRhdGEuR1JBRExFX1RBU0tgKSwgJ1xuICAgICsgJ2BwcmVDb21tYW5kc2AvYHBvc3RDb21tYW5kc2AgdG8gYWRkIGNvbW1hbmRzIGFyb3VuZCB0aGUgcGx1Z2luXFwncywgb3IgdGhlICdcbiAgICArICdgYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDpjb21tYW5kc2AgbWV0YWRhdGEga2V5IGZvciBhIGZ1bGwgb3ZlcnJpZGUuJyxcbn07XG5cbmNvbnN0IFN0YWdlU3RlcFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgcGx1Z2luOiBQbHVnaW5PcHRpb25zU2NoZW1hLFxuICBtZXRhZGF0YTogei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpLm9wdGlvbmFsKCksXG4gIG5ldHdvcms6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKS5vcHRpb25hbCgpLFxuICBwb3NpdGlvbjogei5lbnVtKFsncHJlJywgJ3Bvc3QnXSkub3B0aW9uYWwoKSxcbn0pLnBhc3N0aHJvdWdoKCkuc3VwZXJSZWZpbmUoKHN0ZXAsIGN0eCkgPT4ge1xuICBmb3IgKGNvbnN0IFtrZXksIG1lc3NhZ2VdIG9mIE9iamVjdC5lbnRyaWVzKFNURVBfTk9OX0ZJRUxEUykpIHtcbiAgICBpZiAoa2V5IGluIChzdGVwIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSkge1xuICAgICAgY3R4LmFkZElzc3VlKHsgY29kZTogJ2N1c3RvbScsIHBhdGg6IFtrZXldLCBtZXNzYWdlIH0pO1xuICAgIH1cbiAgfVxufSk7XG5cbi8qKlxuICogU3RhZ2Ugc2NoZW1hXG4gKi9cbmNvbnN0IFN0YWdlU2NoZW1hID0gei5vYmplY3Qoe1xuICBzdGFnZU5hbWU6IHouc3RyaW5nKCkubWluKDEpLFxuICBhbGlhczogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBzdGVwczogei5hcnJheShTdGFnZVN0ZXBTY2hlbWEpLm1pbigxKSxcbn0pO1xuXG4vKipcbiAqIEJ1aWxkZXJQcm9wcyBzY2hlbWEg4oCUIHN0cnVjdHVyYWwgdmFsaWRhdGlvbiBmb3IgcGlwZWxpbmUgY29uZmlndXJhdGlvbi5cbiAqIFVzZXMgcGFzc3Rocm91Z2goKSB0byBhbGxvdyBhZGRpdGlvbmFsIGZpZWxkcyB3aXRob3V0IHJlamVjdGluZyB0aGVtLlxuICovXG5jb25zdCBCdWlsZGVyUHJvcHNTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHByb2plY3Q6IHouc3RyaW5nKCkubWluKDEpLFxuICBvcmdhbml6YXRpb246IHouc3RyaW5nKCkubWluKDEpLFxuICBwaXBlbGluZU5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZ2xvYmFsOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSkub3B0aW9uYWwoKSxcbiAgZGVmYXVsdHM6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKS5vcHRpb25hbCgpLFxuICByb2xlOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSkub3B0aW9uYWwoKSxcbiAgc3ludGg6IHoub2JqZWN0KHtcbiAgICBzb3VyY2U6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKS5vcHRpb25hbCgpLFxuICAgIHBsdWdpbjogUGx1Z2luT3B0aW9uc1NjaGVtYSxcbiAgfSkucGFzc3Rocm91Z2goKSxcbiAgc3RhZ2VzOiB6LmFycmF5KFN0YWdlU2NoZW1hKS5vcHRpb25hbCgpLFxufSkucGFzc3Rocm91Z2goKTtcblxuLyoqXG4gKiBQaXBlbGluZSBjcmVhdGlvbiBzY2hlbWFcbiAqL1xuZXhwb3J0IGNvbnN0IFBpcGVsaW5lQ3JlYXRlU2NoZW1hID0gei5vYmplY3Qoe1xuICAuLi5DYXRhbG9nTWV0YWRhdGFTaGFwZSxcbiAgcHJvamVjdDogei5zdHJpbmcoKS5taW4oMSwgJ1Byb2plY3QgaXMgcmVxdWlyZWQnKSxcbiAgb3JnYW5pemF0aW9uOiB6LnN0cmluZygpLm1pbigxLCAnT3JnYW5pemF0aW9uIGlzIHJlcXVpcmVkJyksXG4gIHBpcGVsaW5lTmFtZTogei5zdHJpbmcoKS5taW4oMSkub3B0aW9uYWwoKSxcbiAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAga2V5d29yZHM6IHouYXJyYXkoei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgdmlzaWJpbGl0eTogVmlzaWJpbGl0eVNjaGVtYS5vcHRpb25hbCgpLFxuICBwcm9wczogQnVpbGRlclByb3BzU2NoZW1hLFxufSk7XG5cbi8qKlxuICogUGlwZWxpbmUgdXBkYXRlIHNjaGVtYVxuICovXG5leHBvcnQgY29uc3QgUGlwZWxpbmVVcGRhdGVTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIC4uLkNhdGFsb2dNZXRhZGF0YVNoYXBlLFxuICBwaXBlbGluZU5hbWU6IHouc3RyaW5nKCkubWluKDEpLm9wdGlvbmFsKCksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGtleXdvcmRzOiB6LmFycmF5KHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG4gIHByb3BzOiBCdWlsZGVyUHJvcHNTY2hlbWEub3B0aW9uYWwoKSxcbiAgaXNBY3RpdmU6IEJvb2xlYW5RdWVyeVNjaGVtYS5vcHRpb25hbCgpLFxuICBpc0RlZmF1bHQ6IEJvb2xlYW5RdWVyeVNjaGVtYS5vcHRpb25hbCgpLFxuICB2aXNpYmlsaXR5OiBWaXNpYmlsaXR5U2NoZW1hLm9wdGlvbmFsKCksXG59KTtcbiJdfQ==
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* One declared template input — mirrors the `TemplateInput` type. The `name` is
|
|
4
|
+
* the `vars.<name>` key the template body references.
|
|
5
|
+
*/
|
|
6
|
+
export declare const TemplateInputSchema: z.ZodObject<{
|
|
7
|
+
name: z.ZodString;
|
|
8
|
+
label: z.ZodOptional<z.ZodString>;
|
|
9
|
+
description: z.ZodOptional<z.ZodString>;
|
|
10
|
+
type: z.ZodEnum<{
|
|
11
|
+
boolean: "boolean";
|
|
12
|
+
number: "number";
|
|
13
|
+
string: "string";
|
|
14
|
+
}>;
|
|
15
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
16
|
+
default: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
|
|
17
|
+
options: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
18
|
+
}, z.core.$strip>;
|
|
19
|
+
/** Pipeline-template list filter (query params). */
|
|
20
|
+
export declare const PipelineTemplateFilterSchema: z.ZodObject<{
|
|
21
|
+
id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodString]>>;
|
|
22
|
+
isActive: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodPipe<z.ZodEnum<{
|
|
23
|
+
false: "false";
|
|
24
|
+
true: "true";
|
|
25
|
+
}>, z.ZodTransform<boolean, "false" | "true">>, z.ZodPipe<z.ZodString, z.ZodTransform<boolean, string>>]>>;
|
|
26
|
+
isDefault: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodPipe<z.ZodEnum<{
|
|
27
|
+
false: "false";
|
|
28
|
+
true: "true";
|
|
29
|
+
}>, z.ZodTransform<boolean, "false" | "true">>, z.ZodPipe<z.ZodString, z.ZodTransform<boolean, string>>]>>;
|
|
30
|
+
ownerId: z.ZodOptional<z.ZodString>;
|
|
31
|
+
lifecycle: z.ZodOptional<z.ZodEnum<{
|
|
32
|
+
deprecated: "deprecated";
|
|
33
|
+
experimental: "experimental";
|
|
34
|
+
production: "production";
|
|
35
|
+
}>>;
|
|
36
|
+
name: z.ZodOptional<z.ZodString>;
|
|
37
|
+
category: z.ZodOptional<z.ZodString>;
|
|
38
|
+
keyword: z.ZodOptional<z.ZodString>;
|
|
39
|
+
orgId: z.ZodOptional<z.ZodString>;
|
|
40
|
+
visibility: z.ZodOptional<z.ZodEnum<{
|
|
41
|
+
org: "org";
|
|
42
|
+
private: "private";
|
|
43
|
+
public: "public";
|
|
44
|
+
}>>;
|
|
45
|
+
}, z.core.$strip>;
|
|
46
|
+
/** Create a pipeline template (author a golden path). */
|
|
47
|
+
export declare const PipelineTemplateCreateSchema: z.ZodObject<{
|
|
48
|
+
ownerId: z.ZodOptional<z.ZodString>;
|
|
49
|
+
ownerType: z.ZodOptional<z.ZodEnum<{
|
|
50
|
+
team: "team";
|
|
51
|
+
user: "user";
|
|
52
|
+
}>>;
|
|
53
|
+
lifecycle: z.ZodOptional<z.ZodEnum<{
|
|
54
|
+
deprecated: "deprecated";
|
|
55
|
+
experimental: "experimental";
|
|
56
|
+
production: "production";
|
|
57
|
+
}>>;
|
|
58
|
+
criticality: z.ZodOptional<z.ZodEnum<{
|
|
59
|
+
critical: "critical";
|
|
60
|
+
high: "high";
|
|
61
|
+
low: "low";
|
|
62
|
+
medium: "medium";
|
|
63
|
+
}>>;
|
|
64
|
+
labels: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
65
|
+
links: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
66
|
+
title: z.ZodString;
|
|
67
|
+
url: z.ZodString;
|
|
68
|
+
icon: z.ZodOptional<z.ZodString>;
|
|
69
|
+
}, z.core.$strip>>>;
|
|
70
|
+
name: z.ZodString;
|
|
71
|
+
description: z.ZodOptional<z.ZodString>;
|
|
72
|
+
keywords: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
73
|
+
category: z.ZodOptional<z.ZodString>;
|
|
74
|
+
visibility: z.ZodOptional<z.ZodEnum<{
|
|
75
|
+
org: "org";
|
|
76
|
+
private: "private";
|
|
77
|
+
public: "public";
|
|
78
|
+
}>>;
|
|
79
|
+
props: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
80
|
+
inputs: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
81
|
+
name: z.ZodString;
|
|
82
|
+
label: z.ZodOptional<z.ZodString>;
|
|
83
|
+
description: z.ZodOptional<z.ZodString>;
|
|
84
|
+
type: z.ZodEnum<{
|
|
85
|
+
boolean: "boolean";
|
|
86
|
+
number: "number";
|
|
87
|
+
string: "string";
|
|
88
|
+
}>;
|
|
89
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
90
|
+
default: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
|
|
91
|
+
options: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
92
|
+
}, z.core.$strip>>>;
|
|
93
|
+
}, z.core.$strip>;
|
|
94
|
+
/** Update a pipeline template. */
|
|
95
|
+
export declare const PipelineTemplateUpdateSchema: z.ZodObject<{
|
|
96
|
+
ownerId: z.ZodOptional<z.ZodString>;
|
|
97
|
+
ownerType: z.ZodOptional<z.ZodEnum<{
|
|
98
|
+
team: "team";
|
|
99
|
+
user: "user";
|
|
100
|
+
}>>;
|
|
101
|
+
lifecycle: z.ZodOptional<z.ZodEnum<{
|
|
102
|
+
deprecated: "deprecated";
|
|
103
|
+
experimental: "experimental";
|
|
104
|
+
production: "production";
|
|
105
|
+
}>>;
|
|
106
|
+
criticality: z.ZodOptional<z.ZodEnum<{
|
|
107
|
+
critical: "critical";
|
|
108
|
+
high: "high";
|
|
109
|
+
low: "low";
|
|
110
|
+
medium: "medium";
|
|
111
|
+
}>>;
|
|
112
|
+
labels: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
113
|
+
links: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
114
|
+
title: z.ZodString;
|
|
115
|
+
url: z.ZodString;
|
|
116
|
+
icon: z.ZodOptional<z.ZodString>;
|
|
117
|
+
}, z.core.$strip>>>;
|
|
118
|
+
name: z.ZodOptional<z.ZodString>;
|
|
119
|
+
description: z.ZodOptional<z.ZodString>;
|
|
120
|
+
keywords: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
121
|
+
category: z.ZodOptional<z.ZodString>;
|
|
122
|
+
visibility: z.ZodOptional<z.ZodEnum<{
|
|
123
|
+
org: "org";
|
|
124
|
+
private: "private";
|
|
125
|
+
public: "public";
|
|
126
|
+
}>>;
|
|
127
|
+
props: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
128
|
+
inputs: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
129
|
+
name: z.ZodString;
|
|
130
|
+
label: z.ZodOptional<z.ZodString>;
|
|
131
|
+
description: z.ZodOptional<z.ZodString>;
|
|
132
|
+
type: z.ZodEnum<{
|
|
133
|
+
boolean: "boolean";
|
|
134
|
+
number: "number";
|
|
135
|
+
string: "string";
|
|
136
|
+
}>;
|
|
137
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
138
|
+
default: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
|
|
139
|
+
options: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
140
|
+
}, z.core.$strip>>>;
|
|
141
|
+
isActive: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodPipe<z.ZodEnum<{
|
|
142
|
+
false: "false";
|
|
143
|
+
true: "true";
|
|
144
|
+
}>, z.ZodTransform<boolean, "false" | "true">>, z.ZodPipe<z.ZodString, z.ZodTransform<boolean, string>>]>>;
|
|
145
|
+
}, z.core.$strip>;
|
|
146
|
+
/**
|
|
147
|
+
* Instantiate a template into a concrete pipeline config. `inputs` supplies the
|
|
148
|
+
* declared `vars.*` values; project/organization/pipelineName name the pipeline.
|
|
149
|
+
*/
|
|
150
|
+
export declare const InstantiateTemplateSchema: z.ZodObject<{
|
|
151
|
+
project: z.ZodString;
|
|
152
|
+
organization: z.ZodString;
|
|
153
|
+
pipelineName: z.ZodOptional<z.ZodString>;
|
|
154
|
+
inputs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
|
|
155
|
+
}, z.core.$strip>;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { BaseFilterSchema, BooleanQuerySchema, CatalogMetadataShape, VisibilitySchema } from './common-schemas.js';
|
|
5
|
+
/**
|
|
6
|
+
* One declared template input — mirrors the `TemplateInput` type. The `name` is
|
|
7
|
+
* the `vars.<name>` key the template body references.
|
|
8
|
+
*/
|
|
9
|
+
export const TemplateInputSchema = z.object({
|
|
10
|
+
// Identifier only — becomes a `vars.<name>` key. Excludes prototype-pollution
|
|
11
|
+
// keys and anything that isn't a plain identifier.
|
|
12
|
+
name: z.string().min(1).max(64)
|
|
13
|
+
.regex(/^[A-Za-z_][A-Za-z0-9_]*$/, 'input name must be a valid identifier')
|
|
14
|
+
.refine((n) => !['__proto__', 'constructor', 'prototype'].includes(n), 'reserved input name'),
|
|
15
|
+
label: z.string().max(120).optional(),
|
|
16
|
+
description: z.string().max(500).optional(),
|
|
17
|
+
type: z.enum(['string', 'number', 'boolean']),
|
|
18
|
+
required: z.boolean().optional(),
|
|
19
|
+
default: z.union([z.string(), z.number(), z.boolean()]).optional(),
|
|
20
|
+
options: z.array(z.string().max(255)).max(50).optional(),
|
|
21
|
+
});
|
|
22
|
+
/** Pipeline-template list filter (query params). */
|
|
23
|
+
export const PipelineTemplateFilterSchema = BaseFilterSchema.extend({
|
|
24
|
+
name: z.string().min(1).optional(),
|
|
25
|
+
category: z.string().min(1).optional(),
|
|
26
|
+
keyword: z.string().min(1).optional(),
|
|
27
|
+
orgId: z.string().min(1).optional(),
|
|
28
|
+
visibility: VisibilitySchema.optional(),
|
|
29
|
+
});
|
|
30
|
+
/** Create a pipeline template (author a golden path). */
|
|
31
|
+
export const PipelineTemplateCreateSchema = z.object({
|
|
32
|
+
...CatalogMetadataShape,
|
|
33
|
+
// Bounded to the DB column widths so an over-length value is a clean 400,
|
|
34
|
+
// not a Postgres length error surfaced as a 500.
|
|
35
|
+
name: z.string().min(1, 'Template name is required').max(255),
|
|
36
|
+
description: z.string().max(2000).optional(),
|
|
37
|
+
keywords: z.array(z.string().max(64)).max(50).optional(),
|
|
38
|
+
category: z.string().min(1).max(50).optional(),
|
|
39
|
+
visibility: VisibilitySchema.optional(),
|
|
40
|
+
// Template body: a BuilderProps with `{{ vars.* }}` placeholders.
|
|
41
|
+
props: z.record(z.string(), z.unknown()),
|
|
42
|
+
inputs: z.array(TemplateInputSchema).max(100).optional(),
|
|
43
|
+
});
|
|
44
|
+
/** Update a pipeline template. */
|
|
45
|
+
export const PipelineTemplateUpdateSchema = z.object({
|
|
46
|
+
...CatalogMetadataShape,
|
|
47
|
+
name: z.string().min(1).max(255).optional(),
|
|
48
|
+
description: z.string().max(2000).optional(),
|
|
49
|
+
keywords: z.array(z.string().max(64)).max(50).optional(),
|
|
50
|
+
category: z.string().min(1).max(50).optional(),
|
|
51
|
+
visibility: VisibilitySchema.optional(),
|
|
52
|
+
props: z.record(z.string(), z.unknown()).optional(),
|
|
53
|
+
inputs: z.array(TemplateInputSchema).max(100).optional(),
|
|
54
|
+
isActive: BooleanQuerySchema.optional(),
|
|
55
|
+
});
|
|
56
|
+
/**
|
|
57
|
+
* Instantiate a template into a concrete pipeline config. `inputs` supplies the
|
|
58
|
+
* declared `vars.*` values; project/organization/pipelineName name the pipeline.
|
|
59
|
+
*/
|
|
60
|
+
export const InstantiateTemplateSchema = z.object({
|
|
61
|
+
project: z.string().min(1, 'Project is required'),
|
|
62
|
+
organization: z.string().min(1, 'Organization is required'),
|
|
63
|
+
pipelineName: z.string().min(1).optional(),
|
|
64
|
+
inputs: z.record(z.string(), z.union([z.string(), z.number(), z.boolean()])).optional(),
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtdGVtcGxhdGUtc2NoZW1hcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWxpZGF0aW9uL3BpcGVsaW5lLXRlbXBsYXRlLXNjaGVtYXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5IOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDMUMsOEVBQThFO0lBQzlFLG1EQUFtRDtJQUNuRCxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1NBQzVCLEtBQUssQ0FBQywwQkFBMEIsRUFBRSx1Q0FBdUMsQ0FBQztTQUMxRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxxQkFBcUIsQ0FBQztJQUMvRixLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDckMsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQzNDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM3QyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNoQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDbEUsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7Q0FDekQsQ0FBQyxDQUFDO0FBRUgsb0RBQW9EO0FBQ3BELE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztJQUNsRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDbEMsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQ3RDLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUNyQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDbkMsVUFBVSxFQUFFLGdCQUFnQixDQUFDLFFBQVEsRUFBRTtDQUN4QyxDQUFDLENBQUM7QUFFSCx5REFBeUQ7QUFDekQsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNuRCxHQUFHLG9CQUFvQjtJQUN2QiwwRUFBMEU7SUFDMUUsaURBQWlEO0lBQ2pELElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDN0QsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQzVDLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQ3hELFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDOUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDLFFBQVEsRUFBRTtJQUN2QyxrRUFBa0U7SUFDbEUsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUU7Q0FDekQsQ0FBQyxDQUFDO0FBRUgsa0NBQWtDO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDbkQsR0FBRyxvQkFBb0I7SUFDdkIsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUMzQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDNUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDeEQsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUM5QyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxFQUFFO0lBQ3ZDLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDbkQsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQ3hELFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUU7Q0FDeEMsQ0FBQyxDQUFDO0FBRUg7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNoRCxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUscUJBQXFCLENBQUM7SUFDakQsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLDBCQUEwQixDQUFDO0lBQzNELFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUMxQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtDQUN4RixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5pbXBvcnQgeyBCYXNlRmlsdGVyU2NoZW1hLCBCb29sZWFuUXVlcnlTY2hlbWEsIENhdGFsb2dNZXRhZGF0YVNoYXBlLCBWaXNpYmlsaXR5U2NoZW1hIH0gZnJvbSAnLi9jb21tb24tc2NoZW1hcy5qcyc7XG5cbi8qKlxuICogT25lIGRlY2xhcmVkIHRlbXBsYXRlIGlucHV0IOKAlCBtaXJyb3JzIHRoZSBgVGVtcGxhdGVJbnB1dGAgdHlwZS4gVGhlIGBuYW1lYCBpc1xuICogdGhlIGB2YXJzLjxuYW1lPmAga2V5IHRoZSB0ZW1wbGF0ZSBib2R5IHJlZmVyZW5jZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBUZW1wbGF0ZUlucHV0U2NoZW1hID0gei5vYmplY3Qoe1xuICAvLyBJZGVudGlmaWVyIG9ubHkg4oCUIGJlY29tZXMgYSBgdmFycy48bmFtZT5gIGtleS4gRXhjbHVkZXMgcHJvdG90eXBlLXBvbGx1dGlvblxuICAvLyBrZXlzIGFuZCBhbnl0aGluZyB0aGF0IGlzbid0IGEgcGxhaW4gaWRlbnRpZmllci5cbiAgbmFtZTogei5zdHJpbmcoKS5taW4oMSkubWF4KDY0KVxuICAgIC5yZWdleCgvXltBLVphLXpfXVtBLVphLXowLTlfXSokLywgJ2lucHV0IG5hbWUgbXVzdCBiZSBhIHZhbGlkIGlkZW50aWZpZXInKVxuICAgIC5yZWZpbmUoKG4pID0+ICFbJ19fcHJvdG9fXycsICdjb25zdHJ1Y3RvcicsICdwcm90b3R5cGUnXS5pbmNsdWRlcyhuKSwgJ3Jlc2VydmVkIGlucHV0IG5hbWUnKSxcbiAgbGFiZWw6IHouc3RyaW5nKCkubWF4KDEyMCkub3B0aW9uYWwoKSxcbiAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkubWF4KDUwMCkub3B0aW9uYWwoKSxcbiAgdHlwZTogei5lbnVtKFsnc3RyaW5nJywgJ251bWJlcicsICdib29sZWFuJ10pLFxuICByZXF1aXJlZDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgZGVmYXVsdDogei51bmlvbihbei5zdHJpbmcoKSwgei5udW1iZXIoKSwgei5ib29sZWFuKCldKS5vcHRpb25hbCgpLFxuICBvcHRpb25zOiB6LmFycmF5KHouc3RyaW5nKCkubWF4KDI1NSkpLm1heCg1MCkub3B0aW9uYWwoKSxcbn0pO1xuXG4vKiogUGlwZWxpbmUtdGVtcGxhdGUgbGlzdCBmaWx0ZXIgKHF1ZXJ5IHBhcmFtcykuICovXG5leHBvcnQgY29uc3QgUGlwZWxpbmVUZW1wbGF0ZUZpbHRlclNjaGVtYSA9IEJhc2VGaWx0ZXJTY2hlbWEuZXh0ZW5kKHtcbiAgbmFtZTogei5zdHJpbmcoKS5taW4oMSkub3B0aW9uYWwoKSxcbiAgY2F0ZWdvcnk6IHouc3RyaW5nKCkubWluKDEpLm9wdGlvbmFsKCksXG4gIGtleXdvcmQ6IHouc3RyaW5nKCkubWluKDEpLm9wdGlvbmFsKCksXG4gIG9yZ0lkOiB6LnN0cmluZygpLm1pbigxKS5vcHRpb25hbCgpLFxuICB2aXNpYmlsaXR5OiBWaXNpYmlsaXR5U2NoZW1hLm9wdGlvbmFsKCksXG59KTtcblxuLyoqIENyZWF0ZSBhIHBpcGVsaW5lIHRlbXBsYXRlIChhdXRob3IgYSBnb2xkZW4gcGF0aCkuICovXG5leHBvcnQgY29uc3QgUGlwZWxpbmVUZW1wbGF0ZUNyZWF0ZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgLi4uQ2F0YWxvZ01ldGFkYXRhU2hhcGUsXG4gIC8vIEJvdW5kZWQgdG8gdGhlIERCIGNvbHVtbiB3aWR0aHMgc28gYW4gb3Zlci1sZW5ndGggdmFsdWUgaXMgYSBjbGVhbiA0MDAsXG4gIC8vIG5vdCBhIFBvc3RncmVzIGxlbmd0aCBlcnJvciBzdXJmYWNlZCBhcyBhIDUwMC5cbiAgbmFtZTogei5zdHJpbmcoKS5taW4oMSwgJ1RlbXBsYXRlIG5hbWUgaXMgcmVxdWlyZWQnKS5tYXgoMjU1KSxcbiAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkubWF4KDIwMDApLm9wdGlvbmFsKCksXG4gIGtleXdvcmRzOiB6LmFycmF5KHouc3RyaW5nKCkubWF4KDY0KSkubWF4KDUwKS5vcHRpb25hbCgpLFxuICBjYXRlZ29yeTogei5zdHJpbmcoKS5taW4oMSkubWF4KDUwKS5vcHRpb25hbCgpLFxuICB2aXNpYmlsaXR5OiBWaXNpYmlsaXR5U2NoZW1hLm9wdGlvbmFsKCksXG4gIC8vIFRlbXBsYXRlIGJvZHk6IGEgQnVpbGRlclByb3BzIHdpdGggYHt7IHZhcnMuKiB9fWAgcGxhY2Vob2xkZXJzLlxuICBwcm9wczogei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpLFxuICBpbnB1dHM6IHouYXJyYXkoVGVtcGxhdGVJbnB1dFNjaGVtYSkubWF4KDEwMCkub3B0aW9uYWwoKSxcbn0pO1xuXG4vKiogVXBkYXRlIGEgcGlwZWxpbmUgdGVtcGxhdGUuICovXG5leHBvcnQgY29uc3QgUGlwZWxpbmVUZW1wbGF0ZVVwZGF0ZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgLi4uQ2F0YWxvZ01ldGFkYXRhU2hhcGUsXG4gIG5hbWU6IHouc3RyaW5nKCkubWluKDEpLm1heCgyNTUpLm9wdGlvbmFsKCksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm1heCgyMDAwKS5vcHRpb25hbCgpLFxuICBrZXl3b3Jkczogei5hcnJheSh6LnN0cmluZygpLm1heCg2NCkpLm1heCg1MCkub3B0aW9uYWwoKSxcbiAgY2F0ZWdvcnk6IHouc3RyaW5nKCkubWluKDEpLm1heCg1MCkub3B0aW9uYWwoKSxcbiAgdmlzaWJpbGl0eTogVmlzaWJpbGl0eVNjaGVtYS5vcHRpb25hbCgpLFxuICBwcm9wczogei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpLm9wdGlvbmFsKCksXG4gIGlucHV0czogei5hcnJheShUZW1wbGF0ZUlucHV0U2NoZW1hKS5tYXgoMTAwKS5vcHRpb25hbCgpLFxuICBpc0FjdGl2ZTogQm9vbGVhblF1ZXJ5U2NoZW1hLm9wdGlvbmFsKCksXG59KTtcblxuLyoqXG4gKiBJbnN0YW50aWF0ZSBhIHRlbXBsYXRlIGludG8gYSBjb25jcmV0ZSBwaXBlbGluZSBjb25maWcuIGBpbnB1dHNgIHN1cHBsaWVzIHRoZVxuICogZGVjbGFyZWQgYHZhcnMuKmAgdmFsdWVzOyBwcm9qZWN0L29yZ2FuaXphdGlvbi9waXBlbGluZU5hbWUgbmFtZSB0aGUgcGlwZWxpbmUuXG4gKi9cbmV4cG9ydCBjb25zdCBJbnN0YW50aWF0ZVRlbXBsYXRlU2NoZW1hID0gei5vYmplY3Qoe1xuICBwcm9qZWN0OiB6LnN0cmluZygpLm1pbigxLCAnUHJvamVjdCBpcyByZXF1aXJlZCcpLFxuICBvcmdhbml6YXRpb246IHouc3RyaW5nKCkubWluKDEsICdPcmdhbml6YXRpb24gaXMgcmVxdWlyZWQnKSxcbiAgcGlwZWxpbmVOYW1lOiB6LnN0cmluZygpLm1pbigxKS5vcHRpb25hbCgpLFxuICBpbnB1dHM6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5pb24oW3ouc3RyaW5nKCksIHoubnVtYmVyKCksIHouYm9vbGVhbigpXSkpLm9wdGlvbmFsKCksXG59KTtcbiJdfQ==
|