@paklo/core 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{node/azure.d.ts → azure/index.d.ts} +4 -4
- package/dist/{node/azure.js → azure/index.js} +14 -14
- package/dist/azure/index.js.map +1 -0
- package/dist/{node/dependabot.d.ts → dependabot/index.d.ts} +2 -2
- package/dist/{node/dependabot.js → dependabot/index.js} +4 -4
- package/dist/{node/dependabot-BmHuie46.js → dependabot-B5pw4XDa.js} +2 -2
- package/dist/dependabot-B5pw4XDa.js.map +1 -0
- package/dist/{node/environment.d.ts → environment/index.d.ts} +1 -1
- package/dist/environment/index.js +3 -0
- package/dist/environment-DX5CD-dD.js.map +1 -0
- package/dist/{node/github.d.ts → github/index.d.ts} +1 -1
- package/dist/{node/github.js → github/index.js} +4 -4
- package/dist/github/index.js.map +1 -0
- package/dist/{node/http.d.ts → http/index.d.ts} +8 -8
- package/dist/{node/http.js → http/index.js} +2 -2
- package/dist/{node/http-BG_-s47I.js → http-Be3uWaqn.js} +1 -1
- package/dist/http-Be3uWaqn.js.map +1 -0
- package/dist/{node/index-Dgl6vmM4.d.ts → index-Dr0PB1As.d.ts} +4 -4
- package/dist/{node/job-C8KX68QT.js → job-CxYcRj_D.js} +1 -1
- package/dist/job-CxYcRj_D.js.map +1 -0
- package/dist/logger-bWnHxtAf.js.map +1 -0
- package/dist/{node/shared-data.d.ts → shared-data/index.d.ts} +1 -1
- package/dist/{node/shared-data.js → shared-data/index.js} +1 -1
- package/dist/shared-data/index.js.map +1 -0
- package/dist/{node/usage.d.ts → usage.d.ts} +1 -1
- package/dist/{node/usage.js → usage.js} +1 -1
- package/dist/usage.js.map +1 -0
- package/package.json +28 -33
- package/dist/browser/defineProperty-ie4tC-F5.js +0 -43
- package/dist/browser/environment-DinhzwQn.js +0 -139
- package/dist/browser/environment-DinhzwQn.js.map +0 -1
- package/dist/browser/environment.d.ts +0 -33
- package/dist/browser/environment.js +0 -3
- package/dist/browser/github.d.ts +0 -151
- package/dist/browser/github.js +0 -199
- package/dist/browser/github.js.map +0 -1
- package/dist/browser/http.d.ts +0 -121
- package/dist/browser/http.js +0 -248
- package/dist/browser/http.js.map +0 -1
- package/dist/browser/logger-B7HLv660.js +0 -31
- package/dist/browser/logger-B7HLv660.js.map +0 -1
- package/dist/browser/logger.js +0 -4
- package/dist/browser/shared-data.d.ts +0 -22
- package/dist/browser/shared-data.js +0 -23
- package/dist/browser/shared-data.js.map +0 -1
- package/dist/browser/usage.d.ts +0 -102
- package/dist/browser/usage.js +0 -419
- package/dist/browser/usage.js.map +0 -1
- package/dist/node/azure.js.map +0 -1
- package/dist/node/dependabot-BmHuie46.js.map +0 -1
- package/dist/node/environment-DX5CD-dD.js.map +0 -1
- package/dist/node/environment.js +0 -3
- package/dist/node/github.js.map +0 -1
- package/dist/node/http-BG_-s47I.js.map +0 -1
- package/dist/node/job-C8KX68QT.js.map +0 -1
- package/dist/node/logger-bWnHxtAf.js.map +0 -1
- package/dist/node/logger.d.ts +0 -23
- package/dist/node/shared-data.js.map +0 -1
- package/dist/node/usage.js.map +0 -1
- /package/dist/{node/environment-DX5CD-dD.js → environment-DX5CD-dD.js} +0 -0
- /package/dist/{node/index-3wZw74Ah.d.ts → index-3wZw74Ah.d.ts} +0 -0
- /package/dist/{node/logger-bWnHxtAf.js → logger-bWnHxtAf.js} +0 -0
- /package/dist/{browser/logger.d.ts → logger.d.ts} +0 -0
- /package/dist/{node/logger.js → logger.js} +0 -0
package/dist/browser/usage.js
DELETED
|
@@ -1,419 +0,0 @@
|
|
|
1
|
-
import { z } from "zod/v4";
|
|
2
|
-
import "js-yaml";
|
|
3
|
-
|
|
4
|
-
//#region src/dependabot/config.ts
|
|
5
|
-
const DependabotRegistrySchema = z.object({
|
|
6
|
-
type: z.enum([
|
|
7
|
-
"cargo-registry",
|
|
8
|
-
"composer-repository",
|
|
9
|
-
"docker-registry",
|
|
10
|
-
"git",
|
|
11
|
-
"goproxy-server",
|
|
12
|
-
"helm-registry",
|
|
13
|
-
"hex-organization",
|
|
14
|
-
"hex-repository",
|
|
15
|
-
"maven-repository",
|
|
16
|
-
"npm-registry",
|
|
17
|
-
"nuget-feed",
|
|
18
|
-
"pub-repository",
|
|
19
|
-
"python-index",
|
|
20
|
-
"rubygems-server",
|
|
21
|
-
"terraform-registry"
|
|
22
|
-
]),
|
|
23
|
-
url: z.string().optional(),
|
|
24
|
-
username: z.string().optional(),
|
|
25
|
-
password: z.string().optional(),
|
|
26
|
-
key: z.string().optional(),
|
|
27
|
-
token: z.string().optional(),
|
|
28
|
-
"replaces-base": z.boolean().optional(),
|
|
29
|
-
host: z.string().optional(),
|
|
30
|
-
registry: z.string().optional(),
|
|
31
|
-
organization: z.string().optional(),
|
|
32
|
-
repo: z.string().optional(),
|
|
33
|
-
"public-key-fingerprint": z.string().optional(),
|
|
34
|
-
"index-url": z.string().optional(),
|
|
35
|
-
"auth-key": z.string().optional(),
|
|
36
|
-
"tenant-id": z.string().optional(),
|
|
37
|
-
"client-id": z.string().optional()
|
|
38
|
-
}).transform((value) => ({
|
|
39
|
-
...value,
|
|
40
|
-
type: value.type.replace("-", "_")
|
|
41
|
-
}));
|
|
42
|
-
const DependabotGroupSchema = z.object({
|
|
43
|
-
IDENTIFIER: z.string().check(z.regex(/^[a-zA-Z][a-zA-Z0-9|_-]*[a-zA-Z]$/, { message: "Group identifier must start and end with a letter, and can contain letters, pipes |, underscores _, or hyphens -." })).optional(),
|
|
44
|
-
"applies-to": z.enum(["version-updates", "security-updates"]).optional(),
|
|
45
|
-
"dependency-type": z.enum(["development", "production"]).optional(),
|
|
46
|
-
patterns: z.string().array().optional(),
|
|
47
|
-
"exclude-patterns": z.string().array().optional(),
|
|
48
|
-
"update-types": z.enum([
|
|
49
|
-
"major",
|
|
50
|
-
"minor",
|
|
51
|
-
"patch"
|
|
52
|
-
]).array().optional()
|
|
53
|
-
});
|
|
54
|
-
const DependabotAllowConditionSchema = z.object({
|
|
55
|
-
"dependency-name": z.string().optional(),
|
|
56
|
-
"dependency-type": z.enum([
|
|
57
|
-
"direct",
|
|
58
|
-
"indirect",
|
|
59
|
-
"all",
|
|
60
|
-
"production",
|
|
61
|
-
"development"
|
|
62
|
-
]).optional(),
|
|
63
|
-
"update-type": z.enum(["all", "security"]).optional()
|
|
64
|
-
});
|
|
65
|
-
const DependabotIgnoreConditionSchema = z.object({
|
|
66
|
-
"dependency-name": z.string().optional(),
|
|
67
|
-
versions: z.string().array().or(z.string()).optional(),
|
|
68
|
-
"update-types": z.enum([
|
|
69
|
-
"version-update:semver-major",
|
|
70
|
-
"version-update:semver-minor",
|
|
71
|
-
"version-update:semver-patch"
|
|
72
|
-
]).array().optional()
|
|
73
|
-
}).and(z.record(z.string(), z.any()));
|
|
74
|
-
const DependabotScheduleSchema = z.object({
|
|
75
|
-
interval: z.enum([
|
|
76
|
-
"daily",
|
|
77
|
-
"weekly",
|
|
78
|
-
"monthly",
|
|
79
|
-
"quarterly",
|
|
80
|
-
"semiannually",
|
|
81
|
-
"yearly",
|
|
82
|
-
"cron"
|
|
83
|
-
]),
|
|
84
|
-
day: z.enum([
|
|
85
|
-
"sunday",
|
|
86
|
-
"monday",
|
|
87
|
-
"tuesday",
|
|
88
|
-
"wednesday",
|
|
89
|
-
"thursday",
|
|
90
|
-
"friday",
|
|
91
|
-
"saturday"
|
|
92
|
-
]).optional().default("monday"),
|
|
93
|
-
time: z.string().default("02:00").check(z.regex(/^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/, { message: "Time must be in HH:MM format" })).optional(),
|
|
94
|
-
timezone: z.string().optional().default("Etc/UTC").refine((value) => {
|
|
95
|
-
try {
|
|
96
|
-
Intl.DateTimeFormat(void 0, { timeZone: value });
|
|
97
|
-
return true;
|
|
98
|
-
} catch {
|
|
99
|
-
return false;
|
|
100
|
-
}
|
|
101
|
-
}, { message: "Invalid IANA time zone" }),
|
|
102
|
-
cronjob: z.string().check(z.regex(/^\S+ \S+ \S+ \S+ \S+$/, { message: "Cronjob must be in standard cron format" })).optional()
|
|
103
|
-
});
|
|
104
|
-
const DependabotCommitMessageSchema = z.object({
|
|
105
|
-
prefix: z.string().optional(),
|
|
106
|
-
"prefix-development": z.string().optional(),
|
|
107
|
-
include: z.string().optional()
|
|
108
|
-
});
|
|
109
|
-
const DependabotCooldownSchema = z.object({
|
|
110
|
-
"default-days": z.number().optional(),
|
|
111
|
-
"semver-major-days": z.number().optional(),
|
|
112
|
-
"semver-minor-days": z.number().optional(),
|
|
113
|
-
"semver-patch-days": z.number().optional(),
|
|
114
|
-
include: z.string().array().optional(),
|
|
115
|
-
exclude: z.string().array().optional()
|
|
116
|
-
});
|
|
117
|
-
const DependabotPullRequestBranchNameSchema = z.object({ separator: z.string().optional() });
|
|
118
|
-
const PackageEcosystemSchema = z.enum([
|
|
119
|
-
"bun",
|
|
120
|
-
"bundler",
|
|
121
|
-
"cargo",
|
|
122
|
-
"composer",
|
|
123
|
-
"devcontainers",
|
|
124
|
-
"docker",
|
|
125
|
-
"docker-compose",
|
|
126
|
-
"dotnet-sdk",
|
|
127
|
-
"helm",
|
|
128
|
-
"mix",
|
|
129
|
-
"elm",
|
|
130
|
-
"gitsubmodule",
|
|
131
|
-
"github-actions",
|
|
132
|
-
"gomod",
|
|
133
|
-
"gradle",
|
|
134
|
-
"julia",
|
|
135
|
-
"maven",
|
|
136
|
-
"npm",
|
|
137
|
-
"nuget",
|
|
138
|
-
"pip",
|
|
139
|
-
"pip-compile",
|
|
140
|
-
"pipenv",
|
|
141
|
-
"pnpm",
|
|
142
|
-
"poetry",
|
|
143
|
-
"pub",
|
|
144
|
-
"rust-toolchain",
|
|
145
|
-
"swift",
|
|
146
|
-
"terraform",
|
|
147
|
-
"uv",
|
|
148
|
-
"vcpkg",
|
|
149
|
-
"yarn"
|
|
150
|
-
]);
|
|
151
|
-
const VersioningStrategySchema = z.enum([
|
|
152
|
-
"auto",
|
|
153
|
-
"increase",
|
|
154
|
-
"increase-if-necessary",
|
|
155
|
-
"lockfile-only",
|
|
156
|
-
"widen"
|
|
157
|
-
]);
|
|
158
|
-
const DependabotUpdateSchema = z.object({
|
|
159
|
-
"package-ecosystem": PackageEcosystemSchema,
|
|
160
|
-
directory: z.string().optional(),
|
|
161
|
-
directories: z.string().array().optional(),
|
|
162
|
-
"exclude-paths": z.string().array().optional(),
|
|
163
|
-
allow: DependabotAllowConditionSchema.array().optional(),
|
|
164
|
-
assignees: z.string().array().optional(),
|
|
165
|
-
"commit-message": DependabotCommitMessageSchema.optional(),
|
|
166
|
-
cooldown: DependabotCooldownSchema.optional(),
|
|
167
|
-
groups: z.record(z.string(), DependabotGroupSchema).optional(),
|
|
168
|
-
ignore: DependabotIgnoreConditionSchema.array().optional(),
|
|
169
|
-
"insecure-external-code-execution": z.enum(["allow", "deny"]).optional(),
|
|
170
|
-
labels: z.string().array().optional(),
|
|
171
|
-
milestone: z.coerce.string().optional(),
|
|
172
|
-
"open-pull-requests-limit": z.number().check(z.int(), z.gte(0)).optional(),
|
|
173
|
-
"pull-request-branch-name": DependabotPullRequestBranchNameSchema.optional(),
|
|
174
|
-
"rebase-strategy": z.string().optional(),
|
|
175
|
-
registries: z.string().array().optional(),
|
|
176
|
-
schedule: DependabotScheduleSchema.optional(),
|
|
177
|
-
"target-branch": z.string().optional(),
|
|
178
|
-
vendor: z.boolean().optional(),
|
|
179
|
-
"versioning-strategy": VersioningStrategySchema.optional(),
|
|
180
|
-
patterns: z.string().array().optional(),
|
|
181
|
-
"multi-ecosystem-group": z.string().optional()
|
|
182
|
-
}).transform((value, { addIssue }) => {
|
|
183
|
-
if (!value.directory && (!value.directories || value.directories.length === 0)) addIssue("Either 'directory' or 'directories' must be specified in the dependency update configuration.");
|
|
184
|
-
if (value.directory && /[*?[\]{}]/.test(value.directory)) addIssue("The 'directory' field must not include glob pattern.");
|
|
185
|
-
value["open-pull-requests-limit"] ?? (value["open-pull-requests-limit"] = 5);
|
|
186
|
-
if (value["multi-ecosystem-group"] && (!value.patterns || value.patterns.length === 0)) addIssue("The 'patterns' field must be specified and contain at least one pattern when using 'multi-ecosystem-group'.");
|
|
187
|
-
return value;
|
|
188
|
-
});
|
|
189
|
-
const DependabotMultiEcosystemGroupSchema = z.object({
|
|
190
|
-
schedule: DependabotScheduleSchema,
|
|
191
|
-
labels: z.string().array().optional(),
|
|
192
|
-
milestone: z.coerce.string().optional(),
|
|
193
|
-
assignees: z.string().array().optional(),
|
|
194
|
-
"target-branch": z.string().optional(),
|
|
195
|
-
"commit-message": DependabotCommitMessageSchema.optional(),
|
|
196
|
-
"pull-request-branch-name": DependabotPullRequestBranchNameSchema.optional()
|
|
197
|
-
});
|
|
198
|
-
/**
|
|
199
|
-
* Represents the dependabot.yaml configuration file options.
|
|
200
|
-
* See: https://docs.github.com/en/github/administering-a-repository/configuration-options-for-dependency-updates#configuration-options-for-dependabotyml
|
|
201
|
-
*/
|
|
202
|
-
const DependabotConfigSchema = z.object({
|
|
203
|
-
version: z.number().refine((v) => v === 2, { message: "Only version 2 of dependabot is supported" }),
|
|
204
|
-
"multi-ecosystem-groups": z.record(z.string(), DependabotMultiEcosystemGroupSchema).optional(),
|
|
205
|
-
updates: DependabotUpdateSchema.array().check(z.minLength(1, { message: "At least one update configuration is required" })),
|
|
206
|
-
registries: z.record(z.string(), DependabotRegistrySchema).optional(),
|
|
207
|
-
"enable-beta-ecosystems": z.boolean().optional()
|
|
208
|
-
}).transform((value, { addIssue }) => {
|
|
209
|
-
const groupOnlyKeys = [
|
|
210
|
-
"milestone",
|
|
211
|
-
"target-branch",
|
|
212
|
-
"commit-message",
|
|
213
|
-
"pull-request-branch-name"
|
|
214
|
-
];
|
|
215
|
-
if (value["multi-ecosystem-groups"]) {
|
|
216
|
-
for (const update of value.updates) for (const key of groupOnlyKeys) if (key in update) addIssue(`The '${key}' field must not be specified in the 'updates' section when using 'multi-ecosystem-groups'. It is a group-only field.`);
|
|
217
|
-
}
|
|
218
|
-
return value;
|
|
219
|
-
});
|
|
220
|
-
|
|
221
|
-
//#endregion
|
|
222
|
-
//#region src/dependabot/job.ts
|
|
223
|
-
const DependabotCredentialSchema = z.record(z.string(), z.any());
|
|
224
|
-
const CertificateAuthoritySchema = z.object({
|
|
225
|
-
cert: z.string(),
|
|
226
|
-
key: z.string()
|
|
227
|
-
});
|
|
228
|
-
const DependabotProxyConfigSchema = z.object({
|
|
229
|
-
all_credentials: DependabotCredentialSchema.array(),
|
|
230
|
-
ca: CertificateAuthoritySchema
|
|
231
|
-
});
|
|
232
|
-
const DependabotSourceProviderSchema = z.enum(["azure"]);
|
|
233
|
-
const DependabotSourceSchema = z.object({
|
|
234
|
-
provider: DependabotSourceProviderSchema,
|
|
235
|
-
repo: z.string(),
|
|
236
|
-
directory: z.string().nullish(),
|
|
237
|
-
directories: z.string().array().nullish(),
|
|
238
|
-
branch: z.string().nullish(),
|
|
239
|
-
commit: z.string().nullish(),
|
|
240
|
-
hostname: z.string().nullish(),
|
|
241
|
-
"api-endpoint": z.string().nullish()
|
|
242
|
-
});
|
|
243
|
-
const DependabotExistingPRSchema = z.object({
|
|
244
|
-
"dependency-name": z.string(),
|
|
245
|
-
"dependency-version": z.string().nullish(),
|
|
246
|
-
directory: z.string().nullish(),
|
|
247
|
-
removed: z.boolean().nullish()
|
|
248
|
-
});
|
|
249
|
-
const DependabotExistingGroupPRSchema = z.object({
|
|
250
|
-
"dependency-group-name": z.string(),
|
|
251
|
-
dependencies: DependabotExistingPRSchema.array()
|
|
252
|
-
});
|
|
253
|
-
const DependabotAllowedSchema = z.object({
|
|
254
|
-
"dependency-name": z.string().nullish(),
|
|
255
|
-
"dependency-type": z.string().nullish(),
|
|
256
|
-
"update-type": z.enum(["all", "security"]).optional()
|
|
257
|
-
});
|
|
258
|
-
const DependabotGroupRuleJobSchema = z.object({
|
|
259
|
-
patterns: z.string().array().nullish(),
|
|
260
|
-
"exclude-patterns": z.string().array().nullish(),
|
|
261
|
-
"dependency-type": z.string().nullish(),
|
|
262
|
-
"update-types": z.string().array().nullish()
|
|
263
|
-
});
|
|
264
|
-
const DependabotGroupJobSchema = z.object({
|
|
265
|
-
name: z.string(),
|
|
266
|
-
"applies-to": z.string().nullish(),
|
|
267
|
-
rules: DependabotGroupRuleJobSchema
|
|
268
|
-
});
|
|
269
|
-
const DependabotConditionSchema = z.object({
|
|
270
|
-
"dependency-name": z.string(),
|
|
271
|
-
source: z.string().nullish(),
|
|
272
|
-
"update-types": z.string().array().nullish(),
|
|
273
|
-
"updated-at": z.coerce.string().nullish(),
|
|
274
|
-
"version-requirement": z.string().nullish()
|
|
275
|
-
});
|
|
276
|
-
const DependabotSecurityAdvisorySchema = z.object({
|
|
277
|
-
"dependency-name": z.string(),
|
|
278
|
-
"affected-versions": z.string().array(),
|
|
279
|
-
"patched-versions": z.string().array().nullish(),
|
|
280
|
-
"unaffected-versions": z.string().array()
|
|
281
|
-
});
|
|
282
|
-
const DependabotRequirementSourceSchema = z.record(z.string(), z.any());
|
|
283
|
-
const DependabotRequirementSchema = z.object({
|
|
284
|
-
file: z.string().nullish(),
|
|
285
|
-
groups: z.string().array().nullish(),
|
|
286
|
-
metadata: z.record(z.string(), z.any()).nullish(),
|
|
287
|
-
requirement: z.string().nullish(),
|
|
288
|
-
source: DependabotRequirementSourceSchema.nullish(),
|
|
289
|
-
version: z.string().nullish(),
|
|
290
|
-
"previous-version": z.string().nullish()
|
|
291
|
-
});
|
|
292
|
-
const DependabotDependencySchema = z.object({
|
|
293
|
-
name: z.string(),
|
|
294
|
-
"previous-requirements": DependabotRequirementSchema.array().nullish(),
|
|
295
|
-
"previous-version": z.string().nullish(),
|
|
296
|
-
version: z.string().nullish(),
|
|
297
|
-
requirements: DependabotRequirementSchema.array().nullish(),
|
|
298
|
-
removed: z.boolean().nullish(),
|
|
299
|
-
directory: z.string().nullish()
|
|
300
|
-
});
|
|
301
|
-
const DependabotCommitOptionsSchema = z.object({
|
|
302
|
-
prefix: z.string().nullish(),
|
|
303
|
-
"prefix-development": z.string().nullish(),
|
|
304
|
-
"include-scope": z.boolean().nullish()
|
|
305
|
-
});
|
|
306
|
-
const DependabotExperimentsSchema = z.record(z.string(), z.union([z.string(), z.boolean()]));
|
|
307
|
-
const DependabotPackageManagerSchema = z.enum([
|
|
308
|
-
"bundler",
|
|
309
|
-
"cargo",
|
|
310
|
-
"composer",
|
|
311
|
-
"pub",
|
|
312
|
-
"docker",
|
|
313
|
-
"elm",
|
|
314
|
-
"github_actions",
|
|
315
|
-
"submodules",
|
|
316
|
-
"go_modules",
|
|
317
|
-
"gradle",
|
|
318
|
-
"maven",
|
|
319
|
-
"hex",
|
|
320
|
-
"nuget",
|
|
321
|
-
"npm_and_yarn",
|
|
322
|
-
"pip",
|
|
323
|
-
"rust_toolchain",
|
|
324
|
-
"swift",
|
|
325
|
-
"terraform",
|
|
326
|
-
"devcontainers",
|
|
327
|
-
"dotnet_sdk",
|
|
328
|
-
"bun",
|
|
329
|
-
"docker_compose",
|
|
330
|
-
"uv",
|
|
331
|
-
"vcpkg",
|
|
332
|
-
"helm",
|
|
333
|
-
"julia"
|
|
334
|
-
]);
|
|
335
|
-
const DependabotCommandSchema = z.enum([
|
|
336
|
-
"graph",
|
|
337
|
-
"version",
|
|
338
|
-
"recreate"
|
|
339
|
-
]);
|
|
340
|
-
const DependabotJobConfigSchema = z.object({
|
|
341
|
-
id: z.number().optional(),
|
|
342
|
-
command: DependabotCommandSchema.optional(),
|
|
343
|
-
"package-manager": DependabotPackageManagerSchema,
|
|
344
|
-
"allowed-updates": DependabotAllowedSchema.array(),
|
|
345
|
-
debug: z.boolean().nullable(),
|
|
346
|
-
"dependency-groups": DependabotGroupJobSchema.array().nullish(),
|
|
347
|
-
dependencies: z.string().array().nullable(),
|
|
348
|
-
"dependency-group-to-refresh": z.string().nullish(),
|
|
349
|
-
"existing-pull-requests": DependabotExistingPRSchema.array().array(),
|
|
350
|
-
"existing-group-pull-requests": DependabotExistingGroupPRSchema.array(),
|
|
351
|
-
experiments: DependabotExperimentsSchema,
|
|
352
|
-
"ignore-conditions": DependabotConditionSchema.array(),
|
|
353
|
-
"lockfile-only": z.boolean(),
|
|
354
|
-
"requirements-update-strategy": z.string().nullable(),
|
|
355
|
-
"security-advisories": DependabotSecurityAdvisorySchema.array(),
|
|
356
|
-
"security-updates-only": z.boolean(),
|
|
357
|
-
source: DependabotSourceSchema,
|
|
358
|
-
"update-subdependencies": z.boolean(),
|
|
359
|
-
"updating-a-pull-request": z.boolean(),
|
|
360
|
-
"vendor-dependencies": z.boolean(),
|
|
361
|
-
"reject-external-code": z.boolean().nullish(),
|
|
362
|
-
"repo-private": z.boolean(),
|
|
363
|
-
"commit-message-options": DependabotCommitOptionsSchema,
|
|
364
|
-
"credentials-metadata": DependabotCredentialSchema.array().nullish(),
|
|
365
|
-
"max-updater-run-time": z.int().nullish(),
|
|
366
|
-
cooldown: DependabotCooldownSchema.nullish(),
|
|
367
|
-
"proxy-log-response-body-on-auth-failure": z.boolean().nullish(),
|
|
368
|
-
"enable-beta-ecosystems": z.boolean().nullish(),
|
|
369
|
-
"multi-ecosystem-update": z.boolean().nullish(),
|
|
370
|
-
"exclude-paths": z.string().array().optional()
|
|
371
|
-
});
|
|
372
|
-
const DependabotJobFileSchema = z.object({ job: DependabotJobConfigSchema });
|
|
373
|
-
|
|
374
|
-
//#endregion
|
|
375
|
-
//#region src/usage.ts
|
|
376
|
-
/**
|
|
377
|
-
* @example
|
|
378
|
-
* ```json
|
|
379
|
-
* {
|
|
380
|
-
* "host": {
|
|
381
|
-
* "platform": "darwin",
|
|
382
|
-
* "os": "25.0.0",
|
|
383
|
-
* "arch": "arm64",
|
|
384
|
-
* "machine-hash": "d3bbb66be2ad9dfab10af69b450f7e7e814ef7bbf1277a6d0df9e1db44ba4f5c"
|
|
385
|
-
* },
|
|
386
|
-
* "trigger": "user",
|
|
387
|
-
* "provider": "azure",
|
|
388
|
-
* "owner": "https://dev.azure.com/tingle/",
|
|
389
|
-
* "package-manager": "terraform",
|
|
390
|
-
* "version": "0.9.0",
|
|
391
|
-
* "id": 2850677077,
|
|
392
|
-
* "started": "2025-10-03T14:44:00.191Z",
|
|
393
|
-
* "duration": 31812,
|
|
394
|
-
* "success": true
|
|
395
|
-
* }
|
|
396
|
-
* ```
|
|
397
|
-
*/
|
|
398
|
-
const UsageTelemetryRequestDataSchema = z.object({
|
|
399
|
-
host: z.object({
|
|
400
|
-
platform: z.string().max(50),
|
|
401
|
-
release: z.string().max(100),
|
|
402
|
-
arch: z.string().max(50),
|
|
403
|
-
"machine-hash": z.string().max(250)
|
|
404
|
-
}),
|
|
405
|
-
version: z.string().max(50),
|
|
406
|
-
trigger: z.enum(["user", "service"]),
|
|
407
|
-
provider: DependabotSourceProviderSchema,
|
|
408
|
-
owner: z.url(),
|
|
409
|
-
project: z.url().optional(),
|
|
410
|
-
"package-manager": DependabotPackageManagerSchema,
|
|
411
|
-
id: z.number(),
|
|
412
|
-
started: z.coerce.date(),
|
|
413
|
-
duration: z.number().min(0),
|
|
414
|
-
success: z.boolean()
|
|
415
|
-
});
|
|
416
|
-
|
|
417
|
-
//#endregion
|
|
418
|
-
export { UsageTelemetryRequestDataSchema };
|
|
419
|
-
//# sourceMappingURL=usage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usage.js","names":[],"sources":["../../src/dependabot/config.ts","../../src/dependabot/job.ts","../../src/usage.ts"],"sourcesContent":["import * as yaml from 'js-yaml';\nimport { z } from 'zod/v4';\n\nimport { convertPlaceholder, type VariableFinderFn } from './placeholder';\n\nexport const DependabotRegistrySchema = z\n .object({\n type: z.enum([\n // order matches\n // https://docs.github.com/en/enterprise-cloud@latest/code-security/dependabot/working-with-dependabot/configuring-access-to-private-registries-for-dependabot#supported-private-registries\n\n 'cargo-registry',\n 'composer-repository',\n 'docker-registry',\n 'git',\n 'goproxy-server',\n 'helm-registry',\n 'hex-organization',\n 'hex-repository',\n 'maven-repository',\n 'npm-registry',\n 'nuget-feed',\n 'pub-repository',\n 'python-index',\n 'rubygems-server',\n 'terraform-registry',\n ]),\n url: z.string().optional(),\n username: z.string().optional(),\n password: z.string().optional(),\n key: z.string().optional(),\n token: z.string().optional(),\n 'replaces-base': z.boolean().optional(),\n host: z.string().optional(), // for terraform and composer only\n registry: z.string().optional(), // for npm only\n organization: z.string().optional(), // for hex-organisation only\n repo: z.string().optional(), // for hex-repository only\n 'public-key-fingerprint': z.string().optional(), // for hex-repository only\n 'index-url': z.string().optional(), // for python-index only\n 'auth-key': z.string().optional(), // used by composer-repository, docker-registry, etc\n 'tenant-id': z.string().optional(), // can only be for azure related stuff, not sure\n 'client-id': z.string().optional(), // can only be for azure related stuff, not sure\n })\n // change underscore to dash in the registry key/type\n .transform((value) => ({ ...value, type: value.type.replace('-', '_') }));\nexport type DependabotRegistry = z.infer<typeof DependabotRegistrySchema>;\n\nexport const DependabotGroupSchema = z.object({\n // Define an identifier for the group to use in branch names and pull request titles.\n // This must start and end with a letter, and can contain letters, pipes |, underscores _, or hyphens -.\n IDENTIFIER: z\n .string()\n .check(\n z.regex(/^[a-zA-Z][a-zA-Z0-9|_-]*[a-zA-Z]$/, {\n message:\n 'Group identifier must start and end with a letter, and can contain letters, pipes |, underscores _, or hyphens -.',\n }),\n )\n .optional(),\n 'applies-to': z.enum(['version-updates', 'security-updates']).optional(),\n 'dependency-type': z.enum(['development', 'production']).optional(),\n patterns: z.string().array().optional(),\n 'exclude-patterns': z.string().array().optional(),\n 'update-types': z.enum(['major', 'minor', 'patch']).array().optional(),\n});\nexport type DependabotGroup = z.infer<typeof DependabotGroupSchema>;\n\nexport const DependabotAllowConditionSchema = z.object({\n 'dependency-name': z.string().optional(),\n 'dependency-type': z.enum(['direct', 'indirect', 'all', 'production', 'development']).optional(),\n 'update-type': z.enum(['all', 'security']).optional(),\n});\nexport type DependabotAllowCondition = z.infer<typeof DependabotAllowConditionSchema>;\n\nexport const DependabotIgnoreConditionSchema = z\n .object({\n 'dependency-name': z.string().optional(),\n versions: z.string().array().or(z.string()).optional(),\n 'update-types': z\n .enum(['version-update:semver-major', 'version-update:semver-minor', 'version-update:semver-patch'])\n .array()\n .optional(),\n })\n .and(z.record(z.string(), z.any()));\nexport type DependabotIgnoreCondition = z.infer<typeof DependabotIgnoreConditionSchema>;\n\nexport const DependabotScheduleSchema = z.object({\n interval: z.enum(['daily', 'weekly', 'monthly', 'quarterly', 'semiannually', 'yearly', 'cron']),\n\n day: z\n .enum(['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'])\n .optional()\n .default('monday'),\n\n time: z\n .string()\n .default('02:00')\n .check(z.regex(/^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/, { message: 'Time must be in HH:MM format' }))\n .optional(),\n\n timezone: z\n .string()\n .optional()\n .default('Etc/UTC')\n .refine(\n (value) => {\n try {\n // If tz is not a valid IANA name, this throws a RangeError\n Intl.DateTimeFormat(undefined, { timeZone: value });\n return true;\n } catch {\n return false;\n }\n },\n { message: 'Invalid IANA time zone' },\n ),\n cronjob: z\n .string()\n .check(z.regex(/^\\S+ \\S+ \\S+ \\S+ \\S+$/, { message: 'Cronjob must be in standard cron format' }))\n .optional(),\n});\nexport type DependabotSchedule = z.infer<typeof DependabotScheduleSchema>;\n\nexport const DependabotCommitMessageSchema = z.object({\n prefix: z.string().optional(),\n 'prefix-development': z.string().optional(),\n include: z.string().optional(),\n});\nexport type DependabotCommitMessage = z.infer<typeof DependabotCommitMessageSchema>;\n\nexport const DependabotCooldownSchema = z.object({\n 'default-days': z.number().optional(),\n 'semver-major-days': z.number().optional(),\n 'semver-minor-days': z.number().optional(),\n 'semver-patch-days': z.number().optional(),\n include: z.string().array().optional(),\n exclude: z.string().array().optional(),\n});\nexport type DependabotCooldown = z.infer<typeof DependabotCooldownSchema>;\n\nconst DependabotPullRequestBranchNameSchema = z.object({\n separator: z.string().optional(),\n});\nexport type DependabotPullRequestBranchName = z.infer<typeof DependabotPullRequestBranchNameSchema>;\n\nexport const PackageEcosystemSchema = z.enum([\n // order matches\n // https://docs.github.com/en/code-security/dependabot/working-with-dependabot/dependabot-options-reference#package-ecosystem-\n\n 'bun',\n 'bundler',\n 'cargo',\n 'composer',\n 'devcontainers',\n 'docker',\n 'docker-compose',\n 'dotnet-sdk',\n 'helm',\n 'mix',\n 'elm',\n 'gitsubmodule',\n 'github-actions',\n 'gomod',\n 'gradle',\n 'julia',\n 'maven',\n 'npm',\n 'nuget',\n 'pip',\n 'pip-compile', // alias mapped to 'pip'\n 'pipenv', // alias mapped to 'pip'\n 'pnpm', // alias mapped to 'npm'\n 'poetry', // alias mapped to 'pip'\n 'pub',\n 'rust-toolchain',\n 'swift',\n 'terraform',\n 'uv',\n 'vcpkg',\n 'yarn', // alias mapped to 'npm'\n]);\nexport type PackageEcosystem = z.infer<typeof PackageEcosystemSchema>;\n\nexport const VersioningStrategySchema = z.enum(['auto', 'increase', 'increase-if-necessary', 'lockfile-only', 'widen']);\nexport type VersioningStrategy = z.infer<typeof VersioningStrategySchema>;\n\nexport const DependabotUpdateSchema = z\n .object({\n 'package-ecosystem': PackageEcosystemSchema,\n directory: z.string().optional(),\n directories: z.string().array().optional(),\n 'exclude-paths': z.string().array().optional(),\n allow: DependabotAllowConditionSchema.array().optional(),\n assignees: z.string().array().optional(),\n 'commit-message': DependabotCommitMessageSchema.optional(),\n cooldown: DependabotCooldownSchema.optional(),\n groups: z.record(z.string(), DependabotGroupSchema).optional(),\n ignore: DependabotIgnoreConditionSchema.array().optional(),\n 'insecure-external-code-execution': z.enum(['allow', 'deny']).optional(),\n labels: z.string().array().optional(),\n milestone: z.coerce.string().optional(),\n 'open-pull-requests-limit': z.number().check(z.int(), z.gte(0)).optional(),\n 'pull-request-branch-name': DependabotPullRequestBranchNameSchema.optional(),\n 'rebase-strategy': z.string().optional(),\n registries: z.string().array().optional(),\n schedule: DependabotScheduleSchema.optional(), // TODO: make required after 2025-Nov-30\n 'target-branch': z.string().optional(),\n vendor: z.boolean().optional(),\n 'versioning-strategy': VersioningStrategySchema.optional(),\n patterns: z.string().array().optional(),\n 'multi-ecosystem-group': z.string().optional(),\n })\n .transform((value, { addIssue }) => {\n // either 'directory' or 'directories' must be specified\n if (!value.directory && (!value.directories || value.directories.length === 0)) {\n addIssue(\"Either 'directory' or 'directories' must be specified in the dependency update configuration.\");\n }\n\n // validate that 'directory' does not contain glob patterns\n if (value.directory && /[*?[\\]{}]/.test(value.directory)) {\n addIssue(\"The 'directory' field must not include glob pattern.\");\n }\n\n value['open-pull-requests-limit'] ??= 5; // default to 5 if not specified\n\n // The patterns key is required when using multi-ecosystem-group.\n // You can specify dependency patterns to include only certain dependencies in the group,\n // or use [\"*\"] to include all dependencies.\n if (value['multi-ecosystem-group'] && (!value.patterns || value.patterns.length === 0)) {\n addIssue(\n \"The 'patterns' field must be specified and contain at least one pattern when using 'multi-ecosystem-group'.\",\n );\n }\n\n return value;\n });\nexport type DependabotUpdate = z.infer<typeof DependabotUpdateSchema>;\n\nexport const DependabotMultiEcosystemGroupSchema = z.object({\n schedule: DependabotScheduleSchema,\n labels: z.string().array().optional(), // behaviour: additive\n milestone: z.coerce.string().optional(), // behaviour: group-only\n assignees: z.string().array().optional(), // behaviour: additive\n 'target-branch': z.string().optional(), // behaviour: group-only\n 'commit-message': DependabotCommitMessageSchema.optional(), // behaviour: group-only\n 'pull-request-branch-name': DependabotPullRequestBranchNameSchema.optional(), // behaviour: group-only\n});\nexport type DependabotMultiEcosystemGroup = z.infer<typeof DependabotMultiEcosystemGroupSchema>;\n\n/**\n * Represents the dependabot.yaml configuration file options.\n * See: https://docs.github.com/en/github/administering-a-repository/configuration-options-for-dependency-updates#configuration-options-for-dependabotyml\n */\nexport const DependabotConfigSchema = z\n .object({\n /**\n * Mandatory. configuration file version.\n **/\n version: z.number().refine((v) => v === 2, { message: 'Only version 2 of dependabot is supported' }),\n\n /**\n * Optional. Configure groups of ecosystems to update together in a single pull request.\n */\n 'multi-ecosystem-groups': z.record(z.string(), DependabotMultiEcosystemGroupSchema).optional(),\n\n /**\n * Mandatory. Configure how Dependabot updates the versions or project dependencies.\n * Each entry configures the update settings for a particular package manager.\n */\n updates: DependabotUpdateSchema.array().check(\n z.minLength(1, { message: 'At least one update configuration is required' }),\n ),\n\n /**\n * Optional.\n * Specify authentication details to access private package registries.\n */\n registries: z.record(z.string(), DependabotRegistrySchema).optional(),\n\n /**\n * Optional. Enables updates for ecosystems that are not yet generally available.\n * https://docs.github.com/en/code-security/dependabot/working-with-dependabot/dependabot-options-reference#enable-beta-ecosystems-\n */\n 'enable-beta-ecosystems': z.boolean().optional(),\n })\n .transform((value, { addIssue }) => {\n // If you attempt to set group-only keys at the ecosystem level (in updates entries),\n // Dependabot will throw a configuration error and fail to process your dependabot.yml file.\n // These keys must only be specified in the multi-ecosystem-groups section.\n // https://docs.github.com/en/code-security/dependabot/working-with-dependabot/configuring-multi-ecosystem-updates#group-only-keys\n const groupOnlyKeys = ['milestone', 'target-branch', 'commit-message', 'pull-request-branch-name'] as const;\n if (value['multi-ecosystem-groups']) {\n for (const update of value.updates) {\n for (const key of groupOnlyKeys) {\n if (key in update) {\n addIssue(\n `The '${key}' field must not be specified in the 'updates' section when using 'multi-ecosystem-groups'. It is a group-only field.`,\n );\n }\n }\n }\n }\n\n return value;\n });\n\nexport type DependabotConfig = z.infer<typeof DependabotConfigSchema>;\n\nexport function parseUpdates(config: DependabotConfig, configPath: string): DependabotUpdate[] {\n const updates: DependabotUpdate[] = [];\n\n // Parse the value of each of the updates obtained from the file\n for (const update of config.updates) {\n // populate the 'ignore' conditions 'source' and 'updated-at' properties, if missing\n // NOTE: 'source' and 'updated-at' are not documented in the dependabot.yml config docs, but are defined in the dependabot-core and dependabot-cli models.\n // Currently they don't appear to add much value to the update process, but are populated here for completeness.\n if (update.ignore) {\n for (const condition of update.ignore) {\n condition.source ??= configPath;\n // we don't know the last updated time, so we use the current time\n condition['updated-at'] ??= new Date().toISOString();\n }\n }\n\n updates.push(update);\n }\n return updates;\n}\n\nexport async function parseRegistries(\n config: DependabotConfig,\n variableFinder: VariableFinderFn,\n): Promise<Record<string, DependabotRegistry>> {\n // Parse the value of each of the registries obtained from the config\n const registries: Record<string, DependabotRegistry> = {};\n for (const [key, registry] of Object.entries(config.registries || {})) {\n const updated = { ...registry };\n const { type } = updated;\n\n // handle special fields for 'hex-organization' types\n if (type === 'hex_organization' && !updated.organization) {\n throw new Error(`The value 'organization' in dependency registry config '${type}' is missing`);\n }\n\n // handle special fields for 'hex-repository' types\n if (type === 'hex_repository' && !updated.repo) {\n throw new Error(`The value 'repo' in dependency registry config '${key}' is missing`);\n }\n\n // parse username, password, key, and token while replacing tokens where necessary\n updated.username = await convertPlaceholder({ input: updated.username, variableFinder: variableFinder });\n updated.password = await convertPlaceholder({ input: updated.password, variableFinder: variableFinder });\n updated.key = await convertPlaceholder({ input: updated.key, variableFinder: variableFinder });\n updated.token = await convertPlaceholder({ input: updated.token, variableFinder: variableFinder });\n\n // TODO: include sources for this logic, otherwise it looks like magic.\n // Initially, this was based on reading through the dependabot-core logic\n // but much has since changed.\n\n // parse the url\n const url = updated.url;\n if (!url && type !== 'hex_organization') {\n throw new Error(`The value 'url' in dependency registry config '${key}' is missing`);\n }\n if (url) {\n /*\n * Some credentials do not use the 'url' property in the Ruby updater.\n * The 'host' and 'registry' properties are derived from the given URL.\n * The 'registry' property is derived from the 'url' by stripping off the scheme.\n * The 'host' property is derived from the hostname of the 'url'.\n *\n * 'npm_registry' and 'docker_registry' use 'registry' only.\n * 'terraform_registry' uses 'host' only.\n * 'composer_repository' uses both 'url' and 'host'.\n * 'python_index' uses 'index-url' instead of 'url'.\n */\n\n if (URL.canParse(url)) {\n const parsedUrl = new URL(url);\n\n const addRegistry = type === 'docker_registry' || type === 'npm_registry';\n if (addRegistry) updated.registry = url.replace('https://', '').replace('http://', '');\n\n const addHost = type === 'composer_repository' || type === 'terraform_registry';\n if (addHost) updated.host = parsedUrl.hostname;\n }\n\n if (type === 'python_index') updated['index-url'] = url;\n\n const removeUrl =\n type === 'docker_registry' ||\n type === 'npm_registry' ||\n type === 'terraform_registry' ||\n type === 'python_index';\n if (removeUrl) delete updated.url; // remove the url if not needed\n }\n\n // add to list\n registries[key] = updated;\n }\n return registries;\n}\n\nexport function validateConfiguration(updates: DependabotUpdate[], registries: Record<string, DependabotRegistry>) {\n const configured = Object.keys(registries);\n const referenced: string[] = [];\n for (const u of updates) referenced.push(...(u.registries ?? []));\n\n // ensure there are no configured registries that have not been referenced\n const missingConfiguration = referenced.filter((el) => !configured.includes(el));\n if (missingConfiguration.length > 0) {\n throw new Error(\n `Referenced registries: '${missingConfiguration.join(',')}' have not been configured in the root of dependabot.yml`,\n );\n }\n\n // ensure there are no registries referenced but not configured\n const missingReferences = configured.filter((el) => !referenced.includes(el));\n if (missingReferences.length > 0) {\n throw new Error(`Registries: '${missingReferences.join(',')}' have not been referenced by any update`);\n }\n}\n\n/**\n * Possible paths to the dependabot config file.\n * Remember to prefix with a forward slash when querying API endpoints or where necessary.\n */\nexport const POSSIBLE_CONFIG_FILE_PATHS = [\n '.azuredevops/dependabot.yml',\n '.azuredevops/dependabot.yaml',\n '.github/dependabot.yaml',\n '.github/dependabot.yml',\n];\n\n/**\n * Parse the contents of a dependabot config YAML file\n * @returns {DependabotConfig} config - the dependabot configuration\n */\nexport async function parseDependabotConfig({\n configContents,\n configPath,\n variableFinder,\n}: {\n configContents: string;\n configPath: string;\n variableFinder: VariableFinderFn;\n}): Promise<DependabotConfig> {\n // Load the config\n const loadedConfig = yaml.load(configContents);\n if (loadedConfig === null || typeof loadedConfig !== 'object') {\n throw new Error('Invalid dependabot config object');\n }\n\n // Parse the config\n const config = await DependabotConfigSchema.parseAsync(loadedConfig);\n const updates = parseUpdates(config, configPath);\n const registries = await parseRegistries(config, variableFinder);\n validateConfiguration(updates, registries);\n\n return { ...config, updates, registries };\n}\n","import { z } from 'zod/v4';\nimport { DependabotCooldownSchema } from './config';\n\n// we use nullish() because it does optional() and allows the value to be set to null\n\nexport const DependabotCredentialSchema = z.record(z.string(), z.any());\nexport type DependabotCredential = z.infer<typeof DependabotCredentialSchema>;\n\nexport const CertificateAuthoritySchema = z.object({\n cert: z.string(),\n key: z.string(),\n});\nexport type CertificateAuthority = z.infer<typeof CertificateAuthoritySchema>;\n\nexport const DependabotProxyConfigSchema = z.object({\n all_credentials: DependabotCredentialSchema.array(),\n ca: CertificateAuthoritySchema,\n});\nexport type DependabotProxyConfig = z.infer<typeof DependabotProxyConfigSchema>;\n\nexport const DependabotSourceProviderSchema = z.enum(['azure']);\nexport type DependabotSourceProvider = z.infer<typeof DependabotSourceProviderSchema>;\n\nexport const DependabotSourceSchema = z.object({\n provider: DependabotSourceProviderSchema,\n repo: z.string(),\n directory: z.string().nullish(),\n directories: z.string().array().nullish(),\n branch: z.string().nullish(),\n commit: z.string().nullish(),\n hostname: z.string().nullish(), // Must be provided if api-endpoint is\n 'api-endpoint': z.string().nullish(), // Must be provided if hostname is\n // TODO: refine to ensure either directory or directories is provided\n // TODO: refine to ensure either both hostname and api-endpoint have a value or both are undefined\n});\nexport type DependabotSource = z.infer<typeof DependabotSourceSchema>;\n\nexport const DependabotExistingPRSchema = z.object({\n 'dependency-name': z.string(),\n 'dependency-version': z.string().nullish(),\n directory: z.string().nullish(),\n removed: z.boolean().nullish(),\n});\nexport type DependabotExistingPR = z.infer<typeof DependabotExistingPRSchema>;\n\nexport const DependabotExistingGroupPRSchema = z.object({\n 'dependency-group-name': z.string(),\n dependencies: DependabotExistingPRSchema.array(),\n});\nexport type DependabotExistingGroupPR = z.infer<typeof DependabotExistingGroupPRSchema>;\n\nexport const DependabotAllowedSchema = z.object({\n 'dependency-name': z.string().nullish(),\n 'dependency-type': z.string().nullish(),\n 'update-type': z.enum(['all', 'security']).optional(),\n});\nexport type DependabotAllowed = z.infer<typeof DependabotAllowedSchema>;\n\nexport const DependabotGroupRuleJobSchema = z.object({\n patterns: z.string().array().nullish(),\n 'exclude-patterns': z.string().array().nullish(),\n 'dependency-type': z.string().nullish(),\n 'update-types': z.string().array().nullish(),\n});\nexport type DependabotGroupRuleJob = z.infer<typeof DependabotGroupRuleJobSchema>;\n\nexport const DependabotGroupJobSchema = z.object({\n name: z.string(),\n 'applies-to': z.string().nullish(),\n rules: DependabotGroupRuleJobSchema,\n});\nexport type DependabotGroupJob = z.infer<typeof DependabotGroupJobSchema>;\n\nexport const DependabotConditionSchema = z.object({\n 'dependency-name': z.string(),\n source: z.string().nullish(),\n 'update-types': z.string().array().nullish(),\n 'updated-at': z.coerce.string().nullish(),\n 'version-requirement': z.string().nullish(),\n});\nexport type DependabotCondition = z.infer<typeof DependabotConditionSchema>;\n\nexport const DependabotSecurityAdvisorySchema = z.object({\n 'dependency-name': z.string(),\n 'affected-versions': z.string().array(),\n 'patched-versions': z.string().array().nullish(), // may not be patched as of yet\n 'unaffected-versions': z.string().array(),\n});\nexport type DependabotSecurityAdvisory = z.infer<typeof DependabotSecurityAdvisorySchema>;\n\nexport const DependabotRequirementSourceSchema = z.record(z.string(), z.any());\nexport type DependabotRequirementSource = z.infer<typeof DependabotRequirementSourceSchema>;\n\nexport const DependabotRequirementSchema = z.object({\n file: z.string().nullish(), // e.g. 'requirements.txt' or '/Root.csproj'\n groups: z.string().array().nullish(), // e.g. ['dependencies']\n metadata: z.record(z.string(), z.any()).nullish(),\n requirement: z.string().nullish(), // e.g. '==3.2.0' or '8.1.0'\n source: DependabotRequirementSourceSchema.nullish(),\n version: z.string().nullish(),\n 'previous-version': z.string().nullish(),\n});\nexport type DependabotRequirement = z.infer<typeof DependabotRequirementSchema>;\n\nexport const DependabotDependencySchema = z.object({\n name: z.string(), // e.g. 'django' or 'GraphQL.Server.Ui.Voyager'\n 'previous-requirements': DependabotRequirementSchema.array().nullish(),\n 'previous-version': z.string().nullish(),\n version: z.string().nullish(), // e.g. '5.0.1' or '8.1.0'\n requirements: DependabotRequirementSchema.array().nullish(),\n removed: z.boolean().nullish(),\n directory: z.string().nullish(),\n});\nexport type DependabotDependency = z.infer<typeof DependabotDependencySchema>;\n\nexport const DependabotCommitOptionsSchema = z.object({\n prefix: z.string().nullish(),\n 'prefix-development': z.string().nullish(),\n 'include-scope': z.boolean().nullish(),\n});\nexport type DependabotCommitOptions = z.infer<typeof DependabotCommitOptionsSchema>;\n\nexport const DependabotExperimentsSchema = z.record(z.string(), z.union([z.string(), z.boolean()]));\nexport type DependabotExperiments = z.infer<typeof DependabotExperimentsSchema>;\n\nexport const DependabotPackageManagerSchema = z.enum([\n // order matches dependabot-action/src/update-containers.ts\n\n 'bundler',\n 'cargo',\n 'composer',\n 'pub',\n 'docker',\n 'elm',\n 'github_actions', // ecosystem(s): 'github-actions'\n 'submodules', // ecosystem(s): 'gitsubmodule'\n 'go_modules', // ecosystem(s): 'gomod'\n 'gradle',\n 'maven',\n 'hex', // ecosystem(s): 'mix'\n 'nuget',\n 'npm_and_yarn', // ecosystem(s): 'npm', 'pnpm', 'yarn'\n 'pip', // ecosystem(s): 'pipenv', 'pip-compile', 'poetry'\n 'rust_toolchain', // ecosystem(s): 'rust-toolchain'\n 'swift',\n 'terraform',\n 'devcontainers',\n 'dotnet_sdk', // ecosystem(s): 'dotnet-sdk'\n 'bun',\n 'docker_compose', // // ecosystem(s): 'docker-compose',\n 'uv',\n 'vcpkg',\n 'helm',\n 'julia',\n]);\nexport type DependabotPackageManager = z.infer<typeof DependabotPackageManagerSchema>;\n\nexport const DependabotCommandSchema = z.enum(['graph', 'version', 'recreate']);\nexport type DependabotCommand = z.infer<typeof DependabotCommandSchema>;\n\n// See: https://github.com/dependabot/cli/blob/main/internal/model/job.go\n// https://github.com/dependabot/dependabot-core/blob/main/updater/lib/dependabot/job.rb\nexport const DependabotJobConfigSchema = z.object({\n id: z.number().optional(),\n command: DependabotCommandSchema.optional(),\n 'package-manager': DependabotPackageManagerSchema,\n 'allowed-updates': DependabotAllowedSchema.array(),\n debug: z.boolean().nullable(),\n 'dependency-groups': DependabotGroupJobSchema.array().nullish(),\n dependencies: z.string().array().nullable(),\n 'dependency-group-to-refresh': z.string().nullish(),\n 'existing-pull-requests': DependabotExistingPRSchema.array().array(),\n 'existing-group-pull-requests': DependabotExistingGroupPRSchema.array(),\n experiments: DependabotExperimentsSchema,\n 'ignore-conditions': DependabotConditionSchema.array(),\n 'lockfile-only': z.boolean(),\n 'requirements-update-strategy': z.string().nullable(),\n 'security-advisories': DependabotSecurityAdvisorySchema.array(),\n 'security-updates-only': z.boolean(),\n source: DependabotSourceSchema,\n 'update-subdependencies': z.boolean(),\n 'updating-a-pull-request': z.boolean(),\n 'vendor-dependencies': z.boolean(),\n 'reject-external-code': z.boolean().nullish(),\n 'repo-private': z.boolean(),\n 'commit-message-options': DependabotCommitOptionsSchema,\n 'credentials-metadata': DependabotCredentialSchema.array().nullish(),\n 'max-updater-run-time': z.int().nullish(),\n cooldown: DependabotCooldownSchema.nullish(),\n 'proxy-log-response-body-on-auth-failure': z.boolean().nullish(),\n 'enable-beta-ecosystems': z.boolean().nullish(),\n 'multi-ecosystem-update': z.boolean().nullish(),\n 'exclude-paths': z.string().array().optional(),\n});\nexport type DependabotJobConfig = z.infer<typeof DependabotJobConfigSchema>;\n\nexport const DependabotJobFileSchema = z.object({\n job: DependabotJobConfigSchema,\n});\nexport type DependabotJobFile = z.infer<typeof DependabotJobFileSchema>;\n\n// Code below is borrowed and adapted from dependabot-action\n\n// biome-ignore-start lint/suspicious/noExplicitAny: generic\nexport type FetchedFiles = {\n base_commit_sha: string;\n dependency_files: any[];\n base64_dependency_files: any[];\n};\n// biome-ignore-end lint/suspicious/noExplicitAny: generic\n\nexport type FileFetcherInput = {\n job: DependabotJobConfig;\n};\n\nexport type FileUpdaterInput = FetchedFiles & {\n job: DependabotJobConfig;\n};\n","import { z } from 'zod/v4';\nimport { DependabotPackageManagerSchema, DependabotSourceProviderSchema } from '@/dependabot/job';\n\n/**\n * @example\n * ```json\n * {\n * \"host\": {\n * \"platform\": \"darwin\",\n * \"os\": \"25.0.0\",\n * \"arch\": \"arm64\",\n * \"machine-hash\": \"d3bbb66be2ad9dfab10af69b450f7e7e814ef7bbf1277a6d0df9e1db44ba4f5c\"\n * },\n * \"trigger\": \"user\",\n * \"provider\": \"azure\",\n * \"owner\": \"https://dev.azure.com/tingle/\",\n * \"package-manager\": \"terraform\",\n * \"version\": \"0.9.0\",\n * \"id\": 2850677077,\n * \"started\": \"2025-10-03T14:44:00.191Z\",\n * \"duration\": 31812,\n * \"success\": true\n * }\n * ```\n */\nexport const UsageTelemetryRequestDataSchema = z.object({\n host: z.object({\n platform: z.string().max(50), // e.g. linux, darwin, win32\n release: z.string().max(100), // e.g. 26.0.0, 10.0.19043\n arch: z.string().max(50), // e.g. x64, arm64\n 'machine-hash': z.string().max(250), // e.g. \"d3bbb66be2ad9dfab10af69b450f7e7e814ef7bbf1277a6d0df9e1db44ba4f5c\" for \"Maxwells-MacBook-Pro.local\"\n }),\n version: z.string().max(50),\n trigger: z.enum(['user', 'service']),\n provider: DependabotSourceProviderSchema,\n owner: z.url(),\n project: z.url().optional(), // was added later hence optional for backward compatibility\n 'package-manager': DependabotPackageManagerSchema,\n id: z.number(), // job identifier, for correlation\n started: z.coerce.date(),\n duration: z.number().min(0), // in milliseconds\n success: z.boolean(),\n});\n\n/**\n * @example\n * ```json\n * {\n * \"host\": {\n * \"platform\": \"darwin\",\n * \"os\": \"25.0.0\",\n * \"arch\": \"arm64\",\n * \"machine-hash\": \"d3bbb66be2ad9dfab10af69b450f7e7e814ef7bbf1277a6d0df9e1db44ba4f5c\"\n * },\n * \"trigger\": \"user\",\n * \"provider\": \"azure\",\n * \"owner\": \"https://dev.azure.com/tingle/\",\n * \"package-manager\": \"terraform\",\n * \"version\": \"0.9.0\",\n * \"id\": 2850677077,\n * \"started\": \"2025-10-03T14:44:00.191Z\",\n * \"duration\": 31812,\n * \"success\": true\n * }\n * ```\n */\nexport type UsageTelemetryRequestData = z.infer<typeof UsageTelemetryRequestDataSchema>;\n"],"mappings":"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"}
|