this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

atcute -> atsw.js

+6767 -224
+38 -23
app.js
··· 1 1 import { Component, createRef } from "preact"; 2 2 import { html } from "htm/preact"; 3 3 import { signal } from "@preact/signals"; 4 - import { getSession, createAuthorizationUrl } from "@atcute/oauth-browser-client"; 4 + import { getSession, listSessions, logIn, logOut, resolveDID } from "./atsw.js"; 5 + import metadata from "./client-metadata.json" with { type: "json" }; 5 6 6 - import { configure, client, resolve, scope } from "./oauth.js"; 7 7 import { publishSignal, deleteRecord, deleteExpiredRecords, connectJetstream } from "./signaling.js"; 8 8 import { createPeerConnection, createOffer, createAnswer } from "./rtc.js"; 9 9 10 - configure(); 10 + const config = { 11 + clientId: metadata.client_id, 12 + redirectUri: metadata.redirect_uris[0], 13 + scope: metadata.scope, 14 + }; 11 15 12 16 export class App extends Component { 13 17 loading = signal(true); 14 18 did = signal(""); 15 - xrpc = null; 19 + session = null; 16 20 callState = signal("idle"); // idle | calling | incoming | connected 17 21 incomingOffer = signal(null); // { callerDid, sdp } 18 22 localStream = signal(null); ··· 26 30 27 31 async componentDidMount() { 28 32 try { 29 - const did = localStorage.getItem("webrtc:did"); 30 - if (!did) return; 33 + let did = localStorage.getItem("webrtc:did"); 34 + if (!did) { 35 + // check if we just came back from OAuth 36 + const sessions = await listSessions(); 37 + if (sessions.length > 0) { 38 + did = sessions[sessions.length - 1].did; 39 + localStorage.setItem("webrtc:did", did); 40 + } else { 41 + return; 42 + } 43 + } 44 + 45 + const session = await getSession(did); 46 + if (!session) { 47 + localStorage.removeItem("webrtc:did"); 48 + return; 49 + } 31 50 32 - const session = await getSession(did, { allowStale: false }); 33 - this.did.value = session.info.sub; 34 - this.xrpc = client(session); 51 + this.session = session; 52 + this.did.value = session.did; 35 53 this.#startJetstream(); 36 54 this.#startPreview(); 37 - deleteExpiredRecords(this.xrpc, this.did.value).catch((e) => 55 + deleteExpiredRecords(this.session).catch((e) => 38 56 console.error("failed to clean up expired records", e), 39 57 ); 40 58 } catch (e) { ··· 81 99 startCall = async (handle) => { 82 100 try { 83 101 this.status.value = "Resolving handle..."; 84 - const targetDid = await resolve(handle); 102 + const targetDid = await resolveDID(handle); 85 103 86 104 this.status.value = "Requesting camera & mic..."; 87 105 const stream = await navigator.mediaDevices.getUserMedia({ video: true, audio: true }); ··· 101 119 const sdp = await createOffer(this.pc, stream); 102 120 103 121 this.status.value = "Sending offer..."; 104 - this.signalUri = await publishSignal(this.xrpc, this.did.value, targetDid, "offer", sdp); 122 + this.signalUri = await publishSignal(this.session, targetDid, "offer", sdp); 105 123 this.#startExpiryTimer(); 106 124 107 125 this.callState.value = "calling"; ··· 136 154 const sdp = await createAnswer(this.pc, stream, offer.sdp); 137 155 138 156 this.status.value = "Sending answer..."; 139 - this.signalUri = await publishSignal(this.xrpc, this.did.value, offer.callerDid, "answer", sdp); 157 + this.signalUri = await publishSignal(this.session, offer.callerDid, "answer", sdp); 140 158 this.#startExpiryTimer(); 141 159 142 160 this.callState.value = "connected"; ··· 185 203 } 186 204 187 205 #deleteSignalRecord() { 188 - if (!this.signalUri || !this.xrpc) return; 206 + if (!this.signalUri || !this.session) return; 189 207 const rkey = this.signalUri.split("/").pop(); 190 - deleteRecord(this.xrpc, this.did.value, rkey).catch((e) => 208 + deleteRecord(this.session, rkey).catch((e) => 191 209 console.error("failed to delete signal record", e), 192 210 ); 193 211 this.signalUri = null; ··· 207 225 }, 60_000); 208 226 } 209 227 210 - logout = () => { 228 + logout = async () => { 211 229 this.jetstream?.close(); 212 230 this.#hangup(); 213 231 this.#stopPreview(); 232 + const did = this.did.value; 214 233 localStorage.removeItem("webrtc:did"); 215 234 this.did.value = ""; 216 - this.xrpc = null; 235 + this.session = null; 236 + await logOut(did); 217 237 }; 218 238 219 239 render() { ··· 263 283 const identifier = data.get("handle"); 264 284 if (typeof identifier !== "string") throw new Error("invalid handle"); 265 285 266 - const authUrl = await createAuthorizationUrl({ 267 - target: { type: "account", identifier }, 268 - scope, 269 - }); 270 - await new Promise((r) => setTimeout(r, 100)); 271 - window.location.assign(authUrl); 286 + await logIn(config, identifier); 272 287 } 273 288 274 289 render() {
+471
atsw.js
··· 1 + // This Source Code Form is subject to the terms of the Mozilla Public 2 + // License, v. 2.0. If a copy of the MPL was not distributed with this 3 + // file, You can obtain one at https://mozilla.org/MPL/2.0/. 4 + // 5 + // Copyright (c) 2026 Jake Lazaroff https://tangled.org/jakelazaroff.com/atsw 6 + 7 + /** 8 + * @typedef {Object} DPoPKey 9 + * @property {CryptoKey} privateKey 10 + * @property {JsonWebKey} jwk 11 + */ 12 + 13 + /** 14 + * @typedef {Object} OAuthConfig 15 + * @property {string} clientId 16 + * @property {string} redirectUri 17 + * @property {string} scope 18 + */ 19 + 20 + /** 21 + * @typedef {Object} AuthingSession 22 + * @property {string} state 23 + * @property {string} verifier 24 + * @property {DPoPKey} dpopKey 25 + * @property {string} tokenEndpoint 26 + * @property {string} issuer 27 + * @property {string} did 28 + * @property {string} pds 29 + * @property {OAuthConfig} config 30 + */ 31 + 32 + /** 33 + * @typedef {Object} OAuthSession 34 + * @property {string} pds 35 + * @property {string} did 36 + * @property {string} access_token 37 + * @property {DPoPKey} dpopKey 38 + * @property {string} tokenEndpoint 39 + * @property {string} clientId 40 + * @property {number} expiresAt 41 + * @property {string} [refresh_token] 42 + * @property {string} [dpopNonce] 43 + */ 44 + 45 + /** 46 + * @typedef {Object} AuthServerMetadata 47 + * @property {string} issuer 48 + * @property {string} authorization_endpoint 49 + * @property {string} token_endpoint 50 + * @property {string} pushed_authorization_request_endpoint 51 + */ 52 + 53 + const enc = new TextEncoder(); 54 + 55 + /** @param {ArrayBuffer | Uint8Array} buf */ 56 + const b64url = (buf) => 57 + btoa(String.fromCharCode(...new Uint8Array(buf))) 58 + .replace(/\+/g, "-") 59 + .replace(/\//g, "_") 60 + .replace(/=+$/, ""); 61 + 62 + /** @param {number} n */ 63 + const randomB64url = (n) => b64url(crypto.getRandomValues(new Uint8Array(n)).buffer); 64 + 65 + async function generatePKCE() { 66 + const verifier = randomB64url(32); 67 + const challenge = b64url(await crypto.subtle.digest("SHA-256", enc.encode(verifier))); 68 + return { verifier, challenge }; 69 + } 70 + 71 + async function generateDPoPKey() { 72 + const key = await crypto.subtle.generateKey({ name: "ECDSA", namedCurve: "P-256" }, true, [ 73 + "sign", 74 + ]); 75 + const jwk = await crypto.subtle.exportKey("jwk", key.publicKey); 76 + 77 + return { privateKey: key.privateKey, jwk }; 78 + } 79 + 80 + /** 81 + * @param {DPoPKey} dpopKey 82 + * @param {string} htm 83 + * @param {string} htu 84 + * @param {string} [nonce] 85 + * @param {string} [ath] 86 + */ 87 + async function createDPoP(dpopKey, htm, htu, nonce, ath) { 88 + const header = { alg: "ES256", typ: "dpop+jwt", jwk: dpopKey.jwk }; 89 + 90 + const jti = randomB64url(16); 91 + 92 + /** @type {Record<string, string | number>} */ 93 + const payload = { jti, htm, htu, iat: Math.floor(Date.now() / 1000) }; 94 + if (nonce) payload["nonce"] = nonce; 95 + if (ath) payload["ath"] = ath; 96 + 97 + const toSign = [ 98 + b64url(enc.encode(JSON.stringify(header)).buffer), 99 + b64url(enc.encode(JSON.stringify(payload)).buffer), 100 + ].join("."); 101 + 102 + const sig = await crypto.subtle.sign( 103 + { name: "ECDSA", hash: "SHA-256" }, 104 + dpopKey.privateKey, 105 + enc.encode(toSign), 106 + ); 107 + 108 + return toSign + "." + b64url(sig); 109 + } 110 + 111 + const MAX_DPOP_RETRIES = 2; 112 + const DEFAULT_TOKEN_TTL = 3600; 113 + const DID_HEADER = "x-atsw-did"; 114 + 115 + /** 116 + * @param {DPoPKey} key 117 + * @param {string} url 118 + * @param {URLSearchParams} body 119 + * @param {string} [nonce] 120 + * @returns {Promise<{ json: any, dpopNonce: string | undefined }>} 121 + */ 122 + async function dpopPost(key, url, body, nonce) { 123 + let dpopNonce = nonce; 124 + for (let attempts = 0; attempts < MAX_DPOP_RETRIES; attempts++) { 125 + const dpop = await createDPoP(key, "POST", url, dpopNonce); 126 + const res = await fetch(url, { 127 + method: "POST", 128 + headers: { "content-type": "application/x-www-form-urlencoded", DPoP: dpop }, 129 + body, 130 + }); 131 + 132 + const newNonce = res.headers.get("dpop-nonce"); 133 + const nonceChanged = newNonce && newNonce !== dpopNonce; 134 + dpopNonce = newNonce ?? dpopNonce; 135 + 136 + if (nonceChanged && 400 <= res.status && res.status <= 499) continue; 137 + 138 + return { json: await res.json(), dpopNonce }; 139 + } 140 + 141 + throw new Error("DPoP nonce retry failed"); 142 + } 143 + 144 + const DB_NAME = "atproto:oauth"; 145 + const DB_VERSION = 3; 146 + 147 + /** @type {Promise<IDBDatabase> | null} */ 148 + let dbPromise = null; 149 + 150 + /** @returns {Promise<IDBDatabase>} */ 151 + function openDb() { 152 + if (dbPromise) return dbPromise; 153 + dbPromise = new Promise((resolve, reject) => { 154 + const req = indexedDB.open(DB_NAME, DB_VERSION); 155 + req.onupgradeneeded = () => { 156 + const db = req.result; 157 + if (!db.objectStoreNames.contains("authing")) 158 + db.createObjectStore("authing", { keyPath: "state" }); 159 + 160 + if (db.objectStoreNames.contains("sessions")) db.deleteObjectStore("sessions"); 161 + const ssns = db.createObjectStore("sessions", { keyPath: "did" }); 162 + ssns.createIndex("pds", "pds", { unique: false }); 163 + }; 164 + req.onsuccess = () => resolve(req.result); 165 + req.onerror = () => { 166 + dbPromise = null; 167 + reject(req.error); 168 + }; 169 + }); 170 + 171 + return dbPromise; 172 + } 173 + 174 + /** 175 + * @param {IDBTransactionMode} mode 176 + * @param {string} store 177 + * @param {(s: IDBObjectStore) => IDBRequest} fn 178 + * @returns {Promise<any>} 179 + */ 180 + async function idb(mode, store, fn) { 181 + const db = await openDb(); 182 + return new Promise((resolve, reject) => { 183 + const tx = db.transaction(store, mode); 184 + const req = fn(tx.objectStore(store)); 185 + req.onsuccess = () => resolve(req.result); 186 + req.onerror = () => reject(req.error); 187 + }); 188 + } 189 + 190 + /** @param {AuthingSession} v */ 191 + const putAuthing = (v) => idb("readwrite", "authing", (s) => s.put(v)); 192 + 193 + /** @param {string} state @returns {Promise<AuthingSession | undefined>} */ 194 + const getAuthing = (state) => idb("readonly", "authing", (s) => s.get(state)); 195 + 196 + /** @param {string} state */ 197 + const deleteAuthing = (state) => idb("readwrite", "authing", (s) => s.delete(state)); 198 + 199 + /** @param {OAuthSession} v */ 200 + const putSession = (v) => idb("readwrite", "sessions", (s) => s.put(v)); 201 + 202 + /** @returns {Promise<OAuthSession[]>} */ 203 + export const listSessions = () => idb("readonly", "sessions", (s) => s.getAll()); 204 + 205 + /** @param {string} did @returns {Promise<OAuthSession | undefined>} */ 206 + export const getSession = (did) => idb("readonly", "sessions", (s) => s.get(did)); 207 + 208 + /** @param {string} pds @returns {Promise<OAuthSession[]>} */ 209 + const listSessionsByPDS = (pds) => idb("readonly", "sessions", (s) => s.index("pds").getAll(pds)); 210 + 211 + /** @param {string} did */ 212 + export const logOut = (did) => idb("readwrite", "sessions", (s) => s.delete(did)); 213 + 214 + /** @param {string} handle */ 215 + export async function resolveDID(handle) { 216 + // try to resolve DID using the DNS record 217 + try { 218 + const r = await fetch(`https://dns.google/resolve?name=_atproto.${handle}&type=TXT`); 219 + const j = await r.json(); 220 + const txt = j.Answer?.find(/** @param {any} a */ (a) => a.data?.startsWith('"did=')); 221 + if (txt) return /** @type {string} */ (txt.data.replace(/"/g, "").replace("did=", "")); 222 + } catch {} 223 + 224 + // HTTP .well-known resolution is blocked by CORS from the browser, so fall 225 + // back to a public AppView which exposes a CORS-enabled resolver. 226 + const r = await fetch( 227 + `https://public.api.bsky.app/xrpc/com.atproto.identity.resolveHandle?handle=${handle}`, 228 + ); 229 + const j = await r.json(); 230 + if (!j.did) throw new Error(`Could not resolve handle ${handle}: ${JSON.stringify(j)}`); 231 + return /** @type {string} */ (j.did); 232 + } 233 + 234 + /** @param {string} did */ 235 + async function resolvePDS(did) { 236 + // find URL of DID doc 237 + const url = did.startsWith("did:web:") 238 + ? `https://${did.split(":")[2]}/.well-known/did.json` 239 + : `https://plc.directory/${did}`; 240 + 241 + /** @type {{ service?: { type: string; serviceEndpoint: string }[] }} */ 242 + const doc = await fetch(url).then((res) => res.json()); 243 + 244 + // get service endpoint 245 + const endpoint = doc.service?.find( 246 + ({ type }) => type === "AtprotoPersonalDataServer", 247 + )?.serviceEndpoint; 248 + if (!endpoint) throw new Error(`No PDS found for ${did}`); 249 + 250 + return endpoint; 251 + } 252 + 253 + /** 254 + * @param {string} pds 255 + * @returns {Promise<AuthServerMetadata>} 256 + */ 257 + async function discoverAuthServer(pds) { 258 + try { 259 + const res = await fetch(`${pds}/.well-known/oauth-protected-resource`).then((res) => 260 + res.json(), 261 + ); 262 + const issuer = /** @type {string} */ (res.authorization_servers[0]); 263 + return await fetch(`${issuer}/.well-known/oauth-authorization-server`).then((res) => 264 + res.json(), 265 + ); 266 + } catch { 267 + return await fetch(`${pds}/.well-known/oauth-authorization-server`).then((res) => res.json()); 268 + } 269 + } 270 + 271 + /** 272 + * Start the OAuth login flow. Stores an authing session in IndexedDB and 273 + * redirects the browser to the authorization server. When the auth server 274 + * redirects back, the service worker will intercept the callback and complete 275 + * the token exchange. 276 + * @param {OAuthConfig} config 277 + * @param {string} handle 278 + * @returns {Promise<void>} 279 + */ 280 + export async function logIn(config, handle) { 281 + const did = await resolveDID(handle); 282 + const pds = await resolvePDS(did); 283 + const [meta, pkce, dpopKey] = await Promise.all([ 284 + discoverAuthServer(pds), 285 + generatePKCE(), 286 + generateDPoPKey(), 287 + ]); 288 + const state = randomB64url(16); 289 + 290 + await putAuthing({ 291 + state, 292 + verifier: pkce.verifier, 293 + dpopKey, 294 + tokenEndpoint: meta.token_endpoint, 295 + issuer: meta.issuer, 296 + did, 297 + pds: new URL(pds).origin, 298 + config, 299 + }); 300 + 301 + const parBody = new URLSearchParams({ 302 + client_id: config.clientId, 303 + redirect_uri: config.redirectUri, 304 + response_type: "code", 305 + scope: config.scope, 306 + state, 307 + code_challenge: pkce.challenge, 308 + code_challenge_method: "S256", 309 + login_hint: handle, 310 + }); 311 + 312 + const { json: parJson } = await dpopPost( 313 + dpopKey, 314 + meta.pushed_authorization_request_endpoint, 315 + parBody, 316 + ); 317 + if (parJson.error) throw new Error("PAR error: " + JSON.stringify(parJson)); 318 + 319 + const authUrl = new URL(meta.authorization_endpoint); 320 + authUrl.searchParams.set("client_id", config.clientId); 321 + authUrl.searchParams.set("request_uri", parJson.request_uri); 322 + location.href = authUrl.href; 323 + } 324 + 325 + const sw = globalThis; 326 + if (typeof ServiceWorkerGlobalScope !== "undefined" && sw instanceof ServiceWorkerGlobalScope) { 327 + sw.oninstall = () => sw.skipWaiting(); 328 + sw.onactivate = (e) => e.waitUntil(sw.clients.claim()); 329 + sw.onfetch = async (e) => 330 + e.respondWith( 331 + new Promise(async (resolve) => { 332 + const url = new URL(e.request.url); 333 + const code = url.searchParams.get("code"); 334 + const state = url.searchParams.get("state"); 335 + if (code && state) { 336 + const authing = await getAuthing(state); 337 + if (authing) return resolve(callback(authing, code, state)); 338 + } 339 + 340 + resolve(authedFetch(e.request)); 341 + }), 342 + ); 343 + } 344 + 345 + /** 346 + * @param {AuthingSession} authing 347 + * @param {string} code 348 + * @param {string} state 349 + */ 350 + async function callback(authing, code, state) { 351 + const body = new URLSearchParams({ 352 + grant_type: "authorization_code", 353 + code, 354 + redirect_uri: authing.config.redirectUri, 355 + client_id: authing.config.clientId, 356 + code_verifier: authing.verifier, 357 + }); 358 + 359 + const { json: tokenJson, dpopNonce } = await dpopPost( 360 + authing.dpopKey, 361 + authing.tokenEndpoint, 362 + body, 363 + ); 364 + if (tokenJson.error) { 365 + return new Response("token error: " + JSON.stringify(tokenJson), { status: 400 }); 366 + } 367 + 368 + /** @type {OAuthSession} */ 369 + const session = { 370 + pds: authing.pds, 371 + did: authing.did, 372 + access_token: tokenJson.access_token, 373 + refresh_token: tokenJson.refresh_token, 374 + dpopKey: authing.dpopKey, 375 + dpopNonce, 376 + tokenEndpoint: authing.tokenEndpoint, 377 + clientId: authing.config.clientId, 378 + expiresAt: Date.now() + (tokenJson.expires_in ?? DEFAULT_TOKEN_TTL) * 1000, 379 + }; 380 + await putSession(session); 381 + await deleteAuthing(state); 382 + 383 + const dest = new URL(authing.config.redirectUri); 384 + return Response.redirect(dest.href, 302); 385 + } 386 + 387 + /** @type {Map<string, Promise<OAuthSession>>} */ 388 + const refreshLocks = new Map(); 389 + 390 + /** @param {OAuthSession} session */ 391 + async function ensureFresh(session) { 392 + if (session.expiresAt > Date.now() || !session.refresh_token) return session; 393 + 394 + // see if this session is already being refreshed 395 + const lock = refreshLocks.get(session.did); 396 + if (lock) return lock; 397 + 398 + // lock the DID 399 + /** @type {PromiseWithResolvers<OAuthSession>} */ 400 + const { promise, resolve, reject } = Promise.withResolvers(); 401 + refreshLocks.set(session.did, promise); 402 + 403 + try { 404 + // refresh the session 405 + const { tokenEndpoint, dpopKey, refresh_token, clientId: client_id } = session; 406 + const body = new URLSearchParams({ grant_type: "refresh_token", refresh_token, client_id }); 407 + const { json, dpopNonce } = await dpopPost(dpopKey, tokenEndpoint, body, session.dpopNonce); 408 + if (json.error) throw new Error("Refresh error: " + JSON.stringify(json)); 409 + 410 + session.access_token = json.access_token; 411 + session.expiresAt = Date.now() + (json.expires_in ?? DEFAULT_TOKEN_TTL) * 1000; 412 + if (json.refresh_token) session.refresh_token = json.refresh_token; 413 + session.dpopNonce = dpopNonce; 414 + 415 + await putSession(session); 416 + resolve(session); 417 + return session; 418 + } catch (e) { 419 + reject(e); 420 + throw e; 421 + } finally { 422 + // release the lock 423 + refreshLocks.delete(session.did); 424 + } 425 + } 426 + 427 + /** @param {Request} req */ 428 + async function authedFetch(req) { 429 + const url = new URL(req.url); 430 + const did = req.headers.get(DID_HEADER); 431 + 432 + /** @type {OAuthSession | undefined} */ 433 + let session; 434 + if (did) session = await getSession(did); 435 + else { 436 + const sessions = await listSessionsByPDS(url.origin); 437 + if (sessions.length > 1) 438 + throw new Error(`Multiple sessions for ${url.origin}; set "x-atsw-did" header`); 439 + session = sessions[0]; 440 + } 441 + 442 + if (!session) return fetch(req); 443 + session = await ensureFresh(session); 444 + 445 + const htu = url.origin + url.pathname; 446 + const htm = req.method; 447 + 448 + let res = new Response(); 449 + for (let attempt = 0; attempt < MAX_DPOP_RETRIES; attempt++) { 450 + if (attempt > 0) session = (await getSession(session.did)) ?? session; 451 + 452 + const ath = b64url(await crypto.subtle.digest("SHA-256", enc.encode(session.access_token))); 453 + const dpop = await createDPoP(session.dpopKey, htm, htu, session.dpopNonce, ath); 454 + 455 + const headers = new Headers(req.headers); 456 + headers.delete(DID_HEADER); 457 + headers.set("authorization", `DPoP ${session.access_token}`); 458 + headers.set("dpop", dpop); 459 + 460 + res = await fetch(new Request(req.clone(), { headers })); 461 + const nonce = res.headers.get("dpop-nonce"); 462 + if (nonce && nonce !== session.dpopNonce) { 463 + session.dpopNonce = nonce; 464 + await putSession(session); 465 + } 466 + 467 + if (res.status !== 401) break; 468 + } 469 + 470 + return /** @type {Response} */ (res); 471 + }
-17
callback.html
··· 1 - <!doctype html> 2 - <script src="./vendor/importmap.js"></script> 3 - <script type="module"> 4 - import { finalizeAuthorization } from "@atcute/oauth-browser-client"; 5 - 6 - import { configure } from "./oauth.js"; 7 - configure(); 8 - 9 - const params = new URLSearchParams(location.hash.slice(1)); 10 - 11 - finalizeAuthorization(params) 12 - .then((agent) => { 13 - localStorage.setItem("webrtc:did", agent.session.info.sub); 14 - window.location.assign("/atprotocall/"); 15 - }) 16 - .catch((err) => console.error(err)); 17 - </script>
+1 -1
client-metadata.json
··· 1 1 { 2 2 "client_id": "https://jake.tngl.io/atprotocall/client-metadata.json", 3 3 "client_uri": "https://jake.tngl.io/atprotocall/", 4 - "redirect_uris": ["https://jake.tngl.io/atprotocall/callback.html"], 4 + "redirect_uris": ["https://jake.tngl.io/atprotocall/"], 5 5 "application_type": "native", 6 6 "client_name": "atrtc demo", 7 7 "dpop_bound_access_tokens": true,
+3
index.html
··· 10 10 <body> 11 11 <div id="app"></div> 12 12 <script type="module"> 13 + await navigator.serviceWorker.register("./atsw.js", { type: "module" }); 14 + await navigator.serviceWorker.ready; 15 + 13 16 import { render } from "preact"; 14 17 import { html } from "htm/preact"; 15 18 import { App } from "./app.js";
-39
oauth.js
··· 1 - import metadata from "./client-metadata.json" with { type: "json" }; 2 - 3 - export const scope = metadata.scope; 4 - 5 - import { Client } from "@atcute/client"; 6 - import { configureOAuth, OAuthUserAgent } from "@atcute/oauth-browser-client"; 7 - import { 8 - CompositeDidDocumentResolver, 9 - LocalActorResolver, 10 - PlcDidDocumentResolver, 11 - WebDidDocumentResolver, 12 - XrpcHandleResolver, 13 - } from "@atcute/identity-resolver"; 14 - 15 - const resolver = new LocalActorResolver({ 16 - handleResolver: new XrpcHandleResolver({ serviceUrl: "https://public.api.bsky.app" }), 17 - didDocumentResolver: new CompositeDidDocumentResolver({ 18 - methods: { plc: new PlcDidDocumentResolver(), web: new WebDidDocumentResolver() }, 19 - }), 20 - }); 21 - 22 - export function configure() { 23 - configureOAuth({ 24 - metadata: { client_id: metadata.client_id, redirect_uri: metadata.redirect_uris[0] }, 25 - identityResolver: resolver, 26 - }); 27 - } 28 - 29 - /** @param {string} handleOrDid */ 30 - export async function resolve(handleOrDid) { 31 - const { did } = await resolver.resolve(handleOrDid); 32 - return did; 33 - } 34 - 35 - /** @param {import("@atcute/oauth-browser-client").Session} session */ 36 - export function client(session) { 37 - const handler = new OAuthUserAgent(session); 38 - return new Client({ handler }); 39 - }
+25 -23
signaling.js
··· 3 3 const MAX_AGE_MS = 60_000; 4 4 5 5 /** 6 - * @param {import("@atcute/client").Client} client 7 - * @param {string} repo - sender's DID 6 + * @param {import("./atsw.js").OAuthSession} session 8 7 * @param {string} targetDid - recipient's DID 9 8 * @param {"offer"|"answer"} type 10 9 * @param {string} sdp 11 10 * @returns {Promise<string>} the AT URI of the created record 12 11 */ 13 - export async function publishSignal(client, repo, targetDid, type, sdp) { 14 - const res = await client.post("com.atproto.repo.createRecord", { 15 - params: {}, 16 - input: { 17 - repo, 12 + export async function publishSignal(session, targetDid, type, sdp) { 13 + const res = await fetch(`${session.pds}/xrpc/com.atproto.repo.createRecord`, { 14 + method: "POST", 15 + headers: { "content-type": "application/json", "x-atsw-did": session.did }, 16 + body: JSON.stringify({ 17 + repo: session.did, 18 18 collection: COLLECTION, 19 19 record: { 20 20 $type: COLLECTION, ··· 23 23 sdp, 24 24 createdAt: new Date().toISOString(), 25 25 }, 26 - }, 26 + }), 27 27 }); 28 - return res.data.uri; 28 + const data = await res.json(); 29 + return data.uri; 29 30 } 30 31 31 32 /** 32 - * @param {import("@atcute/client").Client} client 33 - * @param {string} repo 33 + * @param {import("./atsw.js").OAuthSession} session 34 34 * @param {string} rkey 35 35 */ 36 - export async function deleteRecord(client, repo, rkey) { 37 - await client.post("com.atproto.repo.deleteRecord", { 38 - params: {}, 39 - input: { repo, collection: COLLECTION, rkey }, 36 + export async function deleteRecord(session, rkey) { 37 + await fetch(`${session.pds}/xrpc/com.atproto.repo.deleteRecord`, { 38 + method: "POST", 39 + headers: { "content-type": "application/json", "x-atsw-did": session.did }, 40 + body: JSON.stringify({ repo: session.did, collection: COLLECTION, rkey }), 40 41 }); 41 42 } 42 43 43 44 /** 44 45 * Delete all expired session records for the given repo. 45 - * @param {import("@atcute/client").Client} client 46 - * @param {string} repo 46 + * @param {import("./atsw.js").OAuthSession} session 47 47 */ 48 - export async function deleteExpiredRecords(client, repo) { 49 - const res = await client.get("com.atproto.repo.listRecords", { 50 - params: { repo, collection: COLLECTION, limit: 100 }, 51 - }); 48 + export async function deleteExpiredRecords(session) { 49 + const res = await fetch( 50 + `${session.pds}/xrpc/com.atproto.repo.listRecords?repo=${session.did}&collection=${COLLECTION}&limit=100`, 51 + { headers: { "x-atsw-did": session.did } }, 52 + ); 53 + const data = await res.json(); 52 54 const now = Date.now(); 53 55 await Promise.all( 54 - res.data.records 56 + data.records 55 57 .filter((r) => now - new Date(r.value.createdAt).getTime() > MAX_AGE_MS) 56 58 .map((r) => { 57 59 const rkey = r.uri.split("/").pop(); 58 - return deleteRecord(client, repo, rkey); 60 + return deleteRecord(session, rkey); 59 61 }), 60 62 ); 61 63 }
+1 -4
unpm.json
··· 3 3 "preact": "https://esm.sh/preact", 4 4 "preact/hooks": "https://esm.sh/preact/hooks", 5 5 "htm/preact": "https://esm.sh/htm/preact?external=preact", 6 - "@preact/signals": "https://esm.sh/@preact/signals?external=preact", 7 - "@atcute/client": "https://esm.sh/@atcute/client", 8 - "@atcute/identity-resolver": "https://esm.sh/@atcute/identity-resolver", 9 - "@atcute/oauth-browser-client": "https://esm.sh/@atcute/oauth-browser-client@3.0.0" 6 + "@preact/signals": "https://esm.sh/@preact/signals?external=preact" 10 7 }, 11 8 "unpm": { 12 9 "root": "/atprotocall/vendor"
-3
vendor/esm.sh/@atcute/client@4.2.1/es2022/client.mjs
··· 1 - /* esm.sh - @atcute/client@4.2.1 */ 2 - import*as u from"../../lexicons@1.2.10/es2022/validations.mjs";var v=s=>typeof s=="object"?s.handle.bind(s):s,S=({service:s,fetch:e=fetch})=>async(t,r)=>{let n=new URL(t,s);return await e(n.href,r)};var E=/\bapplication\/json\b/,w=class s{handler;proxy;constructor({handler:e,proxy:t=null}){this.handler=v(e),this.proxy=t}clone({handler:e=this.handler,proxy:t=this.proxy}={}){return new s({handler:e,proxy:t})}get(e,t={}){return this.#e("get",e,t)}post(e,t={}){return this.#e("post",e,t)}async call(e,t={}){if(!u.xrpcSchemaGenerated)return;if("mainSchema"in e&&(e=e.mainSchema),e.params!==null){let a=u.safeParse(e.params,t.params);if(!a.ok)throw new f("params",a)}if(e.type==="xrpc_procedure"&&e.input?.type==="lex"){let a=u.safeParse(e.input.schema,t.input);if(!a.ok)throw new f("input",a)}let r=e.type==="xrpc_query",n=r?"get":"post";if(t.as===void 0&&e.output?.type==="blob")throw new TypeError("`as` option is required for endpoints returning blobs");let i=t.as!==void 0?t.as:e.output?.type==="lex"?"json":null,o=await this.#e(n,e.nsid,{params:t.params,input:r?void 0:t.input,as:i,signal:t.signal,headers:t.headers});if(i==="json"&&o.ok&&e.output?.type==="lex"){let a=u.safeParse(e.output.schema,o.data);if(!a.ok)throw new f("output",a);return{ok:!0,status:o.status,headers:o.headers,data:a.value}}return o}async#e(e,t,{signal:r,as:n="json",headers:i,input:o,params:a}){let k=o&&(o instanceof Blob||ArrayBuffer.isView(o)||o instanceof ArrayBuffer||o instanceof ReadableStream),R=`/xrpc/${t}`+J(a),c=await this.handler(R,{method:e,signal:r,body:o&&!k?JSON.stringify(o):o,headers:P(i,{"content-type":o&&!k?"application/json":null,"atproto-proxy":U(this.proxy)}),duplex:o instanceof ReadableStream?"half":void 0});{let p=c.status,m=c.headers,l=m.get("content-type");if(p!==200){let h;if(l!=null&&E.test(l))try{let x=await c.json();b(x)&&(h=x)}catch{}else await c.body?.cancel();return{ok:!1,status:p,headers:m,data:h??{error:"UnknownXRPCError",message:`Request failed with status code ${p}`}}}{let h;switch(n){case"json":{if(l!=null&&E.test(l))h=await c.json();else throw await c.body?.cancel(),new TypeError(`Invalid response content-type (got ${l})`);break}case null:{h=null,await c.body?.cancel();break}case"blob":{h=await c.blob();break}case"bytes":{h=new Uint8Array(await c.arrayBuffer());break}case"stream":{h=c.body;break}}return{ok:!0,status:p,headers:m,data:h}}}}},J=s=>{let e;for(let t in s){let r=s[t];if(r!==void 0)if(e??=new URLSearchParams,Array.isArray(r))for(let n=0,i=r.length;n<i;n++){let o=r[n];e.append(t,""+o)}else e.set(t,""+r)}return e?"?"+e.toString():""},U=s=>s!=null?`${s.did}${s.serviceId}`:null,P=(s,e)=>{let t;for(let r in e){let n=e[r];n!==null&&(t??=new Headers(s),t.has(r)||t.set(r,n))}return t??s},b=s=>{if(typeof s!="object"||s==null)return!1;let e=typeof s.error,t=typeof s.message;return e==="string"&&(t==="undefined"||t==="string")},y=s=>{if(s instanceof Promise)return s.then(y);if(s.ok)return s.data;throw new d(s)},d=class extends Error{error;description;status;headers;constructor({status:e,headers:t=new Headers,data:r}){super(`${r.error} > ${r.message??"(unspecified description)"}`),this.name="ClientResponseError",this.error=r.error,this.description=r.message,this.status=e,this.headers=t}},f=class extends Error{target;result;constructor(e,t){super(`validation failed for ${e}: ${t.message}`),this.name="ClientValidationError",this.target=e,this.result=t}};import{getPdsEndpoint as I}from"../../identity@1.1.4/es2022/identity.mjs";var g=s=>{let t=s.split(".")[1],r;if(typeof t!="string")throw new Error("invalid token: missing part 2");try{r=j(t)}catch(n){throw new Error("invalid token: invalid b64 for part 2 ("+n.message+")")}try{return JSON.parse(r)}catch(n){throw new Error("invalid token: invalid json for part 2 ("+n.message+")")}},j=s=>{let e=s.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw new Error("base64 string is not of the correct length")}try{return $(e)}catch{return atob(e)}},$=s=>decodeURIComponent(atob(s).replace(/(.)/g,(e,t)=>{let r=t.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r}));var T=class{serviceUrl;fetch;#e;#t;#s;#n;#o;session;constructor({service:e,onExpired:t,onRefresh:r,onSessionUpdate:n,fetch:i=fetch}){this.serviceUrl=e,this.fetch=i,this.#e=new w({handler:S({service:e,fetch:i})}),this.#n=r,this.#s=t,this.#o=n}get dispatchUrl(){return this.session?.pdsUri??this.serviceUrl}async handle(e,t){await this.#t;let r=new URL(e,this.dispatchUrl),n=new Headers(t.headers);if(!this.session||n.has("authorization"))return(0,this.fetch)(r,t);let i=this.session.accessJwt;n.set("authorization",`Bearer ${i}`);let o=await(0,this.fetch)(r,{...t,headers:n});if(o.status!==401&&!await C(o))return o;try{await this.#a()}catch{return o}let a=this.session?.accessJwt;return t.signal?.aborted||!a||a===i||t.body instanceof ReadableStream?o:(await o.body?.cancel(),n.set("authorization",`Bearer ${a}`),await(0,this.fetch)(r,{...t,headers:n}))}#a(){return this.#t||=this.#i().finally(()=>this.#t=void 0)}async#i(){let e=this.session;if(!e)return;let t=await this.#e.post("com.atproto.server.refreshSession",{headers:{authorization:`Bearer ${e.refreshJwt}`}});if(!t.ok)throw(t.status===401||t.data.error==="ExpiredToken"||t.data.error==="InvalidToken")&&(this.session=void 0,this.#s?.(e)),new d(t);if(t.data.did!==e.did)throw this.session=void 0,this.#s?.(e),new d({status:401,data:{error:"InvalidDID"}});if(this.session!==e)throw new Error("concurrent session update detected");this.#r({...e,...t.data}),this.#n?.(this.session)}#r(e){let t=e.didDoc,r;t&&(r=I(t));let n={accessJwt:e.accessJwt,refreshJwt:e.refreshJwt,handle:e.handle,did:e.did,pdsUri:r,email:e.email,emailConfirmed:e.emailConfirmed,emailAuthFactor:e.emailAuthFactor,active:e.active??!0,inactiveStatus:e.status};return this.session=n,this.#o?.(n),n}async resume(e){if(e.refreshJwt===this.session?.refreshJwt){if(await this.#t,!this.session||e.did!==this.session.did)throw new d({status:401,data:{error:"InvalidToken"}});return this.session}let t=Date.now()/1e3+300,r=g(e.refreshJwt);if(t>=r.exp||r.sub!==e.did)throw new d({status:401,data:{error:"InvalidToken"}});let n=g(e.accessJwt);if(n.sub!==e.did)throw new d({status:401,data:{error:"InvalidToken"}});if(this.session=e,this.#t=void 0,t>=n.exp?await this.#a():y(this.#e.get("com.atproto.server.getSession",{headers:{authorization:`Bearer ${e.accessJwt}`}})).then(o=>{let a=this.session;!a||a.did!==o.did||this.#r({...a,...o})},o=>{}),!this.session)throw new d({status:401,data:{error:"InvalidToken"}});return this.session}async login(e){this.session=void 0,this.#t=void 0;let t=await y(this.#e.post("com.atproto.server.createSession",{input:{identifier:e.identifier,password:e.password,authFactorToken:e.code,allowTakendown:e.allowTakendown}}));return this.#r(t)}async logout(){let e=this.session;if(e){this.session=void 0,this.#t=void 0;try{await this.#e.post("com.atproto.server.deleteSession",{as:null,headers:{authorization:`Bearer ${e.refreshJwt}`}})}catch{}}}},C=async s=>{if(s.status!==400||_(s.headers)!=="application/json"||B(s.headers)>54*1.5)return!1;try{let e=await s.clone().json();if(b(e))return e.error==="ExpiredToken"}catch{}return!1},_=s=>s.get("content-type")?.split(";")[0]?.trim(),B=s=>Number(s.get("content-length")??";");export{w as Client,d as ClientResponseError,f as ClientValidationError,T as CredentialManager,v as buildFetchHandler,b as isXRPCErrorPayload,y as ok,S as simpleFetchHandler}; 3 - //# sourceMappingURL=./client.mjs.map
-1
vendor/esm.sh/@atcute/client@4.2.1/es2022/client.mjs.map
··· 1 - {"mappings":"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","names":["v","buildFetchHandler","handler","simpleFetchHandler","service","_fetch","pathname","init","url","JSON_CONTENT_TYPE_RE","Client","_Client","handler","proxy","buildFetchHandler","name","options","#perform","schema","paramsResult","ClientValidationError","inputResult","isQuery","method","format","response","outputResult","signal","headers","input","params","isWebInput","url","_constructSearchParams","_mergeHeaders","_constructProxyHeader","status","type","json","parsed","isXRPCErrorPayload","data","searchParams","key","value","idx","len","val","init","defaults","kindType","messageType","ok","ClientResponseError","target","result","getPdsEndpoint","decodeJwt","token","part","decoded","base64UrlDecode","e","str","output","b64DecodeUnicode","_m","p","code","CredentialManager","#server","#refreshSessionPromise","#onExpired","#onRefresh","#onSessionUpdate","service","onExpired","onRefresh","onSessionUpdate","_fetch","Client","simpleFetchHandler","pathname","init","url","headers","initialToken","initialResponse","isExpiredTokenResponse","#refreshSession","updatedToken","#refreshSessionInner","currentSession","response","ClientResponseError","#updateSession","raw","didDoc","pdsUri","getPdsEndpoint","newSession","session","now","refreshToken","decodeJwt","accessToken","ok","next","existing","_err","options","extractContentType","extractContentLength","data","isXRPCErrorPayload"],"sources":["../esm/npm/@atcute/client@4.2.1/node_modules/@atcute/client/lib/client.ts","../esm/npm/@atcute/client@4.2.1/node_modules/@atcute/client/lib/fetch-handler.ts","../esm/npm/@atcute/client@4.2.1/node_modules/@atcute/client/lib/credential-manager.ts","../esm/npm/@atcute/client@4.2.1/node_modules/@atcute/client/lib/utils/jwt.ts"],"sourcesContent":["import type { Did } from '@atcute/lexicons';\nimport type { XRPCProcedures, XRPCQueries } from '@atcute/lexicons/ambient';\nimport * as v from '@atcute/lexicons/validations';\nimport type {\n\tInferInput,\n\tInferOutput,\n\tObjectSchema,\n\tXRPCBlobBodyParam,\n\tXRPCLexBodyParam,\n\tXRPCProcedureMetadata,\n\tXRPCQueryMetadata,\n} from '@atcute/lexicons/validations';\n\nimport { buildFetchHandler, type FetchHandler, type FetchHandlerObject } from './fetch-handler.js';\n\n// #region Type utilities\ntype RequiredKeysOf\u003cTType extends object\u003e = TType extends any\n\t? Exclude\u003c\n\t\t\t{\n\t\t\t\t[Key in keyof TType]: TType extends Record\u003cKey, TType[Key]\u003e ? Key : never;\n\t\t\t}[keyof TType],\n\t\t\tundefined\n\t\t\u003e\n\t: never;\n\ntype HasRequiredKeys\u003cTType extends object\u003e = RequiredKeysOf\u003cTType\u003e extends never ? false : true;\n\n// #endregion\n\n// #region Type definitions for response formats\ntype ResponseFormat = 'json' | 'blob' | 'bytes' | 'stream';\n\ntype FormattedResponse\u003cTDef\u003e = {\n\tjson: TDef extends XRPCQueryMetadata\u003cany, infer Body extends XRPCLexBodyParam, any\u003e\n\t\t? InferOutput\u003cBody['schema']\u003e\n\t\t: TDef extends XRPCProcedureMetadata\u003cany, any, infer Body extends XRPCLexBodyParam, any\u003e\n\t\t\t? InferOutput\u003cBody['schema']\u003e\n\t\t\t: unknown;\n\tblob: Blob;\n\tbytes: Uint8Array;\n\tstream: ReadableStream\u003cUint8Array\u003e;\n};\n\n// #endregion\n\n// #region Type definitions for request options\ntype BaseRequestOptions = {\n\tsignal?: AbortSignal;\n\theaders?: HeadersInit;\n};\n\nexport type QueryRequestOptions\u003cTDef\u003e = BaseRequestOptions \u0026\n\t(TDef extends XRPCQueryMetadata\u003cinfer Params, infer Output, any\u003e\n\t\t? (Params extends ObjectSchema\n\t\t\t\t? // query has parameters\n\t\t\t\t\t{ params: InferInput\u003cParams\u003e }\n\t\t\t\t: // query has no parameters\n\t\t\t\t\t{ params?: Record\u003cstring, unknown\u003e }) \u0026\n\t\t\t\t(Output extends XRPCLexBodyParam // query has JSON response, format is optionally specified\n\t\t\t\t\t? { as?: ResponseFormat | null }\n\t\t\t\t\t: // query doesn't have JSON response, format needs to be specified\n\t\t\t\t\t\t{ as: ResponseFormat | null })\n\t\t: {\n\t\t\t\tas: ResponseFormat | null;\n\t\t\t\tparams?: Record\u003cstring, unknown\u003e;\n\t\t\t});\n\nexport type ProcedureRequestOptions\u003cTDef\u003e = BaseRequestOptions \u0026\n\t(TDef extends XRPCProcedureMetadata\u003cinfer Params, infer Input, infer Output, any\u003e\n\t\t? (Params extends ObjectSchema\n\t\t\t\t? // procedure has parameters\n\t\t\t\t\t{ params: InferInput\u003cParams\u003e }\n\t\t\t\t: // procedure has no parameters\n\t\t\t\t\t{ params?: Record\u003cstring, unknown\u003e }) \u0026\n\t\t\t\t(Input extends XRPCLexBodyParam\n\t\t\t\t\t? // procedure requires JSON input\n\t\t\t\t\t\t{ input: InferInput\u003cInput['schema']\u003e }\n\t\t\t\t\t: Input extends XRPCBlobBodyParam\n\t\t\t\t\t\t? // procedure requires blob\n\t\t\t\t\t\t\t{ input: Blob | ArrayBuffer | ArrayBufferView | ReadableStream }\n\t\t\t\t\t\t: // procedure doesn't specify input\n\t\t\t\t\t\t\t{ input?: Record\u003cstring, unknown\u003e | Blob | ArrayBuffer | ArrayBufferView | ReadableStream }) \u0026\n\t\t\t\t(Output extends XRPCLexBodyParam\n\t\t\t\t\t? // procedure has JSON response, format is optionally specified\n\t\t\t\t\t\t{ as?: ResponseFormat | null }\n\t\t\t\t\t: // procedure doesn't have JSON response, format needs to be specified\n\t\t\t\t\t\t{ as: ResponseFormat | null })\n\t\t: {\n\t\t\t\tas: ResponseFormat | null;\n\t\t\t\tinput?: Record\u003cstring, unknown\u003e | Blob | ArrayBuffer | ArrayBufferView | ReadableStream;\n\t\t\t\tparams?: Record\u003cstring, unknown\u003e;\n\t\t\t});\n\nexport type CallRequestOptions\u003cTMeta\u003e = BaseRequestOptions \u0026\n\t// as is required if the endpoint returns blob, optional otherwise\n\t(TMeta extends XRPCQueryMetadata\u003cany, infer Output, any\u003e\n\t\t? Output extends XRPCBlobBodyParam\n\t\t\t? { as: ResponseFormat | null }\n\t\t\t: { as?: ResponseFormat | null }\n\t\t: TMeta extends XRPCProcedureMetadata\u003cany, any, infer Output, any\u003e\n\t\t\t? Output extends XRPCBlobBodyParam\n\t\t\t\t? { as: ResponseFormat | null }\n\t\t\t\t: { as?: ResponseFormat | null }\n\t\t\t: { as?: ResponseFormat | null }) \u0026\n\t(TMeta extends XRPCQueryMetadata\u003cinfer Params, any, any\u003e\n\t\t? // query\n\t\t\tParams extends ObjectSchema\n\t\t\t? { params: InferInput\u003cParams\u003e }\n\t\t\t: { params?: Record\u003cstring, unknown\u003e }\n\t\t: TMeta extends XRPCProcedureMetadata\u003cinfer Params, infer Input, any, any\u003e\n\t\t\t? // procedure\n\t\t\t\t(Params extends ObjectSchema\n\t\t\t\t\t? { params: InferInput\u003cParams\u003e }\n\t\t\t\t\t: { params?: Record\u003cstring, unknown\u003e }) \u0026\n\t\t\t\t\t(Input extends XRPCLexBodyParam\n\t\t\t\t\t\t? { input: InferInput\u003cInput['schema']\u003e }\n\t\t\t\t\t\t: Input extends XRPCBlobBodyParam\n\t\t\t\t\t\t\t? { input: Blob | ArrayBuffer | ArrayBufferView | ReadableStream }\n\t\t\t\t\t\t\t: { input?: Record\u003cstring, unknown\u003e | Blob | ArrayBuffer | ArrayBufferView | ReadableStream })\n\t\t\t: never);\n\ntype InternalRequestOptions = BaseRequestOptions \u0026 {\n\tas?: ResponseFormat | null;\n\tparams?: Record\u003cstring, unknown\u003e;\n\tinput?: Record\u003cstring, unknown\u003e | Blob | BufferSource | ReadableStream;\n};\n\n// #endregion\n\n// #region Type definitions for client response\n/** standard XRPC error payload structure */\nexport type XRPCErrorPayload = {\n\t/** error name */\n\terror: string;\n\t/** error description */\n\tmessage?: string;\n};\n\ntype BaseClientResponse = {\n\t/** response status */\n\tstatus: number;\n\t/** response headers */\n\theaders: Headers;\n};\n\n/** represents a successful response returned by the client */\nexport type SuccessClientResponse\u003cTDef, TInit\u003e = BaseClientResponse \u0026 {\n\tok: true;\n\t/** response data */\n\tdata: TInit extends { as: infer TFormat }\n\t\t? TFormat extends ResponseFormat\n\t\t\t? FormattedResponse\u003cTDef\u003e[TFormat]\n\t\t\t: TFormat extends null\n\t\t\t\t? null\n\t\t\t\t: never\n\t\t: TDef extends XRPCQueryMetadata\u003cany, infer Body, any\u003e\n\t\t\t? Body extends XRPCLexBodyParam\n\t\t\t\t? InferOutput\u003cBody['schema']\u003e\n\t\t\t\t: null\n\t\t\t: TDef extends XRPCProcedureMetadata\u003cany, any, infer Body, any\u003e\n\t\t\t\t? Body extends XRPCLexBodyParam\n\t\t\t\t\t? InferOutput\u003cBody['schema']\u003e\n\t\t\t\t\t: null\n\t\t\t\t: never;\n};\n\n/** represents a failed response returned by the client */\nexport type FailedClientResponse = BaseClientResponse \u0026 {\n\tok: false;\n\t/** response data */\n\tdata: XRPCErrorPayload;\n};\n\n/** represents a response returned by the client */\nexport type ClientResponse\u003cTDef, TInit\u003e = SuccessClientResponse\u003cTDef, TInit\u003e | FailedClientResponse;\n\ntype UnknownClientResponse = { status: number; headers: Headers } \u0026 (\n\t| { ok: true; data: unknown }\n\t| { ok: false; data: XRPCErrorPayload }\n);\n\n// #endregion\n\n// #region Type definitions for call method\ntype Namespaced\u003cT\u003e = { mainSchema: T };\n\n// #endregion\n\n// #region Client\n/** options for configuring service proxying */\nexport type ServiceProxyOptions = {\n\t/** DID identifier that the upstream service should look up */\n\tdid: Did;\n\t/**\n\t * the specific service ID within the resolved DID document's `service` array\n\t * that the upstream service should forward requests to.\n\t *\n\t * must start with `#`\n\t *\n\t * common values include:\n\t * - `#atproto_pds` (personal data server)\n\t * - `#atproto_labeler` (labeler service)\n\t * - `#bsky_chat` (Bluesky chat service)\n\t */\n\tserviceId: `#${string}`;\n};\n\n/** options for configuring the client */\nexport type ClientOptions = {\n\t/** the underlying fetch handler it should make requests with */\n\thandler: FetchHandler | FetchHandlerObject;\n\t/** service proxy configuration */\n\tproxy?: ServiceProxyOptions | null;\n};\n\nconst JSON_CONTENT_TYPE_RE = /\\bapplication\\/json\\b/;\n\n/** XRPC API client */\nexport class Client\u003cTQueries = XRPCQueries, TProcedures = XRPCProcedures\u003e {\n\thandler: FetchHandler;\n\tproxy: ServiceProxyOptions | null;\n\n\tconstructor({ handler, proxy = null }: ClientOptions) {\n\t\tthis.handler = buildFetchHandler(handler);\n\t\tthis.proxy = proxy;\n\t}\n\n\t/**\n\t * clones this XRPC client\n\t * @param opts options to merge with\n\t * @returns the cloned XRPC client\n\t */\n\tclone({ handler = this.handler, proxy = this.proxy }: Partial\u003cClientOptions\u003e = {}): Client\u003c\n\t\tTQueries,\n\t\tTProcedures\n\t\u003e {\n\t\treturn new Client({ handler, proxy });\n\t}\n\n\t/**\n\t * performs an XRPC query request (HTTP GET)\n\t * @param name NSID of the query\n\t * @param options query options\n\t */\n\tget\u003cTName extends keyof TQueries, TInit extends QueryRequestOptions\u003cTQueries[TName]\u003e\u003e(\n\t\tname: TName,\n\t\t...options: HasRequiredKeys\u003cTInit\u003e extends true ? [init: TInit] : [init?: TInit]\n\t): Promise\u003cClientResponse\u003cTQueries[TName], TInit\u003e\u003e;\n\n\tget(name: string, options: InternalRequestOptions = {}) {\n\t\treturn this.#perform('get', name, options);\n\t}\n\n\t/**\n\t * performs an XRPC procedure request (HTTP POST)\n\t * @param name NSID of the procedure\n\t * @param options procedure options\n\t */\n\tpost\u003cTName extends keyof TProcedures, TInit extends ProcedureRequestOptions\u003cTProcedures[TName]\u003e\u003e(\n\t\tname: TName,\n\t\t...options: HasRequiredKeys\u003cTInit\u003e extends true ? [init: TInit] : [init?: TInit]\n\t): Promise\u003cClientResponse\u003cTProcedures[TName], TInit\u003e\u003e;\n\n\tpost(name: string, options: InternalRequestOptions = {}) {\n\t\treturn this.#perform('post', name, options);\n\t}\n\n\t/**\n\t * performs an XRPC call with schema validation\n\t * @param schema the lexicon schema for the endpoint, or a namespace containing mainSchema\n\t * @param options call options\n\t */\n\tcall\u003cTMeta extends XRPCQueryMetadata | XRPCProcedureMetadata, TInit extends CallRequestOptions\u003cTMeta\u003e\u003e(\n\t\tschema: TMeta | Namespaced\u003cTMeta\u003e,\n\t\t...options: HasRequiredKeys\u003cTInit\u003e extends true ? [init: TInit] : [init?: TInit]\n\t): Promise\u003cClientResponse\u003cTMeta, TInit\u003e\u003e;\n\n\tasync call(schema: any, options: any = {}): Promise\u003cany\u003e {\n\t\t// early bailout for tree-shaking when schemas aren't used\n\t\tif (!v.xrpcSchemaGenerated) {\n\t\t\treturn;\n\t\t}\n\n\t\t// extract mainSchema if namespace was passed\n\t\tif ('mainSchema' in schema) {\n\t\t\tschema = schema.mainSchema;\n\t\t}\n\n\t\tif (schema.params !== null) {\n\t\t\tconst paramsResult = v.safeParse(schema.params, options.params);\n\t\t\tif (!paramsResult.ok) {\n\t\t\t\tthrow new ClientValidationError('params', paramsResult);\n\t\t\t}\n\t\t}\n\n\t\tif (schema.type === 'xrpc_procedure' \u0026\u0026 schema.input?.type === 'lex') {\n\t\t\tconst inputResult = v.safeParse(schema.input.schema, options.input);\n\t\t\tif (!inputResult.ok) {\n\t\t\t\tthrow new ClientValidationError('input', inputResult);\n\t\t\t}\n\t\t}\n\n\t\tconst isQuery = schema.type === 'xrpc_query';\n\t\tconst method = isQuery ? 'get' : 'post';\n\n\t\tif (options.as === undefined \u0026\u0026 schema.output?.type === 'blob') {\n\t\t\tthrow new TypeError(`\\`as\\` option is required for endpoints returning blobs`);\n\t\t}\n\n\t\tconst format = options.as !== undefined ? options.as : schema.output?.type === 'lex' ? 'json' : null;\n\n\t\tconst response = await this.#perform(method, schema.nsid, {\n\t\t\tparams: options.params,\n\t\t\tinput: isQuery ? undefined : options.input,\n\t\t\tas: format,\n\t\t\tsignal: options.signal,\n\t\t\theaders: options.headers,\n\t\t});\n\n\t\tif (format === 'json' \u0026\u0026 response.ok \u0026\u0026 schema.output?.type === 'lex') {\n\t\t\tconst outputResult = v.safeParse(schema.output.schema, response.data);\n\t\t\tif (!outputResult.ok) {\n\t\t\t\tthrow new ClientValidationError('output', outputResult);\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tok: true,\n\t\t\t\tstatus: response.status,\n\t\t\t\theaders: response.headers,\n\t\t\t\tdata: outputResult.value,\n\t\t\t};\n\t\t}\n\n\t\treturn response;\n\t}\n\n\tasync #perform(\n\t\tmethod: 'get' | 'post',\n\t\tname: string,\n\t\t{ signal, as: format = 'json', headers, input, params }: InternalRequestOptions,\n\t) {\n\t\tconst isWebInput =\n\t\t\tinput \u0026\u0026\n\t\t\t(input instanceof Blob ||\n\t\t\t\tArrayBuffer.isView(input) ||\n\t\t\t\tinput instanceof ArrayBuffer ||\n\t\t\t\tinput instanceof ReadableStream);\n\n\t\tconst url = `/xrpc/${name}` + _constructSearchParams(params);\n\n\t\tconst response = await this.handler(url, {\n\t\t\tmethod,\n\t\t\tsignal,\n\t\t\tbody: input \u0026\u0026 !isWebInput ? JSON.stringify(input) : input,\n\t\t\theaders: _mergeHeaders(headers, {\n\t\t\t\t'content-type': input \u0026\u0026 !isWebInput ? 'application/json' : null,\n\t\t\t\t'atproto-proxy': _constructProxyHeader(this.proxy),\n\t\t\t}),\n\t\t\tduplex: input instanceof ReadableStream ? 'half' : undefined,\n\t\t});\n\n\t\t{\n\t\t\tconst status = response.status;\n\t\t\tconst headers = response.headers;\n\n\t\t\tconst type = headers.get('content-type');\n\n\t\t\tif (status !== 200) {\n\t\t\t\tlet json: any;\n\n\t\t\t\tif (type != null \u0026\u0026 JSON_CONTENT_TYPE_RE.test(type)) {\n\t\t\t\t\t// it should be okay to swallow the parsing error here\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst parsed = await response.json();\n\t\t\t\t\t\tif (isXRPCErrorPayload(parsed)) {\n\t\t\t\t\t\t\tjson = parsed;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch {}\n\t\t\t\t} else {\n\t\t\t\t\tawait response.body?.cancel();\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\tstatus: status,\n\t\t\t\t\theaders: headers,\n\t\t\t\t\tdata: json ?? {\n\t\t\t\t\t\terror: `UnknownXRPCError`,\n\t\t\t\t\t\tmessage: `Request failed with status code ${status}`,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t{\n\t\t\t\tlet data: any;\n\t\t\t\tswitch (format) {\n\t\t\t\t\tcase 'json': {\n\t\t\t\t\t\tif (type != null \u0026\u0026 JSON_CONTENT_TYPE_RE.test(type)) {\n\t\t\t\t\t\t\t// we shouldn't be handling parsing errors\n\t\t\t\t\t\t\tdata = await response.json();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tawait response.body?.cancel();\n\n\t\t\t\t\t\t\tthrow new TypeError(`Invalid response content-type (got ${type})`);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase null: {\n\t\t\t\t\t\tdata = null;\n\n\t\t\t\t\t\tawait response.body?.cancel();\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase 'blob': {\n\t\t\t\t\t\tdata = await response.blob();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase 'bytes': {\n\t\t\t\t\t\tdata = new Uint8Array(await response.arrayBuffer());\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase 'stream': {\n\t\t\t\t\t\tdata = response.body!;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tok: true,\n\t\t\t\t\tstatus: status,\n\t\t\t\t\theaders: headers,\n\t\t\t\t\tdata: data,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n}\n\n// #endregion\n\n// #region Utility functions\nconst _constructSearchParams = (params: Record\u003cstring, unknown\u003e | undefined): string =\u003e {\n\tlet searchParams: URLSearchParams | undefined;\n\n\tfor (const key in params) {\n\t\tconst value = params[key];\n\n\t\tif (value !== undefined) {\n\t\t\tsearchParams ??= new URLSearchParams();\n\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tfor (let idx = 0, len = value.length; idx \u003c len; idx++) {\n\t\t\t\t\tconst val = value[idx];\n\t\t\t\t\tsearchParams.append(key, '' + val);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsearchParams.set(key, '' + value);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn searchParams ? `?` + searchParams.toString() : '';\n};\n\nconst _constructProxyHeader = (proxy: ServiceProxyOptions | null | undefined): string | null =\u003e {\n\tif (proxy != null) {\n\t\treturn `${proxy.did}${proxy.serviceId}`;\n\t}\n\n\treturn null;\n};\n\nconst _mergeHeaders = (\n\tinit: HeadersInit | undefined,\n\tdefaults: Record\u003cstring, string | null\u003e,\n): HeadersInit | undefined =\u003e {\n\tlet headers: Headers | undefined;\n\n\tfor (const name in defaults) {\n\t\tconst value = defaults[name];\n\n\t\tif (value !== null) {\n\t\t\theaders ??= new Headers(init);\n\n\t\t\tif (!headers.has(name)) {\n\t\t\t\theaders.set(name, value);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn headers ?? init;\n};\n\nexport const isXRPCErrorPayload = (input: any): input is XRPCErrorPayload =\u003e {\n\tif (typeof input !== 'object' || input == null) {\n\t\treturn false;\n\t}\n\n\tconst kindType = typeof input.error;\n\tconst messageType = typeof input.message;\n\n\treturn kindType === 'string' \u0026\u0026 (messageType === 'undefined' || messageType === 'string');\n};\n// #endregion\n\n// #region Optimistic response helper\ntype ExtractSuccessData\u003cR\u003e = R extends { ok: true; data: infer D } ? D : never;\n\n/**\n * takes in the response returned by the client, and either returns the data if\n * it is a successful response, or throws if it's a failed response.\n * @param input either a ClientResponse, or a promise that resolves to a ClientResponse\n * @returns the data from a successful response\n *\n * @example\n * const data = await ok(client.get('com.atproto.server.describeServer'));\n * // ^? ComAtprotoServerDescribeServer.Output\n */\nexport const ok: {\n\t\u003cT extends UnknownClientResponse\u003e(promise: Promise\u003cT\u003e): Promise\u003cExtractSuccessData\u003cT\u003e\u003e;\n\t\u003cT extends UnknownClientResponse\u003e(response: T): ExtractSuccessData\u003cT\u003e;\n} = (input: Promise\u003cUnknownClientResponse\u003e | UnknownClientResponse): any =\u003e {\n\tif (input instanceof Promise) {\n\t\treturn input.then(ok);\n\t}\n\n\tif (input.ok) {\n\t\treturn input.data;\n\t}\n\n\tthrow new ClientResponseError(input);\n};\n\n/** options when constructing a ClientResponseError */\nexport type ClientResponseErrorOptions = {\n\tstatus: number;\n\theaders?: Headers;\n\tdata: XRPCErrorPayload;\n};\n\n/** represents an error response returned by the client */\nexport class ClientResponseError extends Error {\n\t/** error name returned by service */\n\treadonly error: string;\n\t/** error message returned by service */\n\treadonly description?: string;\n\n\t/** response status */\n\treadonly status: number;\n\t/** response headers */\n\treadonly headers: Headers;\n\n\tconstructor({ status, headers = new Headers(), data }: ClientResponseErrorOptions) {\n\t\tsuper(`${data.error} \u003e ${data.message ?? '(unspecified description)'}`);\n\n\t\tthis.name = 'ClientResponseError';\n\n\t\tthis.error = data.error;\n\t\tthis.description = data.message;\n\n\t\tthis.status = status;\n\t\tthis.headers = headers;\n\t}\n}\n\n/** represents a validation error during typed calls */\nexport class ClientValidationError extends Error {\n\t/** validation target (params, input, or output) */\n\treadonly target: 'params' | 'input' | 'output';\n\t/** validation result */\n\treadonly result: v.Err;\n\n\tconstructor(target: 'params' | 'input' | 'output', result: v.Err) {\n\t\tsuper(`validation failed for ${target}: ${result.message}`);\n\n\t\tthis.name = 'ClientValidationError';\n\t\tthis.target = target;\n\t\tthis.result = result;\n\t}\n}\n\n// #endregion\n","/** fetch handler function */\nexport type FetchHandler = (pathname: string, init: RequestInit) =\u003e Promise\u003cResponse\u003e;\n\n/** fetch handler in an object */\nexport interface FetchHandlerObject {\n\thandle(this: FetchHandlerObject, pathname: string, init: RequestInit): Promise\u003cResponse\u003e;\n}\n\nexport const buildFetchHandler = (handler: FetchHandler | FetchHandlerObject): FetchHandler =\u003e {\n\tif (typeof handler === 'object') {\n\t\treturn handler.handle.bind(handler);\n\t}\n\n\treturn handler;\n};\n\nexport interface SimpleFetchHandlerOptions {\n\tservice: string | URL;\n\tfetch?: typeof globalThis.fetch;\n}\n\nexport const simpleFetchHandler = ({\n\tservice,\n\tfetch: _fetch = fetch,\n}: SimpleFetchHandlerOptions): FetchHandler =\u003e {\n\treturn async (pathname, init) =\u003e {\n\t\tconst url = new URL(pathname, service);\n\t\treturn await _fetch(url.href, init);\n\t};\n};\n","import { getPdsEndpoint, type DidDocument } from '@atcute/identity';\nimport type { Did } from '@atcute/lexicons';\n\nimport type { ComAtprotoServerCreateSession } from '@atcute/atproto';\n\nimport { Client, ClientResponseError, isXRPCErrorPayload, ok } from './client.js';\nimport { simpleFetchHandler, type FetchHandlerObject } from './fetch-handler.js';\n\nimport { decodeJwt } from './utils/jwt.js';\n\n/**\n * represents the decoded access token, for convenience\n * @deprecated\n */\nexport interface AtpAccessJwt {\n\t/** access token scope */\n\tscope:\n\t\t| 'com.atproto.access'\n\t\t| 'com.atproto.appPass'\n\t\t| 'com.atproto.appPassPrivileged'\n\t\t| 'com.atproto.signupQueued'\n\t\t| 'com.atproto.takendown';\n\t/** account DID */\n\tsub: Did;\n\t/** expiration time in Unix seconds */\n\texp: number;\n\t/** token issued time in Unix seconds */\n\tiat: number;\n}\n\n/**\n * represents the the decoded refresh token, for convenience\n * @deprecated\n */\nexport interface AtpRefreshJwt {\n\t/** refresh token scope */\n\tscope: 'com.atproto.refresh';\n\t/** unique identifier for this session */\n\tjti: string;\n\t/** account DID */\n\tsub: Did;\n\t/** intended audience of this refresh token, in DID */\n\taud: Did;\n\t/** token expiration time in seconds */\n\texp: number;\n\t/** token issued time in seconds */\n\tiat: number;\n}\n\n/** session data, can be persisted and reused */\nexport interface AtpSessionData {\n\t/** refresh token */\n\trefreshJwt: string;\n\t/** access token */\n\taccessJwt: string;\n\t/** account handle */\n\thandle: string;\n\t/** account DID */\n\tdid: Did;\n\t/** PDS endpoint found in the DID document, this will be used as the service URI if provided */\n\tpdsUri?: string;\n\t/** email address of the account, might not be available if on app password */\n\temail?: string;\n\t/** whether the email address has been confirmed or not */\n\temailConfirmed?: boolean;\n\t/** whether the account has email-based two-factor authentication enabled */\n\temailAuthFactor?: boolean;\n\t/** whether the account is active (not deactivated, taken down, or suspended) */\n\tactive: boolean;\n\t/** possible reason for why the account is inactive */\n\tinactiveStatus?: string;\n}\n\nexport interface CredentialManagerOptions {\n\t/** PDS server URL */\n\tservice: string;\n\n\t/** custom fetch function */\n\tfetch?: typeof fetch;\n\n\t/** function called when the session expires and can't be refreshed */\n\tonExpired?: (session: AtpSessionData) =\u003e void;\n\t/** function called after a successful session refresh */\n\tonRefresh?: (session: AtpSessionData) =\u003e void;\n\t/** function called whenever the session object is updated (login, resume, refresh) */\n\tonSessionUpdate?: (session: AtpSessionData) =\u003e void;\n}\n\nexport class CredentialManager implements FetchHandlerObject {\n\t/** service URL to make authentication requests with */\n\treadonly serviceUrl: string;\n\t/** fetch implementation */\n\tfetch: typeof fetch;\n\n\t/** internal client instance for making authentication requests */\n\t#server: Client;\n\t/** holds a promise for the current refresh operation, used for debouncing */\n\t#refreshSessionPromise: Promise\u003cvoid\u003e | undefined;\n\n\t/** callback for session expiration */\n\t#onExpired: CredentialManagerOptions['onExpired'];\n\t/** callback for successful session refresh */\n\t#onRefresh: CredentialManagerOptions['onRefresh'];\n\t/** callback for session updates */\n\t#onSessionUpdate: CredentialManagerOptions['onSessionUpdate'];\n\n\t/** current active session, undefined if not authenticated */\n\tsession?: AtpSessionData;\n\n\tconstructor({\n\t\tservice,\n\t\tonExpired,\n\t\tonRefresh,\n\t\tonSessionUpdate,\n\t\tfetch: _fetch = fetch,\n\t}: CredentialManagerOptions) {\n\t\tthis.serviceUrl = service;\n\t\tthis.fetch = _fetch;\n\n\t\tthis.#server = new Client({ handler: simpleFetchHandler({ service, fetch: _fetch }) });\n\n\t\tthis.#onRefresh = onRefresh;\n\t\tthis.#onExpired = onExpired;\n\t\tthis.#onSessionUpdate = onSessionUpdate;\n\t}\n\n\t/** service URL to make actual API requests with */\n\tget dispatchUrl() {\n\t\treturn this.session?.pdsUri ?? this.serviceUrl;\n\t}\n\n\tasync handle(pathname: string, init: RequestInit): Promise\u003cResponse\u003e {\n\t\tawait this.#refreshSessionPromise;\n\n\t\tconst url = new URL(pathname, this.dispatchUrl);\n\t\tconst headers = new Headers(init.headers);\n\n\t\tif (!this.session || headers.has('authorization')) {\n\t\t\treturn (0, this.fetch)(url, init);\n\t\t}\n\n\t\tconst initialToken = this.session.accessJwt;\n\t\theaders.set('authorization', `Bearer ${initialToken}`);\n\n\t\tconst initialResponse = await (0, this.fetch)(url, { ...init, headers });\n\n\t\tif (initialResponse.status !== 401 \u0026\u0026 !(await isExpiredTokenResponse(initialResponse))) {\n\t\t\treturn initialResponse;\n\t\t}\n\n\t\ttry {\n\t\t\tawait this.#refreshSession();\n\t\t} catch {\n\t\t\treturn initialResponse;\n\t\t}\n\n\t\t// return initial response if:\n\t\t// - request was aborted\n\t\t// - refresh failed and cleared the session\n\t\t// - token didn't actually change (refresh failed silently)\n\t\t// - request body was a stream (can't be resent)\n\t\tconst updatedToken = this.session?.accessJwt;\n\t\tif (\n\t\t\tinit.signal?.aborted ||\n\t\t\t!updatedToken ||\n\t\t\tupdatedToken === initialToken ||\n\t\t\tinit.body instanceof ReadableStream\n\t\t) {\n\t\t\treturn initialResponse;\n\t\t}\n\n\t\t// cancel initial response to avoid resource leaks (Node.js)\n\t\tawait initialResponse.body?.cancel();\n\n\t\theaders.set('authorization', `Bearer ${updatedToken}`);\n\t\treturn await (0, this.fetch)(url, { ...init, headers });\n\t}\n\n\t#refreshSession() {\n\t\treturn (this.#refreshSessionPromise ||= this.#refreshSessionInner().finally(\n\t\t\t() =\u003e (this.#refreshSessionPromise = undefined),\n\t\t));\n\t}\n\n\tasync #refreshSessionInner(): Promise\u003cvoid\u003e {\n\t\tconst currentSession = this.session;\n\t\tif (!currentSession) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst response = await this.#server.post('com.atproto.server.refreshSession', {\n\t\t\theaders: {\n\t\t\t\tauthorization: `Bearer ${currentSession.refreshJwt}`,\n\t\t\t},\n\t\t});\n\n\t\tif (!response.ok) {\n\t\t\tconst isExpired =\n\t\t\t\tresponse.status === 401 ||\n\t\t\t\tresponse.data.error === 'ExpiredToken' ||\n\t\t\t\tresponse.data.error === 'InvalidToken';\n\n\t\t\tif (isExpired) {\n\t\t\t\tthis.session = undefined;\n\t\t\t\tthis.#onExpired?.(currentSession);\n\t\t\t}\n\n\t\t\tthrow new ClientResponseError(response);\n\t\t}\n\n\t\t// DID must not change during refresh\n\t\tif (response.data.did !== currentSession.did) {\n\t\t\tthis.session = undefined;\n\t\t\tthis.#onExpired?.(currentSession);\n\t\t\tthrow new ClientResponseError({ status: 401, data: { error: 'InvalidDID' } });\n\t\t}\n\n\t\t// protect against concurrent session updates\n\t\tif (this.session !== currentSession) {\n\t\t\tthrow new Error('concurrent session update detected');\n\t\t}\n\n\t\tthis.#updateSession({ ...currentSession, ...response.data });\n\t\tthis.#onRefresh?.(this.session!);\n\t}\n\n\t#updateSession(raw: ComAtprotoServerCreateSession.$output): AtpSessionData {\n\t\tconst didDoc = raw.didDoc as DidDocument | undefined;\n\n\t\tlet pdsUri: string | undefined;\n\t\tif (didDoc) {\n\t\t\tpdsUri = getPdsEndpoint(didDoc);\n\t\t}\n\n\t\tconst newSession: AtpSessionData = {\n\t\t\taccessJwt: raw.accessJwt,\n\t\t\trefreshJwt: raw.refreshJwt,\n\t\t\thandle: raw.handle,\n\t\t\tdid: raw.did,\n\t\t\tpdsUri: pdsUri,\n\t\t\temail: raw.email,\n\t\t\temailConfirmed: raw.emailConfirmed,\n\t\t\temailAuthFactor: raw.emailAuthFactor,\n\t\t\tactive: raw.active ?? true,\n\t\t\tinactiveStatus: raw.status,\n\t\t};\n\n\t\tthis.session = newSession;\n\t\tthis.#onSessionUpdate?.(newSession);\n\n\t\treturn newSession;\n\t}\n\n\t/**\n\t * resume from a persisted session\n\t * @param session session data, taken from `AtpAuth#session` after login\n\t */\n\tasync resume(session: AtpSessionData): Promise\u003cAtpSessionData\u003e {\n\t\t// protect against concurrent resume of the same session\n\t\tif (session.refreshJwt === this.session?.refreshJwt) {\n\t\t\tawait this.#refreshSessionPromise;\n\t\t\tif (!this.session || session.did !== this.session.did) {\n\t\t\t\tthrow new ClientResponseError({ status: 401, data: { error: 'InvalidToken' } });\n\t\t\t}\n\t\t\treturn this.session;\n\t\t}\n\n\t\tconst now = Date.now() / 1_000 + 60 * 5;\n\n\t\tconst refreshToken = decodeJwt(session.refreshJwt) as AtpRefreshJwt;\n\t\tif (now \u003e= refreshToken.exp || refreshToken.sub !== session.did) {\n\t\t\tthrow new ClientResponseError({ status: 401, data: { error: 'InvalidToken' } });\n\t\t}\n\n\t\tconst accessToken = decodeJwt(session.accessJwt) as AtpAccessJwt;\n\t\tif (accessToken.sub !== session.did) {\n\t\t\tthrow new ClientResponseError({ status: 401, data: { error: 'InvalidToken' } });\n\t\t}\n\n\t\t// set the session and clear any stale refresh promise\n\t\tthis.session = session;\n\t\tthis.#refreshSessionPromise = undefined;\n\n\t\tif (now \u003e= accessToken.exp) {\n\t\t\t// access token expired, need to refresh\n\t\t\tawait this.#refreshSession();\n\t\t} else {\n\t\t\t// access token still valid, fetch session info in background\n\t\t\tconst promise = ok(\n\t\t\t\tthis.#server.get('com.atproto.server.getSession', {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tauthorization: `Bearer ${session.accessJwt}`,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t);\n\n\t\t\tpromise.then(\n\t\t\t\t(next) =\u003e {\n\t\t\t\t\tconst existing = this.session;\n\t\t\t\t\tif (!existing || existing.did !== next.did) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.#updateSession({ ...existing, ...next });\n\t\t\t\t},\n\t\t\t\t(_err) =\u003e {\n\t\t\t\t\t// ignore error\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\tif (!this.session) {\n\t\t\tthrow new ClientResponseError({ status: 401, data: { error: 'InvalidToken' } });\n\t\t}\n\n\t\treturn this.session;\n\t}\n\n\t/**\n\t * sign in to an account\n\t * @param options credential options\n\t * @returns session data\n\t */\n\tasync login(options: AuthLoginOptions): Promise\u003cAtpSessionData\u003e {\n\t\t// reset the session\n\t\tthis.session = undefined;\n\t\tthis.#refreshSessionPromise = undefined;\n\n\t\tconst session = await ok(\n\t\t\tthis.#server.post('com.atproto.server.createSession', {\n\t\t\t\tinput: {\n\t\t\t\t\tidentifier: options.identifier,\n\t\t\t\t\tpassword: options.password,\n\t\t\t\t\tauthFactorToken: options.code,\n\t\t\t\t\tallowTakendown: options.allowTakendown,\n\t\t\t\t},\n\t\t\t}),\n\t\t);\n\n\t\treturn this.#updateSession(session);\n\t}\n\n\t/**\n\t * sign out of the current session, invalidating it server-side\n\t */\n\tasync logout(): Promise\u003cvoid\u003e {\n\t\tconst currentSession = this.session;\n\t\tif (!currentSession) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.session = undefined;\n\t\tthis.#refreshSessionPromise = undefined;\n\n\t\ttry {\n\t\t\tawait this.#server.post('com.atproto.server.deleteSession', {\n\t\t\t\tas: null,\n\t\t\t\theaders: {\n\t\t\t\t\tauthorization: `Bearer ${currentSession.refreshJwt}`,\n\t\t\t\t},\n\t\t\t});\n\t\t} catch {\n\t\t\t// ignore errors - session is already cleared locally\n\t\t}\n\t}\n}\n\n/** credentials */\nexport interface AuthLoginOptions {\n\t/** what account to login as, this could be domain handle, DID, or email address */\n\tidentifier: string;\n\t/** account password */\n\tpassword: string;\n\t/** two-factor authentication code, if email TOTP is enabled */\n\tcode?: string;\n\t/** allow signing in even if the account has been taken down */\n\tallowTakendown?: boolean;\n}\n\nconst isExpiredTokenResponse = async (response: Response): Promise\u003cboolean\u003e =\u003e {\n\tif (response.status !== 400) {\n\t\treturn false;\n\t}\n\n\tif (extractContentType(response.headers) !== 'application/json') {\n\t\treturn false;\n\t}\n\n\t// this is nasty as it relies heavily on what the PDS returns, but avoiding\n\t// cloning and reading the request as much as possible is better.\n\n\t// {\"error\":\"ExpiredToken\",\"message\":\"Token has expired\"}\n\t// {\"error\":\"ExpiredToken\",\"message\":\"Token is expired\"}\n\tif (extractContentLength(response.headers) \u003e 54 * 1.5) {\n\t\treturn false;\n\t}\n\n\ttry {\n\t\tconst data = await response.clone().json();\n\t\tif (isXRPCErrorPayload(data)) {\n\t\t\treturn data.error === 'ExpiredToken';\n\t\t}\n\t} catch {}\n\n\treturn false;\n};\n\nconst extractContentType = (headers: Headers) =\u003e {\n\treturn headers.get('content-type')?.split(';')[0]?.trim();\n};\nconst extractContentLength = (headers: Headers) =\u003e {\n\treturn Number(headers.get('content-length') ?? ';');\n};\n","/**\n * @module\n * JWT decoding utilities for session resumption checks.\n * This module is exported for convenience and is no way part of public API,\n * it can be removed at any time.\n */\n\n/**\n * Decodes a JWT token\n * @param token The token string\n * @returns JSON object from the token\n */\nexport const decodeJwt = (token: string): unknown =\u003e {\n\tconst pos = 1;\n\tconst part = token.split('.')[1];\n\n\tlet decoded: string;\n\n\tif (typeof part !== 'string') {\n\t\tthrow new Error('invalid token: missing part ' + (pos + 1));\n\t}\n\n\ttry {\n\t\tdecoded = base64UrlDecode(part);\n\t} catch (e) {\n\t\tthrow new Error('invalid token: invalid b64 for part ' + (pos + 1) + ' (' + (e as Error).message + ')');\n\t}\n\n\ttry {\n\t\treturn JSON.parse(decoded);\n\t} catch (e) {\n\t\tthrow new Error('invalid token: invalid json for part ' + (pos + 1) + ' (' + (e as Error).message + ')');\n\t}\n};\n\n/**\n * Decodes a URL-safe Base64 string\n * @param str URL-safe Base64 that needed to be decoded\n * @returns The actual string\n */\nexport const base64UrlDecode = (str: string): string =\u003e {\n\tlet output = str.replace(/-/g, '+').replace(/_/g, '/');\n\n\tswitch (output.length % 4) {\n\t\tcase 0:\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\toutput += '==';\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\toutput += '=';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new Error('base64 string is not of the correct length');\n\t}\n\n\ttry {\n\t\treturn b64DecodeUnicode(output);\n\t} catch {\n\t\treturn atob(output);\n\t}\n};\n\nconst b64DecodeUnicode = (str: string): string =\u003e {\n\treturn decodeURIComponent(\n\t\tatob(str).replace(/(.)/g, (_m, p) =\u003e {\n\t\t\tlet code = p.charCodeAt(0).toString(16).toUpperCase();\n\n\t\t\tif (code.length \u003c 2) {\n\t\t\t\tcode = '0' + code;\n\t\t\t}\n\n\t\t\treturn '%' + code;\n\t\t}),\n\t);\n};\n"],"version":3}
-4
vendor/esm.sh/@atcute/identity-resolver@1.2.2/es2022/identity-resolver.mjs
··· 1 - /* esm.sh - @atcute/identity-resolver@1.2.2 */ 2 - import{getAtprotoHandle as H,getPdsEndpoint as S}from"../../identity@1.1.4/es2022/identity.mjs";import{isDid as X}from"../../lexicons@1.2.10/es2022/syntax.mjs";var v=class extends Error{name="DidResolutionError"},h=class extends v{did;name="UnsupportedDidMethodError";constructor(e){super(`unsupported did method; did=${e}`),this.did=e}},U=class extends v{did;name="ImproperDidError";constructor(e){super(`improper did; did=${e}`),this.did=e}},p=class extends v{did;name="DocumentNotFoundError";constructor(e){super(`did document not found; did=${e}`),this.did=e}},u=class extends v{did;name="FailedDocumentResolutionError";constructor(e,r){super(`failed to resolve did document; did=${e}`,r),this.did=e}},E=class extends Error{name="HandleResolutionError"},f=class extends E{handle;name="DidNotFoundError";constructor(e){super(`handle returned no did; handle=${e}`),this.handle=e}},m=class extends E{handle;name="FailedHandleResolutionError";constructor(e,r){super(`failed to resolve handle; handle=${e}`,r),this.handle=e}},g=class extends E{handle;did;name="InvalidResolvedHandleError";constructor(e,r){super(`handle returned invalid did; handle=${e}; did=${r}`),this.handle=e,this.did=r}},R=class extends E{name="AmbiguousHandleError";constructor(e){super(`handle returned multiple did values; handle=${e}`)}},y=class extends Error{name="ActorResolutionError"};var A=class{handleResolver;didDocumentResolver;constructor(e){this.handleResolver=e.handleResolver,this.didDocumentResolver=e.didDocumentResolver}async resolve(e,r){let n=X(e),t;if(n)t=e;else try{t=await this.handleResolver.resolve(e,r)}catch(c){throw new y("failed to resolve handle",{cause:c})}let s;try{s=await this.didDocumentResolver.resolve(t,r)}catch(c){throw new y("failed to resolve did document",{cause:c})}let o=S(s);if(!o)throw new y("missing pds endpoint");let a="handle.invalid";if(n){let c=H(s);if(c)try{await this.handleResolver.resolve(c,r)===t&&(a=c)}catch{}}else H(s)===e&&(a=e);return{did:t,handle:a,pds:new URL(o).href}}};import{extractDidMethod as B}from"../../identity@1.1.4/es2022/identity.mjs";var T=class{#e;constructor({methods:e}){this.#e=new Map(Object.entries(e))}async resolve(e,r){let n=B(e),t=this.#e.get(n);if(t===void 0)throw new h(e);return await t.resolve(e,r)}};import{FailedResponseError as Q}from"../../util-fetch@1.0.5/es2022/util-fetch.mjs";import{defs as _}from"../../identity@1.1.4/es2022/identity.mjs";import{isResponseOk as q,parseResponseAsJson as z,pipe as G,validateJsonWith as K}from"../../util-fetch@1.0.5/es2022/util-fetch.mjs";var j=G(q,z(/^application\/(did\+ld\+)?json$/,20*1024),K(_.didDocument,{mode:"passthrough"}));var N=class{apiUrl;#e;constructor({apiUrl:e="https://plc.directory",fetch:r=fetch}={}){this.apiUrl=e,this.#e=r}async resolve(e,r){if(!e.startsWith("did:plc:"))throw new h(e);let n;try{let t=new URL(`/${encodeURIComponent(e)}`,this.apiUrl),s=await(0,this.#e)(t,{signal:r?.signal,cache:r?.noCache?"no-cache":void 0,redirect:"manual",headers:{accept:"application/did+ld+json,application/json"}});if(s.status>=300&&s.status<400)throw new TypeError("unexpected redirect");n=(await j(s)).json}catch(t){throw t instanceof Q&&t.status===404?new p(e):new u(e,{cause:t})}return n}};import{webDidToDocumentUrl as V}from"../../identity@1.1.4/es2022/identity.mjs";import{FailedResponseError as I}from"../../util-fetch@1.0.5/es2022/util-fetch.mjs";var P=class{#e;constructor({fetch:e=fetch}={}){this.#e=e}async resolve(e,r){if(!e.startsWith("did:web:"))throw new h(e);let n;try{let t=V(e),s=await(0,this.#e)(t,{signal:r?.signal,cache:r?.noCache?"no-cache":void 0,redirect:"manual",headers:{accept:"application/did+ld+json,application/json"}});if(s.status>=300&&s.status<400)throw new TypeError("unexpected redirect");n=(await j(s)).json}catch(t){throw t instanceof I&&t.status===404?new p(e):new u(e,{cause:t})}return n}},C=class{#e;constructor({fetch:e=fetch}={}){this.#e=e}async resolve(e,r){if(!e.startsWith("did:web:"))throw new h(e);let[n,...t]=e.slice(8).split(":").map(decodeURIComponent),s=new URL(`https://${n}/.well-known/did.json`);if(t.length>0)throw new U(e);let o;try{let a=await(0,this.#e)(s,{signal:r?.signal,cache:r?.noCache?"no-cache":void 0,redirect:"manual",headers:{accept:"application/did+ld+json,application/json"}});if(a.status>=300&&a.status<400)throw new TypeError("unexpected redirect");o=(await j(a)).json}catch(a){throw a instanceof I&&a.status===404?new p(e):new u(e,{cause:a})}return o}};import{defs as Y}from"../../identity@1.1.4/es2022/identity.mjs";import{FailedResponseError as Z,isResponseOk as ee,parseResponseAsJson as re,pipe as te,validateJsonWith as oe}from"../../util-fetch@1.0.5/es2022/util-fetch.mjs";import*as M from"../../../@badrap/valita@0.4.6/es2022/valita.mjs";var se=te(ee,re(/^application\/json$/,20*1024+16),oe(M.object({didDoc:Y.didDocument}),{mode:"passthrough"})),L=class{serviceUrl;#e;constructor({serviceUrl:e,fetch:r=fetch}){this.serviceUrl=e,this.#e=r}async resolve(e,r){let n;try{let t=new URL("/xrpc/com.atproto.identity.resolveDid",this.serviceUrl);t.searchParams.set("did",e);let s=await(0,this.#e)(t,{signal:r?.signal,cache:r?.noCache?"no-cache":void 0,headers:{accept:"application/json"}});n=(await se(s)).json.didDoc}catch(t){throw t instanceof Z&&t.status===404?new p(e):new u(e,{cause:t})}return n}};var k=class{#e;strategy;constructor({methods:e,strategy:r="race"}){this.#e=e,this.strategy=r}async resolve(e,r){let{http:n,dns:t}=this.#e,s=r?.signal,o=new AbortController;s&&s.addEventListener("abort",()=>o.abort(),{signal:o.signal});let a=t.resolve(e,{...r,signal:o.signal}),c=n.resolve(e,{...r,signal:o.signal});switch(this.strategy){case"race":return new Promise(d=>{a.then(l=>{o.abort(),d(l)},()=>d(c)),c.then(l=>{o.abort(),d(l)},()=>d(a))});case"dns-first":{c.catch(F);let d=await a.catch(F);return d?(o.abort(),d):c}case"http-first":{a.catch(F);let d=await c.catch(F);return d?(o.abort(),d):a}case"both":{let[d,l]=await Promise.allSettled([a,c]),x=d.status==="fulfilled"?d.value:void 0,D=l.status==="fulfilled"?l.value:void 0;if(x&&D&&x!==D)throw new R(e);return x||D||a}}}},F=()=>{};import{isAtprotoDid as ne}from"../../identity@1.1.4/es2022/identity.mjs";import{fetchDohJsonTxt as ae}from"../../util-fetch@1.0.5/es2022/util-fetch.mjs";var ie="_atproto",b="did=",J=class{dohUrl;#e;constructor({dohUrl:e,fetch:r=fetch}){this.dohUrl=e,this.#e=r}async resolve(e,r){let n;try{let o=new URL(this.dohUrl);o.searchParams.set("name",`${ie}.${e}`),o.searchParams.set("type","TXT");let a=await(0,this.#e)(o,{signal:r?.signal,cache:r?.noCache?"no-cache":void 0,headers:{accept:"application/dns-json"}});n=(await ae(a)).json}catch(o){throw new m(e,{cause:o})}let t=n.Status,s=n.Answer;if(t!==0)throw t===3?new f(e):new m(e,{cause:new TypeError(`dns returned ${t}`)});for(let o=0,a=s.length;o<a;o++){let d=s[o].data;if(!d.startsWith(b))continue;for(let x=o+1;x<a;x++)if(s[x].data.startsWith(b))throw new R(e);let l=d.slice(b.length);if(!ne(l))throw new g(e,l);return l}throw new f(e)}};import{isAtprotoDid as ce}from"../../identity@1.1.4/es2022/identity.mjs";import{FailedResponseError as de,isResponseOk as le,pipe as he,readResponseAsText as pe}from"../../util-fetch@1.0.5/es2022/util-fetch.mjs";var ue=he(le,pe(2064)),O=class{#e;constructor({fetch:e=fetch}={}){this.#e=e}async resolve(e,r){let n;try{let s=new URL("/.well-known/atproto-did",`https://${e}`),o=await(0,this.#e)(s,{signal:r?.signal,cache:r?.noCache?"no-cache":void 0,redirect:"manual"});if(o.status>=300&&o.status<400)throw new TypeError("unexpected redirect");n=(await ue(o)).text}catch(s){throw s instanceof de&&s.status===404?new f(e):new m(e,{cause:s})}let t=n.split(` 3 - `)[0].trim();if(!ce(t))throw new g(e,t);return t}};import*as $ from"../../../@badrap/valita@0.4.6/es2022/valita.mjs";import{isAtprotoDid as fe}from"../../identity@1.1.4/es2022/identity.mjs";import{FailedResponseError as me,isResponseOk as we,parseResponseAsJson as xe,pipe as ve,validateJsonWith as Ee}from"../../util-fetch@1.0.5/es2022/util-fetch.mjs";var ge=$.object({did:$.string().assert(i=>fe(i))}),Re=ve(we,xe(/^application\/json$/,4*1024),Ee(ge,{mode:"passthrough"})),W=class{serviceUrl;#e;constructor({serviceUrl:e,fetch:r=fetch}){this.serviceUrl=e,this.#e=r}async resolve(e,r){let n;try{let t=new URL("/xrpc/com.atproto.identity.resolveHandle",this.serviceUrl);t.searchParams.set("handle",e);let s=await(0,this.#e)(t,{signal:r?.signal,cache:r?.noCache?"no-cache":void 0,headers:{accept:"application/json"}});n=(await Re(s)).json}catch(t){throw t instanceof me&&t.status===400?new f(e):new m(e,{cause:t})}return n.did}};export{y as ActorResolutionError,R as AmbiguousHandleError,C as AtprotoWebDidDocumentResolver,T as CompositeDidDocumentResolver,k as CompositeHandleResolver,v as DidDocumentResolutionError,f as DidNotFoundError,p as DocumentNotFoundError,J as DohJsonHandleResolver,u as FailedDocumentResolutionError,m as FailedHandleResolutionError,E as HandleResolutionError,U as ImproperDidError,g as InvalidResolvedHandleError,A as LocalActorResolver,N as PlcDidDocumentResolver,h as UnsupportedDidMethodError,P as WebDidDocumentResolver,O as WellKnownHandleResolver,L as XrpcDidDocumentResolver,W as XrpcHandleResolver}; 4 - //# sourceMappingURL=./identity-resolver.mjs.map
-1
vendor/esm.sh/@atcute/identity-resolver@1.2.2/es2022/identity-resolver.mjs.map
··· 1 - {"mappings":"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","names":["getAtprotoHandle","getPdsEndpoint","isDid","DidDocumentResolutionError","UnsupportedDidMethodError","did","ImproperDidError","DocumentNotFoundError","FailedDocumentResolutionError","options","HandleResolutionError","DidNotFoundError","handle","FailedHandleResolutionError","InvalidResolvedHandleError","AmbiguousHandleError","ActorResolutionError","LocalActorResolver","options","actor","identifierIsDid","isDid","did","err","ActorResolutionError","doc","pds","getPdsEndpoint","handle","writtenHandle","getAtprotoHandle","extractDidMethod","CompositeDidDocumentResolver","#methods","methods","did","options","method","extractDidMethod","resolver","UnsupportedDidMethodError","FailedResponseError","defs","isResponseOk","parseResponseAsJson","pipe","validateJsonWith","fetchDocHandler","PlcDidDocumentResolver","#fetch","apiUrl","fetchThis","did","options","UnsupportedDidMethodError","json","url","response","fetchDocHandler","cause","FailedResponseError","DocumentNotFoundError","FailedDocumentResolutionError","webDidToDocumentUrl","FailedResponseError","WebDidDocumentResolver","#fetch","fetchThis","did","options","UnsupportedDidMethodError","json","url","webDidToDocumentUrl","response","fetchDocHandler","cause","FailedResponseError","DocumentNotFoundError","FailedDocumentResolutionError","AtprotoWebDidDocumentResolver","host","paths","ImproperDidError","defs","FailedResponseError","isResponseOk","parseResponseAsJson","pipe","validateJsonWith","v","fetchXrpcHandler","pipe","isResponseOk","parseResponseAsJson","validateJsonWith","defs","XrpcDidDocumentResolver","#fetch","serviceUrl","fetchThis","did","options","json","url","response","cause","FailedResponseError","DocumentNotFoundError","FailedDocumentResolutionError","CompositeHandleResolver","#methods","methods","strategy","handle","options","http","dns","parentSignal","controller","dnsPromise","httpPromise","resolve","did","noop","resolved","dnsResponse","httpResponse","dnsDid","httpDid","AmbiguousHandleError","isAtprotoDid","fetchDohJsonTxt","SUBDOMAIN","PREFIX","DohJsonHandleResolver","#fetch","dohUrl","fetchThis","handle","options","json","url","response","fetchDohJsonTxt","cause","FailedHandleResolutionError","status","answers","DidNotFoundError","i","il","data","j","AmbiguousHandleError","did","isAtprotoDid","InvalidResolvedHandleError","isAtprotoDid","FailedResponseError","isResponseOk","pipe","readResponseAsText","fetchWellKnownHandler","pipe","isResponseOk","readResponseAsText","WellKnownHandleResolver","#fetch","fetchThis","handle","options","text","url","response","cause","FailedResponseError","DidNotFoundError","FailedHandleResolutionError","did","isAtprotoDid","InvalidResolvedHandleError","v","isAtprotoDid","FailedResponseError","isResponseOk","parseResponseAsJson","pipe","validateJsonWith","response","input","isAtprotoDid","fetchXrpcHandler","pipe","isResponseOk","parseResponseAsJson","validateJsonWith","XrpcHandleResolver","#fetch","serviceUrl","fetchThis","handle","options","json","url","cause","FailedResponseError","DidNotFoundError","FailedHandleResolutionError"],"sources":["../esm/npm/@atcute/identity-resolver@1.2.2/node_modules/@atcute/identity-resolver/lib/actor/local.ts","../esm/npm/@atcute/identity-resolver@1.2.2/node_modules/@atcute/identity-resolver/lib/errors.ts","../esm/npm/@atcute/identity-resolver@1.2.2/node_modules/@atcute/identity-resolver/lib/did/composite.ts","../esm/npm/@atcute/identity-resolver@1.2.2/node_modules/@atcute/identity-resolver/lib/did/methods/plc.ts","../esm/npm/@atcute/identity-resolver@1.2.2/node_modules/@atcute/identity-resolver/lib/did/utils.ts","../esm/npm/@atcute/identity-resolver@1.2.2/node_modules/@atcute/identity-resolver/lib/did/methods/web.ts","../esm/npm/@atcute/identity-resolver@1.2.2/node_modules/@atcute/identity-resolver/lib/did/methods/xrpc.ts","../esm/npm/@atcute/identity-resolver@1.2.2/node_modules/@atcute/identity-resolver/lib/handle/composite.ts","../esm/npm/@atcute/identity-resolver@1.2.2/node_modules/@atcute/identity-resolver/lib/handle/methods/doh-json.ts","../esm/npm/@atcute/identity-resolver@1.2.2/node_modules/@atcute/identity-resolver/lib/handle/methods/well-known.ts","../esm/npm/@atcute/identity-resolver@1.2.2/node_modules/@atcute/identity-resolver/lib/handle/methods/xrpc.ts"],"sourcesContent":["import { getAtprotoHandle, getPdsEndpoint } from '@atcute/identity';\nimport { isDid, type ActorIdentifier, type Did, type Handle } from '@atcute/lexicons/syntax';\n\nimport { ActorResolutionError } from '../errors.js';\nimport type {\n\tActorResolver,\n\tDidDocumentResolver,\n\tHandleResolver,\n\tResolveActorOptions,\n\tResolvedActor,\n} from '../types.js';\n\nexport interface LocalActorResolverOptions {\n\thandleResolver: HandleResolver;\n\tdidDocumentResolver: DidDocumentResolver;\n}\n\nexport class LocalActorResolver implements ActorResolver {\n\thandleResolver: HandleResolver;\n\tdidDocumentResolver: DidDocumentResolver;\n\n\tconstructor(options: LocalActorResolverOptions) {\n\t\tthis.handleResolver = options.handleResolver;\n\t\tthis.didDocumentResolver = options.didDocumentResolver;\n\t}\n\n\tasync resolve(actor: ActorIdentifier, options?: ResolveActorOptions): Promise\u003cResolvedActor\u003e {\n\t\tconst identifierIsDid = isDid(actor);\n\n\t\tlet did: Did;\n\t\tif (identifierIsDid) {\n\t\t\tdid = actor as Did;\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tdid = await this.handleResolver.resolve(actor as Handle, options);\n\t\t\t} catch (err) {\n\t\t\t\tthrow new ActorResolutionError(`failed to resolve handle`, { cause: err });\n\t\t\t}\n\t\t}\n\n\t\tlet doc;\n\t\ttry {\n\t\t\tdoc = await this.didDocumentResolver.resolve(did, options);\n\t\t} catch (err) {\n\t\t\tthrow new ActorResolutionError(`failed to resolve did document`, { cause: err });\n\t\t}\n\n\t\tconst pds = getPdsEndpoint(doc);\n\t\tif (!pds) {\n\t\t\tthrow new ActorResolutionError(`missing pds endpoint`);\n\t\t}\n\n\t\tlet handle: Handle = 'handle.invalid';\n\t\tif (identifierIsDid) {\n\t\t\tconst writtenHandle = getAtprotoHandle(doc);\n\t\t\tif (writtenHandle) {\n\t\t\t\ttry {\n\t\t\t\t\tconst resolved = await this.handleResolver.resolve(writtenHandle, options);\n\n\t\t\t\t\tif (resolved === did) {\n\t\t\t\t\t\thandle = writtenHandle;\n\t\t\t\t\t}\n\t\t\t\t} catch {}\n\t\t\t}\n\t\t} else if (getAtprotoHandle(doc) === actor) {\n\t\t\thandle = actor as Handle;\n\t\t}\n\n\t\treturn {\n\t\t\tdid: did,\n\t\t\thandle: handle,\n\t\t\tpds: new URL(pds).href,\n\t\t};\n\t}\n}\n","import type { Did } from '@atcute/lexicons/syntax';\n\n// #region DID document resolution errors\nexport class DidDocumentResolutionError extends Error {\n\toverride name = 'DidResolutionError';\n}\n\nexport class UnsupportedDidMethodError extends DidDocumentResolutionError {\n\toverride name = 'UnsupportedDidMethodError';\n\n\tconstructor(public did: Did) {\n\t\tsuper(`unsupported did method; did=${did}`);\n\t}\n}\n\nexport class ImproperDidError extends DidDocumentResolutionError {\n\toverride name = 'ImproperDidError';\n\n\tconstructor(public did: Did) {\n\t\tsuper(`improper did; did=${did}`);\n\t}\n}\n\nexport class DocumentNotFoundError extends DidDocumentResolutionError {\n\toverride name = 'DocumentNotFoundError';\n\n\tconstructor(public did: Did) {\n\t\tsuper(`did document not found; did=${did}`);\n\t}\n}\n\nexport class FailedDocumentResolutionError extends DidDocumentResolutionError {\n\toverride name = 'FailedDocumentResolutionError';\n\n\tconstructor(\n\t\tpublic did: Did,\n\t\toptions?: ErrorOptions,\n\t) {\n\t\tsuper(`failed to resolve did document; did=${did}`, options);\n\t}\n}\n// #endregion\n\n// #region Handle resolution errors\nexport class HandleResolutionError extends Error {\n\toverride name = 'HandleResolutionError';\n}\n\nexport class DidNotFoundError extends HandleResolutionError {\n\toverride name = 'DidNotFoundError';\n\n\tconstructor(public handle: string) {\n\t\tsuper(`handle returned no did; handle=${handle}`);\n\t}\n}\n\nexport class FailedHandleResolutionError extends HandleResolutionError {\n\toverride name = 'FailedHandleResolutionError';\n\n\tconstructor(\n\t\tpublic handle: string,\n\t\toptions?: ErrorOptions,\n\t) {\n\t\tsuper(`failed to resolve handle; handle=${handle}`, options);\n\t}\n}\n\nexport class InvalidResolvedHandleError extends HandleResolutionError {\n\toverride name = 'InvalidResolvedHandleError';\n\n\tconstructor(\n\t\tpublic handle: string,\n\t\tpublic did: string,\n\t) {\n\t\tsuper(`handle returned invalid did; handle=${handle}; did=${did}`);\n\t}\n}\n\nexport class AmbiguousHandleError extends HandleResolutionError {\n\toverride name = 'AmbiguousHandleError';\n\n\tconstructor(handle: string) {\n\t\tsuper(`handle returned multiple did values; handle=${handle}`);\n\t}\n}\n// #endregion\n\n// #region Actor resolution errors\nexport class ActorResolutionError extends Error {\n\toverride name = 'ActorResolutionError';\n}\n// #endregion\n","import { extractDidMethod, type DidDocument } from '@atcute/identity';\nimport type { Did } from '@atcute/lexicons/syntax';\n\nimport * as err from '../errors.js';\nimport type { DidDocumentResolver, ResolveDidDocumentOptions } from '../types.js';\n\nexport interface CompositeDidDocumentResolverOptions\u003cM extends string\u003e {\n\tmethods: { [K in M]: DidDocumentResolver\u003cK\u003e };\n}\n\nexport class CompositeDidDocumentResolver\u003cM extends string\u003e implements DidDocumentResolver\u003cM\u003e {\n\t#methods: Map\u003cstring, DidDocumentResolver\u003cM\u003e\u003e;\n\n\tconstructor({ methods }: CompositeDidDocumentResolverOptions\u003cM\u003e) {\n\t\tthis.#methods = new Map(Object.entries(methods));\n\t}\n\n\tasync resolve(did: Did\u003cM\u003e, options?: ResolveDidDocumentOptions): Promise\u003cDidDocument\u003e {\n\t\tconst method = extractDidMethod(did);\n\n\t\tconst resolver = this.#methods.get(method);\n\t\tif (resolver === undefined) {\n\t\t\tthrow new err.UnsupportedDidMethodError(did);\n\t\t}\n\n\t\treturn await resolver.resolve(did, options);\n\t}\n}\n","import type { DidDocument } from '@atcute/identity';\nimport type { Did } from '@atcute/lexicons/syntax';\nimport { FailedResponseError } from '@atcute/util-fetch';\n\nimport * as err from '../../errors.js';\nimport type { DidDocumentResolver, ResolveDidDocumentOptions } from '../../types.js';\nimport { fetchDocHandler } from '../utils.js';\n\nexport interface PlcDidDocumentResolverOptions {\n\tapiUrl?: string;\n\tfetch?: typeof fetch;\n}\n\nexport class PlcDidDocumentResolver implements DidDocumentResolver\u003c'plc'\u003e {\n\treadonly apiUrl: string;\n\t#fetch: typeof fetch;\n\n\tconstructor({\n\t\tapiUrl = 'https://plc.directory',\n\t\tfetch: fetchThis = fetch,\n\t}: PlcDidDocumentResolverOptions = {}) {\n\t\tthis.apiUrl = apiUrl;\n\t\tthis.#fetch = fetchThis;\n\t}\n\n\tasync resolve(did: Did\u003c'plc'\u003e, options?: ResolveDidDocumentOptions): Promise\u003cDidDocument\u003e {\n\t\t// quick sanity check\n\t\tif (!did.startsWith('did:plc:')) {\n\t\t\tthrow new err.UnsupportedDidMethodError(did);\n\t\t}\n\n\t\tlet json: DidDocument;\n\n\t\ttry {\n\t\t\tconst url = new URL(`/${encodeURIComponent(did)}`, this.apiUrl);\n\n\t\t\tconst response = await (0, this.#fetch)(url, {\n\t\t\t\tsignal: options?.signal,\n\t\t\t\tcache: options?.noCache ? 'no-cache' : undefined,\n\t\t\t\tredirect: 'manual',\n\t\t\t\theaders: { accept: 'application/did+ld+json,application/json' },\n\t\t\t});\n\n\t\t\tif (response.status \u003e= 300 \u0026\u0026 response.status \u003c 400) {\n\t\t\t\tthrow new TypeError(`unexpected redirect`);\n\t\t\t}\n\n\t\t\tconst handled = await fetchDocHandler(response);\n\n\t\t\tjson = handled.json;\n\t\t} catch (cause) {\n\t\t\tif (cause instanceof FailedResponseError \u0026\u0026 cause.status === 404) {\n\t\t\t\tthrow new err.DocumentNotFoundError(did);\n\t\t\t}\n\n\t\t\tthrow new err.FailedDocumentResolutionError(did, { cause });\n\t\t}\n\n\t\treturn json;\n\t}\n}\n","import { defs } from '@atcute/identity';\nimport { isResponseOk, parseResponseAsJson, pipe, validateJsonWith } from '@atcute/util-fetch';\n\nexport const fetchDocHandler = pipe(\n\tisResponseOk,\n\tparseResponseAsJson(/^application\\/(did\\+ld\\+)?json$/, 20 * 1024),\n\tvalidateJsonWith(defs.didDocument, { mode: 'passthrough' }),\n);\n","import { webDidToDocumentUrl, type DidDocument } from '@atcute/identity';\nimport type { Did } from '@atcute/lexicons/syntax';\nimport { FailedResponseError } from '@atcute/util-fetch';\n\nimport * as err from '../../errors.js';\nimport type { DidDocumentResolver, ResolveDidDocumentOptions } from '../../types.js';\nimport { fetchDocHandler } from '../utils.js';\n\nexport interface WebDidDocumentResolverOptions {\n\tfetch?: typeof fetch;\n}\n\nexport class WebDidDocumentResolver implements DidDocumentResolver\u003c'web'\u003e {\n\t#fetch: typeof fetch;\n\n\tconstructor({ fetch: fetchThis = fetch }: WebDidDocumentResolverOptions = {}) {\n\t\tthis.#fetch = fetchThis;\n\t}\n\n\tasync resolve(did: Did\u003c'web'\u003e, options?: ResolveDidDocumentOptions): Promise\u003cDidDocument\u003e {\n\t\t// quick sanity check\n\t\tif (!did.startsWith('did:web:')) {\n\t\t\tthrow new err.UnsupportedDidMethodError(did);\n\t\t}\n\n\t\tlet json: DidDocument;\n\n\t\ttry {\n\t\t\tconst url = webDidToDocumentUrl(did);\n\n\t\t\tconst response = await (0, this.#fetch)(url, {\n\t\t\t\tsignal: options?.signal,\n\t\t\t\tcache: options?.noCache ? 'no-cache' : undefined,\n\t\t\t\tredirect: 'manual',\n\t\t\t\theaders: { accept: 'application/did+ld+json,application/json' },\n\t\t\t});\n\n\t\t\tif (response.status \u003e= 300 \u0026\u0026 response.status \u003c 400) {\n\t\t\t\tthrow new TypeError(`unexpected redirect`);\n\t\t\t}\n\n\t\t\tconst handled = await fetchDocHandler(response);\n\n\t\t\tjson = handled.json;\n\t\t} catch (cause) {\n\t\t\tif (cause instanceof FailedResponseError \u0026\u0026 cause.status === 404) {\n\t\t\t\tthrow new err.DocumentNotFoundError(did);\n\t\t\t}\n\n\t\t\tthrow new err.FailedDocumentResolutionError(did, { cause });\n\t\t}\n\n\t\treturn json;\n\t}\n}\n\nexport class AtprotoWebDidDocumentResolver implements DidDocumentResolver\u003c'web'\u003e {\n\t#fetch: typeof fetch;\n\n\tconstructor({ fetch: fetchThis = fetch }: WebDidDocumentResolverOptions = {}) {\n\t\tthis.#fetch = fetchThis;\n\t}\n\n\tasync resolve(did: Did\u003c'web'\u003e, options?: ResolveDidDocumentOptions): Promise\u003cDidDocument\u003e {\n\t\t// quick sanity check\n\t\tif (!did.startsWith('did:web:')) {\n\t\t\tthrow new err.UnsupportedDidMethodError(did);\n\t\t}\n\n\t\tconst [host, ...paths] = did.slice(8).split(':').map(decodeURIComponent);\n\t\tconst url = new URL(`https://${host}/.well-known/did.json`);\n\n\t\tif (paths.length \u003e 0) {\n\t\t\tthrow new err.ImproperDidError(did);\n\t\t}\n\n\t\tlet json: DidDocument;\n\n\t\ttry {\n\t\t\tconst response = await (0, this.#fetch)(url, {\n\t\t\t\tsignal: options?.signal,\n\t\t\t\tcache: options?.noCache ? 'no-cache' : undefined,\n\t\t\t\tredirect: 'manual',\n\t\t\t\theaders: { accept: 'application/did+ld+json,application/json' },\n\t\t\t});\n\n\t\t\tif (response.status \u003e= 300 \u0026\u0026 response.status \u003c 400) {\n\t\t\t\tthrow new TypeError(`unexpected redirect`);\n\t\t\t}\n\n\t\t\tconst handled = await fetchDocHandler(response);\n\n\t\t\tjson = handled.json;\n\t\t} catch (cause) {\n\t\t\tif (cause instanceof FailedResponseError \u0026\u0026 cause.status === 404) {\n\t\t\t\tthrow new err.DocumentNotFoundError(did);\n\t\t\t}\n\n\t\t\tthrow new err.FailedDocumentResolutionError(did, { cause });\n\t\t}\n\n\t\treturn json;\n\t}\n}\n","import { defs, type DidDocument } from '@atcute/identity';\nimport type { Did } from '@atcute/lexicons/syntax';\nimport {\n\tFailedResponseError,\n\tisResponseOk,\n\tparseResponseAsJson,\n\tpipe,\n\tvalidateJsonWith,\n} from '@atcute/util-fetch';\n\nimport * as v from '@badrap/valita';\n\nimport * as err from '../../errors.js';\nimport type { DidDocumentResolver, ResolveDidDocumentOptions } from '../../types.js';\n\nconst fetchXrpcHandler = pipe(\n\tisResponseOk,\n\tparseResponseAsJson(/^application\\/json$/, 20 * 1024 + 16),\n\tvalidateJsonWith(v.object({ didDoc: defs.didDocument }), { mode: 'passthrough' }),\n);\n\nexport interface XrpcDidDocumentResolverOptions {\n\tserviceUrl: string;\n\tfetch?: typeof fetch;\n}\n\nexport class XrpcDidDocumentResolver implements DidDocumentResolver\u003cstring\u003e {\n\treadonly serviceUrl: string;\n\t#fetch: typeof fetch;\n\n\tconstructor({ serviceUrl, fetch: fetchThis = fetch }: XrpcDidDocumentResolverOptions) {\n\t\tthis.serviceUrl = serviceUrl;\n\t\tthis.#fetch = fetchThis;\n\t}\n\n\tasync resolve(did: Did, options?: ResolveDidDocumentOptions): Promise\u003cDidDocument\u003e {\n\t\tlet json: DidDocument;\n\n\t\ttry {\n\t\t\tconst url = new URL(`/xrpc/com.atproto.identity.resolveDid`, this.serviceUrl);\n\t\t\turl.searchParams.set('did', did);\n\n\t\t\tconst response = await (0, this.#fetch)(url, {\n\t\t\t\tsignal: options?.signal,\n\t\t\t\tcache: options?.noCache ? 'no-cache' : undefined,\n\t\t\t\theaders: { accept: 'application/json' },\n\t\t\t});\n\n\t\t\tconst handled = await fetchXrpcHandler(response);\n\n\t\t\tjson = handled.json.didDoc;\n\t\t} catch (cause) {\n\t\t\tif (cause instanceof FailedResponseError \u0026\u0026 cause.status === 404) {\n\t\t\t\tthrow new err.DocumentNotFoundError(did);\n\t\t\t}\n\n\t\t\tthrow new err.FailedDocumentResolutionError(did, { cause });\n\t\t}\n\n\t\treturn json;\n\t}\n}\n","import type { AtprotoDid, Handle } from '@atcute/lexicons/syntax';\n\nimport * as err from '../errors.js';\nimport type { HandleResolver, ResolveHandleOptions } from '../types.js';\n\nexport type CompositeStrategy = 'http-first' | 'dns-first' | 'race' | 'both';\n\nexport interface CompositeHandleResolverOptions {\n\t/** controls how the resolution is done, defaults to 'race' */\n\tstrategy?: CompositeStrategy;\n\t/** the methods to use for resolving the handle. */\n\tmethods: Record\u003c'http' | 'dns', HandleResolver\u003e;\n}\n\nexport class CompositeHandleResolver implements HandleResolver {\n\t#methods: Record\u003c'http' | 'dns', HandleResolver\u003e;\n\tstrategy: CompositeStrategy;\n\n\tconstructor({ methods, strategy = 'race' }: CompositeHandleResolverOptions) {\n\t\tthis.#methods = methods;\n\t\tthis.strategy = strategy;\n\t}\n\n\tasync resolve(handle: Handle, options?: ResolveHandleOptions): Promise\u003cAtprotoDid\u003e {\n\t\tconst { http, dns } = this.#methods;\n\n\t\tconst parentSignal = options?.signal;\n\t\tconst controller = new AbortController();\n\t\tif (parentSignal) {\n\t\t\tparentSignal.addEventListener('abort', () =\u003e controller.abort(), { signal: controller.signal });\n\t\t}\n\n\t\tconst dnsPromise = dns.resolve(handle, { ...options, signal: controller.signal });\n\t\tconst httpPromise = http.resolve(handle, { ...options, signal: controller.signal });\n\n\t\tswitch (this.strategy) {\n\t\t\tcase 'race': {\n\t\t\t\treturn new Promise((resolve) =\u003e {\n\t\t\t\t\tdnsPromise.then(\n\t\t\t\t\t\t(did) =\u003e {\n\t\t\t\t\t\t\tcontroller.abort();\n\t\t\t\t\t\t\tresolve(did);\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() =\u003e resolve(httpPromise),\n\t\t\t\t\t);\n\n\t\t\t\t\thttpPromise.then(\n\t\t\t\t\t\t(did) =\u003e {\n\t\t\t\t\t\t\tcontroller.abort();\n\t\t\t\t\t\t\tresolve(did);\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() =\u003e resolve(dnsPromise),\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\t\t\tcase 'dns-first': {\n\t\t\t\thttpPromise.catch(noop);\n\n\t\t\t\tconst resolved = await dnsPromise.catch(noop);\n\t\t\t\tif (resolved) {\n\t\t\t\t\tcontroller.abort();\n\t\t\t\t\treturn resolved;\n\t\t\t\t}\n\n\t\t\t\treturn httpPromise;\n\t\t\t}\n\t\t\tcase 'http-first': {\n\t\t\t\tdnsPromise.catch(noop);\n\n\t\t\t\tconst resolved = await httpPromise.catch(noop);\n\t\t\t\tif (resolved) {\n\t\t\t\t\tcontroller.abort();\n\t\t\t\t\treturn resolved;\n\t\t\t\t}\n\n\t\t\t\treturn dnsPromise;\n\t\t\t}\n\t\t\tcase 'both': {\n\t\t\t\tconst [dnsResponse, httpResponse] = await Promise.allSettled([dnsPromise, httpPromise]);\n\n\t\t\t\tconst dnsDid = dnsResponse.status === 'fulfilled' ? dnsResponse.value : undefined;\n\t\t\t\tconst httpDid = httpResponse.status === 'fulfilled' ? httpResponse.value : undefined;\n\n\t\t\t\tif (dnsDid \u0026\u0026 httpDid \u0026\u0026 dnsDid !== httpDid) {\n\t\t\t\t\tthrow new err.AmbiguousHandleError(handle);\n\t\t\t\t}\n\n\t\t\t\treturn dnsDid || httpDid || dnsPromise;\n\t\t\t}\n\t\t}\n\t}\n}\n\nconst noop = () =\u003e {};\n","import { isAtprotoDid } from '@atcute/identity';\nimport type { AtprotoDid, Handle } from '@atcute/lexicons/syntax';\nimport { type DohJsonTxtResult, fetchDohJsonTxt } from '@atcute/util-fetch';\n\nimport * as err from '../../errors.js';\nimport type { HandleResolver, ResolveHandleOptions } from '../../types.js';\n\nconst SUBDOMAIN = '_atproto';\nconst PREFIX = 'did=';\n\nexport interface DohJsonHandleResolverOptions {\n\tdohUrl: string;\n\tfetch?: typeof fetch;\n}\n\nexport class DohJsonHandleResolver implements HandleResolver {\n\treadonly dohUrl: string;\n\t#fetch: typeof fetch;\n\n\tconstructor({ dohUrl, fetch: fetchThis = fetch }: DohJsonHandleResolverOptions) {\n\t\tthis.dohUrl = dohUrl;\n\t\tthis.#fetch = fetchThis;\n\t}\n\n\tasync resolve(handle: Handle, options?: ResolveHandleOptions): Promise\u003cAtprotoDid\u003e {\n\t\tlet json: DohJsonTxtResult;\n\n\t\ttry {\n\t\t\tconst url = new URL(this.dohUrl);\n\t\t\turl.searchParams.set('name', `${SUBDOMAIN}.${handle}`);\n\t\t\turl.searchParams.set('type', 'TXT');\n\n\t\t\tconst response = await (0, this.#fetch)(url, {\n\t\t\t\tsignal: options?.signal,\n\t\t\t\tcache: options?.noCache ? 'no-cache' : undefined,\n\t\t\t\theaders: { accept: 'application/dns-json' },\n\t\t\t});\n\n\t\t\tconst handled = await fetchDohJsonTxt(response);\n\n\t\t\tjson = handled.json;\n\t\t} catch (cause) {\n\t\t\tthrow new err.FailedHandleResolutionError(handle, { cause });\n\t\t}\n\n\t\tconst status = json.Status;\n\t\tconst answers = json.Answer;\n\n\t\tif (status !== 0 /* NOERROR */) {\n\t\t\tif (status === 3 /* NXDOMAIN */) {\n\t\t\t\tthrow new err.DidNotFoundError(handle);\n\t\t\t}\n\n\t\t\tthrow new err.FailedHandleResolutionError(handle, {\n\t\t\t\tcause: new TypeError(`dns returned ${status}`),\n\t\t\t});\n\t\t}\n\n\t\tfor (let i = 0, il = answers.length; i \u003c il; i++) {\n\t\t\tconst answer = answers[i];\n\t\t\tconst data = answer.data;\n\n\t\t\tif (!data.startsWith(PREFIX)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tfor (let j = i + 1; j \u003c il; j++) {\n\t\t\t\tconst data = answers[j].data;\n\t\t\t\tif (data.startsWith(PREFIX)) {\n\t\t\t\t\tthrow new err.AmbiguousHandleError(handle);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst did = data.slice(PREFIX.length);\n\t\t\tif (!isAtprotoDid(did)) {\n\t\t\t\tthrow new err.InvalidResolvedHandleError(handle, did);\n\t\t\t}\n\n\t\t\treturn did;\n\t\t}\n\n\t\t// theoretically this shouldn't happen, it should've returned NXDOMAIN\n\t\tthrow new err.DidNotFoundError(handle);\n\t}\n}\n","import { isAtprotoDid } from '@atcute/identity';\nimport type { AtprotoDid, Handle } from '@atcute/lexicons/syntax';\nimport { FailedResponseError, isResponseOk, pipe, readResponseAsText } from '@atcute/util-fetch';\n\nimport * as err from '../../errors.js';\nimport type { HandleResolver, ResolveHandleOptions } from '../../types.js';\n\nexport interface WellKnownHandleResolverOptions {\n\tfetch?: typeof fetch;\n}\n\nconst fetchWellKnownHandler = pipe(isResponseOk, readResponseAsText(2048 + 16));\n\nexport class WellKnownHandleResolver implements HandleResolver {\n\t#fetch: typeof fetch;\n\n\tconstructor({ fetch: fetchThis = fetch }: WellKnownHandleResolverOptions = {}) {\n\t\tthis.#fetch = fetchThis;\n\t}\n\n\tasync resolve(handle: Handle, options?: ResolveHandleOptions): Promise\u003cAtprotoDid\u003e {\n\t\tlet text: string;\n\n\t\ttry {\n\t\t\tconst url = new URL('/.well-known/atproto-did', `https://${handle}`);\n\n\t\t\tconst response = await (0, this.#fetch)(url, {\n\t\t\t\tsignal: options?.signal,\n\t\t\t\tcache: options?.noCache ? 'no-cache' : undefined,\n\t\t\t\tredirect: 'manual',\n\t\t\t});\n\n\t\t\tif (response.status \u003e= 300 \u0026\u0026 response.status \u003c 400) {\n\t\t\t\tthrow new TypeError(`unexpected redirect`);\n\t\t\t}\n\n\t\t\tconst handled = await fetchWellKnownHandler(response);\n\n\t\t\ttext = handled.text;\n\t\t} catch (cause) {\n\t\t\tif (cause instanceof FailedResponseError \u0026\u0026 cause.status === 404) {\n\t\t\t\tthrow new err.DidNotFoundError(handle);\n\t\t\t}\n\n\t\t\tthrow new err.FailedHandleResolutionError(handle, { cause });\n\t\t}\n\n\t\tconst did = text.split('\\n')[0]!.trim();\n\t\tif (!isAtprotoDid(did)) {\n\t\t\tthrow new err.InvalidResolvedHandleError(handle, did);\n\t\t}\n\n\t\treturn did;\n\t}\n}\n","import * as v from '@badrap/valita';\n\nimport { isAtprotoDid } from '@atcute/identity';\nimport type { AtprotoDid, Handle } from '@atcute/lexicons/syntax';\nimport {\n\tFailedResponseError,\n\tisResponseOk,\n\tparseResponseAsJson,\n\tpipe,\n\tvalidateJsonWith,\n} from '@atcute/util-fetch';\n\nimport * as err from '../../errors.js';\nimport type { HandleResolver, ResolveHandleOptions } from '../../types.js';\n\nconst response = v.object({\n\tdid: v.string().assert((input) =\u003e isAtprotoDid(input)),\n});\n\nconst fetchXrpcHandler = pipe(\n\tisResponseOk,\n\tparseResponseAsJson(/^application\\/json$/, 4 * 1024),\n\tvalidateJsonWith(response, { mode: 'passthrough' }),\n);\n\nexport interface XrpcHandleResolverOptions {\n\tserviceUrl: string;\n\tfetch?: typeof fetch;\n}\n\nexport class XrpcHandleResolver implements HandleResolver {\n\treadonly serviceUrl: string;\n\t#fetch: typeof fetch;\n\n\tconstructor({ serviceUrl, fetch: fetchThis = fetch }: XrpcHandleResolverOptions) {\n\t\tthis.serviceUrl = serviceUrl;\n\t\tthis.#fetch = fetchThis;\n\t}\n\n\tasync resolve(handle: Handle, options?: ResolveHandleOptions): Promise\u003cAtprotoDid\u003e {\n\t\tlet json: v.Infer\u003ctypeof response\u003e;\n\n\t\ttry {\n\t\t\tconst url = new URL(`/xrpc/com.atproto.identity.resolveHandle`, this.serviceUrl);\n\t\t\turl.searchParams.set('handle', handle);\n\n\t\t\tconst response = await (0, this.#fetch)(url, {\n\t\t\t\tsignal: options?.signal,\n\t\t\t\tcache: options?.noCache ? 'no-cache' : undefined,\n\t\t\t\theaders: { accept: 'application/json' },\n\t\t\t});\n\n\t\t\tconst handled = await fetchXrpcHandler(response);\n\n\t\t\tjson = handled.json;\n\t\t} catch (cause) {\n\t\t\tif (cause instanceof FailedResponseError \u0026\u0026 cause.status === 400) {\n\t\t\t\tthrow new err.DidNotFoundError(handle);\n\t\t\t}\n\n\t\t\tthrow new err.FailedHandleResolutionError(handle, { cause });\n\t\t}\n\n\t\treturn json.did;\n\t}\n}\n"],"version":3}
-3
vendor/esm.sh/@atcute/identity@1.1.4/es2022/identity.mjs
··· 1 - /* esm.sh - @atcute/identity@1.1.4 */ 2 - var E=Object.defineProperty;var D=(e,t)=>{for(var o in t)E(e,o,{get:t[o],enumerable:!0})};var g={};D(g,{FRAGMENT_RE:()=>h,MULTIBASE_RE:()=>m,didDocument:()=>_,didRelativeUri:()=>f,didString:()=>d,multibaseString:()=>y,rfc3968UriSchema:()=>l,service:()=>x,verificationMethod:()=>u});import{isDid as R}from"../../lexicons@1.2.10/es2022/syntax.mjs";import*as r from"../../../@badrap/valita@0.4.6/es2022/valita.mjs";var h=/^#[^#]+$/,m=/^z[a-km-zA-HJ-NP-Z1-9]+$/,l=r.string().assert(e=>URL.canParse(e),"must be a url"),f=r.string().assert(e=>h.test(e)||URL.canParse(e),"must be a did relative uri"),y=r.string().assert(e=>m.test(e),"must be a base58 multibase"),d=r.string().assert(R,"must be a did"),u=r.object({id:f,type:r.string(),controller:d,publicKeyMultibase:y.optional(),publicKeyJwk:r.record().optional()}).chain(e=>{switch(e.type){case"Multikey":{if(e.publicKeyMultibase===void 0)return r.err({message:"missing multikey",path:["publicKeyMultibase"]});break}case"EcdsaSecp256k1VerificationKey2019":case"EcdsaSecp256r1VerificationKey2019":{if(e.publicKeyMultibase===void 0)return r.err({message:"missing multibase key",path:["publicKeyMultibase"]});break}}return r.ok(e)}),x=r.object({id:f,type:r.union(r.string(),r.array(r.string())),serviceEndpoint:r.union(l,r.record(l),r.array(r.union(l,r.record(l))))}),_=r.object({"@context":r.array(l).optional(),id:d,alsoKnownAs:r.array(l).chain(e=>{for(let t=0,o=e.length;t<o;t++){let n=e[t];for(let i=0;i<t;i++)if(n===e[i])return r.err({message:`duplicate "${n}" aka entry`,path:[t]})}return r.ok(e)}).optional(),verificationMethod:r.array(u).chain(e=>{for(let t=0,o=e.length;t<o;t++){let i=e[t].id;for(let s=0;s<t;s++)if(i===e[s].id)return r.err({message:`duplicate "${i}" verification method`,path:[t,"id"]})}return r.ok(e)}).optional(),service:r.array(x).optional(),controller:r.union(d,r.array(d)).optional(),authentication:r.array(r.union(f,u)).optional()}).chain(e=>{let{id:t,service:o}=e;if(o?.length){let n=o.length,i=new Array(n);for(let s=0;s<n;s++){let a=o[s].id;a[0]==="#"&&(a=t+a),i[s]=a}for(let s=0;s<n;s++){let c=i[s];for(let a=0;a<s;a++)if(c===i[a])return r.err({message:`duplicate "${c}" service`,path:["service",s,"id"]})}}return r.ok(e)});import{isHandle as M}from"../../lexicons@1.2.10/es2022/syntax.mjs";var $="parse"in URL,w=e=>{let t=null;if($)t=URL.parse(e);else try{t=new URL(e)}catch{}return t!==null&&(t.protocol==="https:"||t.protocol==="http:")&&t.pathname==="/"&&t.search===""&&t.hash===""},b=(e,t)=>{let o=e.verificationMethod;if(!o)return;let n=`${e.id}${t}`;for(let i=0,s=o.length;i<s;i++){let{id:c,type:a,publicKeyMultibase:v}=o[i];if(c===n&&v!==void 0)return{type:a,publicKeyMultibase:v}}},W=e=>b(e,"#atproto"),F=e=>b(e,"#atproto_label"),N=e=>{let t=e.alsoKnownAs;if(!t)return null;let o="at://";for(let n=0,i=t.length;n<i;n++){let s=t[n];if(!s.startsWith(o))continue;let c=s.slice(o.length);return M(c)?c:void 0}return null},p=(e,t)=>{let o=e.service;if(o)for(let n=0,i=o.length;n<i;n++){let{id:s,type:c,serviceEndpoint:a}=o[n];if(!(s!==t.id&&s!==e.id+t.id)){if(t.type!==void 0){if(Array.isArray(c)){if(!c.includes(t.type))continue}else if(c!==t.type)continue}if(!(typeof a!="string"||!w(a)))return a}}},T=e=>p(e,{id:"#atproto_pds",type:"AtprotoPersonalDataServer"}),V=e=>p(e,{id:"#atproto_labeler",type:"AtprotoLabeler"}),H=e=>p(e,{id:"#bsky_chat",type:"BskyChatService"}),O=e=>p(e,{id:"#bsky_fg",type:"BskyFeedGenerator"}),G=e=>p(e,{id:"#bsky_notif",type:"BskyNotificationService"});var z=/^did:plc:([a-z2-7]{24})$/,A=e=>e.length===32&&z.test(e);var K=/^did:web:([a-zA-Z0-9%-]+(?:(?:\.[a-zA-Z0-9%-]+)*(?:\.[a-zA-Z]{2,}))?)?((?::[a-zA-Z0-9\-%.]+)+)?$/,U=/^did:web:([a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*(?:\.[a-zA-Z]{2,})|localhost(?:%3[aA]\d+)?)$/,Y=e=>e.length>=9&&K.test(e),k=e=>e.length>=12&&U.test(e),q=e=>{let[t,...o]=e.slice(8).split(":").map(decodeURIComponent),n=`did:web:${encodeURIComponent(t.toLowerCase())}`;return o.length>0&&(n+=`:${o.join(":")}`),n},Q=e=>{let[t,...o]=e.slice(8).split(":").map(decodeURIComponent),n="/"+o.join("/");n==="/"?n="/.well-known/did.json":n+="/did.json";let i=new URL(`https://${t}${n}`);return i.hostname==="localhost"&&(i.protocol="http:"),i};var L=/^(?:[A-Za-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9A-Fa-f]{2})*$/,P=e=>A(e)||k(e),oe=e=>{if(e.length<14)return!1;let t=e.indexOf("#",12);return t===-1?!1:L.test(e.slice(t+1))&&P(e.slice(0,t))},ne=e=>{let t=e.indexOf(":",4);return e.slice(4,t)};var S=/^did:key:z[a-km-zA-HJ-NP-Z1-9]+$/,se=e=>e.length>=10&&S.test(e);export{U as ATPROTO_WEB_DID_RE,z as PLC_DID_RE,K as WEB_DID_RE,g as defs,ne as extractDidMethod,N as getAtprotoHandle,F as getAtprotoLabelerVerificationMaterial,p as getAtprotoServiceEndpoint,W as getAtprotoVerificationMaterial,H as getBlueskyChatEndpoint,O as getBlueskyFeedgenEndpoint,G as getBlueskyNotificationEndpoint,V as getLabelerEndpoint,T as getPdsEndpoint,b as getVerificationMaterial,oe as isAtprotoAudience,P as isAtprotoDid,w as isAtprotoServiceEndpoint,k as isAtprotoWebDid,se as isKeyDid,A as isPlcDid,Y as isWebDid,q as normalizeWebDid,Q as webDidToDocumentUrl}; 3 - //# sourceMappingURL=./identity.mjs.map
-1
vendor/esm.sh/@atcute/identity@1.1.4/es2022/identity.mjs.map
··· 1 - {"mappings":"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","names":["typedefs_exports","__export","FRAGMENT_RE","MULTIBASE_RE","didDocument","didRelativeUri","didString","multibaseString","rfc3968UriSchema","service","verificationMethod","isDid","v","FRAGMENT_RE","MULTIBASE_RE","rfc3968UriSchema","input","didRelativeUri","multibaseString","didString","isDid","verificationMethod","service","didDocument","i","len","aka","j","methodId","did","services","identifiers","id","isHandle","isUrlParseSupported","isAtprotoServiceEndpoint","input","url","getVerificationMaterial","doc","id","verificationMethods","expectedId","idx","len","type","publicKeyMultibase","getAtprotoVerificationMaterial","getAtprotoLabelerVerificationMaterial","getAtprotoHandle","alsoKnownAs","PREFIX","aka","raw","isHandle","getAtprotoServiceEndpoint","predicate","services","serviceEndpoint","getPdsEndpoint","getLabelerEndpoint","getBlueskyChatEndpoint","getBlueskyFeedgenEndpoint","getBlueskyNotificationEndpoint","PLC_DID_RE","isPlcDid","input","WEB_DID_RE","ATPROTO_WEB_DID_RE","isWebDid","input","isAtprotoWebDid","normalizeWebDid","did","host","paths","normalized","webDidToDocumentUrl","pathname","url","FRAGMENT_RE","isAtprotoDid","input","isPlcDid","isAtprotoWebDid","isAtprotoAudience","isep","extractDidMethod","did","KEY_DID_RE","isKeyDid","input"],"sources":["../esm/npm/@atcute/identity@1.1.4/node_modules/@atcute/identity/lib/typedefs.ts","../esm/npm/@atcute/identity@1.1.4/node_modules/@atcute/identity/lib/utils.ts","../esm/npm/@atcute/identity@1.1.4/node_modules/@atcute/identity/lib/methods/plc.ts","../esm/npm/@atcute/identity@1.1.4/node_modules/@atcute/identity/lib/methods/web.ts","../esm/npm/@atcute/identity@1.1.4/node_modules/@atcute/identity/lib/did.ts","../esm/npm/@atcute/identity@1.1.4/node_modules/@atcute/identity/lib/methods/key.ts"],"sourcesContent":["import { isDid } from '@atcute/lexicons/syntax';\n\nimport * as v from '@badrap/valita';\n\nimport * as t from './types.ts';\n\n/** @deprecated */\nexport const FRAGMENT_RE = /^#[^#]+$/;\n/** @deprecated */\nexport const MULTIBASE_RE = /^z[a-km-zA-HJ-NP-Z1-9]+$/;\n\nexport const rfc3968UriSchema = v.string().assert((input) =\u003e {\n\treturn URL.canParse(input);\n}, `must be a url`);\n\nexport const didRelativeUri = v.string().assert((input) =\u003e {\n\treturn FRAGMENT_RE.test(input) || URL.canParse(input);\n}, `must be a did relative uri`);\n\nexport const multibaseString = v.string().assert((input) =\u003e {\n\treturn MULTIBASE_RE.test(input);\n}, `must be a base58 multibase`);\n\nexport const didString = v.string().assert(isDid, `must be a did`);\n\nexport const verificationMethod: v.Type\u003ct.VerificationMethod\u003e = v\n\t.object({\n\t\tid: didRelativeUri,\n\t\ttype: v.string(),\n\t\tcontroller: didString,\n\t\tpublicKeyMultibase: multibaseString.optional(),\n\t\tpublicKeyJwk: v.record().optional(),\n\t})\n\t.chain((input) =\u003e {\n\t\tswitch (input.type) {\n\t\t\tcase 'Multikey': {\n\t\t\t\tif (input.publicKeyMultibase === undefined) {\n\t\t\t\t\treturn v.err({ message: `missing multikey`, path: ['publicKeyMultibase'] });\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'EcdsaSecp256k1VerificationKey2019':\n\t\t\tcase 'EcdsaSecp256r1VerificationKey2019': {\n\t\t\t\tif (input.publicKeyMultibase === undefined) {\n\t\t\t\t\treturn v.err({ message: `missing multibase key`, path: ['publicKeyMultibase'] });\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn v.ok(input);\n\t});\n\nexport const service: v.Type\u003ct.Service\u003e = v.object({\n\t// should've only been RFC3968, but did:plc uses relative URIs.\n\tid: didRelativeUri,\n\ttype: v.union(v.string(), v.array(v.string())),\n\tserviceEndpoint: v.union(\n\t\trfc3968UriSchema,\n\t\tv.record(rfc3968UriSchema),\n\t\tv.array(v.union(rfc3968UriSchema, v.record(rfc3968UriSchema))),\n\t),\n});\n\nexport const didDocument: v.Type\u003ct.DidDocument\u003e = v\n\t.object({\n\t\t'@context': v.array(rfc3968UriSchema).optional(),\n\n\t\tid: didString,\n\n\t\talsoKnownAs: v\n\t\t\t.array(rfc3968UriSchema)\n\t\t\t.chain((input) =\u003e {\n\t\t\t\tfor (let i = 0, len = input.length; i \u003c len; i++) {\n\t\t\t\t\tconst aka = input[i];\n\n\t\t\t\t\tfor (let j = 0; j \u003c i; j++) {\n\t\t\t\t\t\tif (aka === input[j]) {\n\t\t\t\t\t\t\treturn v.err({\n\t\t\t\t\t\t\t\tmessage: `duplicate \"${aka}\" aka entry`,\n\t\t\t\t\t\t\t\tpath: [i],\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn v.ok(input);\n\t\t\t})\n\t\t\t.optional(),\n\t\tverificationMethod: v\n\t\t\t.array(verificationMethod)\n\t\t\t.chain((input) =\u003e {\n\t\t\t\tfor (let i = 0, len = input.length; i \u003c len; i++) {\n\t\t\t\t\tconst method = input[i];\n\t\t\t\t\tconst methodId = method.id;\n\n\t\t\t\t\tfor (let j = 0; j \u003c i; j++) {\n\t\t\t\t\t\tif (methodId === input[j].id) {\n\t\t\t\t\t\t\treturn v.err({\n\t\t\t\t\t\t\t\tmessage: `duplicate \"${methodId}\" verification method`,\n\t\t\t\t\t\t\t\tpath: [i, 'id'],\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn v.ok(input);\n\t\t\t})\n\t\t\t.optional(),\n\t\tservice: v.array(service).optional(),\n\n\t\tcontroller: v.union(didString, v.array(didString)).optional(),\n\t\tauthentication: v.array(v.union(didRelativeUri, verificationMethod)).optional(),\n\t})\n\t.chain((input) =\u003e {\n\t\tconst { id: did, service: services } = input;\n\n\t\tif (services?.length) {\n\t\t\tconst len = services.length;\n\n\t\t\t// oxlint-disable-next-line no-new-array\n\t\t\tconst identifiers = new Array(len);\n\n\t\t\tfor (let i = 0; i \u003c len; i++) {\n\t\t\t\tconst service = services[i];\n\n\t\t\t\tlet id = service.id;\n\t\t\t\tif (id[0] === '#') {\n\t\t\t\t\tid = did + id;\n\t\t\t\t}\n\n\t\t\t\tidentifiers[i] = id;\n\t\t\t}\n\n\t\t\tfor (let i = 0; i \u003c len; i++) {\n\t\t\t\tconst id = identifiers[i];\n\n\t\t\t\tfor (let j = 0; j \u003c i; j++) {\n\t\t\t\t\tif (id === identifiers[j]) {\n\t\t\t\t\t\treturn v.err({\n\t\t\t\t\t\t\tmessage: `duplicate \"${id}\" service`,\n\t\t\t\t\t\t\tpath: ['service', i, 'id'],\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn v.ok(input);\n\t});\n","import type { Handle } from '@atcute/lexicons';\nimport { isHandle } from '@atcute/lexicons/syntax';\n\nimport * as t from './types.ts';\n\nexport interface VerificationMaterial {\n\ttype: string;\n\tpublicKeyMultibase: string;\n}\n\nconst isUrlParseSupported = 'parse' in URL;\n\nexport const isAtprotoServiceEndpoint = (input: string): boolean =\u003e {\n\tlet url: URL | null = null;\n\tif (isUrlParseSupported) {\n\t\turl = URL.parse(input);\n\t} else {\n\t\ttry {\n\t\t\turl = new URL(input);\n\t\t} catch {}\n\t}\n\n\treturn (\n\t\turl !== null \u0026\u0026\n\t\t(url.protocol === 'https:' || url.protocol === 'http:') \u0026\u0026\n\t\turl.pathname === '/' \u0026\u0026\n\t\turl.search === '' \u0026\u0026\n\t\turl.hash === ''\n\t);\n};\n\nexport const getVerificationMaterial = (\n\tdoc: t.DidDocument,\n\tid: `#${string}`,\n): VerificationMaterial | undefined =\u003e {\n\tconst verificationMethods = doc.verificationMethod;\n\tif (!verificationMethods) {\n\t\treturn;\n\t}\n\n\tconst expectedId = `${doc.id}${id}`;\n\n\tfor (let idx = 0, len = verificationMethods.length; idx \u003c len; idx++) {\n\t\tconst { id, type, publicKeyMultibase } = verificationMethods[idx];\n\n\t\tif (id !== expectedId) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (publicKeyMultibase === undefined) {\n\t\t\tcontinue;\n\t\t}\n\n\t\treturn { type, publicKeyMultibase };\n\t}\n};\n\nexport const getAtprotoVerificationMaterial = (doc: t.DidDocument): VerificationMaterial | undefined =\u003e {\n\treturn getVerificationMaterial(doc, '#atproto');\n};\n\nexport const getAtprotoLabelerVerificationMaterial = (\n\tdoc: t.DidDocument,\n): VerificationMaterial | undefined =\u003e {\n\treturn getVerificationMaterial(doc, '#atproto_label');\n};\n\nexport const getAtprotoHandle = (doc: t.DidDocument): Handle | null | undefined =\u003e {\n\tconst alsoKnownAs = doc.alsoKnownAs;\n\tif (!alsoKnownAs) {\n\t\treturn null;\n\t}\n\n\tconst PREFIX = 'at://';\n\n\tfor (let idx = 0, len = alsoKnownAs.length; idx \u003c len; idx++) {\n\t\tconst aka = alsoKnownAs[idx];\n\n\t\tif (!aka.startsWith(PREFIX)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst raw = aka.slice(PREFIX.length);\n\n\t\tif (!isHandle(raw)) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn raw;\n\t}\n\n\treturn null;\n};\n\nexport const getAtprotoServiceEndpoint = (\n\tdoc: t.DidDocument,\n\tpredicate: { id: `#${string}`; type?: string },\n): string | undefined =\u003e {\n\tconst services = doc.service;\n\tif (!services) {\n\t\treturn;\n\t}\n\n\tfor (let idx = 0, len = services.length; idx \u003c len; idx++) {\n\t\tconst { id, type, serviceEndpoint } = services[idx];\n\n\t\tif (id !== predicate.id \u0026\u0026 id !== doc.id + predicate.id) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (predicate.type !== undefined) {\n\t\t\tif (Array.isArray(type)) {\n\t\t\t\tif (!type.includes(predicate.type)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (type !== predicate.type) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (typeof serviceEndpoint !== 'string' || !isAtprotoServiceEndpoint(serviceEndpoint)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\treturn serviceEndpoint;\n\t}\n};\n\nexport const getPdsEndpoint = (doc: t.DidDocument): string | undefined =\u003e {\n\treturn getAtprotoServiceEndpoint(doc, {\n\t\tid: '#atproto_pds',\n\t\ttype: 'AtprotoPersonalDataServer',\n\t});\n};\n\nexport const getLabelerEndpoint = (doc: t.DidDocument): string | undefined =\u003e {\n\treturn getAtprotoServiceEndpoint(doc, {\n\t\tid: '#atproto_labeler',\n\t\ttype: 'AtprotoLabeler',\n\t});\n};\n\nexport const getBlueskyChatEndpoint = (doc: t.DidDocument): string | undefined =\u003e {\n\treturn getAtprotoServiceEndpoint(doc, {\n\t\tid: '#bsky_chat',\n\t\ttype: 'BskyChatService',\n\t});\n};\n\nexport const getBlueskyFeedgenEndpoint = (doc: t.DidDocument): string | undefined =\u003e {\n\treturn getAtprotoServiceEndpoint(doc, {\n\t\tid: '#bsky_fg',\n\t\ttype: 'BskyFeedGenerator',\n\t});\n};\n\nexport const getBlueskyNotificationEndpoint = (doc: t.DidDocument): string | undefined =\u003e {\n\treturn getAtprotoServiceEndpoint(doc, {\n\t\tid: '#bsky_notif',\n\t\ttype: 'BskyNotificationService',\n\t});\n};\n","import type { Did } from '@atcute/lexicons/syntax';\n\n/** @deprecated use `isPlcDid` instead */\nexport const PLC_DID_RE = /^did:plc:([a-z2-7]{24})$/;\n\n/**\n * checks if input is a did:plc identifier\n */\nexport const isPlcDid = (input: string): input is Did\u003c'plc'\u003e =\u003e {\n\treturn input.length === 32 \u0026\u0026 PLC_DID_RE.test(input);\n};\n","import type { Did } from '@atcute/lexicons/syntax';\n\n/** @deprecated use `isWebDid` instead */\nexport const WEB_DID_RE =\n\t/^did:web:([a-zA-Z0-9%-]+(?:(?:\\.[a-zA-Z0-9%-]+)*(?:\\.[a-zA-Z]{2,}))?)?((?::[a-zA-Z0-9\\-%.]+)+)?$/;\n\n/** @deprecated use `isAtprotoWebDid` instead */\nexport const ATPROTO_WEB_DID_RE =\n\t/^did:web:([a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*(?:\\.[a-zA-Z]{2,})|localhost(?:%3[aA]\\d+)?)$/;\n\n/**\n * checks if input is a did:web identifier, note that you should probably use\n * `isAtprotoWebDid` for atproto-related cases as atproto only supports a subset\n * of the did:web specification (namely, no custom paths)\n */\nexport const isWebDid = (input: string): input is Did\u003c'web'\u003e =\u003e {\n\treturn input.length \u003e= 9 \u0026\u0026 WEB_DID_RE.test(input);\n};\n\n/**\n * checks if input is a did:web identifier that is supported by atproto\n */\nexport const isAtprotoWebDid = (input: string): input is Did\u003c'web'\u003e =\u003e {\n\treturn input.length \u003e= 12 \u0026\u0026 ATPROTO_WEB_DID_RE.test(input);\n};\n\n/**\n * normalize a did:web identifier\n */\nexport const normalizeWebDid = (did: Did\u003c'web'\u003e): Did\u003c'web'\u003e =\u003e {\n\tconst [host, ...paths] = did.slice(8).split(':').map(decodeURIComponent);\n\n\tlet normalized = `did:web:${encodeURIComponent(host.toLowerCase())}`;\n\tif (paths.length \u003e 0) {\n\t\tnormalized += `:${paths.join(':')}`;\n\t}\n\n\treturn normalized as Did\u003c'web'\u003e;\n};\n\n/**\n * converts did:web identifier into the DID document's URL\n */\nexport const webDidToDocumentUrl = (did: Did\u003c'web'\u003e): URL =\u003e {\n\tconst [host, ...paths] = did.slice(8).split(':').map(decodeURIComponent);\n\n\tlet pathname = '/' + paths.join('/');\n\tif (pathname === '/') {\n\t\tpathname = `/.well-known/did.json`;\n\t} else {\n\t\tpathname += `/did.json`;\n\t}\n\n\tconst url = new URL(`https://${host}${pathname}`);\n\tif (url.hostname === 'localhost') {\n\t\turl.protocol = 'http:';\n\t}\n\n\treturn url;\n};\n","import type { AtprotoAudience, AtprotoDid, Did } from '@atcute/lexicons/syntax';\n\nimport { isPlcDid } from './methods/plc.ts';\nimport { isAtprotoWebDid } from './methods/web.ts';\n\nconst FRAGMENT_RE = /^(?:[A-Za-z0-9\\-._~!$\u0026'()*+,;=:@/?]|%[0-9A-Fa-f]{2})*$/;\n\n/**\n * checks if it's a DID identifier that is supported by atproto\n */\nexport const isAtprotoDid = (input: string): input is AtprotoDid =\u003e {\n\treturn isPlcDid(input) || isAtprotoWebDid(input);\n};\n\nexport const isAtprotoAudience = (input: string): input is AtprotoAudience =\u003e {\n\t// 'did:web:a.co#f'\n\tif (input.length \u003c 14) {\n\t\treturn false;\n\t}\n\n\tconst isep = input.indexOf('#', 12);\n\tif (isep === -1) {\n\t\treturn false;\n\t}\n\n\treturn FRAGMENT_RE.test(input.slice(isep + 1)) \u0026\u0026 isAtprotoDid(input.slice(0, isep));\n};\n\n/**\n * returns the DID's method\n */\nexport const extractDidMethod = \u003cM extends string\u003e(did: Did\u003cM\u003e): M =\u003e {\n\tconst isep = did.indexOf(':', 4);\n\tconst method = did.slice(4, isep);\n\treturn method as M;\n};\n","import type { Did } from '@atcute/lexicons';\n\nconst KEY_DID_RE = /^did:key:z[a-km-zA-HJ-NP-Z1-9]+$/;\n\n/**\n * checks if input is a did:key identifier\n */\nexport const isKeyDid = (input: string): input is Did\u003c'key'\u003e =\u003e {\n\treturn input.length \u003e= 10 \u0026\u0026 KEY_DID_RE.test(input);\n};\n"],"version":3}
-3
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/dist/interfaces/bytes.mjs
··· 1 - /* esm.sh - @atcute/lexicons@1.2.10/dist/interfaces/bytes */ 2 - var s=Symbol.for("@atcute/bytes-wrapper"),n=t=>typeof t=="object"&&t!==null&&s in t,r=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}(?:==)?|[A-Za-z0-9+/]{3}=?)?$/,o=t=>typeof t!="string"?!1:r.test(t),c=t=>{let e=t;return typeof e=="object"&&e!==null&&(s in e||o(e.$bytes)&&Object.keys(e).length===1)};export{n as _isBytesWrapper,c as isBytes}; 3 - //# sourceMappingURL=./bytes.mjs.map
-1
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/dist/interfaces/bytes.mjs.map
··· 1 - {"mappings":";AAOA,IAAMA,EAAe,OAAO,IAAI,uBAAuB,EAmB1CC,EAAmBC,GACxB,OAAOA,GAAU,UAAYA,IAAU,MAAQF,KAAgBE,EAGjEC,EAAY,yEACZC,EAAYF,GACb,OAAOA,GAAU,SACb,GAGDC,EAAU,KAAKD,CAAK,EAIfG,EAAWH,GAAkC,CACzD,IAAMI,EAAIJ,EAEV,OACC,OAAOI,GAAM,UACbA,IAAM,OACLN,KAAgBM,GAAMF,EAASE,EAAE,MAAM,GAAK,OAAO,KAAKA,CAAC,EAAE,SAAW,EAEzE","names":["BYTES_SYMBOL","_isBytesWrapper","input","BASE64_RE","isBase64","isBytes","v"],"sources":["../esm/npm/@atcute/lexicons@1.2.10/node_modules/@atcute/lexicons/lib/interfaces/bytes.ts"],"sourcesContent":["/**\n * represents an object containing raw binary data encoded as a base64 string\n */\nexport interface Bytes {\n\t$bytes: string;\n}\n\nconst BYTES_SYMBOL = Symbol.for('@atcute/bytes-wrapper');\n\n/**\n * this should match with {@link file://./../../../../utilities/cbor/lib/bytes.ts}\n * @internal\n */\nexport interface _BytesWrapper {\n\treadonly [BYTES_SYMBOL]: true;\n\n\treadonly buf: Uint8Array;\n\treadonly $bytes: string;\n\n\ttoJSON(): Bytes;\n}\n\n/**\n * @internal\n */\n// #__NO_SIDE_EFFECTS__\nexport const _isBytesWrapper = (input: unknown): input is _BytesWrapper =\u003e {\n\treturn typeof input === 'object' \u0026\u0026 input !== null \u0026\u0026 BYTES_SYMBOL in input;\n};\n\nconst BASE64_RE = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}(?:==)?|[A-Za-z0-9+/]{3}=?)?$/;\nconst isBase64 = (input: unknown): input is string =\u003e {\n\tif (typeof input !== 'string') {\n\t\treturn false;\n\t}\n\n\treturn BASE64_RE.test(input);\n};\n\n// #__NO_SIDE_EFFECTS__\nexport const isBytes = (input: unknown): input is Bytes =\u003e {\n\tconst v = input as any;\n\n\treturn (\n\t\ttypeof v === 'object' \u0026\u0026\n\t\tv !== null \u0026\u0026\n\t\t(BYTES_SYMBOL in v || (isBase64(v.$bytes) \u0026\u0026 Object.keys(v).length === 1))\n\t);\n};\n"],"version":3}
-3
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/dist/syntax/at-identifier.mjs
··· 1 - /* esm.sh - @atcute/lexicons@1.2.10/dist/syntax/at-identifier */ 2 - import{isDid as i}from"./did.mjs";import{isHandle as o}from"./handle.mjs";var m=r=>i(r)||o(r);export{m as isActorIdentifier}; 3 - //# sourceMappingURL=./at-identifier.mjs.map
-1
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/dist/syntax/at-identifier.mjs.map
··· 1 - {"mappings":";AAAA,OAAS,SAAAA,MAAuB,YAChC,OAAS,YAAAC,MAA6B,eAS/B,IAAMC,EAAqBC,GAC1BH,EAAMG,CAAK,GAAKF,EAASE,CAAK","names":["isDid","isHandle","isActorIdentifier","input"],"sources":["../esm/npm/@atcute/lexicons@1.2.10/node_modules/@atcute/lexicons/lib/syntax/at-identifier.ts"],"sourcesContent":["import { isDid, type Did } from './did.ts';\nimport { isHandle, type Handle } from './handle.ts';\n\n/**\n * represents an account's identifier, either a {@link Did} or a\n * {@link Handle}\n */\nexport type ActorIdentifier = Did | Handle;\n\n// #__NO_SIDE_EFFECTS__\nexport const isActorIdentifier = (input: unknown): input is ActorIdentifier =\u003e {\n\treturn isDid(input) || isHandle(input);\n};\n"],"version":3}
-3
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/dist/syntax/at-uri.mjs
··· 1 - /* esm.sh - @atcute/lexicons@1.2.10/dist/syntax/at-uri */ 2 - import{isActorIdentifier as u}from"./at-identifier.mjs";import{isDid as A}from"./did.mjs";import{isNsid as c}from"./nsid.mjs";import{isRecordKey as d}from"./record-key.mjs";import{isAsciiAlphaNum as _}from"./utils/ascii.mjs";var k=8,m=20,x=2884,g=/^at:\/\/([a-zA-Z0-9._:%-]+)(?:\/([a-zA-Z0-9-.]+)(?:\/([a-zA-Z0-9._~:@!$&%')(*+,;=-]+))?)?(?:#(\/[a-zA-Z0-9._~:@!$&%')(*+,;=\-[\]/\\]*))?$/,$=r=>_(r)||r===46||r===95||r===126||r===58||r===64||r===33||r===36||r===38||r===37||r===39||r===41||r===40||r===42||r===43||r===44||r===59||r===61||r===45||r===91||r===93||r===47||r===92,I=r=>{if(typeof r!="string")return!1;let s=r.length;if(s<k||s>x||r.charCodeAt(0)!==97||r.charCodeAt(1)!==116||r.charCodeAt(2)!==58||r.charCodeAt(3)!==47||r.charCodeAt(4)!==47)return!1;let n=r.indexOf("#",5),e=n===-1?s:n;if(n!==-1){let f=n+1;if(f>=s||r.charCodeAt(f)!==47)return!1;for(let a=f;a<s;a++)if(!$(r.charCodeAt(a)))return!1}let o=r.indexOf("/",5),t=e,i,l;if(o!==-1&&o<e){t=o;let f=o+1;if(f>=e)return!1;let a=r.indexOf("/",f);if(a!==-1&&a<e){if(a===f||a+1>=e)return!1;let h=r.indexOf("/",a+1);if(h!==-1&&h<e)return!1;i=r.substring(f,a),l=r.substring(a+1,e)}else i=r.substring(f,e)}if(t<=5)return!1;let C=r.substring(5,t);return u(C)&&(i===void 0||c(i))&&(l===void 0||d(l))},O=r=>{let s=r.length;if(s<k||s>x)return{ok:!1,error:`invalid at-uri: ${r}`};let n=g.exec(r);if(n===null)return{ok:!1,error:`invalid at-uri: ${r}`};let[,e,o,t,i]=n;return u(e)?o!==void 0&&!c(o)?{ok:!1,error:`invalid collection in at-uri: ${o}`}:t!==void 0&&!d(t)?{ok:!1,error:`invalid rkey in at-uri: ${t}`}:{ok:!0,value:{repo:e,collection:o,rkey:t,fragment:i}}:{ok:!1,error:`invalid repo in at-uri: ${e}`}},U=r=>{if(typeof r!="string")return!1;let s=r.length;if(s<m||s>x||r.charCodeAt(0)!==97||r.charCodeAt(1)!==116||r.charCodeAt(2)!==58||r.charCodeAt(3)!==47||r.charCodeAt(4)!==47)return!1;let n=r.indexOf("/",5);if(n===-1)return!1;let e=r.indexOf("/",n+1);if(e===-1)return!1;let o=r.indexOf("#",e+1),t=r.substring(5,n),i=r.substring(n+1,e),l=o===-1?r.substring(e+1):r.substring(e+1,o);return A(t)&&c(i)&&d(l)},S=r=>{let s=r.length;if(s<m||s>x)return{ok:!1,error:`invalid canonical-at-uri: ${r}`};let n=g.exec(r);if(n===null)return{ok:!1,error:`invalid canonical-at-uri: ${r}`};let[,e,o,t,i]=n;return A(e)?c(o)?d(t)?{ok:!0,value:{repo:e,collection:o,rkey:t,fragment:i}}:{ok:!1,error:`invalid rkey in canonical-at-uri: ${t}`}:{ok:!1,error:`invalid collection in canonical-at-uri: ${o}`}:{ok:!1,error:`invalid repo in canonical-at-uri: ${e}`}};export{U as isCanonicalResourceUri,I as isResourceUri,S as parseCanonicalResourceUri,O as parseResourceUri}; 3 - //# sourceMappingURL=./at-uri.mjs.map
-1
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/dist/syntax/at-uri.mjs.map
··· 1 - {"mappings":"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","names":["isActorIdentifier","isDid","isNsid","isRecordKey","isAsciiAlphaNum","AT_URI_MIN_LENGTH","CANONICAL_AT_URI_MIN_LENGTH","AT_URI_MAX_LENGTH","ATURI_RE","isFragmentChar","c","isResourceUri","input","len","hash","stop","fragmentStart","idx","firstSlash","repoEnd","collection","rkey","collectionStart","secondSlash","thirdSlash","repo","parseResourceUri","match","r","k","f","isCanonicalResourceUri","hashPos","parseCanonicalResourceUri"],"sources":["../esm/npm/@atcute/lexicons@1.2.10/node_modules/@atcute/lexicons/lib/syntax/at-uri.ts"],"sourcesContent":["import { type Result } from '../utils.ts';\n\nimport { isActorIdentifier, type ActorIdentifier } from './at-identifier.ts';\nimport { isDid, type Did } from './did.ts';\nimport { isNsid, type Nsid } from './nsid.ts';\nimport { isRecordKey, type RecordKey } from './record-key.ts';\nimport { isAsciiAlphaNum } from './utils/ascii.ts';\n\n/**\n * represents a general AT Protocol URI, representing either an entire\n * repository, a specific collection within a repository, or a record.\n *\n * it allows using handles over DIDs, but this means that it won't be stable.\n */\nexport type ResourceUri =\n\t| `at://${ActorIdentifier}`\n\t| `at://${ActorIdentifier}/${Nsid}`\n\t| `at://${ActorIdentifier}/${Nsid}/${RecordKey}`;\n\nexport type ParsedResourceUri =\n\t| { repo: ActorIdentifier; collection: undefined; rkey: undefined; fragment: string | undefined }\n\t| { repo: ActorIdentifier; collection: Nsid; rkey: undefined; fragment: string | undefined }\n\t| { repo: ActorIdentifier; collection: Nsid; rkey: RecordKey; fragment: string | undefined };\n\n// minimum valid non-canonical at-uri is `at://a.a` (8 chars)\nconst AT_URI_MIN_LENGTH = 8;\n// minimum canonical at-uri is `at://did:m:v/a.b.c/x` (20 chars)\nconst CANONICAL_AT_URI_MIN_LENGTH = 5 + 7 + 1 + 5 + 1 + 1;\n// maximum structural length:\n// `at://` + DID (2048) + `/` + NSID (317) + `/` + rkey (512)\nconst AT_URI_MAX_LENGTH = 5 + 2048 + 1 + 317 + 1 + 512;\n\n// repo: [a-zA-Z0-9._:%-]\n// collection: [a-zA-Z0-9.-]\n// rkey: [a-zA-Z0-9._~:@!$\u0026%')(*+,;=-]\n// fragment: /[a-zA-Z0-9._~:@!$\u0026%')(*+,;=\\-[\\]/\\\\]*\nconst ATURI_RE =\n\t/^at:\\/\\/([a-zA-Z0-9._:%-]+)(?:\\/([a-zA-Z0-9-.]+)(?:\\/([a-zA-Z0-9._~:@!$\u0026%')(*+,;=-]+))?)?(?:#(\\/[a-zA-Z0-9._~:@!$\u0026%')(*+,;=\\-[\\]/\\\\]*))?$/;\n\nconst isFragmentChar = (c: number): boolean =\u003e {\n\treturn (\n\t\tisAsciiAlphaNum(c) ||\n\t\tc === 0x2e || // .\n\t\tc === 0x5f || // _\n\t\tc === 0x7e || // ~\n\t\tc === 0x3a || // :\n\t\tc === 0x40 || // @\n\t\tc === 0x21 || // !\n\t\tc === 0x24 || // $\n\t\tc === 0x26 || // \u0026\n\t\tc === 0x25 || // %\n\t\tc === 0x27 || // '\n\t\tc === 0x29 || // )\n\t\tc === 0x28 || // (\n\t\tc === 0x2a || // *\n\t\tc === 0x2b || // +\n\t\tc === 0x2c || // ,\n\t\tc === 0x3b || // ;\n\t\tc === 0x3d || // =\n\t\tc === 0x2d || // -\n\t\tc === 0x5b || // [\n\t\tc === 0x5d || // ]\n\t\tc === 0x2f || // /\n\t\tc === 0x5c // \\\n\t);\n};\n\n// #__NO_SIDE_EFFECTS__\nexport const isResourceUri = (input: unknown): input is ResourceUri =\u003e {\n\tif (typeof input !== 'string') {\n\t\treturn false;\n\t}\n\n\tconst len = input.length;\n\tif (len \u003c AT_URI_MIN_LENGTH || len \u003e AT_URI_MAX_LENGTH) {\n\t\treturn false;\n\t}\n\n\tif (\n\t\tinput.charCodeAt(0) !== 0x61 ||\n\t\tinput.charCodeAt(1) !== 0x74 ||\n\t\tinput.charCodeAt(2) !== 0x3a ||\n\t\tinput.charCodeAt(3) !== 0x2f ||\n\t\tinput.charCodeAt(4) !== 0x2f\n\t) {\n\t\treturn false;\n\t}\n\n\tconst hash = input.indexOf('#', 5);\n\tconst stop = hash === -1 ? len : hash;\n\n\tif (hash !== -1) {\n\t\tconst fragmentStart = hash + 1;\n\t\tif (fragmentStart \u003e= len || input.charCodeAt(fragmentStart) !== 0x2f) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (let idx = fragmentStart; idx \u003c len; idx++) {\n\t\t\tif (!isFragmentChar(input.charCodeAt(idx))) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\tconst firstSlash = input.indexOf('/', 5);\n\tlet repoEnd = stop;\n\tlet collection: string | undefined;\n\tlet rkey: string | undefined;\n\n\tif (firstSlash !== -1 \u0026\u0026 firstSlash \u003c stop) {\n\t\trepoEnd = firstSlash;\n\n\t\tconst collectionStart = firstSlash + 1;\n\t\tif (collectionStart \u003e= stop) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst secondSlash = input.indexOf('/', collectionStart);\n\t\tif (secondSlash !== -1 \u0026\u0026 secondSlash \u003c stop) {\n\t\t\tif (secondSlash === collectionStart || secondSlash + 1 \u003e= stop) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst thirdSlash = input.indexOf('/', secondSlash + 1);\n\t\t\tif (thirdSlash !== -1 \u0026\u0026 thirdSlash \u003c stop) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tcollection = input.substring(collectionStart, secondSlash);\n\t\t\trkey = input.substring(secondSlash + 1, stop);\n\t\t} else {\n\t\t\tcollection = input.substring(collectionStart, stop);\n\t\t}\n\t}\n\n\tif (repoEnd \u003c= 5) {\n\t\treturn false;\n\t}\n\n\tconst repo = input.substring(5, repoEnd);\n\n\treturn (\n\t\tisActorIdentifier(repo) \u0026\u0026\n\t\t(collection === undefined || isNsid(collection)) \u0026\u0026\n\t\t(rkey === undefined || isRecordKey(rkey))\n\t);\n};\n\n// #__NO_SIDE_EFFECTS__\nexport const parseResourceUri = (input: string): Result\u003cParsedResourceUri, string\u003e =\u003e {\n\tconst len = input.length;\n\tif (len \u003c AT_URI_MIN_LENGTH || len \u003e AT_URI_MAX_LENGTH) {\n\t\treturn { ok: false, error: `invalid at-uri: ${input}` };\n\t}\n\n\tconst match = ATURI_RE.exec(input);\n\tif (match === null) {\n\t\treturn { ok: false, error: `invalid at-uri: ${input}` };\n\t}\n\n\tconst [, r, c, k, f] = match;\n\n\tif (!isActorIdentifier(r)) {\n\t\treturn { ok: false, error: `invalid repo in at-uri: ${r}` };\n\t}\n\n\tif (c !== undefined \u0026\u0026 !isNsid(c)) {\n\t\treturn { ok: false, error: `invalid collection in at-uri: ${c}` };\n\t}\n\n\tif (k !== undefined \u0026\u0026 !isRecordKey(k)) {\n\t\treturn { ok: false, error: `invalid rkey in at-uri: ${k}` };\n\t}\n\n\treturn { ok: true, value: { repo: r, collection: c, rkey: k, fragment: f } };\n};\n\n/**\n * represents a canonical AT Protocol URI for a specific record.\n *\n * this URI format uses the account's DID as the authority, ensuring that\n * the URI remains valid even as the account changes handles, uniquely\n * identifying a specific piece of record within AT Protocol.\n */\nexport type CanonicalResourceUri = `at://${Did}/${Nsid}/${RecordKey}`;\n\nexport type ParsedCanonicalResourceUri = {\n\trepo: Did;\n\tcollection: Nsid;\n\trkey: RecordKey;\n\tfragment: string | undefined;\n};\n\n// #__NO_SIDE_EFFECTS__\nexport const isCanonicalResourceUri = (input: unknown): input is CanonicalResourceUri =\u003e {\n\tif (typeof input !== 'string') {\n\t\treturn false;\n\t}\n\n\tconst len = input.length;\n\tif (len \u003c CANONICAL_AT_URI_MIN_LENGTH || len \u003e AT_URI_MAX_LENGTH) {\n\t\treturn false;\n\t}\n\n\t// must start with \"at://\"\n\tif (\n\t\tinput.charCodeAt(0) !== 0x61 ||\n\t\tinput.charCodeAt(1) !== 0x74 ||\n\t\tinput.charCodeAt(2) !== 0x3a ||\n\t\tinput.charCodeAt(3) !== 0x2f ||\n\t\tinput.charCodeAt(4) !== 0x2f\n\t) {\n\t\treturn false;\n\t}\n\n\tconst firstSlash = input.indexOf('/', 5);\n\tif (firstSlash === -1) {\n\t\treturn false;\n\t}\n\n\tconst secondSlash = input.indexOf('/', firstSlash + 1);\n\tif (secondSlash === -1) {\n\t\treturn false;\n\t}\n\n\t// check for fragment\n\tconst hashPos = input.indexOf('#', secondSlash + 1);\n\n\tconst repo = input.substring(5, firstSlash);\n\tconst collection = input.substring(firstSlash + 1, secondSlash);\n\tconst rkey = hashPos === -1 ? input.substring(secondSlash + 1) : input.substring(secondSlash + 1, hashPos);\n\n\treturn isDid(repo) \u0026\u0026 isNsid(collection) \u0026\u0026 isRecordKey(rkey);\n};\n\n// #__NO_SIDE_EFFECTS__\nexport const parseCanonicalResourceUri = (input: string): Result\u003cParsedCanonicalResourceUri, string\u003e =\u003e {\n\tconst len = input.length;\n\tif (len \u003c CANONICAL_AT_URI_MIN_LENGTH || len \u003e AT_URI_MAX_LENGTH) {\n\t\treturn { ok: false, error: `invalid canonical-at-uri: ${input}` };\n\t}\n\n\tconst match = ATURI_RE.exec(input);\n\tif (match === null) {\n\t\treturn { ok: false, error: `invalid canonical-at-uri: ${input}` };\n\t}\n\n\tconst [, r, c, k, f] = match;\n\n\tif (!isDid(r)) {\n\t\treturn { ok: false, error: `invalid repo in canonical-at-uri: ${r}` };\n\t}\n\n\tif (!isNsid(c)) {\n\t\treturn { ok: false, error: `invalid collection in canonical-at-uri: ${c}` };\n\t}\n\n\tif (!isRecordKey(k)) {\n\t\treturn { ok: false, error: `invalid rkey in canonical-at-uri: ${k}` };\n\t}\n\n\treturn { ok: true, value: { repo: r, collection: c, rkey: k, fragment: f } };\n};\n"],"version":3}
-3
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/dist/syntax/cid.mjs
··· 1 - /* esm.sh - @atcute/lexicons@1.2.10/dist/syntax/cid */ 2 - var e=/^baf[ky]rei[a-z2-7]{52}$/,r=t=>typeof t=="string"&&t.length===59&&e.test(t);export{r as isCid}; 3 - //# sourceMappingURL=./cid.mjs.map
-1
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/dist/syntax/cid.mjs.map
··· 1 - {"mappings":";AAKA,IAAMA,EAAc,2BAGPC,EAASC,GACd,OAAOA,GAAU,UAAYA,EAAM,SAAW,IAAMF,EAAY,KAAKE,CAAK","names":["DASL_CID_RE","isCid","input"],"sources":["../esm/npm/@atcute/lexicons@1.2.10/node_modules/@atcute/lexicons/lib/syntax/cid.ts"],"sourcesContent":["/**\n * represents a content identifier (CID)\n */\nexport type Cid = string;\n\nconst DASL_CID_RE = /^baf[ky]rei[a-z2-7]{52}$/;\n\n// #__NO_SIDE_EFFECTS__\nexport const isCid = (input: unknown): input is Cid =\u003e {\n\treturn typeof input === 'string' \u0026\u0026 input.length === 59 \u0026\u0026 DASL_CID_RE.test(input);\n};\n"],"version":3}
-3
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/dist/syntax/did.mjs
··· 1 - /* esm.sh - @atcute/lexicons@1.2.10/dist/syntax/did */ 2 - var e=/^did:([a-z]+):([a-zA-Z0-9._:%-]*[a-zA-Z0-9._-])$/,s=t=>typeof t=="string"&&t.length>=7&&t.length<=2048&&e.test(t);export{s as isDid}; 3 - //# sourceMappingURL=./did.mjs.map
-1
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/dist/syntax/did.mjs.map
··· 1 - {"mappings":";AAYA,IAAMA,EAAS,mDAGFC,EAASC,GACd,OAAOA,GAAU,UAAYA,EAAM,QAAU,GAAKA,EAAM,QAAU,MAAQF,EAAO,KAAKE,CAAK","names":["DID_RE","isDid","input"],"sources":["../esm/npm/@atcute/lexicons@1.2.10/node_modules/@atcute/lexicons/lib/syntax/did.ts"],"sourcesContent":["/**\n * represents a decentralized identifier (DID).\n */\nexport type Did\u003cMethod extends string = string\u003e = `did:${Method}:${string}`;\n\n/**\n * represents a decentralized identifier with methods supported in atproto\n */\nexport type AtprotoDid = Did\u003c'plc' | 'web'\u003e;\n\nexport type AtprotoAudience = `${AtprotoDid}#${string}`;\n\nconst DID_RE = /^did:([a-z]+):([a-zA-Z0-9._:%-]*[a-zA-Z0-9._-])$/;\n\n// #__NO_SIDE_EFFECTS__\nexport const isDid = (input: unknown): input is Did =\u003e {\n\treturn typeof input === 'string' \u0026\u0026 input.length \u003e= 7 \u0026\u0026 input.length \u003c= 2048 \u0026\u0026 DID_RE.test(input);\n};\n"],"version":3}
-3
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/dist/syntax/handle.mjs
··· 1 - /* esm.sh - @atcute/lexicons@1.2.10/dist/syntax/handle */ 2 - import{isAsciiAlpha as i,isAsciiAlphaNum as s}from"./utils/ascii.mjs";var c=(r,t,l)=>{let f=l-t;if(f===0||f>63)return!1;let a=r.charCodeAt(t);if(!s(a))return!1;if(f>1){if(!s(r.charCodeAt(l-1)))return!1;for(let e=t+1;e<l-1;e++){let o=r.charCodeAt(e);if(!s(o)&&o!==45)return!1}}return!0},A=r=>{if(typeof r!="string")return!1;let t=r.length;if(t<3||t>253)return!1;let l=0,f=0,a=0;for(let e=0;e<=t;e++)if(e===t||r.charCodeAt(e)===46){if(!c(r,l,e))return!1;a=l,l=e+1,f++}return f<2?!1:i(r.charCodeAt(a))};export{A as isHandle}; 3 - //# sourceMappingURL=./handle.mjs.map
-1
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/dist/syntax/handle.mjs.map
··· 1 - {"mappings":";AAAA,OAAS,gBAAAA,EAAc,mBAAAC,MAAuB,oBAS9C,IAAMC,EAAe,CAACC,EAAeC,EAAeC,IAAwB,CAC3E,IAAMC,EAAMD,EAAMD,EAClB,GAAIE,IAAQ,GAAKA,EAAM,GACtB,MAAO,GAGR,IAAMC,EAAQJ,EAAM,WAAWC,CAAK,EACpC,GAAI,CAACH,EAAgBM,CAAK,EACzB,MAAO,GAGR,GAAID,EAAM,EAAG,CACZ,GAAI,CAACL,EAAgBE,EAAM,WAAWE,EAAM,CAAC,CAAC,EAAG,MAAO,GACxD,QAASG,EAAIJ,EAAQ,EAAGI,EAAIH,EAAM,EAAGG,IAAK,CACzC,IAAMC,EAAIN,EAAM,WAAWK,CAAC,EAC5B,GAAI,CAACP,EAAgBQ,CAAC,GAAKA,IAAM,GAChC,MAAO,EAET,CACD,CAEA,MAAO,EACR,EAGaC,EAAYP,GAAmC,CAC3D,GAAI,OAAOA,GAAU,SACpB,MAAO,GAGR,IAAMG,EAAMH,EAAM,OAClB,GAAIG,EAAM,GAAKA,EAAM,IACpB,MAAO,GAGR,IAAIK,EAAa,EACbC,EAAa,EACbC,EAAiB,EAErB,QAASC,EAAI,EAAGA,GAAKR,EAAKQ,IACzB,GAAIA,IAAMR,GAAOH,EAAM,WAAWW,CAAC,IAAM,GAAM,CAC9C,GAAI,CAACZ,EAAaC,EAAOQ,EAAYG,CAAC,EACrC,MAAO,GAERD,EAAiBF,EACjBA,EAAaG,EAAI,EACjBF,GACD,CAID,OAAIA,EAAa,EACT,GAIDZ,EAAaG,EAAM,WAAWU,CAAc,CAAC,CACrD","names":["isAsciiAlpha","isAsciiAlphaNum","isValidLabel","input","start","end","len","first","j","c","isHandle","labelStart","labelCount","lastLabelStart","i"],"sources":["../esm/npm/@atcute/lexicons@1.2.10/node_modules/@atcute/lexicons/lib/syntax/handle.ts"],"sourcesContent":["import { isAsciiAlpha, isAsciiAlphaNum } from './utils/ascii.ts';\n\n/**\n * represents an account's handle, using domains as a human-friendly\n * identifier.\n */\nexport type Handle = `${string}.${string}`;\n\n// validates a domain label: starts/ends with alphanumeric, middle allows hyphens, max 63 chars\nconst isValidLabel = (input: string, start: number, end: number): boolean =\u003e {\n\tconst len = end - start;\n\tif (len === 0 || len \u003e 63) {\n\t\treturn false;\n\t}\n\n\tconst first = input.charCodeAt(start);\n\tif (!isAsciiAlphaNum(first)) {\n\t\treturn false;\n\t}\n\n\tif (len \u003e 1) {\n\t\tif (!isAsciiAlphaNum(input.charCodeAt(end - 1))) return false;\n\t\tfor (let j = start + 1; j \u003c end - 1; j++) {\n\t\t\tconst c = input.charCodeAt(j);\n\t\t\tif (!isAsciiAlphaNum(c) \u0026\u0026 c !== 0x2d) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true;\n};\n\n// #__NO_SIDE_EFFECTS__\nexport const isHandle = (input: unknown): input is Handle =\u003e {\n\tif (typeof input !== 'string') {\n\t\treturn false;\n\t}\n\n\tconst len = input.length;\n\tif (len \u003c 3 || len \u003e 253) {\n\t\treturn false;\n\t}\n\n\tlet labelStart = 0;\n\tlet labelCount = 0;\n\tlet lastLabelStart = 0;\n\n\tfor (let i = 0; i \u003c= len; i++) {\n\t\tif (i === len || input.charCodeAt(i) === 0x2e) {\n\t\t\tif (!isValidLabel(input, labelStart, i)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tlastLabelStart = labelStart;\n\t\t\tlabelStart = i + 1;\n\t\t\tlabelCount++;\n\t\t}\n\t}\n\n\t// need at least 2 labels (one dot)\n\tif (labelCount \u003c 2) {\n\t\treturn false;\n\t}\n\n\t// TLD must start with a letter\n\treturn isAsciiAlpha(input.charCodeAt(lastLabelStart));\n};\n"],"version":3}
-3
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/dist/syntax/nsid.mjs
··· 1 - /* esm.sh - @atcute/lexicons@1.2.10/dist/syntax/nsid */ 2 - import{isAsciiAlpha as h,isAsciiAlphaNum as a}from"./utils/ascii.mjs";var C=r=>{if(typeof r!="string")return!1;let t=r.length;if(t<5||t>317)return!1;let f=-1;for(let e=t-1;e>=0;e--)if(r.charCodeAt(e)===46){f=e;break}if(f===-1)return!1;let s=0,l=0;for(let e=0;e<=f;e++)if(e===f||r.charCodeAt(e)===46){let i=e-s;if(i===0||i>63)return!1;let A=r.charCodeAt(s);if(l===0){if(!h(A))return!1}else if(!a(A))return!1;if(i>1){if(!a(r.charCodeAt(e-1)))return!1;for(let n=s+1;n<e-1;n++){let d=r.charCodeAt(n);if(!a(d)&&d!==45)return!1}}s=e+1,l++}if(l<2)return!1;let o=f+1,c=t-o;if(c===0||c>63||!h(r.charCodeAt(o)))return!1;for(let e=o+1;e<t;e++)if(!a(r.charCodeAt(e)))return!1;return!0};export{C as isNsid}; 3 - //# sourceMappingURL=./nsid.mjs.map
-1
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/dist/syntax/nsid.mjs.map
··· 1 - {"mappings":";AAAA,OAAS,gBAAAA,EAAc,mBAAAC,MAAuB,oBAQvC,IAAMC,EAAUC,GAAiC,CACvD,GAAI,OAAOA,GAAU,SACpB,MAAO,GAGR,IAAMC,EAAMD,EAAM,OAClB,GAAIC,EAAM,GAAKA,EAAM,IACpB,MAAO,GAIR,IAAIC,EAAU,GACd,QAASC,EAAIF,EAAM,EAAGE,GAAK,EAAGA,IAC7B,GAAIH,EAAM,WAAWG,CAAC,IAAM,GAAM,CACjCD,EAAUC,EACV,KACD,CAED,GAAID,IAAY,GACf,MAAO,GAIR,IAAIE,EAAW,EACXC,EAAS,EACb,QAASC,EAAI,EAAGA,GAAKJ,EAASI,IAC7B,GAAIA,IAAMJ,GAAWF,EAAM,WAAWM,CAAC,IAAM,GAAM,CAClD,IAAMC,EAASD,EAAIF,EACnB,GAAIG,IAAW,GAAKA,EAAS,GAC5B,MAAO,GAGR,IAAMC,EAAQR,EAAM,WAAWI,CAAQ,EACvC,GAAIC,IAAW,GAEd,GAAI,CAACR,EAAaW,CAAK,EACtB,MAAO,WAIJ,CAACV,EAAgBU,CAAK,EACzB,MAAO,GAIT,GAAID,EAAS,EAAG,CACf,GAAI,CAACT,EAAgBE,EAAM,WAAWM,EAAI,CAAC,CAAC,EAC3C,MAAO,GAER,QAASH,EAAIC,EAAW,EAAGD,EAAIG,EAAI,EAAGH,IAAK,CAC1C,IAAMM,EAAIT,EAAM,WAAWG,CAAC,EAC5B,GAAI,CAACL,EAAgBW,CAAC,GAAKA,IAAM,GAChC,MAAO,EAET,CACD,CAEAL,EAAWE,EAAI,EACfD,GACD,CAID,GAAIA,EAAS,EACZ,MAAO,GAIR,IAAMK,EAAYR,EAAU,EACtBS,EAAUV,EAAMS,EAKtB,GAJIC,IAAY,GAAKA,EAAU,IAI3B,CAACd,EAAaG,EAAM,WAAWU,CAAS,CAAC,EAC5C,MAAO,GAER,QAASP,EAAIO,EAAY,EAAGP,EAAIF,EAAKE,IACpC,GAAI,CAACL,EAAgBE,EAAM,WAAWG,CAAC,CAAC,EACvC,MAAO,GAIT,MAAO,EACR","names":["isAsciiAlpha","isAsciiAlphaNum","isNsid","input","len","lastDot","j","segStart","segIdx","i","segLen","first","c","nameStart","nameLen"],"sources":["../esm/npm/@atcute/lexicons@1.2.10/node_modules/@atcute/lexicons/lib/syntax/nsid.ts"],"sourcesContent":["import { isAsciiAlpha, isAsciiAlphaNum } from './utils/ascii.ts';\n\n/**\n * represents a namespace identifier (NSID)\n */\nexport type Nsid = `${string}.${string}.${string}`;\n\n// #__NO_SIDE_EFFECTS__\nexport const isNsid = (input: unknown): input is Nsid =\u003e {\n\tif (typeof input !== 'string') {\n\t\treturn false;\n\t}\n\n\tconst len = input.length;\n\tif (len \u003c 5 || len \u003e 317) {\n\t\treturn false;\n\t}\n\n\t// find the last dot to separate domain labels from the name segment\n\tlet lastDot = -1;\n\tfor (let j = len - 1; j \u003e= 0; j--) {\n\t\tif (input.charCodeAt(j) === 0x2e) {\n\t\t\tlastDot = j;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (lastDot === -1) {\n\t\treturn false;\n\t}\n\n\t// validate domain segments (before lastDot)\n\tlet segStart = 0;\n\tlet segIdx = 0;\n\tfor (let i = 0; i \u003c= lastDot; i++) {\n\t\tif (i === lastDot || input.charCodeAt(i) === 0x2e) {\n\t\t\tconst segLen = i - segStart;\n\t\t\tif (segLen === 0 || segLen \u003e 63) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst first = input.charCodeAt(segStart);\n\t\t\tif (segIdx === 0) {\n\t\t\t\t// first domain label must start with a letter\n\t\t\t\tif (!isAsciiAlpha(first)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// subsequent domain labels start with alphanumeric\n\t\t\t\tif (!isAsciiAlphaNum(first)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (segLen \u003e 1) {\n\t\t\t\tif (!isAsciiAlphaNum(input.charCodeAt(i - 1))) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tfor (let j = segStart + 1; j \u003c i - 1; j++) {\n\t\t\t\t\tconst c = input.charCodeAt(j);\n\t\t\t\t\tif (!isAsciiAlphaNum(c) \u0026\u0026 c !== 0x2d) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsegStart = i + 1;\n\t\t\tsegIdx++;\n\t\t}\n\t}\n\n\t// need at least 2 domain segments\n\tif (segIdx \u003c 2) {\n\t\treturn false;\n\t}\n\n\t// name segment (after lastDot): starts with letter, rest alphanumeric, max 63\n\tconst nameStart = lastDot + 1;\n\tconst nameLen = len - nameStart;\n\tif (nameLen === 0 || nameLen \u003e 63) {\n\t\treturn false;\n\t}\n\n\tif (!isAsciiAlpha(input.charCodeAt(nameStart))) {\n\t\treturn false;\n\t}\n\tfor (let j = nameStart + 1; j \u003c len; j++) {\n\t\tif (!isAsciiAlphaNum(input.charCodeAt(j))) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n};\n"],"version":3}
-3
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/dist/syntax/record-key.mjs
··· 1 - /* esm.sh - @atcute/lexicons@1.2.10/dist/syntax/record-key */ 2 - import{isAsciiAlphaNum as o}from"./utils/ascii.mjs";var a=r=>{if(typeof r!="string")return!1;let t=r.length;if(t<1||t>512||t<=2&&r.charCodeAt(0)===46&&(t===1||r.charCodeAt(1)===46))return!1;for(let f=0;f<t;f++){let e=r.charCodeAt(f);if(!o(e)&&e!==95&&e!==126&&e!==46&&e!==58&&e!==45)return!1}return!0};export{a as isRecordKey}; 3 - //# sourceMappingURL=./record-key.mjs.map
-1
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/dist/syntax/record-key.mjs.map
··· 1 - {"mappings":";AAAA,OAAS,mBAAAA,MAAuB,oBAQzB,IAAMC,EAAeC,GAAsC,CACjE,GAAI,OAAOA,GAAU,SACpB,MAAO,GAGR,IAAMC,EAAMD,EAAM,OAMlB,GALIC,EAAM,GAAKA,EAAM,KAKjBA,GAAO,GAAKD,EAAM,WAAW,CAAC,IAAM,KAASC,IAAQ,GAAKD,EAAM,WAAW,CAAC,IAAM,IACrF,MAAO,GAGR,QAASE,EAAI,EAAGA,EAAID,EAAKC,IAAK,CAC7B,IAAMC,EAAIH,EAAM,WAAWE,CAAC,EAE5B,GACC,CAACJ,EAAgBK,CAAC,GAClBA,IAAM,IACNA,IAAM,KACNA,IAAM,IACNA,IAAM,IACNA,IAAM,GAEN,MAAO,EAET,CAEA,MAAO,EACR","names":["isAsciiAlphaNum","isRecordKey","input","len","i","c"],"sources":["../esm/npm/@atcute/lexicons@1.2.10/node_modules/@atcute/lexicons/lib/syntax/record-key.ts"],"sourcesContent":["import { isAsciiAlphaNum } from './utils/ascii.ts';\n\n/**\n * represents a record key\n */\nexport type RecordKey = string;\n\n// #__NO_SIDE_EFFECTS__\nexport const isRecordKey = (input: unknown): input is RecordKey =\u003e {\n\tif (typeof input !== 'string') {\n\t\treturn false;\n\t}\n\n\tconst len = input.length;\n\tif (len \u003c 1 || len \u003e 512) {\n\t\treturn false;\n\t}\n\n\t// reject \".\" and \"..\"\n\tif (len \u003c= 2 \u0026\u0026 input.charCodeAt(0) === 0x2e \u0026\u0026 (len === 1 || input.charCodeAt(1) === 0x2e)) {\n\t\treturn false;\n\t}\n\n\tfor (let i = 0; i \u003c len; i++) {\n\t\tconst c = input.charCodeAt(i);\n\t\t// [a-zA-Z0-9_~.:-]\n\t\tif (\n\t\t\t!isAsciiAlphaNum(c) \u0026\u0026\n\t\t\tc !== 0x5f \u0026\u0026 // _\n\t\t\tc !== 0x7e \u0026\u0026 // ~\n\t\t\tc !== 0x2e \u0026\u0026 // .\n\t\t\tc !== 0x3a \u0026\u0026 // :\n\t\t\tc !== 0x2d // -\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n};\n"],"version":3}
-3
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/dist/syntax/utils/ascii.mjs
··· 1 - /* esm.sh - @atcute/lexicons@1.2.10/dist/syntax/utils/ascii */ 2 - var i=x=>x>=65&&x<=90||x>=97&&x<=122,r=x=>i(x)||x>=48&&x<=57;export{i as isAsciiAlpha,r as isAsciiAlphaNum}; 3 - //# sourceMappingURL=./ascii.mjs.map
-1
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/dist/syntax/utils/ascii.mjs.map
··· 1 - {"mappings":";AACO,IAAMA,EAAgBC,GACpBA,GAAK,IAAQA,GAAK,IAAUA,GAAK,IAAQA,GAAK,IAI1CC,EAAmBD,GACxBD,EAAaC,CAAC,GAAMA,GAAK,IAAQA,GAAK","names":["isAsciiAlpha","c","isAsciiAlphaNum"],"sources":["../esm/npm/@atcute/lexicons@1.2.10/node_modules/@atcute/lexicons/lib/syntax/utils/ascii.ts"],"sourcesContent":["// #__NO_SIDE_EFFECTS__\nexport const isAsciiAlpha = (c: number): boolean =\u003e {\n\treturn (c \u003e= 0x41 \u0026\u0026 c \u003c= 0x5a) || (c \u003e= 0x61 \u0026\u0026 c \u003c= 0x7a);\n};\n\n// #__NO_SIDE_EFFECTS__\nexport const isAsciiAlphaNum = (c: number): boolean =\u003e {\n\treturn isAsciiAlpha(c) || (c \u003e= 0x30 \u0026\u0026 c \u003c= 0x39);\n};\n"],"version":3}
-3
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/dist/utils.mjs
··· 1 - /* esm.sh - @atcute/lexicons@1.2.10/dist/utils */ 2 - var e=!1;var t=(r,o)=>{if(!r)throw e?new Error("Assertion failed"+(o?`: ${o}`:"")):new Error("Assertion failed")},f=(r,o)=>{t(!1,o)};export{t as assert,f as assertNever}; 3 - //# sourceMappingURL=./utils.mjs.map
-1
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/dist/utils.mjs.map
··· 1 - {"mappings":";AAAA,IAA2CA,EAAE,GCItC,IAAMC,EAAoE,CAACC,EAAWC,IAAW,CACvG,GAAI,CAACD,EACJ,MAAIE,EACG,IAAI,MAAM,oBAAsBD,EAAU,KAAKA,CAAO,GAAK,GAAG,EAG/D,IAAI,MAAM,kBAAkB,CAEpC,EAEaE,EAAc,CAACC,EAAUH,IAA2B,CAChEF,EAAO,GAAOE,CAAO,CACtB","names":["o","assert","condition","message","o","assertNever","_"],"sources":["npm-replacement:esm-env","../esm/npm/@atcute/lexicons@1.2.10/node_modules/@atcute/lexicons/lib/utils.ts"],"sourcesContent":["const e=typeof window\u003c\"u\"\u0026\u0026typeof Deno\u003e\"u\",o=!1,n=!1;export{e as BROWSER,o as DEV,n as NODE};\n","import { DEV } from 'esm-env';\n\nexport type Result\u003cT, E\u003e = { ok: true; value: T } | { ok: false; error: E };\n\nexport const assert: { (condition: any, message?: string): asserts condition } = (condition, message) =\u003e {\n\tif (!condition) {\n\t\tif (DEV) {\n\t\t\tthrow new Error(`Assertion failed` + (message ? `: ${message}` : ``));\n\t\t}\n\n\t\tthrow new Error(`Assertion failed`);\n\t}\n};\n\nexport const assertNever = (_: never, message?: string): never =\u003e {\n\tassert(false, message);\n};\n"],"version":3}
-3
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/interfaces.mjs
··· 1 - /* esm.sh - @atcute/lexicons@1.2.10/interfaces */ 2 - import{isCid as r}from"./dist/syntax/cid.mjs";var i=Symbol.for("@atcute/cid-link-wrapper");var o=t=>{let e=t;return typeof e=="object"&&e!==null&&(i in e||r(e.$link))};var n=t=>{let e=t;return typeof e=="object"&&e!==null&&e.$type==="blob"&&typeof e.mimeType=="string"&&Number.isSafeInteger(e.size)&&o(e.ref)&&Object.keys(e).length===4},s=t=>{let e=t;return typeof e=="object"&&e!==null&&typeof e.cid=="string"&&typeof e.mimeType=="string"&&Object.keys(e).length===2};import{isBytes as g}from"./dist/interfaces/bytes.mjs";export{n as isBlob,g as isBytes,o as isCidLink,s as isLegacyBlob}; 3 - //# sourceMappingURL=./interfaces.mjs.map
-1
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/interfaces.mjs.map
··· 1 - {"mappings":";AAAA,OAAS,SAAAA,MAAuB,wBAShC,IAAMC,EAAkB,OAAO,IAAI,0BAA0B,EAsBtD,IAAMC,EAAaC,GAAoC,CAC7D,IAAMC,EAAID,EAEV,OAAO,OAAOC,GAAM,UAAYA,IAAM,OAASC,KAAmBD,GAAKE,EAAMF,EAAE,KAAK,EACrF,ECrBO,IAAMG,EAAUC,GAAiC,CACvD,IAAMC,EAAID,EAEV,OACC,OAAOC,GAAM,UACbA,IAAM,MACNA,EAAE,QAAU,QACZ,OAAOA,EAAE,UAAa,UACtB,OAAO,cAAcA,EAAE,IAAI,GAC3BC,EAAUD,EAAE,GAAG,GACf,OAAO,KAAKA,CAAC,EAAE,SAAW,CAE5B,EAUaE,EAAgBH,GAAuC,CACnE,IAAMC,EAAID,EAEV,OACC,OAAOC,GAAM,UACbA,IAAM,MACN,OAAOA,EAAE,KAAQ,UACjB,OAAOA,EAAE,UAAa,UACtB,OAAO,KAAKA,CAAC,EAAE,SAAW,CAE5B,EC7CA,OAAS,WAAAG,MAA2B","names":["isCid","CID_LINK_SYMBOL","isCidLink","input","v","CID_LINK_SYMBOL","isCid","isBlob","input","v","isCidLink","isLegacyBlob","isBytes"],"sources":["../esm/npm/@atcute/lexicons@1.2.10/node_modules/@atcute/lexicons/lib/interfaces/cid-link.ts","../esm/npm/@atcute/lexicons@1.2.10/node_modules/@atcute/lexicons/lib/interfaces/blob.ts","../esm/npm/@atcute/lexicons@1.2.10/node_modules/@atcute/lexicons/lib/interfaces/index.ts"],"sourcesContent":["import { isCid, type Cid } from '../syntax/cid.ts';\n\n/**\n * represents a content identifier (CID) reference\n */\nexport interface CidLink {\n\t$link: Cid;\n}\n\nconst CID_LINK_SYMBOL = Symbol.for('@atcute/cid-link-wrapper');\n\n/**\n * this should match with {@link file://./../../../../utilities/cid/lib/cid-link.ts}\n * @internal\n */\nexport interface _CidLinkWrapper {\n\treadonly [CID_LINK_SYMBOL]: true;\n\n\treadonly bytes: Uint8Array;\n\treadonly $link: string;\n\n\ttoJSON(): CidLink;\n}\n\n/**\n * @internal\n */\nexport const _isCidLinkWrapper = (input: unknown): input is _CidLinkWrapper =\u003e {\n\treturn typeof input === 'object' \u0026\u0026 input !== null \u0026\u0026 CID_LINK_SYMBOL in input;\n};\n\nexport const isCidLink = (input: unknown): input is CidLink =\u003e {\n\tconst v = input as any;\n\n\treturn typeof v === 'object' \u0026\u0026 v !== null \u0026\u0026 (CID_LINK_SYMBOL in v || isCid(v.$link));\n};\n","import type { Cid } from '../syntax/cid.ts';\n\nimport { isCidLink, type CidLink } from './cid-link.ts';\n\n/**\n * represents a reference to a data blob\n */\nexport interface Blob\u003cTMime extends string = string\u003e {\n\t$type: 'blob';\n\tmimeType: TMime;\n\tref: CidLink;\n\tsize: number;\n}\n\nexport const isBlob = (input: unknown): input is Blob =\u003e {\n\tconst v = input as any;\n\n\treturn (\n\t\ttypeof v === 'object' \u0026\u0026\n\t\tv !== null \u0026\u0026\n\t\tv.$type === 'blob' \u0026\u0026\n\t\ttypeof v.mimeType === 'string' \u0026\u0026\n\t\tNumber.isSafeInteger(v.size) \u0026\u0026\n\t\tisCidLink(v.ref) \u0026\u0026\n\t\tObject.keys(v).length === 4\n\t);\n};\n\n/**\n * deprecated interface representing an interface to a data blob\n */\nexport interface LegacyBlob\u003cTMime extends string = string\u003e {\n\tcid: Cid;\n\tmimeType: TMime;\n}\n\nexport const isLegacyBlob = (input: unknown): input is LegacyBlob =\u003e {\n\tconst v = input as any;\n\n\treturn (\n\t\ttypeof v === 'object' \u0026\u0026\n\t\tv !== null \u0026\u0026\n\t\ttypeof v.cid === 'string' \u0026\u0026\n\t\ttypeof v.mimeType === 'string' \u0026\u0026\n\t\tObject.keys(v).length === 2\n\t);\n};\n","export { isBlob, isLegacyBlob, type Blob, type LegacyBlob } from './blob.ts';\nexport { isBytes, type Bytes } from './bytes.ts';\nexport { isCidLink, type CidLink } from './cid-link.ts';\n"],"version":3}
-3
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/syntax.mjs
··· 1 - /* esm.sh - @atcute/lexicons@1.2.10/syntax */ 2 - export*from"./dist/syntax/at-identifier.mjs";export*from"./dist/syntax/at-uri.mjs";export*from"./dist/syntax/cid.mjs";var t=/^((?!0{3})\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01]))T((?:[01]\d|2[0-3]):(?:[0-5]\d):(?:[0-5]\d))(\.\d+)?(Z|(?!-00:00)[+-](?:[01]\d|2[0-3]):(?:[0-5]\d))$/,i=e=>typeof e=="string"&&e.length>=20&&e.length<=64&&t.test(e);export*from"./dist/syntax/did.mjs";export*from"./dist/syntax/handle.mjs";var o=/^((?<grandfathered>(en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang))|((?<language>([A-Za-z]{2,3}(-(?<extlang>[A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-(?<script>[A-Za-z]{4}))?(-(?<region>[A-Za-z]{2}|[0-9]{3}))?(-(?<variant>[A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-(?<extension>[0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(?<privateUseA>x(-[A-Za-z0-9]{1,8})+))?)|(?<privateUseB>x(-[A-Za-z0-9]{1,8})+))$/,g=e=>typeof e=="string"&&e.length>=2&&o.test(e);export*from"./dist/syntax/nsid.mjs";export*from"./dist/syntax/record-key.mjs";var r=/^[234567abcdefghij][234567abcdefghijklmnopqrstuvwxyz]{12}$/,x=e=>typeof e=="string"&&e.length===13&&r.test(e);import{isUtf8LengthInRange as n}from"../../uint8array@1.1.1/es2022/uint8array.mjs";var a=/^\w+:(?:\/\/)?[^\s/][^\s]*$/,h=e=>typeof e!="string"||!n(e,3,8192)?!1:a.test(e);export{i as isDatetime,h as isGenericUri,g as isLanguageCode,x as isTid}; 3 - //# sourceMappingURL=./syntax.mjs.map
-1
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/syntax.mjs.map
··· 1 - {"mappings":";AAAA,WAAc,kCACd,WAAc,2BACd,WAAc,wBCAd,IAAMA,EACL,iKAGYC,EAAcC,GACnB,OAAOA,GAAU,UAAYA,EAAM,QAAU,IAAMA,EAAM,QAAU,IAAMF,EAAa,KAAKE,CAAK,EDHxG,WAAc,wBACd,WAAc,2BEHd,IAAMC,EACL,olBAGYC,EAAkBC,GACvB,OAAOA,GAAU,UAAYA,EAAM,QAAU,GAAKF,EAAiB,KAAKE,CAAK,EFArF,WAAc,yBACd,WAAc,+BGHd,IAAMC,EAAS,6DAGFC,EAASC,GACd,OAAOA,GAAU,UAAYA,EAAM,SAAW,IAAMF,EAAO,KAAKE,CAAK,ECT7E,OAAS,uBAAAC,MAA2B,2CAOpC,IAAMC,EAAS,8BAGFC,EAAgBC,GACxB,OAAOA,GAAU,UAIjB,CAACH,EAAoBG,EAAO,EAAG,IAAI,EAC/B,GAGDF,EAAO,KAAKE,CAAK","names":["DATE_TIME_RE","isDatetime","input","LANGUAGE_CODE_RE","isLanguageCode","input","TID_RE","isTid","input","isUtf8LengthInRange","URI_RE","isGenericUri","input"],"sources":["../esm/npm/@atcute/lexicons@1.2.10/node_modules/@atcute/lexicons/lib/syntax/index.ts","../esm/npm/@atcute/lexicons@1.2.10/node_modules/@atcute/lexicons/lib/syntax/datetime.ts","../esm/npm/@atcute/lexicons@1.2.10/node_modules/@atcute/lexicons/lib/syntax/language.ts","../esm/npm/@atcute/lexicons@1.2.10/node_modules/@atcute/lexicons/lib/syntax/tid.ts","../esm/npm/@atcute/lexicons@1.2.10/node_modules/@atcute/lexicons/lib/syntax/uri.ts"],"sourcesContent":["export * from './at-identifier.ts';\nexport * from './at-uri.ts';\nexport * from './cid.ts';\nexport * from './datetime.ts';\nexport * from './did.ts';\nexport * from './handle.ts';\nexport * from './language.ts';\nexport * from './nsid.ts';\nexport * from './record-key.ts';\nexport * from './tid.ts';\nexport * from './uri.ts';\n","export type Datetime = string;\n\nconst DATE_TIME_RE =\n\t/^((?!0{3})\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01]))T((?:[01]\\d|2[0-3]):(?:[0-5]\\d):(?:[0-5]\\d))(\\.\\d+)?(Z|(?!-00:00)[+-](?:[01]\\d|2[0-3]):(?:[0-5]\\d))$/;\n\n// #__NO_SIDE_EFFECTS__\nexport const isDatetime = (input: unknown): input is Datetime =\u003e {\n\treturn typeof input === 'string' \u0026\u0026 input.length \u003e= 20 \u0026\u0026 input.length \u003c= 64 \u0026\u0026 DATE_TIME_RE.test(input);\n};\n","export type LanguageCode = string;\n\nconst LANGUAGE_CODE_RE =\n\t/^((?\u003cgrandfathered\u003e(en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang))|((?\u003clanguage\u003e([A-Za-z]{2,3}(-(?\u003cextlang\u003e[A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-(?\u003cscript\u003e[A-Za-z]{4}))?(-(?\u003cregion\u003e[A-Za-z]{2}|[0-9]{3}))?(-(?\u003cvariant\u003e[A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-(?\u003cextension\u003e[0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(?\u003cprivateUseA\u003ex(-[A-Za-z0-9]{1,8})+))?)|(?\u003cprivateUseB\u003ex(-[A-Za-z0-9]{1,8})+))$/;\n\n// #__NO_SIDE_EFFECTS__\nexport const isLanguageCode = (input: unknown): input is LanguageCode =\u003e {\n\treturn typeof input === 'string' \u0026\u0026 input.length \u003e= 2 \u0026\u0026 LANGUAGE_CODE_RE.test(input);\n};\n","/**\n * represents a timestamp identifier (TID)\n */\nexport type Tid = string;\n\nconst TID_RE = /^[234567abcdefghij][234567abcdefghijklmnopqrstuvwxyz]{12}$/;\n\n// #__NO_SIDE_EFFECTS__\nexport const isTid = (input: unknown): input is Tid =\u003e {\n\treturn typeof input === 'string' \u0026\u0026 input.length === 13 \u0026\u0026 TID_RE.test(input);\n};\n","import { isUtf8LengthInRange } from '@atcute/uint8array';\n\n/**\n * represents a generic URI\n */\nexport type GenericUri = `${string}:${string}`;\n\nconst URI_RE = /^\\w+:(?:\\/\\/)?[^\\s/][^\\s]*$/;\n\n// #__NO_SIDE_EFFECTS__\nexport const isGenericUri = (input: unknown): input is GenericUri =\u003e {\n\tif (typeof input !== 'string') {\n\t\treturn false;\n\t}\n\n\tif (!isUtf8LengthInRange(input, 3, 8192)) {\n\t\treturn false;\n\t}\n\n\treturn URI_RE.test(input);\n};\n"],"version":3}
-3
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/validations.mjs
··· 1 - /* esm.sh - @atcute/lexicons@1.2.10/validations */ 2 - import{isUtf8LengthInRange as J}from"../../uint8array@1.1.1/es2022/uint8array.mjs";import{isGraphemeLengthInRange as X}from"../../util-text@1.2.0/es2022/util-text.mjs";import{_isBytesWrapper as q}from"./dist/interfaces/bytes.mjs";import*as $ from"./interfaces.mjs";import*as l from"./syntax.mjs";import{assert as I}from"./dist/utils.mjs";var u=(e,t,n)=>(Object.defineProperty(e,t,{value:n}),n),v=e=>({get value(){let t=e();return u(this,"value",t)}}),A=Array.isArray,E=e=>typeof e=="object"&&e!==null&&!A(e),R=v(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let e=Function;return new e(""),!0}catch{return!1}});var G=!1,S=(e,t)=>e?{ok:!1,code:"join",left:e,right:t}:t,k=(e,t)=>({ok:!1,code:"prepend",key:e,tree:t}),b=e=>({ok:!0,value:e}),O=0,_=1,Q=(e,t)=>{let{ok:n,msg:r,...s}=e;return{...s,path:t}},C=(e,t=[],n=[])=>{for(;;)switch(e.code){case"join":{C(e.left,t.slice(),n),e=e.right;continue}case"prepend":{t.push(e.key),e=e.tree;continue}default:return n.push(Q(e,t)),n}},M=e=>{let t=0;for(;;)switch(e.code){case"join":{t+=M(e.left),e=e.right;continue}case"prepend":{e=e.tree;continue}default:return t+1}},z=(e,t)=>{switch(e.length){case 0:return"nothing";case 1:return e[0];default:return`${e.slice(0,-1).join(", ")} ${t} ${e[e.length-1]}`}},D=e=>JSON.stringify(e),T=(e,t,n,r)=>{let s=`expected ${e} `;return n>0?r===n?s+=`${n}`:r!==1/0?s+=`between ${n} and ${r}`:s+=`at least ${n}`:s+=`at most ${r}`,s+=` ${t}(s)`,s},H=e=>{let t="",n=0;for(;;){switch(e.code){case"join":{n+=M(e.right),e=e.left;continue}case"prepend":{t+=`.${e.key}`,e=e.tree;continue}}break}let r=e.msg(),s=`${e.code} at ${t||"."} (${r})`;return n>0&&(s+=` (+${n} other issue(s))`),s},w=class extends Error{name="ValidationError";#e;constructor(t){super(),this.#e=t}get message(){return H(this.#e)}get issues(){return C(this.#e)}},N=class{ok=!1;#e;constructor(t){this.#e=t}get message(){return H(this.#e)}get issues(){return C(this.#e)}throw(){throw new w(this.#e)}},_e=(e,t)=>{let n=e["~run"](t,_);return n===void 0||n.ok},ke=(e,t)=>{let n=e["~run"](t,O);return n===void 0?b(t):n.ok?n:new N(n)},be=(e,t)=>{let n=e["~run"](t,O);if(n===void 0)return t;if(n.ok)return n.value;throw new w(n)},F=(e,t=[],n=[])=>{for(;;)switch(e.code){case"join":{F(e.left,t.slice(),n),e=e.right;continue}case"prepend":{t.push(e.key),e=e.tree;continue}default:return n.push({message:e.msg(),path:t.length>0?t:void 0}),n}},p=e=>({version:1,vendor:"@atcute/lexicons",validate(t){let n=e["~run"](t,O);return n===void 0?{value:t}:n.ok?{value:n.value}:{issues:F(n)}}}),ve=(e,t)=>{let n=t.length;return{...e,constraints:t,"~run"(r,s){let c=e["~run"](r,s),i;if(c===void 0)i=r;else if(c.ok)i=c.value;else return c;for(let o=0;o<n;o++){let a=t[o]["~run"](i,s);if(a!==void 0)if(a.ok)i=a.value,(c===void 0||c.ok)&&(c=a);else{if(s&_)return a;c===void 0||c.ok?c=a:c=S(c,a)}}return c}}},Se=e=>{let t={ok:!1,code:"invalid_literal",expected:[e],msg(){return`expected ${D(e)}`}};return{kind:"schema",type:"literal",expected:e,"~run"(n,r){if(n!==e)return t},get"~standard"(){return u(this,"~standard",p(this))}}},Ee=e=>{let t={ok:!1,code:"invalid_literal",expected:e,msg(){return`expected ${z(e.map(D),"or")}`}};return{kind:"schema",type:"literal_enum",expected:e,"~run"(n,r){if(!e.includes(n))return t},get"~standard"(){return u(this,"~standard",p(this))}}},Z={ok:!1,code:"invalid_type",expected:"boolean",msg(){return"expected boolean"}},V={kind:"schema",type:"boolean","~run"(e,t){if(typeof e!="boolean")return Z},get"~standard"(){return u(this,"~standard",p(this))}},Ie=()=>V,B={ok:!1,code:"invalid_type",expected:"integer",msg(){return"expected integer"}},ee={kind:"schema",type:"integer","~run"(e,t){if(typeof e!="number"||e<0||!Number.isSafeInteger(e))return B},get"~standard"(){return u(this,"~standard",p(this))}},we=()=>ee,Te=(e,t=1/0)=>{let n={ok:!1,code:"invalid_integer_range",min:e,max:t,msg(){let r="expected an integer ";return e>0?t===e?r+=`of exactly ${e}`:t!==1/0?r+=`between ${e} and ${t}`:r+=`of at least ${e}`:r+=`of at most ${t}`,r}};return{kind:"constraint",type:"integer_range",min:e,max:t,"~run"(r,s){if(r<e||r>t)return n}}},U={ok:!1,code:"invalid_type",expected:"string",msg(){return"expected string"}},te={kind:"schema",type:"string",format:null,"~run"(e,t){if(typeof e!="string")return U},get"~standard"(){return u(this,"~standard",p(this))}},je=()=>te,m=(e,t)=>{let n={ok:!1,code:"invalid_string_format",expected:e,msg(){return`expected a ${e} formatted string`}},r={kind:"schema",type:"string",format:e,"~run"(s,c){if(typeof s!="string")return U;if(!t(s))return n},get"~standard"(){return u(this,"~standard",p(this))}};return()=>r},Ae=m("at-identifier",l.isActorIdentifier),Ne=m("at-uri",l.isResourceUri),Pe=m("cid",l.isCid),Oe=m("datetime",l.isDatetime),Ce=m("did",l.isDid),Ue=m("handle",l.isHandle),Le=m("language",l.isLanguageCode),Re=m("nsid",l.isNsid),Be=m("record-key",l.isRecordKey),Ye=m("tid",l.isTid),Ge=m("uri",l.isGenericUri),Me=(e,t=1/0)=>{let n={ok:!1,code:"invalid_string_length",minLength:e,maxLength:t,msg(){return T("a string","character",e,t)}};return{kind:"constraint",type:"string_length",minLength:e,maxLength:t,"~run"(r,s){if(!J(r,e,t))return n}}},ze=(e,t=1/0)=>{let n={ok:!1,code:"invalid_string_graphemes",minGraphemes:e,maxGraphemes:t,msg(){return T("a string","grapheme",e,t)}};return{kind:"constraint",type:"string_graphemes",minGraphemes:e,maxGraphemes:t,"~run"(r,s){if(!X(r,e,t))return n}}},Y={ok:!1,code:"invalid_type",expected:"blob",msg(){return"expected blob"}},ne={kind:"schema",type:"blob","~run"(e,t){if(typeof e!="object"||e===null)return Y;if(!$.isBlob(e)){if($.isLegacyBlob(e)){let n={$type:"blob",mimeType:e.mimeType,ref:{$link:e.cid},size:-1};return b(n)}return Y}},get"~standard"(){return u(this,"~standard",p(this))}},De=()=>ne,re={ok:!1,code:"invalid_type",expected:"bytes",msg(){return"expected bytes"}},se={kind:"schema",type:"bytes","~run"(e,t){if(!$.isBytes(e))return re},get"~standard"(){return u(this,"~standard",p(this))}},He=()=>se,Fe=(e,t=1/0)=>{let n={ok:!1,code:"invalid_bytes_size",minSize:e,maxSize:t,msg(){return T("a byte array","byte",e,t)}};return{kind:"constraint",type:"bytes_size",minSize:e,maxSize:t,"~run"(r,s){let c;if(q(r))c=r.buf.length;else{let i=r.$bytes,o=i.length;i.charCodeAt(o-1)===61&&o--,o>1&&i.charCodeAt(o-1)===61&&o--,c=o*3>>>2}if(c<e||c>t)return n}}},ie={ok:!1,code:"invalid_type",expected:"cid-link",msg(){return"expected cid-link"}},oe={kind:"schema",type:"cid_link","~run"(e,t){if(!$.isCidLink(e))return ie},get"~standard"(){return u(this,"~standard",p(this))}},Ke=()=>oe,We=e=>({kind:"schema",type:"nullable",wrapped:e,"~run"(t,n){if(t!==null)return e["~run"](t,n)},get"~standard"(){return u(this,"~standard",p(this))}}),Je=(e,t)=>({kind:"schema",type:"optional",wrapped:e,default:t,"~run"(n,r){if(n===void 0){if(t===void 0)return;let s=typeof t=="function"?t():t;return b(s)}return e["~run"](n,r)},get"~standard"(){return u(this,"~standard",p(this))}}),ae=e=>e.type==="optional",ue={ok:!1,code:"invalid_type",expected:"array",msg(){return"expected array"}},Xe=e=>{let t=v(()=>typeof e=="function"?e():e);return{kind:"schema",type:"array",get item(){return u(this,"item",t.value)},get"~run"(){let n=t.value;return u(this,"~run",(s,c)=>{if(!A(s))return ue;let i,o;for(let a=0,d=s.length;a<d;a++){let g=s[a],f=n["~run"](g,c);if(f!==void 0){if(f.ok)o===void 0&&(o=s.slice()),o[a]=f.value;else if(i=S(i,k(a,f)),c&_)return i}}if(i!==void 0)return i;if(o!==void 0)return b(o)})},get"~standard"(){return u(this,"~standard",p(this))}}},qe=(e,t=1/0)=>{let n={ok:!1,code:"invalid_array_length",minLength:e,maxLength:t,msg(){return T("an array","item",e,t)}};return{kind:"constraint",type:"array_length",minLength:e,maxLength:t,"~run"(r,s){let c=r.length;if(c<e||c>t)return n}}},P={ok:!1,code:"invalid_type",expected:"object",msg(){return"expected object"}},K={ok:!1,code:"missing_value",msg(){return"missing value"}},ce=(e,t,n)=>{t==="__proto__"?Object.defineProperty(e,t,{value:n}):e[t]=n},Qe=e=>{let t=v(()=>{let n=[];for(let r in e){let s=e[r];n.push({key:r,schema:s,optional:ae(s),missing:k(r,K)})}return n});return{kind:"schema",type:"object",get shape(){let n=t.value,r={};for(let s of n)r[s.key]=s.schema;return u(this,"shape",r)},get"~run"(){let n=t.value,r=n.length,s=()=>{let i=[["$ok",b],["$joinIssues",S],["$prependPath",k]],o="let $iss,$out;";for(let d=0;d<r;d++){let g=n[d],f=g.key,h=JSON.stringify(f),y=`_${d}`;if(o+=`{const $val=$in[${h}];`,g.optional?o+="if($val!==undefined){":o+=`if($val!==undefined||${h} in $in){`,o+=`const $res=${y}$schema["~run"]($val,$flags);if($res!==undefined)if($res.ok)${f!=="__proto__"?`($out??={...$in})[${h}]=$res.value`:`Object.defineProperty($out??={...$in},${h},{value:$res.value})`};else if((($iss=$joinIssues($iss,$prependPath(${h},$res))),$flags&${_}))return $iss;}`,g.optional){let x=g.schema,W=x.wrapped,j=x.default;if(i.push([`${y}$schema`,W]),j!==void 0){let L=typeof j=="function"?`${y}$default()`:`${y}$default`;i.push([`${y}$default`,j]),o+=f!=="__proto__"?`else($out??={...$in})[${h}]=${L};`:`else Object.defineProperty($out??={...$in},${h},{value:${L}});`}}else i.push([`${y}$schema`,g.schema]),i.push([`${y}$missing`,g.missing]),o+=`else if((($iss=$joinIssues($iss,${y}$missing)),$flags&${_}))return $iss;`;o+="}"}return o+="if($iss!==undefined)return $iss;if($out!==undefined)return $ok($out);",new Function(`[${i.map(([d])=>d).join(",")}]`,`return function matcher($in,$flags){${o}}`)(i.map(([,d])=>d))};if(R.value){let i=s();return u(this,"~run",(a,d)=>E(a)?i(a,d):P)}return u(this,"~run",(i,o)=>{if(!E(i))return P;let a,d;for(let g=0;g<r;g++){let f=n[g],h=f.key,y=i[h];if(!f.optional&&y===void 0&&!(h in i)){if(a=S(a,f.missing),o&_)return a;continue}let x=f.schema["~run"](y,o);if(x!==void 0){if(x.ok)d===void 0&&(d={...i}),ce(d,h,x.value);else if(a=S(a,k(h,x)),o&_)return a}}if(a!==void 0)return a;if(d!==void 0)return b(d)})},get"~standard"(){return u(this,"~standard",p(this))}}},Ze=(e,t)=>{let n=v(()=>{let s=t.shape.$type;return I(s!==void 0,"expected $type in record to be defined"),s.type==="optional"&&(s=s.wrapped),I(s.type==="literal"&&typeof s.expected=="string","expected $type to be a string literal"),t});return{kind:"schema",type:"record",key:e,get object(){return u(this,"object",n.value)},"~run"(r,s){return u(this,"~run",n.value["~run"])(r,s)},get"~standard"(){return u(this,"~standard",p(this))}}},de=k("$type",K),le=k("$type",U),Ve=(e,t=!1)=>({kind:"schema",type:"variant",members:e,closed:t,get"~run"(){let n=[],r=[];for(let i=0,o=e.length;i<o;i++){let a=e[i],d=a.type==="record"?a.object:a,f=d.shape.$type;I(f!==void 0,`expected $type in variant member #${i} to be defined`),f.type==="optional"&&(f=f.wrapped),I(f.type==="literal"&&typeof f.expected=="string",`expected $type in variant member #${i} to be a string literal`),n.push(f.expected),r.push(d)}let s={ok:!1,code:"invalid_variant",expected:n,msg(){return`expected ${z(n,"or")}`}};return u(this,"~run",(i,o)=>{if(!E(i))return P;let a=i.$type;if(a===void 0&&!("$type"in i))return de;if(typeof a!="string")return t?s:le;for(let d=0,g=n.length;d<g;d++)if(n[d]===a)return r[d]["~run"](i,o);if(t)return s})},get"~standard"(){return u(this,"~standard",p(this))}}),fe={ok:!1,code:"invalid_type",expected:"unknown",msg(){return"expected unknown"}},pe={kind:"schema",type:"unknown","~run"(e,t){if(typeof e!="object"||e===null)return fe},get"~standard"(){return u(this,"~standard",p(this))}},et=()=>pe,tt=(e,t)=>(G=!0,{kind:"metadata",type:"xrpc_procedure",nsid:e,params:t.params,get input(){let n=t.input;return n?.type==="lex"&&(n={type:"lex",schema:n.schema}),u(this,"input",n)},get output(){let n=t.output;return n?.type==="lex"&&(n={type:"lex",schema:n.schema}),u(this,"output",n)}}),nt=(e,t)=>(G=!0,{kind:"metadata",type:"xrpc_query",nsid:e,params:t.params,get output(){let n=t.output;return n?.type==="lex"&&(n={type:"lex",schema:n.schema}),u(this,"output",n)}}),rt=(e,t)=>({kind:"metadata",type:"xrpc_subscription",nsid:e,params:t.params,get message(){return u(this,"message",t.message)}});export{_ as FLAG_ABORT_EARLY,O as FLAG_EMPTY,w as ValidationError,Ae as actorIdentifierString,Xe as array,qe as arrayLength,De as blob,Ie as boolean,He as bytes,Fe as bytesSize,Ke as cidLink,Pe as cidString,ve as constrain,Oe as datetimeString,Ce as didString,Ge as genericUriString,Ue as handleString,we as integer,Te as integerRange,_e as is,Le as languageCodeString,Se as literal,Ee as literalEnum,Re as nsidString,We as nullable,Qe as object,b as ok,Je as optional,be as parse,tt as procedure,nt as query,Ze as record,Be as recordKeyString,Ne as resourceUriString,ke as safeParse,je as string,ze as stringGraphemes,Me as stringLength,rt as subscription,Ye as tidString,et as unknown,Ve as variant,G as xrpcSchemaGenerated}; 3 - //# sourceMappingURL=./validations.mjs.map
-1
vendor/esm.sh/@atcute/lexicons@1.2.10/es2022/validations.mjs.map
··· 1 - {"mappings":"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","names":["isUtf8LengthInRange","isGraphemeLengthInRange","_isBytesWrapper","interfaces","syntax","assert","lazyProperty","obj","prop","value","lazy","getter","isArray","isObject","input","allowsEval","F","xrpcSchemaGenerated","joinIssues","left","right","prependPath","key","tree","ok","value","FLAG_EMPTY","FLAG_ABORT_EARLY","cloneIssueWithPath","issue","path","_ok","_fmt","clone","collectIssues","issues","countIssues","count","separatedList","list","sep","formatLiteral","formatRangeMessage","type","unit","min","max","message","formatIssueTree","msg","ValidationError","#issueTree","issueTree","ErrImpl","is","schema","input","r","safeParse","parse","collectStandardIssues","toStandardSchema","constrain","base","constraints","len","flags","result","current","idx","literal","_flags","lazyProperty","literalEnum","values","ISSUE_TYPE_BOOLEAN","BOOLEAN_SCHEMA","boolean","ISSUE_TYPE_INTEGER","INTEGER_SCHEMA","integer","integerRange","ISSUE_TYPE_STRING","STRING_SINGLETON","string","_formattedString","format","validate","actorIdentifierString","resourceUriString","cidString","datetimeString","didString","handleString","languageCodeString","nsidString","recordKeyString","tidString","genericUriString","stringLength","minLength","maxLength","isUtf8LengthInRange","stringGraphemes","minGraphemes","maxGraphemes","isGraphemeLengthInRange","ISSUE_EXPECTED_BLOB","BLOB_SCHEMA","blob","ISSUE_EXPECTED_BYTES","BYTES_SCHEMA","bytes","bytesSize","minSize","maxSize","size","_isBytesWrapper","str","ISSUE_EXPECTED_CID_LINK","CID_LINK_SCHEMA","cidLink","nullable","wrapped","optional","defaultValue","isOptionalSchema","ISSUE_TYPE_ARRAY","array","item","resolvedShape","lazy","shape","isArray","output","val","arrayLength","length","ISSUE_TYPE_OBJECT","ISSUE_MISSING","set","obj","object","resolvedEntries","resolved","entry","generateFastpass","fields","doc","esckey","id","innerSchema","calls","field","allowsEval","fastpass","isObject","record","validatedObject","t","assert","ISSUE_VARIANT_MISSING","ISSUE_VARIANT_TYPE","variant","members","closed","types","schemas","raw","member","ISSUE_TYPE_UNKNOWN","UNKNOWN_SCHEMA","unknown","procedure","nsid","options","query","subscription"],"sources":["../esm/npm/@atcute/lexicons@1.2.10/node_modules/@atcute/lexicons/lib/validations/index.ts","../esm/npm/@atcute/lexicons@1.2.10/node_modules/@atcute/lexicons/lib/validations/utils.ts"],"sourcesContent":["import { isUtf8LengthInRange } from '@atcute/uint8array';\nimport { isGraphemeLengthInRange } from '@atcute/util-text';\n\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\n\nimport { _isBytesWrapper } from '../interfaces/bytes.ts';\nimport * as interfaces from '../interfaces/index.ts';\nimport * as syntax from '../syntax/index.ts';\nimport type { $type } from '../types/brand.ts';\nimport { assert } from '../utils.ts';\n\nimport { allowsEval, isArray, isObject, lazy, lazyProperty } from './utils.ts';\n\n/**\n * flag indicating whether xrpc schema generation helpers are used. set to true\n * when query() or procedure() is called. this enables conditional tree-shaking\n * of validation code when schemas are not used.\n * @deprecated internal flag for tree-shaking, do not use directly\n */\nexport let xrpcSchemaGenerated = false;\n\ntype Identity\u003cT\u003e = T;\ntype Flatten\u003cT\u003e = Identity\u003c{ [K in keyof T]: T[K] }\u003e;\n\ntype InputType =\n\t| 'unknown'\n\t| 'null'\n\t| 'undefined'\n\t| 'string'\n\t| 'integer'\n\t| 'boolean'\n\t| 'blob'\n\t| 'bytes'\n\t| 'cid-link'\n\t| 'object'\n\t| 'array';\n\ntype StringFormatMap = {\n\t'at-identifier': syntax.ActorIdentifier;\n\t'at-uri': syntax.ResourceUri;\n\tcid: syntax.Cid;\n\tdatetime: syntax.Datetime;\n\tdid: syntax.Did;\n\thandle: syntax.Handle;\n\tlanguage: syntax.LanguageCode;\n\tnsid: syntax.Nsid;\n\t'record-key': syntax.RecordKey;\n\ttid: syntax.Tid;\n\turi: syntax.GenericUri;\n};\n\nexport type StringFormat = keyof StringFormatMap;\n\ntype Literal = string | number | boolean;\ntype Key = string | number;\n\ntype IssueFormatter = () =\u003e string;\n\n// #region Schema issue types\nexport type IssueLeaf = { ok: false; msg: IssueFormatter } \u0026 (\n\t| { code: 'missing_value' }\n\t| { code: 'invalid_literal'; expected: readonly Literal[] }\n\t| { code: 'invalid_type'; expected: InputType }\n\t| { code: 'invalid_variant'; expected: string[] }\n\t| { code: 'invalid_integer_range'; min: number; max: number }\n\t| { code: 'invalid_string_format'; expected: StringFormat }\n\t| { code: 'invalid_string_graphemes'; minGraphemes: number; maxGraphemes: number }\n\t| { code: 'invalid_string_length'; minLength: number; maxLength: number }\n\t| { code: 'invalid_array_length'; minLength: number; maxLength: number }\n\t| { code: 'invalid_bytes_size'; minSize: number; maxSize: number }\n);\n\nexport type IssueTree =\n\t| IssueLeaf\n\t| { ok: false; code: 'prepend'; key: Key; tree: IssueTree }\n\t| { ok: false; code: 'join'; left: IssueTree; right: IssueTree };\n\nexport type Issue =\n\t| { code: 'missing_value'; path: Key[] }\n\t| { code: 'invalid_literal'; path: Key[]; expected: readonly Literal[] }\n\t| { code: 'invalid_type'; path: Key[]; expected: InputType }\n\t| { code: 'invalid_variant'; path: Key[]; expected: string[] }\n\t| { code: 'invalid_integer_range'; path: Key[]; min: number; max: number }\n\t| { code: 'invalid_string_format'; path: Key[]; expected: StringFormat }\n\t| { code: 'invalid_string_graphemes'; path: Key[]; minGraphemes: number; maxGraphemes: number }\n\t| { code: 'invalid_string_length'; path: Key[]; minLength: number; maxLength: number }\n\t| { code: 'invalid_array_length'; path: Key[]; minLength: number; maxLength: number }\n\t| { code: 'invalid_bytes_size'; path: Key[]; minSize: number; maxSize: number };\n\n// #__NO_SIDE_EFFECTS__\nconst joinIssues = (left: IssueTree | undefined, right: IssueTree): IssueTree =\u003e {\n\treturn left ? { ok: false, code: 'join', left, right } : right;\n};\n\n// #__NO_SIDE_EFFECTS__\nconst prependPath = (key: Key, tree: IssueTree): IssueTree =\u003e {\n\treturn { ok: false, code: 'prepend', key, tree };\n};\n\n// #region Schema result types\n\nexport type Ok\u003cT\u003e = {\n\tok: true;\n\tvalue: T;\n};\nexport type Err = {\n\tok: false;\n\treadonly message: string;\n\treadonly issues: readonly Issue[];\n\tthrow(): never;\n};\n\nexport type ValidationResult\u003cT\u003e = Ok\u003cT\u003e | Err;\n\n// #__NO_SIDE_EFFECTS__\nexport const ok = \u003cT\u003e(value: T): Ok\u003cT\u003e =\u003e {\n\treturn { ok: true, value };\n};\n\n// #region Base schema\n\n// Private symbols meant to hold types\ndeclare const kType: unique symbol;\ntype kType = typeof kType;\n\n// None set\nexport const FLAG_EMPTY = 0;\n// Don't continue validation if an error is encountered\nexport const FLAG_ABORT_EARLY = 1 \u003c\u003c 0;\n\ntype MatcherResult = undefined | Ok\u003cunknown\u003e | IssueTree;\ntype Matcher = (input: unknown, flags: number) =\u003e MatcherResult;\n\ntype LexStandardSchemaResult\u003cT extends BaseSchema\u003e = StandardSchemaV1.Result\u003cInferOutput\u003cT\u003e\u003e;\n\ninterface LexStandardSchema\u003cT extends BaseSchema\u003e extends StandardSchemaV1.Props\u003cunknown\u003e {\n\treadonly validate: (value: unknown) =\u003e LexStandardSchemaResult\u003cT\u003e | Promise\u003cLexStandardSchemaResult\u003cT\u003e\u003e;\n\treadonly types?: StandardSchemaV1.Types\u003cInferInput\u003cT\u003e, InferOutput\u003cT\u003e\u003e;\n}\n\nexport interface BaseSchema\u003cTInput = unknown, TOutput = TInput\u003e {\n\treadonly kind: 'schema';\n\treadonly type: string;\n\treadonly '~run': Matcher;\n\treadonly '~standard': LexStandardSchema\u003cthis\u003e;\n\n\treadonly [kType]?: { in: TInput; out: TOutput };\n}\n\nexport type InferInput\u003cT extends BaseSchema\u003e = NonNullable\u003cT[kType]\u003e['in'];\n\nexport type InferOutput\u003cT extends BaseSchema\u003e = NonNullable\u003cT[kType]\u003e['out'];\n\n// #region Schema runner\nconst cloneIssueWithPath = (issue: IssueLeaf, path: Key[]): Issue =\u003e {\n\tconst { ok: _ok, msg: _fmt, ...clone } = issue;\n\n\treturn { ...clone, path };\n};\n\nconst collectIssues = (tree: IssueTree, path: Key[] = [], issues: Issue[] = []): Issue[] =\u003e {\n\tfor (;;) {\n\t\tswitch (tree.code) {\n\t\t\tcase 'join': {\n\t\t\t\tcollectIssues(tree.left, path.slice(), issues);\n\t\t\t\ttree = tree.right;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcase 'prepend': {\n\t\t\t\tpath.push(tree.key);\n\t\t\t\ttree = tree.tree;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tissues.push(cloneIssueWithPath(tree, path));\n\t\t\t\treturn issues;\n\t\t\t}\n\t\t}\n\t}\n};\n\nconst countIssues = (tree: IssueTree): number =\u003e {\n\tlet count = 0;\n\tfor (;;) {\n\t\tswitch (tree.code) {\n\t\t\tcase 'join': {\n\t\t\t\tcount += countIssues(tree.left);\n\t\t\t\ttree = tree.right;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcase 'prepend': {\n\t\t\t\ttree = tree.tree;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\treturn count + 1;\n\t\t\t}\n\t\t}\n\t}\n};\n\nconst separatedList = (list: string[], sep: 'or' | 'and'): string =\u003e {\n\tswitch (list.length) {\n\t\tcase 0: {\n\t\t\treturn `nothing`;\n\t\t}\n\t\tcase 1: {\n\t\t\treturn list[0];\n\t\t}\n\t\tdefault: {\n\t\t\treturn `${list.slice(0, -1).join(', ')} ${sep} ${list[list.length - 1]}`;\n\t\t}\n\t}\n};\n\nconst formatLiteral = (value: Literal): string =\u003e {\n\treturn JSON.stringify(value);\n};\n\nconst formatRangeMessage = (\n\ttype: 'a string' | 'an array' | 'a byte array',\n\tunit: 'character' | 'grapheme' | 'item' | 'byte',\n\tmin: number,\n\tmax: number,\n): string =\u003e {\n\tlet message = `expected ${type} `;\n\n\tif (min \u003e 0) {\n\t\tif (max === min) {\n\t\t\tmessage += `${min}`;\n\t\t} else if (max !== Infinity) {\n\t\t\tmessage += `between ${min} and ${max}`;\n\t\t} else {\n\t\t\tmessage += `at least ${min}`;\n\t\t}\n\t} else {\n\t\tmessage += `at most ${max}`;\n\t}\n\n\tmessage += ` ${unit}(s)`;\n\treturn message;\n};\n\nconst formatIssueTree = (tree: IssueTree): string =\u003e {\n\tlet path = '';\n\tlet count = 0;\n\tfor (;;) {\n\t\tswitch (tree.code) {\n\t\t\tcase 'join': {\n\t\t\t\tcount += countIssues(tree.right);\n\t\t\t\ttree = tree.left;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcase 'prepend': {\n\t\t\t\tpath += `.${tree.key}`;\n\t\t\t\ttree = tree.tree;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tbreak;\n\t}\n\n\tconst message = tree.msg();\n\n\tlet msg = `${tree.code} at ${path || '.'} (${message})`;\n\tif (count \u003e 0) {\n\t\tmsg += ` (+${count} other issue(s))`;\n\t}\n\n\treturn msg;\n};\n\nexport class ValidationError extends Error {\n\toverride readonly name = 'ValidationError';\n\n\t#issueTree: IssueTree;\n\n\tconstructor(issueTree: IssueTree) {\n\t\tsuper();\n\n\t\tthis.#issueTree = issueTree;\n\t}\n\n\toverride get message(): string {\n\t\treturn formatIssueTree(this.#issueTree);\n\t}\n\n\tget issues(): readonly Issue[] {\n\t\treturn collectIssues(this.#issueTree);\n\t}\n}\n\nclass ErrImpl implements Err {\n\treadonly ok = false;\n\n\t#issueTree: IssueTree;\n\n\tconstructor(issueTree: IssueTree) {\n\t\tthis.#issueTree = issueTree;\n\t}\n\n\tget message(): string {\n\t\treturn formatIssueTree(this.#issueTree);\n\t}\n\n\tget issues(): readonly Issue[] {\n\t\treturn collectIssues(this.#issueTree);\n\t}\n\n\tthrow(): never {\n\t\tthrow new ValidationError(this.#issueTree);\n\t}\n}\n\n// #__NO_SIDE_EFFECTS__\nexport const is = \u003cconst TSchema extends BaseSchema\u003e(\n\tschema: TSchema,\n\tinput: unknown,\n): input is InferInput\u003cTSchema\u003e =\u003e {\n\tconst r = schema['~run'](input, FLAG_ABORT_EARLY);\n\treturn r === undefined || r.ok;\n};\n\n// #__NO_SIDE_EFFECTS__\nexport const safeParse = \u003cconst TSchema extends BaseSchema\u003e(\n\tschema: TSchema,\n\tinput: unknown,\n): ValidationResult\u003cInferOutput\u003cTSchema\u003e\u003e =\u003e {\n\tconst r = schema['~run'](input, FLAG_EMPTY);\n\n\tif (r === undefined) {\n\t\treturn ok(input as InferOutput\u003cTSchema\u003e);\n\t}\n\n\tif (r.ok) {\n\t\treturn r as Ok\u003cInferOutput\u003cTSchema\u003e\u003e;\n\t}\n\n\treturn new ErrImpl(r);\n};\n\nexport const parse = \u003cconst TSchema extends BaseSchema\u003e(\n\tschema: TSchema,\n\tinput: unknown,\n): InferOutput\u003cTSchema\u003e =\u003e {\n\tconst r = schema['~run'](input, FLAG_EMPTY);\n\n\tif (r === undefined) {\n\t\treturn input as InferOutput\u003cTSchema\u003e;\n\t}\n\n\tif (r.ok) {\n\t\treturn r.value as InferOutput\u003cTSchema\u003e;\n\t}\n\n\tthrow new ValidationError(r);\n};\n\n// #region Standard Schema support\n\nconst collectStandardIssues = (\n\ttree: IssueTree,\n\tpath: Key[] = [],\n\tissues: StandardSchemaV1.Issue[] = [],\n): StandardSchemaV1.Issue[] =\u003e {\n\tfor (;;) {\n\t\tswitch (tree.code) {\n\t\t\tcase 'join': {\n\t\t\t\tcollectStandardIssues(tree.left, path.slice(), issues);\n\t\t\t\ttree = tree.right;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcase 'prepend': {\n\t\t\t\tpath.push(tree.key);\n\t\t\t\ttree = tree.tree;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tissues.push({ message: tree.msg(), path: path.length \u003e 0 ? path : undefined });\n\t\t\t\treturn issues;\n\t\t\t}\n\t\t}\n\t}\n};\n\nconst toStandardSchema = \u003cTSchema extends BaseSchema\u003e(schema: TSchema): LexStandardSchema\u003cTSchema\u003e =\u003e {\n\treturn {\n\t\tversion: 1,\n\t\tvendor: '@atcute/lexicons',\n\t\tvalidate(value) {\n\t\t\tconst r = schema['~run'](value, FLAG_EMPTY);\n\n\t\t\tif (r === undefined) {\n\t\t\t\treturn { value: value as InferOutput\u003cTSchema\u003e };\n\t\t\t}\n\n\t\t\tif (r.ok) {\n\t\t\t\treturn { value: r.value as InferOutput\u003cTSchema\u003e };\n\t\t\t}\n\n\t\t\treturn { issues: collectStandardIssues(r) };\n\t\t},\n\t};\n};\n\n// #region Base constraint\n\nexport interface BaseConstraint\u003cTType = unknown\u003e {\n\treadonly kind: 'constraint';\n\treadonly type: string;\n\treadonly '~run': (input: TType, flags: number) =\u003e MatcherResult;\n}\n\ntype ConstraintTuple\u003cT\u003e = readonly [BaseConstraint\u003cT\u003e, ...BaseConstraint\u003cT\u003e[]];\n\nexport type SchemaWithConstraint\u003c\n\tTItem extends BaseSchema,\n\tTConstraints extends ConstraintTuple\u003cInferOutput\u003cTItem\u003e\u003e,\n\u003e = TItem \u0026 {\n\treadonly constraints: TConstraints;\n};\n\n// #__NO_SIDE_EFFECTS__\nexport const constrain = \u003c\n\tTItem extends BaseSchema,\n\tconst TConstraints extends ConstraintTuple\u003cInferOutput\u003cTItem\u003e\u003e,\n\u003e(\n\tbase: TItem,\n\tconstraints: TConstraints,\n): SchemaWithConstraint\u003cTItem, TConstraints\u003e =\u003e {\n\tconst len = constraints.length;\n\n\treturn {\n\t\t...base,\n\t\tconstraints: constraints,\n\t\t'~run'(input, flags) {\n\t\t\tlet result = base['~run'](input, flags);\n\t\t\tlet current: any;\n\n\t\t\tif (result === undefined) {\n\t\t\t\tcurrent = input;\n\t\t\t} else if (result.ok) {\n\t\t\t\tcurrent = result.value;\n\t\t\t} else {\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tfor (let idx = 0; idx \u003c len; idx++) {\n\t\t\t\tconst r = constraints[idx]['~run'](current, flags);\n\n\t\t\t\tif (r !== undefined) {\n\t\t\t\t\tif (r.ok) {\n\t\t\t\t\t\tcurrent = r.value;\n\n\t\t\t\t\t\tif (result === undefined || result.ok) {\n\t\t\t\t\t\t\tresult = r;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (flags \u0026 FLAG_ABORT_EARLY) {\n\t\t\t\t\t\t\treturn r;\n\t\t\t\t\t\t} else if (result === undefined || result.ok) {\n\t\t\t\t\t\t\tresult = r;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult = joinIssues(result, r);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\t};\n};\n\n// #region Base metadata\n\nexport interface BaseMetadata {\n\treadonly kind: 'metadata';\n\treadonly type: string;\n}\n\n// #region Literal schema\n\nexport interface LiteralSchema\u003cT extends Literal = Literal\u003e extends BaseSchema\u003cT\u003e {\n\treadonly type: 'literal';\n\treadonly expected: T;\n}\n\n// #__NO_SIDE_EFFECTS__\nexport const literal = \u003cT extends Literal\u003e(value: T): LiteralSchema\u003cT\u003e =\u003e {\n\tconst issue: IssueLeaf = {\n\t\tok: false,\n\t\tcode: 'invalid_literal',\n\t\texpected: [value],\n\t\tmsg() {\n\t\t\treturn `expected ${formatLiteral(value)}`;\n\t\t},\n\t};\n\n\treturn {\n\t\tkind: 'schema',\n\t\ttype: 'literal',\n\t\texpected: value,\n\t\t'~run'(input, _flags) {\n\t\t\tif (input !== value) {\n\t\t\t\treturn issue;\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t},\n\t\tget '~standard'() {\n\t\t\treturn lazyProperty(this, '~standard', toStandardSchema(this));\n\t\t},\n\t};\n};\n\nexport interface LiteralEnumSchema\u003cTEnums extends readonly Literal[] = []\u003e extends BaseSchema\u003c\n\tTEnums[number]\n\u003e {\n\treadonly type: 'literal_enum';\n\treadonly expected: TEnums;\n}\n\n// #__NO_SIDE_EFFECTS__\nexport const literalEnum = \u003cconst TEnums extends readonly Literal[]\u003e(\n\tvalues: TEnums,\n): LiteralEnumSchema\u003cTEnums\u003e =\u003e {\n\tconst issue: IssueLeaf = {\n\t\tok: false,\n\t\tcode: 'invalid_literal',\n\t\texpected: values,\n\t\tmsg() {\n\t\t\treturn `expected ${separatedList(values.map(formatLiteral), 'or')}`;\n\t\t},\n\t};\n\n\treturn {\n\t\tkind: 'schema',\n\t\ttype: 'literal_enum',\n\t\texpected: values,\n\t\t'~run'(input, _flags) {\n\t\t\tif (!values.includes(input as any)) {\n\t\t\t\treturn issue;\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t},\n\t\tget '~standard'() {\n\t\t\treturn lazyProperty(this, '~standard', toStandardSchema(this));\n\t\t},\n\t};\n};\n\n// #region Boolean schema\n\nexport interface BooleanSchema extends BaseSchema\u003cboolean\u003e {\n\treadonly type: 'boolean';\n}\n\nconst ISSUE_TYPE_BOOLEAN: IssueLeaf = {\n\tok: false,\n\tcode: 'invalid_type',\n\texpected: 'boolean',\n\tmsg() {\n\t\treturn `expected boolean`;\n\t},\n};\n\nconst BOOLEAN_SCHEMA: BooleanSchema = {\n\tkind: 'schema',\n\ttype: 'boolean',\n\t'~run'(input, _flags) {\n\t\tif (typeof input !== 'boolean') {\n\t\t\treturn ISSUE_TYPE_BOOLEAN;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\tget '~standard'() {\n\t\treturn lazyProperty(this, '~standard', toStandardSchema(this));\n\t},\n};\n\n// #__NO_SIDE_EFFECTS__\nexport const boolean = (): BooleanSchema =\u003e {\n\treturn BOOLEAN_SCHEMA;\n};\n\n// #region Integer schema\n\nexport interface IntegerSchema extends BaseSchema\u003cnumber\u003e {\n\treadonly type: 'integer';\n}\n\nconst ISSUE_TYPE_INTEGER: IssueLeaf = {\n\tok: false,\n\tcode: 'invalid_type',\n\texpected: 'integer',\n\tmsg() {\n\t\treturn `expected integer`;\n\t},\n};\n\nconst INTEGER_SCHEMA: IntegerSchema = {\n\tkind: 'schema',\n\ttype: 'integer',\n\t'~run'(input, _flags) {\n\t\tif (typeof input !== 'number') {\n\t\t\treturn ISSUE_TYPE_INTEGER;\n\t\t}\n\n\t\tif (input \u003c 0 || !Number.isSafeInteger(input)) {\n\t\t\treturn ISSUE_TYPE_INTEGER;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\tget '~standard'() {\n\t\treturn lazyProperty(this, '~standard', toStandardSchema(this));\n\t},\n};\n\n// #__NO_SIDE_EFFECTS__\nexport const integer = (): IntegerSchema =\u003e {\n\treturn INTEGER_SCHEMA;\n};\n\n// #region Integer constraints\n\nexport interface IntegerRangeConstraint\u003c\n\tTMin extends number = number,\n\tTMax extends number = number,\n\u003e extends BaseConstraint\u003cnumber\u003e {\n\treadonly type: 'integer_range';\n\treadonly min: TMin;\n\treadonly max: TMax;\n}\n\n// #__NO_SIDE_EFFECTS__\nexport const integerRange: {\n\t\u003cconst TMin extends number\u003e(min: TMin): IntegerRangeConstraint\u003cTMin\u003e;\n\t\u003cconst TMin extends number, const TMax extends number\u003e(\n\t\tmin: TMin,\n\t\tmax: TMax,\n\t): IntegerRangeConstraint\u003cTMin, TMax\u003e;\n} = (min: number, max: number = Infinity): IntegerRangeConstraint =\u003e {\n\tconst issue: IssueLeaf = {\n\t\tok: false,\n\t\tcode: 'invalid_integer_range',\n\t\tmin: min,\n\t\tmax: max,\n\t\tmsg() {\n\t\t\tlet message = `expected an integer `;\n\n\t\t\tif (min \u003e 0) {\n\t\t\t\tif (max === min) {\n\t\t\t\t\tmessage += `of exactly ${min}`;\n\t\t\t\t} else if (max !== Infinity) {\n\t\t\t\t\tmessage += `between ${min} and ${max}`;\n\t\t\t\t} else {\n\t\t\t\t\tmessage += `of at least ${min}`;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tmessage += `of at most ${max}`;\n\t\t\t}\n\n\t\t\treturn message;\n\t\t},\n\t};\n\n\treturn {\n\t\tkind: 'constraint',\n\t\ttype: 'integer_range',\n\t\tmin: min,\n\t\tmax: max,\n\t\t'~run'(input, _flags) {\n\t\t\tif (input \u003c min) {\n\t\t\t\treturn issue;\n\t\t\t}\n\n\t\t\tif (input \u003e max) {\n\t\t\t\treturn issue;\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t},\n\t};\n};\n\n// #region String schema\n\nexport interface StringSchema\u003cT extends string = string\u003e extends BaseSchema\u003cT\u003e {\n\treadonly type: 'string';\n\treadonly format: null;\n}\n\nexport interface FormattedStringSchema\u003c\n\tTFormat extends keyof StringFormatMap = keyof StringFormatMap,\n\u003e extends BaseSchema\u003cStringFormatMap[TFormat]\u003e {\n\treadonly type: 'string';\n\treadonly format: TFormat;\n}\n\nconst ISSUE_TYPE_STRING: IssueLeaf = {\n\tok: false,\n\tcode: 'invalid_type',\n\texpected: 'string',\n\tmsg() {\n\t\treturn `expected string`;\n\t},\n};\n\nconst STRING_SINGLETON: StringSchema = {\n\tkind: 'schema',\n\ttype: 'string',\n\tformat: null,\n\t'~run'(input, _flags) {\n\t\tif (typeof input !== 'string') {\n\t\t\treturn ISSUE_TYPE_STRING;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\tget '~standard'() {\n\t\treturn lazyProperty(this, '~standard', toStandardSchema(this));\n\t},\n};\n\n// #__NO_SIDE_EFFECTS__\nexport const string = \u003cT extends string = string\u003e(): StringSchema\u003cT\u003e =\u003e {\n\treturn STRING_SINGLETON as StringSchema\u003cT\u003e;\n};\n\n// #__NO_SIDE_EFFECTS__\nconst _formattedString = \u003cTFormat extends keyof StringFormatMap\u003e(\n\tformat: TFormat,\n\tvalidate: (input: string) =\u003e boolean,\n) =\u003e {\n\tconst issue: IssueLeaf = {\n\t\tok: false,\n\t\tcode: 'invalid_string_format',\n\t\texpected: format,\n\t\tmsg() {\n\t\t\treturn `expected a ${format} formatted string`;\n\t\t},\n\t};\n\n\tconst schema: FormattedStringSchema\u003cTFormat\u003e = {\n\t\tkind: 'schema',\n\t\ttype: 'string',\n\t\tformat: format,\n\t\t'~run'(input, _flags) {\n\t\t\tif (typeof input !== 'string') {\n\t\t\t\treturn ISSUE_TYPE_STRING;\n\t\t\t}\n\n\t\t\tif (!validate(input)) {\n\t\t\t\treturn issue;\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t},\n\t\tget '~standard'() {\n\t\t\treturn lazyProperty(this, '~standard', toStandardSchema(this));\n\t\t},\n\t};\n\n\treturn () =\u003e schema;\n};\n\n// prettier-ignore\nexport const actorIdentifierString = /*#__PURE__*/ _formattedString('at-identifier', syntax.isActorIdentifier);\nexport const resourceUriString = /*#__PURE__*/ _formattedString('at-uri', syntax.isResourceUri);\nexport const cidString = /*#__PURE__*/ _formattedString('cid', syntax.isCid);\nexport const datetimeString = /*#__PURE__*/ _formattedString('datetime', syntax.isDatetime);\nexport const didString = /*#__PURE__*/ _formattedString('did', syntax.isDid);\nexport const handleString = /*#__PURE__*/ _formattedString('handle', syntax.isHandle);\nexport const languageCodeString = /*#__PURE__*/ _formattedString('language', syntax.isLanguageCode);\nexport const nsidString = /*#__PURE__*/ _formattedString('nsid', syntax.isNsid);\nexport const recordKeyString = /*#__PURE__*/ _formattedString('record-key', syntax.isRecordKey);\nexport const tidString = /*#__PURE__*/ _formattedString('tid', syntax.isTid);\nexport const genericUriString = /*#__PURE__*/ _formattedString('uri', syntax.isGenericUri);\n\n// #region String constraints\n\nexport interface StringLengthConstraint\u003c\n\tTMinLength extends number = number,\n\tTMaxLength extends number = number,\n\u003e extends BaseConstraint\u003cstring\u003e {\n\treadonly type: 'string_length';\n\treadonly minLength: TMinLength;\n\treadonly maxLength: TMaxLength;\n}\n\n// #__NO_SIDE_EFFECTS__\nexport const stringLength: {\n\t\u003cconst TMinLength extends number\u003e(min: TMinLength): StringLengthConstraint\u003cTMinLength\u003e;\n\t\u003cconst TMinLength extends number, const TMaxLength extends number\u003e(\n\t\tmin: TMinLength,\n\t\tmax: TMaxLength,\n\t): StringLengthConstraint\u003cTMinLength, TMaxLength\u003e;\n} = (minLength: number, maxLength: number = Infinity): StringLengthConstraint =\u003e {\n\tconst issue: IssueLeaf = {\n\t\tok: false,\n\t\tcode: 'invalid_string_length',\n\t\tminLength: minLength,\n\t\tmaxLength: maxLength,\n\t\tmsg() {\n\t\t\treturn formatRangeMessage('a string', 'character', minLength, maxLength);\n\t\t},\n\t};\n\n\treturn {\n\t\tkind: 'constraint',\n\t\ttype: 'string_length',\n\t\tminLength: minLength,\n\t\tmaxLength: maxLength,\n\t\t'~run'(input, _flags) {\n\t\t\tif (!isUtf8LengthInRange(input, minLength, maxLength)) {\n\t\t\t\treturn issue;\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t},\n\t};\n};\n\nexport interface StringGraphemesConstraint\u003c\n\tTMinGraphemes extends number = number,\n\tTMaxGraphemes extends number = number,\n\u003e extends BaseConstraint\u003cstring\u003e {\n\treadonly type: 'string_graphemes';\n\treadonly minGraphemes: TMinGraphemes;\n\treadonly maxGraphemes: TMaxGraphemes;\n}\n\n// #__NO_SIDE_EFFECTS__\nexport const stringGraphemes: {\n\t\u003cconst TMinGraphemes extends number\u003e(min: TMinGraphemes): StringGraphemesConstraint\u003cTMinGraphemes\u003e;\n\t\u003cconst TMinGraphemes extends number, const TMaxGraphemes extends number\u003e(\n\t\tmin: TMinGraphemes,\n\t\tmax: TMaxGraphemes,\n\t): StringGraphemesConstraint\u003cTMinGraphemes, TMaxGraphemes\u003e;\n} = (minGraphemes: number, maxGraphemes: number = Infinity): StringGraphemesConstraint =\u003e {\n\tconst issue: IssueLeaf = {\n\t\tok: false,\n\t\tcode: 'invalid_string_graphemes',\n\t\tminGraphemes: minGraphemes,\n\t\tmaxGraphemes: maxGraphemes,\n\t\tmsg() {\n\t\t\treturn formatRangeMessage('a string', 'grapheme', minGraphemes, maxGraphemes);\n\t\t},\n\t};\n\n\treturn {\n\t\tkind: 'constraint',\n\t\ttype: 'string_graphemes',\n\t\tminGraphemes: minGraphemes,\n\t\tmaxGraphemes: maxGraphemes,\n\t\t'~run'(input, _flags) {\n\t\t\tif (!isGraphemeLengthInRange(input, minGraphemes, maxGraphemes)) {\n\t\t\t\treturn issue;\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t},\n\t};\n};\n\n// #region Blob schema\n\nexport interface BlobSchema extends BaseSchema\u003cinterfaces.Blob | interfaces.LegacyBlob, interfaces.Blob\u003e {\n\treadonly type: 'blob';\n}\n\nconst ISSUE_EXPECTED_BLOB: IssueLeaf = {\n\tok: false,\n\tcode: 'invalid_type',\n\texpected: 'blob',\n\tmsg() {\n\t\treturn `expected blob`;\n\t},\n};\n\nconst BLOB_SCHEMA: BlobSchema = {\n\tkind: 'schema',\n\ttype: 'blob',\n\t'~run'(input, _flags) {\n\t\tif (typeof input !== 'object' || input === null) {\n\t\t\treturn ISSUE_EXPECTED_BLOB;\n\t\t}\n\n\t\tif (interfaces.isBlob(input)) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (interfaces.isLegacyBlob(input)) {\n\t\t\tconst blob: interfaces.Blob = {\n\t\t\t\t$type: 'blob',\n\t\t\t\tmimeType: input.mimeType,\n\t\t\t\tref: { $link: input.cid },\n\t\t\t\tsize: -1,\n\t\t\t};\n\n\t\t\treturn ok(blob);\n\t\t}\n\n\t\treturn ISSUE_EXPECTED_BLOB;\n\t},\n\tget '~standard'() {\n\t\treturn lazyProperty(this, '~standard', toStandardSchema(this));\n\t},\n};\n\n// #__NO_SIDE_EFFECTS__\nexport const blob = (): BlobSchema =\u003e {\n\treturn BLOB_SCHEMA;\n};\n\n// #region IPLD bytes schema\n\nexport interface BytesSchema extends BaseSchema\u003cinterfaces.Bytes, interfaces.Bytes\u003e {\n\treadonly type: 'bytes';\n}\n\nconst ISSUE_EXPECTED_BYTES: IssueLeaf = {\n\tok: false,\n\tcode: 'invalid_type',\n\texpected: 'bytes',\n\tmsg() {\n\t\treturn `expected bytes`;\n\t},\n};\n\nconst BYTES_SCHEMA: BytesSchema = {\n\tkind: 'schema',\n\ttype: 'bytes',\n\t'~run'(input, _flags) {\n\t\tif (!interfaces.isBytes(input)) {\n\t\t\treturn ISSUE_EXPECTED_BYTES;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\tget '~standard'() {\n\t\treturn lazyProperty(this, '~standard', toStandardSchema(this));\n\t},\n};\n\n// #__NO_SIDE_EFFECTS__\nexport const bytes = (): BytesSchema =\u003e {\n\treturn BYTES_SCHEMA;\n};\n\n// #region IPLD bytes constraint\nexport interface BytesSizeConstraint\u003c\n\tTMinLength extends number = number,\n\tTMaxLength extends number = number,\n\u003e extends BaseConstraint\u003cinterfaces.Bytes\u003e {\n\treadonly type: 'bytes_size';\n\treadonly minSize: TMinLength;\n\treadonly maxSize: TMaxLength;\n}\n\n// #__NO_SIDE_EFFECTS__\nexport const bytesSize: {\n\t\u003cconst TMinLength extends number\u003e(min: TMinLength): BytesSizeConstraint\u003cTMinLength\u003e;\n\t\u003cconst TMinLength extends number, const TMaxLength extends number\u003e(\n\t\tmin: TMinLength,\n\t\tmax: TMaxLength,\n\t): BytesSizeConstraint\u003cTMinLength, TMaxLength\u003e;\n} = (minSize: number, maxSize: number = Infinity): BytesSizeConstraint =\u003e {\n\tconst issue: IssueLeaf = {\n\t\tok: false,\n\t\tcode: 'invalid_bytes_size',\n\t\tminSize: minSize,\n\t\tmaxSize: maxSize,\n\t\tmsg() {\n\t\t\treturn formatRangeMessage('a byte array', 'byte', minSize, maxSize);\n\t\t},\n\t};\n\n\treturn {\n\t\tkind: 'constraint',\n\t\ttype: 'bytes_size',\n\t\tminSize: minSize,\n\t\tmaxSize: maxSize,\n\t\t'~run'(input, _flags) {\n\t\t\tlet size: number;\n\n\t\t\tif (_isBytesWrapper(input)) {\n\t\t\t\tsize = input.buf.length;\n\t\t\t} else {\n\t\t\t\tconst str = input.$bytes;\n\t\t\t\tlet bytes = str.length;\n\n\t\t\t\tif (str.charCodeAt(bytes - 1) === 0x3d) {\n\t\t\t\t\tbytes--;\n\t\t\t\t}\n\t\t\t\tif (bytes \u003e 1 \u0026\u0026 str.charCodeAt(bytes - 1) === 0x3d) {\n\t\t\t\t\tbytes--;\n\t\t\t\t}\n\n\t\t\t\tsize = (bytes * 3) \u003e\u003e\u003e 2;\n\t\t\t}\n\n\t\t\tif (size \u003c minSize) {\n\t\t\t\treturn issue;\n\t\t\t}\n\n\t\t\tif (size \u003e maxSize) {\n\t\t\t\treturn issue;\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t},\n\t};\n};\n\n// #region IPLD CID type schema\n\nexport interface CidLinkSchema extends BaseSchema\u003cinterfaces.CidLink, interfaces.CidLink\u003e {\n\treadonly type: 'cid_link';\n}\n\nconst ISSUE_EXPECTED_CID_LINK: IssueLeaf = {\n\tok: false,\n\tcode: 'invalid_type',\n\texpected: 'cid-link',\n\tmsg() {\n\t\treturn `expected cid-link`;\n\t},\n};\n\nconst CID_LINK_SCHEMA: CidLinkSchema = {\n\tkind: 'schema',\n\ttype: 'cid_link',\n\t'~run'(input, _flags) {\n\t\tif (!interfaces.isCidLink(input)) {\n\t\t\treturn ISSUE_EXPECTED_CID_LINK;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\tget '~standard'() {\n\t\treturn lazyProperty(this, '~standard', toStandardSchema(this));\n\t},\n};\n\n// #__NO_SIDE_EFFECTS__\nexport const cidLink = (): CidLinkSchema =\u003e {\n\treturn CID_LINK_SCHEMA;\n};\n\n// #region Nullable schema\n\nexport interface NullableSchema\u003cTItem extends BaseSchema = BaseSchema\u003e extends BaseSchema\u003c\n\tInferInput\u003cTItem\u003e | null,\n\tInferOutput\u003cTItem\u003e | null\n\u003e {\n\treadonly type: 'nullable';\n\treadonly wrapped: TItem;\n}\n\n// #__NO_SIDE_EFFECTS__\nexport const nullable = \u003cTItem extends BaseSchema\u003e(wrapped: TItem): NullableSchema\u003cTItem\u003e =\u003e {\n\treturn {\n\t\tkind: 'schema',\n\t\ttype: 'nullable',\n\t\twrapped: wrapped,\n\t\t'~run'(input, flags) {\n\t\t\tif (input === null) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\treturn wrapped['~run'](input, flags);\n\t\t},\n\t\tget '~standard'() {\n\t\t\treturn lazyProperty(this, '~standard', toStandardSchema(this));\n\t\t},\n\t};\n};\n\n// #region Optional schema\n\nexport type DefaultValue\u003cTItem extends BaseSchema\u003e =\n\t| InferOutput\u003cTItem\u003e\n\t| (() =\u003e InferOutput\u003cTItem\u003e)\n\t| undefined;\n\nexport type InferOptionalOutput\u003c\n\tTItem extends BaseSchema,\n\tTDefault extends DefaultValue\u003cTItem\u003e,\n\u003e = undefined extends TDefault ? InferOutput\u003cTItem\u003e | undefined : InferOutput\u003cTItem\u003e;\n\nexport interface OptionalSchema\u003c\n\tTItem extends BaseSchema = BaseSchema,\n\tTDefault extends DefaultValue\u003cTItem\u003e = DefaultValue\u003cTItem\u003e,\n\u003e extends BaseSchema\u003cInferInput\u003cTItem\u003e | undefined, InferOptionalOutput\u003cTItem, TDefault\u003e\u003e {\n\treadonly type: 'optional';\n\treadonly wrapped: TItem;\n\treadonly default: TDefault;\n}\n\ntype MaybeOptional\u003cTItem extends BaseSchema\u003e = TItem | OptionalSchema\u003cTItem, undefined\u003e;\n\n// #__NO_SIDE_EFFECTS__\nexport const optional: {\n\t\u003cTItem extends BaseSchema\u003e(wrapped: TItem): OptionalSchema\u003cTItem, undefined\u003e;\n\t\u003cTItem extends BaseSchema, TDefault extends DefaultValue\u003cTItem\u003e\u003e(\n\t\twrapped: TItem,\n\t\tdefaultValue: TDefault,\n\t): OptionalSchema\u003cTItem, TDefault\u003e;\n} = (wrapped: BaseSchema, defaultValue?: any): OptionalSchema\u003cany, any\u003e =\u003e {\n\treturn {\n\t\tkind: 'schema',\n\t\ttype: 'optional',\n\t\twrapped: wrapped,\n\t\tdefault: defaultValue,\n\t\t'~run'(input, flags) {\n\t\t\tif (input === undefined) {\n\t\t\t\tif (defaultValue === undefined) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\tconst value = typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n\n\t\t\t\treturn ok(value);\n\t\t\t}\n\n\t\t\treturn wrapped['~run'](input, flags);\n\t\t},\n\t\tget '~standard'() {\n\t\t\treturn lazyProperty(this, '~standard', toStandardSchema(this));\n\t\t},\n\t};\n};\n\nconst isOptionalSchema = (schema: BaseSchema): schema is OptionalSchema\u003cany, unknown\u003e =\u003e {\n\treturn schema.type === 'optional';\n};\n\n// #region Array schema\n\nexport interface ArraySchema\u003cTItem extends BaseSchema = BaseSchema\u003e extends BaseSchema\u003cunknown[], unknown[]\u003e {\n\treadonly type: 'array';\n\treadonly item: TItem;\n\n\treadonly [kType]?: { in: InferInput\u003cTItem\u003e[]; out: InferOutput\u003cTItem\u003e[] };\n}\n\nconst ISSUE_TYPE_ARRAY: IssueLeaf = {\n\tok: false,\n\tcode: 'invalid_type',\n\texpected: 'array',\n\tmsg() {\n\t\treturn `expected array`;\n\t},\n};\n\n// #__NO_SIDE_EFFECTS__\nexport const array = \u003cTItem extends BaseSchema\u003e(item: TItem | (() =\u003e TItem)): ArraySchema\u003cTItem\u003e =\u003e {\n\tconst resolvedShape = lazy(() =\u003e {\n\t\treturn typeof item === 'function' ? item() : item;\n\t});\n\n\treturn {\n\t\tkind: 'schema',\n\t\ttype: 'array',\n\t\tget item() {\n\t\t\treturn lazyProperty(this, 'item', resolvedShape.value);\n\t\t},\n\t\tget '~run'() {\n\t\t\tconst shape = resolvedShape.value;\n\n\t\t\tconst matcher: Matcher = (input, flags) =\u003e {\n\t\t\t\tif (!isArray(input)) {\n\t\t\t\t\treturn ISSUE_TYPE_ARRAY;\n\t\t\t\t}\n\n\t\t\t\tlet issues: IssueTree | undefined;\n\t\t\t\tlet output: any[] | undefined;\n\n\t\t\t\tfor (let idx = 0, len = input.length; idx \u003c len; idx++) {\n\t\t\t\t\tconst val = input[idx];\n\t\t\t\t\tconst r = shape['~run'](val, flags);\n\n\t\t\t\t\tif (r !== undefined) {\n\t\t\t\t\t\tif (r.ok) {\n\t\t\t\t\t\t\tif (output === undefined) {\n\t\t\t\t\t\t\t\toutput = input.slice();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\toutput[idx] = r.value;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tissues = joinIssues(issues, prependPath(idx, r));\n\n\t\t\t\t\t\t\tif (flags \u0026 FLAG_ABORT_EARLY) {\n\t\t\t\t\t\t\t\treturn issues;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (issues !== undefined) {\n\t\t\t\t\treturn issues;\n\t\t\t\t}\n\n\t\t\t\tif (output !== undefined) {\n\t\t\t\t\treturn ok(output);\n\t\t\t\t}\n\n\t\t\t\treturn undefined;\n\t\t\t};\n\n\t\t\treturn lazyProperty(this, '~run', matcher);\n\t\t},\n\t\tget '~standard'() {\n\t\t\treturn lazyProperty(this, '~standard', toStandardSchema(this));\n\t\t},\n\t};\n};\n\n// #region Array constraints\n\nexport interface ArrayLengthConstraint\u003c\n\tTMinLength extends number = number,\n\tTMaxLength extends number = number,\n\u003e extends BaseConstraint\u003cunknown[]\u003e {\n\treadonly type: 'array_length';\n\treadonly minLength: TMinLength;\n\treadonly maxLength: TMaxLength;\n}\n\n// #__NO_SIDE_EFFECTS__\nexport const arrayLength: {\n\t\u003cconst TMinLength extends number\u003e(min: TMinLength): ArrayLengthConstraint\u003cTMinLength\u003e;\n\t\u003cconst TMinLength extends number, const TMaxLength extends number\u003e(\n\t\tmin: TMinLength,\n\t\tmax: TMaxLength,\n\t): ArrayLengthConstraint\u003cTMinLength, TMaxLength\u003e;\n} = (minLength: number, maxLength: number = Infinity): ArrayLengthConstraint =\u003e {\n\tconst issue: IssueLeaf = {\n\t\tok: false,\n\t\tcode: 'invalid_array_length',\n\t\tminLength: minLength,\n\t\tmaxLength: maxLength,\n\t\tmsg() {\n\t\t\treturn formatRangeMessage('an array', 'item', minLength, maxLength);\n\t\t},\n\t};\n\n\treturn {\n\t\tkind: 'constraint',\n\t\ttype: 'array_length',\n\t\tminLength: minLength,\n\t\tmaxLength: maxLength,\n\t\t'~run'(input, _flags) {\n\t\t\tconst length = input.length;\n\n\t\t\tif (length \u003c minLength) {\n\t\t\t\treturn issue;\n\t\t\t}\n\n\t\t\tif (length \u003e maxLength) {\n\t\t\t\treturn issue;\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t},\n\t};\n};\n\n// #region Object schema\n\n// `ObjectSchema` accepts a `LooseObjectShape` instead of `ObjectShape` to allow\n// for circular references, and this means preventing TypeScript from attempting\n// to eagerly evaluate the shape, unfortunate that this means we can't throw a\n// type issue if you add a non-schema value into the shape though\n\nexport type LooseObjectShape = Record\u003cstring, any\u003e;\nexport type ObjectShape = Record\u003cstring, BaseSchema\u003e;\n\nexport type OptionalObjectInputKeys\u003cTShape extends ObjectShape\u003e = {\n\t[Key in keyof TShape]: TShape[Key] extends OptionalSchema\u003cany, any\u003e ? Key : never;\n}[keyof TShape];\n\nexport type OptionalObjectOutputKeys\u003cTShape extends ObjectShape\u003e = {\n\t[Key in keyof TShape]: TShape[Key] extends OptionalSchema\u003cany, infer Default\u003e\n\t\t? undefined extends Default\n\t\t\t? Key\n\t\t\t: never\n\t\t: never;\n}[keyof TShape];\n\ntype InferObjectInput\u003cTShape extends ObjectShape\u003e = Flatten\u003c\n\t{\n\t\t-readonly [Key in keyof TShape as Key extends OptionalObjectInputKeys\u003cTShape\u003e ? never : Key]: InferInput\u003c\n\t\t\tTShape[Key]\n\t\t\u003e;\n\t} \u0026 {\n\t\t-readonly [Key in keyof TShape as Key extends OptionalObjectInputKeys\u003cTShape\u003e ? Key : never]?: InferInput\u003c\n\t\t\tTShape[Key]\n\t\t\u003e;\n\t}\n\u003e;\n\ntype InferObjectOutput\u003cTShape extends ObjectShape\u003e = Flatten\u003c\n\t{\n\t\t-readonly [Key in keyof TShape as Key extends OptionalObjectOutputKeys\u003cTShape\u003e\n\t\t\t? never\n\t\t\t: Key]: InferOutput\u003cTShape[Key]\u003e;\n\t} \u0026 {\n\t\t-readonly [Key in keyof TShape as Key extends OptionalObjectOutputKeys\u003cTShape\u003e\n\t\t\t? Key\n\t\t\t: never]?: InferOutput\u003cTShape[Key]\u003e;\n\t}\n\u003e;\n\nexport interface ObjectSchema\u003cTShape extends LooseObjectShape = LooseObjectShape\u003e extends BaseSchema\u003c\n\tRecord\u003cstring, unknown\u003e\n\u003e {\n\treadonly type: 'object';\n\treadonly shape: Readonly\u003cTShape\u003e;\n\n\t// passing `InferObjectX` into `extends BaseSchema\u003c...\u003e` eagerly evaluates the\n\t// shape, however, passing it as a property means that it's only evaluated if\n\t// you attempt to grab the value.\n\treadonly [kType]?: { in: InferObjectInput\u003cTShape\u003e; out: InferObjectOutput\u003cTShape\u003e };\n}\n\ninterface ObjectEntry {\n\tkey: string;\n\tschema: BaseSchema;\n\toptional: boolean;\n\tmissing: IssueTree;\n}\n\nconst ISSUE_TYPE_OBJECT: IssueLeaf = {\n\tok: false,\n\tcode: 'invalid_type',\n\texpected: 'object',\n\tmsg() {\n\t\treturn `expected object`;\n\t},\n};\n\nconst ISSUE_MISSING: IssueLeaf = {\n\tok: false,\n\tcode: 'missing_value',\n\tmsg() {\n\t\treturn `missing value`;\n\t},\n};\n\nconst set = (obj: Record\u003cstring, unknown\u003e, key: string, value: unknown): void =\u003e {\n\tif (key === '__proto__') {\n\t\tObject.defineProperty(obj, key, { value });\n\t} else {\n\t\tobj[key] = value;\n\t}\n};\n\n// #__NO_SIDE_EFFECTS__\nexport const object = \u003cTShape extends LooseObjectShape\u003e(shape: TShape): ObjectSchema\u003cTShape\u003e =\u003e {\n\tconst resolvedEntries = lazy(() =\u003e {\n\t\tconst resolved: ObjectEntry[] = [];\n\n\t\tfor (const key in shape) {\n\t\t\tconst schema = shape[key];\n\n\t\t\tresolved.push({\n\t\t\t\tkey: key,\n\t\t\t\tschema: schema,\n\t\t\t\toptional: isOptionalSchema(schema),\n\t\t\t\tmissing: prependPath(key, ISSUE_MISSING),\n\t\t\t});\n\t\t}\n\n\t\treturn resolved;\n\t});\n\n\treturn {\n\t\tkind: 'schema',\n\t\ttype: 'object',\n\t\tget shape() {\n\t\t\t// if we just return the shape as is then it wouldn't be the same exact\n\t\t\t// shape when getters are present.\n\t\t\tconst resolved = resolvedEntries.value;\n\t\t\tconst obj: any = {};\n\n\t\t\tfor (const entry of resolved) {\n\t\t\t\tobj[entry.key] = entry.schema;\n\t\t\t}\n\n\t\t\treturn lazyProperty(this, 'shape', obj as TShape);\n\t\t},\n\t\tget '~run'() {\n\t\t\tconst shape = resolvedEntries.value;\n\t\t\tconst len = shape.length;\n\n\t\t\tconst generateFastpass = (): Matcher =\u003e {\n\t\t\t\tconst fields: [string, any][] = [\n\t\t\t\t\t['$ok', ok],\n\t\t\t\t\t['$joinIssues', joinIssues],\n\t\t\t\t\t['$prependPath', prependPath],\n\t\t\t\t];\n\n\t\t\t\tlet doc = `let $iss,$out;`;\n\n\t\t\t\tfor (let idx = 0; idx \u003c len; idx++) {\n\t\t\t\t\tconst entry = shape[idx];\n\n\t\t\t\t\tconst key = entry.key;\n\t\t\t\t\tconst esckey = JSON.stringify(key);\n\n\t\t\t\t\tconst id = `_${idx}`;\n\n\t\t\t\t\tdoc += `{const $val=$in[${esckey}];`;\n\n\t\t\t\t\tif (entry.optional) {\n\t\t\t\t\t\tdoc += `if($val!==undefined){`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdoc += `if($val!==undefined||${esckey} in $in){`;\n\t\t\t\t\t}\n\n\t\t\t\t\tdoc += `const $res=${id}$schema[\"~run\"]($val,$flags);if($res!==undefined)if($res.ok)${key !== '__proto__' ? `($out??={...$in})[${esckey}]=$res.value` : `Object.defineProperty($out??={...$in},${esckey},{value:$res.value})`};else if((($iss=$joinIssues($iss,$prependPath(${esckey},$res))),$flags\u0026${FLAG_ABORT_EARLY}))return $iss;}`;\n\n\t\t\t\t\tif (entry.optional) {\n\t\t\t\t\t\tconst schema = entry.schema as OptionalSchema;\n\t\t\t\t\t\tconst innerSchema = schema.wrapped;\n\t\t\t\t\t\tconst defaultValue = schema.default;\n\n\t\t\t\t\t\tfields.push([`${id}$schema`, innerSchema]);\n\n\t\t\t\t\t\tif (defaultValue !== undefined) {\n\t\t\t\t\t\t\tconst calls = typeof defaultValue === 'function' ? `${id}$default()` : `${id}$default`;\n\n\t\t\t\t\t\t\tfields.push([`${id}$default`, defaultValue]);\n\n\t\t\t\t\t\t\tdoc +=\n\t\t\t\t\t\t\t\tkey !== '__proto__'\n\t\t\t\t\t\t\t\t\t? `else($out??={...$in})[${esckey}]=${calls};`\n\t\t\t\t\t\t\t\t\t: `else Object.defineProperty($out??={...$in},${esckey},{value:${calls}});`;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfields.push([`${id}$schema`, entry.schema]);\n\t\t\t\t\t\tfields.push([`${id}$missing`, entry.missing]);\n\n\t\t\t\t\t\tdoc += `else if((($iss=$joinIssues($iss,${id}$missing)),$flags\u0026${FLAG_ABORT_EARLY}))return $iss;`;\n\t\t\t\t\t}\n\n\t\t\t\t\tdoc += `}`;\n\t\t\t\t}\n\n\t\t\t\tdoc += `if($iss!==undefined)return $iss;if($out!==undefined)return $ok($out);`;\n\n\t\t\t\tconst fn = new Function(\n\t\t\t\t\t`[${fields.map(([id]) =\u003e id).join(',')}]`,\n\t\t\t\t\t`return function matcher($in,$flags){${doc}}`,\n\t\t\t\t);\n\n\t\t\t\treturn fn(fields.map(([, field]) =\u003e field));\n\t\t\t};\n\n\t\t\tif (allowsEval.value) {\n\t\t\t\tconst fastpass = generateFastpass();\n\n\t\t\t\tconst matcher: Matcher = (input, flags) =\u003e {\n\t\t\t\t\tif (!isObject(input)) {\n\t\t\t\t\t\treturn ISSUE_TYPE_OBJECT;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn fastpass(input, flags);\n\t\t\t\t};\n\n\t\t\t\treturn lazyProperty(this, '~run', matcher);\n\t\t\t}\n\n\t\t\tconst matcher: Matcher = (input, flags) =\u003e {\n\t\t\t\tif (!isObject(input)) {\n\t\t\t\t\treturn ISSUE_TYPE_OBJECT;\n\t\t\t\t}\n\n\t\t\t\tlet issues: IssueTree | undefined;\n\t\t\t\tlet output: Record\u003cstring, unknown\u003e | undefined;\n\n\t\t\t\tfor (let idx = 0; idx \u003c len; idx++) {\n\t\t\t\t\tconst entry = shape[idx];\n\n\t\t\t\t\tconst key = entry.key;\n\t\t\t\t\tconst value = input[key];\n\n\t\t\t\t\tif (!entry.optional \u0026\u0026 value === undefined \u0026\u0026 !(key in input)) {\n\t\t\t\t\t\tissues = joinIssues(issues, entry.missing);\n\n\t\t\t\t\t\tif (flags \u0026 FLAG_ABORT_EARLY) {\n\t\t\t\t\t\t\treturn issues;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst r = entry.schema['~run'](value, flags);\n\n\t\t\t\t\tif (r !== undefined) {\n\t\t\t\t\t\tif (r.ok) {\n\t\t\t\t\t\t\tif (output === undefined) {\n\t\t\t\t\t\t\t\toutput = { ...input };\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t/*#__INLINE__*/ set(output, key, r.value);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tissues = joinIssues(issues, prependPath(key, r));\n\n\t\t\t\t\t\t\tif (flags \u0026 FLAG_ABORT_EARLY) {\n\t\t\t\t\t\t\t\treturn issues;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (issues !== undefined) {\n\t\t\t\t\treturn issues;\n\t\t\t\t}\n\n\t\t\t\tif (output !== undefined) {\n\t\t\t\t\treturn ok(output);\n\t\t\t\t}\n\n\t\t\t\treturn undefined;\n\t\t\t};\n\n\t\t\treturn lazyProperty(this, '~run', matcher);\n\t\t},\n\t\tget '~standard'() {\n\t\t\treturn lazyProperty(this, '~standard', toStandardSchema(this));\n\t\t},\n\t};\n};\n\n// #region Record schema\n//\n// unfortunately, adapting for circular references has meant that we can't have\n// TypeScript check the object against a particular shape ($type field required)\n\nexport type RecordObjectShape = {\n\t$type: LiteralSchema\u003csyntax.Nsid\u003e;\n\t[key: string]: BaseSchema;\n};\n\nexport type RecordKeySchema = StringSchema | FormattedStringSchema | LiteralSchema\u003cstring\u003e;\nexport type RecordObjectSchema = ObjectSchema\u003cRecordObjectShape\u003e;\n\nexport interface RecordSchema\u003cTObject extends ObjectSchema, TKey extends RecordKeySchema\u003e extends BaseSchema\u003c\n\tRecord\u003cstring, unknown\u003e\n\u003e {\n\treadonly type: 'record';\n\treadonly key: TKey;\n\treadonly object: TObject;\n\n\treadonly [kType]?: { in: InferInput\u003cTObject\u003e; out: InferOutput\u003cTObject\u003e };\n}\n\n// #__NO_SIDE_EFFECTS__\nexport const record = \u003cTKey extends RecordKeySchema, TObject extends ObjectSchema\u003e(\n\tkey: TKey,\n\tobject: TObject,\n): RecordSchema\u003cTObject, TKey\u003e =\u003e {\n\tconst validatedObject = lazy((): TObject =\u003e {\n\t\tconst shape = object.shape;\n\n\t\tlet t = shape.$type as MaybeOptional\u003cLiteralSchema\u003csyntax.Nsid\u003e\u003e | undefined;\n\n\t\tassert(t !== undefined, `expected $type in record to be defined`);\n\t\tif (t.type === 'optional') {\n\t\t\tt = t.wrapped;\n\t\t}\n\n\t\tassert(t.type === 'literal' \u0026\u0026 typeof t.expected === 'string', `expected $type to be a string literal`);\n\n\t\treturn object;\n\t});\n\n\treturn {\n\t\tkind: 'schema',\n\t\ttype: 'record',\n\t\tkey: key,\n\t\tget object() {\n\t\t\treturn lazyProperty(this, 'object', validatedObject.value);\n\t\t},\n\t\t'~run'(input, flags) {\n\t\t\treturn lazyProperty(this, '~run', validatedObject.value['~run'])(input, flags);\n\t\t},\n\t\tget '~standard'() {\n\t\t\treturn lazyProperty(this, '~standard', toStandardSchema(this));\n\t\t},\n\t};\n};\n\n// #region Variant schema\n\ntype VariantMember = ObjectSchema\u003cany\u003e | RecordSchema\u003cObjectSchema\u003cany\u003e, RecordKeySchema\u003e;\ntype VariantTuple = readonly VariantMember[];\n\ntype InferVariantInput\u003cTMembers extends VariantTuple\u003e = $type.enforce\u003cInferInput\u003cTMembers[number]\u003e\u003e;\n\ntype InferVariantOutput\u003cTMembers extends VariantTuple\u003e = $type.enforce\u003cInferOutput\u003cTMembers[number]\u003e\u003e;\n\nexport interface VariantSchema\u003c\n\tTMembers extends VariantTuple = VariantTuple,\n\tTClosed extends boolean = boolean,\n\u003e extends BaseSchema\u003cRecord\u003cstring, unknown\u003e\u003e {\n\treadonly type: 'variant';\n\treadonly members: TMembers;\n\treadonly closed: TClosed;\n\n\treadonly [kType]?: { in: InferVariantInput\u003cTMembers\u003e; out: InferVariantOutput\u003cTMembers\u003e };\n}\n\nconst ISSUE_VARIANT_MISSING = /*#__PURE__*/ prependPath('$type', ISSUE_MISSING);\n\nconst ISSUE_VARIANT_TYPE = /*#__PURE__*/ prependPath('$type', ISSUE_TYPE_STRING);\n\n// #__NO_SIDE_EFFECTS__\nexport const variant: {\n\t\u003cconst TMembers extends VariantTuple\u003e(members: TMembers): VariantSchema\u003cTMembers\u003e;\n\t\u003cconst TMembers extends VariantTuple, TClosed extends boolean\u003e(\n\t\tmembers: TMembers,\n\t\tclosed: TClosed,\n\t): VariantSchema\u003cTMembers, TClosed\u003e;\n} = (members: VariantMember[], closed: boolean = false): VariantSchema\u003cany, any\u003e =\u003e {\n\treturn {\n\t\tkind: 'schema',\n\t\ttype: 'variant',\n\t\tmembers: members,\n\t\tclosed: closed,\n\t\tget '~run'() {\n\t\t\tconst types: string[] = [];\n\t\t\tconst schemas: ObjectSchema[] = [];\n\n\t\t\tfor (let idx = 0, len = members.length; idx \u003c len; idx++) {\n\t\t\t\tconst raw = members[idx]!;\n\t\t\t\tconst member = raw.type === 'record' ? raw.object : raw;\n\t\t\t\tconst shape = member.shape;\n\n\t\t\t\tlet t = shape.$type as MaybeOptional\u003cLiteralSchema\u003csyntax.Nsid\u003e\u003e | undefined;\n\n\t\t\t\tassert(t !== undefined, `expected $type in variant member #${idx} to be defined`);\n\t\t\t\tif (t.type === 'optional') {\n\t\t\t\t\tt = t.wrapped;\n\t\t\t\t}\n\n\t\t\t\tassert(\n\t\t\t\t\tt.type === 'literal' \u0026\u0026 typeof t.expected === 'string',\n\t\t\t\t\t`expected $type in variant member #${idx} to be a string literal`,\n\t\t\t\t);\n\n\t\t\t\ttypes.push(t.expected);\n\t\t\t\tschemas.push(member);\n\t\t\t}\n\n\t\t\tconst issue: IssueLeaf = {\n\t\t\t\tok: false,\n\t\t\t\tcode: 'invalid_variant',\n\t\t\t\texpected: types,\n\t\t\t\tmsg() {\n\t\t\t\t\treturn `expected ${separatedList(types, 'or')}`;\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tconst matcher: Matcher = (input, flags) =\u003e {\n\t\t\t\tif (!isObject(input)) {\n\t\t\t\t\treturn ISSUE_TYPE_OBJECT;\n\t\t\t\t}\n\n\t\t\t\tconst type = input.$type;\n\n\t\t\t\tif (type === undefined \u0026\u0026 !('$type' in input)) {\n\t\t\t\t\treturn ISSUE_VARIANT_MISSING;\n\t\t\t\t}\n\n\t\t\t\tif (typeof type !== 'string') {\n\t\t\t\t\treturn closed ? issue : ISSUE_VARIANT_TYPE;\n\t\t\t\t}\n\n\t\t\t\tfor (let idx = 0, len = types.length; idx \u003c len; idx++) {\n\t\t\t\t\tif (types[idx] === type) {\n\t\t\t\t\t\treturn schemas[idx]!['~run'](input, flags);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (closed) {\n\t\t\t\t\treturn issue;\n\t\t\t\t}\n\n\t\t\t\treturn undefined;\n\t\t\t};\n\n\t\t\treturn lazyProperty(this, '~run', matcher);\n\t\t},\n\t\tget '~standard'() {\n\t\t\treturn lazyProperty(this, '~standard', toStandardSchema(this));\n\t\t},\n\t};\n};\n\n// #region Unknown schema\n\nexport interface UnknownSchema extends BaseSchema\u003cRecord\u003cstring, unknown\u003e\u003e {\n\treadonly type: 'unknown';\n}\n\nconst ISSUE_TYPE_UNKNOWN: IssueLeaf = {\n\tok: false,\n\tcode: 'invalid_type',\n\texpected: 'unknown',\n\tmsg() {\n\t\treturn `expected unknown`;\n\t},\n};\n\nconst UNKNOWN_SCHEMA: UnknownSchema = {\n\tkind: 'schema',\n\ttype: 'unknown',\n\t'~run'(input, _flags) {\n\t\tif (typeof input !== 'object' || input === null) {\n\t\t\treturn ISSUE_TYPE_UNKNOWN;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\tget '~standard'() {\n\t\treturn lazyProperty(this, '~standard', toStandardSchema(this));\n\t},\n};\n\n// #__NO_SIDE_EFFECTS__\nexport const unknown = (): UnknownSchema =\u003e {\n\treturn UNKNOWN_SCHEMA;\n};\n\n// #region XRPC types\n\nexport interface XRPCLexBodyParam\u003c\n\tTSchema extends ObjectSchema | VariantSchema = ObjectSchema | VariantSchema,\n\u003e {\n\treadonly type: 'lex';\n\treadonly schema: TSchema;\n}\n\nexport interface XRPCBlobBodyParam {\n\treadonly type: 'blob';\n\treadonly encoding?: string[];\n}\n\nexport type XRPCBodyParam = XRPCLexBodyParam | XRPCBlobBodyParam | null;\n\nexport type InferXRPCBodyInput\u003cT extends XRPCBodyParam\u003e =\n\tT extends XRPCLexBodyParam\u003cinfer Schema\u003e\n\t\t? InferInput\u003cSchema\u003e\n\t\t: T extends XRPCBlobBodyParam\n\t\t\t? Blob\n\t\t\t: T extends null\n\t\t\t\t? void\n\t\t\t\t: never;\n\nexport type InferXRPCBodyOutput\u003cT extends XRPCBodyParam\u003e =\n\tT extends XRPCLexBodyParam\u003cinfer Schema\u003e\n\t\t? InferOutput\u003cSchema\u003e\n\t\t: T extends XRPCBlobBodyParam\n\t\t\t? Blob\n\t\t\t: T extends null\n\t\t\t\t? void\n\t\t\t\t: never;\n\n// #region XRPC procedure metadata\n\nexport interface XRPCProcedureMetadata\u003c\n\tTParams extends ObjectSchema | null = ObjectSchema | null,\n\tTInput extends XRPCBodyParam = XRPCBodyParam,\n\tTOutput extends XRPCBodyParam = XRPCBodyParam,\n\tTNsid extends syntax.Nsid = syntax.Nsid,\n\u003e extends BaseMetadata {\n\treadonly type: 'xrpc_procedure';\n\treadonly nsid: TNsid;\n\treadonly params: TParams;\n\treadonly input: TInput;\n\treadonly output: TOutput;\n}\n\n// #__NO_SIDE_EFFECTS__\nexport const procedure = \u003c\n\tTNsid extends syntax.Nsid,\n\tTParams extends ObjectSchema | null,\n\tTInput extends XRPCBodyParam,\n\tTOutput extends XRPCBodyParam,\n\u003e(\n\tnsid: TNsid,\n\toptions: {\n\t\tparams: TParams;\n\t\tinput: TInput;\n\t\toutput: TOutput;\n\t},\n): XRPCProcedureMetadata\u003cTParams, TInput, TOutput, TNsid\u003e =\u003e {\n\t// `schema` can be a getter, and we'd have to resolve that getter.\n\n\txrpcSchemaGenerated = true;\n\n\treturn {\n\t\tkind: 'metadata',\n\t\ttype: 'xrpc_procedure',\n\t\tnsid: nsid,\n\t\tparams: options.params,\n\t\tget input() {\n\t\t\tlet val = options.input;\n\n\t\t\tswitch (val?.type) {\n\t\t\t\tcase 'lex': {\n\t\t\t\t\tval = {\n\t\t\t\t\t\ttype: 'lex',\n\t\t\t\t\t\tschema: val.schema,\n\t\t\t\t\t} as TInput;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn lazyProperty(this, 'input', val);\n\t\t},\n\t\tget output() {\n\t\t\tlet val = options.output;\n\n\t\t\tswitch (val?.type) {\n\t\t\t\tcase 'lex': {\n\t\t\t\t\tval = {\n\t\t\t\t\t\ttype: 'lex',\n\t\t\t\t\t\tschema: val.schema,\n\t\t\t\t\t} as TOutput;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn lazyProperty(this, 'output', val);\n\t\t},\n\t};\n};\n\n// #region XRPC query metadata\n\nexport interface XRPCQueryMetadata\u003c\n\tTParams extends ObjectSchema | null = ObjectSchema | null,\n\tTOutput extends XRPCBodyParam = XRPCBodyParam,\n\tTNsid extends syntax.Nsid = syntax.Nsid,\n\u003e extends BaseMetadata {\n\treadonly type: 'xrpc_query';\n\treadonly nsid: TNsid;\n\treadonly params: TParams;\n\treadonly output: TOutput;\n}\n\n// #__NO_SIDE_EFFECTS__\nexport const query = \u003c\n\tTNsid extends syntax.Nsid,\n\tTParams extends ObjectSchema | null,\n\tTOutput extends XRPCBodyParam,\n\u003e(\n\tnsid: TNsid,\n\toptions: {\n\t\tparams: TParams;\n\t\toutput: TOutput;\n\t},\n): XRPCQueryMetadata\u003cTParams, TOutput, TNsid\u003e =\u003e {\n\t// `schema` can be a getter, and we'd have to resolve that getter.\n\n\txrpcSchemaGenerated = true;\n\n\treturn {\n\t\tkind: 'metadata',\n\t\ttype: 'xrpc_query',\n\t\tnsid: nsid,\n\t\tparams: options.params,\n\t\tget output() {\n\t\t\tlet val = options.output;\n\n\t\t\tswitch (val?.type) {\n\t\t\t\tcase 'lex': {\n\t\t\t\t\tval = {\n\t\t\t\t\t\ttype: 'lex',\n\t\t\t\t\t\tschema: val.schema,\n\t\t\t\t\t} as TOutput;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn lazyProperty(this, 'output', val);\n\t\t},\n\t};\n};\n\n// #region XRPC subscription metadata\n\nexport interface XRPCSubscriptionMetadata\u003c\n\tTParams extends ObjectSchema | null = ObjectSchema | null,\n\tTMessage extends ObjectSchema\u003cany\u003e | VariantSchema\u003cany, any\u003e | null =\n\t\t| ObjectSchema\u003cany\u003e\n\t\t| VariantSchema\u003cany, any\u003e\n\t\t| null,\n\tTNsid extends syntax.Nsid = syntax.Nsid,\n\u003e extends BaseMetadata {\n\treadonly type: 'xrpc_subscription';\n\treadonly nsid: TNsid;\n\treadonly params: TParams;\n\treadonly message: TMessage;\n}\n\n// #__NO_SIDE_EFFECTS__\nexport const subscription = \u003c\n\tTNsid extends syntax.Nsid,\n\tTParams extends ObjectSchema | null,\n\tTMessage extends ObjectSchema\u003cany\u003e | VariantSchema\u003cany, any\u003e | null,\n\u003e(\n\tnsid: TNsid,\n\toptions: {\n\t\tparams: TParams;\n\t\treadonly message: TMessage;\n\t},\n): XRPCSubscriptionMetadata\u003cTParams, TMessage, TNsid\u003e =\u003e {\n\t// `message` can be a getter, and we'd have to resolve that getter.\n\n\treturn {\n\t\tkind: 'metadata',\n\t\ttype: 'xrpc_subscription',\n\t\tnsid: nsid,\n\t\tparams: options.params,\n\t\tget message() {\n\t\t\treturn lazyProperty(this, 'message', options.message);\n\t\t},\n\t};\n};\n","// #__NO_SIDE_EFFECTS__\nexport const lazyProperty = \u003cT\u003e(obj: object, prop: string | number | symbol, value: T): T =\u003e {\n\tObject.defineProperty(obj, prop, { value });\n\treturn value;\n};\n\n// #__NO_SIDE_EFFECTS__\nexport const lazy = \u003cT\u003e(getter: () =\u003e T): { readonly value: T } =\u003e {\n\treturn {\n\t\tget value() {\n\t\t\tconst value = getter();\n\t\t\treturn lazyProperty(this, 'value', value);\n\t\t},\n\t};\n};\n\nexport const isArray = Array.isArray;\n\n// #__NO_SIDE_EFFECTS__\nexport const isObject = (input: unknown): input is Record\u003cstring, unknown\u003e =\u003e {\n\treturn typeof input === 'object' \u0026\u0026 input !== null \u0026\u0026 !isArray(input);\n};\n\nexport const allowsEval = /*#__PURE__*/ lazy((): boolean =\u003e {\n\tif (typeof navigator !== 'undefined' \u0026\u0026 navigator?.userAgent?.includes('Cloudflare')) {\n\t\treturn false;\n\t}\n\n\ttry {\n\t\tconst F = Function;\n\t\t// oxlint-disable-next-line no-new -- intentional check for Function constructor availability\n\t\tnew F('');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n});\n"],"version":3}
-3
vendor/esm.sh/@atcute/multibase@1.2.0/es2022/multibase.mjs
··· 1 - /* esm.sh - @atcute/multibase@1.2.0 */ 2 - var H=t=>Uint8Array.fromHex(t),N=t=>t.toHex();import{alloc as T,allocUnsafe as b}from"../../uint8array@1.1.1/es2022/uint8array.mjs";var w=(t,a,i)=>x=>{let e=(1<<a)-1,B="",o=0,r=0;for(let n=0;n<x.length;++n)for(r=r<<8|x[n],o+=8;o>a;)o-=a,B+=t[e&r>>o];if(o!==0&&(B+=t[e&r<<a-o]),i)for(;(B.length*a&7)!==0;)B+="=";return B},E=(t,a,i)=>{let x={};for(let e=0;e<t.length;++e)x[t[e]]=e;return e=>{let B=e.length;for(;i&&e[B-1]==="=";)--B;let o=b(B*a/8|0),r=0,n=0,s=0;for(let f=0;f<B;++f){let l=x[e[f]];if(l===void 0)throw new SyntaxError("invalid base string");n=n<<a|l,r+=a,r>=8&&(r-=8,o[s++]=255&n>>r)}if(r>=a||(255&n<<8-r)!==0)throw new SyntaxError("unexpected end of data");return o}},_=t=>{if(t.length>=255)throw new RangeError("alphabet too long");let a=t.length,i=t.charAt(0),x=Math.log(256)/Math.log(a);return e=>{if(e.length===0)return"";let B=0,o=0,r=0,n=e.length;for(;r!==n&&e[r]===0;)r++,B++;let s=n-r,f=s*x+1>>>0,l=T(f);{let p=s%3,m=n-p;for(;r<m;){let d=e[r]<<16|e[r+1]<<8|e[r+2],A=0;for(let g=f-1;(d!==0||A<o)&&g!==-1;g--,A++)d=d+16777216*l[g],l[g]=d%a|0,d=d/a|0;o=A,r+=3}}for(;r!==n;){let p=e[r],m=0;for(let d=f-1;(p!==0||m<o)&&d!==-1;d--,m++)p=p+256*l[d],l[d]=p%a|0,p=p/a|0;o=m,r++}let c=f-o;for(;c!==f&&l[c]===0;)c++;let h=i.repeat(B);for(;c<f;++c)h+=t.charAt(l[c]);return h}},z=t=>{if(t.length>=255)throw new RangeError("alphabet too long");let a=new Uint8Array(128).fill(255);for(let o=0;o<t.length;o++){let r=t.charCodeAt(o);if(r>=128)throw new RangeError("non-ASCII character in alphabet");if(a[r]!==255)throw new RangeError(`${t[o]} is ambiguous`);a[r]=o}let i=t.length,x=i*i,e=t.charAt(0),B=Math.log(i)/Math.log(256);return o=>{if(o.length===0)return b(0);let r=0,n=0,s=0;for(;o[r]===e;)n++,r++;let f=o.length-r,l=f*B+1>>>0,c=T(l);{let m=f&1,d=o.length-m;for(;r<d;){let A=a[o.charCodeAt(r)],g=a[o.charCodeAt(r+1)];if(A===255||g===255)throw new Error("invalid string");let u=A*i+g,y=0;for(let C=l-1;(u!==0||y<s)&&C!==-1;C--,y++)u+=x*c[C],c[C]=u&255,u=(u-(u&255))/256;if(u!==0)throw new Error("non-zero carry");s=y,r+=2}}if(r<o.length){let m=a[o.charCodeAt(r)];if(m===255)throw new Error("invalid string");let d=0;for(let A=l-1;(m!==0||d<s)&&A!==-1;A--,d++)m+=i*c[A],c[A]=m&255,m=m>>>8;if(m!==0)throw new Error("non-zero carry");s=d}let h=l-s;for(;h!==l&&c[h]===0;)h++;if(h===n)return c;let p=b(n+(l-h));return p.fill(0,0,n),p.set(c.subarray(h),n),p}};var k="0123456789abcdef",D=E(k,4,!1),L=w(k,4,!1);var M="fromHex"in Uint8Array,rt=M?H:D,at=M?N:L;var I=t=>Uint8Array.fromBase64(t,{alphabet:"base64",lastChunkHandling:"loose"}),O=t=>t.toBase64({alphabet:"base64",omitPadding:!0}),j=t=>Uint8Array.fromBase64(t,{alphabet:"base64",lastChunkHandling:"strict"}),q=t=>t.toBase64({alphabet:"base64",omitPadding:!1}),F=t=>Uint8Array.fromBase64(t,{alphabet:"base64url",lastChunkHandling:"loose"}),V=t=>t.toBase64({alphabet:"base64url",omitPadding:!0}),G=t=>Uint8Array.fromBase64(t,{alphabet:"base64url",lastChunkHandling:"strict"}),J=t=>t.toBase64({alphabet:"base64url",omitPadding:!1});var S="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",R="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",K=E(S,6,!1),Q=w(S,6,!1),W=E(S,6,!0),X=w(S,6,!0),Y=E(R,6,!1),Z=w(R,6,!1),$=E(R,6,!0),tt=w(R,6,!0);var P="fromBase64"in Uint8Array,nt=P?I:K,st=P?O:Q,ft=P?j:W,lt=P?q:X,ct=P?F:Y,it=P?V:Z,Bt=P?G:$,dt=P?J:tt;import{allocUnsafe as ht}from"../../uint8array@1.1.1/es2022/uint8array.mjs";var xt="abcdefghijklmnopqrstuvwxyz234567",mt=(()=>{let t=new Uint8Array(32);for(let a=0;a<32;a++)t[a]=xt.charCodeAt(a);return t})(),v=String.fromCharCode,et=t=>{let a=t.length,i=a/5|0,x=a-i*5,e=mt,B="",o=0,r=i/2|0;for(let n=0;n<r;n++){let s=t[o],f=t[o+1],l=t[o+2],c=t[o+3],h=t[o+4],p=t[o+5],m=t[o+6],d=t[o+7],A=t[o+8],g=t[o+9];B+=v(e[s>>>3],e[(s<<2|f>>>6)&31],e[f>>>1&31],e[(f<<4|l>>>4)&31],e[(l<<1|c>>>7)&31],e[c>>>2&31],e[(c<<3|h>>>5)&31],e[h&31],e[p>>>3],e[(p<<2|m>>>6)&31],e[m>>>1&31],e[(m<<4|d>>>4)&31],e[(d<<1|A>>>7)&31],e[A>>>2&31],e[(A<<3|g>>>5)&31],e[g&31]),o+=10}if(i&1){let n=t[o],s=t[o+1],f=t[o+2],l=t[o+3],c=t[o+4];B+=v(e[n>>>3],e[(n<<2|s>>>6)&31],e[s>>>1&31],e[(s<<4|f>>>4)&31],e[(f<<1|l>>>7)&31],e[l>>>2&31],e[(l<<3|c>>>5)&31],e[c&31]),o+=5}if(x>0){let n=0,s=0;for(let f=o;f<a;f++)n=n<<8|t[f],s+=8;for(;s>=5;)s-=5,B+=v(e[n>>>s&31]);s>0&&(B+=v(e[n<<5-s&31]))}return B};var pt="abcdefghijklmnopqrstuvwxyz234567",U=(()=>{let t=new Uint8Array(128).fill(255);for(let a=0;a<32;a++)t[pt.charCodeAt(a)]=a;return t})(),At=t=>{let a=t.length,i=ht(a*5/8|0),x=0,e=0,B=a-a%8;for(;e<B;e+=8){let o=U[t.charCodeAt(e)],r=U[t.charCodeAt(e+1)],n=U[t.charCodeAt(e+2)],s=U[t.charCodeAt(e+3)],f=U[t.charCodeAt(e+4)],l=U[t.charCodeAt(e+5)],c=U[t.charCodeAt(e+6)],h=U[t.charCodeAt(e+7)];if((o|r|n|s|f|l|c|h)&224)throw new SyntaxError("invalid base string");i[x]=o<<3|r>>>2,i[x+1]=(r<<6|n<<1|s>>>4)&255,i[x+2]=(s<<4|f>>>1)&255,i[x+3]=(f<<7|l<<2|c>>>3)&255,i[x+4]=(c<<5|h)&255,x+=5}if(e<a){let o=0,r=0;for(;e<a;++e){let n=U[t.charCodeAt(e)];if(n&224)throw new SyntaxError("invalid base string");r=r<<5|n,o+=5,o>=8&&(o-=8,i[x++]=255&r>>o)}if(o>=5||(255&r<<8-o)!==0)throw new SyntaxError("unexpected end of data")}return i};var ot="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",gt=z(ot),Ut=_(ot);export{rt as fromBase16,At as fromBase32,gt as fromBase58Btc,nt as fromBase64,ft as fromBase64Pad,ct as fromBase64Url,Bt as fromBase64UrlPad,at as toBase16,et as toBase32,Ut as toBase58Btc,st as toBase64,lt as toBase64Pad,it as toBase64Url,dt as toBase64UrlPad}; 3 - //# sourceMappingURL=./multibase.mjs.map
-1
vendor/esm.sh/@atcute/multibase@1.2.0/es2022/multibase.mjs.map
··· 1 - {"mappings":"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","names":["fromBase16","str","toBase16","bytes","alloc","allocUnsafe","createRfc4648Encode","alphabet","bitsPerChar","pad","bytes","mask","str","bits","buffer","i","createRfc4648Decode","codes","end","written","value","createBtcBaseEncode","BASE","LEADER","iFACTOR","source","zeroes","length","pbegin","pend","dataLen","size","bN","rem","tripleEnd","carry","it1","it2","createBtcBaseDecode","BASE_MAP","xc","BASE2","FACTOR","psz","remaining","b256","pairEnd","c0","c1","it3","it4","vch","BASE16_CHARSET","fromBase16","createRfc4648Decode","toBase16","createRfc4648Encode","HAS_NATIVE_SUPPORT","fromBase16","toBase16","fromBase64","str","toBase64","bytes","fromBase64Pad","toBase64Pad","fromBase64Url","toBase64Url","fromBase64UrlPad","toBase64UrlPad","BASE64_CHARSET","BASE64URL_CHARSET","fromBase64","createRfc4648Decode","toBase64","createRfc4648Encode","fromBase64Pad","toBase64Pad","fromBase64Url","toBase64Url","fromBase64UrlPad","toBase64UrlPad","HAS_NATIVE_SUPPORT","fromBase64","toBase64","fromBase64Pad","toBase64Pad","fromBase64Url","toBase64Url","fromBase64UrlPad","toBase64UrlPad","allocUnsafe","ALPHABET","_cc","i","_fromCharCode","toBase32","bytes","len","full","rem","cc","str","ip","pairs","g","a0","a1","a2","a3","a4","b0","b1","b2","b3","b4","buffer","bits","ALPHABET","_decodeLut","i","fromBase32","str","end","bytes","allocUnsafe","written","fullGroups","c0","c1","c2","c3","c4","c5","c6","c7","bits","buffer","value","BASE58BTC_CHARSET","fromBase58Btc","createBtcBaseDecode","toBase58Btc","createBtcBaseEncode"],"sources":["../esm/npm/@atcute/multibase@1.2.0/node_modules/@atcute/multibase/lib/bases/base16-web-native.ts","../esm/npm/@atcute/multibase@1.2.0/node_modules/@atcute/multibase/lib/utils.ts","../esm/npm/@atcute/multibase@1.2.0/node_modules/@atcute/multibase/lib/bases/base16-web-polyfill.ts","../esm/npm/@atcute/multibase@1.2.0/node_modules/@atcute/multibase/lib/bases/base16-web.ts","../esm/npm/@atcute/multibase@1.2.0/node_modules/@atcute/multibase/lib/bases/base64-web-native.ts","../esm/npm/@atcute/multibase@1.2.0/node_modules/@atcute/multibase/lib/bases/base64-web-polyfill.ts","../esm/npm/@atcute/multibase@1.2.0/node_modules/@atcute/multibase/lib/bases/base64-web.ts","../esm/npm/@atcute/multibase@1.2.0/node_modules/@atcute/multibase/lib/bases/base32.ts","../esm/npm/@atcute/multibase@1.2.0/node_modules/@atcute/multibase/lib/bases/base32-encode.ts","../esm/npm/@atcute/multibase@1.2.0/node_modules/@atcute/multibase/lib/bases/base58.ts"],"sourcesContent":["export const fromBase16 = (str: string): Uint8Array\u003cArrayBuffer\u003e =\u003e {\n\treturn Uint8Array.fromHex(str) as Uint8Array\u003cArrayBuffer\u003e;\n};\n\nexport const toBase16 = (bytes: Uint8Array): string =\u003e {\n\treturn bytes.toHex();\n};\n","import { alloc, allocUnsafe } from '@atcute/uint8array';\n\nexport const createRfc4648Encode = (alphabet: string, bitsPerChar: number, pad: boolean) =\u003e {\n\treturn (bytes: Uint8Array): string =\u003e {\n\t\tconst mask = (1 \u003c\u003c bitsPerChar) - 1;\n\t\tlet str = '';\n\n\t\tlet bits = 0; // Number of bits currently in the buffer\n\t\tlet buffer = 0; // Bits waiting to be written out, MSB first\n\t\tfor (let i = 0; i \u003c bytes.length; ++i) {\n\t\t\t// Slurp data into the buffer:\n\t\t\tbuffer = (buffer \u003c\u003c 8) | bytes[i];\n\t\t\tbits += 8;\n\n\t\t\t// Write out as much as we can:\n\t\t\twhile (bits \u003e bitsPerChar) {\n\t\t\t\tbits -= bitsPerChar;\n\t\t\t\tstr += alphabet[mask \u0026 (buffer \u003e\u003e bits)];\n\t\t\t}\n\t\t}\n\n\t\t// Partial character:\n\t\tif (bits !== 0) {\n\t\t\tstr += alphabet[mask \u0026 (buffer \u003c\u003c (bitsPerChar - bits))];\n\t\t}\n\n\t\t// Add padding characters until we hit a byte boundary:\n\t\tif (pad) {\n\t\t\twhile (((str.length * bitsPerChar) \u0026 7) !== 0) {\n\t\t\t\tstr += '=';\n\t\t\t}\n\t\t}\n\n\t\treturn str;\n\t};\n};\n\nexport const createRfc4648Decode = (alphabet: string, bitsPerChar: number, pad: boolean) =\u003e {\n\t// Build the character lookup table:\n\tconst codes: Record\u003cstring, number\u003e = {};\n\tfor (let i = 0; i \u003c alphabet.length; ++i) {\n\t\tcodes[alphabet[i]] = i;\n\t}\n\n\treturn (str: string): Uint8Array\u003cArrayBuffer\u003e =\u003e {\n\t\t// Count the padding bytes:\n\t\tlet end = str.length;\n\t\t// oxlint-disable-next-line no-unmodified-loop-condition\n\t\twhile (pad \u0026\u0026 str[end - 1] === '=') {\n\t\t\t--end;\n\t\t}\n\n\t\t// Allocate the output:\n\t\tconst bytes = allocUnsafe(((end * bitsPerChar) / 8) | 0);\n\n\t\t// Parse the data:\n\t\tlet bits = 0; // Number of bits currently in the buffer\n\t\tlet buffer = 0; // Bits waiting to be written out, MSB first\n\t\tlet written = 0; // Next byte to write\n\t\tfor (let i = 0; i \u003c end; ++i) {\n\t\t\t// Read one character from the string:\n\t\t\tconst value = codes[str[i]];\n\t\t\tif (value === undefined) {\n\t\t\t\tthrow new SyntaxError(`invalid base string`);\n\t\t\t}\n\n\t\t\t// Append the bits to the buffer:\n\t\t\tbuffer = (buffer \u003c\u003c bitsPerChar) | value;\n\t\t\tbits += bitsPerChar;\n\n\t\t\t// Write out some bits if the buffer has a byte's worth:\n\t\t\tif (bits \u003e= 8) {\n\t\t\t\tbits -= 8;\n\t\t\t\tbytes[written++] = 0xff \u0026 (buffer \u003e\u003e bits);\n\t\t\t}\n\t\t}\n\n\t\t// Verify that we have received just enough bits:\n\t\tif (bits \u003e= bitsPerChar || (0xff \u0026 (buffer \u003c\u003c (8 - bits))) !== 0) {\n\t\t\tthrow new SyntaxError('unexpected end of data');\n\t\t}\n\n\t\treturn bytes;\n\t};\n};\n\nexport const createBtcBaseEncode = (alphabet: string) =\u003e {\n\tif (alphabet.length \u003e= 255) {\n\t\tthrow new RangeError(`alphabet too long`);\n\t}\n\n\tconst BASE = alphabet.length;\n\tconst LEADER = alphabet.charAt(0);\n\tconst iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n\n\treturn (source: Uint8Array): string =\u003e {\n\t\tif (source.length === 0) {\n\t\t\treturn '';\n\t\t}\n\n\t\t// Skip \u0026 count leading zeroes.\n\t\tlet zeroes = 0;\n\t\tlet length = 0;\n\t\tlet pbegin = 0;\n\t\tconst pend = source.length;\n\t\twhile (pbegin !== pend \u0026\u0026 source[pbegin] === 0) {\n\t\t\tpbegin++;\n\t\t\tzeroes++;\n\t\t}\n\n\t\t// Allocate enough space in big-endian base-N representation.\n\t\tconst dataLen = pend - pbegin;\n\t\tconst size = (dataLen * iFACTOR + 1) \u003e\u003e\u003e 0;\n\t\tconst bN = alloc(size);\n\n\t\t// Process 3 source bytes at a time where possible.\n\t\t// multiplier: 256^3 = 16777216. max carry: 16777216 * (BASE-1) + (BASE-1).\n\t\t// for BASE=58: 16777216 * 57 = 956301312, well within 2^32 - 1.\n\t\t{\n\t\t\tconst rem = dataLen % 3;\n\t\t\tconst tripleEnd = pend - rem;\n\n\t\t\twhile (pbegin \u003c tripleEnd) {\n\t\t\t\tlet carry = (source[pbegin] \u003c\u003c 16) | (source[pbegin + 1] \u003c\u003c 8) | source[pbegin + 2];\n\n\t\t\t\tlet i = 0;\n\t\t\t\tfor (let it1 = size - 1; (carry !== 0 || i \u003c length) \u0026\u0026 it1 !== -1; it1--, i++) {\n\t\t\t\t\tcarry = carry + 16777216 * bN[it1];\n\t\t\t\t\tbN[it1] = (carry % BASE) | 0;\n\t\t\t\t\tcarry = (carry / BASE) | 0;\n\t\t\t\t}\n\n\t\t\t\tlength = i;\n\t\t\t\tpbegin += 3;\n\t\t\t}\n\t\t}\n\n\t\t// Process remaining 0-2 bytes one at a time.\n\t\twhile (pbegin !== pend) {\n\t\t\tlet carry = source[pbegin];\n\n\t\t\tlet i = 0;\n\t\t\tfor (let it1 = size - 1; (carry !== 0 || i \u003c length) \u0026\u0026 it1 !== -1; it1--, i++) {\n\t\t\t\tcarry = carry + 256 * bN[it1];\n\t\t\t\tbN[it1] = (carry % BASE) | 0;\n\t\t\t\tcarry = (carry / BASE) | 0;\n\t\t\t}\n\n\t\t\tlength = i;\n\t\t\tpbegin++;\n\t\t}\n\n\t\t// Skip leading zeroes in base-N result.\n\t\tlet it2 = size - length;\n\t\twhile (it2 !== size \u0026\u0026 bN[it2] === 0) {\n\t\t\tit2++;\n\t\t}\n\n\t\t// Translate the result into a string.\n\t\tlet str = LEADER.repeat(zeroes);\n\t\tfor (; it2 \u003c size; ++it2) {\n\t\t\tstr += alphabet.charAt(bN[it2]);\n\t\t}\n\n\t\treturn str;\n\t};\n};\n\nexport const createBtcBaseDecode = (alphabet: string) =\u003e {\n\tif (alphabet.length \u003e= 255) {\n\t\tthrow new RangeError(`alphabet too long`);\n\t}\n\n\tconst BASE_MAP = new Uint8Array(128).fill(255);\n\tfor (let i = 0; i \u003c alphabet.length; i++) {\n\t\tconst xc = alphabet.charCodeAt(i);\n\n\t\tif (xc \u003e= 128) {\n\t\t\tthrow new RangeError(`non-ASCII character in alphabet`);\n\t\t}\n\t\tif (BASE_MAP[xc] !== 255) {\n\t\t\tthrow new RangeError(`${alphabet[i]} is ambiguous`);\n\t\t}\n\n\t\tBASE_MAP[xc] = i;\n\t}\n\n\tconst BASE = alphabet.length;\n\tconst BASE2 = BASE * BASE;\n\tconst LEADER = alphabet.charAt(0);\n\tconst FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n\n\treturn (source: string): Uint8Array\u003cArrayBuffer\u003e =\u003e {\n\t\tif (source.length === 0) {\n\t\t\treturn allocUnsafe(0);\n\t\t}\n\n\t\t// Skip and count leading leader characters.\n\t\tlet psz = 0;\n\t\tlet zeroes = 0;\n\t\tlet length = 0;\n\n\t\twhile (source[psz] === LEADER) {\n\t\t\tzeroes++;\n\t\t\tpsz++;\n\t\t}\n\n\t\t// Allocate enough space in big-endian base256 representation.\n\t\tconst remaining = source.length - psz;\n\t\tconst size = (remaining * FACTOR + 1) \u003e\u003e\u003e 0;\n\t\tconst b256 = alloc(size);\n\n\t\t// Process 2 source characters at a time where possible.\n\t\t// combined value: c0 * BASE + c1, multiplier: BASE^2.\n\t\t// max carry: BASE^2 * 255 + (BASE^2 - 1).\n\t\t// for BASE=58: 3364 * 255 + 3363 = 861183, well within safe integer range.\n\t\t{\n\t\t\tconst rem = remaining \u0026 1;\n\t\t\tconst pairEnd = source.length - rem;\n\n\t\t\twhile (psz \u003c pairEnd) {\n\t\t\t\tconst c0 = BASE_MAP[source.charCodeAt(psz)];\n\t\t\t\tconst c1 = BASE_MAP[source.charCodeAt(psz + 1)];\n\n\t\t\t\tif (c0 === 255 || c1 === 255) {\n\t\t\t\t\tthrow new Error(`invalid string`);\n\t\t\t\t}\n\n\t\t\t\tlet carry = c0 * BASE + c1;\n\n\t\t\t\tlet i = 0;\n\t\t\t\tfor (let it3 = size - 1; (carry !== 0 || i \u003c length) \u0026\u0026 it3 !== -1; it3--, i++) {\n\t\t\t\t\tcarry += BASE2 * b256[it3];\n\t\t\t\t\tb256[it3] = carry \u0026 0xff;\n\t\t\t\t\tcarry = (carry - (carry \u0026 0xff)) / 256;\n\t\t\t\t}\n\t\t\t\tif (carry !== 0) {\n\t\t\t\t\tthrow new Error('non-zero carry');\n\t\t\t\t}\n\t\t\t\tlength = i;\n\t\t\t\tpsz += 2;\n\t\t\t}\n\t\t}\n\n\t\t// Process remaining character if odd count.\n\t\tif (psz \u003c source.length) {\n\t\t\tlet carry = BASE_MAP[source.charCodeAt(psz)];\n\n\t\t\tif (carry === 255) {\n\t\t\t\tthrow new Error(`invalid string`);\n\t\t\t}\n\n\t\t\tlet i = 0;\n\t\t\tfor (let it3 = size - 1; (carry !== 0 || i \u003c length) \u0026\u0026 it3 !== -1; it3--, i++) {\n\t\t\t\tcarry += BASE * b256[it3];\n\t\t\t\tb256[it3] = carry \u0026 0xff;\n\t\t\t\tcarry = carry \u003e\u003e\u003e 8;\n\t\t\t}\n\t\t\tif (carry !== 0) {\n\t\t\t\tthrow new Error('non-zero carry');\n\t\t\t}\n\t\t\tlength = i;\n\t\t}\n\n\t\t// Skip leading zeroes in b256.\n\t\tlet it4 = size - length;\n\t\twhile (it4 !== size \u0026\u0026 b256[it4] === 0) {\n\t\t\tit4++;\n\t\t}\n\n\t\tif (it4 === zeroes) {\n\t\t\treturn b256;\n\t\t}\n\n\t\tconst vch = allocUnsafe(zeroes + (size - it4));\n\t\tvch.fill(0, 0, zeroes);\n\t\tvch.set(b256.subarray(it4), zeroes);\n\n\t\treturn vch;\n\t};\n};\n","// remove after September 2027\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array/toHex\n\nimport { createRfc4648Decode, createRfc4648Encode } from '../utils.ts';\n\nconst BASE16_CHARSET = '0123456789abcdef';\n\nexport const fromBase16: (str: string) =\u003e Uint8Array\u003cArrayBuffer\u003e =\n\t/*#__PURE__*/ createRfc4648Decode(BASE16_CHARSET, 4, false);\nexport const toBase16: (bytes: Uint8Array) =\u003e string =\n\t/*#__PURE__*/ createRfc4648Encode(BASE16_CHARSET, 4, false);\n","import { fromBase16 as fromBase16Native, toBase16 as toBase16Native } from './base16-web-native.ts';\nimport { fromBase16 as fromBase16Polyfill, toBase16 as toBase16Polyfill } from './base16-web-polyfill.ts';\n\nconst HAS_NATIVE_SUPPORT = 'fromHex' in Uint8Array;\n\nexport const fromBase16 = !HAS_NATIVE_SUPPORT ? fromBase16Polyfill : fromBase16Native;\nexport const toBase16 = !HAS_NATIVE_SUPPORT ? toBase16Polyfill : toBase16Native;\n","// #region base64\nexport const fromBase64 = (str: string): Uint8Array\u003cArrayBuffer\u003e =\u003e {\n\treturn Uint8Array.fromBase64(str, {\n\t\talphabet: 'base64',\n\t\tlastChunkHandling: 'loose',\n\t}) as Uint8Array\u003cArrayBuffer\u003e;\n};\n\nexport const toBase64 = (bytes: Uint8Array): string =\u003e {\n\treturn bytes.toBase64({ alphabet: 'base64', omitPadding: true });\n};\n// #endregion\n\n// #region base64pad\nexport const fromBase64Pad = (str: string): Uint8Array\u003cArrayBuffer\u003e =\u003e {\n\treturn Uint8Array.fromBase64(str, {\n\t\talphabet: 'base64',\n\t\tlastChunkHandling: 'strict',\n\t}) as Uint8Array\u003cArrayBuffer\u003e;\n};\n\nexport const toBase64Pad = (bytes: Uint8Array): string =\u003e {\n\treturn bytes.toBase64({ alphabet: 'base64', omitPadding: false });\n};\n// #endregion\n\n// #region base64url\nexport const fromBase64Url = (str: string): Uint8Array\u003cArrayBuffer\u003e =\u003e {\n\treturn Uint8Array.fromBase64(str, {\n\t\talphabet: 'base64url',\n\t\tlastChunkHandling: 'loose',\n\t}) as Uint8Array\u003cArrayBuffer\u003e;\n};\n\nexport const toBase64Url = (bytes: Uint8Array): string =\u003e {\n\treturn bytes.toBase64({ alphabet: 'base64url', omitPadding: true });\n};\n// #endregion\n\n// #region base64urlpad\nexport const fromBase64UrlPad = (str: string): Uint8Array\u003cArrayBuffer\u003e =\u003e {\n\treturn Uint8Array.fromBase64(str, {\n\t\talphabet: 'base64url',\n\t\tlastChunkHandling: 'strict',\n\t}) as Uint8Array\u003cArrayBuffer\u003e;\n};\n\nexport const toBase64UrlPad = (bytes: Uint8Array): string =\u003e {\n\treturn bytes.toBase64({ alphabet: 'base64url', omitPadding: false });\n};\n// #endregion\n","// remove after September 2027\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array/toBase64\n\nimport { createRfc4648Decode, createRfc4648Encode } from '../utils.ts';\n\nconst BASE64_CHARSET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst BASE64URL_CHARSET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';\n\n// #region base64\nexport const fromBase64: (str: string) =\u003e Uint8Array\u003cArrayBuffer\u003e =\n\t/*#__PURE__*/ createRfc4648Decode(BASE64_CHARSET, 6, false);\nexport const toBase64: (bytes: Uint8Array) =\u003e string =\n\t/*#__PURE__*/ createRfc4648Encode(BASE64_CHARSET, 6, false);\n// #endregion\n\n// #region base64pad\nexport const fromBase64Pad: (str: string) =\u003e Uint8Array\u003cArrayBuffer\u003e =\n\t/*#__PURE__*/ createRfc4648Decode(BASE64_CHARSET, 6, true);\nexport const toBase64Pad: (bytes: Uint8Array) =\u003e string =\n\t/*#__PURE__*/ createRfc4648Encode(BASE64_CHARSET, 6, true);\n// #endregion\n\n// #region base64url\nexport const fromBase64Url: (str: string) =\u003e Uint8Array\u003cArrayBuffer\u003e =\n\t/*#__PURE__*/ createRfc4648Decode(BASE64URL_CHARSET, 6, false);\nexport const toBase64Url: (bytes: Uint8Array) =\u003e string =\n\t/*#__PURE__*/ createRfc4648Encode(BASE64URL_CHARSET, 6, false);\n// #endregion\n\n// #region base64urlpad\nexport const fromBase64UrlPad: (str: string) =\u003e Uint8Array\u003cArrayBuffer\u003e =\n\t/*#__PURE__*/ createRfc4648Decode(BASE64URL_CHARSET, 6, true);\nexport const toBase64UrlPad: (bytes: Uint8Array) =\u003e string =\n\t/*#__PURE__*/ createRfc4648Encode(BASE64URL_CHARSET, 6, true);\n// #endregion\n","import {\n\tfromBase64 as fromBase64Native,\n\tfromBase64Pad as fromBase64PadNative,\n\tfromBase64Url as fromBase64UrlNative,\n\tfromBase64UrlPad as fromBase64UrlPadNative,\n\ttoBase64 as toBase64Native,\n\ttoBase64Pad as toBase64PadNative,\n\ttoBase64Url as toBase64UrlNative,\n\ttoBase64UrlPad as toBase64UrlPadNative,\n} from './base64-web-native.ts';\nimport {\n\tfromBase64Pad as fromBase64PadPolyfill,\n\tfromBase64 as fromBase64Polyfill,\n\tfromBase64UrlPad as fromBase64UrlPadPolyfill,\n\tfromBase64Url as fromBase64UrlPolyfill,\n\ttoBase64Pad as toBase64PadPolyfill,\n\ttoBase64 as toBase64Polyfill,\n\ttoBase64UrlPad as toBase64UrlPadPolyfill,\n\ttoBase64Url as toBase64UrlPolyfill,\n} from './base64-web-polyfill.ts';\n\nconst HAS_NATIVE_SUPPORT = 'fromBase64' in Uint8Array;\n\n// #region base64\nexport const fromBase64 = !HAS_NATIVE_SUPPORT ? fromBase64Polyfill : fromBase64Native;\nexport const toBase64 = !HAS_NATIVE_SUPPORT ? toBase64Polyfill : toBase64Native;\n// #endregion\n\n// #region base64pad\nexport const fromBase64Pad = !HAS_NATIVE_SUPPORT ? fromBase64PadPolyfill : fromBase64PadNative;\nexport const toBase64Pad = !HAS_NATIVE_SUPPORT ? toBase64PadPolyfill : toBase64PadNative;\n// #endregion\n\n// #region base64url\nexport const fromBase64Url = !HAS_NATIVE_SUPPORT ? fromBase64UrlPolyfill : fromBase64UrlNative;\nexport const toBase64Url = !HAS_NATIVE_SUPPORT ? toBase64UrlPolyfill : toBase64UrlNative;\n// #endregion\n\n// #region base64urlpad\nexport const fromBase64UrlPad = !HAS_NATIVE_SUPPORT ? fromBase64UrlPadPolyfill : fromBase64UrlPadNative;\nexport const toBase64UrlPad = !HAS_NATIVE_SUPPORT ? toBase64UrlPadPolyfill : toBase64UrlPadNative;\n// #endregion\n","import { allocUnsafe } from '@atcute/uint8array';\n\nexport { toBase32 } from '#bases/base32-encode';\n\nconst ALPHABET = 'abcdefghijklmnopqrstuvwxyz234567';\n\n// #region decode\n\n// charCode -\u003e 5-bit value lookup table, 0xff for invalid characters.\n// valid base32 chars: a-z (97-122) map to 0-25, 2-7 (50-55) map to 26-31.\nconst _decodeLut: Uint8Array = /*#__PURE__*/ (() =\u003e {\n\tconst t = new Uint8Array(128).fill(0xff);\n\tfor (let i = 0; i \u003c 32; i++) {\n\t\tt[ALPHABET.charCodeAt(i)] = i;\n\t}\n\treturn t;\n})();\n\n/**\n * decodes an unpadded RFC 4648 base32 (lowercase) string to a Uint8Array\n * @param str base32 encoded string\n * @returns decoded buffer\n * @throws {SyntaxError} on invalid characters or malformed trailing bits\n */\nexport const fromBase32 = (str: string): Uint8Array\u003cArrayBuffer\u003e =\u003e {\n\tconst end = str.length;\n\tconst bytes = allocUnsafe(((end * 5) / 8) | 0);\n\n\tlet written = 0;\n\tlet i = 0;\n\n\t// process 8-character groups (= 40 bits = 5 bytes each)\n\tconst fullGroups = end - (end % 8);\n\tfor (; i \u003c fullGroups; i += 8) {\n\t\tconst c0 = _decodeLut[str.charCodeAt(i)];\n\t\tconst c1 = _decodeLut[str.charCodeAt(i + 1)];\n\t\tconst c2 = _decodeLut[str.charCodeAt(i + 2)];\n\t\tconst c3 = _decodeLut[str.charCodeAt(i + 3)];\n\t\tconst c4 = _decodeLut[str.charCodeAt(i + 4)];\n\t\tconst c5 = _decodeLut[str.charCodeAt(i + 5)];\n\t\tconst c6 = _decodeLut[str.charCodeAt(i + 6)];\n\t\tconst c7 = _decodeLut[str.charCodeAt(i + 7)];\n\n\t\t// valid base32 values are 0-31 (5 bits), so any value with bits\n\t\t// outside the low 5 means 0xff was in the mix\n\t\tif ((c0 | c1 | c2 | c3 | c4 | c5 | c6 | c7) \u0026 0xe0) {\n\t\t\tthrow new SyntaxError(`invalid base string`);\n\t\t}\n\n\t\tbytes[written] = (c0 \u003c\u003c 3) | (c1 \u003e\u003e\u003e 2);\n\t\tbytes[written + 1] = ((c1 \u003c\u003c 6) | (c2 \u003c\u003c 1) | (c3 \u003e\u003e\u003e 4)) \u0026 0xff;\n\t\tbytes[written + 2] = ((c3 \u003c\u003c 4) | (c4 \u003e\u003e\u003e 1)) \u0026 0xff;\n\t\tbytes[written + 3] = ((c4 \u003c\u003c 7) | (c5 \u003c\u003c 2) | (c6 \u003e\u003e\u003e 3)) \u0026 0xff;\n\t\tbytes[written + 4] = ((c6 \u003c\u003c 5) | c7) \u0026 0xff;\n\t\twritten += 5;\n\t}\n\n\t// handle remaining 1-7 characters\n\tif (i \u003c end) {\n\t\tlet bits = 0;\n\t\tlet buffer = 0;\n\t\tfor (; i \u003c end; ++i) {\n\t\t\tconst value = _decodeLut[str.charCodeAt(i)];\n\t\t\tif (value \u0026 0xe0) {\n\t\t\t\tthrow new SyntaxError(`invalid base string`);\n\t\t\t}\n\t\t\tbuffer = (buffer \u003c\u003c 5) | value;\n\t\t\tbits += 5;\n\t\t\tif (bits \u003e= 8) {\n\t\t\t\tbits -= 8;\n\t\t\t\tbytes[written++] = 0xff \u0026 (buffer \u003e\u003e bits);\n\t\t\t}\n\t\t}\n\n\t\tif (bits \u003e= 5 || (0xff \u0026 (buffer \u003c\u003c (8 - bits))) !== 0) {\n\t\t\tthrow new SyntaxError(`unexpected end of data`);\n\t\t}\n\t}\n\n\treturn bytes;\n};\n\n// #endregion\n","const ALPHABET = 'abcdefghijklmnopqrstuvwxyz234567';\n\n// charCode lookup table: cc[i] = ALPHABET.charCodeAt(i) for i in 0..31\nconst _cc: Uint8Array = /*#__PURE__*/ (() =\u003e {\n\tconst t = new Uint8Array(32);\n\tfor (let i = 0; i \u003c 32; i++) {\n\t\tt[i] = ALPHABET.charCodeAt(i);\n\t}\n\treturn t;\n})();\n\nconst _fromCharCode = String.fromCharCode;\n\n/**\n * encodes a Uint8Array to an unpadded RFC 4648 base32 (lowercase) string\n * @param bytes source buffer\n * @returns base32 encoded string\n */\nexport const toBase32 = (bytes: Uint8Array): string =\u003e {\n\tconst len = bytes.length;\n\tconst full = (len / 5) | 0;\n\tconst rem = len - full * 5;\n\tconst cc = _cc;\n\n\tlet str = '';\n\tlet ip = 0;\n\n\t// process pairs of 5-byte groups (10 bytes → 16 base32 chars) at a time,\n\t// batching into a single String.fromCharCode call for fewer string concats\n\tconst pairs = (full / 2) | 0;\n\tfor (let g = 0; g \u003c pairs; g++) {\n\t\tconst a0 = bytes[ip],\n\t\t\ta1 = bytes[ip + 1],\n\t\t\ta2 = bytes[ip + 2],\n\t\t\ta3 = bytes[ip + 3],\n\t\t\ta4 = bytes[ip + 4];\n\t\tconst b0 = bytes[ip + 5],\n\t\t\tb1 = bytes[ip + 6],\n\t\t\tb2 = bytes[ip + 7],\n\t\t\tb3 = bytes[ip + 8],\n\t\t\tb4 = bytes[ip + 9];\n\n\t\tstr += _fromCharCode(\n\t\t\tcc[a0 \u003e\u003e\u003e 3],\n\t\t\tcc[((a0 \u003c\u003c 2) | (a1 \u003e\u003e\u003e 6)) \u0026 0x1f],\n\t\t\tcc[(a1 \u003e\u003e\u003e 1) \u0026 0x1f],\n\t\t\tcc[((a1 \u003c\u003c 4) | (a2 \u003e\u003e\u003e 4)) \u0026 0x1f],\n\t\t\tcc[((a2 \u003c\u003c 1) | (a3 \u003e\u003e\u003e 7)) \u0026 0x1f],\n\t\t\tcc[(a3 \u003e\u003e\u003e 2) \u0026 0x1f],\n\t\t\tcc[((a3 \u003c\u003c 3) | (a4 \u003e\u003e\u003e 5)) \u0026 0x1f],\n\t\t\tcc[a4 \u0026 0x1f],\n\t\t\tcc[b0 \u003e\u003e\u003e 3],\n\t\t\tcc[((b0 \u003c\u003c 2) | (b1 \u003e\u003e\u003e 6)) \u0026 0x1f],\n\t\t\tcc[(b1 \u003e\u003e\u003e 1) \u0026 0x1f],\n\t\t\tcc[((b1 \u003c\u003c 4) | (b2 \u003e\u003e\u003e 4)) \u0026 0x1f],\n\t\t\tcc[((b2 \u003c\u003c 1) | (b3 \u003e\u003e\u003e 7)) \u0026 0x1f],\n\t\t\tcc[(b3 \u003e\u003e\u003e 2) \u0026 0x1f],\n\t\t\tcc[((b3 \u003c\u003c 3) | (b4 \u003e\u003e\u003e 5)) \u0026 0x1f],\n\t\t\tcc[b4 \u0026 0x1f],\n\t\t);\n\t\tip += 10;\n\t}\n\n\t// remaining full group if odd count\n\tif (full \u0026 1) {\n\t\tconst b0 = bytes[ip],\n\t\t\tb1 = bytes[ip + 1],\n\t\t\tb2 = bytes[ip + 2],\n\t\t\tb3 = bytes[ip + 3],\n\t\t\tb4 = bytes[ip + 4];\n\n\t\tstr += _fromCharCode(\n\t\t\tcc[b0 \u003e\u003e\u003e 3],\n\t\t\tcc[((b0 \u003c\u003c 2) | (b1 \u003e\u003e\u003e 6)) \u0026 0x1f],\n\t\t\tcc[(b1 \u003e\u003e\u003e 1) \u0026 0x1f],\n\t\t\tcc[((b1 \u003c\u003c 4) | (b2 \u003e\u003e\u003e 4)) \u0026 0x1f],\n\t\t\tcc[((b2 \u003c\u003c 1) | (b3 \u003e\u003e\u003e 7)) \u0026 0x1f],\n\t\t\tcc[(b3 \u003e\u003e\u003e 2) \u0026 0x1f],\n\t\t\tcc[((b3 \u003c\u003c 3) | (b4 \u003e\u003e\u003e 5)) \u0026 0x1f],\n\t\t\tcc[b4 \u0026 0x1f],\n\t\t);\n\t\tip += 5;\n\t}\n\n\t// handle remaining 1-4 bytes\n\tif (rem \u003e 0) {\n\t\tlet buffer = 0;\n\t\tlet bits = 0;\n\t\tfor (let i = ip; i \u003c len; i++) {\n\t\t\tbuffer = (buffer \u003c\u003c 8) | bytes[i];\n\t\t\tbits += 8;\n\t\t}\n\t\twhile (bits \u003e= 5) {\n\t\t\tbits -= 5;\n\t\t\tstr += _fromCharCode(cc[(buffer \u003e\u003e\u003e bits) \u0026 0x1f]);\n\t\t}\n\t\tif (bits \u003e 0) {\n\t\t\tstr += _fromCharCode(cc[(buffer \u003c\u003c (5 - bits)) \u0026 0x1f]);\n\t\t}\n\t}\n\n\treturn str;\n};\n","import { createBtcBaseDecode, createBtcBaseEncode } from '../utils.ts';\n\nconst BASE58BTC_CHARSET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\n\nexport const fromBase58Btc: (source: string) =\u003e Uint8Array\u003cArrayBuffer\u003e =\n\t/*#__PURE__*/ createBtcBaseDecode(BASE58BTC_CHARSET);\n\nexport const toBase58Btc: (source: Uint8Array) =\u003e string =\n\t/*#__PURE__*/ createBtcBaseEncode(BASE58BTC_CHARSET);\n"],"version":3}
-3
vendor/esm.sh/@atcute/oauth-browser-client@3.0.0/es2022/oauth-browser-client.mjs
··· 1 - /* esm.sh - @atcute/oauth-browser-client@3.0.0 */ 2 - var b=typeof navigator<"u"?navigator.locks:void 0;var ee=t=>{if(t!=null){let e=JSON.parse(t);if(e!=null)return e}return{}},M=({name:t})=>{let e=new AbortController,r=e.signal,s=(o,i,a=!1)=>{let n,u=`${t}:${o}`,h=()=>n&&localStorage.setItem(u,JSON.stringify(n)),d=()=>{if(r.aborted)throw new Error("store closed");return n??=ee(localStorage.getItem(u))};{let p=c=>{c.key===u&&(n=void 0)};globalThis.addEventListener("storage",p,{signal:r})}{let p=async c=>{if(!c||r.aborted||(await new Promise(l=>setTimeout(l,1e4)),r.aborted))return;let f=Date.now(),y=!1;d();for(let l in n){let S=n[l].expiresAt;S!==null&&f>S&&(y=!0,delete n[l])}y&&h()};b?b.request(`${u}:cleanup`,{ifAvailable:!0},p):p(!0)}return{get(p){d();let c=n[p];if(!c)return;let f=c.expiresAt;if(f!==null&&Date.now()>f){delete n[p],h();return}return c.value},getWithLapsed(p){d();let c=n[p],f=Date.now();if(!c)return[void 0,1/0];let y=c.updatedAt;return y===void 0?[c.value,1/0]:[c.value,f-y]},set(p,c){d();let f={value:c,expiresAt:i(c),updatedAt:a?Date.now():void 0};n[p]=f,h()},delete(p){d(),n[p]!==void 0&&(delete n[p],h())},keys(){return d(),Object.keys(n)}}};return{dispose:()=>{e.abort()},sessions:s("sessions",({token:o})=>o.refresh?null:o.expires_at??null),states:s("states",o=>Date.now()+600*1e3),dpopNonces:s("dpopNonces",o=>Date.now()+1440*60*1e3,!0),inflightDpop:new Map}};var A,P,T,w,$,te=t=>{({identityResolver:$,fetchClientAssertion:T}=t),{client_id:A,redirect_uri:P}=t.metadata,w=M({name:t.storageName??"atcute-oauth"})};var x=class extends Error{name="LoginError"},I=class extends Error{name="AuthorizationError"},m=class extends Error{name="ResolverError"},v=class extends Error{sub;name="TokenRefreshError";constructor(e,r,s){super(r,s),this.sub=e}},E=class extends Error{response;data;name="OAuthResponseError";error;description;constructor(e,r){let s=W(B(r)?.error),o=W(B(r)?.error_description),i=s?`"${s}"`:"unknown",a=o?`: ${o}`:"",n=`OAuth ${i} error${a}`;super(n),this.response=e,this.data=r,this.error=s,this.description=o}get status(){return this.response.status}get headers(){return this.response.headers}},j=class extends Error{response;status;name="FetchResponseError";constructor(e,r,s){super(s),this.response=e,this.status=r}},W=t=>typeof t=="string"?t:void 0,B=t=>typeof t=="object"&&t!==null&&!Array.isArray(t)?t:void 0;import{generateDpopKey as ye,generatePkce as ge}from"../../oauth-crypto@0.1.0/es2022/oauth-crypto.mjs";import{nanoid as _e}from"../../../nanoid@5.1.7/es2022/nanoid.mjs";var k=t=>t.get("content-type")?.split(";")[0];var re="parse"in URL,H=t=>{let e=null;if(re)e=URL.parse(t);else try{e=new URL(t)}catch{}return e!==null?e.protocol==="https:"||e.protocol==="http:":!1};var L=async t=>{let e=await $.resolve(t);return{identity:e,metadata:await G(e.pds)}},J=async t=>{try{return{metadata:await G(t)}}catch(e){if(e instanceof m)try{return{metadata:await V(t)}}catch{}throw e}},se=async t=>{let e=new URL("/.well-known/oauth-protected-resource",t),r=await fetch(e.href,{redirect:"manual",headers:{accept:"application/json"}});if(r.status!==200||k(r.headers)!=="application/json")throw new m("unexpected response");let s=await r.json();if(s.resource!==e.origin)throw new m("unexpected issuer");return s},V=async t=>{let e=new URL("/.well-known/oauth-authorization-server",t),r=await fetch(e.href,{redirect:"manual",headers:{accept:"application/json"}});if(r.status!==200||k(r.headers)!=="application/json")throw new m("unexpected response");let s=await r.json();if(s.issuer!==e.origin)throw new m("unexpected issuer");if(!H(s.authorization_endpoint))throw new m("authorization server provided incorrect authorization endpoint");if(!s.client_id_metadata_document_supported)throw new m("authorization server does not support 'client_id_metadata_document'");if(!s.pushed_authorization_request_endpoint)throw new m("authorization server does not support 'pushed_authorization request'");if(s.response_types_supported&&!s.response_types_supported.includes("code"))throw new m("authorization server does not support 'code' response type");return s},G=async t=>{let e=await se(t);if(e.authorization_servers?.length!==1)throw new m("expected exactly one authorization server in the listing");let r=e.authorization_servers[0],s=await V(r);if(s.protected_resources&&!s.protected_resources.includes(e.resource))throw new m("server is not in authorization server's jurisdiction");return s};import{createDpopProofSigner as ae}from"../../oauth-crypto@0.1.0/es2022/oauth-crypto.mjs";import{createDpopProofSigner as oe,sha256Base64Url as ne}from"../../oauth-crypto@0.1.0/es2022/oauth-crypto.mjs";var U=(t,e)=>{let r=w.dpopNonces,s=w.inflightDpop,o=oe(t);return async(i,a)=>{let n=new Request(i,a),u=n.headers.get("authorization"),h=u?.startsWith("DPoP ")?await ne(u.slice(5)):void 0,{method:d,url:p}=n,{origin:c,pathname:f}=new URL(p),y=c+f,l=s.get(c);l&&(await l.promise,l=void 0);let z,S=!1;try{let[D,g]=r.getWithLapsed(c);z=D,S=g>180*1e3}catch{}S&&s.set(c,l=Promise.withResolvers());let R;try{let D=await o(d,y,z,h);n.headers.set("dpop",D);let g=await fetch(n);if(R=g.headers.get("dpop-nonce"),R===null||R===z)return g;try{r.set(c,R)}catch{}if(!await ie(g,e)||i===n||a?.body instanceof ReadableStream)return g}finally{l&&(s.delete(c),l.resolve())}{let D=await o(d,y,R,h),g=new Request(i,a);g.headers.set("dpop",D);let C=await fetch(g),O=C.headers.get("dpop-nonce");if(O!==null&&O!==R)try{r.set(c,O)}catch{}return C}}},ie=async(t,e)=>{if((e===void 0||e===!1)&&t.status===401){let r=t.headers.get("www-authenticate");if(r?.startsWith("DPoP"))return r.includes('error="use_dpop_nonce"')}if((e===void 0||e===!0)&&t.status===400&&k(t.headers)==="application/json")try{let r=await t.clone().json();return typeof r=="object"&&r?.error==="use_dpop_nonce"}catch{return!1}return!1};var Q=(t,e)=>{let r={};for(let s=0,o=e.length;s<o;s++){let i=e[s];r[i]=t[i]}return r};var _=class{#t;#e;#r;constructor(e,r){this.#e=e,this.#r=r,this.#t=U(r,!0)}async request(e,r){let s=this.#e[`${e}_endpoint`];if(!s)throw new Error(`no endpoint for ${e}`);if((e==="token"||e==="pushed_authorization_request")&&T!==void 0){let a=ae(this.#r),n=await T({aud:this.#e.issuer,createDpopProof:async(u,h)=>await a("POST",u,h,void 0)});r={...r,...n}}let o=await this.#t(s,{method:"post",headers:{"content-type":"application/json"},body:JSON.stringify({...r,client_id:A})});if(k(o.headers)!=="application/json")throw new j(o,2,"unexpected content-type");let i=await o.json();if(o.ok)return i;throw new E(o,i)}async revoke(e){try{await this.request("revocation",{token:e})}catch{}}async exchangeCode(e,r){let s=await this.request("token",{grant_type:"authorization_code",redirect_uri:P,code:e,code_verifier:r});try{return await this.#o(s)}catch(o){throw await this.revoke(s.access_token),o}}async refresh({sub:e,token:r}){if(!r.refresh)throw new v(e,"no refresh token available");let s=await this.request("token",{grant_type:"refresh_token",refresh_token:r.refresh});try{if(e!==s.sub)throw new v(e,`sub mismatch in token response; got ${s.sub}`);return this.#s(s)}catch(o){throw await this.revoke(s.access_token),o}}#s(e){if(!e.sub)throw new TypeError("missing sub field in token response");if(!e.scope)throw new TypeError("missing scope field in token response");if(e.token_type!=="DPoP")throw new TypeError("token response returned a non-dpop token");return{scope:e.scope,refresh:e.refresh_token,access:e.access_token,type:e.token_type,expires_at:typeof e.expires_in=="number"?Date.now()+e.expires_in*1e3:void 0}}async#o(e){let r=e.sub;if(!r)throw new TypeError("missing sub field in token response");let s=this.#s(e),o=await L(r);if(o.metadata.issuer!==this.#e.issuer)throw new TypeError(`issuer mismatch; got ${o.metadata.issuer}`);return{token:s,info:{sub:r,aud:o.identity.pds,server:Q(o.metadata,["issuer","authorization_endpoint","introspection_endpoint","pushed_authorization_request_endpoint","revocation_endpoint","token_endpoint"])}}}};import{fromBase64Url as ce}from"../../multibase@1.2.0/es2022/multibase.mjs";var pe={name:"ECDSA",namedCurve:"P-256"},X=t=>typeof t.key=="string"&&typeof t.jwt=="string",Y=async t=>{let e=ce(t.key),r=await crypto.subtle.importKey("pkcs8",e,pe,!0,["sign"]),s=await crypto.subtle.exportKey("jwk",r);return s.alg="ES256",s};var q=new Map,K=async(t,e)=>{e?.signal?.throwIfAborted();let r=we;e?.noCache?r=le:e?.allowStale&&(r=de);let s;for(;s=q.get(t);){try{let{isFresh:n,value:u}=await s;if(n||r(u))return u}catch{}e?.signal?.throwIfAborted()}let o=async()=>{let n=await me(t,w.sessions.get(t));if(n&&r(n))return{isFresh:!1,value:n};let u=await he(t,n);return await F(t,u),{isFresh:!0,value:u}},i;if(b?i=b.request(`atcute-oauth:${t}`,o):i=o(),i=i.finally(()=>q.delete(t)),q.has(t))throw new Error("concurrent request for the same key");q.set(t,i);let{value:a}=await i;return a},F=async(t,e)=>{try{w.sessions.set(t,e)}catch(r){throw await fe(e),r}},N=t=>{w.sessions.delete(t)},ue=()=>w.sessions.keys(),de=()=>!0,le=()=>!1,he=async(t,e)=>{if(e===void 0)throw new v(t,"session deleted by another tab");let{dpopKey:r,info:s,token:o}=e,i=new _(s.server,r);try{let a=await i.refresh({sub:s.sub,token:o});return{dpopKey:r,info:s,token:a}}catch(a){throw a instanceof E&&a.status===400&&a.error==="invalid_grant"?new v(t,"session was revoked",{cause:a}):a}},fe=async({dpopKey:t,info:e,token:r})=>{await new _(e.server,t).revoke(r.refresh??r.access)},we=({token:t})=>{let e=t.expires_at;return e==null||Date.now()+6e4<=e},me=async(t,e)=>{if(!e||!X(e.dpopKey))return e;let r=await Y(e.dpopKey),s={...e,dpopKey:r};try{w.sessions.set(t,s)}catch{}return s};var ct=async t=>{let{target:e,scope:r,state:s=null,...o}=t,i;switch(e.type){case"account":{i=await L(e.identifier);break}case"pds":i=await J(e.serviceUrl)}let{identity:a,metadata:n}=i,u=a?a.handle!=="handle.invalid"?a.handle:a.did:void 0,h=_e(24),d=await ge(),p=await ye(["ES256"]),c={display:o.display,ui_locales:o.locale,prompt:o.prompt,redirect_uri:P,code_challenge:d.challenge,code_challenge_method:d.method,state:h,login_hint:u,response_mode:"fragment",response_type:"code",scope:r};w.states.set(h,{dpopKey:p,metadata:n,verifier:d.verifier,state:s});let y=await new _(n,p).request("pushed_authorization_request",c),l=new URL(n.authorization_endpoint);return l.searchParams.set("client_id",A),l.searchParams.set("request_uri",y.request_uri),l},pt=async t=>{let e=t.get("iss"),r=t.get("state"),s=t.get("code"),o=t.get("error");if(!r||!(s||o))throw new x("missing parameters");let i=w.states.get(r);if(i)w.states.delete(r);else throw new x("unknown state provided");if(o)throw new I(t.get("error_description")||o);if(!s)throw new x("missing code parameter");let a=i.dpopKey,n=i.metadata,u=i.state??null;if(e===null)throw new x("missing issuer parameter");if(e!==n.issuer)throw new x("issuer mismatch");let h=new _(n,a),{info:d,token:p}=await h.exchangeCode(s,i.verifier),c=d.sub,f={dpopKey:a,info:d,token:p};return await F(c,f),{session:f,state:u}};var Z=class{session;#t;#e;constructor(e){this.session=e,this.#t=U(e.dpopKey,!1)}get sub(){return this.session.info.sub}getSession(e){let r=K(this.session.info.sub,e);return r.then(s=>{this.session=s}).finally(()=>{this.#e=void 0}),this.#e=r}async signOut(){let e=this.session.info.sub;try{let{dpopKey:r,info:s,token:o}=await K(e,{allowStale:!0});await new _(s.server,r).revoke(o.refresh??o.access)}finally{N(e)}}async handle(e,r){await this.#e;let s=new Headers(r?.headers),o=this.session,i=new URL(e,o.info.aud);s.set("authorization",`${o.token.type} ${o.token.access}`);let a=await this.#t(i.href,{...r,headers:s});if(!xe(a))return a;try{this.#e?o=await this.#e:o=await this.getSession()}catch{return a}return r?.body instanceof ReadableStream?a:(i=new URL(e,o.info.aud),s.set("authorization",`${o.token.type} ${o.token.access}`),await this.#t(i.href,{...r,headers:s}))}},xe=t=>{if(t.status!==401)return!1;let e=t.headers.get("www-authenticate");return e!=null&&(e.startsWith("Bearer ")||e.startsWith("DPoP "))&&e.includes('error="invalid_token"')};export{I as AuthorizationError,j as FetchResponseError,x as LoginError,E as OAuthResponseError,Z as OAuthUserAgent,m as ResolverError,v as TokenRefreshError,te as configureOAuth,ct as createAuthorizationUrl,N as deleteStoredSession,pt as finalizeAuthorization,K as getSession,ue as listStoredSessions}; 3 - //# sourceMappingURL=./oauth-browser-client.mjs.map
-1
vendor/esm.sh/@atcute/oauth-browser-client@3.0.0/es2022/oauth-browser-client.mjs.map
··· 1 - {"mappings":"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","names":["locks","parse","raw","parsed","createOAuthDatabase","name","controller","signal","createStore","subname","expiresAt","persistUpdatedAt","store","storageKey","persist","read","listener","ev","cleanup","lock","resolve","now","changed","key","locks","item","updatedAt","value","token","_item","CLIENT_ID","REDIRECT_URI","fetchClientAssertion","database","identityResolver","configureOAuth","options","createOAuthDatabase","LoginError","AuthorizationError","ResolverError","TokenRefreshError","sub","message","options","OAuthResponseError","response","data","error","ifString","ifObject","errorDescription","messageError","messageDesc","FetchResponseError","status","v","generateDpopKey","generatePkce","nanoid","extractContentType","headers","isUrlParseSupported","isValidUrl","urlString","url","resolveFromIdentifier","ident","identity","identityResolver","getMetadataFromResourceServer","resolveFromService","host","err","ResolverError","getOAuthAuthorizationServerMetadata","getOAuthProtectedResourceMetadata","url","response","extractContentType","metadata","isValidUrl","input","rs_metadata","issuer","as_metadata","createDpopProofSigner","createDpopProofSigner","sha256Base64Url","createDPoPFetch","dpopKey","isAuthServer","nonces","database","pending","sign","createDpopProofSigner","input","init","request","authorizationHeader","ath","sha256Base64Url","method","url","origin","pathname","htu","deferred","initNonce","expiredOrMissing","nonce","lapsed","nextNonce","initProof","initResponse","isUseDpopNonceError","nextProof","nextRequest","retryResponse","retryNonce","response","wwwAuth","extractContentType","json","pick","obj","keys","cloned","idx","len","key","OAuthServerAgent","#fetch","#metadata","#dpopKey","metadata","dpopKey","createDPoPFetch","endpoint","payload","url","fetchClientAssertion","sign","createDpopProofSigner","assertion","nonce","response","CLIENT_ID","extractContentType","FetchResponseError","json","OAuthResponseError","token","code","verifier","REDIRECT_URI","#processExchangeResponse","err","sub","TokenRefreshError","#processTokenResponse","res","resolved","resolveFromIdentifier","pick","fromBase64Url","ES256_ALG","isLegacyDpopKey","key","migrateLegacyDpopKey","pkcs8","cryptoKey","jwk","pending","getSession","sub","options","allowStored","isTokenUsable","returnFalse","returnTrue","previousExecutionFlow","isFresh","value","run","storedSession","migrateSessionIfNeeded","database","newSession","refreshToken","storeSession","promise","locks","err","onRefreshError","deleteStoredSession","listStoredSessions","TokenRefreshError","dpopKey","info","token","server","OAuthServerAgent","newToken","cause","OAuthResponseError","expires","session","isLegacyDpopKey","migrateLegacyDpopKey","migrated","createAuthorizationUrl","options","target","scope","state","reqs","resolved","resolveFromIdentifier","resolveFromService","identity","metadata","loginHint","sid","nanoid","pkce","generatePkce","dpopKey","generateDpopKey","params","REDIRECT_URI","database","response","OAuthServerAgent","authUrl","CLIENT_ID","finalizeAuthorization","issuer","code","error","LoginError","stored","AuthorizationError","server","info","token","sub","session","storeSession","OAuthUserAgent","#fetch","#getSessionPromise","session","createDPoPFetch","options","promise","getSession","sub","dpopKey","info","token","OAuthServerAgent","deleteStoredSession","pathname","init","headers","url","response","isInvalidTokenResponse","auth"],"sources":["../esm/npm/@atcute/oauth-browser-client@3.0.0/node_modules/@atcute/oauth-browser-client/lib/utils/runtime.ts","../esm/npm/@atcute/oauth-browser-client@3.0.0/node_modules/@atcute/oauth-browser-client/lib/store/db.ts","../esm/npm/@atcute/oauth-browser-client@3.0.0/node_modules/@atcute/oauth-browser-client/lib/environment.ts","../esm/npm/@atcute/oauth-browser-client@3.0.0/node_modules/@atcute/oauth-browser-client/lib/errors.ts","../esm/npm/@atcute/oauth-browser-client@3.0.0/node_modules/@atcute/oauth-browser-client/lib/agents/exchange.ts","../esm/npm/@atcute/oauth-browser-client@3.0.0/node_modules/@atcute/oauth-browser-client/lib/utils/response.ts","../esm/npm/@atcute/oauth-browser-client@3.0.0/node_modules/@atcute/oauth-browser-client/lib/utils/strings.ts","../esm/npm/@atcute/oauth-browser-client@3.0.0/node_modules/@atcute/oauth-browser-client/lib/resolvers.ts","../esm/npm/@atcute/oauth-browser-client@3.0.0/node_modules/@atcute/oauth-browser-client/lib/agents/server-agent.ts","../esm/npm/@atcute/oauth-browser-client@3.0.0/node_modules/@atcute/oauth-browser-client/lib/dpop.ts","../esm/npm/@atcute/oauth-browser-client@3.0.0/node_modules/@atcute/oauth-browser-client/lib/utils/misc.ts","../esm/npm/@atcute/oauth-browser-client@3.0.0/node_modules/@atcute/oauth-browser-client/lib/utils/dpop-key.ts","../esm/npm/@atcute/oauth-browser-client@3.0.0/node_modules/@atcute/oauth-browser-client/lib/agents/sessions.ts","../esm/npm/@atcute/oauth-browser-client@3.0.0/node_modules/@atcute/oauth-browser-client/lib/agents/user-agent.ts"],"sourcesContent":["export const locks: LockManager | undefined = typeof navigator !== 'undefined' ? navigator.locks : undefined;\n","import type { Did } from '@atcute/lexicons';\nimport type { DpopPrivateJwk } from '@atcute/oauth-crypto';\nimport type { OAuthAuthorizationServerMetadata } from '@atcute/oauth-types';\n\nimport type { SimpleStore } from '../types/store.js';\nimport type { RawSession } from '../types/token.js';\nimport { locks } from '../utils/runtime.js';\n\nexport interface OAuthDatabaseOptions {\n\tname: string;\n}\n\ninterface SchemaItem\u003cT\u003e {\n\tvalue: T;\n\texpiresAt: number | null;\n\tupdatedAt?: number;\n}\n\ninterface Schema {\n\tsessions: {\n\t\tkey: Did;\n\t\tvalue: RawSession;\n\t\tindexes: {\n\t\t\texpiresAt: number;\n\t\t};\n\t};\n\tstates: {\n\t\tkey: string;\n\t\tvalue: {\n\t\t\tdpopKey: DpopPrivateJwk;\n\t\t\tmetadata: OAuthAuthorizationServerMetadata;\n\t\t\tverifier?: string;\n\t\t\tstate?: unknown;\n\t\t};\n\t};\n\n\tdpopNonces: {\n\t\tkey: string;\n\t\tvalue: string;\n\t};\n}\n\nconst parse = (raw: string | null) =\u003e {\n\tif (raw != null) {\n\t\tconst parsed = JSON.parse(raw);\n\t\tif (parsed != null) {\n\t\t\treturn parsed;\n\t\t}\n\t}\n\n\treturn {};\n};\n\nexport type OAuthDatabase = ReturnType\u003ctypeof createOAuthDatabase\u003e;\n\nexport const createOAuthDatabase = ({ name }: OAuthDatabaseOptions) =\u003e {\n\tconst controller = new AbortController();\n\tconst signal = controller.signal;\n\n\tconst createStore = \u003cN extends keyof Schema\u003e(\n\t\tsubname: N,\n\t\texpiresAt: (item: Schema[N]['value']) =\u003e null | number,\n\t\tpersistUpdatedAt = false,\n\t): SimpleStore\u003cSchema[N]['key'], Schema[N]['value']\u003e =\u003e {\n\t\tlet store: any;\n\n\t\tconst storageKey = `${name}:${subname}`;\n\n\t\tconst persist = () =\u003e store \u0026\u0026 localStorage.setItem(storageKey, JSON.stringify(store));\n\t\tconst read = () =\u003e {\n\t\t\tif (signal.aborted) {\n\t\t\t\tthrow new Error(`store closed`);\n\t\t\t}\n\n\t\t\treturn (store ??= parse(localStorage.getItem(storageKey)));\n\t\t};\n\n\t\t{\n\t\t\tconst listener = (ev: StorageEvent) =\u003e {\n\t\t\t\tif (ev.key === storageKey) {\n\t\t\t\t\tstore = undefined;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tglobalThis.addEventListener('storage', listener, { signal });\n\t\t}\n\n\t\t{\n\t\t\tconst cleanup = async (lock: Lock | true | null) =\u003e {\n\t\t\t\tif (!lock || signal.aborted) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tawait new Promise((resolve) =\u003e setTimeout(resolve, 10_000));\n\t\t\t\tif (signal.aborted) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet now = Date.now();\n\t\t\t\tlet changed = false;\n\n\t\t\t\tread();\n\n\t\t\t\tfor (const key in store) {\n\t\t\t\t\tconst item = store[key];\n\t\t\t\t\tconst expiresAt = item.expiresAt;\n\n\t\t\t\t\tif (expiresAt !== null \u0026\u0026 now \u003e expiresAt) {\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\tdelete store[key];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (changed) {\n\t\t\t\t\tpersist();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tif (locks) {\n\t\t\t\tlocks.request(`${storageKey}:cleanup`, { ifAvailable: true }, cleanup);\n\t\t\t} else {\n\t\t\t\tcleanup(true);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tget(key) {\n\t\t\t\tread();\n\n\t\t\t\tconst item: SchemaItem\u003cSchema[N]['value']\u003e = store[key];\n\t\t\t\tif (!item) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst expiresAt = item.expiresAt;\n\t\t\t\tif (expiresAt !== null \u0026\u0026 Date.now() \u003e expiresAt) {\n\t\t\t\t\tdelete store[key];\n\t\t\t\t\tpersist();\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\treturn item.value;\n\t\t\t},\n\t\t\tgetWithLapsed(key) {\n\t\t\t\tread();\n\n\t\t\t\tconst item: SchemaItem\u003cSchema[N]['value']\u003e = store[key];\n\t\t\t\tconst now = Date.now();\n\t\t\t\tif (!item) {\n\t\t\t\t\treturn [undefined, Infinity];\n\t\t\t\t}\n\n\t\t\t\tconst updatedAt = item.updatedAt;\n\t\t\t\tif (updatedAt === undefined) {\n\t\t\t\t\treturn [item.value, Infinity];\n\t\t\t\t}\n\n\t\t\t\treturn [item.value, now - updatedAt];\n\t\t\t},\n\t\t\tset(key, value) {\n\t\t\t\tread();\n\n\t\t\t\tconst item: SchemaItem\u003cSchema[N]['value']\u003e = {\n\t\t\t\t\tvalue: value,\n\t\t\t\t\texpiresAt: expiresAt(value),\n\t\t\t\t\tupdatedAt: persistUpdatedAt ? Date.now() : undefined,\n\t\t\t\t};\n\n\t\t\t\tstore[key] = item;\n\t\t\t\tpersist();\n\t\t\t},\n\t\t\tdelete(key) {\n\t\t\t\tread();\n\n\t\t\t\tif (store[key] !== undefined) {\n\t\t\t\t\tdelete store[key];\n\t\t\t\t\tpersist();\n\t\t\t\t}\n\t\t\t},\n\t\t\tkeys() {\n\t\t\t\tread();\n\n\t\t\t\treturn Object.keys(store);\n\t\t\t},\n\t\t};\n\t};\n\n\treturn {\n\t\tdispose: () =\u003e {\n\t\t\tcontroller.abort();\n\t\t},\n\n\t\tsessions: createStore('sessions', ({ token }) =\u003e {\n\t\t\tif (token.refresh) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn token.expires_at ?? null;\n\t\t}),\n\t\tstates: createStore('states', (_item) =\u003e Date.now() + 10 * 60 * 1_000), // 10 minutes\n\n\t\t// The reference PDS have nonces that expire after 3 minutes, while other\n\t\t// implementations can have varying expiration times.\n\t\t// Stored for 24 hours.\n\t\tdpopNonces: createStore('dpopNonces', (_item) =\u003e Date.now() + 24 * 60 * 60 * 1_000, true),\n\t\tinflightDpop: new Map\u003cstring, PromiseWithResolvers\u003cvoid\u003e\u003e(),\n\t};\n};\n","import type { ActorResolver } from '@atcute/identity-resolver';\n\nimport { createOAuthDatabase, type OAuthDatabase } from './store/db.js';\nimport type { ClientAssertionFetcher } from './types/client-assertion.js';\n\nexport let CLIENT_ID: string;\nexport let REDIRECT_URI: string;\n\nexport let fetchClientAssertion: ClientAssertionFetcher | undefined;\n\nexport let database: OAuthDatabase;\n\nexport let identityResolver: ActorResolver;\n\nexport interface ConfigureOAuthOptions {\n\t/**\n\t * client metadata, necessary to drive the whole request\n\t */\n\tmetadata: {\n\t\tclient_id: string;\n\t\tredirect_uri: string;\n\t};\n\n\t/** resolves actor identifiers into identity metadata */\n\tidentityResolver: ActorResolver;\n\n\t/**\n\t * optional function to fetch DPoP-bound client assertions from your backend.\n\t */\n\tfetchClientAssertion?: ClientAssertionFetcher;\n\n\t/**\n\t * name that will be used as prefix for storage keys needed to persist authentication.\n\t * @default \"atcute-oauth\"\n\t */\n\tstorageName?: string;\n}\n\nexport const configureOAuth = (options: ConfigureOAuthOptions) =\u003e {\n\t({ identityResolver, fetchClientAssertion } = options);\n\t({ client_id: CLIENT_ID, redirect_uri: REDIRECT_URI } = options.metadata);\n\n\tdatabase = createOAuthDatabase({ name: options.storageName ?? 'atcute-oauth' });\n};\n","import type { Did } from '@atcute/lexicons';\n\nexport class LoginError extends Error {\n\toverride name = 'LoginError';\n}\n\nexport class AuthorizationError extends Error {\n\toverride name = 'AuthorizationError';\n}\n\nexport class ResolverError extends Error {\n\toverride name = 'ResolverError';\n}\n\nexport class TokenRefreshError extends Error {\n\toverride name = 'TokenRefreshError';\n\n\tconstructor(\n\t\tpublic readonly sub: Did,\n\t\tmessage: string,\n\t\toptions?: ErrorOptions,\n\t) {\n\t\tsuper(message, options);\n\t}\n}\n\nexport class OAuthResponseError extends Error {\n\toverride name = 'OAuthResponseError';\n\n\treadonly error: string | undefined;\n\treadonly description: string | undefined;\n\n\tconstructor(\n\t\tpublic readonly response: Response,\n\t\tpublic readonly data: any,\n\t) {\n\t\tconst error = ifString(ifObject(data)?.['error']);\n\t\tconst errorDescription = ifString(ifObject(data)?.['error_description']);\n\n\t\tconst messageError = error ? `\"${error}\"` : 'unknown';\n\t\tconst messageDesc = errorDescription ? `: ${errorDescription}` : '';\n\t\tconst message = `OAuth ${messageError} error${messageDesc}`;\n\n\t\tsuper(message);\n\n\t\tthis.error = error;\n\t\tthis.description = errorDescription;\n\t}\n\n\tget status() {\n\t\treturn this.response.status;\n\t}\n\n\tget headers() {\n\t\treturn this.response.headers;\n\t}\n}\n\nexport class FetchResponseError extends Error {\n\toverride name = 'FetchResponseError';\n\n\tconstructor(\n\t\tpublic readonly response: Response,\n\t\tpublic status: number,\n\t\tmessage: string,\n\t) {\n\t\tsuper(message);\n\t}\n}\n\nconst ifString = (v: unknown): string | undefined =\u003e {\n\treturn typeof v === 'string' ? v : undefined;\n};\nconst ifObject = (v: unknown): Record\u003cstring, unknown\u003e | undefined =\u003e {\n\treturn typeof v === 'object' \u0026\u0026 v !== null \u0026\u0026 !Array.isArray(v) ? (v as any) : undefined;\n};\n","import type { ResolvedActor } from '@atcute/identity-resolver';\nimport type { ActorIdentifier } from '@atcute/lexicons';\nimport { generateDpopKey, generatePkce } from '@atcute/oauth-crypto';\nimport type { OAuthAuthorizationServerMetadata, OAuthPrompt } from '@atcute/oauth-types';\n\nimport { nanoid } from 'nanoid';\n\nimport { CLIENT_ID, database, REDIRECT_URI } from '../environment.js';\nimport { AuthorizationError, LoginError } from '../errors.js';\nimport { resolveFromIdentifier, resolveFromService } from '../resolvers.js';\nimport type { Session } from '../types/token.js';\n\nimport { OAuthServerAgent } from './server-agent.js';\nimport { storeSession } from './sessions.js';\n\nexport type AuthorizeTargetOptions =\n\t| { type: 'account'; identifier: ActorIdentifier }\n\t| { type: 'pds'; serviceUrl: string };\n\nexport interface AuthorizeOptions {\n\ttarget: AuthorizeTargetOptions;\n\tscope: string;\n\tstate?: unknown;\n\tprompt?: OAuthPrompt | (string \u0026 {});\n\tdisplay?: 'page' | 'popup' | 'touch' | 'wap';\n\tlocale?: string;\n}\n\n/**\n * Create authentication URL for authorization\n * @param options\n * @returns URL to redirect the user for authorization\n */\nexport const createAuthorizationUrl = async (options: AuthorizeOptions): Promise\u003cURL\u003e =\u003e {\n\tconst { target, scope, state = null, ...reqs } = options;\n\n\tlet resolved: { identity?: ResolvedActor; metadata: OAuthAuthorizationServerMetadata };\n\tswitch (target.type) {\n\t\tcase 'account': {\n\t\t\tresolved = await resolveFromIdentifier(target.identifier);\n\t\t\tbreak;\n\t\t}\n\t\tcase 'pds': {\n\t\t\tresolved = await resolveFromService(target.serviceUrl);\n\t\t}\n\t}\n\n\tconst { identity, metadata } = resolved;\n\tconst loginHint = identity\n\t\t? identity.handle !== 'handle.invalid'\n\t\t\t? identity.handle\n\t\t\t: identity.did\n\t\t: undefined;\n\n\tconst sid = nanoid(24);\n\n\tconst pkce = await generatePkce();\n\tconst dpopKey = await generateDpopKey(['ES256']);\n\n\tconst params = {\n\t\tdisplay: reqs.display,\n\t\tui_locales: reqs.locale,\n\t\tprompt: reqs.prompt,\n\n\t\tredirect_uri: REDIRECT_URI,\n\t\tcode_challenge: pkce.challenge,\n\t\tcode_challenge_method: pkce.method,\n\t\tstate: sid,\n\t\tlogin_hint: loginHint,\n\t\tresponse_mode: 'fragment',\n\t\tresponse_type: 'code',\n\t\tscope: scope,\n\t} satisfies Record\u003cstring, string | undefined\u003e;\n\n\tdatabase.states.set(sid, {\n\t\tdpopKey: dpopKey,\n\t\tmetadata: metadata,\n\t\tverifier: pkce.verifier,\n\t\tstate: state,\n\t});\n\n\tconst server = new OAuthServerAgent(metadata, dpopKey);\n\tconst response = await server.request('pushed_authorization_request', params);\n\n\tconst authUrl = new URL(metadata.authorization_endpoint);\n\tauthUrl.searchParams.set('client_id', CLIENT_ID);\n\tauthUrl.searchParams.set('request_uri', response.request_uri);\n\n\treturn authUrl;\n};\n\n/**\n * Finalize authorization\n * @param params Search params\n * @returns Session object, which you can use to instantiate user agents\n */\nexport const finalizeAuthorization = async (params: URLSearchParams) =\u003e {\n\tconst issuer = params.get('iss');\n\tconst sid = params.get('state');\n\tconst code = params.get('code');\n\tconst error = params.get('error');\n\n\tif (!sid || !(code || error)) {\n\t\tthrow new LoginError(`missing parameters`);\n\t}\n\n\tconst stored = database.states.get(sid);\n\tif (stored) {\n\t\t// Delete now that we've caught it\n\t\tdatabase.states.delete(sid);\n\t} else {\n\t\tthrow new LoginError(`unknown state provided`);\n\t}\n\n\tif (error) {\n\t\tthrow new AuthorizationError(params.get('error_description') || error);\n\t}\n\tif (!code) {\n\t\tthrow new LoginError(`missing code parameter`);\n\t}\n\n\tconst dpopKey = stored.dpopKey;\n\tconst metadata = stored.metadata;\n\tconst state = stored.state ?? null;\n\n\tif (issuer === null) {\n\t\tthrow new LoginError(`missing issuer parameter`);\n\t} else if (issuer !== metadata.issuer) {\n\t\tthrow new LoginError(`issuer mismatch`);\n\t}\n\n\t// Retrieve authentication tokens\n\tconst server = new OAuthServerAgent(metadata, dpopKey);\n\tconst { info, token } = await server.exchangeCode(code, stored.verifier);\n\n\t// We're finished!\n\tconst sub = info.sub;\n\tconst session: Session = { dpopKey, info, token };\n\n\tawait storeSession(sub, session);\n\n\treturn { session, state };\n};\n","export const extractContentType = (headers: Headers): string | undefined =\u003e {\n\treturn headers.get('content-type')?.split(';')[0];\n};\n","const isUrlParseSupported = 'parse' in URL;\n\nexport const isValidUrl = (urlString: string): boolean =\u003e {\n\tlet url: URL | null = null;\n\tif (isUrlParseSupported) {\n\t\turl = URL.parse(urlString);\n\t} else {\n\t\ttry {\n\t\t\turl = new URL(urlString);\n\t\t} catch {}\n\t}\n\n\tif (url !== null) {\n\t\treturn url.protocol === 'https:' || url.protocol === 'http:';\n\t}\n\n\treturn false;\n};\n","import type { ResolvedActor } from '@atcute/identity-resolver';\nimport type { ActorIdentifier } from '@atcute/lexicons';\nimport type { OAuthAuthorizationServerMetadata, OAuthProtectedResourceMetadata } from '@atcute/oauth-types';\n\nimport { identityResolver } from './environment.js';\nimport { ResolverError } from './errors.js';\nimport { extractContentType } from './utils/response.js';\nimport { isValidUrl } from './utils/strings.js';\n\nexport const resolveFromIdentifier = async (\n\tident: ActorIdentifier,\n): Promise\u003c{ identity: ResolvedActor; metadata: OAuthAuthorizationServerMetadata }\u003e =\u003e {\n\tconst identity = await identityResolver.resolve(ident);\n\n\treturn {\n\t\tidentity: identity,\n\t\tmetadata: await getMetadataFromResourceServer(identity.pds),\n\t};\n};\n\nexport const resolveFromService = async (\n\thost: string,\n): Promise\u003c{ metadata: OAuthAuthorizationServerMetadata }\u003e =\u003e {\n\ttry {\n\t\tconst metadata = await getMetadataFromResourceServer(host);\n\t\treturn { metadata };\n\t} catch (err) {\n\t\tif (err instanceof ResolverError) {\n\t\t\ttry {\n\t\t\t\tconst metadata = await getOAuthAuthorizationServerMetadata(host);\n\t\t\t\treturn { metadata };\n\t\t\t} catch {}\n\t\t}\n\n\t\tthrow err;\n\t}\n};\n\nconst getOAuthProtectedResourceMetadata = async (host: string): Promise\u003cOAuthProtectedResourceMetadata\u003e =\u003e {\n\tconst url = new URL(`/.well-known/oauth-protected-resource`, host);\n\tconst response = await fetch(url.href, {\n\t\tredirect: 'manual',\n\t\theaders: {\n\t\t\taccept: 'application/json',\n\t\t},\n\t});\n\n\tif (response.status !== 200 || extractContentType(response.headers) !== 'application/json') {\n\t\tthrow new ResolverError(`unexpected response`);\n\t}\n\n\tconst metadata = (await response.json()) as OAuthProtectedResourceMetadata;\n\tif (metadata.resource !== url.origin) {\n\t\tthrow new ResolverError(`unexpected issuer`);\n\t}\n\n\treturn metadata;\n};\n\nconst getOAuthAuthorizationServerMetadata = async (\n\thost: string,\n): Promise\u003cOAuthAuthorizationServerMetadata\u003e =\u003e {\n\tconst url = new URL(`/.well-known/oauth-authorization-server`, host);\n\tconst response = await fetch(url.href, {\n\t\tredirect: 'manual',\n\t\theaders: {\n\t\t\taccept: 'application/json',\n\t\t},\n\t});\n\n\tif (response.status !== 200 || extractContentType(response.headers) !== 'application/json') {\n\t\tthrow new ResolverError(`unexpected response`);\n\t}\n\n\tconst metadata = (await response.json()) as OAuthAuthorizationServerMetadata;\n\tif (metadata.issuer !== url.origin) {\n\t\tthrow new ResolverError(`unexpected issuer`);\n\t}\n\tif (!isValidUrl(metadata.authorization_endpoint)) {\n\t\tthrow new ResolverError(`authorization server provided incorrect authorization endpoint`);\n\t}\n\tif (!metadata.client_id_metadata_document_supported) {\n\t\tthrow new ResolverError(`authorization server does not support 'client_id_metadata_document'`);\n\t}\n\tif (!metadata.pushed_authorization_request_endpoint) {\n\t\tthrow new ResolverError(`authorization server does not support 'pushed_authorization request'`);\n\t}\n\tif (metadata.response_types_supported) {\n\t\tif (!metadata.response_types_supported.includes('code')) {\n\t\t\tthrow new ResolverError(`authorization server does not support 'code' response type`);\n\t\t}\n\t}\n\n\treturn metadata;\n};\n\nconst getMetadataFromResourceServer = async (input: string) =\u003e {\n\tconst rs_metadata = await getOAuthProtectedResourceMetadata(input);\n\n\tif (rs_metadata.authorization_servers?.length !== 1) {\n\t\tthrow new ResolverError(`expected exactly one authorization server in the listing`);\n\t}\n\n\tconst issuer = rs_metadata.authorization_servers[0];\n\n\tconst as_metadata = await getOAuthAuthorizationServerMetadata(issuer);\n\n\tif (as_metadata.protected_resources) {\n\t\tif (!as_metadata.protected_resources.includes(rs_metadata.resource)) {\n\t\t\tthrow new ResolverError(`server is not in authorization server's jurisdiction`);\n\t\t}\n\t}\n\n\treturn as_metadata;\n};\n","import type { Did } from '@atcute/lexicons';\nimport { createDpopProofSigner, type DpopPrivateJwk } from '@atcute/oauth-crypto';\nimport type { AtprotoOAuthTokenResponse, OAuthParResponse } from '@atcute/oauth-types';\n\nimport { createDPoPFetch } from '../dpop.js';\nimport { CLIENT_ID, fetchClientAssertion, REDIRECT_URI } from '../environment.js';\nimport { FetchResponseError, OAuthResponseError, TokenRefreshError } from '../errors.js';\nimport { resolveFromIdentifier } from '../resolvers.js';\nimport type { PersistedAuthorizationServerMetadata } from '../types/server.js';\nimport type { ExchangeInfo, TokenInfo } from '../types/token.js';\nimport { pick } from '../utils/misc.js';\nimport { extractContentType } from '../utils/response.js';\n\nexport class OAuthServerAgent {\n\t#fetch: typeof fetch;\n\t#metadata: PersistedAuthorizationServerMetadata;\n\t#dpopKey: DpopPrivateJwk;\n\n\tconstructor(metadata: PersistedAuthorizationServerMetadata, dpopKey: DpopPrivateJwk) {\n\t\tthis.#metadata = metadata;\n\t\tthis.#dpopKey = dpopKey;\n\t\tthis.#fetch = createDPoPFetch(dpopKey, true);\n\t}\n\n\tasync request(\n\t\tendpoint: 'pushed_authorization_request',\n\t\tpayload: Record\u003cstring, unknown\u003e,\n\t): Promise\u003cOAuthParResponse\u003e;\n\tasync request(endpoint: 'token', payload: Record\u003cstring, unknown\u003e): Promise\u003cAtprotoOAuthTokenResponse\u003e;\n\tasync request(endpoint: 'revocation', payload: Record\u003cstring, unknown\u003e): Promise\u003cany\u003e;\n\tasync request(endpoint: 'introspection', payload: Record\u003cstring, unknown\u003e): Promise\u003cany\u003e;\n\tasync request(endpoint: string, payload: Record\u003cstring, unknown\u003e): Promise\u003cany\u003e {\n\t\tconst url: string | undefined = (this.#metadata as any)[`${endpoint}_endpoint`];\n\t\tif (!url) {\n\t\t\tthrow new Error(`no endpoint for ${endpoint}`);\n\t\t}\n\n\t\tif (\n\t\t\t(endpoint === 'token' || endpoint === 'pushed_authorization_request') \u0026\u0026\n\t\t\tfetchClientAssertion !== undefined\n\t\t) {\n\t\t\tconst sign = createDpopProofSigner(this.#dpopKey);\n\n\t\t\tconst assertion = await fetchClientAssertion({\n\t\t\t\taud: this.#metadata.issuer,\n\t\t\t\tcreateDpopProof: async (url, nonce) =\u003e {\n\t\t\t\t\treturn await sign('POST', url, nonce, undefined);\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tpayload = { ...payload, ...assertion };\n\t\t}\n\n\t\tconst response = await this.#fetch(url, {\n\t\t\tmethod: 'post',\n\t\t\theaders: { 'content-type': 'application/json' },\n\t\t\tbody: JSON.stringify({ ...payload, client_id: CLIENT_ID }),\n\t\t});\n\n\t\tif (extractContentType(response.headers) !== 'application/json') {\n\t\t\tthrow new FetchResponseError(response, 2, `unexpected content-type`);\n\t\t}\n\n\t\tconst json = await response.json();\n\n\t\tif (response.ok) {\n\t\t\treturn json;\n\t\t} else {\n\t\t\tthrow new OAuthResponseError(response, json);\n\t\t}\n\t}\n\n\tasync revoke(token: string): Promise\u003cvoid\u003e {\n\t\ttry {\n\t\t\tawait this.request('revocation', { token: token });\n\t\t} catch {}\n\t}\n\n\tasync exchangeCode(code: string, verifier?: string): Promise\u003c{ info: ExchangeInfo; token: TokenInfo }\u003e {\n\t\tconst response = await this.request('token', {\n\t\t\tgrant_type: 'authorization_code',\n\t\t\tredirect_uri: REDIRECT_URI,\n\t\t\tcode: code,\n\t\t\tcode_verifier: verifier,\n\t\t});\n\n\t\ttry {\n\t\t\treturn await this.#processExchangeResponse(response);\n\t\t} catch (err) {\n\t\t\tawait this.revoke(response.access_token);\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\tasync refresh({ sub, token }: { sub: Did; token: TokenInfo }): Promise\u003cTokenInfo\u003e {\n\t\tif (!token.refresh) {\n\t\t\tthrow new TokenRefreshError(sub, 'no refresh token available');\n\t\t}\n\n\t\tconst response = await this.request('token', {\n\t\t\tgrant_type: 'refresh_token',\n\t\t\trefresh_token: token.refresh,\n\t\t});\n\n\t\ttry {\n\t\t\tif (sub !== response.sub) {\n\t\t\t\tthrow new TokenRefreshError(sub, `sub mismatch in token response; got ${response.sub}`);\n\t\t\t}\n\n\t\t\treturn this.#processTokenResponse(response);\n\t\t} catch (err) {\n\t\t\tawait this.revoke(response.access_token);\n\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\t#processTokenResponse(res: AtprotoOAuthTokenResponse): TokenInfo {\n\t\tif (!res.sub) {\n\t\t\tthrow new TypeError(`missing sub field in token response`);\n\t\t}\n\t\tif (!res.scope) {\n\t\t\tthrow new TypeError(`missing scope field in token response`);\n\t\t}\n\t\tif (res.token_type !== 'DPoP') {\n\t\t\tthrow new TypeError(`token response returned a non-dpop token`);\n\t\t}\n\n\t\treturn {\n\t\t\tscope: res.scope,\n\t\t\trefresh: res.refresh_token,\n\t\t\taccess: res.access_token,\n\t\t\ttype: res.token_type,\n\t\t\texpires_at: typeof res.expires_in === 'number' ? Date.now() + res.expires_in * 1_000 : undefined,\n\t\t};\n\t}\n\n\tasync #processExchangeResponse(\n\t\tres: AtprotoOAuthTokenResponse,\n\t): Promise\u003c{ info: ExchangeInfo; token: TokenInfo }\u003e {\n\t\tconst sub = res.sub;\n\t\tif (!sub) {\n\t\t\tthrow new TypeError(`missing sub field in token response`);\n\t\t}\n\n\t\tconst token = this.#processTokenResponse(res);\n\t\tconst resolved = await resolveFromIdentifier(sub as Did);\n\n\t\tif (resolved.metadata.issuer !== this.#metadata.issuer) {\n\t\t\tthrow new TypeError(`issuer mismatch; got ${resolved.metadata.issuer}`);\n\t\t}\n\n\t\treturn {\n\t\t\ttoken: token,\n\t\t\tinfo: {\n\t\t\t\tsub: sub as Did,\n\t\t\t\taud: resolved.identity.pds,\n\t\t\t\tserver: pick(resolved.metadata, [\n\t\t\t\t\t'issuer',\n\t\t\t\t\t'authorization_endpoint',\n\t\t\t\t\t'introspection_endpoint',\n\t\t\t\t\t'pushed_authorization_request_endpoint',\n\t\t\t\t\t'revocation_endpoint',\n\t\t\t\t\t'token_endpoint',\n\t\t\t\t]),\n\t\t\t},\n\t\t};\n\t}\n}\n","import { createDpopProofSigner, sha256Base64Url, type DpopPrivateJwk } from '@atcute/oauth-crypto';\n\nimport { database } from './environment.js';\nimport { extractContentType } from './utils/response.js';\n\nexport const createDPoPFetch = (dpopKey: DpopPrivateJwk, isAuthServer?: boolean): typeof fetch =\u003e {\n\tconst nonces = database.dpopNonces;\n\tconst pending = database.inflightDpop;\n\n\tconst sign = createDpopProofSigner(dpopKey);\n\n\treturn async (input, init) =\u003e {\n\t\tconst request = new Request(input, init);\n\n\t\tconst authorizationHeader = request.headers.get('authorization');\n\t\tconst ath = authorizationHeader?.startsWith('DPoP ')\n\t\t\t? await sha256Base64Url(authorizationHeader.slice(5))\n\t\t\t: undefined;\n\n\t\tconst { method, url } = request;\n\t\tconst { origin, pathname } = new URL(url);\n\n\t\tconst htu = origin + pathname;\n\n\t\tlet deferred = pending.get(origin);\n\t\tif (deferred) {\n\t\t\tawait deferred.promise;\n\t\t\tdeferred = undefined;\n\t\t}\n\n\t\tlet initNonce: string | undefined;\n\t\tlet expiredOrMissing = false;\n\t\ttry {\n\t\t\tconst [nonce, lapsed] = nonces.getWithLapsed(origin);\n\n\t\t\tinitNonce = nonce;\n\t\t\texpiredOrMissing = lapsed \u003e 3 * 60 * 1_000;\n\t\t} catch {\n\t\t\t// ignore read errors\n\t\t}\n\n\t\tif (expiredOrMissing) {\n\t\t\tpending.set(origin, (deferred = Promise.withResolvers()));\n\t\t}\n\n\t\tlet nextNonce: string | null;\n\t\ttry {\n\t\t\tconst initProof = await sign(method, htu, initNonce, ath);\n\t\t\trequest.headers.set('dpop', initProof);\n\n\t\t\tconst initResponse = await fetch(request);\n\n\t\t\tnextNonce = initResponse.headers.get('dpop-nonce');\n\t\t\tif (nextNonce === null || nextNonce === initNonce) {\n\t\t\t\treturn initResponse;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tnonces.set(origin, nextNonce);\n\t\t\t} catch {\n\t\t\t\t// ignore write errors\n\t\t\t}\n\n\t\t\tconst shouldRetry = await isUseDpopNonceError(initResponse, isAuthServer);\n\t\t\tif (!shouldRetry) {\n\t\t\t\treturn initResponse;\n\t\t\t}\n\n\t\t\tif (input === request || init?.body instanceof ReadableStream) {\n\t\t\t\treturn initResponse;\n\t\t\t}\n\t\t} finally {\n\t\t\tif (deferred) {\n\t\t\t\tpending.delete(origin);\n\t\t\t\tdeferred.resolve();\n\t\t\t}\n\t\t}\n\n\t\t{\n\t\t\tconst nextProof = await sign(method, htu, nextNonce, ath);\n\t\t\tconst nextRequest = new Request(input, init);\n\t\t\tnextRequest.headers.set('dpop', nextProof);\n\n\t\t\tconst retryResponse = await fetch(nextRequest);\n\n\t\t\tconst retryNonce = retryResponse.headers.get('dpop-nonce');\n\t\t\tif (retryNonce !== null \u0026\u0026 retryNonce !== nextNonce) {\n\t\t\t\ttry {\n\t\t\t\t\tnonces.set(origin, retryNonce);\n\t\t\t\t} catch {\n\t\t\t\t\t// ignore write errors\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn retryResponse;\n\t\t}\n\t};\n};\n\nconst isUseDpopNonceError = async (response: Response, isAuthServer?: boolean): Promise\u003cboolean\u003e =\u003e {\n\tif (isAuthServer === undefined || isAuthServer === false) {\n\t\tif (response.status === 401) {\n\t\t\tconst wwwAuth = response.headers.get('www-authenticate');\n\t\t\tif (wwwAuth?.startsWith('DPoP')) {\n\t\t\t\treturn wwwAuth.includes('error=\"use_dpop_nonce\"');\n\t\t\t}\n\t\t}\n\t}\n\n\tif (isAuthServer === undefined || isAuthServer === true) {\n\t\tif (response.status === 400 \u0026\u0026 extractContentType(response.headers) === 'application/json') {\n\t\t\ttry {\n\t\t\t\tconst json = await response.clone().json();\n\t\t\t\treturn typeof json === 'object' \u0026\u0026 json?.['error'] === 'use_dpop_nonce';\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false;\n};\n","type UnwrapArray\u003cT\u003e = T extends (infer V)[] ? V : never;\n\nexport const pick = \u003cT, K extends (keyof T)[]\u003e(obj: T, keys: K): Pick\u003cT, UnwrapArray\u003cK\u003e\u003e =\u003e {\n\tconst cloned = {};\n\n\tfor (let idx = 0, len = keys.length; idx \u003c len; idx++) {\n\t\tconst key = keys[idx];\n\n\t\t// @ts-expect-error\n\t\tcloned[key] = obj[key];\n\t}\n\n\treturn cloned as Pick\u003cT, UnwrapArray\u003cK\u003e\u003e;\n};\n","import { fromBase64Url } from '@atcute/multibase';\nimport type { DpopPrivateJwk } from '@atcute/oauth-crypto';\n\nexport interface LegacyDpopKey {\n\ttyp: 'ES256';\n\tkey: string;\n\tjwt: string;\n\tjkt?: string;\n}\n\nconst ES256_ALG = { name: 'ECDSA', namedCurve: 'P-256' } as const;\n\nexport const isLegacyDpopKey = (key: DpopPrivateJwk | LegacyDpopKey): key is LegacyDpopKey =\u003e {\n\treturn typeof (key as LegacyDpopKey).key === 'string' \u0026\u0026 typeof (key as LegacyDpopKey).jwt === 'string';\n};\n\nexport const migrateLegacyDpopKey = async (key: LegacyDpopKey): Promise\u003cDpopPrivateJwk\u003e =\u003e {\n\tconst pkcs8 = fromBase64Url(key.key);\n\tconst cryptoKey = await crypto.subtle.importKey('pkcs8', pkcs8, ES256_ALG, true, ['sign']);\n\tconst jwk = (await crypto.subtle.exportKey('jwk', cryptoKey)) as DpopPrivateJwk;\n\tjwk.alg = 'ES256';\n\n\treturn jwk;\n};\n","import type { Did } from '@atcute/lexicons';\n\nimport { database } from '../environment.js';\nimport { OAuthResponseError, TokenRefreshError } from '../errors.js';\nimport type { RawSession, Session } from '../types/token.js';\nimport { isLegacyDpopKey, migrateLegacyDpopKey } from '../utils/dpop-key.js';\nimport { locks } from '../utils/runtime.js';\n\nimport { OAuthServerAgent } from './server-agent.js';\n\nexport interface SessionGetOptions {\n\tsignal?: AbortSignal;\n\tnoCache?: boolean;\n\tallowStale?: boolean;\n}\n\ntype PendingItem\u003cV\u003e = Promise\u003c{ value: V; isFresh: boolean }\u003e;\nconst pending = new Map\u003cDid, Promise\u003cPendingItem\u003cSession\u003e\u003e\u003e();\n\nexport const getSession = async (sub: Did, options?: SessionGetOptions): Promise\u003cSession\u003e =\u003e {\n\toptions?.signal?.throwIfAborted();\n\n\tlet allowStored = isTokenUsable;\n\tif (options?.noCache) {\n\t\tallowStored = returnFalse;\n\t} else if (options?.allowStale) {\n\t\tallowStored = returnTrue;\n\t}\n\n\t// As long as concurrent requests are made for the same key, only one\n\t// request will be made to the cache \u0026 getter function at a time. This works\n\t// because there is no async operation between the while() loop and the\n\t// pending.set() call. Because of the \"single threaded\" nature of\n\t// JavaScript, the pending item will be set before the next iteration of the\n\t// while loop.\n\tlet previousExecutionFlow: Promise\u003cPendingItem\u003cSession\u003e\u003e | undefined;\n\twhile ((previousExecutionFlow = pending.get(sub))) {\n\t\ttry {\n\t\t\tconst { isFresh, value } = await previousExecutionFlow;\n\n\t\t\tif (isFresh || allowStored(value)) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t} catch {\n\t\t\t// Ignore errors from previous execution flows (they will have been\n\t\t\t// propagated by that flow).\n\t\t}\n\n\t\toptions?.signal?.throwIfAborted();\n\t}\n\n\tconst run = async (): Promise\u003cPendingItem\u003cSession\u003e\u003e =\u003e {\n\t\tconst storedSession = await migrateSessionIfNeeded(sub, database.sessions.get(sub));\n\n\t\tif (storedSession \u0026\u0026 allowStored(storedSession)) {\n\t\t\t// Use the stored value as return value for the current execution\n\t\t\t// flow. Notify other concurrent execution flows (that should be\n\t\t\t// \"stuck\" in the loop before until this promise resolves) that we got\n\t\t\t// a value, but that it came from the store (isFresh = false).\n\t\t\treturn { isFresh: false, value: storedSession };\n\t\t}\n\n\t\tconst newSession = await refreshToken(sub, storedSession);\n\n\t\tawait storeSession(sub, newSession);\n\t\treturn { isFresh: true, value: newSession };\n\t};\n\n\tlet promise: Promise\u003cPendingItem\u003cSession\u003e\u003e;\n\n\tif (locks) {\n\t\tpromise = locks.request\u003cPendingItem\u003cSession\u003e\u003e(`atcute-oauth:${sub}`, run as any);\n\t} else {\n\t\tpromise = run();\n\t}\n\n\tpromise = promise.finally(() =\u003e pending.delete(sub));\n\n\tif (pending.has(sub)) {\n\t\t// This should never happen. Indeed, there must not be any 'await'\n\t\t// statement between this and the loop iteration check meaning that\n\t\t// this.pending.get returned undefined. It is there to catch bugs that\n\t\t// would occur in future changes to the code.\n\t\tthrow new Error('concurrent request for the same key');\n\t}\n\n\tpending.set(sub, promise);\n\n\tconst { value } = await promise;\n\treturn value;\n};\n\nexport const storeSession = async (sub: Did, newSession: Session): Promise\u003cvoid\u003e =\u003e {\n\ttry {\n\t\tdatabase.sessions.set(sub, newSession);\n\t} catch (err) {\n\t\tawait onRefreshError(newSession);\n\t\tthrow err;\n\t}\n};\n\nexport const deleteStoredSession = (sub: Did): void =\u003e {\n\tdatabase.sessions.delete(sub);\n};\n\nexport const listStoredSessions = (): Did[] =\u003e {\n\treturn database.sessions.keys();\n};\n\nconst returnTrue = () =\u003e true;\nconst returnFalse = () =\u003e false;\n\nconst refreshToken = async (sub: Did, storedSession: Session | undefined): Promise\u003cSession\u003e =\u003e {\n\tif (storedSession === undefined) {\n\t\tthrow new TokenRefreshError(sub, `session deleted by another tab`);\n\t}\n\n\tconst { dpopKey, info, token } = storedSession;\n\tconst server = new OAuthServerAgent(info.server, dpopKey);\n\n\ttry {\n\t\tconst newToken = await server.refresh({ sub: info.sub, token });\n\n\t\treturn { dpopKey, info, token: newToken };\n\t} catch (cause) {\n\t\tif (cause instanceof OAuthResponseError \u0026\u0026 cause.status === 400 \u0026\u0026 cause.error === 'invalid_grant') {\n\t\t\tthrow new TokenRefreshError(sub, `session was revoked`, { cause });\n\t\t}\n\n\t\tthrow cause;\n\t}\n};\n\nconst onRefreshError = async ({ dpopKey, info, token }: Session) =\u003e {\n\t// If the token data cannot be stored, let's revoke it\n\tconst server = new OAuthServerAgent(info.server, dpopKey);\n\tawait server.revoke(token.refresh ?? token.access);\n};\n\nconst isTokenUsable = ({ token }: Session): boolean =\u003e {\n\tconst expires = token.expires_at;\n\treturn expires == null || Date.now() + 60_000 \u003c= expires;\n};\n\nconst migrateSessionIfNeeded = async (\n\tsub: Did,\n\tsession: RawSession | undefined,\n): Promise\u003cSession | undefined\u003e =\u003e {\n\tif (!session || !isLegacyDpopKey(session.dpopKey)) {\n\t\treturn session as Session | undefined;\n\t}\n\n\tconst dpopKey = await migrateLegacyDpopKey(session.dpopKey);\n\tconst migrated = { ...session, dpopKey };\n\n\ttry {\n\t\tdatabase.sessions.set(sub, migrated);\n\t} catch {\n\t\t// ignore persistence errors\n\t}\n\n\treturn migrated;\n};\n","import type { FetchHandlerObject } from '@atcute/client';\nimport type { Did } from '@atcute/lexicons';\n\nimport { createDPoPFetch } from '../dpop.js';\nimport type { Session } from '../types/token.js';\n\nimport { OAuthServerAgent } from './server-agent.js';\nimport { type SessionGetOptions, deleteStoredSession, getSession } from './sessions.js';\n\nexport class OAuthUserAgent implements FetchHandlerObject {\n\t#fetch: typeof fetch;\n\t#getSessionPromise: Promise\u003cSession\u003e | undefined;\n\n\tconstructor(public session: Session) {\n\t\tthis.#fetch = createDPoPFetch(session.dpopKey, false);\n\t}\n\n\tget sub(): Did {\n\t\treturn this.session.info.sub;\n\t}\n\n\tgetSession(options?: SessionGetOptions): Promise\u003cSession\u003e {\n\t\tconst promise = getSession(this.session.info.sub, options);\n\n\t\tpromise\n\t\t\t.then((session) =\u003e {\n\t\t\t\tthis.session = session;\n\t\t\t})\n\t\t\t.finally(() =\u003e {\n\t\t\t\tthis.#getSessionPromise = undefined;\n\t\t\t});\n\n\t\treturn (this.#getSessionPromise = promise);\n\t}\n\n\tasync signOut(): Promise\u003cvoid\u003e {\n\t\tconst sub = this.session.info.sub;\n\n\t\ttry {\n\t\t\tconst { dpopKey, info, token } = await getSession(sub, { allowStale: true });\n\t\t\tconst server = new OAuthServerAgent(info.server, dpopKey);\n\n\t\t\tawait server.revoke(token.refresh ?? token.access);\n\t\t} finally {\n\t\t\tdeleteStoredSession(sub);\n\t\t}\n\t}\n\n\tasync handle(pathname: string, init?: RequestInit): Promise\u003cResponse\u003e {\n\t\tawait this.#getSessionPromise;\n\n\t\tconst headers = new Headers(init?.headers);\n\n\t\tlet session = this.session;\n\t\tlet url = new URL(pathname, session.info.aud);\n\n\t\theaders.set('authorization', `${session.token.type} ${session.token.access}`);\n\n\t\tlet response = await this.#fetch(url.href, { ...init, headers });\n\t\tif (!isInvalidTokenResponse(response)) {\n\t\t\treturn response;\n\t\t}\n\n\t\ttry {\n\t\t\tif (this.#getSessionPromise) {\n\t\t\t\tsession = await this.#getSessionPromise;\n\t\t\t} else {\n\t\t\t\tsession = await this.getSession();\n\t\t\t}\n\t\t} catch {\n\t\t\treturn response;\n\t\t}\n\n\t\t// Stream already consumed, can't retry.\n\t\tif (init?.body instanceof ReadableStream) {\n\t\t\treturn response;\n\t\t}\n\n\t\turl = new URL(pathname, session.info.aud);\n\t\theaders.set('authorization', `${session.token.type} ${session.token.access}`);\n\n\t\treturn await this.#fetch(url.href, { ...init, headers });\n\t}\n}\n\nconst isInvalidTokenResponse = (response: Response) =\u003e {\n\tif (response.status !== 401) {\n\t\treturn false;\n\t}\n\n\tconst auth = response.headers.get('www-authenticate');\n\n\treturn (\n\t\tauth != null \u0026\u0026\n\t\t(auth.startsWith('Bearer ') || auth.startsWith('DPoP ')) \u0026\u0026\n\t\tauth.includes('error=\"invalid_token\"')\n\t);\n};\n"],"version":3}
-4
vendor/esm.sh/@atcute/oauth-crypto@0.1.0/es2022/oauth-crypto.mjs
··· 1 - /* esm.sh - @atcute/oauth-crypto@0.1.0 */ 2 - import{nanoid as st}from"../../../nanoid@5.1.7/es2022/nanoid.mjs";import{fromBase64Pad as Z,toBase64Pad as tt}from"../../multibase@1.2.0/es2022/multibase.mjs";var z={ES256:"SHA-256",ES384:"SHA-384",ES512:"SHA-512",PS256:"SHA-256",PS384:"SHA-384",PS512:"SHA-512",RS256:"SHA-256",RS384:"SHA-384",RS512:"SHA-512"},Q={ES256:"P-256",ES384:"P-384",ES512:"P-521",PS256:null,PS384:null,PS512:null,RS256:null,RS384:null,RS512:null},u=t=>z[t],O=t=>Q[t],J=t=>t.startsWith("ES")?{name:"ECDSA",hash:{name:u(t)}}:t.startsWith("PS")?{name:"RSA-PSS",hash:{name:u(t)},saltLength:X(u(t))}:{name:"RSASSA-PKCS1-v1_5"},v=(t,e)=>{if(t.startsWith("ES")){let r=e??O(t);if(!r)throw new Error(`unable to determine curve for ${t}`);return{name:"ECDSA",namedCurve:r}}return t.startsWith("PS")?{name:"RSA-PSS",hash:{name:u(t)}}:{name:"RSASSA-PKCS1-v1_5",hash:{name:u(t)}}},A=t=>{let e=O(t);if(e)return{name:"ECDSA",namedCurve:e};let r={name:u(t)};return{name:t.startsWith("PS")?"RSA-PSS":"RSASSA-PKCS1-v1_5",hash:r,modulusLength:2048,publicExponent:new Uint8Array([1,0,1])}},X=t=>{switch(t){case"SHA-256":return 32;case"SHA-384":return 48;case"SHA-512":return 64}};var et=["ES256","ES384","ES512","PS256","PS384","PS512","RS256","RS384","RS512"];var $=t=>et.includes(t);var K=(t,e,r)=>{if(t.kty==="EC"){let{crv:o,x:n,y:s}=t;return{kty:"EC",crv:o,x:n,y:s,kid:e,alg:r,use:"sig"}}if(t.kty==="RSA"){let{n:o,e:n}=t;return{kty:"RSA",n:o,e:n,kid:e,alg:r,use:"sig"}}throw new Error("unsupported key type")},B=async(t,e)=>{if(!("d"in t)||!t.d)throw new Error("expected a private key (missing 'd' parameter)");if(t.kty==="EC"&&!e.startsWith("ES"))throw new Error(`algorithm ${e} does not match ec key`);if(t.kty==="RSA"&&e.startsWith("ES"))throw new Error(`algorithm ${e} does not match rsa key`);let r=v(e,t.kty==="EC"?t.crv:void 0),o=await crypto.subtle.importKey("jwk",t,r,!0,["sign"]);if(!(o instanceof CryptoKey))throw new Error("expected asymmetric key, got symmetric");return o},d=async(t,e,r)=>{let o=await crypto.subtle.exportKey("jwk",t);return o.alg=e,r&&(o.kid=r),o},M=async(t,e)=>{let r=rt(t),o=v(e),n=await crypto.subtle.importKey("pkcs8",r,o,!0,["sign"]);if(!(n instanceof CryptoKey))throw new Error("expected asymmetric key, got symmetric");return n},j=async t=>{let e=await crypto.subtle.exportKey("pkcs8",t),r=new Uint8Array(e),o=tt(r);return["-----BEGIN PRIVATE KEY-----",...ot(o),"-----END PRIVATE KEY-----",""].join(` 3 - `)},rt=t=>{let e=t.match(/-----BEGIN PRIVATE KEY-----([\s\S]*?)-----END PRIVATE KEY-----/);if(!e)throw new Error("invalid pkcs8 pem");let r=e[1].replace(/\s+/g,""),o=Z(r);return o.buffer.slice(o.byteOffset,o.byteOffset+o.byteLength)},ot=t=>{let e=[];for(let r=0;r<t.length;r+=64)e.push(t.slice(r,r+64));return e};var D=new WeakMap,g=async t=>{let e=D.get(t);if(e)return e;let{alg:r}=t,o=await B(t,r),n=K(t,t.kid,r),s={cryptoKey:o,publicJwk:n};return D.set(t,s),s},S=(t,e)=>{let r=K(t,t.kid,t.alg);D.set(t,{cryptoKey:e,publicJwk:r})};import{fromBase64Url as G,toBase64Url as L}from"../../multibase@1.2.0/es2022/multibase.mjs";import{decodeUtf8From as nt,encodeUtf8 as N}from"../../uint8array@1.1.1/es2022/uint8array.mjs";var b=async t=>{let{header:e,payload:r,key:o,alg:n}=t,s={...e,alg:n},a=F(s),m=F(r),p=`${a}.${m}`,c=await crypto.subtle.sign(J(n),o,N(p)),f=L(new Uint8Array(c));return`${p}.${f}`},T=async(t,e)=>{let{key:r,alg:o,typ:n}=e,s=t.split(".");if(s.length!==3)throw new Error("invalid jwt format");let a=W(s[0]);if(a.alg!==o)throw new Error("invalid jwt alg");if(n&&a.typ!==n)throw new Error("invalid jwt typ");let m=W(s[1]),p=G(s[2]),c=`${s[0]}.${s[1]}`;if(!await crypto.subtle.verify(J(o),r,p,N(c)))throw new Error("invalid jwt signature");return m},F=t=>L(N(JSON.stringify(t))),W=t=>{let e=G(t);return JSON.parse(nt(e))};var it=async t=>{let{client_id:e,aud:r,jkt:o,key:n}=t,{kid:s,alg:a}=n,{cryptoKey:m}=await g(n),p=Math.floor(Date.now()/1e3),c=o?{jkt:o}:void 0;return b({header:{alg:a,kid:s},payload:{iss:e,sub:e,aud:r,jti:st(24),iat:p,exp:p+60,cnf:c},key:m,alg:a})};var at=async(t,e="ES256")=>{let r=await crypto.subtle.generateKey(A(e),!0,["sign","verify"]),o=await d(r.privateKey,e,t);return S(o,r.privateKey),o};var ct=async(t,e)=>{let{kid:r,alg:o}=e,n=await M(t,o),s=await d(n,o,r);return S(s,n),s};import{toBase64Url as pt}from"../../multibase@1.2.0/es2022/multibase.mjs";import{encodeUtf8 as mt,toSha256 as ft}from"../../uint8array@1.1.1/es2022/uint8array.mjs";var E=async t=>{let e=mt(t),r=await ft(e);return pt(r)};import{nanoid as yt}from"../../../nanoid@5.1.7/es2022/nanoid.mjs";var U=t=>{let e=t.alg,r;return async(o,n,s,a)=>{r||=g(t);let{cryptoKey:m,publicJwk:p}=await r,c=Math.floor(Date.now()/1e3);return b({header:{typ:"dpop+jwt",jwk:p},payload:{htm:o,htu:n,iat:c,jti:yt(24),nonce:s,ath:a},key:m,alg:e})}};var ht=t=>{let{key:e,nonces:r,supportedAlgs:o,isAuthServer:n,fetch:s=globalThis.fetch}=t;ut(e,o);let a=U(e);return async(m,p)=>{let c=p==null&&m instanceof Request?m:new Request(m,p),f=c.headers.get("Authorization"),w=f?.startsWith("DPoP ")?await E(f.slice(5)):void 0,{origin:P}=new URL(c.url),h=c.method,k=lt(c.url),R;try{R=await r.get(P)}catch{}let q=await a(h,k,R,w);c.headers.set("DPoP",q);let l=await s(c),x=l.headers.get("DPoP-Nonce");if(!x||x===R)return l;try{await r.set(P,x)}catch{}if(!await dt(l,n)||m===c||p?.body instanceof ReadableStream)return l;await l.body?.cancel();let Y=await a(h,k,x,w),I=new Request(m,p);I.headers.set("DPoP",Y);let _=await s(I),C=_.headers.get("DPoP-Nonce");if(C&&C!==x)try{await r.set(P,C)}catch{}return _}},lt=t=>{let e=t.indexOf("#"),r=t.indexOf("?"),o=e===-1?r:r===-1?e:Math.min(e,r);return o===-1?t:t.slice(0,o)},ut=(t,e)=>{let r=t.alg;if(e?.length){if(e.includes(r))return r;throw new Error(`DPoP key algorithm ${r} not supported by server: ${e.join(", ")}`)}return r},dt=async(t,e)=>{if((e===void 0||e===!1)&&t.status===401){let r=t.headers.get("WWW-Authenticate");if(r?.startsWith("DPoP"))return r.includes('error="use_dpop_nonce"')}if((e===void 0||e===!0)&&t.status===400)try{let r=await t.clone().json();return typeof r=="object"&&r?.error==="use_dpop_nonce"}catch{return!1}return!1};var V=["ES256","ES384","ES512","PS256","PS384","PS512","RS256","RS384","RS512"],gt=t=>[...t].sort((e,r)=>{let o=V.indexOf(e),n=V.indexOf(r);return o===-1&&n===-1?0:o===-1?1:n===-1?-1:o-n}),St=async t=>{let e=t?.filter($)??[];if(t?.length&&e.length===0)throw new Error("no supported algorithms provided");let r=e.length?gt(e):["ES256"],o=[];for(let n of r)try{let s=await crypto.subtle.generateKey(A(n),!0,["sign","verify"]),a=await d(s.privateKey,n);return S(a,s.privateKey),a}catch(s){o.push(s)}throw new AggregateError(o,`failed to generate DPoP key for any of: ${r.join(", ")}`)};import{fromBase64Url as vt}from"../../multibase@1.2.0/es2022/multibase.mjs";import{decodeUtf8From as Et}from"../../uint8array@1.1.1/es2022/uint8array.mjs";import*as i from"../../../@badrap/valita@0.4.6/es2022/valita.mjs";import{toBase64Url as wt}from"../../multibase@1.2.0/es2022/multibase.mjs";import{encodeUtf8 as Pt,toSha256 as xt}from"../../uint8array@1.1.1/es2022/uint8array.mjs";var H=async t=>{let e;if(t.kty==="EC"){let{crv:n,x:s,y:a}=t;e={crv:n,kty:t.kty,x:s,y:a}}else{let{e:n,n:s}=t;e={e:n,kty:t.kty,n:s}}let r=JSON.stringify(e),o=await xt(Pt(r));return wt(o)};var kt=i.union(i.object({kty:i.literal("EC"),crv:i.union(i.literal("P-256"),i.literal("P-384"),i.literal("P-521")),x:i.string(),y:i.string()}),i.object({kty:i.literal("RSA"),e:i.string(),n:i.string()})),At=i.object({typ:i.literal("dpop+jwt"),alg:i.string().assert(t=>t!=="none",'alg must not be "none"'),jwk:kt}),Kt=i.object({htm:i.string(),htu:i.string(),iat:i.number(),jti:i.string(),nonce:i.string().optional()}),y=class extends Error{code;constructor(e,r){super(e),this.code=r,this.name="DpopVerifyError"}},bt=async(t,e)=>{if(!t)throw new y("missing dpop header","missing");let{method:r,url:o,nonce:n,maxClockSkew:s=60}=e,a=t.split(".");if(a.length!==3)throw new y("invalid dpop proof format","invalid");let m;try{m=At.parse(Jt(a[0]),{mode:"passthrough"})}catch{throw new y("invalid dpop header","invalid")}let{jwk:p,alg:c}=m;if(!Ct(c))throw new y("unsupported dpop alg","invalid");let f;try{let h=await Rt(p,c),k=await T(t,{key:h,alg:c,typ:"dpop+jwt"});f=Kt.parse(k,{mode:"passthrough"})}catch(h){throw h instanceof i.ValitaError?new y("invalid dpop payload","invalid"):new y("dpop signature verification failed","invalid")}if(f.htm!==r)throw new y(`dpop htm mismatch: expected ${r}, got ${f.htm}`,"invalid");if(f.htu!==o)throw new y(`dpop htu mismatch: expected ${o}, got ${f.htu}`,"invalid");let w=Math.floor(Date.now()/1e3);if(f.iat>w+s)throw new y("dpop proof issued in the future","invalid");if(f.iat<w-s)throw new y("dpop proof expired","expired");if(n&&(!f.nonce||!await n.check(f.nonce)))throw new y("invalid or missing dpop nonce","nonce_required");let P=await H(p);return{claims:f,jwk:p,jkt:P}},Rt=async(t,e)=>{let r=v(e,t.kty==="EC"?t.crv:void 0),o=await crypto.subtle.importKey("jwk",t,r,!0,["verify"]);if(!(o instanceof CryptoKey))throw new Error("expected asymmetric key, got symmetric");return o},Ct=t=>t==="ES256"||t==="ES384"||t==="ES512"||t==="PS256"||t==="PS384"||t==="PS512"||t==="RS256"||t==="RS384"||t==="RS512",Jt=t=>{let e=vt(t);return JSON.parse(Et(e))};import{nanoid as Dt}from"../../../nanoid@5.1.7/es2022/nanoid.mjs";var Nt=async(t=64)=>{let e=Dt(t),r=await E(e);return{verifier:e,challenge:r,method:"S256"}};var Ut=async t=>{let{cryptoKey:e}=await g(t);return j(e)};export{y as DpopVerifyError,H as computeJktFromJwk,it as createClientAssertion,ht as createDpopFetch,U as createDpopProofSigner,K as derivePublicJwk,Ut as exportPkcs8PrivateKey,at as generateClientAssertionKey,St as generateDpopKey,Nt as generatePkce,ct as importClientAssertionPkcs8,E as sha256Base64Url,b as signJwt,bt as verifyDpopProof,T as verifyJwt}; 4 - //# sourceMappingURL=./oauth-crypto.mjs.map
-1
vendor/esm.sh/@atcute/oauth-crypto@0.1.0/es2022/oauth-crypto.mjs.map
··· 1 - {"mappings":"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","names":["nanoid","fromBase64Pad","toBase64Pad","HASH_BY_ALG","CURVE_BY_ALG","getHashName","alg","getNamedCurve","getSignAlgorithm","getHashLength","getImportAlgorithm","curve","namedCurve","getGenerateAlgorithm","hash","SIGNING_ALGORITHMS","isSigningAlgorithm","alg","SIGNING_ALGORITHMS","derivePublicJwk","privateJwk","kid","alg","crv","x","y","n","e","importPrivateKeyFromJwk","jwk","algorithm","getImportAlgorithm","key","exportPrivateJwkFromKey","importPkcs8PrivateKey","pem","bytes","parsePkcs8Pem","exportPkcs8PrivateKey","pkcs8","base64","toBase64Pad","chunk64","match","fromBase64Pad","input","chunks","i","keyCache","getCachedKeyMaterial","jwk","cached","alg","cryptoKey","importPrivateKeyFromJwk","publicJwk","derivePublicJwk","material","setCachedKeyMaterial","fromBase64Url","toBase64Url","decodeUtf8From","encodeUtf8","signJwt","params","header","payload","key","alg","fullHeader","headerSegment","encodeSegment","payloadSegment","signingInput","signature","getSignAlgorithm","encodeUtf8","signatureSegment","toBase64Url","verifyJwt","jwt","options","typ","parts","decodeSegment","fromBase64Url","value","bytes","decodeUtf8From","createClientAssertion","options","client_id","aud","jkt","key","kid","alg","cryptoKey","getCachedKeyMaterial","now","cnf","signJwt","nanoid","generateClientAssertionKey","kid","alg","pair","getGenerateAlgorithm","jwk","exportPrivateJwkFromKey","setCachedKeyMaterial","importClientAssertionPkcs8","pem","options","kid","alg","cryptoKey","importPkcs8PrivateKey","jwk","exportPrivateJwkFromKey","setCachedKeyMaterial","toBase64Url","encodeUtf8","toSha256","sha256Base64Url","input","bytes","digest","nanoid","createDpopProofSigner","jwk","alg","materialPromise","htm","htu","nonce","ath","getCachedKeyMaterial","cryptoKey","publicJwk","now","signJwt","nanoid","createDpopFetch","options","key","nonces","supportedAlgs","isAuthServer","fetch","negotiateAlg","sign","createDpopProofSigner","input","init","request","authHeader","ath","sha256Base64Url","origin","htm","htu","buildHtu","initNonce","initProof","initResponse","nextNonce","isUseDpopNonceError","nextProof","nextRequest","retryResponse","retryNonce","url","fragmentIdx","queryIdx","end","keyAlg","response","wwwAuth","json","PREFERRED_ALGORITHMS","sortAlgorithms","algs","a","b","aIdx","bIdx","generateDpopKey","supportedAlgs","normalized","isSigningAlgorithm","errors","alg","pair","getGenerateAlgorithm","jwk","exportPrivateJwkFromKey","setCachedKeyMaterial","err","fromBase64Url","decodeUtf8From","v","toBase64Url","encodeUtf8","toSha256","computeJktFromJwk","jwk","canonical","crv","x","y","e","n","serialized","hash","dpopJwkSchema","dpopHeaderSchema","alg","dpopPayloadSchema","DpopVerifyError","message","code","verifyDpopProof","dpopHeader","options","method","url","dpopNonce","maxClockSkew","parts","header","decodeSegment","jwk","isSigningAlgorithm","payload","key","importPublicKey","raw","verifyJwt","err","now","jkt","computeJktFromJwk","algorithm","getImportAlgorithm","segment","bytes","fromBase64Url","decodeUtf8From","nanoid","generatePkce","length","verifier","nanoid","challenge","sha256Base64Url","exportPkcs8PrivateKey","jwk","cryptoKey","getCachedKeyMaterial"],"sources":["../esm/npm/@atcute/oauth-crypto@0.1.0/node_modules/@atcute/oauth-crypto/lib/client-assertion/create-client-assertion.ts","../esm/npm/@atcute/oauth-crypto@0.1.0/node_modules/@atcute/oauth-crypto/lib/internal/jwk.ts","../esm/npm/@atcute/oauth-crypto@0.1.0/node_modules/@atcute/oauth-crypto/lib/internal/crypto.ts","../esm/npm/@atcute/oauth-crypto@0.1.0/node_modules/@atcute/oauth-crypto/lib/internal/key-cache.ts","../esm/npm/@atcute/oauth-crypto@0.1.0/node_modules/@atcute/oauth-crypto/lib/jwt/index.ts","../esm/npm/@atcute/oauth-crypto@0.1.0/node_modules/@atcute/oauth-crypto/lib/client-assertion/generate-key.ts","../esm/npm/@atcute/oauth-crypto@0.1.0/node_modules/@atcute/oauth-crypto/lib/client-assertion/keys.ts","../esm/npm/@atcute/oauth-crypto@0.1.0/node_modules/@atcute/oauth-crypto/lib/hash/sha256.ts","../esm/npm/@atcute/oauth-crypto@0.1.0/node_modules/@atcute/oauth-crypto/lib/dpop/proof.ts","../esm/npm/@atcute/oauth-crypto@0.1.0/node_modules/@atcute/oauth-crypto/lib/dpop/fetch.ts","../esm/npm/@atcute/oauth-crypto@0.1.0/node_modules/@atcute/oauth-crypto/lib/dpop/generate-key.ts","../esm/npm/@atcute/oauth-crypto@0.1.0/node_modules/@atcute/oauth-crypto/lib/dpop/verify.ts","../esm/npm/@atcute/oauth-crypto@0.1.0/node_modules/@atcute/oauth-crypto/lib/jwk/compute-jkt.ts","../esm/npm/@atcute/oauth-crypto@0.1.0/node_modules/@atcute/oauth-crypto/lib/hash/pkce.ts","../esm/npm/@atcute/oauth-crypto@0.1.0/node_modules/@atcute/oauth-crypto/lib/jwk/keys.ts"],"sourcesContent":["import { nanoid } from 'nanoid';\n\nimport { getCachedKeyMaterial } from '../internal/key-cache.js';\nimport { signJwt } from '../jwt/index.js';\n\nimport type { ClientAssertionPrivateJwk } from './types.js';\n\nexport interface CreateClientAssertionOptions {\n\t/** client id */\n\tclient_id: string;\n\t/** authorization server issuer */\n\taud: string;\n\t/** JWK thumbprint of the DPoP key to bind to (for CAB pattern) */\n\tjkt?: string;\n\t/** client assertion signing key */\n\tkey: ClientAssertionPrivateJwk;\n}\n\n/**\n * creates a DPoP-bound client assertion per RFC 7523.\n *\n * @param options creation options\n * @returns signed client assertion JWT\n */\nexport const createClientAssertion = async (options: CreateClientAssertionOptions): Promise\u003cstring\u003e =\u003e {\n\tconst { client_id, aud, jkt, key } = options;\n\tconst { kid, alg } = key;\n\tconst { cryptoKey } = await getCachedKeyMaterial(key);\n\n\tconst now = Math.floor(Date.now() / 1000);\n\tconst cnf = jkt ? { jkt } : undefined;\n\n\treturn signJwt({\n\t\theader: {\n\t\t\talg,\n\t\t\tkid,\n\t\t},\n\t\tpayload: {\n\t\t\tiss: client_id,\n\t\t\tsub: client_id,\n\t\t\taud: aud,\n\t\t\tjti: nanoid(24),\n\t\t\tiat: now,\n\t\t\texp: now + 60,\n\t\t\tcnf,\n\t\t},\n\t\tkey: cryptoKey,\n\t\talg,\n\t});\n};\n","import { fromBase64Pad, toBase64Pad } from '@atcute/multibase';\n\nimport type { PrivateJwk, PublicJwk, SigningAlgorithm } from '../jwk/types.js';\n\nimport { getImportAlgorithm } from './crypto.js';\n\nconst SIGNING_ALGORITHMS: readonly SigningAlgorithm[] = [\n\t'ES256',\n\t'ES384',\n\t'ES512',\n\t'PS256',\n\t'PS384',\n\t'PS512',\n\t'RS256',\n\t'RS384',\n\t'RS512',\n];\n\nconst CURVE_TO_ALG: Record\u003cstring, SigningAlgorithm\u003e = {\n\t'P-256': 'ES256',\n\t'P-384': 'ES384',\n\t'P-521': 'ES512',\n};\n\nexport const isSigningAlgorithm = (alg: string): alg is SigningAlgorithm =\u003e {\n\treturn (SIGNING_ALGORITHMS as readonly string[]).includes(alg);\n};\n\nexport const parsePrivateJwkInput = (input: PrivateJwk | string): PrivateJwk =\u003e {\n\tif (typeof input === 'string') {\n\t\ttry {\n\t\t\tconst jwk = JSON.parse(input) as PrivateJwk;\n\t\t\treturn jwk;\n\t\t} catch {\n\t\t\tthrow new Error(`invalid JSON string`);\n\t\t}\n\t}\n\n\tif (typeof input === 'object' \u0026\u0026 input !== null \u0026\u0026 'kty' in input) {\n\t\treturn input;\n\t}\n\n\tthrow new Error(`invalid input: expected JWK object or JSON string`);\n};\n\nexport const resolveSigningAlgorithm = (\n\tjwk: PrivateJwk,\n\toverride?: SigningAlgorithm,\n): SigningAlgorithm | undefined =\u003e {\n\tif (override) {\n\t\treturn override;\n\t}\n\n\tconst alg = jwk.alg;\n\tif (alg \u0026\u0026 isSigningAlgorithm(alg)) {\n\t\treturn alg;\n\t}\n\n\tif (jwk.kty === 'EC') {\n\t\tconst inferred = CURVE_TO_ALG[jwk.crv];\n\t\tif (inferred) {\n\t\t\treturn inferred;\n\t\t}\n\t}\n\n\treturn undefined;\n};\n\nexport const derivePublicJwk = (privateJwk: PrivateJwk, kid?: string, alg?: SigningAlgorithm): PublicJwk =\u003e {\n\tif (privateJwk.kty === 'EC') {\n\t\tconst { crv, x, y } = privateJwk;\n\t\treturn { kty: 'EC', crv, x, y, kid, alg, use: 'sig' };\n\t}\n\n\tif (privateJwk.kty === 'RSA') {\n\t\tconst { n, e } = privateJwk;\n\t\treturn { kty: 'RSA', n, e, kid, alg, use: 'sig' };\n\t}\n\n\tthrow new Error(`unsupported key type`);\n};\n\nexport const importPrivateKeyFromJwk = async (jwk: PrivateJwk, alg: SigningAlgorithm): Promise\u003cCryptoKey\u003e =\u003e {\n\tif (!('d' in jwk) || !jwk.d) {\n\t\tthrow new Error(`expected a private key (missing 'd' parameter)`);\n\t}\n\n\tif (jwk.kty === 'EC' \u0026\u0026 !alg.startsWith('ES')) {\n\t\tthrow new Error(`algorithm ${alg} does not match ec key`);\n\t}\n\tif (jwk.kty === 'RSA' \u0026\u0026 alg.startsWith('ES')) {\n\t\tthrow new Error(`algorithm ${alg} does not match rsa key`);\n\t}\n\n\tconst algorithm = getImportAlgorithm(alg, jwk.kty === 'EC' ? jwk.crv : undefined);\n\tconst key = await crypto.subtle.importKey('jwk', jwk, algorithm, true, ['sign']);\n\n\tif (!(key instanceof CryptoKey)) {\n\t\tthrow new Error(`expected asymmetric key, got symmetric`);\n\t}\n\n\treturn key;\n};\n\nexport const exportPrivateJwkFromKey = async (\n\tkey: CryptoKey,\n\talg: SigningAlgorithm,\n\tkid?: string,\n): Promise\u003cPrivateJwk\u003e =\u003e {\n\tconst jwk = (await crypto.subtle.exportKey('jwk', key)) as PrivateJwk;\n\tjwk.alg = alg;\n\tif (kid) {\n\t\tjwk.kid = kid;\n\t}\n\treturn jwk;\n};\n\nexport const importPkcs8PrivateKey = async (pem: string, alg: SigningAlgorithm): Promise\u003cCryptoKey\u003e =\u003e {\n\tconst bytes = parsePkcs8Pem(pem);\n\tconst algorithm = getImportAlgorithm(alg);\n\n\tconst key = await crypto.subtle.importKey('pkcs8', bytes, algorithm, true, ['sign']);\n\n\tif (!(key instanceof CryptoKey)) {\n\t\tthrow new Error(`expected asymmetric key, got symmetric`);\n\t}\n\n\treturn key;\n};\n\nexport const exportPkcs8PrivateKey = async (key: CryptoKey): Promise\u003cstring\u003e =\u003e {\n\tconst pkcs8 = await crypto.subtle.exportKey('pkcs8', key);\n\tconst bytes = new Uint8Array(pkcs8);\n\tconst base64 = toBase64Pad(bytes);\n\n\treturn ['-----BEGIN PRIVATE KEY-----', ...chunk64(base64), '-----END PRIVATE KEY-----', ''].join('\\n');\n};\n\nconst parsePkcs8Pem = (pem: string): ArrayBuffer =\u003e {\n\tconst match = pem.match(/-----BEGIN PRIVATE KEY-----([\\s\\S]*?)-----END PRIVATE KEY-----/);\n\tif (!match) {\n\t\tthrow new Error(`invalid pkcs8 pem`);\n\t}\n\n\tconst base64 = match[1].replace(/\\s+/g, '');\n\tconst bytes = fromBase64Pad(base64);\n\tconst buffer = bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);\n\treturn buffer;\n};\n\nconst chunk64 = (input: string): string[] =\u003e {\n\tconst chunks: string[] = [];\n\tfor (let i = 0; i \u003c input.length; i += 64) {\n\t\tchunks.push(input.slice(i, i + 64));\n\t}\n\treturn chunks;\n};\n","import type { SigningAlgorithm } from '../jwk/types.js';\n\nconst HASH_BY_ALG: Record\u003cSigningAlgorithm, 'SHA-256' | 'SHA-384' | 'SHA-512'\u003e = {\n\tES256: 'SHA-256',\n\tES384: 'SHA-384',\n\tES512: 'SHA-512',\n\tPS256: 'SHA-256',\n\tPS384: 'SHA-384',\n\tPS512: 'SHA-512',\n\tRS256: 'SHA-256',\n\tRS384: 'SHA-384',\n\tRS512: 'SHA-512',\n};\n\nconst CURVE_BY_ALG: Record\u003cSigningAlgorithm, 'P-256' | 'P-384' | 'P-521' | null\u003e = {\n\tES256: 'P-256',\n\tES384: 'P-384',\n\tES512: 'P-521',\n\tPS256: null,\n\tPS384: null,\n\tPS512: null,\n\tRS256: null,\n\tRS384: null,\n\tRS512: null,\n};\n\nexport const getHashName = (alg: SigningAlgorithm): 'SHA-256' | 'SHA-384' | 'SHA-512' =\u003e {\n\treturn HASH_BY_ALG[alg];\n};\n\nexport const getNamedCurve = (alg: SigningAlgorithm): 'P-256' | 'P-384' | 'P-521' | null =\u003e {\n\treturn CURVE_BY_ALG[alg];\n};\n\nexport const getSignAlgorithm = (alg: SigningAlgorithm): AlgorithmIdentifier | EcdsaParams | RsaPssParams =\u003e {\n\tif (alg.startsWith('ES')) {\n\t\treturn { name: 'ECDSA', hash: { name: getHashName(alg) } };\n\t}\n\tif (alg.startsWith('PS')) {\n\t\treturn {\n\t\t\tname: 'RSA-PSS',\n\t\t\thash: { name: getHashName(alg) },\n\t\t\tsaltLength: getHashLength(getHashName(alg)),\n\t\t};\n\t}\n\treturn { name: 'RSASSA-PKCS1-v1_5' };\n};\n\nexport const getImportAlgorithm = (\n\talg: SigningAlgorithm,\n\tcurve?: 'P-256' | 'P-384' | 'P-521',\n): EcKeyImportParams | RsaHashedImportParams =\u003e {\n\tif (alg.startsWith('ES')) {\n\t\tconst namedCurve = curve ?? getNamedCurve(alg);\n\t\tif (!namedCurve) {\n\t\t\tthrow new Error(`unable to determine curve for ${alg}`);\n\t\t}\n\t\treturn { name: 'ECDSA', namedCurve };\n\t}\n\n\tif (alg.startsWith('PS')) {\n\t\treturn { name: 'RSA-PSS', hash: { name: getHashName(alg) } };\n\t}\n\n\treturn { name: 'RSASSA-PKCS1-v1_5', hash: { name: getHashName(alg) } };\n};\n\nexport const getGenerateAlgorithm = (alg: SigningAlgorithm): EcKeyGenParams | RsaHashedKeyGenParams =\u003e {\n\tconst curve = getNamedCurve(alg);\n\tif (curve) {\n\t\treturn { name: 'ECDSA', namedCurve: curve };\n\t}\n\n\tconst hash = { name: getHashName(alg) };\n\treturn {\n\t\tname: alg.startsWith('PS') ? 'RSA-PSS' : 'RSASSA-PKCS1-v1_5',\n\t\thash,\n\t\tmodulusLength: 2048,\n\t\tpublicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n\t};\n};\n\nconst getHashLength = (hash: 'SHA-256' | 'SHA-384' | 'SHA-512'): number =\u003e {\n\tswitch (hash) {\n\t\tcase 'SHA-256':\n\t\t\treturn 32;\n\t\tcase 'SHA-384':\n\t\t\treturn 48;\n\t\tcase 'SHA-512':\n\t\t\treturn 64;\n\t}\n};\n","import type { PrivateJwk, PublicJwk } from '../jwk/types.js';\n\nimport { derivePublicJwk, importPrivateKeyFromJwk } from './jwk.js';\n\n/**\n * cached key material for a JWK.\n */\nexport interface CachedKeyMaterial {\n\tcryptoKey: CryptoKey;\n\tpublicJwk: PublicJwk;\n}\n\n/**\n * cache for imported keys.\n * uses WeakMap so entries are garbage collected when JWK objects are no longer referenced.\n */\nconst keyCache = new WeakMap\u003cPrivateJwk, CachedKeyMaterial\u003e();\n\n/**\n * retrieves or creates cached key material for a JWK.\n *\n * @param jwk private JWK to get material for\n * @returns cached key material (CryptoKey and derived public JWK)\n */\nexport const getCachedKeyMaterial = async (jwk: PrivateJwk): Promise\u003cCachedKeyMaterial\u003e =\u003e {\n\tconst cached = keyCache.get(jwk);\n\tif (cached) {\n\t\treturn cached;\n\t}\n\n\tconst { alg } = jwk;\n\tconst cryptoKey = await importPrivateKeyFromJwk(jwk, alg);\n\tconst publicJwk = derivePublicJwk(jwk, jwk.kid, alg);\n\tconst material: CachedKeyMaterial = { cryptoKey, publicJwk };\n\n\tkeyCache.set(jwk, material);\n\n\treturn material;\n};\n\n/**\n * pre-populates the cache with already-imported key material.\n * useful for PKCS8 imports where we already have the CryptoKey.\n *\n * @param jwk private JWK to cache for\n * @param cryptoKey already-imported CryptoKey\n */\nexport const setCachedKeyMaterial = (jwk: PrivateJwk, cryptoKey: CryptoKey): void =\u003e {\n\tconst publicJwk = derivePublicJwk(jwk, jwk.kid, jwk.alg);\n\tkeyCache.set(jwk, { cryptoKey, publicJwk });\n};\n","import { fromBase64Url, toBase64Url } from '@atcute/multibase';\nimport { decodeUtf8From, encodeUtf8 } from '@atcute/uint8array';\n\nimport { getSignAlgorithm } from '../internal/crypto.js';\nimport type { SigningAlgorithm } from '../jwk/types.js';\n\n/**\n * signs a jwt using webcrypto.\n *\n * @param params signing parameters\n * @returns signed jwt\n */\nexport const signJwt = async (params: {\n\theader: Record\u003cstring, unknown\u003e;\n\tpayload: Record\u003cstring, unknown\u003e;\n\tkey: CryptoKey;\n\talg: SigningAlgorithm;\n}): Promise\u003cstring\u003e =\u003e {\n\tconst { header, payload, key, alg } = params;\n\tconst fullHeader = { ...header, alg };\n\tconst headerSegment = encodeSegment(fullHeader);\n\tconst payloadSegment = encodeSegment(payload);\n\tconst signingInput = `${headerSegment}.${payloadSegment}`;\n\n\tconst signature = await crypto.subtle.sign(\n\t\tgetSignAlgorithm(alg),\n\t\tkey,\n\t\tencodeUtf8(signingInput) as Uint8Array\u003cArrayBuffer\u003e,\n\t);\n\n\tconst signatureSegment = toBase64Url(new Uint8Array(signature));\n\n\treturn `${signingInput}.${signatureSegment}`;\n};\n\n/**\n * verifies a jwt and returns its payload.\n *\n * @param jwt jwt string\n * @param options verification options\n * @returns decoded payload\n */\nexport const verifyJwt = async (\n\tjwt: string,\n\toptions: { key: CryptoKey; alg: SigningAlgorithm; typ?: string },\n): Promise\u003cRecord\u003cstring, unknown\u003e\u003e =\u003e {\n\tconst { key, alg, typ } = options;\n\tconst parts = jwt.split('.');\n\tif (parts.length !== 3) {\n\t\tthrow new Error(`invalid jwt format`);\n\t}\n\n\tconst header = decodeSegment\u003cRecord\u003cstring, unknown\u003e\u003e(parts[0]);\n\tif (header.alg !== alg) {\n\t\tthrow new Error(`invalid jwt alg`);\n\t}\n\tif (typ \u0026\u0026 header.typ !== typ) {\n\t\tthrow new Error(`invalid jwt typ`);\n\t}\n\n\tconst payload = decodeSegment\u003cRecord\u003cstring, unknown\u003e\u003e(parts[1]);\n\tconst signature = fromBase64Url(parts[2]);\n\tconst signingInput = `${parts[0]}.${parts[1]}`;\n\n\tconst ok = await crypto.subtle.verify(\n\t\tgetSignAlgorithm(alg),\n\t\tkey,\n\t\tsignature,\n\t\tencodeUtf8(signingInput) as Uint8Array\u003cArrayBuffer\u003e,\n\t);\n\n\tif (!ok) {\n\t\tthrow new Error(`invalid jwt signature`);\n\t}\n\n\treturn payload;\n};\n\nconst encodeSegment = (value: unknown): string =\u003e {\n\treturn toBase64Url(encodeUtf8(JSON.stringify(value)));\n};\n\nconst decodeSegment = \u003cT\u003e(value: string): T =\u003e {\n\tconst bytes = fromBase64Url(value);\n\treturn JSON.parse(decodeUtf8From(bytes)) as T;\n};\n","import { getGenerateAlgorithm } from '../internal/crypto.js';\nimport { exportPrivateJwkFromKey } from '../internal/jwk.js';\nimport { setCachedKeyMaterial } from '../internal/key-cache.js';\nimport type { SigningAlgorithm } from '../jwk/types.js';\n\nimport type { ClientAssertionPrivateJwk } from './types.js';\n\n/**\n * generates a new client assertion private key.\n *\n * @param kid key id to assign\n * @param alg signing algorithm (defaults to es256)\n * @returns client assertion private JWK (with cache pre-warmed)\n */\nexport const generateClientAssertionKey = async (\n\tkid: string,\n\talg: SigningAlgorithm = 'ES256',\n): Promise\u003cClientAssertionPrivateJwk\u003e =\u003e {\n\tconst pair = await crypto.subtle.generateKey(getGenerateAlgorithm(alg), true, ['sign', 'verify']);\n\tconst jwk = (await exportPrivateJwkFromKey(pair.privateKey, alg, kid)) as ClientAssertionPrivateJwk;\n\n\t// pre-populate cache so we don't re-import\n\tsetCachedKeyMaterial(jwk, pair.privateKey);\n\n\treturn jwk;\n};\n","import { exportPrivateJwkFromKey, importPkcs8PrivateKey } from '../internal/jwk.js';\nimport { setCachedKeyMaterial } from '../internal/key-cache.js';\nimport type { SigningAlgorithm } from '../jwk/types.js';\n\nimport type { ClientAssertionPrivateJwk } from './types.js';\n\n/**\n * imports a client assertion private key from a pkcs8 pem string.\n *\n * @param pem pkcs8 pem string\n * @param options import options (kid + alg)\n * @returns client assertion private JWK (with cache pre-warmed)\n */\nexport const importClientAssertionPkcs8 = async (\n\tpem: string,\n\toptions: { kid: string; alg: SigningAlgorithm },\n): Promise\u003cClientAssertionPrivateJwk\u003e =\u003e {\n\tconst { kid, alg } = options;\n\tconst cryptoKey = await importPkcs8PrivateKey(pem, alg);\n\tconst jwk = (await exportPrivateJwkFromKey(cryptoKey, alg, kid)) as ClientAssertionPrivateJwk;\n\n\t// pre-populate cache so we don't re-import\n\tsetCachedKeyMaterial(jwk, cryptoKey);\n\n\treturn jwk;\n};\n","import { toBase64Url } from '@atcute/multibase';\nimport { encodeUtf8, toSha256 } from '@atcute/uint8array';\n\n/**\n * computes sha-256 hash and returns base64url-encoded result.\n *\n * @param input string to hash\n * @returns base64url-encoded sha-256 hash\n */\nexport const sha256Base64Url = async (input: string): Promise\u003cstring\u003e =\u003e {\n\tconst bytes = encodeUtf8(input);\n\tconst digest = await toSha256(bytes);\n\treturn toBase64Url(digest);\n};\n","import { nanoid } from 'nanoid';\n\nimport type { CachedKeyMaterial } from '../internal/key-cache.js';\nimport { getCachedKeyMaterial } from '../internal/key-cache.js';\nimport { signJwt } from '../jwt/index.js';\n\nimport type { DpopPrivateJwk } from './types.js';\n\n/**\n * creates a DPoP proof signer.\n *\n * @param jwk DPoP private JWK (with `alg` set)\n * @returns signing function for DPoP proofs\n */\nexport const createDpopProofSigner = (\n\tjwk: DpopPrivateJwk,\n): ((htm: string, htu: string, nonce?: string, ath?: string) =\u003e Promise\u003cstring\u003e) =\u003e {\n\tconst alg = jwk.alg;\n\n\t// lazily resolve key material on first sign\n\tlet materialPromise: Promise\u003cCachedKeyMaterial\u003e | undefined;\n\n\treturn async (htm: string, htu: string, nonce?: string, ath?: string) =\u003e {\n\t\tmaterialPromise ||= getCachedKeyMaterial(jwk);\n\t\tconst { cryptoKey, publicJwk } = await materialPromise;\n\n\t\tconst now = Math.floor(Date.now() / 1_000);\n\n\t\treturn signJwt({\n\t\t\theader: {\n\t\t\t\ttyp: 'dpop+jwt',\n\t\t\t\tjwk: publicJwk,\n\t\t\t},\n\t\t\tpayload: {\n\t\t\t\thtm,\n\t\t\t\thtu,\n\t\t\t\tiat: now,\n\t\t\t\tjti: nanoid(24),\n\t\t\t\tnonce,\n\t\t\t\tath,\n\t\t\t},\n\t\t\tkey: cryptoKey,\n\t\t\talg,\n\t\t});\n\t};\n};\n","import { sha256Base64Url } from '../hash/sha256.js';\n\nimport { createDpopProofSigner } from './proof.js';\nimport type { DpopPrivateJwk, DpopNonceCache } from './types.js';\n\nexport interface CreateDpopFetchOptions {\n\t/** DPoP private key (JWK with `alg` set) */\n\tkey: DpopPrivateJwk;\n\t/** nonce store, keyed by origin */\n\tnonces: DpopNonceCache;\n\t/** server's supported DPoP signing algorithms */\n\tsupportedAlgs?: readonly string[];\n\t/**\n\t * is the target an authorization server (true) or resource server (false)?\n\t * affects how `use_dpop_nonce` errors are detected.\n\t */\n\tisAuthServer?: boolean;\n\t/** custom fetch implementation */\n\tfetch?: typeof globalThis.fetch;\n}\n\n/**\n * creates a fetch wrapper that adds DPoP proofs to requests.\n *\n * @param options DPoP configuration\n * @returns fetch function with DPoP support\n */\nexport const createDpopFetch = (options: CreateDpopFetchOptions): typeof globalThis.fetch =\u003e {\n\tconst { key, nonces, supportedAlgs, isAuthServer, fetch = globalThis.fetch } = options;\n\n\tnegotiateAlg(key, supportedAlgs);\n\tconst sign = createDpopProofSigner(key);\n\n\treturn async (input, init) =\u003e {\n\t\tconst request: Request = init == null \u0026\u0026 input instanceof Request ? input : new Request(input, init);\n\n\t\tconst authHeader = request.headers.get('Authorization');\n\t\tconst ath = authHeader?.startsWith('DPoP ') ? await sha256Base64Url(authHeader.slice(5)) : undefined;\n\n\t\tconst { origin } = new URL(request.url);\n\t\tconst htm = request.method;\n\t\tconst htu = buildHtu(request.url);\n\n\t\tlet initNonce: string | undefined;\n\t\ttry {\n\t\t\tinitNonce = await nonces.get(origin);\n\t\t} catch {\n\t\t\t// ignore get errors\n\t\t}\n\n\t\tconst initProof = await sign(htm, htu, initNonce, ath);\n\t\trequest.headers.set('DPoP', initProof);\n\n\t\tconst initResponse = await fetch(request);\n\n\t\tconst nextNonce = initResponse.headers.get('DPoP-Nonce');\n\t\tif (!nextNonce || nextNonce === initNonce) {\n\t\t\treturn initResponse;\n\t\t}\n\n\t\ttry {\n\t\t\tawait nonces.set(origin, nextNonce);\n\t\t} catch {\n\t\t\t// ignore set errors\n\t\t}\n\n\t\tconst shouldRetry = await isUseDpopNonceError(initResponse, isAuthServer);\n\t\tif (!shouldRetry) {\n\t\t\treturn initResponse;\n\t\t}\n\n\t\tif (input === request || init?.body instanceof ReadableStream) {\n\t\t\treturn initResponse;\n\t\t}\n\n\t\tawait initResponse.body?.cancel();\n\n\t\tconst nextProof = await sign(htm, htu, nextNonce, ath);\n\t\tconst nextRequest = new Request(input, init);\n\t\tnextRequest.headers.set('DPoP', nextProof);\n\n\t\tconst retryResponse = await fetch(nextRequest);\n\n\t\tconst retryNonce = retryResponse.headers.get('DPoP-Nonce');\n\t\tif (retryNonce \u0026\u0026 retryNonce !== nextNonce) {\n\t\t\ttry {\n\t\t\t\tawait nonces.set(origin, retryNonce);\n\t\t\t} catch {\n\t\t\t\t// ignore set errors\n\t\t\t}\n\t\t}\n\n\t\treturn retryResponse;\n\t};\n};\n\nconst buildHtu = (url: string): string =\u003e {\n\tconst fragmentIdx = url.indexOf('#');\n\tconst queryIdx = url.indexOf('?');\n\tconst end = fragmentIdx === -1 ? queryIdx : queryIdx === -1 ? fragmentIdx : Math.min(fragmentIdx, queryIdx);\n\n\treturn end === -1 ? url : url.slice(0, end);\n};\n\nconst negotiateAlg = (key: DpopPrivateJwk, supportedAlgs?: readonly string[]): string =\u003e {\n\tconst keyAlg = key.alg;\n\n\tif (supportedAlgs?.length) {\n\t\tif (supportedAlgs.includes(keyAlg)) {\n\t\t\treturn keyAlg;\n\t\t}\n\t\tthrow new Error(`DPoP key algorithm ${keyAlg} not supported by server: ${supportedAlgs.join(', ')}`);\n\t}\n\n\treturn keyAlg;\n};\n\nconst isUseDpopNonceError = async (response: Response, isAuthServer?: boolean): Promise\u003cboolean\u003e =\u003e {\n\tif (isAuthServer === undefined || isAuthServer === false) {\n\t\tif (response.status === 401) {\n\t\t\tconst wwwAuth = response.headers.get('WWW-Authenticate');\n\t\t\tif (wwwAuth?.startsWith('DPoP')) {\n\t\t\t\treturn wwwAuth.includes('error=\"use_dpop_nonce\"');\n\t\t\t}\n\t\t}\n\t}\n\n\tif (isAuthServer === undefined || isAuthServer === true) {\n\t\tif (response.status === 400) {\n\t\t\ttry {\n\t\t\t\tconst json = await response.clone().json();\n\t\t\t\treturn typeof json === 'object' \u0026\u0026 json?.error === 'use_dpop_nonce';\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false;\n};\n","import { getGenerateAlgorithm } from '../internal/crypto.js';\nimport { exportPrivateJwkFromKey, isSigningAlgorithm } from '../internal/jwk.js';\nimport { setCachedKeyMaterial } from '../internal/key-cache.js';\nimport type { SigningAlgorithm } from '../jwk/types.js';\n\nimport type { DpopPrivateJwk } from './types.js';\n\n/**\n * preferred algorithm order for DPoP key generation.\n */\nconst PREFERRED_ALGORITHMS: readonly SigningAlgorithm[] = [\n\t'ES256',\n\t'ES384',\n\t'ES512',\n\t'PS256',\n\t'PS384',\n\t'PS512',\n\t'RS256',\n\t'RS384',\n\t'RS512',\n];\n\nconst sortAlgorithms = (algs: readonly SigningAlgorithm[]): SigningAlgorithm[] =\u003e {\n\treturn [...algs].sort((a, b) =\u003e {\n\t\tconst aIdx = PREFERRED_ALGORITHMS.indexOf(a);\n\t\tconst bIdx = PREFERRED_ALGORITHMS.indexOf(b);\n\n\t\tif (aIdx === -1 \u0026\u0026 bIdx === -1) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (aIdx === -1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (bIdx === -1) {\n\t\t\treturn -1;\n\t\t}\n\n\t\treturn aIdx - bIdx;\n\t});\n};\n\n/**\n * generates a new DPoP private JWK with `alg` set.\n *\n * @param supportedAlgs server supported algorithms (optional)\n * @returns private JWK (with cache pre-warmed)\n */\nexport const generateDpopKey = async (supportedAlgs?: readonly string[]): Promise\u003cDpopPrivateJwk\u003e =\u003e {\n\tconst normalized = supportedAlgs?.filter(isSigningAlgorithm) ?? [];\n\tif (supportedAlgs?.length \u0026\u0026 normalized.length === 0) {\n\t\tthrow new Error(`no supported algorithms provided`);\n\t}\n\n\tconst algs: SigningAlgorithm[] = normalized.length ? sortAlgorithms(normalized) : ['ES256'];\n\tconst errors: unknown[] = [];\n\n\tfor (const alg of algs) {\n\t\ttry {\n\t\t\tconst pair = await crypto.subtle.generateKey(getGenerateAlgorithm(alg), true, ['sign', 'verify']);\n\t\t\tconst jwk = (await exportPrivateJwkFromKey(pair.privateKey, alg)) as DpopPrivateJwk;\n\n\t\t\t// pre-populate cache so we don't re-import\n\t\t\tsetCachedKeyMaterial(jwk, pair.privateKey);\n\n\t\t\treturn jwk;\n\t\t} catch (err) {\n\t\t\terrors.push(err);\n\t\t}\n\t}\n\n\tthrow new AggregateError(errors, `failed to generate DPoP key for any of: ${algs.join(', ')}`);\n};\n","import { fromBase64Url } from '@atcute/multibase';\nimport { decodeUtf8From } from '@atcute/uint8array';\n\nimport * as v from '@badrap/valita';\n\nimport { getImportAlgorithm } from '../internal/crypto.js';\nimport { computeJktFromJwk } from '../jwk/compute-jkt.js';\nimport type { PublicJwk, SigningAlgorithm } from '../jwk/types.js';\nimport { verifyJwt } from '../jwt/index.js';\n\nimport type { Awaitable } from './types.js';\n\nconst dpopJwkSchema = v.union(\n\tv.object({\n\t\tkty: v.literal('EC'),\n\t\tcrv: v.union(v.literal('P-256'), v.literal('P-384'), v.literal('P-521')),\n\t\tx: v.string(),\n\t\ty: v.string(),\n\t}),\n\tv.object({\n\t\tkty: v.literal('RSA'),\n\t\te: v.string(),\n\t\tn: v.string(),\n\t}),\n);\n\nconst dpopHeaderSchema = v.object({\n\ttyp: v.literal('dpop+jwt'),\n\talg: v.string().assert((alg) =\u003e alg !== 'none', 'alg must not be \"none\"'),\n\tjwk: dpopJwkSchema,\n});\n\nconst dpopPayloadSchema = v.object({\n\thtm: v.string(),\n\thtu: v.string(),\n\tiat: v.number(),\n\tjti: v.string(),\n\tnonce: v.string().optional(),\n});\n\nexport type DpopClaims = v.Infer\u003ctypeof dpopPayloadSchema\u003e;\ntype DpopJwk = v.Infer\u003ctypeof dpopJwkSchema\u003e;\n\nexport interface DpopVerifyResult {\n\tclaims: DpopClaims;\n\tjkt: string;\n\tjwk: PublicJwk;\n}\n\nexport interface DpopVerifyOptions {\n\tmethod: string;\n\turl: string;\n\tnonce?: { check(nonce: string): Awaitable\u003cboolean\u003e };\n\tmaxClockSkew?: number;\n}\n\n/**\n * error thrown when dpop verification fails.\n */\nexport class DpopVerifyError extends Error {\n\tconstructor(\n\t\tmessage: string,\n\t\tpublic code: 'missing' | 'invalid' | 'expired' | 'nonce_required',\n\t) {\n\t\tsuper(message);\n\t\tthis.name = 'DpopVerifyError';\n\t}\n}\n\n/**\n * verifies a dpop proof from a request header.\n *\n * @param dpopHeader dpop header value\n * @param options verification options\n * @returns verification result with claims and jwk thumbprint\n * @throws {DpopVerifyError} if verification fails\n */\nexport const verifyDpopProof = async (\n\tdpopHeader: string | null | undefined,\n\toptions: DpopVerifyOptions,\n): Promise\u003cDpopVerifyResult\u003e =\u003e {\n\tif (!dpopHeader) {\n\t\tthrow new DpopVerifyError(`missing dpop header`, 'missing');\n\t}\n\n\tconst { method, url, nonce: dpopNonce, maxClockSkew = 60 } = options;\n\tconst parts = dpopHeader.split('.');\n\tif (parts.length !== 3) {\n\t\tthrow new DpopVerifyError(`invalid dpop proof format`, 'invalid');\n\t}\n\n\tlet header: v.Infer\u003ctypeof dpopHeaderSchema\u003e;\n\ttry {\n\t\theader = dpopHeaderSchema.parse(decodeSegment(parts[0]), { mode: 'passthrough' });\n\t} catch {\n\t\tthrow new DpopVerifyError(`invalid dpop header`, 'invalid');\n\t}\n\n\tconst { jwk, alg } = header;\n\tif (!isSigningAlgorithm(alg)) {\n\t\tthrow new DpopVerifyError(`unsupported dpop alg`, 'invalid');\n\t}\n\n\tlet payload: DpopClaims;\n\ttry {\n\t\tconst key = await importPublicKey(jwk, alg);\n\t\tconst raw = await verifyJwt(dpopHeader, { key, alg, typ: 'dpop+jwt' });\n\t\tpayload = dpopPayloadSchema.parse(raw, { mode: 'passthrough' });\n\t} catch (err) {\n\t\tif (err instanceof v.ValitaError) {\n\t\t\tthrow new DpopVerifyError(`invalid dpop payload`, 'invalid');\n\t\t}\n\t\tthrow new DpopVerifyError(`dpop signature verification failed`, 'invalid');\n\t}\n\n\tif (payload.htm !== method) {\n\t\tthrow new DpopVerifyError(`dpop htm mismatch: expected ${method}, got ${payload.htm}`, 'invalid');\n\t}\n\tif (payload.htu !== url) {\n\t\tthrow new DpopVerifyError(`dpop htu mismatch: expected ${url}, got ${payload.htu}`, 'invalid');\n\t}\n\n\tconst now = Math.floor(Date.now() / 1000);\n\tif (payload.iat \u003e now + maxClockSkew) {\n\t\tthrow new DpopVerifyError(`dpop proof issued in the future`, 'invalid');\n\t}\n\tif (payload.iat \u003c now - maxClockSkew) {\n\t\tthrow new DpopVerifyError(`dpop proof expired`, 'expired');\n\t}\n\n\tif (dpopNonce) {\n\t\tif (!payload.nonce || !(await dpopNonce.check(payload.nonce))) {\n\t\t\tthrow new DpopVerifyError(`invalid or missing dpop nonce`, 'nonce_required');\n\t\t}\n\t}\n\n\tconst jkt = await computeJktFromJwk(jwk as PublicJwk);\n\n\treturn { claims: payload, jwk: jwk as DpopJwk, jkt };\n};\n\nconst importPublicKey = async (jwk: PublicJwk, alg: SigningAlgorithm): Promise\u003cCryptoKey\u003e =\u003e {\n\tconst algorithm = getImportAlgorithm(alg, jwk.kty === 'EC' ? jwk.crv : undefined);\n\tconst key = await crypto.subtle.importKey('jwk', jwk, algorithm, true, ['verify']);\n\tif (!(key instanceof CryptoKey)) {\n\t\tthrow new Error(`expected asymmetric key, got symmetric`);\n\t}\n\n\treturn key;\n};\n\nconst isSigningAlgorithm = (alg: string): alg is SigningAlgorithm =\u003e {\n\treturn (\n\t\talg === 'ES256' ||\n\t\talg === 'ES384' ||\n\t\talg === 'ES512' ||\n\t\talg === 'PS256' ||\n\t\talg === 'PS384' ||\n\t\talg === 'PS512' ||\n\t\talg === 'RS256' ||\n\t\talg === 'RS384' ||\n\t\talg === 'RS512'\n\t);\n};\n\nconst decodeSegment = (segment: string): unknown =\u003e {\n\tconst bytes = fromBase64Url(segment);\n\treturn JSON.parse(decodeUtf8From(bytes));\n};\n","import { toBase64Url } from '@atcute/multibase';\nimport { encodeUtf8, toSha256 } from '@atcute/uint8array';\n\nimport type { PublicJwk } from './types.js';\n\n/**\n * computes the jwk thumbprint (rfc 7638) for a public key.\n *\n * @param jwk public jwk\n * @returns base64url-encoded sha-256 thumbprint\n */\nexport const computeJktFromJwk = async (jwk: PublicJwk): Promise\u003cstring\u003e =\u003e {\n\tlet canonical: Record\u003cstring, string\u003e;\n\n\tif (jwk.kty === 'EC') {\n\t\tconst { crv, x, y } = jwk;\n\t\tcanonical = { crv, kty: jwk.kty, x, y };\n\t} else {\n\t\tconst { e, n } = jwk;\n\t\tcanonical = { e, kty: jwk.kty, n };\n\t}\n\n\tconst serialized = JSON.stringify(canonical);\n\tconst hash = await toSha256(encodeUtf8(serialized));\n\n\treturn toBase64Url(hash);\n};\n","import { nanoid } from 'nanoid';\n\nimport { sha256Base64Url } from './sha256.js';\n\n/**\n * generates pkce verifier and challenge (s256).\n *\n * @param length verifier length (43-128 per rfc 7636)\n * @returns pkce values\n */\nexport const generatePkce = async (\n\tlength = 64,\n): Promise\u003c{ verifier: string; challenge: string; method: 'S256' }\u003e =\u003e {\n\tconst verifier = nanoid(length);\n\tconst challenge = await sha256Base64Url(verifier);\n\n\treturn { verifier, challenge, method: 'S256' };\n};\n","import { exportPkcs8PrivateKey as exportPkcs8 } from '../internal/jwk.js';\nimport { getCachedKeyMaterial } from '../internal/key-cache.js';\n\nimport type { PrivateJwk } from './types.js';\n\n/**\n * exports a private JWK to PKCS8 PEM format.\n *\n * @param jwk private JWK to export\n * @returns PKCS8 PEM string\n */\nexport const exportPkcs8PrivateKey = async (jwk: PrivateJwk): Promise\u003cstring\u003e =\u003e {\n\tconst { cryptoKey } = await getCachedKeyMaterial(jwk);\n\treturn exportPkcs8(cryptoKey);\n};\n"],"version":3}
-3
vendor/esm.sh/@atcute/uint8array@1.1.1/es2022/uint8array.mjs
··· 1 - /* esm.sh - @atcute/uint8array@1.1.1 */ 2 - var E=new TextEncoder,S=new TextDecoder,I=crypto.subtle,j=n=>new Uint8Array(n),D=j,L=(n,e)=>{let t=n.length,u=e.length;if(t>u)return 1;if(t<u)return-1;for(let r=0;r<t;r++){let c=n[r],o=e[r];if(c<o)return-1;if(c>o)return 1}return 0},R=(n,e)=>{if(n===e)return!0;let t;if((t=n.length)===e.length){for(;t--;)if(n[t]!==e[t])return!1}return t===-1},T=(n,e)=>{let t,u=0;if((t=n.length)===e.length)for(;t--;)u|=n[t]^e[t];return t===-1&&u===0},_=(n,e)=>{let t=0,u=n.length,r;if(e===void 0)for(r=e=0;r<u;r++){let o=n[r];e+=o.length}let c=new Uint8Array(e);for(r=0;r<u;r++){let o=n[r];c.set(o,t),t+=o.length}return c},B=n=>E.encode(n),F=(n,e,t,u)=>{let r;return t===void 0?r=n:u===void 0?r=n.subarray(t):r=n.subarray(t,t+u),E.encodeInto(e,r).written},s=String.fromCharCode,q=(n,e,t)=>{if(t<4){if(t<2){if(t===0)return"";let k=n[e];return k&128?null:s(k)}let l=n[e],x=n[e+1];if((l|x)&128)return null;if(t===2)return s(l,x);let h=n[e+2];return h&128?null:s(l,x,h)}let u=n[e],r=n[e+1],c=n[e+2],o=n[e+3];if((u|r|c|o)&128)return null;if(t<8){if(t===4)return s(u,r,c,o);let l=n[e+4];if(l&128)return null;if(t===5)return s(u,r,c,o,l);let x=n[e+5];if(x&128)return null;if(t===6)return s(u,r,c,o,l,x);let h=n[e+6];return h&128?null:s(u,r,c,o,l,x,h)}let i=n[e+4],f=n[e+5],d=n[e+6],a=n[e+7];if((i|f|d|a)&128)return null;if(t<12){if(t===8)return s(u,r,c,o,i,f,d,a);let l=n[e+8];if(l&128)return null;if(t===9)return s(u,r,c,o,i,f,d,a,l);let x=n[e+9];if(x&128)return null;if(t===10)return s(u,r,c,o,i,f,d,a,l,x);let h=n[e+10];return h&128?null:s(u,r,c,o,i,f,d,a,l,x,h)}let w=n[e+8],b=n[e+9],A=n[e+10],C=n[e+11];if((w|b|A|C)&128)return null;if(t===12)return s(u,r,c,o,i,f,d,a,w,b,A,C);let U=n[e+12];if(U&128)return null;if(t===13)return s(u,r,c,o,i,f,d,a,w,b,A,C,U);let y=n[e+13];if(y&128)return null;if(t===14)return s(u,r,c,o,i,f,d,a,w,b,A,C,U,y);let g=n[e+14];return g&128?null:s(u,r,c,o,i,f,d,a,w,b,A,C,U,y,g)},H=(n,e=0,t=n.length)=>{if(t<=15){let u=q(n,e,t);if(u!==null)return u}return e===0&&t===n.length?S.decode(n):S.decode(n.subarray(e,e+t))},V=n=>{let e=n.length,t=0,u=0;for(;t+3<e;){let r=n.charCodeAt(t),c=n.charCodeAt(t+1),o=n.charCodeAt(t+2),i=n.charCodeAt(t+3);if((r|c|o|i)>=128)break;t+=4,u+=4}for(;t<e;){let r=n.charCodeAt(t);r<128?(t+=1,u+=1):r<2048?(t+=1,u+=2):r<55296||r>56319?(t+=1,u+=3):(t+=2,u+=4)}return u},v=(n,e,t)=>{let u=n.length;if(u*3<e)return!1;if(u>=e&&u*3<=t)return!0;let r=0,c=0;for(;r<u;){let o=n.charCodeAt(r);if(o<128?(r+=1,c+=1):o<2048?(r+=1,c+=2):o<55296||o>56319?(r+=1,c+=3):(r+=2,c+=4),c>t)return!1}return c>=e},G=async n=>new Uint8Array(await I.digest("SHA-256",n)),J=n=>crypto.getRandomValues(new Uint8Array(n));export{j as alloc,D as allocUnsafe,L as compare,_ as concat,H as decodeUtf8From,B as encodeUtf8,F as encodeUtf8Into,R as equals,V as getUtf8Length,v as isUtf8LengthInRange,J as randomBytes,T as timingSafeEquals,G as toSha256}; 3 - //# sourceMappingURL=./uint8array.mjs.map
-1
vendor/esm.sh/@atcute/uint8array@1.1.1/es2022/uint8array.mjs.map
··· 1 - {"mappings":";AAAA,IAAMA,EAAc,IAAI,YAClBC,EAAc,IAAI,YAElBC,EAAS,OAAO,OAKTC,EAASC,GACd,IAAI,WAAWA,CAAI,EAOdC,EAAcF,EAKdG,EAAU,CAACC,EAAeC,IAA0B,CAChE,IAAMC,EAAOF,EAAE,OACTG,EAAOF,EAAE,OAEf,GAAIC,EAAOC,EACV,MAAO,GAER,GAAID,EAAOC,EACV,MAAO,GAGR,QAASC,EAAI,EAAGA,EAAIF,EAAME,IAAK,CAC9B,IAAMC,EAAKL,EAAEI,CAAC,EACRE,EAAKL,EAAEG,CAAC,EAEd,GAAIC,EAAKC,EACR,MAAO,GAGR,GAAID,EAAKC,EACR,MAAO,EAET,CAEA,MAAO,EAAE,EAMGC,EAAS,CAACP,EAAeC,IAA2B,CAChE,GAAID,IAAMC,EACT,MAAO,GAGR,IAAIO,EACJ,IAAKA,EAAMR,EAAE,UAAYC,EAAE,QAC1B,KAAOO,KACN,GAAIR,EAAEQ,CAAG,IAAMP,EAAEO,CAAG,EACnB,MAAO,GAKV,OAAOA,IAAQ,EAAG,EAMNC,EAAmB,CAACT,EAAeC,IAA2B,CAC1E,IAAIO,EACAE,EAAM,EACV,IAAKF,EAAMR,EAAE,UAAYC,EAAE,OAC1B,KAAOO,KACNE,GAAOV,EAAEQ,CAAG,EAAIP,EAAEO,CAAG,EAIvB,OAAOA,IAAQ,IAAME,IAAQ,CAAE,EAMnBC,EAAS,CAACC,EAAsBf,IAA2C,CACvF,IAAIgB,EAAU,EAEVL,EAAMI,EAAO,OACbE,EAEJ,GAAIjB,IAAS,OACZ,IAAKiB,EAAMjB,EAAO,EAAGiB,EAAMN,EAAKM,IAAO,CACtC,IAAMC,EAAQH,EAAOE,CAAG,EACxBjB,GAAQkB,EAAM,MACf,CAGD,IAAMC,EAAS,IAAI,WAAWnB,CAAI,EAElC,IAAKiB,EAAM,EAAGA,EAAMN,EAAKM,IAAO,CAC/B,IAAMC,EAAQH,EAAOE,CAAG,EAExBE,EAAO,IAAID,EAAOF,CAAO,EACzBA,GAAWE,EAAM,MAClB,CAEA,OAAOC,CAAO,EAMFC,EAAcC,GACnBzB,EAAY,OAAOyB,CAAG,EAMjBC,EAAiB,CAACC,EAAgBF,EAAaG,EAAiBC,IAA4B,CACxG,IAAIN,EAEJ,OAAIK,IAAW,OACdL,EAASI,EACCE,IAAW,OACrBN,EAASI,EAAG,SAASC,CAAM,EAE3BL,EAASI,EAAG,SAASC,EAAQA,EAASC,CAAM,EAG9B7B,EAAY,WAAWyB,EAAKF,CAAM,EAEnC,OAAQ,EAGjBO,EAAgB,OAAO,aAIvBC,EAAe,CAACC,EAAkBC,EAAWJ,IAAkC,CACpF,GAAIA,EAAS,EAAG,CACf,GAAIA,EAAS,EAAG,CACf,GAAIA,IAAW,EAAG,MAAO,GACzB,IAAMtB,EAAIyB,EAAKC,CAAC,EAChB,OAAI1B,EAAI,IAAa,KACduB,EAAcvB,CAAC,CACvB,CACA,IAAMA,EAAIyB,EAAKC,CAAC,EACVzB,EAAIwB,EAAKC,EAAI,CAAC,EACpB,IAAK1B,EAAIC,GAAK,IAAM,OAAO,KAC3B,GAAIqB,IAAW,EAAG,OAAOC,EAAcvB,EAAGC,CAAC,EAC3C,IAAM0B,EAAIF,EAAKC,EAAI,CAAC,EACpB,OAAIC,EAAI,IAAa,KACdJ,EAAcvB,EAAGC,EAAG0B,CAAC,CAC7B,CACA,IAAM3B,EAAIyB,EAAKC,CAAC,EACVzB,EAAIwB,EAAKC,EAAI,CAAC,EACd,EAAID,EAAKC,EAAI,CAAC,EACdE,EAAIH,EAAKC,EAAI,CAAC,EACpB,IAAK1B,EAAIC,EAAI,EAAI2B,GAAK,IAAM,OAAO,KACnC,GAAIN,EAAS,EAAG,CACf,GAAIA,IAAW,EAAG,OAAOC,EAAcvB,EAAGC,EAAG,EAAG2B,CAAC,EACjD,IAAMC,EAAIJ,EAAKC,EAAI,CAAC,EACpB,GAAIG,EAAI,IAAM,OAAO,KACrB,GAAIP,IAAW,EAAG,OAAOC,EAAcvB,EAAGC,EAAG,EAAG2B,EAAGC,CAAC,EACpD,IAAMC,EAAIL,EAAKC,EAAI,CAAC,EACpB,GAAII,EAAI,IAAM,OAAO,KACrB,GAAIR,IAAW,EAAG,OAAOC,EAAcvB,EAAGC,EAAG,EAAG2B,EAAGC,EAAGC,CAAC,EACvD,IAAMC,EAAIN,EAAKC,EAAI,CAAC,EACpB,OAAIK,EAAI,IAAa,KACdR,EAAcvB,EAAGC,EAAG,EAAG2B,EAAGC,EAAGC,EAAGC,CAAC,CACzC,CACA,IAAMF,EAAIJ,EAAKC,EAAI,CAAC,EACd,EAAID,EAAKC,EAAI,CAAC,EACdK,EAAIN,EAAKC,EAAI,CAAC,EACdM,EAAIP,EAAKC,EAAI,CAAC,EACpB,IAAKG,EAAI,EAAIE,EAAIC,GAAK,IAAM,OAAO,KACnC,GAAIV,EAAS,GAAI,CAChB,GAAIA,IAAW,EAAG,OAAOC,EAAcvB,EAAGC,EAAG,EAAG2B,EAAGC,EAAG,EAAGE,EAAGC,CAAC,EAC7D,IAAM5B,EAAIqB,EAAKC,EAAI,CAAC,EACpB,GAAItB,EAAI,IAAM,OAAO,KACrB,GAAIkB,IAAW,EAAG,OAAOC,EAAcvB,EAAGC,EAAG,EAAG2B,EAAGC,EAAG,EAAGE,EAAGC,EAAG5B,CAAC,EAChE,IAAM6B,EAAIR,EAAKC,EAAI,CAAC,EACpB,GAAIO,EAAI,IAAM,OAAO,KACrB,GAAIX,IAAW,GAAI,OAAOC,EAAcvB,EAAGC,EAAG,EAAG2B,EAAGC,EAAG,EAAGE,EAAGC,EAAG5B,EAAG6B,CAAC,EACpE,IAAMC,EAAIT,EAAKC,EAAI,EAAE,EACrB,OAAIQ,EAAI,IAAa,KACdX,EAAcvB,EAAGC,EAAG,EAAG2B,EAAGC,EAAG,EAAGE,EAAGC,EAAG5B,EAAG6B,EAAGC,CAAC,CACrD,CACA,IAAM9B,EAAIqB,EAAKC,EAAI,CAAC,EACdO,EAAIR,EAAKC,EAAI,CAAC,EACdQ,EAAIT,EAAKC,EAAI,EAAE,EACfS,EAAIV,EAAKC,EAAI,EAAE,EACrB,IAAKtB,EAAI6B,EAAIC,EAAIC,GAAK,IAAM,OAAO,KACnC,GAAIb,IAAW,GAAI,OAAOC,EAAcvB,EAAGC,EAAG,EAAG2B,EAAGC,EAAG,EAAGE,EAAGC,EAAG5B,EAAG6B,EAAGC,EAAGC,CAAC,EAC1E,IAAMC,EAAIX,EAAKC,EAAI,EAAE,EACrB,GAAIU,EAAI,IAAM,OAAO,KACrB,GAAId,IAAW,GAAI,OAAOC,EAAcvB,EAAGC,EAAG,EAAG2B,EAAGC,EAAG,EAAGE,EAAGC,EAAG5B,EAAG6B,EAAGC,EAAGC,EAAGC,CAAC,EAC7E,IAAMC,EAAIZ,EAAKC,EAAI,EAAE,EACrB,GAAIW,EAAI,IAAM,OAAO,KACrB,GAAIf,IAAW,GAAI,OAAOC,EAAcvB,EAAGC,EAAG,EAAG2B,EAAGC,EAAG,EAAGE,EAAGC,EAAG5B,EAAG6B,EAAGC,EAAGC,EAAGC,EAAGC,CAAC,EAChF,IAAMC,EAAIb,EAAKC,EAAI,EAAE,EACrB,OAAIY,EAAI,IAAa,KACdf,EAAcvB,EAAGC,EAAG,EAAG2B,EAAGC,EAAG,EAAGE,EAAGC,EAAG5B,EAAG6B,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,CAAC,CAAE,EAUtDC,EAAiB,CAC7Bd,EACAJ,EAAiB,EACjBC,EAAiBG,EAAK,SACV,CACZ,GAAIH,GAAU,GAAI,CACjB,IAAMkB,EAAShB,EAAaC,EAAMJ,EAAQC,CAAM,EAChD,GAAIkB,IAAW,KAAM,OAAOA,CAC7B,CACA,OAAInB,IAAW,GAAKC,IAAWG,EAAK,OAC5B/B,EAAY,OAAO+B,CAAI,EAExB/B,EAAY,OAAO+B,EAAK,SAASJ,EAAQA,EAASC,CAAM,CAAC,CAAE,EAQtDmB,EAAiBvB,GAAwB,CACrD,IAAMV,EAAMU,EAAI,OAEZwB,EAAS,EACTC,EAAQ,EAGZ,KAAOD,EAAS,EAAIlC,GAAK,CACxB,IAAMR,EAAIkB,EAAI,WAAWwB,CAAM,EACzBzC,EAAIiB,EAAI,WAAWwB,EAAS,CAAC,EAC7Bf,EAAIT,EAAI,WAAWwB,EAAS,CAAC,EAC7Bd,EAAIV,EAAI,WAAWwB,EAAS,CAAC,EAEnC,IAAK1C,EAAIC,EAAI0B,EAAIC,IAAM,IACtB,MAGDc,GAAU,EACVC,GAAS,CACV,CAGA,KAAOD,EAASlC,GAAK,CACpB,IAAMoC,EAAO1B,EAAI,WAAWwB,CAAM,EAE9BE,EAAO,KACVF,GAAU,EACVC,GAAS,GACCC,EAAO,MACjBF,GAAU,EACVC,GAAS,GACCC,EAAO,OAAUA,EAAO,OAClCF,GAAU,EACVC,GAAS,IAETD,GAAU,EACVC,GAAS,EAEX,CAEA,OAAOA,CAAM,EAWDE,EAAsB,CAAC3B,EAAa4B,EAAaC,IAAyB,CACtF,IAAMvC,EAAMU,EAAI,OAGhB,GAAIV,EAAM,EAAIsC,EACb,MAAO,GAIR,GAAItC,GAAOsC,GAAOtC,EAAM,GAAKuC,EAC5B,MAAO,GAGR,IAAIL,EAAS,EACTC,EAAQ,EAEZ,KAAOD,EAASlC,GAAK,CACpB,IAAMoC,EAAO1B,EAAI,WAAWwB,CAAM,EAiBlC,GAfIE,EAAO,KACVF,GAAU,EACVC,GAAS,GACCC,EAAO,MACjBF,GAAU,EACVC,GAAS,GACCC,EAAO,OAAUA,EAAO,OAClCF,GAAU,EACVC,GAAS,IAETD,GAAU,EACVC,GAAS,GAINA,EAAQI,EACX,MAAO,EAET,CAEA,OAAOJ,GAASG,CAAI,EAMRE,EAAW,MAAOhC,GACvB,IAAI,WAAW,MAAMrB,EAAO,OAAO,UAAWqB,CAAM,CAAC,EAQhDiC,EAAepD,GACpB,OAAO,gBAAgB,IAAI,WAAWA,CAAI,CAAC","names":["textEncoder","textDecoder","subtle","alloc","size","allocUnsafe","compare","a","b","alen","blen","i","ax","bx","equals","len","timingSafeEquals","out","concat","arrays","written","idx","chunk","buffer","encodeUtf8","str","encodeUtf8Into","to","offset","length","_fromCharCode","_shortString","from","p","c","d","e","f","g","h","j","k","l","m","n","o","decodeUtf8From","result","getUtf8Length","u16pos","u8pos","code","isUtf8LengthInRange","min","max","toSha256","randomBytes"],"sources":["../esm/npm/@atcute/uint8array@1.1.1/node_modules/@atcute/uint8array/lib/index.ts"],"sourcesContent":["const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\n\nconst subtle = crypto.subtle;\n\n/**\n * creates an Uint8Array of the requested size, with the contents zeroed\n */\nexport const alloc = (size: number): Uint8Array\u003cArrayBuffer\u003e =\u003e {\n\treturn new Uint8Array(size);\n};\n\n/**\n * creates an Uint8Array of the requested size, where the contents may not be\n * zeroed out. only use if you're certain that the contents will be overwritten\n */\nexport const allocUnsafe = alloc;\n\n/**\n * compares two Uint8Array buffers\n */\nexport const compare = (a: Uint8Array, b: Uint8Array): number =\u003e {\n\tconst alen = a.length;\n\tconst blen = b.length;\n\n\tif (alen \u003e blen) {\n\t\treturn 1;\n\t}\n\tif (alen \u003c blen) {\n\t\treturn -1;\n\t}\n\n\tfor (let i = 0; i \u003c alen; i++) {\n\t\tconst ax = a[i];\n\t\tconst bx = b[i];\n\n\t\tif (ax \u003c bx) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif (ax \u003e bx) {\n\t\t\treturn 1;\n\t\t}\n\t}\n\n\treturn 0;\n};\n\n/**\n * checks if the two Uint8Array buffers are equal\n */\nexport const equals = (a: Uint8Array, b: Uint8Array): boolean =\u003e {\n\tif (a === b) {\n\t\treturn true;\n\t}\n\n\tlet len: number;\n\tif ((len = a.length) === b.length) {\n\t\twhile (len--) {\n\t\t\tif (a[len] !== b[len]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn len === -1;\n};\n\n/**\n * checks if the two Uint8Array buffers are equal, timing-safe version\n */\nexport const timingSafeEquals = (a: Uint8Array, b: Uint8Array): boolean =\u003e {\n\tlet len: number;\n\tlet out = 0;\n\tif ((len = a.length) === b.length) {\n\t\twhile (len--) {\n\t\t\tout |= a[len] ^ b[len];\n\t\t}\n\t}\n\n\treturn len === -1 \u0026\u0026 out === 0;\n};\n\n/**\n * concatenates multiple Uint8Array buffers into one\n */\nexport const concat = (arrays: Uint8Array[], size?: number): Uint8Array\u003cArrayBuffer\u003e =\u003e {\n\tlet written = 0;\n\n\tlet len = arrays.length;\n\tlet idx: number;\n\n\tif (size === undefined) {\n\t\tfor (idx = size = 0; idx \u003c len; idx++) {\n\t\t\tconst chunk = arrays[idx];\n\t\t\tsize += chunk.length;\n\t\t}\n\t}\n\n\tconst buffer = new Uint8Array(size);\n\n\tfor (idx = 0; idx \u003c len; idx++) {\n\t\tconst chunk = arrays[idx];\n\n\t\tbuffer.set(chunk, written);\n\t\twritten += chunk.length;\n\t}\n\n\treturn buffer;\n};\n\n/**\n * encodes a UTF-8 string\n */\nexport const encodeUtf8 = (str: string): Uint8Array\u003cArrayBuffer\u003e =\u003e {\n\treturn textEncoder.encode(str);\n};\n\n/**\n * encodes a UTF-8 string into a given buffer\n */\nexport const encodeUtf8Into = (to: Uint8Array, str: string, offset?: number, length?: number): number =\u003e {\n\tlet buffer: Uint8Array;\n\n\tif (offset === undefined) {\n\t\tbuffer = to;\n\t} else if (length === undefined) {\n\t\tbuffer = to.subarray(offset);\n\t} else {\n\t\tbuffer = to.subarray(offset, offset + length);\n\t}\n\n\tconst result = textEncoder.encodeInto(str, buffer);\n\n\treturn result.written;\n};\n\nconst _fromCharCode = String.fromCharCode;\n\n// fully unrolled short string decoder, inspired by cbor-x\n// returns null if non-ASCII byte encountered, signaling fallback to TextDecoder\nconst _shortString = (from: Uint8Array, p: number, length: number): string | null =\u003e {\n\tif (length \u003c 4) {\n\t\tif (length \u003c 2) {\n\t\t\tif (length === 0) return '';\n\t\t\tconst a = from[p];\n\t\t\tif (a \u0026 0x80) return null;\n\t\t\treturn _fromCharCode(a);\n\t\t}\n\t\tconst a = from[p];\n\t\tconst b = from[p + 1];\n\t\tif ((a | b) \u0026 0x80) return null;\n\t\tif (length === 2) return _fromCharCode(a, b);\n\t\tconst c = from[p + 2];\n\t\tif (c \u0026 0x80) return null;\n\t\treturn _fromCharCode(a, b, c);\n\t}\n\tconst a = from[p];\n\tconst b = from[p + 1];\n\tconst c = from[p + 2];\n\tconst d = from[p + 3];\n\tif ((a | b | c | d) \u0026 0x80) return null;\n\tif (length \u003c 8) {\n\t\tif (length === 4) return _fromCharCode(a, b, c, d);\n\t\tconst e = from[p + 4];\n\t\tif (e \u0026 0x80) return null;\n\t\tif (length === 5) return _fromCharCode(a, b, c, d, e);\n\t\tconst f = from[p + 5];\n\t\tif (f \u0026 0x80) return null;\n\t\tif (length === 6) return _fromCharCode(a, b, c, d, e, f);\n\t\tconst g = from[p + 6];\n\t\tif (g \u0026 0x80) return null;\n\t\treturn _fromCharCode(a, b, c, d, e, f, g);\n\t}\n\tconst e = from[p + 4];\n\tconst f = from[p + 5];\n\tconst g = from[p + 6];\n\tconst h = from[p + 7];\n\tif ((e | f | g | h) \u0026 0x80) return null;\n\tif (length \u003c 12) {\n\t\tif (length === 8) return _fromCharCode(a, b, c, d, e, f, g, h);\n\t\tconst i = from[p + 8];\n\t\tif (i \u0026 0x80) return null;\n\t\tif (length === 9) return _fromCharCode(a, b, c, d, e, f, g, h, i);\n\t\tconst j = from[p + 9];\n\t\tif (j \u0026 0x80) return null;\n\t\tif (length === 10) return _fromCharCode(a, b, c, d, e, f, g, h, i, j);\n\t\tconst k = from[p + 10];\n\t\tif (k \u0026 0x80) return null;\n\t\treturn _fromCharCode(a, b, c, d, e, f, g, h, i, j, k);\n\t}\n\tconst i = from[p + 8];\n\tconst j = from[p + 9];\n\tconst k = from[p + 10];\n\tconst l = from[p + 11];\n\tif ((i | j | k | l) \u0026 0x80) return null;\n\tif (length === 12) return _fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l);\n\tconst m = from[p + 12];\n\tif (m \u0026 0x80) return null;\n\tif (length === 13) return _fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m);\n\tconst n = from[p + 13];\n\tif (n \u0026 0x80) return null;\n\tif (length === 14) return _fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n);\n\tconst o = from[p + 14];\n\tif (o \u0026 0x80) return null;\n\treturn _fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);\n};\n\n/**\n * decodes a UTF-8 string from a given buffer\n * @param from source buffer\n * @param offset byte offset to start reading from\n * @param length number of bytes to read\n * @returns decoded string\n */\nexport const decodeUtf8From = (\n\tfrom: Uint8Array,\n\toffset: number = 0,\n\tlength: number = from.length,\n): string =\u003e {\n\tif (length \u003c= 15) {\n\t\tconst result = _shortString(from, offset, length);\n\t\tif (result !== null) return result;\n\t}\n\tif (offset === 0 \u0026\u0026 length === from.length) {\n\t\treturn textDecoder.decode(from);\n\t}\n\treturn textDecoder.decode(from.subarray(offset, offset + length));\n};\n\n/**\n * calculates the UTF-8 byte length of a string\n * @param str string to measure\n * @returns byte length when encoded as UTF-8\n */\nexport const getUtf8Length = (str: string): number =\u003e {\n\tconst len = str.length;\n\n\tlet u16pos = 0;\n\tlet u8pos = 0;\n\n\t// ASCII fast-path: batch process 4 chars at a time\n\twhile (u16pos + 3 \u003c len) {\n\t\tconst a = str.charCodeAt(u16pos);\n\t\tconst b = str.charCodeAt(u16pos + 1);\n\t\tconst c = str.charCodeAt(u16pos + 2);\n\t\tconst d = str.charCodeAt(u16pos + 3);\n\n\t\tif ((a | b | c | d) \u003e= 0x80) {\n\t\t\tbreak;\n\t\t}\n\n\t\tu16pos += 4;\n\t\tu8pos += 4;\n\t}\n\n\t// handle remaining chars\n\twhile (u16pos \u003c len) {\n\t\tconst code = str.charCodeAt(u16pos);\n\n\t\tif (code \u003c 0x80) {\n\t\t\tu16pos += 1;\n\t\t\tu8pos += 1;\n\t\t} else if (code \u003c 0x800) {\n\t\t\tu16pos += 1;\n\t\t\tu8pos += 2;\n\t\t} else if (code \u003c 0xd800 || code \u003e 0xdbff) {\n\t\t\tu16pos += 1;\n\t\t\tu8pos += 3;\n\t\t} else {\n\t\t\tu16pos += 2;\n\t\t\tu8pos += 4;\n\t\t}\n\t}\n\n\treturn u8pos;\n};\n\n/**\n * checks if a string's UTF-8 byte length is within a given range.\n * includes early-exit optimization when exceeding max length.\n * @param str string to measure\n * @param min minimum byte length (inclusive)\n * @param max maximum byte length (inclusive)\n * @returns true if byte length is within [min, max]\n */\nexport const isUtf8LengthInRange = (str: string, min: number, max: number): boolean =\u003e {\n\tconst len = str.length;\n\n\t// fast path: if max possible UTF-8 length is below min, fail\n\tif (len * 3 \u003c min) {\n\t\treturn false;\n\t}\n\n\t// fast path: if UTF-16 length satisfies min and max possible satisfies max\n\tif (len \u003e= min \u0026\u0026 len * 3 \u003c= max) {\n\t\treturn true;\n\t}\n\n\tlet u16pos = 0;\n\tlet u8pos = 0;\n\n\twhile (u16pos \u003c len) {\n\t\tconst code = str.charCodeAt(u16pos);\n\n\t\tif (code \u003c 0x80) {\n\t\t\tu16pos += 1;\n\t\t\tu8pos += 1;\n\t\t} else if (code \u003c 0x800) {\n\t\t\tu16pos += 1;\n\t\t\tu8pos += 2;\n\t\t} else if (code \u003c 0xd800 || code \u003e 0xdbff) {\n\t\t\tu16pos += 1;\n\t\t\tu8pos += 3;\n\t\t} else {\n\t\t\tu16pos += 2;\n\t\t\tu8pos += 4;\n\t\t}\n\n\t\t// early exit once we exceed max\n\t\tif (u8pos \u003e max) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn u8pos \u003e= min;\n};\n\n/**\n * get a SHA-256 digest of this buffer\n */\nexport const toSha256 = async (buffer: Uint8Array\u003cArrayBuffer\u003e): Promise\u003cUint8Array\u003cArrayBuffer\u003e\u003e =\u003e {\n\treturn new Uint8Array(await subtle.digest('SHA-256', buffer));\n};\n\n/**\n * generates cryptographically secure random bytes\n * @param size number of bytes to generate\n * @returns buffer filled with random bytes\n */\nexport const randomBytes = (size: number): Uint8Array\u003cArrayBuffer\u003e =\u003e {\n\treturn crypto.getRandomValues(new Uint8Array(size));\n};\n"],"version":3}
-3
vendor/esm.sh/@atcute/util-fetch@1.0.5/es2022/util-fetch.mjs
··· 1 - /* esm.sh - @atcute/util-fetch@1.0.5 */ 2 - import*as t from"../../../@badrap/valita@0.4.6/es2022/valita.mjs";function y(...e){return e.reduce(w)}var w=(e,r)=>n=>e(n).then(r);import"../../../@badrap/valita@0.4.6/es2022/valita.mjs";var p=class extends Error{name="FetchResponseError"},u=class extends p{response;name="FailedResponseError";constructor(r){super(`got http ${r.status}`),this.response=r}get status(){return this.response.status}},i=class extends p{contentType;name="ImproperContentTypeError";constructor(r,n){super(n),this.contentType=r}},a=class extends p{expectedSize;actualSize;name="ImproperContentLengthError";constructor(r,n,o){super(o),this.expectedSize=r,this.actualSize=n}},l=class extends p{name="ImproperResponseError";constructor(r,n){super(r,n)}};var m=class extends TransformStream{constructor(r){let n=0;super({transform(o,s){if(n+=o.length,n>r){s.error(new a(r,n,"response content-length too large"));return}s.enqueue(o)}})}};var v=async e=>{if(e.ok)return e;throw new u(e)},D=e=>async r=>{let n=await g(r,e);return{response:r,text:n}},x=(e,r)=>async n=>{await b(n,e);let o=await g(n,r);try{let s=JSON.parse(o);return{response:n,json:s}}catch(s){throw new l("unexpected json data",{cause:s})}},f=(e,r)=>async n=>{let o=e.parse(n.json,r);return{response:n.response,json:o}},b=async(e,r)=>{let n=e.headers.get("content-type")?.split(";",1)[0].trim();if(n===void 0)throw e.body&&await e.body.cancel(),new i(null,"missing response content-type");if(!r.test(n))throw e.body&&await e.body.cancel(),new i(n,"unexpected response content-type")},g=async(e,r)=>{let n=e.headers.get("content-length");if(n!==null){let c=Number(n);if(!Number.isSafeInteger(c)||c<=0)throw e.body?.cancel(),new a(r,null,"invalid response content-length");if(c>r)throw e.body?.cancel(),new a(r,c,"response content-length too large")}let o=e.body.pipeThrough(new m(r)).pipeThrough(new TextDecoderStream),s="";for await(let c of T(o))s+=c;return s},T=Symbol.asyncIterator in ReadableStream.prototype?e=>e[Symbol.asyncIterator]():e=>{let r=e.getReader();return{[Symbol.asyncIterator](){return this},next(){return r.read()},async return(){return await r.cancel(),{done:!0,value:void 0}},async throw(n){return await r.cancel(n),{done:!0,value:void 0}}}};var d=t.number().assert(e=>Number.isInteger(e)&&e>=0&&e<=2**32-1),R=t.object({name:t.string(),type:t.literal(16)}),I=t.object({name:t.string(),type:t.literal(16),TTL:d,data:t.string().chain(e=>t.ok(e.replace(/^"|"$/g,"").replace(/\\"/g,'"')))}),S=t.object({name:t.string(),type:d,TTL:d,data:t.string()}),j=t.object({Status:d,TC:t.boolean(),RD:t.boolean(),RA:t.boolean(),AD:t.boolean(),CD:t.boolean(),Question:t.tuple([R]),Answer:t.array(I).optional(()=>[]),Authority:t.array(S).optional(),Comment:t.union(t.string(),t.array(t.string())).optional()}),O=y(v,x(/^application\/(dns-)?json$/,16*1024),f(j,{mode:"passthrough"}));export{u as FailedResponseError,p as FetchResponseError,a as ImproperContentLengthError,i as ImproperContentTypeError,l as ImproperResponseError,j as dohJsonTxtResult,O as fetchDohJsonTxt,v as isResponseOk,x as parseResponseAsJson,y as pipe,D as readResponseAsText,f as validateJsonWith}; 3 - //# sourceMappingURL=./util-fetch.mjs.map
-1
vendor/esm.sh/@atcute/util-fetch@1.0.5/es2022/util-fetch.mjs.map
··· 1 - {"mappings":";AAAA,UAAYA,MAAO,uCC6Bb,SAAUC,KACZC,EACuD,CAC1D,OAAOA,EAAS,OAAOC,CAAO,CAAE,CAGjC,IAAMA,EAAU,CACfC,EACAC,IAEQC,GAAUF,EAAME,CAAK,EAAE,KAAKD,CAAM,ECvC3C,MAAmB,uCCAb,IAAOE,EAAP,cAAkC,KAAK,CACnC,KAAO,sBAGJC,EAAP,cAAmCD,CAAkB,CAGvC,SAFV,KAAO,sBAEhB,YAAmBE,EAAoB,CACtC,MAAM,YAAYA,EAAS,MAAM,EAAE,gBADjBA,CACmB,CAGtC,IAAI,QAAiB,CACpB,OAAO,KAAK,SAAS,MAAO,GAIjBC,EAAP,cAAwCH,CAAkB,CAIvD,YAHC,KAAO,2BAEhB,YACQI,EACPC,EACC,CACD,MAAMA,CAAM,mBAHLD,CAGO,GAIHE,EAAP,cAA0CN,CAAkB,CAIzD,aACA,WAJC,KAAO,6BAEhB,YACQO,EACAC,EACPH,EACC,CACD,MAAMA,CAAM,oBAJLE,kBACAC,CAGO,GAIHC,EAAP,cAAqCT,CAAkB,CACnD,KAAO,wBAEhB,YAAYK,EAAgBK,EAAwB,CACnD,MAAML,EAAQK,CAAO,CAAE,GCzCnB,IAAOC,EAAP,cAA+B,eAAiE,CACrG,YAAYC,EAAiB,CAC5B,IAAIC,EAAY,EAEhB,MAAM,CACL,UAAUC,EAAOC,EAAY,CAG5B,GAFAF,GAAaC,EAAM,OAEfD,EAAYD,EAAS,CACxBG,EAAW,MACV,IAAQC,EAA2BJ,EAASC,EAAW,mCAAmC,CAAC,EAG5F,MACD,CAEAE,EAAW,QAAQD,CAAK,CAAE,EAE3B,CAAE,GFLE,IAAMG,EAAe,MAAOC,GAA0C,CAC5E,GAAIA,EAAS,GACZ,OAAOA,EAGR,MAAM,IAAQC,EAAoBD,CAAQ,CAAE,EAGhCE,EACXC,GACD,MAAOH,GAA8C,CACpD,IAAMI,EAAO,MAAMC,EAAaL,EAAUG,CAAO,EACjD,MAAO,CAAE,SAAAH,EAAU,KAAAI,CAAI,CAAG,EAGfE,EACZ,CAACC,EAAmBJ,IACpB,MAAOH,GAAoD,CAC1D,MAAMQ,EAAkBR,EAAUO,CAAS,EAE3C,IAAMH,EAAO,MAAMC,EAAaL,EAAUG,CAAO,EAEjD,GAAI,CACH,IAAMM,EAAO,KAAK,MAAML,CAAI,EAC5B,MAAO,CAAE,SAAAJ,EAAU,KAAAS,CAAI,CACxB,OAASC,EAAO,CACf,MAAM,IAAQC,EAAsB,uBAAwB,CAAE,MAAOD,CAAK,CAAE,CAC7E,CAAC,EAKUE,EACZ,CAAIC,EAAmBC,IACvB,MAAOC,GAA+D,CACrE,IAAMN,EAAOI,EAAO,MAAME,EAAO,KAAMD,CAAO,EAC9C,MAAO,CAAE,SAAUC,EAAO,SAAU,KAAAN,CAAI,CAAG,EAGvCD,EAAoB,MAAOR,EAAoBO,IAAqC,CACzF,IAAMS,EAAOhB,EAAS,QAAQ,IAAI,cAAc,GAAG,MAAM,IAAK,CAAC,EAAE,CAAC,EAAE,KAAI,EAExE,GAAIgB,IAAS,OACZ,MAAIhB,EAAS,MACZ,MAAMA,EAAS,KAAK,OAAM,EAGrB,IAAQiB,EAAyB,KAAM,+BAA+B,EAG7E,GAAI,CAACV,EAAU,KAAKS,CAAI,EACvB,MAAIhB,EAAS,MACZ,MAAMA,EAAS,KAAK,OAAM,EAGrB,IAAQiB,EAAyBD,EAAM,kCAAkC,CAC/E,EAGIX,EAAe,MAAOL,EAAoBG,IAAqC,CACpF,IAAMe,EAAUlB,EAAS,QAAQ,IAAI,gBAAgB,EACrD,GAAIkB,IAAY,KAAM,CACrB,IAAMC,EAAO,OAAOD,CAAO,EAE3B,GAAI,CAAC,OAAO,cAAcC,CAAI,GAAKA,GAAQ,EAC1C,MAAAnB,EAAS,MAAM,OAAM,EACf,IAAQoB,EAA2BjB,EAAS,KAAM,iCAAiC,EAG1F,GAAIgB,EAAOhB,EACV,MAAAH,EAAS,MAAM,OAAM,EACf,IAAQoB,EAA2BjB,EAASgB,EAAM,mCAAmC,CAE7F,CAEA,IAAME,EAASrB,EACb,KAAM,YAAY,IAAIsB,EAAgBnB,CAAO,CAAC,EAC9C,YAAY,IAAI,iBAAmB,EAEjCC,EAAO,GACX,cAAiBmB,KAASC,EAAqBH,CAAM,EACpDjB,GAAQmB,EAGT,OAAOnB,CAAK,EAGPoB,EACL,OAAO,iBAAiB,eAAe,UACnCH,GAAWA,EAAO,OAAO,aAAa,EAAC,EACvCA,GAAW,CACZ,IAAMI,EAASJ,EAAO,UAAS,EAE/B,MAAO,CACN,CAAC,OAAO,aAAa,GAAI,CACxB,OAAO,IAAK,EAEb,MAAO,CACN,OAAOI,EAAO,KAAI,CAAmC,EAEtD,MAAM,QAAS,CACd,aAAMA,EAAO,OAAM,EACZ,CAAE,KAAM,GAAM,MAAO,MAAS,CAAG,EAEzC,MAAM,MAAMf,EAAgB,CAC3B,aAAMe,EAAO,OAAOf,CAAK,EAClB,CAAE,KAAM,GAAM,MAAO,MAAS,CAAG,EAExC,EFtHN,IAAMgB,EAAW,SAAM,EAAG,OAAQC,GAAU,OAAO,UAAUA,CAAK,GAAKA,GAAS,GAAKA,GAAS,GAAK,GAAK,CAAC,EAEnGC,EAAa,SAAO,CACzB,KAAQ,SAAM,EACd,KAAQ,UAAQ,EAAE,EAClB,EAEKC,EAAW,SAAO,CACvB,KAAQ,SAAM,EACd,KAAQ,UAAQ,EAAE,EAClB,IAAKH,EACL,KAAQ,SAAM,EAAG,MAAOC,GACd,KAAGA,EAAM,QAAQ,SAAU,EAAE,EAAE,QAAQ,OAAQ,GAAG,CAAC,CAC5D,EACD,EAEKG,EAAc,SAAO,CAC1B,KAAQ,SAAM,EACd,KAAMJ,EACN,IAAKA,EACL,KAAQ,SAAM,EACd,EAGYK,EAAqB,SAAO,CAExC,OAAQL,EAER,GAAM,UAAO,EAEb,GAAM,UAAO,EAEb,GAAM,UAAO,EAEb,GAAM,UAAO,EAEb,GAAM,UAAO,EAEb,SAAY,QAAM,CAACE,CAAQ,CAAC,EAE5B,OAAU,QAAMC,CAAM,EAAE,SAAS,IAAM,CAAA,CAAE,EAEzC,UAAa,QAAMC,CAAS,EAAE,SAAQ,EAEtC,QAAW,QAAQ,SAAM,EAAM,QAAQ,SAAM,CAAE,CAAC,EAAE,SAAQ,EAC1D,EAKYE,EAAkBC,EAC9BC,EACAC,EAAoB,6BAA8B,GAAK,IAAI,EAC3DC,EAAiBL,EAAkB,CAAE,KAAM,aAAa,CAAE,CAAC","names":["v","pipe","pipeline","pipeTwo","first","second","input","FetchResponseError","FailedResponseError","response","ImproperContentTypeError","contentType","reason","ImproperContentLengthError","expectedSize","actualSize","ImproperResponseError","options","SizeLimitStream","maxSize","bytesRead","chunk","controller","ImproperContentLengthError","isResponseOk","response","FailedResponseError","readResponseAsText","maxSize","text","readResponse","parseResponseAsJson","typeRegex","assertContentType","json","error","ImproperResponseError","validateJsonWith","schema","options","parsed","type","ImproperContentTypeError","rawSize","size","ImproperContentLengthError","stream","SizeLimitStream","chunk","createStreamIterator","reader","uint32","input","question","answer","authority","dohJsonTxtResult","fetchDohJsonTxt","pipe","isResponseOk","parseResponseAsJson","validateJsonWith"],"sources":["../esm/npm/@atcute/util-fetch@1.0.5/node_modules/@atcute/util-fetch/lib/doh-json.ts","../esm/npm/@atcute/util-fetch@1.0.5/node_modules/@atcute/util-fetch/lib/pipeline.ts","../esm/npm/@atcute/util-fetch@1.0.5/node_modules/@atcute/util-fetch/lib/transformers.ts","../esm/npm/@atcute/util-fetch@1.0.5/node_modules/@atcute/util-fetch/lib/errors.ts","../esm/npm/@atcute/util-fetch@1.0.5/node_modules/@atcute/util-fetch/lib/streams/size-limit.ts"],"sourcesContent":["import * as v from '@badrap/valita';\n\nimport { pipe } from './pipeline.js';\nimport { isResponseOk, parseResponseAsJson, validateJsonWith } from './transformers.js';\n\nconst uint32 = v.number().assert((input) =\u003e Number.isInteger(input) \u0026\u0026 input \u003e= 0 \u0026\u0026 input \u003c= 2 ** 32 - 1);\n\nconst question = v.object({\n\tname: v.string(),\n\ttype: v.literal(16), // TXT\n});\n\nconst answer = v.object({\n\tname: v.string(),\n\ttype: v.literal(16), // TXT\n\tTTL: uint32,\n\tdata: v.string().chain((input) =\u003e {\n\t\treturn v.ok(input.replace(/^\"|\"$/g, '').replace(/\\\\\"/g, '\"'));\n\t}),\n});\n\nconst authority = v.object({\n\tname: v.string(),\n\ttype: uint32,\n\tTTL: uint32,\n\tdata: v.string(),\n});\n\n/** DoH JSON response schema for TXT record queries */\nexport const dohJsonTxtResult = v.object({\n\t/** DNS response code */\n\tStatus: uint32,\n\t/** whether response is truncated */\n\tTC: v.boolean(),\n\t/** whether recursive desired bit is set, always true for Google and Cloudflare DoH */\n\tRD: v.boolean(),\n\t/** whether recursive available bit is set, always true for Google and Cloudflare DoH */\n\tRA: v.boolean(),\n\t/** whether response data was validated with DNSSEC */\n\tAD: v.boolean(),\n\t/** whether client asked to disable DNSSEC validation */\n\tCD: v.boolean(),\n\t/** requested records */\n\tQuestion: v.tuple([question]),\n\t/** answers */\n\tAnswer: v.array(answer).optional(() =\u003e []),\n\t/** authority */\n\tAuthority: v.array(authority).optional(),\n\t/** comment from the DNS server */\n\tComment: v.union(v.string(), v.array(v.string())).optional(),\n});\n\nexport type DohJsonTxtResult = v.Infer\u003ctypeof dohJsonTxtResult\u003e;\n\n/** fetch handler pipeline for DoH JSON TXT record responses */\nexport const fetchDohJsonTxt = pipe(\n\tisResponseOk,\n\tparseResponseAsJson(/^application\\/(dns-)?json$/, 16 * 1024),\n\tvalidateJsonWith(dohJsonTxtResult, { mode: 'passthrough' }),\n);\n","type Transformer\u003cI, O = I\u003e = (input: I) =\u003e Promise\u003cO\u003e;\n\ntype PipelineInput\u003cT extends readonly Transformer\u003cany\u003e[]\u003e = T extends [Transformer\u003cinfer I, any\u003e, ...any[]]\n\t? I\n\t: T extends Transformer\u003cinfer I, any\u003e[]\n\t\t? I\n\t\t: never;\n\ntype PipelineOutput\u003cT extends readonly Transformer\u003cany\u003e[]\u003e = T extends [...any[], Transformer\u003cany, infer O\u003e]\n\t? O\n\t: T extends Transformer\u003cany, infer O\u003e[]\n\t\t? O\n\t\t: never;\n\ntype Pipeline\u003c\n\tF extends readonly Transformer\u003cany\u003e[],\n\tAcc extends readonly Transformer\u003cany\u003e[] = [],\n\u003e = F extends [Transformer\u003cinfer I, infer O\u003e]\n\t? [...Acc, Transformer\u003cI, O\u003e]\n\t: F extends [Transformer\u003cinfer A, any\u003e, ...infer Tail]\n\t\t? Tail extends [Transformer\u003cinfer B, any\u003e, ...any[]]\n\t\t\t? Pipeline\u003cTail, [...Acc, Transformer\u003cA, B\u003e]\u003e\n\t\t\t: Acc\n\t\t: Acc;\n\nexport function pipe(): never;\nexport function pipe\u003cT extends readonly Transformer\u003cany\u003e[]\u003e(\n\t...pipeline: Pipeline\u003cT\u003e extends T ? T : Pipeline\u003cT\u003e\n): (input: PipelineInput\u003cT\u003e) =\u003e Promise\u003cPipelineOutput\u003cT\u003e\u003e;\nexport function pipe\u003cT extends readonly Transformer\u003cany\u003e[]\u003e(\n\t...pipeline: Pipeline\u003cT\u003e extends T ? T : Pipeline\u003cT\u003e\n): (input: PipelineInput\u003cT\u003e) =\u003e Promise\u003cPipelineOutput\u003cT\u003e\u003e {\n\treturn pipeline.reduce(pipeTwo);\n}\n\nconst pipeTwo = \u003cI, O, X = unknown\u003e(\n\tfirst: Transformer\u003cI, X\u003e,\n\tsecond: Transformer\u003cX, O\u003e,\n): ((input: I) =\u003e Promise\u003cO\u003e) =\u003e {\n\treturn (input) =\u003e first(input).then(second);\n};\n","import * as v from '@badrap/valita';\n\nimport * as err from './errors.js';\nimport { SizeLimitStream } from './streams/size-limit.js';\n\nexport type TextResponse = {\n\tresponse: Response;\n\ttext: string;\n};\n\nexport type ParsedJsonResponse\u003cT = unknown\u003e = {\n\tresponse: Response;\n\tjson: T;\n};\n\nexport const isResponseOk = async (response: Response): Promise\u003cResponse\u003e =\u003e {\n\tif (response.ok) {\n\t\treturn response;\n\t}\n\n\tthrow new err.FailedResponseError(response);\n};\n\nexport const readResponseAsText =\n\t(maxSize: number) =\u003e\n\tasync (response: Response): Promise\u003cTextResponse\u003e =\u003e {\n\t\tconst text = await readResponse(response, maxSize);\n\t\treturn { response, text };\n\t};\n\nexport const parseResponseAsJson =\n\t(typeRegex: RegExp, maxSize: number) =\u003e\n\tasync (response: Response): Promise\u003cParsedJsonResponse\u003e =\u003e {\n\t\tawait assertContentType(response, typeRegex);\n\n\t\tconst text = await readResponse(response, maxSize);\n\n\t\ttry {\n\t\t\tconst json = JSON.parse(text);\n\t\t\treturn { response, json };\n\t\t} catch (error) {\n\t\t\tthrow new err.ImproperResponseError(`unexpected json data`, { cause: error });\n\t\t}\n\t};\n\ntype ParseOptions = NonNullable\u003cParameters\u003cv.Type['parse']\u003e[1]\u003e;\n\nexport const validateJsonWith =\n\t\u003cT\u003e(schema: v.Type\u003cT\u003e, options?: ParseOptions) =\u003e\n\tasync (parsed: ParsedJsonResponse): Promise\u003cParsedJsonResponse\u003cT\u003e\u003e =\u003e {\n\t\tconst json = schema.parse(parsed.json, options);\n\t\treturn { response: parsed.response, json };\n\t};\n\nconst assertContentType = async (response: Response, typeRegex: RegExp): Promise\u003cvoid\u003e =\u003e {\n\tconst type = response.headers.get('content-type')?.split(';', 1)[0].trim();\n\n\tif (type === undefined) {\n\t\tif (response.body) {\n\t\t\tawait response.body.cancel();\n\t\t}\n\n\t\tthrow new err.ImproperContentTypeError(null, `missing response content-type`);\n\t}\n\n\tif (!typeRegex.test(type)) {\n\t\tif (response.body) {\n\t\t\tawait response.body.cancel();\n\t\t}\n\n\t\tthrow new err.ImproperContentTypeError(type, `unexpected response content-type`);\n\t}\n};\n\nconst readResponse = async (response: Response, maxSize: number): Promise\u003cstring\u003e =\u003e {\n\tconst rawSize = response.headers.get('content-length');\n\tif (rawSize !== null) {\n\t\tconst size = Number(rawSize);\n\n\t\tif (!Number.isSafeInteger(size) || size \u003c= 0) {\n\t\t\tresponse.body?.cancel();\n\t\t\tthrow new err.ImproperContentLengthError(maxSize, null, `invalid response content-length`);\n\t\t}\n\n\t\tif (size \u003e maxSize) {\n\t\t\tresponse.body?.cancel();\n\t\t\tthrow new err.ImproperContentLengthError(maxSize, size, `response content-length too large`);\n\t\t}\n\t}\n\n\tconst stream = response\n\t\t.body!.pipeThrough(new SizeLimitStream(maxSize))\n\t\t.pipeThrough(new TextDecoderStream());\n\n\tlet text = '';\n\tfor await (const chunk of createStreamIterator(stream)) {\n\t\ttext += chunk;\n\t}\n\n\treturn text;\n};\n\nconst createStreamIterator: \u003cT\u003e(stream: ReadableStream\u003cT\u003e) =\u003e AsyncIterableIterator\u003cT\u003e =\n\tSymbol.asyncIterator in ReadableStream.prototype\n\t\t? (stream) =\u003e stream[Symbol.asyncIterator]()\n\t\t: (stream) =\u003e {\n\t\t\t\tconst reader = stream.getReader();\n\n\t\t\t\treturn {\n\t\t\t\t\t[Symbol.asyncIterator]() {\n\t\t\t\t\t\treturn this;\n\t\t\t\t\t},\n\t\t\t\t\tnext() {\n\t\t\t\t\t\treturn reader.read() as Promise\u003cIteratorResult\u003cany\u003e\u003e;\n\t\t\t\t\t},\n\t\t\t\t\tasync return() {\n\t\t\t\t\t\tawait reader.cancel();\n\t\t\t\t\t\treturn { done: true, value: undefined };\n\t\t\t\t\t},\n\t\t\t\t\tasync throw(error: unknown) {\n\t\t\t\t\t\tawait reader.cancel(error);\n\t\t\t\t\t\treturn { done: true, value: undefined };\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t};\n","export class FetchResponseError extends Error {\n\toverride name = 'FetchResponseError';\n}\n\nexport class FailedResponseError extends FetchResponseError {\n\toverride name = 'FailedResponseError';\n\n\tconstructor(public response: Response) {\n\t\tsuper(`got http ${response.status}`);\n\t}\n\n\tget status(): number {\n\t\treturn this.response.status;\n\t}\n}\n\nexport class ImproperContentTypeError extends FetchResponseError {\n\toverride name = 'ImproperContentTypeError';\n\n\tconstructor(\n\t\tpublic contentType: string | null,\n\t\treason: string,\n\t) {\n\t\tsuper(reason);\n\t}\n}\n\nexport class ImproperContentLengthError extends FetchResponseError {\n\toverride name = 'ImproperContentLengthError';\n\n\tconstructor(\n\t\tpublic expectedSize: number,\n\t\tpublic actualSize: number | null,\n\t\treason: string,\n\t) {\n\t\tsuper(reason);\n\t}\n}\n\nexport class ImproperResponseError extends FetchResponseError {\n\toverride name = 'ImproperResponseError';\n\n\tconstructor(reason: string, options?: ErrorOptions) {\n\t\tsuper(reason, options);\n\t}\n}\n","import * as err from '../errors.js';\n\nexport class SizeLimitStream extends TransformStream\u003cUint8Array\u003cArrayBuffer\u003e, Uint8Array\u003cArrayBuffer\u003e\u003e {\n\tconstructor(maxSize: number) {\n\t\tlet bytesRead = 0;\n\n\t\tsuper({\n\t\t\ttransform(chunk, controller) {\n\t\t\t\tbytesRead += chunk.length;\n\n\t\t\t\tif (bytesRead \u003e maxSize) {\n\t\t\t\t\tcontroller.error(\n\t\t\t\t\t\tnew err.ImproperContentLengthError(maxSize, bytesRead, `response content-length too large`),\n\t\t\t\t\t);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t},\n\t\t});\n\t}\n}\n"],"version":3}
-3
vendor/esm.sh/@atcute/util-text@1.2.0/es2022/util-text.mjs
··· 1 - /* esm.sh - @atcute/util-text@1.2.0 */ 2 - var c=t=>{let n=t.length,e=0;for(;e+3<n;){let r=t.charCodeAt(e),s=t.charCodeAt(e+1),o=t.charCodeAt(e+2),i=t.charCodeAt(e+3);if((r|s|o|i)>127||r===13||s===13||o===13||i===13)return!1;e+=4}for(;e<n;){let r=t.charCodeAt(e);if(r>127||r===13)return!1;e++}return!0};var h=new Intl.Segmenter,a=t=>{if(c(t))return t.length;let n=h.segment(t)[Symbol.iterator](),e=0;for(;!n.next().done;)e++;return e},d=(t,n,e)=>{let r=t.length;if(r<n)return!1;if(n===0&&r<=e)return!0;if(c(t))return r<=e;let s=h.segment(t)[Symbol.iterator](),o=0;for(;!s.next().done;)if(o++,o>e)return!1;return o>=n};export{a as getGraphemeLength,d as isGraphemeLengthInRange}; 3 - //# sourceMappingURL=./util-text.mjs.map
-1
vendor/esm.sh/@atcute/util-text@1.2.0/es2022/util-text.mjs.map
··· 1 - {"mappings":";AAAO,IAAMA,EAAoBC,GAAyB,CACzD,IAAMC,EAAMD,EAAK,OACbE,EAAM,EAEV,KAAOA,EAAM,EAAID,GAAK,CACrB,IAAME,EAAIH,EAAK,WAAWE,CAAG,EACvBE,EAAIJ,EAAK,WAAWE,EAAM,CAAC,EAC3BG,EAAIL,EAAK,WAAWE,EAAM,CAAC,EAC3BI,EAAIN,EAAK,WAAWE,EAAM,CAAC,EAEjC,IAAKC,EAAIC,EAAIC,EAAIC,GAAK,KAAQH,IAAM,IAAQC,IAAM,IAAQC,IAAM,IAAQC,IAAM,GAC7E,MAAO,GAGRJ,GAAO,CACR,CAEA,KAAOA,EAAMD,GAAK,CACjB,IAAMM,EAAOP,EAAK,WAAWE,CAAG,EAChC,GAAIK,EAAO,KAAQA,IAAS,GAC3B,MAAO,GAGRL,GACD,CAEA,MAAO,EACR,ECzBA,IAAMM,EAAY,IAAI,KAAK,UAOdC,EAAqBC,GAAwB,CACzD,GAAIC,EAAiBD,CAAI,EACxB,OAAOA,EAAK,OAGb,IAAME,EAAWJ,EAAU,QAAQE,CAAI,EAAE,OAAO,QAAQ,EAAC,EACrDG,EAAQ,EAEZ,KAAO,CAACD,EAAS,KAAI,EAAG,MACvBC,IAGD,OAAOA,CACR,EASaC,EAA0B,CAACJ,EAAcK,EAAaC,IAAwB,CAC1F,IAAMC,EAAWP,EAAK,OAGtB,GAAIO,EAAWF,EACd,MAAO,GAKR,GAAIA,IAAQ,GAAKE,GAAYD,EAC5B,MAAO,GAGR,GAAIL,EAAiBD,CAAI,EACxB,OAAOO,GAAYD,EAIpB,IAAMJ,EAAWJ,EAAU,QAAQE,CAAI,EAAE,OAAO,QAAQ,EAAC,EACrDG,EAAQ,EAEZ,KAAO,CAACD,EAAS,KAAI,EAAG,MAEvB,GADAC,IACIA,EAAQG,EACX,MAAO,GAIT,OAAOH,GAASE,CACjB","names":["isAsciiWithoutCr","text","len","idx","a","b","c","d","code","segmenter","getGraphemeLength","text","isAsciiWithoutCr","iterator","count","isGraphemeLengthInRange","min","max","utf16Len"],"sources":["../esm/npm/@atcute/util-text@1.2.0/node_modules/@atcute/util-text/lib/utils.ts","../esm/npm/@atcute/util-text@1.2.0/node_modules/@atcute/util-text/lib/index.ts"],"sourcesContent":["export const isAsciiWithoutCr = (text: string): boolean =\u003e {\n\tconst len = text.length;\n\tlet idx = 0;\n\n\twhile (idx + 3 \u003c len) {\n\t\tconst a = text.charCodeAt(idx);\n\t\tconst b = text.charCodeAt(idx + 1);\n\t\tconst c = text.charCodeAt(idx + 2);\n\t\tconst d = text.charCodeAt(idx + 3);\n\n\t\tif ((a | b | c | d) \u003e 0x7f || a === 0x0d || b === 0x0d || c === 0x0d || d === 0x0d) {\n\t\t\treturn false;\n\t\t}\n\n\t\tidx += 4;\n\t}\n\n\twhile (idx \u003c len) {\n\t\tconst code = text.charCodeAt(idx);\n\t\tif (code \u003e 0x7f || code === 0x0d) {\n\t\t\treturn false;\n\t\t}\n\n\t\tidx++;\n\t}\n\n\treturn true;\n};\n","import { isAsciiWithoutCr } from './utils.ts';\n\nconst segmenter = new Intl.Segmenter();\n\n/**\n * returns the grapheme length of a string\n * @param text string to count graphemes in\n * @returns grapheme count\n */\nexport const getGraphemeLength = (text: string): number =\u003e {\n\tif (isAsciiWithoutCr(text)) {\n\t\treturn text.length;\n\t}\n\n\tconst iterator = segmenter.segment(text)[Symbol.iterator]();\n\tlet count = 0;\n\n\twhile (!iterator.next().done) {\n\t\tcount++;\n\t}\n\n\treturn count;\n};\n\n/**\n * checks if the grapheme length of a string is within the specified range\n * @param text string to check\n * @param min minimum grapheme length (inclusive)\n * @param max maximum grapheme length (inclusive)\n * @returns true if the grapheme length is within range\n */\nexport const isGraphemeLengthInRange = (text: string, min: number, max: number): boolean =\u003e {\n\tconst utf16Len = text.length;\n\n\t// UTF-16 length \u003c min means grapheme count \u003c min\n\tif (utf16Len \u003c min) {\n\t\treturn false;\n\t}\n\n\t// if there's no minimum constraint and UTF-16 length is within max,\n\t// grapheme count is definitely within max\n\tif (min === 0 \u0026\u0026 utf16Len \u003c= max) {\n\t\treturn true;\n\t}\n\n\tif (isAsciiWithoutCr(text)) {\n\t\treturn utf16Len \u003c= max;\n\t}\n\n\t// count graphemes with early termination\n\tconst iterator = segmenter.segment(text)[Symbol.iterator]();\n\tlet count = 0;\n\n\twhile (!iterator.next().done) {\n\t\tcount++;\n\t\tif (count \u003e max) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn count \u003e= min;\n};\n"],"version":3}
-3
vendor/esm.sh/@badrap/valita@0.4.6/es2022/valita.mjs
··· 1 - /* esm.sh - @badrap/valita@0.4.6 */ 2 - function A(n){return{ok:!1,code:"invalid_type",expected:n}}var q=A([]),ee=A(["string"]),ne=A(["number"]),te=A(["bigint"]),se=A(["boolean"]),oe=A(["undefined"]),ie=A(["null"]),be=A(["object"]),Oe=A(["array"]),Q={ok:!1,code:"missing_value"};function N(n,e){return n?{ok:!1,code:"join",left:n,right:e}:e}function L(n,e){return{ok:!1,code:"prepend",key:n,tree:e}}function Ne(n,e){var t;let s=n.code;switch(s){case"invalid_type":return{code:s,path:e,expected:n.expected};case"invalid_literal":return{code:s,path:e,expected:n.expected};case"missing_value":return{code:s,path:e};case"invalid_length":return{code:s,path:e,minLength:n.minLength,maxLength:n.maxLength};case"unrecognized_keys":return{code:s,path:e,keys:n.keys};case"invalid_union":return{code:s,path:e,tree:n.tree,issues:D(n.tree)};case"custom_error":return typeof n.error=="object"&&n.error.path!==void 0&&e.push(...n.error.path),{code:s,path:e,message:typeof n.error=="string"?n.error:(t=n.error)===null||t===void 0?void 0:t.message,error:n.error}}}function D(n,e=[],t=[]){for(;;)if(n.code==="join")D(n.left,e.slice(),t),n=n.right;else if(n.code==="prepend")e.push(n.key),n=n.tree;else return t.push(Ne(n,e)),t}function F(n,e){return n.length===0?"nothing":n.length===1?n[0]:`${n.slice(0,-1).join(", ")} ${e} ${n[n.length-1]}`}function Z(n){return typeof n=="bigint"?`${n}n`:JSON.stringify(n)}function re(n){let e=0;for(;;)if(n.code==="join")e+=re(n.left),n=n.right;else if(n.code==="prepend")n=n.tree;else return e+1}function ue(n){let e="",t=0;for(;;)if(n.code==="join")t+=re(n.right),n=n.left;else if(n.code==="prepend")e+=`.${n.key}`,n=n.tree;else break;let s="validation failed";if(n.code==="invalid_type")s=`expected ${F(n.expected,"or")}`;else if(n.code==="invalid_literal")s=`expected ${F(n.expected.map(Z),"or")}`;else if(n.code==="missing_value")s="missing value";else if(n.code==="unrecognized_keys"){let o=n.keys;s=`unrecognized ${o.length===1?"key":"keys"} ${F(o.map(Z),"and")}`}else if(n.code==="invalid_length"){let o=n.minLength,d=n.maxLength;s="expected an array with ",o>0?d===o?s+=`${o}`:d!==void 0?s+=`between ${o} and ${d}`:s+=`at least ${o}`:s+=`at most ${d??"\u221E"}`,s+=" item(s)"}else if(n.code==="custom_error"){let o=n.error;typeof o=="string"?s=o:o!==void 0&&(o.message!==void 0&&(s=o.message),o.path!==void 0&&(e+="."+o.path.join(".")))}let i=`${n.code} at .${e.slice(1)} (${s})`;return t===1?i+=" (+ 1 other issue)":t>1&&(i+=` (+ ${t} other issues)`),i}function w(n,e,t,s){return Object.defineProperty(n,e,{value:t,enumerable:s,writable:!1}),t}var P=class extends Error{constructor(e){super(ue(e)),Object.setPrototypeOf(this,new.target.prototype),this.name=new.target.name,this._issueTree=e}get issues(){return w(this,"issues",D(this._issueTree),!0)}},$=class{constructor(e){this.ok=!1,this._issueTree=e}get issues(){return w(this,"issues",D(this._issueTree),!0)}get message(){return w(this,"message",ue(this._issueTree),!0)}throw(){throw new P(this._issueTree)}};function ce(n){return{ok:!0,value:n}}function Be(n){return new $({ok:!1,code:"custom_error",error:n})}function fe(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}var O=1,U=2,X=4,de=0,le=1,ae=2,he=3,pe=4,_e=5,me=6,ge=7,ye=8,ke=9,Te=10,xe=11,ve=12,we=13,Ee=14,Le=15,S=(n,e)=>({tag:n,match:e});function x(n,e,t){switch(n.tag){case de:return;case le:return q;case ae:return typeof e=="string"?void 0:ee;case he:return typeof e=="number"?void 0:ne;case pe:return typeof e=="bigint"?void 0:te;case _e:return typeof e=="boolean"?void 0:se;case me:return e===null?void 0:ie;case ge:return e===void 0?void 0:oe;case ye:return n.match(e,t);case ke:return n.match(e,t);case Te:return n.match(e,t);case xe:return n.match(e,t);case ve:return n.match(e,t);case we:return n.match(e,t);case Ee:return n.match(e,t);default:return n.match(e,t)}}var h=Symbol.for("@valita/internal"),z=class{default(e){let t=ce(e);return new E(this.optional(),s=>s===void 0?t:void 0)}assert(e,t){let s={ok:!1,code:"custom_error",error:t};return new E(this,(i,o)=>e(i,H(o))?void 0:s)}map(e){return new E(this,(t,s)=>({ok:!0,value:e(t,H(s))}))}chain(e){return typeof e=="function"?new E(this,(t,s)=>{let i=e(t,H(s));return i.ok?i:i._issueTree}):new E(this,(t,s)=>x(e[h],t,s))}},I=class extends z{optional(e){let t=new K(this);return e?new E(t,s=>s===void 0?{ok:!0,value:e()}:void 0):t}nullable(e){let t=new Y([je(),this]);return e?new E(t,s=>s===null?{ok:!0,value:e()}:void 0):t}_toTerminals(e){e(this)}try(e,t){let s=x(this[h],e,t===void 0?O:t.mode==="strip"?U:t.mode==="passthrough"?0:O);return s===void 0||s.ok?{ok:!0,value:s===void 0?e:s.value}:new $(s)}parse(e,t){let s=x(this[h],e,t===void 0?O:t.mode==="strip"?U:t.mode==="passthrough"?0:O);if(s===void 0||s.ok)return s===void 0?e:s.value;throw new P(s)}},Y=class extends I{constructor(e){super(),this.name="union",this.options=e}get[h](){let e=this.options.map(t=>t[h]);return w(this,h,S(we,(t,s)=>{let i=q;for(let o of e){let d=x(o,t,s);if(d===void 0||d.ok)return d;i=d}return i}),!1)}_toTerminals(e){for(let t of this.options)t._toTerminals(e)}},K=class extends z{constructor(e){super(),this.name="optional",this.type=e}optional(e){return e?new E(this,t=>t===void 0?{ok:!0,value:e()}:void 0):this}get[h](){let e=this.type[h];return w(this,h,S(ke,(t,s)=>t===void 0||s&X?void 0:x(e,t,s)),!1)}_toTerminals(e){e(this),e(Ce()),this.type._toTerminals(e)}};function Se(n,e){if(typeof n!="number"){let t=e>>5;for(let s=n.length;s<=t;s++)n.push(0);return n[t]|=1<<e%32,n}else return e<32?n|1<<e:Se([n,0],e)}function M(n,e){return typeof n=="number"?e<32?n>>>e&1:0:n[e>>5]>>>e%32&1}var j=class n extends I{constructor(e,t,s){super(),this.name="object",this.shape=e,this._restType=t,this._checks=s}get[h](){let e=Ge(this.shape,this._restType,this._checks);return w(this,h,S(Te,(t,s)=>fe(t)?e(t,s):be),!1)}check(e,t){var s;let i={ok:!1,code:"custom_error",error:t};return new n(this.shape,this._restType,[...(s=this._checks)!==null&&s!==void 0?s:[],{func:e,issue:i}])}rest(e){return new n(this.shape,e)}extend(e){return new n(Object.assign(Object.assign({},this.shape),e),this._restType)}pick(...e){let t={};for(let s of e)v(t,s,this.shape[s]);return new n(t,void 0)}omit(...e){let t=Object.assign({},this.shape);for(let s of e)delete t[s];return new n(t,this._restType)}partial(){var e;let t={};for(let i of Object.keys(this.shape))v(t,i,this.shape[i].optional());let s=(e=this._restType)===null||e===void 0?void 0:e.optional();return new n(t,s)}};function v(n,e,t){e==="__proto__"?Object.defineProperty(n,e,{value:t,writable:!0,enumerable:!0,configurable:!0}):n[e]=t}function Ge(n,e,t){let s=Object.keys(n).map((u,y)=>{let r=n[u],a=!1;return r._toTerminals(f=>{a||(a=f.name==="optional")}),{key:u,index:y,matcher:r[h],optional:a,missing:L(u,Q)}}),i=Object.create(null);for(let u of s)i[u.key]=u;let o=e?.[h],d=s.length===0&&e?.name==="unknown"&&t===void 0;return(u,y)=>{if(d)return;let r,a,f,l=0,_=0;if(y&(O|U)||o!==void 0)for(let c in u){let p=u[c],m=i[c];if(m===void 0&&o===void 0){if(y&O)f===void 0?(f=[c],a=N(a,{ok:!1,code:"unrecognized_keys",keys:f})):f.push(c);else if(y&U&&a===void 0&&r===void 0){r={};for(let g=0;g<s.length;g++)if(M(l,g)){let k=s[g].key;v(r,k,u[k])}}continue}let T=x(m===void 0?o:m.matcher,p,y);if(T===void 0)r!==void 0&&a===void 0&&v(r,c,p);else if(!T.ok)a=N(a,L(c,T));else if(a===void 0){if(r===void 0)if(r={},o===void 0){for(let g=0;g<s.length;g++)if(M(l,g)){let k=s[g].key;v(r,k,u[k])}}else for(let g in u)v(r,g,u[g]);v(r,c,T.value)}m!==void 0&&(_++,l=Se(l,m.index))}if(_<s.length)for(let c=0;c<s.length;c++){if(M(l,c))continue;let p=s[c],m=u[p.key],T=0;if(m===void 0&&!(p.key in u)){if(!p.optional){a=N(a,p.missing);continue}T=X}let g=x(p.matcher,m,y|T);if(g===void 0)r!==void 0&&a===void 0&&!T&&v(r,p.key,m);else if(!g.ok)a=N(a,L(p.key,g));else if(a===void 0){if(r===void 0)if(r={},o===void 0){for(let k=0;k<s.length;k++)if(k<c||M(l,k)){let G=s[k].key;v(r,G,u[G])}}else{for(let k in u)v(r,k,u[k]);for(let k=0;k<c;k++)if(!M(l,k)){let G=s[k].key;v(r,G,u[G])}}v(r,p.key,g.value)}}if(a!==void 0)return a;if(t!==void 0){for(let{func:c,issue:p}of t)if(!c(r??u))return p}return r&&{ok:!0,value:r}}}var C=class n extends I{constructor(e,t,s){super(),this.name="array",this._prefix=e,this._rest=t,this._suffix=s}get[h](){var e,t;let s=this._prefix.map(r=>r[h]),i=this._suffix.map(r=>r[h]),o=(t=(e=this._rest)===null||e===void 0?void 0:e[h])!==null&&t!==void 0?t:S(1,()=>Q),d=s.length+i.length,u=this._rest?1/0:d,y={ok:!1,code:"invalid_length",minLength:d,maxLength:u===1/0?void 0:u};return w(this,h,S(xe,(r,a)=>{if(!Array.isArray(r))return Oe;let f=r.length;if(f<d||f>u)return y;let l=s.length,_=r.length-i.length,c,p=r;for(let m=0;m<r.length;m++){let T=m<l?s[m]:m>=_?i[m-_]:o,g=x(T,r[m],a);g!==void 0&&(g.ok?(p===r&&(p=r.slice()),p[m]=g.value):c=N(c,L(m,g)))}return c||(r===p?void 0:{ok:!0,value:p})}),!1)}concat(e){if(this._rest){if(e._rest)throw new TypeError("can not concatenate two variadic types");return new n(this._prefix,this._rest,[...this._suffix,...e._prefix,...e._suffix])}else return e._rest?new n([...this._prefix,...this._suffix,...e._prefix],e._rest,e._suffix):new n([...this._prefix,...this._suffix,...e._prefix,...e._suffix],e._rest,e._suffix)}};function B(n){let e=typeof n;return e!=="object"?e:n===null?"null":Array.isArray(n)?"array":e}function R(n){return[...new Set(n)]}function Ie(n){var e,t,s;let i=new Map,o=new Map,d=new Map,u=[],y=[],r=[];for(let{root:f,terminal:l}of n)if(i.set(f,(e=i.get(f))!==null&&e!==void 0?e:i.size),l.name!=="never")if(l.name==="optional")y.push(f);else if(l.name==="unknown")u.push(f);else if(l.name==="literal"){let _=(t=o.get(l.value))!==null&&t!==void 0?t:[];_.push(f),o.set(l.value,_),r.push(B(l.value))}else{let _=(s=d.get(l.name))!==null&&s!==void 0?s:[];_.push(f),d.set(l.name,_),r.push(l.name)}let a=(f,l)=>{var _,c;return((_=i.get(f))!==null&&_!==void 0?_:0)-((c=i.get(l))!==null&&c!==void 0?c:0)};for(let[f,l]of o){let _=d.get(B(f));_?(_.push(...l),o.delete(f)):o.set(f,R(l.concat(u)).sort(a))}for(let[f,l]of d)d.set(f,R(l.concat(u)).sort(a));return{types:d,literals:o,unknowns:R(u).sort(a),optionals:R(y).sort(a),expectedTypes:R(r)}}function Me(n,e){var t;let s=[];for(let{root:c,terminal:p}of n)p.shape[e]._toTerminals(m=>s.push({root:c,terminal:m}));let{types:i,literals:o,optionals:d,unknowns:u,expectedTypes:y}=Ie(s);if(u.length>0||d.length>1)return;for(let c of o.values())if(c.length>1)return;for(let c of i.values())if(c.length>1)return;let r=L(e,Q),a=L(e,i.size===0?{ok:!1,code:"invalid_literal",expected:[...o.keys()]}:{ok:!1,code:"invalid_type",expected:y}),f=o.size>0?new Map:void 0;if(f)for(let[c,p]of o)f.set(c,p[0][h]);let l=i.size>0?{}:void 0;if(l)for(let[c,p]of i)l[c]=p[0][h];let _=(t=d[0])===null||t===void 0?void 0:t[h];return(c,p)=>{var m;let T=c[e];if(T===void 0&&!(e in c))return _===void 0?r:x(_,c,p);let g=(m=l?.[B(T)])!==null&&m!==void 0?m:f?.get(T);return g?x(g,c,p):a}}function Re(n){var e;let t=[],s=new Map;for(let{root:i,terminal:o}of n){if(o.name==="unknown")return;if(o.name==="object"){for(let d in o.shape)s.set(d,((e=s.get(d))!==null&&e!==void 0?e:0)+1);t.push({root:i,terminal:o})}}if(!(t.length<2)){for(let[i,o]of s)if(o===t.length){let d=Me(t,i);if(d)return d}}}function Ue(n){let{expectedTypes:e,literals:t,types:s,unknowns:i,optionals:o}=Ie(n),d=s.size===0&&i.length===0?{ok:!1,code:"invalid_literal",expected:[...t.keys()]}:{ok:!1,code:"invalid_type",expected:e},u=t.size>0?new Map:void 0;if(u)for(let[f,l]of t)u.set(f,l.map(_=>_[h]));let y=s.size>0?{}:void 0;if(y)for(let[f,l]of s)y[f]=l.map(_=>_[h]);let r=o.map(f=>f[h]),a=i.map(f=>f[h]);return(f,l)=>{var _,c;let p=l&X?r:(c=(_=y?.[B(f)])!==null&&_!==void 0?_:u?.get(f))!==null&&c!==void 0?c:a,m=0,T=d;for(let g=0;g<p.length;g++){let k=x(p[g],f,l);if(k===void 0||k.ok)return k;T=m>0?N(T,k):k,m++}return m>1?{ok:!1,code:"invalid_union",tree:T}:T}}var J=class extends I{constructor(e){super(),this.name="union",this.options=e}_toTerminals(e){for(let t of this.options)t._toTerminals(e)}get[h](){let e=[];for(let i of this.options)i._toTerminals(o=>{e.push({root:i,terminal:o})});let t=Ue(e),s=Re(e);return w(this,h,S(ve,(i,o)=>s!==void 0&&fe(i)?s(i,o):t(i,o)),!1)}},Pe=Object.freeze({mode:"strict"}),$e=Object.freeze({mode:"strip"}),ze=Object.freeze({mode:"passthrough"});function H(n){return n&O?Pe:n&U?$e:ze}var E=class n extends I{constructor(e,t){super(),this.name="transform",this._transformed=e,this._transform=t}get[h](){let e=[],t=this;for(;t instanceof n;)e.push(t._transform),t=t._transformed;e.reverse();let s=t[h],i=ce(void 0);return w(this,h,S(Ee,(o,d)=>{let u=x(s,o,d);if(u!==void 0&&!u.ok)return u;let y;u!==void 0?y=u.value:d&X?(y=void 0,u=i):y=o;for(let r=0;r<e.length;r++){let a=e[r](y,d);if(a!==void 0){if(!a.ok)return a;y=a.value,u=a}}return u}),!1)}_toTerminals(e){this._transformed._toTerminals(e)}},V=class extends I{constructor(e){super(),this.name="lazy",this._recursing=!1,this._definer=e}get type(){return w(this,"type",this._definer(),!0)}get[h](){let e=S(Le,(t,s)=>{let i=this.type[h];return e.tag=i.tag,e.match=i.match,w(this,h,i,!1),x(i,t,s)});return e}_toTerminals(e){if(!this._recursing){this._recursing=!0;try{this.type._toTerminals(e)}finally{this._recursing=!1}}}};function b(n,e,t){let s=S(e,t);class i extends I{constructor(){super(),this.name=n,this[h]=s}}let o=new i;return()=>o}var Ae=b("unknown",de,()=>{}),De=b("never",le,()=>q),Xe=b("string",ae,n=>typeof n=="string"?void 0:ee),Fe=b("number",he,n=>typeof n=="number"?void 0:ne),He=b("bigint",pe,n=>typeof n=="bigint"?void 0:te),Ye=b("boolean",_e,n=>typeof n=="boolean"?void 0:se),je=b("null",me,n=>n===null?void 0:ie);var Ce=b("undefined",ge,n=>n===void 0?void 0:oe);var W=class extends I{constructor(e){super(),this.name="literal";let t={ok:!1,code:"invalid_literal",expected:[e]};this[h]=S(ye,s=>s===e?void 0:t),this.value=e}},Ke=n=>new W(n),Je=n=>new j(n,void 0),Ve=n=>new j({},n??Ae()),We=n=>new C([],n??Ae(),[]),qe=n=>new C(n,void 0,[]),Qe=(...n)=>new J(n),Ze=n=>new V(n);export{P as ValitaError,We as array,He as bigint,Ye as boolean,Be as err,Ze as lazy,Ke as literal,De as never,je as null,Fe as number,Je as object,ce as ok,Ve as record,Xe as string,qe as tuple,Ce as undefined,Qe as union,Ae as unknown}; 3 - //# sourceMappingURL=valita.mjs.map
+149
vendor/esm.sh/@preact/signals-core@1.14.1/dist/signals-core.d.ts
··· 1 + declare const BRAND_SYMBOL: unique symbol; 2 + type Node = { 3 + _source: Signal; 4 + _prevSource?: Node; 5 + _nextSource?: Node; 6 + _target: Computed | Effect; 7 + _prevTarget?: Node; 8 + _nextTarget?: Node; 9 + _version: number; 10 + _rollbackNode?: Node; 11 + }; 12 + /** 13 + * Combine multiple value updates into one "commit" at the end of the provided callback. 14 + * 15 + * Batches can be nested and changes are only flushed once the outermost batch callback 16 + * completes. 17 + * 18 + * Accessing a signal that has been modified within a batch will reflect its updated 19 + * value. 20 + * 21 + * @param fn The callback function. 22 + * @returns The value returned by the callback. 23 + */ 24 + declare function batch<T>(fn: () => T): T; 25 + /** 26 + * Run a callback function that can access signal values without 27 + * subscribing to the signal updates. 28 + * 29 + * @param fn The callback function. 30 + * @returns The value returned by the callback. 31 + */ 32 + declare function untracked<T>(fn: () => T): T; 33 + /** 34 + * The base class for plain and computed signals. 35 + */ 36 + declare class Signal<T = any> { 37 + constructor(value?: T, options?: SignalOptions<T>); 38 + subscribe(fn: (value: T) => void): () => void; 39 + name?: string; 40 + valueOf(): T; 41 + toString(): string; 42 + toJSON(): T; 43 + peek(): T; 44 + brand: typeof BRAND_SYMBOL; 45 + get value(): T; 46 + set value(value: T); 47 + } 48 + export interface SignalOptions<T = any> { 49 + watched?: (this: Signal<T>) => void; 50 + unwatched?: (this: Signal<T>) => void; 51 + name?: string; 52 + } 53 + /** 54 + * Create a new plain signal. 55 + * 56 + * @param value The initial value for the signal. 57 + * @returns A new signal. 58 + */ 59 + export declare function signal<T>(value: T, options?: SignalOptions<T>): Signal<T>; 60 + export declare function signal<T = undefined>(): Signal<T | undefined>; 61 + /** 62 + * The base class for computed signals. 63 + */ 64 + declare class Computed<T = any> extends Signal<T> { 65 + _fn: () => T; 66 + _sources?: Node; 67 + _globalVersion: number; 68 + _flags: number; 69 + constructor(fn: () => T, options?: SignalOptions<T>); 70 + _notify(): void; 71 + get value(): T; 72 + } 73 + /** 74 + * An interface for read-only signals. 75 + */ 76 + interface ReadonlySignal<T = any> { 77 + readonly value: T; 78 + peek(): T; 79 + subscribe(fn: (value: T) => void): () => void; 80 + valueOf(): T; 81 + toString(): string; 82 + toJSON(): T; 83 + brand: typeof BRAND_SYMBOL; 84 + } 85 + /** 86 + * Create a new signal that is computed based on the values of other signals. 87 + * 88 + * The returned computed signal is read-only, and its value is automatically 89 + * updated when any signals accessed from within the callback function change. 90 + * 91 + * @param fn The effect callback. 92 + * @returns A new read-only signal. 93 + */ 94 + declare function computed<T>(fn: () => T, options?: SignalOptions<T>): ReadonlySignal<T>; 95 + type EffectFn = ((this: { 96 + dispose: () => void; 97 + }) => void | (() => void)) | (() => void | (() => void)); 98 + type DisposeSymbol = typeof Symbol extends { 99 + readonly dispose: infer TDispose; 100 + } ? TDispose : never; 101 + type DisposableLike = { 102 + [K in DisposeSymbol & PropertyKey]: () => void; 103 + }; 104 + type DisposeFn = (() => void) & DisposableLike; 105 + /** 106 + * The base class for reactive effects. 107 + */ 108 + declare class Effect { 109 + _fn?: EffectFn; 110 + _cleanup?: () => void; 111 + _sources?: Node; 112 + _nextBatchedEffect?: Effect; 113 + _flags: number; 114 + _debugCallback?: () => void; 115 + name?: string; 116 + constructor(fn: EffectFn, options?: EffectOptions); 117 + _callback(): void; 118 + _start(): () => void; 119 + _notify(): void; 120 + _dispose(): void; 121 + dispose(): void; 122 + } 123 + export interface EffectOptions { 124 + name?: string; 125 + } 126 + /** 127 + * Create an effect to run arbitrary code in response to signal changes. 128 + * 129 + * An effect tracks which signals are accessed within the given callback 130 + * function `fn`, and re-runs the callback when those signals change. 131 + * 132 + * The callback may return a cleanup function. The cleanup function gets 133 + * run once, either when the callback is next called or when the effect 134 + * gets disposed, whichever happens first. 135 + * 136 + * @param fn The effect callback. 137 + * @returns A function for disposing the effect. 138 + */ 139 + declare function effect(fn: EffectFn, options?: EffectOptions): DisposeFn; 140 + declare function action<TArgs extends unknown[], TReturn>(fn: (...args: TArgs) => TReturn): (...args: TArgs) => TReturn; 141 + /** Models should only contain signals, actions, and nested objects containing only signals and actions. */ 142 + type ValidateModel<TModel> = { 143 + [Key in keyof TModel]: TModel[Key] extends ReadonlySignal<unknown> ? TModel[Key] : TModel[Key] extends (...args: any[]) => any ? TModel[Key] : TModel[Key] extends object ? ValidateModel<TModel[Key]> : `Property ${Key extends string ? `'${Key}' ` : ""}is not a Signal, Action, or an object that contains only Signals and Actions.`; 144 + }; 145 + export type Model<TModel> = ValidateModel<TModel> & DisposableLike; 146 + export type ModelFactory<TModel, TFactoryArgs extends any[] = []> = (...args: TFactoryArgs) => ValidateModel<TModel>; 147 + export type ModelConstructor<TModel, TFactoryArgs extends any[] = []> = new (...args: TFactoryArgs) => Model<TModel>; 148 + declare function createModel<TModel, TFactoryArgs extends any[] = []>(modelFactory: ModelFactory<TModel, TFactoryArgs>): ModelConstructor<TModel, TFactoryArgs>; 149 + export { computed, effect, batch, untracked, action, createModel, Signal, ReadonlySignal, Effect, Computed, };
+42
vendor/esm.sh/@preact/signals@2.9.0/X-ZXByZWFjdA/dist/signals.d.ts
··· 1 + import { signal, computed, batch, effect, action, createModel, type Model, type ModelConstructor, Signal, type ReadonlySignal, untracked, SignalOptions, EffectOptions } from "https://esm.sh/@preact/signals-core@1.14.1/dist/signals-core.d.ts"; 2 + export { signal, computed, batch, effect, action, type Model, type ModelConstructor, createModel, Signal, type ReadonlySignal, untracked, }; 3 + export declare function useSignal<T>(value: T, options?: SignalOptions<T>): Signal<T>; 4 + export declare function useSignal<T = undefined>(): Signal<T | undefined>; 5 + export declare function useComputed<T>(compute: () => T, options?: SignalOptions<T>): ReadonlySignal<T>; 6 + export declare function useSignalEffect(cb: () => void | (() => void), options?: EffectOptions): void; 7 + export declare function useModel<TModel>(factory: ModelConstructor<TModel, []> | (() => Model<TModel>)): Model<TModel>; 8 + /** 9 + * @todo Determine which Reactive implementation we'll be using. 10 + * @internal 11 + */ 12 + /** 13 + * @internal 14 + * Update a Reactive's using the properties of an object or other Reactive. 15 + * Also works for Signals. 16 + * @example 17 + * // Update a Reactive with Object.assign()-like syntax: 18 + * const r = reactive({ name: "Alice" }); 19 + * update(r, { name: "Bob" }); 20 + * update(r, { age: 42 }); // property 'age' does not exist in type '{ name?: string }' 21 + * update(r, 2); // '2' has no properties in common with '{ name?: string }' 22 + * console.log(r.name.value); // "Bob" 23 + * 24 + * @example 25 + * // Update a Reactive with the properties of another Reactive: 26 + * const A = reactive({ name: "Alice" }); 27 + * const B = reactive({ name: "Bob", age: 42 }); 28 + * update(A, B); 29 + * console.log(`${A.name} is ${A.age}`); // "Bob is 42" 30 + * 31 + * @example 32 + * // Update a signal with assign()-like syntax: 33 + * const s = signal(42); 34 + * update(s, "hi"); // Argument type 'string' not assignable to type 'number' 35 + * update(s, {}); // Argument type '{}' not assignable to type 'number' 36 + * update(s, 43); 37 + * console.log(s.value); // 43 38 + * 39 + * @param obj The Reactive or Signal to be updated 40 + * @param update The value, Signal, object or Reactive to update `obj` to match 41 + * @param overwrite If `true`, any properties `obj` missing from `update` are set to `undefined` 42 + */
+5
vendor/esm.sh/htm@3.1.1/X-ZXByZWFjdA/preact/index.d.ts
··· 1 + import { h, VNode, Component } from 'preact'; 2 + export * from 'preact/hooks'; 3 + declare function render(tree: VNode, parent: HTMLElement): void; 4 + declare const html: (strings: TemplateStringsArray, ...values: any[]) => VNode; 5 + export { h, html, render, Component };
-3
vendor/esm.sh/nanoid@5.1.7/es2022/nanoid.mjs
··· 1 - /* esm.sh - nanoid@5.1.7 */ 2 - var o="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var u=t=>crypto.getRandomValues(new Uint8Array(t)),s=(t,e,l)=>{let n=(2<<Math.log2(t.length-1))-1,p=-~(1.6*n*e/t.length);return(h=e)=>{let r="";for(;;){let m=l(p),a=p|0;for(;a--;)if(r+=t[m[a]&n]||"",r.length>=h)return r}}},A=(t,e=21)=>s(t,e|0,u),g=(t=21)=>{let e="",l=crypto.getRandomValues(new Uint8Array(t|=0));for(;t--;)e+=o[l[t]&63];return e};export{A as customAlphabet,s as customRandom,g as nanoid,u as random,o as urlAlphabet}; 3 - //# sourceMappingURL=./nanoid.mjs.map
-1
vendor/esm.sh/nanoid@5.1.7/es2022/nanoid.mjs.map
··· 1 - {"mappings":";AAAO,IAAIA,EACT,mECEK,IAAIC,EAASC,GAAS,OAAO,gBAAgB,IAAI,WAAWA,CAAK,CAAC,EAC9DC,EAAe,CAACC,EAAUC,EAAaC,IAAc,CAC9D,IAAIC,GAAQ,GAAK,KAAK,KAAKH,EAAS,OAAS,CAAC,GAAK,EAC/CI,EAAO,CAAC,EAAG,IAAMD,EAAOF,EAAeD,EAAS,QACpD,MAAO,CAACK,EAAOJ,IAAgB,CAC7B,IAAIK,EAAK,GACT,OAAa,CACX,IAAIR,EAAQI,EAAUE,CAAI,EACtBG,EAAIH,EAAO,EACf,KAAOG,KAEL,GADAD,GAAMN,EAASF,EAAMS,CAAC,EAAIJ,CAAI,GAAK,GAC/BG,EAAG,QAAUD,EAAM,OAAOC,CAElC,CACF,CACF,EACWE,EAAiB,CAACR,EAAUK,EAAO,KAC5CN,EAAaC,EAAUK,EAAO,EAAGR,CAAM,EAC9BY,EAAS,CAACJ,EAAO,KAAO,CACjC,IAAIC,EAAK,GACLR,EAAQ,OAAO,gBAAgB,IAAI,WAAYO,GAAQ,CAAE,CAAC,EAC9D,KAAOA,KACLC,GAAMI,EAAkBZ,EAAMO,CAAI,EAAI,EAAE,EAE1C,OAAOC,CACT","names":["urlAlphabet","random","bytes","customRandom","alphabet","defaultSize","getRandom","mask","step","size","id","j","customAlphabet","nanoid","urlAlphabet"],"sources":["../esm/npm/nanoid@5.1.7/node_modules/nanoid/url-alphabet/index.js","../esm/npm/nanoid@5.1.7/node_modules/nanoid/index.browser.js"],"sourcesContent":["export let urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n","/* @ts-self-types=\"./index.d.ts\" */\nimport { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes =\u003e crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) =\u003e {\n let mask = (2 \u003c\u003c Math.log2(alphabet.length - 1)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) =\u003e {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step | 0\n while (j--) {\n id += alphabet[bytes[j] \u0026 mask] || ''\n if (id.length \u003e= size) return id\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =\u003e\n customRandom(alphabet, size | 0, random)\nexport let nanoid = (size = 21) =\u003e {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array((size |= 0)))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] \u0026 63]\n }\n return id\n}\n"],"version":3}
+145
vendor/esm.sh/preact@10.29.1/hooks/src/index.d.ts
··· 1 + // Intentionally not using a relative path to take advantage of 2 + // the TS version resolution mechanism 3 + import { ErrorInfo, PreactContext, Ref, RefObject } from 'https://esm.sh/preact@10.29.1/src/index.d.ts'; 4 + 5 + type Inputs = ReadonlyArray<unknown>; 6 + 7 + export type Dispatch<A> = (value: A) => void; 8 + export type StateUpdater<S> = S | ((prevState: S) => S); 9 + 10 + /** 11 + * Returns a stateful value, and a function to update it. 12 + * @param initialState The initial value (or a function that returns the initial value) 13 + */ 14 + export function useState<S>( 15 + initialState: S | (() => S) 16 + ): [S, Dispatch<StateUpdater<S>>]; 17 + 18 + export function useState<S = undefined>(): [ 19 + S | undefined, 20 + Dispatch<StateUpdater<S | undefined>> 21 + ]; 22 + 23 + export type Reducer<S, A> = (prevState: S, action: A) => S; 24 + 25 + /** 26 + * An alternative to `useState`. 27 + * 28 + * `useReducer` is usually preferable to `useState` when you have complex state logic that involves 29 + * multiple sub-values. It also lets you optimize performance for components that trigger deep 30 + * updates because you can pass `dispatch` down instead of callbacks. 31 + * @param reducer Given the current state and an action, returns the new state 32 + * @param initialState The initial value to store as state 33 + */ 34 + export function useReducer<S, A>( 35 + reducer: Reducer<S, A>, 36 + initialState: S 37 + ): [S, Dispatch<A>]; 38 + 39 + /** 40 + * An alternative to `useState`. 41 + * 42 + * `useReducer` is usually preferable to `useState` when you have complex state logic that involves 43 + * multiple sub-values. It also lets you optimize performance for components that trigger deep 44 + * updates because you can pass `dispatch` down instead of callbacks. 45 + * @param reducer Given the current state and an action, returns the new state 46 + * @param initialArg The initial argument to pass to the `init` function 47 + * @param init A function that, given the `initialArg`, returns the initial value to store as state 48 + */ 49 + export function useReducer<S, A, I>( 50 + reducer: Reducer<S, A>, 51 + initialArg: I, 52 + init: (arg: I) => S 53 + ): [S, Dispatch<A>]; 54 + 55 + /** @deprecated Use the `Ref` type instead. */ 56 + type PropRef<T> = MutableRef<T>; 57 + 58 + interface MutableRef<T> { 59 + current: T; 60 + } 61 + 62 + /** 63 + * `useRef` returns a mutable ref object whose `.current` property is initialized to the passed argument 64 + * (`initialValue`). The returned object will persist for the full lifetime of the component. 65 + * 66 + * Note that `useRef()` is useful for more than the `ref` attribute. It’s handy for keeping any mutable 67 + * value around similar to how you’d use instance fields in classes. 68 + * 69 + * @param initialValue the initial value to store in the ref object 70 + */ 71 + export function useRef<T>(initialValue: T): MutableRef<T>; 72 + export function useRef<T>(initialValue: T | null): RefObject<T>; 73 + export function useRef<T = undefined>(): MutableRef<T | undefined>; 74 + 75 + type EffectCallback = () => void | (() => void); 76 + /** 77 + * Accepts a function that contains imperative, possibly effectful code. 78 + * The effects run after browser paint, without blocking it. 79 + * 80 + * @param effect Imperative function that can return a cleanup function 81 + * @param inputs If present, effect will only activate if the values in the list change (using ===). 82 + */ 83 + export function useEffect(effect: EffectCallback, inputs?: Inputs): void; 84 + 85 + type CreateHandle = () => object; 86 + 87 + /** 88 + * @param ref The ref that will be mutated 89 + * @param create The function that will be executed to get the value that will be attached to 90 + * ref.current 91 + * @param inputs If present, effect will only activate if the values in the list change (using ===). 92 + */ 93 + export function useImperativeHandle<T, R extends T>( 94 + ref: Ref<T>, 95 + create: () => R, 96 + inputs?: Inputs 97 + ): void; 98 + 99 + /** 100 + * Accepts a function that contains imperative, possibly effectful code. 101 + * Use this to read layout from the DOM and synchronously re-render. 102 + * Updates scheduled inside `useLayoutEffect` will be flushed synchronously, after all DOM mutations but before the browser has a chance to paint. 103 + * Prefer the standard `useEffect` hook when possible to avoid blocking visual updates. 104 + * 105 + * @param effect Imperative function that can return a cleanup function 106 + * @param inputs If present, effect will only activate if the values in the list change (using ===). 107 + */ 108 + export function useLayoutEffect(effect: EffectCallback, inputs?: Inputs): void; 109 + 110 + /** 111 + * Returns a memoized version of the callback that only changes if one of the `inputs` 112 + * has changed (using ===). 113 + */ 114 + export function useCallback<T extends Function>(callback: T, inputs: Inputs): T; 115 + 116 + /** 117 + * Pass a factory function and an array of inputs. 118 + * useMemo will only recompute the memoized value when one of the inputs has changed. 119 + * This optimization helps to avoid expensive calculations on every render. 120 + * If no array is provided, a new value will be computed whenever a new function instance is passed as the first argument. 121 + */ 122 + // for `inputs`, allow undefined, but don't make it optional as that is very likely a mistake 123 + export function useMemo<T>(factory: () => T, inputs: Inputs | undefined): T; 124 + 125 + /** 126 + * Returns the current context value, as given by the nearest context provider for the given context. 127 + * When the provider updates, this Hook will trigger a rerender with the latest context value. 128 + * 129 + * @param context The context you want to use 130 + */ 131 + export function useContext<T>(context: PreactContext<T>): T; 132 + 133 + /** 134 + * Customize the displayed value in the devtools panel. 135 + * 136 + * @param value Custom hook name or object that is passed to formatter 137 + * @param formatter Formatter to modify value before sending it to the devtools 138 + */ 139 + export function useDebugValue<T>(value: T, formatter?: (value: T) => any): void; 140 + 141 + export function useErrorBoundary( 142 + callback?: (error: any, errorInfo: ErrorInfo) => Promise<void> | void 143 + ): [any, () => void]; 144 + 145 + export function useId(): string;
+2548
vendor/esm.sh/preact@10.29.1/src/dom.d.ts
··· 1 + // Most of our DOM-ish types 2 + 3 + import { ClassAttributes, PreactDOMAttributes } from 'https://esm.sh/preact@10.29.1/src/index.d.ts'; 4 + 5 + // Implementations of some DOM events that are not available in TS 5.1 6 + interface ToggleEvent extends Event { 7 + readonly newState: string; 8 + readonly oldState: string; 9 + } 10 + 11 + declare var ToggleEvent: { 12 + prototype: ToggleEvent; 13 + new (type: string, eventInitDict?: ToggleEventInit): ToggleEvent; 14 + }; 15 + 16 + interface ToggleEventInit extends EventInit { 17 + newState?: string; 18 + oldState?: string; 19 + } 20 + 21 + interface CommandEvent extends Event { 22 + readonly source: Element | null; 23 + readonly command: string; 24 + } 25 + 26 + declare var CommandEvent: { 27 + prototype: CommandEvent; 28 + new (type: string, eventInitDict?: CommandEventInit): CommandEvent; 29 + }; 30 + 31 + interface CommandEventInit extends EventInit { 32 + source: Element | null; 33 + command: string; 34 + } 35 + 36 + /** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/SnapEvent) */ 37 + interface SnapEvent extends Event { 38 + readonly snapTargetBlock: Element | null; 39 + readonly snapTargetInline: Element | null; 40 + } 41 + 42 + declare var SnapEvent: { 43 + prototype: SnapEvent; 44 + new (type: string, eventInitDict?: SnapEventInit): SnapEvent; 45 + }; 46 + 47 + interface SnapEventInit extends EventInit { 48 + snapTargetBlock?: Element | null; 49 + snapTargetInline?: Element | null; 50 + } 51 + 52 + type Booleanish = boolean | 'true' | 'false'; 53 + 54 + export interface SignalLike<T> { 55 + value: T; 56 + peek(): T; 57 + subscribe(fn: (value: T) => void): () => void; 58 + } 59 + 60 + export type Signalish<T> = T | SignalLike<T>; 61 + 62 + export type UnpackSignal<T> = T extends SignalLike<infer V> ? V : T; 63 + 64 + export type DOMCSSProperties = { 65 + [key in keyof Omit< 66 + CSSStyleDeclaration, 67 + | 'item' 68 + | 'setProperty' 69 + | 'removeProperty' 70 + | 'getPropertyValue' 71 + | 'getPropertyPriority' 72 + >]?: string | number | null | undefined; 73 + }; 74 + export type AllCSSProperties = { 75 + [key: string]: string | number | null | undefined; 76 + }; 77 + export interface CSSProperties extends AllCSSProperties, DOMCSSProperties { 78 + cssText?: string | null; 79 + } 80 + 81 + export interface SVGAttributes< 82 + Target extends EventTarget = SVGElement 83 + > extends HTMLAttributes<Target> { 84 + accentHeight?: Signalish<number | string | undefined>; 85 + accumulate?: Signalish<'none' | 'sum' | undefined>; 86 + additive?: Signalish<'replace' | 'sum' | undefined>; 87 + alignmentBaseline?: Signalish< 88 + | 'auto' 89 + | 'baseline' 90 + | 'before-edge' 91 + | 'text-before-edge' 92 + | 'middle' 93 + | 'central' 94 + | 'after-edge' 95 + | 'text-after-edge' 96 + | 'ideographic' 97 + | 'alphabetic' 98 + | 'hanging' 99 + | 'mathematical' 100 + | 'inherit' 101 + | undefined 102 + >; 103 + 'alignment-baseline'?: Signalish< 104 + | 'auto' 105 + | 'baseline' 106 + | 'before-edge' 107 + | 'text-before-edge' 108 + | 'middle' 109 + | 'central' 110 + | 'after-edge' 111 + | 'text-after-edge' 112 + | 'ideographic' 113 + | 'alphabetic' 114 + | 'hanging' 115 + | 'mathematical' 116 + | 'inherit' 117 + | undefined 118 + >; 119 + allowReorder?: Signalish<'no' | 'yes' | undefined>; 120 + 'allow-reorder'?: Signalish<'no' | 'yes' | undefined>; 121 + alphabetic?: Signalish<number | string | undefined>; 122 + amplitude?: Signalish<number | string | undefined>; 123 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/arabic-form */ 124 + arabicForm?: Signalish< 125 + 'initial' | 'medial' | 'terminal' | 'isolated' | undefined 126 + >; 127 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/arabic-form */ 128 + 'arabic-form'?: Signalish< 129 + 'initial' | 'medial' | 'terminal' | 'isolated' | undefined 130 + >; 131 + ascent?: Signalish<number | string | undefined>; 132 + attributeName?: Signalish<string | undefined>; 133 + attributeType?: Signalish<string | undefined>; 134 + azimuth?: Signalish<number | string | undefined>; 135 + baseFrequency?: Signalish<number | string | undefined>; 136 + baselineShift?: Signalish<number | string | undefined>; 137 + 'baseline-shift'?: Signalish<number | string | undefined>; 138 + baseProfile?: Signalish<number | string | undefined>; 139 + bbox?: Signalish<number | string | undefined>; 140 + begin?: Signalish<number | string | undefined>; 141 + bias?: Signalish<number | string | undefined>; 142 + by?: Signalish<number | string | undefined>; 143 + calcMode?: Signalish<number | string | undefined>; 144 + capHeight?: Signalish<number | string | undefined>; 145 + 'cap-height'?: Signalish<number | string | undefined>; 146 + clip?: Signalish<number | string | undefined>; 147 + clipPath?: Signalish<string | undefined>; 148 + 'clip-path'?: Signalish<string | undefined>; 149 + clipPathUnits?: Signalish<number | string | undefined>; 150 + clipRule?: Signalish<number | string | undefined>; 151 + 'clip-rule'?: Signalish<number | string | undefined>; 152 + colorInterpolation?: Signalish<number | string | undefined>; 153 + 'color-interpolation'?: Signalish<number | string | undefined>; 154 + colorInterpolationFilters?: Signalish< 155 + 'auto' | 'sRGB' | 'linearRGB' | 'inherit' | undefined 156 + >; 157 + 'color-interpolation-filters'?: Signalish< 158 + 'auto' | 'sRGB' | 'linearRGB' | 'inherit' | undefined 159 + >; 160 + colorProfile?: Signalish<number | string | undefined>; 161 + 'color-profile'?: Signalish<number | string | undefined>; 162 + colorRendering?: Signalish<number | string | undefined>; 163 + 'color-rendering'?: Signalish<number | string | undefined>; 164 + contentScriptType?: Signalish<number | string | undefined>; 165 + 'content-script-type'?: Signalish<number | string | undefined>; 166 + contentStyleType?: Signalish<number | string | undefined>; 167 + 'content-style-type'?: Signalish<number | string | undefined>; 168 + cursor?: Signalish<number | string | undefined>; 169 + cx?: Signalish<number | string | undefined>; 170 + cy?: Signalish<number | string | undefined>; 171 + d?: Signalish<string | undefined>; 172 + decelerate?: Signalish<number | string | undefined>; 173 + descent?: Signalish<number | string | undefined>; 174 + diffuseConstant?: Signalish<number | string | undefined>; 175 + direction?: Signalish<number | string | undefined>; 176 + display?: Signalish<number | string | undefined>; 177 + divisor?: Signalish<number | string | undefined>; 178 + dominantBaseline?: Signalish<number | string | undefined>; 179 + 'dominant-baseline'?: Signalish<number | string | undefined>; 180 + dur?: Signalish<number | string | undefined>; 181 + dx?: Signalish<number | string | undefined>; 182 + dy?: Signalish<number | string | undefined>; 183 + edgeMode?: Signalish<number | string | undefined>; 184 + elevation?: Signalish<number | string | undefined>; 185 + enableBackground?: Signalish<number | string | undefined>; 186 + 'enable-background'?: Signalish<number | string | undefined>; 187 + end?: Signalish<number | string | undefined>; 188 + exponent?: Signalish<number | string | undefined>; 189 + externalResourcesRequired?: Signalish<number | string | undefined>; 190 + fill?: Signalish<string | undefined>; 191 + fillOpacity?: Signalish<number | string | undefined>; 192 + 'fill-opacity'?: Signalish<number | string | undefined>; 193 + fillRule?: Signalish<'nonzero' | 'evenodd' | 'inherit' | undefined>; 194 + 'fill-rule'?: Signalish<'nonzero' | 'evenodd' | 'inherit' | undefined>; 195 + filter?: Signalish<string | undefined>; 196 + filterRes?: Signalish<number | string | undefined>; 197 + filterUnits?: Signalish<number | string | undefined>; 198 + floodColor?: Signalish<number | string | undefined>; 199 + 'flood-color'?: Signalish<number | string | undefined>; 200 + floodOpacity?: Signalish<number | string | undefined>; 201 + 'flood-opacity'?: Signalish<number | string | undefined>; 202 + focusable?: Signalish<number | string | undefined>; 203 + fontFamily?: Signalish<string | undefined>; 204 + 'font-family'?: Signalish<string | undefined>; 205 + fontSize?: Signalish<number | string | undefined>; 206 + 'font-size'?: Signalish<number | string | undefined>; 207 + fontSizeAdjust?: Signalish<number | string | undefined>; 208 + 'font-size-adjust'?: Signalish<number | string | undefined>; 209 + fontStretch?: Signalish<number | string | undefined>; 210 + 'font-stretch'?: Signalish<number | string | undefined>; 211 + fontStyle?: Signalish<number | string | undefined>; 212 + 'font-style'?: Signalish<number | string | undefined>; 213 + fontVariant?: Signalish<number | string | undefined>; 214 + 'font-variant'?: Signalish<number | string | undefined>; 215 + fontWeight?: Signalish<number | string | undefined>; 216 + 'font-weight'?: Signalish<number | string | undefined>; 217 + format?: Signalish<number | string | undefined>; 218 + from?: Signalish<number | string | undefined>; 219 + fx?: Signalish<number | string | undefined>; 220 + fy?: Signalish<number | string | undefined>; 221 + g1?: Signalish<number | string | undefined>; 222 + g2?: Signalish<number | string | undefined>; 223 + glyphName?: Signalish<number | string | undefined>; 224 + 'glyph-name'?: Signalish<number | string | undefined>; 225 + glyphOrientationHorizontal?: Signalish<number | string | undefined>; 226 + 'glyph-orientation-horizontal'?: Signalish<number | string | undefined>; 227 + glyphOrientationVertical?: Signalish<number | string | undefined>; 228 + 'glyph-orientation-vertical'?: Signalish<number | string | undefined>; 229 + glyphRef?: Signalish<number | string | undefined>; 230 + gradientTransform?: Signalish<string | undefined>; 231 + gradientUnits?: Signalish<string | undefined>; 232 + hanging?: Signalish<number | string | undefined>; 233 + height?: Signalish<number | string | undefined>; 234 + horizAdvX?: Signalish<number | string | undefined>; 235 + 'horiz-adv-x'?: Signalish<number | string | undefined>; 236 + horizOriginX?: Signalish<number | string | undefined>; 237 + 'horiz-origin-x'?: Signalish<number | string | undefined>; 238 + href?: Signalish<string | undefined>; 239 + hreflang?: Signalish<string | undefined>; 240 + hrefLang?: Signalish<string | undefined>; 241 + ideographic?: Signalish<number | string | undefined>; 242 + imageRendering?: Signalish<number | string | undefined>; 243 + 'image-rendering'?: Signalish<number | string | undefined>; 244 + in2?: Signalish<number | string | undefined>; 245 + in?: Signalish<string | undefined>; 246 + intercept?: Signalish<number | string | undefined>; 247 + k1?: Signalish<number | string | undefined>; 248 + k2?: Signalish<number | string | undefined>; 249 + k3?: Signalish<number | string | undefined>; 250 + k4?: Signalish<number | string | undefined>; 251 + k?: Signalish<number | string | undefined>; 252 + kernelMatrix?: Signalish<number | string | undefined>; 253 + kernelUnitLength?: Signalish<number | string | undefined>; 254 + kerning?: Signalish<number | string | undefined>; 255 + keyPoints?: Signalish<number | string | undefined>; 256 + keySplines?: Signalish<number | string | undefined>; 257 + keyTimes?: Signalish<number | string | undefined>; 258 + lengthAdjust?: Signalish<number | string | undefined>; 259 + letterSpacing?: Signalish<number | string | undefined>; 260 + 'letter-spacing'?: Signalish<number | string | undefined>; 261 + lightingColor?: Signalish<number | string | undefined>; 262 + 'lighting-color'?: Signalish<number | string | undefined>; 263 + limitingConeAngle?: Signalish<number | string | undefined>; 264 + local?: Signalish<number | string | undefined>; 265 + markerEnd?: Signalish<string | undefined>; 266 + 'marker-end'?: Signalish<string | undefined>; 267 + markerHeight?: Signalish<number | string | undefined>; 268 + markerMid?: Signalish<string | undefined>; 269 + 'marker-mid'?: Signalish<string | undefined>; 270 + markerStart?: Signalish<string | undefined>; 271 + 'marker-start'?: Signalish<string | undefined>; 272 + markerUnits?: Signalish<number | string | undefined>; 273 + markerWidth?: Signalish<number | string | undefined>; 274 + mask?: Signalish<string | undefined>; 275 + maskContentUnits?: Signalish<number | string | undefined>; 276 + maskUnits?: Signalish<number | string | undefined>; 277 + mathematical?: Signalish<number | string | undefined>; 278 + mode?: Signalish<number | string | undefined>; 279 + numOctaves?: Signalish<number | string | undefined>; 280 + offset?: Signalish<number | string | undefined>; 281 + opacity?: Signalish<number | string | undefined>; 282 + operator?: Signalish<number | string | undefined>; 283 + order?: Signalish<number | string | undefined>; 284 + orient?: Signalish<number | string | undefined>; 285 + orientation?: Signalish<number | string | undefined>; 286 + origin?: Signalish<number | string | undefined>; 287 + overflow?: Signalish<number | string | undefined>; 288 + overlinePosition?: Signalish<number | string | undefined>; 289 + 'overline-position'?: Signalish<number | string | undefined>; 290 + overlineThickness?: Signalish<number | string | undefined>; 291 + 'overline-thickness'?: Signalish<number | string | undefined>; 292 + paintOrder?: Signalish<number | string | undefined>; 293 + 'paint-order'?: Signalish<number | string | undefined>; 294 + panose1?: Signalish<number | string | undefined>; 295 + 'panose-1'?: Signalish<number | string | undefined>; 296 + pathLength?: Signalish<number | string | undefined>; 297 + patternContentUnits?: Signalish<string | undefined>; 298 + patternTransform?: Signalish<number | string | undefined>; 299 + patternUnits?: Signalish<string | undefined>; 300 + pointerEvents?: Signalish<number | string | undefined>; 301 + 'pointer-events'?: Signalish<number | string | undefined>; 302 + points?: Signalish<string | undefined>; 303 + pointsAtX?: Signalish<number | string | undefined>; 304 + pointsAtY?: Signalish<number | string | undefined>; 305 + pointsAtZ?: Signalish<number | string | undefined>; 306 + preserveAlpha?: Signalish<number | string | undefined>; 307 + preserveAspectRatio?: Signalish<string | undefined>; 308 + primitiveUnits?: Signalish<number | string | undefined>; 309 + r?: Signalish<number | string | undefined>; 310 + radius?: Signalish<number | string | undefined>; 311 + refX?: Signalish<number | string | undefined>; 312 + refY?: Signalish<number | string | undefined>; 313 + renderingIntent?: Signalish<number | string | undefined>; 314 + 'rendering-intent'?: Signalish<number | string | undefined>; 315 + repeatCount?: Signalish<number | string | undefined>; 316 + 'repeat-count'?: Signalish<number | string | undefined>; 317 + repeatDur?: Signalish<number | string | undefined>; 318 + 'repeat-dur'?: Signalish<number | string | undefined>; 319 + requiredExtensions?: Signalish<number | string | undefined>; 320 + requiredFeatures?: Signalish<number | string | undefined>; 321 + restart?: Signalish<number | string | undefined>; 322 + result?: Signalish<string | undefined>; 323 + rotate?: Signalish<number | string | undefined>; 324 + rx?: Signalish<number | string | undefined>; 325 + ry?: Signalish<number | string | undefined>; 326 + scale?: Signalish<number | string | undefined>; 327 + seed?: Signalish<number | string | undefined>; 328 + shapeRendering?: Signalish<number | string | undefined>; 329 + 'shape-rendering'?: Signalish<number | string | undefined>; 330 + slope?: Signalish<number | string | undefined>; 331 + spacing?: Signalish<number | string | undefined>; 332 + specularConstant?: Signalish<number | string | undefined>; 333 + specularExponent?: Signalish<number | string | undefined>; 334 + speed?: Signalish<number | string | undefined>; 335 + spreadMethod?: Signalish<string | undefined>; 336 + startOffset?: Signalish<number | string | undefined>; 337 + stdDeviation?: Signalish<number | string | undefined>; 338 + stemh?: Signalish<number | string | undefined>; 339 + stemv?: Signalish<number | string | undefined>; 340 + stitchTiles?: Signalish<number | string | undefined>; 341 + stopColor?: Signalish<string | undefined>; 342 + 'stop-color'?: Signalish<string | undefined>; 343 + stopOpacity?: Signalish<number | string | undefined>; 344 + 'stop-opacity'?: Signalish<number | string | undefined>; 345 + strikethroughPosition?: Signalish<number | string | undefined>; 346 + 'strikethrough-position'?: Signalish<number | string | undefined>; 347 + strikethroughThickness?: Signalish<number | string | undefined>; 348 + 'strikethrough-thickness'?: Signalish<number | string | undefined>; 349 + string?: Signalish<number | string | undefined>; 350 + stroke?: Signalish<string | undefined>; 351 + strokeDasharray?: Signalish<string | number | undefined>; 352 + 'stroke-dasharray'?: Signalish<string | number | undefined>; 353 + strokeDashoffset?: Signalish<string | number | undefined>; 354 + 'stroke-dashoffset'?: Signalish<string | number | undefined>; 355 + strokeLinecap?: Signalish< 356 + 'butt' | 'round' | 'square' | 'inherit' | undefined 357 + >; 358 + 'stroke-linecap'?: Signalish< 359 + 'butt' | 'round' | 'square' | 'inherit' | undefined 360 + >; 361 + strokeLinejoin?: Signalish< 362 + 'miter' | 'round' | 'bevel' | 'inherit' | undefined 363 + >; 364 + 'stroke-linejoin'?: Signalish< 365 + 'miter' | 'round' | 'bevel' | 'inherit' | undefined 366 + >; 367 + strokeMiterlimit?: Signalish<string | number | undefined>; 368 + 'stroke-miterlimit'?: Signalish<string | number | undefined>; 369 + strokeOpacity?: Signalish<number | string | undefined>; 370 + 'stroke-opacity'?: Signalish<number | string | undefined>; 371 + strokeWidth?: Signalish<number | string | undefined>; 372 + 'stroke-width'?: Signalish<number | string | undefined>; 373 + surfaceScale?: Signalish<number | string | undefined>; 374 + systemLanguage?: Signalish<number | string | undefined>; 375 + tableValues?: Signalish<number | string | undefined>; 376 + targetX?: Signalish<number | string | undefined>; 377 + targetY?: Signalish<number | string | undefined>; 378 + textAnchor?: Signalish<string | undefined>; 379 + 'text-anchor'?: Signalish<string | undefined>; 380 + textDecoration?: Signalish<number | string | undefined>; 381 + 'text-decoration'?: Signalish<number | string | undefined>; 382 + textLength?: Signalish<number | string | undefined>; 383 + textRendering?: Signalish<number | string | undefined>; 384 + 'text-rendering'?: Signalish<number | string | undefined>; 385 + to?: Signalish<number | string | undefined>; 386 + transform?: Signalish<string | undefined>; 387 + transformOrigin?: Signalish<string | undefined>; 388 + 'transform-origin'?: Signalish<string | undefined>; 389 + type?: Signalish<string | undefined>; 390 + u1?: Signalish<number | string | undefined>; 391 + u2?: Signalish<number | string | undefined>; 392 + underlinePosition?: Signalish<number | string | undefined>; 393 + 'underline-position'?: Signalish<number | string | undefined>; 394 + underlineThickness?: Signalish<number | string | undefined>; 395 + 'underline-thickness'?: Signalish<number | string | undefined>; 396 + unicode?: Signalish<number | string | undefined>; 397 + unicodeBidi?: Signalish<number | string | undefined>; 398 + 'unicode-bidi'?: Signalish<number | string | undefined>; 399 + unicodeRange?: Signalish<number | string | undefined>; 400 + 'unicode-range'?: Signalish<number | string | undefined>; 401 + unitsPerEm?: Signalish<number | string | undefined>; 402 + 'units-per-em'?: Signalish<number | string | undefined>; 403 + vAlphabetic?: Signalish<number | string | undefined>; 404 + 'v-alphabetic'?: Signalish<number | string | undefined>; 405 + values?: Signalish<string | undefined>; 406 + vectorEffect?: Signalish<number | string | undefined>; 407 + 'vector-effect'?: Signalish<number | string | undefined>; 408 + version?: Signalish<string | undefined>; 409 + vertAdvY?: Signalish<number | string | undefined>; 410 + 'vert-adv-y'?: Signalish<number | string | undefined>; 411 + vertOriginX?: Signalish<number | string | undefined>; 412 + 'vert-origin-x'?: Signalish<number | string | undefined>; 413 + vertOriginY?: Signalish<number | string | undefined>; 414 + 'vert-origin-y'?: Signalish<number | string | undefined>; 415 + vHanging?: Signalish<number | string | undefined>; 416 + 'v-hanging'?: Signalish<number | string | undefined>; 417 + vIdeographic?: Signalish<number | string | undefined>; 418 + 'v-ideographic'?: Signalish<number | string | undefined>; 419 + viewBox?: Signalish<string | undefined>; 420 + viewTarget?: Signalish<number | string | undefined>; 421 + visibility?: Signalish<number | string | undefined>; 422 + vMathematical?: Signalish<number | string | undefined>; 423 + 'v-mathematical'?: Signalish<number | string | undefined>; 424 + width?: Signalish<number | string | undefined>; 425 + wordSpacing?: Signalish<number | string | undefined>; 426 + 'word-spacing'?: Signalish<number | string | undefined>; 427 + writingMode?: Signalish<number | string | undefined>; 428 + 'writing-mode'?: Signalish<number | string | undefined>; 429 + x1?: Signalish<number | string | undefined>; 430 + x2?: Signalish<number | string | undefined>; 431 + x?: Signalish<number | string | undefined>; 432 + xChannelSelector?: Signalish<string | undefined>; 433 + xHeight?: Signalish<number | string | undefined>; 434 + 'x-height'?: Signalish<number | string | undefined>; 435 + xlinkActuate?: Signalish<string | undefined>; 436 + 'xlink:actuate'?: Signalish<SVGAttributes['xlinkActuate']>; 437 + xlinkArcrole?: Signalish<string | undefined>; 438 + 'xlink:arcrole'?: Signalish<string | undefined>; 439 + xlinkHref?: Signalish<string | undefined>; 440 + 'xlink:href'?: Signalish<string | undefined>; 441 + xlinkRole?: Signalish<string | undefined>; 442 + 'xlink:role'?: Signalish<string | undefined>; 443 + xlinkShow?: Signalish<string | undefined>; 444 + 'xlink:show'?: Signalish<string | undefined>; 445 + xlinkTitle?: Signalish<string | undefined>; 446 + 'xlink:title'?: Signalish<string | undefined>; 447 + xlinkType?: Signalish<string | undefined>; 448 + 'xlink:type'?: Signalish<string | undefined>; 449 + xmlBase?: Signalish<string | undefined>; 450 + 'xml:base'?: Signalish<string | undefined>; 451 + xmlLang?: Signalish<string | undefined>; 452 + 'xml:lang'?: Signalish<string | undefined>; 453 + xmlns?: Signalish<string | undefined>; 454 + xmlnsXlink?: Signalish<string | undefined>; 455 + xmlSpace?: Signalish<string | undefined>; 456 + 'xml:space'?: Signalish<string | undefined>; 457 + y1?: Signalish<number | string | undefined>; 458 + y2?: Signalish<number | string | undefined>; 459 + y?: Signalish<number | string | undefined>; 460 + yChannelSelector?: Signalish<string | undefined>; 461 + z?: Signalish<number | string | undefined>; 462 + zoomAndPan?: Signalish<string | undefined>; 463 + } 464 + 465 + export interface PathAttributes { 466 + d: string; 467 + } 468 + 469 + export type TargetedEvent< 470 + Target extends EventTarget = EventTarget, 471 + TypedEvent extends Event = Event 472 + > = Omit<TypedEvent, 'currentTarget'> & { 473 + readonly currentTarget: Target; 474 + }; 475 + 476 + export type TargetedAnimationEvent<Target extends EventTarget> = TargetedEvent< 477 + Target, 478 + AnimationEvent 479 + >; 480 + export type TargetedClipboardEvent<Target extends EventTarget> = TargetedEvent< 481 + Target, 482 + ClipboardEvent 483 + >; 484 + export type TargetedCommandEvent<Target extends EventTarget> = TargetedEvent< 485 + Target, 486 + CommandEvent 487 + >; 488 + export type TargetedCompositionEvent<Target extends EventTarget> = 489 + TargetedEvent<Target, CompositionEvent>; 490 + export type TargetedDragEvent<Target extends EventTarget> = TargetedEvent< 491 + Target, 492 + DragEvent 493 + >; 494 + export type TargetedFocusEvent<Target extends EventTarget> = TargetedEvent< 495 + Target, 496 + FocusEvent 497 + >; 498 + export type TargetedInputEvent<Target extends EventTarget> = TargetedEvent< 499 + Target, 500 + InputEvent 501 + >; 502 + export type TargetedKeyboardEvent<Target extends EventTarget> = TargetedEvent< 503 + Target, 504 + KeyboardEvent 505 + >; 506 + export type TargetedMouseEvent<Target extends EventTarget> = TargetedEvent< 507 + Target, 508 + MouseEvent 509 + >; 510 + export type TargetedPointerEvent<Target extends EventTarget> = TargetedEvent< 511 + Target, 512 + PointerEvent 513 + >; 514 + export type TargetedSnapEvent<Target extends EventTarget> = TargetedEvent< 515 + Target, 516 + SnapEvent 517 + >; 518 + export type TargetedSubmitEvent<Target extends EventTarget> = TargetedEvent< 519 + Target, 520 + SubmitEvent 521 + >; 522 + export type TargetedTouchEvent<Target extends EventTarget> = TargetedEvent< 523 + Target, 524 + TouchEvent 525 + >; 526 + export type TargetedToggleEvent<Target extends EventTarget> = TargetedEvent< 527 + Target, 528 + ToggleEvent 529 + >; 530 + export type TargetedTransitionEvent<Target extends EventTarget> = TargetedEvent< 531 + Target, 532 + TransitionEvent 533 + >; 534 + export type TargetedUIEvent<Target extends EventTarget> = TargetedEvent< 535 + Target, 536 + UIEvent 537 + >; 538 + export type TargetedWheelEvent<Target extends EventTarget> = TargetedEvent< 539 + Target, 540 + WheelEvent 541 + >; 542 + export type TargetedPictureInPictureEvent<Target extends EventTarget> = 543 + TargetedEvent<Target, PictureInPictureEvent>; 544 + 545 + export type EventHandler<E extends TargetedEvent> = { 546 + bivarianceHack(event: E): void; 547 + }['bivarianceHack']; 548 + 549 + export type AnimationEventHandler<Target extends EventTarget> = EventHandler< 550 + TargetedAnimationEvent<Target> 551 + >; 552 + export type ClipboardEventHandler<Target extends EventTarget> = EventHandler< 553 + TargetedClipboardEvent<Target> 554 + >; 555 + export type CommandEventHandler<Target extends EventTarget> = EventHandler< 556 + TargetedCommandEvent<Target> 557 + >; 558 + export type CompositionEventHandler<Target extends EventTarget> = EventHandler< 559 + TargetedCompositionEvent<Target> 560 + >; 561 + export type DragEventHandler<Target extends EventTarget> = EventHandler< 562 + TargetedDragEvent<Target> 563 + >; 564 + export type ToggleEventHandler<Target extends EventTarget> = EventHandler< 565 + TargetedToggleEvent<Target> 566 + >; 567 + export type FocusEventHandler<Target extends EventTarget> = EventHandler< 568 + TargetedFocusEvent<Target> 569 + >; 570 + export type GenericEventHandler<Target extends EventTarget> = EventHandler< 571 + TargetedEvent<Target> 572 + >; 573 + export type InputEventHandler<Target extends EventTarget> = EventHandler< 574 + TargetedInputEvent<Target> 575 + >; 576 + export type KeyboardEventHandler<Target extends EventTarget> = EventHandler< 577 + TargetedKeyboardEvent<Target> 578 + >; 579 + export type MouseEventHandler<Target extends EventTarget> = EventHandler< 580 + TargetedMouseEvent<Target> 581 + >; 582 + export type PointerEventHandler<Target extends EventTarget> = EventHandler< 583 + TargetedPointerEvent<Target> 584 + >; 585 + export type SnapEventHandler<Target extends EventTarget> = EventHandler< 586 + TargetedSnapEvent<Target> 587 + >; 588 + export type SubmitEventHandler<Target extends EventTarget> = EventHandler< 589 + TargetedSubmitEvent<Target> 590 + >; 591 + export type TouchEventHandler<Target extends EventTarget> = EventHandler< 592 + TargetedTouchEvent<Target> 593 + >; 594 + export type TransitionEventHandler<Target extends EventTarget> = EventHandler< 595 + TargetedTransitionEvent<Target> 596 + >; 597 + export type UIEventHandler<Target extends EventTarget> = EventHandler< 598 + TargetedUIEvent<Target> 599 + >; 600 + export type WheelEventHandler<Target extends EventTarget> = EventHandler< 601 + TargetedWheelEvent<Target> 602 + >; 603 + export type PictureInPictureEventHandler<Target extends EventTarget> = 604 + EventHandler<TargetedPictureInPictureEvent<Target>>; 605 + 606 + export interface DOMAttributes< 607 + Target extends EventTarget 608 + > extends PreactDOMAttributes { 609 + // Image Events 610 + onLoad?: GenericEventHandler<Target> | undefined; 611 + onLoadCapture?: GenericEventHandler<Target> | undefined; 612 + onError?: GenericEventHandler<Target> | undefined; 613 + onErrorCapture?: GenericEventHandler<Target> | undefined; 614 + 615 + // Clipboard Events 616 + onCopy?: ClipboardEventHandler<Target> | undefined; 617 + onCopyCapture?: ClipboardEventHandler<Target> | undefined; 618 + onCut?: ClipboardEventHandler<Target> | undefined; 619 + onCutCapture?: ClipboardEventHandler<Target> | undefined; 620 + onPaste?: ClipboardEventHandler<Target> | undefined; 621 + onPasteCapture?: ClipboardEventHandler<Target> | undefined; 622 + 623 + // Composition Events 624 + onCompositionEnd?: CompositionEventHandler<Target> | undefined; 625 + onCompositionEndCapture?: CompositionEventHandler<Target> | undefined; 626 + onCompositionStart?: CompositionEventHandler<Target> | undefined; 627 + onCompositionStartCapture?: CompositionEventHandler<Target> | undefined; 628 + onCompositionUpdate?: CompositionEventHandler<Target> | undefined; 629 + onCompositionUpdateCapture?: CompositionEventHandler<Target> | undefined; 630 + 631 + // Popover Events 632 + onBeforeToggle?: ToggleEventHandler<Target> | undefined; 633 + onToggle?: ToggleEventHandler<Target> | undefined; 634 + 635 + // Dialog Events 636 + onClose?: GenericEventHandler<Target> | undefined; 637 + onCancel?: GenericEventHandler<Target> | undefined; 638 + 639 + // Focus Events 640 + onFocus?: FocusEventHandler<Target> | undefined; 641 + onFocusCapture?: FocusEventHandler<Target> | undefined; 642 + onFocusIn?: FocusEventHandler<Target> | undefined; 643 + onFocusInCapture?: FocusEventHandler<Target> | undefined; 644 + onFocusOut?: FocusEventHandler<Target> | undefined; 645 + onFocusOutCapture?: FocusEventHandler<Target> | undefined; 646 + onBlur?: FocusEventHandler<Target> | undefined; 647 + onBlurCapture?: FocusEventHandler<Target> | undefined; 648 + 649 + // Form Events 650 + onChange?: GenericEventHandler<Target> | undefined; 651 + onChangeCapture?: GenericEventHandler<Target> | undefined; 652 + onInput?: InputEventHandler<Target> | undefined; 653 + onInputCapture?: InputEventHandler<Target> | undefined; 654 + onBeforeInput?: InputEventHandler<Target> | undefined; 655 + onBeforeInputCapture?: InputEventHandler<Target> | undefined; 656 + onSearch?: GenericEventHandler<Target> | undefined; 657 + onSearchCapture?: GenericEventHandler<Target> | undefined; 658 + onSubmit?: SubmitEventHandler<Target> | undefined; 659 + onSubmitCapture?: SubmitEventHandler<Target> | undefined; 660 + onInvalid?: GenericEventHandler<Target> | undefined; 661 + onInvalidCapture?: GenericEventHandler<Target> | undefined; 662 + onReset?: GenericEventHandler<Target> | undefined; 663 + onResetCapture?: GenericEventHandler<Target> | undefined; 664 + onFormData?: GenericEventHandler<Target> | undefined; 665 + onFormDataCapture?: GenericEventHandler<Target> | undefined; 666 + 667 + // Keyboard Events 668 + onKeyDown?: KeyboardEventHandler<Target> | undefined; 669 + onKeyDownCapture?: KeyboardEventHandler<Target> | undefined; 670 + onKeyPress?: KeyboardEventHandler<Target> | undefined; 671 + onKeyPressCapture?: KeyboardEventHandler<Target> | undefined; 672 + onKeyUp?: KeyboardEventHandler<Target> | undefined; 673 + onKeyUpCapture?: KeyboardEventHandler<Target> | undefined; 674 + 675 + // Media Events 676 + onAbort?: GenericEventHandler<Target> | undefined; 677 + onAbortCapture?: GenericEventHandler<Target> | undefined; 678 + onCanPlay?: GenericEventHandler<Target> | undefined; 679 + onCanPlayCapture?: GenericEventHandler<Target> | undefined; 680 + onCanPlayThrough?: GenericEventHandler<Target> | undefined; 681 + onCanPlayThroughCapture?: GenericEventHandler<Target> | undefined; 682 + onDurationChange?: GenericEventHandler<Target> | undefined; 683 + onDurationChangeCapture?: GenericEventHandler<Target> | undefined; 684 + onEmptied?: GenericEventHandler<Target> | undefined; 685 + onEmptiedCapture?: GenericEventHandler<Target> | undefined; 686 + onEncrypted?: GenericEventHandler<Target> | undefined; 687 + onEncryptedCapture?: GenericEventHandler<Target> | undefined; 688 + onEnded?: GenericEventHandler<Target> | undefined; 689 + onEndedCapture?: GenericEventHandler<Target> | undefined; 690 + onLoadedData?: GenericEventHandler<Target> | undefined; 691 + onLoadedDataCapture?: GenericEventHandler<Target> | undefined; 692 + onLoadedMetadata?: GenericEventHandler<Target> | undefined; 693 + onLoadedMetadataCapture?: GenericEventHandler<Target> | undefined; 694 + onLoadStart?: GenericEventHandler<Target> | undefined; 695 + onLoadStartCapture?: GenericEventHandler<Target> | undefined; 696 + onPause?: GenericEventHandler<Target> | undefined; 697 + onPauseCapture?: GenericEventHandler<Target> | undefined; 698 + onPlay?: GenericEventHandler<Target> | undefined; 699 + onPlayCapture?: GenericEventHandler<Target> | undefined; 700 + onPlaying?: GenericEventHandler<Target> | undefined; 701 + onPlayingCapture?: GenericEventHandler<Target> | undefined; 702 + onProgress?: GenericEventHandler<Target> | undefined; 703 + onProgressCapture?: GenericEventHandler<Target> | undefined; 704 + onRateChange?: GenericEventHandler<Target> | undefined; 705 + onRateChangeCapture?: GenericEventHandler<Target> | undefined; 706 + onSeeked?: GenericEventHandler<Target> | undefined; 707 + onSeekedCapture?: GenericEventHandler<Target> | undefined; 708 + onSeeking?: GenericEventHandler<Target> | undefined; 709 + onSeekingCapture?: GenericEventHandler<Target> | undefined; 710 + onStalled?: GenericEventHandler<Target> | undefined; 711 + onStalledCapture?: GenericEventHandler<Target> | undefined; 712 + onSuspend?: GenericEventHandler<Target> | undefined; 713 + onSuspendCapture?: GenericEventHandler<Target> | undefined; 714 + onTimeUpdate?: GenericEventHandler<Target> | undefined; 715 + onTimeUpdateCapture?: GenericEventHandler<Target> | undefined; 716 + onVolumeChange?: GenericEventHandler<Target> | undefined; 717 + onVolumeChangeCapture?: GenericEventHandler<Target> | undefined; 718 + onWaiting?: GenericEventHandler<Target> | undefined; 719 + onWaitingCapture?: GenericEventHandler<Target> | undefined; 720 + 721 + // MouseEvents 722 + onClick?: MouseEventHandler<Target> | undefined; 723 + onClickCapture?: MouseEventHandler<Target> | undefined; 724 + onContextMenu?: MouseEventHandler<Target> | undefined; 725 + onContextMenuCapture?: MouseEventHandler<Target> | undefined; 726 + onDblClick?: MouseEventHandler<Target> | undefined; 727 + onDblClickCapture?: MouseEventHandler<Target> | undefined; 728 + onDrag?: DragEventHandler<Target> | undefined; 729 + onDragCapture?: DragEventHandler<Target> | undefined; 730 + onDragEnd?: DragEventHandler<Target> | undefined; 731 + onDragEndCapture?: DragEventHandler<Target> | undefined; 732 + onDragEnter?: DragEventHandler<Target> | undefined; 733 + onDragEnterCapture?: DragEventHandler<Target> | undefined; 734 + onDragExit?: DragEventHandler<Target> | undefined; 735 + onDragExitCapture?: DragEventHandler<Target> | undefined; 736 + onDragLeave?: DragEventHandler<Target> | undefined; 737 + onDragLeaveCapture?: DragEventHandler<Target> | undefined; 738 + onDragOver?: DragEventHandler<Target> | undefined; 739 + onDragOverCapture?: DragEventHandler<Target> | undefined; 740 + onDragStart?: DragEventHandler<Target> | undefined; 741 + onDragStartCapture?: DragEventHandler<Target> | undefined; 742 + onDrop?: DragEventHandler<Target> | undefined; 743 + onDropCapture?: DragEventHandler<Target> | undefined; 744 + onMouseDown?: MouseEventHandler<Target> | undefined; 745 + onMouseDownCapture?: MouseEventHandler<Target> | undefined; 746 + onMouseEnter?: MouseEventHandler<Target> | undefined; 747 + onMouseEnterCapture?: MouseEventHandler<Target> | undefined; 748 + onMouseLeave?: MouseEventHandler<Target> | undefined; 749 + onMouseLeaveCapture?: MouseEventHandler<Target> | undefined; 750 + onMouseMove?: MouseEventHandler<Target> | undefined; 751 + onMouseMoveCapture?: MouseEventHandler<Target> | undefined; 752 + onMouseOut?: MouseEventHandler<Target> | undefined; 753 + onMouseOutCapture?: MouseEventHandler<Target> | undefined; 754 + onMouseOver?: MouseEventHandler<Target> | undefined; 755 + onMouseOverCapture?: MouseEventHandler<Target> | undefined; 756 + onMouseUp?: MouseEventHandler<Target> | undefined; 757 + onMouseUpCapture?: MouseEventHandler<Target> | undefined; 758 + // TODO: Spec for `auxclick` events was changed to make it a PointerEvent but only 759 + // Chrome has support for it yet. When more browsers align we should change this. 760 + // https://developer.mozilla.org/en-US/docs/Web/API/Element/auxclick_event#browser_compatibility 761 + onAuxClick?: MouseEventHandler<Target> | undefined; 762 + onAuxClickCapture?: MouseEventHandler<Target> | undefined; 763 + 764 + // Selection Events 765 + onSelect?: GenericEventHandler<Target> | undefined; 766 + onSelectCapture?: GenericEventHandler<Target> | undefined; 767 + 768 + // Touch Events 769 + onTouchCancel?: TouchEventHandler<Target> | undefined; 770 + onTouchCancelCapture?: TouchEventHandler<Target> | undefined; 771 + onTouchEnd?: TouchEventHandler<Target> | undefined; 772 + onTouchEndCapture?: TouchEventHandler<Target> | undefined; 773 + onTouchMove?: TouchEventHandler<Target> | undefined; 774 + onTouchMoveCapture?: TouchEventHandler<Target> | undefined; 775 + onTouchStart?: TouchEventHandler<Target> | undefined; 776 + onTouchStartCapture?: TouchEventHandler<Target> | undefined; 777 + 778 + // Pointer Events 779 + onPointerOver?: PointerEventHandler<Target> | undefined; 780 + onPointerOverCapture?: PointerEventHandler<Target> | undefined; 781 + onPointerEnter?: PointerEventHandler<Target> | undefined; 782 + onPointerEnterCapture?: PointerEventHandler<Target> | undefined; 783 + onPointerDown?: PointerEventHandler<Target> | undefined; 784 + onPointerDownCapture?: PointerEventHandler<Target> | undefined; 785 + onPointerMove?: PointerEventHandler<Target> | undefined; 786 + onPointerMoveCapture?: PointerEventHandler<Target> | undefined; 787 + onPointerUp?: PointerEventHandler<Target> | undefined; 788 + onPointerUpCapture?: PointerEventHandler<Target> | undefined; 789 + onPointerCancel?: PointerEventHandler<Target> | undefined; 790 + onPointerCancelCapture?: PointerEventHandler<Target> | undefined; 791 + onPointerOut?: PointerEventHandler<Target> | undefined; 792 + onPointerOutCapture?: PointerEventHandler<Target> | undefined; 793 + onPointerLeave?: PointerEventHandler<Target> | undefined; 794 + onPointerLeaveCapture?: PointerEventHandler<Target> | undefined; 795 + onGotPointerCapture?: PointerEventHandler<Target> | undefined; 796 + onGotPointerCaptureCapture?: PointerEventHandler<Target> | undefined; 797 + onLostPointerCapture?: PointerEventHandler<Target> | undefined; 798 + onLostPointerCaptureCapture?: PointerEventHandler<Target> | undefined; 799 + 800 + // Scroll Events 801 + onScroll?: GenericEventHandler<Target> | undefined; 802 + onScrollCapture?: GenericEventHandler<Target> | undefined; 803 + onScrollEnd?: GenericEventHandler<Target> | undefined; 804 + onScrollEndCapture?: GenericEventHandler<Target> | undefined; 805 + onScrollSnapChange?: SnapEventHandler<Target> | undefined; 806 + onScrollSnapChangeCapture?: SnapEventHandler<Target> | undefined; 807 + onScrollSnapChanging?: SnapEventHandler<Target> | undefined; 808 + onScrollSnapChangingCapture?: SnapEventHandler<Target> | undefined; 809 + 810 + // Wheel Events 811 + onWheel?: WheelEventHandler<Target> | undefined; 812 + onWheelCapture?: WheelEventHandler<Target> | undefined; 813 + 814 + // Animation Events 815 + onAnimationStart?: AnimationEventHandler<Target> | undefined; 816 + onAnimationStartCapture?: AnimationEventHandler<Target> | undefined; 817 + onAnimationEnd?: AnimationEventHandler<Target> | undefined; 818 + onAnimationEndCapture?: AnimationEventHandler<Target> | undefined; 819 + onAnimationIteration?: AnimationEventHandler<Target> | undefined; 820 + onAnimationIterationCapture?: AnimationEventHandler<Target> | undefined; 821 + 822 + // Transition Events 823 + onTransitionCancel?: TransitionEventHandler<Target>; 824 + onTransitionCancelCapture?: TransitionEventHandler<Target>; 825 + onTransitionEnd?: TransitionEventHandler<Target>; 826 + onTransitionEndCapture?: TransitionEventHandler<Target>; 827 + onTransitionRun?: TransitionEventHandler<Target>; 828 + onTransitionRunCapture?: TransitionEventHandler<Target>; 829 + onTransitionStart?: TransitionEventHandler<Target>; 830 + onTransitionStartCapture?: TransitionEventHandler<Target>; 831 + 832 + // PictureInPicture Events 833 + onEnterPictureInPicture?: PictureInPictureEventHandler<Target>; 834 + onEnterPictureInPictureCapture?: PictureInPictureEventHandler<Target>; 835 + onLeavePictureInPicture?: PictureInPictureEventHandler<Target>; 836 + onLeavePictureInPictureCapture?: PictureInPictureEventHandler<Target>; 837 + onResize?: PictureInPictureEventHandler<Target>; 838 + onResizeCapture?: PictureInPictureEventHandler<Target>; 839 + 840 + onCommand?: CommandEventHandler<Target>; 841 + } 842 + 843 + // All the WAI-ARIA 1.1 attributes from https://www.w3.org/TR/wai-aria-1.1/ 844 + export interface AriaAttributes { 845 + /** Identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application. */ 846 + 'aria-activedescendant'?: Signalish<string | undefined>; 847 + /** Indicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute. */ 848 + 'aria-atomic'?: Signalish<Booleanish | undefined>; 849 + /** 850 + * Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be 851 + * presented if they are made. 852 + */ 853 + 'aria-autocomplete'?: Signalish< 854 + 'none' | 'inline' | 'list' | 'both' | undefined 855 + >; 856 + /** 857 + * Defines a string value that labels the current element, which is intended to be converted into Braille. 858 + * @see aria-label. 859 + */ 860 + 'aria-braillelabel'?: Signalish<string | undefined>; 861 + /** 862 + * Defines a human-readable, author-localized abbreviated description for the role of an element, which is intended to be converted into Braille. 863 + * @see aria-roledescription. 864 + */ 865 + 'aria-brailleroledescription'?: Signalish<string | undefined>; 866 + /** Indicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user. */ 867 + 'aria-busy'?: Signalish<Booleanish | undefined>; 868 + /** 869 + * Indicates the current "checked" state of checkboxes, radio buttons, and other widgets. 870 + * @see aria-pressed 871 + * @see aria-selected. 872 + */ 873 + 'aria-checked'?: Signalish<Booleanish | 'mixed' | undefined>; 874 + /** 875 + * Defines the total number of columns in a table, grid, or treegrid. 876 + * @see aria-colindex. 877 + */ 878 + 'aria-colcount'?: Signalish<number | undefined>; 879 + /** 880 + * Defines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid. 881 + * @see aria-colcount 882 + * @see aria-colspan. 883 + */ 884 + 'aria-colindex'?: Signalish<number | undefined>; 885 + /** 886 + * Defines a human readable text alternative of aria-colindex. 887 + * @see aria-rowindextext. 888 + */ 889 + 'aria-colindextext'?: Signalish<string | undefined>; 890 + /** 891 + * Defines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid. 892 + * @see aria-colindex 893 + * @see aria-rowspan. 894 + */ 895 + 'aria-colspan'?: Signalish<number | undefined>; 896 + /** 897 + * Identifies the element (or elements) whose contents or presence are controlled by the current element. 898 + * @see aria-owns. 899 + */ 900 + 'aria-controls'?: Signalish<string | undefined>; 901 + /** Indicates the element that represents the current item within a container or set of related elements. */ 902 + 'aria-current'?: Signalish< 903 + Booleanish | 'page' | 'step' | 'location' | 'date' | 'time' | undefined 904 + >; 905 + /** 906 + * Identifies the element (or elements) that describes the object. 907 + * @see aria-labelledby 908 + */ 909 + 'aria-describedby'?: Signalish<string | undefined>; 910 + /** 911 + * Defines a string value that describes or annotates the current element. 912 + * @see related aria-describedby. 913 + */ 914 + 'aria-description'?: Signalish<string | undefined>; 915 + /** 916 + * Identifies the element that provides a detailed, extended description for the object. 917 + * @see aria-describedby. 918 + */ 919 + 'aria-details'?: Signalish<string | undefined>; 920 + /** 921 + * Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable. 922 + * @see aria-hidden 923 + * @see aria-readonly. 924 + */ 925 + 'aria-disabled'?: Signalish<Booleanish | undefined>; 926 + /** 927 + * Indicates what functions can be performed when a dragged object is released on the drop target. 928 + * @deprecated in ARIA 1.1 929 + */ 930 + 'aria-dropeffect'?: Signalish< 931 + 'none' | 'copy' | 'execute' | 'link' | 'move' | 'popup' | undefined 932 + >; 933 + /** 934 + * Identifies the element that provides an error message for the object. 935 + * @see aria-invalid 936 + * @see aria-describedby. 937 + */ 938 + 'aria-errormessage'?: Signalish<string | undefined>; 939 + /** Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed. */ 940 + 'aria-expanded'?: Signalish<Booleanish | undefined>; 941 + /** 942 + * Identifies the next element (or elements) in an alternate reading order of content which, at the user's discretion, 943 + * allows assistive technology to override the general default of reading in document source order. 944 + */ 945 + 'aria-flowto'?: Signalish<string | undefined>; 946 + /** 947 + * Indicates an element's "grabbed" state in a drag-and-drop operation. 948 + * @deprecated in ARIA 1.1 949 + */ 950 + 'aria-grabbed'?: Signalish<Booleanish | undefined>; 951 + /** Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element. */ 952 + 'aria-haspopup'?: Signalish< 953 + Booleanish | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog' | undefined 954 + >; 955 + /** 956 + * Indicates whether the element is exposed to an accessibility API. 957 + * @see aria-disabled. 958 + */ 959 + 'aria-hidden'?: Signalish<Booleanish | undefined>; 960 + /** 961 + * Indicates the entered value does not conform to the format expected by the application. 962 + * @see aria-errormessage. 963 + */ 964 + 'aria-invalid'?: Signalish<Booleanish | 'grammar' | 'spelling' | undefined>; 965 + /** Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element. */ 966 + 'aria-keyshortcuts'?: Signalish<string | undefined>; 967 + /** 968 + * Defines a string value that labels the current element. 969 + * @see aria-labelledby. 970 + */ 971 + 'aria-label'?: Signalish<string | undefined>; 972 + /** 973 + * Identifies the element (or elements) that labels the current element. 974 + * @see aria-describedby. 975 + */ 976 + 'aria-labelledby'?: Signalish<string | undefined>; 977 + /** Defines the hierarchical level of an element within a structure. */ 978 + 'aria-level'?: Signalish<number | undefined>; 979 + /** Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region. */ 980 + 'aria-live'?: Signalish<'off' | 'assertive' | 'polite' | undefined>; 981 + /** Indicates whether an element is modal when displayed. */ 982 + 'aria-modal'?: Signalish<Booleanish | undefined>; 983 + /** Indicates whether a text box accepts multiple lines of input or only a single line. */ 984 + 'aria-multiline'?: Signalish<Booleanish | undefined>; 985 + /** Indicates that the user may select more than one item from the current selectable descendants. */ 986 + 'aria-multiselectable'?: Signalish<Booleanish | undefined>; 987 + /** Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous. */ 988 + 'aria-orientation'?: Signalish<'horizontal' | 'vertical' | undefined>; 989 + /** 990 + * Identifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship 991 + * between DOM elements where the DOM hierarchy cannot be used to represent the relationship. 992 + * @see aria-controls. 993 + */ 994 + 'aria-owns'?: Signalish<string | undefined>; 995 + /** 996 + * Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value. 997 + * A hint could be a sample value or a brief description of the expected format. 998 + */ 999 + 'aria-placeholder'?: Signalish<string | undefined>; 1000 + /** 1001 + * Defines an element's number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. 1002 + * @see aria-setsize. 1003 + */ 1004 + 'aria-posinset'?: Signalish<number | undefined>; 1005 + /** 1006 + * Indicates the current "pressed" state of toggle buttons. 1007 + * @see aria-checked 1008 + * @see aria-selected. 1009 + */ 1010 + 'aria-pressed'?: Signalish<Booleanish | 'mixed' | undefined>; 1011 + /** 1012 + * Indicates that the element is not editable, but is otherwise operable. 1013 + * @see aria-disabled. 1014 + */ 1015 + 'aria-readonly'?: Signalish<Booleanish | undefined>; 1016 + /** 1017 + * Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified. 1018 + * @see aria-atomic. 1019 + */ 1020 + 'aria-relevant'?: Signalish< 1021 + | 'additions' 1022 + | 'additions removals' 1023 + | 'additions text' 1024 + | 'all' 1025 + | 'removals' 1026 + | 'removals additions' 1027 + | 'removals text' 1028 + | 'text' 1029 + | 'text additions' 1030 + | 'text removals' 1031 + | undefined 1032 + >; 1033 + /** Indicates that user input is required on the element before a form may be submitted. */ 1034 + 'aria-required'?: Signalish<Booleanish | undefined>; 1035 + /** Defines a human-readable, author-localized description for the role of an element. */ 1036 + 'aria-roledescription'?: Signalish<string | undefined>; 1037 + /** 1038 + * Defines the total number of rows in a table, grid, or treegrid. 1039 + * @see aria-rowindex. 1040 + */ 1041 + 'aria-rowcount'?: Signalish<number | undefined>; 1042 + /** 1043 + * Defines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid. 1044 + * @see aria-rowcount 1045 + * @see aria-rowspan. 1046 + */ 1047 + 'aria-rowindex'?: Signalish<number | undefined>; 1048 + /** 1049 + * Defines a human readable text alternative of aria-rowindex. 1050 + * @see aria-colindextext. 1051 + */ 1052 + 'aria-rowindextext'?: Signalish<string | undefined>; 1053 + /** 1054 + * Defines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid. 1055 + * @see aria-rowindex 1056 + * @see aria-colspan. 1057 + */ 1058 + 'aria-rowspan'?: Signalish<number | undefined>; 1059 + /** 1060 + * Indicates the current "selected" state of various widgets. 1061 + * @see aria-checked 1062 + * @see aria-pressed. 1063 + */ 1064 + 'aria-selected'?: Signalish<Booleanish | undefined>; 1065 + /** 1066 + * Defines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. 1067 + * @see aria-posinset. 1068 + */ 1069 + 'aria-setsize'?: Signalish<number | undefined>; 1070 + /** Indicates if items in a table or grid are sorted in ascending or descending order. */ 1071 + 'aria-sort'?: Signalish< 1072 + 'none' | 'ascending' | 'descending' | 'other' | undefined 1073 + >; 1074 + /** Defines the maximum allowed value for a range widget. */ 1075 + 'aria-valuemax'?: Signalish<number | undefined>; 1076 + /** Defines the minimum allowed value for a range widget. */ 1077 + 'aria-valuemin'?: Signalish<number | undefined>; 1078 + /** 1079 + * Defines the current value for a range widget. 1080 + * @see aria-valuetext. 1081 + */ 1082 + 'aria-valuenow'?: Signalish<number | undefined>; 1083 + /** Defines the human readable text alternative of aria-valuenow for a range widget. */ 1084 + 'aria-valuetext'?: Signalish<string | undefined>; 1085 + } 1086 + 1087 + // All the WAI-ARIA 1.2 role attribute values from https://www.w3.org/TR/wai-aria-1.2/#role_definitions 1088 + export type WAIAriaRole = 1089 + | 'alert' 1090 + | 'alertdialog' 1091 + | 'application' 1092 + | 'article' 1093 + | 'banner' 1094 + | 'blockquote' 1095 + | 'button' 1096 + | 'caption' 1097 + | 'cell' 1098 + | 'checkbox' 1099 + | 'code' 1100 + | 'columnheader' 1101 + | 'combobox' 1102 + | 'command' 1103 + | 'complementary' 1104 + | 'composite' 1105 + | 'contentinfo' 1106 + | 'definition' 1107 + | 'deletion' 1108 + | 'dialog' 1109 + | 'directory' 1110 + | 'document' 1111 + | 'emphasis' 1112 + | 'feed' 1113 + | 'figure' 1114 + | 'form' 1115 + | 'grid' 1116 + | 'gridcell' 1117 + | 'group' 1118 + | 'heading' 1119 + | 'img' 1120 + | 'input' 1121 + | 'insertion' 1122 + | 'landmark' 1123 + | 'link' 1124 + | 'list' 1125 + | 'listbox' 1126 + | 'listitem' 1127 + | 'log' 1128 + | 'main' 1129 + | 'marquee' 1130 + | 'math' 1131 + | 'meter' 1132 + | 'menu' 1133 + | 'menubar' 1134 + | 'menuitem' 1135 + | 'menuitemcheckbox' 1136 + | 'menuitemradio' 1137 + | 'navigation' 1138 + | 'none' 1139 + | 'note' 1140 + | 'option' 1141 + | 'paragraph' 1142 + | 'presentation' 1143 + | 'progressbar' 1144 + | 'radio' 1145 + | 'radiogroup' 1146 + | 'range' 1147 + | 'region' 1148 + | 'roletype' 1149 + | 'row' 1150 + | 'rowgroup' 1151 + | 'rowheader' 1152 + | 'scrollbar' 1153 + | 'search' 1154 + | 'searchbox' 1155 + | 'section' 1156 + | 'sectionhead' 1157 + | 'select' 1158 + | 'separator' 1159 + | 'slider' 1160 + | 'spinbutton' 1161 + | 'status' 1162 + | 'strong' 1163 + | 'structure' 1164 + | 'subscript' 1165 + | 'superscript' 1166 + | 'switch' 1167 + | 'tab' 1168 + | 'table' 1169 + | 'tablist' 1170 + | 'tabpanel' 1171 + | 'term' 1172 + | 'textbox' 1173 + | 'time' 1174 + | 'timer' 1175 + | 'toolbar' 1176 + | 'tooltip' 1177 + | 'tree' 1178 + | 'treegrid' 1179 + | 'treeitem' 1180 + | 'widget' 1181 + | 'window' 1182 + | 'none presentation'; 1183 + 1184 + // All the Digital Publishing WAI-ARIA 1.0 role attribute values from https://www.w3.org/TR/dpub-aria-1.0/#role_definitions 1185 + export type DPubAriaRole = 1186 + | 'doc-abstract' 1187 + | 'doc-acknowledgments' 1188 + | 'doc-afterword' 1189 + | 'doc-appendix' 1190 + | 'doc-backlink' 1191 + | 'doc-biblioentry' 1192 + | 'doc-bibliography' 1193 + | 'doc-biblioref' 1194 + | 'doc-chapter' 1195 + | 'doc-colophon' 1196 + | 'doc-conclusion' 1197 + | 'doc-cover' 1198 + | 'doc-credit' 1199 + | 'doc-credits' 1200 + | 'doc-dedication' 1201 + | 'doc-endnote' 1202 + | 'doc-endnotes' 1203 + | 'doc-epigraph' 1204 + | 'doc-epilogue' 1205 + | 'doc-errata' 1206 + | 'doc-example' 1207 + | 'doc-footnote' 1208 + | 'doc-foreword' 1209 + | 'doc-glossary' 1210 + | 'doc-glossref' 1211 + | 'doc-index' 1212 + | 'doc-introduction' 1213 + | 'doc-noteref' 1214 + | 'doc-notice' 1215 + | 'doc-pagebreak' 1216 + | 'doc-pagelist' 1217 + | 'doc-part' 1218 + | 'doc-preface' 1219 + | 'doc-prologue' 1220 + | 'doc-pullquote' 1221 + | 'doc-qna' 1222 + | 'doc-subtitle' 1223 + | 'doc-tip' 1224 + | 'doc-toc'; 1225 + 1226 + export type AriaRole = WAIAriaRole | DPubAriaRole; 1227 + 1228 + export interface AllHTMLAttributes<RefType extends EventTarget = EventTarget> 1229 + extends ClassAttributes<RefType>, DOMAttributes<RefType>, AriaAttributes { 1230 + // Standard HTML Attributes 1231 + accept?: Signalish<string | undefined>; 1232 + acceptCharset?: Signalish<string | undefined>; 1233 + 'accept-charset'?: Signalish<AllHTMLAttributes['acceptCharset']>; 1234 + accessKey?: Signalish<string | undefined>; 1235 + accesskey?: Signalish<AllHTMLAttributes['accessKey']>; 1236 + action?: Signalish<string | undefined>; 1237 + allow?: Signalish<string | undefined>; 1238 + allowFullScreen?: Signalish<boolean | undefined>; 1239 + allowTransparency?: Signalish<boolean | undefined>; 1240 + alt?: Signalish<string | undefined>; 1241 + as?: Signalish<string | undefined>; 1242 + async?: Signalish<boolean | undefined>; 1243 + autocomplete?: Signalish<string | undefined>; 1244 + autoComplete?: Signalish<string | undefined>; 1245 + autocorrect?: Signalish<string | undefined>; 1246 + autoCorrect?: Signalish<string | undefined>; 1247 + autofocus?: Signalish<boolean | undefined>; 1248 + autoFocus?: Signalish<boolean | undefined>; 1249 + autoPlay?: Signalish<boolean | undefined>; 1250 + autoplay?: Signalish<boolean | undefined>; 1251 + capture?: Signalish<boolean | string | undefined>; 1252 + cellPadding?: Signalish<number | string | undefined>; 1253 + cellSpacing?: Signalish<number | string | undefined>; 1254 + charSet?: Signalish<string | undefined>; 1255 + charset?: Signalish<string | undefined>; 1256 + challenge?: Signalish<string | undefined>; 1257 + checked?: Signalish<boolean | undefined>; 1258 + cite?: Signalish<string | undefined>; 1259 + class?: Signalish<string | undefined>; 1260 + className?: Signalish<string | undefined>; 1261 + cols?: Signalish<number | undefined>; 1262 + colSpan?: Signalish<number | undefined>; 1263 + colspan?: Signalish<number | undefined>; 1264 + content?: Signalish<string | undefined>; 1265 + contentEditable?: Signalish< 1266 + Booleanish | '' | 'plaintext-only' | 'inherit' | undefined 1267 + >; 1268 + contenteditable?: Signalish<AllHTMLAttributes['contentEditable']>; 1269 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/contextmenu */ 1270 + contextMenu?: Signalish<string | undefined>; 1271 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/contextmenu */ 1272 + contextmenu?: Signalish<string | undefined>; 1273 + controls?: Signalish<boolean | undefined>; 1274 + controlslist?: Signalish<string | undefined>; 1275 + controlsList?: Signalish<string | undefined>; 1276 + coords?: Signalish<string | undefined>; 1277 + crossOrigin?: Signalish<string | undefined>; 1278 + crossorigin?: Signalish<string | undefined>; 1279 + currentTime?: Signalish<number | undefined>; 1280 + data?: Signalish<string | undefined>; 1281 + dateTime?: Signalish<string | undefined>; 1282 + datetime?: Signalish<string | undefined>; 1283 + default?: Signalish<boolean | undefined>; 1284 + defaultChecked?: Signalish<boolean | undefined>; 1285 + defaultMuted?: Signalish<boolean | undefined>; 1286 + defaultPlaybackRate?: Signalish<number | undefined>; 1287 + defaultValue?: Signalish<string | undefined>; 1288 + defer?: Signalish<boolean | undefined>; 1289 + dir?: Signalish<'auto' | 'rtl' | 'ltr' | undefined>; 1290 + disabled?: Signalish<boolean | undefined>; 1291 + disableremoteplayback?: Signalish<boolean | undefined>; 1292 + disableRemotePlayback?: Signalish<boolean | undefined>; 1293 + download?: Signalish<any | undefined>; 1294 + decoding?: Signalish<'sync' | 'async' | 'auto' | undefined>; 1295 + draggable?: Signalish<boolean | undefined>; 1296 + encType?: Signalish<string | undefined>; 1297 + enctype?: Signalish<string | undefined>; 1298 + enterkeyhint?: Signalish< 1299 + | 'enter' 1300 + | 'done' 1301 + | 'go' 1302 + | 'next' 1303 + | 'previous' 1304 + | 'search' 1305 + | 'send' 1306 + | undefined 1307 + >; 1308 + elementTiming?: Signalish<string | undefined>; 1309 + elementtiming?: Signalish<AllHTMLAttributes['elementTiming']>; 1310 + exportparts?: Signalish<string | undefined>; 1311 + for?: Signalish<string | undefined>; 1312 + form?: Signalish<string | undefined>; 1313 + formAction?: Signalish<string | undefined>; 1314 + formaction?: Signalish<string | undefined>; 1315 + formEncType?: Signalish<string | undefined>; 1316 + formenctype?: Signalish<string | undefined>; 1317 + formMethod?: Signalish<string | undefined>; 1318 + formmethod?: Signalish<string | undefined>; 1319 + formNoValidate?: Signalish<boolean | undefined>; 1320 + formnovalidate?: Signalish<boolean | undefined>; 1321 + formTarget?: Signalish<string | undefined>; 1322 + formtarget?: Signalish<string | undefined>; 1323 + frameBorder?: Signalish<number | string | undefined>; 1324 + frameborder?: Signalish<number | string | undefined>; 1325 + headers?: Signalish<string | undefined>; 1326 + height?: Signalish<number | string | undefined>; 1327 + hidden?: Signalish<boolean | 'hidden' | 'until-found' | undefined>; 1328 + high?: Signalish<number | undefined>; 1329 + href?: Signalish<string | undefined>; 1330 + hrefLang?: Signalish<string | undefined>; 1331 + hreflang?: Signalish<string | undefined>; 1332 + htmlFor?: Signalish<string | undefined>; 1333 + httpEquiv?: Signalish<string | undefined>; 1334 + 'http-equiv'?: Signalish<string | undefined>; 1335 + icon?: Signalish<string | undefined>; 1336 + id?: Signalish<string | undefined>; 1337 + indeterminate?: Signalish<boolean | undefined>; 1338 + inert?: Signalish<boolean | undefined>; 1339 + inputMode?: Signalish<string | undefined>; 1340 + inputmode?: Signalish<string | undefined>; 1341 + integrity?: Signalish<string | undefined>; 1342 + is?: Signalish<string | undefined>; 1343 + keyParams?: Signalish<string | undefined>; 1344 + keyType?: Signalish<string | undefined>; 1345 + kind?: Signalish<string | undefined>; 1346 + label?: Signalish<string | undefined>; 1347 + lang?: Signalish<string | undefined>; 1348 + list?: Signalish<string | undefined>; 1349 + loading?: Signalish<'eager' | 'lazy' | undefined>; 1350 + loop?: Signalish<boolean | undefined>; 1351 + low?: Signalish<number | undefined>; 1352 + manifest?: Signalish<string | undefined>; 1353 + marginHeight?: Signalish<number | undefined>; 1354 + marginWidth?: Signalish<number | undefined>; 1355 + max?: Signalish<number | string | undefined>; 1356 + maxLength?: Signalish<number | undefined>; 1357 + maxlength?: Signalish<number | undefined>; 1358 + media?: Signalish<string | undefined>; 1359 + mediaGroup?: Signalish<string | undefined>; 1360 + method?: Signalish<string | undefined>; 1361 + min?: Signalish<number | string | undefined>; 1362 + minLength?: Signalish<number | undefined>; 1363 + minlength?: Signalish<number | undefined>; 1364 + multiple?: Signalish<boolean | undefined>; 1365 + muted?: Signalish<boolean | undefined>; 1366 + name?: Signalish<string | undefined>; 1367 + nomodule?: Signalish<boolean | undefined>; 1368 + nonce?: Signalish<string | undefined>; 1369 + noValidate?: Signalish<boolean | undefined>; 1370 + novalidate?: Signalish<boolean | undefined>; 1371 + open?: Signalish<boolean | undefined>; 1372 + optimum?: Signalish<number | undefined>; 1373 + part?: Signalish<string | undefined>; 1374 + pattern?: Signalish<string | undefined>; 1375 + ping?: Signalish<string | undefined>; 1376 + placeholder?: Signalish<string | undefined>; 1377 + playsInline?: Signalish<boolean | undefined>; 1378 + playsinline?: Signalish<boolean | undefined>; 1379 + playbackRate?: Signalish<number | undefined>; 1380 + popover?: Signalish<'auto' | 'hint' | 'manual' | boolean | undefined>; 1381 + popovertarget?: Signalish<string | undefined>; 1382 + popoverTarget?: Signalish<string | undefined>; 1383 + popovertargetaction?: Signalish<'hide' | 'show' | 'toggle' | undefined>; 1384 + popoverTargetAction?: Signalish<'hide' | 'show' | 'toggle' | undefined>; 1385 + poster?: Signalish<string | undefined>; 1386 + preload?: Signalish<'auto' | 'metadata' | 'none' | undefined>; 1387 + preservesPitch?: Signalish<boolean | undefined>; 1388 + radioGroup?: Signalish<string | undefined>; 1389 + readonly?: Signalish<boolean | undefined>; 1390 + readOnly?: Signalish<boolean | undefined>; 1391 + referrerpolicy?: Signalish< 1392 + | 'no-referrer' 1393 + | 'no-referrer-when-downgrade' 1394 + | 'origin' 1395 + | 'origin-when-cross-origin' 1396 + | 'same-origin' 1397 + | 'strict-origin' 1398 + | 'strict-origin-when-cross-origin' 1399 + | 'unsafe-url' 1400 + | undefined 1401 + >; 1402 + rel?: Signalish<string | undefined>; 1403 + required?: Signalish<boolean | undefined>; 1404 + reversed?: Signalish<boolean | undefined>; 1405 + role?: Signalish<AriaRole | undefined>; 1406 + rows?: Signalish<number | undefined>; 1407 + rowSpan?: Signalish<number | undefined>; 1408 + rowspan?: Signalish<number | undefined>; 1409 + sandbox?: Signalish<string | undefined>; 1410 + scope?: Signalish<string | undefined>; 1411 + scoped?: Signalish<boolean | undefined>; 1412 + scrolling?: Signalish<string | undefined>; 1413 + seamless?: Signalish<boolean | undefined>; 1414 + selected?: Signalish<boolean | undefined>; 1415 + shape?: Signalish<string | undefined>; 1416 + size?: Signalish<number | undefined>; 1417 + sizes?: Signalish<string | undefined>; 1418 + slot?: Signalish<string | undefined>; 1419 + span?: Signalish<number | undefined>; 1420 + spellcheck?: Signalish<boolean | undefined>; 1421 + src?: Signalish<string | undefined>; 1422 + srcDoc?: Signalish<string | undefined>; 1423 + srcdoc?: Signalish<string | undefined>; 1424 + srcLang?: Signalish<string | undefined>; 1425 + srclang?: Signalish<string | undefined>; 1426 + srcSet?: Signalish<string | undefined>; 1427 + srcset?: Signalish<string | undefined>; 1428 + srcObject?: Signalish<MediaStream | MediaSource | Blob | File | null>; 1429 + start?: Signalish<number | undefined>; 1430 + step?: Signalish<number | string | undefined>; 1431 + style?: Signalish<string | CSSProperties | undefined>; 1432 + summary?: Signalish<string | undefined>; 1433 + tabIndex?: Signalish<number | undefined>; 1434 + tabindex?: Signalish<number | undefined>; 1435 + target?: Signalish<string | undefined>; 1436 + title?: Signalish<string | undefined>; 1437 + type?: Signalish<string | undefined>; 1438 + useMap?: Signalish<string | undefined>; 1439 + usemap?: Signalish<string | undefined>; 1440 + value?: Signalish<string | string[] | number | undefined>; 1441 + volume?: Signalish<string | number | undefined>; 1442 + width?: Signalish<number | string | undefined>; 1443 + wmode?: Signalish<string | undefined>; 1444 + wrap?: Signalish<string | undefined>; 1445 + 1446 + // Non-standard Attributes 1447 + autocapitalize?: Signalish< 1448 + 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters' | undefined 1449 + >; 1450 + autoCapitalize?: Signalish< 1451 + 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters' | undefined 1452 + >; 1453 + disablePictureInPicture?: Signalish<boolean | undefined>; 1454 + results?: Signalish<number | undefined>; 1455 + translate?: Signalish<boolean | undefined>; 1456 + 1457 + // RDFa Attributes 1458 + about?: Signalish<string | undefined>; 1459 + datatype?: Signalish<string | undefined>; 1460 + inlist?: Signalish<any>; 1461 + prefix?: Signalish<string | undefined>; 1462 + property?: Signalish<string | undefined>; 1463 + resource?: Signalish<string | undefined>; 1464 + typeof?: Signalish<string | undefined>; 1465 + vocab?: Signalish<string | undefined>; 1466 + 1467 + // Microdata Attributes 1468 + itemProp?: Signalish<string | undefined>; 1469 + itemprop?: Signalish<string | undefined>; 1470 + itemScope?: Signalish<boolean | undefined>; 1471 + itemscope?: Signalish<boolean | undefined>; 1472 + itemType?: Signalish<string | undefined>; 1473 + itemtype?: Signalish<string | undefined>; 1474 + itemID?: Signalish<string | undefined>; 1475 + itemid?: Signalish<string | undefined>; 1476 + itemRef?: Signalish<string | undefined>; 1477 + itemref?: Signalish<string | undefined>; 1478 + } 1479 + 1480 + export interface HTMLAttributes<RefType extends EventTarget = EventTarget> 1481 + extends ClassAttributes<RefType>, DOMAttributes<RefType>, AriaAttributes { 1482 + // Standard HTML Attributes 1483 + accesskey?: Signalish<string | undefined>; 1484 + accessKey?: Signalish<string | undefined>; 1485 + autocapitalize?: Signalish< 1486 + 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters' | undefined 1487 + >; 1488 + autoCapitalize?: Signalish< 1489 + 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters' | undefined 1490 + >; 1491 + autocorrect?: Signalish<string | undefined>; 1492 + autoCorrect?: Signalish<string | undefined>; 1493 + autofocus?: Signalish<boolean | undefined>; 1494 + autoFocus?: Signalish<boolean | undefined>; 1495 + class?: Signalish<string | undefined>; 1496 + className?: Signalish<string | undefined>; 1497 + contenteditable?: Signalish< 1498 + Booleanish | '' | 'plaintext-only' | 'inherit' | undefined 1499 + >; 1500 + contentEditable?: Signalish< 1501 + Booleanish | '' | 'plaintext-only' | 'inherit' | undefined 1502 + >; 1503 + dir?: Signalish<'auto' | 'rtl' | 'ltr' | undefined>; 1504 + draggable?: Signalish<boolean | undefined>; 1505 + enterkeyhint?: Signalish< 1506 + | 'enter' 1507 + | 'done' 1508 + | 'go' 1509 + | 'next' 1510 + | 'previous' 1511 + | 'search' 1512 + | 'send' 1513 + | undefined 1514 + >; 1515 + exportparts?: Signalish<string | undefined>; 1516 + hidden?: Signalish<boolean | 'hidden' | 'until-found' | undefined>; 1517 + id?: Signalish<string | undefined>; 1518 + inert?: Signalish<boolean | undefined>; 1519 + inputmode?: Signalish<string | undefined>; 1520 + inputMode?: Signalish<string | undefined>; 1521 + is?: Signalish<string | undefined>; 1522 + lang?: Signalish<string | undefined>; 1523 + nonce?: Signalish<string | undefined>; 1524 + part?: Signalish<string | undefined>; 1525 + popover?: Signalish<'auto' | 'hint' | 'manual' | boolean | undefined>; 1526 + slot?: Signalish<string | undefined>; 1527 + spellcheck?: Signalish<boolean | undefined>; 1528 + style?: Signalish<string | CSSProperties | undefined>; 1529 + tabindex?: Signalish<number | undefined>; 1530 + tabIndex?: Signalish<number | undefined>; 1531 + title?: Signalish<string | undefined>; 1532 + translate?: Signalish<boolean | undefined>; 1533 + 1534 + // WAI-ARIA Attributes 1535 + role?: Signalish<AriaRole | undefined>; 1536 + 1537 + // Non-standard Attributes 1538 + disablePictureInPicture?: Signalish<boolean | undefined>; 1539 + elementtiming?: Signalish<string | undefined>; 1540 + elementTiming?: Signalish<string | undefined>; 1541 + results?: Signalish<number | undefined>; 1542 + 1543 + // RDFa Attributes 1544 + about?: Signalish<string | undefined>; 1545 + datatype?: Signalish<string | undefined>; 1546 + inlist?: Signalish<any>; 1547 + prefix?: Signalish<string | undefined>; 1548 + property?: Signalish<string | undefined>; 1549 + resource?: Signalish<string | undefined>; 1550 + typeof?: Signalish<string | undefined>; 1551 + vocab?: Signalish<string | undefined>; 1552 + 1553 + // Microdata Attributes 1554 + itemid?: Signalish<string | undefined>; 1555 + itemID?: Signalish<string | undefined>; 1556 + itemprop?: Signalish<string | undefined>; 1557 + itemProp?: Signalish<string | undefined>; 1558 + itemref?: Signalish<string | undefined>; 1559 + itemRef?: Signalish<string | undefined>; 1560 + itemscope?: Signalish<boolean | undefined>; 1561 + itemScope?: Signalish<boolean | undefined>; 1562 + itemtype?: Signalish<string | undefined>; 1563 + itemType?: Signalish<string | undefined>; 1564 + } 1565 + 1566 + export type HTMLAttributeReferrerPolicy = 1567 + | '' 1568 + | 'no-referrer' 1569 + | 'no-referrer-when-downgrade' 1570 + | 'origin' 1571 + | 'origin-when-cross-origin' 1572 + | 'same-origin' 1573 + | 'strict-origin' 1574 + | 'strict-origin-when-cross-origin' 1575 + | 'unsafe-url'; 1576 + 1577 + export type HTMLAttributeAnchorTarget = 1578 + | '_self' 1579 + | '_blank' 1580 + | '_parent' 1581 + | '_top' 1582 + | (string & {}); 1583 + 1584 + export interface AnchorHTMLAttributes< 1585 + T extends EventTarget = HTMLAnchorElement 1586 + > extends HTMLAttributes<T> { 1587 + download?: Signalish<any>; 1588 + href?: Signalish<string | undefined>; 1589 + hreflang?: Signalish<string | undefined>; 1590 + hrefLang?: Signalish<string | undefined>; 1591 + media?: Signalish<string | undefined>; 1592 + ping?: Signalish<string | undefined>; 1593 + rel?: Signalish<string | undefined>; 1594 + target?: Signalish<HTMLAttributeAnchorTarget | undefined>; 1595 + type?: Signalish<string | undefined>; 1596 + referrerpolicy?: Signalish<HTMLAttributeReferrerPolicy | undefined>; 1597 + referrerPolicy?: Signalish<HTMLAttributeReferrerPolicy | undefined>; 1598 + } 1599 + 1600 + export interface AreaHTMLAttributes< 1601 + T extends EventTarget = HTMLAreaElement 1602 + > extends HTMLAttributes<T> { 1603 + alt?: Signalish<string | undefined>; 1604 + coords?: Signalish<string | undefined>; 1605 + download?: Signalish<any>; 1606 + href?: Signalish<string | undefined>; 1607 + hreflang?: Signalish<string | undefined>; 1608 + hrefLang?: Signalish<string | undefined>; 1609 + media?: Signalish<string | undefined>; 1610 + referrerpolicy?: Signalish<HTMLAttributeReferrerPolicy | undefined>; 1611 + referrerPolicy?: Signalish<HTMLAttributeReferrerPolicy | undefined>; 1612 + rel?: Signalish<string | undefined>; 1613 + shape?: Signalish<string | undefined>; 1614 + target?: Signalish<HTMLAttributeAnchorTarget | undefined>; 1615 + } 1616 + 1617 + export interface AudioHTMLAttributes< 1618 + T extends EventTarget = HTMLAudioElement 1619 + > extends MediaHTMLAttributes<T> {} 1620 + 1621 + export interface BaseHTMLAttributes< 1622 + T extends EventTarget = HTMLBaseElement 1623 + > extends HTMLAttributes<T> { 1624 + href?: Signalish<string | undefined>; 1625 + target?: Signalish<HTMLAttributeAnchorTarget | undefined>; 1626 + } 1627 + 1628 + export interface BlockquoteHTMLAttributes< 1629 + T extends EventTarget = HTMLQuoteElement 1630 + > extends HTMLAttributes<T> { 1631 + cite?: Signalish<string | undefined>; 1632 + } 1633 + 1634 + export interface ButtonHTMLAttributes< 1635 + T extends EventTarget = HTMLButtonElement 1636 + > extends HTMLAttributes<T> { 1637 + command?: Signalish<string | undefined>; 1638 + commandfor?: Signalish<string | undefined>; 1639 + commandFor?: Signalish<string | undefined>; 1640 + disabled?: Signalish<boolean | undefined>; 1641 + form?: Signalish<string | undefined>; 1642 + formaction?: Signalish<string | undefined>; 1643 + formAction?: Signalish<string | undefined>; 1644 + formenctype?: Signalish<string | undefined>; 1645 + formEncType?: Signalish<string | undefined>; 1646 + formmethod?: Signalish<string | undefined>; 1647 + formMethod?: Signalish<string | undefined>; 1648 + formnovalidate?: Signalish<boolean | undefined>; 1649 + formNoValidate?: Signalish<boolean | undefined>; 1650 + formtarget?: Signalish<string | undefined>; 1651 + formTarget?: Signalish<string | undefined>; 1652 + name?: Signalish<string | undefined>; 1653 + popovertarget?: Signalish<string | undefined>; 1654 + popoverTarget?: Signalish<string | undefined>; 1655 + popovertargetaction?: Signalish<'hide' | 'show' | 'toggle' | undefined>; 1656 + popoverTargetAction?: Signalish<'hide' | 'show' | 'toggle' | undefined>; 1657 + type?: Signalish<'submit' | 'reset' | 'button' | undefined>; 1658 + value?: Signalish<string | number | undefined>; 1659 + } 1660 + 1661 + export interface CanvasHTMLAttributes< 1662 + T extends EventTarget = HTMLCanvasElement 1663 + > extends HTMLAttributes<T> { 1664 + height?: Signalish<number | string | undefined>; 1665 + width?: Signalish<number | string | undefined>; 1666 + } 1667 + 1668 + export interface ColHTMLAttributes< 1669 + T extends EventTarget = HTMLTableColElement 1670 + > extends HTMLAttributes<T> { 1671 + span?: Signalish<number | undefined>; 1672 + width?: Signalish<number | string | undefined>; 1673 + } 1674 + 1675 + export interface ColgroupHTMLAttributes< 1676 + T extends EventTarget = HTMLTableColElement 1677 + > extends HTMLAttributes<T> { 1678 + span?: Signalish<number | undefined>; 1679 + } 1680 + 1681 + export interface DataHTMLAttributes< 1682 + T extends EventTarget = HTMLDataElement 1683 + > extends HTMLAttributes<T> { 1684 + value?: Signalish<string | number | undefined>; 1685 + } 1686 + 1687 + export interface DelHTMLAttributes< 1688 + T extends EventTarget = HTMLModElement 1689 + > extends HTMLAttributes<T> { 1690 + cite?: Signalish<string | undefined>; 1691 + datetime?: Signalish<string | undefined>; 1692 + dateTime?: Signalish<string | undefined>; 1693 + } 1694 + 1695 + export interface DetailsHTMLAttributes< 1696 + T extends EventTarget = HTMLDetailsElement 1697 + > extends HTMLAttributes<T> { 1698 + name?: Signalish<string | undefined>; 1699 + open?: Signalish<boolean | undefined>; 1700 + } 1701 + 1702 + export interface DialogHTMLAttributes< 1703 + T extends EventTarget = HTMLDialogElement 1704 + > extends HTMLAttributes<T> { 1705 + onCancel?: GenericEventHandler<T> | undefined; 1706 + onClose?: GenericEventHandler<T> | undefined; 1707 + open?: Signalish<boolean | undefined>; 1708 + closedby?: Signalish<'none' | 'closerequest' | 'any' | undefined>; 1709 + closedBy?: Signalish<'none' | 'closerequest' | 'any' | undefined>; 1710 + } 1711 + 1712 + export interface EmbedHTMLAttributes< 1713 + T extends EventTarget = HTMLEmbedElement 1714 + > extends HTMLAttributes<T> { 1715 + height?: Signalish<number | string | undefined>; 1716 + src?: Signalish<string | undefined>; 1717 + type?: Signalish<string | undefined>; 1718 + width?: Signalish<number | string | undefined>; 1719 + } 1720 + 1721 + export interface FieldsetHTMLAttributes< 1722 + T extends EventTarget = HTMLFieldSetElement 1723 + > extends HTMLAttributes<T> { 1724 + disabled?: Signalish<boolean | undefined>; 1725 + form?: Signalish<string | undefined>; 1726 + name?: Signalish<string | undefined>; 1727 + } 1728 + 1729 + export interface FormHTMLAttributes< 1730 + T extends EventTarget = HTMLFormElement 1731 + > extends HTMLAttributes<T> { 1732 + 'accept-charset'?: Signalish<string | undefined>; 1733 + acceptCharset?: Signalish<string | undefined>; 1734 + action?: Signalish<string | undefined>; 1735 + autocomplete?: Signalish<string | undefined>; 1736 + autoComplete?: Signalish<string | undefined>; 1737 + enctype?: Signalish<string | undefined>; 1738 + encType?: Signalish<string | undefined>; 1739 + method?: Signalish<string | undefined>; 1740 + name?: Signalish<string | undefined>; 1741 + novalidate?: Signalish<boolean | undefined>; 1742 + noValidate?: Signalish<boolean | undefined>; 1743 + rel?: Signalish<string | undefined>; 1744 + target?: Signalish<string | undefined>; 1745 + } 1746 + 1747 + export interface IframeHTMLAttributes< 1748 + T extends EventTarget = HTMLIFrameElement 1749 + > extends HTMLAttributes<T> { 1750 + allow?: Signalish<string | undefined>; 1751 + allowFullScreen?: Signalish<boolean | undefined>; 1752 + allowTransparency?: Signalish<boolean | undefined>; 1753 + /** @deprecated */ 1754 + frameborder?: Signalish<number | string | undefined>; 1755 + /** @deprecated */ 1756 + frameBorder?: Signalish<number | string | undefined>; 1757 + height?: Signalish<number | string | undefined>; 1758 + loading?: Signalish<'eager' | 'lazy' | undefined>; 1759 + /** @deprecated */ 1760 + marginHeight?: Signalish<number | undefined>; 1761 + /** @deprecated */ 1762 + marginWidth?: Signalish<number | undefined>; 1763 + name?: Signalish<string | undefined>; 1764 + referrerpolicy?: Signalish<HTMLAttributeReferrerPolicy | undefined>; 1765 + referrerPolicy?: Signalish<HTMLAttributeReferrerPolicy | undefined>; 1766 + sandbox?: Signalish<string | undefined>; 1767 + /** @deprecated */ 1768 + scrolling?: Signalish<string | undefined>; 1769 + seamless?: Signalish<boolean | undefined>; 1770 + src?: Signalish<string | undefined>; 1771 + srcdoc?: Signalish<string | undefined>; 1772 + srcDoc?: Signalish<string | undefined>; 1773 + width?: Signalish<number | string | undefined>; 1774 + } 1775 + 1776 + export type HTMLAttributeCrossOrigin = 'anonymous' | 'use-credentials'; 1777 + 1778 + export interface ImgHTMLAttributes< 1779 + T extends EventTarget = HTMLImageElement 1780 + > extends HTMLAttributes<T> { 1781 + alt?: Signalish<string | undefined>; 1782 + crossorigin?: Signalish<HTMLAttributeCrossOrigin>; 1783 + crossOrigin?: Signalish<HTMLAttributeCrossOrigin>; 1784 + decoding?: Signalish<'async' | 'auto' | 'sync' | undefined>; 1785 + fetchpriority?: Signalish<'high' | 'auto' | 'low' | undefined>; 1786 + fetchPriority?: Signalish<'high' | 'auto' | 'low' | undefined>; 1787 + height?: Signalish<number | string | undefined>; 1788 + loading?: Signalish<'eager' | 'lazy' | undefined>; 1789 + referrerpolicy?: Signalish<HTMLAttributeReferrerPolicy | undefined>; 1790 + referrerPolicy?: Signalish<HTMLAttributeReferrerPolicy | undefined>; 1791 + sizes?: Signalish<string | undefined>; 1792 + src?: Signalish<string | undefined>; 1793 + srcset?: Signalish<string | undefined>; 1794 + srcSet?: Signalish<string | undefined>; 1795 + usemap?: Signalish<string | undefined>; 1796 + useMap?: Signalish<string | undefined>; 1797 + width?: Signalish<number | string | undefined>; 1798 + } 1799 + 1800 + export type HTMLInputTypeAttribute = 1801 + | 'button' 1802 + | 'checkbox' 1803 + | 'color' 1804 + | 'date' 1805 + | 'datetime-local' 1806 + | 'email' 1807 + | 'file' 1808 + | 'hidden' 1809 + | 'image' 1810 + | 'month' 1811 + | 'number' 1812 + | 'password' 1813 + | 'radio' 1814 + | 'range' 1815 + | 'reset' 1816 + | 'search' 1817 + | 'submit' 1818 + | 'tel' 1819 + | 'text' 1820 + | 'time' 1821 + | 'url' 1822 + | 'week' 1823 + | (string & {}); 1824 + 1825 + export interface InputHTMLAttributes< 1826 + T extends EventTarget = HTMLInputElement 1827 + > extends HTMLAttributes<T> { 1828 + accept?: Signalish<string | undefined>; 1829 + alt?: Signalish<string | undefined>; 1830 + autocomplete?: Signalish<string | undefined>; 1831 + autoComplete?: Signalish<string | undefined>; 1832 + capture?: Signalish<'user' | 'environment' | undefined>; // https://www.w3.org/TR/html-media-capture/#the-capture-attribute 1833 + checked?: Signalish<boolean | undefined>; 1834 + defaultChecked?: Signalish<boolean | undefined>; 1835 + defaultValue?: Signalish<string | number | undefined>; 1836 + disabled?: Signalish<boolean | undefined>; 1837 + enterKeyHint?: Signalish< 1838 + | 'enter' 1839 + | 'done' 1840 + | 'go' 1841 + | 'next' 1842 + | 'previous' 1843 + | 'search' 1844 + | 'send' 1845 + | undefined 1846 + >; 1847 + form?: Signalish<string | undefined>; 1848 + formaction?: Signalish<string | undefined>; 1849 + formAction?: Signalish<string | undefined>; 1850 + formenctype?: Signalish<string | undefined>; 1851 + formEncType?: Signalish<string | undefined>; 1852 + formmethod?: Signalish<string | undefined>; 1853 + formMethod?: Signalish<string | undefined>; 1854 + formnovalidate?: Signalish<boolean | undefined>; 1855 + formNoValidate?: Signalish<boolean | undefined>; 1856 + formtarget?: Signalish<string | undefined>; 1857 + formTarget?: Signalish<string | undefined>; 1858 + height?: Signalish<number | string | undefined>; 1859 + indeterminate?: Signalish<boolean | undefined>; 1860 + list?: Signalish<string | undefined>; 1861 + max?: Signalish<number | string | undefined>; 1862 + maxlength?: Signalish<number | undefined>; 1863 + maxLength?: Signalish<number | undefined>; 1864 + min?: Signalish<number | string | undefined>; 1865 + minlength?: Signalish<number | undefined>; 1866 + minLength?: Signalish<number | undefined>; 1867 + multiple?: Signalish<boolean | undefined>; 1868 + name?: Signalish<string | undefined>; 1869 + pattern?: Signalish<string | undefined>; 1870 + placeholder?: Signalish<string | undefined>; 1871 + readonly?: Signalish<boolean | undefined>; 1872 + readOnly?: Signalish<boolean | undefined>; 1873 + required?: Signalish<boolean | undefined>; 1874 + size?: Signalish<number | undefined>; 1875 + src?: Signalish<string | undefined>; 1876 + step?: Signalish<number | string | undefined>; 1877 + type?: HTMLInputTypeAttribute | undefined; 1878 + value?: Signalish<string | number | undefined>; 1879 + width?: Signalish<number | string | undefined>; 1880 + onChange?: GenericEventHandler<T> | undefined; 1881 + } 1882 + 1883 + export interface InsHTMLAttributes< 1884 + T extends EventTarget = HTMLModElement 1885 + > extends HTMLAttributes<T> { 1886 + cite?: Signalish<string | undefined>; 1887 + datetime?: Signalish<string | undefined>; 1888 + dateTime?: Signalish<string | undefined>; 1889 + } 1890 + 1891 + export interface KeygenHTMLAttributes< 1892 + T extends EventTarget = HTMLUnknownElement 1893 + > extends HTMLAttributes<T> { 1894 + challenge?: Signalish<string | undefined>; 1895 + disabled?: Signalish<boolean | undefined>; 1896 + form?: Signalish<string | undefined>; 1897 + keyType?: Signalish<string | undefined>; 1898 + keyParams?: Signalish<string | undefined>; 1899 + name?: Signalish<string | undefined>; 1900 + } 1901 + 1902 + export interface LabelHTMLAttributes< 1903 + T extends EventTarget = HTMLLabelElement 1904 + > extends HTMLAttributes<T> { 1905 + for?: Signalish<string | undefined>; 1906 + form?: Signalish<string | undefined>; 1907 + htmlFor?: Signalish<string | undefined>; 1908 + } 1909 + 1910 + export interface LiHTMLAttributes< 1911 + T extends EventTarget = HTMLLIElement 1912 + > extends HTMLAttributes<T> { 1913 + value?: Signalish<string | number | undefined>; 1914 + } 1915 + 1916 + export interface LinkHTMLAttributes< 1917 + T extends EventTarget = HTMLLinkElement 1918 + > extends HTMLAttributes<T> { 1919 + as?: Signalish<string | undefined>; 1920 + crossorigin?: Signalish<HTMLAttributeCrossOrigin>; 1921 + crossOrigin?: Signalish<HTMLAttributeCrossOrigin>; 1922 + fetchpriority?: Signalish<'high' | 'low' | 'auto' | undefined>; 1923 + fetchPriority?: Signalish<'high' | 'low' | 'auto' | undefined>; 1924 + href?: Signalish<string | undefined>; 1925 + hreflang?: Signalish<string | undefined>; 1926 + hrefLang?: Signalish<string | undefined>; 1927 + integrity?: Signalish<string | undefined>; 1928 + media?: Signalish<string | undefined>; 1929 + imageSrcSet?: Signalish<string | undefined>; 1930 + referrerpolicy?: Signalish<HTMLAttributeReferrerPolicy | undefined>; 1931 + referrerPolicy?: Signalish<HTMLAttributeReferrerPolicy | undefined>; 1932 + rel?: Signalish<string | undefined>; 1933 + sizes?: Signalish<string | undefined>; 1934 + type?: Signalish<string | undefined>; 1935 + charset?: Signalish<string | undefined>; 1936 + charSet?: Signalish<string | undefined>; 1937 + } 1938 + 1939 + export interface MapHTMLAttributes< 1940 + T extends EventTarget = HTMLMapElement 1941 + > extends HTMLAttributes<T> { 1942 + name?: Signalish<string | undefined>; 1943 + } 1944 + 1945 + export interface MarqueeHTMLAttributes< 1946 + T extends EventTarget = HTMLMarqueeElement 1947 + > extends HTMLAttributes<T> { 1948 + behavior?: Signalish<'scroll' | 'slide' | 'alternate' | undefined>; 1949 + bgColor?: Signalish<string | undefined>; 1950 + direction?: Signalish<'left' | 'right' | 'up' | 'down' | undefined>; 1951 + height?: Signalish<number | string | undefined>; 1952 + hspace?: Signalish<number | string | undefined>; 1953 + loop?: Signalish<number | string | undefined>; 1954 + scrollAmount?: Signalish<number | string | undefined>; 1955 + scrollDelay?: Signalish<number | string | undefined>; 1956 + trueSpeed?: Signalish<boolean | undefined>; 1957 + vspace?: Signalish<number | string | undefined>; 1958 + width?: Signalish<number | string | undefined>; 1959 + } 1960 + 1961 + export interface MediaHTMLAttributes< 1962 + T extends EventTarget = HTMLMediaElement 1963 + > extends HTMLAttributes<T> { 1964 + autoplay?: Signalish<boolean | undefined>; 1965 + autoPlay?: Signalish<boolean | undefined>; 1966 + controls?: Signalish<boolean | undefined>; 1967 + controlslist?: Signalish<string | undefined>; 1968 + controlsList?: Signalish<string | undefined>; 1969 + crossorigin?: Signalish<HTMLAttributeCrossOrigin>; 1970 + crossOrigin?: Signalish<HTMLAttributeCrossOrigin>; 1971 + currentTime?: Signalish<number | undefined>; 1972 + defaultMuted?: Signalish<boolean | undefined>; 1973 + defaultPlaybackRate?: Signalish<number | undefined>; 1974 + disableremoteplayback?: Signalish<boolean | undefined>; 1975 + disableRemotePlayback?: Signalish<boolean | undefined>; 1976 + loop?: Signalish<boolean | undefined>; 1977 + mediaGroup?: Signalish<string | undefined>; 1978 + muted?: Signalish<boolean | undefined>; 1979 + playbackRate?: Signalish<number | undefined>; 1980 + preload?: Signalish<'auto' | 'metadata' | 'none' | undefined>; 1981 + preservesPitch?: Signalish<boolean | undefined>; 1982 + src?: Signalish<string | undefined>; 1983 + srcObject?: Signalish<MediaStream | MediaSource | Blob | File | null>; 1984 + volume?: Signalish<string | number | undefined>; 1985 + } 1986 + 1987 + export interface MenuHTMLAttributes< 1988 + T extends EventTarget = HTMLMenuElement 1989 + > extends HTMLAttributes<T> { 1990 + type?: Signalish<string | undefined>; 1991 + } 1992 + 1993 + export interface MetaHTMLAttributes< 1994 + T extends EventTarget = HTMLMetaElement 1995 + > extends HTMLAttributes<T> { 1996 + charset?: Signalish<string | undefined>; 1997 + charSet?: Signalish<string | undefined>; 1998 + content?: Signalish<string | undefined>; 1999 + 'http-equiv'?: Signalish<string | undefined>; 2000 + httpEquiv?: Signalish<string | undefined>; 2001 + name?: Signalish<string | undefined>; 2002 + media?: Signalish<string | undefined>; 2003 + } 2004 + 2005 + export interface MeterHTMLAttributes< 2006 + T extends EventTarget = HTMLMeterElement 2007 + > extends HTMLAttributes<T> { 2008 + form?: Signalish<string | undefined>; 2009 + high?: Signalish<number | undefined>; 2010 + low?: Signalish<number | undefined>; 2011 + max?: Signalish<number | string | undefined>; 2012 + min?: Signalish<number | string | undefined>; 2013 + optimum?: Signalish<number | undefined>; 2014 + value?: Signalish<string | number | undefined>; 2015 + } 2016 + 2017 + export interface ObjectHTMLAttributes< 2018 + T extends EventTarget = HTMLObjectElement 2019 + > extends HTMLAttributes<T> { 2020 + classID?: Signalish<string | undefined>; 2021 + data?: Signalish<string | undefined>; 2022 + form?: Signalish<string | undefined>; 2023 + height?: Signalish<number | string | undefined>; 2024 + name?: Signalish<string | undefined>; 2025 + type?: Signalish<string | undefined>; 2026 + usemap?: Signalish<string | undefined>; 2027 + useMap?: Signalish<string | undefined>; 2028 + width?: Signalish<number | string | undefined>; 2029 + wmode?: Signalish<string | undefined>; 2030 + } 2031 + 2032 + export interface OlHTMLAttributes< 2033 + T extends EventTarget = HTMLOListElement 2034 + > extends HTMLAttributes<T> { 2035 + reversed?: Signalish<boolean | undefined>; 2036 + start?: Signalish<number | undefined>; 2037 + type?: Signalish<'1' | 'a' | 'A' | 'i' | 'I' | undefined>; 2038 + } 2039 + 2040 + export interface OptgroupHTMLAttributes< 2041 + T extends EventTarget = HTMLOptGroupElement 2042 + > extends HTMLAttributes<T> { 2043 + disabled?: Signalish<boolean | undefined>; 2044 + label?: Signalish<string | undefined>; 2045 + } 2046 + 2047 + export interface OptionHTMLAttributes< 2048 + T extends EventTarget = HTMLOptionElement 2049 + > extends HTMLAttributes<T> { 2050 + disabled?: Signalish<boolean | undefined>; 2051 + label?: Signalish<string | undefined>; 2052 + selected?: Signalish<boolean | undefined>; 2053 + value?: Signalish<string | number | undefined>; 2054 + } 2055 + 2056 + export interface OutputHTMLAttributes< 2057 + T extends EventTarget = HTMLOutputElement 2058 + > extends HTMLAttributes<T> { 2059 + for?: Signalish<string | undefined>; 2060 + form?: Signalish<string | undefined>; 2061 + htmlFor?: Signalish<string | undefined>; 2062 + name?: Signalish<string | undefined>; 2063 + } 2064 + 2065 + export interface ParamHTMLAttributes< 2066 + T extends EventTarget = HTMLParamElement 2067 + > extends HTMLAttributes<T> { 2068 + name?: Signalish<string | undefined>; 2069 + value?: Signalish<string | number | undefined>; 2070 + } 2071 + 2072 + export interface ProgressHTMLAttributes< 2073 + T extends EventTarget = HTMLProgressElement 2074 + > extends HTMLAttributes<T> { 2075 + max?: Signalish<number | string | undefined>; 2076 + value?: Signalish<string | number | undefined>; 2077 + } 2078 + 2079 + export interface QuoteHTMLAttributes< 2080 + T extends EventTarget = HTMLQuoteElement 2081 + > extends HTMLAttributes<T> { 2082 + cite?: Signalish<string | undefined>; 2083 + } 2084 + 2085 + export interface ScriptHTMLAttributes< 2086 + T extends EventTarget = HTMLScriptElement 2087 + > extends HTMLAttributes<T> { 2088 + async?: Signalish<boolean | undefined>; 2089 + /** @deprecated */ 2090 + charset?: Signalish<string | undefined>; 2091 + /** @deprecated */ 2092 + charSet?: Signalish<string | undefined>; 2093 + crossorigin?: Signalish<HTMLAttributeCrossOrigin>; 2094 + crossOrigin?: Signalish<HTMLAttributeCrossOrigin>; 2095 + defer?: Signalish<boolean | undefined>; 2096 + integrity?: Signalish<string | undefined>; 2097 + nomodule?: Signalish<boolean | undefined>; 2098 + noModule?: Signalish<boolean | undefined>; 2099 + referrerpolicy?: Signalish<HTMLAttributeReferrerPolicy | undefined>; 2100 + referrerPolicy?: Signalish<HTMLAttributeReferrerPolicy | undefined>; 2101 + src?: Signalish<string | undefined>; 2102 + type?: Signalish<string | undefined>; 2103 + } 2104 + 2105 + export interface SelectHTMLAttributes< 2106 + T extends EventTarget = HTMLSelectElement 2107 + > extends HTMLAttributes<T> { 2108 + autocomplete?: Signalish<string | undefined>; 2109 + autoComplete?: Signalish<string | undefined>; 2110 + defaultValue?: Signalish<string | number | undefined>; 2111 + disabled?: Signalish<boolean | undefined>; 2112 + form?: Signalish<string | undefined>; 2113 + multiple?: Signalish<boolean | undefined>; 2114 + name?: Signalish<string | undefined>; 2115 + required?: Signalish<boolean | undefined>; 2116 + size?: Signalish<number | undefined>; 2117 + value?: Signalish<string | number | undefined>; 2118 + onChange?: GenericEventHandler<T> | undefined; 2119 + } 2120 + 2121 + export interface SlotHTMLAttributes< 2122 + T extends EventTarget = HTMLSlotElement 2123 + > extends HTMLAttributes<T> { 2124 + name?: Signalish<string | undefined>; 2125 + } 2126 + 2127 + export interface SourceHTMLAttributes< 2128 + T extends EventTarget = HTMLSourceElement 2129 + > extends HTMLAttributes<T> { 2130 + height?: Signalish<number | string | undefined>; 2131 + media?: Signalish<string | undefined>; 2132 + sizes?: Signalish<string | undefined>; 2133 + src?: Signalish<string | undefined>; 2134 + srcset?: Signalish<string | undefined>; 2135 + srcSet?: Signalish<string | undefined>; 2136 + type?: Signalish<string | undefined>; 2137 + width?: Signalish<number | string | undefined>; 2138 + } 2139 + 2140 + export interface StyleHTMLAttributes< 2141 + T extends EventTarget = HTMLStyleElement 2142 + > extends HTMLAttributes<T> { 2143 + media?: Signalish<string | undefined>; 2144 + scoped?: Signalish<boolean | undefined>; 2145 + type?: Signalish<string | undefined>; 2146 + } 2147 + 2148 + export interface TableHTMLAttributes< 2149 + T extends EventTarget = HTMLTableElement 2150 + > extends HTMLAttributes<T> { 2151 + cellPadding?: Signalish<string | undefined>; 2152 + cellSpacing?: Signalish<string | undefined>; 2153 + summary?: Signalish<string | undefined>; 2154 + width?: Signalish<number | string | undefined>; 2155 + } 2156 + 2157 + export interface TdHTMLAttributes< 2158 + T extends EventTarget = HTMLTableCellElement 2159 + > extends HTMLAttributes<T> { 2160 + align?: Signalish< 2161 + 'left' | 'center' | 'right' | 'justify' | 'char' | undefined 2162 + >; 2163 + colspan?: Signalish<number | undefined>; 2164 + colSpan?: Signalish<number | undefined>; 2165 + headers?: Signalish<string | undefined>; 2166 + rowspan?: Signalish<number | undefined>; 2167 + rowSpan?: Signalish<number | undefined>; 2168 + scope?: Signalish<string | undefined>; 2169 + abbr?: Signalish<string | undefined>; 2170 + height?: Signalish<number | string | undefined>; 2171 + width?: Signalish<number | string | undefined>; 2172 + valign?: Signalish<'top' | 'middle' | 'bottom' | 'baseline' | undefined>; 2173 + } 2174 + 2175 + export interface TextareaHTMLAttributes< 2176 + T extends EventTarget = HTMLTextAreaElement 2177 + > extends HTMLAttributes<T> { 2178 + autocomplete?: Signalish<string | undefined>; 2179 + autoComplete?: Signalish<string | undefined>; 2180 + cols?: Signalish<number | undefined>; 2181 + defaultValue?: Signalish<string | number | undefined>; 2182 + dirName?: Signalish<string | undefined>; 2183 + disabled?: Signalish<boolean | undefined>; 2184 + form?: Signalish<string | undefined>; 2185 + maxlength?: Signalish<number | undefined>; 2186 + maxLength?: Signalish<number | undefined>; 2187 + minlength?: Signalish<number | undefined>; 2188 + minLength?: Signalish<number | undefined>; 2189 + name?: Signalish<string | undefined>; 2190 + placeholder?: Signalish<string | undefined>; 2191 + readOnly?: Signalish<boolean | undefined>; 2192 + required?: Signalish<boolean | undefined>; 2193 + rows?: Signalish<number | undefined>; 2194 + value?: Signalish<string | number | undefined>; 2195 + wrap?: Signalish<string | undefined>; 2196 + onChange?: GenericEventHandler<T> | undefined; 2197 + } 2198 + 2199 + export interface ThHTMLAttributes< 2200 + T extends EventTarget = HTMLTableCellElement 2201 + > extends HTMLAttributes<T> { 2202 + align?: Signalish< 2203 + 'left' | 'center' | 'right' | 'justify' | 'char' | undefined 2204 + >; 2205 + colspan?: Signalish<number | undefined>; 2206 + colSpan?: Signalish<number | undefined>; 2207 + headers?: Signalish<string | undefined>; 2208 + rowspan?: Signalish<number | undefined>; 2209 + rowSpan?: Signalish<number | undefined>; 2210 + scope?: Signalish<string | undefined>; 2211 + abbr?: Signalish<string | undefined>; 2212 + } 2213 + 2214 + export interface TimeHTMLAttributes< 2215 + T extends EventTarget = HTMLTimeElement 2216 + > extends HTMLAttributes<T> { 2217 + datetime?: Signalish<string | undefined>; 2218 + dateTime?: Signalish<string | undefined>; 2219 + } 2220 + 2221 + export interface TrackHTMLAttributes< 2222 + T extends EventTarget = HTMLTrackElement 2223 + > extends MediaHTMLAttributes<T> { 2224 + default?: Signalish<boolean | undefined>; 2225 + kind?: Signalish<string | undefined>; 2226 + label?: Signalish<string | undefined>; 2227 + srclang?: Signalish<string | undefined>; 2228 + srcLang?: Signalish<string | undefined>; 2229 + } 2230 + 2231 + export interface VideoHTMLAttributes< 2232 + T extends EventTarget = HTMLVideoElement 2233 + > extends MediaHTMLAttributes<T> { 2234 + disablePictureInPicture?: Signalish<boolean | undefined>; 2235 + height?: Signalish<number | string | undefined>; 2236 + playsinline?: Signalish<boolean | undefined>; 2237 + playsInline?: Signalish<boolean | undefined>; 2238 + poster?: Signalish<string | undefined>; 2239 + width?: Signalish<number | string | undefined>; 2240 + } 2241 + 2242 + export type DetailedHTMLProps< 2243 + HA extends HTMLAttributes<RefType>, 2244 + RefType extends EventTarget = EventTarget 2245 + > = HA; 2246 + 2247 + export interface MathMLAttributes< 2248 + Target extends EventTarget = MathMLElement 2249 + > extends HTMLAttributes<Target> { 2250 + dir?: Signalish<'ltr' | 'rtl' | undefined>; 2251 + displaystyle?: Signalish<boolean | undefined>; 2252 + /** @deprecated This feature is non-standard. See https://developer.mozilla.org/en-US/docs/Web/MathML/Global_attributes/href */ 2253 + href?: Signalish<string | undefined>; 2254 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Global_attributes/mathbackground */ 2255 + mathbackground?: Signalish<string | undefined>; 2256 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Global_attributes/mathcolor */ 2257 + mathcolor?: Signalish<string | undefined>; 2258 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Global_attributes/mathsize */ 2259 + mathsize?: Signalish<string | undefined>; 2260 + nonce?: Signalish<string | undefined>; 2261 + scriptlevel?: Signalish<string | undefined>; 2262 + } 2263 + 2264 + export interface AnnotationMathMLAttributes< 2265 + T extends EventTarget 2266 + > extends MathMLAttributes<T> { 2267 + encoding?: Signalish<string | undefined>; 2268 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/semantics#src */ 2269 + src?: Signalish<string | undefined>; 2270 + } 2271 + 2272 + export interface AnnotationXmlMathMLAttributes< 2273 + T extends EventTarget 2274 + > extends MathMLAttributes<T> { 2275 + encoding?: Signalish<string | undefined>; 2276 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/semantics#src */ 2277 + src?: Signalish<string | undefined>; 2278 + } 2279 + 2280 + export interface MActionMathMLAttributes< 2281 + T extends EventTarget 2282 + > extends MathMLAttributes<T> { 2283 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/maction#actiontype */ 2284 + actiontype?: Signalish<'statusline' | 'toggle' | undefined>; 2285 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/maction#selection */ 2286 + selection?: Signalish<string | undefined>; 2287 + } 2288 + 2289 + export interface MathMathMLAttributes< 2290 + T extends EventTarget 2291 + > extends MathMLAttributes<T> { 2292 + display?: Signalish<'block' | 'inline' | undefined>; 2293 + } 2294 + 2295 + export interface MEncloseMathMLAttributes< 2296 + T extends EventTarget 2297 + > extends MathMLAttributes<T> { 2298 + notation?: Signalish<string | undefined>; 2299 + } 2300 + 2301 + export interface MErrorMathMLAttributes< 2302 + T extends EventTarget 2303 + > extends MathMLAttributes<T> {} 2304 + 2305 + export interface MFencedMathMLAttributes< 2306 + T extends EventTarget 2307 + > extends MathMLAttributes<T> { 2308 + close?: Signalish<string | undefined>; 2309 + open?: Signalish<string | undefined>; 2310 + separators?: Signalish<string | undefined>; 2311 + } 2312 + 2313 + export interface MFracMathMLAttributes< 2314 + T extends EventTarget 2315 + > extends MathMLAttributes<T> { 2316 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mfrac#denomalign */ 2317 + denomalign?: Signalish<'center' | 'left' | 'right' | undefined>; 2318 + linethickness?: Signalish<string | undefined>; 2319 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mfrac#numalign */ 2320 + numalign?: Signalish<'center' | 'left' | 'right' | undefined>; 2321 + } 2322 + 2323 + export interface MiMathMLAttributes< 2324 + T extends EventTarget 2325 + > extends MathMLAttributes<T> { 2326 + /** The only value allowed in the current specification is normal (case insensitive) 2327 + * See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mi#mathvariant */ 2328 + mathvariant?: Signalish< 2329 + | 'normal' 2330 + | 'bold' 2331 + | 'italic' 2332 + | 'bold-italic' 2333 + | 'double-struck' 2334 + | 'bold-fraktur' 2335 + | 'script' 2336 + | 'bold-script' 2337 + | 'fraktur' 2338 + | 'sans-serif' 2339 + | 'bold-sans-serif' 2340 + | 'sans-serif-italic' 2341 + | 'sans-serif-bold-italic' 2342 + | 'monospace' 2343 + | 'initial' 2344 + | 'tailed' 2345 + | 'looped' 2346 + | 'stretched' 2347 + | undefined 2348 + >; 2349 + } 2350 + 2351 + export interface MmultiScriptsMathMLAttributes< 2352 + T extends EventTarget 2353 + > extends MathMLAttributes<T> { 2354 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mmultiscripts#subscriptshift */ 2355 + subscriptshift?: Signalish<string | undefined>; 2356 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mmultiscripts#superscriptshift */ 2357 + superscriptshift?: Signalish<string | undefined>; 2358 + } 2359 + 2360 + export interface MNMathMLAttributes< 2361 + T extends EventTarget 2362 + > extends MathMLAttributes<T> {} 2363 + 2364 + export interface MOMathMLAttributes< 2365 + T extends EventTarget 2366 + > extends MathMLAttributes<T> { 2367 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mo#accent */ 2368 + accent?: Signalish<boolean | undefined>; 2369 + fence?: Signalish<boolean | undefined>; 2370 + largeop?: Signalish<boolean | undefined>; 2371 + lspace?: Signalish<string | undefined>; 2372 + maxsize?: Signalish<string | undefined>; 2373 + minsize?: Signalish<string | undefined>; 2374 + movablelimits?: Signalish<boolean | undefined>; 2375 + rspace?: Signalish<string | undefined>; 2376 + separator?: Signalish<boolean | undefined>; 2377 + stretchy?: Signalish<boolean | undefined>; 2378 + symmetric?: Signalish<boolean | undefined>; 2379 + } 2380 + 2381 + export interface MOverMathMLAttributes< 2382 + T extends EventTarget 2383 + > extends MathMLAttributes<T> { 2384 + accent?: Signalish<boolean | undefined>; 2385 + } 2386 + 2387 + export interface MPaddedMathMLAttributes< 2388 + T extends EventTarget 2389 + > extends MathMLAttributes<T> { 2390 + depth?: Signalish<string | undefined>; 2391 + height?: Signalish<string | undefined>; 2392 + lspace?: Signalish<string | undefined>; 2393 + voffset?: Signalish<string | undefined>; 2394 + width?: Signalish<string | undefined>; 2395 + } 2396 + 2397 + export interface MPhantomMathMLAttributes< 2398 + T extends EventTarget 2399 + > extends MathMLAttributes<T> {} 2400 + 2401 + export interface MPrescriptsMathMLAttributes< 2402 + T extends EventTarget 2403 + > extends MathMLAttributes<T> {} 2404 + 2405 + export interface MRootMathMLAttributes< 2406 + T extends EventTarget 2407 + > extends MathMLAttributes<T> {} 2408 + 2409 + export interface MRowMathMLAttributes< 2410 + T extends EventTarget 2411 + > extends MathMLAttributes<T> {} 2412 + 2413 + export interface MSMathMLAttributes< 2414 + T extends EventTarget 2415 + > extends MathMLAttributes<T> { 2416 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/ms#browser_compatibility */ 2417 + lquote?: Signalish<string | undefined>; 2418 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/ms#browser_compatibility */ 2419 + rquote?: Signalish<string | undefined>; 2420 + } 2421 + 2422 + export interface MSpaceMathMLAttributes< 2423 + T extends EventTarget 2424 + > extends MathMLAttributes<T> { 2425 + depth?: Signalish<string | undefined>; 2426 + height?: Signalish<string | undefined>; 2427 + width?: Signalish<string | undefined>; 2428 + } 2429 + 2430 + export interface MSqrtMathMLAttributes< 2431 + T extends EventTarget 2432 + > extends MathMLAttributes<T> {} 2433 + 2434 + export interface MStyleMathMLAttributes< 2435 + T extends EventTarget 2436 + > extends MathMLAttributes<T> { 2437 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mstyle#background */ 2438 + background?: Signalish<string | undefined>; 2439 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mstyle#color */ 2440 + color?: Signalish<string | undefined>; 2441 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mstyle#fontsize */ 2442 + fontsize?: Signalish<string | undefined>; 2443 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mstyle#fontstyle */ 2444 + fontstyle?: Signalish<string | undefined>; 2445 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mstyle#fontweight */ 2446 + fontweight?: Signalish<string | undefined>; 2447 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mstyle#scriptminsize */ 2448 + scriptminsize?: Signalish<string | undefined>; 2449 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mstyle#scriptsizemultiplier */ 2450 + scriptsizemultiplier?: Signalish<string | undefined>; 2451 + } 2452 + 2453 + export interface MSubMathMLAttributes< 2454 + T extends EventTarget 2455 + > extends MathMLAttributes<T> { 2456 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/msub#subscriptshift */ 2457 + subscriptshift?: Signalish<string | undefined>; 2458 + } 2459 + 2460 + export interface MSubsupMathMLAttributes< 2461 + T extends EventTarget 2462 + > extends MathMLAttributes<T> { 2463 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/msubsup#subscriptshift */ 2464 + subscriptshift?: Signalish<string | undefined>; 2465 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/msubsup#superscriptshift */ 2466 + superscriptshift?: Signalish<string | undefined>; 2467 + } 2468 + 2469 + export interface MSupMathMLAttributes< 2470 + T extends EventTarget 2471 + > extends MathMLAttributes<T> { 2472 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/msup#superscriptshift */ 2473 + superscriptshift?: Signalish<string | undefined>; 2474 + } 2475 + 2476 + export interface MTableMathMLAttributes< 2477 + T extends EventTarget 2478 + > extends MathMLAttributes<T> { 2479 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#align */ 2480 + align?: Signalish< 2481 + 'axis' | 'baseline' | 'bottom' | 'center' | 'top' | undefined 2482 + >; 2483 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#columnalign */ 2484 + columnalign?: Signalish<'center' | 'left' | 'right' | undefined>; 2485 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#columnlines */ 2486 + columnlines?: Signalish<'dashed' | 'none' | 'solid' | undefined>; 2487 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#columnspacing */ 2488 + columnspacing?: Signalish<string | undefined>; 2489 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#frame */ 2490 + frame?: Signalish<'dashed' | 'none' | 'solid' | undefined>; 2491 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#framespacing */ 2492 + framespacing?: Signalish<string | undefined>; 2493 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#rowalign */ 2494 + rowalign?: Signalish< 2495 + 'axis' | 'baseline' | 'bottom' | 'center' | 'top' | undefined 2496 + >; 2497 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#rowlines */ 2498 + rowlines?: Signalish<'dashed' | 'none' | 'solid' | undefined>; 2499 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#rowspacing */ 2500 + rowspacing?: Signalish<string | undefined>; 2501 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#width */ 2502 + width?: Signalish<string | undefined>; 2503 + } 2504 + 2505 + export interface MTdMathMLAttributes< 2506 + T extends EventTarget 2507 + > extends MathMLAttributes<T> { 2508 + columnspan?: Signalish<number | undefined>; 2509 + rowspan?: Signalish<number | undefined>; 2510 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtd#columnalign */ 2511 + columnalign?: Signalish<'center' | 'left' | 'right' | undefined>; 2512 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtd#rowalign */ 2513 + rowalign?: Signalish< 2514 + 'axis' | 'baseline' | 'bottom' | 'center' | 'top' | undefined 2515 + >; 2516 + } 2517 + 2518 + export interface MTextMathMLAttributes< 2519 + T extends EventTarget 2520 + > extends MathMLAttributes<T> {} 2521 + 2522 + export interface MTrMathMLAttributes< 2523 + T extends EventTarget 2524 + > extends MathMLAttributes<T> { 2525 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtr#columnalign */ 2526 + columnalign?: Signalish<'center' | 'left' | 'right' | undefined>; 2527 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtr#rowalign */ 2528 + rowalign?: Signalish< 2529 + 'axis' | 'baseline' | 'bottom' | 'center' | 'top' | undefined 2530 + >; 2531 + } 2532 + 2533 + export interface MUnderMathMLAttributes< 2534 + T extends EventTarget 2535 + > extends MathMLAttributes<T> { 2536 + accentunder?: Signalish<boolean | undefined>; 2537 + } 2538 + 2539 + export interface MUnderoverMathMLAttributes< 2540 + T extends EventTarget 2541 + > extends MathMLAttributes<T> { 2542 + accent?: Signalish<boolean | undefined>; 2543 + accentunder?: Signalish<boolean | undefined>; 2544 + } 2545 + 2546 + export interface SemanticsMathMLAttributes< 2547 + T extends EventTarget 2548 + > extends MathMLAttributes<T> {}
+373
vendor/esm.sh/preact@10.29.1/src/index.d.ts
··· 1 + export as namespace preact; 2 + 3 + import { JSXInternal } from './jsx.d.ts'; 4 + import { DOMAttributes, HTMLAttributes, SVGAttributes } from './dom.d.ts'; 5 + 6 + export import JSX = JSXInternal; 7 + export * from './dom.d.ts'; 8 + 9 + // 10 + // Preact Virtual DOM 11 + // ----------------------------------- 12 + 13 + export interface VNode<P = {}> { 14 + type: ComponentType<P> | string; 15 + props: P & { children: ComponentChildren }; 16 + key: Key; 17 + /** 18 + * ref is not guaranteed by React.ReactElement, for compatibility reasons 19 + * with popular react libs we define it as optional too 20 + */ 21 + ref?: Ref<any> | null; 22 + /** 23 + * The time this `vnode` started rendering. Will only be set when 24 + * the devtools are attached. 25 + * Default value: `0` 26 + */ 27 + startTime?: number; 28 + /** 29 + * The time that the rendering of this `vnode` was completed. Will only be 30 + * set when the devtools are attached. 31 + * Default value: `-1` 32 + */ 33 + endTime?: number; 34 + } 35 + 36 + // 37 + // Preact Component interface 38 + // ----------------------------------- 39 + 40 + export type Key = string | number | any; 41 + 42 + export type RefObject<T> = { current: T | null }; 43 + export type RefCallback<T> = (instance: T | null) => void | (() => void); 44 + export type Ref<T> = RefObject<T> | RefCallback<T> | null; 45 + 46 + export type ComponentChild = 47 + | VNode<any> 48 + | object 49 + | string 50 + | number 51 + | bigint 52 + | boolean 53 + | null 54 + | undefined; 55 + export type ComponentChildren = ComponentChild[] | ComponentChild; 56 + 57 + export interface Attributes { 58 + key?: Key | undefined; 59 + jsx?: boolean | undefined; 60 + } 61 + 62 + export interface ClassAttributes<T> extends Attributes { 63 + ref?: Ref<T>; 64 + } 65 + 66 + export interface PreactDOMAttributes { 67 + children?: ComponentChildren; 68 + dangerouslySetInnerHTML?: { 69 + __html: Parameters<DOMParser['parseFromString']>[0]; 70 + }; 71 + } 72 + 73 + export interface ErrorInfo { 74 + componentStack?: string; 75 + } 76 + 77 + export type RenderableProps<P, RefType = any> = P & 78 + Readonly<Attributes & { children?: ComponentChildren; ref?: Ref<RefType> }>; 79 + 80 + export type ComponentType<P = {}> = ComponentClass<P> | FunctionComponent<P>; 81 + export type ComponentFactory<P = {}> = ComponentType<P>; 82 + 83 + export type ComponentProps< 84 + C extends ComponentType<any> | keyof JSXInternal.IntrinsicElements 85 + > = 86 + C extends ComponentType<infer P> 87 + ? P 88 + : C extends keyof JSXInternal.IntrinsicElements 89 + ? JSXInternal.IntrinsicElements[C] 90 + : {}; 91 + 92 + export interface FunctionComponent<P = {}> { 93 + (props: RenderableProps<P>, context?: any): ComponentChildren; 94 + displayName?: string; 95 + defaultProps?: Partial<P> | undefined; 96 + } 97 + export interface FunctionalComponent<P = {}> extends FunctionComponent<P> {} 98 + 99 + export interface ComponentClass<P = {}, S = {}> { 100 + new (props: P, context?: any): Component<P, S>; 101 + displayName?: string; 102 + defaultProps?: Partial<P>; 103 + contextType?: Context<any>; 104 + getDerivedStateFromProps?( 105 + props: Readonly<P>, 106 + state: Readonly<S> 107 + ): Partial<S> | null; 108 + getDerivedStateFromError?(error: any): Partial<S> | null; 109 + } 110 + export interface ComponentConstructor<P = {}, S = {}> extends ComponentClass< 111 + P, 112 + S 113 + > {} 114 + 115 + // Type alias for a component instance considered generally, whether stateless or stateful. 116 + export type AnyComponent<P = {}, S = {}> = 117 + | FunctionComponent<P> 118 + | ComponentConstructor<P, S>; 119 + 120 + export interface Component<P = {}, S = {}> { 121 + componentWillMount?(): void; 122 + componentDidMount?(): void; 123 + componentWillUnmount?(): void; 124 + getChildContext?(): object; 125 + componentWillReceiveProps?(nextProps: Readonly<P>, nextContext: any): void; 126 + shouldComponentUpdate?( 127 + nextProps: Readonly<P>, 128 + nextState: Readonly<S>, 129 + nextContext: any 130 + ): boolean; 131 + componentWillUpdate?( 132 + nextProps: Readonly<P>, 133 + nextState: Readonly<S>, 134 + nextContext: any 135 + ): void; 136 + getSnapshotBeforeUpdate?(oldProps: Readonly<P>, oldState: Readonly<S>): any; 137 + componentDidUpdate?( 138 + previousProps: Readonly<P>, 139 + previousState: Readonly<S>, 140 + snapshot: any 141 + ): void; 142 + componentDidCatch?(error: any, errorInfo: ErrorInfo): void; 143 + } 144 + 145 + export abstract class Component<P, S> { 146 + constructor(props?: P, context?: any); 147 + 148 + static displayName?: string; 149 + static defaultProps?: any; 150 + static contextType?: Context<any>; 151 + 152 + // Static members cannot reference class type parameters. This is not 153 + // supported in TypeScript. Reusing the same type arguments from `Component` 154 + // will lead to an impossible state where one cannot satisfy the type 155 + // constraint under no circumstances, see #1356.In general type arguments 156 + // seem to be a bit buggy and not supported well at the time of this 157 + // writing with TS 3.3.3333. 158 + static getDerivedStateFromProps?( 159 + props: Readonly<object>, 160 + state: Readonly<object> 161 + ): object | null; 162 + static getDerivedStateFromError?(error: any): object | null; 163 + 164 + state: Readonly<S>; 165 + props: RenderableProps<P>; 166 + context: any; 167 + base?: Element | Text; 168 + 169 + // From https://github.com/DefinitelyTyped/DefinitelyTyped/blob/e836acc75a78cf0655b5dfdbe81d69fdd4d8a252/types/react/index.d.ts#L402 170 + // // We MUST keep setState() as a unified signature because it allows proper checking of the method return type. 171 + // // See: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/18365#issuecomment-351013257 172 + setState<K extends keyof S>( 173 + state: 174 + | (( 175 + prevState: Readonly<S>, 176 + props: Readonly<P> 177 + ) => Pick<S, K> | Partial<S> | null) 178 + | (Pick<S, K> | Partial<S> | null), 179 + callback?: () => void 180 + ): void; 181 + 182 + forceUpdate(callback?: () => void): void; 183 + 184 + abstract render( 185 + props?: RenderableProps<P>, 186 + state?: Readonly<S>, 187 + context?: any 188 + ): ComponentChildren; 189 + } 190 + 191 + // 192 + // Preact createElement 193 + // ----------------------------------- 194 + 195 + export function createElement( 196 + type: 'input', 197 + props: 198 + | (DOMAttributes<HTMLInputElement> & ClassAttributes<HTMLInputElement>) 199 + | null, 200 + ...children: ComponentChildren[] 201 + ): VNode<DOMAttributes<HTMLInputElement> & ClassAttributes<HTMLInputElement>>; 202 + export function createElement< 203 + P extends HTMLAttributes<T>, 204 + T extends HTMLElement 205 + >( 206 + type: keyof JSXInternal.IntrinsicElements, 207 + props: (ClassAttributes<T> & P) | null, 208 + ...children: ComponentChildren[] 209 + ): VNode<ClassAttributes<T> & P>; 210 + export function createElement< 211 + P extends SVGAttributes<T>, 212 + T extends HTMLElement 213 + >( 214 + type: keyof JSXInternal.IntrinsicSVGElements, 215 + props: (ClassAttributes<T> & P) | null, 216 + ...children: ComponentChildren[] 217 + ): VNode<ClassAttributes<T> & P>; 218 + export function createElement<T extends HTMLElement>( 219 + type: string, 220 + props: (ClassAttributes<T> & HTMLAttributes & SVGAttributes) | null, 221 + ...children: ComponentChildren[] 222 + ): VNode<ClassAttributes<T> & HTMLAttributes & SVGAttributes>; 223 + export function createElement<P>( 224 + type: ComponentType<P> | string, 225 + props: (Attributes & P) | null, 226 + ...children: ComponentChildren[] 227 + ): VNode<P>; 228 + export namespace createElement { 229 + export import JSX = JSXInternal; 230 + } 231 + 232 + export function h( 233 + type: 'input', 234 + props: 235 + | (DOMAttributes<HTMLInputElement> & ClassAttributes<HTMLInputElement>) 236 + | null, 237 + ...children: ComponentChildren[] 238 + ): VNode<DOMAttributes<HTMLInputElement> & ClassAttributes<HTMLInputElement>>; 239 + export function h<P extends HTMLAttributes<T>, T extends HTMLElement>( 240 + type: keyof JSXInternal.IntrinsicElements, 241 + props: (ClassAttributes<T> & P) | null, 242 + ...children: ComponentChildren[] 243 + ): VNode<ClassAttributes<T> & P>; 244 + export function h<P extends SVGAttributes<T>, T extends HTMLElement>( 245 + type: keyof JSXInternal.IntrinsicSVGElements, 246 + props: (ClassAttributes<T> & P) | null, 247 + ...children: ComponentChildren[] 248 + ): VNode<ClassAttributes<T> & P>; 249 + export function h<T extends HTMLElement>( 250 + type: string, 251 + props: (ClassAttributes<T> & HTMLAttributes & SVGAttributes) | null, 252 + ...children: ComponentChildren[] 253 + ): VNode<(ClassAttributes<T> & HTMLAttributes & SVGAttributes) | null>; 254 + export function h<P>( 255 + type: ComponentType<P> | string, 256 + props: (Attributes & P) | null, 257 + ...children: ComponentChildren[] 258 + ): VNode<Attributes & P>; 259 + export namespace h { 260 + export import JSX = JSXInternal; 261 + } 262 + 263 + // 264 + // Preact render 265 + // ----------------------------------- 266 + export interface ContainerNode { 267 + readonly nodeType: number; 268 + readonly parentNode: ContainerNode | null; 269 + readonly firstChild: ContainerNode | null; 270 + readonly childNodes: ArrayLike<ContainerNode>; 271 + 272 + contains(other: ContainerNode | null): boolean; 273 + insertBefore(node: ContainerNode, child: ContainerNode | null): ContainerNode; 274 + appendChild(node: ContainerNode): ContainerNode; 275 + removeChild(child: ContainerNode): ContainerNode; 276 + } 277 + 278 + export function render(vnode: ComponentChild, parent: ContainerNode): void; 279 + /** 280 + * @deprecated The `replaceNode` parameter will be removed in v11. 281 + * 282 + * Replacement Preact 10+ implementation can be found in the `preact-root-fragment` package. 283 + * Docs: https://github.com/preactjs/preact-root-fragment 284 + */ 285 + export function render( 286 + vnode: ComponentChild, 287 + parent: ContainerNode, 288 + replaceNode?: Element | Text 289 + ): void; 290 + export function hydrate(vnode: ComponentChild, parent: ContainerNode): void; 291 + export function cloneElement( 292 + vnode: VNode<any>, 293 + props?: any, 294 + ...children: ComponentChildren[] 295 + ): VNode<any>; 296 + export function cloneElement<P>( 297 + vnode: VNode<P>, 298 + props?: any, 299 + ...children: ComponentChildren[] 300 + ): VNode<P>; 301 + 302 + // 303 + // Preact Built-in Components 304 + // ----------------------------------- 305 + 306 + // TODO: Revisit what the public type of this is... 307 + export const Fragment: FunctionComponent<{}>; 308 + 309 + // 310 + // Preact options 311 + // ----------------------------------- 312 + 313 + /** 314 + * Global options for preact 315 + */ 316 + export interface Options { 317 + /** Attach a hook that is invoked whenever a VNode is created. */ 318 + vnode?(vnode: VNode): void; 319 + /** Attach a hook that is invoked immediately before a vnode is unmounted. */ 320 + unmount?(vnode: VNode): void; 321 + /** Attach a hook that is invoked after a vnode has rendered. */ 322 + diffed?(vnode: VNode): void; 323 + event?(e: Event): any; 324 + requestAnimationFrame?(callback: () => void): void; 325 + debounceRendering?(cb: () => void): void; 326 + useDebugValue?(value: string | number): void; 327 + _addHookName?(name: string | number): void; 328 + __suspenseDidResolve?(vnode: VNode, cb: () => void): void; 329 + // __canSuspenseResolve?(vnode: VNode, cb: () => void): void; 330 + 331 + /** 332 + * Customize attribute serialization when a precompiled JSX transform 333 + * is used. 334 + */ 335 + attr?(name: string, value: any): string | void; 336 + } 337 + 338 + export const options: Options; 339 + 340 + // 341 + // Preact helpers 342 + // ----------------------------------- 343 + export function createRef<T = any>(): RefObject<T>; 344 + export function toChildArray( 345 + children: ComponentChildren 346 + ): Array<VNode | string | number>; 347 + export function isValidElement(vnode: any): vnode is VNode; 348 + 349 + // 350 + // Context 351 + // ----------------------------------- 352 + export interface Consumer<T> extends FunctionComponent<{ 353 + children: (value: T) => ComponentChildren; 354 + }> {} 355 + export interface PreactConsumer<T> extends Consumer<T> {} 356 + 357 + export interface Provider<T> extends FunctionComponent<{ 358 + value: T; 359 + children?: ComponentChildren; 360 + }> {} 361 + export interface PreactProvider<T> extends Provider<T> {} 362 + export type ContextType<C extends Context<any>> = 363 + C extends Context<infer T> ? T : never; 364 + 365 + export interface Context<T> extends preact.Provider<T> { 366 + Consumer: preact.Consumer<T>; 367 + Provider: preact.Provider<T>; 368 + displayName?: string; 369 + } 370 + 371 + export interface PreactContext<T> extends Context<T> {} 372 + 373 + export function createContext<T>(defaultValue: T): Context<T>;
+2958
vendor/esm.sh/preact@10.29.1/src/jsx.d.ts
··· 1 + // Users who only use Preact for SSR might not specify "dom" in their lib in tsconfig.json 2 + /// <reference lib="dom" /> 3 + 4 + import { 5 + ClassAttributes, 6 + Component, 7 + ComponentType, 8 + FunctionComponent, 9 + PreactDOMAttributes, 10 + VNode 11 + } from 'https://esm.sh/preact@10.29.1/src/index.d.ts'; 12 + 13 + type Defaultize<Props, Defaults> = 14 + // Distribute over unions 15 + Props extends any // Make any properties included in Default optional 16 + ? Partial<Pick<Props, Extract<keyof Props, keyof Defaults>>> & // Include the remaining properties from Props 17 + Pick<Props, Exclude<keyof Props, keyof Defaults>> 18 + : never; 19 + 20 + type Booleanish = boolean | 'true' | 'false'; 21 + 22 + // Remove when bumping TS minimum to >5.2 23 + 24 + /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ToggleEvent) */ 25 + interface ToggleEvent extends Event { 26 + /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ToggleEvent/newState) */ 27 + readonly newState: string; 28 + /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ToggleEvent/oldState) */ 29 + readonly oldState: string; 30 + } 31 + 32 + declare var ToggleEvent: { 33 + prototype: ToggleEvent; 34 + new (type: string, eventInitDict?: ToggleEventInit): ToggleEvent; 35 + }; 36 + 37 + interface ToggleEventInit extends EventInit { 38 + newState?: string; 39 + oldState?: string; 40 + } 41 + 42 + // End TS >5.2 43 + 44 + /** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/CommandEvent) */ 45 + interface CommandEvent extends Event { 46 + /** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/CommandEvent/source) */ 47 + readonly source: Element | null; 48 + /** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/CommandEvent/command) */ 49 + readonly command: string; 50 + } 51 + 52 + declare var CommandEvent: { 53 + prototype: CommandEvent; 54 + new (type: string, eventInitDict?: CommandEventInit): CommandEvent; 55 + }; 56 + 57 + interface CommandEventInit extends EventInit { 58 + source: Element | null; 59 + command: string; 60 + } 61 + 62 + /** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/SnapEvent) */ 63 + interface SnapEvent extends Event { 64 + readonly snapTargetBlock: Element | null; 65 + readonly snapTargetInline: Element | null; 66 + } 67 + 68 + declare var SnapEvent: { 69 + prototype: SnapEvent; 70 + new (type: string, eventInitDict?: SnapEventInit): SnapEvent; 71 + }; 72 + 73 + interface SnapEventInit extends EventInit { 74 + snapTargetBlock?: Element | null; 75 + snapTargetInline?: Element | null; 76 + } 77 + 78 + export namespace JSXInternal { 79 + export type LibraryManagedAttributes<Component, Props> = Component extends { 80 + defaultProps: infer Defaults; 81 + } 82 + ? Defaultize<Props, Defaults> 83 + : Props; 84 + 85 + export interface IntrinsicAttributes { 86 + key?: any; 87 + } 88 + 89 + export type ElementType<P = any> = 90 + | { 91 + [K in keyof IntrinsicElements]: P extends IntrinsicElements[K] 92 + ? K 93 + : never; 94 + }[keyof IntrinsicElements] 95 + | ComponentType<P>; 96 + export interface Element extends VNode<any> {} 97 + export type ElementClass = Component<any, any> | FunctionComponent<any>; 98 + 99 + export interface ElementAttributesProperty { 100 + props: any; 101 + } 102 + 103 + export interface ElementChildrenAttribute { 104 + children: any; 105 + } 106 + 107 + /** @deprecated Please import from the Preact namespace instead */ 108 + export type DOMCSSProperties = { 109 + [key in keyof Omit< 110 + CSSStyleDeclaration, 111 + | 'item' 112 + | 'setProperty' 113 + | 'removeProperty' 114 + | 'getPropertyValue' 115 + | 'getPropertyPriority' 116 + >]?: string | number | null | undefined; 117 + }; 118 + /** @deprecated Please import from the Preact namespace instead */ 119 + export type AllCSSProperties = { 120 + [key: string]: string | number | null | undefined; 121 + }; 122 + /** @deprecated Please import from the Preact namespace instead */ 123 + export interface CSSProperties extends AllCSSProperties, DOMCSSProperties { 124 + cssText?: string | null; 125 + } 126 + 127 + /** @deprecated Please import from the Preact namespace instead */ 128 + export interface SignalLike<T> { 129 + value: T; 130 + peek(): T; 131 + subscribe(fn: (value: T) => void): () => void; 132 + } 133 + 134 + /** @deprecated Please import from the Preact namespace instead */ 135 + export type Signalish<T> = T | SignalLike<T>; 136 + 137 + /** @deprecated Please import from the Preact namespace instead */ 138 + export type UnpackSignal<T> = T extends SignalLike<infer V> ? V : T; 139 + 140 + /** @deprecated Please import from the Preact namespace instead */ 141 + export interface SVGAttributes< 142 + Target extends EventTarget = SVGElement 143 + > extends HTMLAttributes<Target> { 144 + accentHeight?: Signalish<number | string | undefined>; 145 + accumulate?: Signalish<'none' | 'sum' | undefined>; 146 + additive?: Signalish<'replace' | 'sum' | undefined>; 147 + alignmentBaseline?: Signalish< 148 + | 'auto' 149 + | 'baseline' 150 + | 'before-edge' 151 + | 'text-before-edge' 152 + | 'middle' 153 + | 'central' 154 + | 'after-edge' 155 + | 'text-after-edge' 156 + | 'ideographic' 157 + | 'alphabetic' 158 + | 'hanging' 159 + | 'mathematical' 160 + | 'inherit' 161 + | undefined 162 + >; 163 + 'alignment-baseline'?: Signalish< 164 + | 'auto' 165 + | 'baseline' 166 + | 'before-edge' 167 + | 'text-before-edge' 168 + | 'middle' 169 + | 'central' 170 + | 'after-edge' 171 + | 'text-after-edge' 172 + | 'ideographic' 173 + | 'alphabetic' 174 + | 'hanging' 175 + | 'mathematical' 176 + | 'inherit' 177 + | undefined 178 + >; 179 + allowReorder?: Signalish<'no' | 'yes' | undefined>; 180 + 'allow-reorder'?: Signalish<'no' | 'yes' | undefined>; 181 + alphabetic?: Signalish<number | string | undefined>; 182 + amplitude?: Signalish<number | string | undefined>; 183 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/arabic-form */ 184 + arabicForm?: Signalish< 185 + 'initial' | 'medial' | 'terminal' | 'isolated' | undefined 186 + >; 187 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/arabic-form */ 188 + 'arabic-form'?: Signalish< 189 + 'initial' | 'medial' | 'terminal' | 'isolated' | undefined 190 + >; 191 + ascent?: Signalish<number | string | undefined>; 192 + attributeName?: Signalish<string | undefined>; 193 + attributeType?: Signalish<string | undefined>; 194 + azimuth?: Signalish<number | string | undefined>; 195 + baseFrequency?: Signalish<number | string | undefined>; 196 + baselineShift?: Signalish<number | string | undefined>; 197 + 'baseline-shift'?: Signalish<number | string | undefined>; 198 + baseProfile?: Signalish<number | string | undefined>; 199 + bbox?: Signalish<number | string | undefined>; 200 + begin?: Signalish<number | string | undefined>; 201 + bias?: Signalish<number | string | undefined>; 202 + by?: Signalish<number | string | undefined>; 203 + calcMode?: Signalish<number | string | undefined>; 204 + capHeight?: Signalish<number | string | undefined>; 205 + 'cap-height'?: Signalish<number | string | undefined>; 206 + clip?: Signalish<number | string | undefined>; 207 + clipPath?: Signalish<string | undefined>; 208 + 'clip-path'?: Signalish<string | undefined>; 209 + clipPathUnits?: Signalish<number | string | undefined>; 210 + clipRule?: Signalish<number | string | undefined>; 211 + 'clip-rule'?: Signalish<number | string | undefined>; 212 + colorInterpolation?: Signalish<number | string | undefined>; 213 + 'color-interpolation'?: Signalish<number | string | undefined>; 214 + colorInterpolationFilters?: Signalish< 215 + 'auto' | 'sRGB' | 'linearRGB' | 'inherit' | undefined 216 + >; 217 + 'color-interpolation-filters'?: Signalish< 218 + 'auto' | 'sRGB' | 'linearRGB' | 'inherit' | undefined 219 + >; 220 + colorProfile?: Signalish<number | string | undefined>; 221 + 'color-profile'?: Signalish<number | string | undefined>; 222 + colorRendering?: Signalish<number | string | undefined>; 223 + 'color-rendering'?: Signalish<number | string | undefined>; 224 + contentScriptType?: Signalish<number | string | undefined>; 225 + 'content-script-type'?: Signalish<number | string | undefined>; 226 + contentStyleType?: Signalish<number | string | undefined>; 227 + 'content-style-type'?: Signalish<number | string | undefined>; 228 + cursor?: Signalish<number | string | undefined>; 229 + cx?: Signalish<number | string | undefined>; 230 + cy?: Signalish<number | string | undefined>; 231 + d?: Signalish<string | undefined>; 232 + decelerate?: Signalish<number | string | undefined>; 233 + descent?: Signalish<number | string | undefined>; 234 + diffuseConstant?: Signalish<number | string | undefined>; 235 + direction?: Signalish<number | string | undefined>; 236 + display?: Signalish<number | string | undefined>; 237 + divisor?: Signalish<number | string | undefined>; 238 + dominantBaseline?: Signalish<number | string | undefined>; 239 + 'dominant-baseline'?: Signalish<number | string | undefined>; 240 + dur?: Signalish<number | string | undefined>; 241 + dx?: Signalish<number | string | undefined>; 242 + dy?: Signalish<number | string | undefined>; 243 + edgeMode?: Signalish<number | string | undefined>; 244 + elevation?: Signalish<number | string | undefined>; 245 + enableBackground?: Signalish<number | string | undefined>; 246 + 'enable-background'?: Signalish<number | string | undefined>; 247 + end?: Signalish<number | string | undefined>; 248 + exponent?: Signalish<number | string | undefined>; 249 + externalResourcesRequired?: Signalish<number | string | undefined>; 250 + fill?: Signalish<string | undefined>; 251 + fillOpacity?: Signalish<number | string | undefined>; 252 + 'fill-opacity'?: Signalish<number | string | undefined>; 253 + fillRule?: Signalish<'nonzero' | 'evenodd' | 'inherit' | undefined>; 254 + 'fill-rule'?: Signalish<'nonzero' | 'evenodd' | 'inherit' | undefined>; 255 + filter?: Signalish<string | undefined>; 256 + filterRes?: Signalish<number | string | undefined>; 257 + filterUnits?: Signalish<number | string | undefined>; 258 + floodColor?: Signalish<number | string | undefined>; 259 + 'flood-color'?: Signalish<number | string | undefined>; 260 + floodOpacity?: Signalish<number | string | undefined>; 261 + 'flood-opacity'?: Signalish<number | string | undefined>; 262 + focusable?: Signalish<number | string | undefined>; 263 + fontFamily?: Signalish<string | undefined>; 264 + 'font-family'?: Signalish<string | undefined>; 265 + fontSize?: Signalish<number | string | undefined>; 266 + 'font-size'?: Signalish<number | string | undefined>; 267 + fontSizeAdjust?: Signalish<number | string | undefined>; 268 + 'font-size-adjust'?: Signalish<number | string | undefined>; 269 + fontStretch?: Signalish<number | string | undefined>; 270 + 'font-stretch'?: Signalish<number | string | undefined>; 271 + fontStyle?: Signalish<number | string | undefined>; 272 + 'font-style'?: Signalish<number | string | undefined>; 273 + fontVariant?: Signalish<number | string | undefined>; 274 + 'font-variant'?: Signalish<number | string | undefined>; 275 + fontWeight?: Signalish<number | string | undefined>; 276 + 'font-weight'?: Signalish<number | string | undefined>; 277 + format?: Signalish<number | string | undefined>; 278 + from?: Signalish<number | string | undefined>; 279 + fx?: Signalish<number | string | undefined>; 280 + fy?: Signalish<number | string | undefined>; 281 + g1?: Signalish<number | string | undefined>; 282 + g2?: Signalish<number | string | undefined>; 283 + glyphName?: Signalish<number | string | undefined>; 284 + 'glyph-name'?: Signalish<number | string | undefined>; 285 + glyphOrientationHorizontal?: Signalish<number | string | undefined>; 286 + 'glyph-orientation-horizontal'?: Signalish<number | string | undefined>; 287 + glyphOrientationVertical?: Signalish<number | string | undefined>; 288 + 'glyph-orientation-vertical'?: Signalish<number | string | undefined>; 289 + glyphRef?: Signalish<number | string | undefined>; 290 + gradientTransform?: Signalish<string | undefined>; 291 + gradientUnits?: Signalish<string | undefined>; 292 + hanging?: Signalish<number | string | undefined>; 293 + height?: Signalish<number | string | undefined>; 294 + horizAdvX?: Signalish<number | string | undefined>; 295 + 'horiz-adv-x'?: Signalish<number | string | undefined>; 296 + horizOriginX?: Signalish<number | string | undefined>; 297 + 'horiz-origin-x'?: Signalish<number | string | undefined>; 298 + href?: Signalish<string | undefined>; 299 + hreflang?: Signalish<string | undefined>; 300 + hrefLang?: Signalish<string | undefined>; 301 + ideographic?: Signalish<number | string | undefined>; 302 + imageRendering?: Signalish<number | string | undefined>; 303 + 'image-rendering'?: Signalish<number | string | undefined>; 304 + in2?: Signalish<number | string | undefined>; 305 + in?: Signalish<string | undefined>; 306 + intercept?: Signalish<number | string | undefined>; 307 + k1?: Signalish<number | string | undefined>; 308 + k2?: Signalish<number | string | undefined>; 309 + k3?: Signalish<number | string | undefined>; 310 + k4?: Signalish<number | string | undefined>; 311 + k?: Signalish<number | string | undefined>; 312 + kernelMatrix?: Signalish<number | string | undefined>; 313 + kernelUnitLength?: Signalish<number | string | undefined>; 314 + kerning?: Signalish<number | string | undefined>; 315 + keyPoints?: Signalish<number | string | undefined>; 316 + keySplines?: Signalish<number | string | undefined>; 317 + keyTimes?: Signalish<number | string | undefined>; 318 + lengthAdjust?: Signalish<number | string | undefined>; 319 + letterSpacing?: Signalish<number | string | undefined>; 320 + 'letter-spacing'?: Signalish<number | string | undefined>; 321 + lightingColor?: Signalish<number | string | undefined>; 322 + 'lighting-color'?: Signalish<number | string | undefined>; 323 + limitingConeAngle?: Signalish<number | string | undefined>; 324 + local?: Signalish<number | string | undefined>; 325 + markerEnd?: Signalish<string | undefined>; 326 + 'marker-end'?: Signalish<string | undefined>; 327 + markerHeight?: Signalish<number | string | undefined>; 328 + markerMid?: Signalish<string | undefined>; 329 + 'marker-mid'?: Signalish<string | undefined>; 330 + markerStart?: Signalish<string | undefined>; 331 + 'marker-start'?: Signalish<string | undefined>; 332 + markerUnits?: Signalish<number | string | undefined>; 333 + markerWidth?: Signalish<number | string | undefined>; 334 + mask?: Signalish<string | undefined>; 335 + maskContentUnits?: Signalish<number | string | undefined>; 336 + maskUnits?: Signalish<number | string | undefined>; 337 + mathematical?: Signalish<number | string | undefined>; 338 + mode?: Signalish<number | string | undefined>; 339 + numOctaves?: Signalish<number | string | undefined>; 340 + offset?: Signalish<number | string | undefined>; 341 + opacity?: Signalish<number | string | undefined>; 342 + operator?: Signalish<number | string | undefined>; 343 + order?: Signalish<number | string | undefined>; 344 + orient?: Signalish<number | string | undefined>; 345 + orientation?: Signalish<number | string | undefined>; 346 + origin?: Signalish<number | string | undefined>; 347 + overflow?: Signalish<number | string | undefined>; 348 + overlinePosition?: Signalish<number | string | undefined>; 349 + 'overline-position'?: Signalish<number | string | undefined>; 350 + overlineThickness?: Signalish<number | string | undefined>; 351 + 'overline-thickness'?: Signalish<number | string | undefined>; 352 + paintOrder?: Signalish<number | string | undefined>; 353 + 'paint-order'?: Signalish<number | string | undefined>; 354 + panose1?: Signalish<number | string | undefined>; 355 + 'panose-1'?: Signalish<number | string | undefined>; 356 + pathLength?: Signalish<number | string | undefined>; 357 + patternContentUnits?: Signalish<string | undefined>; 358 + patternTransform?: Signalish<number | string | undefined>; 359 + patternUnits?: Signalish<string | undefined>; 360 + pointerEvents?: Signalish<number | string | undefined>; 361 + 'pointer-events'?: Signalish<number | string | undefined>; 362 + points?: Signalish<string | undefined>; 363 + pointsAtX?: Signalish<number | string | undefined>; 364 + pointsAtY?: Signalish<number | string | undefined>; 365 + pointsAtZ?: Signalish<number | string | undefined>; 366 + preserveAlpha?: Signalish<number | string | undefined>; 367 + preserveAspectRatio?: Signalish<string | undefined>; 368 + primitiveUnits?: Signalish<number | string | undefined>; 369 + r?: Signalish<number | string | undefined>; 370 + radius?: Signalish<number | string | undefined>; 371 + refX?: Signalish<number | string | undefined>; 372 + refY?: Signalish<number | string | undefined>; 373 + renderingIntent?: Signalish<number | string | undefined>; 374 + 'rendering-intent'?: Signalish<number | string | undefined>; 375 + repeatCount?: Signalish<number | string | undefined>; 376 + 'repeat-count'?: Signalish<number | string | undefined>; 377 + repeatDur?: Signalish<number | string | undefined>; 378 + 'repeat-dur'?: Signalish<number | string | undefined>; 379 + requiredExtensions?: Signalish<number | string | undefined>; 380 + requiredFeatures?: Signalish<number | string | undefined>; 381 + restart?: Signalish<number | string | undefined>; 382 + result?: Signalish<string | undefined>; 383 + rotate?: Signalish<number | string | undefined>; 384 + rx?: Signalish<number | string | undefined>; 385 + ry?: Signalish<number | string | undefined>; 386 + scale?: Signalish<number | string | undefined>; 387 + seed?: Signalish<number | string | undefined>; 388 + shapeRendering?: Signalish<number | string | undefined>; 389 + 'shape-rendering'?: Signalish<number | string | undefined>; 390 + slope?: Signalish<number | string | undefined>; 391 + spacing?: Signalish<number | string | undefined>; 392 + specularConstant?: Signalish<number | string | undefined>; 393 + specularExponent?: Signalish<number | string | undefined>; 394 + speed?: Signalish<number | string | undefined>; 395 + spreadMethod?: Signalish<string | undefined>; 396 + startOffset?: Signalish<number | string | undefined>; 397 + stdDeviation?: Signalish<number | string | undefined>; 398 + stemh?: Signalish<number | string | undefined>; 399 + stemv?: Signalish<number | string | undefined>; 400 + stitchTiles?: Signalish<number | string | undefined>; 401 + stopColor?: Signalish<string | undefined>; 402 + 'stop-color'?: Signalish<string | undefined>; 403 + stopOpacity?: Signalish<number | string | undefined>; 404 + 'stop-opacity'?: Signalish<number | string | undefined>; 405 + strikethroughPosition?: Signalish<number | string | undefined>; 406 + 'strikethrough-position'?: Signalish<number | string | undefined>; 407 + strikethroughThickness?: Signalish<number | string | undefined>; 408 + 'strikethrough-thickness'?: Signalish<number | string | undefined>; 409 + string?: Signalish<number | string | undefined>; 410 + stroke?: Signalish<string | undefined>; 411 + strokeDasharray?: Signalish<string | number | undefined>; 412 + 'stroke-dasharray'?: Signalish<string | number | undefined>; 413 + strokeDashoffset?: Signalish<string | number | undefined>; 414 + 'stroke-dashoffset'?: Signalish<string | number | undefined>; 415 + strokeLinecap?: Signalish< 416 + 'butt' | 'round' | 'square' | 'inherit' | undefined 417 + >; 418 + 'stroke-linecap'?: Signalish< 419 + 'butt' | 'round' | 'square' | 'inherit' | undefined 420 + >; 421 + strokeLinejoin?: Signalish< 422 + 'miter' | 'round' | 'bevel' | 'inherit' | undefined 423 + >; 424 + 'stroke-linejoin'?: Signalish< 425 + 'miter' | 'round' | 'bevel' | 'inherit' | undefined 426 + >; 427 + strokeMiterlimit?: Signalish<string | number | undefined>; 428 + 'stroke-miterlimit'?: Signalish<string | number | undefined>; 429 + strokeOpacity?: Signalish<number | string | undefined>; 430 + 'stroke-opacity'?: Signalish<number | string | undefined>; 431 + strokeWidth?: Signalish<number | string | undefined>; 432 + 'stroke-width'?: Signalish<number | string | undefined>; 433 + surfaceScale?: Signalish<number | string | undefined>; 434 + systemLanguage?: Signalish<number | string | undefined>; 435 + tableValues?: Signalish<number | string | undefined>; 436 + targetX?: Signalish<number | string | undefined>; 437 + targetY?: Signalish<number | string | undefined>; 438 + textAnchor?: Signalish<string | undefined>; 439 + 'text-anchor'?: Signalish<string | undefined>; 440 + textDecoration?: Signalish<number | string | undefined>; 441 + 'text-decoration'?: Signalish<number | string | undefined>; 442 + textLength?: Signalish<number | string | undefined>; 443 + textRendering?: Signalish<number | string | undefined>; 444 + 'text-rendering'?: Signalish<number | string | undefined>; 445 + to?: Signalish<number | string | undefined>; 446 + transform?: Signalish<string | undefined>; 447 + transformOrigin?: Signalish<string | undefined>; 448 + 'transform-origin'?: Signalish<string | undefined>; 449 + type?: Signalish<string | undefined>; 450 + u1?: Signalish<number | string | undefined>; 451 + u2?: Signalish<number | string | undefined>; 452 + underlinePosition?: Signalish<number | string | undefined>; 453 + 'underline-position'?: Signalish<number | string | undefined>; 454 + underlineThickness?: Signalish<number | string | undefined>; 455 + 'underline-thickness'?: Signalish<number | string | undefined>; 456 + unicode?: Signalish<number | string | undefined>; 457 + unicodeBidi?: Signalish<number | string | undefined>; 458 + 'unicode-bidi'?: Signalish<number | string | undefined>; 459 + unicodeRange?: Signalish<number | string | undefined>; 460 + 'unicode-range'?: Signalish<number | string | undefined>; 461 + unitsPerEm?: Signalish<number | string | undefined>; 462 + 'units-per-em'?: Signalish<number | string | undefined>; 463 + vAlphabetic?: Signalish<number | string | undefined>; 464 + 'v-alphabetic'?: Signalish<number | string | undefined>; 465 + values?: Signalish<string | undefined>; 466 + vectorEffect?: Signalish<number | string | undefined>; 467 + 'vector-effect'?: Signalish<number | string | undefined>; 468 + version?: Signalish<string | undefined>; 469 + vertAdvY?: Signalish<number | string | undefined>; 470 + 'vert-adv-y'?: Signalish<number | string | undefined>; 471 + vertOriginX?: Signalish<number | string | undefined>; 472 + 'vert-origin-x'?: Signalish<number | string | undefined>; 473 + vertOriginY?: Signalish<number | string | undefined>; 474 + 'vert-origin-y'?: Signalish<number | string | undefined>; 475 + vHanging?: Signalish<number | string | undefined>; 476 + 'v-hanging'?: Signalish<number | string | undefined>; 477 + vIdeographic?: Signalish<number | string | undefined>; 478 + 'v-ideographic'?: Signalish<number | string | undefined>; 479 + viewBox?: Signalish<string | undefined>; 480 + viewTarget?: Signalish<number | string | undefined>; 481 + visibility?: Signalish<number | string | undefined>; 482 + vMathematical?: Signalish<number | string | undefined>; 483 + 'v-mathematical'?: Signalish<number | string | undefined>; 484 + width?: Signalish<number | string | undefined>; 485 + wordSpacing?: Signalish<number | string | undefined>; 486 + 'word-spacing'?: Signalish<number | string | undefined>; 487 + writingMode?: Signalish<number | string | undefined>; 488 + 'writing-mode'?: Signalish<number | string | undefined>; 489 + x1?: Signalish<number | string | undefined>; 490 + x2?: Signalish<number | string | undefined>; 491 + x?: Signalish<number | string | undefined>; 492 + xChannelSelector?: Signalish<string | undefined>; 493 + xHeight?: Signalish<number | string | undefined>; 494 + 'x-height'?: Signalish<number | string | undefined>; 495 + xlinkActuate?: Signalish<string | undefined>; 496 + 'xlink:actuate'?: Signalish<SVGAttributes['xlinkActuate']>; 497 + xlinkArcrole?: Signalish<string | undefined>; 498 + 'xlink:arcrole'?: Signalish<string | undefined>; 499 + xlinkHref?: Signalish<string | undefined>; 500 + 'xlink:href'?: Signalish<string | undefined>; 501 + xlinkRole?: Signalish<string | undefined>; 502 + 'xlink:role'?: Signalish<string | undefined>; 503 + xlinkShow?: Signalish<string | undefined>; 504 + 'xlink:show'?: Signalish<string | undefined>; 505 + xlinkTitle?: Signalish<string | undefined>; 506 + 'xlink:title'?: Signalish<string | undefined>; 507 + xlinkType?: Signalish<string | undefined>; 508 + 'xlink:type'?: Signalish<string | undefined>; 509 + xmlBase?: Signalish<string | undefined>; 510 + 'xml:base'?: Signalish<string | undefined>; 511 + xmlLang?: Signalish<string | undefined>; 512 + 'xml:lang'?: Signalish<string | undefined>; 513 + xmlns?: Signalish<string | undefined>; 514 + xmlnsXlink?: Signalish<string | undefined>; 515 + xmlSpace?: Signalish<string | undefined>; 516 + 'xml:space'?: Signalish<string | undefined>; 517 + y1?: Signalish<number | string | undefined>; 518 + y2?: Signalish<number | string | undefined>; 519 + y?: Signalish<number | string | undefined>; 520 + yChannelSelector?: Signalish<string | undefined>; 521 + z?: Signalish<number | string | undefined>; 522 + zoomAndPan?: Signalish<string | undefined>; 523 + } 524 + 525 + /** @deprecated Please import from the Preact namespace instead */ 526 + export interface PathAttributes { 527 + d: string; 528 + } 529 + 530 + /** @deprecated Please import from the Preact namespace instead */ 531 + export type TargetedEvent< 532 + Target extends EventTarget = EventTarget, 533 + TypedEvent extends Event = Event 534 + > = Omit<TypedEvent, 'currentTarget'> & { 535 + readonly currentTarget: Target; 536 + }; 537 + 538 + /** @deprecated Please import from the Preact namespace instead */ 539 + export type TargetedAnimationEvent<Target extends EventTarget> = 540 + TargetedEvent<Target, AnimationEvent>; 541 + /** @deprecated Please import from the Preact namespace instead */ 542 + export type TargetedClipboardEvent<Target extends EventTarget> = 543 + TargetedEvent<Target, ClipboardEvent>; 544 + /** @deprecated Please import from the Preact namespace instead */ 545 + export type TargetedCommandEvent<Target extends EventTarget> = TargetedEvent< 546 + Target, 547 + CommandEvent 548 + >; 549 + /** @deprecated Please import from the Preact namespace instead */ 550 + export type TargetedCompositionEvent<Target extends EventTarget> = 551 + TargetedEvent<Target, CompositionEvent>; 552 + /** @deprecated Please import from the Preact namespace instead */ 553 + export type TargetedDragEvent<Target extends EventTarget> = TargetedEvent< 554 + Target, 555 + DragEvent 556 + >; 557 + /** @deprecated Please import from the Preact namespace instead */ 558 + export type TargetedFocusEvent<Target extends EventTarget> = TargetedEvent< 559 + Target, 560 + FocusEvent 561 + >; 562 + /** @deprecated Please import from the Preact namespace instead */ 563 + export type TargetedInputEvent<Target extends EventTarget> = TargetedEvent< 564 + Target, 565 + InputEvent 566 + >; 567 + /** @deprecated Please import from the Preact namespace instead */ 568 + export type TargetedKeyboardEvent<Target extends EventTarget> = TargetedEvent< 569 + Target, 570 + KeyboardEvent 571 + >; 572 + /** @deprecated Please import from the Preact namespace instead */ 573 + export type TargetedMouseEvent<Target extends EventTarget> = TargetedEvent< 574 + Target, 575 + MouseEvent 576 + >; 577 + /** @deprecated Please import from the Preact namespace instead */ 578 + export type TargetedPointerEvent<Target extends EventTarget> = TargetedEvent< 579 + Target, 580 + PointerEvent 581 + >; 582 + /** @deprecated Please import from the Preact namespace instead */ 583 + export type TargetedSnapEvent<Target extends EventTarget> = TargetedEvent< 584 + Target, 585 + SnapEvent 586 + >; 587 + /** @deprecated Please import from the Preact namespace instead */ 588 + export type TargetedSubmitEvent<Target extends EventTarget> = TargetedEvent< 589 + Target, 590 + SubmitEvent 591 + >; 592 + /** @deprecated Please import from the Preact namespace instead */ 593 + export type TargetedTouchEvent<Target extends EventTarget> = TargetedEvent< 594 + Target, 595 + TouchEvent 596 + >; 597 + /** @deprecated Please import from the Preact namespace instead */ 598 + export type TargetedToggleEvent<Target extends EventTarget> = TargetedEvent< 599 + Target, 600 + ToggleEvent 601 + >; 602 + /** @deprecated Please import from the Preact namespace instead */ 603 + export type TargetedTransitionEvent<Target extends EventTarget> = 604 + TargetedEvent<Target, TransitionEvent>; 605 + /** @deprecated Please import from the Preact namespace instead */ 606 + export type TargetedUIEvent<Target extends EventTarget> = TargetedEvent< 607 + Target, 608 + UIEvent 609 + >; 610 + /** @deprecated Please import from the Preact namespace instead */ 611 + export type TargetedWheelEvent<Target extends EventTarget> = TargetedEvent< 612 + Target, 613 + WheelEvent 614 + >; 615 + /** @deprecated Please import from the Preact namespace instead */ 616 + export type TargetedPictureInPictureEvent<Target extends EventTarget> = 617 + TargetedEvent<Target, PictureInPictureEvent>; 618 + 619 + /** @deprecated Please import from the Preact namespace instead */ 620 + export type EventHandler<E extends TargetedEvent> = { 621 + bivarianceHack(event: E): void; 622 + }['bivarianceHack']; 623 + 624 + /** @deprecated Please import from the Preact namespace instead */ 625 + export type AnimationEventHandler<Target extends EventTarget> = EventHandler< 626 + TargetedAnimationEvent<Target> 627 + >; 628 + /** @deprecated Please import from the Preact namespace instead */ 629 + export type ClipboardEventHandler<Target extends EventTarget> = EventHandler< 630 + TargetedClipboardEvent<Target> 631 + >; 632 + /** @deprecated Please import from the Preact namespace instead */ 633 + export type CommandEventHandler<Target extends EventTarget> = EventHandler< 634 + TargetedCommandEvent<Target> 635 + >; 636 + /** @deprecated Please import from the Preact namespace instead */ 637 + export type CompositionEventHandler<Target extends EventTarget> = 638 + EventHandler<TargetedCompositionEvent<Target>>; 639 + /** @deprecated Please import from the Preact namespace instead */ 640 + export type DragEventHandler<Target extends EventTarget> = EventHandler< 641 + TargetedDragEvent<Target> 642 + >; 643 + /** @deprecated Please import from the Preact namespace instead */ 644 + export type ToggleEventHandler<Target extends EventTarget> = EventHandler< 645 + TargetedToggleEvent<Target> 646 + >; 647 + /** @deprecated Please import from the Preact namespace instead */ 648 + export type FocusEventHandler<Target extends EventTarget> = EventHandler< 649 + TargetedFocusEvent<Target> 650 + >; 651 + /** @deprecated Please import from the Preact namespace instead */ 652 + export type GenericEventHandler<Target extends EventTarget> = EventHandler< 653 + TargetedEvent<Target> 654 + >; 655 + /** @deprecated Please import from the Preact namespace instead */ 656 + export type InputEventHandler<Target extends EventTarget> = EventHandler< 657 + TargetedInputEvent<Target> 658 + >; 659 + /** @deprecated Please import from the Preact namespace instead */ 660 + export type KeyboardEventHandler<Target extends EventTarget> = EventHandler< 661 + TargetedKeyboardEvent<Target> 662 + >; 663 + /** @deprecated Please import from the Preact namespace instead */ 664 + export type MouseEventHandler<Target extends EventTarget> = EventHandler< 665 + TargetedMouseEvent<Target> 666 + >; 667 + /** @deprecated Please import from the Preact namespace instead */ 668 + export type PointerEventHandler<Target extends EventTarget> = EventHandler< 669 + TargetedPointerEvent<Target> 670 + >; 671 + /** @deprecated Please import from the Preact namespace instead */ 672 + export type SnapEventHandler<Target extends EventTarget> = EventHandler< 673 + TargetedSnapEvent<Target> 674 + >; 675 + /** @deprecated Please import from the Preact namespace instead */ 676 + export type SubmitEventHandler<Target extends EventTarget> = EventHandler< 677 + TargetedSubmitEvent<Target> 678 + >; 679 + /** @deprecated Please import from the Preact namespace instead */ 680 + export type TouchEventHandler<Target extends EventTarget> = EventHandler< 681 + TargetedTouchEvent<Target> 682 + >; 683 + /** @deprecated Please import from the Preact namespace instead */ 684 + export type TransitionEventHandler<Target extends EventTarget> = EventHandler< 685 + TargetedTransitionEvent<Target> 686 + >; 687 + /** @deprecated Please import from the Preact namespace instead */ 688 + export type UIEventHandler<Target extends EventTarget> = EventHandler< 689 + TargetedUIEvent<Target> 690 + >; 691 + /** @deprecated Please import from the Preact namespace instead */ 692 + export type WheelEventHandler<Target extends EventTarget> = EventHandler< 693 + TargetedWheelEvent<Target> 694 + >; 695 + /** @deprecated Please import from the Preact namespace instead */ 696 + export type PictureInPictureEventHandler<Target extends EventTarget> = 697 + EventHandler<TargetedPictureInPictureEvent<Target>>; 698 + 699 + /** @deprecated Please import from the Preact namespace instead */ 700 + export interface DOMAttributes< 701 + Target extends EventTarget 702 + > extends PreactDOMAttributes { 703 + // Image Events 704 + onLoad?: GenericEventHandler<Target> | undefined; 705 + onLoadCapture?: GenericEventHandler<Target> | undefined; 706 + onError?: GenericEventHandler<Target> | undefined; 707 + onErrorCapture?: GenericEventHandler<Target> | undefined; 708 + 709 + // Clipboard Events 710 + onCopy?: ClipboardEventHandler<Target> | undefined; 711 + onCopyCapture?: ClipboardEventHandler<Target> | undefined; 712 + onCut?: ClipboardEventHandler<Target> | undefined; 713 + onCutCapture?: ClipboardEventHandler<Target> | undefined; 714 + onPaste?: ClipboardEventHandler<Target> | undefined; 715 + onPasteCapture?: ClipboardEventHandler<Target> | undefined; 716 + 717 + // Composition Events 718 + onCompositionEnd?: CompositionEventHandler<Target> | undefined; 719 + onCompositionEndCapture?: CompositionEventHandler<Target> | undefined; 720 + onCompositionStart?: CompositionEventHandler<Target> | undefined; 721 + onCompositionStartCapture?: CompositionEventHandler<Target> | undefined; 722 + onCompositionUpdate?: CompositionEventHandler<Target> | undefined; 723 + onCompositionUpdateCapture?: CompositionEventHandler<Target> | undefined; 724 + 725 + // Popover Events 726 + onBeforeToggle?: ToggleEventHandler<Target> | undefined; 727 + onToggle?: ToggleEventHandler<Target> | undefined; 728 + 729 + // Dialog Events 730 + onClose?: GenericEventHandler<Target> | undefined; 731 + onCancel?: GenericEventHandler<Target> | undefined; 732 + 733 + // Focus Events 734 + onFocus?: FocusEventHandler<Target> | undefined; 735 + onFocusCapture?: FocusEventHandler<Target> | undefined; 736 + onFocusIn?: FocusEventHandler<Target> | undefined; 737 + onFocusInCapture?: FocusEventHandler<Target> | undefined; 738 + onFocusOut?: FocusEventHandler<Target> | undefined; 739 + onFocusOutCapture?: FocusEventHandler<Target> | undefined; 740 + onBlur?: FocusEventHandler<Target> | undefined; 741 + onBlurCapture?: FocusEventHandler<Target> | undefined; 742 + 743 + // Form Events 744 + onChange?: GenericEventHandler<Target> | undefined; 745 + onChangeCapture?: GenericEventHandler<Target> | undefined; 746 + onInput?: InputEventHandler<Target> | undefined; 747 + onInputCapture?: InputEventHandler<Target> | undefined; 748 + onBeforeInput?: InputEventHandler<Target> | undefined; 749 + onBeforeInputCapture?: InputEventHandler<Target> | undefined; 750 + onSearch?: GenericEventHandler<Target> | undefined; 751 + onSearchCapture?: GenericEventHandler<Target> | undefined; 752 + onSubmit?: SubmitEventHandler<Target> | undefined; 753 + onSubmitCapture?: SubmitEventHandler<Target> | undefined; 754 + onInvalid?: GenericEventHandler<Target> | undefined; 755 + onInvalidCapture?: GenericEventHandler<Target> | undefined; 756 + onReset?: GenericEventHandler<Target> | undefined; 757 + onResetCapture?: GenericEventHandler<Target> | undefined; 758 + onFormData?: GenericEventHandler<Target> | undefined; 759 + onFormDataCapture?: GenericEventHandler<Target> | undefined; 760 + 761 + // Keyboard Events 762 + onKeyDown?: KeyboardEventHandler<Target> | undefined; 763 + onKeyDownCapture?: KeyboardEventHandler<Target> | undefined; 764 + onKeyPress?: KeyboardEventHandler<Target> | undefined; 765 + onKeyPressCapture?: KeyboardEventHandler<Target> | undefined; 766 + onKeyUp?: KeyboardEventHandler<Target> | undefined; 767 + onKeyUpCapture?: KeyboardEventHandler<Target> | undefined; 768 + 769 + // Media Events 770 + onAbort?: GenericEventHandler<Target> | undefined; 771 + onAbortCapture?: GenericEventHandler<Target> | undefined; 772 + onCanPlay?: GenericEventHandler<Target> | undefined; 773 + onCanPlayCapture?: GenericEventHandler<Target> | undefined; 774 + onCanPlayThrough?: GenericEventHandler<Target> | undefined; 775 + onCanPlayThroughCapture?: GenericEventHandler<Target> | undefined; 776 + onDurationChange?: GenericEventHandler<Target> | undefined; 777 + onDurationChangeCapture?: GenericEventHandler<Target> | undefined; 778 + onEmptied?: GenericEventHandler<Target> | undefined; 779 + onEmptiedCapture?: GenericEventHandler<Target> | undefined; 780 + onEncrypted?: GenericEventHandler<Target> | undefined; 781 + onEncryptedCapture?: GenericEventHandler<Target> | undefined; 782 + onEnded?: GenericEventHandler<Target> | undefined; 783 + onEndedCapture?: GenericEventHandler<Target> | undefined; 784 + onLoadedData?: GenericEventHandler<Target> | undefined; 785 + onLoadedDataCapture?: GenericEventHandler<Target> | undefined; 786 + onLoadedMetadata?: GenericEventHandler<Target> | undefined; 787 + onLoadedMetadataCapture?: GenericEventHandler<Target> | undefined; 788 + onLoadStart?: GenericEventHandler<Target> | undefined; 789 + onLoadStartCapture?: GenericEventHandler<Target> | undefined; 790 + onPause?: GenericEventHandler<Target> | undefined; 791 + onPauseCapture?: GenericEventHandler<Target> | undefined; 792 + onPlay?: GenericEventHandler<Target> | undefined; 793 + onPlayCapture?: GenericEventHandler<Target> | undefined; 794 + onPlaying?: GenericEventHandler<Target> | undefined; 795 + onPlayingCapture?: GenericEventHandler<Target> | undefined; 796 + onProgress?: GenericEventHandler<Target> | undefined; 797 + onProgressCapture?: GenericEventHandler<Target> | undefined; 798 + onRateChange?: GenericEventHandler<Target> | undefined; 799 + onRateChangeCapture?: GenericEventHandler<Target> | undefined; 800 + onSeeked?: GenericEventHandler<Target> | undefined; 801 + onSeekedCapture?: GenericEventHandler<Target> | undefined; 802 + onSeeking?: GenericEventHandler<Target> | undefined; 803 + onSeekingCapture?: GenericEventHandler<Target> | undefined; 804 + onStalled?: GenericEventHandler<Target> | undefined; 805 + onStalledCapture?: GenericEventHandler<Target> | undefined; 806 + onSuspend?: GenericEventHandler<Target> | undefined; 807 + onSuspendCapture?: GenericEventHandler<Target> | undefined; 808 + onTimeUpdate?: GenericEventHandler<Target> | undefined; 809 + onTimeUpdateCapture?: GenericEventHandler<Target> | undefined; 810 + onVolumeChange?: GenericEventHandler<Target> | undefined; 811 + onVolumeChangeCapture?: GenericEventHandler<Target> | undefined; 812 + onWaiting?: GenericEventHandler<Target> | undefined; 813 + onWaitingCapture?: GenericEventHandler<Target> | undefined; 814 + 815 + // MouseEvents 816 + onClick?: MouseEventHandler<Target> | undefined; 817 + onClickCapture?: MouseEventHandler<Target> | undefined; 818 + onContextMenu?: MouseEventHandler<Target> | undefined; 819 + onContextMenuCapture?: MouseEventHandler<Target> | undefined; 820 + onDblClick?: MouseEventHandler<Target> | undefined; 821 + onDblClickCapture?: MouseEventHandler<Target> | undefined; 822 + onDrag?: DragEventHandler<Target> | undefined; 823 + onDragCapture?: DragEventHandler<Target> | undefined; 824 + onDragEnd?: DragEventHandler<Target> | undefined; 825 + onDragEndCapture?: DragEventHandler<Target> | undefined; 826 + onDragEnter?: DragEventHandler<Target> | undefined; 827 + onDragEnterCapture?: DragEventHandler<Target> | undefined; 828 + onDragExit?: DragEventHandler<Target> | undefined; 829 + onDragExitCapture?: DragEventHandler<Target> | undefined; 830 + onDragLeave?: DragEventHandler<Target> | undefined; 831 + onDragLeaveCapture?: DragEventHandler<Target> | undefined; 832 + onDragOver?: DragEventHandler<Target> | undefined; 833 + onDragOverCapture?: DragEventHandler<Target> | undefined; 834 + onDragStart?: DragEventHandler<Target> | undefined; 835 + onDragStartCapture?: DragEventHandler<Target> | undefined; 836 + onDrop?: DragEventHandler<Target> | undefined; 837 + onDropCapture?: DragEventHandler<Target> | undefined; 838 + onMouseDown?: MouseEventHandler<Target> | undefined; 839 + onMouseDownCapture?: MouseEventHandler<Target> | undefined; 840 + onMouseEnter?: MouseEventHandler<Target> | undefined; 841 + onMouseEnterCapture?: MouseEventHandler<Target> | undefined; 842 + onMouseLeave?: MouseEventHandler<Target> | undefined; 843 + onMouseLeaveCapture?: MouseEventHandler<Target> | undefined; 844 + onMouseMove?: MouseEventHandler<Target> | undefined; 845 + onMouseMoveCapture?: MouseEventHandler<Target> | undefined; 846 + onMouseOut?: MouseEventHandler<Target> | undefined; 847 + onMouseOutCapture?: MouseEventHandler<Target> | undefined; 848 + onMouseOver?: MouseEventHandler<Target> | undefined; 849 + onMouseOverCapture?: MouseEventHandler<Target> | undefined; 850 + onMouseUp?: MouseEventHandler<Target> | undefined; 851 + onMouseUpCapture?: MouseEventHandler<Target> | undefined; 852 + // TODO: Spec for `auxclick` events was changed to make it a PointerEvent but only 853 + // Chrome has support for it yet. When more browsers align we should change this. 854 + // https://developer.mozilla.org/en-US/docs/Web/API/Element/auxclick_event#browser_compatibility 855 + onAuxClick?: MouseEventHandler<Target> | undefined; 856 + onAuxClickCapture?: MouseEventHandler<Target> | undefined; 857 + 858 + // Selection Events 859 + onSelect?: GenericEventHandler<Target> | undefined; 860 + onSelectCapture?: GenericEventHandler<Target> | undefined; 861 + 862 + // Touch Events 863 + onTouchCancel?: TouchEventHandler<Target> | undefined; 864 + onTouchCancelCapture?: TouchEventHandler<Target> | undefined; 865 + onTouchEnd?: TouchEventHandler<Target> | undefined; 866 + onTouchEndCapture?: TouchEventHandler<Target> | undefined; 867 + onTouchMove?: TouchEventHandler<Target> | undefined; 868 + onTouchMoveCapture?: TouchEventHandler<Target> | undefined; 869 + onTouchStart?: TouchEventHandler<Target> | undefined; 870 + onTouchStartCapture?: TouchEventHandler<Target> | undefined; 871 + 872 + // Pointer Events 873 + onPointerOver?: PointerEventHandler<Target> | undefined; 874 + onPointerOverCapture?: PointerEventHandler<Target> | undefined; 875 + onPointerEnter?: PointerEventHandler<Target> | undefined; 876 + onPointerEnterCapture?: PointerEventHandler<Target> | undefined; 877 + onPointerDown?: PointerEventHandler<Target> | undefined; 878 + onPointerDownCapture?: PointerEventHandler<Target> | undefined; 879 + onPointerMove?: PointerEventHandler<Target> | undefined; 880 + onPointerMoveCapture?: PointerEventHandler<Target> | undefined; 881 + onPointerUp?: PointerEventHandler<Target> | undefined; 882 + onPointerUpCapture?: PointerEventHandler<Target> | undefined; 883 + onPointerCancel?: PointerEventHandler<Target> | undefined; 884 + onPointerCancelCapture?: PointerEventHandler<Target> | undefined; 885 + onPointerOut?: PointerEventHandler<Target> | undefined; 886 + onPointerOutCapture?: PointerEventHandler<Target> | undefined; 887 + onPointerLeave?: PointerEventHandler<Target> | undefined; 888 + onPointerLeaveCapture?: PointerEventHandler<Target> | undefined; 889 + onGotPointerCapture?: PointerEventHandler<Target> | undefined; 890 + onGotPointerCaptureCapture?: PointerEventHandler<Target> | undefined; 891 + onLostPointerCapture?: PointerEventHandler<Target> | undefined; 892 + onLostPointerCaptureCapture?: PointerEventHandler<Target> | undefined; 893 + 894 + // Scroll Events 895 + onScroll?: GenericEventHandler<Target> | undefined; 896 + onScrollCapture?: GenericEventHandler<Target> | undefined; 897 + onScrollEnd?: GenericEventHandler<Target> | undefined; 898 + onScrollEndCapture?: GenericEventHandler<Target> | undefined; 899 + onScrollSnapChange?: SnapEventHandler<Target> | undefined; 900 + onScrollSnapChangeCapture?: SnapEventHandler<Target> | undefined; 901 + onScrollSnapChanging?: SnapEventHandler<Target> | undefined; 902 + onScrollSnapChangingCapture?: SnapEventHandler<Target> | undefined; 903 + 904 + // Wheel Events 905 + onWheel?: WheelEventHandler<Target> | undefined; 906 + onWheelCapture?: WheelEventHandler<Target> | undefined; 907 + 908 + // Animation Events 909 + onAnimationStart?: AnimationEventHandler<Target> | undefined; 910 + onAnimationStartCapture?: AnimationEventHandler<Target> | undefined; 911 + onAnimationEnd?: AnimationEventHandler<Target> | undefined; 912 + onAnimationEndCapture?: AnimationEventHandler<Target> | undefined; 913 + onAnimationIteration?: AnimationEventHandler<Target> | undefined; 914 + onAnimationIterationCapture?: AnimationEventHandler<Target> | undefined; 915 + 916 + // Transition Events 917 + onTransitionCancel?: TransitionEventHandler<Target>; 918 + onTransitionCancelCapture?: TransitionEventHandler<Target>; 919 + onTransitionEnd?: TransitionEventHandler<Target>; 920 + onTransitionEndCapture?: TransitionEventHandler<Target>; 921 + onTransitionRun?: TransitionEventHandler<Target>; 922 + onTransitionRunCapture?: TransitionEventHandler<Target>; 923 + onTransitionStart?: TransitionEventHandler<Target>; 924 + onTransitionStartCapture?: TransitionEventHandler<Target>; 925 + 926 + // PictureInPicture Events 927 + onEnterPictureInPicture?: PictureInPictureEventHandler<Target>; 928 + onEnterPictureInPictureCapture?: PictureInPictureEventHandler<Target>; 929 + onLeavePictureInPicture?: PictureInPictureEventHandler<Target>; 930 + onLeavePictureInPictureCapture?: PictureInPictureEventHandler<Target>; 931 + onResize?: PictureInPictureEventHandler<Target>; 932 + onResizeCapture?: PictureInPictureEventHandler<Target>; 933 + 934 + onCommand?: CommandEventHandler<Target>; 935 + } 936 + 937 + // All the WAI-ARIA 1.1 attributes from https://www.w3.org/TR/wai-aria-1.1/ 938 + /** @deprecated Please import from the Preact namespace instead */ 939 + export interface AriaAttributes { 940 + /** Identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application. */ 941 + 'aria-activedescendant'?: Signalish<string | undefined>; 942 + /** Indicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute. */ 943 + 'aria-atomic'?: Signalish<Booleanish | undefined>; 944 + /** 945 + * Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be 946 + * presented if they are made. 947 + */ 948 + 'aria-autocomplete'?: Signalish< 949 + 'none' | 'inline' | 'list' | 'both' | undefined 950 + >; 951 + /** 952 + * Defines a string value that labels the current element, which is intended to be converted into Braille. 953 + * @see aria-label. 954 + */ 955 + 'aria-braillelabel'?: Signalish<string | undefined>; 956 + /** 957 + * Defines a human-readable, author-localized abbreviated description for the role of an element, which is intended to be converted into Braille. 958 + * @see aria-roledescription. 959 + */ 960 + 'aria-brailleroledescription'?: Signalish<string | undefined>; 961 + /** Indicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user. */ 962 + 'aria-busy'?: Signalish<Booleanish | undefined>; 963 + /** 964 + * Indicates the current "checked" state of checkboxes, radio buttons, and other widgets. 965 + * @see aria-pressed 966 + * @see aria-selected. 967 + */ 968 + 'aria-checked'?: Signalish<Booleanish | 'mixed' | undefined>; 969 + /** 970 + * Defines the total number of columns in a table, grid, or treegrid. 971 + * @see aria-colindex. 972 + */ 973 + 'aria-colcount'?: Signalish<number | undefined>; 974 + /** 975 + * Defines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid. 976 + * @see aria-colcount 977 + * @see aria-colspan. 978 + */ 979 + 'aria-colindex'?: Signalish<number | undefined>; 980 + /** 981 + * Defines a human readable text alternative of aria-colindex. 982 + * @see aria-rowindextext. 983 + */ 984 + 'aria-colindextext'?: Signalish<string | undefined>; 985 + /** 986 + * Defines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid. 987 + * @see aria-colindex 988 + * @see aria-rowspan. 989 + */ 990 + 'aria-colspan'?: Signalish<number | undefined>; 991 + /** 992 + * Identifies the element (or elements) whose contents or presence are controlled by the current element. 993 + * @see aria-owns. 994 + */ 995 + 'aria-controls'?: Signalish<string | undefined>; 996 + /** Indicates the element that represents the current item within a container or set of related elements. */ 997 + 'aria-current'?: Signalish< 998 + Booleanish | 'page' | 'step' | 'location' | 'date' | 'time' | undefined 999 + >; 1000 + /** 1001 + * Identifies the element (or elements) that describes the object. 1002 + * @see aria-labelledby 1003 + */ 1004 + 'aria-describedby'?: Signalish<string | undefined>; 1005 + /** 1006 + * Defines a string value that describes or annotates the current element. 1007 + * @see related aria-describedby. 1008 + */ 1009 + 'aria-description'?: Signalish<string | undefined>; 1010 + /** 1011 + * Identifies the element that provides a detailed, extended description for the object. 1012 + * @see aria-describedby. 1013 + */ 1014 + 'aria-details'?: Signalish<string | undefined>; 1015 + /** 1016 + * Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable. 1017 + * @see aria-hidden 1018 + * @see aria-readonly. 1019 + */ 1020 + 'aria-disabled'?: Signalish<Booleanish | undefined>; 1021 + /** 1022 + * Indicates what functions can be performed when a dragged object is released on the drop target. 1023 + * @deprecated in ARIA 1.1 1024 + */ 1025 + 'aria-dropeffect'?: Signalish< 1026 + 'none' | 'copy' | 'execute' | 'link' | 'move' | 'popup' | undefined 1027 + >; 1028 + /** 1029 + * Identifies the element that provides an error message for the object. 1030 + * @see aria-invalid 1031 + * @see aria-describedby. 1032 + */ 1033 + 'aria-errormessage'?: Signalish<string | undefined>; 1034 + /** Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed. */ 1035 + 'aria-expanded'?: Signalish<Booleanish | undefined>; 1036 + /** 1037 + * Identifies the next element (or elements) in an alternate reading order of content which, at the user's discretion, 1038 + * allows assistive technology to override the general default of reading in document source order. 1039 + */ 1040 + 'aria-flowto'?: Signalish<string | undefined>; 1041 + /** 1042 + * Indicates an element's "grabbed" state in a drag-and-drop operation. 1043 + * @deprecated in ARIA 1.1 1044 + */ 1045 + 'aria-grabbed'?: Signalish<Booleanish | undefined>; 1046 + /** Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element. */ 1047 + 'aria-haspopup'?: Signalish< 1048 + Booleanish | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog' | undefined 1049 + >; 1050 + /** 1051 + * Indicates whether the element is exposed to an accessibility API. 1052 + * @see aria-disabled. 1053 + */ 1054 + 'aria-hidden'?: Signalish<Booleanish | undefined>; 1055 + /** 1056 + * Indicates the entered value does not conform to the format expected by the application. 1057 + * @see aria-errormessage. 1058 + */ 1059 + 'aria-invalid'?: Signalish<Booleanish | 'grammar' | 'spelling' | undefined>; 1060 + /** Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element. */ 1061 + 'aria-keyshortcuts'?: Signalish<string | undefined>; 1062 + /** 1063 + * Defines a string value that labels the current element. 1064 + * @see aria-labelledby. 1065 + */ 1066 + 'aria-label'?: Signalish<string | undefined>; 1067 + /** 1068 + * Identifies the element (or elements) that labels the current element. 1069 + * @see aria-describedby. 1070 + */ 1071 + 'aria-labelledby'?: Signalish<string | undefined>; 1072 + /** Defines the hierarchical level of an element within a structure. */ 1073 + 'aria-level'?: Signalish<number | undefined>; 1074 + /** Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region. */ 1075 + 'aria-live'?: Signalish<'off' | 'assertive' | 'polite' | undefined>; 1076 + /** Indicates whether an element is modal when displayed. */ 1077 + 'aria-modal'?: Signalish<Booleanish | undefined>; 1078 + /** Indicates whether a text box accepts multiple lines of input or only a single line. */ 1079 + 'aria-multiline'?: Signalish<Booleanish | undefined>; 1080 + /** Indicates that the user may select more than one item from the current selectable descendants. */ 1081 + 'aria-multiselectable'?: Signalish<Booleanish | undefined>; 1082 + /** Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous. */ 1083 + 'aria-orientation'?: Signalish<'horizontal' | 'vertical' | undefined>; 1084 + /** 1085 + * Identifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship 1086 + * between DOM elements where the DOM hierarchy cannot be used to represent the relationship. 1087 + * @see aria-controls. 1088 + */ 1089 + 'aria-owns'?: Signalish<string | undefined>; 1090 + /** 1091 + * Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value. 1092 + * A hint could be a sample value or a brief description of the expected format. 1093 + */ 1094 + 'aria-placeholder'?: Signalish<string | undefined>; 1095 + /** 1096 + * Defines an element's number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. 1097 + * @see aria-setsize. 1098 + */ 1099 + 'aria-posinset'?: Signalish<number | undefined>; 1100 + /** 1101 + * Indicates the current "pressed" state of toggle buttons. 1102 + * @see aria-checked 1103 + * @see aria-selected. 1104 + */ 1105 + 'aria-pressed'?: Signalish<Booleanish | 'mixed' | undefined>; 1106 + /** 1107 + * Indicates that the element is not editable, but is otherwise operable. 1108 + * @see aria-disabled. 1109 + */ 1110 + 'aria-readonly'?: Signalish<Booleanish | undefined>; 1111 + /** 1112 + * Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified. 1113 + * @see aria-atomic. 1114 + */ 1115 + 'aria-relevant'?: Signalish< 1116 + | 'additions' 1117 + | 'additions removals' 1118 + | 'additions text' 1119 + | 'all' 1120 + | 'removals' 1121 + | 'removals additions' 1122 + | 'removals text' 1123 + | 'text' 1124 + | 'text additions' 1125 + | 'text removals' 1126 + | undefined 1127 + >; 1128 + /** Indicates that user input is required on the element before a form may be submitted. */ 1129 + 'aria-required'?: Signalish<Booleanish | undefined>; 1130 + /** Defines a human-readable, author-localized description for the role of an element. */ 1131 + 'aria-roledescription'?: Signalish<string | undefined>; 1132 + /** 1133 + * Defines the total number of rows in a table, grid, or treegrid. 1134 + * @see aria-rowindex. 1135 + */ 1136 + 'aria-rowcount'?: Signalish<number | undefined>; 1137 + /** 1138 + * Defines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid. 1139 + * @see aria-rowcount 1140 + * @see aria-rowspan. 1141 + */ 1142 + 'aria-rowindex'?: Signalish<number | undefined>; 1143 + /** 1144 + * Defines a human readable text alternative of aria-rowindex. 1145 + * @see aria-colindextext. 1146 + */ 1147 + 'aria-rowindextext'?: Signalish<string | undefined>; 1148 + /** 1149 + * Defines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid. 1150 + * @see aria-rowindex 1151 + * @see aria-colspan. 1152 + */ 1153 + 'aria-rowspan'?: Signalish<number | undefined>; 1154 + /** 1155 + * Indicates the current "selected" state of various widgets. 1156 + * @see aria-checked 1157 + * @see aria-pressed. 1158 + */ 1159 + 'aria-selected'?: Signalish<Booleanish | undefined>; 1160 + /** 1161 + * Defines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. 1162 + * @see aria-posinset. 1163 + */ 1164 + 'aria-setsize'?: Signalish<number | undefined>; 1165 + /** Indicates if items in a table or grid are sorted in ascending or descending order. */ 1166 + 'aria-sort'?: Signalish< 1167 + 'none' | 'ascending' | 'descending' | 'other' | undefined 1168 + >; 1169 + /** Defines the maximum allowed value for a range widget. */ 1170 + 'aria-valuemax'?: Signalish<number | undefined>; 1171 + /** Defines the minimum allowed value for a range widget. */ 1172 + 'aria-valuemin'?: Signalish<number | undefined>; 1173 + /** 1174 + * Defines the current value for a range widget. 1175 + * @see aria-valuetext. 1176 + */ 1177 + 'aria-valuenow'?: Signalish<number | undefined>; 1178 + /** Defines the human readable text alternative of aria-valuenow for a range widget. */ 1179 + 'aria-valuetext'?: Signalish<string | undefined>; 1180 + } 1181 + 1182 + // All the WAI-ARIA 1.2 role attribute values from https://www.w3.org/TR/wai-aria-1.2/#role_definitions 1183 + /** @deprecated Please import from the Preact namespace instead */ 1184 + export type WAIAriaRole = 1185 + | 'alert' 1186 + | 'alertdialog' 1187 + | 'application' 1188 + | 'article' 1189 + | 'banner' 1190 + | 'blockquote' 1191 + | 'button' 1192 + | 'caption' 1193 + | 'cell' 1194 + | 'checkbox' 1195 + | 'code' 1196 + | 'columnheader' 1197 + | 'combobox' 1198 + | 'command' 1199 + | 'complementary' 1200 + | 'composite' 1201 + | 'contentinfo' 1202 + | 'definition' 1203 + | 'deletion' 1204 + | 'dialog' 1205 + | 'directory' 1206 + | 'document' 1207 + | 'emphasis' 1208 + | 'feed' 1209 + | 'figure' 1210 + | 'form' 1211 + | 'grid' 1212 + | 'gridcell' 1213 + | 'group' 1214 + | 'heading' 1215 + | 'img' 1216 + | 'input' 1217 + | 'insertion' 1218 + | 'landmark' 1219 + | 'link' 1220 + | 'list' 1221 + | 'listbox' 1222 + | 'listitem' 1223 + | 'log' 1224 + | 'main' 1225 + | 'marquee' 1226 + | 'math' 1227 + | 'meter' 1228 + | 'menu' 1229 + | 'menubar' 1230 + | 'menuitem' 1231 + | 'menuitemcheckbox' 1232 + | 'menuitemradio' 1233 + | 'navigation' 1234 + | 'none' 1235 + | 'note' 1236 + | 'option' 1237 + | 'paragraph' 1238 + | 'presentation' 1239 + | 'progressbar' 1240 + | 'radio' 1241 + | 'radiogroup' 1242 + | 'range' 1243 + | 'region' 1244 + | 'roletype' 1245 + | 'row' 1246 + | 'rowgroup' 1247 + | 'rowheader' 1248 + | 'scrollbar' 1249 + | 'search' 1250 + | 'searchbox' 1251 + | 'section' 1252 + | 'sectionhead' 1253 + | 'select' 1254 + | 'separator' 1255 + | 'slider' 1256 + | 'spinbutton' 1257 + | 'status' 1258 + | 'strong' 1259 + | 'structure' 1260 + | 'subscript' 1261 + | 'superscript' 1262 + | 'switch' 1263 + | 'tab' 1264 + | 'table' 1265 + | 'tablist' 1266 + | 'tabpanel' 1267 + | 'term' 1268 + | 'textbox' 1269 + | 'time' 1270 + | 'timer' 1271 + | 'toolbar' 1272 + | 'tooltip' 1273 + | 'tree' 1274 + | 'treegrid' 1275 + | 'treeitem' 1276 + | 'widget' 1277 + | 'window' 1278 + | 'none presentation'; 1279 + 1280 + // All the Digital Publishing WAI-ARIA 1.0 role attribute values from https://www.w3.org/TR/dpub-aria-1.0/#role_definitions 1281 + /** @deprecated Please import from the Preact namespace instead */ 1282 + export type DPubAriaRole = 1283 + | 'doc-abstract' 1284 + | 'doc-acknowledgments' 1285 + | 'doc-afterword' 1286 + | 'doc-appendix' 1287 + | 'doc-backlink' 1288 + | 'doc-biblioentry' 1289 + | 'doc-bibliography' 1290 + | 'doc-biblioref' 1291 + | 'doc-chapter' 1292 + | 'doc-colophon' 1293 + | 'doc-conclusion' 1294 + | 'doc-cover' 1295 + | 'doc-credit' 1296 + | 'doc-credits' 1297 + | 'doc-dedication' 1298 + | 'doc-endnote' 1299 + | 'doc-endnotes' 1300 + | 'doc-epigraph' 1301 + | 'doc-epilogue' 1302 + | 'doc-errata' 1303 + | 'doc-example' 1304 + | 'doc-footnote' 1305 + | 'doc-foreword' 1306 + | 'doc-glossary' 1307 + | 'doc-glossref' 1308 + | 'doc-index' 1309 + | 'doc-introduction' 1310 + | 'doc-noteref' 1311 + | 'doc-notice' 1312 + | 'doc-pagebreak' 1313 + | 'doc-pagelist' 1314 + | 'doc-part' 1315 + | 'doc-preface' 1316 + | 'doc-prologue' 1317 + | 'doc-pullquote' 1318 + | 'doc-qna' 1319 + | 'doc-subtitle' 1320 + | 'doc-tip' 1321 + | 'doc-toc'; 1322 + 1323 + /** @deprecated Please import from the Preact namespace instead */ 1324 + export type AriaRole = WAIAriaRole | DPubAriaRole; 1325 + 1326 + /** @deprecated Please import from the Preact namespace instead */ 1327 + export interface AllHTMLAttributes<RefType extends EventTarget = EventTarget> 1328 + extends ClassAttributes<RefType>, DOMAttributes<RefType>, AriaAttributes { 1329 + // Standard HTML Attributes 1330 + accept?: Signalish<string | undefined>; 1331 + acceptCharset?: Signalish<string | undefined>; 1332 + 'accept-charset'?: Signalish<AllHTMLAttributes['acceptCharset']>; 1333 + accessKey?: Signalish<string | undefined>; 1334 + accesskey?: Signalish<AllHTMLAttributes['accessKey']>; 1335 + action?: Signalish<string | undefined>; 1336 + allow?: Signalish<string | undefined>; 1337 + allowFullScreen?: Signalish<boolean | undefined>; 1338 + allowTransparency?: Signalish<boolean | undefined>; 1339 + alt?: Signalish<string | undefined>; 1340 + as?: Signalish<string | undefined>; 1341 + async?: Signalish<boolean | undefined>; 1342 + autocomplete?: Signalish<string | undefined>; 1343 + autoComplete?: Signalish<string | undefined>; 1344 + autocorrect?: Signalish<string | undefined>; 1345 + autoCorrect?: Signalish<string | undefined>; 1346 + autofocus?: Signalish<boolean | undefined>; 1347 + autoFocus?: Signalish<boolean | undefined>; 1348 + autoPlay?: Signalish<boolean | undefined>; 1349 + autoplay?: Signalish<boolean | undefined>; 1350 + capture?: Signalish<boolean | string | undefined>; 1351 + cellPadding?: Signalish<number | string | undefined>; 1352 + cellSpacing?: Signalish<number | string | undefined>; 1353 + charSet?: Signalish<string | undefined>; 1354 + charset?: Signalish<string | undefined>; 1355 + challenge?: Signalish<string | undefined>; 1356 + checked?: Signalish<boolean | undefined>; 1357 + cite?: Signalish<string | undefined>; 1358 + class?: Signalish<string | undefined>; 1359 + className?: Signalish<string | undefined>; 1360 + cols?: Signalish<number | undefined>; 1361 + colSpan?: Signalish<number | undefined>; 1362 + colspan?: Signalish<number | undefined>; 1363 + content?: Signalish<string | undefined>; 1364 + contentEditable?: Signalish< 1365 + Booleanish | '' | 'plaintext-only' | 'inherit' | undefined 1366 + >; 1367 + contenteditable?: Signalish<AllHTMLAttributes['contentEditable']>; 1368 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/contextmenu */ 1369 + contextMenu?: Signalish<string | undefined>; 1370 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/contextmenu */ 1371 + contextmenu?: Signalish<string | undefined>; 1372 + controls?: Signalish<boolean | undefined>; 1373 + controlslist?: Signalish<string | undefined>; 1374 + controlsList?: Signalish<string | undefined>; 1375 + coords?: Signalish<string | undefined>; 1376 + crossOrigin?: Signalish<string | undefined>; 1377 + crossorigin?: Signalish<string | undefined>; 1378 + currentTime?: Signalish<number | undefined>; 1379 + data?: Signalish<string | undefined>; 1380 + dateTime?: Signalish<string | undefined>; 1381 + datetime?: Signalish<string | undefined>; 1382 + default?: Signalish<boolean | undefined>; 1383 + defaultChecked?: Signalish<boolean | undefined>; 1384 + defaultMuted?: Signalish<boolean | undefined>; 1385 + defaultPlaybackRate?: Signalish<number | undefined>; 1386 + defaultValue?: Signalish<string | undefined>; 1387 + defer?: Signalish<boolean | undefined>; 1388 + dir?: Signalish<'auto' | 'rtl' | 'ltr' | undefined>; 1389 + disabled?: Signalish<boolean | undefined>; 1390 + disableremoteplayback?: Signalish<boolean | undefined>; 1391 + disableRemotePlayback?: Signalish<boolean | undefined>; 1392 + download?: Signalish<any | undefined>; 1393 + decoding?: Signalish<'sync' | 'async' | 'auto' | undefined>; 1394 + draggable?: Signalish<boolean | undefined>; 1395 + encType?: Signalish<string | undefined>; 1396 + enctype?: Signalish<string | undefined>; 1397 + enterkeyhint?: Signalish< 1398 + | 'enter' 1399 + | 'done' 1400 + | 'go' 1401 + | 'next' 1402 + | 'previous' 1403 + | 'search' 1404 + | 'send' 1405 + | undefined 1406 + >; 1407 + elementTiming?: Signalish<string | undefined>; 1408 + elementtiming?: Signalish<AllHTMLAttributes['elementTiming']>; 1409 + exportparts?: Signalish<string | undefined>; 1410 + for?: Signalish<string | undefined>; 1411 + form?: Signalish<string | undefined>; 1412 + formAction?: Signalish<string | undefined>; 1413 + formaction?: Signalish<string | undefined>; 1414 + formEncType?: Signalish<string | undefined>; 1415 + formenctype?: Signalish<string | undefined>; 1416 + formMethod?: Signalish<string | undefined>; 1417 + formmethod?: Signalish<string | undefined>; 1418 + formNoValidate?: Signalish<boolean | undefined>; 1419 + formnovalidate?: Signalish<boolean | undefined>; 1420 + formTarget?: Signalish<string | undefined>; 1421 + formtarget?: Signalish<string | undefined>; 1422 + frameBorder?: Signalish<number | string | undefined>; 1423 + frameborder?: Signalish<number | string | undefined>; 1424 + headers?: Signalish<string | undefined>; 1425 + height?: Signalish<number | string | undefined>; 1426 + hidden?: Signalish<boolean | 'hidden' | 'until-found' | undefined>; 1427 + high?: Signalish<number | undefined>; 1428 + href?: Signalish<string | undefined>; 1429 + hrefLang?: Signalish<string | undefined>; 1430 + hreflang?: Signalish<string | undefined>; 1431 + htmlFor?: Signalish<string | undefined>; 1432 + httpEquiv?: Signalish<string | undefined>; 1433 + 'http-equiv'?: Signalish<string | undefined>; 1434 + icon?: Signalish<string | undefined>; 1435 + id?: Signalish<string | undefined>; 1436 + indeterminate?: Signalish<boolean | undefined>; 1437 + inert?: Signalish<boolean | undefined>; 1438 + inputMode?: Signalish<string | undefined>; 1439 + inputmode?: Signalish<string | undefined>; 1440 + integrity?: Signalish<string | undefined>; 1441 + is?: Signalish<string | undefined>; 1442 + keyParams?: Signalish<string | undefined>; 1443 + keyType?: Signalish<string | undefined>; 1444 + kind?: Signalish<string | undefined>; 1445 + label?: Signalish<string | undefined>; 1446 + lang?: Signalish<string | undefined>; 1447 + list?: Signalish<string | undefined>; 1448 + loading?: Signalish<'eager' | 'lazy' | undefined>; 1449 + loop?: Signalish<boolean | undefined>; 1450 + low?: Signalish<number | undefined>; 1451 + manifest?: Signalish<string | undefined>; 1452 + marginHeight?: Signalish<number | undefined>; 1453 + marginWidth?: Signalish<number | undefined>; 1454 + max?: Signalish<number | string | undefined>; 1455 + maxLength?: Signalish<number | undefined>; 1456 + maxlength?: Signalish<number | undefined>; 1457 + media?: Signalish<string | undefined>; 1458 + mediaGroup?: Signalish<string | undefined>; 1459 + method?: Signalish<string | undefined>; 1460 + min?: Signalish<number | string | undefined>; 1461 + minLength?: Signalish<number | undefined>; 1462 + minlength?: Signalish<number | undefined>; 1463 + multiple?: Signalish<boolean | undefined>; 1464 + muted?: Signalish<boolean | undefined>; 1465 + name?: Signalish<string | undefined>; 1466 + nomodule?: Signalish<boolean | undefined>; 1467 + nonce?: Signalish<string | undefined>; 1468 + noValidate?: Signalish<boolean | undefined>; 1469 + novalidate?: Signalish<boolean | undefined>; 1470 + open?: Signalish<boolean | undefined>; 1471 + optimum?: Signalish<number | undefined>; 1472 + part?: Signalish<string | undefined>; 1473 + pattern?: Signalish<string | undefined>; 1474 + ping?: Signalish<string | undefined>; 1475 + placeholder?: Signalish<string | undefined>; 1476 + playsInline?: Signalish<boolean | undefined>; 1477 + playsinline?: Signalish<boolean | undefined>; 1478 + playbackRate?: Signalish<number | undefined>; 1479 + popover?: Signalish<'auto' | 'hint' | 'manual' | boolean | undefined>; 1480 + popovertarget?: Signalish<string | undefined>; 1481 + popoverTarget?: Signalish<string | undefined>; 1482 + popovertargetaction?: Signalish<'hide' | 'show' | 'toggle' | undefined>; 1483 + popoverTargetAction?: Signalish<'hide' | 'show' | 'toggle' | undefined>; 1484 + poster?: Signalish<string | undefined>; 1485 + preload?: Signalish<'auto' | 'metadata' | 'none' | undefined>; 1486 + preservesPitch?: Signalish<boolean | undefined>; 1487 + radioGroup?: Signalish<string | undefined>; 1488 + readonly?: Signalish<boolean | undefined>; 1489 + readOnly?: Signalish<boolean | undefined>; 1490 + referrerpolicy?: Signalish< 1491 + | 'no-referrer' 1492 + | 'no-referrer-when-downgrade' 1493 + | 'origin' 1494 + | 'origin-when-cross-origin' 1495 + | 'same-origin' 1496 + | 'strict-origin' 1497 + | 'strict-origin-when-cross-origin' 1498 + | 'unsafe-url' 1499 + | undefined 1500 + >; 1501 + rel?: Signalish<string | undefined>; 1502 + required?: Signalish<boolean | undefined>; 1503 + reversed?: Signalish<boolean | undefined>; 1504 + role?: Signalish<AriaRole | undefined>; 1505 + rows?: Signalish<number | undefined>; 1506 + rowSpan?: Signalish<number | undefined>; 1507 + rowspan?: Signalish<number | undefined>; 1508 + sandbox?: Signalish<string | undefined>; 1509 + scope?: Signalish<string | undefined>; 1510 + scoped?: Signalish<boolean | undefined>; 1511 + scrolling?: Signalish<string | undefined>; 1512 + seamless?: Signalish<boolean | undefined>; 1513 + selected?: Signalish<boolean | undefined>; 1514 + shape?: Signalish<string | undefined>; 1515 + size?: Signalish<number | undefined>; 1516 + sizes?: Signalish<string | undefined>; 1517 + slot?: Signalish<string | undefined>; 1518 + span?: Signalish<number | undefined>; 1519 + spellcheck?: Signalish<boolean | undefined>; 1520 + src?: Signalish<string | undefined>; 1521 + srcDoc?: Signalish<string | undefined>; 1522 + srcdoc?: Signalish<string | undefined>; 1523 + srcLang?: Signalish<string | undefined>; 1524 + srclang?: Signalish<string | undefined>; 1525 + srcSet?: Signalish<string | undefined>; 1526 + srcset?: Signalish<string | undefined>; 1527 + srcObject?: Signalish<MediaStream | MediaSource | Blob | File | null>; 1528 + start?: Signalish<number | undefined>; 1529 + step?: Signalish<number | string | undefined>; 1530 + style?: Signalish<string | CSSProperties | undefined>; 1531 + summary?: Signalish<string | undefined>; 1532 + tabIndex?: Signalish<number | undefined>; 1533 + tabindex?: Signalish<number | undefined>; 1534 + target?: Signalish<string | undefined>; 1535 + title?: Signalish<string | undefined>; 1536 + type?: Signalish<string | undefined>; 1537 + useMap?: Signalish<string | undefined>; 1538 + usemap?: Signalish<string | undefined>; 1539 + value?: Signalish<string | string[] | number | undefined>; 1540 + volume?: Signalish<string | number | undefined>; 1541 + width?: Signalish<number | string | undefined>; 1542 + wmode?: Signalish<string | undefined>; 1543 + wrap?: Signalish<string | undefined>; 1544 + 1545 + // Non-standard Attributes 1546 + autocapitalize?: Signalish< 1547 + 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters' | undefined 1548 + >; 1549 + autoCapitalize?: Signalish< 1550 + 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters' | undefined 1551 + >; 1552 + disablePictureInPicture?: Signalish<boolean | undefined>; 1553 + results?: Signalish<number | undefined>; 1554 + translate?: Signalish<boolean | undefined>; 1555 + 1556 + // RDFa Attributes 1557 + about?: Signalish<string | undefined>; 1558 + datatype?: Signalish<string | undefined>; 1559 + inlist?: Signalish<any>; 1560 + prefix?: Signalish<string | undefined>; 1561 + property?: Signalish<string | undefined>; 1562 + resource?: Signalish<string | undefined>; 1563 + typeof?: Signalish<string | undefined>; 1564 + vocab?: Signalish<string | undefined>; 1565 + 1566 + // Microdata Attributes 1567 + itemProp?: Signalish<string | undefined>; 1568 + itemprop?: Signalish<string | undefined>; 1569 + itemScope?: Signalish<boolean | undefined>; 1570 + itemscope?: Signalish<boolean | undefined>; 1571 + itemType?: Signalish<string | undefined>; 1572 + itemtype?: Signalish<string | undefined>; 1573 + itemID?: Signalish<string | undefined>; 1574 + itemid?: Signalish<string | undefined>; 1575 + itemRef?: Signalish<string | undefined>; 1576 + itemref?: Signalish<string | undefined>; 1577 + } 1578 + 1579 + /** @deprecated Please import from the Preact namespace instead */ 1580 + export interface HTMLAttributes<RefType extends EventTarget = EventTarget> 1581 + extends ClassAttributes<RefType>, DOMAttributes<RefType>, AriaAttributes { 1582 + // Standard HTML Attributes 1583 + accesskey?: Signalish<string | undefined>; 1584 + accessKey?: Signalish<string | undefined>; 1585 + autocapitalize?: Signalish< 1586 + 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters' | undefined 1587 + >; 1588 + autoCapitalize?: Signalish< 1589 + 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters' | undefined 1590 + >; 1591 + autocorrect?: Signalish<string | undefined>; 1592 + autoCorrect?: Signalish<string | undefined>; 1593 + autofocus?: Signalish<boolean | undefined>; 1594 + autoFocus?: Signalish<boolean | undefined>; 1595 + class?: Signalish<string | undefined>; 1596 + className?: Signalish<string | undefined>; 1597 + contenteditable?: Signalish< 1598 + Booleanish | '' | 'plaintext-only' | 'inherit' | undefined 1599 + >; 1600 + contentEditable?: Signalish< 1601 + Booleanish | '' | 'plaintext-only' | 'inherit' | undefined 1602 + >; 1603 + dir?: Signalish<'auto' | 'rtl' | 'ltr' | undefined>; 1604 + draggable?: Signalish<boolean | undefined>; 1605 + enterkeyhint?: Signalish< 1606 + | 'enter' 1607 + | 'done' 1608 + | 'go' 1609 + | 'next' 1610 + | 'previous' 1611 + | 'search' 1612 + | 'send' 1613 + | undefined 1614 + >; 1615 + exportparts?: Signalish<string | undefined>; 1616 + hidden?: Signalish<boolean | 'hidden' | 'until-found' | undefined>; 1617 + id?: Signalish<string | undefined>; 1618 + inert?: Signalish<boolean | undefined>; 1619 + inputmode?: Signalish<string | undefined>; 1620 + inputMode?: Signalish<string | undefined>; 1621 + is?: Signalish<string | undefined>; 1622 + lang?: Signalish<string | undefined>; 1623 + nonce?: Signalish<string | undefined>; 1624 + part?: Signalish<string | undefined>; 1625 + popover?: Signalish<'auto' | 'hint' | 'manual' | boolean | undefined>; 1626 + slot?: Signalish<string | undefined>; 1627 + spellcheck?: Signalish<boolean | undefined>; 1628 + style?: Signalish<string | CSSProperties | undefined>; 1629 + tabindex?: Signalish<number | undefined>; 1630 + tabIndex?: Signalish<number | undefined>; 1631 + title?: Signalish<string | undefined>; 1632 + translate?: Signalish<boolean | undefined>; 1633 + 1634 + // WAI-ARIA Attributes 1635 + role?: Signalish<AriaRole | undefined>; 1636 + 1637 + // Non-standard Attributes 1638 + disablePictureInPicture?: Signalish<boolean | undefined>; 1639 + elementtiming?: Signalish<string | undefined>; 1640 + elementTiming?: Signalish<string | undefined>; 1641 + results?: Signalish<number | undefined>; 1642 + 1643 + // RDFa Attributes 1644 + about?: Signalish<string | undefined>; 1645 + datatype?: Signalish<string | undefined>; 1646 + inlist?: Signalish<any>; 1647 + prefix?: Signalish<string | undefined>; 1648 + property?: Signalish<string | undefined>; 1649 + resource?: Signalish<string | undefined>; 1650 + typeof?: Signalish<string | undefined>; 1651 + vocab?: Signalish<string | undefined>; 1652 + 1653 + // Microdata Attributes 1654 + itemid?: Signalish<string | undefined>; 1655 + itemID?: Signalish<string | undefined>; 1656 + itemprop?: Signalish<string | undefined>; 1657 + itemProp?: Signalish<string | undefined>; 1658 + itemref?: Signalish<string | undefined>; 1659 + itemRef?: Signalish<string | undefined>; 1660 + itemscope?: Signalish<boolean | undefined>; 1661 + itemScope?: Signalish<boolean | undefined>; 1662 + itemtype?: Signalish<string | undefined>; 1663 + itemType?: Signalish<string | undefined>; 1664 + } 1665 + 1666 + /** @deprecated Please import from the Preact namespace instead */ 1667 + type HTMLAttributeReferrerPolicy = 1668 + | '' 1669 + | 'no-referrer' 1670 + | 'no-referrer-when-downgrade' 1671 + | 'origin' 1672 + | 'origin-when-cross-origin' 1673 + | 'same-origin' 1674 + | 'strict-origin' 1675 + | 'strict-origin-when-cross-origin' 1676 + | 'unsafe-url'; 1677 + 1678 + /** @deprecated Please import from the Preact namespace instead */ 1679 + type HTMLAttributeAnchorTarget = 1680 + | '_self' 1681 + | '_blank' 1682 + | '_parent' 1683 + | '_top' 1684 + | (string & {}); 1685 + 1686 + /** @deprecated Please import from the Preact namespace instead */ 1687 + interface AnchorHTMLAttributes< 1688 + T extends EventTarget = HTMLAnchorElement 1689 + > extends HTMLAttributes<T> { 1690 + download?: Signalish<any>; 1691 + href?: Signalish<string | undefined>; 1692 + hreflang?: Signalish<string | undefined>; 1693 + hrefLang?: Signalish<string | undefined>; 1694 + media?: Signalish<string | undefined>; 1695 + ping?: Signalish<string | undefined>; 1696 + rel?: Signalish<string | undefined>; 1697 + target?: Signalish<HTMLAttributeAnchorTarget | undefined>; 1698 + type?: Signalish<string | undefined>; 1699 + referrerpolicy?: Signalish<HTMLAttributeReferrerPolicy | undefined>; 1700 + referrerPolicy?: Signalish<HTMLAttributeReferrerPolicy | undefined>; 1701 + } 1702 + 1703 + /** @deprecated Please import from the Preact namespace instead */ 1704 + interface AreaHTMLAttributes< 1705 + T extends EventTarget = HTMLAreaElement 1706 + > extends HTMLAttributes<T> { 1707 + alt?: Signalish<string | undefined>; 1708 + coords?: Signalish<string | undefined>; 1709 + download?: Signalish<any>; 1710 + href?: Signalish<string | undefined>; 1711 + hreflang?: Signalish<string | undefined>; 1712 + hrefLang?: Signalish<string | undefined>; 1713 + media?: Signalish<string | undefined>; 1714 + referrerpolicy?: Signalish<HTMLAttributeReferrerPolicy | undefined>; 1715 + referrerPolicy?: Signalish<HTMLAttributeReferrerPolicy | undefined>; 1716 + rel?: Signalish<string | undefined>; 1717 + shape?: Signalish<string | undefined>; 1718 + target?: Signalish<HTMLAttributeAnchorTarget | undefined>; 1719 + } 1720 + 1721 + /** @deprecated Please import from the Preact namespace instead */ 1722 + interface AudioHTMLAttributes< 1723 + T extends EventTarget = HTMLAudioElement 1724 + > extends MediaHTMLAttributes<T> {} 1725 + 1726 + /** @deprecated Please import from the Preact namespace instead */ 1727 + interface BaseHTMLAttributes< 1728 + T extends EventTarget = HTMLBaseElement 1729 + > extends HTMLAttributes<T> { 1730 + href?: Signalish<string | undefined>; 1731 + target?: Signalish<HTMLAttributeAnchorTarget | undefined>; 1732 + } 1733 + 1734 + /** @deprecated Please import from the Preact namespace instead */ 1735 + interface BlockquoteHTMLAttributes< 1736 + T extends EventTarget = HTMLQuoteElement 1737 + > extends HTMLAttributes<T> { 1738 + cite?: Signalish<string | undefined>; 1739 + } 1740 + 1741 + /** @deprecated Please import from the Preact namespace instead */ 1742 + interface ButtonHTMLAttributes< 1743 + T extends EventTarget = HTMLButtonElement 1744 + > extends HTMLAttributes<T> { 1745 + command?: Signalish<string | undefined>; 1746 + commandfor?: Signalish<string | undefined>; 1747 + commandFor?: Signalish<string | undefined>; 1748 + disabled?: Signalish<boolean | undefined>; 1749 + form?: Signalish<string | undefined>; 1750 + formaction?: Signalish<string | undefined>; 1751 + formAction?: Signalish<string | undefined>; 1752 + formenctype?: Signalish<string | undefined>; 1753 + formEncType?: Signalish<string | undefined>; 1754 + formmethod?: Signalish<string | undefined>; 1755 + formMethod?: Signalish<string | undefined>; 1756 + formnovalidate?: Signalish<boolean | undefined>; 1757 + formNoValidate?: Signalish<boolean | undefined>; 1758 + formtarget?: Signalish<string | undefined>; 1759 + formTarget?: Signalish<string | undefined>; 1760 + name?: Signalish<string | undefined>; 1761 + popovertarget?: Signalish<string | undefined>; 1762 + popoverTarget?: Signalish<string | undefined>; 1763 + popovertargetaction?: Signalish<'hide' | 'show' | 'toggle' | undefined>; 1764 + popoverTargetAction?: Signalish<'hide' | 'show' | 'toggle' | undefined>; 1765 + type?: Signalish<'submit' | 'reset' | 'button' | undefined>; 1766 + value?: Signalish<string | number | undefined>; 1767 + } 1768 + 1769 + /** @deprecated Please import from the Preact namespace instead */ 1770 + interface CanvasHTMLAttributes< 1771 + T extends EventTarget = HTMLCanvasElement 1772 + > extends HTMLAttributes<T> { 1773 + height?: Signalish<number | string | undefined>; 1774 + width?: Signalish<number | string | undefined>; 1775 + } 1776 + 1777 + /** @deprecated Please import from the Preact namespace instead */ 1778 + interface ColHTMLAttributes< 1779 + T extends EventTarget = HTMLTableColElement 1780 + > extends HTMLAttributes<T> { 1781 + span?: Signalish<number | undefined>; 1782 + width?: Signalish<number | string | undefined>; 1783 + } 1784 + 1785 + /** @deprecated Please import from the Preact namespace instead */ 1786 + interface ColgroupHTMLAttributes< 1787 + T extends EventTarget = HTMLTableColElement 1788 + > extends HTMLAttributes<T> { 1789 + span?: Signalish<number | undefined>; 1790 + } 1791 + 1792 + /** @deprecated Please import from the Preact namespace instead */ 1793 + interface DataHTMLAttributes< 1794 + T extends EventTarget = HTMLDataElement 1795 + > extends HTMLAttributes<T> { 1796 + value?: Signalish<string | number | undefined>; 1797 + } 1798 + 1799 + /** @deprecated Please import from the Preact namespace instead */ 1800 + interface DelHTMLAttributes< 1801 + T extends EventTarget = HTMLModElement 1802 + > extends HTMLAttributes<T> { 1803 + cite?: Signalish<string | undefined>; 1804 + datetime?: Signalish<string | undefined>; 1805 + dateTime?: Signalish<string | undefined>; 1806 + } 1807 + 1808 + /** @deprecated Please import from the Preact namespace instead */ 1809 + interface DetailsHTMLAttributes< 1810 + T extends EventTarget = HTMLDetailsElement 1811 + > extends HTMLAttributes<T> { 1812 + name?: Signalish<string | undefined>; 1813 + open?: Signalish<boolean | undefined>; 1814 + } 1815 + 1816 + /** @deprecated Please import from the Preact namespace instead */ 1817 + interface DialogHTMLAttributes< 1818 + T extends EventTarget = HTMLDialogElement 1819 + > extends HTMLAttributes<T> { 1820 + onCancel?: GenericEventHandler<T> | undefined; 1821 + onClose?: GenericEventHandler<T> | undefined; 1822 + open?: Signalish<boolean | undefined>; 1823 + closedby?: Signalish<'none' | 'closerequest' | 'any' | undefined>; 1824 + closedBy?: Signalish<'none' | 'closerequest' | 'any' | undefined>; 1825 + } 1826 + 1827 + /** @deprecated Please import from the Preact namespace instead */ 1828 + interface EmbedHTMLAttributes< 1829 + T extends EventTarget = HTMLEmbedElement 1830 + > extends HTMLAttributes<T> { 1831 + height?: Signalish<number | string | undefined>; 1832 + src?: Signalish<string | undefined>; 1833 + type?: Signalish<string | undefined>; 1834 + width?: Signalish<number | string | undefined>; 1835 + } 1836 + 1837 + /** @deprecated Please import from the Preact namespace instead */ 1838 + interface FieldsetHTMLAttributes< 1839 + T extends EventTarget = HTMLFieldSetElement 1840 + > extends HTMLAttributes<T> { 1841 + disabled?: Signalish<boolean | undefined>; 1842 + form?: Signalish<string | undefined>; 1843 + name?: Signalish<string | undefined>; 1844 + } 1845 + 1846 + /** @deprecated Please import from the Preact namespace instead */ 1847 + interface FormHTMLAttributes< 1848 + T extends EventTarget = HTMLFormElement 1849 + > extends HTMLAttributes<T> { 1850 + 'accept-charset'?: Signalish<string | undefined>; 1851 + acceptCharset?: Signalish<string | undefined>; 1852 + action?: Signalish<string | undefined>; 1853 + autocomplete?: Signalish<string | undefined>; 1854 + autoComplete?: Signalish<string | undefined>; 1855 + enctype?: Signalish<string | undefined>; 1856 + encType?: Signalish<string | undefined>; 1857 + method?: Signalish<string | undefined>; 1858 + name?: Signalish<string | undefined>; 1859 + novalidate?: Signalish<boolean | undefined>; 1860 + noValidate?: Signalish<boolean | undefined>; 1861 + rel?: Signalish<string | undefined>; 1862 + target?: Signalish<string | undefined>; 1863 + } 1864 + 1865 + /** @deprecated Please import from the Preact namespace instead */ 1866 + interface IframeHTMLAttributes< 1867 + T extends EventTarget = HTMLIFrameElement 1868 + > extends HTMLAttributes<T> { 1869 + allow?: Signalish<string | undefined>; 1870 + allowFullScreen?: Signalish<boolean | undefined>; 1871 + allowTransparency?: Signalish<boolean | undefined>; 1872 + /** @deprecated */ 1873 + frameborder?: Signalish<number | string | undefined>; 1874 + /** @deprecated */ 1875 + frameBorder?: Signalish<number | string | undefined>; 1876 + height?: Signalish<number | string | undefined>; 1877 + loading?: Signalish<'eager' | 'lazy' | undefined>; 1878 + /** @deprecated */ 1879 + marginHeight?: Signalish<number | undefined>; 1880 + /** @deprecated */ 1881 + marginWidth?: Signalish<number | undefined>; 1882 + name?: Signalish<string | undefined>; 1883 + referrerpolicy?: Signalish<HTMLAttributeReferrerPolicy | undefined>; 1884 + referrerPolicy?: Signalish<HTMLAttributeReferrerPolicy | undefined>; 1885 + sandbox?: Signalish<string | undefined>; 1886 + /** @deprecated */ 1887 + scrolling?: Signalish<string | undefined>; 1888 + seamless?: Signalish<boolean | undefined>; 1889 + src?: Signalish<string | undefined>; 1890 + srcdoc?: Signalish<string | undefined>; 1891 + srcDoc?: Signalish<string | undefined>; 1892 + width?: Signalish<number | string | undefined>; 1893 + } 1894 + 1895 + /** @deprecated Please import from the Preact namespace instead */ 1896 + type HTMLAttributeCrossOrigin = 'anonymous' | 'use-credentials'; 1897 + 1898 + /** @deprecated Please import from the Preact namespace instead */ 1899 + interface ImgHTMLAttributes< 1900 + T extends EventTarget = HTMLImageElement 1901 + > extends HTMLAttributes<T> { 1902 + alt?: Signalish<string | undefined>; 1903 + crossorigin?: Signalish<HTMLAttributeCrossOrigin>; 1904 + crossOrigin?: Signalish<HTMLAttributeCrossOrigin>; 1905 + decoding?: Signalish<'async' | 'auto' | 'sync' | undefined>; 1906 + fetchpriority?: Signalish<'high' | 'auto' | 'low' | undefined>; 1907 + fetchPriority?: Signalish<'high' | 'auto' | 'low' | undefined>; 1908 + height?: Signalish<number | string | undefined>; 1909 + loading?: Signalish<'eager' | 'lazy' | undefined>; 1910 + referrerpolicy?: Signalish<HTMLAttributeReferrerPolicy | undefined>; 1911 + referrerPolicy?: Signalish<HTMLAttributeReferrerPolicy | undefined>; 1912 + sizes?: Signalish<string | undefined>; 1913 + src?: Signalish<string | undefined>; 1914 + srcset?: Signalish<string | undefined>; 1915 + srcSet?: Signalish<string | undefined>; 1916 + usemap?: Signalish<string | undefined>; 1917 + useMap?: Signalish<string | undefined>; 1918 + width?: Signalish<number | string | undefined>; 1919 + } 1920 + 1921 + /** @deprecated Please import from the Preact namespace instead */ 1922 + type HTMLInputTypeAttribute = 1923 + | 'button' 1924 + | 'checkbox' 1925 + | 'color' 1926 + | 'date' 1927 + | 'datetime-local' 1928 + | 'email' 1929 + | 'file' 1930 + | 'hidden' 1931 + | 'image' 1932 + | 'month' 1933 + | 'number' 1934 + | 'password' 1935 + | 'radio' 1936 + | 'range' 1937 + | 'reset' 1938 + | 'search' 1939 + | 'submit' 1940 + | 'tel' 1941 + | 'text' 1942 + | 'time' 1943 + | 'url' 1944 + | 'week' 1945 + | (string & {}); 1946 + 1947 + /** @deprecated Please import from the Preact namespace instead */ 1948 + interface InputHTMLAttributes< 1949 + T extends EventTarget = HTMLInputElement 1950 + > extends HTMLAttributes<T> { 1951 + accept?: Signalish<string | undefined>; 1952 + alt?: Signalish<string | undefined>; 1953 + autocomplete?: Signalish<string | undefined>; 1954 + autoComplete?: Signalish<string | undefined>; 1955 + capture?: Signalish<'user' | 'environment' | undefined>; // https://www.w3.org/TR/html-media-capture/#the-capture-attribute 1956 + checked?: Signalish<boolean | undefined>; 1957 + defaultChecked?: Signalish<boolean | undefined>; 1958 + defaultValue?: Signalish<string | number | undefined>; 1959 + disabled?: Signalish<boolean | undefined>; 1960 + enterKeyHint?: Signalish< 1961 + | 'enter' 1962 + | 'done' 1963 + | 'go' 1964 + | 'next' 1965 + | 'previous' 1966 + | 'search' 1967 + | 'send' 1968 + | undefined 1969 + >; 1970 + form?: Signalish<string | undefined>; 1971 + formaction?: Signalish<string | undefined>; 1972 + formAction?: Signalish<string | undefined>; 1973 + formenctype?: Signalish<string | undefined>; 1974 + formEncType?: Signalish<string | undefined>; 1975 + formmethod?: Signalish<string | undefined>; 1976 + formMethod?: Signalish<string | undefined>; 1977 + formnovalidate?: Signalish<boolean | undefined>; 1978 + formNoValidate?: Signalish<boolean | undefined>; 1979 + formtarget?: Signalish<string | undefined>; 1980 + formTarget?: Signalish<string | undefined>; 1981 + height?: Signalish<number | string | undefined>; 1982 + indeterminate?: Signalish<boolean | undefined>; 1983 + list?: Signalish<string | undefined>; 1984 + max?: Signalish<number | string | undefined>; 1985 + maxlength?: Signalish<number | undefined>; 1986 + maxLength?: Signalish<number | undefined>; 1987 + min?: Signalish<number | string | undefined>; 1988 + minlength?: Signalish<number | undefined>; 1989 + minLength?: Signalish<number | undefined>; 1990 + multiple?: Signalish<boolean | undefined>; 1991 + name?: Signalish<string | undefined>; 1992 + pattern?: Signalish<string | undefined>; 1993 + placeholder?: Signalish<string | undefined>; 1994 + readonly?: Signalish<boolean | undefined>; 1995 + readOnly?: Signalish<boolean | undefined>; 1996 + required?: Signalish<boolean | undefined>; 1997 + size?: Signalish<number | undefined>; 1998 + src?: Signalish<string | undefined>; 1999 + step?: Signalish<number | string | undefined>; 2000 + type?: HTMLInputTypeAttribute | undefined; 2001 + value?: Signalish<string | number | undefined>; 2002 + width?: Signalish<number | string | undefined>; 2003 + onChange?: GenericEventHandler<T> | undefined; 2004 + } 2005 + 2006 + /** @deprecated Please import from the Preact namespace instead */ 2007 + interface InsHTMLAttributes< 2008 + T extends EventTarget = HTMLModElement 2009 + > extends HTMLAttributes<T> { 2010 + cite?: Signalish<string | undefined>; 2011 + datetime?: Signalish<string | undefined>; 2012 + dateTime?: Signalish<string | undefined>; 2013 + } 2014 + 2015 + /** @deprecated Please import from the Preact namespace instead */ 2016 + interface KeygenHTMLAttributes< 2017 + T extends EventTarget = HTMLUnknownElement 2018 + > extends HTMLAttributes<T> { 2019 + challenge?: Signalish<string | undefined>; 2020 + disabled?: Signalish<boolean | undefined>; 2021 + form?: Signalish<string | undefined>; 2022 + keyType?: Signalish<string | undefined>; 2023 + keyParams?: Signalish<string | undefined>; 2024 + name?: Signalish<string | undefined>; 2025 + } 2026 + 2027 + /** @deprecated Please import from the Preact namespace instead */ 2028 + interface LabelHTMLAttributes< 2029 + T extends EventTarget = HTMLLabelElement 2030 + > extends HTMLAttributes<T> { 2031 + for?: Signalish<string | undefined>; 2032 + form?: Signalish<string | undefined>; 2033 + htmlFor?: Signalish<string | undefined>; 2034 + } 2035 + 2036 + /** @deprecated Please import from the Preact namespace instead */ 2037 + interface LiHTMLAttributes< 2038 + T extends EventTarget = HTMLLIElement 2039 + > extends HTMLAttributes<T> { 2040 + value?: Signalish<string | number | undefined>; 2041 + } 2042 + 2043 + /** @deprecated Please import from the Preact namespace instead */ 2044 + interface LinkHTMLAttributes< 2045 + T extends EventTarget = HTMLLinkElement 2046 + > extends HTMLAttributes<T> { 2047 + as?: Signalish<string | undefined>; 2048 + crossorigin?: Signalish<HTMLAttributeCrossOrigin>; 2049 + crossOrigin?: Signalish<HTMLAttributeCrossOrigin>; 2050 + fetchpriority?: Signalish<'high' | 'low' | 'auto' | undefined>; 2051 + fetchPriority?: Signalish<'high' | 'low' | 'auto' | undefined>; 2052 + href?: Signalish<string | undefined>; 2053 + hreflang?: Signalish<string | undefined>; 2054 + hrefLang?: Signalish<string | undefined>; 2055 + integrity?: Signalish<string | undefined>; 2056 + media?: Signalish<string | undefined>; 2057 + imageSrcSet?: Signalish<string | undefined>; 2058 + referrerpolicy?: Signalish<HTMLAttributeReferrerPolicy | undefined>; 2059 + referrerPolicy?: Signalish<HTMLAttributeReferrerPolicy | undefined>; 2060 + rel?: Signalish<string | undefined>; 2061 + sizes?: Signalish<string | undefined>; 2062 + type?: Signalish<string | undefined>; 2063 + charset?: Signalish<string | undefined>; 2064 + charSet?: Signalish<string | undefined>; 2065 + } 2066 + 2067 + /** @deprecated Please import from the Preact namespace instead */ 2068 + interface MapHTMLAttributes< 2069 + T extends EventTarget = HTMLMapElement 2070 + > extends HTMLAttributes<T> { 2071 + name?: Signalish<string | undefined>; 2072 + } 2073 + 2074 + /** @deprecated Please import from the Preact namespace instead */ 2075 + interface MarqueeHTMLAttributes< 2076 + T extends EventTarget = HTMLMarqueeElement 2077 + > extends HTMLAttributes<T> { 2078 + behavior?: Signalish<'scroll' | 'slide' | 'alternate' | undefined>; 2079 + bgColor?: Signalish<string | undefined>; 2080 + direction?: Signalish<'left' | 'right' | 'up' | 'down' | undefined>; 2081 + height?: Signalish<number | string | undefined>; 2082 + hspace?: Signalish<number | string | undefined>; 2083 + loop?: Signalish<number | string | undefined>; 2084 + scrollAmount?: Signalish<number | string | undefined>; 2085 + scrollDelay?: Signalish<number | string | undefined>; 2086 + trueSpeed?: Signalish<boolean | undefined>; 2087 + vspace?: Signalish<number | string | undefined>; 2088 + width?: Signalish<number | string | undefined>; 2089 + } 2090 + 2091 + /** @deprecated Please import from the Preact namespace instead */ 2092 + interface MediaHTMLAttributes< 2093 + T extends EventTarget = HTMLMediaElement 2094 + > extends HTMLAttributes<T> { 2095 + autoplay?: Signalish<boolean | undefined>; 2096 + autoPlay?: Signalish<boolean | undefined>; 2097 + controls?: Signalish<boolean | undefined>; 2098 + controlslist?: Signalish<string | undefined>; 2099 + controlsList?: Signalish<string | undefined>; 2100 + crossorigin?: Signalish<HTMLAttributeCrossOrigin>; 2101 + crossOrigin?: Signalish<HTMLAttributeCrossOrigin>; 2102 + currentTime?: Signalish<number | undefined>; 2103 + defaultMuted?: Signalish<boolean | undefined>; 2104 + defaultPlaybackRate?: Signalish<number | undefined>; 2105 + disableremoteplayback?: Signalish<boolean | undefined>; 2106 + disableRemotePlayback?: Signalish<boolean | undefined>; 2107 + loop?: Signalish<boolean | undefined>; 2108 + mediaGroup?: Signalish<string | undefined>; 2109 + muted?: Signalish<boolean | undefined>; 2110 + playbackRate?: Signalish<number | undefined>; 2111 + preload?: Signalish<'auto' | 'metadata' | 'none' | undefined>; 2112 + preservesPitch?: Signalish<boolean | undefined>; 2113 + src?: Signalish<string | undefined>; 2114 + srcObject?: Signalish<MediaStream | MediaSource | Blob | File | null>; 2115 + volume?: Signalish<string | number | undefined>; 2116 + } 2117 + 2118 + /** @deprecated Please import from the Preact namespace instead */ 2119 + interface MenuHTMLAttributes< 2120 + T extends EventTarget = HTMLMenuElement 2121 + > extends HTMLAttributes<T> { 2122 + type?: Signalish<string | undefined>; 2123 + } 2124 + 2125 + /** @deprecated Please import from the Preact namespace instead */ 2126 + interface MetaHTMLAttributes< 2127 + T extends EventTarget = HTMLMetaElement 2128 + > extends HTMLAttributes<T> { 2129 + charset?: Signalish<string | undefined>; 2130 + charSet?: Signalish<string | undefined>; 2131 + content?: Signalish<string | undefined>; 2132 + 'http-equiv'?: Signalish<string | undefined>; 2133 + httpEquiv?: Signalish<string | undefined>; 2134 + name?: Signalish<string | undefined>; 2135 + media?: Signalish<string | undefined>; 2136 + } 2137 + 2138 + /** @deprecated Please import from the Preact namespace instead */ 2139 + interface MeterHTMLAttributes< 2140 + T extends EventTarget = HTMLMeterElement 2141 + > extends HTMLAttributes<T> { 2142 + form?: Signalish<string | undefined>; 2143 + high?: Signalish<number | undefined>; 2144 + low?: Signalish<number | undefined>; 2145 + max?: Signalish<number | string | undefined>; 2146 + min?: Signalish<number | string | undefined>; 2147 + optimum?: Signalish<number | undefined>; 2148 + value?: Signalish<string | number | undefined>; 2149 + } 2150 + 2151 + /** @deprecated Please import from the Preact namespace instead */ 2152 + interface ObjectHTMLAttributes< 2153 + T extends EventTarget = HTMLObjectElement 2154 + > extends HTMLAttributes<T> { 2155 + classID?: Signalish<string | undefined>; 2156 + data?: Signalish<string | undefined>; 2157 + form?: Signalish<string | undefined>; 2158 + height?: Signalish<number | string | undefined>; 2159 + name?: Signalish<string | undefined>; 2160 + type?: Signalish<string | undefined>; 2161 + usemap?: Signalish<string | undefined>; 2162 + useMap?: Signalish<string | undefined>; 2163 + width?: Signalish<number | string | undefined>; 2164 + wmode?: Signalish<string | undefined>; 2165 + } 2166 + 2167 + /** @deprecated Please import from the Preact namespace instead */ 2168 + interface OlHTMLAttributes< 2169 + T extends EventTarget = HTMLOListElement 2170 + > extends HTMLAttributes<T> { 2171 + reversed?: Signalish<boolean | undefined>; 2172 + start?: Signalish<number | undefined>; 2173 + type?: Signalish<'1' | 'a' | 'A' | 'i' | 'I' | undefined>; 2174 + } 2175 + 2176 + /** @deprecated Please import from the Preact namespace instead */ 2177 + interface OptgroupHTMLAttributes< 2178 + T extends EventTarget = HTMLOptGroupElement 2179 + > extends HTMLAttributes<T> { 2180 + disabled?: Signalish<boolean | undefined>; 2181 + label?: Signalish<string | undefined>; 2182 + } 2183 + 2184 + /** @deprecated Please import from the Preact namespace instead */ 2185 + interface OptionHTMLAttributes< 2186 + T extends EventTarget = HTMLOptionElement 2187 + > extends HTMLAttributes<T> { 2188 + disabled?: Signalish<boolean | undefined>; 2189 + label?: Signalish<string | undefined>; 2190 + selected?: Signalish<boolean | undefined>; 2191 + value?: Signalish<string | number | undefined>; 2192 + } 2193 + 2194 + /** @deprecated Please import from the Preact namespace instead */ 2195 + interface OutputHTMLAttributes< 2196 + T extends EventTarget = HTMLOutputElement 2197 + > extends HTMLAttributes<T> { 2198 + for?: Signalish<string | undefined>; 2199 + form?: Signalish<string | undefined>; 2200 + htmlFor?: Signalish<string | undefined>; 2201 + name?: Signalish<string | undefined>; 2202 + } 2203 + 2204 + /** @deprecated Please import from the Preact namespace instead */ 2205 + interface ParamHTMLAttributes< 2206 + T extends EventTarget = HTMLParamElement 2207 + > extends HTMLAttributes<T> { 2208 + name?: Signalish<string | undefined>; 2209 + value?: Signalish<string | number | undefined>; 2210 + } 2211 + 2212 + /** @deprecated Please import from the Preact namespace instead */ 2213 + interface ProgressHTMLAttributes< 2214 + T extends EventTarget = HTMLProgressElement 2215 + > extends HTMLAttributes<T> { 2216 + max?: Signalish<number | string | undefined>; 2217 + value?: Signalish<string | number | undefined>; 2218 + } 2219 + 2220 + /** @deprecated Please import from the Preact namespace instead */ 2221 + interface QuoteHTMLAttributes< 2222 + T extends EventTarget = HTMLQuoteElement 2223 + > extends HTMLAttributes<T> { 2224 + cite?: Signalish<string | undefined>; 2225 + } 2226 + 2227 + /** @deprecated Please import from the Preact namespace instead */ 2228 + interface ScriptHTMLAttributes< 2229 + T extends EventTarget = HTMLScriptElement 2230 + > extends HTMLAttributes<T> { 2231 + async?: Signalish<boolean | undefined>; 2232 + /** @deprecated */ 2233 + charset?: Signalish<string | undefined>; 2234 + /** @deprecated */ 2235 + charSet?: Signalish<string | undefined>; 2236 + crossorigin?: Signalish<HTMLAttributeCrossOrigin>; 2237 + crossOrigin?: Signalish<HTMLAttributeCrossOrigin>; 2238 + defer?: Signalish<boolean | undefined>; 2239 + integrity?: Signalish<string | undefined>; 2240 + nomodule?: Signalish<boolean | undefined>; 2241 + noModule?: Signalish<boolean | undefined>; 2242 + referrerpolicy?: Signalish<HTMLAttributeReferrerPolicy | undefined>; 2243 + referrerPolicy?: Signalish<HTMLAttributeReferrerPolicy | undefined>; 2244 + src?: Signalish<string | undefined>; 2245 + type?: Signalish<string | undefined>; 2246 + } 2247 + 2248 + /** @deprecated Please import from the Preact namespace instead */ 2249 + interface SelectHTMLAttributes< 2250 + T extends EventTarget = HTMLSelectElement 2251 + > extends HTMLAttributes<T> { 2252 + autocomplete?: Signalish<string | undefined>; 2253 + autoComplete?: Signalish<string | undefined>; 2254 + defaultValue?: Signalish<string | number | undefined>; 2255 + disabled?: Signalish<boolean | undefined>; 2256 + form?: Signalish<string | undefined>; 2257 + multiple?: Signalish<boolean | undefined>; 2258 + name?: Signalish<string | undefined>; 2259 + required?: Signalish<boolean | undefined>; 2260 + size?: Signalish<number | undefined>; 2261 + value?: Signalish<string | number | undefined>; 2262 + onChange?: GenericEventHandler<T> | undefined; 2263 + } 2264 + 2265 + /** @deprecated Please import from the Preact namespace instead */ 2266 + interface SlotHTMLAttributes< 2267 + T extends EventTarget = HTMLSlotElement 2268 + > extends HTMLAttributes<T> { 2269 + name?: Signalish<string | undefined>; 2270 + } 2271 + 2272 + /** @deprecated Please import from the Preact namespace instead */ 2273 + interface SourceHTMLAttributes< 2274 + T extends EventTarget = HTMLSourceElement 2275 + > extends HTMLAttributes<T> { 2276 + height?: Signalish<number | string | undefined>; 2277 + media?: Signalish<string | undefined>; 2278 + sizes?: Signalish<string | undefined>; 2279 + src?: Signalish<string | undefined>; 2280 + srcset?: Signalish<string | undefined>; 2281 + srcSet?: Signalish<string | undefined>; 2282 + type?: Signalish<string | undefined>; 2283 + width?: Signalish<number | string | undefined>; 2284 + } 2285 + 2286 + /** @deprecated Please import from the Preact namespace instead */ 2287 + interface StyleHTMLAttributes< 2288 + T extends EventTarget = HTMLStyleElement 2289 + > extends HTMLAttributes<T> { 2290 + media?: Signalish<string | undefined>; 2291 + scoped?: Signalish<boolean | undefined>; 2292 + type?: Signalish<string | undefined>; 2293 + } 2294 + 2295 + /** @deprecated Please import from the Preact namespace instead */ 2296 + interface TableHTMLAttributes< 2297 + T extends EventTarget = HTMLTableElement 2298 + > extends HTMLAttributes<T> { 2299 + cellPadding?: Signalish<string | undefined>; 2300 + cellSpacing?: Signalish<string | undefined>; 2301 + summary?: Signalish<string | undefined>; 2302 + width?: Signalish<number | string | undefined>; 2303 + } 2304 + 2305 + /** @deprecated Please import from the Preact namespace instead */ 2306 + interface TdHTMLAttributes< 2307 + T extends EventTarget = HTMLTableCellElement 2308 + > extends HTMLAttributes<T> { 2309 + align?: Signalish< 2310 + 'left' | 'center' | 'right' | 'justify' | 'char' | undefined 2311 + >; 2312 + colspan?: Signalish<number | undefined>; 2313 + colSpan?: Signalish<number | undefined>; 2314 + headers?: Signalish<string | undefined>; 2315 + rowspan?: Signalish<number | undefined>; 2316 + rowSpan?: Signalish<number | undefined>; 2317 + scope?: Signalish<string | undefined>; 2318 + abbr?: Signalish<string | undefined>; 2319 + height?: Signalish<number | string | undefined>; 2320 + width?: Signalish<number | string | undefined>; 2321 + valign?: Signalish<'top' | 'middle' | 'bottom' | 'baseline' | undefined>; 2322 + } 2323 + 2324 + /** @deprecated Please import from the Preact namespace instead */ 2325 + interface TextareaHTMLAttributes< 2326 + T extends EventTarget = HTMLTextAreaElement 2327 + > extends HTMLAttributes<T> { 2328 + autocomplete?: Signalish<string | undefined>; 2329 + autoComplete?: Signalish<string | undefined>; 2330 + cols?: Signalish<number | undefined>; 2331 + defaultValue?: Signalish<string | number | undefined>; 2332 + dirName?: Signalish<string | undefined>; 2333 + disabled?: Signalish<boolean | undefined>; 2334 + form?: Signalish<string | undefined>; 2335 + maxlength?: Signalish<number | undefined>; 2336 + maxLength?: Signalish<number | undefined>; 2337 + minlength?: Signalish<number | undefined>; 2338 + minLength?: Signalish<number | undefined>; 2339 + name?: Signalish<string | undefined>; 2340 + placeholder?: Signalish<string | undefined>; 2341 + readOnly?: Signalish<boolean | undefined>; 2342 + required?: Signalish<boolean | undefined>; 2343 + rows?: Signalish<number | undefined>; 2344 + value?: Signalish<string | number | undefined>; 2345 + wrap?: Signalish<string | undefined>; 2346 + onChange?: GenericEventHandler<T> | undefined; 2347 + } 2348 + 2349 + /** @deprecated Please import from the Preact namespace instead */ 2350 + interface ThHTMLAttributes< 2351 + T extends EventTarget = HTMLTableCellElement 2352 + > extends HTMLAttributes<T> { 2353 + align?: Signalish< 2354 + 'left' | 'center' | 'right' | 'justify' | 'char' | undefined 2355 + >; 2356 + colspan?: Signalish<number | undefined>; 2357 + colSpan?: Signalish<number | undefined>; 2358 + headers?: Signalish<string | undefined>; 2359 + rowspan?: Signalish<number | undefined>; 2360 + rowSpan?: Signalish<number | undefined>; 2361 + scope?: Signalish<string | undefined>; 2362 + abbr?: Signalish<string | undefined>; 2363 + } 2364 + 2365 + /** @deprecated Please import from the Preact namespace instead */ 2366 + interface TimeHTMLAttributes< 2367 + T extends EventTarget = HTMLTimeElement 2368 + > extends HTMLAttributes<T> { 2369 + datetime?: Signalish<string | undefined>; 2370 + dateTime?: Signalish<string | undefined>; 2371 + } 2372 + 2373 + /** @deprecated Please import from the Preact namespace instead */ 2374 + interface TrackHTMLAttributes< 2375 + T extends EventTarget = HTMLTrackElement 2376 + > extends MediaHTMLAttributes<T> { 2377 + default?: Signalish<boolean | undefined>; 2378 + kind?: Signalish<string | undefined>; 2379 + label?: Signalish<string | undefined>; 2380 + srclang?: Signalish<string | undefined>; 2381 + srcLang?: Signalish<string | undefined>; 2382 + } 2383 + 2384 + /** @deprecated Please import from the Preact namespace instead */ 2385 + interface VideoHTMLAttributes< 2386 + T extends EventTarget = HTMLVideoElement 2387 + > extends MediaHTMLAttributes<T> { 2388 + disablePictureInPicture?: Signalish<boolean | undefined>; 2389 + height?: Signalish<number | string | undefined>; 2390 + playsinline?: Signalish<boolean | undefined>; 2391 + playsInline?: Signalish<boolean | undefined>; 2392 + poster?: Signalish<string | undefined>; 2393 + width?: Signalish<number | string | undefined>; 2394 + } 2395 + 2396 + /** @deprecated Please import from the Preact namespace instead */ 2397 + export type DetailedHTMLProps< 2398 + HA extends HTMLAttributes<RefType>, 2399 + RefType extends EventTarget = EventTarget 2400 + > = HA; 2401 + 2402 + /** @deprecated Please import from the Preact namespace instead */ 2403 + export interface MathMLAttributes< 2404 + Target extends EventTarget = MathMLElement 2405 + > extends HTMLAttributes<Target> { 2406 + dir?: Signalish<'ltr' | 'rtl' | undefined>; 2407 + displaystyle?: Signalish<boolean | undefined>; 2408 + /** @deprecated This feature is non-standard. See https://developer.mozilla.org/en-US/docs/Web/MathML/Global_attributes/href */ 2409 + href?: Signalish<string | undefined>; 2410 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Global_attributes/mathbackground */ 2411 + mathbackground?: Signalish<string | undefined>; 2412 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Global_attributes/mathcolor */ 2413 + mathcolor?: Signalish<string | undefined>; 2414 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Global_attributes/mathsize */ 2415 + mathsize?: Signalish<string | undefined>; 2416 + nonce?: Signalish<string | undefined>; 2417 + scriptlevel?: Signalish<string | undefined>; 2418 + } 2419 + 2420 + /** @deprecated Please import from the Preact namespace instead */ 2421 + export interface AnnotationMathMLAttributes< 2422 + T extends EventTarget 2423 + > extends MathMLAttributes<T> { 2424 + encoding?: Signalish<string | undefined>; 2425 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/semantics#src */ 2426 + src?: Signalish<string | undefined>; 2427 + } 2428 + 2429 + /** @deprecated Please import from the Preact namespace instead */ 2430 + export interface AnnotationXmlMathMLAttributes< 2431 + T extends EventTarget 2432 + > extends MathMLAttributes<T> { 2433 + encoding?: Signalish<string | undefined>; 2434 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/semantics#src */ 2435 + src?: Signalish<string | undefined>; 2436 + } 2437 + 2438 + /** @deprecated Please import from the Preact namespace instead */ 2439 + export interface MActionMathMLAttributes< 2440 + T extends EventTarget 2441 + > extends MathMLAttributes<T> { 2442 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/maction#actiontype */ 2443 + actiontype?: Signalish<'statusline' | 'toggle' | undefined>; 2444 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/maction#selection */ 2445 + selection?: Signalish<string | undefined>; 2446 + } 2447 + 2448 + /** @deprecated Please import from the Preact namespace instead */ 2449 + export interface MathMathMLAttributes< 2450 + T extends EventTarget 2451 + > extends MathMLAttributes<T> { 2452 + display?: Signalish<'block' | 'inline' | undefined>; 2453 + } 2454 + 2455 + /** @deprecated Please import from the Preact namespace instead */ 2456 + export interface MEncloseMathMLAttributes< 2457 + T extends EventTarget 2458 + > extends MathMLAttributes<T> { 2459 + notation?: Signalish<string | undefined>; 2460 + } 2461 + 2462 + /** @deprecated Please import from the Preact namespace instead */ 2463 + export interface MErrorMathMLAttributes< 2464 + T extends EventTarget 2465 + > extends MathMLAttributes<T> {} 2466 + 2467 + /** @deprecated Please import from the Preact namespace instead */ 2468 + export interface MFencedMathMLAttributes< 2469 + T extends EventTarget 2470 + > extends MathMLAttributes<T> { 2471 + close?: Signalish<string | undefined>; 2472 + open?: Signalish<string | undefined>; 2473 + separators?: Signalish<string | undefined>; 2474 + } 2475 + 2476 + /** @deprecated Please import from the Preact namespace instead */ 2477 + export interface MFracMathMLAttributes< 2478 + T extends EventTarget 2479 + > extends MathMLAttributes<T> { 2480 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mfrac#denomalign */ 2481 + denomalign?: Signalish<'center' | 'left' | 'right' | undefined>; 2482 + linethickness?: Signalish<string | undefined>; 2483 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mfrac#numalign */ 2484 + numalign?: Signalish<'center' | 'left' | 'right' | undefined>; 2485 + } 2486 + 2487 + /** @deprecated Please import from the Preact namespace instead */ 2488 + export interface MiMathMLAttributes< 2489 + T extends EventTarget 2490 + > extends MathMLAttributes<T> { 2491 + /** The only value allowed in the current specification is normal (case insensitive) 2492 + * See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mi#mathvariant */ 2493 + mathvariant?: Signalish< 2494 + | 'normal' 2495 + | 'bold' 2496 + | 'italic' 2497 + | 'bold-italic' 2498 + | 'double-struck' 2499 + | 'bold-fraktur' 2500 + | 'script' 2501 + | 'bold-script' 2502 + | 'fraktur' 2503 + | 'sans-serif' 2504 + | 'bold-sans-serif' 2505 + | 'sans-serif-italic' 2506 + | 'sans-serif-bold-italic' 2507 + | 'monospace' 2508 + | 'initial' 2509 + | 'tailed' 2510 + | 'looped' 2511 + | 'stretched' 2512 + | undefined 2513 + >; 2514 + } 2515 + 2516 + /** @deprecated Please import from the Preact namespace instead */ 2517 + export interface MmultiScriptsMathMLAttributes< 2518 + T extends EventTarget 2519 + > extends MathMLAttributes<T> { 2520 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mmultiscripts#subscriptshift */ 2521 + subscriptshift?: Signalish<string | undefined>; 2522 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mmultiscripts#superscriptshift */ 2523 + superscriptshift?: Signalish<string | undefined>; 2524 + } 2525 + 2526 + /** @deprecated Please import from the Preact namespace instead */ 2527 + export interface MNMathMLAttributes< 2528 + T extends EventTarget 2529 + > extends MathMLAttributes<T> {} 2530 + 2531 + /** @deprecated Please import from the Preact namespace instead */ 2532 + export interface MOMathMLAttributes< 2533 + T extends EventTarget 2534 + > extends MathMLAttributes<T> { 2535 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mo#accent */ 2536 + accent?: Signalish<boolean | undefined>; 2537 + fence?: Signalish<boolean | undefined>; 2538 + largeop?: Signalish<boolean | undefined>; 2539 + lspace?: Signalish<string | undefined>; 2540 + maxsize?: Signalish<string | undefined>; 2541 + minsize?: Signalish<string | undefined>; 2542 + movablelimits?: Signalish<boolean | undefined>; 2543 + rspace?: Signalish<string | undefined>; 2544 + separator?: Signalish<boolean | undefined>; 2545 + stretchy?: Signalish<boolean | undefined>; 2546 + symmetric?: Signalish<boolean | undefined>; 2547 + } 2548 + 2549 + /** @deprecated Please import from the Preact namespace instead */ 2550 + export interface MOverMathMLAttributes< 2551 + T extends EventTarget 2552 + > extends MathMLAttributes<T> { 2553 + accent?: Signalish<boolean | undefined>; 2554 + } 2555 + 2556 + /** @deprecated Please import from the Preact namespace instead */ 2557 + export interface MPaddedMathMLAttributes< 2558 + T extends EventTarget 2559 + > extends MathMLAttributes<T> { 2560 + depth?: Signalish<string | undefined>; 2561 + height?: Signalish<string | undefined>; 2562 + lspace?: Signalish<string | undefined>; 2563 + voffset?: Signalish<string | undefined>; 2564 + width?: Signalish<string | undefined>; 2565 + } 2566 + 2567 + /** @deprecated Please import from the Preact namespace instead */ 2568 + export interface MPhantomMathMLAttributes< 2569 + T extends EventTarget 2570 + > extends MathMLAttributes<T> {} 2571 + 2572 + /** @deprecated Please import from the Preact namespace instead */ 2573 + export interface MPrescriptsMathMLAttributes< 2574 + T extends EventTarget 2575 + > extends MathMLAttributes<T> {} 2576 + 2577 + /** @deprecated Please import from the Preact namespace instead */ 2578 + export interface MRootMathMLAttributes< 2579 + T extends EventTarget 2580 + > extends MathMLAttributes<T> {} 2581 + 2582 + /** @deprecated Please import from the Preact namespace instead */ 2583 + export interface MRowMathMLAttributes< 2584 + T extends EventTarget 2585 + > extends MathMLAttributes<T> {} 2586 + 2587 + /** @deprecated Please import from the Preact namespace instead */ 2588 + export interface MSMathMLAttributes< 2589 + T extends EventTarget 2590 + > extends MathMLAttributes<T> { 2591 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/ms#browser_compatibility */ 2592 + lquote?: Signalish<string | undefined>; 2593 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/ms#browser_compatibility */ 2594 + rquote?: Signalish<string | undefined>; 2595 + } 2596 + 2597 + /** @deprecated Please import from the Preact namespace instead */ 2598 + export interface MSpaceMathMLAttributes< 2599 + T extends EventTarget 2600 + > extends MathMLAttributes<T> { 2601 + depth?: Signalish<string | undefined>; 2602 + height?: Signalish<string | undefined>; 2603 + width?: Signalish<string | undefined>; 2604 + } 2605 + 2606 + /** @deprecated Please import from the Preact namespace instead */ 2607 + export interface MSqrtMathMLAttributes< 2608 + T extends EventTarget 2609 + > extends MathMLAttributes<T> {} 2610 + 2611 + /** @deprecated Please import from the Preact namespace instead */ 2612 + export interface MStyleMathMLAttributes< 2613 + T extends EventTarget 2614 + > extends MathMLAttributes<T> { 2615 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mstyle#background */ 2616 + background?: Signalish<string | undefined>; 2617 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mstyle#color */ 2618 + color?: Signalish<string | undefined>; 2619 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mstyle#fontsize */ 2620 + fontsize?: Signalish<string | undefined>; 2621 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mstyle#fontstyle */ 2622 + fontstyle?: Signalish<string | undefined>; 2623 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mstyle#fontweight */ 2624 + fontweight?: Signalish<string | undefined>; 2625 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mstyle#scriptminsize */ 2626 + scriptminsize?: Signalish<string | undefined>; 2627 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mstyle#scriptsizemultiplier */ 2628 + scriptsizemultiplier?: Signalish<string | undefined>; 2629 + } 2630 + 2631 + /** @deprecated Please import from the Preact namespace instead */ 2632 + export interface MSubMathMLAttributes< 2633 + T extends EventTarget 2634 + > extends MathMLAttributes<T> { 2635 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/msub#subscriptshift */ 2636 + subscriptshift?: Signalish<string | undefined>; 2637 + } 2638 + 2639 + /** @deprecated Please import from the Preact namespace instead */ 2640 + export interface MSubsupMathMLAttributes< 2641 + T extends EventTarget 2642 + > extends MathMLAttributes<T> { 2643 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/msubsup#subscriptshift */ 2644 + subscriptshift?: Signalish<string | undefined>; 2645 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/msubsup#superscriptshift */ 2646 + superscriptshift?: Signalish<string | undefined>; 2647 + } 2648 + 2649 + /** @deprecated Please import from the Preact namespace instead */ 2650 + export interface MSupMathMLAttributes< 2651 + T extends EventTarget 2652 + > extends MathMLAttributes<T> { 2653 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/msup#superscriptshift */ 2654 + superscriptshift?: Signalish<string | undefined>; 2655 + } 2656 + 2657 + /** @deprecated Please import from the Preact namespace instead */ 2658 + export interface MTableMathMLAttributes< 2659 + T extends EventTarget 2660 + > extends MathMLAttributes<T> { 2661 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#align */ 2662 + align?: Signalish< 2663 + 'axis' | 'baseline' | 'bottom' | 'center' | 'top' | undefined 2664 + >; 2665 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#columnalign */ 2666 + columnalign?: Signalish<'center' | 'left' | 'right' | undefined>; 2667 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#columnlines */ 2668 + columnlines?: Signalish<'dashed' | 'none' | 'solid' | undefined>; 2669 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#columnspacing */ 2670 + columnspacing?: Signalish<string | undefined>; 2671 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#frame */ 2672 + frame?: Signalish<'dashed' | 'none' | 'solid' | undefined>; 2673 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#framespacing */ 2674 + framespacing?: Signalish<string | undefined>; 2675 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#rowalign */ 2676 + rowalign?: Signalish< 2677 + 'axis' | 'baseline' | 'bottom' | 'center' | 'top' | undefined 2678 + >; 2679 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#rowlines */ 2680 + rowlines?: Signalish<'dashed' | 'none' | 'solid' | undefined>; 2681 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#rowspacing */ 2682 + rowspacing?: Signalish<string | undefined>; 2683 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#width */ 2684 + width?: Signalish<string | undefined>; 2685 + } 2686 + 2687 + /** @deprecated Please import from the Preact namespace instead */ 2688 + export interface MTdMathMLAttributes< 2689 + T extends EventTarget 2690 + > extends MathMLAttributes<T> { 2691 + columnspan?: Signalish<number | undefined>; 2692 + rowspan?: Signalish<number | undefined>; 2693 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtd#columnalign */ 2694 + columnalign?: Signalish<'center' | 'left' | 'right' | undefined>; 2695 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtd#rowalign */ 2696 + rowalign?: Signalish< 2697 + 'axis' | 'baseline' | 'bottom' | 'center' | 'top' | undefined 2698 + >; 2699 + } 2700 + 2701 + /** @deprecated Please import from the Preact namespace instead */ 2702 + export interface MTextMathMLAttributes< 2703 + T extends EventTarget 2704 + > extends MathMLAttributes<T> {} 2705 + 2706 + /** @deprecated Please import from the Preact namespace instead */ 2707 + export interface MTrMathMLAttributes< 2708 + T extends EventTarget 2709 + > extends MathMLAttributes<T> { 2710 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtr#columnalign */ 2711 + columnalign?: Signalish<'center' | 'left' | 'right' | undefined>; 2712 + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtr#rowalign */ 2713 + rowalign?: Signalish< 2714 + 'axis' | 'baseline' | 'bottom' | 'center' | 'top' | undefined 2715 + >; 2716 + } 2717 + 2718 + /** @deprecated Please import from the Preact namespace instead */ 2719 + export interface MUnderMathMLAttributes< 2720 + T extends EventTarget 2721 + > extends MathMLAttributes<T> { 2722 + accentunder?: Signalish<boolean | undefined>; 2723 + } 2724 + 2725 + /** @deprecated Please import from the Preact namespace instead */ 2726 + export interface MUnderoverMathMLAttributes< 2727 + T extends EventTarget 2728 + > extends MathMLAttributes<T> { 2729 + accent?: Signalish<boolean | undefined>; 2730 + accentunder?: Signalish<boolean | undefined>; 2731 + } 2732 + 2733 + /** @deprecated Please import from the Preact namespace instead */ 2734 + export interface SemanticsMathMLAttributes< 2735 + T extends EventTarget 2736 + > extends MathMLAttributes<T> {} 2737 + 2738 + export interface IntrinsicSVGElements { 2739 + svg: SVGAttributes<SVGSVGElement>; 2740 + animate: SVGAttributes<SVGAnimateElement>; 2741 + circle: SVGAttributes<SVGCircleElement>; 2742 + animateMotion: SVGAttributes<SVGAnimateMotionElement>; 2743 + animateTransform: SVGAttributes<SVGAnimateTransformElement>; 2744 + clipPath: SVGAttributes<SVGClipPathElement>; 2745 + defs: SVGAttributes<SVGDefsElement>; 2746 + desc: SVGAttributes<SVGDescElement>; 2747 + ellipse: SVGAttributes<SVGEllipseElement>; 2748 + feBlend: SVGAttributes<SVGFEBlendElement>; 2749 + feColorMatrix: SVGAttributes<SVGFEColorMatrixElement>; 2750 + feComponentTransfer: SVGAttributes<SVGFEComponentTransferElement>; 2751 + feComposite: SVGAttributes<SVGFECompositeElement>; 2752 + feConvolveMatrix: SVGAttributes<SVGFEConvolveMatrixElement>; 2753 + feDiffuseLighting: SVGAttributes<SVGFEDiffuseLightingElement>; 2754 + feDisplacementMap: SVGAttributes<SVGFEDisplacementMapElement>; 2755 + feDistantLight: SVGAttributes<SVGFEDistantLightElement>; 2756 + feDropShadow: SVGAttributes<SVGFEDropShadowElement>; 2757 + feFlood: SVGAttributes<SVGFEFloodElement>; 2758 + feFuncA: SVGAttributes<SVGFEFuncAElement>; 2759 + feFuncB: SVGAttributes<SVGFEFuncBElement>; 2760 + feFuncG: SVGAttributes<SVGFEFuncGElement>; 2761 + feFuncR: SVGAttributes<SVGFEFuncRElement>; 2762 + feGaussianBlur: SVGAttributes<SVGFEGaussianBlurElement>; 2763 + feImage: SVGAttributes<SVGFEImageElement>; 2764 + feMerge: SVGAttributes<SVGFEMergeElement>; 2765 + feMergeNode: SVGAttributes<SVGFEMergeNodeElement>; 2766 + feMorphology: SVGAttributes<SVGFEMorphologyElement>; 2767 + feOffset: SVGAttributes<SVGFEOffsetElement>; 2768 + fePointLight: SVGAttributes<SVGFEPointLightElement>; 2769 + feSpecularLighting: SVGAttributes<SVGFESpecularLightingElement>; 2770 + feSpotLight: SVGAttributes<SVGFESpotLightElement>; 2771 + feTile: SVGAttributes<SVGFETileElement>; 2772 + feTurbulence: SVGAttributes<SVGFETurbulenceElement>; 2773 + filter: SVGAttributes<SVGFilterElement>; 2774 + foreignObject: SVGAttributes<SVGForeignObjectElement>; 2775 + g: SVGAttributes<SVGGElement>; 2776 + image: SVGAttributes<SVGImageElement>; 2777 + line: SVGAttributes<SVGLineElement>; 2778 + linearGradient: SVGAttributes<SVGLinearGradientElement>; 2779 + marker: SVGAttributes<SVGMarkerElement>; 2780 + mask: SVGAttributes<SVGMaskElement>; 2781 + metadata: SVGAttributes<SVGMetadataElement>; 2782 + mpath: SVGAttributes<SVGMPathElement>; 2783 + path: SVGAttributes<SVGPathElement>; 2784 + pattern: SVGAttributes<SVGPatternElement>; 2785 + polygon: SVGAttributes<SVGPolygonElement>; 2786 + polyline: SVGAttributes<SVGPolylineElement>; 2787 + radialGradient: SVGAttributes<SVGRadialGradientElement>; 2788 + rect: SVGAttributes<SVGRectElement>; 2789 + set: SVGAttributes<SVGSetElement>; 2790 + stop: SVGAttributes<SVGStopElement>; 2791 + switch: SVGAttributes<SVGSwitchElement>; 2792 + symbol: SVGAttributes<SVGSymbolElement>; 2793 + text: SVGAttributes<SVGTextElement>; 2794 + textPath: SVGAttributes<SVGTextPathElement>; 2795 + tspan: SVGAttributes<SVGTSpanElement>; 2796 + use: SVGAttributes<SVGUseElement>; 2797 + view: SVGAttributes<SVGViewElement>; 2798 + } 2799 + 2800 + export interface IntrinsicMathMLElements { 2801 + annotation: AnnotationMathMLAttributes<MathMLElement>; 2802 + 'annotation-xml': AnnotationXmlMathMLAttributes<MathMLElement>; 2803 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/maction */ 2804 + maction: MActionMathMLAttributes<MathMLElement>; 2805 + math: MathMathMLAttributes<MathMLElement>; 2806 + /** This feature is non-standard. See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/menclose */ 2807 + menclose: MEncloseMathMLAttributes<MathMLElement>; 2808 + merror: MErrorMathMLAttributes<MathMLElement>; 2809 + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mfenced */ 2810 + mfenced: MFencedMathMLAttributes<MathMLElement>; 2811 + mfrac: MFracMathMLAttributes<MathMLElement>; 2812 + mi: MiMathMLAttributes<MathMLElement>; 2813 + mmultiscripts: MmultiScriptsMathMLAttributes<MathMLElement>; 2814 + mn: MNMathMLAttributes<MathMLElement>; 2815 + mo: MOMathMLAttributes<MathMLElement>; 2816 + mover: MOverMathMLAttributes<MathMLElement>; 2817 + mpadded: MPaddedMathMLAttributes<MathMLElement>; 2818 + mphantom: MPhantomMathMLAttributes<MathMLElement>; 2819 + mprescripts: MPrescriptsMathMLAttributes<MathMLElement>; 2820 + mroot: MRootMathMLAttributes<MathMLElement>; 2821 + mrow: MRowMathMLAttributes<MathMLElement>; 2822 + ms: MSMathMLAttributes<MathMLElement>; 2823 + mspace: MSpaceMathMLAttributes<MathMLElement>; 2824 + msqrt: MSqrtMathMLAttributes<MathMLElement>; 2825 + mstyle: MStyleMathMLAttributes<MathMLElement>; 2826 + msub: MSubMathMLAttributes<MathMLElement>; 2827 + msubsup: MSubsupMathMLAttributes<MathMLElement>; 2828 + msup: MSupMathMLAttributes<MathMLElement>; 2829 + mtable: MTableMathMLAttributes<MathMLElement>; 2830 + mtd: MTdMathMLAttributes<MathMLElement>; 2831 + mtext: MTextMathMLAttributes<MathMLElement>; 2832 + mtr: MTrMathMLAttributes<MathMLElement>; 2833 + munder: MUnderMathMLAttributes<MathMLElement>; 2834 + munderover: MUnderMathMLAttributes<MathMLElement>; 2835 + semantics: SemanticsMathMLAttributes<MathMLElement>; 2836 + } 2837 + 2838 + export interface IntrinsicElements 2839 + extends IntrinsicSVGElements, IntrinsicMathMLElements { 2840 + a: AnchorHTMLAttributes<HTMLAnchorElement>; 2841 + abbr: HTMLAttributes<HTMLElement>; 2842 + address: HTMLAttributes<HTMLElement>; 2843 + area: AreaHTMLAttributes<HTMLAreaElement>; 2844 + article: HTMLAttributes<HTMLElement>; 2845 + aside: HTMLAttributes<HTMLElement>; 2846 + audio: AudioHTMLAttributes<HTMLAudioElement>; 2847 + b: HTMLAttributes<HTMLElement>; 2848 + base: BaseHTMLAttributes<HTMLBaseElement>; 2849 + bdi: HTMLAttributes<HTMLElement>; 2850 + bdo: HTMLAttributes<HTMLElement>; 2851 + big: HTMLAttributes<HTMLElement>; 2852 + blockquote: BlockquoteHTMLAttributes<HTMLQuoteElement>; 2853 + body: HTMLAttributes<HTMLBodyElement>; 2854 + br: HTMLAttributes<HTMLBRElement>; 2855 + button: ButtonHTMLAttributes<HTMLButtonElement>; 2856 + canvas: CanvasHTMLAttributes<HTMLCanvasElement>; 2857 + caption: HTMLAttributes<HTMLTableCaptionElement>; 2858 + cite: HTMLAttributes<HTMLElement>; 2859 + code: HTMLAttributes<HTMLElement>; 2860 + col: ColHTMLAttributes<HTMLTableColElement>; 2861 + colgroup: ColgroupHTMLAttributes<HTMLTableColElement>; 2862 + data: DataHTMLAttributes<HTMLDataElement>; 2863 + datalist: HTMLAttributes<HTMLDataListElement>; 2864 + dd: HTMLAttributes<HTMLElement>; 2865 + del: DelHTMLAttributes<HTMLModElement>; 2866 + details: DetailsHTMLAttributes<HTMLDetailsElement>; 2867 + dfn: HTMLAttributes<HTMLElement>; 2868 + dialog: DialogHTMLAttributes<HTMLDialogElement>; 2869 + div: HTMLAttributes<HTMLDivElement>; 2870 + dl: HTMLAttributes<HTMLDListElement>; 2871 + dt: HTMLAttributes<HTMLElement>; 2872 + em: HTMLAttributes<HTMLElement>; 2873 + embed: EmbedHTMLAttributes<HTMLEmbedElement>; 2874 + fieldset: FieldsetHTMLAttributes<HTMLFieldSetElement>; 2875 + figcaption: HTMLAttributes<HTMLElement>; 2876 + figure: HTMLAttributes<HTMLElement>; 2877 + footer: HTMLAttributes<HTMLElement>; 2878 + form: FormHTMLAttributes<HTMLFormElement>; 2879 + h1: HTMLAttributes<HTMLHeadingElement>; 2880 + h2: HTMLAttributes<HTMLHeadingElement>; 2881 + h3: HTMLAttributes<HTMLHeadingElement>; 2882 + h4: HTMLAttributes<HTMLHeadingElement>; 2883 + h5: HTMLAttributes<HTMLHeadingElement>; 2884 + h6: HTMLAttributes<HTMLHeadingElement>; 2885 + head: HTMLAttributes<HTMLHeadElement>; 2886 + header: HTMLAttributes<HTMLElement>; 2887 + hgroup: HTMLAttributes<HTMLElement>; 2888 + hr: HTMLAttributes<HTMLHRElement>; 2889 + html: HTMLAttributes<HTMLHtmlElement>; 2890 + i: HTMLAttributes<HTMLElement>; 2891 + iframe: IframeHTMLAttributes<HTMLIFrameElement>; 2892 + img: ImgHTMLAttributes<HTMLImageElement>; 2893 + input: InputHTMLAttributes<HTMLInputElement>; 2894 + ins: InsHTMLAttributes<HTMLModElement>; 2895 + kbd: HTMLAttributes<HTMLElement>; 2896 + keygen: KeygenHTMLAttributes<HTMLUnknownElement>; 2897 + label: LabelHTMLAttributes<HTMLLabelElement>; 2898 + legend: HTMLAttributes<HTMLLegendElement>; 2899 + li: LiHTMLAttributes<HTMLLIElement>; 2900 + link: LinkHTMLAttributes<HTMLLinkElement>; 2901 + main: HTMLAttributes<HTMLElement>; 2902 + map: MapHTMLAttributes<HTMLMapElement>; 2903 + mark: HTMLAttributes<HTMLElement>; 2904 + marquee: MarqueeHTMLAttributes<HTMLMarqueeElement>; 2905 + menu: MenuHTMLAttributes<HTMLMenuElement>; 2906 + menuitem: HTMLAttributes<HTMLUnknownElement>; 2907 + meta: MetaHTMLAttributes<HTMLMetaElement>; 2908 + meter: MeterHTMLAttributes<HTMLMeterElement>; 2909 + nav: HTMLAttributes<HTMLElement>; 2910 + noscript: HTMLAttributes<HTMLElement>; 2911 + object: ObjectHTMLAttributes<HTMLObjectElement>; 2912 + ol: OlHTMLAttributes<HTMLOListElement>; 2913 + optgroup: OptgroupHTMLAttributes<HTMLOptGroupElement>; 2914 + option: OptionHTMLAttributes<HTMLOptionElement>; 2915 + output: OutputHTMLAttributes<HTMLOutputElement>; 2916 + p: HTMLAttributes<HTMLParagraphElement>; 2917 + param: ParamHTMLAttributes<HTMLParamElement>; 2918 + picture: HTMLAttributes<HTMLPictureElement>; 2919 + pre: HTMLAttributes<HTMLPreElement>; 2920 + progress: ProgressHTMLAttributes<HTMLProgressElement>; 2921 + q: QuoteHTMLAttributes<HTMLQuoteElement>; 2922 + rp: HTMLAttributes<HTMLElement>; 2923 + rt: HTMLAttributes<HTMLElement>; 2924 + ruby: HTMLAttributes<HTMLElement>; 2925 + s: HTMLAttributes<HTMLElement>; 2926 + samp: HTMLAttributes<HTMLElement>; 2927 + script: ScriptHTMLAttributes<HTMLScriptElement>; 2928 + search: HTMLAttributes<HTMLElement>; 2929 + section: HTMLAttributes<HTMLElement>; 2930 + select: SelectHTMLAttributes<HTMLSelectElement>; 2931 + slot: SlotHTMLAttributes<HTMLSlotElement>; 2932 + small: HTMLAttributes<HTMLElement>; 2933 + source: SourceHTMLAttributes<HTMLSourceElement>; 2934 + span: HTMLAttributes<HTMLSpanElement>; 2935 + strong: HTMLAttributes<HTMLElement>; 2936 + style: StyleHTMLAttributes<HTMLStyleElement>; 2937 + sub: HTMLAttributes<HTMLElement>; 2938 + summary: HTMLAttributes<HTMLElement>; 2939 + sup: HTMLAttributes<HTMLElement>; 2940 + table: TableHTMLAttributes<HTMLTableElement>; 2941 + tbody: HTMLAttributes<HTMLTableSectionElement>; 2942 + td: TdHTMLAttributes<HTMLTableCellElement>; 2943 + template: HTMLAttributes<HTMLTemplateElement>; 2944 + textarea: TextareaHTMLAttributes<HTMLTextAreaElement>; 2945 + tfoot: HTMLAttributes<HTMLTableSectionElement>; 2946 + th: ThHTMLAttributes<HTMLTableCellElement>; 2947 + thead: HTMLAttributes<HTMLTableSectionElement>; 2948 + time: TimeHTMLAttributes<HTMLTimeElement>; 2949 + title: HTMLAttributes<HTMLTitleElement>; 2950 + tr: HTMLAttributes<HTMLTableRowElement>; 2951 + track: TrackHTMLAttributes<HTMLTrackElement>; 2952 + u: HTMLAttributes<HTMLElement>; 2953 + ul: HTMLAttributes<HTMLUListElement>; 2954 + var: HTMLAttributes<HTMLElement>; 2955 + video: VideoHTMLAttributes<HTMLVideoElement>; 2956 + wbr: HTMLAttributes<HTMLElement>; 2957 + } 2958 + }
-3
vendor/importmap.js
··· 2 2 importmap.type = "importmap"; 3 3 importmap.textContent = JSON.stringify({ 4 4 imports: { 5 - "@atcute/client": "/atprotocall/vendor/esm.sh/@atcute/client@4.2.1/es2022/client.mjs", 6 - "@atcute/identity-resolver": "/atprotocall/vendor/esm.sh/@atcute/identity-resolver@1.2.2/es2022/identity-resolver.mjs", 7 - "@atcute/oauth-browser-client": "/atprotocall/vendor/esm.sh/@atcute/oauth-browser-client@3.0.0/es2022/oauth-browser-client.mjs", 8 5 "@preact/signals": "/atprotocall/vendor/esm.sh/@preact/signals@2.9.0/X-ZXByZWFjdA/es2022/signals.mjs", 9 6 "htm/preact": "/atprotocall/vendor/esm.sh/htm@3.1.1/X-ZXByZWFjdA/es2022/preact.mjs", 10 7 "preact": "/atprotocall/vendor/esm.sh/preact@10.29.1/es2022/preact.mjs",
-3
vendor/importmap.json
··· 1 1 { 2 2 "imports": { 3 - "@atcute/client": "/atprotocall/vendor/esm.sh/@atcute/client@4.2.1/es2022/client.mjs", 4 - "@atcute/identity-resolver": "/atprotocall/vendor/esm.sh/@atcute/identity-resolver@1.2.2/es2022/identity-resolver.mjs", 5 - "@atcute/oauth-browser-client": "/atprotocall/vendor/esm.sh/@atcute/oauth-browser-client@3.0.0/es2022/oauth-browser-client.mjs", 6 3 "@preact/signals": "/atprotocall/vendor/esm.sh/@preact/signals@2.9.0/X-ZXByZWFjdA/es2022/signals.mjs", 7 4 "htm/preact": "/atprotocall/vendor/esm.sh/htm@3.1.1/X-ZXByZWFjdA/es2022/preact.mjs", 8 5 "preact": "/atprotocall/vendor/esm.sh/preact@10.29.1/es2022/preact.mjs",
+8 -14
vendor/jsconfig.json
··· 1 1 { 2 2 "compilerOptions": { 3 3 "paths": { 4 - "@atcute/client": [ 5 - "./esm.sh/@atcute/client@4.2.1/es2022/client.mjs" 6 - ], 7 - "@atcute/identity-resolver": [ 8 - "./esm.sh/@atcute/identity-resolver@1.2.2/es2022/identity-resolver.mjs" 9 - ], 10 - "@atcute/oauth-browser-client": [ 11 - "./esm.sh/@atcute/oauth-browser-client@3.0.0/es2022/oauth-browser-client.mjs" 12 - ], 13 4 "@preact/signals": [ 14 - "./esm.sh/@preact/signals@2.9.0/X-ZXByZWFjdA/es2022/signals.mjs" 5 + "./esm.sh/@preact/signals@2.9.0/X-ZXByZWFjdA/dist/signals.d.ts" 15 6 ], 16 7 "htm/preact": [ 17 - "./esm.sh/htm@3.1.1/X-ZXByZWFjdA/es2022/preact.mjs" 8 + "./esm.sh/htm@3.1.1/X-ZXByZWFjdA/preact/index.d.ts" 18 9 ], 19 10 "preact": [ 20 - "./esm.sh/preact@10.29.1/es2022/preact.mjs" 11 + "./esm.sh/preact@10.29.1/src/index.d.ts" 21 12 ], 22 13 "preact/hooks": [ 23 - "./esm.sh/preact@10.29.1/es2022/hooks.mjs" 14 + "./esm.sh/preact@10.29.1/hooks/src/index.d.ts" 24 15 ] 25 16 } 26 - } 17 + }, 18 + "exclude": [ 19 + "." 20 + ] 27 21 }