@homeflare/alchemy 0.27.4 → 0.29.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/README.md +2 -0
- package/dist/caddy/admin-address.d.ts +27 -0
- package/dist/caddy/admin-address.d.ts.map +1 -0
- package/dist/caddy/admin-calls.d.ts +25 -28
- package/dist/caddy/admin-calls.d.ts.map +1 -1
- package/dist/caddy/admin.d.ts +28 -38
- package/dist/caddy/admin.d.ts.map +1 -1
- package/dist/caddy/caddy-http-client.d.ts +25 -0
- package/dist/caddy/caddy-http-client.d.ts.map +1 -0
- package/dist/caddy/config-errors.d.ts +24 -0
- package/dist/caddy/config-errors.d.ts.map +1 -0
- package/dist/caddy/config-lifecycle.d.ts +20 -49
- package/dist/caddy/config-lifecycle.d.ts.map +1 -1
- package/dist/caddy/config-reconcile.d.ts +45 -0
- package/dist/caddy/config-reconcile.d.ts.map +1 -0
- package/dist/caddy/config.d.ts +4 -3
- package/dist/caddy/config.d.ts.map +1 -1
- package/dist/caddy/fake-caddy.d.ts +10 -2
- package/dist/caddy/fake-caddy.d.ts.map +1 -1
- package/dist/caddy/index.d.ts +3 -3
- package/dist/caddy/index.d.ts.map +1 -1
- package/dist/caddy/index.js +487 -444
- package/dist/caddy/index.js.map +16 -12
- package/dist/caddy/local-admin.d.ts +20 -34
- package/dist/caddy/local-admin.d.ts.map +1 -1
- package/dist/caddy/providers.d.ts +19 -3
- package/dist/caddy/providers.d.ts.map +1 -1
- package/dist/cloudflare/mesh-node-token.d.ts +1 -1
- package/dist/cloudflare/mesh-node-token.d.ts.map +1 -1
- package/dist/forgejo/branch-protection.d.ts +4 -4
- package/dist/forgejo/org-actions-secrets.d.ts +4 -4
- package/dist/forgejo/org-label.d.ts +4 -4
- package/dist/forgejo/org-team.d.ts +4 -4
- package/dist/forgejo/repo-webhook.d.ts +4 -4
- package/dist/forgejo/repository.d.ts +4 -4
- package/dist/forgejo/team-member.d.ts +4 -4
- package/dist/github/declare-repo-baseline.d.ts +1 -1
- package/dist/github/declare-repo-baseline.d.ts.map +1 -1
- package/dist/github/index.d.ts +9 -5
- package/dist/github/index.d.ts.map +1 -1
- package/dist/github/index.js +161 -25
- package/dist/github/index.js.map +15 -13
- package/dist/github/repo-baseline-data.d.ts +10 -1
- package/dist/github/repo-baseline-data.d.ts.map +1 -1
- package/dist/github/repo-policy.d.ts +1 -1
- package/dist/github/repo-policy.d.ts.map +1 -1
- package/dist/github/repository-ruleset-errors.d.ts +37 -3
- package/dist/github/repository-ruleset-errors.d.ts.map +1 -1
- package/dist/github/repository-ruleset-form.d.ts.map +1 -1
- package/dist/github/repository-ruleset-guards.d.ts +15 -2
- package/dist/github/repository-ruleset-guards.d.ts.map +1 -1
- package/dist/github/repository-ruleset-narrowing-guards.d.ts +39 -0
- package/dist/github/repository-ruleset-narrowing-guards.d.ts.map +1 -0
- package/dist/github/repository-ruleset-octokit.d.ts +49 -0
- package/dist/github/repository-ruleset-octokit.d.ts.map +1 -1
- package/dist/github/repository-ruleset-probe.d.ts +2 -1
- package/dist/github/repository-ruleset-probe.d.ts.map +1 -1
- package/dist/github/repository-ruleset-props.d.ts +91 -0
- package/dist/github/repository-ruleset-props.d.ts.map +1 -0
- package/dist/github/repository-ruleset-providers.d.ts +42 -0
- package/dist/github/repository-ruleset-providers.d.ts.map +1 -0
- package/dist/github/repository-ruleset-reconcile.d.ts.map +1 -1
- package/dist/github/repository-ruleset.d.ts +28 -34
- package/dist/github/repository-ruleset.d.ts.map +1 -1
- package/dist/litellm/fake-litellm.d.ts +27 -16
- package/dist/litellm/fake-litellm.d.ts.map +1 -1
- package/dist/litellm/fake-stack.d.ts +9 -4
- package/dist/litellm/fake-stack.d.ts.map +1 -1
- package/dist/litellm/index.d.ts +7 -5
- package/dist/litellm/index.d.ts.map +1 -1
- package/dist/litellm/index.js +53 -123
- package/dist/litellm/index.js.map +8 -8
- package/dist/litellm/operations.d.ts +60 -0
- package/dist/litellm/operations.d.ts.map +1 -0
- package/dist/litellm/pass-through-endpoint.d.ts +10 -28
- package/dist/litellm/pass-through-endpoint.d.ts.map +1 -1
- package/dist/litellm/pass-through-errors.d.ts +37 -0
- package/dist/litellm/pass-through-errors.d.ts.map +1 -0
- package/dist/litellm/pass-through-form.d.ts +11 -4
- package/dist/litellm/pass-through-form.d.ts.map +1 -1
- package/dist/litellm/providers.d.ts +7 -5
- package/dist/litellm/providers.d.ts.map +1 -1
- package/dist/netbox/prefix.d.ts +4 -4
- package/dist/paperless/custom-field.d.ts +21 -21
- package/dist/paperless/custom-field.d.ts.map +1 -1
- package/dist/paperless/document-type.d.ts +34 -4
- package/dist/paperless/document-type.d.ts.map +1 -1
- package/dist/paperless/fake-paperless.d.ts +36 -19
- package/dist/paperless/fake-paperless.d.ts.map +1 -1
- package/dist/paperless/index.d.ts +7 -2
- package/dist/paperless/index.d.ts.map +1 -1
- package/dist/paperless/index.js +164 -228
- package/dist/paperless/index.js.map +10 -13
- package/dist/paperless/matching-locate.d.ts +42 -20
- package/dist/paperless/matching-locate.d.ts.map +1 -1
- package/dist/paperless/matching-types.d.ts +47 -18
- package/dist/paperless/matching-types.d.ts.map +1 -1
- package/dist/paperless/matching.d.ts +30 -27
- package/dist/paperless/matching.d.ts.map +1 -1
- package/dist/paperless/providers.d.ts +13 -7
- package/dist/paperless/providers.d.ts.map +1 -1
- package/dist/paperless/storage-path.d.ts +34 -4
- package/dist/paperless/storage-path.d.ts.map +1 -1
- package/dist/paperless/tag.d.ts +43 -8
- package/dist/paperless/tag.d.ts.map +1 -1
- package/dist/proxmox/acl.d.ts +30 -23
- package/dist/proxmox/acl.d.ts.map +1 -1
- package/dist/proxmox/distilled-pve.d.ts +89 -0
- package/dist/proxmox/distilled-pve.d.ts.map +1 -0
- package/dist/proxmox/index.js +663 -609
- package/dist/proxmox/index.js.map +12 -11
- package/dist/proxmox/members.d.ts +29 -10
- package/dist/proxmox/members.d.ts.map +1 -1
- package/docs/caddy-admin.md +1 -1
- package/docs/caddy.md +3 -2
- package/docs/credentials.md +16 -0
- package/docs/litellm.md +21 -13
- package/docs/paperless.md +12 -0
- package/docs/peers.md +5 -0
- package/docs/repo-policy.md +16 -1
- package/docs/repository-ruleset.md +53 -13
- package/docs/upstream-conformance.md +126 -10
- package/package.json +9 -2
- package/src/caddy/admin-address.ts +71 -0
- package/src/caddy/admin-calls.ts +48 -100
- package/src/caddy/admin.ts +37 -41
- package/src/caddy/adopt-scope.test.ts +1 -1
- package/src/caddy/caddy-http-client.ts +229 -0
- package/src/caddy/config-adopt-provider.test.ts +139 -0
- package/src/caddy/config-adopt.test.ts +60 -126
- package/src/caddy/config-errors.ts +47 -0
- package/src/caddy/config-lifecycle.test.ts +55 -42
- package/src/caddy/config-lifecycle.ts +72 -162
- package/src/caddy/config-reconcile.ts +138 -0
- package/src/caddy/config.ts +36 -42
- package/src/caddy/fake-caddy.ts +20 -2
- package/src/caddy/index.ts +3 -8
- package/src/caddy/local-admin.test.ts +35 -21
- package/src/caddy/local-admin.ts +60 -167
- package/src/caddy/providers.test.ts +14 -6
- package/src/caddy/providers.ts +20 -4
- package/src/github/declare-repo-baseline.ts +6 -6
- package/src/github/index.ts +10 -4
- package/src/github/repo-baseline-data.test.ts +13 -0
- package/src/github/repo-baseline-data.ts +11 -2
- package/src/github/repo-policy-stack.test.ts +59 -0
- package/src/github/repo-policy.ts +3 -2
- package/src/github/repository-ruleset-errors.ts +51 -4
- package/src/github/repository-ruleset-exact-adopt-k1.test.ts +109 -0
- package/src/github/repository-ruleset-exact-adopt.test.ts +184 -0
- package/src/github/repository-ruleset-form.ts +7 -3
- package/src/github/repository-ruleset-guards.ts +11 -4
- package/src/github/repository-ruleset-narrowing-guards.ts +141 -0
- package/src/github/repository-ruleset-narrowing.test.ts +210 -0
- package/src/github/repository-ruleset-octokit.test.ts +141 -0
- package/src/github/repository-ruleset-octokit.ts +121 -30
- package/src/github/repository-ruleset-probe.ts +2 -1
- package/src/github/repository-ruleset-props.ts +95 -0
- package/src/github/repository-ruleset-providers.ts +46 -0
- package/src/github/repository-ruleset-reconcile.ts +35 -0
- package/src/github/repository-ruleset-wire.test.ts +38 -27
- package/src/github/repository-ruleset-write-refusals.test.ts +6 -26
- package/src/github/repository-ruleset.ts +53 -43
- package/src/litellm/fake-litellm.ts +83 -78
- package/src/litellm/fake-stack.ts +13 -5
- package/src/litellm/index.ts +7 -21
- package/src/litellm/operations.ts +149 -0
- package/src/litellm/pass-through-endpoint-delete-swallow.test.ts +17 -20
- package/src/litellm/pass-through-endpoint-replace.test.ts +3 -4
- package/src/litellm/pass-through-endpoint.test.ts +8 -8
- package/src/litellm/pass-through-endpoint.ts +21 -31
- package/src/litellm/pass-through-errors.ts +37 -0
- package/src/litellm/pass-through-form.ts +20 -10
- package/src/litellm/providers.ts +8 -7
- package/src/paperless/custom-field.test.ts +49 -40
- package/src/paperless/custom-field.ts +57 -33
- package/src/paperless/document-type.test.ts +48 -0
- package/src/paperless/document-type.ts +51 -22
- package/src/paperless/fake-paperless.ts +63 -72
- package/src/paperless/index.ts +7 -13
- package/src/paperless/matching-locate.test.ts +102 -0
- package/src/paperless/matching-locate.ts +80 -86
- package/src/paperless/matching-types.ts +49 -16
- package/src/paperless/matching.ts +77 -90
- package/src/paperless/providers.ts +14 -10
- package/src/paperless/storage-path.test.ts +56 -0
- package/src/paperless/storage-path.ts +53 -24
- package/src/paperless/tag-identity.test.ts +127 -0
- package/src/paperless/tag.test.ts +100 -0
- package/src/paperless/tag.ts +62 -32
- package/src/proxmox/acl.test.ts +145 -0
- package/src/proxmox/acl.ts +128 -150
- package/src/proxmox/distilled-pve.test.ts +231 -0
- package/src/proxmox/distilled-pve.ts +147 -0
- package/src/proxmox/members-timeout.test.ts +161 -0
- package/src/proxmox/members.test.ts +9 -0
- package/src/proxmox/members.ts +36 -2
- package/dist/litellm/client.d.ts +0 -76
- package/dist/litellm/client.d.ts.map +0 -1
- package/dist/litellm/credentials.d.ts +0 -48
- package/dist/litellm/credentials.d.ts.map +0 -1
- package/dist/litellm/generated/pass-through.d.ts +0 -71
- package/dist/litellm/generated/pass-through.d.ts.map +0 -1
- package/dist/paperless/client.d.ts +0 -37
- package/dist/paperless/client.d.ts.map +0 -1
- package/dist/paperless/credentials.d.ts +0 -40
- package/dist/paperless/credentials.d.ts.map +0 -1
- package/dist/paperless/errors.d.ts +0 -49
- package/dist/paperless/errors.d.ts.map +0 -1
- package/src/litellm/client.ts +0 -195
- package/src/litellm/credentials.ts +0 -73
- package/src/litellm/generated/pass-through.ts +0 -73
- package/src/paperless/client.ts +0 -88
- package/src/paperless/credentials.ts +0 -69
- package/src/paperless/errors.ts +0 -62
- package/src/paperless/matching-identity.test.ts +0 -194
- package/src/paperless/matching.test.ts +0 -128
package/dist/github/index.js
CHANGED
|
@@ -208,6 +208,18 @@ class BypassActorWidened extends Data.TaggedError("BypassActorWidened") {
|
|
|
208
208
|
}
|
|
209
209
|
}
|
|
210
210
|
|
|
211
|
+
class BypassActorNarrowed extends Data.TaggedError("BypassActorNarrowed") {
|
|
212
|
+
get message() {
|
|
213
|
+
return `GitHub.RepositoryRuleset "${this.name}" on ${this.owner}/${this.repository}: the ` + `declaration drops a bypass actor the live ruleset has (${this.narrowed.join(", ")}), and ` + "the declaration carries no `acknowledgeBypassNarrowing`. Add one with a reason once the " + "removal is deliberate, or restore the actor to match live.";
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
class RuleNarrowed extends Data.TaggedError("RuleNarrowed") {
|
|
218
|
+
get message() {
|
|
219
|
+
return `GitHub.RepositoryRuleset "${this.name}" on ${this.owner}/${this.repository}: the ` + `declaration drops a live "${this.ruleType}" rule, and carries no ` + "`acknowledgeRuleNarrowing`. Add one with a reason once the removal is deliberate, or " + "declare the rule to match live.";
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
211
223
|
class UndeclaredLiveRule extends Data.TaggedError("UndeclaredLiveRule") {
|
|
212
224
|
get message() {
|
|
213
225
|
return `GitHub.RepositoryRuleset "${this.name}" on ${this.owner}/${this.repository}: the live ` + `ruleset has a "${this.ruleType}" rule this resource does not model. Declare it (if it is ` + "now modeled) or an explicit `false` to remove it — the PUT replaces `rules` wholesale, so " + "nothing may be dropped silently.";
|
|
@@ -222,7 +234,7 @@ class RequiredChecksOmitted extends Data.TaggedError("RequiredChecksOmitted") {
|
|
|
222
234
|
|
|
223
235
|
class NeverReportedContext extends Data.TaggedError("NeverReportedContext") {
|
|
224
236
|
get message() {
|
|
225
|
-
return `GitHub.RepositoryRuleset: "${this.context}" has never reported success on ` + `${this.owner}/${this.repository}'s default branch. Requiring it now would leave every
|
|
237
|
+
return `GitHub.RepositoryRuleset: "${this.context}" has never reported success on ` + `${this.owner}/${this.repository}'s default branch tip or any of its recent merged pull ` + "requests. Requiring it now would leave every pull request waiting on a check that has " + "never once reported — refused before any write.";
|
|
226
238
|
}
|
|
227
239
|
}
|
|
228
240
|
|
|
@@ -247,6 +259,53 @@ var octokitFor = (baseUrl) => Effect.gen(function* () {
|
|
|
247
259
|
return baseUrl === undefined ? creds.octokit() : creds.octokit({ baseUrl });
|
|
248
260
|
}).pipe(Effect.mapError(asError));
|
|
249
261
|
var is404 = (e) => e?.status === 404;
|
|
262
|
+
var RECENT_MERGED_PR_LIMIT = 10;
|
|
263
|
+
var RECENT_CLOSED_PR_PAGE_SIZE = 100;
|
|
264
|
+
var hasRefReportedSuccess = (octokit, owner, repo, ref, context) => Effect.gen(function* () {
|
|
265
|
+
const [checkRuns, statuses] = yield* Effect.all([
|
|
266
|
+
Effect.tryPromise({
|
|
267
|
+
try: () => octokit.rest.checks.listForRef({ owner, repo, ref, check_name: context }),
|
|
268
|
+
catch: asError
|
|
269
|
+
}),
|
|
270
|
+
Effect.tryPromise({
|
|
271
|
+
try: () => octokit.rest.repos.listCommitStatusesForRef({ owner, repo, ref }),
|
|
272
|
+
catch: asError
|
|
273
|
+
})
|
|
274
|
+
]);
|
|
275
|
+
const checkReported = checkRuns.data.check_runs.some((run) => run.name === context && run.conclusion === "success");
|
|
276
|
+
const statusReported = statuses.data.some((status) => status.context === context && status.state === "success");
|
|
277
|
+
return checkReported || statusReported;
|
|
278
|
+
});
|
|
279
|
+
var recentMergedHeadShas = (octokit, owner, repo, base) => Effect.gen(function* () {
|
|
280
|
+
const closed = yield* Effect.tryPromise({
|
|
281
|
+
try: () => octokit.rest.pulls.list({
|
|
282
|
+
owner,
|
|
283
|
+
repo,
|
|
284
|
+
state: "closed",
|
|
285
|
+
base,
|
|
286
|
+
sort: "updated",
|
|
287
|
+
direction: "desc",
|
|
288
|
+
per_page: RECENT_CLOSED_PR_PAGE_SIZE
|
|
289
|
+
}),
|
|
290
|
+
catch: asError
|
|
291
|
+
});
|
|
292
|
+
return closed.data.filter((pr) => pr.merged_at !== null).slice(0, RECENT_MERGED_PR_LIMIT).map((pr) => pr.head.sha);
|
|
293
|
+
});
|
|
294
|
+
var contextReportedSuccess = (octokit, owner, repo, context) => Effect.gen(function* () {
|
|
295
|
+
const repository = yield* Effect.tryPromise({
|
|
296
|
+
try: () => octokit.rest.repos.get({ owner, repo }),
|
|
297
|
+
catch: asError
|
|
298
|
+
});
|
|
299
|
+
const ref = repository.data.default_branch;
|
|
300
|
+
if (yield* hasRefReportedSuccess(octokit, owner, repo, ref, context))
|
|
301
|
+
return true;
|
|
302
|
+
const heads = yield* recentMergedHeadShas(octokit, owner, repo, ref);
|
|
303
|
+
for (const sha of heads) {
|
|
304
|
+
if (yield* hasRefReportedSuccess(octokit, owner, repo, sha, context))
|
|
305
|
+
return true;
|
|
306
|
+
}
|
|
307
|
+
return false;
|
|
308
|
+
});
|
|
250
309
|
var makeRulesetOctokit = (baseUrl) => ({
|
|
251
310
|
list: ({ owner, repo }) => Effect.gen(function* () {
|
|
252
311
|
const octokit = yield* octokitFor(baseUrl);
|
|
@@ -302,24 +361,7 @@ var makeRulesetOctokit = (baseUrl) => ({
|
|
|
302
361
|
}),
|
|
303
362
|
hasContextReportedSuccess: ({ owner, repo, context }) => Effect.gen(function* () {
|
|
304
363
|
const octokit = yield* octokitFor(baseUrl);
|
|
305
|
-
|
|
306
|
-
try: () => octokit.rest.repos.get({ owner, repo }),
|
|
307
|
-
catch: asError
|
|
308
|
-
});
|
|
309
|
-
const ref = repository.data.default_branch;
|
|
310
|
-
const [checkRuns, statuses] = yield* Effect.all([
|
|
311
|
-
Effect.tryPromise({
|
|
312
|
-
try: () => octokit.rest.checks.listForRef({ owner, repo, ref, check_name: context }),
|
|
313
|
-
catch: asError
|
|
314
|
-
}),
|
|
315
|
-
Effect.tryPromise({
|
|
316
|
-
try: () => octokit.rest.repos.listCommitStatusesForRef({ owner, repo, ref }),
|
|
317
|
-
catch: asError
|
|
318
|
-
})
|
|
319
|
-
]);
|
|
320
|
-
const checkReported = checkRuns.data.check_runs.some((run) => run.name === context && run.conclusion === "success");
|
|
321
|
-
const statusReported = statuses.data.some((status) => status.context === context && status.state === "success");
|
|
322
|
-
return checkReported || statusReported;
|
|
364
|
+
return yield* contextReportedSuccess(octokit, owner, repo, context);
|
|
323
365
|
})
|
|
324
366
|
});
|
|
325
367
|
|
|
@@ -371,7 +413,9 @@ function buildPullRequestRule(rule) {
|
|
|
371
413
|
minimum_approvals: r.minimumApprovals,
|
|
372
414
|
reviewer: { id: r.reviewer.actorId, type: r.reviewer.actorType }
|
|
373
415
|
})),
|
|
374
|
-
...rule.extraApprovalForUnattributedChanges === undefined ? {} : {
|
|
416
|
+
...rule.extraApprovalForUnattributedChanges === undefined ? {} : {
|
|
417
|
+
require_extra_approval_for_unattributed_changes: rule.extraApprovalForUnattributedChanges
|
|
418
|
+
}
|
|
375
419
|
}
|
|
376
420
|
};
|
|
377
421
|
}
|
|
@@ -587,6 +631,65 @@ var refuseUnreportedContexts = (octokit, owner, repo, contexts) => Effect3.gen(f
|
|
|
587
631
|
}
|
|
588
632
|
});
|
|
589
633
|
|
|
634
|
+
// src/github/repository-ruleset-narrowing-guards.ts
|
|
635
|
+
var isBypassNarrowingAcknowledged = (props) => props.acknowledgeBypassNarrowing !== undefined && props.acknowledgeBypassNarrowing.reason.trim().length > 0;
|
|
636
|
+
var isRuleNarrowingAcknowledged = (props) => props.acknowledgeRuleNarrowing !== undefined && props.acknowledgeRuleNarrowing.reason.trim().length > 0;
|
|
637
|
+
function bypassNarrowingRefusal(input) {
|
|
638
|
+
if (input.acknowledged)
|
|
639
|
+
return;
|
|
640
|
+
if (input.live === undefined)
|
|
641
|
+
return;
|
|
642
|
+
const liveActors = input.live.bypass_actors ?? [];
|
|
643
|
+
const declaredKeys = new Set((input.declared ?? []).map((a) => bypassKey({
|
|
644
|
+
actor_type: a.actorType,
|
|
645
|
+
actor_id: a.actorId,
|
|
646
|
+
bypass_mode: a.bypassMode ?? "always"
|
|
647
|
+
})));
|
|
648
|
+
const narrowed = liveActors.map(bypassKey).filter((k) => !declaredKeys.has(k));
|
|
649
|
+
if (narrowed.length === 0)
|
|
650
|
+
return;
|
|
651
|
+
return new BypassActorNarrowed({
|
|
652
|
+
owner: input.owner,
|
|
653
|
+
repository: input.repository,
|
|
654
|
+
name: input.name,
|
|
655
|
+
narrowed
|
|
656
|
+
});
|
|
657
|
+
}
|
|
658
|
+
function droppedBooleanOrPullRequestType(rules, live) {
|
|
659
|
+
const declaredFalse = [
|
|
660
|
+
[rules.creation, "creation"],
|
|
661
|
+
[rules.update, "update"],
|
|
662
|
+
[rules.deletion, "deletion"],
|
|
663
|
+
[rules.requiredLinearHistory, "required_linear_history"],
|
|
664
|
+
[rules.requiredSignatures, "required_signatures"],
|
|
665
|
+
[rules.nonFastForward, "non_fast_forward"]
|
|
666
|
+
];
|
|
667
|
+
for (const [declared, type] of declaredFalse) {
|
|
668
|
+
if (declared === false && live.has(type))
|
|
669
|
+
return type;
|
|
670
|
+
}
|
|
671
|
+
if (rules.pullRequest === false && live.has("pull_request"))
|
|
672
|
+
return "pull_request";
|
|
673
|
+
return;
|
|
674
|
+
}
|
|
675
|
+
function ruleNarrowingRefusal(input) {
|
|
676
|
+
if (input.acknowledged)
|
|
677
|
+
return;
|
|
678
|
+
const rules = input.declared;
|
|
679
|
+
if (rules === undefined)
|
|
680
|
+
return;
|
|
681
|
+
const live = liveRuleTypes(input.live);
|
|
682
|
+
const ruleType = droppedBooleanOrPullRequestType(rules, live) ?? (rules.requiredStatusChecks === false && live.has("required_status_checks") ? "required_status_checks" : undefined);
|
|
683
|
+
if (ruleType === undefined)
|
|
684
|
+
return;
|
|
685
|
+
return new RuleNarrowed({
|
|
686
|
+
owner: input.owner,
|
|
687
|
+
repository: input.repository,
|
|
688
|
+
name: input.name,
|
|
689
|
+
ruleType
|
|
690
|
+
});
|
|
691
|
+
}
|
|
692
|
+
|
|
590
693
|
// src/github/repository-ruleset-reconcile.ts
|
|
591
694
|
var guardedPullRequestFields = (rule) => {
|
|
592
695
|
const params = rule?.parameters ?? {};
|
|
@@ -631,6 +734,8 @@ var reconcileRuleset = (input) => Effect4.gen(function* () {
|
|
|
631
734
|
if (observed === undefined) {
|
|
632
735
|
observed = yield* probeByName(octokit, { owner, repo, name: news.name, target });
|
|
633
736
|
}
|
|
737
|
+
const bypassAcknowledged = isBypassNarrowingAcknowledged(news);
|
|
738
|
+
const ruleAcknowledged = isRuleNarrowingAcknowledged(news);
|
|
634
739
|
const bypassRefusal = news.bypassActors === undefined ? undefined : bypassWideningRefusal({
|
|
635
740
|
owner,
|
|
636
741
|
repository: repo,
|
|
@@ -640,6 +745,16 @@ var reconcileRuleset = (input) => Effect4.gen(function* () {
|
|
|
640
745
|
});
|
|
641
746
|
if (bypassRefusal !== undefined)
|
|
642
747
|
return yield* Effect4.fail(bypassRefusal);
|
|
748
|
+
const bypassNarrowRefusal = news.bypassActors === undefined ? undefined : bypassNarrowingRefusal({
|
|
749
|
+
owner,
|
|
750
|
+
repository: repo,
|
|
751
|
+
name: news.name,
|
|
752
|
+
declared: news.bypassActors,
|
|
753
|
+
live: observed,
|
|
754
|
+
acknowledged: bypassAcknowledged
|
|
755
|
+
});
|
|
756
|
+
if (bypassNarrowRefusal !== undefined)
|
|
757
|
+
return yield* Effect4.fail(bypassNarrowRefusal);
|
|
643
758
|
const ruleRefusal = undeclaredLiveRuleRefusal({
|
|
644
759
|
owner,
|
|
645
760
|
repository: repo,
|
|
@@ -649,6 +764,16 @@ var reconcileRuleset = (input) => Effect4.gen(function* () {
|
|
|
649
764
|
});
|
|
650
765
|
if (ruleRefusal !== undefined)
|
|
651
766
|
return yield* Effect4.fail(ruleRefusal);
|
|
767
|
+
const ruleNarrowRefusal = ruleNarrowingRefusal({
|
|
768
|
+
owner,
|
|
769
|
+
repository: repo,
|
|
770
|
+
name: news.name,
|
|
771
|
+
declared: news.rules,
|
|
772
|
+
live: observed,
|
|
773
|
+
acknowledged: ruleAcknowledged
|
|
774
|
+
});
|
|
775
|
+
if (ruleNarrowRefusal !== undefined)
|
|
776
|
+
return yield* Effect4.fail(ruleNarrowRefusal);
|
|
652
777
|
const checksRefusal = requiredChecksOmissionRefusal({
|
|
653
778
|
owner,
|
|
654
779
|
repository: repo,
|
|
@@ -700,7 +825,8 @@ var attrsOf = (r) => ({
|
|
|
700
825
|
updatedAt: r.updated_at
|
|
701
826
|
});
|
|
702
827
|
function constraintRefusal(props) {
|
|
703
|
-
const
|
|
828
|
+
const pr = props.rules?.pullRequest === false ? undefined : props.rules?.pullRequest;
|
|
829
|
+
const approvals = pr?.requiredApprovingReviewCount;
|
|
704
830
|
if (approvals !== undefined) {
|
|
705
831
|
const reason = approvalCountRefusal(approvals);
|
|
706
832
|
if (reason !== undefined) {
|
|
@@ -710,7 +836,7 @@ function constraintRefusal(props) {
|
|
|
710
836
|
});
|
|
711
837
|
}
|
|
712
838
|
}
|
|
713
|
-
const methods =
|
|
839
|
+
const methods = pr?.allowedMergeMethods;
|
|
714
840
|
if (methods !== undefined) {
|
|
715
841
|
const reason = allowedMergeMethodsRefusal(methods);
|
|
716
842
|
if (reason !== undefined) {
|
|
@@ -796,7 +922,7 @@ function repoBaselineSettings(input) {
|
|
|
796
922
|
allowSquashMerge: true,
|
|
797
923
|
allowMergeCommit: false,
|
|
798
924
|
allowRebaseMerge: false,
|
|
799
|
-
allowAutoMerge:
|
|
925
|
+
allowAutoMerge: input.checks.length > 0,
|
|
800
926
|
deleteBranchOnMerge: true,
|
|
801
927
|
hasWiki: false
|
|
802
928
|
};
|
|
@@ -849,7 +975,15 @@ var declareRepoBaseline = (id, options) => Effect7.gen(function* () {
|
|
|
849
975
|
const ruleset = yield* owned(RepositoryRuleset(`${id}-ruleset`, repoBaselineRuleset(options)));
|
|
850
976
|
return { repository, ruleset };
|
|
851
977
|
});
|
|
978
|
+
// src/github/repository-ruleset-providers.ts
|
|
979
|
+
import * as GitHub3 from "alchemy/GitHub";
|
|
980
|
+
import * as Layer from "effect/Layer";
|
|
981
|
+
var repoPolicyProviders = (options) => {
|
|
982
|
+
const github = GitHub3.providers(options);
|
|
983
|
+
return Layer.mergeAll(github, RepositoryRulesetProvider().pipe(Layer.provideMerge(github)));
|
|
984
|
+
};
|
|
852
985
|
export {
|
|
986
|
+
BypassActorNarrowed,
|
|
853
987
|
BypassActorWidened,
|
|
854
988
|
DuplicateRuleset,
|
|
855
989
|
NeverReportedContext,
|
|
@@ -859,14 +993,16 @@ export {
|
|
|
859
993
|
RepositoryRuleset,
|
|
860
994
|
RepositoryRulesetProvider,
|
|
861
995
|
RequiredChecksOmitted,
|
|
996
|
+
RuleNarrowed,
|
|
862
997
|
RulesetConstraintRefused,
|
|
863
998
|
UndeclaredLiveRule,
|
|
864
999
|
declareRepoBaseline,
|
|
865
1000
|
declareRepoPolicy,
|
|
866
1001
|
repoBaselineRuleset,
|
|
867
1002
|
repoBaselineSettings,
|
|
868
|
-
repoPolicy
|
|
1003
|
+
repoPolicy,
|
|
1004
|
+
repoPolicyProviders
|
|
869
1005
|
};
|
|
870
1006
|
|
|
871
|
-
//# debugId=
|
|
1007
|
+
//# debugId=4642631C8C22EC1064756E2164756E21
|
|
872
1008
|
//# sourceMappingURL=index.js.map
|