import * as Schema from "effect/Schema"; export const DpopPublicJwk = Schema.Struct({ kty: Schema.Literal("EC"), crv: Schema.Literal("P-256"), x: Schema.String.check(Schema.isNonEmpty()), y: Schema.String.check(Schema.isNonEmpty()),});export type DpopPublicJwk = typeof DpopPublicJwk.Type; export function normalizeDpopHtu(url: string): string | null { try { const parsed = new URL(url); parsed.hash = ""; parsed.search = ""; return parsed.toString(); } catch { return null; }}
import * as Schema from "effect/Schema";
export const DpopPublicJwk = Schema.Struct({
kty: Schema.Literal("EC"),
crv: Schema.Literal("P-256"),
x: Schema.String.check(Schema.isNonEmpty()),
y: Schema.String.check(Schema.isNonEmpty()),
});
export type DpopPublicJwk = typeof DpopPublicJwk.Type;
export function normalizeDpopHtu(url: string): string | null {
try {
const parsed = new URL(url);
parsed.hash = "";
parsed.search = "";
return parsed.toString();
} catch {
return null;
}
}