@kya-os/checkpoint-express 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../node_modules/.pnpm/uncrypto@0.1.3/node_modules/uncrypto/dist/crypto.node.mjs","../../../node_modules/.pnpm/@upstash+redis@1.37.0/node_modules/@upstash/redis/chunk-IH7W44G6.mjs","../../../node_modules/.pnpm/@upstash+redis@1.37.0/node_modules/@upstash/redis/nodejs.mjs","../../checkpoint-wasm-runtime/wasm/kya-os-engine-web/kya_os_engine.js","../../checkpoint-wasm-runtime/src/engine/adapters/outbound-url-policy.ts","../../checkpoint-wasm-runtime/src/engine/index.ts","../../checkpoint-wasm-runtime/src/engine/adapters/util.ts","../../checkpoint-wasm-runtime/src/engine/orchestrator/build-agent-request.ts","../../checkpoint-wasm-runtime/src/engine/orchestrator/verify-request.ts","../../checkpoint-wasm-runtime/src/engine/orchestrator/render-decision.ts","../../../node_modules/.pnpm/multiformats@13.4.2/node_modules/multiformats/src/bytes.ts","../../../node_modules/.pnpm/multiformats@13.4.2/node_modules/multiformats/src/vendor/base-x.js","../../../node_modules/.pnpm/multiformats@13.4.2/node_modules/multiformats/src/bases/base.ts","../../../node_modules/.pnpm/multiformats@13.4.2/node_modules/multiformats/src/bases/base58.ts","../../checkpoint-wasm-runtime/src/engine/adapters/did-resolver.ts","../../checkpoint-wasm-runtime/src/engine/adapters/status-list-cache.ts","../../checkpoint-wasm-runtime/src/engine/adapters/reputation-oracle.ts","../../checkpoint-wasm-runtime/src/engine/adapters/policy-evaluator.ts","../../checkpoint-wasm-runtime/src/engine/adapters/clock.ts","../src/adapt.ts","../src/translate.ts","../src/create-middleware.ts","../src/middleware.ts","../src/session-helper.ts","../src/enhanced-middleware.ts","../src/storage/memory-adapter.ts","../src/storage/redis-adapter.ts","../src/storage/index.ts","../src/policy.ts","../src/index.ts"],"names":["nodeCrypto","__defProp","__export","s","from","ptr","i","j","decode","BLOCKED_HOSTNAMES","UnsafeOutboundUrl","assertSafeHttpsUrl","normalizeHostname","isBlockedHostname","parseIpv4","isBlockedIpv4","isBlockedIpv6","base64UrlDecode","DEFAULT_FETCH_TIMEOUT_MS","DEFAULT_TTL_MS","gunzipSync","acceptsHtml","encodeVerdictCookie","classifyResponseShape","BLOCKED_PATH","VERDICT_COOKIE_NAME","shouldEnforce","agentShield","MIGRATION_MESSAGE","Redis","VERSION"],"mappings":"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","file":"index.js","sourcesContent":["import nodeCrypto from 'node:crypto';\n\nconst subtle = nodeCrypto.webcrypto?.subtle || {};\nconst randomUUID = () => {\n return nodeCrypto.randomUUID();\n};\nconst getRandomValues = (array) => {\n return nodeCrypto.webcrypto.getRandomValues(array);\n};\nconst _crypto = {\n randomUUID,\n getRandomValues,\n subtle\n};\n\nexport { _crypto as default, getRandomValues, randomUUID, subtle };\n","var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// pkg/error.ts\nvar error_exports = {};\n__export(error_exports, {\n UpstashError: () => UpstashError,\n UpstashJSONParseError: () => UpstashJSONParseError,\n UrlError: () => UrlError\n});\nvar UpstashError = class extends Error {\n constructor(message, options) {\n super(message, options);\n this.name = \"UpstashError\";\n }\n};\nvar UrlError = class extends Error {\n constructor(url) {\n super(\n `Upstash Redis client was passed an invalid URL. You should pass a URL starting with https. Received: \"${url}\". `\n );\n this.name = \"UrlError\";\n }\n};\nvar UpstashJSONParseError = class extends UpstashError {\n constructor(body, options) {\n const truncatedBody = body.length > 200 ? body.slice(0, 200) + \"...\" : body;\n super(`Unable to parse response body: ${truncatedBody}`, options);\n this.name = \"UpstashJSONParseError\";\n }\n};\n\n// pkg/util.ts\nfunction parseRecursive(obj) {\n const parsed = Array.isArray(obj) ? obj.map((o) => {\n try {\n return parseRecursive(o);\n } catch {\n return o;\n }\n }) : JSON.parse(obj);\n if (typeof parsed === \"number\" && parsed.toString() !== obj) {\n return obj;\n }\n return parsed;\n}\nfunction parseResponse(result) {\n try {\n return parseRecursive(result);\n } catch {\n return result;\n }\n}\nfunction deserializeScanResponse(result) {\n return [result[0], ...parseResponse(result.slice(1))];\n}\nfunction deserializeScanWithTypesResponse(result) {\n const [cursor, keys] = result;\n const parsedKeys = [];\n for (let i = 0; i < keys.length; i += 2) {\n parsedKeys.push({ key: keys[i], type: keys[i + 1] });\n }\n return [cursor, parsedKeys];\n}\nfunction mergeHeaders(...headers) {\n const merged = {};\n for (const header of headers) {\n if (!header) continue;\n for (const [key, value] of Object.entries(header)) {\n if (value !== void 0 && value !== null) {\n merged[key] = value;\n }\n }\n }\n return merged;\n}\nfunction kvArrayToObject(v) {\n if (typeof v === \"object\" && v !== null && !Array.isArray(v)) return v;\n if (!Array.isArray(v)) return {};\n const obj = {};\n for (let i = 0; i < v.length; i += 2) {\n if (typeof v[i] === \"string\") obj[v[i]] = v[i + 1];\n }\n return obj;\n}\n\n// pkg/http.ts\nvar MAX_BUFFER_SIZE = 1024 * 1024;\nvar HttpClient = class {\n baseUrl;\n headers;\n options;\n readYourWrites;\n upstashSyncToken = \"\";\n hasCredentials;\n retry;\n constructor(config) {\n this.options = {\n backend: config.options?.backend,\n agent: config.agent,\n responseEncoding: config.responseEncoding ?? \"base64\",\n // default to base64\n cache: config.cache,\n signal: config.signal,\n keepAlive: config.keepAlive ?? true\n };\n this.upstashSyncToken = \"\";\n this.readYourWrites = config.readYourWrites ?? true;\n this.baseUrl = (config.baseUrl || \"\").replace(/\\/$/, \"\");\n const urlRegex = /^https?:\\/\\/[^\\s#$./?].\\S*$/;\n if (this.baseUrl && !urlRegex.test(this.baseUrl)) {\n throw new UrlError(this.baseUrl);\n }\n this.headers = {\n \"Content-Type\": \"application/json\",\n ...config.headers\n };\n this.hasCredentials = Boolean(this.baseUrl && this.headers.authorization.split(\" \")[1]);\n if (this.options.responseEncoding === \"base64\") {\n this.headers[\"Upstash-Encoding\"] = \"base64\";\n }\n this.retry = typeof config.retry === \"boolean\" && !config.retry ? {\n attempts: 1,\n backoff: () => 0\n } : {\n attempts: config.retry?.retries ?? 5,\n backoff: config.retry?.backoff ?? ((retryCount) => Math.exp(retryCount) * 50)\n };\n }\n mergeTelemetry(telemetry) {\n this.headers = merge(this.headers, \"Upstash-Telemetry-Runtime\", telemetry.runtime);\n this.headers = merge(this.headers, \"Upstash-Telemetry-Platform\", telemetry.platform);\n this.headers = merge(this.headers, \"Upstash-Telemetry-Sdk\", telemetry.sdk);\n }\n async request(req) {\n const requestHeaders = mergeHeaders(this.headers, req.headers ?? {});\n const requestUrl = [this.baseUrl, ...req.path ?? []].join(\"/\");\n const isEventStream = requestHeaders.Accept === \"text/event-stream\";\n const signal = req.signal ?? this.options.signal;\n const isSignalFunction = typeof signal === \"function\";\n const requestOptions = {\n cache: this.options.cache,\n method: \"POST\",\n headers: requestHeaders,\n body: JSON.stringify(req.body),\n keepalive: this.options.keepAlive,\n agent: this.options.agent,\n signal: isSignalFunction ? signal() : signal,\n /**\n * Fastly specific\n */\n backend: this.options.backend\n };\n if (!this.hasCredentials) {\n console.warn(\n \"[Upstash Redis] Redis client was initialized without url or token. Failed to execute command.\"\n );\n }\n if (this.readYourWrites) {\n const newHeader = this.upstashSyncToken;\n this.headers[\"upstash-sync-token\"] = newHeader;\n }\n let res = null;\n let error = null;\n for (let i = 0; i <= this.retry.attempts; i++) {\n try {\n res = await fetch(requestUrl, requestOptions);\n break;\n } catch (error_) {\n if (requestOptions.signal?.aborted && isSignalFunction) {\n throw error_;\n } else if (requestOptions.signal?.aborted) {\n const myBlob = new Blob([\n JSON.stringify({ result: requestOptions.signal.reason ?? \"Aborted\" })\n ]);\n const myOptions = {\n status: 200,\n statusText: requestOptions.signal.reason ?? \"Aborted\"\n };\n res = new Response(myBlob, myOptions);\n break;\n }\n error = error_;\n if (i < this.retry.attempts) {\n await new Promise((r) => setTimeout(r, this.retry.backoff(i)));\n }\n }\n }\n if (!res) {\n throw error ?? new Error(\"Exhausted all retries\");\n }\n if (!res.ok) {\n let body2;\n const rawBody2 = await res.text();\n try {\n body2 = JSON.parse(rawBody2);\n } catch (error2) {\n throw new UpstashJSONParseError(rawBody2, { cause: error2 });\n }\n throw new UpstashError(`${body2.error}, command was: ${JSON.stringify(req.body)}`);\n }\n if (this.readYourWrites) {\n const headers = res.headers;\n this.upstashSyncToken = headers.get(\"upstash-sync-token\") ?? \"\";\n }\n if (isEventStream && req && req.onMessage && res.body) {\n const reader = res.body.getReader();\n const decoder = new TextDecoder();\n (async () => {\n try {\n let buffer = \"\";\n while (true) {\n const { value, done } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() || \"\";\n if (buffer.length > MAX_BUFFER_SIZE) {\n throw new Error(\"Buffer size exceeded (1MB)\");\n }\n for (const line of lines) {\n if (line.startsWith(\"data: \")) {\n const data = line.slice(6);\n req.onMessage?.(data);\n }\n }\n }\n } catch (error2) {\n if (error2 instanceof Error && error2.name === \"AbortError\") {\n } else {\n console.error(\"Stream reading error:\", error2);\n }\n } finally {\n try {\n await reader.cancel();\n } catch {\n }\n }\n })();\n return { result: 1 };\n }\n let body;\n const rawBody = await res.text();\n try {\n body = JSON.parse(rawBody);\n } catch (error2) {\n throw new UpstashJSONParseError(rawBody, { cause: error2 });\n }\n if (this.readYourWrites) {\n const headers = res.headers;\n this.upstashSyncToken = headers.get(\"upstash-sync-token\") ?? \"\";\n }\n if (this.options.responseEncoding === \"base64\") {\n if (Array.isArray(body)) {\n return body.map(({ result: result2, error: error2 }) => ({\n result: decode(result2),\n error: error2\n }));\n }\n const result = decode(body.result);\n return { result, error: body.error };\n }\n return body;\n }\n};\nfunction base64decode(b64) {\n let dec = \"\";\n try {\n const binString = atob(b64);\n const size = binString.length;\n const bytes = new Uint8Array(size);\n for (let i = 0; i < size; i++) {\n bytes[i] = binString.charCodeAt(i);\n }\n dec = new TextDecoder().decode(bytes);\n } catch {\n dec = b64;\n }\n return dec;\n}\nfunction decode(raw) {\n let result = void 0;\n switch (typeof raw) {\n case \"undefined\": {\n return raw;\n }\n case \"number\": {\n result = raw;\n break;\n }\n case \"object\": {\n if (Array.isArray(raw)) {\n result = raw.map(\n (v) => typeof v === \"string\" ? base64decode(v) : Array.isArray(v) ? v.map((element) => decode(element)) : v\n );\n } else {\n result = null;\n }\n break;\n }\n case \"string\": {\n result = raw === \"OK\" ? \"OK\" : base64decode(raw);\n break;\n }\n default: {\n break;\n }\n }\n return result;\n}\nfunction merge(obj, key, value) {\n if (!value) {\n return obj;\n }\n obj[key] = obj[key] ? [obj[key], value].join(\",\") : value;\n return obj;\n}\n\n// pkg/commands/command.ts\nvar defaultSerializer = (c) => {\n switch (typeof c) {\n case \"string\":\n case \"number\":\n case \"boolean\": {\n return c;\n }\n default: {\n return JSON.stringify(c);\n }\n }\n};\nvar Command = class {\n command;\n serialize;\n deserialize;\n headers;\n path;\n onMessage;\n isStreaming;\n signal;\n /**\n * Create a new command instance.\n *\n * You can define a custom `deserialize` function. By default we try to deserialize as json.\n */\n constructor(command, opts) {\n this.serialize = defaultSerializer;\n this.deserialize = opts?.automaticDeserialization === void 0 || opts.automaticDeserialization ? opts?.deserialize ?? parseResponse : (x) => x;\n this.command = command.map((c) => this.serialize(c));\n this.headers = opts?.headers;\n this.path = opts?.path;\n this.onMessage = opts?.streamOptions?.onMessage;\n this.isStreaming = opts?.streamOptions?.isStreaming ?? false;\n this.signal = opts?.streamOptions?.signal;\n if (opts?.latencyLogging) {\n const originalExec = this.exec.bind(this);\n this.exec = async (client) => {\n const start = performance.now();\n const result = await originalExec(client);\n const end = performance.now();\n const loggerResult = (end - start).toFixed(2);\n console.log(\n `Latency for \\x1B[38;2;19;185;39m${this.command[0].toString().toUpperCase()}\\x1B[0m: \\x1B[38;2;0;255;255m${loggerResult} ms\\x1B[0m`\n );\n return result;\n };\n }\n }\n /**\n * Execute the command using a client.\n */\n async exec(client) {\n const { result, error } = await client.request({\n body: this.command,\n path: this.path,\n upstashSyncToken: client.upstashSyncToken,\n headers: this.headers,\n onMessage: this.onMessage,\n isStreaming: this.isStreaming,\n signal: this.signal\n });\n if (error) {\n throw new UpstashError(error);\n }\n if (result === void 0) {\n throw new TypeError(\"Request did not return a result\");\n }\n return this.deserialize(result);\n }\n};\n\n// pkg/commands/exec.ts\nvar ExecCommand = class extends Command {\n constructor(cmd, opts) {\n const normalizedCmd = cmd.map((arg) => typeof arg === \"string\" ? arg : String(arg));\n super(normalizedCmd, opts);\n }\n};\n\n// pkg/commands/search/types.ts\nvar FIELD_TYPES = [\n \"TEXT\",\n \"U64\",\n \"I64\",\n \"F64\",\n \"BOOL\",\n \"DATE\",\n \"KEYWORD\",\n \"FACET\"\n];\n\n// pkg/commands/search/utils.ts\nfunction isFieldType(value) {\n return typeof value === \"string\" && FIELD_TYPES.includes(value);\n}\nfunction isDetailedField(value) {\n return typeof value === \"object\" && value !== null && \"type\" in value && isFieldType(value.type);\n}\nfunction isNestedSchema(value) {\n return typeof value === \"object\" && value !== null && !isDetailedField(value);\n}\nfunction flattenSchema(schema, pathPrefix = []) {\n const fields = [];\n for (const [key, value] of Object.entries(schema)) {\n const currentPath = [...pathPrefix, key];\n const pathString = currentPath.join(\".\");\n if (isFieldType(value)) {\n fields.push({\n path: pathString,\n type: value\n });\n } else if (isDetailedField(value)) {\n fields.push({\n path: pathString,\n type: value.type,\n fast: \"fast\" in value ? value.fast : void 0,\n noTokenize: \"noTokenize\" in value ? value.noTokenize : void 0,\n noStem: \"noStem\" in value ? value.noStem : void 0,\n from: \"from\" in value ? value.from : void 0\n });\n } else if (isNestedSchema(value)) {\n const nestedFields = flattenSchema(value, currentPath);\n fields.push(...nestedFields);\n }\n }\n return fields;\n}\nfunction deserializeQueryResponse(rawResponse) {\n return rawResponse.map((itemRaw) => {\n const raw = itemRaw;\n const key = raw[0];\n const score = Number(raw[1]);\n const rawFields = raw[2];\n if (rawFields === void 0) {\n return { key, score };\n }\n if (!Array.isArray(rawFields) || rawFields.length === 0) {\n return { key, score, data: {} };\n }\n let data = {};\n for (const fieldRaw of rawFields) {\n const key2 = fieldRaw[0];\n const value = fieldRaw[1];\n const pathParts = key2.split(\".\");\n if (pathParts.length === 1) {\n data[key2] = value;\n } else {\n let currentObj = data;\n for (let i = 0; i < pathParts.length - 1; i++) {\n const pathPart = pathParts[i];\n if (!(pathPart in currentObj)) {\n currentObj[pathPart] = {};\n }\n currentObj = currentObj[pathPart];\n }\n currentObj[pathParts.at(-1)] = value;\n }\n }\n if (\"$\" in data) {\n data = data[\"$\"];\n }\n return { key, score, data };\n });\n}\nfunction deserializeDescribeResponse(rawResponse) {\n const description = {};\n for (let i = 0; i < rawResponse.length; i += 2) {\n const descriptor = rawResponse[i];\n switch (descriptor) {\n case \"name\": {\n description[\"name\"] = rawResponse[i + 1];\n break;\n }\n case \"type\": {\n description[\"dataType\"] = rawResponse[i + 1].toLowerCase();\n break;\n }\n case \"prefixes\": {\n description[\"prefixes\"] = rawResponse[i + 1];\n break;\n }\n case \"language\": {\n description[\"language\"] = rawResponse[i + 1];\n break;\n }\n case \"schema\": {\n const schema = {};\n for (const fieldDescription of rawResponse[i + 1]) {\n const fieldName = fieldDescription[0];\n const fieldInfo = { type: fieldDescription[1] };\n if (fieldDescription.length > 2) {\n for (let j = 2; j < fieldDescription.length; j++) {\n const fieldOption = fieldDescription[j];\n switch (fieldOption) {\n case \"NOSTEM\": {\n fieldInfo.noStem = true;\n break;\n }\n case \"NOTOKENIZE\": {\n fieldInfo.noTokenize = true;\n break;\n }\n case \"FAST\": {\n fieldInfo.fast = true;\n break;\n }\n case \"FROM\": {\n fieldInfo.from = fieldDescription[++j];\n break;\n }\n }\n }\n }\n schema[fieldName] = fieldInfo;\n }\n description[\"schema\"] = schema;\n break;\n }\n }\n }\n return description;\n}\nfunction parseCountResponse(rawResponse) {\n return typeof rawResponse === \"number\" ? rawResponse : Number.parseInt(rawResponse, 10);\n}\nfunction deserializeAggregateResponse(rawResponse) {\n return parseAggregationArray(rawResponse);\n}\nfunction parseAggregationArray(arr) {\n const result = {};\n for (let i = 0; i < arr.length; i += 2) {\n const key = arr[i];\n const value = arr[i + 1];\n if (Array.isArray(value)) {\n if (value.length > 0 && typeof value[0] === \"string\") {\n result[key] = value[0] === \"buckets\" ? parseBucketsValue(value) : parseStatsValue(value);\n } else {\n result[key] = parseAggregationArray(value);\n }\n } else {\n result[key] = value;\n }\n }\n return result;\n}\nfunction coerceNumericString(value) {\n if (typeof value === \"string\" && value !== \"\" && !Number.isNaN(Number(value))) {\n return Number(value);\n }\n return value;\n}\nfunction parseStatsValue(arr) {\n const result = {};\n for (let i = 0; i < arr.length; i += 2) {\n const key = arr[i];\n const value = arr[i + 1];\n if (Array.isArray(value) && value.length > 0) {\n if (typeof value[0] === \"string\") {\n result[key] = parseStatsValue(value);\n } else if (Array.isArray(value[0]) && typeof value[0][0] === \"string\") {\n result[key] = value.map((item) => parseStatsValue(item));\n } else {\n result[key] = value;\n }\n } else {\n result[key] = coerceNumericString(value);\n }\n }\n return result;\n}\nfunction parseBucketsValue(arr) {\n if (arr[0] === \"buckets\" && Array.isArray(arr[1])) {\n const result = {\n buckets: arr[1].map((bucket) => {\n const bucketObj = {};\n for (let i = 0; i < bucket.length; i += 2) {\n const key = bucket[i];\n const value = bucket[i + 1];\n bucketObj[key] = Array.isArray(value) && value.length > 0 && typeof value[0] === \"string\" ? parseStatsValue(value) : value;\n }\n return bucketObj;\n })\n };\n for (let i = 2; i < arr.length; i += 2) {\n result[arr[i]] = arr[i + 1];\n }\n return result;\n }\n return arr;\n}\n\n// pkg/commands/search/command-builder.ts\nfunction buildQueryCommand(redisCommand, name, options) {\n const query = JSON.stringify(options?.filter ?? {});\n const command = [redisCommand, name, query];\n if (options?.limit !== void 0) {\n command.push(\"LIMIT\", options.limit.toString());\n }\n if (options?.offset !== void 0) {\n command.push(\"OFFSET\", options.offset.toString());\n }\n if (options?.select && Object.keys(options.select).length === 0) {\n command.push(\"NOCONTENT\");\n }\n if (options) {\n if (\"orderBy\" in options && options.orderBy) {\n command.push(\"ORDERBY\");\n for (const [field, direction] of Object.entries(options.orderBy)) {\n command.push(field, direction);\n }\n } else if (\"scoreFunc\" in options && options.scoreFunc) {\n command.push(\"SCOREFUNC\", ...buildScoreFunc(options.scoreFunc));\n }\n }\n if (options?.highlight) {\n command.push(\n \"HIGHLIGHT\",\n \"FIELDS\",\n options.highlight.fields.length.toString(),\n ...options.highlight.fields\n );\n if (options.highlight.preTag && options.highlight.postTag) {\n command.push(\"TAGS\", options.highlight.preTag, options.highlight.postTag);\n }\n }\n if (options?.select && Object.keys(options.select).length > 0) {\n command.push(\n \"SELECT\",\n Object.keys(options.select).length.toString(),\n ...Object.keys(options.select)\n );\n }\n return command;\n}\nfunction buildScoreFunc(scoreBy) {\n const result = [];\n if (typeof scoreBy === \"string\") {\n result.push(\"FIELDVALUE\", scoreBy);\n } else if (\"fields\" in scoreBy) {\n if (scoreBy.combineMode) {\n result.push(\"COMBINEMODE\", scoreBy.combineMode.toUpperCase());\n }\n if (scoreBy.scoreMode) {\n result.push(\"SCOREMODE\", scoreBy.scoreMode.toUpperCase());\n }\n for (const field of scoreBy.fields) {\n result.push(...buildScoreFuncField(field));\n }\n } else {\n result.push(...buildScoreFuncField(scoreBy));\n }\n return result;\n}\nfunction buildScoreFuncField(field) {\n const result = [];\n if (typeof field === \"string\") {\n result.push(\"FIELDVALUE\", field);\n } else {\n if (field.scoreMode) {\n result.push(\"SCOREMODE\", field.scoreMode.toUpperCase());\n }\n result.push(\"FIELDVALUE\", field.field);\n if (field.modifier) {\n result.push(\"MODIFIER\", field.modifier.toUpperCase());\n }\n if (field.factor !== void 0) {\n result.push(\"FACTOR\", field.factor.toString());\n }\n if (field.missing !== void 0) {\n result.push(\"MISSING\", field.missing.toString());\n }\n }\n return result;\n}\nfunction buildCreateIndexCommand(params) {\n const { name, schema, dataType, prefix, language, skipInitialScan, existsOk } = params;\n const prefixArray = Array.isArray(prefix) ? prefix : [prefix];\n const payload = [\n name,\n ...skipInitialScan ? [\"SKIPINITIALSCAN\"] : [],\n ...existsOk ? [\"EXISTSOK\"] : [],\n \"ON\",\n dataType.toUpperCase(),\n \"PREFIX\",\n prefixArray.length.toString(),\n ...prefixArray,\n ...language ? [\"LANGUAGE\", language] : [],\n \"SCHEMA\"\n ];\n const fields = flattenSchema(schema);\n for (const field of fields) {\n payload.push(field.path, field.type);\n if (field.fast) {\n payload.push(\"FAST\");\n }\n if (field.noTokenize) {\n payload.push(\"NOTOKENIZE\");\n }\n if (field.noStem) {\n payload.push(\"NOSTEM\");\n }\n if (field.from) {\n payload.push(\"FROM\", field.from);\n }\n }\n return [\"SEARCH.CREATE\", ...payload];\n}\nfunction buildAggregateCommand(name, options) {\n const query = JSON.stringify(options?.filter ?? {});\n const aggregations = JSON.stringify(options.aggregations);\n return [\"SEARCH.AGGREGATE\", name, query, aggregations];\n}\n\n// pkg/commands/search/search.ts\nvar SearchIndex = class {\n name;\n schema;\n client;\n constructor({ name, schema, client }) {\n this.name = name;\n this.schema = schema;\n this.client = client;\n }\n async waitIndexing() {\n const command = [\"SEARCH.WAITINDEXING\", this.name];\n return await new ExecCommand(command).exec(this.client);\n }\n async describe() {\n const command = [\"SEARCH.DESCRIBE\", this.name];\n const rawResult = await new ExecCommand(command).exec(\n this.client\n );\n if (!rawResult) return null;\n return deserializeDescribeResponse(rawResult);\n }\n async query(options) {\n const command = buildQueryCommand(\"SEARCH.QUERY\", this.name, options);\n const rawResult = await new ExecCommand(command).exec(\n this.client\n );\n if (!rawResult) return rawResult;\n return deserializeQueryResponse(rawResult);\n }\n async aggregate(options) {\n const command = buildAggregateCommand(this.name, options);\n const rawResult = await new ExecCommand(\n command\n ).exec(this.client);\n return deserializeAggregateResponse(rawResult);\n }\n async count({ filter }) {\n const command = buildQueryCommand(\"SEARCH.COUNT\", this.name, { filter });\n const rawResult = await new ExecCommand(command).exec(\n this.client\n );\n return { count: parseCountResponse(rawResult) };\n }\n async drop() {\n const command = [\"SEARCH.DROP\", this.name];\n const result = await new ExecCommand(command).exec(this.client);\n return result;\n }\n async addAlias({ alias }) {\n const command = [\"SEARCH.ALIASADD\", alias, this.name];\n const result = await new ExecCommand(command).exec(this.client);\n return result;\n }\n};\nasync function createIndex(client, params) {\n const { name, schema } = params;\n const createIndexCommand = buildCreateIndexCommand(params);\n await new ExecCommand(createIndexCommand).exec(client);\n return initIndex(client, { name, schema });\n}\nfunction initIndex(client, params) {\n const { name, schema } = params;\n return new SearchIndex({ name, schema, client });\n}\nasync function listAliases(client) {\n const command = [\"SEARCH.LISTALIASES\"];\n const rawResult = await new ExecCommand(command).exec(client);\n if (rawResult === 0 || Array.isArray(rawResult) && rawResult.length === 0) {\n return {};\n }\n if (!Array.isArray(rawResult)) {\n return {};\n }\n const aliases = {};\n for (const pair of rawResult) {\n if (Array.isArray(pair) && pair.length === 2) {\n const [alias, index] = pair;\n aliases[alias] = index;\n }\n }\n return aliases;\n}\nasync function addAlias(client, { indexName, alias }) {\n const command = [\"SEARCH.ALIASADD\", alias, indexName];\n const result = await new ExecCommand(command).exec(client);\n return result;\n}\nasync function delAlias(client, { alias }) {\n const command = [\"SEARCH.ALIASDEL\", alias];\n const result = await new ExecCommand(command).exec(client);\n return result;\n}\n\n// pkg/commands/hrandfield.ts\nfunction deserialize(result) {\n if (result.length === 0) {\n return null;\n }\n const obj = {};\n for (let i = 0; i < result.length; i += 2) {\n const key = result[i];\n const value = result[i + 1];\n try {\n obj[key] = JSON.parse(value);\n } catch {\n obj[key] = value;\n }\n }\n return obj;\n}\nvar HRandFieldCommand = class extends Command {\n constructor(cmd, opts) {\n const command = [\"hrandfield\", cmd[0]];\n if (typeof cmd[1] === \"number\") {\n command.push(cmd[1]);\n }\n if (cmd[2]) {\n command.push(\"WITHVALUES\");\n }\n super(command, {\n // @ts-expect-error to silence compiler\n deserialize: cmd[2] ? (result) => deserialize(result) : opts?.deserialize,\n ...opts\n });\n }\n};\n\n// pkg/commands/append.ts\nvar AppendCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"append\", ...cmd], opts);\n }\n};\n\n// pkg/commands/bitcount.ts\nvar BitCountCommand = class extends Command {\n constructor([key, start, end], opts) {\n const command = [\"bitcount\", key];\n if (typeof start === \"number\") {\n command.push(start);\n }\n if (typeof end === \"number\") {\n command.push(end);\n }\n super(command, opts);\n }\n};\n\n// pkg/commands/bitfield.ts\nvar BitFieldCommand = class {\n constructor(args, client, opts, execOperation = (command) => command.exec(this.client)) {\n this.client = client;\n this.opts = opts;\n this.execOperation = execOperation;\n this.command = [\"bitfield\", ...args];\n }\n command;\n chain(...args) {\n this.command.push(...args);\n return this;\n }\n get(...args) {\n return this.chain(\"get\", ...args);\n }\n set(...args) {\n return this.chain(\"set\", ...args);\n }\n incrby(...args) {\n return this.chain(\"incrby\", ...args);\n }\n overflow(overflow) {\n return this.chain(\"overflow\", overflow);\n }\n exec() {\n const command = new Command(this.command, this.opts);\n return this.execOperation(command);\n }\n};\n\n// pkg/commands/bitop.ts\nvar BitOpCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"bitop\", ...cmd], opts);\n }\n};\n\n// pkg/commands/bitpos.ts\nvar BitPosCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"bitpos\", ...cmd], opts);\n }\n};\n\n// pkg/commands/client_setinfo.ts\nvar ClientSetInfoCommand = class extends Command {\n constructor([attribute, value], opts) {\n super([\"CLIENT\", \"SETINFO\", attribute.toUpperCase(), value], opts);\n }\n};\n\n// pkg/commands/copy.ts\nvar CopyCommand = class extends Command {\n constructor([key, destinationKey, opts], commandOptions) {\n super([\"COPY\", key, destinationKey, ...opts?.replace ? [\"REPLACE\"] : []], {\n ...commandOptions,\n deserialize(result) {\n if (result > 0) {\n return \"COPIED\";\n }\n return \"NOT_COPIED\";\n }\n });\n }\n};\n\n// pkg/commands/dbsize.ts\nvar DBSizeCommand = class extends Command {\n constructor(opts) {\n super([\"dbsize\"], opts);\n }\n};\n\n// pkg/commands/decr.ts\nvar DecrCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"decr\", ...cmd], opts);\n }\n};\n\n// pkg/commands/decrby.ts\nvar DecrByCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"decrby\", ...cmd], opts);\n }\n};\n\n// pkg/commands/del.ts\nvar DelCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"del\", ...cmd], opts);\n }\n};\n\n// pkg/commands/echo.ts\nvar EchoCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"echo\", ...cmd], opts);\n }\n};\n\n// pkg/commands/evalRo.ts\nvar EvalROCommand = class extends Command {\n constructor([script, keys, args], opts) {\n super([\"eval_ro\", script, keys.length, ...keys, ...args ?? []], opts);\n }\n};\n\n// pkg/commands/eval.ts\nvar EvalCommand = class extends Command {\n constructor([script, keys, args], opts) {\n super([\"eval\", script, keys.length, ...keys, ...args ?? []], opts);\n }\n};\n\n// pkg/commands/evalshaRo.ts\nvar EvalshaROCommand = class extends Command {\n constructor([sha, keys, args], opts) {\n super([\"evalsha_ro\", sha, keys.length, ...keys, ...args ?? []], opts);\n }\n};\n\n// pkg/commands/evalsha.ts\nvar EvalshaCommand = class extends Command {\n constructor([sha, keys, args], opts) {\n super([\"evalsha\", sha, keys.length, ...keys, ...args ?? []], opts);\n }\n};\n\n// pkg/commands/exists.ts\nvar ExistsCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"exists\", ...cmd], opts);\n }\n};\n\n// pkg/commands/expire.ts\nvar ExpireCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"expire\", ...cmd.filter(Boolean)], opts);\n }\n};\n\n// pkg/commands/expireat.ts\nvar ExpireAtCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"expireat\", ...cmd], opts);\n }\n};\n\n// pkg/commands/fcall.ts\nvar FCallCommand = class extends Command {\n constructor([functionName, keys, args], opts) {\n super([\"fcall\", functionName, ...keys ? [keys.length, ...keys] : [0], ...args ?? []], opts);\n }\n};\n\n// pkg/commands/fcall_ro.ts\nvar FCallRoCommand = class extends Command {\n constructor([functionName, keys, args], opts) {\n super(\n [\"fcall_ro\", functionName, ...keys ? [keys.length, ...keys] : [0], ...args ?? []],\n opts\n );\n }\n};\n\n// pkg/commands/flushall.ts\nvar FlushAllCommand = class extends Command {\n constructor(args, opts) {\n const command = [\"flushall\"];\n if (args && args.length > 0 && args[0].async) {\n command.push(\"async\");\n }\n super(command, opts);\n }\n};\n\n// pkg/commands/flushdb.ts\nvar FlushDBCommand = class extends Command {\n constructor([opts], cmdOpts) {\n const command = [\"flushdb\"];\n if (opts?.async) {\n command.push(\"async\");\n }\n super(command, cmdOpts);\n }\n};\n\n// pkg/commands/function_delete.ts\nvar FunctionDeleteCommand = class extends Command {\n constructor([libraryName], opts) {\n super([\"function\", \"delete\", libraryName], opts);\n }\n};\n\n// pkg/commands/function_flush.ts\nvar FunctionFlushCommand = class extends Command {\n constructor(opts) {\n super([\"function\", \"flush\"], opts);\n }\n};\n\n// pkg/commands/function_list.ts\nvar FunctionListCommand = class extends Command {\n constructor([args], opts) {\n const command = [\"function\", \"list\"];\n if (args?.libraryName) {\n command.push(\"libraryname\", args.libraryName);\n }\n if (args?.withCode) {\n command.push(\"withcode\");\n }\n super(command, { deserialize: deserialize2, ...opts });\n }\n};\nfunction deserialize2(result) {\n if (!Array.isArray(result)) return [];\n return result.map((libRaw) => {\n const lib = kvArrayToObject(libRaw);\n const functionsParsed = lib.functions.map(\n (fnRaw) => kvArrayToObject(fnRaw)\n );\n return {\n libraryName: lib.library_name,\n engine: lib.engine,\n functions: functionsParsed.map((fn) => ({\n name: fn.name,\n description: fn.description ?? void 0,\n flags: fn.flags\n })),\n libraryCode: lib.library_code\n };\n });\n}\n\n// pkg/commands/function_load.ts\nvar FunctionLoadCommand = class extends Command {\n constructor([args], opts) {\n super([\"function\", \"load\", ...args.replace ? [\"replace\"] : [], args.code], opts);\n }\n};\n\n// pkg/commands/function_stats.ts\nvar FunctionStatsCommand = class extends Command {\n constructor(opts) {\n super([\"function\", \"stats\"], { deserialize: deserialize3, ...opts });\n }\n};\nfunction deserialize3(result) {\n const rawEngines = kvArrayToObject(kvArrayToObject(result).engines);\n const parsedEngines = Object.fromEntries(\n Object.entries(rawEngines).map(([key, value]) => [key, kvArrayToObject(value)])\n );\n const final = {\n engines: Object.fromEntries(\n Object.entries(parsedEngines).map(([key, value]) => [\n key,\n {\n librariesCount: value.libraries_count,\n functionsCount: value.functions_count\n }\n ])\n )\n };\n return final;\n}\n\n// pkg/commands/geo_add.ts\nvar GeoAddCommand = class extends Command {\n constructor([key, arg1, ...arg2], opts) {\n const command = [\"geoadd\", key];\n if (\"nx\" in arg1 && arg1.nx) {\n command.push(\"nx\");\n } else if (\"xx\" in arg1 && arg1.xx) {\n command.push(\"xx\");\n }\n if (\"ch\" in arg1 && arg1.ch) {\n command.push(\"ch\");\n }\n if (\"latitude\" in arg1 && arg1.latitude) {\n command.push(arg1.longitude, arg1.latitude, arg1.member);\n }\n command.push(\n ...arg2.flatMap(({ latitude, longitude, member }) => [longitude, latitude, member])\n );\n super(command, opts);\n }\n};\n\n// pkg/commands/geo_dist.ts\nvar GeoDistCommand = class extends Command {\n constructor([key, member1, member2, unit = \"M\"], opts) {\n super([\"GEODIST\", key, member1, member2, unit], opts);\n }\n};\n\n// pkg/commands/geo_hash.ts\nvar GeoHashCommand = class extends Command {\n constructor(cmd, opts) {\n const [key] = cmd;\n const members = Array.isArray(cmd[1]) ? cmd[1] : cmd.slice(1);\n super([\"GEOHASH\", key, ...members], opts);\n }\n};\n\n// pkg/commands/geo_pos.ts\nvar GeoPosCommand = class extends Command {\n constructor(cmd, opts) {\n const [key] = cmd;\n const members = Array.isArray(cmd[1]) ? cmd[1] : cmd.slice(1);\n super([\"GEOPOS\", key, ...members], {\n deserialize: (result) => transform(result),\n ...opts\n });\n }\n};\nfunction transform(result) {\n const final = [];\n for (const pos of result) {\n if (!pos?.[0] || !pos?.[1]) {\n continue;\n }\n final.push({ lng: Number.parseFloat(pos[0]), lat: Number.parseFloat(pos[1]) });\n }\n return final;\n}\n\n// pkg/commands/geo_search.ts\nvar GeoSearchCommand = class extends Command {\n constructor([key, centerPoint, shape, order, opts], commandOptions) {\n const command = [\"GEOSEARCH\", key];\n if (centerPoint.type === \"FROMMEMBER\" || centerPoint.type === \"frommember\") {\n command.push(centerPoint.type, centerPoint.member);\n }\n if (centerPoint.type === \"FROMLONLAT\" || centerPoint.type === \"fromlonlat\") {\n command.push(centerPoint.type, centerPoint.coordinate.lon, centerPoint.coordinate.lat);\n }\n if (shape.type === \"BYRADIUS\" || shape.type === \"byradius\") {\n command.push(shape.type, shape.radius, shape.radiusType);\n }\n if (shape.type === \"BYBOX\" || shape.type === \"bybox\") {\n command.push(shape.type, shape.rect.width, shape.rect.height, shape.rectType);\n }\n command.push(order);\n if (opts?.count) {\n command.push(\"COUNT\", opts.count.limit, ...opts.count.any ? [\"ANY\"] : []);\n }\n const transform2 = (result) => {\n if (!opts?.withCoord && !opts?.withDist && !opts?.withHash) {\n return result.map((member) => {\n try {\n return { member: JSON.parse(member) };\n } catch {\n return { member };\n }\n });\n }\n return result.map((members) => {\n let counter = 1;\n const obj = {};\n try {\n obj.member = JSON.parse(members[0]);\n } catch {\n obj.member = members[0];\n }\n if (opts.withDist) {\n obj.dist = Number.parseFloat(members[counter++]);\n }\n if (opts.withHash) {\n obj.hash = members[counter++].toString();\n }\n if (opts.withCoord) {\n obj.coord = {\n long: Number.parseFloat(members[counter][0]),\n lat: Number.parseFloat(members[counter][1])\n };\n }\n return obj;\n });\n };\n super(\n [\n ...command,\n ...opts?.withCoord ? [\"WITHCOORD\"] : [],\n ...opts?.withDist ? [\"WITHDIST\"] : [],\n ...opts?.withHash ? [\"WITHHASH\"] : []\n ],\n {\n deserialize: transform2,\n ...commandOptions\n }\n );\n }\n};\n\n// pkg/commands/geo_search_store.ts\nvar GeoSearchStoreCommand = class extends Command {\n constructor([destination, key, centerPoint, shape, order, opts], commandOptions) {\n const command = [\"GEOSEARCHSTORE\", destination, key];\n if (centerPoint.type === \"FROMMEMBER\" || centerPoint.type === \"frommember\") {\n command.push(centerPoint.type, centerPoint.member);\n }\n if (centerPoint.type === \"FROMLONLAT\" || centerPoint.type === \"fromlonlat\") {\n command.push(centerPoint.type, centerPoint.coordinate.lon, centerPoint.coordinate.lat);\n }\n if (shape.type === \"BYRADIUS\" || shape.type === \"byradius\") {\n command.push(shape.type, shape.radius, shape.radiusType);\n }\n if (shape.type === \"BYBOX\" || shape.type === \"bybox\") {\n command.push(shape.type, shape.rect.width, shape.rect.height, shape.rectType);\n }\n command.push(order);\n if (opts?.count) {\n command.push(\"COUNT\", opts.count.limit, ...opts.count.any ? [\"ANY\"] : []);\n }\n super([...command, ...opts?.storeDist ? [\"STOREDIST\"] : []], commandOptions);\n }\n};\n\n// pkg/commands/get.ts\nvar GetCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"get\", ...cmd], opts);\n }\n};\n\n// pkg/commands/getbit.ts\nvar GetBitCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"getbit\", ...cmd], opts);\n }\n};\n\n// pkg/commands/getdel.ts\nvar GetDelCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"getdel\", ...cmd], opts);\n }\n};\n\n// pkg/commands/getex.ts\nvar GetExCommand = class extends Command {\n constructor([key, opts], cmdOpts) {\n const command = [\"getex\", key];\n if (opts) {\n if (\"ex\" in opts && typeof opts.ex === \"number\") {\n command.push(\"ex\", opts.ex);\n } else if (\"px\" in opts && typeof opts.px === \"number\") {\n command.push(\"px\", opts.px);\n } else if (\"exat\" in opts && typeof opts.exat === \"number\") {\n command.push(\"exat\", opts.exat);\n } else if (\"pxat\" in opts && typeof opts.pxat === \"number\") {\n command.push(\"pxat\", opts.pxat);\n } else if (\"persist\" in opts && opts.persist) {\n command.push(\"persist\");\n }\n }\n super(command, cmdOpts);\n }\n};\n\n// pkg/commands/getrange.ts\nvar GetRangeCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"getrange\", ...cmd], opts);\n }\n};\n\n// pkg/commands/getset.ts\nvar GetSetCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"getset\", ...cmd], opts);\n }\n};\n\n// pkg/commands/hdel.ts\nvar HDelCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"hdel\", ...cmd], opts);\n }\n};\n\n// pkg/commands/hexists.ts\nvar HExistsCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"hexists\", ...cmd], opts);\n }\n};\n\n// pkg/commands/hexpire.ts\nvar HExpireCommand = class extends Command {\n constructor(cmd, opts) {\n const [key, fields, seconds, option] = cmd;\n const fieldArray = Array.isArray(fields) ? fields : [fields];\n super(\n [\n \"hexpire\",\n key,\n seconds,\n ...option ? [option] : [],\n \"FIELDS\",\n fieldArray.length,\n ...fieldArray\n ],\n opts\n );\n }\n};\n\n// pkg/commands/hexpireat.ts\nvar HExpireAtCommand = class extends Command {\n constructor(cmd, opts) {\n const [key, fields, timestamp, option] = cmd;\n const fieldArray = Array.isArray(fields) ? fields : [fields];\n super(\n [\n \"hexpireat\",\n key,\n timestamp,\n ...option ? [option] : [],\n \"FIELDS\",\n fieldArray.length,\n ...fieldArray\n ],\n opts\n );\n }\n};\n\n// pkg/commands/hexpiretime.ts\nvar HExpireTimeCommand = class extends Command {\n constructor(cmd, opts) {\n const [key, fields] = cmd;\n const fieldArray = Array.isArray(fields) ? fields : [fields];\n super([\"hexpiretime\", key, \"FIELDS\", fieldArray.length, ...fieldArray], opts);\n }\n};\n\n// pkg/commands/hpersist.ts\nvar HPersistCommand = class extends Command {\n constructor(cmd, opts) {\n const [key, fields] = cmd;\n const fieldArray = Array.isArray(fields) ? fields : [fields];\n super([\"hpersist\", key, \"FIELDS\", fieldArray.length, ...fieldArray], opts);\n }\n};\n\n// pkg/commands/hpexpire.ts\nvar HPExpireCommand = class extends Command {\n constructor(cmd, opts) {\n const [key, fields, milliseconds, option] = cmd;\n const fieldArray = Array.isArray(fields) ? fields : [fields];\n super(\n [\n \"hpexpire\",\n key,\n milliseconds,\n ...option ? [option] : [],\n \"FIELDS\",\n fieldArray.length,\n ...fieldArray\n ],\n opts\n );\n }\n};\n\n// pkg/commands/hpexpireat.ts\nvar HPExpireAtCommand = class extends Command {\n constructor(cmd, opts) {\n const [key, fields, timestamp, option] = cmd;\n const fieldArray = Array.isArray(fields) ? fields : [fields];\n super(\n [\n \"hpexpireat\",\n key,\n timestamp,\n ...option ? [option] : [],\n \"FIELDS\",\n fieldArray.length,\n ...fieldArray\n ],\n opts\n );\n }\n};\n\n// pkg/commands/hpexpiretime.ts\nvar HPExpireTimeCommand = class extends Command {\n constructor(cmd, opts) {\n const [key, fields] = cmd;\n const fieldArray = Array.isArray(fields) ? fields : [fields];\n super([\"hpexpiretime\", key, \"FIELDS\", fieldArray.length, ...fieldArray], opts);\n }\n};\n\n// pkg/commands/hpttl.ts\nvar HPTtlCommand = class extends Command {\n constructor(cmd, opts) {\n const [key, fields] = cmd;\n const fieldArray = Array.isArray(fields) ? fields : [fields];\n super([\"hpttl\", key, \"FIELDS\", fieldArray.length, ...fieldArray], opts);\n }\n};\n\n// pkg/commands/hget.ts\nvar HGetCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"hget\", ...cmd], opts);\n }\n};\n\n// pkg/commands/hgetall.ts\nfunction deserialize4(result) {\n if (result.length === 0) {\n return null;\n }\n const obj = {};\n for (let i = 0; i < result.length; i += 2) {\n const key = result[i];\n const value = result[i + 1];\n try {\n const valueIsNumberAndNotSafeInteger = !Number.isNaN(Number(value)) && !Number.isSafeInteger(Number(value));\n obj[key] = valueIsNumberAndNotSafeInteger ? value : JSON.parse(value);\n } catch {\n obj[key] = value;\n }\n }\n return obj;\n}\nvar HGetAllCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"hgetall\", ...cmd], {\n deserialize: (result) => deserialize4(result),\n ...opts\n });\n }\n};\n\n// pkg/commands/hmget.ts\nfunction deserialize5(fields, result) {\n if (result.every((field) => field === null)) {\n return null;\n }\n const obj = {};\n for (const [i, field] of fields.entries()) {\n try {\n obj[field] = JSON.parse(result[i]);\n } catch {\n obj[field] = result[i];\n }\n }\n return obj;\n}\nvar HMGetCommand = class extends Command {\n constructor([key, ...fields], opts) {\n super([\"hmget\", key, ...fields], {\n deserialize: (result) => deserialize5(fields, result),\n ...opts\n });\n }\n};\n\n// pkg/commands/hgetdel.ts\nvar HGetDelCommand = class extends Command {\n constructor([key, ...fields], opts) {\n super([\"hgetdel\", key, \"FIELDS\", fields.length, ...fields], {\n deserialize: (result) => deserialize5(fields.map(String), result),\n ...opts\n });\n }\n};\n\n// pkg/commands/hgetex.ts\nvar HGetExCommand = class extends Command {\n constructor([key, opts, ...fields], cmdOpts) {\n const command = [\"hgetex\", key];\n if (\"ex\" in opts && typeof opts.ex === \"number\") {\n command.push(\"EX\", opts.ex);\n } else if (\"px\" in opts && typeof opts.px === \"number\") {\n command.push(\"PX\", opts.px);\n } else if (\"exat\" in opts && typeof opts.exat === \"number\") {\n command.push(\"EXAT\", opts.exat);\n } else if (\"pxat\" in opts && typeof opts.pxat === \"number\") {\n command.push(\"PXAT\", opts.pxat);\n } else if (\"persist\" in opts && opts.persist) {\n command.push(\"PERSIST\");\n }\n command.push(\"FIELDS\", fields.length, ...fields);\n super(command, {\n deserialize: (result) => deserialize5(fields.map(String), result),\n ...cmdOpts\n });\n }\n};\n\n// pkg/commands/hincrby.ts\nvar HIncrByCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"hincrby\", ...cmd], opts);\n }\n};\n\n// pkg/commands/hincrbyfloat.ts\nvar HIncrByFloatCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"hincrbyfloat\", ...cmd], opts);\n }\n};\n\n// pkg/commands/hkeys.ts\nvar HKeysCommand = class extends Command {\n constructor([key], opts) {\n super([\"hkeys\", key], opts);\n }\n};\n\n// pkg/commands/hlen.ts\nvar HLenCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"hlen\", ...cmd], opts);\n }\n};\n\n// pkg/commands/hmset.ts\nvar HMSetCommand = class extends Command {\n constructor([key, kv], opts) {\n super([\"hmset\", key, ...Object.entries(kv).flatMap(([field, value]) => [field, value])], opts);\n }\n};\n\n// pkg/commands/hscan.ts\nvar HScanCommand = class extends Command {\n constructor([key, cursor, cmdOpts], opts) {\n const command = [\"hscan\", key, cursor];\n if (cmdOpts?.match) {\n command.push(\"match\", cmdOpts.match);\n }\n if (typeof cmdOpts?.count === \"number\") {\n command.push(\"count\", cmdOpts.count);\n }\n super(command, {\n deserialize: deserializeScanResponse,\n ...opts\n });\n }\n};\n\n// pkg/commands/hset.ts\nvar HSetCommand = class extends Command {\n constructor([key, kv], opts) {\n super([\"hset\", key, ...Object.entries(kv).flatMap(([field, value]) => [field, value])], opts);\n }\n};\n\n// pkg/commands/hsetex.ts\nvar HSetExCommand = class extends Command {\n constructor([key, opts, kv], cmdOpts) {\n const command = [\"hsetex\", key];\n if (opts.conditional) {\n command.push(opts.conditional.toUpperCase());\n }\n if (opts.expiration) {\n if (\"ex\" in opts.expiration && typeof opts.expiration.ex === \"number\") {\n command.push(\"EX\", opts.expiration.ex);\n } else if (\"px\" in opts.expiration && typeof opts.expiration.px === \"number\") {\n command.push(\"PX\", opts.expiration.px);\n } else if (\"exat\" in opts.expiration && typeof opts.expiration.exat === \"number\") {\n command.push(\"EXAT\", opts.expiration.exat);\n } else if (\"pxat\" in opts.expiration && typeof opts.expiration.pxat === \"number\") {\n command.push(\"PXAT\", opts.expiration.pxat);\n } else if (\"keepttl\" in opts.expiration && opts.expiration.keepttl) {\n command.push(\"KEEPTTL\");\n }\n }\n const entries = Object.entries(kv);\n command.push(\"FIELDS\", entries.length);\n for (const [field, value] of entries) {\n command.push(field, value);\n }\n super(command, cmdOpts);\n }\n};\n\n// pkg/commands/hsetnx.ts\nvar HSetNXCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"hsetnx\", ...cmd], opts);\n }\n};\n\n// pkg/commands/hstrlen.ts\nvar HStrLenCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"hstrlen\", ...cmd], opts);\n }\n};\n\n// pkg/commands/httl.ts\nvar HTtlCommand = class extends Command {\n constructor(cmd, opts) {\n const [key, fields] = cmd;\n const fieldArray = Array.isArray(fields) ? fields : [fields];\n super([\"httl\", key, \"FIELDS\", fieldArray.length, ...fieldArray], opts);\n }\n};\n\n// pkg/commands/hvals.ts\nvar HValsCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"hvals\", ...cmd], opts);\n }\n};\n\n// pkg/commands/incr.ts\nvar IncrCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"incr\", ...cmd], opts);\n }\n};\n\n// pkg/commands/incrby.ts\nvar IncrByCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"incrby\", ...cmd], opts);\n }\n};\n\n// pkg/commands/incrbyfloat.ts\nvar IncrByFloatCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"incrbyfloat\", ...cmd], opts);\n }\n};\n\n// pkg/commands/json_arrappend.ts\nvar JsonArrAppendCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"JSON.ARRAPPEND\", ...cmd], opts);\n }\n};\n\n// pkg/commands/json_arrindex.ts\nvar JsonArrIndexCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"JSON.ARRINDEX\", ...cmd], opts);\n }\n};\n\n// pkg/commands/json_arrinsert.ts\nvar JsonArrInsertCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"JSON.ARRINSERT\", ...cmd], opts);\n }\n};\n\n// pkg/commands/json_arrlen.ts\nvar JsonArrLenCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"JSON.ARRLEN\", cmd[0], cmd[1] ?? \"$\"], opts);\n }\n};\n\n// pkg/commands/json_arrpop.ts\nvar JsonArrPopCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"JSON.ARRPOP\", ...cmd], opts);\n }\n};\n\n// pkg/commands/json_arrtrim.ts\nvar JsonArrTrimCommand = class extends Command {\n constructor(cmd, opts) {\n const path = cmd[1] ?? \"$\";\n const start = cmd[2] ?? 0;\n const stop = cmd[3] ?? 0;\n super([\"JSON.ARRTRIM\", cmd[0], path, start, stop], opts);\n }\n};\n\n// pkg/commands/json_clear.ts\nvar JsonClearCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"JSON.CLEAR\", ...cmd], opts);\n }\n};\n\n// pkg/commands/json_del.ts\nvar JsonDelCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"JSON.DEL\", ...cmd], opts);\n }\n};\n\n// pkg/commands/json_forget.ts\nvar JsonForgetCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"JSON.FORGET\", ...cmd], opts);\n }\n};\n\n// pkg/commands/json_get.ts\nvar JsonGetCommand = class extends Command {\n constructor(cmd, opts) {\n const command = [\"JSON.GET\"];\n if (typeof cmd[1] === \"string\") {\n command.push(...cmd);\n } else {\n command.push(cmd[0]);\n if (cmd[1]) {\n if (cmd[1].indent) {\n command.push(\"INDENT\", cmd[1].indent);\n }\n if (cmd[1].newline) {\n command.push(\"NEWLINE\", cmd[1].newline);\n }\n if (cmd[1].space) {\n command.push(\"SPACE\", cmd[1].space);\n }\n }\n command.push(...cmd.slice(2));\n }\n super(command, opts);\n }\n};\n\n// pkg/commands/json_merge.ts\nvar JsonMergeCommand = class extends Command {\n constructor(cmd, opts) {\n const command = [\"JSON.MERGE\", ...cmd];\n super(command, opts);\n }\n};\n\n// pkg/commands/json_mget.ts\nvar JsonMGetCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"JSON.MGET\", ...cmd[0], cmd[1]], opts);\n }\n};\n\n// pkg/commands/json_mset.ts\nvar JsonMSetCommand = class extends Command {\n constructor(cmd, opts) {\n const command = [\"JSON.MSET\"];\n for (const c of cmd) {\n command.push(c.key, c.path, c.value);\n }\n super(command, opts);\n }\n};\n\n// pkg/commands/json_numincrby.ts\nvar JsonNumIncrByCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"JSON.NUMINCRBY\", ...cmd], opts);\n }\n};\n\n// pkg/commands/json_nummultby.ts\nvar JsonNumMultByCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"JSON.NUMMULTBY\", ...cmd], opts);\n }\n};\n\n// pkg/commands/json_objkeys.ts\nvar JsonObjKeysCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"JSON.OBJKEYS\", ...cmd], opts);\n }\n};\n\n// pkg/commands/json_objlen.ts\nvar JsonObjLenCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"JSON.OBJLEN\", ...cmd], opts);\n }\n};\n\n// pkg/commands/json_resp.ts\nvar JsonRespCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"JSON.RESP\", ...cmd], opts);\n }\n};\n\n// pkg/commands/json_set.ts\nvar JsonSetCommand = class extends Command {\n constructor(cmd, opts) {\n const command = [\"JSON.SET\", cmd[0], cmd[1], cmd[2]];\n if (cmd[3]) {\n if (cmd[3].nx) {\n command.push(\"NX\");\n } else if (cmd[3].xx) {\n command.push(\"XX\");\n }\n }\n super(command, opts);\n }\n};\n\n// pkg/commands/json_strappend.ts\nvar JsonStrAppendCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"JSON.STRAPPEND\", ...cmd], opts);\n }\n};\n\n// pkg/commands/json_strlen.ts\nvar JsonStrLenCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"JSON.STRLEN\", ...cmd], opts);\n }\n};\n\n// pkg/commands/json_toggle.ts\nvar JsonToggleCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"JSON.TOGGLE\", ...cmd], opts);\n }\n};\n\n// pkg/commands/json_type.ts\nvar JsonTypeCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"JSON.TYPE\", ...cmd], opts);\n }\n};\n\n// pkg/commands/keys.ts\nvar KeysCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"keys\", ...cmd], opts);\n }\n};\n\n// pkg/commands/lindex.ts\nvar LIndexCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"lindex\", ...cmd], opts);\n }\n};\n\n// pkg/commands/linsert.ts\nvar LInsertCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"linsert\", ...cmd], opts);\n }\n};\n\n// pkg/commands/llen.ts\nvar LLenCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"llen\", ...cmd], opts);\n }\n};\n\n// pkg/commands/lmove.ts\nvar LMoveCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"lmove\", ...cmd], opts);\n }\n};\n\n// pkg/commands/lmpop.ts\nvar LmPopCommand = class extends Command {\n constructor(cmd, opts) {\n const [numkeys, keys, direction, count] = cmd;\n super([\"LMPOP\", numkeys, ...keys, direction, ...count ? [\"COUNT\", count] : []], opts);\n }\n};\n\n// pkg/commands/lpop.ts\nvar LPopCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"lpop\", ...cmd], opts);\n }\n};\n\n// pkg/commands/lpos.ts\nvar LPosCommand = class extends Command {\n constructor(cmd, opts) {\n const args = [\"lpos\", cmd[0], cmd[1]];\n if (typeof cmd[2]?.rank === \"number\") {\n args.push(\"rank\", cmd[2].rank);\n }\n if (typeof cmd[2]?.count === \"number\") {\n args.push(\"count\", cmd[2].count);\n }\n if (typeof cmd[2]?.maxLen === \"number\") {\n args.push(\"maxLen\", cmd[2].maxLen);\n }\n super(args, opts);\n }\n};\n\n// pkg/commands/lpush.ts\nvar LPushCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"lpush\", ...cmd], opts);\n }\n};\n\n// pkg/commands/lpushx.ts\nvar LPushXCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"lpushx\", ...cmd], opts);\n }\n};\n\n// pkg/commands/lrange.ts\nvar LRangeCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"lrange\", ...cmd], opts);\n }\n};\n\n// pkg/commands/lrem.ts\nvar LRemCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"lrem\", ...cmd], opts);\n }\n};\n\n// pkg/commands/lset.ts\nvar LSetCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"lset\", ...cmd], opts);\n }\n};\n\n// pkg/commands/ltrim.ts\nvar LTrimCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"ltrim\", ...cmd], opts);\n }\n};\n\n// pkg/commands/mget.ts\nvar MGetCommand = class extends Command {\n constructor(cmd, opts) {\n const keys = Array.isArray(cmd[0]) ? cmd[0] : cmd;\n super([\"mget\", ...keys], opts);\n }\n};\n\n// pkg/commands/mset.ts\nvar MSetCommand = class extends Command {\n constructor([kv], opts) {\n super([\"mset\", ...Object.entries(kv).flatMap(([key, value]) => [key, value])], opts);\n }\n};\n\n// pkg/commands/msetnx.ts\nvar MSetNXCommand = class extends Command {\n constructor([kv], opts) {\n super([\"msetnx\", ...Object.entries(kv).flat()], opts);\n }\n};\n\n// pkg/commands/persist.ts\nvar PersistCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"persist\", ...cmd], opts);\n }\n};\n\n// pkg/commands/pexpire.ts\nvar PExpireCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"pexpire\", ...cmd], opts);\n }\n};\n\n// pkg/commands/pexpireat.ts\nvar PExpireAtCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"pexpireat\", ...cmd], opts);\n }\n};\n\n// pkg/commands/pfadd.ts\nvar PfAddCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"pfadd\", ...cmd], opts);\n }\n};\n\n// pkg/commands/pfcount.ts\nvar PfCountCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"pfcount\", ...cmd], opts);\n }\n};\n\n// pkg/commands/pfmerge.ts\nvar PfMergeCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"pfmerge\", ...cmd], opts);\n }\n};\n\n// pkg/commands/ping.ts\nvar PingCommand = class extends Command {\n constructor(cmd, opts) {\n const command = [\"ping\"];\n if (cmd?.[0] !== void 0) {\n command.push(cmd[0]);\n }\n super(command, opts);\n }\n};\n\n// pkg/commands/psetex.ts\nvar PSetEXCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"psetex\", ...cmd], opts);\n }\n};\n\n// pkg/commands/pttl.ts\nvar PTtlCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"pttl\", ...cmd], opts);\n }\n};\n\n// pkg/commands/publish.ts\nvar PublishCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"publish\", ...cmd], opts);\n }\n};\n\n// pkg/commands/randomkey.ts\nvar RandomKeyCommand = class extends Command {\n constructor(opts) {\n super([\"randomkey\"], opts);\n }\n};\n\n// pkg/commands/rename.ts\nvar RenameCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"rename\", ...cmd], opts);\n }\n};\n\n// pkg/commands/renamenx.ts\nvar RenameNXCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"renamenx\", ...cmd], opts);\n }\n};\n\n// pkg/commands/rpop.ts\nvar RPopCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"rpop\", ...cmd], opts);\n }\n};\n\n// pkg/commands/rpush.ts\nvar RPushCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"rpush\", ...cmd], opts);\n }\n};\n\n// pkg/commands/rpushx.ts\nvar RPushXCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"rpushx\", ...cmd], opts);\n }\n};\n\n// pkg/commands/sadd.ts\nvar SAddCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"sadd\", ...cmd], opts);\n }\n};\n\n// pkg/commands/scan.ts\nvar ScanCommand = class extends Command {\n constructor([cursor, opts], cmdOpts) {\n const command = [\"scan\", cursor];\n if (opts?.match) {\n command.push(\"match\", opts.match);\n }\n if (typeof opts?.count === \"number\") {\n command.push(\"count\", opts.count);\n }\n if (opts && \"withType\" in opts && opts.withType === true) {\n command.push(\"withtype\");\n } else if (opts && \"type\" in opts && opts.type && opts.type.length > 0) {\n command.push(\"type\", opts.type);\n }\n super(command, {\n // @ts-expect-error ignore types here\n deserialize: opts?.withType ? deserializeScanWithTypesResponse : deserializeScanResponse,\n ...cmdOpts\n });\n }\n};\n\n// pkg/commands/scard.ts\nvar SCardCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"scard\", ...cmd], opts);\n }\n};\n\n// pkg/commands/script_exists.ts\nvar ScriptExistsCommand = class extends Command {\n constructor(hashes, opts) {\n super([\"script\", \"exists\", ...hashes], {\n deserialize: (result) => result,\n ...opts\n });\n }\n};\n\n// pkg/commands/script_flush.ts\nvar ScriptFlushCommand = class extends Command {\n constructor([opts], cmdOpts) {\n const cmd = [\"script\", \"flush\"];\n if (opts?.sync) {\n cmd.push(\"sync\");\n } else if (opts?.async) {\n cmd.push(\"async\");\n }\n super(cmd, cmdOpts);\n }\n};\n\n// pkg/commands/script_load.ts\nvar ScriptLoadCommand = class extends Command {\n constructor(args, opts) {\n super([\"script\", \"load\", ...args], opts);\n }\n};\n\n// pkg/commands/sdiff.ts\nvar SDiffCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"sdiff\", ...cmd], opts);\n }\n};\n\n// pkg/commands/sdiffstore.ts\nvar SDiffStoreCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"sdiffstore\", ...cmd], opts);\n }\n};\n\n// pkg/commands/set.ts\nvar SetCommand = class extends Command {\n constructor([key, value, opts], cmdOpts) {\n const command = [\"set\", key, value];\n if (opts) {\n if (\"nx\" in opts && opts.nx) {\n command.push(\"nx\");\n } else if (\"xx\" in opts && opts.xx) {\n command.push(\"xx\");\n }\n if (\"get\" in opts && opts.get) {\n command.push(\"get\");\n }\n if (\"ex\" in opts && typeof opts.ex === \"number\") {\n command.push(\"ex\", opts.ex);\n } else if (\"px\" in opts && typeof opts.px === \"number\") {\n command.push(\"px\", opts.px);\n } else if (\"exat\" in opts && typeof opts.exat === \"number\") {\n command.push(\"exat\", opts.exat);\n } else if (\"pxat\" in opts && typeof opts.pxat === \"number\") {\n command.push(\"pxat\", opts.pxat);\n } else if (\"keepTtl\" in opts && opts.keepTtl) {\n command.push(\"keepTtl\");\n }\n }\n super(command, cmdOpts);\n }\n};\n\n// pkg/commands/setbit.ts\nvar SetBitCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"setbit\", ...cmd], opts);\n }\n};\n\n// pkg/commands/setex.ts\nvar SetExCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"setex\", ...cmd], opts);\n }\n};\n\n// pkg/commands/setnx.ts\nvar SetNxCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"setnx\", ...cmd], opts);\n }\n};\n\n// pkg/commands/setrange.ts\nvar SetRangeCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"setrange\", ...cmd], opts);\n }\n};\n\n// pkg/commands/sinter.ts\nvar SInterCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"sinter\", ...cmd], opts);\n }\n};\n\n// pkg/commands/sintercard.ts\nvar SInterCardCommand = class extends Command {\n constructor(cmd, cmdOpts) {\n const [keys, opts] = cmd;\n const command = [\"sintercard\", keys.length, ...keys];\n if (opts?.limit !== void 0) {\n command.push(\"LIMIT\", opts.limit);\n }\n super(command, cmdOpts);\n }\n};\n\n// pkg/commands/sinterstore.ts\nvar SInterStoreCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"sinterstore\", ...cmd], opts);\n }\n};\n\n// pkg/commands/sismember.ts\nvar SIsMemberCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"sismember\", ...cmd], opts);\n }\n};\n\n// pkg/commands/smembers.ts\nvar SMembersCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"smembers\", ...cmd], opts);\n }\n};\n\n// pkg/commands/smismember.ts\nvar SMIsMemberCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"smismember\", cmd[0], ...cmd[1]], opts);\n }\n};\n\n// pkg/commands/smove.ts\nvar SMoveCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"smove\", ...cmd], opts);\n }\n};\n\n// pkg/commands/spop.ts\nvar SPopCommand = class extends Command {\n constructor([key, count], opts) {\n const command = [\"spop\", key];\n if (typeof count === \"number\") {\n command.push(count);\n }\n super(command, opts);\n }\n};\n\n// pkg/commands/srandmember.ts\nvar SRandMemberCommand = class extends Command {\n constructor([key, count], opts) {\n const command = [\"srandmember\", key];\n if (typeof count === \"number\") {\n command.push(count);\n }\n super(command, opts);\n }\n};\n\n// pkg/commands/srem.ts\nvar SRemCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"srem\", ...cmd], opts);\n }\n};\n\n// pkg/commands/sscan.ts\nvar SScanCommand = class extends Command {\n constructor([key, cursor, opts], cmdOpts) {\n const command = [\"sscan\", key, cursor];\n if (opts?.match) {\n command.push(\"match\", opts.match);\n }\n if (typeof opts?.count === \"number\") {\n command.push(\"count\", opts.count);\n }\n super(command, {\n deserialize: deserializeScanResponse,\n ...cmdOpts\n });\n }\n};\n\n// pkg/commands/strlen.ts\nvar StrLenCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"strlen\", ...cmd], opts);\n }\n};\n\n// pkg/commands/sunion.ts\nvar SUnionCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"sunion\", ...cmd], opts);\n }\n};\n\n// pkg/commands/sunionstore.ts\nvar SUnionStoreCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"sunionstore\", ...cmd], opts);\n }\n};\n\n// pkg/commands/time.ts\nvar TimeCommand = class extends Command {\n constructor(opts) {\n super([\"time\"], opts);\n }\n};\n\n// pkg/commands/touch.ts\nvar TouchCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"touch\", ...cmd], opts);\n }\n};\n\n// pkg/commands/ttl.ts\nvar TtlCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"ttl\", ...cmd], opts);\n }\n};\n\n// pkg/commands/type.ts\nvar TypeCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"type\", ...cmd], opts);\n }\n};\n\n// pkg/commands/unlink.ts\nvar UnlinkCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"unlink\", ...cmd], opts);\n }\n};\n\n// pkg/commands/xack.ts\nvar XAckCommand = class extends Command {\n constructor([key, group, id], opts) {\n const ids = Array.isArray(id) ? [...id] : [id];\n super([\"XACK\", key, group, ...ids], opts);\n }\n};\n\n// pkg/commands/xackdel.ts\nvar XAckDelCommand = class extends Command {\n constructor([key, group, opts, ...ids], cmdOpts) {\n const command = [\"XACKDEL\", key, group];\n command.push(opts.toUpperCase(), \"IDS\", ids.length, ...ids);\n super(command, cmdOpts);\n }\n};\n\n// pkg/commands/xadd.ts\nvar XAddCommand = class extends Command {\n constructor([key, id, entries, opts], commandOptions) {\n const command = [\"XADD\", key];\n if (opts) {\n if (opts.nomkStream) {\n command.push(\"NOMKSTREAM\");\n }\n if (opts.trim) {\n command.push(opts.trim.type, opts.trim.comparison, opts.trim.threshold);\n if (opts.trim.limit !== void 0) {\n command.push(\"LIMIT\", opts.trim.limit);\n }\n }\n }\n command.push(id);\n for (const [k, v] of Object.entries(entries)) {\n command.push(k, v);\n }\n super(command, commandOptions);\n }\n};\n\n// pkg/commands/xautoclaim.ts\nvar XAutoClaim = class extends Command {\n constructor([key, group, consumer, minIdleTime, start, options], opts) {\n const commands = [];\n if (options?.count) {\n commands.push(\"COUNT\", options.count);\n }\n if (options?.justId) {\n commands.push(\"JUSTID\");\n }\n super([\"XAUTOCLAIM\", key, group, consumer, minIdleTime, start, ...commands], opts);\n }\n};\n\n// pkg/commands/xclaim.ts\nvar XClaimCommand = class extends Command {\n constructor([key, group, consumer, minIdleTime, id, options], opts) {\n const ids = Array.isArray(id) ? [...id] : [id];\n const commands = [];\n if (options?.idleMS) {\n commands.push(\"IDLE\", options.idleMS);\n }\n if (options?.idleMS) {\n commands.push(\"TIME\", options.timeMS);\n }\n if (options?.retryCount) {\n commands.push(\"RETRYCOUNT\", options.retryCount);\n }\n if (options?.force) {\n commands.push(\"FORCE\");\n }\n if (options?.justId) {\n commands.push(\"JUSTID\");\n }\n if (options?.lastId) {\n commands.push(\"LASTID\", options.lastId);\n }\n super([\"XCLAIM\", key, group, consumer, minIdleTime, ...ids, ...commands], opts);\n }\n};\n\n// pkg/commands/xdel.ts\nvar XDelCommand = class extends Command {\n constructor([key, ids], opts) {\n const cmds = Array.isArray(ids) ? [...ids] : [ids];\n super([\"XDEL\", key, ...cmds], opts);\n }\n};\n\n// pkg/commands/xdelex.ts\nvar XDelExCommand = class extends Command {\n constructor([key, opts, ...ids], cmdOpts) {\n const command = [\"XDELEX\", key];\n if (opts) {\n command.push(opts.toUpperCase());\n }\n command.push(\"IDS\", ids.length, ...ids);\n super(command, cmdOpts);\n }\n};\n\n// pkg/commands/xgroup.ts\nvar XGroupCommand = class extends Command {\n constructor([key, opts], commandOptions) {\n const command = [\"XGROUP\"];\n switch (opts.type) {\n case \"CREATE\": {\n command.push(\"CREATE\", key, opts.group, opts.id);\n if (opts.options) {\n if (opts.options.MKSTREAM) {\n command.push(\"MKSTREAM\");\n }\n if (opts.options.ENTRIESREAD !== void 0) {\n command.push(\"ENTRIESREAD\", opts.options.ENTRIESREAD.toString());\n }\n }\n break;\n }\n case \"CREATECONSUMER\": {\n command.push(\"CREATECONSUMER\", key, opts.group, opts.consumer);\n break;\n }\n case \"DELCONSUMER\": {\n command.push(\"DELCONSUMER\", key, opts.group, opts.consumer);\n break;\n }\n case \"DESTROY\": {\n command.push(\"DESTROY\", key, opts.group);\n break;\n }\n case \"SETID\": {\n command.push(\"SETID\", key, opts.group, opts.id);\n if (opts.options?.ENTRIESREAD !== void 0) {\n command.push(\"ENTRIESREAD\", opts.options.ENTRIESREAD.toString());\n }\n break;\n }\n default: {\n throw new Error(\"Invalid XGROUP\");\n }\n }\n super(command, commandOptions);\n }\n};\n\n// pkg/commands/xinfo.ts\nvar XInfoCommand = class extends Command {\n constructor([key, options], opts) {\n const cmds = [];\n if (options.type === \"CONSUMERS\") {\n cmds.push(\"CONSUMERS\", key, options.group);\n } else {\n cmds.push(\"GROUPS\", key);\n }\n super([\"XINFO\", ...cmds], opts);\n }\n};\n\n// pkg/commands/xlen.ts\nvar XLenCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"XLEN\", ...cmd], opts);\n }\n};\n\n// pkg/commands/xpending.ts\nvar XPendingCommand = class extends Command {\n constructor([key, group, start, end, count, options], opts) {\n const consumers = options?.consumer === void 0 ? [] : Array.isArray(options.consumer) ? [...options.consumer] : [options.consumer];\n super(\n [\n \"XPENDING\",\n key,\n group,\n ...options?.idleTime ? [\"IDLE\", options.idleTime] : [],\n start,\n end,\n count,\n ...consumers\n ],\n opts\n );\n }\n};\n\n// pkg/commands/xrange.ts\nfunction deserialize6(result) {\n const obj = {};\n for (const e of result) {\n for (let i = 0; i < e.length; i += 2) {\n const streamId = e[i];\n const entries = e[i + 1];\n if (!(streamId in obj)) {\n obj[streamId] = {};\n }\n for (let j = 0; j < entries.length; j += 2) {\n const field = entries[j];\n const value = entries[j + 1];\n try {\n obj[streamId][field] = JSON.parse(value);\n } catch {\n obj[streamId][field] = value;\n }\n }\n }\n }\n return obj;\n}\nvar XRangeCommand = class extends Command {\n constructor([key, start, end, count], opts) {\n const command = [\"XRANGE\", key, start, end];\n if (typeof count === \"number\") {\n command.push(\"COUNT\", count);\n }\n super(command, {\n deserialize: (result) => deserialize6(result),\n ...opts\n });\n }\n};\n\n// pkg/commands/xread.ts\nvar UNBALANCED_XREAD_ERR = \"ERR Unbalanced XREAD list of streams: for each stream key an ID or '$' must be specified\";\nvar XReadCommand = class extends Command {\n constructor([key, id, options], opts) {\n if (Array.isArray(key) && Array.isArray(id) && key.length !== id.length) {\n throw new Error(UNBALANCED_XREAD_ERR);\n }\n const commands = [];\n if (typeof options?.count === \"number\") {\n commands.push(\"COUNT\", options.count);\n }\n if (typeof options?.blockMS === \"number\") {\n commands.push(\"BLOCK\", options.blockMS);\n }\n commands.push(\n \"STREAMS\",\n ...Array.isArray(key) ? [...key] : [key],\n ...Array.isArray(id) ? [...id] : [id]\n );\n super([\"XREAD\", ...commands], opts);\n }\n};\n\n// pkg/commands/xreadgroup.ts\nvar UNBALANCED_XREADGROUP_ERR = \"ERR Unbalanced XREADGROUP list of streams: for each stream key an ID or '$' must be specified\";\nvar XReadGroupCommand = class extends Command {\n constructor([group, consumer, key, id, options], opts) {\n if (Array.isArray(key) && Array.isArray(id) && key.length !== id.length) {\n throw new Error(UNBALANCED_XREADGROUP_ERR);\n }\n const commands = [];\n if (typeof options?.count === \"number\") {\n commands.push(\"COUNT\", options.count);\n }\n if (typeof options?.blockMS === \"number\") {\n commands.push(\"BLOCK\", options.blockMS);\n }\n if (typeof options?.NOACK === \"boolean\" && options.NOACK) {\n commands.push(\"NOACK\");\n }\n commands.push(\n \"STREAMS\",\n ...Array.isArray(key) ? [...key] : [key],\n ...Array.isArray(id) ? [...id] : [id]\n );\n super([\"XREADGROUP\", \"GROUP\", group, consumer, ...commands], opts);\n }\n};\n\n// pkg/commands/xrevrange.ts\nvar XRevRangeCommand = class extends Command {\n constructor([key, end, start, count], opts) {\n const command = [\"XREVRANGE\", key, end, start];\n if (typeof count === \"number\") {\n command.push(\"COUNT\", count);\n }\n super(command, {\n deserialize: (result) => deserialize7(result),\n ...opts\n });\n }\n};\nfunction deserialize7(result) {\n const obj = {};\n for (const e of result) {\n for (let i = 0; i < e.length; i += 2) {\n const streamId = e[i];\n const entries = e[i + 1];\n if (!(streamId in obj)) {\n obj[streamId] = {};\n }\n for (let j = 0; j < entries.length; j += 2) {\n const field = entries[j];\n const value = entries[j + 1];\n try {\n obj[streamId][field] = JSON.parse(value);\n } catch {\n obj[streamId][field] = value;\n }\n }\n }\n }\n return obj;\n}\n\n// pkg/commands/xtrim.ts\nvar XTrimCommand = class extends Command {\n constructor([key, options], opts) {\n const { limit, strategy, threshold, exactness = \"~\" } = options;\n super([\"XTRIM\", key, strategy, exactness, threshold, ...limit ? [\"LIMIT\", limit] : []], opts);\n }\n};\n\n// pkg/commands/zadd.ts\nvar ZAddCommand = class extends Command {\n constructor([key, arg1, ...arg2], opts) {\n const command = [\"zadd\", key];\n if (\"nx\" in arg1 && arg1.nx) {\n command.push(\"nx\");\n } else if (\"xx\" in arg1 && arg1.xx) {\n command.push(\"xx\");\n }\n if (\"ch\" in arg1 && arg1.ch) {\n command.push(\"ch\");\n }\n if (\"incr\" in arg1 && arg1.incr) {\n command.push(\"incr\");\n }\n if (\"lt\" in arg1 && arg1.lt) {\n command.push(\"lt\");\n } else if (\"gt\" in arg1 && arg1.gt) {\n command.push(\"gt\");\n }\n if (\"score\" in arg1 && \"member\" in arg1) {\n command.push(arg1.score, arg1.member);\n }\n command.push(...arg2.flatMap(({ score, member }) => [score, member]));\n super(command, opts);\n }\n};\n\n// pkg/commands/zcard.ts\nvar ZCardCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"zcard\", ...cmd], opts);\n }\n};\n\n// pkg/commands/zcount.ts\nvar ZCountCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"zcount\", ...cmd], opts);\n }\n};\n\n// pkg/commands/zincrby.ts\nvar ZIncrByCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"zincrby\", ...cmd], opts);\n }\n};\n\n// pkg/commands/zinterstore.ts\nvar ZInterStoreCommand = class extends Command {\n constructor([destination, numKeys, keyOrKeys, opts], cmdOpts) {\n const command = [\"zinterstore\", destination, numKeys];\n if (Array.isArray(keyOrKeys)) {\n command.push(...keyOrKeys);\n } else {\n command.push(keyOrKeys);\n }\n if (opts) {\n if (\"weights\" in opts && opts.weights) {\n command.push(\"weights\", ...opts.weights);\n } else if (\"weight\" in opts && typeof opts.weight === \"number\") {\n command.push(\"weights\", opts.weight);\n }\n if (\"aggregate\" in opts) {\n command.push(\"aggregate\", opts.aggregate);\n }\n }\n super(command, cmdOpts);\n }\n};\n\n// pkg/commands/zlexcount.ts\nvar ZLexCountCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"zlexcount\", ...cmd], opts);\n }\n};\n\n// pkg/commands/zpopmax.ts\nvar ZPopMaxCommand = class extends Command {\n constructor([key, count], opts) {\n const command = [\"zpopmax\", key];\n if (typeof count === \"number\") {\n command.push(count);\n }\n super(command, opts);\n }\n};\n\n// pkg/commands/zpopmin.ts\nvar ZPopMinCommand = class extends Command {\n constructor([key, count], opts) {\n const command = [\"zpopmin\", key];\n if (typeof count === \"number\") {\n command.push(count);\n }\n super(command, opts);\n }\n};\n\n// pkg/commands/zrange.ts\nvar ZRangeCommand = class extends Command {\n constructor([key, min, max, opts], cmdOpts) {\n const command = [\"zrange\", key, min, max];\n if (opts?.byScore) {\n command.push(\"byscore\");\n }\n if (opts?.byLex) {\n command.push(\"bylex\");\n }\n if (opts?.rev) {\n command.push(\"rev\");\n }\n if (opts?.count !== void 0 && opts.offset !== void 0) {\n command.push(\"limit\", opts.offset, opts.count);\n }\n if (opts?.withScores) {\n command.push(\"withscores\");\n }\n super(command, cmdOpts);\n }\n};\n\n// pkg/commands/zrank.ts\nvar ZRankCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"zrank\", ...cmd], opts);\n }\n};\n\n// pkg/commands/zrem.ts\nvar ZRemCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"zrem\", ...cmd], opts);\n }\n};\n\n// pkg/commands/zremrangebylex.ts\nvar ZRemRangeByLexCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"zremrangebylex\", ...cmd], opts);\n }\n};\n\n// pkg/commands/zremrangebyrank.ts\nvar ZRemRangeByRankCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"zremrangebyrank\", ...cmd], opts);\n }\n};\n\n// pkg/commands/zremrangebyscore.ts\nvar ZRemRangeByScoreCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"zremrangebyscore\", ...cmd], opts);\n }\n};\n\n// pkg/commands/zrevrank.ts\nvar ZRevRankCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"zrevrank\", ...cmd], opts);\n }\n};\n\n// pkg/commands/zscan.ts\nvar ZScanCommand = class extends Command {\n constructor([key, cursor, opts], cmdOpts) {\n const command = [\"zscan\", key, cursor];\n if (opts?.match) {\n command.push(\"match\", opts.match);\n }\n if (typeof opts?.count === \"number\") {\n command.push(\"count\", opts.count);\n }\n super(command, {\n deserialize: deserializeScanResponse,\n ...cmdOpts\n });\n }\n};\n\n// pkg/commands/zscore.ts\nvar ZScoreCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"zscore\", ...cmd], opts);\n }\n};\n\n// pkg/commands/zunion.ts\nvar ZUnionCommand = class extends Command {\n constructor([numKeys, keyOrKeys, opts], cmdOpts) {\n const command = [\"zunion\", numKeys];\n if (Array.isArray(keyOrKeys)) {\n command.push(...keyOrKeys);\n } else {\n command.push(keyOrKeys);\n }\n if (opts) {\n if (\"weights\" in opts && opts.weights) {\n command.push(\"weights\", ...opts.weights);\n } else if (\"weight\" in opts && typeof opts.weight === \"number\") {\n command.push(\"weights\", opts.weight);\n }\n if (\"aggregate\" in opts) {\n command.push(\"aggregate\", opts.aggregate);\n }\n if (opts.withScores) {\n command.push(\"withscores\");\n }\n }\n super(command, cmdOpts);\n }\n};\n\n// pkg/commands/zunionstore.ts\nvar ZUnionStoreCommand = class extends Command {\n constructor([destination, numKeys, keyOrKeys, opts], cmdOpts) {\n const command = [\"zunionstore\", destination, numKeys];\n if (Array.isArray(keyOrKeys)) {\n command.push(...keyOrKeys);\n } else {\n command.push(keyOrKeys);\n }\n if (opts) {\n if (\"weights\" in opts && opts.weights) {\n command.push(\"weights\", ...opts.weights);\n } else if (\"weight\" in opts && typeof opts.weight === \"number\") {\n command.push(\"weights\", opts.weight);\n }\n if (\"aggregate\" in opts) {\n command.push(\"aggregate\", opts.aggregate);\n }\n }\n super(command, cmdOpts);\n }\n};\n\n// pkg/commands/zdiffstore.ts\nvar ZDiffStoreCommand = class extends Command {\n constructor(cmd, opts) {\n super([\"zdiffstore\", ...cmd], opts);\n }\n};\n\n// pkg/commands/zmscore.ts\nvar ZMScoreCommand = class extends Command {\n constructor(cmd, opts) {\n const [key, members] = cmd;\n super([\"zmscore\", key, ...members], opts);\n }\n};\n\n// pkg/pipeline.ts\nvar Pipeline = class {\n client;\n commands;\n commandOptions;\n multiExec;\n constructor(opts) {\n this.client = opts.client;\n this.commands = [];\n this.commandOptions = opts.commandOptions;\n this.multiExec = opts.multiExec ?? false;\n if (this.commandOptions?.latencyLogging) {\n const originalExec = this.exec.bind(this);\n this.exec = async (options) => {\n const start = performance.now();\n const result = await (options ? originalExec(options) : originalExec());\n const end = performance.now();\n const loggerResult = (end - start).toFixed(2);\n console.log(\n `Latency for \\x1B[38;2;19;185;39m${this.multiExec ? [\"MULTI-EXEC\"] : [\"PIPELINE\"].toString().toUpperCase()}\\x1B[0m: \\x1B[38;2;0;255;255m${loggerResult} ms\\x1B[0m`\n );\n return result;\n };\n }\n }\n exec = async (options) => {\n if (this.commands.length === 0) {\n throw new Error(\"Pipeline is empty\");\n }\n const path = this.multiExec ? [\"multi-exec\"] : [\"pipeline\"];\n const res = await this.client.request({\n path,\n body: Object.values(this.commands).map((c) => c.command)\n });\n return options?.keepErrors ? res.map(({ error, result }, i) => {\n return {\n error,\n result: this.commands[i].deserialize(result)\n };\n }) : res.map(({ error, result }, i) => {\n if (error) {\n throw new UpstashError(\n `Command ${i + 1} [ ${this.commands[i].command[0]} ] failed: ${error}`\n );\n }\n return this.commands[i].deserialize(result);\n });\n };\n /**\n * Returns the length of pipeline before the execution\n */\n length() {\n return this.commands.length;\n }\n /**\n * Pushes a command into the pipeline and returns a chainable instance of the\n * pipeline\n */\n chain(command) {\n this.commands.push(command);\n return this;\n }\n /**\n * @see https://redis.io/commands/append\n */\n append = (...args) => this.chain(new AppendCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/bitcount\n */\n bitcount = (...args) => this.chain(new BitCountCommand(args, this.commandOptions));\n /**\n * Returns an instance that can be used to execute `BITFIELD` commands on one key.\n *\n * @example\n * ```typescript\n * redis.set(\"mykey\", 0);\n * const result = await redis.pipeline()\n * .bitfield(\"mykey\")\n * .set(\"u4\", 0, 16)\n * .incr(\"u4\", \"#1\", 1)\n * .exec();\n * console.log(result); // [[0, 1]]\n * ```\n *\n * @see https://redis.io/commands/bitfield\n */\n bitfield = (...args) => new BitFieldCommand(args, this.client, this.commandOptions, this.chain.bind(this));\n /**\n * @see https://redis.io/commands/bitop\n */\n bitop = (op, destinationKey, sourceKey, ...sourceKeys) => this.chain(\n new BitOpCommand([op, destinationKey, sourceKey, ...sourceKeys], this.commandOptions)\n );\n /**\n * @see https://redis.io/commands/bitpos\n */\n bitpos = (...args) => this.chain(new BitPosCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/client-setinfo\n */\n clientSetinfo = (...args) => this.chain(new ClientSetInfoCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/copy\n */\n copy = (...args) => this.chain(new CopyCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/zdiffstore\n */\n zdiffstore = (...args) => this.chain(new ZDiffStoreCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/dbsize\n */\n dbsize = () => this.chain(new DBSizeCommand(this.commandOptions));\n /**\n * @see https://redis.io/commands/decr\n */\n decr = (...args) => this.chain(new DecrCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/decrby\n */\n decrby = (...args) => this.chain(new DecrByCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/del\n */\n del = (...args) => this.chain(new DelCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/echo\n */\n echo = (...args) => this.chain(new EchoCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/eval_ro\n */\n evalRo = (...args) => this.chain(new EvalROCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/eval\n */\n eval = (...args) => this.chain(new EvalCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/evalsha_ro\n */\n evalshaRo = (...args) => this.chain(new EvalshaROCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/evalsha\n */\n evalsha = (...args) => this.chain(new EvalshaCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/exists\n */\n exists = (...args) => this.chain(new ExistsCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/expire\n */\n expire = (...args) => this.chain(new ExpireCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/expireat\n */\n expireat = (...args) => this.chain(new ExpireAtCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/flushall\n */\n flushall = (args) => this.chain(new FlushAllCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/flushdb\n */\n flushdb = (...args) => this.chain(new FlushDBCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/geoadd\n */\n geoadd = (...args) => this.chain(new GeoAddCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/geodist\n */\n geodist = (...args) => this.chain(new GeoDistCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/geopos\n */\n geopos = (...args) => this.chain(new GeoPosCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/geohash\n */\n geohash = (...args) => this.chain(new GeoHashCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/geosearch\n */\n geosearch = (...args) => this.chain(new GeoSearchCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/geosearchstore\n */\n geosearchstore = (...args) => this.chain(new GeoSearchStoreCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/get\n */\n get = (...args) => this.chain(new GetCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/getbit\n */\n getbit = (...args) => this.chain(new GetBitCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/getdel\n */\n getdel = (...args) => this.chain(new GetDelCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/getex\n */\n getex = (...args) => this.chain(new GetExCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/getrange\n */\n getrange = (...args) => this.chain(new GetRangeCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/getset\n */\n getset = (key, value) => this.chain(new GetSetCommand([key, value], this.commandOptions));\n /**\n * @see https://redis.io/commands/hdel\n */\n hdel = (...args) => this.chain(new HDelCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/hexists\n */\n hexists = (...args) => this.chain(new HExistsCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/hexpire\n */\n hexpire = (...args) => this.chain(new HExpireCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/hexpireat\n */\n hexpireat = (...args) => this.chain(new HExpireAtCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/hexpiretime\n */\n hexpiretime = (...args) => this.chain(new HExpireTimeCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/httl\n */\n httl = (...args) => this.chain(new HTtlCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/hpexpire\n */\n hpexpire = (...args) => this.chain(new HPExpireCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/hpexpireat\n */\n hpexpireat = (...args) => this.chain(new HPExpireAtCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/hpexpiretime\n */\n hpexpiretime = (...args) => this.chain(new HPExpireTimeCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/hpttl\n */\n hpttl = (...args) => this.chain(new HPTtlCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/hpersist\n */\n hpersist = (...args) => this.chain(new HPersistCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/hget\n */\n hget = (...args) => this.chain(new HGetCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/hgetall\n */\n hgetall = (...args) => this.chain(new HGetAllCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/hgetdel\n */\n hgetdel = (...args) => this.chain(new HGetDelCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/hgetex\n */\n hgetex = (...args) => this.chain(new HGetExCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/hincrby\n */\n hincrby = (...args) => this.chain(new HIncrByCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/hincrbyfloat\n */\n hincrbyfloat = (...args) => this.chain(new HIncrByFloatCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/hkeys\n */\n hkeys = (...args) => this.chain(new HKeysCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/hlen\n */\n hlen = (...args) => this.chain(new HLenCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/hmget\n */\n hmget = (...args) => this.chain(new HMGetCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/hmset\n */\n hmset = (key, kv) => this.chain(new HMSetCommand([key, kv], this.commandOptions));\n /**\n * @see https://redis.io/commands/hrandfield\n */\n hrandfield = (key, count, withValues) => this.chain(new HRandFieldCommand([key, count, withValues], this.commandOptions));\n /**\n * @see https://redis.io/commands/hscan\n */\n hscan = (...args) => this.chain(new HScanCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/hset\n */\n hset = (key, kv) => this.chain(new HSetCommand([key, kv], this.commandOptions));\n /**\n * @see https://redis.io/commands/hsetex\n */\n hsetex = (...args) => this.chain(new HSetExCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/hsetnx\n */\n hsetnx = (key, field, value) => this.chain(new HSetNXCommand([key, field, value], this.commandOptions));\n /**\n * @see https://redis.io/commands/hstrlen\n */\n hstrlen = (...args) => this.chain(new HStrLenCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/hvals\n */\n hvals = (...args) => this.chain(new HValsCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/incr\n */\n incr = (...args) => this.chain(new IncrCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/incrby\n */\n incrby = (...args) => this.chain(new IncrByCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/incrbyfloat\n */\n incrbyfloat = (...args) => this.chain(new IncrByFloatCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/keys\n */\n keys = (...args) => this.chain(new KeysCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/lindex\n */\n lindex = (...args) => this.chain(new LIndexCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/linsert\n */\n linsert = (key, direction, pivot, value) => this.chain(new LInsertCommand([key, direction, pivot, value], this.commandOptions));\n /**\n * @see https://redis.io/commands/llen\n */\n llen = (...args) => this.chain(new LLenCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/lmove\n */\n lmove = (...args) => this.chain(new LMoveCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/lpop\n */\n lpop = (...args) => this.chain(new LPopCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/lmpop\n */\n lmpop = (...args) => this.chain(new LmPopCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/lpos\n */\n lpos = (...args) => this.chain(new LPosCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/lpush\n */\n lpush = (key, ...elements) => this.chain(new LPushCommand([key, ...elements], this.commandOptions));\n /**\n * @see https://redis.io/commands/lpushx\n */\n lpushx = (key, ...elements) => this.chain(new LPushXCommand([key, ...elements], this.commandOptions));\n /**\n * @see https://redis.io/commands/lrange\n */\n lrange = (...args) => this.chain(new LRangeCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/lrem\n */\n lrem = (key, count, value) => this.chain(new LRemCommand([key, count, value], this.commandOptions));\n /**\n * @see https://redis.io/commands/lset\n */\n lset = (key, index, value) => this.chain(new LSetCommand([key, index, value], this.commandOptions));\n /**\n * @see https://redis.io/commands/ltrim\n */\n ltrim = (...args) => this.chain(new LTrimCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/mget\n */\n mget = (...args) => this.chain(new MGetCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/mset\n */\n mset = (kv) => this.chain(new MSetCommand([kv], this.commandOptions));\n /**\n * @see https://redis.io/commands/msetnx\n */\n msetnx = (kv) => this.chain(new MSetNXCommand([kv], this.commandOptions));\n /**\n * @see https://redis.io/commands/persist\n */\n persist = (...args) => this.chain(new PersistCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/pexpire\n */\n pexpire = (...args) => this.chain(new PExpireCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/pexpireat\n */\n pexpireat = (...args) => this.chain(new PExpireAtCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/pfadd\n */\n pfadd = (...args) => this.chain(new PfAddCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/pfcount\n */\n pfcount = (...args) => this.chain(new PfCountCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/pfmerge\n */\n pfmerge = (...args) => this.chain(new PfMergeCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/ping\n */\n ping = (args) => this.chain(new PingCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/psetex\n */\n psetex = (key, ttl, value) => this.chain(new PSetEXCommand([key, ttl, value], this.commandOptions));\n /**\n * @see https://redis.io/commands/pttl\n */\n pttl = (...args) => this.chain(new PTtlCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/publish\n */\n publish = (...args) => this.chain(new PublishCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/randomkey\n */\n randomkey = () => this.chain(new RandomKeyCommand(this.commandOptions));\n /**\n * @see https://redis.io/commands/rename\n */\n rename = (...args) => this.chain(new RenameCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/renamenx\n */\n renamenx = (...args) => this.chain(new RenameNXCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/rpop\n */\n rpop = (...args) => this.chain(new RPopCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/rpush\n */\n rpush = (key, ...elements) => this.chain(new RPushCommand([key, ...elements], this.commandOptions));\n /**\n * @see https://redis.io/commands/rpushx\n */\n rpushx = (key, ...elements) => this.chain(new RPushXCommand([key, ...elements], this.commandOptions));\n /**\n * @see https://redis.io/commands/sadd\n */\n sadd = (key, member, ...members) => this.chain(new SAddCommand([key, member, ...members], this.commandOptions));\n /**\n * @see https://redis.io/commands/scan\n */\n scan = (...args) => this.chain(new ScanCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/scard\n */\n scard = (...args) => this.chain(new SCardCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/script-exists\n */\n scriptExists = (...args) => this.chain(new ScriptExistsCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/script-flush\n */\n scriptFlush = (...args) => this.chain(new ScriptFlushCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/script-load\n */\n scriptLoad = (...args) => this.chain(new ScriptLoadCommand(args, this.commandOptions));\n /*)*\n * @see https://redis.io/commands/sdiff\n */\n sdiff = (...args) => this.chain(new SDiffCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/sdiffstore\n */\n sdiffstore = (...args) => this.chain(new SDiffStoreCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/set\n */\n set = (key, value, opts) => this.chain(new SetCommand([key, value, opts], this.commandOptions));\n /**\n * @see https://redis.io/commands/setbit\n */\n setbit = (...args) => this.chain(new SetBitCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/setex\n */\n setex = (key, ttl, value) => this.chain(new SetExCommand([key, ttl, value], this.commandOptions));\n /**\n * @see https://redis.io/commands/setnx\n */\n setnx = (key, value) => this.chain(new SetNxCommand([key, value], this.commandOptions));\n /**\n * @see https://redis.io/commands/setrange\n */\n setrange = (...args) => this.chain(new SetRangeCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/sinter\n */\n sinter = (...args) => this.chain(new SInterCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/sintercard\n */\n sintercard = (...args) => this.chain(new SInterCardCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/sinterstore\n */\n sinterstore = (...args) => this.chain(new SInterStoreCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/sismember\n */\n sismember = (key, member) => this.chain(new SIsMemberCommand([key, member], this.commandOptions));\n /**\n * @see https://redis.io/commands/smembers\n */\n smembers = (...args) => this.chain(new SMembersCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/smismember\n */\n smismember = (key, members) => this.chain(new SMIsMemberCommand([key, members], this.commandOptions));\n /**\n * @see https://redis.io/commands/smove\n */\n smove = (source, destination, member) => this.chain(new SMoveCommand([source, destination, member], this.commandOptions));\n /**\n * @see https://redis.io/commands/spop\n */\n spop = (...args) => this.chain(new SPopCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/srandmember\n */\n srandmember = (...args) => this.chain(new SRandMemberCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/srem\n */\n srem = (key, ...members) => this.chain(new SRemCommand([key, ...members], this.commandOptions));\n /**\n * @see https://redis.io/commands/sscan\n */\n sscan = (...args) => this.chain(new SScanCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/strlen\n */\n strlen = (...args) => this.chain(new StrLenCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/sunion\n */\n sunion = (...args) => this.chain(new SUnionCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/sunionstore\n */\n sunionstore = (...args) => this.chain(new SUnionStoreCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/time\n */\n time = () => this.chain(new TimeCommand(this.commandOptions));\n /**\n * @see https://redis.io/commands/touch\n */\n touch = (...args) => this.chain(new TouchCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/ttl\n */\n ttl = (...args) => this.chain(new TtlCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/type\n */\n type = (...args) => this.chain(new TypeCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/unlink\n */\n unlink = (...args) => this.chain(new UnlinkCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/zadd\n */\n zadd = (...args) => {\n if (\"score\" in args[1]) {\n return this.chain(\n new ZAddCommand([args[0], args[1], ...args.slice(2)], this.commandOptions)\n );\n }\n return this.chain(\n new ZAddCommand(\n [args[0], args[1], ...args.slice(2)],\n this.commandOptions\n )\n );\n };\n /**\n * @see https://redis.io/commands/xadd\n */\n xadd = (...args) => this.chain(new XAddCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/xack\n */\n xack = (...args) => this.chain(new XAckCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/xackdel\n */\n xackdel = (...args) => this.chain(new XAckDelCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/xdel\n */\n xdel = (...args) => this.chain(new XDelCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/xdelex\n */\n xdelex = (...args) => this.chain(new XDelExCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/xgroup\n */\n xgroup = (...args) => this.chain(new XGroupCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/xread\n */\n xread = (...args) => this.chain(new XReadCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/xreadgroup\n */\n xreadgroup = (...args) => this.chain(new XReadGroupCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/xinfo\n */\n xinfo = (...args) => this.chain(new XInfoCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/xlen\n */\n xlen = (...args) => this.chain(new XLenCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/xpending\n */\n xpending = (...args) => this.chain(new XPendingCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/xclaim\n */\n xclaim = (...args) => this.chain(new XClaimCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/xautoclaim\n */\n xautoclaim = (...args) => this.chain(new XAutoClaim(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/xtrim\n */\n xtrim = (...args) => this.chain(new XTrimCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/xrange\n */\n xrange = (...args) => this.chain(new XRangeCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/xrevrange\n */\n xrevrange = (...args) => this.chain(new XRevRangeCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/zcard\n */\n zcard = (...args) => this.chain(new ZCardCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/zcount\n */\n zcount = (...args) => this.chain(new ZCountCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/zincrby\n */\n zincrby = (key, increment, member) => this.chain(new ZIncrByCommand([key, increment, member], this.commandOptions));\n /**\n * @see https://redis.io/commands/zinterstore\n */\n zinterstore = (...args) => this.chain(new ZInterStoreCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/zlexcount\n */\n zlexcount = (...args) => this.chain(new ZLexCountCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/zmscore\n */\n zmscore = (...args) => this.chain(new ZMScoreCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/zpopmax\n */\n zpopmax = (...args) => this.chain(new ZPopMaxCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/zpopmin\n */\n zpopmin = (...args) => this.chain(new ZPopMinCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/zrange\n */\n zrange = (...args) => this.chain(new ZRangeCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/zrank\n */\n zrank = (key, member) => this.chain(new ZRankCommand([key, member], this.commandOptions));\n /**\n * @see https://redis.io/commands/zrem\n */\n zrem = (key, ...members) => this.chain(new ZRemCommand([key, ...members], this.commandOptions));\n /**\n * @see https://redis.io/commands/zremrangebylex\n */\n zremrangebylex = (...args) => this.chain(new ZRemRangeByLexCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/zremrangebyrank\n */\n zremrangebyrank = (...args) => this.chain(new ZRemRangeByRankCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/zremrangebyscore\n */\n zremrangebyscore = (...args) => this.chain(new ZRemRangeByScoreCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/zrevrank\n */\n zrevrank = (key, member) => this.chain(new ZRevRankCommand([key, member], this.commandOptions));\n /**\n * @see https://redis.io/commands/zscan\n */\n zscan = (...args) => this.chain(new ZScanCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/zscore\n */\n zscore = (key, member) => this.chain(new ZScoreCommand([key, member], this.commandOptions));\n /**\n * @see https://redis.io/commands/zunionstore\n */\n zunionstore = (...args) => this.chain(new ZUnionStoreCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/zunion\n */\n zunion = (...args) => this.chain(new ZUnionCommand(args, this.commandOptions));\n /**\n * @see https://redis.io/commands/?group=json\n */\n get json() {\n return {\n /**\n * @see https://redis.io/commands/json.arrappend\n */\n arrappend: (...args) => this.chain(new JsonArrAppendCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/commands/json.arrindex\n */\n arrindex: (...args) => this.chain(new JsonArrIndexCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/commands/json.arrinsert\n */\n arrinsert: (...args) => this.chain(new JsonArrInsertCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/commands/json.arrlen\n */\n arrlen: (...args) => this.chain(new JsonArrLenCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/commands/json.arrpop\n */\n arrpop: (...args) => this.chain(new JsonArrPopCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/commands/json.arrtrim\n */\n arrtrim: (...args) => this.chain(new JsonArrTrimCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/commands/json.clear\n */\n clear: (...args) => this.chain(new JsonClearCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/commands/json.del\n */\n del: (...args) => this.chain(new JsonDelCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/commands/json.forget\n */\n forget: (...args) => this.chain(new JsonForgetCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/commands/json.get\n */\n get: (...args) => this.chain(new JsonGetCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/commands/json.merge\n */\n merge: (...args) => this.chain(new JsonMergeCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/commands/json.mget\n */\n mget: (...args) => this.chain(new JsonMGetCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/commands/json.mset\n */\n mset: (...args) => this.chain(new JsonMSetCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/commands/json.numincrby\n */\n numincrby: (...args) => this.chain(new JsonNumIncrByCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/commands/json.nummultby\n */\n nummultby: (...args) => this.chain(new JsonNumMultByCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/commands/json.objkeys\n */\n objkeys: (...args) => this.chain(new JsonObjKeysCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/commands/json.objlen\n */\n objlen: (...args) => this.chain(new JsonObjLenCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/commands/json.resp\n */\n resp: (...args) => this.chain(new JsonRespCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/commands/json.set\n */\n set: (...args) => this.chain(new JsonSetCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/commands/json.strappend\n */\n strappend: (...args) => this.chain(new JsonStrAppendCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/commands/json.strlen\n */\n strlen: (...args) => this.chain(new JsonStrLenCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/commands/json.toggle\n */\n toggle: (...args) => this.chain(new JsonToggleCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/commands/json.type\n */\n type: (...args) => this.chain(new JsonTypeCommand(args, this.commandOptions))\n };\n }\n get functions() {\n return {\n /**\n * @see https://redis.io/docs/latest/commands/function-load/\n */\n load: (...args) => this.chain(new FunctionLoadCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/docs/latest/commands/function-list/\n */\n list: (...args) => this.chain(new FunctionListCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/docs/latest/commands/function-delete/\n */\n delete: (...args) => this.chain(new FunctionDeleteCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/docs/latest/commands/function-flush/\n */\n flush: () => this.chain(new FunctionFlushCommand(this.commandOptions)),\n /**\n * @see https://redis.io/docs/latest/commands/function-stats/\n */\n stats: () => this.chain(new FunctionStatsCommand(this.commandOptions)),\n /**\n * @see https://redis.io/docs/latest/commands/fcall/\n */\n call: (...args) => this.chain(new FCallCommand(args, this.commandOptions)),\n /**\n * @see https://redis.io/docs/latest/commands/fcall_ro/\n */\n callRo: (...args) => this.chain(new FCallRoCommand(args, this.commandOptions))\n };\n }\n};\n\n// pkg/auto-pipeline.ts\nvar EXCLUDE_COMMANDS = /* @__PURE__ */ new Set([\n \"scan\",\n \"keys\",\n \"flushdb\",\n \"flushall\",\n \"dbsize\",\n \"hscan\",\n \"hgetall\",\n \"hkeys\",\n \"lrange\",\n \"sscan\",\n \"smembers\",\n \"xrange\",\n \"xrevrange\",\n \"zscan\",\n \"zrange\",\n \"exec\"\n]);\nfunction createAutoPipelineProxy(_redis, namespace = \"root\") {\n const redis = _redis;\n if (!redis.autoPipelineExecutor) {\n redis.autoPipelineExecutor = new AutoPipelineExecutor(redis);\n }\n return new Proxy(redis, {\n get: (redis2, command) => {\n if (command === \"pipelineCounter\") {\n return redis2.autoPipelineExecutor.pipelineCounter;\n }\n if (namespace === \"root\" && command === \"json\") {\n return createAutoPipelineProxy(redis2, \"json\");\n }\n if (namespace === \"root\" && command === \"functions\") {\n return createAutoPipelineProxy(redis2, \"functions\");\n }\n if (namespace === \"root\") {\n const commandInRedisButNotPipeline = command in redis2 && !(command in redis2.autoPipelineExecutor.pipeline);\n const isCommandExcluded = EXCLUDE_COMMANDS.has(command);\n if (commandInRedisButNotPipeline || isCommandExcluded) {\n return redis2[command];\n }\n }\n const pipeline = redis2.autoPipelineExecutor.pipeline;\n const targetFunction = namespace === \"json\" ? pipeline.json[command] : namespace === \"functions\" ? pipeline.functions[command] : pipeline[command];\n const isFunction = typeof targetFunction === \"function\";\n if (isFunction) {\n return (...args) => {\n return redis2.autoPipelineExecutor.withAutoPipeline((pipeline2) => {\n const targetFunction2 = namespace === \"json\" ? pipeline2.json[command] : namespace === \"functions\" ? pipeline2.functions[command] : pipeline2[command];\n targetFunction2(...args);\n });\n };\n }\n return targetFunction;\n }\n });\n}\nvar AutoPipelineExecutor = class {\n pipelinePromises = /* @__PURE__ */ new WeakMap();\n activePipeline = null;\n indexInCurrentPipeline = 0;\n redis;\n pipeline;\n // only to make sure that proxy can work\n pipelineCounter = 0;\n // to keep track of how many times a pipeline was executed\n constructor(redis) {\n this.redis = redis;\n this.pipeline = redis.pipeline();\n }\n async withAutoPipeline(executeWithPipeline) {\n const pipeline = this.activePipeline ?? this.redis.pipeline();\n if (!this.activePipeline) {\n this.activePipeline = pipeline;\n this.indexInCurrentPipeline = 0;\n }\n const index = this.indexInCurrentPipeline++;\n executeWithPipeline(pipeline);\n const pipelineDone = this.deferExecution().then(() => {\n if (!this.pipelinePromises.has(pipeline)) {\n const pipelinePromise = pipeline.exec({ keepErrors: true });\n this.pipelineCounter += 1;\n this.pipelinePromises.set(pipeline, pipelinePromise);\n this.activePipeline = null;\n }\n return this.pipelinePromises.get(pipeline);\n });\n const results = await pipelineDone;\n const commandResult = results[index];\n if (commandResult.error) {\n throw new UpstashError(`Command failed: ${commandResult.error}`);\n }\n return commandResult.result;\n }\n async deferExecution() {\n await Promise.resolve();\n await Promise.resolve();\n }\n};\n\n// pkg/commands/psubscribe.ts\nvar PSubscribeCommand = class extends Command {\n constructor(cmd, opts) {\n const sseHeaders = {\n Accept: \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\"\n };\n super([], {\n ...opts,\n headers: sseHeaders,\n path: [\"psubscribe\", ...cmd],\n streamOptions: {\n isStreaming: true,\n onMessage: opts?.streamOptions?.onMessage,\n signal: opts?.streamOptions?.signal\n }\n });\n }\n};\n\n// pkg/commands/subscribe.ts\nvar Subscriber = class extends EventTarget {\n subscriptions;\n client;\n listeners;\n opts;\n constructor(client, channels, isPattern = false, opts) {\n super();\n this.client = client;\n this.subscriptions = /* @__PURE__ */ new Map();\n this.listeners = /* @__PURE__ */ new Map();\n this.opts = opts;\n for (const channel of channels) {\n if (isPattern) {\n this.subscribeToPattern(channel);\n } else {\n this.subscribeToChannel(channel);\n }\n }\n }\n subscribeToChannel(channel) {\n const controller = new AbortController();\n const command = new SubscribeCommand([channel], {\n streamOptions: {\n signal: controller.signal,\n onMessage: (data) => this.handleMessage(data, false)\n }\n });\n command.exec(this.client).catch((error) => {\n if (error.name !== \"AbortError\") {\n this.dispatchToListeners(\"error\", error);\n }\n });\n this.subscriptions.set(channel, {\n command,\n controller,\n isPattern: false\n });\n }\n subscribeToPattern(pattern) {\n const controller = new AbortController();\n const command = new PSubscribeCommand([pattern], {\n streamOptions: {\n signal: controller.signal,\n onMessage: (data) => this.handleMessage(data, true)\n }\n });\n command.exec(this.client).catch((error) => {\n if (error.name !== \"AbortError\") {\n this.dispatchToListeners(\"error\", error);\n }\n });\n this.subscriptions.set(pattern, {\n command,\n controller,\n isPattern: true\n });\n }\n handleMessage(data, isPattern) {\n const messageData = data.replace(/^data:\\s*/, \"\");\n const firstCommaIndex = messageData.indexOf(\",\");\n const secondCommaIndex = messageData.indexOf(\",\", firstCommaIndex + 1);\n const thirdCommaIndex = isPattern ? messageData.indexOf(\",\", secondCommaIndex + 1) : -1;\n if (firstCommaIndex !== -1 && secondCommaIndex !== -1) {\n const type = messageData.slice(0, firstCommaIndex);\n if (isPattern && type === \"pmessage\" && thirdCommaIndex !== -1) {\n const pattern = messageData.slice(firstCommaIndex + 1, secondCommaIndex);\n const channel = messageData.slice(secondCommaIndex + 1, thirdCommaIndex);\n const messageStr = messageData.slice(thirdCommaIndex + 1);\n try {\n const message = this.opts?.automaticDeserialization === false ? messageStr : JSON.parse(messageStr);\n this.dispatchToListeners(\"pmessage\", { pattern, channel, message });\n this.dispatchToListeners(`pmessage:${pattern}`, { pattern, channel, message });\n } catch (error) {\n this.dispatchToListeners(\"error\", new Error(`Failed to parse message: ${error}`));\n }\n } else {\n const channel = messageData.slice(firstCommaIndex + 1, secondCommaIndex);\n const messageStr = messageData.slice(secondCommaIndex + 1);\n try {\n if (type === \"subscribe\" || type === \"psubscribe\" || type === \"unsubscribe\" || type === \"punsubscribe\") {\n const count = Number.parseInt(messageStr);\n this.dispatchToListeners(type, count);\n } else {\n const message = this.opts?.automaticDeserialization === false ? messageStr : parseWithTryCatch(messageStr);\n this.dispatchToListeners(type, { channel, message });\n this.dispatchToListeners(`${type}:${channel}`, { channel, message });\n }\n } catch (error) {\n this.dispatchToListeners(\"error\", new Error(`Failed to parse message: ${error}`));\n }\n }\n }\n }\n dispatchToListeners(type, data) {\n const listeners = this.listeners.get(type);\n if (listeners) {\n for (const listener of listeners) {\n listener(data);\n }\n }\n }\n on(type, listener) {\n if (!this.listeners.has(type)) {\n this.listeners.set(type, /* @__PURE__ */ new Set());\n }\n this.listeners.get(type)?.add(listener);\n }\n removeAllListeners() {\n this.listeners.clear();\n }\n async unsubscribe(channels) {\n if (channels) {\n for (const channel of channels) {\n const subscription = this.subscriptions.get(channel);\n if (subscription) {\n try {\n subscription.controller.abort();\n } catch {\n }\n this.subscriptions.delete(channel);\n }\n }\n } else {\n for (const subscription of this.subscriptions.values()) {\n try {\n subscription.controller.abort();\n } catch {\n }\n }\n this.subscriptions.clear();\n this.removeAllListeners();\n }\n }\n getSubscribedChannels() {\n return [...this.subscriptions.keys()];\n }\n};\nvar SubscribeCommand = class extends Command {\n constructor(cmd, opts) {\n const sseHeaders = {\n Accept: \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\"\n };\n super([], {\n ...opts,\n headers: sseHeaders,\n path: [\"subscribe\", ...cmd],\n streamOptions: {\n isStreaming: true,\n onMessage: opts?.streamOptions?.onMessage,\n signal: opts?.streamOptions?.signal\n }\n });\n }\n};\nvar parseWithTryCatch = (str) => {\n try {\n return JSON.parse(str);\n } catch {\n return str;\n }\n};\n\n// pkg/script.ts\nimport { subtle } from \"uncrypto\";\nvar Script = class {\n script;\n /**\n * @deprecated This property is initialized to an empty string and will be set in the init method\n * asynchronously. Do not use this property immidiately after the constructor.\n *\n * This property is only exposed for backwards compatibility and will be removed in the\n * future major release.\n */\n sha1;\n initPromise;\n redis;\n constructor(redis, script) {\n this.redis = redis;\n this.script = script;\n this.sha1 = \"\";\n void this.init(script);\n }\n /**\n * Initialize the script by computing its SHA-1 hash.\n */\n init(script) {\n if (!this.initPromise) {\n this.initPromise = this.digest(script).then((sha1) => {\n this.sha1 = sha1;\n });\n }\n return this.initPromise;\n }\n /**\n * Send an `EVAL` command to redis.\n */\n async eval(keys, args) {\n await this.init(this.script);\n return await this.redis.eval(this.script, keys, args);\n }\n /**\n * Calculates the sha1 hash of the script and then calls `EVALSHA`.\n */\n async evalsha(keys, args) {\n await this.init(this.script);\n return await this.redis.evalsha(this.sha1, keys, args);\n }\n /**\n * Optimistically try to run `EVALSHA` first.\n * If the script is not loaded in redis, it will fall back and try again with `EVAL`.\n *\n * Following calls will be able to use the cached script\n */\n async exec(keys, args) {\n await this.init(this.script);\n const res = await this.redis.evalsha(this.sha1, keys, args).catch(async (error) => {\n if (error instanceof Error && error.message.toLowerCase().includes(\"noscript\")) {\n return await this.redis.eval(this.script, keys, args);\n }\n throw error;\n });\n return res;\n }\n /**\n * Compute the sha1 hash of the script and return its hex representation.\n */\n async digest(s) {\n const data = new TextEncoder().encode(s);\n const hashBuffer = await subtle.digest(\"SHA-1\", data);\n const hashArray = [...new Uint8Array(hashBuffer)];\n return hashArray.map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n }\n};\n\n// pkg/scriptRo.ts\nimport { subtle as subtle2 } from \"uncrypto\";\nvar ScriptRO = class {\n script;\n /**\n * @deprecated This property is initialized to an empty string and will be set in the init method\n * asynchronously. Do not use this property immidiately after the constructor.\n *\n * This property is only exposed for backwards compatibility and will be removed in the\n * future major release.\n */\n sha1;\n initPromise;\n redis;\n constructor(redis, script) {\n this.redis = redis;\n this.sha1 = \"\";\n this.script = script;\n void this.init(script);\n }\n init(script) {\n if (!this.initPromise) {\n this.initPromise = this.digest(script).then((sha1) => {\n this.sha1 = sha1;\n });\n }\n return this.initPromise;\n }\n /**\n * Send an `EVAL_RO` command to redis.\n */\n async evalRo(keys, args) {\n await this.init(this.script);\n return await this.redis.evalRo(this.script, keys, args);\n }\n /**\n * Calculates the sha1 hash of the script and then calls `EVALSHA_RO`.\n */\n async evalshaRo(keys, args) {\n await this.init(this.script);\n return await this.redis.evalshaRo(this.sha1, keys, args);\n }\n /**\n * Optimistically try to run `EVALSHA_RO` first.\n * If the script is not loaded in redis, it will fall back and try again with `EVAL_RO`.\n *\n * Following calls will be able to use the cached script\n */\n async exec(keys, args) {\n await this.init(this.script);\n const res = await this.redis.evalshaRo(this.sha1, keys, args).catch(async (error) => {\n if (error instanceof Error && error.message.toLowerCase().includes(\"noscript\")) {\n return await this.redis.evalRo(this.script, keys, args);\n }\n throw error;\n });\n return res;\n }\n /**\n * Compute the sha1 hash of the script and return its hex representation.\n */\n async digest(s) {\n const data = new TextEncoder().encode(s);\n const hashBuffer = await subtle2.digest(\"SHA-1\", data);\n const hashArray = [...new Uint8Array(hashBuffer)];\n return hashArray.map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n }\n};\n\n// pkg/redis.ts\nvar Redis = class {\n client;\n opts;\n enableTelemetry;\n enableAutoPipelining;\n /**\n * Create a new redis client\n *\n * @example\n * ```typescript\n * const redis = new Redis({\n * url: \"<UPSTASH_REDIS_REST_URL>\",\n * token: \"<UPSTASH_REDIS_REST_TOKEN>\",\n * });\n * ```\n */\n constructor(client, opts) {\n this.client = client;\n this.opts = opts;\n this.enableTelemetry = opts?.enableTelemetry ?? true;\n if (opts?.readYourWrites === false) {\n this.client.readYourWrites = false;\n }\n this.enableAutoPipelining = opts?.enableAutoPipelining ?? true;\n }\n get readYourWritesSyncToken() {\n return this.client.upstashSyncToken;\n }\n set readYourWritesSyncToken(session) {\n this.client.upstashSyncToken = session;\n }\n get json() {\n return {\n /**\n * @see https://redis.io/commands/json.arrappend\n */\n arrappend: (...args) => new JsonArrAppendCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/commands/json.arrindex\n */\n arrindex: (...args) => new JsonArrIndexCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/commands/json.arrinsert\n */\n arrinsert: (...args) => new JsonArrInsertCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/commands/json.arrlen\n */\n arrlen: (...args) => new JsonArrLenCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/commands/json.arrpop\n */\n arrpop: (...args) => new JsonArrPopCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/commands/json.arrtrim\n */\n arrtrim: (...args) => new JsonArrTrimCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/commands/json.clear\n */\n clear: (...args) => new JsonClearCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/commands/json.del\n */\n del: (...args) => new JsonDelCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/commands/json.forget\n */\n forget: (...args) => new JsonForgetCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/commands/json.get\n */\n get: (...args) => new JsonGetCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/commands/json.merge\n */\n merge: (...args) => new JsonMergeCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/commands/json.mget\n */\n mget: (...args) => new JsonMGetCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/commands/json.mset\n */\n mset: (...args) => new JsonMSetCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/commands/json.numincrby\n */\n numincrby: (...args) => new JsonNumIncrByCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/commands/json.nummultby\n */\n nummultby: (...args) => new JsonNumMultByCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/commands/json.objkeys\n */\n objkeys: (...args) => new JsonObjKeysCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/commands/json.objlen\n */\n objlen: (...args) => new JsonObjLenCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/commands/json.resp\n */\n resp: (...args) => new JsonRespCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/commands/json.set\n */\n set: (...args) => new JsonSetCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/commands/json.strappend\n */\n strappend: (...args) => new JsonStrAppendCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/commands/json.strlen\n */\n strlen: (...args) => new JsonStrLenCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/commands/json.toggle\n */\n toggle: (...args) => new JsonToggleCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/commands/json.type\n */\n type: (...args) => new JsonTypeCommand(args, this.opts).exec(this.client)\n };\n }\n get functions() {\n return {\n /**\n * @see https://redis.io/docs/latest/commands/function-load/\n */\n load: (...args) => new FunctionLoadCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/docs/latest/commands/function-list/\n */\n list: (...args) => new FunctionListCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/docs/latest/commands/function-delete/\n */\n delete: (...args) => new FunctionDeleteCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/docs/latest/commands/function-flush/\n */\n flush: () => new FunctionFlushCommand(this.opts).exec(this.client),\n /**\n * @see https://redis.io/docs/latest/commands/function-stats/\n *\n * Note: `running_script` field is not supported and therefore not included in the type.\n */\n stats: () => new FunctionStatsCommand(this.opts).exec(this.client),\n /**\n * @see https://redis.io/docs/latest/commands/fcall/\n */\n call: (...args) => new FCallCommand(args, this.opts).exec(this.client),\n /**\n * @see https://redis.io/docs/latest/commands/fcall_ro/\n */\n callRo: (...args) => new FCallRoCommand(args, this.opts).exec(this.client)\n };\n }\n /**\n * Wrap a new middleware around the HTTP client.\n */\n use = (middleware) => {\n const makeRequest = this.client.request.bind(this.client);\n this.client.request = (req) => middleware(req, makeRequest);\n };\n /**\n * Technically this is not private, we can hide it from intellisense by doing this\n */\n addTelemetry = (telemetry) => {\n if (!this.enableTelemetry) {\n return;\n }\n try {\n this.client.mergeTelemetry(telemetry);\n } catch {\n }\n };\n /**\n * Creates a new script.\n *\n * Scripts offer the ability to optimistically try to execute a script without having to send the\n * entire script to the server. If the script is loaded on the server, it tries again by sending\n * the entire script. Afterwards, the script is cached on the server.\n *\n * @param script - The script to create\n * @param opts - Optional options to pass to the script `{ readonly?: boolean }`\n * @returns A new script\n *\n * @example\n * ```ts\n * const redis = new Redis({...})\n *\n * const script = redis.createScript<string>(\"return ARGV[1];\")\n * const arg1 = await script.eval([], [\"Hello World\"])\n * expect(arg1, \"Hello World\")\n * ```\n * @example\n * ```ts\n * const redis = new Redis({...})\n *\n * const script = redis.createScript<string>(\"return ARGV[1];\", { readonly: true })\n * const arg1 = await script.evalRo([], [\"Hello World\"])\n * expect(arg1, \"Hello World\")\n * ```\n */\n createScript(script, opts) {\n return opts?.readonly ? new ScriptRO(this, script) : new Script(this, script);\n }\n get search() {\n return {\n createIndex: (params) => {\n return createIndex(this.client, params);\n },\n index: (params) => {\n return initIndex(this.client, params);\n },\n alias: {\n list: () => {\n return listAliases(this.client);\n },\n add: ({ indexName, alias }) => {\n return addAlias(this.client, { indexName, alias });\n },\n delete: ({ alias }) => {\n return delAlias(this.client, { alias });\n }\n }\n };\n }\n /**\n * Create a new pipeline that allows you to send requests in bulk.\n *\n * @see {@link Pipeline}\n */\n pipeline = () => new Pipeline({\n client: this.client,\n commandOptions: this.opts,\n multiExec: false\n });\n autoPipeline = () => {\n return createAutoPipelineProxy(this);\n };\n /**\n * Create a new transaction to allow executing multiple steps atomically.\n *\n * All the commands in a transaction are serialized and executed sequentially. A request sent by\n * another client will never be served in the middle of the execution of a Redis Transaction. This\n * guarantees that the commands are executed as a single isolated operation.\n *\n * @see {@link Pipeline}\n */\n multi = () => new Pipeline({\n client: this.client,\n commandOptions: this.opts,\n multiExec: true\n });\n /**\n * Returns an instance that can be used to execute `BITFIELD` commands on one key.\n *\n * @example\n * ```typescript\n * redis.set(\"mykey\", 0);\n * const result = await redis.bitfield(\"mykey\")\n * .set(\"u4\", 0, 16)\n * .incr(\"u4\", \"#1\", 1)\n * .exec();\n * console.log(result); // [0, 1]\n * ```\n *\n * @see https://redis.io/commands/bitfield\n */\n bitfield = (...args) => new BitFieldCommand(args, this.client, this.opts);\n /**\n * @see https://redis.io/commands/append\n */\n append = (...args) => new AppendCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/bitcount\n */\n bitcount = (...args) => new BitCountCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/bitop\n */\n bitop = (op, destinationKey, sourceKey, ...sourceKeys) => new BitOpCommand([op, destinationKey, sourceKey, ...sourceKeys], this.opts).exec(\n this.client\n );\n /**\n * @see https://redis.io/commands/bitpos\n */\n bitpos = (...args) => new BitPosCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/client-setinfo\n */\n clientSetinfo = (...args) => new ClientSetInfoCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/copy\n */\n copy = (...args) => new CopyCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/dbsize\n */\n dbsize = () => new DBSizeCommand(this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/decr\n */\n decr = (...args) => new DecrCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/decrby\n */\n decrby = (...args) => new DecrByCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/del\n */\n del = (...args) => new DelCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/echo\n */\n echo = (...args) => new EchoCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/eval_ro\n */\n evalRo = (...args) => new EvalROCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/eval\n */\n eval = (...args) => new EvalCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/evalsha_ro\n */\n evalshaRo = (...args) => new EvalshaROCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/evalsha\n */\n evalsha = (...args) => new EvalshaCommand(args, this.opts).exec(this.client);\n /**\n * Generic method to execute any Redis command.\n */\n exec = (args) => new ExecCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/exists\n */\n exists = (...args) => new ExistsCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/expire\n */\n expire = (...args) => new ExpireCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/expireat\n */\n expireat = (...args) => new ExpireAtCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/flushall\n */\n flushall = (args) => new FlushAllCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/flushdb\n */\n flushdb = (...args) => new FlushDBCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/geoadd\n */\n geoadd = (...args) => new GeoAddCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/geopos\n */\n geopos = (...args) => new GeoPosCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/geodist\n */\n geodist = (...args) => new GeoDistCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/geohash\n */\n geohash = (...args) => new GeoHashCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/geosearch\n */\n geosearch = (...args) => new GeoSearchCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/geosearchstore\n */\n geosearchstore = (...args) => new GeoSearchStoreCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/get\n */\n get = (...args) => new GetCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/getbit\n */\n getbit = (...args) => new GetBitCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/getdel\n */\n getdel = (...args) => new GetDelCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/getex\n */\n getex = (...args) => new GetExCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/getrange\n */\n getrange = (...args) => new GetRangeCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/getset\n */\n getset = (key, value) => new GetSetCommand([key, value], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hdel\n */\n hdel = (...args) => new HDelCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hexists\n */\n hexists = (...args) => new HExistsCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hexpire\n */\n hexpire = (...args) => new HExpireCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hexpireat\n */\n hexpireat = (...args) => new HExpireAtCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hexpiretime\n */\n hexpiretime = (...args) => new HExpireTimeCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/httl\n */\n httl = (...args) => new HTtlCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hpexpire\n */\n hpexpire = (...args) => new HPExpireCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hpexpireat\n */\n hpexpireat = (...args) => new HPExpireAtCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hpexpiretime\n */\n hpexpiretime = (...args) => new HPExpireTimeCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hpttl\n */\n hpttl = (...args) => new HPTtlCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hpersist\n */\n hpersist = (...args) => new HPersistCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hget\n */\n hget = (...args) => new HGetCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hgetall\n */\n hgetall = (...args) => new HGetAllCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hgetdel\n */\n hgetdel = (...args) => new HGetDelCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hgetex\n */\n hgetex = (...args) => new HGetExCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hincrby\n */\n hincrby = (...args) => new HIncrByCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hincrbyfloat\n */\n hincrbyfloat = (...args) => new HIncrByFloatCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hkeys\n */\n hkeys = (...args) => new HKeysCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hlen\n */\n hlen = (...args) => new HLenCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hmget\n */\n hmget = (...args) => new HMGetCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hmset\n */\n hmset = (key, kv) => new HMSetCommand([key, kv], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hrandfield\n */\n hrandfield = (key, count, withValues) => new HRandFieldCommand([key, count, withValues], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hscan\n */\n hscan = (...args) => new HScanCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hset\n */\n hset = (key, kv) => new HSetCommand([key, kv], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hsetex\n */\n hsetex = (...args) => new HSetExCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hsetnx\n */\n hsetnx = (key, field, value) => new HSetNXCommand([key, field, value], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hstrlen\n */\n hstrlen = (...args) => new HStrLenCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/hvals\n */\n hvals = (...args) => new HValsCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/incr\n */\n incr = (...args) => new IncrCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/incrby\n */\n incrby = (...args) => new IncrByCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/incrbyfloat\n */\n incrbyfloat = (...args) => new IncrByFloatCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/keys\n */\n keys = (...args) => new KeysCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/lindex\n */\n lindex = (...args) => new LIndexCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/linsert\n */\n linsert = (key, direction, pivot, value) => new LInsertCommand([key, direction, pivot, value], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/llen\n */\n llen = (...args) => new LLenCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/lmove\n */\n lmove = (...args) => new LMoveCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/lpop\n */\n lpop = (...args) => new LPopCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/lmpop\n */\n lmpop = (...args) => new LmPopCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/lpos\n */\n lpos = (...args) => new LPosCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/lpush\n */\n lpush = (key, ...elements) => new LPushCommand([key, ...elements], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/lpushx\n */\n lpushx = (key, ...elements) => new LPushXCommand([key, ...elements], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/lrange\n */\n lrange = (...args) => new LRangeCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/lrem\n */\n lrem = (key, count, value) => new LRemCommand([key, count, value], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/lset\n */\n lset = (key, index, value) => new LSetCommand([key, index, value], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/ltrim\n */\n ltrim = (...args) => new LTrimCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/mget\n */\n mget = (...args) => new MGetCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/mset\n */\n mset = (kv) => new MSetCommand([kv], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/msetnx\n */\n msetnx = (kv) => new MSetNXCommand([kv], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/persist\n */\n persist = (...args) => new PersistCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/pexpire\n */\n pexpire = (...args) => new PExpireCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/pexpireat\n */\n pexpireat = (...args) => new PExpireAtCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/pfadd\n */\n pfadd = (...args) => new PfAddCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/pfcount\n */\n pfcount = (...args) => new PfCountCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/pfmerge\n */\n pfmerge = (...args) => new PfMergeCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/ping\n */\n ping = (args) => new PingCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/psetex\n */\n psetex = (key, ttl, value) => new PSetEXCommand([key, ttl, value], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/psubscribe\n */\n psubscribe = (patterns) => {\n const patternArray = Array.isArray(patterns) ? patterns : [patterns];\n return new Subscriber(this.client, patternArray, true, this.opts);\n };\n /**\n * @see https://redis.io/commands/pttl\n */\n pttl = (...args) => new PTtlCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/publish\n */\n publish = (...args) => new PublishCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/randomkey\n */\n randomkey = () => new RandomKeyCommand().exec(this.client);\n /**\n * @see https://redis.io/commands/rename\n */\n rename = (...args) => new RenameCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/renamenx\n */\n renamenx = (...args) => new RenameNXCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/rpop\n */\n rpop = (...args) => new RPopCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/rpush\n */\n rpush = (key, ...elements) => new RPushCommand([key, ...elements], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/rpushx\n */\n rpushx = (key, ...elements) => new RPushXCommand([key, ...elements], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/sadd\n */\n sadd = (key, member, ...members) => new SAddCommand([key, member, ...members], this.opts).exec(this.client);\n scan(cursor, opts) {\n return new ScanCommand([cursor, opts], this.opts).exec(this.client);\n }\n /**\n * @see https://redis.io/commands/scard\n */\n scard = (...args) => new SCardCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/script-exists\n */\n scriptExists = (...args) => new ScriptExistsCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/script-flush\n */\n scriptFlush = (...args) => new ScriptFlushCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/script-load\n */\n scriptLoad = (...args) => new ScriptLoadCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/sdiff\n */\n sdiff = (...args) => new SDiffCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/sdiffstore\n */\n sdiffstore = (...args) => new SDiffStoreCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/set\n */\n set = (key, value, opts) => new SetCommand([key, value, opts], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/setbit\n */\n setbit = (...args) => new SetBitCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/setex\n */\n setex = (key, ttl, value) => new SetExCommand([key, ttl, value], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/setnx\n */\n setnx = (key, value) => new SetNxCommand([key, value], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/setrange\n */\n setrange = (...args) => new SetRangeCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/sinter\n */\n sinter = (...args) => new SInterCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/sintercard\n */\n sintercard = (...args) => new SInterCardCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/sinterstore\n */\n sinterstore = (...args) => new SInterStoreCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/sismember\n */\n sismember = (key, member) => new SIsMemberCommand([key, member], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/smismember\n */\n smismember = (key, members) => new SMIsMemberCommand([key, members], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/smembers\n */\n smembers = (...args) => new SMembersCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/smove\n */\n smove = (source, destination, member) => new SMoveCommand([source, destination, member], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/spop\n */\n spop = (...args) => new SPopCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/srandmember\n */\n srandmember = (...args) => new SRandMemberCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/srem\n */\n srem = (key, ...members) => new SRemCommand([key, ...members], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/sscan\n */\n sscan = (...args) => new SScanCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/strlen\n */\n strlen = (...args) => new StrLenCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/subscribe\n */\n subscribe = (channels) => {\n const channelArray = Array.isArray(channels) ? channels : [channels];\n return new Subscriber(this.client, channelArray, false, this.opts);\n };\n /**\n * @see https://redis.io/commands/sunion\n */\n sunion = (...args) => new SUnionCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/sunionstore\n */\n sunionstore = (...args) => new SUnionStoreCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/time\n */\n time = () => new TimeCommand().exec(this.client);\n /**\n * @see https://redis.io/commands/touch\n */\n touch = (...args) => new TouchCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/ttl\n */\n ttl = (...args) => new TtlCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/type\n */\n type = (...args) => new TypeCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/unlink\n */\n unlink = (...args) => new UnlinkCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/xadd\n */\n xadd = (...args) => new XAddCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/xack\n */\n xack = (...args) => new XAckCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/xackdel\n */\n xackdel = (...args) => new XAckDelCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/xdel\n */\n xdel = (...args) => new XDelCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/xdelex\n */\n xdelex = (...args) => new XDelExCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/xgroup\n */\n xgroup = (...args) => new XGroupCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/xread\n */\n xread = (...args) => new XReadCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/xreadgroup\n */\n xreadgroup = (...args) => new XReadGroupCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/xinfo\n */\n xinfo = (...args) => new XInfoCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/xlen\n */\n xlen = (...args) => new XLenCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/xpending\n */\n xpending = (...args) => new XPendingCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/xclaim\n */\n xclaim = (...args) => new XClaimCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/xautoclaim\n */\n xautoclaim = (...args) => new XAutoClaim(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/xtrim\n */\n xtrim = (...args) => new XTrimCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/xrange\n */\n xrange = (...args) => new XRangeCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/xrevrange\n */\n xrevrange = (...args) => new XRevRangeCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/zadd\n */\n zadd = (...args) => {\n if (\"score\" in args[1]) {\n return new ZAddCommand([args[0], args[1], ...args.slice(2)], this.opts).exec(\n this.client\n );\n }\n return new ZAddCommand(\n [args[0], args[1], ...args.slice(2)],\n this.opts\n ).exec(this.client);\n };\n /**\n * @see https://redis.io/commands/zcard\n */\n zcard = (...args) => new ZCardCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/zcount\n */\n zcount = (...args) => new ZCountCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/zdiffstore\n */\n zdiffstore = (...args) => new ZDiffStoreCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/zincrby\n */\n zincrby = (key, increment, member) => new ZIncrByCommand([key, increment, member], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/zinterstore\n */\n zinterstore = (...args) => new ZInterStoreCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/zlexcount\n */\n zlexcount = (...args) => new ZLexCountCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/zmscore\n */\n zmscore = (...args) => new ZMScoreCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/zpopmax\n */\n zpopmax = (...args) => new ZPopMaxCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/zpopmin\n */\n zpopmin = (...args) => new ZPopMinCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/zrange\n */\n zrange = (...args) => new ZRangeCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/zrank\n */\n zrank = (key, member) => new ZRankCommand([key, member], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/zrem\n */\n zrem = (key, ...members) => new ZRemCommand([key, ...members], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/zremrangebylex\n */\n zremrangebylex = (...args) => new ZRemRangeByLexCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/zremrangebyrank\n */\n zremrangebyrank = (...args) => new ZRemRangeByRankCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/zremrangebyscore\n */\n zremrangebyscore = (...args) => new ZRemRangeByScoreCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/zrevrank\n */\n zrevrank = (key, member) => new ZRevRankCommand([key, member], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/zscan\n */\n zscan = (...args) => new ZScanCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/zscore\n */\n zscore = (key, member) => new ZScoreCommand([key, member], this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/zunion\n */\n zunion = (...args) => new ZUnionCommand(args, this.opts).exec(this.client);\n /**\n * @see https://redis.io/commands/zunionstore\n */\n zunionstore = (...args) => new ZUnionStoreCommand(args, this.opts).exec(this.client);\n};\n\n// version.ts\nvar VERSION = \"v1.30.2\";\n\nexport {\n error_exports,\n HttpClient,\n SearchIndex,\n Redis,\n VERSION\n};\n","import {\n HttpClient,\n Redis,\n SearchIndex,\n VERSION,\n error_exports\n} from \"./chunk-IH7W44G6.mjs\";\n\n// pkg/commands/search/schema-builder.ts\nvar BUILD = /* @__PURE__ */ Symbol(\"build\");\nvar TextFieldBuilder = class _TextFieldBuilder {\n _noTokenize;\n _noStem;\n _from;\n constructor(noTokenize = { noTokenize: false }, noStem = { noStem: false }, from = { from: null }) {\n this._noTokenize = noTokenize;\n this._noStem = noStem;\n this._from = from;\n }\n noTokenize() {\n return new _TextFieldBuilder({ noTokenize: true }, this._noStem, this._from);\n }\n noStem() {\n return new _TextFieldBuilder(this._noTokenize, { noStem: true }, this._from);\n }\n from(field) {\n return new _TextFieldBuilder(this._noTokenize, this._noStem, { from: field });\n }\n [BUILD]() {\n return {\n type: \"TEXT\",\n ...this._noTokenize.noTokenize ? { noTokenize: true } : {},\n ...this._noStem.noStem ? { noStem: true } : {},\n ...this._from.from ? { from: this._from.from } : {}\n };\n }\n};\nvar NumericFieldBuilder = class _NumericFieldBuilder {\n type;\n _from;\n constructor(type, from = { from: null }) {\n this.type = type;\n this._from = from;\n }\n from(field) {\n return new _NumericFieldBuilder(this.type, { from: field });\n }\n [BUILD]() {\n return this._from.from ? {\n type: this.type,\n fast: true,\n from: this._from.from\n } : {\n type: this.type,\n fast: true\n };\n }\n};\nvar BoolFieldBuilder = class _BoolFieldBuilder {\n _fast;\n _from;\n constructor(fast = { fast: false }, from = { from: null }) {\n this._fast = fast;\n this._from = from;\n }\n fast() {\n return new _BoolFieldBuilder({ fast: true }, this._from);\n }\n from(field) {\n return new _BoolFieldBuilder(this._fast, { from: field });\n }\n [BUILD]() {\n const hasFast = this._fast.fast;\n const hasFrom = Boolean(this._from.from);\n if (hasFast && hasFrom) {\n return {\n type: \"BOOL\",\n fast: true,\n from: this._from.from\n };\n }\n if (hasFast) {\n return {\n type: \"BOOL\",\n fast: true\n };\n }\n if (hasFrom) {\n return {\n type: \"BOOL\",\n from: this._from.from\n };\n }\n return { type: \"BOOL\" };\n }\n};\nvar DateFieldBuilder = class _DateFieldBuilder {\n _fast;\n _from;\n constructor(fast = { fast: false }, from = { from: null }) {\n this._fast = fast;\n this._from = from;\n }\n fast() {\n return new _DateFieldBuilder({ fast: true }, this._from);\n }\n from(field) {\n return new _DateFieldBuilder(this._fast, { from: field });\n }\n [BUILD]() {\n const hasFast = this._fast.fast;\n const hasFrom = Boolean(this._from.from);\n if (hasFast && hasFrom) {\n return {\n type: \"DATE\",\n fast: true,\n from: this._from.from\n };\n }\n if (hasFast) {\n return {\n type: \"DATE\",\n fast: true\n };\n }\n if (hasFrom) {\n return {\n type: \"DATE\",\n from: this._from.from\n };\n }\n return { type: \"DATE\" };\n }\n};\nvar KeywordFieldBuilder = class {\n [BUILD]() {\n return { type: \"KEYWORD\" };\n }\n};\nvar FacetFieldBuilder = class {\n [BUILD]() {\n return { type: \"FACET\" };\n }\n};\nvar s = {\n string() {\n return new TextFieldBuilder();\n },\n number(type = \"F64\") {\n return new NumericFieldBuilder(type);\n },\n boolean() {\n return new BoolFieldBuilder();\n },\n date() {\n return new DateFieldBuilder();\n },\n keyword() {\n return new KeywordFieldBuilder();\n },\n facet() {\n return new FacetFieldBuilder();\n },\n object(fields) {\n const result = {};\n for (const [key, value] of Object.entries(fields)) {\n if (value && typeof value === \"object\" && BUILD in value) {\n result[key] = value[BUILD]();\n } else {\n result[key] = value;\n }\n }\n return result;\n }\n};\n\n// platforms/nodejs.ts\nif (typeof atob === \"undefined\") {\n global.atob = (b64) => Buffer.from(b64, \"base64\").toString(\"utf8\");\n}\nvar Redis2 = class _Redis extends Redis {\n /**\n * Create a new redis client by providing a custom `Requester` implementation\n *\n * @example\n * ```ts\n *\n * import { UpstashRequest, Requester, UpstashResponse, Redis } from \"@upstash/redis\"\n *\n * const requester: Requester = {\n * request: <TResult>(req: UpstashRequest): Promise<UpstashResponse<TResult>> => {\n * // ...\n * }\n * }\n *\n * const redis = new Redis(requester)\n * ```\n */\n constructor(configOrRequester) {\n if (\"request\" in configOrRequester) {\n super(configOrRequester);\n return;\n }\n if (!configOrRequester.url) {\n console.warn(\n `[Upstash Redis] The 'url' property is missing or undefined in your Redis config.`\n );\n } else if (configOrRequester.url.startsWith(\" \") || configOrRequester.url.endsWith(\" \") || /\\r|\\n/.test(configOrRequester.url)) {\n console.warn(\n \"[Upstash Redis] The redis url contains whitespace or newline, which can cause errors!\"\n );\n }\n if (!configOrRequester.token) {\n console.warn(\n `[Upstash Redis] The 'token' property is missing or undefined in your Redis config.`\n );\n } else if (configOrRequester.token.startsWith(\" \") || configOrRequester.token.endsWith(\" \") || /\\r|\\n/.test(configOrRequester.token)) {\n console.warn(\n \"[Upstash Redis] The redis token contains whitespace or newline, which can cause errors!\"\n );\n }\n const client = new HttpClient({\n baseUrl: configOrRequester.url,\n retry: configOrRequester.retry,\n headers: { authorization: `Bearer ${configOrRequester.token}` },\n agent: configOrRequester.agent,\n responseEncoding: configOrRequester.responseEncoding,\n cache: configOrRequester.cache ?? \"no-store\",\n signal: configOrRequester.signal,\n keepAlive: configOrRequester.keepAlive,\n readYourWrites: configOrRequester.readYourWrites\n });\n const safeEnv = typeof process === \"object\" && process && typeof process.env === \"object\" && process.env ? process.env : {};\n super(client, {\n automaticDeserialization: configOrRequester.automaticDeserialization,\n enableTelemetry: configOrRequester.enableTelemetry ?? !safeEnv.UPSTASH_DISABLE_TELEMETRY,\n latencyLogging: configOrRequester.latencyLogging,\n enableAutoPipelining: configOrRequester.enableAutoPipelining\n });\n const nodeVersion = typeof process === \"object\" && process ? process.version : void 0;\n this.addTelemetry({\n runtime: (\n // @ts-expect-error to silence compiler\n typeof EdgeRuntime === \"string\" ? \"edge-light\" : nodeVersion ? `node@${nodeVersion}` : \"unknown\"\n ),\n platform: safeEnv.UPSTASH_CONSOLE ? \"console\" : safeEnv.VERCEL ? \"vercel\" : safeEnv.AWS_REGION ? \"aws\" : \"unknown\",\n sdk: `@upstash/redis@${VERSION}`\n });\n if (this.enableAutoPipelining) {\n return this.autoPipeline();\n }\n }\n /**\n * Create a new Upstash Redis instance from environment variables.\n *\n * Use this to automatically load connection secrets from your environment\n * variables. For instance when using the Vercel integration.\n *\n * This tries to load connection details from your environment using `process.env`:\n * - URL: `UPSTASH_REDIS_REST_URL` or fallback to `KV_REST_API_URL`\n * - Token: `UPSTASH_REDIS_REST_TOKEN` or fallback to `KV_REST_API_TOKEN`\n *\n * The fallback variables provide compatibility with Vercel KV and other platforms\n * that may use different naming conventions.\n */\n static fromEnv(config) {\n if (typeof process !== \"object\" || !process || typeof process.env !== \"object\" || !process.env) {\n throw new TypeError(\n '[Upstash Redis] Unable to get environment variables, `process.env` is undefined. If you are deploying to cloudflare, please import from \"@upstash/redis/cloudflare\" instead'\n );\n }\n const url = process.env.UPSTASH_REDIS_REST_URL || process.env.KV_REST_API_URL;\n if (!url) {\n console.warn(\"[Upstash Redis] Unable to find environment variable: `UPSTASH_REDIS_REST_URL`\");\n }\n const token = process.env.UPSTASH_REDIS_REST_TOKEN || process.env.KV_REST_API_TOKEN;\n if (!token) {\n console.warn(\n \"[Upstash Redis] Unable to find environment variable: `UPSTASH_REDIS_REST_TOKEN`\"\n );\n }\n return new _Redis({ ...config, url, token });\n }\n};\nexport {\n Redis2 as Redis,\n SearchIndex,\n error_exports as errors,\n s\n};\n","let wasm;\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n\ncachedTextDecoder.decode();\n\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\n\nlet heap = new Array(128).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nlet heap_next = heap.length;\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nfunction getObject(idx) { return heap[idx]; }\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n }\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_export3(addHeapObject(e));\n }\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nfunction dropObject(idx) {\n if (idx < 132) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n/**\n * Cross-boundary `verify` wrapper. The JS host calls `engine.verify(input,\n * ctxSpec)`; on success it gets a [`VerifyResult`] JSON object; on\n * infrastructure failure (or malformed input) it gets a thrown JS error\n * whose message names the failure mode.\n *\n * **Error semantics**:\n *\n * - Verification *verdicts* (Block/Challenge/etc.) surface inside the\n * returned `VerifyResult` — they are not thrown.\n * - Engine [`VerifyError`][crate::error::VerifyError] (resolver / cache /\n * reputation / policy infra failures) surface as thrown JS errors.\n * - Serde deserialisation failures (malformed JS input) surface as thrown\n * JS errors too, mirroring the typed-vs-thrown split.\n *\n * # JS signature\n *\n * ```ts\n * function verify(input: AgentRequest, ctx: ContextSpec): VerifyResult;\n * ```\n * @param {any} input_js\n * @param {any} ctx_js\n * @returns {any}\n */\nexport function verify(input_js, ctx_js) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.verify(retptr, addHeapObject(input_js), addHeapObject(ctx_js));\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\nconst EXPECTED_RESPONSE_TYPES = new Set(['basic', 'cors', 'default']);\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n const validResponse = module.ok && EXPECTED_RESPONSE_TYPES.has(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbg_Error_e83987f665cf5504 = function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_Number_bb48ca12f395cd08 = function(arg0) {\n const ret = Number(getObject(arg0));\n return ret;\n };\n imports.wbg.__wbg_String_8f0eb39a4a4c2f66 = function(arg0, arg1) {\n const ret = String(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg___wbindgen_bigint_get_as_i64_f3ebc5a755000afd = function(arg0, arg1) {\n const v = getObject(arg1);\n const ret = typeof(v) === 'bigint' ? v : undefined;\n getDataViewMemory0().setBigInt64(arg0 + 8 * 1, isLikeNone(ret) ? BigInt(0) : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n };\n imports.wbg.__wbg___wbindgen_boolean_get_6d5a1ee65bab5f68 = function(arg0) {\n const v = getObject(arg0);\n const ret = typeof(v) === 'boolean' ? v : undefined;\n return isLikeNone(ret) ? 0xFFFFFF : ret ? 1 : 0;\n };\n imports.wbg.__wbg___wbindgen_debug_string_df47ffb5e35e6763 = function(arg0, arg1) {\n const ret = debugString(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg___wbindgen_in_bb933bd9e1b3bc0f = function(arg0, arg1) {\n const ret = getObject(arg0) in getObject(arg1);\n return ret;\n };\n imports.wbg.__wbg___wbindgen_is_bigint_cb320707dcd35f0b = function(arg0) {\n const ret = typeof(getObject(arg0)) === 'bigint';\n return ret;\n };\n imports.wbg.__wbg___wbindgen_is_function_ee8a6c5833c90377 = function(arg0) {\n const ret = typeof(getObject(arg0)) === 'function';\n return ret;\n };\n imports.wbg.__wbg___wbindgen_is_object_c818261d21f283a4 = function(arg0) {\n const val = getObject(arg0);\n const ret = typeof(val) === 'object' && val !== null;\n return ret;\n };\n imports.wbg.__wbg___wbindgen_is_string_fbb76cb2940daafd = function(arg0) {\n const ret = typeof(getObject(arg0)) === 'string';\n return ret;\n };\n imports.wbg.__wbg___wbindgen_is_undefined_2d472862bd29a478 = function(arg0) {\n const ret = getObject(arg0) === undefined;\n return ret;\n };\n imports.wbg.__wbg___wbindgen_jsval_eq_6b13ab83478b1c50 = function(arg0, arg1) {\n const ret = getObject(arg0) === getObject(arg1);\n return ret;\n };\n imports.wbg.__wbg___wbindgen_jsval_loose_eq_b664b38a2f582147 = function(arg0, arg1) {\n const ret = getObject(arg0) == getObject(arg1);\n return ret;\n };\n imports.wbg.__wbg___wbindgen_number_get_a20bf9b85341449d = function(arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof(obj) === 'number' ? obj : undefined;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n };\n imports.wbg.__wbg___wbindgen_string_get_e4f06c90489ad01b = function(arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg___wbindgen_throw_b855445ff6a94295 = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbg_call_e762c39fa8ea36bf = function() { return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_done_2042aa2670fb1db1 = function(arg0) {\n const ret = getObject(arg0).done;\n return ret;\n };\n imports.wbg.__wbg_entries_e171b586f8f6bdbf = function(arg0) {\n const ret = Object.entries(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_get_7bed016f185add81 = function(arg0, arg1) {\n const ret = getObject(arg0)[arg1 >>> 0];\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_get_efcb449f58ec27c2 = function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_get_with_ref_key_1dc361bd10053bfe = function(arg0, arg1) {\n const ret = getObject(arg0)[getObject(arg1)];\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_instanceof_ArrayBuffer_70beb1189ca63b38 = function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_instanceof_Map_8579b5e2ab5437c7 = function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Map;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_instanceof_Uint8Array_20c8e73002f7af98 = function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_isArray_96e0af9891d0945d = function(arg0) {\n const ret = Array.isArray(getObject(arg0));\n return ret;\n };\n imports.wbg.__wbg_isSafeInteger_d216eda7911dde36 = function(arg0) {\n const ret = Number.isSafeInteger(getObject(arg0));\n return ret;\n };\n imports.wbg.__wbg_iterator_e5822695327a3c39 = function() {\n const ret = Symbol.iterator;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_length_69bca3cb64fc8748 = function(arg0) {\n const ret = getObject(arg0).length;\n return ret;\n };\n imports.wbg.__wbg_length_cdd215e10d9dd507 = function(arg0) {\n const ret = getObject(arg0).length;\n return ret;\n };\n imports.wbg.__wbg_new_1acc0b6eea89d040 = function() {\n const ret = new Object();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_5a79be3ab53b8aa5 = function(arg0) {\n const ret = new Uint8Array(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_68651c719dcda04e = function() {\n const ret = new Map();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_e17d9f43105b08be = function() {\n const ret = new Array();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_next_020810e0ae8ebcb0 = function() { return handleError(function (arg0) {\n const ret = getObject(arg0).next();\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_next_2c826fe5dfec6b6a = function(arg0) {\n const ret = getObject(arg0).next;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_prototypesetcall_2a6620b6922694b2 = function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), getObject(arg2));\n };\n imports.wbg.__wbg_set_3f1d0b984ed272ed = function(arg0, arg1, arg2) {\n getObject(arg0)[takeObject(arg1)] = takeObject(arg2);\n };\n imports.wbg.__wbg_set_907fb406c34a251d = function(arg0, arg1, arg2) {\n const ret = getObject(arg0).set(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_set_c213c871859d6500 = function(arg0, arg1, arg2) {\n getObject(arg0)[arg1 >>> 0] = takeObject(arg2);\n };\n imports.wbg.__wbg_value_692627309814bb8c = function(arg0) {\n const ret = getObject(arg0).value;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_cast_2241b6af4c4b2941 = function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_cast_4625c577ab2ec9ee = function(arg0) {\n // Cast intrinsic for `U64 -> Externref`.\n const ret = BigInt.asUintN(64, arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_cast_9ae0607507abb057 = function(arg0) {\n // Cast intrinsic for `I64 -> Externref`.\n const ret = arg0;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_cast_d6cd19b81560fd6e = function(arg0) {\n // Cast intrinsic for `F64 -> Externref`.\n const ret = arg0;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_object_clone_ref = function(arg0) {\n const ret = getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_object_drop_ref = function(arg0) {\n takeObject(arg0);\n };\n\n return imports;\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n\n\n\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (typeof module_or_path === 'undefined') {\n module_or_path = new URL('kya_os_engine_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","/**\n * Shared egress guard for verifier-owned outbound fetches.\n *\n * MCP-I payloads are attacker controlled until the signature verifies. Any\n * host-side fetch derived from that payload must reject obvious local/private\n * targets before invoking `fetch`.\n */\n\nconst BLOCKED_HOSTNAMES = new Set(['localhost', 'metadata', 'metadata.google.internal']);\n\nexport class UnsafeOutboundUrl extends Error {\n readonly kind = 'UnsafeOutboundUrl';\n}\n\nexport function assertSafeHttpsUrl(rawUrl: string, label = 'outbound URL'): string {\n let parsed: URL;\n try {\n parsed = new URL(rawUrl);\n } catch {\n throw new UnsafeOutboundUrl(`${label} must be a valid URL: ${rawUrl}`);\n }\n\n if (parsed.protocol !== 'https:') {\n throw new UnsafeOutboundUrl(`${label} must use https: ${rawUrl}`);\n }\n if (parsed.username || parsed.password) {\n throw new UnsafeOutboundUrl(`${label} must not contain credentials: ${rawUrl}`);\n }\n\n const hostname = normalizeHostname(parsed.hostname);\n if (!hostname || isBlockedHostname(hostname)) {\n throw new UnsafeOutboundUrl(`${label} targets a local or private host: ${rawUrl}`);\n }\n\n return rawUrl;\n}\n\nfunction normalizeHostname(hostname: string): string {\n let normalized = hostname.trim().toLowerCase();\n if (normalized.startsWith('[') && normalized.endsWith(']')) {\n normalized = normalized.slice(1, -1);\n }\n while (normalized.endsWith('.')) {\n normalized = normalized.slice(0, -1);\n }\n return normalized;\n}\n\nfunction isBlockedHostname(hostname: string): boolean {\n if (BLOCKED_HOSTNAMES.has(hostname) || hostname.endsWith('.localhost')) {\n return true;\n }\n\n const ipv4 = parseIpv4(hostname);\n if (ipv4) {\n return isBlockedIpv4(ipv4);\n }\n\n return isBlockedIpv6(hostname);\n}\n\nfunction parseIpv4(hostname: string): [number, number, number, number] | null {\n const parts = hostname.split('.');\n if (parts.length !== 4) return null;\n\n const octets = parts.map((part) => {\n if (!/^\\d{1,3}$/.test(part)) return Number.NaN;\n const value = Number(part);\n return value >= 0 && value <= 255 ? value : Number.NaN;\n });\n\n if (octets.some(Number.isNaN)) return null;\n return octets as [number, number, number, number];\n}\n\nfunction isBlockedIpv4([a, b]: [number, number, number, number]): boolean {\n return (\n a === 0 ||\n a === 10 ||\n a === 127 ||\n (a === 100 && b >= 64 && b <= 127) ||\n (a === 169 && b === 254) ||\n (a === 172 && b >= 16 && b <= 31) ||\n (a === 192 && b === 168) ||\n (a === 198 && (b === 18 || b === 19)) ||\n a >= 224\n );\n}\n\nfunction isBlockedIpv6(hostname: string): boolean {\n if (!hostname.includes(':')) return false;\n\n const ipv4Mapped = hostname.match(/(?:^|:)ffff:(\\d{1,3}(?:\\.\\d{1,3}){3})$/);\n if (ipv4Mapped) {\n const ipv4 = parseIpv4(ipv4Mapped[1]);\n return ipv4 ? isBlockedIpv4(ipv4) : true;\n }\n\n if (hostname === '::' || hostname === '::1' || hostname === '0:0:0:0:0:0:0:1') {\n return true;\n }\n\n const firstSegment = Number.parseInt(hostname.split(':')[0] || '0', 16);\n if (Number.isNaN(firstSegment)) return true;\n\n return (\n (firstSegment & 0xfe00) === 0xfc00 || // unique local fc00::/7\n (firstSegment & 0xffc0) === 0xfe80 || // link-local fe80::/10\n (firstSegment & 0xff00) === 0xff00 // multicast ff00::/8\n );\n}\n","/**\n * `kya-os-engine` WASM bridge — E-1 (#2486 follow-up).\n *\n * Loads the Rust `kya-os-engine` WASM artifact and surfaces a typed\n * `engineVerify(input, ctx)` wrapper around its single `verify` export.\n *\n * The engine is **synchronous** by contract. Host wrappers pre-fetch\n * every async dependency (DID document, status list, reputation,\n * tenant policy) and ship the results as a plain-data\n * [`ContextSpec`] (see `./types`). The WASM glue on the Rust side\n * builds in-memory lookup-table adapters that satisfy the engine's\n * five sync DI traits — no JS callbacks cross the boundary.\n *\n * Subsequent E-2 / E-3 phases consume this module to verify HTTP\n * requests inside the Next.js + Express middlewares.\n */\n\nimport type { AgentRequest, ContextSpec, VerifyResult } from './types';\n\n// wasm-bindgen ships a Node.js entry that calls\n// `fs.readFileSync(__dirname + '/<name>_bg.wasm')` synchronously when\n// the module is imported. The auto-generated `.d.ts` types the export\n// loosely (`any`); we re-type at this wrapper boundary so callers see\n// the contract from `./types`.\nimport { verify as wasmVerify } from '../../wasm/kya-os-engine/kya_os_engine.js';\n\n/**\n * Verify an AgentRequest synchronously against a pre-fetched\n * [`ContextSpec`].\n *\n * @throws {Error} if the WASM glue rejects the input (deserialisation\n * failure) or the engine returns a `VerifyError` (resolver /\n * status-list / reputation / policy infrastructure failure). Engine\n * *verdicts* (Block / Challenge / etc.) DO NOT throw — they surface\n * inside the returned [`VerifyResult`].\n */\nexport function engineVerify(input: AgentRequest, ctx: ContextSpec): VerifyResult {\n const result = wasmVerify(input, ctx);\n return result as VerifyResult;\n}\n\nexport type {\n AgentRequest,\n A2ARequest,\n A2PRequest,\n BlockReason,\n ChallengeParams,\n ContextSpec,\n Decision,\n DidDocument,\n EngineInfo,\n EnforcementMode,\n HttpSignedRequest,\n InstructPayload,\n KeyType,\n McpIPayload,\n McpIRequest,\n PlainHttpRequest,\n RedirectTarget,\n SuggestedAction,\n VerificationMethod,\n VerifyResult,\n} from './types';\n","/**\n * Shared utilities for the Phase B adapters.\n *\n * Anything used by more than one adapter belongs here so a future\n * bug fix touches one site, not N.\n */\n\n/**\n * base64url decode without external deps. Pads if necessary,\n * substitutes URL-safe chars, returns the raw bytes as `Uint8Array`.\n * RFC 4648 § 5 — characters `-` and `_` substitute for `+` and `/`;\n * padding `=` is optional and stripped in URL contexts.\n */\nexport function base64UrlDecode(input: string): Uint8Array {\n const padded = input.replace(/-/g, '+').replace(/_/g, '/');\n const padding = padded.length % 4 === 0 ? '' : '='.repeat(4 - (padded.length % 4));\n return new Uint8Array(Buffer.from(padded + padding, 'base64'));\n}\n","/**\n * HTTP-to-`AgentRequest` translator — Phase C.1.\n *\n * Detects which engine protocol the request belongs to and builds\n * the typed `AgentRequest` the WASM consumes. Conservative\n * detection: never escalates an ambiguous request into a higher\n * verification tier. Anonymous PlainHttp is the default.\n *\n * **What this layer parses and what it doesn't.** It parses *only\n * what's needed to drive conditional pre-fetch* — header presence,\n * the MCP-I envelope's payload segment (to extract `iss` + `sub` +\n * optional credentialStatus URL). It does **not** verify\n * signatures, decode VC chains for revocation bits, or evaluate\n * scope. Those live in the engine (H-1's parser + Stages 2-5).\n *\n * **Buffer-portability note.** This module uses `Buffer.from(...)` and\n * `Buffer.isBuffer(...)` at multiple call sites (the JWS preflight\n * `hasMalformedJwsBody`, both `tryBuildMcpIFromBody` variants, the\n * legacy-header reconstitution path, and `bodyAsBytes`). All of these\n * assume the Node `Buffer` global is available — provided natively by\n * the Node runtime, polyfilled on Vercel Edge, and gated behind\n * `nodejs_compat` on Cloudflare Workers. Bare-Edge and pure-browser\n * embedders would need a `Buffer` polyfill or a refactor to\n * `TextEncoder` / `Uint8Array.from`. Tracked as a follow-up since\n * Phase D's Vercel Node + Vercel Edge targets are both covered today.\n */\n\nimport { base64UrlDecode } from '../adapters/util';\nimport type {\n AgentRequest,\n HttpSignedRequest,\n McpIPayload,\n McpIRequest,\n PlainHttpRequest,\n} from '../types';\n\nimport type { IncomingHttpLike } from './types';\n\n// -----------------------------------------------------------------------------\n// Public surface.\n// -----------------------------------------------------------------------------\n\nexport interface BuildAgentRequestOpts {\n /** See `VerifyRequestOpts.legacyEnvelopeFallback`. */\n legacyEnvelopeFallback?: boolean;\n}\n\n/**\n * Translate an HTTP-like request into the engine's `AgentRequest`.\n *\n * Detection order (conservative — never escalate ambiguous input):\n * 1. MCP-I L2 detached proof in `_meta.proof.jws` (spec form).\n * 2. (Legacy, opt-in) MCP-I in `KYA-Delegation` header\n * (Envelope-1 #2537 transition window only).\n * 3. RFC 9421 HTTP Message Signatures (`Signature-Input` header).\n * 4. PlainHttp (default — anonymous traffic).\n */\nexport function buildAgentRequest(\n req: IncomingHttpLike,\n opts: BuildAgentRequestOpts = {}\n): AgentRequest {\n // 1. MCP-I L2 detached proof — spec form, body's `_meta.proof.jws`.\n const mcpI = tryBuildMcpIFromBody(req);\n if (mcpI) {\n return { protocol: 'McpI', request: mcpI };\n }\n\n // 2. MCP-I legacy header (Envelope-1 transition only).\n if (opts.legacyEnvelopeFallback) {\n const legacyMcpI = tryBuildMcpIFromLegacyHeader(req);\n if (legacyMcpI) {\n return { protocol: 'McpI', request: legacyMcpI };\n }\n }\n\n // 3. RFC 9421 HTTP Message Signatures.\n if (getHeader(req, 'signature-input')) {\n return { protocol: 'HttpSigned', request: buildHttpSigned(req) };\n }\n\n // 4. Default — anonymous PlainHttp.\n return { protocol: 'PlainHttp', request: buildPlainHttp(req) };\n}\n\n/**\n * Preflight check — does the request body carry a `_meta.proof.jws`\n * string that `parseJwsPayloadStruct` cannot project into a typed\n * `McpIPayload`?\n *\n * The caller declared intent (an MCP-I envelope) by including the\n * JWS field; structural failure to extract the payload means the\n * envelope is malformed, not absent. Without this preflight, the\n * orchestrator would silently fall through to PlainHttp — pre-#2560\n * that happened to also Block (engine returned `Block(ParseError)`\n * for every PlainHttp), so the regression was invisible; post-#2560\n * the engine's Stage 1 + stub policy returns `Permit` for anonymous\n * PlainHttp and tampered envelopes would be silently accepted.\n *\n * Returns `true` when the orchestrator should synthesize\n * `Block(ParseError)` BEFORE calling `buildAgentRequest`.\n */\nexport function hasMalformedJwsBody(req: IncomingHttpLike): boolean {\n const parsed = parseBodyAsObject(req.body);\n if (!parsed || typeof parsed !== 'object') return false;\n const meta = (parsed as Record<string, unknown>)._meta;\n if (!meta || typeof meta !== 'object') return false;\n const proof = (meta as Record<string, unknown>).proof;\n if (!proof || typeof proof !== 'object') return false;\n const jws = (proof as Record<string, unknown>).jws;\n if (typeof jws !== 'string' || jws.length === 0) return false;\n const raw = Array.from(Buffer.from(jws, 'utf8'));\n return parseJwsPayloadStruct(raw) === null;\n}\n\n// -----------------------------------------------------------------------------\n// Identifier extractors — drive conditional pre-fetch in Phase C.2.\n// -----------------------------------------------------------------------------\n\n/**\n * Issuer DID — Stage 1 (identity resolution) targets this. `null`\n * for PlainHttp (anonymous → no DID to resolve).\n */\nexport function extractIssuer(request: AgentRequest): string | null {\n if (request.protocol === 'McpI') return request.request.payload.iss || null;\n return null;\n}\n\n/**\n * Agent DID — used by ReputationOracle. Defaults to `payload.sub`\n * for MCP-I (subject = the agent the proof is *about*).\n */\nexport function extractAgentDid(request: AgentRequest): string | null {\n if (request.protocol === 'McpI') return request.request.payload.sub || null;\n return null;\n}\n\n/**\n * Status-list URL for revocation pre-fetch. Pulled from the JWS\n * payload's `vc.credentialStatus.id` (W3C VC Data Model 1.1).\n * `null` when the envelope is L1 (no VC chain) — Stage 3 will skip.\n */\nexport function extractCredentialStatusUrl(request: AgentRequest): string | null {\n if (request.protocol !== 'McpI') return null;\n // Re-parse the JWS payload as raw JSON to reach the `vc` claim;\n // the typed `McpIPayload` deliberately omits it.\n const raw = decodeJwsPayloadJson(request.request.raw);\n if (!raw) return null;\n const vc = (raw as Record<string, unknown>).vc;\n if (!vc || typeof vc !== 'object') return null;\n const credentialStatus = (vc as Record<string, unknown>).credentialStatus;\n if (!credentialStatus || typeof credentialStatus !== 'object') return null;\n const id = (credentialStatus as Record<string, unknown>).id;\n return typeof id === 'string' ? id : null;\n}\n\n// -----------------------------------------------------------------------------\n// MCP-I — spec form (`_meta.proof.jws`).\n// -----------------------------------------------------------------------------\n\nfunction tryBuildMcpIFromBody(req: IncomingHttpLike): McpIRequest | null {\n const parsed = parseBodyAsObject(req.body);\n if (!parsed) return null;\n const meta = (parsed as Record<string, unknown>)._meta;\n if (!meta || typeof meta !== 'object') return null;\n const proof = (meta as Record<string, unknown>).proof;\n if (!proof || typeof proof !== 'object') return null;\n const jws = (proof as Record<string, unknown>).jws;\n if (typeof jws !== 'string' || jws.length === 0) return null;\n\n const raw = Array.from(Buffer.from(jws, 'utf8'));\n const payload = parseJwsPayloadStruct(raw);\n if (!payload) return null;\n return { raw, payload };\n}\n\nfunction parseBodyAsObject(body: unknown): unknown {\n if (!body) return null;\n // Buffer check MUST come before the generic `typeof === 'object'`\n // branch — `typeof <Buffer> === 'object'` in JavaScript, so the\n // naive ordering would return the raw Buffer instance instead of\n // a parsed object, and `tryBuildMcpIFromBody` would silently fail\n // to find `_meta.proof.jws` (which Express middleware passing\n // `req.body` as a Buffer exercises). Bugbot caught the ordering\n // on the initial Phase C drop.\n if (Buffer.isBuffer(body)) {\n try {\n return JSON.parse(body.toString('utf8'));\n } catch {\n return null;\n }\n }\n if (typeof body === 'string') {\n try {\n return JSON.parse(body);\n } catch {\n return null;\n }\n }\n if (typeof body === 'object') return body;\n return null;\n}\n\n// -----------------------------------------------------------------------------\n// MCP-I — legacy header form (Envelope-1 transition only).\n// -----------------------------------------------------------------------------\n\n/**\n * Pre-Envelope-1, the TS bouncer ships `{protected,payload,signature}`\n * JSON in the `KYA-Delegation` header. Phase 1 reconstructs the\n * compact JWS form (`<protected>.<payload>.<signature>`) so the\n * engine's parser can consume it uniformly.\n *\n * **This is a transition shim.** Envelope-1 (#2537) aligns the\n * bouncer with the spec form; once that ships and customer bouncers\n * re-deploy, this function gets deleted along with the\n * `legacyEnvelopeFallback` flag.\n */\nfunction tryBuildMcpIFromLegacyHeader(req: IncomingHttpLike): McpIRequest | null {\n const header = getHeader(req, 'kya-delegation');\n if (!header) return null;\n let parsed: unknown;\n try {\n parsed = JSON.parse(header);\n } catch {\n return null;\n }\n if (!parsed || typeof parsed !== 'object') return null;\n const obj = parsed as Record<string, unknown>;\n const protectedSeg = obj.protected;\n const payloadSeg = obj.payload;\n const signatureSeg = obj.signature;\n if (\n typeof protectedSeg !== 'string' ||\n typeof payloadSeg !== 'string' ||\n typeof signatureSeg !== 'string'\n ) {\n return null;\n }\n // Reconstitute the compact JWS form `<header>.<payload>.<signature>`.\n const compact = `${protectedSeg}.${payloadSeg}.${signatureSeg}`;\n const raw = Array.from(Buffer.from(compact, 'utf8'));\n const payload = parseJwsPayloadStruct(raw);\n if (!payload) return null;\n return { raw, payload };\n}\n\n// -----------------------------------------------------------------------------\n// JWS payload extraction — just enough to populate McpIRequest.payload.\n// -----------------------------------------------------------------------------\n\n/**\n * Decode the payload segment of a JWS-compact byte string into the\n * typed `McpIPayload` shape. **Does not verify the signature.** The\n * engine does that (H-1's `verify_mcp_i` Stage 2); this layer just\n * extracts the struct so the engine's bare-vs-signed cross-check\n * has something to compare against.\n *\n * Returns `null` on any structural failure — the orchestrator\n * treats that as \"not a parseable MCP-I envelope\" and falls\n * through to the next detection branch.\n */\nfunction parseJwsPayloadStruct(rawBytes: readonly number[]): McpIPayload | null {\n const json = decodeJwsPayloadJson(rawBytes);\n if (!json || typeof json !== 'object') return null;\n return projectMcpIPayload(json as Record<string, unknown>);\n}\n\n/**\n * Decode the payload segment of a JWS-compact byte string into raw\n * JSON. Returns `null` on any failure (not 3 segments / not valid\n * base64url / not valid JSON).\n */\nfunction decodeJwsPayloadJson(rawBytes: readonly number[]): unknown {\n const text = Buffer.from(rawBytes).toString('utf8');\n const segments = text.split('.');\n if (segments.length !== 3) return null;\n let decoded: Uint8Array;\n try {\n decoded = base64UrlDecode(segments[1]);\n } catch {\n return null;\n }\n try {\n return JSON.parse(Buffer.from(decoded).toString('utf8'));\n } catch {\n return null;\n }\n}\n\nfunction projectMcpIPayload(raw: Record<string, unknown>): McpIPayload | null {\n // Defensive: require all eight fields. Returning `null` here\n // signals \"payload extraction failed\". The orchestrator-level\n // `hasMalformedJwsBody` preflight (see verify-request.ts /\n // verify-request-edge.ts) catches that signal when the body\n // carried a JWS string and synthesizes `Block(ParseError)`\n // — keeping a malformed envelope from silently degrading to\n // PlainHttp. We still bail rather than synthesizing a partial\n // payload here, because letting an incomplete payload through\n // would mask bare-vs-signed mismatches at engine Stage 2.\n const aud = raw.aud;\n const iss = raw.iss;\n const sub = raw.sub;\n const nonce = raw.nonce;\n const sessionId = raw.sessionId;\n const ts = raw.ts;\n const requestHash = raw.requestHash;\n const responseHash = raw.responseHash;\n if (\n typeof aud !== 'string' ||\n typeof iss !== 'string' ||\n typeof sub !== 'string' ||\n typeof nonce !== 'string' ||\n typeof sessionId !== 'string' ||\n typeof ts !== 'number' ||\n typeof requestHash !== 'string' ||\n typeof responseHash !== 'string'\n ) {\n return null;\n }\n return { aud, iss, sub, nonce, sessionId, ts, requestHash, responseHash };\n}\n\n// -----------------------------------------------------------------------------\n// HTTP-Signed (RFC 9421).\n// -----------------------------------------------------------------------------\n\nfunction buildHttpSigned(req: IncomingHttpLike): HttpSignedRequest {\n return {\n raw: bodyAsBytes(req.body),\n method: req.method,\n path: req.url,\n headers: flattenHeaders(req.headers),\n };\n}\n\n// -----------------------------------------------------------------------------\n// PlainHttp.\n// -----------------------------------------------------------------------------\n\nfunction buildPlainHttp(req: IncomingHttpLike): PlainHttpRequest {\n return {\n raw: bodyAsBytes(req.body),\n method: req.method,\n path: req.url,\n headers: flattenHeaders(req.headers),\n userAgent: getHeader(req, 'user-agent') ?? null,\n remoteIp: req.remoteAddress ?? null,\n };\n}\n\n// -----------------------------------------------------------------------------\n// Helpers — header / body normalisation.\n// -----------------------------------------------------------------------------\n\nfunction getHeader(req: IncomingHttpLike, name: string): string | null {\n const lowered = name.toLowerCase();\n for (const [key, value] of Object.entries(req.headers)) {\n if (key.toLowerCase() !== lowered) continue;\n if (Array.isArray(value)) return value[0] ?? null;\n if (typeof value === 'string') return value;\n }\n return null;\n}\n\nfunction flattenHeaders(\n headers: Record<string, string | string[] | undefined>\n): Array<[string, string]> {\n const out: Array<[string, string]> = [];\n for (const [key, value] of Object.entries(headers)) {\n if (value === undefined) continue;\n if (Array.isArray(value)) {\n for (const v of value) out.push([key, v]);\n } else {\n out.push([key, value]);\n }\n }\n return out;\n}\n\nfunction bodyAsBytes(body: unknown): number[] {\n if (!body) return [];\n if (Buffer.isBuffer(body)) return Array.from(body);\n if (typeof body === 'string') return Array.from(Buffer.from(body, 'utf8'));\n if (typeof body === 'object') return Array.from(Buffer.from(JSON.stringify(body), 'utf8'));\n return [];\n}\n","/**\n * `verifyRequest` async orchestrator — Phase C.2.\n *\n * The single entry point Phase D (Next.js) and Phase E (Express)\n * compose. Async pre-fetch on the host side; one sync `engineVerify`\n * call across the WASM boundary. Sync-engine / async-host invariant\n * (H-1 § 4.5) preserved.\n *\n * Orchestration:\n * 1. Translate HTTP → AgentRequest (no engine I/O).\n * 2. Extract identifiers (issuer DID, agent DID, status-list URL).\n * 3. Conditional Promise.all over the *applicable* adapters —\n * anonymous PlainHttp gets no network calls; signed MCP-I gets\n * DID + status-list + reputation in parallel.\n * 4. Translate adapter errors to verdicts where the architect-\n * ratified posture says so:\n * - DidResolver throw → Block(ParseError) verdict\n * - StatusListCache throw → re-throw (host renders 503)\n * - Reputation throw → impossible (Phase B § 4.5)\n * 5. Compute the tenant Decision via PolicyEvaluator over the\n * resolved reputation.\n * 6. Build ContextSpec, call `engineVerify`, return VerifyResult.\n *\n * Cedar-1 forward-compat: step (5) is the only place the\n * PolicyEvaluator interface gets exercised. When Cedar-1 swaps\n * implementations, this orchestrator does not change.\n */\n\nimport type {\n DidNotFound,\n DidResolverError,\n DidResolverTimeout,\n MalformedDid,\n UnsupportedDidMethod,\n UnsupportedKeyType,\n} from '../adapters/did-resolver';\nimport type { StatusListCacheAdapter } from '../adapters/status-list-cache';\nimport { assertSafeHttpsUrl, UnsafeOutboundUrl } from '../adapters/outbound-url-policy';\nimport { engineVerify } from '../index';\nimport type { ContextSpec, DidDocument, EnforcementMode, VerifyResult } from '../types';\n\nimport {\n buildAgentRequest,\n extractAgentDid,\n extractCredentialStatusUrl,\n extractIssuer,\n hasMalformedJwsBody,\n} from './build-agent-request';\nimport type { IncomingHttpLike, VerifyRequestOpts } from './types';\n\nconst DEFAULT_REPUTATION_BASELINE = 1.0;\n\n/**\n * Factory — constructs a `verifyRequest` closure that remembers the\n * one-shot Argus-not-configured warning state. Use this when the\n * host wrapper wants the startup log; call `verifyRequest` directly\n * (the loose function below) if you don't.\n */\nexport function makeVerifyRequest(\n opts: VerifyRequestOpts\n): (req: IncomingHttpLike) => Promise<VerifyResult> {\n let argusWarningLogged = false;\n const log = opts.logger ?? defaultLogger;\n return async function verifyRequest(req: IncomingHttpLike): Promise<VerifyResult> {\n if (!argusWarningLogged && !opts.argusUrl) {\n log(\n '[Checkpoint] WARNING: Argus URL not configured; reputation will degrade to baseline 1.0 (\"trust by default\"). Set ARGUS_API_URL to enable.'\n );\n argusWarningLogged = true;\n }\n return verifyRequest_internal(req, opts);\n };\n}\n\n/**\n * Single-shot async entry. Use [`makeVerifyRequest`] in long-lived\n * hosts (so the Argus warning is one-shot per process); use this\n * loose form in tests + one-off invocations.\n */\nexport async function verifyRequest(\n req: IncomingHttpLike,\n opts: VerifyRequestOpts\n): Promise<VerifyResult> {\n return verifyRequest_internal(req, opts);\n}\n\nasync function verifyRequest_internal(\n req: IncomingHttpLike,\n opts: VerifyRequestOpts\n): Promise<VerifyResult> {\n // JWS-aware preflight — when the body carries `_meta.proof.jws`\n // but the payload won't project into a typed McpIPayload, treat\n // the envelope as malformed (Block(ParseError)) rather than\n // silently degrading to PlainHttp.\n if (hasMalformedJwsBody(req)) {\n return blockWithParseError('malformed JWS body', opts.enforcementMode);\n }\n\n const agentRequest = buildAgentRequest(req, {\n legacyEnvelopeFallback: opts.legacyEnvelopeFallback,\n });\n const issuer = extractIssuer(agentRequest);\n const agentDid = extractAgentDid(agentRequest);\n const credentialStatusUrl = extractCredentialStatusUrl(agentRequest);\n const baseline = opts.reputationBaseline ?? DEFAULT_REPUTATION_BASELINE;\n\n // --- Stage 1 of orchestration: parallel pre-fetch. -----------------------\n //\n // Conditional `Promise.allSettled` per § 4.4 — no network calls\n // for shapes that don't need them. Anonymous PlainHttp resolves\n // immediately with three sentinel values.\n //\n // **`allSettled`, not `all`.** With `Promise.all`, a concurrent\n // StatusList rejection could mask a co-occurring DID failure —\n // classification becomes timing-dependent (whichever rejected\n // first decides whether the host returns 400 or 503). Settled-\n // mode evaluation lets us observe every adapter's outcome and\n // apply a deterministic priority:\n //\n // 1. DID failure → `Block(ParseError)` verdict (client problem)\n // 2. StatusList failure → re-throw (infra; host renders 503)\n // 3. Reputation failure → bubble up (adapter contract says\n // reputation never throws; this branch is defensive)\n //\n // **DID wins over StatusList** because a structural request\n // failure (malformed identity material) is a client problem the\n // dashboard wants to see, not an infra outage that would mask it.\n const [didResult, statusResult, repResult] = await Promise.allSettled([\n issuer ? opts.didResolver.resolve(issuer) : Promise.resolve(null),\n credentialStatusUrl\n ? fetchCredentialStatus(credentialStatusUrl, opts.statusListCache)\n : Promise.resolve(null),\n agentDid ? opts.reputationOracle.score(agentDid) : Promise.resolve(baseline),\n ]);\n\n // Priority 1 — DID failure.\n if (didResult.status === 'rejected') {\n if (isDidResolverError(didResult.reason)) {\n return blockWithParseError(\n didResult.reason instanceof Error ? didResult.reason.message : String(didResult.reason),\n opts.enforcementMode\n );\n }\n throw didResult.reason;\n }\n\n // Priority 2 — StatusList failure.\n if (statusResult.status === 'rejected') {\n if (statusResult.reason instanceof UnsafeOutboundUrl) {\n return blockWithParseError(statusResult.reason.message, opts.enforcementMode);\n }\n // Both kya-known StatusList errors and unexpected throws re-\n // raise (host renders 503 either way; the second branch is\n // belt-and-suspenders for future adapter implementations).\n throw statusResult.reason;\n }\n\n // Priority 3 — unexpected reputation throw.\n if (repResult.status === 'rejected') {\n throw repResult.reason;\n }\n\n const didDoc: DidDocument | null = didResult.value;\n const revokedIndices: number[] | null = statusResult.value;\n const repScore: number = repResult.value;\n\n // --- Stage 2 of orchestration: tenant policy eval. -----------------------\n //\n // Runs after reputation resolves — the evaluator's input includes\n // the resolved score. Cedar-1 will swap this implementation\n // without touching the surrounding orchestrator.\n const tenantDecision = await opts.policyEvaluator.evaluate({\n tenantHost: opts.tenantHost,\n reputation: repScore,\n });\n\n // --- Stage 3 of orchestration: ContextSpec composition + sync verify. ---\n const ctx: ContextSpec = {\n didDocs: didDoc && issuer ? { [issuer]: didDoc } : {},\n revoked:\n revokedIndices !== null && credentialStatusUrl\n ? { [credentialStatusUrl]: revokedIndices }\n : {},\n reputation: agentDid ? { [agentDid]: repScore } : {},\n tenantDecision,\n nowUnix: opts.clock.nowUnix(),\n enforcementMode: opts.enforcementMode,\n };\n\n return engineVerify(agentRequest, ctx);\n}\n\nasync function fetchCredentialStatus(\n credentialStatusUrl: string,\n statusListCache: StatusListCacheAdapter\n): Promise<number[]> {\n assertSafeHttpsUrl(credentialStatusUrl, 'credential status URL');\n return statusListCache.fetch(credentialStatusUrl);\n}\n\n// -----------------------------------------------------------------------------\n// Adapter-error translation helpers.\n// -----------------------------------------------------------------------------\n\ntype DidErr =\n | DidNotFound\n | DidResolverTimeout\n | DidResolverError\n | MalformedDid\n | UnsupportedKeyType\n | UnsupportedDidMethod;\n\nfunction isDidResolverError(err: unknown): err is DidErr {\n if (!(err instanceof Error)) return false;\n const kind = (err as { kind?: string }).kind;\n return (\n kind === 'DidNotFound' ||\n kind === 'DidResolverTimeout' ||\n kind === 'DidResolverError' ||\n kind === 'MalformedDid' ||\n kind === 'UnsupportedKeyType' ||\n kind === 'UnsupportedDidMethod'\n );\n}\n\n/**\n * Synthesize a `VerifyResult` carrying `Block(ParseError)` for the\n * DID-failure case. The engine emits its own `EngineInfo` only when\n * `engineVerify` is actually invoked; this synthetic block path\n * happens *before* the WASM call, so we fabricate a minimal\n * attribution block here. Marked with a sentinel `extras.synthesized`\n * so dashboards / logs can distinguish engine-emitted vs.\n * host-synthesized attribution.\n */\nfunction blockWithParseError(detail: string, enforcementMode: EnforcementMode): VerifyResult {\n return {\n decision: {\n kind: 'Block',\n reason: {\n kind: 'ParseError',\n detail,\n },\n },\n enforcementMode,\n engineInfo: {\n name: 'checkpoint-engine-wasm',\n version: '0.0.0-host-synth',\n rulesetHash: 'sha256:host-synthesized',\n rulesetVersion: '0.0.0-host-synth',\n extras: { synthesized: true },\n },\n };\n}\n\nfunction defaultLogger(msg: string): void {\n console.warn(msg);\n}\n\n// Note on DID error visibility: the orchestrator's contract is to\n// *absorb* adapter errors and translate them to verdicts. Host\n// wrappers consume the `VerifyResult` shape; they should NOT need\n// to `instanceof`-check DID errors directly. If a downstream\n// consumer ever does need the class itself, they import from\n// `@kya-os/checkpoint-wasm-runtime/engine/adapters/did-resolver`\n// rather than the orchestrator subpath — keeping the orchestrator\n// surface minimal and the error taxonomy in one site.\n","/**\n * Transport-agnostic `Decision` → HTTP renderer — Phase C.3.\n *\n * Translates a `VerifyResult` into a framework-neutral\n * `{ status, headers, body }` shape. Phase D (Next.js) adapts this\n * to `NextResponse`; Phase E (Express) adapts it to `res.status().set().send()`.\n * One source of truth for the verdict→HTTP mapping.\n *\n * Mapping table (§ 4.5 of Phase C kickoff):\n *\n * | Decision | HTTP | Notes |\n * |-----------------------------------|------|-----------------------------------------|\n * | Permit | null | Pass through to next handler |\n * | Block(Unauthenticated) | 401 | WWW-Authenticate header |\n * | Block(InvalidSignature) | 403 | |\n * | Block(Revoked) | 403 | |\n * | Block(Expired) | 401 | Refresh-the-credential semantics |\n * | Block(OutOfScope) | 403 | Body carries requested + granted |\n * | Block(LowReputation) | 403 | Body carries score + threshold |\n * | Block(PolicyDenied) | 403 | Body carries detail |\n * | Block(ParseError) | 400 | Body carries detail |\n * | Challenge | 401 | Body carries ChallengeParams |\n * | Redirect | 302 | Location header |\n * | Instruct | 422 | application/problem+json body |\n *\n * Observe mode overrides: every verdict renders as `status: null`\n * (pass through) with an `X-Checkpoint-Would-Have-Been` header\n * carrying the verdict kind, plus the standard attribution headers.\n *\n * Every response carries the Phase 0.1 attribution headers:\n * `X-Checkpoint-Engine`, `X-Checkpoint-Engine-Version`, and\n * (when present) `X-Checkpoint-Ruleset-Hash`.\n */\n\nimport type { BlockReason, VerifyResult } from '../types';\n\nimport type { RenderedResponse } from './types';\n\nexport function renderDecisionAsResponse(result: VerifyResult): RenderedResponse {\n const baseHeaders = buildBaseHeaders(result);\n\n // Observe mode never blocks — pass through with would-have-been headers.\n if (result.enforcementMode === 'observe') {\n return {\n status: null,\n headers: {\n ...baseHeaders,\n 'X-Checkpoint-Mode': 'observe',\n 'X-Checkpoint-Would-Have-Been': result.decision.kind,\n ...wouldHaveBeenReasonHeader(result),\n },\n };\n }\n\n switch (result.decision.kind) {\n case 'Permit':\n return {\n status: null,\n headers: { ...baseHeaders, 'X-Checkpoint-Decision': 'permit' },\n };\n\n case 'Block': {\n const reason = result.decision.reason;\n return {\n status: httpStatusForBlockReason(reason),\n headers: {\n ...baseHeaders,\n ...blockHeaders(reason),\n 'X-Checkpoint-Decision': 'block',\n 'X-Checkpoint-Reason': reason.kind,\n },\n body: blockResponseBody(reason),\n };\n }\n\n case 'Challenge': {\n const params = result.decision.params;\n return {\n status: 401,\n headers: {\n ...baseHeaders,\n 'X-Checkpoint-Decision': 'challenge',\n 'X-Checkpoint-Challenge': params.nonce,\n },\n body: {\n challenge: params,\n },\n };\n }\n\n case 'Redirect': {\n const target = result.decision.target;\n return {\n status: 302,\n headers: {\n ...baseHeaders,\n 'X-Checkpoint-Decision': 'redirect',\n Location: target.url,\n 'X-Checkpoint-Redirect-Reason': target.reason,\n },\n };\n }\n\n case 'Instruct': {\n const payload = result.decision.payload;\n return {\n status: 422,\n headers: {\n ...baseHeaders,\n 'X-Checkpoint-Decision': 'instruct',\n 'Content-Type': 'application/problem+json',\n },\n body: {\n type: payload.problem,\n title: payload.title,\n suggestedActions: payload.suggestedActions,\n },\n };\n }\n }\n}\n\n// -----------------------------------------------------------------------------\n// Helpers.\n// -----------------------------------------------------------------------------\n\nfunction buildBaseHeaders(result: VerifyResult): Record<string, string> {\n const headers: Record<string, string> = {\n 'X-Checkpoint-Engine': result.engineInfo.name,\n 'X-Checkpoint-Engine-Version': result.engineInfo.version,\n };\n if (result.engineInfo.rulesetHash) {\n headers['X-Checkpoint-Ruleset-Hash'] = result.engineInfo.rulesetHash;\n }\n return headers;\n}\n\nfunction httpStatusForBlockReason(reason: BlockReason): number {\n switch (reason.kind) {\n case 'Unauthenticated':\n case 'Expired':\n return 401;\n case 'ParseError':\n return 400;\n case 'InvalidSignature':\n case 'Revoked':\n case 'OutOfScope':\n case 'LowReputation':\n case 'PolicyDenied':\n return 403;\n }\n}\n\nfunction blockHeaders(reason: BlockReason): Record<string, string> {\n if (reason.kind === 'Unauthenticated') {\n return { 'WWW-Authenticate': 'KyaProof realm=\"checkpoint\"' };\n }\n return {};\n}\n\nfunction blockResponseBody(reason: BlockReason): object {\n switch (reason.kind) {\n case 'Revoked':\n case 'InvalidSignature':\n case 'Unauthenticated':\n case 'Expired':\n return { error: humanError(reason.kind), reason: reason.kind };\n case 'OutOfScope':\n return {\n error: 'requested scope is not granted',\n reason: 'OutOfScope',\n requested: reason.requested,\n granted: reason.granted,\n };\n case 'LowReputation':\n return {\n error: 'agent reputation below tenant threshold',\n reason: 'LowReputation',\n score: reason.score,\n threshold: reason.threshold,\n };\n case 'PolicyDenied':\n return {\n error: 'tenant policy denied the request',\n reason: 'PolicyDenied',\n detail: reason.detail,\n };\n case 'ParseError':\n return {\n error: 'request envelope could not be parsed',\n reason: 'ParseError',\n detail: reason.detail,\n };\n }\n}\n\nfunction humanError(kind: 'Revoked' | 'InvalidSignature' | 'Unauthenticated' | 'Expired'): string {\n switch (kind) {\n case 'Revoked':\n return 'credential has been revoked';\n case 'InvalidSignature':\n return 'request signature failed verification';\n case 'Unauthenticated':\n return 'authentication required';\n case 'Expired':\n return 'credential is expired';\n }\n}\n\n/** Observe-mode helper — surface the block reason in a side header so */\n/** dashboards can attribute the would-have-been verdict. */\nfunction wouldHaveBeenReasonHeader(result: VerifyResult): Record<string, string> {\n if (result.decision.kind === 'Block') {\n return { 'X-Checkpoint-Would-Have-Been-Reason': result.decision.reason.kind };\n }\n return {};\n}\n","export const empty = new Uint8Array(0)\n\nexport function toHex (d: Uint8Array): string {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '')\n}\n\nexport function fromHex (hex: string): Uint8Array {\n const hexes = hex.match(/../g)\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty\n}\n\nexport function equals (aa: Uint8Array, bb: Uint8Array): boolean {\n if (aa === bb) { return true }\n if (aa.byteLength !== bb.byteLength) {\n return false\n }\n\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false\n }\n }\n\n return true\n}\n\nexport function coerce (o: ArrayBufferView | ArrayBuffer | Uint8Array): Uint8Array {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array') { return o }\n if (o instanceof ArrayBuffer) { return new Uint8Array(o) }\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength)\n }\n throw new Error('Unknown type, must be binary type')\n}\n\nexport function isBinary (o: unknown): o is ArrayBuffer | ArrayBufferView {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o)\n}\n\nexport function fromString (str: string): Uint8Array {\n return new TextEncoder().encode(str)\n}\n\nexport function toString (b: Uint8Array): string {\n return new TextDecoder().decode(b)\n}\n","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base (ALPHABET, name) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable<number>} source\n */\n function encode (source) {\n // @ts-ignore\n if (source instanceof Uint8Array) ; else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]); }\n return str\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') { return }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) { return }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') { return }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch\n }\n /**\n * @param {string | string[]} string\n */\n function decode (string) {\n var buffer = decodeUnsafe(string);\n if (buffer) { return buffer }\n throw new Error(`Non-${name} character`)\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nvar src = base;\n\nvar _brrp__multiformats_scope_baseX = src;\n\nexport default _brrp__multiformats_scope_baseX;\n","import { coerce } from '../bytes.js'\nimport basex from '../vendor/base-x.js'\nimport type { BaseCodec, BaseDecoder, BaseEncoder, CombobaseDecoder, Multibase, MultibaseCodec, MultibaseDecoder, MultibaseEncoder, UnibaseDecoder } from './interface.js'\n\ninterface EncodeFn { (bytes: Uint8Array): string }\ninterface DecodeFn { (text: string): Uint8Array }\n\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder<Base extends string, Prefix extends string> implements MultibaseEncoder<Prefix>, BaseEncoder {\n readonly name: Base\n readonly prefix: Prefix\n readonly baseEncode: EncodeFn\n\n constructor (name: Base, prefix: Prefix, baseEncode: EncodeFn) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n }\n\n encode (bytes: Uint8Array): Multibase<Prefix> {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`\n } else {\n throw Error('Unknown type, must be binary type')\n }\n }\n}\n\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder<Base extends string, Prefix extends string> implements MultibaseDecoder<Prefix>, UnibaseDecoder<Prefix>, BaseDecoder {\n readonly name: Base\n readonly prefix: Prefix\n readonly baseDecode: DecodeFn\n private readonly prefixCodePoint: number\n\n constructor (name: Base, prefix: Prefix, baseDecode: DecodeFn) {\n this.name = name\n this.prefix = prefix\n const prefixCodePoint = prefix.codePointAt(0)\n /* c8 ignore next 3 */\n if (prefixCodePoint === undefined) {\n throw new Error('Invalid prefix character')\n }\n this.prefixCodePoint = prefixCodePoint\n this.baseDecode = baseDecode\n }\n\n decode (text: string): Uint8Array {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`)\n }\n return this.baseDecode(text.slice(this.prefix.length))\n } else {\n throw Error('Can only multibase decode strings')\n }\n }\n\n or<OtherPrefix extends string> (decoder: UnibaseDecoder<OtherPrefix> | ComposedDecoder<OtherPrefix>): ComposedDecoder<Prefix | OtherPrefix> {\n return or(this, decoder)\n }\n}\n\ntype Decoders<Prefix extends string> = Record<Prefix, UnibaseDecoder<Prefix>>\n\nclass ComposedDecoder<Prefix extends string> implements MultibaseDecoder<Prefix>, CombobaseDecoder<Prefix> {\n readonly decoders: Decoders<Prefix>\n\n constructor (decoders: Decoders<Prefix>) {\n this.decoders = decoders\n }\n\n or <OtherPrefix extends string> (decoder: UnibaseDecoder<OtherPrefix> | ComposedDecoder<OtherPrefix>): ComposedDecoder<Prefix | OtherPrefix> {\n return or(this, decoder)\n }\n\n decode (input: string): Uint8Array {\n const prefix = input[0] as Prefix\n const decoder = this.decoders[prefix]\n if (decoder != null) {\n return decoder.decode(input)\n } else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)\n }\n }\n}\n\nexport function or <L extends string, R extends string> (left: UnibaseDecoder<L> | CombobaseDecoder<L>, right: UnibaseDecoder<R> | CombobaseDecoder<R>): ComposedDecoder<L | R> {\n return new ComposedDecoder({\n ...(left.decoders ?? { [(left as UnibaseDecoder<L>).prefix]: left }),\n ...(right.decoders ?? { [(right as UnibaseDecoder<R>).prefix]: right })\n } as Decoders<L | R>)\n}\n\nexport class Codec<Base extends string, Prefix extends string> implements MultibaseCodec<Prefix>, MultibaseEncoder<Prefix>, MultibaseDecoder<Prefix>, BaseCodec, BaseEncoder, BaseDecoder {\n readonly name: Base\n readonly prefix: Prefix\n readonly baseEncode: EncodeFn\n readonly baseDecode: DecodeFn\n readonly encoder: Encoder<Base, Prefix>\n readonly decoder: Decoder<Base, Prefix>\n\n constructor (name: Base, prefix: Prefix, baseEncode: EncodeFn, baseDecode: DecodeFn) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n this.baseDecode = baseDecode\n this.encoder = new Encoder(name, prefix, baseEncode)\n this.decoder = new Decoder(name, prefix, baseDecode)\n }\n\n encode (input: Uint8Array): string {\n return this.encoder.encode(input)\n }\n\n decode (input: string): Uint8Array {\n return this.decoder.decode(input)\n }\n}\n\nexport function from <Base extends string, Prefix extends string> ({ name, prefix, encode, decode }: { name: Base, prefix: Prefix, encode: EncodeFn, decode: DecodeFn }): Codec<Base, Prefix> {\n return new Codec(name, prefix, encode, decode)\n}\n\nexport function baseX <Base extends string, Prefix extends string> ({ name, prefix, alphabet }: { name: Base, prefix: Prefix, alphabet: string }): Codec<Base, Prefix> {\n const { encode, decode } = basex(alphabet, name)\n return from({\n prefix,\n name,\n encode,\n decode: (text: string): Uint8Array => coerce(decode(text))\n })\n}\n\nfunction decode (string: string, alphabetIdx: Record<string, number>, bitsPerChar: number, name: string): Uint8Array {\n // Count the padding bytes:\n let end = string.length\n while (string[end - 1] === '=') {\n --end\n }\n\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0)\n\n // Parse the data:\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n let written = 0 // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = alphabetIdx[string[i]]\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`)\n }\n\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value\n bits += bitsPerChar\n\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8\n out[written++] = 0xff & (buffer >> bits)\n }\n }\n\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data')\n }\n\n return out\n}\n\nfunction encode (data: Uint8Array, alphabet: string, bitsPerChar: number): string {\n const pad = alphabet[alphabet.length - 1] === '='\n const mask = (1 << bitsPerChar) - 1\n let out = ''\n\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i]\n bits += 8\n\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar\n out += alphabet[mask & (buffer >> bits)]\n }\n }\n\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))]\n }\n\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '='\n }\n }\n\n return out\n}\n\nfunction createAlphabetIdx (alphabet: string): Record<string, number> {\n // Build the character lookup table:\n const alphabetIdx: Record<string, number> = {}\n for (let i = 0; i < alphabet.length; ++i) {\n alphabetIdx[alphabet[i]] = i\n }\n return alphabetIdx\n}\n\n/**\n * RFC4648 Factory\n */\nexport function rfc4648 <Base extends string, Prefix extends string> ({ name, prefix, bitsPerChar, alphabet }: { name: Base, prefix: Prefix, bitsPerChar: number, alphabet: string }): Codec<Base, Prefix> {\n const alphabetIdx = createAlphabetIdx(alphabet)\n return from({\n prefix,\n name,\n encode (input: Uint8Array): string {\n return encode(input, alphabet, bitsPerChar)\n },\n decode (input: string): Uint8Array {\n return decode(input, alphabetIdx, bitsPerChar, name)\n }\n })\n}\n","import { baseX } from './base.js'\n\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n})\n\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n})\n","/**\n * DidResolver adapter — sub-phase B.1.\n *\n * Resolves `did:key:*` (in-memory multibase decode) and `did:web:*`\n * (HTTPS fetch of `.well-known/did.json`) into the engine's\n * `DidDocument` shape. The async half does any required I/O; the\n * adapter's output is plain data that the host wrapper bundles into\n * `ContextSpec.didDocs` before calling `engineVerify`.\n *\n * Phase 1 supports only Ed25519 verification methods (the engine's\n * `KeyType` is `#[non_exhaustive]` with `Ed25519` as its single\n * variant). Non-Ed25519 methods on a resolved doc are silently\n * filtered out — the engine wouldn't accept them as a valid Stage 2\n * key match anyway.\n *\n * **`kid` for `did:key`**: the verification-method id is\n * `<did>#<multibase>` per mcp-i-core PR #16. **NOT** `<did>#keys-1`.\n * H-1's `stage2_did_key_fragment_resolution` test pins this.\n */\n\nimport { base58btc } from 'multiformats/bases/base58';\n\nimport type { DidDocument, KeyType, VerificationMethod } from '../types';\nimport { assertSafeHttpsUrl, UnsafeOutboundUrl } from './outbound-url-policy';\nimport { base64UrlDecode } from './util';\n\nconst ED25519_PUBLIC_KEY_LENGTH = 32;\n\n// -----------------------------------------------------------------------------\n// Errors — the adapter throws these; the host wrapper translates to verdicts.\n// -----------------------------------------------------------------------------\n\nexport class MalformedDid extends Error {\n readonly kind = 'MalformedDid';\n}\n\nexport class UnsupportedKeyType extends Error {\n readonly kind = 'UnsupportedKeyType';\n}\n\nexport class DidNotFound extends Error {\n readonly kind = 'DidNotFound';\n}\n\nexport class DidResolverTimeout extends Error {\n readonly kind = 'DidResolverTimeout';\n}\n\nexport class DidResolverError extends Error {\n readonly kind = 'DidResolverError';\n}\n\nexport class UnsupportedDidMethod extends Error {\n readonly kind = 'UnsupportedDidMethod';\n}\n\n// -----------------------------------------------------------------------------\n// Public surface — `DidResolverAdapter` is the seam Phase C composes.\n// -----------------------------------------------------------------------------\n\nexport interface DidResolverAdapter {\n resolve(did: string): Promise<DidDocument>;\n}\n\ninterface CacheEntry<T> {\n value: T;\n fetchedAt: number;\n}\n\nexport interface DidResolverOpts {\n /** AbortController timeout for did:web fetches. Default 3000ms. */\n fetchTimeoutMs?: number;\n /** TTL for the in-memory cache. Default 5 minutes. */\n ttlMs?: number;\n /** Injectable fetch — defaults to global `fetch` (Node 18+). */\n fetch?: typeof fetch;\n /**\n * Injectable cache — defaults to a fresh `Map` per adapter instance.\n * Tests pass a shared cache to assert miss/hit behaviour.\n */\n cache?: Map<string, CacheEntry<DidDocument>>;\n /** Injectable wall-clock — defaults to `Date.now()`. Tests use a stub. */\n now?: () => number;\n}\n\nconst ED25519_MULTICODEC_PREFIX = [0xed, 0x01] as const;\nconst DEFAULT_FETCH_TIMEOUT_MS = 3_000;\nconst DEFAULT_TTL_MS = 5 * 60_000;\n\nexport function makeDidResolver(opts: DidResolverOpts = {}): DidResolverAdapter {\n const timeoutMs = opts.fetchTimeoutMs ?? DEFAULT_FETCH_TIMEOUT_MS;\n const ttlMs = opts.ttlMs ?? DEFAULT_TTL_MS;\n const fetchImpl = opts.fetch ?? fetch;\n const cache = opts.cache ?? new Map<string, CacheEntry<DidDocument>>();\n const now = opts.now ?? (() => Date.now());\n\n return {\n async resolve(did: string): Promise<DidDocument> {\n const cached = cache.get(did);\n if (cached && now() - cached.fetchedAt < ttlMs) {\n return cached.value;\n }\n // SSRF defense — Phase 1 supports `did:key` + `did:web` only.\n // The pre-fix code routed every non-`did:key:` input into\n // `resolveDidWeb`, which blindly stripped the first 8 chars\n // and used the remainder as a URL host. `did:ion:abc123` →\n // `https://n:abc123/.well-known/did.json` (probe). An\n // attacker submitting arbitrary DID strings could construct\n // arbitrary HTTPS URLs against the host's network namespace\n // — an SSRF probe surface against internal services.\n // Explicit prefix matching closes the surface.\n if (did.startsWith('did:key:')) {\n const doc = decodeDidKey(did);\n cache.set(did, { value: doc, fetchedAt: now() });\n return doc;\n }\n if (did.startsWith('did:web:')) {\n const doc = await resolveDidWeb(did, fetchImpl, timeoutMs);\n cache.set(did, { value: doc, fetchedAt: now() });\n return doc;\n }\n throw new UnsupportedDidMethod(`Phase 1 supports did:key and did:web only; got: ${did}`);\n },\n };\n}\n\n// -----------------------------------------------------------------------------\n// did:key — in-memory multibase decode.\n// -----------------------------------------------------------------------------\n\nexport function decodeDidKey(did: string): DidDocument {\n if (!did.startsWith('did:key:')) {\n throw new MalformedDid(`expected did:key prefix, got: ${did}`);\n }\n const multibaseValue = did.slice('did:key:'.length);\n if (!multibaseValue.startsWith('z')) {\n throw new MalformedDid(\n `did:key expects base58btc (multibase 'z' prefix); got: ${multibaseValue[0] ?? '<empty>'}`\n );\n }\n\n let decoded: Uint8Array;\n try {\n decoded = base58btc.decode(multibaseValue);\n } catch (cause) {\n throw new MalformedDid(`did:key multibase decode failed: ${String(cause)}`);\n }\n\n if (\n decoded.length < 2 ||\n decoded[0] !== ED25519_MULTICODEC_PREFIX[0] ||\n decoded[1] !== ED25519_MULTICODEC_PREFIX[1]\n ) {\n const prefixHex =\n decoded.length >= 2\n ? `0x${decoded[0].toString(16).padStart(2, '0')}${decoded[1].toString(16).padStart(2, '0')}`\n : '<too short>';\n throw new UnsupportedKeyType(\n `did:key expects Ed25519 multicodec 0xed01; got ${prefixHex} (only Ed25519 supported in Phase 1)`\n );\n }\n\n const publicKey = decoded.slice(2);\n if (publicKey.length !== 32) {\n throw new MalformedDid(`did:key Ed25519 public key must be 32 bytes; got ${publicKey.length}`);\n }\n\n const vm: VerificationMethod = {\n id: `${did}#${multibaseValue}`, // multibase as fragment — mcp-i-core PR #16\n keyType: 'Ed25519' satisfies KeyType,\n publicKeyBytes: Array.from(publicKey),\n };\n return {\n id: did,\n verificationMethods: [vm],\n };\n}\n\n// -----------------------------------------------------------------------------\n// did:web — HTTPS fetch + W3C → engine shape mapping.\n// -----------------------------------------------------------------------------\n\nasync function resolveDidWeb(\n did: string,\n fetchImpl: typeof fetch,\n timeoutMs: number\n): Promise<DidDocument> {\n const transformedUrl = didWebToUrl(did);\n let url: string;\n try {\n url = assertSafeHttpsUrl(transformedUrl, 'did:web resolution URL');\n } catch (cause) {\n if (cause instanceof UnsafeOutboundUrl) {\n throw new DidResolverError(cause.message);\n }\n throw cause;\n }\n\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeoutMs);\n\n let response: Response;\n try {\n response = await fetchImpl(url, { signal: controller.signal });\n } catch (cause) {\n if (cause instanceof Error && cause.name === 'AbortError') {\n throw new DidResolverTimeout(`did:web fetch timed out after ${timeoutMs}ms: ${url}`);\n }\n throw new DidResolverError(`did:web fetch failed: ${url}: ${String(cause)}`);\n } finally {\n clearTimeout(timer);\n }\n\n if (response.status === 404) {\n throw new DidNotFound(`no DID document at ${url}`);\n }\n if (!response.ok) {\n throw new DidResolverError(`did:web HTTP ${response.status} at ${url}`);\n }\n\n let raw: unknown;\n try {\n raw = await response.json();\n } catch (cause) {\n throw new DidResolverError(`did:web response not valid JSON at ${url}: ${String(cause)}`);\n }\n return mapW3CDocToEngineShape(raw, did);\n}\n\n/**\n * `did:web:example.com` → `https://example.com/.well-known/did.json`.\n * `did:web:example.com:user:alice` → `https://example.com/user/alice/did.json`.\n * `did:web:localhost%3A8080` transforms to\n * `https://localhost:8080/.well-known/did.json`, then the egress guard rejects\n * it before fetch because localhost/private targets are never safe verifier I/O.\n *\n * Per W3C did-method-web § 3.2 \"DID-to-HTTPS Transformation\": split on\n * `:`, then `decodeURIComponent` each segment so percent-encoded\n * characters (ports, paths-with-colons, etc.) are unescaped before\n * URL construction. Bugbot caught the missing decode pass on the\n * initial B.1 drop — without it, `did:web:host%3Aport` resolved to\n * `https://host%3Aport/...` which never reaches the right server.\n */\nfunction didWebToUrl(did: string): string {\n const path = did.slice('did:web:'.length);\n if (!path) {\n throw new MalformedDid(`did:web with empty path: ${did}`);\n }\n const parts = path.split(':').map((segment) => {\n try {\n return decodeURIComponent(segment);\n } catch {\n throw new MalformedDid(`did:web segment contains invalid percent-encoding: ${segment}`);\n }\n });\n if (parts.length === 1) {\n return `https://${parts[0]}/.well-known/did.json`;\n }\n return `https://${parts[0]}/${parts.slice(1).join('/')}/did.json`;\n}\n\n/**\n * Convert a W3C DID Core JSON document into the engine's shape.\n *\n * Phase 1 only accepts Ed25519 verification methods — the engine's\n * `KeyType::Ed25519` is the only currently-supported variant. Non-\n * Ed25519 methods are silently filtered (the engine wouldn't accept\n * them as a valid Stage 2 `kid` match).\n *\n * W3C uses `verificationMethod` (singular array name); the engine\n * uses `verificationMethods` (plural) — the rename happens here.\n */\nfunction mapW3CDocToEngineShape(raw: unknown, requestedDid: string): DidDocument {\n if (raw === null || typeof raw !== 'object') {\n throw new DidResolverError(`did:web response must be a JSON object`);\n }\n const doc = raw as Record<string, unknown>;\n const id = typeof doc.id === 'string' ? doc.id : requestedDid;\n\n const w3cMethods = Array.isArray(doc.verificationMethod) ? doc.verificationMethod : [];\n const verificationMethods: VerificationMethod[] = [];\n for (const entry of w3cMethods) {\n if (entry === null || typeof entry !== 'object') continue;\n const vm = entry as Record<string, unknown>;\n if (!isEd25519Type(vm.type)) continue;\n const vmId = typeof vm.id === 'string' ? vm.id : undefined;\n if (!vmId) continue;\n const pubKey = extractEd25519PublicKey(vm);\n if (!pubKey) continue;\n verificationMethods.push({\n id: vmId,\n keyType: 'Ed25519',\n publicKeyBytes: Array.from(pubKey),\n });\n }\n\n return { id, verificationMethods };\n}\n\nfunction isEd25519Type(type: unknown): boolean {\n return type === 'Ed25519VerificationKey2020' || type === 'Ed25519VerificationKey2018';\n}\n\n/**\n * Extract the 32-byte Ed25519 public key from a W3C verificationMethod\n * entry. Accepts either `publicKeyMultibase` (Ed25519VerificationKey2020)\n * or `publicKeyJwk` with `kty: OKP, crv: Ed25519, x: <base64url>`.\n *\n * Returns `null` if extraction fails; the caller drops the method.\n */\nfunction extractEd25519PublicKey(vm: Record<string, unknown>): Uint8Array | null {\n if (typeof vm.publicKeyMultibase === 'string') {\n const mb = vm.publicKeyMultibase;\n if (!mb.startsWith('z')) return null;\n try {\n const decoded = base58btc.decode(mb);\n // `publicKeyMultibase` on Ed25519VerificationKey2020 is prefixed\n // with the same `0xed01` multicodec as `did:key`. Strip it.\n if (\n decoded.length === 34 &&\n decoded[0] === ED25519_MULTICODEC_PREFIX[0] &&\n decoded[1] === ED25519_MULTICODEC_PREFIX[1]\n ) {\n return decoded.slice(2);\n }\n // Some legacy docs emit the raw 32 bytes without the multicodec.\n if (decoded.length === 32) return decoded;\n } catch {\n return null;\n }\n return null;\n }\n if (vm.publicKeyJwk && typeof vm.publicKeyJwk === 'object') {\n const jwk = vm.publicKeyJwk as Record<string, unknown>;\n if (jwk.kty !== 'OKP' || jwk.crv !== 'Ed25519') return null;\n if (typeof jwk.x !== 'string') return null;\n let decoded: Uint8Array;\n try {\n decoded = base64UrlDecode(jwk.x);\n } catch {\n return null;\n }\n // Ed25519 public keys are exactly 32 bytes. A JWK with a\n // shorter or longer `x` is malformed; dropping the method is\n // safer than smuggling an invalid key into the WASM engine.\n if (decoded.length !== ED25519_PUBLIC_KEY_LENGTH) {\n return null;\n }\n return decoded;\n }\n return null;\n}\n","/**\n * StatusListCache adapter — sub-phase B.2.\n *\n * Fetches a W3C StatusList2021 Verifiable Credential, base64url-decodes\n * + gunzips the encoded bitstring, and enumerates set bits as a sorted\n * list of revoked indices. Phase C bundles the output as\n * `ContextSpec.revoked: Record<url, number[]>`; the engine's\n * `MapStatusListCache::is_revoked(url, index)` (in `wasm.rs`) checks\n * `indices.contains(&index)` to make a Stage 3 contribution.\n *\n * Architectural choice (deviation from kickoff § 5 B.2): the kickoff\n * sketched a contract where the WASM side does the bit-level lookup\n * on raw bytes. Phase A's `wasm.rs` already shipped with the simpler\n * `Vec<u64>`-of-indices shape, and § 4.1 of Phase B's mandate is\n * \"TS-only.\" The adapter does the bitstring decode + bit enumeration\n * on the TS side; the engine stays unchanged.\n *\n * Bit convention: W3C VC Status List § \"Bitstring expansion algorithm\"\n * — index N is bit `7 - (N % 8)` of byte `floor(N / 8)`, MSB-first.\n */\n\nimport { gunzipSync } from 'node:zlib';\n\nimport { assertSafeHttpsUrl, UnsafeOutboundUrl } from './outbound-url-policy';\nimport { base64UrlDecode } from './util';\n\n// -----------------------------------------------------------------------------\n// Errors.\n// -----------------------------------------------------------------------------\n\nexport class StatusListUnavailable extends Error {\n readonly kind = 'StatusListUnavailable';\n}\n\nexport class MalformedStatusList extends Error {\n readonly kind = 'MalformedStatusList';\n}\n\nexport class StatusListTimeout extends Error {\n readonly kind = 'StatusListTimeout';\n}\n\n// -----------------------------------------------------------------------------\n// Public surface.\n// -----------------------------------------------------------------------------\n\nexport interface StatusListCacheAdapter {\n /**\n * Fetch the status list at `url`, decode it, and return the sorted\n * set of revoked credential indices.\n *\n * @throws {StatusListUnavailable} on transport / non-2xx response.\n * @throws {StatusListTimeout} when the fetch budget is exceeded.\n * @throws {MalformedStatusList} when the VC is unparseable.\n */\n fetch(url: string): Promise<number[]>;\n}\n\ninterface CacheEntry {\n indices: number[];\n fetchedAt: number;\n}\n\nexport interface StatusListCacheOpts {\n fetchTimeoutMs?: number;\n ttlMs?: number;\n fetch?: typeof fetch;\n cache?: Map<string, CacheEntry>;\n now?: () => number;\n}\n\nconst DEFAULT_FETCH_TIMEOUT_MS = 3_000;\nconst DEFAULT_TTL_MS = 30_000;\n\nexport function makeStatusListCache(opts: StatusListCacheOpts = {}): StatusListCacheAdapter {\n const timeoutMs = opts.fetchTimeoutMs ?? DEFAULT_FETCH_TIMEOUT_MS;\n const ttlMs = opts.ttlMs ?? DEFAULT_TTL_MS;\n const fetchImpl = opts.fetch ?? fetch;\n const cache = opts.cache ?? new Map<string, CacheEntry>();\n const now = opts.now ?? (() => Date.now());\n\n return {\n async fetch(url: string): Promise<number[]> {\n const cached = cache.get(url);\n if (cached && now() - cached.fetchedAt < ttlMs) {\n return cached.indices;\n }\n const indices = await fetchAndDecode(url, fetchImpl, timeoutMs);\n cache.set(url, { indices, fetchedAt: now() });\n return indices;\n },\n };\n}\n\n// -----------------------------------------------------------------------------\n// Decode pipeline — fetch → JSON → base64url → gunzip → enumerate.\n// -----------------------------------------------------------------------------\n\nasync function fetchAndDecode(\n url: string,\n fetchImpl: typeof fetch,\n timeoutMs: number\n): Promise<number[]> {\n let safeUrl: string;\n try {\n safeUrl = assertSafeHttpsUrl(url, 'status list URL');\n } catch (cause) {\n if (cause instanceof UnsafeOutboundUrl) {\n throw new StatusListUnavailable(cause.message);\n }\n throw cause;\n }\n\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeoutMs);\n\n let response: Response;\n try {\n response = await fetchImpl(safeUrl, { signal: controller.signal });\n } catch (cause) {\n if (cause instanceof Error && cause.name === 'AbortError') {\n throw new StatusListTimeout(`status list fetch timed out after ${timeoutMs}ms: ${url}`);\n }\n throw new StatusListUnavailable(`status list fetch failed: ${url}: ${String(cause)}`);\n } finally {\n clearTimeout(timer);\n }\n\n if (!response.ok) {\n throw new StatusListUnavailable(`status list HTTP ${response.status} at ${url}`);\n }\n\n let vc: unknown;\n try {\n vc = await response.json();\n } catch (cause) {\n throw new MalformedStatusList(\n `status list response not valid JSON at ${url}: ${String(cause)}`\n );\n }\n\n const encoded = extractEncodedList(vc);\n return enumerateRevokedIndices(encoded);\n}\n\nfunction extractEncodedList(vc: unknown): string {\n if (vc === null || typeof vc !== 'object') {\n throw new MalformedStatusList('status list VC must be a JSON object');\n }\n const obj = vc as Record<string, unknown>;\n const subject = obj.credentialSubject;\n if (subject === null || typeof subject !== 'object') {\n throw new MalformedStatusList('status list VC missing credentialSubject');\n }\n const encoded = (subject as Record<string, unknown>).encodedList;\n if (typeof encoded !== 'string') {\n throw new MalformedStatusList('status list VC missing credentialSubject.encodedList string');\n }\n return encoded;\n}\n\n/**\n * Walk every byte of the decoded bitstring. For each set bit, push the\n * logical index into the result. W3C VC Status List spec: index N is\n * bit `7 - (N % 8)` of byte `floor(N / 8)`, MSB-first.\n */\nfunction enumerateRevokedIndices(encodedList: string): number[] {\n let bytes: Uint8Array;\n try {\n const compressed = base64UrlDecode(encodedList);\n bytes = new Uint8Array(gunzipSync(compressed));\n } catch (cause) {\n throw new MalformedStatusList(`status list bitstring decode failed: ${String(cause)}`);\n }\n\n const indices: number[] = [];\n for (let byteIndex = 0; byteIndex < bytes.length; byteIndex += 1) {\n const byte = bytes[byteIndex];\n if (byte === 0) continue; // fast path — typical bitstring is mostly zeros\n for (let bit = 0; bit < 8; bit += 1) {\n const mask = 1 << (7 - bit); // MSB-first per W3C\n if ((byte & mask) !== 0) {\n indices.push(byteIndex * 8 + bit);\n }\n }\n }\n return indices;\n}\n","/**\n * ReputationOracle adapter — sub-phase B.3.\n *\n * Resolves a per-DID reputation score in `[0.0, 1.0]`. Phase 1 wires\n * an optional HTTP endpoint (Argus). Unavailable / misconfigured /\n * out-of-range responses degrade to a baseline score so infrastructure\n * blips can't silently DOS Adobe-class traffic. The engine's Stage 6\n * compares the returned score against the tenant-configured threshold\n * (Phase B.4 builds the threshold via `PolicyEvaluator`).\n *\n * **Degrade-to-trust** (Phase B § 4.5). Reputation is best-effort;\n * Argus outages do not block traffic. The adapter returns the\n * configured baseline (default 1.0 = \"no signal, treat as trusted\")\n * and logs loudly. The engine's `LowReputation` block fires only\n * when score < threshold from tenant policy; baseline-1.0 ensures\n * no traffic is silently rejected just because Argus went down.\n */\n\n// -----------------------------------------------------------------------------\n// Public surface.\n// -----------------------------------------------------------------------------\n\nexport interface ReputationOracleAdapter {\n /**\n * Return the agent's reputation in `[0.0, 1.0]`. Higher is better.\n *\n * **Does not throw.** Network / parse / range failures degrade to\n * the baseline + log; the engine should never see a thrown error\n * from this adapter.\n */\n score(agentDid: string): Promise<number>;\n}\n\ninterface CacheEntry {\n value: number;\n fetchedAt: number;\n}\n\nexport interface ReputationOracleOpts {\n /**\n * Base URL for the reputation service (Argus). When unset, the\n * adapter returns the baseline without fetching. Phase 1 only —\n * Argus's HTTP surface is post-Adobe; until it lands, every host\n * runs in degrade-to-trust mode.\n */\n argusUrl?: string;\n /** Fetch budget. Default 1500ms — reputation is best-effort, tighter than DID resolution. */\n fetchTimeoutMs?: number;\n /** Cache TTL. Default 10s — reputation churns faster than DIDs. */\n ttlMs?: number;\n /** Injectable fetch. Defaults to global `fetch`. */\n fetch?: typeof fetch;\n /** Returned when Argus is unset / unreachable / malformed. Default 1.0. */\n baselineWhenUnreachable?: number;\n /** Injectable cache for tests. */\n cache?: Map<string, CacheEntry>;\n /** Injectable wall-clock. */\n now?: () => number;\n /** Hook for diagnostics. Phase 1 keeps log volume manageable by sampling. */\n logger?: (msg: string) => void;\n}\n\nconst DEFAULT_FETCH_TIMEOUT_MS = 1_500;\nconst DEFAULT_TTL_MS = 10_000;\nconst DEFAULT_BASELINE = 1.0;\n\nexport function makeReputationOracle(opts: ReputationOracleOpts = {}): ReputationOracleAdapter {\n const argusUrl = opts.argusUrl;\n const timeoutMs = opts.fetchTimeoutMs ?? DEFAULT_FETCH_TIMEOUT_MS;\n const ttlMs = opts.ttlMs ?? DEFAULT_TTL_MS;\n const fetchImpl = opts.fetch ?? fetch;\n const baseline = opts.baselineWhenUnreachable ?? DEFAULT_BASELINE;\n const cache = opts.cache ?? new Map<string, CacheEntry>();\n const now = opts.now ?? (() => Date.now());\n const log = opts.logger ?? (() => {});\n\n return {\n async score(agentDid: string): Promise<number> {\n const cached = cache.get(agentDid);\n if (cached && now() - cached.fetchedAt < ttlMs) {\n return cached.value;\n }\n\n if (!argusUrl) {\n // No Argus configured — degrade-to-trust silently (the host\n // logs the config gap once at startup, not per-request).\n return baseline;\n }\n\n const value = await fetchAndValidate(argusUrl, agentDid, fetchImpl, timeoutMs, baseline, log);\n cache.set(agentDid, { value, fetchedAt: now() });\n return value;\n },\n };\n}\n\nasync function fetchAndValidate(\n argusUrl: string,\n agentDid: string,\n fetchImpl: typeof fetch,\n timeoutMs: number,\n baseline: number,\n log: (msg: string) => void\n): Promise<number> {\n const url = `${argusUrl.replace(/\\/$/, '')}/v1/reputation?agent=${encodeURIComponent(agentDid)}`;\n\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeoutMs);\n\n let response: Response;\n try {\n response = await fetchImpl(url, { signal: controller.signal });\n } catch (cause) {\n if (cause instanceof Error && cause.name === 'AbortError') {\n log(\n `[reputation-oracle] Argus timed out after ${timeoutMs}ms (${agentDid}); using baseline ${baseline}`\n );\n } else {\n log(\n `[reputation-oracle] Argus fetch failed (${agentDid}): ${String(cause)}; using baseline ${baseline}`\n );\n }\n return baseline;\n } finally {\n clearTimeout(timer);\n }\n\n if (!response.ok) {\n log(\n `[reputation-oracle] Argus HTTP ${response.status} (${agentDid}); using baseline ${baseline}`\n );\n return baseline;\n }\n\n let body: unknown;\n try {\n body = await response.json();\n } catch (cause) {\n log(\n `[reputation-oracle] Argus response not JSON (${agentDid}): ${String(cause)}; using baseline ${baseline}`\n );\n return baseline;\n }\n\n if (body === null || typeof body !== 'object') {\n log(\n `[reputation-oracle] Argus response not an object (${agentDid}); using baseline ${baseline}`\n );\n return baseline;\n }\n const score = (body as Record<string, unknown>).score;\n if (typeof score !== 'number' || !Number.isFinite(score)) {\n log(\n `[reputation-oracle] Argus score not a finite number (${agentDid}): ${String(score)}; using baseline ${baseline}`\n );\n return baseline;\n }\n if (score < 0 || score > 1) {\n log(\n `[reputation-oracle] Argus score out of range (${agentDid}): ${score}; using baseline ${baseline}`\n );\n return baseline;\n }\n return score;\n}\n","/**\n * PolicyEvaluator adapter — sub-phase B.4.\n *\n * Computes the **tenant verdict** on the JS side and hands the engine\n * a constant `Decision` for the WASM `WasmConstantPolicy` to echo as\n * Stage 7's contribution. The engine's cross-stage priority order\n * (locked in D-design § 6 row 4) handles how Stage 7 interacts with\n * Stages 2 / 3 / 4 / 5.\n *\n * **Sync-engine / async-host invariant.** The JS adapter is async (it\n * fetches tenant policy from the Checkpoint dashboard); the engine\n * sees only the resolved `Decision`. Cedar-1 will replace this\n * adapter's implementation without touching the surrounding orchestrator.\n *\n * **Cedar-1 forward-compat.** [`PolicyEvaluatorAdapter`] is the\n * Cedar-swappable interface: `(input) → Decision`. The Phase 1 stub\n * is a reputation-threshold check; Cedar-1 will replace the\n * implementation, not the surface. Don't bake Cedar internals into\n * this seam.\n *\n * **Degrade-to-permit.** Per Phase B § 4.5: when the dashboard policy\n * endpoint is unreachable, fall back to `defaultPolicy` (caller-supplied)\n * or `permit-by-default`. Loud log; no silent block.\n */\n\nimport type { Decision } from '../types';\n\n// -----------------------------------------------------------------------------\n// Public surface — the Cedar-swappable seam.\n// -----------------------------------------------------------------------------\n\n/**\n * Pre-fetched inputs the JS host knows before calling the engine.\n * Phase 1's evaluator only consumes `reputation` + `tenantHost`; later\n * implementations (Cedar-1) may extend.\n */\nexport interface PolicyEvalInput {\n tenantHost: string;\n reputation: number;\n // Layer 2 may add: classification, requestShape, agentDid, etc.\n}\n\nexport interface PolicyEvaluatorAdapter {\n evaluate(input: PolicyEvalInput): Promise<Decision>;\n}\n\n/**\n * Phase 1 tenant-policy shape — just a reputation threshold.\n * Cedar-1 replaces this with a full policy bundle; for now the\n * dashboard exposes one field.\n */\nexport interface TenantPolicy {\n reputationThreshold: number;\n}\n\nexport interface PolicyEvaluatorOpts {\n /**\n * Dashboard policy endpoint. When unset, every tenant resolves to\n * `defaultPolicy` (or permit-by-default if that's also unset).\n */\n dashboardUrl?: string;\n fetchTimeoutMs?: number;\n ttlMs?: number;\n fetch?: typeof fetch;\n /** Used when the dashboard endpoint is unreachable or unconfigured. */\n defaultPolicy?: TenantPolicy;\n cache?: Map<string, CacheEntry>;\n now?: () => number;\n logger?: (msg: string) => void;\n}\n\ninterface CacheEntry {\n policy: TenantPolicy;\n fetchedAt: number;\n}\n\nconst DEFAULT_FETCH_TIMEOUT_MS = 2_000;\nconst DEFAULT_TTL_MS = 60_000;\n/** Permit-by-default — threshold 0 means no reputation gate fires. */\nconst PERMIT_BY_DEFAULT_POLICY: TenantPolicy = { reputationThreshold: 0 };\n\nexport function makePolicyEvaluator(opts: PolicyEvaluatorOpts = {}): PolicyEvaluatorAdapter {\n const dashboardUrl = opts.dashboardUrl;\n const timeoutMs = opts.fetchTimeoutMs ?? DEFAULT_FETCH_TIMEOUT_MS;\n const ttlMs = opts.ttlMs ?? DEFAULT_TTL_MS;\n const fetchImpl = opts.fetch ?? fetch;\n const fallbackPolicy = opts.defaultPolicy ?? PERMIT_BY_DEFAULT_POLICY;\n const cache = opts.cache ?? new Map<string, CacheEntry>();\n const now = opts.now ?? (() => Date.now());\n const log = opts.logger ?? (() => {});\n\n return {\n async evaluate(input: PolicyEvalInput): Promise<Decision> {\n const policy = await getOrFetchPolicy(\n input.tenantHost,\n dashboardUrl,\n fetchImpl,\n timeoutMs,\n fallbackPolicy,\n cache,\n ttlMs,\n now,\n log\n );\n return computeDecision(policy, input);\n },\n };\n}\n\n// -----------------------------------------------------------------------------\n// JS-side Decision computation — the Cedar-1 replaceable body.\n// -----------------------------------------------------------------------------\n\nfunction computeDecision(policy: TenantPolicy, input: PolicyEvalInput): Decision {\n if (input.reputation < policy.reputationThreshold) {\n return {\n kind: 'Block',\n reason: {\n kind: 'LowReputation',\n score: input.reputation,\n threshold: policy.reputationThreshold,\n },\n };\n }\n return { kind: 'Permit' };\n}\n\n// -----------------------------------------------------------------------------\n// Policy fetch + cache.\n// -----------------------------------------------------------------------------\n\nasync function getOrFetchPolicy(\n tenantHost: string,\n dashboardUrl: string | undefined,\n fetchImpl: typeof fetch,\n timeoutMs: number,\n fallbackPolicy: TenantPolicy,\n cache: Map<string, CacheEntry>,\n ttlMs: number,\n now: () => number,\n log: (msg: string) => void\n): Promise<TenantPolicy> {\n const cached = cache.get(tenantHost);\n if (cached && now() - cached.fetchedAt < ttlMs) {\n return cached.policy;\n }\n\n // Thundering-herd defense — every degraded path writes the fallback\n // back to the cache. Pre-fix, a dashboard outage meant every\n // request re-attempted the failing fetch and ate up to\n // `fetchTimeoutMs` (2s default). Architect flagged the symmetry\n // gap against ReputationOracle (which caches degraded baselines).\n //\n // When the dashboard recovers, the cached fallback stays in\n // effect until `ttlMs` expires — bounded staleness, acceptable\n // for Phase 1. Negative-TTL knobs (retry sooner on degrade)\n // land as a follow-up if production telemetry justifies them.\n const cacheFallback = (): TenantPolicy => {\n cache.set(tenantHost, { policy: fallbackPolicy, fetchedAt: now() });\n return fallbackPolicy;\n };\n\n if (!dashboardUrl) {\n return cacheFallback();\n }\n\n const url = `${dashboardUrl.replace(/\\/$/, '')}/api/policy?tenant=${encodeURIComponent(tenantHost)}`;\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeoutMs);\n\n let response: Response;\n try {\n response = await fetchImpl(url, { signal: controller.signal });\n } catch (cause) {\n log(`[policy-evaluator] fetch failed (${tenantHost}): ${String(cause)}; using fallback`);\n return cacheFallback();\n } finally {\n clearTimeout(timer);\n }\n\n if (!response.ok) {\n log(`[policy-evaluator] dashboard HTTP ${response.status} (${tenantHost}); using fallback`);\n return cacheFallback();\n }\n\n let body: unknown;\n try {\n body = await response.json();\n } catch (cause) {\n log(\n `[policy-evaluator] dashboard response not JSON (${tenantHost}): ${String(cause)}; using fallback`\n );\n return cacheFallback();\n }\n\n const parsed = parseTenantPolicy(body);\n if (!parsed) {\n log(`[policy-evaluator] dashboard response malformed (${tenantHost}); using fallback`);\n return cacheFallback();\n }\n\n cache.set(tenantHost, { policy: parsed, fetchedAt: now() });\n return parsed;\n}\n\nfunction parseTenantPolicy(raw: unknown): TenantPolicy | null {\n if (raw === null || typeof raw !== 'object') return null;\n const threshold = (raw as Record<string, unknown>).reputationThreshold;\n if (\n typeof threshold !== 'number' ||\n !Number.isFinite(threshold) ||\n threshold < 0 ||\n threshold > 1\n ) {\n return null;\n }\n return { reputationThreshold: threshold };\n}\n","/**\n * Clock adapter — sub-phase B.5.\n *\n * Provides the Unix-seconds timestamp the engine's `Clock` trait needs\n * for Stage 4 expiration checks. Trivial; the trait shape exists so\n * tests can inject a frozen clock (and so the engine's sync-trait\n * surface is satisfied without a JS callback crossing the WASM\n * boundary — `ContextSpec.nowUnix` carries the value).\n */\n\nexport interface ClockAdapter {\n nowUnix(): number;\n}\n\nexport function makeSystemClock(): ClockAdapter {\n return { nowUnix: () => Math.floor(Date.now() / 1000) };\n}\n\nexport function makeFixedClock(unixSeconds: number): ClockAdapter {\n return { nowUnix: () => unixSeconds };\n}\n","/**\n * E.1 — `RenderedResponse` → Express `Response` mutation adapter.\n *\n * The host wrapper's *only* job on the outbound path: take the\n * transport-agnostic `RenderedResponse` Phase C's\n * `renderDecisionAsResponse` produces and apply it to an Express\n * response. Zero verdict decisions, zero engine I/O.\n *\n * Express's middleware contract is `(req, res, next) => void` —\n * unlike Next.js's `NextResponse` return value, Express adapters\n * mutate `res` in place and either:\n *\n * - Call `next()` to pass through to the next middleware (Permit /\n * Observe-mode pass-through), or\n * - End the response via `res.status().json()`, `res.redirect()`,\n * etc. (block / redirect / instruct).\n *\n * Architectural pins per architect § 4.3 / § 4.4 — identical to\n * Phase D's nextjs adapter and shared via `@kya-os/checkpoint-shared`:\n *\n * 1. Verdict-cookie format is contract (Sites-1 Sonner toast).\n * 2. HTML-accepting clients → `/blocked` redirect at status 302\n * (Express's analog of Next.js's rewrite-at-200; same UX outcome).\n * 3. `X-Checkpoint-Engine` carries `result.engineInfo.name` (set by\n * the orchestrator; this adapter just propagates).\n *\n * The four-way classifier + cookie-byte format come from\n * `@kya-os/checkpoint-shared/host-adapter`, so cross-runtime parity\n * is structural — checkpoint-nextjs and checkpoint-express produce\n * byte-identical `__checkpoint_verdict` cookies for the same engine\n * verdict.\n */\n\nimport type { Request, Response, NextFunction } from 'express';\n\nimport type { RenderedResponse } from '@kya-os/checkpoint-wasm-runtime/orchestrator';\nimport {\n VERDICT_COOKIE_NAME,\n BLOCKED_PATH,\n encodeVerdictCookie,\n acceptsHtml,\n classifyResponseShape,\n} from '@kya-os/checkpoint-shared';\n\n/**\n * Apply a `RenderedResponse` to an Express response. Mutates `res`,\n * may call `next()` for pass-through.\n *\n * Returns `void` (matches Express middleware contract). Callers\n * (`withCheckpoint`'s returned handler) await this if needed; it never\n * throws on the happy path.\n */\nexport function adaptToExpressResponse(\n rendered: RenderedResponse,\n req: Request,\n res: Response,\n next: NextFunction\n): void {\n const clientAcceptsHtml = acceptsHtml(req.headers);\n const verdictCookie = encodeVerdictCookie(rendered);\n const shape = classifyResponseShape(rendered, clientAcceptsHtml);\n\n applyHeaders(res, rendered.headers);\n setVerdictCookie(res, verdictCookie);\n\n switch (shape) {\n case 'pass-through': {\n // Permit OR Observe-mode any-verdict. Cookie + headers were\n // already set; hand control to the downstream handler.\n next();\n return;\n }\n\n case 'redirect': {\n // Decision::Redirect → 302 + Location. Express's redirect\n // signature is `redirect(status?, url)`; we pass the full status\n // and the orchestrator-supplied Location target. Headers were\n // already applied above (the Location-set is redundant but\n // harmless — Express's redirect() re-sets it canonically).\n const target = rendered.headers.Location!;\n res.redirect(302, target);\n return;\n }\n\n case 'html-block': {\n // Sites-1 contract: HTML clients (browsers) need a renderable\n // page to show the rejection UI. Express has no rewrite-at-200\n // primitive (that's a Vercel-Edge-specific feature); we redirect\n // to `/blocked` so the page renders with the verdict cookie set.\n // The downstream `/blocked` route reads the cookie and shows\n // the Sonner toast — same UX as the Next.js side, slightly\n // different transport.\n res.redirect(302, BLOCKED_PATH);\n return;\n }\n\n case 'json-block': {\n // The orchestrator's RenderedResponse already supplies the\n // correct status (401/403/422/...); materialise the body.\n // application/problem+json (Instruct) uses the Content-Type\n // from rendered.headers (already applied above); defaults to\n // application/json.\n const body = rendered.body ?? {};\n res.status(rendered.status as number).json(body);\n return;\n }\n }\n}\n\n// -----------------------------------------------------------------------------\n// Helpers — Express-specific glue. Framework-agnostic primitives live\n// in `@kya-os/checkpoint-shared/host-adapter`.\n// -----------------------------------------------------------------------------\n\nfunction setVerdictCookie(res: Response, value: string): void {\n // Path / SameSite / HttpOnly match Next.js's setVerdictCookie so the\n // Sonner toast contract is identical across runtimes. Express's\n // res.cookie() URL-encodes the value when serializing (via the\n // `cookie` library, same as Next.js's NextResponse.cookies.set).\n res.cookie(VERDICT_COOKIE_NAME, value, {\n path: '/',\n sameSite: 'lax',\n httpOnly: false,\n });\n}\n\nfunction applyHeaders(res: Response, headers: Record<string, string>): void {\n // Orchestrator headers (X-Checkpoint-*, Location, Content-Type)\n // override any existing values. We don't strip pre-existing headers\n // a downstream middleware may have set — only set/replace the keys\n // the orchestrator returned.\n for (const [key, value] of Object.entries(headers)) {\n res.setHeader(key, value);\n }\n}\n","/**\n * E.1 — Express `Request` → `IncomingHttpLike` translator.\n *\n * The host wrapper's *only* job on the inbound path: take Express's\n * native request shape and produce the transport-agnostic\n * `IncomingHttpLike` Phase C's orchestrator consumes. Zero verification\n * logic, zero adapter calls, zero engine I/O.\n *\n * Mirrors `checkpoint-nextjs/src/translate.ts` byte-for-byte at the\n * orchestrator boundary — same `IncomingHttpLike` output for the same\n * logical input. Sites-4's cross-runtime parity gate is the regression\n * surface.\n */\n\nimport type { Request } from 'express';\n\nimport type { IncomingHttpLike } from '@kya-os/checkpoint-wasm-runtime/orchestrator';\n\n/**\n * Translate an Express `Request` into the orchestrator's\n * `IncomingHttpLike` shape.\n *\n * Body handling differs from the Next.js translator: Express usually\n * has `body-parser` (or `express.json()`) registered before the\n * middleware, so `req.body` is already a parsed object. We pass it\n * through — if it carries `_meta.proof.jws`, the orchestrator routes\n * to MCP-I verification; if not, PlainHttp. Customers who haven't\n * registered a body parser get `req.body === undefined`, which the\n * orchestrator treats as PlainHttp (correct outcome for non-JSON\n * traffic).\n */\nexport function expressRequestToHttpLike(req: Request): IncomingHttpLike {\n return {\n method: req.method,\n // Express `originalUrl` includes path + query (`/products?q=widgets`).\n // The orchestrator's URL parsing expects no scheme/host, matching\n // Next.js's `url.pathname + url.search`.\n url: req.originalUrl || req.url,\n headers: headersToRecord(req.headers),\n // Pass parsed body through unchanged. Body-parser registers\n // `req.body` as the parsed JSON object; the orchestrator's\n // `buildAgentRequest` looks for `_meta.proof.jws` and routes\n // accordingly. `undefined` (no body parser, no JSON body) routes\n // to PlainHttp, same as null on the Next.js side.\n body: (req.body as unknown) ?? null,\n remoteAddress: extractRemoteAddress(req),\n };\n}\n\n/**\n * Convert Express's `IncomingHttpHeaders` (Record<string, string |\n * string[] | undefined>) into a lowercase-keyed plain string map.\n *\n * Express already lowercases incoming header names (RFC 9110 § 5.1 is\n * case-insensitive); we re-apply for safety in case a middleware\n * upstream re-cases them. Multi-value headers (Set-Cookie, Accept) are\n * joined with `,` to match what Next.js's `Headers.get()` produces —\n * keeps both runtimes producing the same canonical string per header.\n */\nfunction headersToRecord(\n headers: Record<string, string | string[] | undefined>\n): Record<string, string> {\n const out: Record<string, string> = {};\n for (const [key, value] of Object.entries(headers)) {\n if (value === undefined) continue;\n out[key.toLowerCase()] = Array.isArray(value) ? value.join(',') : value;\n }\n return out;\n}\n\n/**\n * Pull the originating client IP, preferring `x-forwarded-for`'s first\n * entry over `req.ip` / `req.socket.remoteAddress`. Same convention as\n * the Next.js translator and as nginx/Caddy/Cloudflare — the first\n * x-forwarded-for IP is the closest the request has come to a load\n * balancer's \"trust this is the real client\" attestation.\n *\n * Express's `req.ip` honors `app.set('trust proxy', ...)`; if the host\n * has set that, `req.ip` already reflects the forwarded IP. We still\n * read `x-forwarded-for` directly as the primary source because Phase\n * E ships with no app-level trust-proxy assumption — the consumer's\n * server may or may not have configured it.\n */\nfunction extractRemoteAddress(req: Request): string | undefined {\n const xff = req.headers['x-forwarded-for'];\n const xffString = Array.isArray(xff) ? xff[0] : xff;\n if (xffString) {\n const first = xffString.split(',')[0]?.trim();\n if (first) return first;\n }\n if (req.ip) return req.ip;\n return req.socket?.remoteAddress;\n}\n","/**\n * E.1 + E.3 — Express middleware entry: `withCheckpoint(config)`.\n *\n * The host wrapper that composes Phase B adapters + Phase C\n * `verifyRequest` (sync engine) + Phase D translate/adapt into the\n * `withCheckpoint(config)` factory. Mounted under Node-runtime Express\n * servers via `app.use(withCheckpoint({...}))`.\n *\n * Phase E only ships the Node-runtime entry — Express doesn't have an\n * Edge variant (Express runs on Node only). Phase D's edge orchestrator\n * (`verifyRequestEdge`) exists for the Next.js + Vercel Edge use case;\n * Express imports the sync `verifyRequest` directly.\n *\n * **Public API contract (architect § 4.1):**\n *\n * - `withCheckpoint(config)` — factory returning Express middleware.\n * - `CheckpointConfig` — the config shape; new fields are additive.\n *\n * Internal implementation gutted, external contract held. The legacy\n * `agentShield()` / `createAgentShieldMiddleware()` exports remain in\n * the package during the deprecation window (see E.4) — but as\n * throw-stubs with migration messages, not working entry points.\n */\n\nimport type { Request, Response, NextFunction, RequestHandler } from 'express';\n\nimport {\n renderDecisionAsResponse,\n verifyRequest,\n} from '@kya-os/checkpoint-wasm-runtime/orchestrator';\nimport {\n makeDidResolver,\n makePolicyEvaluator,\n makeReputationOracle,\n makeStatusListCache,\n makeSystemClock,\n type DidResolverAdapter,\n type PolicyEvaluatorAdapter,\n type ReputationOracleAdapter,\n type StatusListCacheAdapter,\n} from '@kya-os/checkpoint-wasm-runtime/adapters';\nimport type { EnforcementMode, VerifyResult } from '@kya-os/checkpoint-wasm-runtime/engine';\n\nimport { adaptToExpressResponse } from './adapt';\nimport { expressRequestToHttpLike } from './translate';\n\n/**\n * Configuration for `withCheckpoint`.\n *\n * Shape mirrors `checkpoint-nextjs`'s `CheckpointConfig` so customers\n * running both runtimes have a single mental model.\n */\nexport interface CheckpointConfig {\n /**\n * Tenant identifier — typically the customer's dashboard hostname\n * (e.g. `acme.checkpoint.example`). The PolicyEvaluator uses this\n * to look up tenant policy from the dashboard.\n */\n tenantHost: string;\n\n /**\n * `'enforce'` (default) blocks; `'observe'` passes everything\n * through with `X-Checkpoint-Would-Have-Been` headers. Per Phase 0.2.\n */\n enforcementMode?: EnforcementMode;\n\n /**\n * Argus reputation oracle base URL. Omit to use the trust-by-default\n * baseline (reputation defaults to 1.0; orchestrator logs a one-shot\n * warning at first request).\n */\n argusUrl?: string;\n\n /**\n * Dashboard base URL for the PolicyEvaluator to fetch tenant policy\n * from. Omit to use the open-by-default tenant policy.\n */\n dashboardUrl?: string;\n\n /**\n * Returned to the PolicyEvaluator for anonymous requests (no agent\n * DID). Default 1.0 (trust-by-default).\n */\n reputationBaseline?: number;\n\n /**\n * Pre-built adapter instances. Production deployments use the\n * factory-built defaults from `@kya-os/checkpoint-wasm-runtime/\n * adapters`; tests use stubs. The factory composes any provided\n * overrides over defaults — partial overrides are supported.\n */\n adapters?: Partial<{\n didResolver: DidResolverAdapter;\n statusListCache: StatusListCacheAdapter;\n reputationOracle: ReputationOracleAdapter;\n policyEvaluator: PolicyEvaluatorAdapter;\n }>;\n\n /**\n * Optional callback for the post-verdict path — fires after every\n * verification, regardless of permit/block, with the full\n * `VerifyResult`. Use for logging, dashboards, telemetry. Errors\n * thrown here are swallowed so user code can't break the middleware\n * response.\n */\n onResult?: (result: VerifyResult, req: Request) => void | Promise<void>;\n}\n\n/**\n * Build the Checkpoint middleware. Returns an Express `RequestHandler`\n * suitable for `app.use(withCheckpoint({...}))`.\n *\n * Every verification decision flows through the Rust `kya-os-engine`\n * via WASM. The TS layer translates request shape, calls\n * `verifyRequest`, and applies the verdict to `res` (or calls `next()`\n * for pass-through). No verification logic lives in this file.\n */\nexport function withCheckpoint(config: CheckpointConfig): RequestHandler {\n const opts = buildVerifyOpts(config);\n return async function checkpointMiddleware(\n req: Request,\n res: Response,\n next: NextFunction\n ): Promise<void> {\n try {\n const httpLike = expressRequestToHttpLike(req);\n const result = await verifyRequest(httpLike, opts);\n await dispatchOnResult(config, result, req);\n const rendered = renderDecisionAsResponse(result);\n adaptToExpressResponse(rendered, req, res, next);\n } catch (err) {\n // Verification-pipeline error (network failure to DID resolver,\n // status-list cache miss, etc.). Surface to Express's error\n // middleware via `next(err)` rather than swallowing — the\n // customer's error handler decides how to render.\n next(err);\n }\n };\n}\n\n/**\n * Compose adapter defaults with caller-supplied overrides. Identical\n * shape to Phase D's nextjs `buildVerifyOpts` — cross-runtime parity\n * at the adapter-composition layer is structural.\n */\nfunction buildVerifyOpts(config: CheckpointConfig) {\n const overrides = config.adapters ?? {};\n return {\n didResolver: overrides.didResolver ?? makeDidResolver(),\n statusListCache: overrides.statusListCache ?? makeStatusListCache(),\n reputationOracle:\n overrides.reputationOracle ?? makeReputationOracle({ argusUrl: config.argusUrl }),\n policyEvaluator:\n overrides.policyEvaluator ?? makePolicyEvaluator({ dashboardUrl: config.dashboardUrl }),\n clock: makeSystemClock(),\n tenantHost: config.tenantHost,\n enforcementMode: config.enforcementMode ?? 'enforce',\n reputationBaseline: config.reputationBaseline,\n argusUrl: config.argusUrl,\n };\n}\n\nasync function dispatchOnResult(\n config: CheckpointConfig,\n result: VerifyResult,\n req: Request\n): Promise<void> {\n if (!config.onResult) return;\n try {\n await config.onResult(result, req);\n } catch {\n // Swallow — onResult is observability, not verdict-critical.\n // Verdict already computed; let the response proceed.\n }\n}\n","/**\n * Legacy Express middleware — Phase E throw-stub.\n *\n * The local-detection chain (pattern matching → JS-side policy\n * evaluation) was retired in Phase E. Every legacy\n * call site now throws with a migration message pointing at\n * `withCheckpoint()` from `@kya-os/checkpoint-express`.\n *\n * Per Dylan's architect call 2026-05-16: local-detection chain entry\n * points become throw-stubs after the engine-backed replacement ships.\n * The export names survive so customers don't `ImportError` on upgrade\n * — calls throw at runtime with a clear migration path. SaaS-API\n * entry points (`AgentShieldClient`, `client.enforce()`) get a\n * different treatment (rename + preserve); Express had no such surface\n * (audit confirmed 2026-05-16 in the Phase E kickoff brief § \"addendum\n * 2026-05-16\").\n *\n * @deprecated Use `withCheckpoint` from `@kya-os/checkpoint-express`.\n */\n\nimport type { ExpressMiddlewareConfig, AgentShieldMiddleware } from './types';\n\nconst MIGRATION_MESSAGE = [\n '[checkpoint-express] The legacy local-detection middleware has been retired.',\n '',\n 'Migrate to the engine-backed entry point:',\n '',\n \" import { withCheckpoint } from '@kya-os/checkpoint-express';\",\n '',\n \" app.use(withCheckpoint({ tenantHost: 'your.tenant.example' }));\",\n '',\n 'Every verification decision now flows through the Rust kya-os-engine via',\n 'WASM — same engine, every runtime, same verdicts. See the @kya-os/',\n 'checkpoint-express README for the full config shape.',\n].join('\\n');\n\n/**\n * @deprecated Throws with a migration message. Use `withCheckpoint` instead.\n */\nexport function createAgentShieldMiddleware(\n _config: Partial<ExpressMiddlewareConfig> = {}\n): AgentShieldMiddleware {\n throw new Error(MIGRATION_MESSAGE);\n}\n\n/**\n * @deprecated Throws with a migration message. Use `withCheckpoint` instead.\n */\nexport function agentShield(_config: Partial<ExpressMiddlewareConfig> = {}): AgentShieldMiddleware {\n throw new Error(MIGRATION_MESSAGE);\n}\n","/**\n * Session tracking helper for Express\n * Provides graceful degradation of session tracking for non-Next.js environments\n */\n\nimport type { Request, Response, NextFunction } from 'express';\nimport type { DetectionResult } from '@kya-os/checkpoint-shared';\nimport { shouldEnforce } from '@kya-os/checkpoint-shared';\nimport type { AgentShieldRequest } from './types';\n\nexport interface SessionData {\n id: string;\n agent: string;\n confidence: number;\n detectedAt: number;\n expires: number;\n}\n\n/**\n * Express-compatible session tracker\n * Uses cookies when available, falls back to headers\n */\nexport class ExpressSessionTracker {\n private readonly cookieName = '__agentshield_session';\n\n /**\n * Check for existing session from Express request\n */\n check(req: Request): SessionData | null {\n try {\n // Try cookie-based session first\n if (req.cookies && req.cookies[this.cookieName]) {\n try {\n const decoded = Buffer.from(req.cookies[this.cookieName], 'base64').toString();\n const session: SessionData = JSON.parse(decoded);\n\n // Check expiration\n if (session.expires > Date.now()) {\n return session;\n }\n } catch {\n // Invalid session data\n }\n }\n\n // Try header-based session (for clients that don't support cookies)\n const sessionHeader = req.get('kya-session');\n if (sessionHeader) {\n try {\n const session: SessionData = JSON.parse(Buffer.from(sessionHeader, 'base64').toString());\n if (session.expires > Date.now()) {\n return session;\n }\n } catch {\n // Invalid session data\n }\n }\n\n return null;\n } catch {\n return null;\n }\n }\n\n /**\n * Track a new session in Express response\n */\n track(res: Response, result: DetectionResult): void {\n try {\n if (!shouldEnforce(result)) return;\n\n const session: SessionData = {\n id: this.generateId(),\n agent: result.detectedAgent?.name || 'unknown',\n confidence: result.confidence,\n detectedAt: Date.now(),\n expires: Date.now() + 3600000, // 1 hour\n };\n\n const encoded = Buffer.from(JSON.stringify(session)).toString('base64');\n\n // Set cookie if cookie-parser is available\n if (res.cookie) {\n res.cookie(this.cookieName, encoded, {\n httpOnly: true,\n secure: process.env.NODE_ENV === 'production',\n sameSite: 'lax',\n maxAge: 3600000, // 1 hour in milliseconds\n });\n }\n\n // Always set header as fallback\n res.setHeader('kya-session', encoded);\n res.setHeader('kya-session-agent', session.agent);\n res.setHeader('kya-session-id', session.id);\n } catch (error) {\n // Fail gracefully\n if (process.env.DEBUG_AGENTSHIELD) {\n console.warn('AgentShield: Failed to track session:', error);\n }\n }\n }\n\n /**\n * Generate a simple ID without crypto dependency\n */\n private generateId(): string {\n return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n }\n}\n\n/**\n * Helper to add session tracking to Express middleware\n */\nexport function withSessionTracking(\n middleware: (req: Request, res: Response, next: NextFunction) => void | Promise<void>,\n config?: { enabled?: boolean }\n): (req: Request, res: Response, next: NextFunction) => void | Promise<void> {\n if (!config?.enabled) {\n return middleware;\n }\n\n const tracker = new ExpressSessionTracker();\n\n return async function (req: Request, res: Response, next: NextFunction) {\n // Check for existing session\n const session = tracker.check(req);\n\n if (session) {\n // Attach session to request\n const agentShieldReq = req as AgentShieldRequest;\n agentShieldReq.agentShield = {\n skipped: agentShieldReq.agentShield?.skipped ?? false,\n session,\n result: {\n isAgent: true,\n confidence: session.confidence,\n detectionClass: { type: 'AiAgent' as const },\n reasons: ['Session continued from previous detection'],\n signals: [],\n detectedAgent: { type: 'unknown', name: session.agent },\n timestamp: new Date(),\n verificationMethod: 'pattern',\n },\n };\n\n // Set response headers\n res.setHeader('kya-detected', 'true');\n res.setHeader('kya-agent', session.agent);\n res.setHeader('kya-session', 'continued');\n }\n\n // Call original middleware\n const originalEnd = res.end.bind(res);\n res.end = function (\n chunk?: unknown,\n encodingOrCb?: BufferEncoding | (() => void),\n cb?: () => void\n ): Response {\n // Track new sessions before sending response\n const agentShield = (req as AgentShieldRequest).agentShield;\n if (agentShield?.result?.isAgent && !agentShield.session) {\n tracker.track(res, agentShield.result);\n }\n\n // Handle Express res.end overloads properly\n if (typeof encodingOrCb === 'function') {\n return originalEnd(chunk, encodingOrCb);\n }\n if (cb) {\n return originalEnd(chunk, encodingOrCb as BufferEncoding, cb);\n }\n return originalEnd(chunk, encodingOrCb as BufferEncoding);\n };\n\n middleware(req, res, next);\n };\n}\n","/**\n * Legacy enhanced middleware — Phase E throw-stub.\n *\n * `createEnhancedAgentShieldMiddleware` previously bundled local\n * detection + session tracking + Redis/Memory event storage in one\n * factory. Phase E retires the local detection per Dylan's architect\n * call 2026-05-16 (local-detection chain → throw-stub) but preserves\n * the session/Redis observability surface as **composable primitives**:\n *\n * - Storage adapters (`MemoryStorageAdapter`, `RedisStorageAdapter`,\n * `createStorageAdapter`) remain exported from `./storage`.\n * - Session-cookie helpers remain exported from `./session-helper`.\n *\n * Customers who used `createEnhancedAgentShieldMiddleware` for the\n * combined behaviour migrate to `withCheckpoint` + an `onResult`\n * callback that calls into the storage adapter:\n *\n * import { withCheckpoint } from '@kya-os/checkpoint-express';\n * import { createStorageAdapter } from '@kya-os/checkpoint-express';\n *\n * const storage = createStorageAdapter({ type: 'redis', ... });\n *\n * app.use(withCheckpoint({\n * tenantHost: 'your.tenant.example',\n * onResult: async (result, req) => {\n * await storage.recordEvent({\n * verdict: result.decision.kind,\n * agentDid: result.agentDid,\n * ts: Date.now(),\n * // ... whatever the customer's event shape is.\n * });\n * },\n * }));\n *\n * This is the \"session/Redis observability\" bucket in Dylan's\n * three-bucket decision matrix (Phase E kickoff brief § addendum 2):\n * preserve, refactor to consume engine `Decision` instead of legacy\n * `DetectionResult`. The refactor is customer-side — they wire the\n * adapter into `onResult` themselves. The engine doesn't need to know.\n *\n * @deprecated Throws with a migration message. Compose `withCheckpoint`\n * with the storage adapter directly (example above).\n */\n\nimport type { Request } from 'express';\nimport type { DetectionResult } from '@kya-os/checkpoint-shared';\n\nimport type { StorageConfig } from './storage/types';\n\n/**\n * Enhanced middleware configuration (legacy). Kept as a type export so\n * customers' config types keep type-checking through the migration\n * window; the factory function below throws at runtime.\n */\nexport interface EnhancedMiddlewareConfig {\n /** Storage configuration. */\n storage?: StorageConfig;\n /** Session tracking configuration. */\n sessionTracking?: {\n enabled?: boolean;\n ttl?: number;\n };\n /** Paths to skip detection. */\n skipPaths?: string[];\n /** Action when agent detected. */\n onAgentDetected?: 'block' | 'log' | 'allow';\n /** Custom handler for agent detection. */\n onDetection?: (result: DetectionResult, req: Request) => void | Promise<void>;\n /** Confidence threshold. */\n confidenceThreshold?: number;\n /** Response when blocking. */\n blockedResponse?: {\n status?: number;\n message?: string;\n };\n /** Enable WASM (if available). */\n enableWasm?: boolean;\n}\n\nconst MIGRATION_MESSAGE = [\n '[checkpoint-express] createEnhancedAgentShieldMiddleware() has been retired.',\n '',\n 'The combined detection + session-tracking + Redis-storage middleware was',\n 'split into composable primitives in Phase E. Migrate to:',\n '',\n \" import { withCheckpoint, createStorageAdapter } from '@kya-os/checkpoint-express';\",\n '',\n \" const storage = createStorageAdapter({ type: 'redis', ... });\",\n '',\n ' app.use(withCheckpoint({',\n \" tenantHost: 'your.tenant.example',\",\n ' onResult: async (result, req) => {',\n ' await storage.recordEvent({ verdict: result.decision.kind, ts: Date.now() });',\n ' },',\n ' }));',\n '',\n 'Storage adapters (Memory + Redis) are still exported from this package.',\n].join('\\n');\n\n/**\n * @deprecated Throws with a migration message. Compose `withCheckpoint`\n * with `createStorageAdapter` via the `onResult` callback.\n */\nexport function createEnhancedAgentShieldMiddleware(_config: EnhancedMiddlewareConfig = {}) {\n throw new Error(MIGRATION_MESSAGE);\n}\n\n/**\n * Export storage types for user access — preserved per § 7.2.\n */\nexport type {\n StorageAdapter,\n StorageConfig,\n AgentDetectionEvent,\n AgentSession,\n} from './storage/types';\n","/**\n * In-memory storage adapter for Express\n * Useful for development and testing\n */\n\nimport type { StorageAdapter, AgentDetectionEvent, AgentSession } from './types';\n\nexport class MemoryStorageAdapter implements StorageAdapter {\n private events: Map<string, AgentDetectionEvent[]> = new Map();\n private sessions: Map<string, AgentSession> = new Map();\n private eventTimeline: AgentDetectionEvent[] = [];\n private maxEventsPerSession = 100;\n private maxTimelineEvents = 1000;\n\n async storeEvent(event: AgentDetectionEvent): Promise<void> {\n // Add to session events\n const sessionEvents = this.events.get(event.sessionId) || [];\n sessionEvents.push(event);\n\n // Limit events per session\n if (sessionEvents.length > this.maxEventsPerSession) {\n sessionEvents.shift();\n }\n\n this.events.set(event.sessionId, sessionEvents);\n\n // Add to timeline\n this.eventTimeline.push(event);\n\n // Limit timeline size\n if (this.eventTimeline.length > this.maxTimelineEvents) {\n this.eventTimeline.shift();\n }\n }\n\n async storeSession(session: AgentSession): Promise<void> {\n this.sessions.set(session.sessionId, session);\n }\n\n async getEvents(sessionId: string, limit?: number): Promise<AgentDetectionEvent[]> {\n const events = this.events.get(sessionId) || [];\n if (limit) {\n return events.slice(-limit);\n }\n return events;\n }\n\n async getSession(sessionId: string): Promise<AgentSession | null> {\n return this.sessions.get(sessionId) || null;\n }\n\n async getRecentEvents(limit: number = 50): Promise<AgentDetectionEvent[]> {\n return this.eventTimeline.slice(-limit);\n }\n\n async getActiveSessions(limit: number = 50): Promise<AgentSession[]> {\n const sessions = Array.from(this.sessions.values());\n\n // Sort by last seen (most recent first)\n sessions.sort((a, b) => {\n const timeA = new Date(a.lastSeen).getTime();\n const timeB = new Date(b.lastSeen).getTime();\n return timeB - timeA;\n });\n\n return sessions.slice(0, limit);\n }\n\n async cleanup(before: Date): Promise<void> {\n const cutoff = before.getTime();\n\n // Clean up old events\n for (const [sessionId, events] of this.events.entries()) {\n const filtered = events.filter((e) => new Date(e.timestamp).getTime() >= cutoff);\n\n if (filtered.length === 0) {\n this.events.delete(sessionId);\n } else {\n this.events.set(sessionId, filtered);\n }\n }\n\n // Clean up old sessions\n for (const [sessionId, session] of this.sessions.entries()) {\n if (new Date(session.lastSeen).getTime() < cutoff) {\n this.sessions.delete(sessionId);\n }\n }\n\n // Clean up timeline\n this.eventTimeline = this.eventTimeline.filter(\n (e) => new Date(e.timestamp).getTime() >= cutoff\n );\n }\n}\n","/**\n * Redis storage adapter for Express\n * Provides persistent storage for production environments\n */\n\nimport type { StorageAdapter, AgentDetectionEvent, AgentSession } from './types';\n\nexport interface RedisClient {\n set(key: string, value: string, options?: { ex?: number }): Promise<string>;\n get(key: string): Promise<string | null>;\n zadd(key: string, ...args: Array<number | string>): Promise<number>;\n zrange(key: string, start: number, stop: number): Promise<string[]>;\n zrevrange(key: string, start: number, stop: number): Promise<string[]>;\n expire(key: string, seconds: number): Promise<number>;\n del(key: string): Promise<number>;\n keys(pattern: string): Promise<string[]>;\n}\n\nexport class RedisStorageAdapter implements StorageAdapter {\n private prefix = 'agentshield:';\n private ttl: number;\n\n constructor(\n private redis: RedisClient,\n ttl: number = 86400 // 24 hours default\n ) {\n this.ttl = ttl;\n }\n\n private getKey(type: string, id: string): string {\n return `${this.prefix}${type}:${id}`;\n }\n\n async storeEvent(event: AgentDetectionEvent): Promise<void> {\n const eventKey = this.getKey('event', event.eventId);\n const sessionEventsKey = this.getKey('session_events', event.sessionId);\n const timelineKey = `${this.prefix}timeline`;\n\n // Store event data\n await this.redis.set(eventKey, JSON.stringify(event), { ex: this.ttl });\n\n // Add to session events (sorted set)\n const timestamp = new Date(event.timestamp).getTime();\n await this.redis.zadd(sessionEventsKey, timestamp, event.eventId);\n await this.redis.expire(sessionEventsKey, this.ttl);\n\n // Add to global timeline\n await this.redis.zadd(timelineKey, timestamp, event.eventId);\n\n // Trim timeline to keep only recent events\n const timelineCutoff = Date.now() - this.ttl * 1000;\n await this.redis.zadd(timelineKey, timelineCutoff, 'cleanup');\n }\n\n async storeSession(session: AgentSession): Promise<void> {\n const sessionKey = this.getKey('session', session.sessionId);\n const activeSessionsKey = `${this.prefix}active_sessions`;\n\n // Store session data\n await this.redis.set(sessionKey, JSON.stringify(session), { ex: this.ttl });\n\n // Add to active sessions sorted set\n const timestamp = new Date(session.lastSeen).getTime();\n await this.redis.zadd(activeSessionsKey, timestamp, session.sessionId);\n }\n\n async getEvents(sessionId: string, limit?: number): Promise<AgentDetectionEvent[]> {\n const sessionEventsKey = this.getKey('session_events', sessionId);\n\n // Get event IDs from sorted set (most recent first)\n const eventIds = await this.redis.zrevrange(sessionEventsKey, 0, limit ? limit - 1 : -1);\n\n if (eventIds.length === 0) {\n return [];\n }\n\n // Fetch event data\n const events: AgentDetectionEvent[] = [];\n for (const eventId of eventIds) {\n const eventKey = this.getKey('event', eventId);\n const eventData = await this.redis.get(eventKey);\n if (eventData) {\n events.push(JSON.parse(eventData));\n }\n }\n\n return events;\n }\n\n async getSession(sessionId: string): Promise<AgentSession | null> {\n const sessionKey = this.getKey('session', sessionId);\n const sessionData = await this.redis.get(sessionKey);\n\n if (!sessionData) {\n return null;\n }\n\n return JSON.parse(sessionData);\n }\n\n async getRecentEvents(limit: number = 50): Promise<AgentDetectionEvent[]> {\n const timelineKey = `${this.prefix}timeline`;\n\n // Get recent event IDs\n const eventIds = await this.redis.zrevrange(timelineKey, 0, limit - 1);\n\n if (eventIds.length === 0) {\n return [];\n }\n\n // Fetch event data\n const events: AgentDetectionEvent[] = [];\n for (const eventId of eventIds) {\n if (eventId === 'cleanup') continue; // Skip cleanup marker\n\n const eventKey = this.getKey('event', eventId);\n const eventData = await this.redis.get(eventKey);\n if (eventData) {\n events.push(JSON.parse(eventData));\n }\n }\n\n return events;\n }\n\n async getActiveSessions(limit: number = 50): Promise<AgentSession[]> {\n const activeSessionsKey = `${this.prefix}active_sessions`;\n\n // Get recent session IDs\n const sessionIds = await this.redis.zrevrange(activeSessionsKey, 0, limit - 1);\n\n if (sessionIds.length === 0) {\n return [];\n }\n\n // Fetch session data\n const sessions: AgentSession[] = [];\n for (const sessionId of sessionIds) {\n const sessionKey = this.getKey('session', sessionId);\n const sessionData = await this.redis.get(sessionKey);\n if (sessionData) {\n sessions.push(JSON.parse(sessionData));\n }\n }\n\n return sessions;\n }\n\n async cleanup(before: Date): Promise<void> {\n // Redis handles TTL automatically, but we can clean up sorted sets\n const cutoff = before.getTime();\n const timelineKey = `${this.prefix}timeline`;\n const activeSessionsKey = `${this.prefix}active_sessions`;\n\n // Remove old entries from timeline\n await this.redis.zadd(timelineKey, cutoff, 'cleanup');\n\n // Remove old entries from active sessions\n await this.redis.zadd(activeSessionsKey, cutoff, 'cleanup');\n }\n}\n","/**\n * Storage adapter exports and factory for Express\n */\n\nexport * from './types';\nexport { MemoryStorageAdapter } from './memory-adapter';\nexport { RedisStorageAdapter } from './redis-adapter';\n\nimport type { StorageAdapter, StorageConfig } from './types';\nimport { MemoryStorageAdapter } from './memory-adapter';\nimport { RedisStorageAdapter } from './redis-adapter';\nimport type { RedisClient } from './redis-adapter';\n\n/**\n * Create a storage adapter based on configuration\n */\nexport async function createStorageAdapter(config?: StorageConfig): Promise<StorageAdapter> {\n if (!config || config.type === 'memory') {\n return new MemoryStorageAdapter();\n }\n\n if (config.type === 'custom' && config.custom) {\n return config.custom;\n }\n\n if (config.type === 'redis' && config.redis) {\n // Dynamically import Redis client\n try {\n const { Redis } = await import('@upstash/redis');\n const redis = new Redis({\n url: config.redis.url,\n token: config.redis.token,\n });\n // Upstash Redis client matches our RedisClient interface\n return new RedisStorageAdapter(redis as unknown as RedisClient, config.ttl);\n } catch (error) {\n console.warn(\n '[AgentShield] Failed to initialize Redis storage, falling back to memory:',\n error\n );\n return new MemoryStorageAdapter();\n }\n }\n\n // Default to memory storage\n return new MemoryStorageAdapter();\n}\n","/**\n * Legacy policy module — Phase E throw-stub.\n *\n * Local policy evaluation (deny lists, allow lists, threshold checks)\n * was the JS-side enforcement path; per the architect's no-JS-verify\n * pin (Phase 1 review § Q4) it dies. The engine's `Decision` is now\n * the single authoritative policy output — the orchestrator builds it\n * from the customer's tenant policy (loaded via `PolicyEvaluator`\n * adapter), and `withCheckpoint`'s response adapter renders it.\n *\n * Type exports (`PolicyMiddlewareConfig`, `PolicyConfig`, etc.) and\n * shared-package re-exports (`evaluatePolicy`, `ENFORCEMENT_ACTIONS`,\n * `DEFAULT_POLICY`) remain so customers' config types keep\n * type-checking through the migration window. Function exports throw\n * with a migration message at runtime.\n *\n * @deprecated Use `withCheckpoint` from `@kya-os/checkpoint-express`.\n * Tenant policy is loaded by the engine's PolicyEvaluator adapter.\n */\n\nimport type { Request, Response } from 'express';\n\nimport type {\n PolicyConfig,\n PolicyEvaluationContext,\n PolicyEvaluationResult,\n DetectionResult,\n} from '@kya-os/checkpoint-shared';\n\n// Re-export shared policy types + helpers for convenience. Call sites\n// that destructure these continue to type-check; only the function-body\n// invocations of the legacy local-policy helpers (below) throw.\nexport {\n evaluatePolicy,\n createEvaluationContext,\n type PolicyConfig,\n type PolicyEvaluationContext,\n type PolicyEvaluationResult,\n ENFORCEMENT_ACTIONS,\n DEFAULT_POLICY,\n} from '@kya-os/checkpoint-shared';\n\n/**\n * Policy middleware configuration (legacy type). Preserved so customer\n * config types keep type-checking; the factories that consumed it now\n * throw.\n */\nexport interface PolicyMiddlewareConfig {\n /** Local policy configuration (static). */\n policy?: Partial<PolicyConfig>;\n /** Fetch policy from AgentShield API. */\n fetchPolicy?: {\n projectId: string;\n apiUrl?: string;\n apiKey?: string;\n cacheTtlSeconds?: number;\n };\n /** Fallback policy to use when fetch fails. */\n fallbackPolicy?: Partial<PolicyConfig>;\n /** Custom blocked response. */\n blockedResponse?: {\n status?: number;\n message?: string;\n headers?: Record<string, string>;\n };\n /** Default redirect URL for redirect actions. */\n redirectUrl?: string;\n /** Callback when policy decision is made. */\n onPolicyDecision?: (\n req: Request,\n res: Response,\n decision: PolicyEvaluationResult,\n context: PolicyEvaluationContext\n ) => void | Promise<void>;\n /** Custom response handler for blocked requests. */\n customBlockedResponse?: (\n req: Request,\n res: Response,\n decision: PolicyEvaluationResult\n ) => void | Promise<void>;\n /** Whether to fail open (allow) on policy evaluation errors. */\n failOpen?: boolean;\n /** Enable debug logging. */\n debug?: boolean;\n}\n\nconst MIGRATION_MESSAGE = [\n '[checkpoint-express] Local policy evaluation has been retired.',\n '',\n 'Tenant policy now flows through the engine PolicyEvaluator adapter.',\n \"Configure it via withCheckpoint's `dashboardUrl` option:\",\n '',\n \" import { withCheckpoint } from '@kya-os/checkpoint-express';\",\n '',\n ' app.use(withCheckpoint({',\n \" tenantHost: 'your.tenant.example',\",\n \" dashboardUrl: 'https://dashboard.checkpoint.example',\",\n ' }));',\n '',\n 'The engine`s `Decision` (Permit / Block / Redirect / Challenge / Instruct)',\n 'is the single authoritative policy output — the response adapter inside',\n '`withCheckpoint` renders it. Custom block-response shapes belong in the',\n 'dashboard policy itself, not in middleware code.',\n].join('\\n');\n\n// ---------------------------------------------------------------------------\n// Throw-stub function exports — names preserved, bodies retired.\n// ---------------------------------------------------------------------------\n\n/** @deprecated Use `withCheckpoint` — engine PolicyEvaluator owns this. */\nexport function createContextFromDetection(\n _detection: DetectionResult,\n _req: Request\n): PolicyEvaluationContext {\n throw new Error(MIGRATION_MESSAGE);\n}\n\n/** @deprecated Use `withCheckpoint` — engine PolicyEvaluator owns this. */\nexport function evaluatePolicyForDetection(\n _detection: DetectionResult,\n _req: Request,\n _policy: PolicyConfig\n): PolicyEvaluationResult {\n throw new Error(MIGRATION_MESSAGE);\n}\n\n/** @deprecated Use `withCheckpoint` — its response adapter owns this. */\nexport function sendBlockedResponse(\n _res: Response,\n _decision: PolicyEvaluationResult,\n _config: PolicyMiddlewareConfig\n): void {\n throw new Error(MIGRATION_MESSAGE);\n}\n\n/** @deprecated Use `withCheckpoint` — its response adapter owns this. */\nexport function sendRedirectResponse(\n _req: Request,\n _res: Response,\n _decision: PolicyEvaluationResult,\n _config: PolicyMiddlewareConfig,\n _detection?: { detectedAgent?: { name?: string } }\n): void {\n throw new Error(MIGRATION_MESSAGE);\n}\n\n/** @deprecated Use `withCheckpoint` — its response adapter owns this. */\nexport function sendChallengeResponse(\n _req: Request,\n _res: Response,\n _decision: PolicyEvaluationResult,\n _config: PolicyMiddlewareConfig,\n _detection?: { detectedAgent?: { name?: string } }\n): void {\n throw new Error(MIGRATION_MESSAGE);\n}\n\n/** @deprecated Use `withCheckpoint` — engine + adapter compose this. */\nexport async function handlePolicyDecision(\n _req: Request,\n _res: Response,\n _decision: PolicyEvaluationResult,\n _config: PolicyMiddlewareConfig,\n _detection?: { detectedAgent?: { name?: string } }\n): Promise<boolean> {\n throw new Error(MIGRATION_MESSAGE);\n}\n\n/** @deprecated Tenant policy now loads via the engine PolicyEvaluator. */\nexport async function getPolicy(_config: PolicyMiddlewareConfig): Promise<PolicyConfig> {\n throw new Error(MIGRATION_MESSAGE);\n}\n\n/** @deprecated Use `withCheckpoint` — engine + adapter compose this. */\nexport async function applyPolicy(\n _req: Request,\n _res: Response,\n _detection: DetectionResult,\n _config: PolicyMiddlewareConfig\n): Promise<boolean> {\n throw new Error(MIGRATION_MESSAGE);\n}\n","/**\n * @fileoverview Checkpoint Express Middleware — engine-backed AI agent\n * detection and MCP-I verification.\n *\n * @license MIT OR Apache-2.0\n */\n\n// ---------------------------------------------------------------------------\n// Canonical entry point (Phase E)\n// ---------------------------------------------------------------------------\n// `withCheckpoint(config)` is the engine-backed middleware factory. All\n// verification flows through the Rust `kya-os-engine` via WASM. The TS\n// layer is plumbing only — translate request shape, call `verifyRequest`,\n// apply verdict to the Express response. See `create-middleware.ts`.\nexport { withCheckpoint, type CheckpointConfig } from './create-middleware';\n\n// ---------------------------------------------------------------------------\n// Legacy AgentShield surface (deprecated, throw-stub in E.4)\n// ---------------------------------------------------------------------------\n// Existing function names remain exported during the deprecation window\n// so customers' imports don't immediately ImportError. Calls throw with\n// a migration message pointing at `withCheckpoint`. Storage adapters +\n// session helpers preserve (§ 7.2 — observability, not detection).\nexport * from './middleware';\nexport * from './types';\nexport * from './session-helper';\n\n// Export enhanced middleware with built-in features (E.4 refactors to\n// consume engine Decisions instead of legacy DetectionResult).\nexport {\n createEnhancedAgentShieldMiddleware,\n type EnhancedMiddlewareConfig,\n type StorageAdapter,\n type StorageConfig,\n type AgentDetectionEvent,\n type AgentSession,\n} from './enhanced-middleware';\n\n// Export storage adapters for advanced users — preserved per § 7.2.\nexport { MemoryStorageAdapter, RedisStorageAdapter, createStorageAdapter } from './storage';\n\n// Export policy utilities for local policy evaluation (E.4 deletes\n// applyPolicy/evaluatePolicyForDetection/handlePolicyDecision; engine\n// Decision replaces local policy evaluation. Schema-only types stay).\nexport {\n applyPolicy,\n evaluatePolicyForDetection,\n createContextFromDetection,\n handlePolicyDecision,\n getPolicy,\n sendBlockedResponse,\n sendRedirectResponse,\n // Re-exports from shared\n evaluatePolicy,\n createEvaluationContext,\n ENFORCEMENT_ACTIONS,\n DEFAULT_POLICY,\n} from './policy';\nexport type {\n PolicyMiddlewareConfig,\n PolicyConfig,\n PolicyEvaluationContext,\n PolicyEvaluationResult,\n} from './policy';\n\n/**\n * Library version\n */\nexport const VERSION = '1.0.0';\n"]}