chore: update Effect beta (#28505)

This commit is contained in:
Kit Langton
2026-05-20 15:09:19 -04:00
committed by GitHub
parent 3553754083
commit ec6d42d41d
5 changed files with 31 additions and 33 deletions

View File

@@ -111,7 +111,7 @@ describe("cross-spawn spawner", () => {
ChildProcess.make(process.execPath, ["-e", "process.stdout.write(process.cwd())"], { cwd: tmp.path }),
),
)
expect(out).toBe(tmp.path)
expect(yield* Effect.promise(() => fs.realpath(out))).toBe(yield* Effect.promise(() => fs.realpath(tmp.path)))
}),
)
@@ -119,7 +119,9 @@ describe("cross-spawn spawner", () => {
"fails for invalid cwd",
Effect.gen(function* () {
const exit = yield* Effect.exit(
ChildProcess.make("echo", ["test"], { cwd: "/nonexistent/directory/path" }).asEffect(),
ChildProcessSpawner.ChildProcessSpawner.use((svc) =>
svc.spawn(ChildProcess.make("echo", ["test"], { cwd: "/nonexistent/directory/path" })),
),
)
expect(Exit.isFailure(exit)).toBe(true)
}),

View File

@@ -50,12 +50,10 @@ export const Service =
static get defaultLayer() {
return Layer.effect(
this,
Config.all(fields)
.asEffect()
.pipe(
// oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion -- Config.all preserves the field shape, but its conditional return type also supports iterable inputs.
Effect.map((config) => this.of(config as Shape<Fields>)),
),
Config.all(fields).pipe(
// oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion -- Config.all preserves the field shape, but its conditional return type also supports iterable inputs.
Effect.map((config) => this.of(config as Shape<Fields>)),
),
)
}
}

View File

@@ -52,21 +52,19 @@ function validateCredential<A, E, R>(
}
function decodeCredential(input: string) {
return Encoding.decodeBase64String(input)
.asEffect()
.pipe(
Effect.match({
onFailure: emptyCredential,
onSuccess: (header) => {
const parts = header.split(":")
if (parts.length !== 2) return emptyCredential()
return {
username: parts[0],
password: Redacted.make(parts[1]),
}
},
}),
)
return Effect.fromResult(Encoding.decodeBase64String(input)).pipe(
Effect.match({
onFailure: emptyCredential,
onSuccess: (header) => {
const parts = header.split(":")
if (parts.length !== 2) return emptyCredential()
return {
username: parts[0],
password: Redacted.make(parts[1]),
}
},
}),
)
}
function credentialFromRequest(request: HttpServerRequest.HttpServerRequest) {