From 1bc07ad525a89928384975f3da13c52e96cda280 Mon Sep 17 00:00:00 2001 From: Timur Usmanov Date: Sun, 10 May 2026 19:41:20 +0300 Subject: [PATCH 01/11] Start lab17 --- cloudflare-worker/edge-api/.editorconfig | 12 + cloudflare-worker/edge-api/.gitignore | 167 + cloudflare-worker/edge-api/.prettierrc | 6 + .../edge-api/.vscode/settings.json | 5 + cloudflare-worker/edge-api/package-lock.json | 2913 ++++ cloudflare-worker/edge-api/package.json | 19 + cloudflare-worker/edge-api/src/index.ts | 42 + cloudflare-worker/edge-api/tsconfig.json | 46 + cloudflare-worker/edge-api/vitest.config.mts | 11 + .../edge-api/worker-configuration.d.ts | 13555 ++++++++++++++++ cloudflare-worker/edge-api/wrangler.jsonc | 54 + 11 files changed, 16830 insertions(+) create mode 100644 cloudflare-worker/edge-api/.editorconfig create mode 100644 cloudflare-worker/edge-api/.gitignore create mode 100644 cloudflare-worker/edge-api/.prettierrc create mode 100644 cloudflare-worker/edge-api/.vscode/settings.json create mode 100644 cloudflare-worker/edge-api/package-lock.json create mode 100644 cloudflare-worker/edge-api/package.json create mode 100644 cloudflare-worker/edge-api/src/index.ts create mode 100644 cloudflare-worker/edge-api/tsconfig.json create mode 100644 cloudflare-worker/edge-api/vitest.config.mts create mode 100644 cloudflare-worker/edge-api/worker-configuration.d.ts create mode 100644 cloudflare-worker/edge-api/wrangler.jsonc diff --git a/cloudflare-worker/edge-api/.editorconfig b/cloudflare-worker/edge-api/.editorconfig new file mode 100644 index 0000000000..a727df347a --- /dev/null +++ b/cloudflare-worker/edge-api/.editorconfig @@ -0,0 +1,12 @@ +# http://editorconfig.org +root = true + +[*] +indent_style = tab +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.yml] +indent_style = space diff --git a/cloudflare-worker/edge-api/.gitignore b/cloudflare-worker/edge-api/.gitignore new file mode 100644 index 0000000000..4138168d75 --- /dev/null +++ b/cloudflare-worker/edge-api/.gitignore @@ -0,0 +1,167 @@ +# Logs + +logs +_.log +npm-debug.log_ +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) + +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# Runtime data + +pids +_.pid +_.seed +\*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover + +lib-cov + +# Coverage directory used by tools like istanbul + +coverage +\*.lcov + +# nyc test coverage + +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) + +.grunt + +# Bower dependency directory (https://bower.io/) + +bower_components + +# node-waf configuration + +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) + +build/Release + +# Dependency directories + +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) + +web_modules/ + +# TypeScript cache + +\*.tsbuildinfo + +# Optional npm cache directory + +.npm + +# Optional eslint cache + +.eslintcache + +# Optional stylelint cache + +.stylelintcache + +# Microbundle cache + +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history + +.node_repl_history + +# Output of 'npm pack' + +\*.tgz + +# Yarn Integrity file + +.yarn-integrity + +# parcel-bundler cache (https://parceljs.org/) + +.cache +.parcel-cache + +# Next.js build output + +.next +out + +# Nuxt.js build / generate output + +.nuxt +dist + +# Gatsby files + +.cache/ + +# Comment in the public line in if your project uses Gatsby and not Next.js + +# https://nextjs.org/blog/next-9-1#public-directory-support + +# public + +# vuepress build output + +.vuepress/dist + +# vuepress v2.x temp and cache directory + +.temp +.cache + +# Docusaurus cache and generated files + +.docusaurus + +# Serverless directories + +.serverless/ + +# FuseBox cache + +.fusebox/ + +# DynamoDB Local files + +.dynamodb/ + +# TernJS port file + +.tern-port + +# Stores VSCode versions used for testing VSCode extensions + +.vscode-test + +# yarn v2 + +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.\* + +# wrangler project + +.dev.vars* +!.dev.vars.example +.env* +!.env.example +.wrangler/ diff --git a/cloudflare-worker/edge-api/.prettierrc b/cloudflare-worker/edge-api/.prettierrc new file mode 100644 index 0000000000..5c7b5d3c7a --- /dev/null +++ b/cloudflare-worker/edge-api/.prettierrc @@ -0,0 +1,6 @@ +{ + "printWidth": 140, + "singleQuote": true, + "semi": true, + "useTabs": true +} diff --git a/cloudflare-worker/edge-api/.vscode/settings.json b/cloudflare-worker/edge-api/.vscode/settings.json new file mode 100644 index 0000000000..0126e59b82 --- /dev/null +++ b/cloudflare-worker/edge-api/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "wrangler.json": "jsonc" + } +} \ No newline at end of file diff --git a/cloudflare-worker/edge-api/package-lock.json b/cloudflare-worker/edge-api/package-lock.json new file mode 100644 index 0000000000..7adee25cf0 --- /dev/null +++ b/cloudflare-worker/edge-api/package-lock.json @@ -0,0 +1,2913 @@ +{ + "name": "edge-api", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "edge-api", + "version": "0.0.0", + "devDependencies": { + "@cloudflare/vitest-pool-workers": "^0.12.4", + "@types/node": "^25.6.2", + "typescript": "^5.5.2", + "vitest": "~3.2.0", + "wrangler": "^4.90.0" + } + }, + "node_modules/@cloudflare/kv-asset-handler": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.5.0.tgz", + "integrity": "sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg==", + "dev": true, + "license": "MIT OR Apache-2.0", + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@cloudflare/unenv-preset": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/@cloudflare/unenv-preset/-/unenv-preset-2.16.1.tgz", + "integrity": "sha512-ECxObrMfyTl5bhQf/lZCXwo5G6xX9IAUo+nDMKK4SZ8m4Jvvxp52vilxyySSWh2YTZz8+HQ07qGH/2rEom1vDw==", + "dev": true, + "license": "MIT OR Apache-2.0", + "peerDependencies": { + "unenv": "2.0.0-rc.24", + "workerd": ">1.20260305.0 <2.0.0-0" + }, + "peerDependenciesMeta": { + "workerd": { + "optional": true + } + } + }, + "node_modules/@cloudflare/vitest-pool-workers": { + "version": "0.12.21", + "resolved": "https://registry.npmjs.org/@cloudflare/vitest-pool-workers/-/vitest-pool-workers-0.12.21.tgz", + "integrity": "sha512-xqvqVR+qAhekXWaTNY36UtFFmHrz13yGUoWVGOu6LDC2ABiQqI1E1lQ3eUZY8KVB+1FXY/mP5dB6oD07XUGnPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cjs-module-lexer": "^1.2.3", + "esbuild": "0.27.3", + "miniflare": "4.20260310.0", + "wrangler": "4.72.0" + }, + "peerDependencies": { + "@vitest/runner": "2.0.x - 3.2.x", + "@vitest/snapshot": "2.0.x - 3.2.x", + "vitest": "2.0.x - 3.2.x" + } + }, + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@cloudflare/kv-asset-handler": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.4.2.tgz", + "integrity": "sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==", + "dev": true, + "license": "MIT OR Apache-2.0", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@cloudflare/vitest-pool-workers/node_modules/@cloudflare/unenv-preset": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/@cloudflare/unenv-preset/-/unenv-preset-2.15.0.tgz", + "integrity": "sha512-EGYmJaGZKWl+X8tXxcnx4v2bOZSjQeNI5dWFeXivgX9+YCT69AkzHHwlNbVpqtEUTbew8eQurpyOpeN8fg00nw==", + "dev": true, + "license": "MIT OR Apache-2.0", + "peerDependencies": { + "unenv": "2.0.0-rc.24", + "workerd": "1.20260301.1 || ~1.20260302.1 || ~1.20260303.1 || ~1.20260304.1 || >1.20260305.0 <2.0.0-0" + }, + "peerDependenciesMeta": { + "workerd": { + "optional": true + } + } + }, + "node_modules/@cloudflare/vitest-pool-workers/node_modules/wrangler": { + "version": "4.72.0", + "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.72.0.tgz", + "integrity": "sha512-bKkb8150JGzJZJWiNB2nu/33smVfawmfYiecA6rW4XH7xS23/jqMbgpdelM34W/7a1IhR66qeQGVqTRXROtAZg==", + "dev": true, + "license": "MIT OR Apache-2.0", + "dependencies": { + "@cloudflare/kv-asset-handler": "0.4.2", + "@cloudflare/unenv-preset": "2.15.0", + "blake3-wasm": "2.1.5", + "esbuild": "0.27.3", + "miniflare": "4.20260310.0", + "path-to-regexp": "6.3.0", + "unenv": "2.0.0-rc.24", + "workerd": "1.20260310.1" + }, + "bin": { + "wrangler": "bin/wrangler.js", + "wrangler2": "bin/wrangler.js" + }, + "engines": { + "node": ">=20.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@cloudflare/workers-types": "^4.20260310.1" + }, + "peerDependenciesMeta": { + "@cloudflare/workers-types": { + "optional": true + } + } + }, + "node_modules/@cloudflare/workerd-darwin-64": { + "version": "1.20260310.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20260310.1.tgz", + "integrity": "sha512-hF2VpoWaMb1fiGCQJqCY6M8I+2QQqjkyY4LiDYdTL5D/w6C1l5v1zhc0/jrjdD1DXfpJtpcSMSmEPjHse4p9Ig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@cloudflare/workerd-darwin-arm64": { + "version": "1.20260310.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20260310.1.tgz", + "integrity": "sha512-h/Vl3XrYYPI6yFDE27XO1QPq/1G1lKIM8tzZGIWYpntK3IN5XtH3Ee/sLaegpJ49aIJoqhF2mVAZ6Yw+Vk2gJw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@cloudflare/workerd-linux-64": { + "version": "1.20260310.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20260310.1.tgz", + "integrity": "sha512-XzQ0GZ8G5P4d74bQYOIP2Su4CLdNPpYidrInaSOuSxMw+HamsHaFrjVsrV2mPy/yk2hi6SY2yMbgKFK9YjA7vw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@cloudflare/workerd-linux-arm64": { + "version": "1.20260310.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20260310.1.tgz", + "integrity": "sha512-sxv4CxnN4ZR0uQGTFVGa0V4KTqwdej/czpIc5tYS86G8FQQoGIBiAIs2VvU7b8EROPcandxYHDBPTb+D9HIMPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@cloudflare/workerd-windows-64": { + "version": "1.20260310.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20260310.1.tgz", + "integrity": "sha512-+1ZTViWKJypLfgH/luAHCqkent0DEBjAjvO40iAhOMHRLYP/SPphLvr4Jpi6lb+sIocS8Q1QZL4uM5Etg1Wskg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/colour": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", + "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", + "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", + "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.7.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@poppinss/colors": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@poppinss/colors/-/colors-4.1.6.tgz", + "integrity": "sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==", + "dev": true, + "license": "MIT", + "dependencies": { + "kleur": "^4.1.5" + } + }, + "node_modules/@poppinss/dumper": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@poppinss/dumper/-/dumper-0.6.5.tgz", + "integrity": "sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@poppinss/colors": "^4.1.5", + "@sindresorhus/is": "^7.0.2", + "supports-color": "^10.0.0" + } + }, + "node_modules/@poppinss/exception": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@poppinss/exception/-/exception-1.2.3.tgz", + "integrity": "sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.3.tgz", + "integrity": "sha512-x35CNW/ANXG3hE/EZpRU8MXX1JDN86hBb2wMGAtltkz7pc6cxgjpy1OMMfDosOQ+2hWqIkag/fGok1Yady9nGw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.3.tgz", + "integrity": "sha512-xw3xtkDApIOGayehp2+Rz4zimfkaX65r4t47iy+ymQB2G4iJCBBfj0ogVg5jpvjpn8UWn/+q9tprxleYeNp3Hw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.3.tgz", + "integrity": "sha512-vo6Y5Qfpx7/5EaamIwi0WqW2+zfiusVihKatLvtN1VFVy3D13uERk/6gZLU1UiHRL6fDXqj/ELIeVRGnvcTE1g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.3.tgz", + "integrity": "sha512-D+0QGcZhBzTN82weOnsSlY7V7+RMmPuF1CkbxyMAGE8+ZHeUjyb76ZiWmBlCu//AQQONvxcqRbwZTajZKqjuOw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.3.tgz", + "integrity": "sha512-6HnvHCT7fDyj6R0Ph7A6x8dQS/S38MClRWeDLqc0MdfWkxjiu1HSDYrdPhqSILzjTIC/pnXbbJbo+ft+gy/9hQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.3.tgz", + "integrity": "sha512-KHLgC3WKlUYW3ShFKnnosZDOJ0xjg9zp7au3sIm2bs/tGBeC2ipmvRh/N7JKi0t9Ue20C0dpEshi8WUubg+cnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.3.tgz", + "integrity": "sha512-DV6fJoxEYWJOvaZIsok7KrYl0tPvga5OZ2yvKHNNYyk/2roMLqQAbGhr78EQ5YhHpnhLKJD3S1WFusAkmUuV5g==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.3.tgz", + "integrity": "sha512-mQKoJAzvuOs6F+TZybQO4GOTSMUu7v0WdxEk24krQ/uUxXoPTtHjuaUuPmFhtBcM4K0ons8nrE3JyhTuCFtT/w==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.3.tgz", + "integrity": "sha512-Whjj2qoiJ6+OOJMGptTYazaJvjOJm+iKHpXQM1P3LzGjt7Ff++Tp7nH4N8J/BUA7R9IHfDyx4DJIflifwnbmIA==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.3.tgz", + "integrity": "sha512-4YTNHKqGng5+yiZt3mg77nmyuCfmNfX4fPmyUapBcIk+BdwSwmCWGXOUxhXbBEkFHtoN5boLj/5NON+u5QC9tg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.3.tgz", + "integrity": "sha512-SU3kNlhkpI4UqlUc2VXPGK9o886ZsSeGfMAX2ba2b8DKmMXq4AL7KUrkSWVbb7koVqx41Yczx6dx5PNargIrEA==", + "cpu": [ + "loong64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.3.tgz", + "integrity": "sha512-6lDLl5h4TXpB1mTf2rQWnAk/LcXrx9vBfu/DT5TIPhvMhRWaZ5MxkIc8u4lJAmBo6klTe1ywXIUHFjylW505sg==", + "cpu": [ + "loong64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.3.tgz", + "integrity": "sha512-BMo8bOw8evlup/8G+cj5xWtPyp93xPdyoSN16Zy90Q2QZ0ZYRhCt6ZJSwbrRzG9HApFabjwj2p25TUPDWrhzqQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.3.tgz", + "integrity": "sha512-E0L8X1dZN1/Rph+5VPF6Xj2G7JJvMACVXtamTJIDrVI44Y3K+G8gQaMEAavbqCGTa16InptiVrX6eM6pmJ+7qA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.3.tgz", + "integrity": "sha512-oZJ/WHaVfHUiRAtmTAeo3DcevNsVvH8mbvodjZy7D5QKvCefO371SiKRpxoDcCxB3PTRTLayWBkvmDQKTcX/sw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.3.tgz", + "integrity": "sha512-Dhbyh7j9FybM3YaTgaHmVALwA8AkUwTPccyCQ79TG9AJUsMQqgN1DDEZNr4+QUfwiWvLDumW5vdwzoeUF+TNxQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.3.tgz", + "integrity": "sha512-cJd1X5XhHHlltkaypz1UcWLA8AcoIi1aWhsvaWDskD1oz2eKCypnqvTQ8ykMNI0RSmm7NkTdSqSSD7zM0xa6Ig==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.3.tgz", + "integrity": "sha512-DAZDBHQfG2oQuhY7mc6I3/qB4LU2fQCjRvxbDwd/Jdvb9fypP4IJ4qmtu6lNjes6B531AI8cg1aKC2di97bUxA==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.3.tgz", + "integrity": "sha512-cRxsE8c13mZOh3vP+wLDxpQBRrOHDIGOWyDL93Sy0Ga8y515fBcC2pjUfFwUe5T7tqvTvWbCpg1URM/AXdWIXA==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.3.tgz", + "integrity": "sha512-QaWcIgRxqEdQdhJqW4DJctsH6HCmo5vHxY0krHSX4jMtOqfzC+dqDGuHM87bu4H8JBeibWx7jFz+h6/4C8wA5Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.3.tgz", + "integrity": "sha512-AaXwSvUi3QIPtroAUw1t5yHGIyqKEXwH54WUocFolZhpGDruJcs8c+xPNDRn4XiQsS7MEwnYsHW2l0MBLDMkWg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.3.tgz", + "integrity": "sha512-65LAKM/bAWDqKNEelHlcHvm2V+Vfb8C6INFxQXRHCvaVN1rJfwr4NvdP4FyzUaLqWfaCGaadf6UbTm8xJeYfEg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.3.tgz", + "integrity": "sha512-EEM2gyhBF5MFnI6vMKdX1LAosE627RGBzIoGMdLloPZkXrUN0Ckqgr2Qi8+J3zip/8NVVro3/FjB+tjhZUgUHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.3.tgz", + "integrity": "sha512-E5Eb5H/DpxaoXH++Qkv28RcUJboMopmdDUALBczvHMf7hNIxaDZqwY5lK12UK1BHacSmvupoEWGu+n993Z0y1A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.3.tgz", + "integrity": "sha512-hPt/bgL5cE+Qp+/TPHBqptcAgPzgj46mPcg/16zNUmbQk0j+mOEQV/+Lqu8QRtDV3Ek95Q6FeFITpuhl6OTsAA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@sindresorhus/is": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.2.0.tgz", + "integrity": "sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@speed-highlight/core": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@speed-highlight/core/-/core-1.2.15.tgz", + "integrity": "sha512-BMq1K3DsElxDWawkX6eLg9+CKJrTVGCBAWVuHXVUV2u0s2711qiChLSId6ikYPfxhdYocLNt3wWwSvDiTvFabw==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.6.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.2.tgz", + "integrity": "sha512-sokuT28dxf9JT5Kady1fsXOvI4HVpjZa95NKT5y9PNTIrs2AsobR4GFAA90ZG8M+nxVRLysCXsVj6eGC7Vbrlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.19.0" + } + }, + "node_modules/@vitest/expect": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", + "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", + "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.2.4", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", + "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.2.4", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", + "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", + "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^4.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", + "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "loupe": "^3.1.4", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/blake3-wasm": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/blake3-wasm/-/blake3-wasm-2.1.5.tgz", + "integrity": "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==", + "dev": true, + "license": "MIT" + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/chai": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/check-error": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", + "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/error-stack-parser-es": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-1.0.5.tgz", + "integrity": "sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/expect-type": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", + "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/loupe": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/miniflare": { + "version": "4.20260310.0", + "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-4.20260310.0.tgz", + "integrity": "sha512-uC5vNPenFpDSj5aUU3wGSABG6UUqMr+Xs1m4AkCrTHo37F4Z6xcQw5BXqViTfPDVT/zcYH1UgTVoXhr1l6ZMXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "0.8.1", + "sharp": "^0.34.5", + "undici": "7.18.2", + "workerd": "1.20260310.1", + "ws": "8.18.0", + "youch": "4.1.0-beta.10" + }, + "bin": { + "miniflare": "bootstrap.js" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", + "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathval": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz", + "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/rollup": { + "version": "4.60.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.3.tgz", + "integrity": "sha512-pAQK9HalE84QSm4Po3EmWIZPd3FnjkShVkiMlz1iligWYkWQ7wHYd1PF/T7QZ5TVSD6uSTon5gBVMSM4JfBV+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.60.3", + "@rollup/rollup-android-arm64": "4.60.3", + "@rollup/rollup-darwin-arm64": "4.60.3", + "@rollup/rollup-darwin-x64": "4.60.3", + "@rollup/rollup-freebsd-arm64": "4.60.3", + "@rollup/rollup-freebsd-x64": "4.60.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.3", + "@rollup/rollup-linux-arm-musleabihf": "4.60.3", + "@rollup/rollup-linux-arm64-gnu": "4.60.3", + "@rollup/rollup-linux-arm64-musl": "4.60.3", + "@rollup/rollup-linux-loong64-gnu": "4.60.3", + "@rollup/rollup-linux-loong64-musl": "4.60.3", + "@rollup/rollup-linux-ppc64-gnu": "4.60.3", + "@rollup/rollup-linux-ppc64-musl": "4.60.3", + "@rollup/rollup-linux-riscv64-gnu": "4.60.3", + "@rollup/rollup-linux-riscv64-musl": "4.60.3", + "@rollup/rollup-linux-s390x-gnu": "4.60.3", + "@rollup/rollup-linux-x64-gnu": "4.60.3", + "@rollup/rollup-linux-x64-musl": "4.60.3", + "@rollup/rollup-openbsd-x64": "4.60.3", + "@rollup/rollup-openharmony-arm64": "4.60.3", + "@rollup/rollup-win32-arm64-msvc": "4.60.3", + "@rollup/rollup-win32-ia32-msvc": "4.60.3", + "@rollup/rollup-win32-x64-gnu": "4.60.3", + "@rollup/rollup-win32-x64-msvc": "4.60.3", + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup/node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", + "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sharp": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", + "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.2", + "semver": "^7.7.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.5", + "@img/sharp-darwin-x64": "0.34.5", + "@img/sharp-libvips-darwin-arm64": "1.2.4", + "@img/sharp-libvips-darwin-x64": "1.2.4", + "@img/sharp-libvips-linux-arm": "1.2.4", + "@img/sharp-libvips-linux-arm64": "1.2.4", + "@img/sharp-libvips-linux-ppc64": "1.2.4", + "@img/sharp-libvips-linux-riscv64": "1.2.4", + "@img/sharp-libvips-linux-s390x": "1.2.4", + "@img/sharp-libvips-linux-x64": "1.2.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", + "@img/sharp-libvips-linuxmusl-x64": "1.2.4", + "@img/sharp-linux-arm": "0.34.5", + "@img/sharp-linux-arm64": "0.34.5", + "@img/sharp-linux-ppc64": "0.34.5", + "@img/sharp-linux-riscv64": "0.34.5", + "@img/sharp-linux-s390x": "0.34.5", + "@img/sharp-linux-x64": "0.34.5", + "@img/sharp-linuxmusl-arm64": "0.34.5", + "@img/sharp-linuxmusl-x64": "0.34.5", + "@img/sharp-wasm32": "0.34.5", + "@img/sharp-win32-arm64": "0.34.5", + "@img/sharp-win32-ia32": "0.34.5", + "@img/sharp-win32-x64": "0.34.5" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "dev": true, + "license": "MIT" + }, + "node_modules/strip-literal": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz", + "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/supports-color": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz", + "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinypool": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz", + "integrity": "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD", + "optional": true + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.18.2.tgz", + "integrity": "sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, + "node_modules/undici-types": { + "version": "7.19.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz", + "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==", + "dev": true, + "license": "MIT" + }, + "node_modules/unenv": { + "version": "2.0.0-rc.24", + "resolved": "https://registry.npmjs.org/unenv/-/unenv-2.0.0-rc.24.tgz", + "integrity": "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "pathe": "^2.0.3" + } + }, + "node_modules/vite": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.3.tgz", + "integrity": "sha512-/4XH147Ui7OGTjg3HbdWe5arnZQSbfuRzdr9Ec7TQi5I7R+ir0Rlc9GIvD4v0XZurELqA035KVXJXpR61xhiTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vitest": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", + "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.4", + "@vitest/mocker": "3.2.4", + "@vitest/pretty-format": "^3.2.4", + "@vitest/runner": "3.2.4", + "@vitest/snapshot": "3.2.4", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "debug": "^4.4.1", + "expect-type": "^1.2.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "picomatch": "^4.0.2", + "std-env": "^3.9.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.1", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.4", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.2.4", + "@vitest/ui": "3.2.4", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/workerd": { + "version": "1.20260310.1", + "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20260310.1.tgz", + "integrity": "sha512-yawXhypXXHtArikJj15HOMknNGikpBbSg2ZDe6lddUbqZnJXuCVSkgc/0ArUeVMG1jbbGvpst+REFtKwILvRTQ==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "bin": { + "workerd": "bin/workerd" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "@cloudflare/workerd-darwin-64": "1.20260310.1", + "@cloudflare/workerd-darwin-arm64": "1.20260310.1", + "@cloudflare/workerd-linux-64": "1.20260310.1", + "@cloudflare/workerd-linux-arm64": "1.20260310.1", + "@cloudflare/workerd-windows-64": "1.20260310.1" + } + }, + "node_modules/wrangler": { + "version": "4.90.0", + "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.90.0.tgz", + "integrity": "sha512-bmNIykl59TfCUn5xQgU7IWylSsPx3LQaPLMSAq2VQHt89CBrcj9qXQ0eYfjBCWA5XTBVgten391evt7xxtXwcA==", + "dev": true, + "license": "MIT OR Apache-2.0", + "dependencies": { + "@cloudflare/kv-asset-handler": "0.5.0", + "@cloudflare/unenv-preset": "2.16.1", + "blake3-wasm": "2.1.5", + "esbuild": "0.27.3", + "miniflare": "4.20260507.1", + "path-to-regexp": "6.3.0", + "unenv": "2.0.0-rc.24", + "workerd": "1.20260507.1" + }, + "bin": { + "wrangler": "bin/wrangler.js", + "wrangler2": "bin/wrangler.js" + }, + "engines": { + "node": ">=22.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@cloudflare/workers-types": "^4.20260507.1" + }, + "peerDependenciesMeta": { + "@cloudflare/workers-types": { + "optional": true + } + } + }, + "node_modules/wrangler/node_modules/@cloudflare/workerd-darwin-64": { + "version": "1.20260507.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20260507.1.tgz", + "integrity": "sha512-S85aMwcaPJUjKWDiG6iMMnioKWtPLACa6m0j/EhHR1GYfVpnxb974cBc6d25L+sf7jHWHJI2u5hGp0UTJ7MtXQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/wrangler/node_modules/@cloudflare/workerd-darwin-arm64": { + "version": "1.20260507.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20260507.1.tgz", + "integrity": "sha512-GMEBu8Zp9Q97HLnf7bWJN4KjWpN5MxpeqdvHjBGWNl8UYprJI0k+Jkp89+Wh5S8vIon+HoVbDfOzPa7VwgL6Eg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/wrangler/node_modules/@cloudflare/workerd-linux-64": { + "version": "1.20260507.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20260507.1.tgz", + "integrity": "sha512-QlrKEBdgA3uVc0Ok0Q3+0/CW0CTjgj5ySir1i1YY5FXVv0X6GpwtnB5umjunjF2MFprss+L+iFGZzxcSvMC1nA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/wrangler/node_modules/@cloudflare/workerd-linux-arm64": { + "version": "1.20260507.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20260507.1.tgz", + "integrity": "sha512-eGbbupEtK2nh9V9Dhcx3vv3GTKeXqSVNgAEYVCCN0NGS9tl9HbMoHRX/4JL181FKXROMigWBCQVL//qPhsAzBQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/wrangler/node_modules/@cloudflare/workerd-windows-64": { + "version": "1.20260507.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20260507.1.tgz", + "integrity": "sha512-dmClJ/E0BAcuDetQIZFqbeAXejWrG5pysGRMQ6T83Y0IW/7IAamY2zFEkAJ10I5xwZsdHuYsZtzlOxpEXpJs7A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/wrangler/node_modules/miniflare": { + "version": "4.20260507.1", + "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-4.20260507.1.tgz", + "integrity": "sha512-PSXBiLExTdZ4UGO/raKCHQauUpYL7F880ZRB7j0+78Rv8h7TsdN2E/iEDK9sK2Y+SPQ5wJSeAa+rDeVKoZZoEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "0.8.1", + "sharp": "^0.34.5", + "undici": "7.24.8", + "workerd": "1.20260507.1", + "ws": "8.18.0", + "youch": "4.1.0-beta.10" + }, + "bin": { + "miniflare": "bootstrap.js" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/wrangler/node_modules/undici": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.24.8.tgz", + "integrity": "sha512-6KQ/+QxK49Z/p3HO6E5ZCZWNnCasyZLa5ExaVYyvPxUwKtbCPMKELJOqh7EqOle0t9cH/7d2TaaTRRa6Nhs4YQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, + "node_modules/wrangler/node_modules/workerd": { + "version": "1.20260507.1", + "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20260507.1.tgz", + "integrity": "sha512-z7JhsFSe6+X1b5fUHaVpo15VM1IRMJiLofEkq8iKdCo+Veqc+FUg5lIsuz8NwePxuSKrXtO4ZQpGkQLbPVXFhg==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "bin": { + "workerd": "bin/workerd" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "@cloudflare/workerd-darwin-64": "1.20260507.1", + "@cloudflare/workerd-darwin-arm64": "1.20260507.1", + "@cloudflare/workerd-linux-64": "1.20260507.1", + "@cloudflare/workerd-linux-arm64": "1.20260507.1", + "@cloudflare/workerd-windows-64": "1.20260507.1" + } + }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/youch": { + "version": "4.1.0-beta.10", + "resolved": "https://registry.npmjs.org/youch/-/youch-4.1.0-beta.10.tgz", + "integrity": "sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@poppinss/colors": "^4.1.5", + "@poppinss/dumper": "^0.6.4", + "@speed-highlight/core": "^1.2.7", + "cookie": "^1.0.2", + "youch-core": "^0.3.3" + } + }, + "node_modules/youch-core": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/youch-core/-/youch-core-0.3.3.tgz", + "integrity": "sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@poppinss/exception": "^1.2.2", + "error-stack-parser-es": "^1.0.5" + } + } + } +} diff --git a/cloudflare-worker/edge-api/package.json b/cloudflare-worker/edge-api/package.json new file mode 100644 index 0000000000..4452b7a7f3 --- /dev/null +++ b/cloudflare-worker/edge-api/package.json @@ -0,0 +1,19 @@ +{ + "name": "edge-api", + "version": "0.0.0", + "private": true, + "scripts": { + "deploy": "wrangler deploy", + "dev": "wrangler dev", + "start": "wrangler dev", + "test": "vitest", + "cf-typegen": "wrangler types" + }, + "devDependencies": { + "@cloudflare/vitest-pool-workers": "^0.12.4", + "@types/node": "^25.6.2", + "typescript": "^5.5.2", + "vitest": "~3.2.0", + "wrangler": "^4.90.0" + } +} \ No newline at end of file diff --git a/cloudflare-worker/edge-api/src/index.ts b/cloudflare-worker/edge-api/src/index.ts new file mode 100644 index 0000000000..10a1d404b7 --- /dev/null +++ b/cloudflare-worker/edge-api/src/index.ts @@ -0,0 +1,42 @@ +/** + * Welcome to Cloudflare Workers! This is your first worker. + * + * - Run `npm run dev` in your terminal to start a development server + * - Open a browser tab at http://localhost:8787/ to see your worker in action + * - Run `npm run deploy` to publish your worker + * + * Bind resources to your worker in `wrangler.jsonc`. After adding bindings, a type definition for the + * `Env` object can be regenerated with `npm run cf-typegen`. + * + * Learn more at https://developers.cloudflare.com/workers/ + */ + +export interface Env { + KV: KVNamespace; + APP_NAME: "lab17"; +} + +export default { + async fetch(request: Request, env: Env): Promise { + const url = new URL(request.url); + + if (url.pathname === "/health") { + return Response.json({ status: "ok" }); + } + + if (url.pathname === "/") { + return Response.json({ + app: env.APP_NAME, + message: "Hello from Cloudflare Workers", + timestamp: new Date().toISOString(), + }); + } + + if (url.pathname === "/counter") { + env. + } + + return new Response("Not Found", { status: 404 }); + }, +}; + diff --git a/cloudflare-worker/edge-api/tsconfig.json b/cloudflare-worker/edge-api/tsconfig.json new file mode 100644 index 0000000000..8c98cdbece --- /dev/null +++ b/cloudflare-worker/edge-api/tsconfig.json @@ -0,0 +1,46 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + "target": "es2024", + /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + "lib": ["es2024"], + /* Specify what JSX code is generated. */ + "jsx": "react-jsx", + + /* Specify what module code is generated. */ + "module": "es2022", + /* Specify how TypeScript looks up a file from a given module specifier. */ + "moduleResolution": "Bundler", + /* Enable importing .json files */ + "resolveJsonModule": true, + + /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ + "allowJs": true, + /* Enable error reporting in type-checked JavaScript files. */ + "checkJs": false, + + /* Disable emitting files from a compilation. */ + "noEmit": true, + + /* Ensure that each file can be safely transpiled without relying on other imports. */ + "isolatedModules": true, + /* Allow 'import x from y' when a module doesn't have a default export. */ + "allowSyntheticDefaultImports": true, + /* Ensure that casing is correct in imports. */ + "forceConsistentCasingInFileNames": true, + + /* Enable all strict type-checking options. */ + "strict": true, + + /* Skip type checking all .d.ts files. */ + "skipLibCheck": true, + "types": [ + "./worker-configuration.d.ts", + "node" + ] + }, + "exclude": ["test"], + "include": ["worker-configuration.d.ts", "src/**/*.ts"] +} diff --git a/cloudflare-worker/edge-api/vitest.config.mts b/cloudflare-worker/edge-api/vitest.config.mts new file mode 100644 index 0000000000..7ccad75efa --- /dev/null +++ b/cloudflare-worker/edge-api/vitest.config.mts @@ -0,0 +1,11 @@ +import { defineWorkersConfig } from "@cloudflare/vitest-pool-workers/config"; + +export default defineWorkersConfig({ + test: { + poolOptions: { + workers: { + wrangler: { configPath: "./wrangler.jsonc" }, + }, + }, + }, +}); diff --git a/cloudflare-worker/edge-api/worker-configuration.d.ts b/cloudflare-worker/edge-api/worker-configuration.d.ts new file mode 100644 index 0000000000..0309012e66 --- /dev/null +++ b/cloudflare-worker/edge-api/worker-configuration.d.ts @@ -0,0 +1,13555 @@ +/* eslint-disable */ +// Generated by Wrangler by running `wrangler types` (hash: b0cc9e5b470bd5a4ec8732cd53726031) +// Runtime types generated with workerd@1.20260507.1 2026-05-09 nodejs_compat +declare namespace Cloudflare { + interface Env { + KV: KVNamespace; + APP_NAME: "lab17"; + } +} +interface Env extends Cloudflare.Env {} +type StringifyValues> = { + [Binding in keyof EnvType]: EnvType[Binding] extends string ? EnvType[Binding] : string; +}; +declare namespace NodeJS { + interface ProcessEnv extends StringifyValues> {} +} + +// Begin runtime types +/*! ***************************************************************************** +Copyright (c) Cloudflare. All rights reserved. +Copyright (c) Microsoft Corporation. All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ +/* eslint-disable */ +// noinspection JSUnusedGlobalSymbols +declare var onmessage: never; +/** + * The **`DOMException`** interface represents an abnormal event (called an **exception**) that occurs as a result of calling a method or accessing a property of a web API. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException) + */ +declare class DOMException extends Error { + constructor(message?: string, name?: string); + /** + * The **`message`** read-only property of the a message or description associated with the given error name. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException/message) + */ + readonly message: string; + /** + * The **`name`** read-only property of the one of the strings associated with an error name. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException/name) + */ + readonly name: string; + /** + * The **`code`** read-only property of the DOMException interface returns one of the legacy error code constants, or `0` if none match. + * @deprecated + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException/code) + */ + readonly code: number; + static readonly INDEX_SIZE_ERR: number; + static readonly DOMSTRING_SIZE_ERR: number; + static readonly HIERARCHY_REQUEST_ERR: number; + static readonly WRONG_DOCUMENT_ERR: number; + static readonly INVALID_CHARACTER_ERR: number; + static readonly NO_DATA_ALLOWED_ERR: number; + static readonly NO_MODIFICATION_ALLOWED_ERR: number; + static readonly NOT_FOUND_ERR: number; + static readonly NOT_SUPPORTED_ERR: number; + static readonly INUSE_ATTRIBUTE_ERR: number; + static readonly INVALID_STATE_ERR: number; + static readonly SYNTAX_ERR: number; + static readonly INVALID_MODIFICATION_ERR: number; + static readonly NAMESPACE_ERR: number; + static readonly INVALID_ACCESS_ERR: number; + static readonly VALIDATION_ERR: number; + static readonly TYPE_MISMATCH_ERR: number; + static readonly SECURITY_ERR: number; + static readonly NETWORK_ERR: number; + static readonly ABORT_ERR: number; + static readonly URL_MISMATCH_ERR: number; + static readonly QUOTA_EXCEEDED_ERR: number; + static readonly TIMEOUT_ERR: number; + static readonly INVALID_NODE_TYPE_ERR: number; + static readonly DATA_CLONE_ERR: number; + get stack(): any; + set stack(value: any); +} +type WorkerGlobalScopeEventMap = { + fetch: FetchEvent; + scheduled: ScheduledEvent; + queue: QueueEvent; + unhandledrejection: PromiseRejectionEvent; + rejectionhandled: PromiseRejectionEvent; +}; +declare abstract class WorkerGlobalScope extends EventTarget { + EventTarget: typeof EventTarget; +} +/* The **`console`** object provides access to the debugging console (e.g., the Web console in Firefox). * + * The **`console`** object provides access to the debugging console (e.g., the Web console in Firefox). + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console) + */ +interface Console { + "assert"(condition?: boolean, ...data: any[]): void; + /** + * The **`console.clear()`** static method clears the console if possible. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/clear_static) + */ + clear(): void; + /** + * The **`console.count()`** static method logs the number of times that this particular call to `count()` has been called. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/count_static) + */ + count(label?: string): void; + /** + * The **`console.countReset()`** static method resets counter used with console/count_static. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/countReset_static) + */ + countReset(label?: string): void; + /** + * The **`console.debug()`** static method outputs a message to the console at the 'debug' log level. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/debug_static) + */ + debug(...data: any[]): void; + /** + * The **`console.dir()`** static method displays a list of the properties of the specified JavaScript object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/dir_static) + */ + dir(item?: any, options?: any): void; + /** + * The **`console.dirxml()`** static method displays an interactive tree of the descendant elements of the specified XML/HTML element. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/dirxml_static) + */ + dirxml(...data: any[]): void; + /** + * The **`console.error()`** static method outputs a message to the console at the 'error' log level. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/error_static) + */ + error(...data: any[]): void; + /** + * The **`console.group()`** static method creates a new inline group in the Web console log, causing any subsequent console messages to be indented by an additional level, until console/groupEnd_static is called. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/group_static) + */ + group(...data: any[]): void; + /** + * The **`console.groupCollapsed()`** static method creates a new inline group in the console. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/groupCollapsed_static) + */ + groupCollapsed(...data: any[]): void; + /** + * The **`console.groupEnd()`** static method exits the current inline group in the console. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/groupEnd_static) + */ + groupEnd(): void; + /** + * The **`console.info()`** static method outputs a message to the console at the 'info' log level. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/info_static) + */ + info(...data: any[]): void; + /** + * The **`console.log()`** static method outputs a message to the console. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/log_static) + */ + log(...data: any[]): void; + /** + * The **`console.table()`** static method displays tabular data as a table. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/table_static) + */ + table(tabularData?: any, properties?: string[]): void; + /** + * The **`console.time()`** static method starts a timer you can use to track how long an operation takes. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/time_static) + */ + time(label?: string): void; + /** + * The **`console.timeEnd()`** static method stops a timer that was previously started by calling console/time_static. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/timeEnd_static) + */ + timeEnd(label?: string): void; + /** + * The **`console.timeLog()`** static method logs the current value of a timer that was previously started by calling console/time_static. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/timeLog_static) + */ + timeLog(label?: string, ...data: any[]): void; + timeStamp(label?: string): void; + /** + * The **`console.trace()`** static method outputs a stack trace to the console. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/trace_static) + */ + trace(...data: any[]): void; + /** + * The **`console.warn()`** static method outputs a warning message to the console at the 'warning' log level. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/warn_static) + */ + warn(...data: any[]): void; +} +declare const console: Console; +type BufferSource = ArrayBufferView | ArrayBuffer; +type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array; +declare namespace WebAssembly { + class CompileError extends Error { + constructor(message?: string); + } + class RuntimeError extends Error { + constructor(message?: string); + } + type ValueType = "anyfunc" | "externref" | "f32" | "f64" | "i32" | "i64" | "v128"; + interface GlobalDescriptor { + value: ValueType; + mutable?: boolean; + } + class Global { + constructor(descriptor: GlobalDescriptor, value?: any); + value: any; + valueOf(): any; + } + type ImportValue = ExportValue | number; + type ModuleImports = Record; + type Imports = Record; + type ExportValue = Function | Global | Memory | Table; + type Exports = Record; + class Instance { + constructor(module: Module, imports?: Imports); + readonly exports: Exports; + } + interface MemoryDescriptor { + initial: number; + maximum?: number; + shared?: boolean; + } + class Memory { + constructor(descriptor: MemoryDescriptor); + readonly buffer: ArrayBuffer; + grow(delta: number): number; + } + type ImportExportKind = "function" | "global" | "memory" | "table"; + interface ModuleExportDescriptor { + kind: ImportExportKind; + name: string; + } + interface ModuleImportDescriptor { + kind: ImportExportKind; + module: string; + name: string; + } + abstract class Module { + static customSections(module: Module, sectionName: string): ArrayBuffer[]; + static exports(module: Module): ModuleExportDescriptor[]; + static imports(module: Module): ModuleImportDescriptor[]; + } + type TableKind = "anyfunc" | "externref"; + interface TableDescriptor { + element: TableKind; + initial: number; + maximum?: number; + } + class Table { + constructor(descriptor: TableDescriptor, value?: any); + readonly length: number; + get(index: number): any; + grow(delta: number, value?: any): number; + set(index: number, value?: any): void; + } + function instantiate(module: Module, imports?: Imports): Promise; + function validate(bytes: BufferSource): boolean; +} +/** + * The **`ServiceWorkerGlobalScope`** interface of the Service Worker API represents the global execution context of a service worker. + * Available only in secure contexts. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ServiceWorkerGlobalScope) + */ +interface ServiceWorkerGlobalScope extends WorkerGlobalScope { + DOMException: typeof DOMException; + WorkerGlobalScope: typeof WorkerGlobalScope; + btoa(data: string): string; + atob(data: string): string; + setTimeout(callback: (...args: any[]) => void, msDelay?: number): number; + setTimeout(callback: (...args: Args) => void, msDelay?: number, ...args: Args): number; + clearTimeout(timeoutId: number | null): void; + setInterval(callback: (...args: any[]) => void, msDelay?: number): number; + setInterval(callback: (...args: Args) => void, msDelay?: number, ...args: Args): number; + clearInterval(timeoutId: number | null): void; + queueMicrotask(task: Function): void; + structuredClone(value: T, options?: StructuredSerializeOptions): T; + reportError(error: any): void; + fetch(input: RequestInfo | URL, init?: RequestInit): Promise; + self: ServiceWorkerGlobalScope; + crypto: Crypto; + caches: CacheStorage; + scheduler: Scheduler; + performance: Performance; + Cloudflare: Cloudflare; + readonly origin: string; + Event: typeof Event; + ExtendableEvent: typeof ExtendableEvent; + CustomEvent: typeof CustomEvent; + PromiseRejectionEvent: typeof PromiseRejectionEvent; + FetchEvent: typeof FetchEvent; + TailEvent: typeof TailEvent; + TraceEvent: typeof TailEvent; + ScheduledEvent: typeof ScheduledEvent; + MessageEvent: typeof MessageEvent; + CloseEvent: typeof CloseEvent; + ReadableStreamDefaultReader: typeof ReadableStreamDefaultReader; + ReadableStreamBYOBReader: typeof ReadableStreamBYOBReader; + ReadableStream: typeof ReadableStream; + WritableStream: typeof WritableStream; + WritableStreamDefaultWriter: typeof WritableStreamDefaultWriter; + TransformStream: typeof TransformStream; + ByteLengthQueuingStrategy: typeof ByteLengthQueuingStrategy; + CountQueuingStrategy: typeof CountQueuingStrategy; + ErrorEvent: typeof ErrorEvent; + MessageChannel: typeof MessageChannel; + MessagePort: typeof MessagePort; + EventSource: typeof EventSource; + ReadableStreamBYOBRequest: typeof ReadableStreamBYOBRequest; + ReadableStreamDefaultController: typeof ReadableStreamDefaultController; + ReadableByteStreamController: typeof ReadableByteStreamController; + WritableStreamDefaultController: typeof WritableStreamDefaultController; + TransformStreamDefaultController: typeof TransformStreamDefaultController; + CompressionStream: typeof CompressionStream; + DecompressionStream: typeof DecompressionStream; + TextEncoderStream: typeof TextEncoderStream; + TextDecoderStream: typeof TextDecoderStream; + Headers: typeof Headers; + Body: typeof Body; + Request: typeof Request; + Response: typeof Response; + WebSocket: typeof WebSocket; + WebSocketPair: typeof WebSocketPair; + WebSocketRequestResponsePair: typeof WebSocketRequestResponsePair; + AbortController: typeof AbortController; + AbortSignal: typeof AbortSignal; + TextDecoder: typeof TextDecoder; + TextEncoder: typeof TextEncoder; + navigator: Navigator; + Navigator: typeof Navigator; + URL: typeof URL; + URLSearchParams: typeof URLSearchParams; + URLPattern: typeof URLPattern; + Blob: typeof Blob; + File: typeof File; + FormData: typeof FormData; + Crypto: typeof Crypto; + SubtleCrypto: typeof SubtleCrypto; + CryptoKey: typeof CryptoKey; + CacheStorage: typeof CacheStorage; + Cache: typeof Cache; + FixedLengthStream: typeof FixedLengthStream; + IdentityTransformStream: typeof IdentityTransformStream; + HTMLRewriter: typeof HTMLRewriter; +} +declare function addEventListener(type: Type, handler: EventListenerOrEventListenerObject, options?: EventTargetAddEventListenerOptions | boolean): void; +declare function removeEventListener(type: Type, handler: EventListenerOrEventListenerObject, options?: EventTargetEventListenerOptions | boolean): void; +/** + * The **`dispatchEvent()`** method of the EventTarget sends an Event to the object, (synchronously) invoking the affected event listeners in the appropriate order. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/dispatchEvent) + */ +declare function dispatchEvent(event: WorkerGlobalScopeEventMap[keyof WorkerGlobalScopeEventMap]): boolean; +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/btoa) */ +declare function btoa(data: string): string; +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/atob) */ +declare function atob(data: string): string; +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/setTimeout) */ +declare function setTimeout(callback: (...args: any[]) => void, msDelay?: number): number; +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/setTimeout) */ +declare function setTimeout(callback: (...args: Args) => void, msDelay?: number, ...args: Args): number; +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/clearTimeout) */ +declare function clearTimeout(timeoutId: number | null): void; +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/setInterval) */ +declare function setInterval(callback: (...args: any[]) => void, msDelay?: number): number; +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/setInterval) */ +declare function setInterval(callback: (...args: Args) => void, msDelay?: number, ...args: Args): number; +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/clearInterval) */ +declare function clearInterval(timeoutId: number | null): void; +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/queueMicrotask) */ +declare function queueMicrotask(task: Function): void; +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/structuredClone) */ +declare function structuredClone(value: T, options?: StructuredSerializeOptions): T; +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/reportError) */ +declare function reportError(error: any): void; +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/fetch) */ +declare function fetch(input: RequestInfo | URL, init?: RequestInit): Promise; +declare const self: ServiceWorkerGlobalScope; +/** +* The Web Crypto API provides a set of low-level functions for common cryptographic tasks. +* The Workers runtime implements the full surface of this API, but with some differences in +* the [supported algorithms](https://developers.cloudflare.com/workers/runtime-apis/web-crypto/#supported-algorithms) +* compared to those implemented in most browsers. +* +* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/web-crypto/) +*/ +declare const crypto: Crypto; +/** +* The Cache API allows fine grained control of reading and writing from the Cloudflare global network cache. +* +* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/) +*/ +declare const caches: CacheStorage; +declare const scheduler: Scheduler; +/** +* The Workers runtime supports a subset of the Performance API, used to measure timing and performance, +* as well as timing of subrequests and other operations. +* +* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/performance/) +*/ +declare const performance: Performance; +declare const Cloudflare: Cloudflare; +declare const origin: string; +declare const navigator: Navigator; +interface TestController { +} +interface ExecutionContext { + waitUntil(promise: Promise): void; + passThroughOnException(): void; + readonly exports: Cloudflare.Exports; + readonly props: Props; + cache?: CacheContext; + tracing?: Tracing; +} +type ExportedHandlerFetchHandler = (request: Request>, env: Env, ctx: ExecutionContext) => Response | Promise; +type ExportedHandlerConnectHandler = (socket: Socket, env: Env, ctx: ExecutionContext) => void | Promise; +type ExportedHandlerTailHandler = (events: TraceItem[], env: Env, ctx: ExecutionContext) => void | Promise; +type ExportedHandlerTraceHandler = (traces: TraceItem[], env: Env, ctx: ExecutionContext) => void | Promise; +type ExportedHandlerTailStreamHandler = (event: TailStream.TailEvent, env: Env, ctx: ExecutionContext) => TailStream.TailEventHandlerType | Promise; +type ExportedHandlerScheduledHandler = (controller: ScheduledController, env: Env, ctx: ExecutionContext) => void | Promise; +type ExportedHandlerQueueHandler = (batch: MessageBatch, env: Env, ctx: ExecutionContext) => void | Promise; +type ExportedHandlerTestHandler = (controller: TestController, env: Env, ctx: ExecutionContext) => void | Promise; +interface ExportedHandler { + fetch?: ExportedHandlerFetchHandler; + connect?: ExportedHandlerConnectHandler; + tail?: ExportedHandlerTailHandler; + trace?: ExportedHandlerTraceHandler; + tailStream?: ExportedHandlerTailStreamHandler; + scheduled?: ExportedHandlerScheduledHandler; + test?: ExportedHandlerTestHandler; + email?: EmailExportedHandler; + queue?: ExportedHandlerQueueHandler; +} +interface StructuredSerializeOptions { + transfer?: any[]; +} +declare abstract class Navigator { + sendBeacon(url: string, body?: BodyInit): boolean; + readonly userAgent: string; + readonly hardwareConcurrency: number; + readonly platform: string; + readonly language: string; + readonly languages: string[]; +} +interface AlarmInvocationInfo { + readonly isRetry: boolean; + readonly retryCount: number; + readonly scheduledTime: number; +} +interface Cloudflare { + readonly compatibilityFlags: Record; +} +interface CachePurgeError { + code: number; + message: string; +} +interface CachePurgeResult { + success: boolean; + errors: CachePurgeError[]; +} +interface CachePurgeOptions { + tags?: string[]; + pathPrefixes?: string[]; + purgeEverything?: boolean; +} +interface CacheContext { + purge(options: CachePurgeOptions): Promise; +} +declare abstract class ColoLocalActorNamespace { + get(actorId: string): Fetcher; +} +interface DurableObject { + fetch(request: Request): Response | Promise; + connect?(socket: Socket): void | Promise; + alarm?(alarmInfo?: AlarmInvocationInfo): void | Promise; + webSocketMessage?(ws: WebSocket, message: string | ArrayBuffer): void | Promise; + webSocketClose?(ws: WebSocket, code: number, reason: string, wasClean: boolean): void | Promise; + webSocketError?(ws: WebSocket, error: unknown): void | Promise; +} +type DurableObjectStub = Fetcher & { + readonly id: DurableObjectId; + readonly name?: string; +}; +interface DurableObjectId { + toString(): string; + equals(other: DurableObjectId): boolean; + readonly name?: string; + readonly jurisdiction?: string; +} +declare abstract class DurableObjectNamespace { + newUniqueId(options?: DurableObjectNamespaceNewUniqueIdOptions): DurableObjectId; + idFromName(name: string): DurableObjectId; + idFromString(id: string): DurableObjectId; + get(id: DurableObjectId, options?: DurableObjectNamespaceGetDurableObjectOptions): DurableObjectStub; + getByName(name: string, options?: DurableObjectNamespaceGetDurableObjectOptions): DurableObjectStub; + jurisdiction(jurisdiction: DurableObjectJurisdiction): DurableObjectNamespace; +} +type DurableObjectJurisdiction = "eu" | "fedramp" | "fedramp-high"; +interface DurableObjectNamespaceNewUniqueIdOptions { + jurisdiction?: DurableObjectJurisdiction; +} +type DurableObjectLocationHint = "wnam" | "enam" | "sam" | "weur" | "eeur" | "apac" | "oc" | "afr" | "me"; +type DurableObjectRoutingMode = "primary-only"; +interface DurableObjectNamespaceGetDurableObjectOptions { + locationHint?: DurableObjectLocationHint; + routingMode?: DurableObjectRoutingMode; +} +interface DurableObjectClass<_T extends Rpc.DurableObjectBranded | undefined = undefined> { +} +interface DurableObjectState { + waitUntil(promise: Promise): void; + readonly exports: Cloudflare.Exports; + readonly props: Props; + readonly id: DurableObjectId; + readonly storage: DurableObjectStorage; + container?: Container; + facets: DurableObjectFacets; + blockConcurrencyWhile(callback: () => Promise): Promise; + acceptWebSocket(ws: WebSocket, tags?: string[]): void; + getWebSockets(tag?: string): WebSocket[]; + setWebSocketAutoResponse(maybeReqResp?: WebSocketRequestResponsePair): void; + getWebSocketAutoResponse(): WebSocketRequestResponsePair | null; + getWebSocketAutoResponseTimestamp(ws: WebSocket): Date | null; + setHibernatableWebSocketEventTimeout(timeoutMs?: number): void; + getHibernatableWebSocketEventTimeout(): number | null; + getTags(ws: WebSocket): string[]; + abort(reason?: string): void; +} +interface DurableObjectTransaction { + get(key: string, options?: DurableObjectGetOptions): Promise; + get(keys: string[], options?: DurableObjectGetOptions): Promise>; + list(options?: DurableObjectListOptions): Promise>; + put(key: string, value: T, options?: DurableObjectPutOptions): Promise; + put(entries: Record, options?: DurableObjectPutOptions): Promise; + delete(key: string, options?: DurableObjectPutOptions): Promise; + delete(keys: string[], options?: DurableObjectPutOptions): Promise; + rollback(): void; + getAlarm(options?: DurableObjectGetAlarmOptions): Promise; + setAlarm(scheduledTime: number | Date, options?: DurableObjectSetAlarmOptions): Promise; + deleteAlarm(options?: DurableObjectSetAlarmOptions): Promise; +} +interface DurableObjectStorage { + get(key: string, options?: DurableObjectGetOptions): Promise; + get(keys: string[], options?: DurableObjectGetOptions): Promise>; + list(options?: DurableObjectListOptions): Promise>; + put(key: string, value: T, options?: DurableObjectPutOptions): Promise; + put(entries: Record, options?: DurableObjectPutOptions): Promise; + delete(key: string, options?: DurableObjectPutOptions): Promise; + delete(keys: string[], options?: DurableObjectPutOptions): Promise; + deleteAll(options?: DurableObjectPutOptions): Promise; + transaction(closure: (txn: DurableObjectTransaction) => Promise): Promise; + getAlarm(options?: DurableObjectGetAlarmOptions): Promise; + setAlarm(scheduledTime: number | Date, options?: DurableObjectSetAlarmOptions): Promise; + deleteAlarm(options?: DurableObjectSetAlarmOptions): Promise; + sync(): Promise; + sql: SqlStorage; + kv: SyncKvStorage; + transactionSync(closure: () => T): T; + getCurrentBookmark(): Promise; + getBookmarkForTime(timestamp: number | Date): Promise; + onNextSessionRestoreBookmark(bookmark: string): Promise; +} +interface DurableObjectListOptions { + start?: string; + startAfter?: string; + end?: string; + prefix?: string; + reverse?: boolean; + limit?: number; + allowConcurrency?: boolean; + noCache?: boolean; +} +interface DurableObjectGetOptions { + allowConcurrency?: boolean; + noCache?: boolean; +} +interface DurableObjectGetAlarmOptions { + allowConcurrency?: boolean; +} +interface DurableObjectPutOptions { + allowConcurrency?: boolean; + allowUnconfirmed?: boolean; + noCache?: boolean; +} +interface DurableObjectSetAlarmOptions { + allowConcurrency?: boolean; + allowUnconfirmed?: boolean; +} +declare class WebSocketRequestResponsePair { + constructor(request: string, response: string); + get request(): string; + get response(): string; +} +interface DurableObjectFacets { + get(name: string, getStartupOptions: () => FacetStartupOptions | Promise>): Fetcher; + abort(name: string, reason: any): void; + delete(name: string): void; +} +interface FacetStartupOptions { + id?: DurableObjectId | string; + class: DurableObjectClass; +} +interface AnalyticsEngineDataset { + writeDataPoint(event?: AnalyticsEngineDataPoint): void; +} +interface AnalyticsEngineDataPoint { + indexes?: ((ArrayBuffer | string) | null)[]; + doubles?: number[]; + blobs?: ((ArrayBuffer | string) | null)[]; +} +/** + * The **`Event`** interface represents an event which takes place on an `EventTarget`. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event) + */ +declare class Event { + constructor(type: string, init?: EventInit); + /** + * The **`type`** read-only property of the Event interface returns a string containing the event's type. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/type) + */ + get type(): string; + /** + * The **`eventPhase`** read-only property of the being evaluated. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/eventPhase) + */ + get eventPhase(): number; + /** + * The read-only **`composed`** property of the or not the event will propagate across the shadow DOM boundary into the standard DOM. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/composed) + */ + get composed(): boolean; + /** + * The **`bubbles`** read-only property of the Event interface indicates whether the event bubbles up through the DOM tree or not. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/bubbles) + */ + get bubbles(): boolean; + /** + * The **`cancelable`** read-only property of the Event interface indicates whether the event can be canceled, and therefore prevented as if the event never happened. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/cancelable) + */ + get cancelable(): boolean; + /** + * The **`defaultPrevented`** read-only property of the Event interface returns a boolean value indicating whether or not the call to Event.preventDefault() canceled the event. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/defaultPrevented) + */ + get defaultPrevented(): boolean; + /** + * The Event property **`returnValue`** indicates whether the default action for this event has been prevented or not. + * @deprecated + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/returnValue) + */ + get returnValue(): boolean; + /** + * The **`currentTarget`** read-only property of the Event interface identifies the element to which the event handler has been attached. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/currentTarget) + */ + get currentTarget(): EventTarget | undefined; + /** + * The read-only **`target`** property of the dispatched. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/target) + */ + get target(): EventTarget | undefined; + /** + * The deprecated **`Event.srcElement`** is an alias for the Event.target property. + * @deprecated + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/srcElement) + */ + get srcElement(): EventTarget | undefined; + /** + * The **`timeStamp`** read-only property of the Event interface returns the time (in milliseconds) at which the event was created. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/timeStamp) + */ + get timeStamp(): number; + /** + * The **`isTrusted`** read-only property of the when the event was generated by the user agent (including via user actions and programmatic methods such as HTMLElement.focus()), and `false` when the event was dispatched via The only exception is the `click` event, which initializes the `isTrusted` property to `false` in user agents. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/isTrusted) + */ + get isTrusted(): boolean; + /** + * The **`cancelBubble`** property of the Event interface is deprecated. + * @deprecated + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/cancelBubble) + */ + get cancelBubble(): boolean; + /** + * The **`cancelBubble`** property of the Event interface is deprecated. + * @deprecated + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/cancelBubble) + */ + set cancelBubble(value: boolean); + /** + * The **`stopImmediatePropagation()`** method of the If several listeners are attached to the same element for the same event type, they are called in the order in which they were added. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/stopImmediatePropagation) + */ + stopImmediatePropagation(): void; + /** + * The **`preventDefault()`** method of the Event interface tells the user agent that if the event does not get explicitly handled, its default action should not be taken as it normally would be. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/preventDefault) + */ + preventDefault(): void; + /** + * The **`stopPropagation()`** method of the Event interface prevents further propagation of the current event in the capturing and bubbling phases. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/stopPropagation) + */ + stopPropagation(): void; + /** + * The **`composedPath()`** method of the Event interface returns the event's path which is an array of the objects on which listeners will be invoked. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/composedPath) + */ + composedPath(): EventTarget[]; + static readonly NONE: number; + static readonly CAPTURING_PHASE: number; + static readonly AT_TARGET: number; + static readonly BUBBLING_PHASE: number; +} +interface EventInit { + bubbles?: boolean; + cancelable?: boolean; + composed?: boolean; +} +type EventListener = (event: EventType) => void; +interface EventListenerObject { + handleEvent(event: EventType): void; +} +type EventListenerOrEventListenerObject = EventListener | EventListenerObject; +/** + * The **`EventTarget`** interface is implemented by objects that can receive events and may have listeners for them. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget) + */ +declare class EventTarget = Record> { + constructor(); + /** + * The **`addEventListener()`** method of the EventTarget interface sets up a function that will be called whenever the specified event is delivered to the target. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/addEventListener) + */ + addEventListener(type: Type, handler: EventListenerOrEventListenerObject, options?: EventTargetAddEventListenerOptions | boolean): void; + /** + * The **`removeEventListener()`** method of the EventTarget interface removes an event listener previously registered with EventTarget.addEventListener() from the target. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/removeEventListener) + */ + removeEventListener(type: Type, handler: EventListenerOrEventListenerObject, options?: EventTargetEventListenerOptions | boolean): void; + /** + * The **`dispatchEvent()`** method of the EventTarget sends an Event to the object, (synchronously) invoking the affected event listeners in the appropriate order. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/dispatchEvent) + */ + dispatchEvent(event: EventMap[keyof EventMap]): boolean; +} +interface EventTargetEventListenerOptions { + capture?: boolean; +} +interface EventTargetAddEventListenerOptions { + capture?: boolean; + passive?: boolean; + once?: boolean; + signal?: AbortSignal; +} +interface EventTargetHandlerObject { + handleEvent: (event: Event) => any | undefined; +} +/** + * The **`AbortController`** interface represents a controller object that allows you to abort one or more Web requests as and when desired. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortController) + */ +declare class AbortController { + constructor(); + /** + * The **`signal`** read-only property of the AbortController interface returns an AbortSignal object instance, which can be used to communicate with/abort an asynchronous operation as desired. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortController/signal) + */ + get signal(): AbortSignal; + /** + * The **`abort()`** method of the AbortController interface aborts an asynchronous operation before it has completed. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortController/abort) + */ + abort(reason?: any): void; +} +/** + * The **`AbortSignal`** interface represents a signal object that allows you to communicate with an asynchronous operation (such as a fetch request) and abort it if required via an AbortController object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal) + */ +declare abstract class AbortSignal extends EventTarget { + /** + * The **`AbortSignal.abort()`** static method returns an AbortSignal that is already set as aborted (and which does not trigger an AbortSignal/abort_event event). + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/abort_static) + */ + static abort(reason?: any): AbortSignal; + /** + * The **`AbortSignal.timeout()`** static method returns an AbortSignal that will automatically abort after a specified time. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/timeout_static) + */ + static timeout(delay: number): AbortSignal; + /** + * The **`AbortSignal.any()`** static method takes an iterable of abort signals and returns an AbortSignal. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/any_static) + */ + static any(signals: AbortSignal[]): AbortSignal; + /** + * The **`aborted`** read-only property returns a value that indicates whether the asynchronous operations the signal is communicating with are aborted (`true`) or not (`false`). + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/aborted) + */ + get aborted(): boolean; + /** + * The **`reason`** read-only property returns a JavaScript value that indicates the abort reason. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/reason) + */ + get reason(): any; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/abort_event) */ + get onabort(): any | null; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/abort_event) */ + set onabort(value: any | null); + /** + * The **`throwIfAborted()`** method throws the signal's abort AbortSignal.reason if the signal has been aborted; otherwise it does nothing. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/throwIfAborted) + */ + throwIfAborted(): void; +} +interface Scheduler { + wait(delay: number, maybeOptions?: SchedulerWaitOptions): Promise; +} +interface SchedulerWaitOptions { + signal?: AbortSignal; +} +/** + * The **`ExtendableEvent`** interface extends the lifetime of the `install` and `activate` events dispatched on the global scope as part of the service worker lifecycle. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ExtendableEvent) + */ +declare abstract class ExtendableEvent extends Event { + /** + * The **`ExtendableEvent.waitUntil()`** method tells the event dispatcher that work is ongoing. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ExtendableEvent/waitUntil) + */ + waitUntil(promise: Promise): void; +} +/** + * The **`CustomEvent`** interface represents events initialized by an application for any purpose. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CustomEvent) + */ +declare class CustomEvent extends Event { + constructor(type: string, init?: CustomEventCustomEventInit); + /** + * The read-only **`detail`** property of the CustomEvent interface returns any data passed when initializing the event. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CustomEvent/detail) + */ + get detail(): T; +} +interface CustomEventCustomEventInit { + bubbles?: boolean; + cancelable?: boolean; + composed?: boolean; + detail?: any; +} +/** + * The **`Blob`** interface represents a blob, which is a file-like object of immutable, raw data; they can be read as text or binary data, or converted into a ReadableStream so its methods can be used for processing the data. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob) + */ +declare class Blob { + constructor(bits?: ((ArrayBuffer | ArrayBufferView) | string | Blob)[], options?: BlobOptions); + /** + * The **`size`** read-only property of the Blob interface returns the size of the Blob or File in bytes. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/size) + */ + get size(): number; + /** + * The **`type`** read-only property of the Blob interface returns the MIME type of the file. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/type) + */ + get type(): string; + /** + * The **`slice()`** method of the Blob interface creates and returns a new `Blob` object which contains data from a subset of the blob on which it's called. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/slice) + */ + slice(start?: number, end?: number, type?: string): Blob; + /** + * The **`arrayBuffer()`** method of the Blob interface returns a Promise that resolves with the contents of the blob as binary data contained in an ArrayBuffer. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/arrayBuffer) + */ + arrayBuffer(): Promise; + /** + * The **`bytes()`** method of the Blob interface returns a Promise that resolves with a Uint8Array containing the contents of the blob as an array of bytes. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/bytes) + */ + bytes(): Promise; + /** + * The **`text()`** method of the string containing the contents of the blob, interpreted as UTF-8. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/text) + */ + text(): Promise; + /** + * The **`stream()`** method of the Blob interface returns a ReadableStream which upon reading returns the data contained within the `Blob`. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/stream) + */ + stream(): ReadableStream; +} +interface BlobOptions { + type?: string; +} +/** + * The **`File`** interface provides information about files and allows JavaScript in a web page to access their content. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/File) + */ +declare class File extends Blob { + constructor(bits: ((ArrayBuffer | ArrayBufferView) | string | Blob)[] | undefined, name: string, options?: FileOptions); + /** + * The **`name`** read-only property of the File interface returns the name of the file represented by a File object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/File/name) + */ + get name(): string; + /** + * The **`lastModified`** read-only property of the File interface provides the last modified date of the file as the number of milliseconds since the Unix epoch (January 1, 1970 at midnight). + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/File/lastModified) + */ + get lastModified(): number; +} +interface FileOptions { + type?: string; + lastModified?: number; +} +/** +* The Cache API allows fine grained control of reading and writing from the Cloudflare global network cache. +* +* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/) +*/ +declare abstract class CacheStorage { + /** + * The **`open()`** method of the the Cache object matching the `cacheName`. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CacheStorage/open) + */ + open(cacheName: string): Promise; + readonly default: Cache; +} +/** +* The Cache API allows fine grained control of reading and writing from the Cloudflare global network cache. +* +* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/) +*/ +declare abstract class Cache { + /* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/#delete) */ + delete(request: RequestInfo | URL, options?: CacheQueryOptions): Promise; + /* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/#match) */ + match(request: RequestInfo | URL, options?: CacheQueryOptions): Promise; + /* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/#put) */ + put(request: RequestInfo | URL, response: Response): Promise; +} +interface CacheQueryOptions { + ignoreMethod?: boolean; +} +/** +* The Web Crypto API provides a set of low-level functions for common cryptographic tasks. +* The Workers runtime implements the full surface of this API, but with some differences in +* the [supported algorithms](https://developers.cloudflare.com/workers/runtime-apis/web-crypto/#supported-algorithms) +* compared to those implemented in most browsers. +* +* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/web-crypto/) +*/ +declare abstract class Crypto { + /** + * The **`Crypto.subtle`** read-only property returns a cryptographic operations. + * Available only in secure contexts. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Crypto/subtle) + */ + get subtle(): SubtleCrypto; + /** + * The **`Crypto.getRandomValues()`** method lets you get cryptographically strong random values. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Crypto/getRandomValues) + */ + getRandomValues(buffer: T): T; + /** + * The **`randomUUID()`** method of the Crypto interface is used to generate a v4 UUID using a cryptographically secure random number generator. + * Available only in secure contexts. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Crypto/randomUUID) + */ + randomUUID(): string; + DigestStream: typeof DigestStream; +} +/** + * The **`SubtleCrypto`** interface of the Web Crypto API provides a number of low-level cryptographic functions. + * Available only in secure contexts. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto) + */ +declare abstract class SubtleCrypto { + /** + * The **`encrypt()`** method of the SubtleCrypto interface encrypts data. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/encrypt) + */ + encrypt(algorithm: string | SubtleCryptoEncryptAlgorithm, key: CryptoKey, plainText: ArrayBuffer | ArrayBufferView): Promise; + /** + * The **`decrypt()`** method of the SubtleCrypto interface decrypts some encrypted data. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/decrypt) + */ + decrypt(algorithm: string | SubtleCryptoEncryptAlgorithm, key: CryptoKey, cipherText: ArrayBuffer | ArrayBufferView): Promise; + /** + * The **`sign()`** method of the SubtleCrypto interface generates a digital signature. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/sign) + */ + sign(algorithm: string | SubtleCryptoSignAlgorithm, key: CryptoKey, data: ArrayBuffer | ArrayBufferView): Promise; + /** + * The **`verify()`** method of the SubtleCrypto interface verifies a digital signature. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/verify) + */ + verify(algorithm: string | SubtleCryptoSignAlgorithm, key: CryptoKey, signature: ArrayBuffer | ArrayBufferView, data: ArrayBuffer | ArrayBufferView): Promise; + /** + * The **`digest()`** method of the SubtleCrypto interface generates a _digest_ of the given data, using the specified hash function. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/digest) + */ + digest(algorithm: string | SubtleCryptoHashAlgorithm, data: ArrayBuffer | ArrayBufferView): Promise; + /** + * The **`generateKey()`** method of the SubtleCrypto interface is used to generate a new key (for symmetric algorithms) or key pair (for public-key algorithms). + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/generateKey) + */ + generateKey(algorithm: string | SubtleCryptoGenerateKeyAlgorithm, extractable: boolean, keyUsages: string[]): Promise; + /** + * The **`deriveKey()`** method of the SubtleCrypto interface can be used to derive a secret key from a master key. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/deriveKey) + */ + deriveKey(algorithm: string | SubtleCryptoDeriveKeyAlgorithm, baseKey: CryptoKey, derivedKeyAlgorithm: string | SubtleCryptoImportKeyAlgorithm, extractable: boolean, keyUsages: string[]): Promise; + /** + * The **`deriveBits()`** method of the key. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/deriveBits) + */ + deriveBits(algorithm: string | SubtleCryptoDeriveKeyAlgorithm, baseKey: CryptoKey, length?: number | null): Promise; + /** + * The **`importKey()`** method of the SubtleCrypto interface imports a key: that is, it takes as input a key in an external, portable format and gives you a CryptoKey object that you can use in the Web Crypto API. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/importKey) + */ + importKey(format: string, keyData: (ArrayBuffer | ArrayBufferView) | JsonWebKey, algorithm: string | SubtleCryptoImportKeyAlgorithm, extractable: boolean, keyUsages: string[]): Promise; + /** + * The **`exportKey()`** method of the SubtleCrypto interface exports a key: that is, it takes as input a CryptoKey object and gives you the key in an external, portable format. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/exportKey) + */ + exportKey(format: string, key: CryptoKey): Promise; + /** + * The **`wrapKey()`** method of the SubtleCrypto interface 'wraps' a key. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/wrapKey) + */ + wrapKey(format: string, key: CryptoKey, wrappingKey: CryptoKey, wrapAlgorithm: string | SubtleCryptoEncryptAlgorithm): Promise; + /** + * The **`unwrapKey()`** method of the SubtleCrypto interface 'unwraps' a key. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/unwrapKey) + */ + unwrapKey(format: string, wrappedKey: ArrayBuffer | ArrayBufferView, unwrappingKey: CryptoKey, unwrapAlgorithm: string | SubtleCryptoEncryptAlgorithm, unwrappedKeyAlgorithm: string | SubtleCryptoImportKeyAlgorithm, extractable: boolean, keyUsages: string[]): Promise; + timingSafeEqual(a: ArrayBuffer | ArrayBufferView, b: ArrayBuffer | ArrayBufferView): boolean; +} +/** + * The **`CryptoKey`** interface of the Web Crypto API represents a cryptographic key obtained from one of the SubtleCrypto methods SubtleCrypto.generateKey, SubtleCrypto.deriveKey, SubtleCrypto.importKey, or SubtleCrypto.unwrapKey. + * Available only in secure contexts. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey) + */ +declare abstract class CryptoKey { + /** + * The read-only **`type`** property of the CryptoKey interface indicates which kind of key is represented by the object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/type) + */ + readonly type: string; + /** + * The read-only **`extractable`** property of the CryptoKey interface indicates whether or not the key may be extracted using `SubtleCrypto.exportKey()` or `SubtleCrypto.wrapKey()`. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/extractable) + */ + readonly extractable: boolean; + /** + * The read-only **`algorithm`** property of the CryptoKey interface returns an object describing the algorithm for which this key can be used, and any associated extra parameters. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/algorithm) + */ + readonly algorithm: CryptoKeyKeyAlgorithm | CryptoKeyAesKeyAlgorithm | CryptoKeyHmacKeyAlgorithm | CryptoKeyRsaKeyAlgorithm | CryptoKeyEllipticKeyAlgorithm | CryptoKeyArbitraryKeyAlgorithm; + /** + * The read-only **`usages`** property of the CryptoKey interface indicates what can be done with the key. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/usages) + */ + readonly usages: string[]; +} +interface CryptoKeyPair { + publicKey: CryptoKey; + privateKey: CryptoKey; +} +interface JsonWebKey { + kty: string; + use?: string; + key_ops?: string[]; + alg?: string; + ext?: boolean; + crv?: string; + x?: string; + y?: string; + d?: string; + n?: string; + e?: string; + p?: string; + q?: string; + dp?: string; + dq?: string; + qi?: string; + oth?: RsaOtherPrimesInfo[]; + k?: string; +} +interface RsaOtherPrimesInfo { + r?: string; + d?: string; + t?: string; +} +interface SubtleCryptoDeriveKeyAlgorithm { + name: string; + salt?: (ArrayBuffer | ArrayBufferView); + iterations?: number; + hash?: (string | SubtleCryptoHashAlgorithm); + $public?: CryptoKey; + info?: (ArrayBuffer | ArrayBufferView); +} +interface SubtleCryptoEncryptAlgorithm { + name: string; + iv?: (ArrayBuffer | ArrayBufferView); + additionalData?: (ArrayBuffer | ArrayBufferView); + tagLength?: number; + counter?: (ArrayBuffer | ArrayBufferView); + length?: number; + label?: (ArrayBuffer | ArrayBufferView); +} +interface SubtleCryptoGenerateKeyAlgorithm { + name: string; + hash?: (string | SubtleCryptoHashAlgorithm); + modulusLength?: number; + publicExponent?: (ArrayBuffer | ArrayBufferView); + length?: number; + namedCurve?: string; +} +interface SubtleCryptoHashAlgorithm { + name: string; +} +interface SubtleCryptoImportKeyAlgorithm { + name: string; + hash?: (string | SubtleCryptoHashAlgorithm); + length?: number; + namedCurve?: string; + compressed?: boolean; +} +interface SubtleCryptoSignAlgorithm { + name: string; + hash?: (string | SubtleCryptoHashAlgorithm); + dataLength?: number; + saltLength?: number; +} +interface CryptoKeyKeyAlgorithm { + name: string; +} +interface CryptoKeyAesKeyAlgorithm { + name: string; + length: number; +} +interface CryptoKeyHmacKeyAlgorithm { + name: string; + hash: CryptoKeyKeyAlgorithm; + length: number; +} +interface CryptoKeyRsaKeyAlgorithm { + name: string; + modulusLength: number; + publicExponent: ArrayBuffer | ArrayBufferView; + hash?: CryptoKeyKeyAlgorithm; +} +interface CryptoKeyEllipticKeyAlgorithm { + name: string; + namedCurve: string; +} +interface CryptoKeyArbitraryKeyAlgorithm { + name: string; + hash?: CryptoKeyKeyAlgorithm; + namedCurve?: string; + length?: number; +} +declare class DigestStream extends WritableStream { + constructor(algorithm: string | SubtleCryptoHashAlgorithm); + readonly digest: Promise; + get bytesWritten(): number | bigint; +} +/** + * The **`TextDecoder`** interface represents a decoder for a specific text encoding, such as `UTF-8`, `ISO-8859-2`, `KOI8-R`, `GBK`, etc. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextDecoder) + */ +declare class TextDecoder { + constructor(label?: string, options?: TextDecoderConstructorOptions); + /** + * The **`TextDecoder.decode()`** method returns a string containing text decoded from the buffer passed as a parameter. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextDecoder/decode) + */ + decode(input?: (ArrayBuffer | ArrayBufferView), options?: TextDecoderDecodeOptions): string; + get encoding(): string; + get fatal(): boolean; + get ignoreBOM(): boolean; +} +/** + * The **`TextEncoder`** interface takes a stream of code points as input and emits a stream of UTF-8 bytes. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextEncoder) + */ +declare class TextEncoder { + constructor(); + /** + * The **`TextEncoder.encode()`** method takes a string as input, and returns a Global_Objects/Uint8Array containing the text given in parameters encoded with the specific method for that TextEncoder object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextEncoder/encode) + */ + encode(input?: string): Uint8Array; + /** + * The **`TextEncoder.encodeInto()`** method takes a string to encode and a destination Uint8Array to put resulting UTF-8 encoded text into, and returns a dictionary object indicating the progress of the encoding. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextEncoder/encodeInto) + */ + encodeInto(input: string, buffer: Uint8Array): TextEncoderEncodeIntoResult; + get encoding(): string; +} +interface TextDecoderConstructorOptions { + fatal: boolean; + ignoreBOM: boolean; +} +interface TextDecoderDecodeOptions { + stream: boolean; +} +interface TextEncoderEncodeIntoResult { + read: number; + written: number; +} +/** + * The **`ErrorEvent`** interface represents events providing information related to errors in scripts or in files. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent) + */ +declare class ErrorEvent extends Event { + constructor(type: string, init?: ErrorEventErrorEventInit); + /** + * The **`filename`** read-only property of the ErrorEvent interface returns a string containing the name of the script file in which the error occurred. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent/filename) + */ + get filename(): string; + /** + * The **`message`** read-only property of the ErrorEvent interface returns a string containing a human-readable error message describing the problem. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent/message) + */ + get message(): string; + /** + * The **`lineno`** read-only property of the ErrorEvent interface returns an integer containing the line number of the script file on which the error occurred. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent/lineno) + */ + get lineno(): number; + /** + * The **`colno`** read-only property of the ErrorEvent interface returns an integer containing the column number of the script file on which the error occurred. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent/colno) + */ + get colno(): number; + /** + * The **`error`** read-only property of the ErrorEvent interface returns a JavaScript value, such as an Error or DOMException, representing the error associated with this event. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent/error) + */ + get error(): any; +} +interface ErrorEventErrorEventInit { + message?: string; + filename?: string; + lineno?: number; + colno?: number; + error?: any; +} +/** + * The **`MessageEvent`** interface represents a message received by a target object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageEvent) + */ +declare class MessageEvent extends Event { + constructor(type: string, initializer: MessageEventInit); + /** + * The **`data`** read-only property of the The data sent by the message emitter; this can be any data type, depending on what originated this event. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageEvent/data) + */ + readonly data: any; + /** + * The **`origin`** read-only property of the origin of the message emitter. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageEvent/origin) + */ + readonly origin: string | null; + /** + * The **`lastEventId`** read-only property of the unique ID for the event. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageEvent/lastEventId) + */ + readonly lastEventId: string; + /** + * The **`source`** read-only property of the a WindowProxy, MessagePort, or a `MessageEventSource` (which can be a WindowProxy, message emitter. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageEvent/source) + */ + readonly source: MessagePort | null; + /** + * The **`ports`** read-only property of the containing all MessagePort objects sent with the message, in order. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageEvent/ports) + */ + readonly ports: MessagePort[]; +} +interface MessageEventInit { + data: ArrayBuffer | string; +} +/** + * The **`PromiseRejectionEvent`** interface represents events which are sent to the global script context when JavaScript Promises are rejected. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/PromiseRejectionEvent) + */ +declare abstract class PromiseRejectionEvent extends Event { + /** + * The PromiseRejectionEvent interface's **`promise`** read-only property indicates the JavaScript rejected. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/PromiseRejectionEvent/promise) + */ + readonly promise: Promise; + /** + * The PromiseRejectionEvent **`reason`** read-only property is any JavaScript value or Object which provides the reason passed into Promise.reject(). + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/PromiseRejectionEvent/reason) + */ + readonly reason: any; +} +/** + * The **`FormData`** interface provides a way to construct a set of key/value pairs representing form fields and their values, which can be sent using the Window/fetch, XMLHttpRequest.send() or navigator.sendBeacon() methods. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData) + */ +declare class FormData { + constructor(); + /** + * The **`append()`** method of the FormData interface appends a new value onto an existing key inside a `FormData` object, or adds the key if it does not already exist. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/append) + */ + append(name: string, value: string | Blob): void; + /** + * The **`append()`** method of the FormData interface appends a new value onto an existing key inside a `FormData` object, or adds the key if it does not already exist. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/append) + */ + append(name: string, value: string): void; + /** + * The **`append()`** method of the FormData interface appends a new value onto an existing key inside a `FormData` object, or adds the key if it does not already exist. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/append) + */ + append(name: string, value: Blob, filename?: string): void; + /** + * The **`delete()`** method of the FormData interface deletes a key and its value(s) from a `FormData` object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/delete) + */ + delete(name: string): void; + /** + * The **`get()`** method of the FormData interface returns the first value associated with a given key from within a `FormData` object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/get) + */ + get(name: string): (File | string) | null; + /** + * The **`getAll()`** method of the FormData interface returns all the values associated with a given key from within a `FormData` object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/getAll) + */ + getAll(name: string): (File | string)[]; + /** + * The **`has()`** method of the FormData interface returns whether a `FormData` object contains a certain key. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/has) + */ + has(name: string): boolean; + /** + * The **`set()`** method of the FormData interface sets a new value for an existing key inside a `FormData` object, or adds the key/value if it does not already exist. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/set) + */ + set(name: string, value: string | Blob): void; + /** + * The **`set()`** method of the FormData interface sets a new value for an existing key inside a `FormData` object, or adds the key/value if it does not already exist. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/set) + */ + set(name: string, value: string): void; + /** + * The **`set()`** method of the FormData interface sets a new value for an existing key inside a `FormData` object, or adds the key/value if it does not already exist. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/set) + */ + set(name: string, value: Blob, filename?: string): void; + /* Returns an array of key, value pairs for every entry in the list. */ + entries(): IterableIterator<[ + key: string, + value: File | string + ]>; + /* Returns a list of keys in the list. */ + keys(): IterableIterator; + /* Returns a list of values in the list. */ + values(): IterableIterator<(File | string)>; + forEach(callback: (this: This, value: File | string, key: string, parent: FormData) => void, thisArg?: This): void; + [Symbol.iterator](): IterableIterator<[ + key: string, + value: File | string + ]>; +} +interface ContentOptions { + html?: boolean; +} +declare class HTMLRewriter { + constructor(); + on(selector: string, handlers: HTMLRewriterElementContentHandlers): HTMLRewriter; + onDocument(handlers: HTMLRewriterDocumentContentHandlers): HTMLRewriter; + transform(response: Response): Response; +} +interface HTMLRewriterElementContentHandlers { + element?(element: Element): void | Promise; + comments?(comment: Comment): void | Promise; + text?(element: Text): void | Promise; +} +interface HTMLRewriterDocumentContentHandlers { + doctype?(doctype: Doctype): void | Promise; + comments?(comment: Comment): void | Promise; + text?(text: Text): void | Promise; + end?(end: DocumentEnd): void | Promise; +} +interface Doctype { + readonly name: string | null; + readonly publicId: string | null; + readonly systemId: string | null; +} +interface Element { + tagName: string; + readonly attributes: IterableIterator; + readonly removed: boolean; + readonly namespaceURI: string; + getAttribute(name: string): string | null; + hasAttribute(name: string): boolean; + setAttribute(name: string, value: string): Element; + removeAttribute(name: string): Element; + before(content: string | ReadableStream | Response, options?: ContentOptions): Element; + after(content: string | ReadableStream | Response, options?: ContentOptions): Element; + prepend(content: string | ReadableStream | Response, options?: ContentOptions): Element; + append(content: string | ReadableStream | Response, options?: ContentOptions): Element; + replace(content: string | ReadableStream | Response, options?: ContentOptions): Element; + remove(): Element; + removeAndKeepContent(): Element; + setInnerContent(content: string | ReadableStream | Response, options?: ContentOptions): Element; + onEndTag(handler: (tag: EndTag) => void | Promise): void; +} +interface EndTag { + name: string; + before(content: string | ReadableStream | Response, options?: ContentOptions): EndTag; + after(content: string | ReadableStream | Response, options?: ContentOptions): EndTag; + remove(): EndTag; +} +interface Comment { + text: string; + readonly removed: boolean; + before(content: string, options?: ContentOptions): Comment; + after(content: string, options?: ContentOptions): Comment; + replace(content: string, options?: ContentOptions): Comment; + remove(): Comment; +} +interface Text { + readonly text: string; + readonly lastInTextNode: boolean; + readonly removed: boolean; + before(content: string | ReadableStream | Response, options?: ContentOptions): Text; + after(content: string | ReadableStream | Response, options?: ContentOptions): Text; + replace(content: string | ReadableStream | Response, options?: ContentOptions): Text; + remove(): Text; +} +interface DocumentEnd { + append(content: string, options?: ContentOptions): DocumentEnd; +} +/** + * This is the event type for `fetch` events dispatched on the ServiceWorkerGlobalScope. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FetchEvent) + */ +declare abstract class FetchEvent extends ExtendableEvent { + /** + * The **`request`** read-only property of the the event handler. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FetchEvent/request) + */ + readonly request: Request; + /** + * The **`respondWith()`** method of allows you to provide a promise for a Response yourself. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FetchEvent/respondWith) + */ + respondWith(promise: Response | Promise): void; + passThroughOnException(): void; +} +type HeadersInit = Headers | Iterable> | Record; +/** + * The **`Headers`** interface of the Fetch API allows you to perform various actions on HTTP request and response headers. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers) + */ +declare class Headers { + constructor(init?: HeadersInit); + /** + * The **`get()`** method of the Headers interface returns a byte string of all the values of a header within a `Headers` object with a given name. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/get) + */ + get(name: string): string | null; + getAll(name: string): string[]; + /** + * The **`getSetCookie()`** method of the Headers interface returns an array containing the values of all Set-Cookie headers associated with a response. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/getSetCookie) + */ + getSetCookie(): string[]; + /** + * The **`has()`** method of the Headers interface returns a boolean stating whether a `Headers` object contains a certain header. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/has) + */ + has(name: string): boolean; + /** + * The **`set()`** method of the Headers interface sets a new value for an existing header inside a `Headers` object, or adds the header if it does not already exist. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/set) + */ + set(name: string, value: string): void; + /** + * The **`append()`** method of the Headers interface appends a new value onto an existing header inside a `Headers` object, or adds the header if it does not already exist. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/append) + */ + append(name: string, value: string): void; + /** + * The **`delete()`** method of the Headers interface deletes a header from the current `Headers` object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/delete) + */ + delete(name: string): void; + forEach(callback: (this: This, value: string, key: string, parent: Headers) => void, thisArg?: This): void; + /* Returns an iterator allowing to go through all key/value pairs contained in this object. */ + entries(): IterableIterator<[ + key: string, + value: string + ]>; + /* Returns an iterator allowing to go through all keys of the key/value pairs contained in this object. */ + keys(): IterableIterator; + /* Returns an iterator allowing to go through all values of the key/value pairs contained in this object. */ + values(): IterableIterator; + [Symbol.iterator](): IterableIterator<[ + key: string, + value: string + ]>; +} +type BodyInit = ReadableStream | string | ArrayBuffer | ArrayBufferView | Blob | URLSearchParams | FormData | Iterable | AsyncIterable; +declare abstract class Body { + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/body) */ + get body(): ReadableStream | null; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/bodyUsed) */ + get bodyUsed(): boolean; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/arrayBuffer) */ + arrayBuffer(): Promise; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/bytes) */ + bytes(): Promise; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/text) */ + text(): Promise; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/json) */ + json(): Promise; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/formData) */ + formData(): Promise; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/blob) */ + blob(): Promise; +} +/** + * The **`Response`** interface of the Fetch API represents the response to a request. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response) + */ +declare var Response: { + prototype: Response; + new (body?: BodyInit | null, init?: ResponseInit): Response; + error(): Response; + redirect(url: string, status?: number): Response; + json(any: any, maybeInit?: (ResponseInit | Response)): Response; +}; +/** + * The **`Response`** interface of the Fetch API represents the response to a request. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response) + */ +interface Response extends Body { + /** + * The **`clone()`** method of the Response interface creates a clone of a response object, identical in every way, but stored in a different variable. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/clone) + */ + clone(): Response; + /** + * The **`status`** read-only property of the Response interface contains the HTTP status codes of the response. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/status) + */ + status: number; + /** + * The **`statusText`** read-only property of the Response interface contains the status message corresponding to the HTTP status code in Response.status. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/statusText) + */ + statusText: string; + /** + * The **`headers`** read-only property of the with the response. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/headers) + */ + headers: Headers; + /** + * The **`ok`** read-only property of the Response interface contains a Boolean stating whether the response was successful (status in the range 200-299) or not. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/ok) + */ + ok: boolean; + /** + * The **`redirected`** read-only property of the Response interface indicates whether or not the response is the result of a request you made which was redirected. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/redirected) + */ + redirected: boolean; + /** + * The **`url`** read-only property of the Response interface contains the URL of the response. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/url) + */ + url: string; + webSocket: WebSocket | null; + cf: any | undefined; + /** + * The **`type`** read-only property of the Response interface contains the type of the response. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/type) + */ + type: "default" | "error"; +} +interface ResponseInit { + status?: number; + statusText?: string; + headers?: HeadersInit; + cf?: any; + webSocket?: (WebSocket | null); + encodeBody?: "automatic" | "manual"; +} +type RequestInfo> = Request | string; +/** + * The **`Request`** interface of the Fetch API represents a resource request. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request) + */ +declare var Request: { + prototype: Request; + new >(input: RequestInfo | URL, init?: RequestInit): Request; +}; +/** + * The **`Request`** interface of the Fetch API represents a resource request. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request) + */ +interface Request> extends Body { + /** + * The **`clone()`** method of the Request interface creates a copy of the current `Request` object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/clone) + */ + clone(): Request; + /** + * The **`method`** read-only property of the `POST`, etc.) A String indicating the method of the request. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/method) + */ + method: string; + /** + * The **`url`** read-only property of the Request interface contains the URL of the request. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/url) + */ + url: string; + /** + * The **`headers`** read-only property of the with the request. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/headers) + */ + headers: Headers; + /** + * The **`redirect`** read-only property of the Request interface contains the mode for how redirects are handled. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/redirect) + */ + redirect: string; + fetcher: Fetcher | null; + /** + * The read-only **`signal`** property of the Request interface returns the AbortSignal associated with the request. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/signal) + */ + signal: AbortSignal; + cf?: Cf; + /** + * The **`integrity`** read-only property of the Request interface contains the subresource integrity value of the request. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/integrity) + */ + integrity: string; + /** + * The **`keepalive`** read-only property of the Request interface contains the request's `keepalive` setting (`true` or `false`), which indicates whether the browser will keep the associated request alive if the page that initiated it is unloaded before the request is complete. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/keepalive) + */ + keepalive: boolean; + /** + * The **`cache`** read-only property of the Request interface contains the cache mode of the request. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/cache) + */ + cache?: "no-store" | "no-cache"; +} +interface RequestInit { + /* A string to set request's method. */ + method?: string; + /* A Headers object, an object literal, or an array of two-item arrays to set request's headers. */ + headers?: HeadersInit; + /* A BodyInit object or null to set request's body. */ + body?: BodyInit | null; + /* A string indicating whether request follows redirects, results in an error upon encountering a redirect, or returns the redirect (in an opaque fashion). Sets request's redirect. */ + redirect?: string; + fetcher?: (Fetcher | null); + cf?: Cf; + /* A string indicating how the request will interact with the browser's cache to set request's cache. */ + cache?: "no-store" | "no-cache"; + /* A cryptographic hash of the resource to be fetched by request. Sets request's integrity. */ + integrity?: string; + /* An AbortSignal to set request's signal. */ + signal?: (AbortSignal | null); + encodeResponseBody?: "automatic" | "manual"; +} +type Service Rpc.WorkerEntrypointBranded) | Rpc.WorkerEntrypointBranded | ExportedHandler | undefined = undefined> = T extends new (...args: any[]) => Rpc.WorkerEntrypointBranded ? Fetcher> : T extends Rpc.WorkerEntrypointBranded ? Fetcher : T extends Exclude ? never : Fetcher; +type Fetcher = (T extends Rpc.EntrypointBranded ? Rpc.Provider : unknown) & { + fetch(input: RequestInfo | URL, init?: RequestInit): Promise; + connect(address: SocketAddress | string, options?: SocketOptions): Socket; +}; +interface KVNamespaceListKey { + name: Key; + expiration?: number; + metadata?: Metadata; +} +type KVNamespaceListResult = { + list_complete: false; + keys: KVNamespaceListKey[]; + cursor: string; + cacheStatus: string | null; +} | { + list_complete: true; + keys: KVNamespaceListKey[]; + cacheStatus: string | null; +}; +interface KVNamespace { + get(key: Key, options?: Partial>): Promise; + get(key: Key, type: "text"): Promise; + get(key: Key, type: "json"): Promise; + get(key: Key, type: "arrayBuffer"): Promise; + get(key: Key, type: "stream"): Promise; + get(key: Key, options?: KVNamespaceGetOptions<"text">): Promise; + get(key: Key, options?: KVNamespaceGetOptions<"json">): Promise; + get(key: Key, options?: KVNamespaceGetOptions<"arrayBuffer">): Promise; + get(key: Key, options?: KVNamespaceGetOptions<"stream">): Promise; + get(key: Array, type: "text"): Promise>; + get(key: Array, type: "json"): Promise>; + get(key: Array, options?: Partial>): Promise>; + get(key: Array, options?: KVNamespaceGetOptions<"text">): Promise>; + get(key: Array, options?: KVNamespaceGetOptions<"json">): Promise>; + list(options?: KVNamespaceListOptions): Promise>; + put(key: Key, value: string | ArrayBuffer | ArrayBufferView | ReadableStream, options?: KVNamespacePutOptions): Promise; + getWithMetadata(key: Key, options?: Partial>): Promise>; + getWithMetadata(key: Key, type: "text"): Promise>; + getWithMetadata(key: Key, type: "json"): Promise>; + getWithMetadata(key: Key, type: "arrayBuffer"): Promise>; + getWithMetadata(key: Key, type: "stream"): Promise>; + getWithMetadata(key: Key, options: KVNamespaceGetOptions<"text">): Promise>; + getWithMetadata(key: Key, options: KVNamespaceGetOptions<"json">): Promise>; + getWithMetadata(key: Key, options: KVNamespaceGetOptions<"arrayBuffer">): Promise>; + getWithMetadata(key: Key, options: KVNamespaceGetOptions<"stream">): Promise>; + getWithMetadata(key: Array, type: "text"): Promise>>; + getWithMetadata(key: Array, type: "json"): Promise>>; + getWithMetadata(key: Array, options?: Partial>): Promise>>; + getWithMetadata(key: Array, options?: KVNamespaceGetOptions<"text">): Promise>>; + getWithMetadata(key: Array, options?: KVNamespaceGetOptions<"json">): Promise>>; + delete(key: Key): Promise; +} +interface KVNamespaceListOptions { + limit?: number; + prefix?: (string | null); + cursor?: (string | null); +} +interface KVNamespaceGetOptions { + type: Type; + cacheTtl?: number; +} +interface KVNamespacePutOptions { + expiration?: number; + expirationTtl?: number; + metadata?: (any | null); +} +interface KVNamespaceGetWithMetadataResult { + value: Value | null; + metadata: Metadata | null; + cacheStatus: string | null; +} +type QueueContentType = "text" | "bytes" | "json" | "v8"; +interface Queue { + metrics(): Promise; + send(message: Body, options?: QueueSendOptions): Promise; + sendBatch(messages: Iterable>, options?: QueueSendBatchOptions): Promise; +} +interface QueueSendMetrics { + backlogCount: number; + backlogBytes: number; + oldestMessageTimestamp?: Date; +} +interface QueueSendMetadata { + metrics: QueueSendMetrics; +} +interface QueueSendResponse { + metadata: QueueSendMetadata; +} +interface QueueSendBatchMetrics { + backlogCount: number; + backlogBytes: number; + oldestMessageTimestamp?: Date; +} +interface QueueSendBatchMetadata { + metrics: QueueSendBatchMetrics; +} +interface QueueSendBatchResponse { + metadata: QueueSendBatchMetadata; +} +interface QueueSendOptions { + contentType?: QueueContentType; + delaySeconds?: number; +} +interface QueueSendBatchOptions { + delaySeconds?: number; +} +interface MessageSendRequest { + body: Body; + contentType?: QueueContentType; + delaySeconds?: number; +} +interface QueueMetrics { + backlogCount: number; + backlogBytes: number; + oldestMessageTimestamp?: Date; +} +interface MessageBatchMetrics { + backlogCount: number; + backlogBytes: number; + oldestMessageTimestamp?: Date; +} +interface MessageBatchMetadata { + metrics: MessageBatchMetrics; +} +interface QueueRetryOptions { + delaySeconds?: number; +} +interface Message { + readonly id: string; + readonly timestamp: Date; + readonly body: Body; + readonly attempts: number; + retry(options?: QueueRetryOptions): void; + ack(): void; +} +interface QueueEvent extends ExtendableEvent { + readonly messages: readonly Message[]; + readonly queue: string; + readonly metadata: MessageBatchMetadata; + retryAll(options?: QueueRetryOptions): void; + ackAll(): void; +} +interface MessageBatch { + readonly messages: readonly Message[]; + readonly queue: string; + readonly metadata: MessageBatchMetadata; + retryAll(options?: QueueRetryOptions): void; + ackAll(): void; +} +interface R2Error extends Error { + readonly name: string; + readonly code: number; + readonly message: string; + readonly action: string; + readonly stack: any; +} +interface R2ListOptions { + limit?: number; + prefix?: string; + cursor?: string; + delimiter?: string; + startAfter?: string; + include?: ("httpMetadata" | "customMetadata")[]; +} +interface R2Bucket { + head(key: string): Promise; + get(key: string, options: R2GetOptions & { + onlyIf: R2Conditional | Headers; + }): Promise; + get(key: string, options?: R2GetOptions): Promise; + put(key: string, value: ReadableStream | ArrayBuffer | ArrayBufferView | string | null | Blob, options?: R2PutOptions & { + onlyIf: R2Conditional | Headers; + }): Promise; + put(key: string, value: ReadableStream | ArrayBuffer | ArrayBufferView | string | null | Blob, options?: R2PutOptions): Promise; + createMultipartUpload(key: string, options?: R2MultipartOptions): Promise; + resumeMultipartUpload(key: string, uploadId: string): R2MultipartUpload; + delete(keys: string | string[]): Promise; + list(options?: R2ListOptions): Promise; +} +interface R2MultipartUpload { + readonly key: string; + readonly uploadId: string; + uploadPart(partNumber: number, value: ReadableStream | (ArrayBuffer | ArrayBufferView) | string | Blob, options?: R2UploadPartOptions): Promise; + abort(): Promise; + complete(uploadedParts: R2UploadedPart[]): Promise; +} +interface R2UploadedPart { + partNumber: number; + etag: string; +} +declare abstract class R2Object { + readonly key: string; + readonly version: string; + readonly size: number; + readonly etag: string; + readonly httpEtag: string; + readonly checksums: R2Checksums; + readonly uploaded: Date; + readonly httpMetadata?: R2HTTPMetadata; + readonly customMetadata?: Record; + readonly range?: R2Range; + readonly storageClass: string; + readonly ssecKeyMd5?: string; + writeHttpMetadata(headers: Headers): void; +} +interface R2ObjectBody extends R2Object { + get body(): ReadableStream; + get bodyUsed(): boolean; + arrayBuffer(): Promise; + bytes(): Promise; + text(): Promise; + json(): Promise; + blob(): Promise; +} +type R2Range = { + offset: number; + length?: number; +} | { + offset?: number; + length: number; +} | { + suffix: number; +}; +interface R2Conditional { + etagMatches?: string; + etagDoesNotMatch?: string; + uploadedBefore?: Date; + uploadedAfter?: Date; + secondsGranularity?: boolean; +} +interface R2GetOptions { + onlyIf?: (R2Conditional | Headers); + range?: (R2Range | Headers); + ssecKey?: (ArrayBuffer | string); +} +interface R2PutOptions { + onlyIf?: (R2Conditional | Headers); + httpMetadata?: (R2HTTPMetadata | Headers); + customMetadata?: Record; + md5?: ((ArrayBuffer | ArrayBufferView) | string); + sha1?: ((ArrayBuffer | ArrayBufferView) | string); + sha256?: ((ArrayBuffer | ArrayBufferView) | string); + sha384?: ((ArrayBuffer | ArrayBufferView) | string); + sha512?: ((ArrayBuffer | ArrayBufferView) | string); + storageClass?: string; + ssecKey?: (ArrayBuffer | string); +} +interface R2MultipartOptions { + httpMetadata?: (R2HTTPMetadata | Headers); + customMetadata?: Record; + storageClass?: string; + ssecKey?: (ArrayBuffer | string); +} +interface R2Checksums { + readonly md5?: ArrayBuffer; + readonly sha1?: ArrayBuffer; + readonly sha256?: ArrayBuffer; + readonly sha384?: ArrayBuffer; + readonly sha512?: ArrayBuffer; + toJSON(): R2StringChecksums; +} +interface R2StringChecksums { + md5?: string; + sha1?: string; + sha256?: string; + sha384?: string; + sha512?: string; +} +interface R2HTTPMetadata { + contentType?: string; + contentLanguage?: string; + contentDisposition?: string; + contentEncoding?: string; + cacheControl?: string; + cacheExpiry?: Date; +} +type R2Objects = { + objects: R2Object[]; + delimitedPrefixes: string[]; +} & ({ + truncated: true; + cursor: string; +} | { + truncated: false; +}); +interface R2UploadPartOptions { + ssecKey?: (ArrayBuffer | string); +} +declare abstract class ScheduledEvent extends ExtendableEvent { + readonly scheduledTime: number; + readonly cron: string; + noRetry(): void; +} +interface ScheduledController { + readonly scheduledTime: number; + readonly cron: string; + noRetry(): void; +} +interface QueuingStrategy { + highWaterMark?: (number | bigint); + size?: (chunk: T) => number | bigint; +} +interface UnderlyingSink { + type?: string; + start?: (controller: WritableStreamDefaultController) => void | Promise; + write?: (chunk: W, controller: WritableStreamDefaultController) => void | Promise; + abort?: (reason: any) => void | Promise; + close?: () => void | Promise; +} +interface UnderlyingByteSource { + type: "bytes"; + autoAllocateChunkSize?: number; + start?: (controller: ReadableByteStreamController) => void | Promise; + pull?: (controller: ReadableByteStreamController) => void | Promise; + cancel?: (reason: any) => void | Promise; +} +interface UnderlyingSource { + type?: "" | undefined; + start?: (controller: ReadableStreamDefaultController) => void | Promise; + pull?: (controller: ReadableStreamDefaultController) => void | Promise; + cancel?: (reason: any) => void | Promise; + expectedLength?: (number | bigint); +} +interface Transformer { + readableType?: string; + writableType?: string; + start?: (controller: TransformStreamDefaultController) => void | Promise; + transform?: (chunk: I, controller: TransformStreamDefaultController) => void | Promise; + flush?: (controller: TransformStreamDefaultController) => void | Promise; + cancel?: (reason: any) => void | Promise; + expectedLength?: number; +} +interface StreamPipeOptions { + preventAbort?: boolean; + preventCancel?: boolean; + /** + * Pipes this readable stream to a given writable stream destination. The way in which the piping process behaves under various error conditions can be customized with a number of passed options. It returns a promise that fulfills when the piping process completes successfully, or rejects if any errors were encountered. + * + * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader. + * + * Errors and closures of the source and destination streams propagate as follows: + * + * An error in this source readable stream will abort destination, unless preventAbort is truthy. The returned promise will be rejected with the source's error, or with any error that occurs during aborting the destination. + * + * An error in destination will cancel this source readable stream, unless preventCancel is truthy. The returned promise will be rejected with the destination's error, or with any error that occurs during canceling the source. + * + * When this source readable stream closes, destination will be closed, unless preventClose is truthy. The returned promise will be fulfilled once this process completes, unless an error is encountered while closing the destination, in which case it will be rejected with that error. + * + * If destination starts out closed or closing, this source readable stream will be canceled, unless preventCancel is true. The returned promise will be rejected with an error indicating piping to a closed stream failed, or with any error that occurs during canceling the source. + * + * The signal option can be set to an AbortSignal to allow aborting an ongoing pipe operation via the corresponding AbortController. In this case, this source readable stream will be canceled, and destination aborted, unless the respective options preventCancel or preventAbort are set. + */ + preventClose?: boolean; + signal?: AbortSignal; +} +type ReadableStreamReadResult = { + done: false; + value: R; +} | { + done: true; + value?: undefined; +}; +/** + * The `ReadableStream` interface of the Streams API represents a readable stream of byte data. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream) + */ +interface ReadableStream { + /** + * The **`locked`** read-only property of the ReadableStream interface returns whether or not the readable stream is locked to a reader. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/locked) + */ + get locked(): boolean; + /** + * The **`cancel()`** method of the ReadableStream interface returns a Promise that resolves when the stream is canceled. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/cancel) + */ + cancel(reason?: any): Promise; + /** + * The **`getReader()`** method of the ReadableStream interface creates a reader and locks the stream to it. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/getReader) + */ + getReader(): ReadableStreamDefaultReader; + /** + * The **`getReader()`** method of the ReadableStream interface creates a reader and locks the stream to it. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/getReader) + */ + getReader(options: ReadableStreamGetReaderOptions): ReadableStreamBYOBReader; + /** + * The **`pipeThrough()`** method of the ReadableStream interface provides a chainable way of piping the current stream through a transform stream or any other writable/readable pair. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/pipeThrough) + */ + pipeThrough(transform: ReadableWritablePair, options?: StreamPipeOptions): ReadableStream; + /** + * The **`pipeTo()`** method of the ReadableStream interface pipes the current `ReadableStream` to a given WritableStream and returns a Promise that fulfills when the piping process completes successfully, or rejects if any errors were encountered. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/pipeTo) + */ + pipeTo(destination: WritableStream, options?: StreamPipeOptions): Promise; + /** + * The **`tee()`** method of the two-element array containing the two resulting branches as new ReadableStream instances. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/tee) + */ + tee(): [ + ReadableStream, + ReadableStream + ]; + values(options?: ReadableStreamValuesOptions): AsyncIterableIterator; + [Symbol.asyncIterator](options?: ReadableStreamValuesOptions): AsyncIterableIterator; +} +/** + * The `ReadableStream` interface of the Streams API represents a readable stream of byte data. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream) + */ +declare const ReadableStream: { + prototype: ReadableStream; + new (underlyingSource: UnderlyingByteSource, strategy?: QueuingStrategy): ReadableStream; + new (underlyingSource?: UnderlyingSource, strategy?: QueuingStrategy): ReadableStream; +}; +/** + * The **`ReadableStreamDefaultReader`** interface of the Streams API represents a default reader that can be used to read stream data supplied from a network (such as a fetch request). + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultReader) + */ +declare class ReadableStreamDefaultReader { + constructor(stream: ReadableStream); + get closed(): Promise; + cancel(reason?: any): Promise; + /** + * The **`read()`** method of the ReadableStreamDefaultReader interface returns a Promise providing access to the next chunk in the stream's internal queue. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultReader/read) + */ + read(): Promise>; + /** + * The **`releaseLock()`** method of the ReadableStreamDefaultReader interface releases the reader's lock on the stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultReader/releaseLock) + */ + releaseLock(): void; +} +/** + * The `ReadableStreamBYOBReader` interface of the Streams API defines a reader for a ReadableStream that supports zero-copy reading from an underlying byte source. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader) + */ +declare class ReadableStreamBYOBReader { + constructor(stream: ReadableStream); + get closed(): Promise; + cancel(reason?: any): Promise; + /** + * The **`read()`** method of the ReadableStreamBYOBReader interface is used to read data into a view on a user-supplied buffer from an associated readable byte stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/read) + */ + read(view: T): Promise>; + /** + * The **`releaseLock()`** method of the ReadableStreamBYOBReader interface releases the reader's lock on the stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/releaseLock) + */ + releaseLock(): void; + readAtLeast(minElements: number, view: T): Promise>; +} +interface ReadableStreamBYOBReaderReadableStreamBYOBReaderReadOptions { + min?: number; +} +interface ReadableStreamGetReaderOptions { + /** + * Creates a ReadableStreamBYOBReader and locks the stream to the new reader. + * + * This call behaves the same way as the no-argument variant, except that it only works on readable byte streams, i.e. streams which were constructed specifically with the ability to handle "bring your own buffer" reading. The returned BYOB reader provides the ability to directly read individual chunks from the stream via its read() method, into developer-supplied buffers, allowing more precise control over allocation. + */ + mode: "byob"; +} +/** + * The **`ReadableStreamBYOBRequest`** interface of the Streams API represents a 'pull request' for data from an underlying source that will made as a zero-copy transfer to a consumer (bypassing the stream's internal queues). + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest) + */ +declare abstract class ReadableStreamBYOBRequest { + /** + * The **`view`** getter property of the ReadableStreamBYOBRequest interface returns the current view. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest/view) + */ + get view(): Uint8Array | null; + /** + * The **`respond()`** method of the ReadableStreamBYOBRequest interface is used to signal to the associated readable byte stream that the specified number of bytes were written into the ReadableStreamBYOBRequest.view. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest/respond) + */ + respond(bytesWritten: number): void; + /** + * The **`respondWithNewView()`** method of the ReadableStreamBYOBRequest interface specifies a new view that the consumer of the associated readable byte stream should write to instead of ReadableStreamBYOBRequest.view. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest/respondWithNewView) + */ + respondWithNewView(view: ArrayBuffer | ArrayBufferView): void; + get atLeast(): number | null; +} +/** + * The **`ReadableStreamDefaultController`** interface of the Streams API represents a controller allowing control of a ReadableStream's state and internal queue. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController) + */ +declare abstract class ReadableStreamDefaultController { + /** + * The **`desiredSize`** read-only property of the required to fill the stream's internal queue. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/desiredSize) + */ + get desiredSize(): number | null; + /** + * The **`close()`** method of the ReadableStreamDefaultController interface closes the associated stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/close) + */ + close(): void; + /** + * The **`enqueue()`** method of the ```js-nolint enqueue(chunk) ``` - `chunk` - : The chunk to enqueue. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/enqueue) + */ + enqueue(chunk?: R): void; + /** + * The **`error()`** method of the with the associated stream to error. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/error) + */ + error(reason: any): void; +} +/** + * The **`ReadableByteStreamController`** interface of the Streams API represents a controller for a readable byte stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController) + */ +declare abstract class ReadableByteStreamController { + /** + * The **`byobRequest`** read-only property of the ReadableByteStreamController interface returns the current BYOB request, or `null` if there are no pending requests. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/byobRequest) + */ + get byobRequest(): ReadableStreamBYOBRequest | null; + /** + * The **`desiredSize`** read-only property of the ReadableByteStreamController interface returns the number of bytes required to fill the stream's internal queue to its 'desired size'. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/desiredSize) + */ + get desiredSize(): number | null; + /** + * The **`close()`** method of the ReadableByteStreamController interface closes the associated stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/close) + */ + close(): void; + /** + * The **`enqueue()`** method of the ReadableByteStreamController interface enqueues a given chunk on the associated readable byte stream (the chunk is copied into the stream's internal queues). + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/enqueue) + */ + enqueue(chunk: ArrayBuffer | ArrayBufferView): void; + /** + * The **`error()`** method of the ReadableByteStreamController interface causes any future interactions with the associated stream to error with the specified reason. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/error) + */ + error(reason: any): void; +} +/** + * The **`WritableStreamDefaultController`** interface of the Streams API represents a controller allowing control of a WritableStream's state. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultController) + */ +declare abstract class WritableStreamDefaultController { + /** + * The read-only **`signal`** property of the WritableStreamDefaultController interface returns the AbortSignal associated with the controller. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultController/signal) + */ + get signal(): AbortSignal; + /** + * The **`error()`** method of the with the associated stream to error. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultController/error) + */ + error(reason?: any): void; +} +/** + * The **`TransformStreamDefaultController`** interface of the Streams API provides methods to manipulate the associated ReadableStream and WritableStream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController) + */ +declare abstract class TransformStreamDefaultController { + /** + * The **`desiredSize`** read-only property of the TransformStreamDefaultController interface returns the desired size to fill the queue of the associated ReadableStream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/desiredSize) + */ + get desiredSize(): number | null; + /** + * The **`enqueue()`** method of the TransformStreamDefaultController interface enqueues the given chunk in the readable side of the stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/enqueue) + */ + enqueue(chunk?: O): void; + /** + * The **`error()`** method of the TransformStreamDefaultController interface errors both sides of the stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/error) + */ + error(reason: any): void; + /** + * The **`terminate()`** method of the TransformStreamDefaultController interface closes the readable side and errors the writable side of the stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/terminate) + */ + terminate(): void; +} +interface ReadableWritablePair { + readable: ReadableStream; + /** + * Provides a convenient, chainable way of piping this readable stream through a transform stream (or any other { writable, readable } pair). It simply pipes the stream into the writable side of the supplied pair, and returns the readable side for further use. + * + * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader. + */ + writable: WritableStream; +} +/** + * The **`WritableStream`** interface of the Streams API provides a standard abstraction for writing streaming data to a destination, known as a sink. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStream) + */ +declare class WritableStream { + constructor(underlyingSink?: UnderlyingSink, queuingStrategy?: QueuingStrategy); + /** + * The **`locked`** read-only property of the WritableStream interface returns a boolean indicating whether the `WritableStream` is locked to a writer. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStream/locked) + */ + get locked(): boolean; + /** + * The **`abort()`** method of the WritableStream interface aborts the stream, signaling that the producer can no longer successfully write to the stream and it is to be immediately moved to an error state, with any queued writes discarded. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStream/abort) + */ + abort(reason?: any): Promise; + /** + * The **`close()`** method of the WritableStream interface closes the associated stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStream/close) + */ + close(): Promise; + /** + * The **`getWriter()`** method of the WritableStream interface returns a new instance of WritableStreamDefaultWriter and locks the stream to that instance. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStream/getWriter) + */ + getWriter(): WritableStreamDefaultWriter; +} +/** + * The **`WritableStreamDefaultWriter`** interface of the Streams API is the object returned by WritableStream.getWriter() and once created locks the writer to the `WritableStream` ensuring that no other streams can write to the underlying sink. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter) + */ +declare class WritableStreamDefaultWriter { + constructor(stream: WritableStream); + /** + * The **`closed`** read-only property of the the stream errors or the writer's lock is released. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/closed) + */ + get closed(): Promise; + /** + * The **`ready`** read-only property of the that resolves when the desired size of the stream's internal queue transitions from non-positive to positive, signaling that it is no longer applying backpressure. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/ready) + */ + get ready(): Promise; + /** + * The **`desiredSize`** read-only property of the to fill the stream's internal queue. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/desiredSize) + */ + get desiredSize(): number | null; + /** + * The **`abort()`** method of the the producer can no longer successfully write to the stream and it is to be immediately moved to an error state, with any queued writes discarded. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/abort) + */ + abort(reason?: any): Promise; + /** + * The **`close()`** method of the stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/close) + */ + close(): Promise; + /** + * The **`write()`** method of the operation. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/write) + */ + write(chunk?: W): Promise; + /** + * The **`releaseLock()`** method of the corresponding stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/releaseLock) + */ + releaseLock(): void; +} +/** + * The **`TransformStream`** interface of the Streams API represents a concrete implementation of the pipe chain _transform stream_ concept. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStream) + */ +declare class TransformStream { + constructor(transformer?: Transformer, writableStrategy?: QueuingStrategy, readableStrategy?: QueuingStrategy); + /** + * The **`readable`** read-only property of the TransformStream interface returns the ReadableStream instance controlled by this `TransformStream`. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStream/readable) + */ + get readable(): ReadableStream; + /** + * The **`writable`** read-only property of the TransformStream interface returns the WritableStream instance controlled by this `TransformStream`. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStream/writable) + */ + get writable(): WritableStream; +} +declare class FixedLengthStream extends IdentityTransformStream { + constructor(expectedLength: number | bigint, queuingStrategy?: IdentityTransformStreamQueuingStrategy); +} +declare class IdentityTransformStream extends TransformStream { + constructor(queuingStrategy?: IdentityTransformStreamQueuingStrategy); +} +interface IdentityTransformStreamQueuingStrategy { + highWaterMark?: (number | bigint); +} +interface ReadableStreamValuesOptions { + preventCancel?: boolean; +} +/** + * The **`CompressionStream`** interface of the Compression Streams API is an API for compressing a stream of data. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CompressionStream) + */ +declare class CompressionStream extends TransformStream { + constructor(format: "gzip" | "deflate" | "deflate-raw"); +} +/** + * The **`DecompressionStream`** interface of the Compression Streams API is an API for decompressing a stream of data. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DecompressionStream) + */ +declare class DecompressionStream extends TransformStream { + constructor(format: "gzip" | "deflate" | "deflate-raw"); +} +/** + * The **`TextEncoderStream`** interface of the Encoding API converts a stream of strings into bytes in the UTF-8 encoding. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextEncoderStream) + */ +declare class TextEncoderStream extends TransformStream { + constructor(); + get encoding(): string; +} +/** + * The **`TextDecoderStream`** interface of the Encoding API converts a stream of text in a binary encoding, such as UTF-8 etc., to a stream of strings. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextDecoderStream) + */ +declare class TextDecoderStream extends TransformStream { + constructor(label?: string, options?: TextDecoderStreamTextDecoderStreamInit); + get encoding(): string; + get fatal(): boolean; + get ignoreBOM(): boolean; +} +interface TextDecoderStreamTextDecoderStreamInit { + fatal?: boolean; + ignoreBOM?: boolean; +} +/** + * The **`ByteLengthQueuingStrategy`** interface of the Streams API provides a built-in byte length queuing strategy that can be used when constructing streams. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ByteLengthQueuingStrategy) + */ +declare class ByteLengthQueuingStrategy implements QueuingStrategy { + constructor(init: QueuingStrategyInit); + /** + * The read-only **`ByteLengthQueuingStrategy.highWaterMark`** property returns the total number of bytes that can be contained in the internal queue before backpressure is applied. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ByteLengthQueuingStrategy/highWaterMark) + */ + get highWaterMark(): number; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ByteLengthQueuingStrategy/size) */ + get size(): (chunk?: any) => number; +} +/** + * The **`CountQueuingStrategy`** interface of the Streams API provides a built-in chunk counting queuing strategy that can be used when constructing streams. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CountQueuingStrategy) + */ +declare class CountQueuingStrategy implements QueuingStrategy { + constructor(init: QueuingStrategyInit); + /** + * The read-only **`CountQueuingStrategy.highWaterMark`** property returns the total number of chunks that can be contained in the internal queue before backpressure is applied. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CountQueuingStrategy/highWaterMark) + */ + get highWaterMark(): number; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/CountQueuingStrategy/size) */ + get size(): (chunk?: any) => number; +} +interface QueuingStrategyInit { + /** + * Creates a new ByteLengthQueuingStrategy with the provided high water mark. + * + * Note that the provided high water mark will not be validated ahead of time. Instead, if it is negative, NaN, or not a number, the resulting ByteLengthQueuingStrategy will cause the corresponding stream constructor to throw. + */ + highWaterMark: number; +} +interface TracePreviewInfo { + id: string; + slug: string; + name: string; +} +interface ScriptVersion { + id?: string; + tag?: string; + message?: string; +} +declare abstract class TailEvent extends ExtendableEvent { + readonly events: TraceItem[]; + readonly traces: TraceItem[]; +} +interface TraceItem { + readonly event: (TraceItemFetchEventInfo | TraceItemJsRpcEventInfo | TraceItemConnectEventInfo | TraceItemScheduledEventInfo | TraceItemAlarmEventInfo | TraceItemQueueEventInfo | TraceItemEmailEventInfo | TraceItemTailEventInfo | TraceItemCustomEventInfo | TraceItemHibernatableWebSocketEventInfo) | null; + readonly eventTimestamp: number | null; + readonly logs: TraceLog[]; + readonly exceptions: TraceException[]; + readonly diagnosticsChannelEvents: TraceDiagnosticChannelEvent[]; + readonly scriptName: string | null; + readonly entrypoint?: string; + readonly scriptVersion?: ScriptVersion; + readonly dispatchNamespace?: string; + readonly scriptTags?: string[]; + readonly tailAttributes?: Record; + readonly preview?: TracePreviewInfo; + readonly durableObjectId?: string; + readonly outcome: string; + readonly executionModel: string; + readonly truncated: boolean; + readonly cpuTime: number; + readonly wallTime: number; +} +interface TraceItemAlarmEventInfo { + readonly scheduledTime: Date; +} +interface TraceItemConnectEventInfo { +} +interface TraceItemCustomEventInfo { +} +interface TraceItemScheduledEventInfo { + readonly scheduledTime: number; + readonly cron: string; +} +interface TraceItemQueueEventInfo { + readonly queue: string; + readonly batchSize: number; +} +interface TraceItemEmailEventInfo { + readonly mailFrom: string; + readonly rcptTo: string; + readonly rawSize: number; +} +interface TraceItemTailEventInfo { + readonly consumedEvents: TraceItemTailEventInfoTailItem[]; +} +interface TraceItemTailEventInfoTailItem { + readonly scriptName: string | null; +} +interface TraceItemFetchEventInfo { + readonly response?: TraceItemFetchEventInfoResponse; + readonly request: TraceItemFetchEventInfoRequest; +} +interface TraceItemFetchEventInfoRequest { + readonly cf?: any; + readonly headers: Record; + readonly method: string; + readonly url: string; + getUnredacted(): TraceItemFetchEventInfoRequest; +} +interface TraceItemFetchEventInfoResponse { + readonly status: number; +} +interface TraceItemJsRpcEventInfo { + readonly rpcMethod: string; +} +interface TraceItemHibernatableWebSocketEventInfo { + readonly getWebSocketEvent: TraceItemHibernatableWebSocketEventInfoMessage | TraceItemHibernatableWebSocketEventInfoClose | TraceItemHibernatableWebSocketEventInfoError; +} +interface TraceItemHibernatableWebSocketEventInfoMessage { + readonly webSocketEventType: string; +} +interface TraceItemHibernatableWebSocketEventInfoClose { + readonly webSocketEventType: string; + readonly code: number; + readonly wasClean: boolean; +} +interface TraceItemHibernatableWebSocketEventInfoError { + readonly webSocketEventType: string; +} +interface TraceLog { + readonly timestamp: number; + readonly level: string; + readonly message: any; +} +interface TraceException { + readonly timestamp: number; + readonly message: string; + readonly name: string; + readonly stack?: string; +} +interface TraceDiagnosticChannelEvent { + readonly timestamp: number; + readonly channel: string; + readonly message: any; +} +interface TraceMetrics { + readonly cpuTime: number; + readonly wallTime: number; +} +interface UnsafeTraceMetrics { + fromTrace(item: TraceItem): TraceMetrics; +} +/** + * The **`URL`** interface is used to parse, construct, normalize, and encode URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL) + */ +declare class URL { + constructor(url: string | URL, base?: string | URL); + /** + * The **`origin`** read-only property of the URL interface returns a string containing the Unicode serialization of the origin of the represented URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/origin) + */ + get origin(): string; + /** + * The **`href`** property of the URL interface is a string containing the whole URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/href) + */ + get href(): string; + /** + * The **`href`** property of the URL interface is a string containing the whole URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/href) + */ + set href(value: string); + /** + * The **`protocol`** property of the URL interface is a string containing the protocol or scheme of the URL, including the final `':'`. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/protocol) + */ + get protocol(): string; + /** + * The **`protocol`** property of the URL interface is a string containing the protocol or scheme of the URL, including the final `':'`. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/protocol) + */ + set protocol(value: string); + /** + * The **`username`** property of the URL interface is a string containing the username component of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/username) + */ + get username(): string; + /** + * The **`username`** property of the URL interface is a string containing the username component of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/username) + */ + set username(value: string); + /** + * The **`password`** property of the URL interface is a string containing the password component of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/password) + */ + get password(): string; + /** + * The **`password`** property of the URL interface is a string containing the password component of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/password) + */ + set password(value: string); + /** + * The **`host`** property of the URL interface is a string containing the host, which is the URL.hostname, and then, if the port of the URL is nonempty, a `':'`, followed by the URL.port of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/host) + */ + get host(): string; + /** + * The **`host`** property of the URL interface is a string containing the host, which is the URL.hostname, and then, if the port of the URL is nonempty, a `':'`, followed by the URL.port of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/host) + */ + set host(value: string); + /** + * The **`hostname`** property of the URL interface is a string containing either the domain name or IP address of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/hostname) + */ + get hostname(): string; + /** + * The **`hostname`** property of the URL interface is a string containing either the domain name or IP address of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/hostname) + */ + set hostname(value: string); + /** + * The **`port`** property of the URL interface is a string containing the port number of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/port) + */ + get port(): string; + /** + * The **`port`** property of the URL interface is a string containing the port number of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/port) + */ + set port(value: string); + /** + * The **`pathname`** property of the URL interface represents a location in a hierarchical structure. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/pathname) + */ + get pathname(): string; + /** + * The **`pathname`** property of the URL interface represents a location in a hierarchical structure. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/pathname) + */ + set pathname(value: string); + /** + * The **`search`** property of the URL interface is a search string, also called a _query string_, that is a string containing a `'?'` followed by the parameters of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/search) + */ + get search(): string; + /** + * The **`search`** property of the URL interface is a search string, also called a _query string_, that is a string containing a `'?'` followed by the parameters of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/search) + */ + set search(value: string); + /** + * The **`hash`** property of the URL interface is a string containing a `'#'` followed by the fragment identifier of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/hash) + */ + get hash(): string; + /** + * The **`hash`** property of the URL interface is a string containing a `'#'` followed by the fragment identifier of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/hash) + */ + set hash(value: string); + /** + * The **`searchParams`** read-only property of the access to the [MISSING: httpmethod('GET')] decoded query arguments contained in the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/searchParams) + */ + get searchParams(): URLSearchParams; + /** + * The **`toJSON()`** method of the URL interface returns a string containing a serialized version of the URL, although in practice it seems to have the same effect as ```js-nolint toJSON() ``` None. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/toJSON) + */ + toJSON(): string; + /*function toString() { [native code] }*/ + toString(): string; + /** + * The **`URL.canParse()`** static method of the URL interface returns a boolean indicating whether or not an absolute URL, or a relative URL combined with a base URL, are parsable and valid. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/canParse_static) + */ + static canParse(url: string, base?: string): boolean; + /** + * The **`URL.parse()`** static method of the URL interface returns a newly created URL object representing the URL defined by the parameters. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/parse_static) + */ + static parse(url: string, base?: string): URL | null; + /** + * The **`createObjectURL()`** static method of the URL interface creates a string containing a URL representing the object given in the parameter. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/createObjectURL_static) + */ + static createObjectURL(object: File | Blob): string; + /** + * The **`revokeObjectURL()`** static method of the URL interface releases an existing object URL which was previously created by calling Call this method when you've finished using an object URL to let the browser know not to keep the reference to the file any longer. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/revokeObjectURL_static) + */ + static revokeObjectURL(object_url: string): void; +} +/** + * The **`URLSearchParams`** interface defines utility methods to work with the query string of a URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams) + */ +declare class URLSearchParams { + constructor(init?: (Iterable> | Record | string)); + /** + * The **`size`** read-only property of the URLSearchParams interface indicates the total number of search parameter entries. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/size) + */ + get size(): number; + /** + * The **`append()`** method of the URLSearchParams interface appends a specified key/value pair as a new search parameter. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/append) + */ + append(name: string, value: string): void; + /** + * The **`delete()`** method of the URLSearchParams interface deletes specified parameters and their associated value(s) from the list of all search parameters. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/delete) + */ + delete(name: string, value?: string): void; + /** + * The **`get()`** method of the URLSearchParams interface returns the first value associated to the given search parameter. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/get) + */ + get(name: string): string | null; + /** + * The **`getAll()`** method of the URLSearchParams interface returns all the values associated with a given search parameter as an array. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/getAll) + */ + getAll(name: string): string[]; + /** + * The **`has()`** method of the URLSearchParams interface returns a boolean value that indicates whether the specified parameter is in the search parameters. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/has) + */ + has(name: string, value?: string): boolean; + /** + * The **`set()`** method of the URLSearchParams interface sets the value associated with a given search parameter to the given value. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/set) + */ + set(name: string, value: string): void; + /** + * The **`URLSearchParams.sort()`** method sorts all key/value pairs contained in this object in place and returns `undefined`. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/sort) + */ + sort(): void; + /* Returns an array of key, value pairs for every entry in the search params. */ + entries(): IterableIterator<[ + key: string, + value: string + ]>; + /* Returns a list of keys in the search params. */ + keys(): IterableIterator; + /* Returns a list of values in the search params. */ + values(): IterableIterator; + forEach(callback: (this: This, value: string, key: string, parent: URLSearchParams) => void, thisArg?: This): void; + /*function toString() { [native code] }*/ + toString(): string; + [Symbol.iterator](): IterableIterator<[ + key: string, + value: string + ]>; +} +declare class URLPattern { + constructor(input?: (string | URLPatternInit), baseURL?: (string | URLPatternOptions), patternOptions?: URLPatternOptions); + get protocol(): string; + get username(): string; + get password(): string; + get hostname(): string; + get port(): string; + get pathname(): string; + get search(): string; + get hash(): string; + get hasRegExpGroups(): boolean; + test(input?: (string | URLPatternInit), baseURL?: string): boolean; + exec(input?: (string | URLPatternInit), baseURL?: string): URLPatternResult | null; +} +interface URLPatternInit { + protocol?: string; + username?: string; + password?: string; + hostname?: string; + port?: string; + pathname?: string; + search?: string; + hash?: string; + baseURL?: string; +} +interface URLPatternComponentResult { + input: string; + groups: Record; +} +interface URLPatternResult { + inputs: (string | URLPatternInit)[]; + protocol: URLPatternComponentResult; + username: URLPatternComponentResult; + password: URLPatternComponentResult; + hostname: URLPatternComponentResult; + port: URLPatternComponentResult; + pathname: URLPatternComponentResult; + search: URLPatternComponentResult; + hash: URLPatternComponentResult; +} +interface URLPatternOptions { + ignoreCase?: boolean; +} +/** + * A `CloseEvent` is sent to clients using WebSockets when the connection is closed. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CloseEvent) + */ +declare class CloseEvent extends Event { + constructor(type: string, initializer?: CloseEventInit); + /** + * The **`code`** read-only property of the CloseEvent interface returns a WebSocket connection close code indicating the reason the connection was closed. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CloseEvent/code) + */ + readonly code: number; + /** + * The **`reason`** read-only property of the CloseEvent interface returns the WebSocket connection close reason the server gave for closing the connection; that is, a concise human-readable prose explanation for the closure. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CloseEvent/reason) + */ + readonly reason: string; + /** + * The **`wasClean`** read-only property of the CloseEvent interface returns `true` if the connection closed cleanly. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CloseEvent/wasClean) + */ + readonly wasClean: boolean; +} +interface CloseEventInit { + code?: number; + reason?: string; + wasClean?: boolean; +} +type WebSocketEventMap = { + close: CloseEvent; + message: MessageEvent; + open: Event; + error: ErrorEvent; +}; +/** + * The `WebSocket` object provides the API for creating and managing a WebSocket connection to a server, as well as for sending and receiving data on the connection. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket) + */ +declare var WebSocket: { + prototype: WebSocket; + new (url: string, protocols?: (string[] | string)): WebSocket; + readonly READY_STATE_CONNECTING: number; + readonly CONNECTING: number; + readonly READY_STATE_OPEN: number; + readonly OPEN: number; + readonly READY_STATE_CLOSING: number; + readonly CLOSING: number; + readonly READY_STATE_CLOSED: number; + readonly CLOSED: number; +}; +/** + * The `WebSocket` object provides the API for creating and managing a WebSocket connection to a server, as well as for sending and receiving data on the connection. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket) + */ +interface WebSocket extends EventTarget { + accept(options?: WebSocketAcceptOptions): void; + /** + * The **`WebSocket.send()`** method enqueues the specified data to be transmitted to the server over the WebSocket connection, increasing the value of `bufferedAmount` by the number of bytes needed to contain the data. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/send) + */ + send(message: (ArrayBuffer | ArrayBufferView) | string): void; + /** + * The **`WebSocket.close()`** method closes the already `CLOSED`, this method does nothing. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/close) + */ + close(code?: number, reason?: string): void; + serializeAttachment(attachment: any): void; + deserializeAttachment(): any | null; + /** + * The **`WebSocket.readyState`** read-only property returns the current state of the WebSocket connection. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/readyState) + */ + readyState: number; + /** + * The **`WebSocket.url`** read-only property returns the absolute URL of the WebSocket as resolved by the constructor. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/url) + */ + url: string | null; + /** + * The **`WebSocket.protocol`** read-only property returns the name of the sub-protocol the server selected; this will be one of the strings specified in the `protocols` parameter when creating the WebSocket object, or the empty string if no connection is established. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/protocol) + */ + protocol: string | null; + /** + * The **`WebSocket.extensions`** read-only property returns the extensions selected by the server. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/extensions) + */ + extensions: string | null; + /** + * The **`WebSocket.binaryType`** property controls the type of binary data being received over the WebSocket connection. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/binaryType) + */ + binaryType: "blob" | "arraybuffer"; +} +interface WebSocketAcceptOptions { + /** + * When set to `true`, receiving a server-initiated WebSocket Close frame will not + * automatically send a reciprocal Close frame, leaving the connection in a half-open + * state. This is useful for proxying scenarios where you need to coordinate closing + * both sides independently. Defaults to `false` when the + * `no_web_socket_half_open_by_default` compatibility flag is enabled. + */ + allowHalfOpen?: boolean; +} +declare const WebSocketPair: { + new (): { + 0: WebSocket; + 1: WebSocket; + }; +}; +interface SqlStorage { + exec>(query: string, ...bindings: any[]): SqlStorageCursor; + get databaseSize(): number; + Cursor: typeof SqlStorageCursor; + Statement: typeof SqlStorageStatement; +} +declare abstract class SqlStorageStatement { +} +type SqlStorageValue = ArrayBuffer | string | number | null; +declare abstract class SqlStorageCursor> { + next(): { + done?: false; + value: T; + } | { + done: true; + value?: never; + }; + toArray(): T[]; + one(): T; + raw(): IterableIterator; + columnNames: string[]; + get rowsRead(): number; + get rowsWritten(): number; + [Symbol.iterator](): IterableIterator; +} +interface Socket { + get readable(): ReadableStream; + get writable(): WritableStream; + get closed(): Promise; + get opened(): Promise; + get upgraded(): boolean; + get secureTransport(): "on" | "off" | "starttls"; + close(): Promise; + startTls(options?: TlsOptions): Socket; +} +interface SocketOptions { + secureTransport?: string; + allowHalfOpen: boolean; + highWaterMark?: (number | bigint); +} +interface SocketAddress { + hostname: string; + port: number; +} +interface TlsOptions { + expectedServerHostname?: string; +} +interface SocketInfo { + remoteAddress?: string; + localAddress?: string; +} +/** + * The **`EventSource`** interface is web content's interface to server-sent events. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource) + */ +declare class EventSource extends EventTarget { + constructor(url: string, init?: EventSourceEventSourceInit); + /** + * The **`close()`** method of the EventSource interface closes the connection, if one is made, and sets the ```js-nolint close() ``` None. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/close) + */ + close(): void; + /** + * The **`url`** read-only property of the URL of the source. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/url) + */ + get url(): string; + /** + * The **`withCredentials`** read-only property of the the `EventSource` object was instantiated with CORS credentials set. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/withCredentials) + */ + get withCredentials(): boolean; + /** + * The **`readyState`** read-only property of the connection. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/readyState) + */ + get readyState(): number; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/open_event) */ + get onopen(): any | null; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/open_event) */ + set onopen(value: any | null); + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/message_event) */ + get onmessage(): any | null; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/message_event) */ + set onmessage(value: any | null); + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/error_event) */ + get onerror(): any | null; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/error_event) */ + set onerror(value: any | null); + static readonly CONNECTING: number; + static readonly OPEN: number; + static readonly CLOSED: number; + static from(stream: ReadableStream): EventSource; +} +interface EventSourceEventSourceInit { + withCredentials?: boolean; + fetcher?: Fetcher; +} +interface Container { + get running(): boolean; + start(options?: ContainerStartupOptions): void; + monitor(): Promise; + destroy(error?: any): Promise; + signal(signo: number): void; + getTcpPort(port: number): Fetcher; + setInactivityTimeout(durationMs: number | bigint): Promise; + interceptOutboundHttp(addr: string, binding: Fetcher): Promise; + interceptAllOutboundHttp(binding: Fetcher): Promise; + snapshotDirectory(options: ContainerDirectorySnapshotOptions): Promise; + snapshotContainer(options: ContainerSnapshotOptions): Promise; + interceptOutboundHttps(addr: string, binding: Fetcher): Promise; +} +interface ContainerDirectorySnapshot { + id: string; + size: number; + dir: string; + name?: string; +} +interface ContainerDirectorySnapshotOptions { + dir: string; + name?: string; +} +interface ContainerDirectorySnapshotRestoreParams { + snapshot: ContainerDirectorySnapshot; + mountPoint?: string; +} +interface ContainerSnapshot { + id: string; + size: number; + name?: string; +} +interface ContainerSnapshotOptions { + name?: string; +} +interface ContainerStartupOptions { + entrypoint?: string[]; + enableInternet: boolean; + env?: Record; + labels?: Record; + directorySnapshots?: ContainerDirectorySnapshotRestoreParams[]; + containerSnapshot?: ContainerSnapshot; +} +/** + * The **`MessagePort`** interface of the Channel Messaging API represents one of the two ports of a MessageChannel, allowing messages to be sent from one port and listening out for them arriving at the other. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) + */ +declare abstract class MessagePort extends EventTarget { + /** + * The **`postMessage()`** method of the transfers ownership of objects to other browsing contexts. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort/postMessage) + */ + postMessage(data?: any, options?: (any[] | MessagePortPostMessageOptions)): void; + /** + * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort/close) + */ + close(): void; + /** + * The **`start()`** method of the MessagePort interface starts the sending of messages queued on the port. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort/start) + */ + start(): void; + get onmessage(): any | null; + set onmessage(value: any | null); +} +/** + * The **`MessageChannel`** interface of the Channel Messaging API allows us to create a new message channel and send data through it via its two MessagePort properties. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageChannel) + */ +declare class MessageChannel { + constructor(); + /** + * The **`port1`** read-only property of the the port attached to the context that originated the channel. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageChannel/port1) + */ + readonly port1: MessagePort; + /** + * The **`port2`** read-only property of the the port attached to the context at the other end of the channel, which the message is initially sent to. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageChannel/port2) + */ + readonly port2: MessagePort; +} +interface MessagePortPostMessageOptions { + transfer?: any[]; +} +type LoopbackForExport Rpc.EntrypointBranded) | ExportedHandler | undefined = undefined> = T extends new (...args: any[]) => Rpc.WorkerEntrypointBranded ? LoopbackServiceStub> : T extends new (...args: any[]) => Rpc.DurableObjectBranded ? LoopbackDurableObjectClass> : T extends ExportedHandler ? LoopbackServiceStub : undefined; +type LoopbackServiceStub = Fetcher & (T extends CloudflareWorkersModule.WorkerEntrypoint ? (opts: { + props?: Props; +}) => Fetcher : (opts: { + props?: any; +}) => Fetcher); +type LoopbackDurableObjectClass = DurableObjectClass & (T extends CloudflareWorkersModule.DurableObject ? (opts: { + props?: Props; +}) => DurableObjectClass : (opts: { + props?: any; +}) => DurableObjectClass); +interface LoopbackDurableObjectNamespace extends DurableObjectNamespace { +} +interface LoopbackColoLocalActorNamespace extends ColoLocalActorNamespace { +} +interface SyncKvStorage { + get(key: string): T | undefined; + list(options?: SyncKvListOptions): Iterable<[ + string, + T + ]>; + put(key: string, value: T): void; + delete(key: string): boolean; +} +interface SyncKvListOptions { + start?: string; + startAfter?: string; + end?: string; + prefix?: string; + reverse?: boolean; + limit?: number; +} +interface WorkerStub { + getEntrypoint(name?: string, options?: WorkerStubEntrypointOptions): Fetcher; + getDurableObjectClass(name?: string, options?: WorkerStubEntrypointOptions): DurableObjectClass; +} +interface WorkerStubEntrypointOptions { + props?: any; + limits?: workerdResourceLimits; +} +interface WorkerLoader { + get(name: string | null, getCode: () => WorkerLoaderWorkerCode | Promise): WorkerStub; + load(code: WorkerLoaderWorkerCode): WorkerStub; +} +interface WorkerLoaderModule { + js?: string; + cjs?: string; + text?: string; + data?: ArrayBuffer; + json?: any; + py?: string; + wasm?: ArrayBuffer; +} +interface WorkerLoaderWorkerCode { + compatibilityDate: string; + compatibilityFlags?: string[]; + allowExperimental?: boolean; + limits?: workerdResourceLimits; + mainModule: string; + modules: Record; + env?: any; + globalOutbound?: (Fetcher | null); + tails?: Fetcher[]; + streamingTails?: Fetcher[]; +} +interface workerdResourceLimits { + cpuMs?: number; + subRequests?: number; +} +/** +* The Workers runtime supports a subset of the Performance API, used to measure timing and performance, +* as well as timing of subrequests and other operations. +* +* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/performance/) +*/ +declare abstract class Performance { + /* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/performance/#performancetimeorigin) */ + get timeOrigin(): number; + /* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/performance/#performancenow) */ + now(): number; + /** + * The **`toJSON()`** method of the Performance interface is a Serialization; it returns a JSON representation of the Performance object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Performance/toJSON) + */ + toJSON(): object; +} +interface Tracing { + enterSpan(name: string, callback: (span: Span, ...args: A) => T, ...args: A): T; + Span: typeof Span; +} +declare abstract class Span { + get isTraced(): boolean; + setAttribute(key: string, value?: (boolean | number | string)): void; +} +// ============ AI Search Error Interfaces ============ +interface AiSearchInternalError extends Error { +} +interface AiSearchNotFoundError extends Error { +} +// ============ AI Search Common Types ============ +/** A single message in a conversation-style search or chat request. */ +type AiSearchMessage = { + role: 'system' | 'developer' | 'user' | 'assistant' | 'tool'; + content: string | null; +}; +/** + * Common shape for `ai_search_options` used by both single-instance and multi-instance requests. + * Contains retrieval, query rewrite, reranking, and cache sub-options. + */ +type AiSearchOptions = { + retrieval?: { + /** Which retrieval backend to use. Defaults to the instance's configured index_method. */ + retrieval_type?: 'vector' | 'keyword' | 'hybrid'; + /** Fusion method for combining vector + keyword results. */ + fusion_method?: 'max' | 'rrf'; + /** How keyword terms are combined: "and" = all terms must match, "or" = any term matches. */ + keyword_match_mode?: 'and' | 'or'; + /** Minimum similarity score (0-1) for a result to be included. Default 0.4. */ + match_threshold?: number; + /** Maximum number of results to return (1-50). Default 10. */ + max_num_results?: number; + /** Vectorize metadata filters applied to the search. */ + filters?: VectorizeVectorMetadataFilter; + /** Number of surrounding chunks to include for context (0-3). Default 0. */ + context_expansion?: number; + /** If true, return only item metadata without chunk text. */ + metadata_only?: boolean; + /** If true (default), return empty results on retrieval failure instead of throwing. */ + return_on_failure?: boolean; + /** Boost results by metadata field values. Max 3 entries. */ + boost_by?: Array<{ + field: string; + direction?: 'asc' | 'desc' | 'exists' | 'not_exists'; + }>; + [key: string]: unknown; + }; + query_rewrite?: { + enabled?: boolean; + model?: string; + rewrite_prompt?: string; + [key: string]: unknown; + }; + reranking?: { + enabled?: boolean; + model?: string; + /** Match threshold (0-1, default 0.4) */ + match_threshold?: number; + [key: string]: unknown; + }; + cache?: { + enabled?: boolean; + cache_threshold?: 'super_strict_match' | 'close_enough' | 'flexible_friend' | 'anything_goes'; + }; + [key: string]: unknown; +}; +// ============ AI Search Request Types ============ +/** + * Request body for single-instance search. + * Exactly one of `query` or `messages` must be provided. + */ +type AiSearchSearchRequest = { + /** Simple query string. */ + query: string; + messages?: never; + ai_search_options?: AiSearchOptions; +} | { + query?: never; + /** Conversation-style input. At least one user message with non-empty content is required. */ + messages: AiSearchMessage[]; + ai_search_options?: AiSearchOptions; +}; +type AiSearchChatCompletionsRequest = { + messages: AiSearchMessage[]; + model?: string; + stream?: boolean; + ai_search_options?: AiSearchOptions; + [key: string]: unknown; +}; +// ============ AI Search Multi-Instance Types (Namespace-Scoped) ============ +/** `ai_search_options` shape for multi-instance requests — requires `instance_ids`. */ +type AiSearchMultiSearchOptions = AiSearchOptions & { + /** Instance IDs to search across (1-10). */ + instance_ids: string[]; +}; +/** + * Request for searching across multiple instances within a namespace. + * `ai_search_options` is required and must include `instance_ids`. + * Exactly one of `query` or `messages` must be provided. + */ +type AiSearchMultiSearchRequest = { + /** Simple query string. */ + query: string; + messages?: never; + ai_search_options: AiSearchMultiSearchOptions; +} | { + query?: never; + /** Conversation-style input. */ + messages: AiSearchMessage[]; + ai_search_options: AiSearchMultiSearchOptions; +}; +/** A search result chunk tagged with the instance it originated from. */ +type AiSearchMultiSearchChunk = AiSearchSearchResponse['chunks'][number] & { + instance_id: string; +}; +/** Describes a per-instance error during a multi-instance operation. */ +type AiSearchMultiSearchError = { + instance_id: string; + message: string; +}; +/** Response from a multi-instance search, with chunks tagged by instance and optional partial-failure errors. */ +type AiSearchMultiSearchResponse = { + search_query: string; + chunks: AiSearchMultiSearchChunk[]; + errors?: AiSearchMultiSearchError[]; +}; +/** Request for chat completions across multiple instances within a namespace. `ai_search_options` is required and must include `instance_ids`. */ +type AiSearchMultiChatCompletionsRequest = Omit & { + ai_search_options: AiSearchMultiSearchOptions; +}; +/** Response from multi-instance chat completions, with chunks tagged by instance and optional partial-failure errors. */ +type AiSearchMultiChatCompletionsResponse = Omit & { + chunks: AiSearchMultiSearchChunk[]; + errors?: AiSearchMultiSearchError[]; +}; +// ============ AI Search Response Types ============ +type AiSearchSearchResponse = { + search_query: string; + chunks: Array<{ + id: string; + type: string; + /** Match score (0-1) */ + score: number; + text: string; + item: { + timestamp?: number; + key: string; + metadata?: Record; + }; + scoring_details?: { + /** Keyword match score (0-1) */ + keyword_score?: number; + /** Vector similarity score (0-1) */ + vector_score?: number; + /** Keyword rank position */ + keyword_rank?: number; + /** Vector rank position */ + vector_rank?: number; + /** Reranking model score */ + reranking_score?: number; + /** Fusion method used to combine results */ + fusion_method?: 'rrf' | 'max'; + [key: string]: unknown; + }; + }>; +}; +type AiSearchChatCompletionsResponse = { + id?: string; + object?: string; + model?: string; + choices: Array<{ + index?: number; + message: { + role: 'system' | 'developer' | 'user' | 'assistant' | 'tool'; + content: string | null; + [key: string]: unknown; + }; + [key: string]: unknown; + }>; + chunks: AiSearchSearchResponse['chunks']; + [key: string]: unknown; +}; +type AiSearchStatsResponse = { + queued?: number; + running?: number; + completed?: number; + error?: number; + skipped?: number; + outdated?: number; + last_activity?: string; + /** Storage engine statistics. */ + engine?: { + vectorize?: { + vectorsCount: number; + dimensions: number; + }; + r2?: { + payloadSizeBytes: number; + metadataSizeBytes: number; + objectCount: number; + }; + }; +}; +// ============ AI Search Instance Info Types ============ +type AiSearchInstanceInfo = { + id: string; + type?: 'r2' | 'web-crawler' | string; + source?: string; + source_params?: unknown; + paused?: boolean; + status?: string; + namespace?: string; + created_at?: string; + modified_at?: string; + token_id?: string; + ai_gateway_id?: string; + rewrite_query?: boolean; + reranking?: boolean; + embedding_model?: string; + ai_search_model?: string; + rewrite_model?: string; + reranking_model?: string; + /** @deprecated Use index_method instead. */ + hybrid_search_enabled?: boolean; + /** Controls which storage backends are active. */ + index_method?: { + vector?: boolean; + keyword?: boolean; + }; + /** Fusion method for combining vector and keyword results. */ + fusion_method?: 'max' | 'rrf'; + indexing_options?: { + keyword_tokenizer?: 'porter' | 'trigram'; + } | null; + retrieval_options?: { + keyword_match_mode?: 'and' | 'or'; + boost_by?: Array<{ + field: string; + direction?: 'asc' | 'desc' | 'exists' | 'not_exists'; + }>; + } | null; + chunk?: boolean; + chunk_size?: number; + chunk_overlap?: number; + score_threshold?: number; + max_num_results?: number; + cache?: boolean; + cache_threshold?: 'super_strict_match' | 'close_enough' | 'flexible_friend' | 'anything_goes'; + custom_metadata?: Array<{ + field_name: string; + data_type: 'text' | 'number' | 'boolean' | 'datetime'; + }>; + /** Sync interval in seconds. */ + sync_interval?: 3600 | 7200 | 14400 | 21600 | 43200 | 86400; + metadata?: Record; + [key: string]: unknown; +}; +/** Pagination, search, and ordering parameters for listing instances within a namespace. */ +type AiSearchListInstancesParams = { + page?: number; + per_page?: number; + /** Search instances by ID. */ + search?: string; + /** Field to sort by. */ + order_by?: 'created_at'; + /** Sort direction. */ + order_by_direction?: 'asc' | 'desc'; +}; +type AiSearchListResponse = { + result: AiSearchInstanceInfo[]; + result_info?: { + count: number; + page: number; + per_page: number; + total_count: number; + }; +}; +// ============ AI Search Config Types ============ +type AiSearchConfig = { + /** Instance ID (1-32 chars, pattern: ^[a-z0-9_]+(?:-[a-z0-9_]+)*$) */ + id: string; + /** Instance type. Omit to create with built-in storage. */ + type?: 'r2' | 'web-crawler' | string; + /** Source URL (required for web-crawler type). */ + source?: string; + source_params?: unknown; + /** Token ID (UUID format) */ + token_id?: string; + ai_gateway_id?: string; + /** Enable query rewriting (default false) */ + rewrite_query?: boolean; + /** Enable reranking (default false) */ + reranking?: boolean; + embedding_model?: string; + ai_search_model?: string; + rewrite_model?: string; + reranking_model?: string; + /** @deprecated Use index_method instead. */ + hybrid_search_enabled?: boolean; + /** Controls which storage backends are used during indexing. Defaults to vector-only. */ + index_method?: { + vector?: boolean; + keyword?: boolean; + }; + /** Fusion method for combining vector and keyword results. "rrf" = reciprocal rank fusion (default), "max" = maximum score. */ + fusion_method?: 'max' | 'rrf'; + indexing_options?: { + keyword_tokenizer?: 'porter' | 'trigram'; + } | null; + retrieval_options?: { + keyword_match_mode?: 'and' | 'or'; + boost_by?: Array<{ + field: string; + direction?: 'asc' | 'desc' | 'exists' | 'not_exists'; + }>; + } | null; + chunk?: boolean; + chunk_size?: number; + chunk_overlap?: number; + /** Minimum similarity score (0-1) for a result to be included. */ + score_threshold?: number; + max_num_results?: number; + cache?: boolean; + /** Similarity threshold for cache hits. Stricter = fewer cache hits but higher relevance. */ + cache_threshold?: 'super_strict_match' | 'close_enough' | 'flexible_friend' | 'anything_goes'; + custom_metadata?: Array<{ + field_name: string; + data_type: 'text' | 'number' | 'boolean' | 'datetime'; + }>; + namespace?: string; + /** Sync interval in seconds. 3600=1h, 7200=2h, 14400=4h, 21600=6h, 43200=12h, 86400=24h. */ + sync_interval?: 3600 | 7200 | 14400 | 21600 | 43200 | 86400; + metadata?: Record; + [key: string]: unknown; +}; +// ============ AI Search Item Types ============ +type AiSearchItemInfo = { + id: string; + key: string; + status: 'completed' | 'error' | 'skipped' | 'queued' | 'running' | 'outdated'; + next_action?: 'INDEX' | 'DELETE' | null; + error?: string; + checksum?: string; + namespace?: string; + chunks_count?: number | null; + file_size?: number | null; + source_id?: string | null; + last_seen_at?: string; + created_at?: string; + metadata?: Record; + [key: string]: unknown; +}; +type AiSearchItemContentResult = { + body: ReadableStream; + contentType: string; + filename: string; + size: number; +}; +type AiSearchUploadItemOptions = { + metadata?: Record; +}; +type AiSearchListItemsParams = { + page?: number; + per_page?: number; + /** Search items by key name. */ + search?: string; + /** Sort order for results. */ + sort_by?: 'status' | 'modified_at'; + /** Filter items by processing status. */ + status?: 'queued' | 'running' | 'completed' | 'error' | 'skipped' | 'outdated'; + /** Filter items by source (e.g. "builtin" or "web-crawler:https://example.com"). */ + source?: string; + /** JSON-encoded Vectorize filter for metadata filtering. */ + metadata_filter?: string; +}; +type AiSearchListItemsResponse = { + result: AiSearchItemInfo[]; + result_info?: { + count: number; + page: number; + per_page: number; + total_count: number; + }; +}; +// ============ AI Search Item Logs Types ============ +type AiSearchItemLogsParams = { + /** Maximum number of log entries to return (1-100, default 50). */ + limit?: number; + /** Opaque cursor for pagination. Pass the `cursor` value from a previous response. */ + cursor?: string; +}; +type AiSearchItemLog = { + timestamp: string; + action: string; + message: string; + fileKey?: string; + chunkCount?: number; + processingTimeMs?: number; + errorType?: string; +}; +/** Paginated response for item processing logs (cursor-based). */ +type AiSearchItemLogsResponse = { + result: AiSearchItemLog[]; + result_info: { + count: number; + per_page: number; + cursor: string | null; + truncated: boolean; + }; +}; +// ============ AI Search Item Chunks Types ============ +type AiSearchItemChunksParams = { + /** Maximum number of chunks to return (1-100, default 20). */ + limit?: number; + /** Offset into the chunks list (default 0). */ + offset?: number; +}; +/** A single indexed chunk belonging to an item, including its text content and byte range. */ +type AiSearchItemChunk = { + id: string; + text: string; + start_byte: number; + end_byte: number; + item?: { + timestamp?: number; + key: string; + metadata?: Record; + }; +}; +/** Paginated response for item chunks (offset-based). */ +type AiSearchItemChunksResponse = { + result: AiSearchItemChunk[]; + result_info: { + count: number; + total: number; + limit: number; + offset: number; + }; +}; +// ============ AI Search Job Types ============ +type AiSearchJobInfo = { + id: string; + source: 'user' | 'schedule'; + description?: string; + last_seen_at?: string; + started_at?: string; + ended_at?: string; + end_reason?: string; +}; +type AiSearchJobLog = { + id: number; + message: string; + message_type: number; + created_at: number; +}; +type AiSearchCreateJobParams = { + description?: string; +}; +type AiSearchListJobsParams = { + page?: number; + per_page?: number; +}; +type AiSearchListJobsResponse = { + result: AiSearchJobInfo[]; + result_info?: { + count: number; + page: number; + per_page: number; + total_count: number; + }; +}; +type AiSearchJobLogsParams = { + page?: number; + per_page?: number; +}; +type AiSearchJobLogsResponse = { + result: AiSearchJobLog[]; + result_info?: { + count: number; + page: number; + per_page: number; + total_count: number; + }; +}; +// ============ AI Search Sub-Service Classes ============ +/** + * Single item service for an AI Search instance. + * Provides info, download, sync, logs, and chunks operations on a specific item. + */ +declare abstract class AiSearchItem { + /** Get metadata about this item. */ + info(): Promise; + /** + * Download the item's content. + * @returns Object with body stream, content type, filename, and size. + */ + download(): Promise; + /** + * Trigger re-indexing of this item. + * @returns The updated item info. + */ + sync(): Promise; + /** + * Retrieve processing logs for this item (cursor-based pagination). + * @param params Optional pagination parameters (limit, cursor). + * @returns Paginated log entries for this item. + */ + logs(params?: AiSearchItemLogsParams): Promise; + /** + * List indexed chunks for this item (offset-based pagination). + * @param params Optional pagination parameters (limit, offset). + * @returns Paginated chunk entries for this item. + */ + chunks(params?: AiSearchItemChunksParams): Promise; +} +/** + * Items collection service for an AI Search instance. + * Provides list, upload, and access to individual items. + */ +declare abstract class AiSearchItems { + /** List items in this instance. */ + list(params?: AiSearchListItemsParams): Promise; + /** + * Upload a file as an item. Behaves as an upsert: if an item with the same + * filename already exists, it is overwritten and re-indexed. + * @param name Filename for the uploaded item. + * @param content File content as a ReadableStream, Blob, or string. + * @param options Optional metadata to attach to the item. + * @returns The created item info. + */ + upload(name: string, content: ReadableStream | Blob | string, options?: AiSearchUploadItemOptions): Promise; + /** + * Upload a file and poll until processing completes. + * Behaves as an upsert: if an item with the same filename already exists, + * it is overwritten and re-indexed. + * @param name Filename for the uploaded item. + * @param content File content as a ReadableStream, Blob, or string. + * @param options Optional metadata and polling configuration. + * @returns The item info after processing completes (or timeout). + */ + uploadAndPoll(name: string, content: ReadableStream | Blob | string, options?: AiSearchUploadItemOptions & { + /** Polling interval in milliseconds (default 1000). */ + pollIntervalMs?: number; + /** Maximum time to wait in milliseconds (default 30000). */ + timeoutMs?: number; + }): Promise; + /** + * Get an item by ID. + * @param itemId The item identifier. + * @returns Item service for info, download, sync, logs, and chunks operations. + */ + get(itemId: string): AiSearchItem; + /** + * Delete an item from the instance. + * @param itemId The item identifier. + */ + delete(itemId: string): Promise; +} +/** + * Single job service for an AI Search instance. + * Provides info, logs, and cancel operations for a specific job. + */ +declare abstract class AiSearchJob { + /** Get metadata about this job. */ + info(): Promise; + /** Get logs for this job. */ + logs(params?: AiSearchJobLogsParams): Promise; + /** + * Cancel a running job. + * @returns The updated job info. + * @throws AiSearchNotFoundError if the job does not exist. + */ + cancel(): Promise; +} +/** + * Jobs collection service for an AI Search instance. + * Provides list, create, and access to individual jobs. + */ +declare abstract class AiSearchJobs { + /** List jobs for this instance. */ + list(params?: AiSearchListJobsParams): Promise; + /** + * Create a new indexing job. + * @param params Optional job parameters. + * @returns The created job info. + */ + create(params?: AiSearchCreateJobParams): Promise; + /** + * Get a job by ID. + * @param jobId The job identifier. + * @returns Job service for info, logs, and cancel operations. + */ + get(jobId: string): AiSearchJob; +} +// ============ AI Search Binding Classes ============ +/** + * Instance-level AI Search service. + * + * Used as: + * - The return type of `AiSearchNamespace.get(name)` (namespace binding) + * - The type of `env.BLOG_SEARCH` (single instance binding via `ai_search`) + * + * Provides search, chat, update, stats, items, and jobs operations. + * + * @example + * ```ts + * // Via namespace binding + * const instance = env.AI_SEARCH.get("blog"); + * const results = await instance.search({ + * query: "How does caching work?", + * }); + * + * // Via single instance binding + * const results = await env.BLOG_SEARCH.search({ + * messages: [{ role: "user", content: "How does caching work?" }], + * }); + * ``` + */ +declare abstract class AiSearchInstance { + /** + * Search the AI Search instance for relevant chunks. + * @param params Search request with query or messages and optional AI search options. + * @returns Search response with matching chunks and search query. + */ + search(params: AiSearchSearchRequest): Promise; + /** + * Generate chat completions with AI Search context (streaming). + * @param params Chat completions request with stream: true. + * @returns ReadableStream of server-sent events. + */ + chatCompletions(params: AiSearchChatCompletionsRequest & { + stream: true; + }): Promise; + /** + * Generate chat completions with AI Search context. + * @param params Chat completions request. + * @returns Chat completion response with choices and RAG chunks. + */ + chatCompletions(params: AiSearchChatCompletionsRequest): Promise; + /** + * Update the instance configuration. + * @param config Partial configuration to update. + * @returns Updated instance info. + */ + update(config: Partial): Promise; + /** Get metadata about this instance. */ + info(): Promise; + /** + * Get instance statistics (item count, indexing status, etc.). + * @returns Statistics with counts per status, last activity time, and engine details. + */ + stats(): Promise; + /** Items collection — list, upload, and manage items in this instance. */ + get items(): AiSearchItems; + /** Jobs collection — list, create, and inspect indexing jobs. */ + get jobs(): AiSearchJobs; +} +/** + * Namespace-level AI Search service. + * + * Used as the type of `env.AI_SEARCH` (namespace binding via `ai_search_namespaces`). + * Scoped to a single namespace. Provides dynamic instance access, creation, deletion, + * and multi-instance search/chat operations. + * + * @example + * ```ts + * // Access an instance within the namespace + * const blog = env.AI_SEARCH.get("blog"); + * const results = await blog.search({ query: "How does caching work?" }); + * + * // List all instances in the namespace + * const instances = await env.AI_SEARCH.list(); + * + * // Create a new instance with built-in storage + * const tenant = await env.AI_SEARCH.create({ id: "tenant-123" }); + * + * // Upload items into the instance + * await tenant.items.upload("doc.pdf", fileContent); + * + * // Search across multiple instances + * const multi = await env.AI_SEARCH.search({ + * query: "caching", + * ai_search_options: { instance_ids: ["blog", "docs"] }, + * }); + * + * // Delete an instance + * await env.AI_SEARCH.delete("tenant-123"); + * ``` + */ +declare abstract class AiSearchNamespace { + /** + * Get an instance by name within the bound namespace. + * @param name Instance name. + * @returns Instance service for search, chat, update, stats, items, and jobs. + */ + get(name: string): AiSearchInstance; + /** + * List instances in the bound namespace. + * @param params Optional pagination, search, and ordering parameters. + * @returns Array of instance metadata with pagination info. + */ + list(params?: AiSearchListInstancesParams): Promise; + /** + * Create a new instance within the bound namespace. + * @param config Instance configuration. Only `id` is required — omit `type` and `source` to create with built-in storage. + * @returns Instance service for the newly created instance. + * + * @example + * ```ts + * // Create with built-in storage (upload items manually) + * const instance = await env.AI_SEARCH.create({ id: "my-search" }); + * + * // Create with web crawler source + * const instance = await env.AI_SEARCH.create({ + * id: "docs-search", + * type: "web-crawler", + * source: "https://developers.cloudflare.com", + * }); + * ``` + */ + create(config: AiSearchConfig): Promise; + /** + * Delete an instance from the bound namespace. + * @param name Instance name to delete. + */ + delete(name: string): Promise; + /** + * Search across multiple instances within the bound namespace. + * Fans out to the specified instance_ids and merges results. + * @param params Search request with required `ai_search_options.instance_ids`. + * @returns Search response with chunks tagged by instance_id and optional partial-failure errors. + */ + search(params: AiSearchMultiSearchRequest): Promise; + /** + * Generate chat completions across multiple instances within the bound namespace (streaming). + * Fans out to the specified instance_ids, merges context, and generates a response. + * @param params Chat completions request with stream: true and required `ai_search_options.instance_ids`. + * @returns ReadableStream of server-sent events. + */ + chatCompletions(params: AiSearchMultiChatCompletionsRequest & { + stream: true; + }): Promise; + /** + * Generate chat completions across multiple instances within the bound namespace. + * Fans out to the specified instance_ids, merges context, and generates a response. + * @param params Chat completions request with required `ai_search_options.instance_ids`. + * @returns Chat completion response with choices, chunks tagged by instance_id, and optional partial-failure errors. + */ + chatCompletions(params: AiSearchMultiChatCompletionsRequest): Promise; +} +type AiImageClassificationInput = { + image: number[]; +}; +type AiImageClassificationOutput = { + score?: number; + label?: string; +}[]; +declare abstract class BaseAiImageClassification { + inputs: AiImageClassificationInput; + postProcessedOutputs: AiImageClassificationOutput; +} +type AiImageToTextInput = { + image: number[]; + prompt?: string; + max_tokens?: number; + temperature?: number; + top_p?: number; + top_k?: number; + seed?: number; + repetition_penalty?: number; + frequency_penalty?: number; + presence_penalty?: number; + raw?: boolean; + messages?: RoleScopedChatInput[]; +}; +type AiImageToTextOutput = { + description: string; +}; +declare abstract class BaseAiImageToText { + inputs: AiImageToTextInput; + postProcessedOutputs: AiImageToTextOutput; +} +type AiImageTextToTextInput = { + image: string; + prompt?: string; + max_tokens?: number; + temperature?: number; + ignore_eos?: boolean; + top_p?: number; + top_k?: number; + seed?: number; + repetition_penalty?: number; + frequency_penalty?: number; + presence_penalty?: number; + raw?: boolean; + messages?: RoleScopedChatInput[]; +}; +type AiImageTextToTextOutput = { + description: string; +}; +declare abstract class BaseAiImageTextToText { + inputs: AiImageTextToTextInput; + postProcessedOutputs: AiImageTextToTextOutput; +} +type AiMultimodalEmbeddingsInput = { + image: string; + text: string[]; +}; +type AiIMultimodalEmbeddingsOutput = { + data: number[][]; + shape: number[]; +}; +declare abstract class BaseAiMultimodalEmbeddings { + inputs: AiImageTextToTextInput; + postProcessedOutputs: AiImageTextToTextOutput; +} +type AiObjectDetectionInput = { + image: number[]; +}; +type AiObjectDetectionOutput = { + score?: number; + label?: string; +}[]; +declare abstract class BaseAiObjectDetection { + inputs: AiObjectDetectionInput; + postProcessedOutputs: AiObjectDetectionOutput; +} +type AiSentenceSimilarityInput = { + source: string; + sentences: string[]; +}; +type AiSentenceSimilarityOutput = number[]; +declare abstract class BaseAiSentenceSimilarity { + inputs: AiSentenceSimilarityInput; + postProcessedOutputs: AiSentenceSimilarityOutput; +} +type AiAutomaticSpeechRecognitionInput = { + audio: number[]; +}; +type AiAutomaticSpeechRecognitionOutput = { + text?: string; + words?: { + word: string; + start: number; + end: number; + }[]; + vtt?: string; +}; +declare abstract class BaseAiAutomaticSpeechRecognition { + inputs: AiAutomaticSpeechRecognitionInput; + postProcessedOutputs: AiAutomaticSpeechRecognitionOutput; +} +type AiSummarizationInput = { + input_text: string; + max_length?: number; +}; +type AiSummarizationOutput = { + summary: string; +}; +declare abstract class BaseAiSummarization { + inputs: AiSummarizationInput; + postProcessedOutputs: AiSummarizationOutput; +} +type AiTextClassificationInput = { + text: string; +}; +type AiTextClassificationOutput = { + score?: number; + label?: string; +}[]; +declare abstract class BaseAiTextClassification { + inputs: AiTextClassificationInput; + postProcessedOutputs: AiTextClassificationOutput; +} +type AiTextEmbeddingsInput = { + text: string | string[]; +}; +type AiTextEmbeddingsOutput = { + shape: number[]; + data: number[][]; +}; +declare abstract class BaseAiTextEmbeddings { + inputs: AiTextEmbeddingsInput; + postProcessedOutputs: AiTextEmbeddingsOutput; +} +type RoleScopedChatInput = { + role: "user" | "assistant" | "system" | "tool" | (string & NonNullable); + content: string; + name?: string; +}; +type AiTextGenerationToolLegacyInput = { + name: string; + description: string; + parameters?: { + type: "object" | (string & NonNullable); + properties: { + [key: string]: { + type: string; + description?: string; + }; + }; + required: string[]; + }; +}; +type AiTextGenerationToolInput = { + type: "function" | (string & NonNullable); + function: { + name: string; + description: string; + parameters?: { + type: "object" | (string & NonNullable); + properties: { + [key: string]: { + type: string; + description?: string; + }; + }; + required: string[]; + }; + }; +}; +type AiTextGenerationFunctionsInput = { + name: string; + code: string; +}; +type AiTextGenerationResponseFormat = { + type: string; + json_schema?: any; +}; +type AiTextGenerationInput = { + prompt?: string; + raw?: boolean; + stream?: boolean; + max_tokens?: number; + temperature?: number; + top_p?: number; + top_k?: number; + seed?: number; + repetition_penalty?: number; + frequency_penalty?: number; + presence_penalty?: number; + messages?: RoleScopedChatInput[]; + response_format?: AiTextGenerationResponseFormat; + tools?: AiTextGenerationToolInput[] | AiTextGenerationToolLegacyInput[] | (object & NonNullable); + functions?: AiTextGenerationFunctionsInput[]; +}; +type AiTextGenerationToolLegacyOutput = { + name: string; + arguments: unknown; +}; +type AiTextGenerationToolOutput = { + id: string; + type: "function"; + function: { + name: string; + arguments: string; + }; +}; +type UsageTags = { + prompt_tokens: number; + completion_tokens: number; + total_tokens: number; +}; +type AiTextGenerationOutput = { + response?: string; + tool_calls?: AiTextGenerationToolLegacyOutput[] & AiTextGenerationToolOutput[]; + usage?: UsageTags; +}; +declare abstract class BaseAiTextGeneration { + inputs: AiTextGenerationInput; + postProcessedOutputs: AiTextGenerationOutput; +} +type AiTextToSpeechInput = { + prompt: string; + lang?: string; +}; +type AiTextToSpeechOutput = Uint8Array | { + audio: string; +}; +declare abstract class BaseAiTextToSpeech { + inputs: AiTextToSpeechInput; + postProcessedOutputs: AiTextToSpeechOutput; +} +type AiTextToImageInput = { + prompt: string; + negative_prompt?: string; + height?: number; + width?: number; + image?: number[]; + image_b64?: string; + mask?: number[]; + num_steps?: number; + strength?: number; + guidance?: number; + seed?: number; +}; +type AiTextToImageOutput = ReadableStream; +declare abstract class BaseAiTextToImage { + inputs: AiTextToImageInput; + postProcessedOutputs: AiTextToImageOutput; +} +type AiTranslationInput = { + text: string; + target_lang: string; + source_lang?: string; +}; +type AiTranslationOutput = { + translated_text?: string; +}; +declare abstract class BaseAiTranslation { + inputs: AiTranslationInput; + postProcessedOutputs: AiTranslationOutput; +} +/** + * Workers AI support for OpenAI's Chat Completions API + */ +type ChatCompletionContentPartText = { + type: "text"; + text: string; +}; +type ChatCompletionContentPartImage = { + type: "image_url"; + image_url: { + url: string; + detail?: "auto" | "low" | "high"; + }; +}; +type ChatCompletionContentPartInputAudio = { + type: "input_audio"; + input_audio: { + /** Base64 encoded audio data. */ + data: string; + format: "wav" | "mp3"; + }; +}; +type ChatCompletionContentPartFile = { + type: "file"; + file: { + /** Base64 encoded file data. */ + file_data?: string; + /** The ID of an uploaded file. */ + file_id?: string; + filename?: string; + }; +}; +type ChatCompletionContentPartRefusal = { + type: "refusal"; + refusal: string; +}; +type ChatCompletionContentPart = ChatCompletionContentPartText | ChatCompletionContentPartImage | ChatCompletionContentPartInputAudio | ChatCompletionContentPartFile; +type FunctionDefinition = { + name: string; + description?: string; + parameters?: Record; + strict?: boolean | null; +}; +type ChatCompletionFunctionTool = { + type: "function"; + function: FunctionDefinition; +}; +type ChatCompletionCustomToolGrammarFormat = { + type: "grammar"; + grammar: { + definition: string; + syntax: "lark" | "regex"; + }; +}; +type ChatCompletionCustomToolTextFormat = { + type: "text"; +}; +type ChatCompletionCustomToolFormat = ChatCompletionCustomToolTextFormat | ChatCompletionCustomToolGrammarFormat; +type ChatCompletionCustomTool = { + type: "custom"; + custom: { + name: string; + description?: string; + format?: ChatCompletionCustomToolFormat; + }; +}; +type ChatCompletionTool = ChatCompletionFunctionTool | ChatCompletionCustomTool; +type ChatCompletionMessageFunctionToolCall = { + id: string; + type: "function"; + function: { + name: string; + /** JSON-encoded arguments string. */ + arguments: string; + }; +}; +type ChatCompletionMessageCustomToolCall = { + id: string; + type: "custom"; + custom: { + name: string; + input: string; + }; +}; +type ChatCompletionMessageToolCall = ChatCompletionMessageFunctionToolCall | ChatCompletionMessageCustomToolCall; +type ChatCompletionToolChoiceFunction = { + type: "function"; + function: { + name: string; + }; +}; +type ChatCompletionToolChoiceCustom = { + type: "custom"; + custom: { + name: string; + }; +}; +type ChatCompletionToolChoiceAllowedTools = { + type: "allowed_tools"; + allowed_tools: { + mode: "auto" | "required"; + tools: Array>; + }; +}; +type ChatCompletionToolChoiceOption = "none" | "auto" | "required" | ChatCompletionToolChoiceFunction | ChatCompletionToolChoiceCustom | ChatCompletionToolChoiceAllowedTools; +type DeveloperMessage = { + role: "developer"; + content: string | Array<{ + type: "text"; + text: string; + }>; + name?: string; +}; +type SystemMessage = { + role: "system"; + content: string | Array<{ + type: "text"; + text: string; + }>; + name?: string; +}; +/** + * Permissive merged content part used inside UserMessage arrays. + * + * Cabidela has a limitation where anyOf/oneOf with enum-based discrimination + * inside nested array items does not correctly match different branches for + * different array elements, so the schema uses a single merged object. + */ +type UserMessageContentPart = { + type: "text" | "image_url" | "input_audio" | "file"; + text?: string; + image_url?: { + url?: string; + detail?: "auto" | "low" | "high"; + }; + input_audio?: { + data?: string; + format?: "wav" | "mp3"; + }; + file?: { + file_data?: string; + file_id?: string; + filename?: string; + }; +}; +type UserMessage = { + role: "user"; + content: string | Array; + name?: string; +}; +type AssistantMessageContentPart = { + type: "text" | "refusal"; + text?: string; + refusal?: string; +}; +type AssistantMessage = { + role: "assistant"; + content?: string | null | Array; + refusal?: string | null; + name?: string; + audio?: { + id: string; + }; + tool_calls?: Array; + function_call?: { + name: string; + arguments: string; + }; +}; +type ToolMessage = { + role: "tool"; + content: string | Array<{ + type: "text"; + text: string; + }>; + tool_call_id: string; +}; +type FunctionMessage = { + role: "function"; + content: string; + name: string; +}; +type ChatCompletionMessageParam = DeveloperMessage | SystemMessage | UserMessage | AssistantMessage | ToolMessage | FunctionMessage; +type ChatCompletionsResponseFormatText = { + type: "text"; +}; +type ChatCompletionsResponseFormatJSONObject = { + type: "json_object"; +}; +type ResponseFormatJSONSchema = { + type: "json_schema"; + json_schema: { + name: string; + description?: string; + schema?: Record; + strict?: boolean | null; + }; +}; +type ResponseFormat = ChatCompletionsResponseFormatText | ChatCompletionsResponseFormatJSONObject | ResponseFormatJSONSchema; +type ChatCompletionsStreamOptions = { + include_usage?: boolean; + include_obfuscation?: boolean; +}; +type PredictionContent = { + type: "content"; + content: string | Array<{ + type: "text"; + text: string; + }>; +}; +type AudioParams = { + voice: string | { + id: string; + }; + format: "wav" | "aac" | "mp3" | "flac" | "opus" | "pcm16"; +}; +type WebSearchUserLocation = { + type: "approximate"; + approximate: { + city?: string; + country?: string; + region?: string; + timezone?: string; + }; +}; +type WebSearchOptions = { + search_context_size?: "low" | "medium" | "high"; + user_location?: WebSearchUserLocation; +}; +type ChatTemplateKwargs = { + /** Whether to enable reasoning, enabled by default. */ + enable_thinking?: boolean; + /** If false, preserves reasoning context between turns. */ + clear_thinking?: boolean; +}; +/** Shared optional properties used by both Prompt and Messages input branches. */ +type ChatCompletionsCommonOptions = { + model?: string; + audio?: AudioParams; + frequency_penalty?: number | null; + logit_bias?: Record | null; + logprobs?: boolean | null; + top_logprobs?: number | null; + max_tokens?: number | null; + max_completion_tokens?: number | null; + metadata?: Record | null; + modalities?: Array<"text" | "audio"> | null; + n?: number | null; + parallel_tool_calls?: boolean; + prediction?: PredictionContent; + presence_penalty?: number | null; + reasoning_effort?: "low" | "medium" | "high" | null; + chat_template_kwargs?: ChatTemplateKwargs; + response_format?: ResponseFormat; + seed?: number | null; + service_tier?: "auto" | "default" | "flex" | "scale" | "priority" | null; + stop?: string | Array | null; + store?: boolean | null; + stream?: boolean | null; + stream_options?: ChatCompletionsStreamOptions; + temperature?: number | null; + tool_choice?: ChatCompletionToolChoiceOption; + tools?: Array; + top_p?: number | null; + user?: string; + web_search_options?: WebSearchOptions; + function_call?: "none" | "auto" | { + name: string; + }; + functions?: Array; +}; +type PromptTokensDetails = { + cached_tokens?: number; + audio_tokens?: number; +}; +type CompletionTokensDetails = { + reasoning_tokens?: number; + audio_tokens?: number; + accepted_prediction_tokens?: number; + rejected_prediction_tokens?: number; +}; +type CompletionUsage = { + prompt_tokens: number; + completion_tokens: number; + total_tokens: number; + prompt_tokens_details?: PromptTokensDetails; + completion_tokens_details?: CompletionTokensDetails; +}; +type ChatCompletionTopLogprob = { + token: string; + logprob: number; + bytes: Array | null; +}; +type ChatCompletionTokenLogprob = { + token: string; + logprob: number; + bytes: Array | null; + top_logprobs: Array; +}; +type ChatCompletionAudio = { + id: string; + /** Base64 encoded audio bytes. */ + data: string; + expires_at: number; + transcript: string; +}; +type ChatCompletionUrlCitation = { + type: "url_citation"; + url_citation: { + url: string; + title: string; + start_index: number; + end_index: number; + }; +}; +type ChatCompletionResponseMessage = { + role: "assistant"; + content: string | null; + refusal: string | null; + annotations?: Array; + audio?: ChatCompletionAudio; + tool_calls?: Array; + function_call?: { + name: string; + arguments: string; + } | null; +}; +type ChatCompletionLogprobs = { + content: Array | null; + refusal?: Array | null; +}; +type ChatCompletionChoice = { + index: number; + message: ChatCompletionResponseMessage; + finish_reason: "stop" | "length" | "tool_calls" | "content_filter" | "function_call"; + logprobs: ChatCompletionLogprobs | null; +}; +type ChatCompletionsPromptInput = { + prompt: string; +} & ChatCompletionsCommonOptions; +type ChatCompletionsMessagesInput = { + messages: Array; +} & ChatCompletionsCommonOptions; +type ChatCompletionsOutput = { + id: string; + object: string; + created: number; + model: string; + choices: Array; + usage?: CompletionUsage; + system_fingerprint?: string | null; + service_tier?: "auto" | "default" | "flex" | "scale" | "priority" | null; +}; +/** + * Workers AI support for OpenAI's Responses API + * Reference: https://github.com/openai/openai-node/blob/master/src/resources/responses/responses.ts + * + * It's a stripped down version from its source. + * It currently supports basic function calling, json mode and accepts images as input. + * + * It does not include types for WebSearch, CodeInterpreter, FileInputs, MCP, CustomTools. + * We plan to add those incrementally as model + platform capabilities evolve. + */ +type ResponsesInput = { + background?: boolean | null; + conversation?: string | ResponseConversationParam | null; + include?: Array | null; + input?: string | ResponseInput; + instructions?: string | null; + max_output_tokens?: number | null; + parallel_tool_calls?: boolean | null; + previous_response_id?: string | null; + prompt_cache_key?: string; + reasoning?: Reasoning | null; + safety_identifier?: string; + service_tier?: "auto" | "default" | "flex" | "scale" | "priority" | null; + stream?: boolean | null; + stream_options?: StreamOptions | null; + temperature?: number | null; + text?: ResponseTextConfig; + tool_choice?: ToolChoiceOptions | ToolChoiceFunction; + tools?: Array; + top_p?: number | null; + truncation?: "auto" | "disabled" | null; +}; +type ResponsesOutput = { + id?: string; + created_at?: number; + output_text?: string; + error?: ResponseError | null; + incomplete_details?: ResponseIncompleteDetails | null; + instructions?: string | Array | null; + object?: "response"; + output?: Array; + parallel_tool_calls?: boolean; + temperature?: number | null; + tool_choice?: ToolChoiceOptions | ToolChoiceFunction; + tools?: Array; + top_p?: number | null; + max_output_tokens?: number | null; + previous_response_id?: string | null; + prompt?: ResponsePrompt | null; + reasoning?: Reasoning | null; + safety_identifier?: string; + service_tier?: "auto" | "default" | "flex" | "scale" | "priority" | null; + status?: ResponseStatus; + text?: ResponseTextConfig; + truncation?: "auto" | "disabled" | null; + usage?: ResponseUsage; +}; +type EasyInputMessage = { + content: string | ResponseInputMessageContentList; + role: "user" | "assistant" | "system" | "developer"; + type?: "message"; +}; +type ResponsesFunctionTool = { + name: string; + parameters: { + [key: string]: unknown; + } | null; + strict: boolean | null; + type: "function"; + description?: string | null; +}; +type ResponseIncompleteDetails = { + reason?: "max_output_tokens" | "content_filter"; +}; +type ResponsePrompt = { + id: string; + variables?: { + [key: string]: string | ResponseInputText | ResponseInputImage; + } | null; + version?: string | null; +}; +type Reasoning = { + effort?: ReasoningEffort | null; + generate_summary?: "auto" | "concise" | "detailed" | null; + summary?: "auto" | "concise" | "detailed" | null; +}; +type ResponseContent = ResponseInputText | ResponseInputImage | ResponseOutputText | ResponseOutputRefusal | ResponseContentReasoningText; +type ResponseContentReasoningText = { + text: string; + type: "reasoning_text"; +}; +type ResponseConversationParam = { + id: string; +}; +type ResponseCreatedEvent = { + response: Response; + sequence_number: number; + type: "response.created"; +}; +type ResponseCustomToolCallOutput = { + call_id: string; + output: string | Array; + type: "custom_tool_call_output"; + id?: string; +}; +type ResponseError = { + code: "server_error" | "rate_limit_exceeded" | "invalid_prompt" | "vector_store_timeout" | "invalid_image" | "invalid_image_format" | "invalid_base64_image" | "invalid_image_url" | "image_too_large" | "image_too_small" | "image_parse_error" | "image_content_policy_violation" | "invalid_image_mode" | "image_file_too_large" | "unsupported_image_media_type" | "empty_image_file" | "failed_to_download_image" | "image_file_not_found"; + message: string; +}; +type ResponseErrorEvent = { + code: string | null; + message: string; + param: string | null; + sequence_number: number; + type: "error"; +}; +type ResponseFailedEvent = { + response: Response; + sequence_number: number; + type: "response.failed"; +}; +type ResponseFormatText = { + type: "text"; +}; +type ResponseFormatJSONObject = { + type: "json_object"; +}; +type ResponseFormatTextConfig = ResponseFormatText | ResponseFormatTextJSONSchemaConfig | ResponseFormatJSONObject; +type ResponseFormatTextJSONSchemaConfig = { + name: string; + schema: { + [key: string]: unknown; + }; + type: "json_schema"; + description?: string; + strict?: boolean | null; +}; +type ResponseFunctionCallArgumentsDeltaEvent = { + delta: string; + item_id: string; + output_index: number; + sequence_number: number; + type: "response.function_call_arguments.delta"; +}; +type ResponseFunctionCallArgumentsDoneEvent = { + arguments: string; + item_id: string; + name: string; + output_index: number; + sequence_number: number; + type: "response.function_call_arguments.done"; +}; +type ResponseFunctionCallOutputItem = ResponseInputTextContent | ResponseInputImageContent; +type ResponseFunctionCallOutputItemList = Array; +type ResponseFunctionToolCall = { + arguments: string; + call_id: string; + name: string; + type: "function_call"; + id?: string; + status?: "in_progress" | "completed" | "incomplete"; +}; +interface ResponseFunctionToolCallItem extends ResponseFunctionToolCall { + id: string; +} +type ResponseFunctionToolCallOutputItem = { + id: string; + call_id: string; + output: string | Array; + type: "function_call_output"; + status?: "in_progress" | "completed" | "incomplete"; +}; +type ResponseIncludable = "message.input_image.image_url" | "message.output_text.logprobs"; +type ResponseIncompleteEvent = { + response: Response; + sequence_number: number; + type: "response.incomplete"; +}; +type ResponseInput = Array; +type ResponseInputContent = ResponseInputText | ResponseInputImage; +type ResponseInputImage = { + detail: "low" | "high" | "auto"; + type: "input_image"; + /** + * Base64 encoded image + */ + image_url?: string | null; +}; +type ResponseInputImageContent = { + type: "input_image"; + detail?: "low" | "high" | "auto" | null; + /** + * Base64 encoded image + */ + image_url?: string | null; +}; +type ResponseInputItem = EasyInputMessage | ResponseInputItemMessage | ResponseOutputMessage | ResponseFunctionToolCall | ResponseInputItemFunctionCallOutput | ResponseReasoningItem; +type ResponseInputItemFunctionCallOutput = { + call_id: string; + output: string | ResponseFunctionCallOutputItemList; + type: "function_call_output"; + id?: string | null; + status?: "in_progress" | "completed" | "incomplete" | null; +}; +type ResponseInputItemMessage = { + content: ResponseInputMessageContentList; + role: "user" | "system" | "developer"; + status?: "in_progress" | "completed" | "incomplete"; + type?: "message"; +}; +type ResponseInputMessageContentList = Array; +type ResponseInputMessageItem = { + id: string; + content: ResponseInputMessageContentList; + role: "user" | "system" | "developer"; + status?: "in_progress" | "completed" | "incomplete"; + type?: "message"; +}; +type ResponseInputText = { + text: string; + type: "input_text"; +}; +type ResponseInputTextContent = { + text: string; + type: "input_text"; +}; +type ResponseItem = ResponseInputMessageItem | ResponseOutputMessage | ResponseFunctionToolCallItem | ResponseFunctionToolCallOutputItem; +type ResponseOutputItem = ResponseOutputMessage | ResponseFunctionToolCall | ResponseReasoningItem; +type ResponseOutputItemAddedEvent = { + item: ResponseOutputItem; + output_index: number; + sequence_number: number; + type: "response.output_item.added"; +}; +type ResponseOutputItemDoneEvent = { + item: ResponseOutputItem; + output_index: number; + sequence_number: number; + type: "response.output_item.done"; +}; +type ResponseOutputMessage = { + id: string; + content: Array; + role: "assistant"; + status: "in_progress" | "completed" | "incomplete"; + type: "message"; +}; +type ResponseOutputRefusal = { + refusal: string; + type: "refusal"; +}; +type ResponseOutputText = { + text: string; + type: "output_text"; + logprobs?: Array; +}; +type ResponseReasoningItem = { + id: string; + summary: Array; + type: "reasoning"; + content?: Array; + encrypted_content?: string | null; + status?: "in_progress" | "completed" | "incomplete"; +}; +type ResponseReasoningSummaryItem = { + text: string; + type: "summary_text"; +}; +type ResponseReasoningContentItem = { + text: string; + type: "reasoning_text"; +}; +type ResponseReasoningTextDeltaEvent = { + content_index: number; + delta: string; + item_id: string; + output_index: number; + sequence_number: number; + type: "response.reasoning_text.delta"; +}; +type ResponseReasoningTextDoneEvent = { + content_index: number; + item_id: string; + output_index: number; + sequence_number: number; + text: string; + type: "response.reasoning_text.done"; +}; +type ResponseRefusalDeltaEvent = { + content_index: number; + delta: string; + item_id: string; + output_index: number; + sequence_number: number; + type: "response.refusal.delta"; +}; +type ResponseRefusalDoneEvent = { + content_index: number; + item_id: string; + output_index: number; + refusal: string; + sequence_number: number; + type: "response.refusal.done"; +}; +type ResponseStatus = "completed" | "failed" | "in_progress" | "cancelled" | "queued" | "incomplete"; +type ResponseStreamEvent = ResponseCompletedEvent | ResponseCreatedEvent | ResponseErrorEvent | ResponseFunctionCallArgumentsDeltaEvent | ResponseFunctionCallArgumentsDoneEvent | ResponseFailedEvent | ResponseIncompleteEvent | ResponseOutputItemAddedEvent | ResponseOutputItemDoneEvent | ResponseReasoningTextDeltaEvent | ResponseReasoningTextDoneEvent | ResponseRefusalDeltaEvent | ResponseRefusalDoneEvent | ResponseTextDeltaEvent | ResponseTextDoneEvent; +type ResponseCompletedEvent = { + response: Response; + sequence_number: number; + type: "response.completed"; +}; +type ResponseTextConfig = { + format?: ResponseFormatTextConfig; + verbosity?: "low" | "medium" | "high" | null; +}; +type ResponseTextDeltaEvent = { + content_index: number; + delta: string; + item_id: string; + logprobs: Array; + output_index: number; + sequence_number: number; + type: "response.output_text.delta"; +}; +type ResponseTextDoneEvent = { + content_index: number; + item_id: string; + logprobs: Array; + output_index: number; + sequence_number: number; + text: string; + type: "response.output_text.done"; +}; +type Logprob = { + token: string; + logprob: number; + top_logprobs?: Array; +}; +type TopLogprob = { + token?: string; + logprob?: number; +}; +type ResponseUsage = { + input_tokens: number; + output_tokens: number; + total_tokens: number; +}; +type Tool = ResponsesFunctionTool; +type ToolChoiceFunction = { + name: string; + type: "function"; +}; +type ToolChoiceOptions = "none"; +type ReasoningEffort = "minimal" | "low" | "medium" | "high" | null; +type StreamOptions = { + include_obfuscation?: boolean; +}; +/** Marks keys from T that aren't in U as optional never */ +type Without = { + [P in Exclude]?: never; +}; +/** Either T or U, but not both (mutually exclusive) */ +type XOR = (T & Without) | (U & Without); +type Ai_Cf_Baai_Bge_Base_En_V1_5_Input = { + text: string | string[]; + /** + * The pooling method used in the embedding process. `cls` pooling will generate more accurate embeddings on larger inputs - however, embeddings created with cls pooling are not compatible with embeddings generated with mean pooling. The default pooling method is `mean` in order for this to not be a breaking change, but we highly suggest using the new `cls` pooling for better accuracy. + */ + pooling?: "mean" | "cls"; +} | { + /** + * Batch of the embeddings requests to run using async-queue + */ + requests: { + text: string | string[]; + /** + * The pooling method used in the embedding process. `cls` pooling will generate more accurate embeddings on larger inputs - however, embeddings created with cls pooling are not compatible with embeddings generated with mean pooling. The default pooling method is `mean` in order for this to not be a breaking change, but we highly suggest using the new `cls` pooling for better accuracy. + */ + pooling?: "mean" | "cls"; + }[]; +}; +type Ai_Cf_Baai_Bge_Base_En_V1_5_Output = { + shape?: number[]; + /** + * Embeddings of the requested text values + */ + data?: number[][]; + /** + * The pooling method used in the embedding process. + */ + pooling?: "mean" | "cls"; +} | Ai_Cf_Baai_Bge_Base_En_V1_5_AsyncResponse; +interface Ai_Cf_Baai_Bge_Base_En_V1_5_AsyncResponse { + /** + * The async request id that can be used to obtain the results. + */ + request_id?: string; +} +declare abstract class Base_Ai_Cf_Baai_Bge_Base_En_V1_5 { + inputs: Ai_Cf_Baai_Bge_Base_En_V1_5_Input; + postProcessedOutputs: Ai_Cf_Baai_Bge_Base_En_V1_5_Output; +} +type Ai_Cf_Openai_Whisper_Input = string | { + /** + * An array of integers that represent the audio data constrained to 8-bit unsigned integer values + */ + audio: number[]; +}; +interface Ai_Cf_Openai_Whisper_Output { + /** + * The transcription + */ + text: string; + word_count?: number; + words?: { + word?: string; + /** + * The second this word begins in the recording + */ + start?: number; + /** + * The ending second when the word completes + */ + end?: number; + }[]; + vtt?: string; +} +declare abstract class Base_Ai_Cf_Openai_Whisper { + inputs: Ai_Cf_Openai_Whisper_Input; + postProcessedOutputs: Ai_Cf_Openai_Whisper_Output; +} +type Ai_Cf_Meta_M2M100_1_2B_Input = { + /** + * The text to be translated + */ + text: string; + /** + * The language code of the source text (e.g., 'en' for English). Defaults to 'en' if not specified + */ + source_lang?: string; + /** + * The language code to translate the text into (e.g., 'es' for Spanish) + */ + target_lang: string; +} | { + /** + * Batch of the embeddings requests to run using async-queue + */ + requests: { + /** + * The text to be translated + */ + text: string; + /** + * The language code of the source text (e.g., 'en' for English). Defaults to 'en' if not specified + */ + source_lang?: string; + /** + * The language code to translate the text into (e.g., 'es' for Spanish) + */ + target_lang: string; + }[]; +}; +type Ai_Cf_Meta_M2M100_1_2B_Output = { + /** + * The translated text in the target language + */ + translated_text?: string; +} | Ai_Cf_Meta_M2M100_1_2B_AsyncResponse; +interface Ai_Cf_Meta_M2M100_1_2B_AsyncResponse { + /** + * The async request id that can be used to obtain the results. + */ + request_id?: string; +} +declare abstract class Base_Ai_Cf_Meta_M2M100_1_2B { + inputs: Ai_Cf_Meta_M2M100_1_2B_Input; + postProcessedOutputs: Ai_Cf_Meta_M2M100_1_2B_Output; +} +type Ai_Cf_Baai_Bge_Small_En_V1_5_Input = { + text: string | string[]; + /** + * The pooling method used in the embedding process. `cls` pooling will generate more accurate embeddings on larger inputs - however, embeddings created with cls pooling are not compatible with embeddings generated with mean pooling. The default pooling method is `mean` in order for this to not be a breaking change, but we highly suggest using the new `cls` pooling for better accuracy. + */ + pooling?: "mean" | "cls"; +} | { + /** + * Batch of the embeddings requests to run using async-queue + */ + requests: { + text: string | string[]; + /** + * The pooling method used in the embedding process. `cls` pooling will generate more accurate embeddings on larger inputs - however, embeddings created with cls pooling are not compatible with embeddings generated with mean pooling. The default pooling method is `mean` in order for this to not be a breaking change, but we highly suggest using the new `cls` pooling for better accuracy. + */ + pooling?: "mean" | "cls"; + }[]; +}; +type Ai_Cf_Baai_Bge_Small_En_V1_5_Output = { + shape?: number[]; + /** + * Embeddings of the requested text values + */ + data?: number[][]; + /** + * The pooling method used in the embedding process. + */ + pooling?: "mean" | "cls"; +} | Ai_Cf_Baai_Bge_Small_En_V1_5_AsyncResponse; +interface Ai_Cf_Baai_Bge_Small_En_V1_5_AsyncResponse { + /** + * The async request id that can be used to obtain the results. + */ + request_id?: string; +} +declare abstract class Base_Ai_Cf_Baai_Bge_Small_En_V1_5 { + inputs: Ai_Cf_Baai_Bge_Small_En_V1_5_Input; + postProcessedOutputs: Ai_Cf_Baai_Bge_Small_En_V1_5_Output; +} +type Ai_Cf_Baai_Bge_Large_En_V1_5_Input = { + text: string | string[]; + /** + * The pooling method used in the embedding process. `cls` pooling will generate more accurate embeddings on larger inputs - however, embeddings created with cls pooling are not compatible with embeddings generated with mean pooling. The default pooling method is `mean` in order for this to not be a breaking change, but we highly suggest using the new `cls` pooling for better accuracy. + */ + pooling?: "mean" | "cls"; +} | { + /** + * Batch of the embeddings requests to run using async-queue + */ + requests: { + text: string | string[]; + /** + * The pooling method used in the embedding process. `cls` pooling will generate more accurate embeddings on larger inputs - however, embeddings created with cls pooling are not compatible with embeddings generated with mean pooling. The default pooling method is `mean` in order for this to not be a breaking change, but we highly suggest using the new `cls` pooling for better accuracy. + */ + pooling?: "mean" | "cls"; + }[]; +}; +type Ai_Cf_Baai_Bge_Large_En_V1_5_Output = { + shape?: number[]; + /** + * Embeddings of the requested text values + */ + data?: number[][]; + /** + * The pooling method used in the embedding process. + */ + pooling?: "mean" | "cls"; +} | Ai_Cf_Baai_Bge_Large_En_V1_5_AsyncResponse; +interface Ai_Cf_Baai_Bge_Large_En_V1_5_AsyncResponse { + /** + * The async request id that can be used to obtain the results. + */ + request_id?: string; +} +declare abstract class Base_Ai_Cf_Baai_Bge_Large_En_V1_5 { + inputs: Ai_Cf_Baai_Bge_Large_En_V1_5_Input; + postProcessedOutputs: Ai_Cf_Baai_Bge_Large_En_V1_5_Output; +} +type Ai_Cf_Unum_Uform_Gen2_Qwen_500M_Input = string | { + /** + * The input text prompt for the model to generate a response. + */ + prompt?: string; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * Controls the creativity of the AI's responses by adjusting how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; + image: number[] | (string & NonNullable); + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; +}; +interface Ai_Cf_Unum_Uform_Gen2_Qwen_500M_Output { + description?: string; +} +declare abstract class Base_Ai_Cf_Unum_Uform_Gen2_Qwen_500M { + inputs: Ai_Cf_Unum_Uform_Gen2_Qwen_500M_Input; + postProcessedOutputs: Ai_Cf_Unum_Uform_Gen2_Qwen_500M_Output; +} +type Ai_Cf_Openai_Whisper_Tiny_En_Input = string | { + /** + * An array of integers that represent the audio data constrained to 8-bit unsigned integer values + */ + audio: number[]; +}; +interface Ai_Cf_Openai_Whisper_Tiny_En_Output { + /** + * The transcription + */ + text: string; + word_count?: number; + words?: { + word?: string; + /** + * The second this word begins in the recording + */ + start?: number; + /** + * The ending second when the word completes + */ + end?: number; + }[]; + vtt?: string; +} +declare abstract class Base_Ai_Cf_Openai_Whisper_Tiny_En { + inputs: Ai_Cf_Openai_Whisper_Tiny_En_Input; + postProcessedOutputs: Ai_Cf_Openai_Whisper_Tiny_En_Output; +} +interface Ai_Cf_Openai_Whisper_Large_V3_Turbo_Input { + audio: string | { + body?: object; + contentType?: string; + }; + /** + * Supported tasks are 'translate' or 'transcribe'. + */ + task?: string; + /** + * The language of the audio being transcribed or translated. + */ + language?: string; + /** + * Preprocess the audio with a voice activity detection model. + */ + vad_filter?: boolean; + /** + * A text prompt to help provide context to the model on the contents of the audio. + */ + initial_prompt?: string; + /** + * The prefix appended to the beginning of the output of the transcription and can guide the transcription result. + */ + prefix?: string; + /** + * The number of beams to use in beam search decoding. Higher values may improve accuracy at the cost of speed. + */ + beam_size?: number; + /** + * Whether to condition on previous text during transcription. Setting to false may help prevent hallucination loops. + */ + condition_on_previous_text?: boolean; + /** + * Threshold for detecting no-speech segments. Segments with no-speech probability above this value are skipped. + */ + no_speech_threshold?: number; + /** + * Threshold for filtering out segments with high compression ratio, which often indicate repetitive or hallucinated text. + */ + compression_ratio_threshold?: number; + /** + * Threshold for filtering out segments with low average log probability, indicating low confidence. + */ + log_prob_threshold?: number; + /** + * Optional threshold (in seconds) to skip silent periods that may cause hallucinations. + */ + hallucination_silence_threshold?: number; +} +interface Ai_Cf_Openai_Whisper_Large_V3_Turbo_Output { + transcription_info?: { + /** + * The language of the audio being transcribed or translated. + */ + language?: string; + /** + * The confidence level or probability of the detected language being accurate, represented as a decimal between 0 and 1. + */ + language_probability?: number; + /** + * The total duration of the original audio file, in seconds. + */ + duration?: number; + /** + * The duration of the audio after applying Voice Activity Detection (VAD) to remove silent or irrelevant sections, in seconds. + */ + duration_after_vad?: number; + }; + /** + * The complete transcription of the audio. + */ + text: string; + /** + * The total number of words in the transcription. + */ + word_count?: number; + segments?: { + /** + * The starting time of the segment within the audio, in seconds. + */ + start?: number; + /** + * The ending time of the segment within the audio, in seconds. + */ + end?: number; + /** + * The transcription of the segment. + */ + text?: string; + /** + * The temperature used in the decoding process, controlling randomness in predictions. Lower values result in more deterministic outputs. + */ + temperature?: number; + /** + * The average log probability of the predictions for the words in this segment, indicating overall confidence. + */ + avg_logprob?: number; + /** + * The compression ratio of the input to the output, measuring how much the text was compressed during the transcription process. + */ + compression_ratio?: number; + /** + * The probability that the segment contains no speech, represented as a decimal between 0 and 1. + */ + no_speech_prob?: number; + words?: { + /** + * The individual word transcribed from the audio. + */ + word?: string; + /** + * The starting time of the word within the audio, in seconds. + */ + start?: number; + /** + * The ending time of the word within the audio, in seconds. + */ + end?: number; + }[]; + }[]; + /** + * The transcription in WebVTT format, which includes timing and text information for use in subtitles. + */ + vtt?: string; +} +declare abstract class Base_Ai_Cf_Openai_Whisper_Large_V3_Turbo { + inputs: Ai_Cf_Openai_Whisper_Large_V3_Turbo_Input; + postProcessedOutputs: Ai_Cf_Openai_Whisper_Large_V3_Turbo_Output; +} +type Ai_Cf_Baai_Bge_M3_Input = Ai_Cf_Baai_Bge_M3_Input_QueryAnd_Contexts | Ai_Cf_Baai_Bge_M3_Input_Embedding | { + /** + * Batch of the embeddings requests to run using async-queue + */ + requests: (Ai_Cf_Baai_Bge_M3_Input_QueryAnd_Contexts_1 | Ai_Cf_Baai_Bge_M3_Input_Embedding_1)[]; +}; +interface Ai_Cf_Baai_Bge_M3_Input_QueryAnd_Contexts { + /** + * A query you wish to perform against the provided contexts. If no query is provided the model with respond with embeddings for contexts + */ + query?: string; + /** + * List of provided contexts. Note that the index in this array is important, as the response will refer to it. + */ + contexts: { + /** + * One of the provided context content + */ + text?: string; + }[]; + /** + * When provided with too long context should the model error out or truncate the context to fit? + */ + truncate_inputs?: boolean; +} +interface Ai_Cf_Baai_Bge_M3_Input_Embedding { + text: string | string[]; + /** + * When provided with too long context should the model error out or truncate the context to fit? + */ + truncate_inputs?: boolean; +} +interface Ai_Cf_Baai_Bge_M3_Input_QueryAnd_Contexts_1 { + /** + * A query you wish to perform against the provided contexts. If no query is provided the model with respond with embeddings for contexts + */ + query?: string; + /** + * List of provided contexts. Note that the index in this array is important, as the response will refer to it. + */ + contexts: { + /** + * One of the provided context content + */ + text?: string; + }[]; + /** + * When provided with too long context should the model error out or truncate the context to fit? + */ + truncate_inputs?: boolean; +} +interface Ai_Cf_Baai_Bge_M3_Input_Embedding_1 { + text: string | string[]; + /** + * When provided with too long context should the model error out or truncate the context to fit? + */ + truncate_inputs?: boolean; +} +type Ai_Cf_Baai_Bge_M3_Output = Ai_Cf_Baai_Bge_M3_Output_Query | Ai_Cf_Baai_Bge_M3_Output_EmbeddingFor_Contexts | Ai_Cf_Baai_Bge_M3_Output_Embedding | Ai_Cf_Baai_Bge_M3_AsyncResponse; +interface Ai_Cf_Baai_Bge_M3_Output_Query { + response?: { + /** + * Index of the context in the request + */ + id?: number; + /** + * Score of the context under the index. + */ + score?: number; + }[]; +} +interface Ai_Cf_Baai_Bge_M3_Output_EmbeddingFor_Contexts { + response?: number[][]; + shape?: number[]; + /** + * The pooling method used in the embedding process. + */ + pooling?: "mean" | "cls"; +} +interface Ai_Cf_Baai_Bge_M3_Output_Embedding { + shape?: number[]; + /** + * Embeddings of the requested text values + */ + data?: number[][]; + /** + * The pooling method used in the embedding process. + */ + pooling?: "mean" | "cls"; +} +interface Ai_Cf_Baai_Bge_M3_AsyncResponse { + /** + * The async request id that can be used to obtain the results. + */ + request_id?: string; +} +declare abstract class Base_Ai_Cf_Baai_Bge_M3 { + inputs: Ai_Cf_Baai_Bge_M3_Input; + postProcessedOutputs: Ai_Cf_Baai_Bge_M3_Output; +} +interface Ai_Cf_Black_Forest_Labs_Flux_1_Schnell_Input { + /** + * A text description of the image you want to generate. + */ + prompt: string; + /** + * The number of diffusion steps; higher values can improve quality but take longer. + */ + steps?: number; +} +interface Ai_Cf_Black_Forest_Labs_Flux_1_Schnell_Output { + /** + * The generated image in Base64 format. + */ + image?: string; +} +declare abstract class Base_Ai_Cf_Black_Forest_Labs_Flux_1_Schnell { + inputs: Ai_Cf_Black_Forest_Labs_Flux_1_Schnell_Input; + postProcessedOutputs: Ai_Cf_Black_Forest_Labs_Flux_1_Schnell_Output; +} +type Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Input = Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Prompt | Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Messages; +interface Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Prompt { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string; + image?: number[] | (string & NonNullable); + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; + /** + * Name of the LoRA (Low-Rank Adaptation) model to fine-tune the base model. + */ + lora?: string; +} +interface Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Messages { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role?: string; + /** + * The tool call id. If you don't know what to put here you can fall back to 000000001 + */ + tool_call_id?: string; + content?: string | { + /** + * Type of the content provided + */ + type?: string; + text?: string; + image_url?: { + /** + * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted + */ + url?: string; + }; + }[] | { + /** + * Type of the content provided + */ + type?: string; + text?: string; + image_url?: { + /** + * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted + */ + url?: string; + }; + }; + }[]; + image?: number[] | (string & NonNullable); + functions?: { + name: string; + code: string; + }[]; + /** + * A list of tools available for the assistant to use. + */ + tools?: ({ + /** + * The name of the tool. More descriptive the better. + */ + name: string; + /** + * A brief description of what the tool does. + */ + description: string; + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + } | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string; + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string; + /** + * A brief description of what the function does. + */ + description: string; + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + }; + })[]; + /** + * If true, the response will be streamed back incrementally. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Controls the creativity of the AI's responses by adjusting how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +type Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Output = { + /** + * The generated text response from the model + */ + response?: string; + /** + * An array of tool calls requests made during the response generation + */ + tool_calls?: { + /** + * The arguments passed to be passed to the tool call request + */ + arguments?: object; + /** + * The name of the tool to be called + */ + name?: string; + }[]; +}; +declare abstract class Base_Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct { + inputs: Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Input; + postProcessedOutputs: Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Output; +} +type Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Input = Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Prompt | Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Messages | Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Async_Batch; +interface Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Prompt { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string; + /** + * Name of the LoRA (Low-Rank Adaptation) model to fine-tune the base model. + */ + lora?: string; + response_format?: Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_JSON_Mode; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_JSON_Mode { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +interface Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Messages { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role: string; + content: string | { + /** + * Type of the content (text) + */ + type?: string; + /** + * Text content + */ + text?: string; + }[]; + }[]; + functions?: { + name: string; + code: string; + }[]; + /** + * A list of tools available for the assistant to use. + */ + tools?: ({ + /** + * The name of the tool. More descriptive the better. + */ + name: string; + /** + * A brief description of what the tool does. + */ + description: string; + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + } | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string; + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string; + /** + * A brief description of what the function does. + */ + description: string; + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + }; + })[]; + response_format?: Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_JSON_Mode_1; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_JSON_Mode_1 { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +interface Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Async_Batch { + requests?: { + /** + * User-supplied reference. This field will be present in the response as well it can be used to reference the request and response. It's NOT validated to be unique. + */ + external_reference?: string; + /** + * Prompt for the text generation model + */ + prompt?: string; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; + response_format?: Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_JSON_Mode_2; + }[]; +} +interface Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_JSON_Mode_2 { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +type Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Output = { + /** + * The generated text response from the model + */ + response: string; + /** + * Usage statistics for the inference request + */ + usage?: { + /** + * Total number of tokens in input + */ + prompt_tokens?: number; + /** + * Total number of tokens in output + */ + completion_tokens?: number; + /** + * Total number of input and output tokens + */ + total_tokens?: number; + }; + /** + * An array of tool calls requests made during the response generation + */ + tool_calls?: { + /** + * The arguments passed to be passed to the tool call request + */ + arguments?: object; + /** + * The name of the tool to be called + */ + name?: string; + }[]; +} | string | Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_AsyncResponse; +interface Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_AsyncResponse { + /** + * The async request id that can be used to obtain the results. + */ + request_id?: string; +} +declare abstract class Base_Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast { + inputs: Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Input; + postProcessedOutputs: Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Output; +} +interface Ai_Cf_Meta_Llama_Guard_3_8B_Input { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender must alternate between 'user' and 'assistant'. + */ + role: "user" | "assistant"; + /** + * The content of the message as a string. + */ + content: string; + }[]; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Dictate the output format of the generated response. + */ + response_format?: { + /** + * Set to json_object to process and output generated text as JSON. + */ + type?: string; + }; +} +interface Ai_Cf_Meta_Llama_Guard_3_8B_Output { + response?: string | { + /** + * Whether the conversation is safe or not. + */ + safe?: boolean; + /** + * A list of what hazard categories predicted for the conversation, if the conversation is deemed unsafe. + */ + categories?: string[]; + }; + /** + * Usage statistics for the inference request + */ + usage?: { + /** + * Total number of tokens in input + */ + prompt_tokens?: number; + /** + * Total number of tokens in output + */ + completion_tokens?: number; + /** + * Total number of input and output tokens + */ + total_tokens?: number; + }; +} +declare abstract class Base_Ai_Cf_Meta_Llama_Guard_3_8B { + inputs: Ai_Cf_Meta_Llama_Guard_3_8B_Input; + postProcessedOutputs: Ai_Cf_Meta_Llama_Guard_3_8B_Output; +} +interface Ai_Cf_Baai_Bge_Reranker_Base_Input { + /** + * A query you wish to perform against the provided contexts. + */ + /** + * Number of returned results starting with the best score. + */ + top_k?: number; + /** + * List of provided contexts. Note that the index in this array is important, as the response will refer to it. + */ + contexts: { + /** + * One of the provided context content + */ + text?: string; + }[]; +} +interface Ai_Cf_Baai_Bge_Reranker_Base_Output { + response?: { + /** + * Index of the context in the request + */ + id?: number; + /** + * Score of the context under the index. + */ + score?: number; + }[]; +} +declare abstract class Base_Ai_Cf_Baai_Bge_Reranker_Base { + inputs: Ai_Cf_Baai_Bge_Reranker_Base_Input; + postProcessedOutputs: Ai_Cf_Baai_Bge_Reranker_Base_Output; +} +type Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_Input = Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_Prompt | Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_Messages; +interface Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_Prompt { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string; + /** + * Name of the LoRA (Low-Rank Adaptation) model to fine-tune the base model. + */ + lora?: string; + response_format?: Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_JSON_Mode; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_JSON_Mode { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +interface Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_Messages { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role: string; + /** + * The content of the message as a string. + */ + content: string; + }[]; + functions?: { + name: string; + code: string; + }[]; + /** + * A list of tools available for the assistant to use. + */ + tools?: ({ + /** + * The name of the tool. More descriptive the better. + */ + name: string; + /** + * A brief description of what the tool does. + */ + description: string; + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + } | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string; + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string; + /** + * A brief description of what the function does. + */ + description: string; + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + }; + })[]; + response_format?: Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_JSON_Mode_1; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_JSON_Mode_1 { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +type Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_Output = { + /** + * The generated text response from the model + */ + response: string; + /** + * Usage statistics for the inference request + */ + usage?: { + /** + * Total number of tokens in input + */ + prompt_tokens?: number; + /** + * Total number of tokens in output + */ + completion_tokens?: number; + /** + * Total number of input and output tokens + */ + total_tokens?: number; + }; + /** + * An array of tool calls requests made during the response generation + */ + tool_calls?: { + /** + * The arguments passed to be passed to the tool call request + */ + arguments?: object; + /** + * The name of the tool to be called + */ + name?: string; + }[]; +}; +declare abstract class Base_Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct { + inputs: Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_Input; + postProcessedOutputs: Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_Output; +} +type Ai_Cf_Qwen_Qwq_32B_Input = Ai_Cf_Qwen_Qwq_32B_Prompt | Ai_Cf_Qwen_Qwq_32B_Messages; +interface Ai_Cf_Qwen_Qwq_32B_Prompt { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string; + /** + * JSON schema that should be fulfilled for the response. + */ + guided_json?: object; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Qwen_Qwq_32B_Messages { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role?: string; + /** + * The tool call id. If you don't know what to put here you can fall back to 000000001 + */ + tool_call_id?: string; + content?: string | { + /** + * Type of the content provided + */ + type?: string; + text?: string; + image_url?: { + /** + * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted + */ + url?: string; + }; + }[] | { + /** + * Type of the content provided + */ + type?: string; + text?: string; + image_url?: { + /** + * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted + */ + url?: string; + }; + }; + }[]; + functions?: { + name: string; + code: string; + }[]; + /** + * A list of tools available for the assistant to use. + */ + tools?: ({ + /** + * The name of the tool. More descriptive the better. + */ + name: string; + /** + * A brief description of what the tool does. + */ + description: string; + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + } | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string; + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string; + /** + * A brief description of what the function does. + */ + description: string; + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + }; + })[]; + /** + * JSON schema that should be fufilled for the response. + */ + guided_json?: object; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +type Ai_Cf_Qwen_Qwq_32B_Output = { + /** + * The generated text response from the model + */ + response: string; + /** + * Usage statistics for the inference request + */ + usage?: { + /** + * Total number of tokens in input + */ + prompt_tokens?: number; + /** + * Total number of tokens in output + */ + completion_tokens?: number; + /** + * Total number of input and output tokens + */ + total_tokens?: number; + }; + /** + * An array of tool calls requests made during the response generation + */ + tool_calls?: { + /** + * The arguments passed to be passed to the tool call request + */ + arguments?: object; + /** + * The name of the tool to be called + */ + name?: string; + }[]; +}; +declare abstract class Base_Ai_Cf_Qwen_Qwq_32B { + inputs: Ai_Cf_Qwen_Qwq_32B_Input; + postProcessedOutputs: Ai_Cf_Qwen_Qwq_32B_Output; +} +type Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Input = Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Prompt | Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Messages; +interface Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Prompt { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string; + /** + * JSON schema that should be fulfilled for the response. + */ + guided_json?: object; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Messages { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role?: string; + /** + * The tool call id. Must be supplied for tool calls for Mistral-3. If you don't know what to put here you can fall back to 000000001 + */ + tool_call_id?: string; + content?: string | { + /** + * Type of the content provided + */ + type?: string; + text?: string; + image_url?: { + /** + * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted + */ + url?: string; + }; + }[] | { + /** + * Type of the content provided + */ + type?: string; + text?: string; + image_url?: { + /** + * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted + */ + url?: string; + }; + }; + }[]; + functions?: { + name: string; + code: string; + }[]; + /** + * A list of tools available for the assistant to use. + */ + tools?: ({ + /** + * The name of the tool. More descriptive the better. + */ + name: string; + /** + * A brief description of what the tool does. + */ + description: string; + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + } | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string; + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string; + /** + * A brief description of what the function does. + */ + description: string; + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + }; + })[]; + /** + * JSON schema that should be fufilled for the response. + */ + guided_json?: object; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +type Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Output = { + /** + * The generated text response from the model + */ + response: string; + /** + * Usage statistics for the inference request + */ + usage?: { + /** + * Total number of tokens in input + */ + prompt_tokens?: number; + /** + * Total number of tokens in output + */ + completion_tokens?: number; + /** + * Total number of input and output tokens + */ + total_tokens?: number; + }; + /** + * An array of tool calls requests made during the response generation + */ + tool_calls?: { + /** + * The arguments passed to be passed to the tool call request + */ + arguments?: object; + /** + * The name of the tool to be called + */ + name?: string; + }[]; +}; +declare abstract class Base_Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct { + inputs: Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Input; + postProcessedOutputs: Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Output; +} +type Ai_Cf_Google_Gemma_3_12B_It_Input = Ai_Cf_Google_Gemma_3_12B_It_Prompt | Ai_Cf_Google_Gemma_3_12B_It_Messages; +interface Ai_Cf_Google_Gemma_3_12B_It_Prompt { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string; + /** + * JSON schema that should be fufilled for the response. + */ + guided_json?: object; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Google_Gemma_3_12B_It_Messages { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role?: string; + content?: string | { + /** + * Type of the content provided + */ + type?: string; + text?: string; + image_url?: { + /** + * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted + */ + url?: string; + }; + }[]; + }[]; + functions?: { + name: string; + code: string; + }[]; + /** + * A list of tools available for the assistant to use. + */ + tools?: ({ + /** + * The name of the tool. More descriptive the better. + */ + name: string; + /** + * A brief description of what the tool does. + */ + description: string; + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + } | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string; + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string; + /** + * A brief description of what the function does. + */ + description: string; + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + }; + })[]; + /** + * JSON schema that should be fufilled for the response. + */ + guided_json?: object; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +type Ai_Cf_Google_Gemma_3_12B_It_Output = { + /** + * The generated text response from the model + */ + response: string; + /** + * Usage statistics for the inference request + */ + usage?: { + /** + * Total number of tokens in input + */ + prompt_tokens?: number; + /** + * Total number of tokens in output + */ + completion_tokens?: number; + /** + * Total number of input and output tokens + */ + total_tokens?: number; + }; + /** + * An array of tool calls requests made during the response generation + */ + tool_calls?: { + /** + * The arguments passed to be passed to the tool call request + */ + arguments?: object; + /** + * The name of the tool to be called + */ + name?: string; + }[]; +}; +declare abstract class Base_Ai_Cf_Google_Gemma_3_12B_It { + inputs: Ai_Cf_Google_Gemma_3_12B_It_Input; + postProcessedOutputs: Ai_Cf_Google_Gemma_3_12B_It_Output; +} +type Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Input = Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Prompt | Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Messages | Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Async_Batch; +interface Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Prompt { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string; + /** + * JSON schema that should be fulfilled for the response. + */ + guided_json?: object; + response_format?: Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_JSON_Mode; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_JSON_Mode { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +interface Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Messages { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role?: string; + /** + * The tool call id. If you don't know what to put here you can fall back to 000000001 + */ + tool_call_id?: string; + content?: string | { + /** + * Type of the content provided + */ + type?: string; + text?: string; + image_url?: { + /** + * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted + */ + url?: string; + }; + }[] | { + /** + * Type of the content provided + */ + type?: string; + text?: string; + image_url?: { + /** + * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted + */ + url?: string; + }; + }; + }[]; + functions?: { + name: string; + code: string; + }[]; + /** + * A list of tools available for the assistant to use. + */ + tools?: ({ + /** + * The name of the tool. More descriptive the better. + */ + name: string; + /** + * A brief description of what the tool does. + */ + description: string; + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + } | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string; + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string; + /** + * A brief description of what the function does. + */ + description: string; + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + }; + })[]; + response_format?: Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_JSON_Mode; + /** + * JSON schema that should be fufilled for the response. + */ + guided_json?: object; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Async_Batch { + requests: (Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Prompt_Inner | Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Messages_Inner)[]; +} +interface Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Prompt_Inner { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string; + /** + * JSON schema that should be fulfilled for the response. + */ + guided_json?: object; + response_format?: Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_JSON_Mode; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Messages_Inner { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role?: string; + /** + * The tool call id. If you don't know what to put here you can fall back to 000000001 + */ + tool_call_id?: string; + content?: string | { + /** + * Type of the content provided + */ + type?: string; + text?: string; + image_url?: { + /** + * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted + */ + url?: string; + }; + }[] | { + /** + * Type of the content provided + */ + type?: string; + text?: string; + image_url?: { + /** + * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted + */ + url?: string; + }; + }; + }[]; + functions?: { + name: string; + code: string; + }[]; + /** + * A list of tools available for the assistant to use. + */ + tools?: ({ + /** + * The name of the tool. More descriptive the better. + */ + name: string; + /** + * A brief description of what the tool does. + */ + description: string; + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + } | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string; + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string; + /** + * A brief description of what the function does. + */ + description: string; + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + }; + })[]; + response_format?: Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_JSON_Mode; + /** + * JSON schema that should be fufilled for the response. + */ + guided_json?: object; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +type Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Output = { + /** + * The generated text response from the model + */ + response: string; + /** + * Usage statistics for the inference request + */ + usage?: { + /** + * Total number of tokens in input + */ + prompt_tokens?: number; + /** + * Total number of tokens in output + */ + completion_tokens?: number; + /** + * Total number of input and output tokens + */ + total_tokens?: number; + }; + /** + * An array of tool calls requests made during the response generation + */ + tool_calls?: { + /** + * The tool call id. + */ + id?: string; + /** + * Specifies the type of tool (e.g., 'function'). + */ + type?: string; + /** + * Details of the function tool. + */ + function?: { + /** + * The name of the tool to be called + */ + name?: string; + /** + * The arguments passed to be passed to the tool call request + */ + arguments?: object; + }; + }[]; +}; +declare abstract class Base_Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct { + inputs: Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Input; + postProcessedOutputs: Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Output; +} +type Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Input = Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Prompt | Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Messages | Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Async_Batch; +interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Prompt { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string; + /** + * Name of the LoRA (Low-Rank Adaptation) model to fine-tune the base model. + */ + lora?: string; + response_format?: Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_JSON_Mode; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_JSON_Mode { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Messages { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role: string; + content: string | { + /** + * Type of the content (text) + */ + type?: string; + /** + * Text content + */ + text?: string; + }[]; + }[]; + functions?: { + name: string; + code: string; + }[]; + /** + * A list of tools available for the assistant to use. + */ + tools?: ({ + /** + * The name of the tool. More descriptive the better. + */ + name: string; + /** + * A brief description of what the tool does. + */ + description: string; + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + } | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string; + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string; + /** + * A brief description of what the function does. + */ + description: string; + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + }; + })[]; + response_format?: Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_JSON_Mode_1; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_JSON_Mode_1 { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Async_Batch { + requests: (Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Prompt_1 | Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Messages_1)[]; +} +interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Prompt_1 { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string; + /** + * Name of the LoRA (Low-Rank Adaptation) model to fine-tune the base model. + */ + lora?: string; + response_format?: Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_JSON_Mode_2; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_JSON_Mode_2 { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Messages_1 { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role: string; + content: string | { + /** + * Type of the content (text) + */ + type?: string; + /** + * Text content + */ + text?: string; + }[]; + }[]; + functions?: { + name: string; + code: string; + }[]; + /** + * A list of tools available for the assistant to use. + */ + tools?: ({ + /** + * The name of the tool. More descriptive the better. + */ + name: string; + /** + * A brief description of what the tool does. + */ + description: string; + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + } | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string; + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string; + /** + * A brief description of what the function does. + */ + description: string; + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + }; + })[]; + response_format?: Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_JSON_Mode_3; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_JSON_Mode_3 { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +type Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Output = Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Chat_Completion_Response | Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Text_Completion_Response | string | Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_AsyncResponse; +interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Chat_Completion_Response { + /** + * Unique identifier for the completion + */ + id?: string; + /** + * Object type identifier + */ + object?: "chat.completion"; + /** + * Unix timestamp of when the completion was created + */ + created?: number; + /** + * Model used for the completion + */ + model?: string; + /** + * List of completion choices + */ + choices?: { + /** + * Index of the choice in the list + */ + index?: number; + /** + * The message generated by the model + */ + message?: { + /** + * Role of the message author + */ + role: string; + /** + * The content of the message + */ + content: string; + /** + * Internal reasoning content (if available) + */ + reasoning_content?: string; + /** + * Tool calls made by the assistant + */ + tool_calls?: { + /** + * Unique identifier for the tool call + */ + id: string; + /** + * Type of tool call + */ + type: "function"; + function: { + /** + * Name of the function to call + */ + name: string; + /** + * JSON string of arguments for the function + */ + arguments: string; + }; + }[]; + }; + /** + * Reason why the model stopped generating + */ + finish_reason?: string; + /** + * Stop reason (may be null) + */ + stop_reason?: string | null; + /** + * Log probabilities (if requested) + */ + logprobs?: {} | null; + }[]; + /** + * Usage statistics for the inference request + */ + usage?: { + /** + * Total number of tokens in input + */ + prompt_tokens?: number; + /** + * Total number of tokens in output + */ + completion_tokens?: number; + /** + * Total number of input and output tokens + */ + total_tokens?: number; + }; + /** + * Log probabilities for the prompt (if requested) + */ + prompt_logprobs?: {} | null; +} +interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Text_Completion_Response { + /** + * Unique identifier for the completion + */ + id?: string; + /** + * Object type identifier + */ + object?: "text_completion"; + /** + * Unix timestamp of when the completion was created + */ + created?: number; + /** + * Model used for the completion + */ + model?: string; + /** + * List of completion choices + */ + choices?: { + /** + * Index of the choice in the list + */ + index: number; + /** + * The generated text completion + */ + text: string; + /** + * Reason why the model stopped generating + */ + finish_reason: string; + /** + * Stop reason (may be null) + */ + stop_reason?: string | null; + /** + * Log probabilities (if requested) + */ + logprobs?: {} | null; + /** + * Log probabilities for the prompt (if requested) + */ + prompt_logprobs?: {} | null; + }[]; + /** + * Usage statistics for the inference request + */ + usage?: { + /** + * Total number of tokens in input + */ + prompt_tokens?: number; + /** + * Total number of tokens in output + */ + completion_tokens?: number; + /** + * Total number of input and output tokens + */ + total_tokens?: number; + }; +} +interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_AsyncResponse { + /** + * The async request id that can be used to obtain the results. + */ + request_id?: string; +} +declare abstract class Base_Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8 { + inputs: Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Input; + postProcessedOutputs: Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Output; +} +interface Ai_Cf_Deepgram_Nova_3_Input { + audio: { + body: object; + contentType: string; + }; + /** + * Sets how the model will interpret strings submitted to the custom_topic param. When strict, the model will only return topics submitted using the custom_topic param. When extended, the model will return its own detected topics in addition to those submitted using the custom_topic param. + */ + custom_topic_mode?: "extended" | "strict"; + /** + * Custom topics you want the model to detect within your input audio or text if present Submit up to 100 + */ + custom_topic?: string; + /** + * Sets how the model will interpret intents submitted to the custom_intent param. When strict, the model will only return intents submitted using the custom_intent param. When extended, the model will return its own detected intents in addition those submitted using the custom_intents param + */ + custom_intent_mode?: "extended" | "strict"; + /** + * Custom intents you want the model to detect within your input audio if present + */ + custom_intent?: string; + /** + * Identifies and extracts key entities from content in submitted audio + */ + detect_entities?: boolean; + /** + * Identifies the dominant language spoken in submitted audio + */ + detect_language?: boolean; + /** + * Recognize speaker changes. Each word in the transcript will be assigned a speaker number starting at 0 + */ + diarize?: boolean; + /** + * Identify and extract key entities from content in submitted audio + */ + dictation?: boolean; + /** + * Specify the expected encoding of your submitted audio + */ + encoding?: "linear16" | "flac" | "mulaw" | "amr-nb" | "amr-wb" | "opus" | "speex" | "g729"; + /** + * Arbitrary key-value pairs that are attached to the API response for usage in downstream processing + */ + extra?: string; + /** + * Filler Words can help transcribe interruptions in your audio, like 'uh' and 'um' + */ + filler_words?: boolean; + /** + * Key term prompting can boost or suppress specialized terminology and brands. + */ + keyterm?: string; + /** + * Keywords can boost or suppress specialized terminology and brands. + */ + keywords?: string; + /** + * The BCP-47 language tag that hints at the primary spoken language. Depending on the Model and API endpoint you choose only certain languages are available. + */ + language?: string; + /** + * Spoken measurements will be converted to their corresponding abbreviations. + */ + measurements?: boolean; + /** + * Opts out requests from the Deepgram Model Improvement Program. Refer to our Docs for pricing impacts before setting this to true. https://dpgr.am/deepgram-mip. + */ + mip_opt_out?: boolean; + /** + * Mode of operation for the model representing broad area of topic that will be talked about in the supplied audio + */ + mode?: "general" | "medical" | "finance"; + /** + * Transcribe each audio channel independently. + */ + multichannel?: boolean; + /** + * Numerals converts numbers from written format to numerical format. + */ + numerals?: boolean; + /** + * Splits audio into paragraphs to improve transcript readability. + */ + paragraphs?: boolean; + /** + * Profanity Filter looks for recognized profanity and converts it to the nearest recognized non-profane word or removes it from the transcript completely. + */ + profanity_filter?: boolean; + /** + * Add punctuation and capitalization to the transcript. + */ + punctuate?: boolean; + /** + * Redaction removes sensitive information from your transcripts. + */ + redact?: string; + /** + * Search for terms or phrases in submitted audio and replaces them. + */ + replace?: string; + /** + * Search for terms or phrases in submitted audio. + */ + search?: string; + /** + * Recognizes the sentiment throughout a transcript or text. + */ + sentiment?: boolean; + /** + * Apply formatting to transcript output. When set to true, additional formatting will be applied to transcripts to improve readability. + */ + smart_format?: boolean; + /** + * Detect topics throughout a transcript or text. + */ + topics?: boolean; + /** + * Segments speech into meaningful semantic units. + */ + utterances?: boolean; + /** + * Seconds to wait before detecting a pause between words in submitted audio. + */ + utt_split?: number; + /** + * The number of channels in the submitted audio + */ + channels?: number; + /** + * Specifies whether the streaming endpoint should provide ongoing transcription updates as more audio is received. When set to true, the endpoint sends continuous updates, meaning transcription results may evolve over time. Note: Supported only for webosockets. + */ + interim_results?: boolean; + /** + * Indicates how long model will wait to detect whether a speaker has finished speaking or pauses for a significant period of time. When set to a value, the streaming endpoint immediately finalizes the transcription for the processed time range and returns the transcript with a speech_final parameter set to true. Can also be set to false to disable endpointing + */ + endpointing?: string; + /** + * Indicates that speech has started. You'll begin receiving Speech Started messages upon speech starting. Note: Supported only for webosockets. + */ + vad_events?: boolean; + /** + * Indicates how long model will wait to send an UtteranceEnd message after a word has been transcribed. Use with interim_results. Note: Supported only for webosockets. + */ + utterance_end_ms?: boolean; +} +interface Ai_Cf_Deepgram_Nova_3_Output { + results?: { + channels?: { + alternatives?: { + confidence?: number; + transcript?: string; + words?: { + confidence?: number; + end?: number; + start?: number; + word?: string; + }[]; + }[]; + }[]; + summary?: { + result?: string; + short?: string; + }; + sentiments?: { + segments?: { + text?: string; + start_word?: number; + end_word?: number; + sentiment?: string; + sentiment_score?: number; + }[]; + average?: { + sentiment?: string; + sentiment_score?: number; + }; + }; + }; +} +declare abstract class Base_Ai_Cf_Deepgram_Nova_3 { + inputs: Ai_Cf_Deepgram_Nova_3_Input; + postProcessedOutputs: Ai_Cf_Deepgram_Nova_3_Output; +} +interface Ai_Cf_Qwen_Qwen3_Embedding_0_6B_Input { + queries?: string | string[]; + /** + * Optional instruction for the task + */ + instruction?: string; + documents?: string | string[]; + text?: string | string[]; +} +interface Ai_Cf_Qwen_Qwen3_Embedding_0_6B_Output { + data?: number[][]; + shape?: number[]; +} +declare abstract class Base_Ai_Cf_Qwen_Qwen3_Embedding_0_6B { + inputs: Ai_Cf_Qwen_Qwen3_Embedding_0_6B_Input; + postProcessedOutputs: Ai_Cf_Qwen_Qwen3_Embedding_0_6B_Output; +} +type Ai_Cf_Pipecat_Ai_Smart_Turn_V2_Input = { + /** + * readable stream with audio data and content-type specified for that data + */ + audio: { + body: object; + contentType: string; + }; + /** + * type of data PCM data that's sent to the inference server as raw array + */ + dtype?: "uint8" | "float32" | "float64"; +} | { + /** + * base64 encoded audio data + */ + audio: string; + /** + * type of data PCM data that's sent to the inference server as raw array + */ + dtype?: "uint8" | "float32" | "float64"; +}; +interface Ai_Cf_Pipecat_Ai_Smart_Turn_V2_Output { + /** + * if true, end-of-turn was detected + */ + is_complete?: boolean; + /** + * probability of the end-of-turn detection + */ + probability?: number; +} +declare abstract class Base_Ai_Cf_Pipecat_Ai_Smart_Turn_V2 { + inputs: Ai_Cf_Pipecat_Ai_Smart_Turn_V2_Input; + postProcessedOutputs: Ai_Cf_Pipecat_Ai_Smart_Turn_V2_Output; +} +declare abstract class Base_Ai_Cf_Openai_Gpt_Oss_120B { + inputs: XOR; + postProcessedOutputs: XOR; +} +declare abstract class Base_Ai_Cf_Openai_Gpt_Oss_20B { + inputs: XOR; + postProcessedOutputs: XOR; +} +interface Ai_Cf_Leonardo_Phoenix_1_0_Input { + /** + * A text description of the image you want to generate. + */ + prompt: string; + /** + * Controls how closely the generated image should adhere to the prompt; higher values make the image more aligned with the prompt + */ + guidance?: number; + /** + * Random seed for reproducibility of the image generation + */ + seed?: number; + /** + * The height of the generated image in pixels + */ + height?: number; + /** + * The width of the generated image in pixels + */ + width?: number; + /** + * The number of diffusion steps; higher values can improve quality but take longer + */ + num_steps?: number; + /** + * Specify what to exclude from the generated images + */ + negative_prompt?: string; +} +/** + * The generated image in JPEG format + */ +type Ai_Cf_Leonardo_Phoenix_1_0_Output = string; +declare abstract class Base_Ai_Cf_Leonardo_Phoenix_1_0 { + inputs: Ai_Cf_Leonardo_Phoenix_1_0_Input; + postProcessedOutputs: Ai_Cf_Leonardo_Phoenix_1_0_Output; +} +interface Ai_Cf_Leonardo_Lucid_Origin_Input { + /** + * A text description of the image you want to generate. + */ + prompt: string; + /** + * Controls how closely the generated image should adhere to the prompt; higher values make the image more aligned with the prompt + */ + guidance?: number; + /** + * Random seed for reproducibility of the image generation + */ + seed?: number; + /** + * The height of the generated image in pixels + */ + height?: number; + /** + * The width of the generated image in pixels + */ + width?: number; + /** + * The number of diffusion steps; higher values can improve quality but take longer + */ + num_steps?: number; + /** + * The number of diffusion steps; higher values can improve quality but take longer + */ + steps?: number; +} +interface Ai_Cf_Leonardo_Lucid_Origin_Output { + /** + * The generated image in Base64 format. + */ + image?: string; +} +declare abstract class Base_Ai_Cf_Leonardo_Lucid_Origin { + inputs: Ai_Cf_Leonardo_Lucid_Origin_Input; + postProcessedOutputs: Ai_Cf_Leonardo_Lucid_Origin_Output; +} +interface Ai_Cf_Deepgram_Aura_1_Input { + /** + * Speaker used to produce the audio. + */ + speaker?: "angus" | "asteria" | "arcas" | "orion" | "orpheus" | "athena" | "luna" | "zeus" | "perseus" | "helios" | "hera" | "stella"; + /** + * Encoding of the output audio. + */ + encoding?: "linear16" | "flac" | "mulaw" | "alaw" | "mp3" | "opus" | "aac"; + /** + * Container specifies the file format wrapper for the output audio. The available options depend on the encoding type.. + */ + container?: "none" | "wav" | "ogg"; + /** + * The text content to be converted to speech + */ + text: string; + /** + * Sample Rate specifies the sample rate for the output audio. Based on the encoding, different sample rates are supported. For some encodings, the sample rate is not configurable + */ + sample_rate?: number; + /** + * The bitrate of the audio in bits per second. Choose from predefined ranges or specific values based on the encoding type. + */ + bit_rate?: number; +} +/** + * The generated audio in MP3 format + */ +type Ai_Cf_Deepgram_Aura_1_Output = string; +declare abstract class Base_Ai_Cf_Deepgram_Aura_1 { + inputs: Ai_Cf_Deepgram_Aura_1_Input; + postProcessedOutputs: Ai_Cf_Deepgram_Aura_1_Output; +} +interface Ai_Cf_Ai4Bharat_Indictrans2_En_Indic_1B_Input { + /** + * Input text to translate. Can be a single string or a list of strings. + */ + text: string | string[]; + /** + * Target langauge to translate to + */ + target_language: "asm_Beng" | "awa_Deva" | "ben_Beng" | "bho_Deva" | "brx_Deva" | "doi_Deva" | "eng_Latn" | "gom_Deva" | "gon_Deva" | "guj_Gujr" | "hin_Deva" | "hne_Deva" | "kan_Knda" | "kas_Arab" | "kas_Deva" | "kha_Latn" | "lus_Latn" | "mag_Deva" | "mai_Deva" | "mal_Mlym" | "mar_Deva" | "mni_Beng" | "mni_Mtei" | "npi_Deva" | "ory_Orya" | "pan_Guru" | "san_Deva" | "sat_Olck" | "snd_Arab" | "snd_Deva" | "tam_Taml" | "tel_Telu" | "urd_Arab" | "unr_Deva"; +} +interface Ai_Cf_Ai4Bharat_Indictrans2_En_Indic_1B_Output { + /** + * Translated texts + */ + translations: string[]; +} +declare abstract class Base_Ai_Cf_Ai4Bharat_Indictrans2_En_Indic_1B { + inputs: Ai_Cf_Ai4Bharat_Indictrans2_En_Indic_1B_Input; + postProcessedOutputs: Ai_Cf_Ai4Bharat_Indictrans2_En_Indic_1B_Output; +} +type Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Input = Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Prompt | Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Messages | Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Async_Batch; +interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Prompt { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string; + /** + * Name of the LoRA (Low-Rank Adaptation) model to fine-tune the base model. + */ + lora?: string; + response_format?: Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_JSON_Mode; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_JSON_Mode { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Messages { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role: string; + content: string | { + /** + * Type of the content (text) + */ + type?: string; + /** + * Text content + */ + text?: string; + }[]; + }[]; + functions?: { + name: string; + code: string; + }[]; + /** + * A list of tools available for the assistant to use. + */ + tools?: ({ + /** + * The name of the tool. More descriptive the better. + */ + name: string; + /** + * A brief description of what the tool does. + */ + description: string; + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + } | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string; + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string; + /** + * A brief description of what the function does. + */ + description: string; + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + }; + })[]; + response_format?: Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_JSON_Mode_1; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_JSON_Mode_1 { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Async_Batch { + requests: (Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Prompt_1 | Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Messages_1)[]; +} +interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Prompt_1 { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string; + /** + * Name of the LoRA (Low-Rank Adaptation) model to fine-tune the base model. + */ + lora?: string; + response_format?: Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_JSON_Mode_2; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_JSON_Mode_2 { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Messages_1 { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role: string; + content: string | { + /** + * Type of the content (text) + */ + type?: string; + /** + * Text content + */ + text?: string; + }[]; + }[]; + functions?: { + name: string; + code: string; + }[]; + /** + * A list of tools available for the assistant to use. + */ + tools?: ({ + /** + * The name of the tool. More descriptive the better. + */ + name: string; + /** + * A brief description of what the tool does. + */ + description: string; + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + } | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string; + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string; + /** + * A brief description of what the function does. + */ + description: string; + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + }; + })[]; + response_format?: Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_JSON_Mode_3; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_JSON_Mode_3 { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +type Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Output = Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Chat_Completion_Response | Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Text_Completion_Response | string | Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_AsyncResponse; +interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Chat_Completion_Response { + /** + * Unique identifier for the completion + */ + id?: string; + /** + * Object type identifier + */ + object?: "chat.completion"; + /** + * Unix timestamp of when the completion was created + */ + created?: number; + /** + * Model used for the completion + */ + model?: string; + /** + * List of completion choices + */ + choices?: { + /** + * Index of the choice in the list + */ + index?: number; + /** + * The message generated by the model + */ + message?: { + /** + * Role of the message author + */ + role: string; + /** + * The content of the message + */ + content: string; + /** + * Internal reasoning content (if available) + */ + reasoning_content?: string; + /** + * Tool calls made by the assistant + */ + tool_calls?: { + /** + * Unique identifier for the tool call + */ + id: string; + /** + * Type of tool call + */ + type: "function"; + function: { + /** + * Name of the function to call + */ + name: string; + /** + * JSON string of arguments for the function + */ + arguments: string; + }; + }[]; + }; + /** + * Reason why the model stopped generating + */ + finish_reason?: string; + /** + * Stop reason (may be null) + */ + stop_reason?: string | null; + /** + * Log probabilities (if requested) + */ + logprobs?: {} | null; + }[]; + /** + * Usage statistics for the inference request + */ + usage?: { + /** + * Total number of tokens in input + */ + prompt_tokens?: number; + /** + * Total number of tokens in output + */ + completion_tokens?: number; + /** + * Total number of input and output tokens + */ + total_tokens?: number; + }; + /** + * Log probabilities for the prompt (if requested) + */ + prompt_logprobs?: {} | null; +} +interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Text_Completion_Response { + /** + * Unique identifier for the completion + */ + id?: string; + /** + * Object type identifier + */ + object?: "text_completion"; + /** + * Unix timestamp of when the completion was created + */ + created?: number; + /** + * Model used for the completion + */ + model?: string; + /** + * List of completion choices + */ + choices?: { + /** + * Index of the choice in the list + */ + index: number; + /** + * The generated text completion + */ + text: string; + /** + * Reason why the model stopped generating + */ + finish_reason: string; + /** + * Stop reason (may be null) + */ + stop_reason?: string | null; + /** + * Log probabilities (if requested) + */ + logprobs?: {} | null; + /** + * Log probabilities for the prompt (if requested) + */ + prompt_logprobs?: {} | null; + }[]; + /** + * Usage statistics for the inference request + */ + usage?: { + /** + * Total number of tokens in input + */ + prompt_tokens?: number; + /** + * Total number of tokens in output + */ + completion_tokens?: number; + /** + * Total number of input and output tokens + */ + total_tokens?: number; + }; +} +interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_AsyncResponse { + /** + * The async request id that can be used to obtain the results. + */ + request_id?: string; +} +declare abstract class Base_Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It { + inputs: Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Input; + postProcessedOutputs: Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Output; +} +interface Ai_Cf_Pfnet_Plamo_Embedding_1B_Input { + /** + * Input text to embed. Can be a single string or a list of strings. + */ + text: string | string[]; +} +interface Ai_Cf_Pfnet_Plamo_Embedding_1B_Output { + /** + * Embedding vectors, where each vector is a list of floats. + */ + data: number[][]; + /** + * Shape of the embedding data as [number_of_embeddings, embedding_dimension]. + * + * @minItems 2 + * @maxItems 2 + */ + shape: [ + number, + number + ]; +} +declare abstract class Base_Ai_Cf_Pfnet_Plamo_Embedding_1B { + inputs: Ai_Cf_Pfnet_Plamo_Embedding_1B_Input; + postProcessedOutputs: Ai_Cf_Pfnet_Plamo_Embedding_1B_Output; +} +interface Ai_Cf_Deepgram_Flux_Input { + /** + * Encoding of the audio stream. Currently only supports raw signed little-endian 16-bit PCM. + */ + encoding: "linear16"; + /** + * Sample rate of the audio stream in Hz. + */ + sample_rate: string; + /** + * End-of-turn confidence required to fire an eager end-of-turn event. When set, enables EagerEndOfTurn and TurnResumed events. Valid Values 0.3 - 0.9. + */ + eager_eot_threshold?: string; + /** + * End-of-turn confidence required to finish a turn. Valid Values 0.5 - 0.9. + */ + eot_threshold?: string; + /** + * A turn will be finished when this much time has passed after speech, regardless of EOT confidence. + */ + eot_timeout_ms?: string; + /** + * Keyterm prompting can improve recognition of specialized terminology. Pass multiple keyterm query parameters to boost multiple keyterms. + */ + keyterm?: string; + /** + * Opts out requests from the Deepgram Model Improvement Program. Refer to Deepgram Docs for pricing impacts before setting this to true. https://dpgr.am/deepgram-mip + */ + mip_opt_out?: "true" | "false"; + /** + * Label your requests for the purpose of identification during usage reporting + */ + tag?: string; +} +/** + * Output will be returned as websocket messages. + */ +interface Ai_Cf_Deepgram_Flux_Output { + /** + * The unique identifier of the request (uuid) + */ + request_id?: string; + /** + * Starts at 0 and increments for each message the server sends to the client. + */ + sequence_id?: number; + /** + * The type of event being reported. + */ + event?: "Update" | "StartOfTurn" | "EagerEndOfTurn" | "TurnResumed" | "EndOfTurn"; + /** + * The index of the current turn + */ + turn_index?: number; + /** + * Start time in seconds of the audio range that was transcribed + */ + audio_window_start?: number; + /** + * End time in seconds of the audio range that was transcribed + */ + audio_window_end?: number; + /** + * Text that was said over the course of the current turn + */ + transcript?: string; + /** + * The words in the transcript + */ + words?: { + /** + * The individual punctuated, properly-cased word from the transcript + */ + word: string; + /** + * Confidence that this word was transcribed correctly + */ + confidence: number; + }[]; + /** + * Confidence that no more speech is coming in this turn + */ + end_of_turn_confidence?: number; +} +declare abstract class Base_Ai_Cf_Deepgram_Flux { + inputs: Ai_Cf_Deepgram_Flux_Input; + postProcessedOutputs: Ai_Cf_Deepgram_Flux_Output; +} +interface Ai_Cf_Deepgram_Aura_2_En_Input { + /** + * Speaker used to produce the audio. + */ + speaker?: "amalthea" | "andromeda" | "apollo" | "arcas" | "aries" | "asteria" | "athena" | "atlas" | "aurora" | "callista" | "cora" | "cordelia" | "delia" | "draco" | "electra" | "harmonia" | "helena" | "hera" | "hermes" | "hyperion" | "iris" | "janus" | "juno" | "jupiter" | "luna" | "mars" | "minerva" | "neptune" | "odysseus" | "ophelia" | "orion" | "orpheus" | "pandora" | "phoebe" | "pluto" | "saturn" | "thalia" | "theia" | "vesta" | "zeus"; + /** + * Encoding of the output audio. + */ + encoding?: "linear16" | "flac" | "mulaw" | "alaw" | "mp3" | "opus" | "aac"; + /** + * Container specifies the file format wrapper for the output audio. The available options depend on the encoding type.. + */ + container?: "none" | "wav" | "ogg"; + /** + * The text content to be converted to speech + */ + text: string; + /** + * Sample Rate specifies the sample rate for the output audio. Based on the encoding, different sample rates are supported. For some encodings, the sample rate is not configurable + */ + sample_rate?: number; + /** + * The bitrate of the audio in bits per second. Choose from predefined ranges or specific values based on the encoding type. + */ + bit_rate?: number; +} +/** + * The generated audio in MP3 format + */ +type Ai_Cf_Deepgram_Aura_2_En_Output = string; +declare abstract class Base_Ai_Cf_Deepgram_Aura_2_En { + inputs: Ai_Cf_Deepgram_Aura_2_En_Input; + postProcessedOutputs: Ai_Cf_Deepgram_Aura_2_En_Output; +} +interface Ai_Cf_Deepgram_Aura_2_Es_Input { + /** + * Speaker used to produce the audio. + */ + speaker?: "sirio" | "nestor" | "carina" | "celeste" | "alvaro" | "diana" | "aquila" | "selena" | "estrella" | "javier"; + /** + * Encoding of the output audio. + */ + encoding?: "linear16" | "flac" | "mulaw" | "alaw" | "mp3" | "opus" | "aac"; + /** + * Container specifies the file format wrapper for the output audio. The available options depend on the encoding type.. + */ + container?: "none" | "wav" | "ogg"; + /** + * The text content to be converted to speech + */ + text: string; + /** + * Sample Rate specifies the sample rate for the output audio. Based on the encoding, different sample rates are supported. For some encodings, the sample rate is not configurable + */ + sample_rate?: number; + /** + * The bitrate of the audio in bits per second. Choose from predefined ranges or specific values based on the encoding type. + */ + bit_rate?: number; +} +/** + * The generated audio in MP3 format + */ +type Ai_Cf_Deepgram_Aura_2_Es_Output = string; +declare abstract class Base_Ai_Cf_Deepgram_Aura_2_Es { + inputs: Ai_Cf_Deepgram_Aura_2_Es_Input; + postProcessedOutputs: Ai_Cf_Deepgram_Aura_2_Es_Output; +} +interface Ai_Cf_Black_Forest_Labs_Flux_2_Dev_Input { + multipart: { + body?: object; + contentType?: string; + }; +} +interface Ai_Cf_Black_Forest_Labs_Flux_2_Dev_Output { + /** + * Generated image as Base64 string. + */ + image?: string; +} +declare abstract class Base_Ai_Cf_Black_Forest_Labs_Flux_2_Dev { + inputs: Ai_Cf_Black_Forest_Labs_Flux_2_Dev_Input; + postProcessedOutputs: Ai_Cf_Black_Forest_Labs_Flux_2_Dev_Output; +} +interface Ai_Cf_Black_Forest_Labs_Flux_2_Klein_4B_Input { + multipart: { + body?: object; + contentType?: string; + }; +} +interface Ai_Cf_Black_Forest_Labs_Flux_2_Klein_4B_Output { + /** + * Generated image as Base64 string. + */ + image?: string; +} +declare abstract class Base_Ai_Cf_Black_Forest_Labs_Flux_2_Klein_4B { + inputs: Ai_Cf_Black_Forest_Labs_Flux_2_Klein_4B_Input; + postProcessedOutputs: Ai_Cf_Black_Forest_Labs_Flux_2_Klein_4B_Output; +} +interface Ai_Cf_Black_Forest_Labs_Flux_2_Klein_9B_Input { + multipart: { + body?: object; + contentType?: string; + }; +} +interface Ai_Cf_Black_Forest_Labs_Flux_2_Klein_9B_Output { + /** + * Generated image as Base64 string. + */ + image?: string; +} +declare abstract class Base_Ai_Cf_Black_Forest_Labs_Flux_2_Klein_9B { + inputs: Ai_Cf_Black_Forest_Labs_Flux_2_Klein_9B_Input; + postProcessedOutputs: Ai_Cf_Black_Forest_Labs_Flux_2_Klein_9B_Output; +} +declare abstract class Base_Ai_Cf_Zai_Org_Glm_4_7_Flash { + inputs: ChatCompletionsInput; + postProcessedOutputs: ChatCompletionsOutput; +} +declare abstract class Base_Ai_Cf_Moonshotai_Kimi_K2_5 { + inputs: ChatCompletionsInput; + postProcessedOutputs: ChatCompletionsOutput; +} +declare abstract class Base_Ai_Cf_Nvidia_Nemotron_3_120B_A12B { + inputs: ChatCompletionsInput; + postProcessedOutputs: ChatCompletionsOutput; +} +declare abstract class Base_Ai_Cf_Google_Gemma_4_26B_A4B_IT { + inputs: ChatCompletionsInput; + postProcessedOutputs: ChatCompletionsOutput; +} +interface AiModels { + "@cf/huggingface/distilbert-sst-2-int8": BaseAiTextClassification; + "@cf/stabilityai/stable-diffusion-xl-base-1.0": BaseAiTextToImage; + "@cf/runwayml/stable-diffusion-v1-5-inpainting": BaseAiTextToImage; + "@cf/runwayml/stable-diffusion-v1-5-img2img": BaseAiTextToImage; + "@cf/lykon/dreamshaper-8-lcm": BaseAiTextToImage; + "@cf/bytedance/stable-diffusion-xl-lightning": BaseAiTextToImage; + "@cf/myshell-ai/melotts": BaseAiTextToSpeech; + "@cf/google/embeddinggemma-300m": BaseAiTextEmbeddings; + "@cf/microsoft/resnet-50": BaseAiImageClassification; + "@cf/meta/llama-2-7b-chat-int8": BaseAiTextGeneration; + "@cf/mistral/mistral-7b-instruct-v0.1": BaseAiTextGeneration; + "@cf/meta/llama-2-7b-chat-fp16": BaseAiTextGeneration; + "@hf/thebloke/llama-2-13b-chat-awq": BaseAiTextGeneration; + "@hf/thebloke/mistral-7b-instruct-v0.1-awq": BaseAiTextGeneration; + "@hf/thebloke/zephyr-7b-beta-awq": BaseAiTextGeneration; + "@hf/thebloke/openhermes-2.5-mistral-7b-awq": BaseAiTextGeneration; + "@hf/thebloke/neural-chat-7b-v3-1-awq": BaseAiTextGeneration; + "@hf/thebloke/deepseek-coder-6.7b-base-awq": BaseAiTextGeneration; + "@hf/thebloke/deepseek-coder-6.7b-instruct-awq": BaseAiTextGeneration; + "@cf/deepseek-ai/deepseek-math-7b-instruct": BaseAiTextGeneration; + "@cf/defog/sqlcoder-7b-2": BaseAiTextGeneration; + "@cf/openchat/openchat-3.5-0106": BaseAiTextGeneration; + "@cf/tiiuae/falcon-7b-instruct": BaseAiTextGeneration; + "@cf/thebloke/discolm-german-7b-v1-awq": BaseAiTextGeneration; + "@cf/qwen/qwen1.5-0.5b-chat": BaseAiTextGeneration; + "@cf/qwen/qwen1.5-7b-chat-awq": BaseAiTextGeneration; + "@cf/qwen/qwen1.5-14b-chat-awq": BaseAiTextGeneration; + "@cf/tinyllama/tinyllama-1.1b-chat-v1.0": BaseAiTextGeneration; + "@cf/microsoft/phi-2": BaseAiTextGeneration; + "@cf/qwen/qwen1.5-1.8b-chat": BaseAiTextGeneration; + "@cf/mistral/mistral-7b-instruct-v0.2-lora": BaseAiTextGeneration; + "@hf/nousresearch/hermes-2-pro-mistral-7b": BaseAiTextGeneration; + "@hf/nexusflow/starling-lm-7b-beta": BaseAiTextGeneration; + "@hf/google/gemma-7b-it": BaseAiTextGeneration; + "@cf/meta-llama/llama-2-7b-chat-hf-lora": BaseAiTextGeneration; + "@cf/google/gemma-2b-it-lora": BaseAiTextGeneration; + "@cf/google/gemma-7b-it-lora": BaseAiTextGeneration; + "@hf/mistral/mistral-7b-instruct-v0.2": BaseAiTextGeneration; + "@cf/meta/llama-3-8b-instruct": BaseAiTextGeneration; + "@cf/fblgit/una-cybertron-7b-v2-bf16": BaseAiTextGeneration; + "@cf/meta/llama-3-8b-instruct-awq": BaseAiTextGeneration; + "@cf/meta/llama-3.1-8b-instruct-fp8": BaseAiTextGeneration; + "@cf/meta/llama-3.1-8b-instruct-awq": BaseAiTextGeneration; + "@cf/meta/llama-3.2-3b-instruct": BaseAiTextGeneration; + "@cf/meta/llama-3.2-1b-instruct": BaseAiTextGeneration; + "@cf/deepseek-ai/deepseek-r1-distill-qwen-32b": BaseAiTextGeneration; + "@cf/ibm-granite/granite-4.0-h-micro": BaseAiTextGeneration; + "@cf/facebook/bart-large-cnn": BaseAiSummarization; + "@cf/llava-hf/llava-1.5-7b-hf": BaseAiImageToText; + "@cf/baai/bge-base-en-v1.5": Base_Ai_Cf_Baai_Bge_Base_En_V1_5; + "@cf/openai/whisper": Base_Ai_Cf_Openai_Whisper; + "@cf/meta/m2m100-1.2b": Base_Ai_Cf_Meta_M2M100_1_2B; + "@cf/baai/bge-small-en-v1.5": Base_Ai_Cf_Baai_Bge_Small_En_V1_5; + "@cf/baai/bge-large-en-v1.5": Base_Ai_Cf_Baai_Bge_Large_En_V1_5; + "@cf/unum/uform-gen2-qwen-500m": Base_Ai_Cf_Unum_Uform_Gen2_Qwen_500M; + "@cf/openai/whisper-tiny-en": Base_Ai_Cf_Openai_Whisper_Tiny_En; + "@cf/openai/whisper-large-v3-turbo": Base_Ai_Cf_Openai_Whisper_Large_V3_Turbo; + "@cf/baai/bge-m3": Base_Ai_Cf_Baai_Bge_M3; + "@cf/black-forest-labs/flux-1-schnell": Base_Ai_Cf_Black_Forest_Labs_Flux_1_Schnell; + "@cf/meta/llama-3.2-11b-vision-instruct": Base_Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct; + "@cf/meta/llama-3.3-70b-instruct-fp8-fast": Base_Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast; + "@cf/meta/llama-guard-3-8b": Base_Ai_Cf_Meta_Llama_Guard_3_8B; + "@cf/baai/bge-reranker-base": Base_Ai_Cf_Baai_Bge_Reranker_Base; + "@cf/qwen/qwen2.5-coder-32b-instruct": Base_Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct; + "@cf/qwen/qwq-32b": Base_Ai_Cf_Qwen_Qwq_32B; + "@cf/mistralai/mistral-small-3.1-24b-instruct": Base_Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct; + "@cf/google/gemma-3-12b-it": Base_Ai_Cf_Google_Gemma_3_12B_It; + "@cf/meta/llama-4-scout-17b-16e-instruct": Base_Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct; + "@cf/qwen/qwen3-30b-a3b-fp8": Base_Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8; + "@cf/deepgram/nova-3": Base_Ai_Cf_Deepgram_Nova_3; + "@cf/qwen/qwen3-embedding-0.6b": Base_Ai_Cf_Qwen_Qwen3_Embedding_0_6B; + "@cf/pipecat-ai/smart-turn-v2": Base_Ai_Cf_Pipecat_Ai_Smart_Turn_V2; + "@cf/openai/gpt-oss-120b": Base_Ai_Cf_Openai_Gpt_Oss_120B; + "@cf/openai/gpt-oss-20b": Base_Ai_Cf_Openai_Gpt_Oss_20B; + "@cf/leonardo/phoenix-1.0": Base_Ai_Cf_Leonardo_Phoenix_1_0; + "@cf/leonardo/lucid-origin": Base_Ai_Cf_Leonardo_Lucid_Origin; + "@cf/deepgram/aura-1": Base_Ai_Cf_Deepgram_Aura_1; + "@cf/ai4bharat/indictrans2-en-indic-1B": Base_Ai_Cf_Ai4Bharat_Indictrans2_En_Indic_1B; + "@cf/aisingapore/gemma-sea-lion-v4-27b-it": Base_Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It; + "@cf/pfnet/plamo-embedding-1b": Base_Ai_Cf_Pfnet_Plamo_Embedding_1B; + "@cf/deepgram/flux": Base_Ai_Cf_Deepgram_Flux; + "@cf/deepgram/aura-2-en": Base_Ai_Cf_Deepgram_Aura_2_En; + "@cf/deepgram/aura-2-es": Base_Ai_Cf_Deepgram_Aura_2_Es; + "@cf/black-forest-labs/flux-2-dev": Base_Ai_Cf_Black_Forest_Labs_Flux_2_Dev; + "@cf/black-forest-labs/flux-2-klein-4b": Base_Ai_Cf_Black_Forest_Labs_Flux_2_Klein_4B; + "@cf/black-forest-labs/flux-2-klein-9b": Base_Ai_Cf_Black_Forest_Labs_Flux_2_Klein_9B; + "@cf/zai-org/glm-4.7-flash": Base_Ai_Cf_Zai_Org_Glm_4_7_Flash; + "@cf/moonshotai/kimi-k2.5": Base_Ai_Cf_Moonshotai_Kimi_K2_5; + "@cf/nvidia/nemotron-3-120b-a12b": Base_Ai_Cf_Nvidia_Nemotron_3_120B_A12B; +} +type AiOptions = { + /** + * Send requests as an asynchronous batch job, only works for supported models + * https://developers.cloudflare.com/workers-ai/features/batch-api + */ + queueRequest?: boolean; + /** + * Establish websocket connections, only works for supported models + */ + websocket?: boolean; + /** + * Tag your requests to group and view them in Cloudflare dashboard. + * + * Rules: + * Tags must only contain letters, numbers, and the symbols: : - . / @ + * Each tag can have maximum 50 characters. + * Maximum 5 tags are allowed each request. + * Duplicate tags will removed. + */ + tags?: string[]; + gateway?: GatewayOptions; + returnRawResponse?: boolean; + prefix?: string; + extraHeaders?: object; + signal?: AbortSignal; +}; +type AiModelsSearchParams = { + author?: string; + hide_experimental?: boolean; + page?: number; + per_page?: number; + search?: string; + source?: number; + task?: string; +}; +type AiModelsSearchObject = { + id: string; + source: number; + name: string; + description: string; + task: { + id: string; + name: string; + description: string; + }; + tags: string[]; + properties: { + property_id: string; + value: string; + }[]; +}; +type ChatCompletionsBase = XOR; +type ChatCompletionsInput = XOR; +interface InferenceUpstreamError extends Error { +} +interface AiInternalError extends Error { +} +type AiModelListType = Record; +type AiAsyncBatchResponse = { + request_id: string; +}; +declare abstract class Ai { + aiGatewayLogId: string | null; + gateway(gatewayId: string): AiGateway; + /** + * @deprecated Use the standalone `ai_search_namespaces` or `ai_search` Workers bindings instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ + aiSearch(): AiSearchNamespace; + /** + * @deprecated AutoRAG has been replaced by AI Search. + * Use the standalone `ai_search_namespaces` or `ai_search` Workers bindings instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + * + * @param autoragId Instance ID + */ + autorag(autoragId: string): AutoRAG; + // Batch request + run(model: Name, inputs: { + requests: AiModelList[Name]['inputs'][]; + }, options: AiOptions & { + queueRequest: true; + }): Promise; + // Raw response + run(model: Name, inputs: AiModelList[Name]['inputs'], options: AiOptions & { + returnRawResponse: true; + }): Promise; + // WebSocket + run(model: Name, inputs: AiModelList[Name]['inputs'], options: AiOptions & { + websocket: true; + }): Promise; + // Streaming + run(model: Name, inputs: AiModelList[Name]['inputs'] & { + stream: true; + }, options?: AiOptions): Promise; + // Normal (default) - known model + run(model: Name, inputs: AiModelList[Name]['inputs'], options?: AiOptions): Promise; + // Unknown model (gateway fallback) + run(model: string & {}, inputs: Record, options?: AiOptions): Promise>; + models(params?: AiModelsSearchParams): Promise; + toMarkdown(): ToMarkdownService; + toMarkdown(files: MarkdownDocument[], options?: ConversionRequestOptions): Promise; + toMarkdown(files: MarkdownDocument, options?: ConversionRequestOptions): Promise; +} +type GatewayRetries = { + maxAttempts?: 1 | 2 | 3 | 4 | 5; + retryDelayMs?: number; + backoff?: 'constant' | 'linear' | 'exponential'; +}; +type GatewayOptions = { + id: string; + cacheKey?: string; + cacheTtl?: number; + skipCache?: boolean; + metadata?: Record; + collectLog?: boolean; + eventId?: string; + requestTimeoutMs?: number; + retries?: GatewayRetries; +}; +type UniversalGatewayOptions = Exclude & { + /** + ** @deprecated + */ + id?: string; +}; +type AiGatewayPatchLog = { + score?: number | null; + feedback?: -1 | 1 | null; + metadata?: Record | null; +}; +type AiGatewayLog = { + id: string; + provider: string; + model: string; + model_type?: string; + path: string; + duration: number; + request_type?: string; + request_content_type?: string; + status_code: number; + response_content_type?: string; + success: boolean; + cached: boolean; + tokens_in?: number; + tokens_out?: number; + metadata?: Record; + step?: number; + cost?: number; + custom_cost?: boolean; + request_size: number; + request_head?: string; + request_head_complete: boolean; + response_size: number; + response_head?: string; + response_head_complete: boolean; + created_at: Date; +}; +type AIGatewayProviders = 'workers-ai' | 'anthropic' | 'aws-bedrock' | 'azure-openai' | 'google-vertex-ai' | 'huggingface' | 'openai' | 'perplexity-ai' | 'replicate' | 'groq' | 'cohere' | 'google-ai-studio' | 'mistral' | 'grok' | 'openrouter' | 'deepseek' | 'cerebras' | 'cartesia' | 'elevenlabs' | 'adobe-firefly'; +type AIGatewayHeaders = { + 'cf-aig-metadata': Record | string; + 'cf-aig-custom-cost': { + per_token_in?: number; + per_token_out?: number; + } | { + total_cost?: number; + } | string; + 'cf-aig-cache-ttl': number | string; + 'cf-aig-skip-cache': boolean | string; + 'cf-aig-cache-key': string; + 'cf-aig-event-id': string; + 'cf-aig-request-timeout': number | string; + 'cf-aig-max-attempts': number | string; + 'cf-aig-retry-delay': number | string; + 'cf-aig-backoff': string; + 'cf-aig-collect-log': boolean | string; + Authorization: string; + 'Content-Type': string; + [key: string]: string | number | boolean | object; +}; +type AIGatewayUniversalRequest = { + provider: AIGatewayProviders | string; // eslint-disable-line + endpoint: string; + headers: Partial; + query: unknown; +}; +interface AiGatewayInternalError extends Error { +} +interface AiGatewayLogNotFound extends Error { +} +declare abstract class AiGateway { + patchLog(logId: string, data: AiGatewayPatchLog): Promise; + getLog(logId: string): Promise; + run(data: AIGatewayUniversalRequest | AIGatewayUniversalRequest[], options?: { + gateway?: UniversalGatewayOptions; + extraHeaders?: object; + signal?: AbortSignal; + }): Promise; + getUrl(provider?: AIGatewayProviders | string): Promise; // eslint-disable-line +} +// Copyright (c) 2022-2025 Cloudflare, Inc. +// Licensed under the Apache 2.0 license found in the LICENSE file or at: +// https://opensource.org/licenses/Apache-2.0 +/** + * Artifacts — Git-compatible file storage on Cloudflare Workers. + * + * Provides programmatic access to create, manage, and fork repositories, + * and to issue and revoke scoped access tokens. + */ +/** Information about a repository. */ +interface ArtifactsRepoInfo { + /** Unique repository ID. */ + id: string; + /** Repository name. */ + name: string; + /** Repository description, or null if not set. */ + description: string | null; + /** Default branch name (e.g. "main"). */ + defaultBranch: string; + /** ISO 8601 creation timestamp. */ + createdAt: string; + /** ISO 8601 last-updated timestamp. */ + updatedAt: string; + /** ISO 8601 timestamp of the last push, or null if never pushed. */ + lastPushAt: string | null; + /** Fork source (e.g. "github:owner/repo", "artifacts:namespace/repo"), or null if not a fork. */ + source: string | null; + /** Whether the repository is read-only. */ + readOnly: boolean; + /** HTTPS git remote URL. */ + remote: string; +} +/** Result of creating a repository — includes the initial access token. */ +interface ArtifactsCreateRepoResult { + /** Unique repository ID. */ + id: string; + /** Repository name. */ + name: string; + /** Repository description, or null if not set. */ + description: string | null; + /** Default branch name. */ + defaultBranch: string; + /** HTTPS git remote URL. */ + remote: string; + /** Plaintext access token (only returned at creation time). */ + token: string; + /** ISO 8601 token expiry timestamp. */ + tokenExpiresAt: string; +} +/** Paginated list of repositories. */ +interface ArtifactsRepoListResult { + /** Repositories in this page (without the `remote` field). */ + repos: Omit[]; + /** Total number of repositories in the namespace. */ + total: number; + /** Cursor for the next page, if there are more results. */ + cursor?: string; +} +/** Result of creating an access token. */ +interface ArtifactsCreateTokenResult { + /** Unique token ID. */ + id: string; + /** Plaintext token (only returned at creation time). */ + plaintext: string; + /** Token scope: "read" or "write". */ + scope: 'read' | 'write'; + /** ISO 8601 token expiry timestamp. */ + expiresAt: string; +} +/** Token metadata (no plaintext). */ +interface ArtifactsTokenInfo { + /** Unique token ID. */ + id: string; + /** Token scope: "read" or "write". */ + scope: 'read' | 'write'; + /** Token state: "active", "expired", or "revoked". */ + state: 'active' | 'expired' | 'revoked'; + /** ISO 8601 creation timestamp. */ + createdAt: string; + /** ISO 8601 expiry timestamp. */ + expiresAt: string; +} +/** Paginated list of tokens for a repository. */ +interface ArtifactsTokenListResult { + /** Tokens in this page. */ + tokens: ArtifactsTokenInfo[]; + /** Total number of tokens for the repository. */ + total: number; +} +/** Handle for a single repository. Returned by Artifacts.get(). */ +interface ArtifactsRepo extends ArtifactsRepoInfo { + /** + * Create an access token for this repo. + * @param scope Token scope: "write" (default) or "read". + * @param ttl Time-to-live in seconds (default 86400, min 60, max 31536000). + */ + createToken(scope?: 'write' | 'read', ttl?: number): Promise; + /** List tokens for this repo (metadata only, no plaintext). */ + listTokens(): Promise; + /** + * Revoke a token by plaintext or ID. + * @param tokenOrId Plaintext token or token ID. + * @returns true if revoked, false if not found. + */ + revokeToken(tokenOrId: string): Promise; + // ── Fork ── + /** + * Fork this repo to a new repo. + * @param name Target repository name. + * @param opts Optional: description, readOnly flag, defaultBranchOnly (default true). + */ + fork(name: string, opts?: { + description?: string; + readOnly?: boolean; + defaultBranchOnly?: boolean; + }): Promise; +} +/** Artifacts binding — namespace-level operations. */ +interface Artifacts { + /** + * Create a new repository with an initial access token. + * @param name Repository name (alphanumeric, dots, hyphens, underscores). + * @param opts Optional: readOnly flag, description, default branch name. + * @returns Repo metadata with initial token. + */ + create(name: string, opts?: { + readOnly?: boolean; + description?: string; + setDefaultBranch?: string; + }): Promise; + /** + * Get a handle to an existing repository. + * @param name Repository name. + * @returns Repo handle. + */ + get(name: string): Promise; + /** + * Import a repository from an external git remote. + * @param params Source URL and optional branch/depth, plus target name and options. + * @returns Repo metadata with initial token. + */ + import(params: { + source: { + url: string; + branch?: string; + depth?: number; + }; + target: { + name: string; + opts?: { + description?: string; + readOnly?: boolean; + }; + }; + }): Promise; + /** + * List repositories with cursor-based pagination. + * @param opts Optional: limit (1–200, default 50), cursor for next page. + */ + list(opts?: { + limit?: number; + cursor?: string; + }): Promise; + /** + * Delete a repository and all associated tokens. + * @param name Repository name. + * @returns true if deleted, false if not found. + */ + delete(name: string): Promise; +} +/** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ +interface AutoRAGInternalError extends Error { +} +/** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ +interface AutoRAGNotFoundError extends Error { +} +/** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ +interface AutoRAGUnauthorizedError extends Error { +} +/** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ +interface AutoRAGNameNotSetError extends Error { +} +type ComparisonFilter = { + key: string; + type: 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte'; + value: string | number | boolean; +}; +type CompoundFilter = { + type: 'and' | 'or'; + filters: ComparisonFilter[]; +}; +/** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ +type AutoRagSearchRequest = { + query: string; + filters?: CompoundFilter | ComparisonFilter; + max_num_results?: number; + ranking_options?: { + ranker?: string; + score_threshold?: number; + }; + reranking?: { + enabled?: boolean; + model?: string; + }; + rewrite_query?: boolean; +}; +/** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ +type AutoRagAiSearchRequest = AutoRagSearchRequest & { + stream?: boolean; + system_prompt?: string; +}; +/** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ +type AutoRagAiSearchRequestStreaming = Omit & { + stream: true; +}; +/** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ +type AutoRagSearchResponse = { + object: 'vector_store.search_results.page'; + search_query: string; + data: { + file_id: string; + filename: string; + score: number; + attributes: Record; + content: { + type: 'text'; + text: string; + }[]; + }[]; + has_more: boolean; + next_page: string | null; +}; +/** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ +type AutoRagListResponse = { + id: string; + enable: boolean; + type: string; + source: string; + vectorize_name: string; + paused: boolean; + status: string; +}[]; +/** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ +type AutoRagAiSearchResponse = AutoRagSearchResponse & { + response: string; +}; +/** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ +declare abstract class AutoRAG { + /** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ + list(): Promise; + /** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ + search(params: AutoRagSearchRequest): Promise; + /** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ + aiSearch(params: AutoRagAiSearchRequestStreaming): Promise; + /** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ + aiSearch(params: AutoRagAiSearchRequest): Promise; + /** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ + aiSearch(params: AutoRagAiSearchRequest): Promise; +} +interface BasicImageTransformations { + /** + * Maximum width in image pixels. The value must be an integer. + */ + width?: number; + /** + * Maximum height in image pixels. The value must be an integer. + */ + height?: number; + /** + * Resizing mode as a string. It affects interpretation of width and height + * options: + * - scale-down: Similar to contain, but the image is never enlarged. If + * the image is larger than given width or height, it will be resized. + * Otherwise its original size will be kept. + * - contain: Resizes to maximum size that fits within the given width and + * height. If only a single dimension is given (e.g. only width), the + * image will be shrunk or enlarged to exactly match that dimension. + * Aspect ratio is always preserved. + * - cover: Resizes (shrinks or enlarges) to fill the entire area of width + * and height. If the image has an aspect ratio different from the ratio + * of width and height, it will be cropped to fit. + * - crop: The image will be shrunk and cropped to fit within the area + * specified by width and height. The image will not be enlarged. For images + * smaller than the given dimensions it's the same as scale-down. For + * images larger than the given dimensions, it's the same as cover. + * See also trim. + * - pad: Resizes to the maximum size that fits within the given width and + * height, and then fills the remaining area with a background color + * (white by default). Use of this mode is not recommended, as the same + * effect can be more efficiently achieved with the contain mode and the + * CSS object-fit: contain property. + * - squeeze: Stretches and deforms to the width and height given, even if it + * breaks aspect ratio + */ + fit?: "scale-down" | "contain" | "cover" | "crop" | "pad" | "squeeze"; + /** + * Image segmentation using artificial intelligence models. Sets pixels not + * within selected segment area to transparent e.g "foreground" sets every + * background pixel as transparent. + */ + segment?: "foreground"; + /** + * When cropping with fit: "cover", this defines the side or point that should + * be left uncropped. The value is either a string + * "left", "right", "top", "bottom", "auto", or "center" (the default), + * or an object {x, y} containing focal point coordinates in the original + * image expressed as fractions ranging from 0.0 (top or left) to 1.0 + * (bottom or right), 0.5 being the center. {fit: "cover", gravity: "top"} will + * crop bottom or left and right sides as necessary, but won’t crop anything + * from the top. {fit: "cover", gravity: {x:0.5, y:0.2}} will crop each side to + * preserve as much as possible around a point at 20% of the height of the + * source image. + */ + gravity?: 'face' | 'left' | 'right' | 'top' | 'bottom' | 'center' | 'auto' | 'entropy' | BasicImageTransformationsGravityCoordinates; + /** + * Background color to add underneath the image. Applies only to images with + * transparency (such as PNG). Accepts any CSS color (#RRGGBB, rgba(…), + * hsl(…), etc.) + */ + background?: string; + /** + * Number of degrees (90, 180, 270) to rotate the image by. width and height + * options refer to axes after rotation. + */ + rotate?: 0 | 90 | 180 | 270 | 360; +} +interface BasicImageTransformationsGravityCoordinates { + x?: number; + y?: number; + mode?: 'remainder' | 'box-center'; +} +/** + * In addition to the properties you can set in the RequestInit dict + * that you pass as an argument to the Request constructor, you can + * set certain properties of a `cf` object to control how Cloudflare + * features are applied to that new Request. + * + * Note: Currently, these properties cannot be tested in the + * playground. + */ +interface RequestInitCfProperties extends Record { + cacheEverything?: boolean; + /** + * A request's cache key is what determines if two requests are + * "the same" for caching purposes. If a request has the same cache key + * as some previous request, then we can serve the same cached response for + * both. (e.g. 'some-key') + * + * Only available for Enterprise customers. + */ + cacheKey?: string; + /** + * This allows you to append additional Cache-Tag response headers + * to the origin response without modifications to the origin server. + * This will allow for greater control over the Purge by Cache Tag feature + * utilizing changes only in the Workers process. + * + * Only available for Enterprise customers. + */ + cacheTags?: string[]; + /** + * Force response to be cached for a given number of seconds. (e.g. 300) + */ + cacheTtl?: number; + /** + * Force response to be cached for a given number of seconds based on the Origin status code. + * (e.g. { '200-299': 86400, '404': 1, '500-599': 0 }) + */ + cacheTtlByStatus?: Record; + /** + * Explicit Cache-Control header value to set on the response stored in cache. + * This gives full control over cache directives (e.g. 'public, max-age=3600, s-maxage=86400'). + * + * Cannot be used together with `cacheTtl` or the `cache` request option (`no-store`/`no-cache`), + * as these are mutually exclusive cache control mechanisms. Setting both will throw a TypeError. + * + * Can be used together with `cacheTtlByStatus`. + */ + cacheControl?: string; + /** + * Whether the response should be eligible for Cache Reserve storage. + */ + cacheReserveEligible?: boolean; + /** + * Whether to respect strong ETags (as opposed to weak ETags) from the origin. + */ + respectStrongEtag?: boolean; + /** + * Whether to strip ETag headers from the origin response before caching. + */ + stripEtags?: boolean; + /** + * Whether to strip Last-Modified headers from the origin response before caching. + */ + stripLastModified?: boolean; + /** + * Whether to enable Cache Deception Armor, which protects against web cache + * deception attacks by verifying the Content-Type matches the URL extension. + */ + cacheDeceptionArmor?: boolean; + /** + * Minimum file size in bytes for a response to be eligible for Cache Reserve storage. + */ + cacheReserveMinimumFileSize?: number; + scrapeShield?: boolean; + apps?: boolean; + image?: RequestInitCfPropertiesImage; + minify?: RequestInitCfPropertiesImageMinify; + mirage?: boolean; + polish?: "lossy" | "lossless" | "off"; + r2?: RequestInitCfPropertiesR2; + /** + * Redirects the request to an alternate origin server. You can use this, + * for example, to implement load balancing across several origins. + * (e.g.us-east.example.com) + * + * Note - For security reasons, the hostname set in resolveOverride must + * be proxied on the same Cloudflare zone of the incoming request. + * Otherwise, the setting is ignored. CNAME hosts are allowed, so to + * resolve to a host under a different domain or a DNS only domain first + * declare a CNAME record within your own zone’s DNS mapping to the + * external hostname, set proxy on Cloudflare, then set resolveOverride + * to point to that CNAME record. + */ + resolveOverride?: string; +} +interface RequestInitCfPropertiesImageDraw extends BasicImageTransformations { + /** + * Absolute URL of the image file to use for the drawing. It can be any of + * the supported file formats. For drawing of watermarks or non-rectangular + * overlays we recommend using PNG or WebP images. + */ + url: string; + /** + * Floating-point number between 0 (transparent) and 1 (opaque). + * For example, opacity: 0.5 makes overlay semitransparent. + */ + opacity?: number; + /** + * - If set to true, the overlay image will be tiled to cover the entire + * area. This is useful for stock-photo-like watermarks. + * - If set to "x", the overlay image will be tiled horizontally only + * (form a line). + * - If set to "y", the overlay image will be tiled vertically only + * (form a line). + */ + repeat?: true | "x" | "y"; + /** + * Position of the overlay image relative to a given edge. Each property is + * an offset in pixels. 0 aligns exactly to the edge. For example, left: 10 + * positions left side of the overlay 10 pixels from the left edge of the + * image it's drawn over. bottom: 0 aligns bottom of the overlay with bottom + * of the background image. + * + * Setting both left & right, or both top & bottom is an error. + * + * If no position is specified, the image will be centered. + */ + top?: number; + left?: number; + bottom?: number; + right?: number; +} +interface RequestInitCfPropertiesImage extends BasicImageTransformations { + /** + * Device Pixel Ratio. Default 1. Multiplier for width/height that makes it + * easier to specify higher-DPI sizes in . + */ + dpr?: number; + /** + * Allows you to trim your image. Takes dpr into account and is performed before + * resizing or rotation. + * + * It can be used as: + * - left, top, right, bottom - it will specify the number of pixels to cut + * off each side + * - width, height - the width/height you'd like to end up with - can be used + * in combination with the properties above + * - border - this will automatically trim the surroundings of an image based on + * it's color. It consists of three properties: + * - color: rgb or hex representation of the color you wish to trim (todo: verify the rgba bit) + * - tolerance: difference from color to treat as color + * - keep: the number of pixels of border to keep + */ + trim?: "border" | { + top?: number; + bottom?: number; + left?: number; + right?: number; + width?: number; + height?: number; + border?: boolean | { + color?: string; + tolerance?: number; + keep?: number; + }; + }; + /** + * Quality setting from 1-100 (useful values are in 60-90 range). Lower values + * make images look worse, but load faster. The default is 85. It applies only + * to JPEG and WebP images. It doesn’t have any effect on PNG. + */ + quality?: number | "low" | "medium-low" | "medium-high" | "high"; + /** + * Output format to generate. It can be: + * - avif: generate images in AVIF format. + * - webp: generate images in Google WebP format. Set quality to 100 to get + * the WebP-lossless format. + * - json: instead of generating an image, outputs information about the + * image, in JSON format. The JSON object will contain image size + * (before and after resizing), source image’s MIME type, file size, etc. + * - jpeg: generate images in JPEG format. + * - png: generate images in PNG format. + */ + format?: "avif" | "webp" | "json" | "jpeg" | "png" | "baseline-jpeg" | "png-force" | "svg"; + /** + * Whether to preserve animation frames from input files. Default is true. + * Setting it to false reduces animations to still images. This setting is + * recommended when enlarging images or processing arbitrary user content, + * because large GIF animations can weigh tens or even hundreds of megabytes. + * It is also useful to set anim:false when using format:"json" to get the + * response quicker without the number of frames. + */ + anim?: boolean; + /** + * What EXIF data should be preserved in the output image. Note that EXIF + * rotation and embedded color profiles are always applied ("baked in" into + * the image), and aren't affected by this option. Note that if the Polish + * feature is enabled, all metadata may have been removed already and this + * option may have no effect. + * - keep: Preserve most of EXIF metadata, including GPS location if there's + * any. + * - copyright: Only keep the copyright tag, and discard everything else. + * This is the default behavior for JPEG files. + * - none: Discard all invisible EXIF metadata. Currently WebP and PNG + * output formats always discard metadata. + */ + metadata?: "keep" | "copyright" | "none"; + /** + * Strength of sharpening filter to apply to the image. Floating-point + * number between 0 (no sharpening, default) and 10 (maximum). 1.0 is a + * recommended value for downscaled images. + */ + sharpen?: number; + /** + * Radius of a blur filter (approximate gaussian). Maximum supported radius + * is 250. + */ + blur?: number; + /** + * Overlays are drawn in the order they appear in the array (last array + * entry is the topmost layer). + */ + draw?: RequestInitCfPropertiesImageDraw[]; + /** + * Fetching image from authenticated origin. Setting this property will + * pass authentication headers (Authorization, Cookie, etc.) through to + * the origin. + */ + "origin-auth"?: "share-publicly"; + /** + * Adds a border around the image. The border is added after resizing. Border + * width takes dpr into account, and can be specified either using a single + * width property, or individually for each side. + */ + border?: { + color: string; + width: number; + } | { + color: string; + top: number; + right: number; + bottom: number; + left: number; + }; + /** + * Increase brightness by a factor. A value of 1.0 equals no change, a value + * of 0.5 equals half brightness, and a value of 2.0 equals twice as bright. + * 0 is ignored. + */ + brightness?: number; + /** + * Increase contrast by a factor. A value of 1.0 equals no change, a value of + * 0.5 equals low contrast, and a value of 2.0 equals high contrast. 0 is + * ignored. + */ + contrast?: number; + /** + * Increase exposure by a factor. A value of 1.0 equals no change, a value of + * 0.5 darkens the image, and a value of 2.0 lightens the image. 0 is ignored. + */ + gamma?: number; + /** + * Increase contrast by a factor. A value of 1.0 equals no change, a value of + * 0.5 equals low contrast, and a value of 2.0 equals high contrast. 0 is + * ignored. + */ + saturation?: number; + /** + * Flips the images horizontally, vertically, or both. Flipping is applied before + * rotation, so if you apply flip=h,rotate=90 then the image will be flipped + * horizontally, then rotated by 90 degrees. + */ + flip?: 'h' | 'v' | 'hv'; + /** + * Slightly reduces latency on a cache miss by selecting a + * quickest-to-compress file format, at a cost of increased file size and + * lower image quality. It will usually override the format option and choose + * JPEG over WebP or AVIF. We do not recommend using this option, except in + * unusual circumstances like resizing uncacheable dynamically-generated + * images. + */ + compression?: "fast"; +} +interface RequestInitCfPropertiesImageMinify { + javascript?: boolean; + css?: boolean; + html?: boolean; +} +interface RequestInitCfPropertiesR2 { + /** + * Colo id of bucket that an object is stored in + */ + bucketColoId?: number; +} +/** + * Request metadata provided by Cloudflare's edge. + */ +type IncomingRequestCfProperties = IncomingRequestCfPropertiesBase & IncomingRequestCfPropertiesBotManagementEnterprise & IncomingRequestCfPropertiesCloudflareForSaaSEnterprise & IncomingRequestCfPropertiesGeographicInformation & IncomingRequestCfPropertiesCloudflareAccessOrApiShield; +interface IncomingRequestCfPropertiesBase extends Record { + /** + * [ASN](https://www.iana.org/assignments/as-numbers/as-numbers.xhtml) of the incoming request. + * + * @example 395747 + */ + asn?: number; + /** + * The organization which owns the ASN of the incoming request. + * + * @example "Google Cloud" + */ + asOrganization?: string; + /** + * The original value of the `Accept-Encoding` header if Cloudflare modified it. + * + * @example "gzip, deflate, br" + */ + clientAcceptEncoding?: string; + /** + * The number of milliseconds it took for the request to reach your worker. + * + * @example 22 + */ + clientTcpRtt?: number; + /** + * The three-letter [IATA](https://en.wikipedia.org/wiki/IATA_airport_code) + * airport code of the data center that the request hit. + * + * @example "DFW" + */ + colo: string; + /** + * Represents the upstream's response to a + * [TCP `keepalive` message](https://tldp.org/HOWTO/TCP-Keepalive-HOWTO/overview.html) + * from cloudflare. + * + * For workers with no upstream, this will always be `1`. + * + * @example 3 + */ + edgeRequestKeepAliveStatus: IncomingRequestCfPropertiesEdgeRequestKeepAliveStatus; + /** + * The HTTP Protocol the request used. + * + * @example "HTTP/2" + */ + httpProtocol: string; + /** + * The browser-requested prioritization information in the request object. + * + * If no information was set, defaults to the empty string `""` + * + * @example "weight=192;exclusive=0;group=3;group-weight=127" + * @default "" + */ + requestPriority: string; + /** + * The TLS version of the connection to Cloudflare. + * In requests served over plaintext (without TLS), this property is the empty string `""`. + * + * @example "TLSv1.3" + */ + tlsVersion: string; + /** + * The cipher for the connection to Cloudflare. + * In requests served over plaintext (without TLS), this property is the empty string `""`. + * + * @example "AEAD-AES128-GCM-SHA256" + */ + tlsCipher: string; + /** + * Metadata containing the [`HELLO`](https://www.rfc-editor.org/rfc/rfc5246#section-7.4.1.2) and [`FINISHED`](https://www.rfc-editor.org/rfc/rfc5246#section-7.4.9) messages from this request's TLS handshake. + * + * If the incoming request was served over plaintext (without TLS) this field is undefined. + */ + tlsExportedAuthenticator?: IncomingRequestCfPropertiesExportedAuthenticatorMetadata; +} +interface IncomingRequestCfPropertiesBotManagementBase { + /** + * Cloudflare’s [level of certainty](https://developers.cloudflare.com/bots/concepts/bot-score/) that a request comes from a bot, + * represented as an integer percentage between `1` (almost certainly a bot) and `99` (almost certainly human). + * + * @example 54 + */ + score: number; + /** + * A boolean value that is true if the request comes from a good bot, like Google or Bing. + * Most customers choose to allow this traffic. For more details, see [Traffic from known bots](https://developers.cloudflare.com/firewall/known-issues-and-faq/#how-does-firewall-rules-handle-traffic-from-known-bots). + */ + verifiedBot: boolean; + /** + * A boolean value that is true if the request originates from a + * Cloudflare-verified proxy service. + */ + corporateProxy: boolean; + /** + * A boolean value that's true if the request matches [file extensions](https://developers.cloudflare.com/bots/reference/static-resources/) for many types of static resources. + */ + staticResource: boolean; + /** + * List of IDs that correlate to the Bot Management heuristic detections made on a request (you can have multiple heuristic detections on the same request). + */ + detectionIds: number[]; +} +interface IncomingRequestCfPropertiesBotManagement { + /** + * Results of Cloudflare's Bot Management analysis + */ + botManagement: IncomingRequestCfPropertiesBotManagementBase; + /** + * Duplicate of `botManagement.score`. + * + * @deprecated + */ + clientTrustScore: number; +} +interface IncomingRequestCfPropertiesBotManagementEnterprise extends IncomingRequestCfPropertiesBotManagement { + /** + * Results of Cloudflare's Bot Management analysis + */ + botManagement: IncomingRequestCfPropertiesBotManagementBase & { + /** + * A [JA3 Fingerprint](https://developers.cloudflare.com/bots/concepts/ja3-fingerprint/) to help profile specific SSL/TLS clients + * across different destination IPs, Ports, and X509 certificates. + */ + ja3Hash: string; + }; +} +interface IncomingRequestCfPropertiesCloudflareForSaaSEnterprise { + /** + * Custom metadata set per-host in [Cloudflare for SaaS](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/). + * + * This field is only present if you have Cloudflare for SaaS enabled on your account + * and you have followed the [required steps to enable it]((https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/domain-support/custom-metadata/)). + */ + hostMetadata?: HostMetadata; +} +interface IncomingRequestCfPropertiesCloudflareAccessOrApiShield { + /** + * Information about the client certificate presented to Cloudflare. + * + * This is populated when the incoming request is served over TLS using + * either Cloudflare Access or API Shield (mTLS) + * and the presented SSL certificate has a valid + * [Certificate Serial Number](https://ldapwiki.com/wiki/Certificate%20Serial%20Number) + * (i.e., not `null` or `""`). + * + * Otherwise, a set of placeholder values are used. + * + * The property `certPresented` will be set to `"1"` when + * the object is populated (i.e. the above conditions were met). + */ + tlsClientAuth: IncomingRequestCfPropertiesTLSClientAuth | IncomingRequestCfPropertiesTLSClientAuthPlaceholder; +} +/** + * Metadata about the request's TLS handshake + */ +interface IncomingRequestCfPropertiesExportedAuthenticatorMetadata { + /** + * The client's [`HELLO` message](https://www.rfc-editor.org/rfc/rfc5246#section-7.4.1.2), encoded in hexadecimal + * + * @example "44372ba35fa1270921d318f34c12f155dc87b682cf36a790cfaa3ba8737a1b5d" + */ + clientHandshake: string; + /** + * The server's [`HELLO` message](https://www.rfc-editor.org/rfc/rfc5246#section-7.4.1.2), encoded in hexadecimal + * + * @example "44372ba35fa1270921d318f34c12f155dc87b682cf36a790cfaa3ba8737a1b5d" + */ + serverHandshake: string; + /** + * The client's [`FINISHED` message](https://www.rfc-editor.org/rfc/rfc5246#section-7.4.9), encoded in hexadecimal + * + * @example "084ee802fe1348f688220e2a6040a05b2199a761f33cf753abb1b006792d3f8b" + */ + clientFinished: string; + /** + * The server's [`FINISHED` message](https://www.rfc-editor.org/rfc/rfc5246#section-7.4.9), encoded in hexadecimal + * + * @example "084ee802fe1348f688220e2a6040a05b2199a761f33cf753abb1b006792d3f8b" + */ + serverFinished: string; +} +/** + * Geographic data about the request's origin. + */ +interface IncomingRequestCfPropertiesGeographicInformation { + /** + * The [ISO 3166-1 Alpha 2](https://www.iso.org/iso-3166-country-codes.html) country code the request originated from. + * + * If your worker is [configured to accept TOR connections](https://support.cloudflare.com/hc/en-us/articles/203306930-Understanding-Cloudflare-Tor-support-and-Onion-Routing), this may also be `"T1"`, indicating a request that originated over TOR. + * + * If Cloudflare is unable to determine where the request originated this property is omitted. + * + * The country code `"T1"` is used for requests originating on TOR. + * + * @example "GB" + */ + country?: Iso3166Alpha2Code | "T1"; + /** + * If present, this property indicates that the request originated in the EU + * + * @example "1" + */ + isEUCountry?: "1"; + /** + * A two-letter code indicating the continent the request originated from. + * + * @example "AN" + */ + continent?: ContinentCode; + /** + * The city the request originated from + * + * @example "Austin" + */ + city?: string; + /** + * Postal code of the incoming request + * + * @example "78701" + */ + postalCode?: string; + /** + * Latitude of the incoming request + * + * @example "30.27130" + */ + latitude?: string; + /** + * Longitude of the incoming request + * + * @example "-97.74260" + */ + longitude?: string; + /** + * Timezone of the incoming request + * + * @example "America/Chicago" + */ + timezone?: string; + /** + * If known, the ISO 3166-2 name for the first level region associated with + * the IP address of the incoming request + * + * @example "Texas" + */ + region?: string; + /** + * If known, the ISO 3166-2 code for the first-level region associated with + * the IP address of the incoming request + * + * @example "TX" + */ + regionCode?: string; + /** + * Metro code (DMA) of the incoming request + * + * @example "635" + */ + metroCode?: string; +} +/** Data about the incoming request's TLS certificate */ +interface IncomingRequestCfPropertiesTLSClientAuth { + /** Always `"1"`, indicating that the certificate was presented */ + certPresented: "1"; + /** + * Result of certificate verification. + * + * @example "FAILED:self signed certificate" + */ + certVerified: Exclude; + /** The presented certificate's revokation status. + * + * - A value of `"1"` indicates the certificate has been revoked + * - A value of `"0"` indicates the certificate has not been revoked + */ + certRevoked: "1" | "0"; + /** + * The certificate issuer's [distinguished name](https://knowledge.digicert.com/generalinformation/INFO1745.html) + * + * @example "CN=cloudflareaccess.com, C=US, ST=Texas, L=Austin, O=Cloudflare" + */ + certIssuerDN: string; + /** + * The certificate subject's [distinguished name](https://knowledge.digicert.com/generalinformation/INFO1745.html) + * + * @example "CN=*.cloudflareaccess.com, C=US, ST=Texas, L=Austin, O=Cloudflare" + */ + certSubjectDN: string; + /** + * The certificate issuer's [distinguished name](https://knowledge.digicert.com/generalinformation/INFO1745.html) ([RFC 2253](https://www.rfc-editor.org/rfc/rfc2253.html) formatted) + * + * @example "CN=cloudflareaccess.com, C=US, ST=Texas, L=Austin, O=Cloudflare" + */ + certIssuerDNRFC2253: string; + /** + * The certificate subject's [distinguished name](https://knowledge.digicert.com/generalinformation/INFO1745.html) ([RFC 2253](https://www.rfc-editor.org/rfc/rfc2253.html) formatted) + * + * @example "CN=*.cloudflareaccess.com, C=US, ST=Texas, L=Austin, O=Cloudflare" + */ + certSubjectDNRFC2253: string; + /** The certificate issuer's distinguished name (legacy policies) */ + certIssuerDNLegacy: string; + /** The certificate subject's distinguished name (legacy policies) */ + certSubjectDNLegacy: string; + /** + * The certificate's serial number + * + * @example "00936EACBE07F201DF" + */ + certSerial: string; + /** + * The certificate issuer's serial number + * + * @example "2489002934BDFEA34" + */ + certIssuerSerial: string; + /** + * The certificate's Subject Key Identifier + * + * @example "BB:AF:7E:02:3D:FA:A6:F1:3C:84:8E:AD:EE:38:98:EC:D9:32:32:D4" + */ + certSKI: string; + /** + * The certificate issuer's Subject Key Identifier + * + * @example "BB:AF:7E:02:3D:FA:A6:F1:3C:84:8E:AD:EE:38:98:EC:D9:32:32:D4" + */ + certIssuerSKI: string; + /** + * The certificate's SHA-1 fingerprint + * + * @example "6b9109f323999e52259cda7373ff0b4d26bd232e" + */ + certFingerprintSHA1: string; + /** + * The certificate's SHA-256 fingerprint + * + * @example "acf77cf37b4156a2708e34c4eb755f9b5dbbe5ebb55adfec8f11493438d19e6ad3f157f81fa3b98278453d5652b0c1fd1d71e5695ae4d709803a4d3f39de9dea" + */ + certFingerprintSHA256: string; + /** + * The effective starting date of the certificate + * + * @example "Dec 22 19:39:00 2018 GMT" + */ + certNotBefore: string; + /** + * The effective expiration date of the certificate + * + * @example "Dec 22 19:39:00 2018 GMT" + */ + certNotAfter: string; +} +/** Placeholder values for TLS Client Authorization */ +interface IncomingRequestCfPropertiesTLSClientAuthPlaceholder { + certPresented: "0"; + certVerified: "NONE"; + certRevoked: "0"; + certIssuerDN: ""; + certSubjectDN: ""; + certIssuerDNRFC2253: ""; + certSubjectDNRFC2253: ""; + certIssuerDNLegacy: ""; + certSubjectDNLegacy: ""; + certSerial: ""; + certIssuerSerial: ""; + certSKI: ""; + certIssuerSKI: ""; + certFingerprintSHA1: ""; + certFingerprintSHA256: ""; + certNotBefore: ""; + certNotAfter: ""; +} +/** Possible outcomes of TLS verification */ +declare type CertVerificationStatus = +/** Authentication succeeded */ +"SUCCESS" +/** No certificate was presented */ + | "NONE" +/** Failed because the certificate was self-signed */ + | "FAILED:self signed certificate" +/** Failed because the certificate failed a trust chain check */ + | "FAILED:unable to verify the first certificate" +/** Failed because the certificate not yet valid */ + | "FAILED:certificate is not yet valid" +/** Failed because the certificate is expired */ + | "FAILED:certificate has expired" +/** Failed for another unspecified reason */ + | "FAILED"; +/** + * An upstream endpoint's response to a TCP `keepalive` message from Cloudflare. + */ +declare type IncomingRequestCfPropertiesEdgeRequestKeepAliveStatus = 0 /** Unknown */ | 1 /** no keepalives (not found) */ | 2 /** no connection re-use, opening keepalive connection failed */ | 3 /** no connection re-use, keepalive accepted and saved */ | 4 /** connection re-use, refused by the origin server (`TCP FIN`) */ | 5; /** connection re-use, accepted by the origin server */ +/** ISO 3166-1 Alpha-2 codes */ +declare type Iso3166Alpha2Code = "AD" | "AE" | "AF" | "AG" | "AI" | "AL" | "AM" | "AO" | "AQ" | "AR" | "AS" | "AT" | "AU" | "AW" | "AX" | "AZ" | "BA" | "BB" | "BD" | "BE" | "BF" | "BG" | "BH" | "BI" | "BJ" | "BL" | "BM" | "BN" | "BO" | "BQ" | "BR" | "BS" | "BT" | "BV" | "BW" | "BY" | "BZ" | "CA" | "CC" | "CD" | "CF" | "CG" | "CH" | "CI" | "CK" | "CL" | "CM" | "CN" | "CO" | "CR" | "CU" | "CV" | "CW" | "CX" | "CY" | "CZ" | "DE" | "DJ" | "DK" | "DM" | "DO" | "DZ" | "EC" | "EE" | "EG" | "EH" | "ER" | "ES" | "ET" | "FI" | "FJ" | "FK" | "FM" | "FO" | "FR" | "GA" | "GB" | "GD" | "GE" | "GF" | "GG" | "GH" | "GI" | "GL" | "GM" | "GN" | "GP" | "GQ" | "GR" | "GS" | "GT" | "GU" | "GW" | "GY" | "HK" | "HM" | "HN" | "HR" | "HT" | "HU" | "ID" | "IE" | "IL" | "IM" | "IN" | "IO" | "IQ" | "IR" | "IS" | "IT" | "JE" | "JM" | "JO" | "JP" | "KE" | "KG" | "KH" | "KI" | "KM" | "KN" | "KP" | "KR" | "KW" | "KY" | "KZ" | "LA" | "LB" | "LC" | "LI" | "LK" | "LR" | "LS" | "LT" | "LU" | "LV" | "LY" | "MA" | "MC" | "MD" | "ME" | "MF" | "MG" | "MH" | "MK" | "ML" | "MM" | "MN" | "MO" | "MP" | "MQ" | "MR" | "MS" | "MT" | "MU" | "MV" | "MW" | "MX" | "MY" | "MZ" | "NA" | "NC" | "NE" | "NF" | "NG" | "NI" | "NL" | "NO" | "NP" | "NR" | "NU" | "NZ" | "OM" | "PA" | "PE" | "PF" | "PG" | "PH" | "PK" | "PL" | "PM" | "PN" | "PR" | "PS" | "PT" | "PW" | "PY" | "QA" | "RE" | "RO" | "RS" | "RU" | "RW" | "SA" | "SB" | "SC" | "SD" | "SE" | "SG" | "SH" | "SI" | "SJ" | "SK" | "SL" | "SM" | "SN" | "SO" | "SR" | "SS" | "ST" | "SV" | "SX" | "SY" | "SZ" | "TC" | "TD" | "TF" | "TG" | "TH" | "TJ" | "TK" | "TL" | "TM" | "TN" | "TO" | "TR" | "TT" | "TV" | "TW" | "TZ" | "UA" | "UG" | "UM" | "US" | "UY" | "UZ" | "VA" | "VC" | "VE" | "VG" | "VI" | "VN" | "VU" | "WF" | "WS" | "YE" | "YT" | "ZA" | "ZM" | "ZW"; +/** The 2-letter continent codes Cloudflare uses */ +declare type ContinentCode = "AF" | "AN" | "AS" | "EU" | "NA" | "OC" | "SA"; +type CfProperties = IncomingRequestCfProperties | RequestInitCfProperties; +interface D1Meta { + duration: number; + size_after: number; + rows_read: number; + rows_written: number; + last_row_id: number; + changed_db: boolean; + changes: number; + /** + * The region of the database instance that executed the query. + */ + served_by_region?: string; + /** + * The three letters airport code of the colo that executed the query. + */ + served_by_colo?: string; + /** + * True if-and-only-if the database instance that executed the query was the primary. + */ + served_by_primary?: boolean; + timings?: { + /** + * The duration of the SQL query execution by the database instance. It doesn't include any network time. + */ + sql_duration_ms: number; + }; + /** + * Number of total attempts to execute the query, due to automatic retries. + * Note: All other fields in the response like `timings` only apply to the last attempt. + */ + total_attempts?: number; +} +interface D1Response { + success: true; + meta: D1Meta & Record; + error?: never; +} +type D1Result = D1Response & { + results: T[]; +}; +interface D1ExecResult { + count: number; + duration: number; +} +type D1SessionConstraint = +// Indicates that the first query should go to the primary, and the rest queries +// using the same D1DatabaseSession will go to any replica that is consistent with +// the bookmark maintained by the session (returned by the first query). +'first-primary' +// Indicates that the first query can go anywhere (primary or replica), and the rest queries +// using the same D1DatabaseSession will go to any replica that is consistent with +// the bookmark maintained by the session (returned by the first query). + | 'first-unconstrained'; +type D1SessionBookmark = string; +declare abstract class D1Database { + prepare(query: string): D1PreparedStatement; + batch(statements: D1PreparedStatement[]): Promise[]>; + exec(query: string): Promise; + /** + * Creates a new D1 Session anchored at the given constraint or the bookmark. + * All queries executed using the created session will have sequential consistency, + * meaning that all writes done through the session will be visible in subsequent reads. + * + * @param constraintOrBookmark Either the session constraint or the explicit bookmark to anchor the created session. + */ + withSession(constraintOrBookmark?: D1SessionBookmark | D1SessionConstraint): D1DatabaseSession; + /** + * @deprecated dump() will be removed soon, only applies to deprecated alpha v1 databases. + */ + dump(): Promise; +} +declare abstract class D1DatabaseSession { + prepare(query: string): D1PreparedStatement; + batch(statements: D1PreparedStatement[]): Promise[]>; + /** + * @returns The latest session bookmark across all executed queries on the session. + * If no query has been executed yet, `null` is returned. + */ + getBookmark(): D1SessionBookmark | null; +} +declare abstract class D1PreparedStatement { + bind(...values: unknown[]): D1PreparedStatement; + first(colName: string): Promise; + first>(): Promise; + run>(): Promise>; + all>(): Promise>; + raw(options: { + columnNames: true; + }): Promise<[ + string[], + ...T[] + ]>; + raw(options?: { + columnNames?: false; + }): Promise; +} +// `Disposable` was added to TypeScript's standard lib types in version 5.2. +// To support older TypeScript versions, define an empty `Disposable` interface. +// Users won't be able to use `using`/`Symbol.dispose` without upgrading to 5.2, +// but this will ensure type checking on older versions still passes. +// TypeScript's interface merging will ensure our empty interface is effectively +// ignored when `Disposable` is included in the standard lib. +interface Disposable { +} +/** + * The returned data after sending an email + */ +interface EmailSendResult { + /** + * The Email Message ID + */ + messageId: string; +} +/** + * An email message that can be sent from a Worker. + */ +interface EmailMessage { + /** + * Envelope From attribute of the email message. + */ + readonly from: string; + /** + * Envelope To attribute of the email message. + */ + readonly to: string; +} +/** + * An email message that is sent to a consumer Worker and can be rejected/forwarded. + */ +interface ForwardableEmailMessage extends EmailMessage { + /** + * Stream of the email message content. + */ + readonly raw: ReadableStream; + /** + * An [Headers object](https://developer.mozilla.org/en-US/docs/Web/API/Headers). + */ + readonly headers: Headers; + /** + * Size of the email message content. + */ + readonly rawSize: number; + /** + * Reject this email message by returning a permanent SMTP error back to the connecting client including the given reason. + * @param reason The reject reason. + * @returns void + */ + setReject(reason: string): void; + /** + * Forward this email message to a verified destination address of the account. + * @param rcptTo Verified destination address. + * @param headers A [Headers object](https://developer.mozilla.org/en-US/docs/Web/API/Headers). + * @returns A promise that resolves when the email message is forwarded. + */ + forward(rcptTo: string, headers?: Headers): Promise; + /** + * Reply to the sender of this email message with a new EmailMessage object. + * @param message The reply message. + * @returns A promise that resolves when the email message is replied. + */ + reply(message: EmailMessage): Promise; +} +/** A file attachment for an email message */ +type EmailAttachment = { + disposition: 'inline'; + contentId: string; + filename: string; + type: string; + content: string | ArrayBuffer | ArrayBufferView; +} | { + disposition: 'attachment'; + contentId?: undefined; + filename: string; + type: string; + content: string | ArrayBuffer | ArrayBufferView; +}; +/** An Email Address */ +interface EmailAddress { + name: string; + email: string; +} +/** + * A binding that allows a Worker to send email messages. + */ +interface SendEmail { + send(message: EmailMessage): Promise; + send(builder: { + from: string | EmailAddress; + to: string | string[]; + subject: string; + replyTo?: string | EmailAddress; + cc?: string | string[]; + bcc?: string | string[]; + headers?: Record; + text?: string; + html?: string; + attachments?: EmailAttachment[]; + }): Promise; +} +declare abstract class EmailEvent extends ExtendableEvent { + readonly message: ForwardableEmailMessage; +} +declare type EmailExportedHandler = (message: ForwardableEmailMessage, env: Env, ctx: ExecutionContext) => void | Promise; +declare module "cloudflare:email" { + let _EmailMessage: { + prototype: EmailMessage; + new (from: string, to: string, raw: ReadableStream | string): EmailMessage; + }; + export { _EmailMessage as EmailMessage }; +} +/** + * Evaluation context for targeting rules. + * Keys are attribute names (e.g. "userId", "country"), values are the attribute values. + */ +type FlagshipEvaluationContext = Record; +interface FlagshipEvaluationDetails { + flagKey: string; + value: T; + variant?: string | undefined; + reason?: string | undefined; + errorCode?: string | undefined; + errorMessage?: string | undefined; +} +interface FlagshipEvaluationError extends Error { +} +/** + * Feature flags binding for evaluating feature flags from a Cloudflare Workers script. + * + * @example + * ```typescript + * // Get a boolean flag value with a default + * const enabled = await env.FLAGS.getBooleanValue('my-feature', false); + * + * // Get a flag value with evaluation context for targeting + * const variant = await env.FLAGS.getStringValue('experiment', 'control', { + * userId: 'user-123', + * country: 'US', + * }); + * + * // Get full evaluation details including variant and reason + * const details = await env.FLAGS.getBooleanDetails('my-feature', false); + * console.log(details.variant, details.reason); + * ``` + */ +declare abstract class Flagship { + /** + * Get a flag value without type checking. + * @param flagKey The key of the flag to evaluate. + * @param defaultValue Optional default value returned when evaluation fails. + * @param context Optional evaluation context for targeting rules. + */ + get(flagKey: string, defaultValue?: unknown, context?: FlagshipEvaluationContext): Promise; + /** + * Get a boolean flag value. + * @param flagKey The key of the flag to evaluate. + * @param defaultValue Default value returned when evaluation fails or the flag type does not match. + * @param context Optional evaluation context for targeting rules. + */ + getBooleanValue(flagKey: string, defaultValue: boolean, context?: FlagshipEvaluationContext): Promise; + /** + * Get a string flag value. + * @param flagKey The key of the flag to evaluate. + * @param defaultValue Default value returned when evaluation fails or the flag type does not match. + * @param context Optional evaluation context for targeting rules. + */ + getStringValue(flagKey: string, defaultValue: string, context?: FlagshipEvaluationContext): Promise; + /** + * Get a number flag value. + * @param flagKey The key of the flag to evaluate. + * @param defaultValue Default value returned when evaluation fails or the flag type does not match. + * @param context Optional evaluation context for targeting rules. + */ + getNumberValue(flagKey: string, defaultValue: number, context?: FlagshipEvaluationContext): Promise; + /** + * Get an object flag value. + * @param flagKey The key of the flag to evaluate. + * @param defaultValue Default value returned when evaluation fails or the flag type does not match. + * @param context Optional evaluation context for targeting rules. + */ + getObjectValue(flagKey: string, defaultValue: T, context?: FlagshipEvaluationContext): Promise; + /** + * Get a boolean flag value with full evaluation details. + * @param flagKey The key of the flag to evaluate. + * @param defaultValue Default value returned when evaluation fails or the flag type does not match. + * @param context Optional evaluation context for targeting rules. + */ + getBooleanDetails(flagKey: string, defaultValue: boolean, context?: FlagshipEvaluationContext): Promise>; + /** + * Get a string flag value with full evaluation details. + * @param flagKey The key of the flag to evaluate. + * @param defaultValue Default value returned when evaluation fails or the flag type does not match. + * @param context Optional evaluation context for targeting rules. + */ + getStringDetails(flagKey: string, defaultValue: string, context?: FlagshipEvaluationContext): Promise>; + /** + * Get a number flag value with full evaluation details. + * @param flagKey The key of the flag to evaluate. + * @param defaultValue Default value returned when evaluation fails or the flag type does not match. + * @param context Optional evaluation context for targeting rules. + */ + getNumberDetails(flagKey: string, defaultValue: number, context?: FlagshipEvaluationContext): Promise>; + /** + * Get an object flag value with full evaluation details. + * @param flagKey The key of the flag to evaluate. + * @param defaultValue Default value returned when evaluation fails or the flag type does not match. + * @param context Optional evaluation context for targeting rules. + */ + getObjectDetails(flagKey: string, defaultValue: T, context?: FlagshipEvaluationContext): Promise>; +} +/** + * Hello World binding to serve as an explanatory example. DO NOT USE + */ +interface HelloWorldBinding { + /** + * Retrieve the current stored value + */ + get(): Promise<{ + value: string; + ms?: number; + }>; + /** + * Set a new stored value + */ + set(value: string): Promise; +} +interface Hyperdrive { + /** + * Connect directly to Hyperdrive as if it's your database, returning a TCP socket. + * + * Calling this method returns an identical socket to if you call + * `connect("host:port")` using the `host` and `port` fields from this object. + * Pick whichever approach works better with your preferred DB client library. + * + * Note that this socket is not yet authenticated -- it's expected that your + * code (or preferably, the client library of your choice) will authenticate + * using the information in this class's readonly fields. + */ + connect(): Socket; + /** + * A valid DB connection string that can be passed straight into the typical + * client library/driver/ORM. This will typically be the easiest way to use + * Hyperdrive. + */ + readonly connectionString: string; + /* + * A randomly generated hostname that is only valid within the context of the + * currently running Worker which, when passed into `connect()` function from + * the "cloudflare:sockets" module, will connect to the Hyperdrive instance + * for your database. + */ + readonly host: string; + /* + * The port that must be paired the the host field when connecting. + */ + readonly port: number; + /* + * The username to use when authenticating to your database via Hyperdrive. + * Unlike the host and password, this will be the same every time + */ + readonly user: string; + /* + * The randomly generated password to use when authenticating to your + * database via Hyperdrive. Like the host field, this password is only valid + * within the context of the currently running Worker instance from which + * it's read. + */ + readonly password: string; + /* + * The name of the database to connect to. + */ + readonly database: string; +} +// Copyright (c) 2024 Cloudflare, Inc. +// Licensed under the Apache 2.0 license found in the LICENSE file or at: +// https://opensource.org/licenses/Apache-2.0 +type ImageInfoResponse = { + format: 'image/svg+xml'; +} | { + format: string; + fileSize: number; + width: number; + height: number; +}; +type ImageTransform = { + width?: number; + height?: number; + background?: string; + blur?: number; + border?: { + color?: string; + width?: number; + } | { + top?: number; + bottom?: number; + left?: number; + right?: number; + }; + brightness?: number; + contrast?: number; + fit?: 'scale-down' | 'contain' | 'pad' | 'squeeze' | 'cover' | 'crop'; + flip?: 'h' | 'v' | 'hv'; + gamma?: number; + segment?: 'foreground'; + gravity?: 'face' | 'left' | 'right' | 'top' | 'bottom' | 'center' | 'auto' | 'entropy' | { + x?: number; + y?: number; + mode: 'remainder' | 'box-center'; + }; + rotate?: 0 | 90 | 180 | 270; + saturation?: number; + sharpen?: number; + trim?: 'border' | { + top?: number; + bottom?: number; + left?: number; + right?: number; + width?: number; + height?: number; + border?: boolean | { + color?: string; + tolerance?: number; + keep?: number; + }; + }; +}; +type ImageDrawOptions = { + opacity?: number; + repeat?: boolean | string; + top?: number; + left?: number; + bottom?: number; + right?: number; +}; +type ImageInputOptions = { + encoding?: 'base64'; +}; +type ImageOutputOptions = { + format: 'image/jpeg' | 'image/png' | 'image/gif' | 'image/webp' | 'image/avif' | 'rgb' | 'rgba'; + quality?: number; + background?: string; + anim?: boolean; +}; +interface ImageMetadata { + id: string; + filename?: string; + uploaded?: string; + requireSignedURLs: boolean; + meta?: Record; + variants: string[]; + draft?: boolean; + creator?: string; +} +interface ImageUploadOptions { + id?: string; + filename?: string; + requireSignedURLs?: boolean; + metadata?: Record; + creator?: string; + encoding?: 'base64'; +} +interface ImageUpdateOptions { + requireSignedURLs?: boolean; + metadata?: Record; + creator?: string; +} +interface ImageListOptions { + limit?: number; + cursor?: string; + sortOrder?: 'asc' | 'desc'; + creator?: string; +} +interface ImageList { + images: ImageMetadata[]; + cursor?: string; + listComplete: boolean; +} +interface ImageHandle { + /** + * Get metadata for a hosted image + * @returns Image metadata, or null if not found + */ + details(): Promise; + /** + * Get the raw image data for a hosted image + * @returns ReadableStream of image bytes, or null if not found + */ + bytes(): Promise | null>; + /** + * Update hosted image metadata + * @param options Properties to update + * @returns Updated image metadata + * @throws {@link ImagesError} if update fails + */ + update(options: ImageUpdateOptions): Promise; + /** + * Delete a hosted image + * @returns True if deleted, false if not found + */ + delete(): Promise; +} +interface HostedImagesBinding { + /** + * Get a handle for a hosted image + * @param imageId The ID of the image (UUID or custom ID) + * @returns A handle for per-image operations + */ + image(imageId: string): ImageHandle; + /** + * Upload a new hosted image + * @param image The image file to upload + * @param options Upload configuration + * @returns Metadata for the uploaded image + * @throws {@link ImagesError} if upload fails + */ + upload(image: ReadableStream | ArrayBuffer, options?: ImageUploadOptions): Promise; + /** + * List hosted images with pagination + * @param options List configuration + * @returns List of images with pagination info + * @throws {@link ImagesError} if list fails + */ + list(options?: ImageListOptions): Promise; +} +interface ImagesBinding { + /** + * Get image metadata (type, width and height) + * @throws {@link ImagesError} with code 9412 if input is not an image + * @param stream The image bytes + */ + info(stream: ReadableStream, options?: ImageInputOptions): Promise; + /** + * Begin applying a series of transformations to an image + * @param stream The image bytes + * @returns A transform handle + */ + input(stream: ReadableStream, options?: ImageInputOptions): ImageTransformer; + /** + * Access hosted images CRUD operations + */ + readonly hosted: HostedImagesBinding; +} +interface ImageTransformer { + /** + * Apply transform next, returning a transform handle. + * You can then apply more transformations, draw, or retrieve the output. + * @param transform + */ + transform(transform: ImageTransform): ImageTransformer; + /** + * Draw an image on this transformer, returning a transform handle. + * You can then apply more transformations, draw, or retrieve the output. + * @param image The image (or transformer that will give the image) to draw + * @param options The options configuring how to draw the image + */ + draw(image: ReadableStream | ImageTransformer, options?: ImageDrawOptions): ImageTransformer; + /** + * Retrieve the image that results from applying the transforms to the + * provided input + * @param options Options that apply to the output e.g. output format + */ + output(options: ImageOutputOptions): Promise; +} +type ImageTransformationOutputOptions = { + encoding?: 'base64'; +}; +interface ImageTransformationResult { + /** + * The image as a response, ready to store in cache or return to users + */ + response(): Response; + /** + * The content type of the returned image + */ + contentType(): string; + /** + * The bytes of the response + */ + image(options?: ImageTransformationOutputOptions): ReadableStream; +} +interface ImagesError extends Error { + readonly code: number; + readonly message: string; + readonly stack?: string; +} +/** + * Media binding for transforming media streams. + * Provides the entry point for media transformation operations. + */ +interface MediaBinding { + /** + * Creates a media transformer from an input stream. + * @param media - The input media bytes + * @returns A MediaTransformer instance for applying transformations + */ + input(media: ReadableStream): MediaTransformer; +} +/** + * Media transformer for applying transformation operations to media content. + * Handles sizing, fitting, and other input transformation parameters. + */ +interface MediaTransformer { + /** + * Applies transformation options to the media content. + * @param transform - Configuration for how the media should be transformed + * @returns A generator for producing the transformed media output + */ + transform(transform?: MediaTransformationInputOptions): MediaTransformationGenerator; + /** + * Generates the final media output with specified options. + * @param output - Configuration for the output format and parameters + * @returns The final transformation result containing the transformed media + */ + output(output?: MediaTransformationOutputOptions): MediaTransformationResult; +} +/** + * Generator for producing media transformation results. + * Configures the output format and parameters for the transformed media. + */ +interface MediaTransformationGenerator { + /** + * Generates the final media output with specified options. + * @param output - Configuration for the output format and parameters + * @returns The final transformation result containing the transformed media + */ + output(output?: MediaTransformationOutputOptions): MediaTransformationResult; +} +/** + * Result of a media transformation operation. + * Provides multiple ways to access the transformed media content. + */ +interface MediaTransformationResult { + /** + * Returns the transformed media as a readable stream of bytes. + * @returns A promise containing a readable stream with the transformed media + */ + media(): Promise>; + /** + * Returns the transformed media as an HTTP response object. + * @returns The transformed media as a Promise, ready to store in cache or return to users + */ + response(): Promise; + /** + * Returns the MIME type of the transformed media. + * @returns A promise containing the content type string (e.g., 'image/jpeg', 'video/mp4') + */ + contentType(): Promise; +} +/** + * Configuration options for transforming media input. + * Controls how the media should be resized and fitted. + */ +type MediaTransformationInputOptions = { + /** How the media should be resized to fit the specified dimensions */ + fit?: 'contain' | 'cover' | 'scale-down'; + /** Target width in pixels */ + width?: number; + /** Target height in pixels */ + height?: number; +}; +/** + * Configuration options for Media Transformations output. + * Controls the format, timing, and type of the generated output. + */ +type MediaTransformationOutputOptions = { + /** + * Output mode determining the type of media to generate + */ + mode?: 'video' | 'spritesheet' | 'frame' | 'audio'; + /** Whether to include audio in the output */ + audio?: boolean; + /** + * Starting timestamp for frame extraction or start time for clips. (e.g. '2s'). + */ + time?: string; + /** + * Duration for video clips, audio extraction, and spritesheet generation (e.g. '5s'). + */ + duration?: string; + /** + * Number of frames in the spritesheet. + */ + imageCount?: number; + /** + * Output format for the generated media. + */ + format?: 'jpg' | 'png' | 'm4a'; +}; +/** + * Error object for media transformation operations. + * Extends the standard Error interface with additional media-specific information. + */ +interface MediaError extends Error { + readonly code: number; + readonly message: string; + readonly stack?: string; +} +declare module 'cloudflare:node' { + interface NodeStyleServer { + listen(...args: unknown[]): this; + address(): { + port?: number | null | undefined; + }; + } + export function httpServerHandler(port: number): ExportedHandler; + export function httpServerHandler(options: { + port: number; + }): ExportedHandler; + export function httpServerHandler(server: NodeStyleServer): ExportedHandler; +} +type Params

= Record; +type EventContext = { + request: Request>; + functionPath: string; + waitUntil: (promise: Promise) => void; + passThroughOnException: () => void; + next: (input?: Request | string, init?: RequestInit) => Promise; + env: Env & { + ASSETS: { + fetch: typeof fetch; + }; + }; + params: Params

; + data: Data; +}; +type PagesFunction = Record> = (context: EventContext) => Response | Promise; +type EventPluginContext = { + request: Request>; + functionPath: string; + waitUntil: (promise: Promise) => void; + passThroughOnException: () => void; + next: (input?: Request | string, init?: RequestInit) => Promise; + env: Env & { + ASSETS: { + fetch: typeof fetch; + }; + }; + params: Params

; + data: Data; + pluginArgs: PluginArgs; +}; +type PagesPluginFunction = Record, PluginArgs = unknown> = (context: EventPluginContext) => Response | Promise; +declare module "assets:*" { + export const onRequest: PagesFunction; +} +// Copyright (c) 2022-2023 Cloudflare, Inc. +// Licensed under the Apache 2.0 license found in the LICENSE file or at: +// https://opensource.org/licenses/Apache-2.0 +declare module "cloudflare:pipelines" { + export abstract class PipelineTransformationEntrypoint { + protected env: Env; + protected ctx: ExecutionContext; + constructor(ctx: ExecutionContext, env: Env); + /** + * run receives an array of PipelineRecord which can be + * transformed and returned to the pipeline + * @param records Incoming records from the pipeline to be transformed + * @param metadata Information about the specific pipeline calling the transformation entrypoint + * @returns A promise containing the transformed PipelineRecord array + */ + public run(records: I[], metadata: PipelineBatchMetadata): Promise; + } + export type PipelineRecord = Record; + export type PipelineBatchMetadata = { + pipelineId: string; + pipelineName: string; + }; + export interface Pipeline { + /** + * The Pipeline interface represents the type of a binding to a Pipeline + * + * @param records The records to send to the pipeline + */ + send(records: T[]): Promise; + } +} +// PubSubMessage represents an incoming PubSub message. +// The message includes metadata about the broker, the client, and the payload +// itself. +// https://developers.cloudflare.com/pub-sub/ +interface PubSubMessage { + // Message ID + readonly mid: number; + // MQTT broker FQDN in the form mqtts://BROKER.NAMESPACE.cloudflarepubsub.com:PORT + readonly broker: string; + // The MQTT topic the message was sent on. + readonly topic: string; + // The client ID of the client that published this message. + readonly clientId: string; + // The unique identifier (JWT ID) used by the client to authenticate, if token + // auth was used. + readonly jti?: string; + // A Unix timestamp (seconds from Jan 1, 1970), set when the Pub/Sub Broker + // received the message from the client. + readonly receivedAt: number; + // An (optional) string with the MIME type of the payload, if set by the + // client. + readonly contentType: string; + // Set to 1 when the payload is a UTF-8 string + // https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901063 + readonly payloadFormatIndicator: number; + // Pub/Sub (MQTT) payloads can be UTF-8 strings, or byte arrays. + // You can use payloadFormatIndicator to inspect this before decoding. + payload: string | Uint8Array; +} +// JsonWebKey extended by kid parameter +interface JsonWebKeyWithKid extends JsonWebKey { + // Key Identifier of the JWK + readonly kid: string; +} +interface RateLimitOptions { + key: string; +} +interface RateLimitOutcome { + success: boolean; +} +interface RateLimit { + /** + * Rate limit a request based on the provided options. + * @see https://developers.cloudflare.com/workers/runtime-apis/bindings/rate-limit/ + * @returns A promise that resolves with the outcome of the rate limit. + */ + limit(options: RateLimitOptions): Promise; +} +// Namespace for RPC utility types. Unfortunately, we can't use a `module` here as these types need +// to referenced by `Fetcher`. This is included in the "importable" version of the types which +// strips all `module` blocks. +declare namespace Rpc { + // Branded types for identifying `WorkerEntrypoint`/`DurableObject`/`Target`s. + // TypeScript uses *structural* typing meaning anything with the same shape as type `T` is a `T`. + // For the classes exported by `cloudflare:workers` we want *nominal* typing (i.e. we only want to + // accept `WorkerEntrypoint` from `cloudflare:workers`, not any other class with the same shape) + export const __RPC_STUB_BRAND: '__RPC_STUB_BRAND'; + export const __RPC_TARGET_BRAND: '__RPC_TARGET_BRAND'; + export const __WORKER_ENTRYPOINT_BRAND: '__WORKER_ENTRYPOINT_BRAND'; + export const __DURABLE_OBJECT_BRAND: '__DURABLE_OBJECT_BRAND'; + export const __WORKFLOW_ENTRYPOINT_BRAND: '__WORKFLOW_ENTRYPOINT_BRAND'; + export interface RpcTargetBranded { + [__RPC_TARGET_BRAND]: never; + } + export interface WorkerEntrypointBranded { + [__WORKER_ENTRYPOINT_BRAND]: never; + } + export interface DurableObjectBranded { + [__DURABLE_OBJECT_BRAND]: never; + } + export interface WorkflowEntrypointBranded { + [__WORKFLOW_ENTRYPOINT_BRAND]: never; + } + export type EntrypointBranded = WorkerEntrypointBranded | DurableObjectBranded | WorkflowEntrypointBranded; + // Types that can be used through `Stub`s + export type Stubable = RpcTargetBranded | ((...args: any[]) => any); + // Types that can be passed over RPC + // The reason for using a generic type here is to build a serializable subset of structured + // cloneable composite types. This allows types defined with the "interface" keyword to pass the + // serializable check as well. Otherwise, only types defined with the "type" keyword would pass. + type Serializable = + // Structured cloneables + BaseType + // Structured cloneable composites + | Map ? Serializable : never, T extends Map ? Serializable : never> | Set ? Serializable : never> | ReadonlyArray ? Serializable : never> | { + [K in keyof T]: K extends number | string ? Serializable : never; + } + // Special types + | Stub + // Serialized as stubs, see `Stubify` + | Stubable; + // Base type for all RPC stubs, including common memory management methods. + // `T` is used as a marker type for unwrapping `Stub`s later. + interface StubBase extends Disposable { + [__RPC_STUB_BRAND]: T; + dup(): this; + } + export type Stub = Provider & StubBase; + // This represents all the types that can be sent as-is over an RPC boundary + type BaseType = void | undefined | null | boolean | number | bigint | string | TypedArray | ArrayBuffer | DataView | Date | Error | RegExp | ReadableStream | WritableStream | Request | Response | Headers; + // Recursively rewrite all `Stubable` types with `Stub`s + // prettier-ignore + type Stubify = T extends Stubable ? Stub : T extends Map ? Map, Stubify> : T extends Set ? Set> : T extends Array ? Array> : T extends ReadonlyArray ? ReadonlyArray> : T extends BaseType ? T : T extends { + [key: string | number]: any; + } ? { + [K in keyof T]: Stubify; + } : T; + // Recursively rewrite all `Stub`s with the corresponding `T`s. + // Note we use `StubBase` instead of `Stub` here to avoid circular dependencies: + // `Stub` depends on `Provider`, which depends on `Unstubify`, which would depend on `Stub`. + // prettier-ignore + type Unstubify = T extends StubBase ? V : T extends Map ? Map, Unstubify> : T extends Set ? Set> : T extends Array ? Array> : T extends ReadonlyArray ? ReadonlyArray> : T extends BaseType ? T : T extends { + [key: string | number]: unknown; + } ? { + [K in keyof T]: Unstubify; + } : T; + type UnstubifyAll = { + [I in keyof A]: Unstubify; + }; + // Utility type for adding `Provider`/`Disposable`s to `object` types only. + // Note `unknown & T` is equivalent to `T`. + type MaybeProvider = T extends object ? Provider : unknown; + type MaybeDisposable = T extends object ? Disposable : unknown; + // Type for method return or property on an RPC interface. + // - Stubable types are replaced by stubs. + // - Serializable types are passed by value, with stubable types replaced by stubs + // and a top-level `Disposer`. + // Everything else can't be passed over PRC. + // Technically, we use custom thenables here, but they quack like `Promise`s. + // Intersecting with `(Maybe)Provider` allows pipelining. + // prettier-ignore + type Result = R extends Stubable ? Promise> & Provider : R extends Serializable ? Promise & MaybeDisposable> & MaybeProvider : never; + // Type for method or property on an RPC interface. + // For methods, unwrap `Stub`s in parameters, and rewrite returns to be `Result`s. + // Unwrapping `Stub`s allows calling with `Stubable` arguments. + // For properties, rewrite types to be `Result`s. + // In each case, unwrap `Promise`s. + type MethodOrProperty = V extends (...args: infer P) => infer R ? (...args: UnstubifyAll

) => Result> : Result>; + // Type for the callable part of an `Provider` if `T` is callable. + // This is intersected with methods/properties. + type MaybeCallableProvider = T extends (...args: any[]) => any ? MethodOrProperty : unknown; + // Base type for all other types providing RPC-like interfaces. + // Rewrites all methods/properties to be `MethodOrProperty`s, while preserving callable types. + // `Reserved` names (e.g. stub method names like `dup()`) and symbols can't be accessed over RPC. + export type Provider = MaybeCallableProvider & Pick<{ + [K in keyof T]: MethodOrProperty; + }, Exclude>>; +} +declare namespace Cloudflare { + // Type of `env`. + // + // The specific project can extend `Env` by redeclaring it in project-specific files. Typescript + // will merge all declarations. + // + // You can use `wrangler types` to generate the `Env` type automatically. + interface Env { + } + // Project-specific parameters used to inform types. + // + // This interface is, again, intended to be declared in project-specific files, and then that + // declaration will be merged with this one. + // + // A project should have a declaration like this: + // + // interface GlobalProps { + // // Declares the main module's exports. Used to populate Cloudflare.Exports aka the type + // // of `ctx.exports`. + // mainModule: typeof import("my-main-module"); + // + // // Declares which of the main module's exports are configured with durable storage, and + // // thus should behave as Durable Object namsepace bindings. + // durableNamespaces: "MyDurableObject" | "AnotherDurableObject"; + // } + // + // You can use `wrangler types` to generate `GlobalProps` automatically. + interface GlobalProps { + } + // Evaluates to the type of a property in GlobalProps, defaulting to `Default` if it is not + // present. + type GlobalProp = K extends keyof GlobalProps ? GlobalProps[K] : Default; + // The type of the program's main module exports, if known. Requires `GlobalProps` to declare the + // `mainModule` property. + type MainModule = GlobalProp<"mainModule", {}>; + // The type of ctx.exports, which contains loopback bindings for all top-level exports. + type Exports = { + [K in keyof MainModule]: LoopbackForExport + // If the export is listed in `durableNamespaces`, then it is also a + // DurableObjectNamespace. + & (K extends GlobalProp<"durableNamespaces", never> ? MainModule[K] extends new (...args: any[]) => infer DoInstance ? DoInstance extends Rpc.DurableObjectBranded ? DurableObjectNamespace : DurableObjectNamespace : DurableObjectNamespace : {}); + }; +} +declare namespace CloudflareWorkersModule { + export type RpcStub = Rpc.Stub; + export const RpcStub: { + new (value: T): Rpc.Stub; + }; + export abstract class RpcTarget implements Rpc.RpcTargetBranded { + [Rpc.__RPC_TARGET_BRAND]: never; + } + // `protected` fields don't appear in `keyof`s, so can't be accessed over RPC + export abstract class WorkerEntrypoint implements Rpc.WorkerEntrypointBranded { + [Rpc.__WORKER_ENTRYPOINT_BRAND]: never; + protected ctx: ExecutionContext; + protected env: Env; + constructor(ctx: ExecutionContext, env: Env); + email?(message: ForwardableEmailMessage): void | Promise; + fetch?(request: Request): Response | Promise; + connect?(socket: Socket): void | Promise; + queue?(batch: MessageBatch): void | Promise; + scheduled?(controller: ScheduledController): void | Promise; + tail?(events: TraceItem[]): void | Promise; + tailStream?(event: TailStream.TailEvent): TailStream.TailEventHandlerType | Promise; + test?(controller: TestController): void | Promise; + trace?(traces: TraceItem[]): void | Promise; + } + export abstract class DurableObject implements Rpc.DurableObjectBranded { + [Rpc.__DURABLE_OBJECT_BRAND]: never; + protected ctx: DurableObjectState; + protected env: Env; + constructor(ctx: DurableObjectState, env: Env); + alarm?(alarmInfo?: AlarmInvocationInfo): void | Promise; + fetch?(request: Request): Response | Promise; + connect?(socket: Socket): void | Promise; + webSocketMessage?(ws: WebSocket, message: string | ArrayBuffer): void | Promise; + webSocketClose?(ws: WebSocket, code: number, reason: string, wasClean: boolean): void | Promise; + webSocketError?(ws: WebSocket, error: unknown): void | Promise; + } + export type WorkflowDurationLabel = 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year'; + export type WorkflowSleepDuration = `${number} ${WorkflowDurationLabel}${'s' | ''}` | number; + export type WorkflowDelayDuration = WorkflowSleepDuration; + export type WorkflowTimeoutDuration = WorkflowSleepDuration; + export type WorkflowRetentionDuration = WorkflowSleepDuration; + export type WorkflowBackoff = 'constant' | 'linear' | 'exponential'; + export type WorkflowStepConfig = { + retries?: { + limit: number; + delay: WorkflowDelayDuration | number; + backoff?: WorkflowBackoff; + }; + timeout?: WorkflowTimeoutDuration | number; + }; + export type WorkflowEvent = { + payload: Readonly; + timestamp: Date; + instanceId: string; + }; + export type WorkflowStepEvent = { + payload: Readonly; + timestamp: Date; + type: string; + }; + export type WorkflowStepContext = { + step: { + name: string; + count: number; + }; + attempt: number; + config: WorkflowStepConfig; + }; + export abstract class WorkflowStep { + do>(name: string, callback: (ctx: WorkflowStepContext) => Promise): Promise; + do>(name: string, config: WorkflowStepConfig, callback: (ctx: WorkflowStepContext) => Promise): Promise; + sleep: (name: string, duration: WorkflowSleepDuration) => Promise; + sleepUntil: (name: string, timestamp: Date | number) => Promise; + waitForEvent>(name: string, options: { + type: string; + timeout?: WorkflowTimeoutDuration | number; + }): Promise>; + } + export type WorkflowInstanceStatus = 'queued' | 'running' | 'paused' | 'errored' | 'terminated' | 'complete' | 'waiting' | 'waitingForPause' | 'unknown'; + export abstract class WorkflowEntrypoint | unknown = unknown> implements Rpc.WorkflowEntrypointBranded { + [Rpc.__WORKFLOW_ENTRYPOINT_BRAND]: never; + protected ctx: ExecutionContext; + protected env: Env; + constructor(ctx: ExecutionContext, env: Env); + run(event: Readonly>, step: WorkflowStep): Promise; + } + export function waitUntil(promise: Promise): void; + export function withEnv(newEnv: unknown, fn: () => unknown): unknown; + export function withExports(newExports: unknown, fn: () => unknown): unknown; + export function withEnvAndExports(newEnv: unknown, newExports: unknown, fn: () => unknown): unknown; + export const env: Cloudflare.Env; + export const exports: Cloudflare.Exports; + export const cache: CacheContext; + export const tracing: Tracing; +} +declare module 'cloudflare:workers' { + export = CloudflareWorkersModule; +} +interface SecretsStoreSecret { + /** + * Get a secret from the Secrets Store, returning a string of the secret value + * if it exists, or throws an error if it does not exist + */ + get(): Promise; +} +declare module "cloudflare:sockets" { + function _connect(address: string | SocketAddress, options?: SocketOptions): Socket; + export { _connect as connect }; +} +/** + * Binding entrypoint for Cloudflare Stream. + * + * Usage: + * - Binding-level operations: + * `await env.STREAM.videos.upload` + * `await env.STREAM.videos.createDirectUpload` + * `await env.STREAM.videos.*` + * `await env.STREAM.watermarks.*` + * - Per-video operations: + * `await env.STREAM.video(id).downloads.*` + * `await env.STREAM.video(id).captions.*` + * + * Example usage: + * ```ts + * await env.STREAM.video(id).downloads.generate(); + * + * const video = env.STREAM.video(id) + * const captions = video.captions.list(); + * const videoDetails = video.details() + * ``` + */ +interface StreamBinding { + /** + * Returns a handle scoped to a single video for per-video operations. + * @param id The unique identifier for the video. + * @returns A handle for per-video operations. + */ + video(id: string): StreamVideoHandle; + /** + * Uploads a new video from a provided URL. + * @param url The URL to upload from. + * @param params Optional upload parameters. + * @returns The uploaded video details. + * @throws {BadRequestError} if the upload parameter is invalid or the URL is invalid + * @throws {QuotaReachedError} if the account storage capacity is exceeded + * @throws {MaxFileSizeError} if the file size is too large + * @throws {RateLimitedError} if the server received too many requests + * @throws {AlreadyUploadedError} if a video was already uploaded to this URL + * @throws {InternalError} if an unexpected error occurs + */ + upload(url: string, params?: StreamUrlUploadParams): Promise; + /** + * Creates a direct upload that allows video uploads without an API key. + * @param params Parameters for the direct upload + * @returns The direct upload details. + * @throws {BadRequestError} if the parameters are invalid + * @throws {RateLimitedError} if the server received too many requests + * @throws {InternalError} if an unexpected error occurs + */ + createDirectUpload(params: StreamDirectUploadCreateParams): Promise; + videos: StreamVideos; + watermarks: StreamWatermarks; +} +/** + * Handle for operations scoped to a single Stream video. + */ +interface StreamVideoHandle { + /** + * The unique identifier for the video. + */ + id: string; + /** + * Get a full videos details + * @returns The full video details. + * @throws {NotFoundError} if the video is not found + * @throws {InternalError} if an unexpected error occurs + */ + details(): Promise; + /** + * Update details for a single video. + * @param params The fields to update for the video. + * @returns The updated video details. + * @throws {NotFoundError} if the video is not found + * @throws {BadRequestError} if the parameters are invalid + * @throws {InternalError} if an unexpected error occurs + */ + update(params: StreamUpdateVideoParams): Promise; + /** + * Deletes a video and its copies from Cloudflare Stream. + * @returns A promise that resolves when deletion completes. + * @throws {NotFoundError} if the video is not found + * @throws {InternalError} if an unexpected error occurs + */ + delete(): Promise; + /** + * Creates a signed URL token for a video. + * @returns The signed token that was created. + * @throws {InternalError} if the signing key cannot be retrieved or the token cannot be signed + */ + generateToken(): Promise; + downloads: StreamScopedDownloads; + captions: StreamScopedCaptions; +} +interface StreamVideo { + /** + * The unique identifier for the video. + */ + id: string; + /** + * A user-defined identifier for the media creator. + */ + creator: string | null; + /** + * The thumbnail URL for the video. + */ + thumbnail: string; + /** + * The thumbnail timestamp percentage. + */ + thumbnailTimestampPct: number; + /** + * Indicates whether the video is ready to stream. + */ + readyToStream: boolean; + /** + * The date and time the video became ready to stream. + */ + readyToStreamAt: string | null; + /** + * Processing status information. + */ + status: StreamVideoStatus; + /** + * A user modifiable key-value store. + */ + meta: Record; + /** + * The date and time the video was created. + */ + created: string; + /** + * The date and time the video was last modified. + */ + modified: string; + /** + * The date and time at which the video will be deleted. + */ + scheduledDeletion: string | null; + /** + * The size of the video in bytes. + */ + size: number; + /** + * The preview URL for the video. + */ + preview?: string; + /** + * Origins allowed to display the video. + */ + allowedOrigins: Array; + /** + * Indicates whether signed URLs are required. + */ + requireSignedURLs: boolean | null; + /** + * The date and time the video was uploaded. + */ + uploaded: string | null; + /** + * The date and time when the upload URL expires. + */ + uploadExpiry: string | null; + /** + * The maximum size in bytes for direct uploads. + */ + maxSizeBytes: number | null; + /** + * The maximum duration in seconds for direct uploads. + */ + maxDurationSeconds: number | null; + /** + * The video duration in seconds. -1 indicates unknown. + */ + duration: number; + /** + * Input metadata for the original upload. + */ + input: StreamVideoInput; + /** + * Playback URLs for the video. + */ + hlsPlaybackUrl: string; + dashPlaybackUrl: string; + /** + * The watermark applied to the video, if any. + */ + watermark: StreamWatermark | null; + /** + * The live input id associated with the video, if any. + */ + liveInputId?: string | null; + /** + * The source video id if this is a clip. + */ + clippedFromId: string | null; + /** + * Public details associated with the video. + */ + publicDetails: StreamPublicDetails | null; +} +type StreamVideoStatus = { + /** + * The current processing state. + */ + state: string; + /** + * The current processing step. + */ + step?: string; + /** + * The percent complete as a string. + */ + pctComplete?: string; + /** + * An error reason code, if applicable. + */ + errorReasonCode: string; + /** + * An error reason text, if applicable. + */ + errorReasonText: string; +}; +type StreamVideoInput = { + /** + * The input width in pixels. + */ + width: number; + /** + * The input height in pixels. + */ + height: number; +}; +type StreamPublicDetails = { + /** + * The public title for the video. + */ + title: string | null; + /** + * The public share link. + */ + share_link: string | null; + /** + * The public channel link. + */ + channel_link: string | null; + /** + * The public logo URL. + */ + logo: string | null; +}; +type StreamDirectUpload = { + /** + * The URL an unauthenticated upload can use for a single multipart request. + */ + uploadURL: string; + /** + * A Cloudflare-generated unique identifier for a media item. + */ + id: string; + /** + * The watermark profile applied to the upload. + */ + watermark: StreamWatermark | null; + /** + * The scheduled deletion time, if any. + */ + scheduledDeletion: string | null; +}; +type StreamDirectUploadCreateParams = { + /** + * The maximum duration in seconds for a video upload. + */ + maxDurationSeconds: number; + /** + * The date and time after upload when videos will not be accepted. + */ + expiry?: string; + /** + * A user-defined identifier for the media creator. + */ + creator?: string; + /** + * A user modifiable key-value store used to reference other systems of record for + * managing videos. + */ + meta?: Record; + /** + * Lists the origins allowed to display the video. + */ + allowedOrigins?: Array; + /** + * Indicates whether the video can be accessed using the id. When set to `true`, + * a signed token must be generated with a signing key to view the video. + */ + requireSignedURLs?: boolean; + /** + * The thumbnail timestamp percentage. + */ + thumbnailTimestampPct?: number; + /** + * The date and time at which the video will be deleted. Include `null` to remove + * a scheduled deletion. + */ + scheduledDeletion?: string | null; + /** + * The watermark profile to apply. + */ + watermark?: StreamDirectUploadWatermark; +}; +type StreamDirectUploadWatermark = { + /** + * The unique identifier for the watermark profile. + */ + id: string; +}; +type StreamUrlUploadParams = { + /** + * Lists the origins allowed to display the video. Enter allowed origin + * domains in an array and use `*` for wildcard subdomains. Empty arrays allow the + * video to be viewed on any origin. + */ + allowedOrigins?: Array; + /** + * A user-defined identifier for the media creator. + */ + creator?: string; + /** + * A user modifiable key-value store used to reference other systems of + * record for managing videos. + */ + meta?: Record; + /** + * Indicates whether the video can be a accessed using the id. When + * set to `true`, a signed token must be generated with a signing key to view the + * video. + */ + requireSignedURLs?: boolean; + /** + * Indicates the date and time at which the video will be deleted. Omit + * the field to indicate no change, or include with a `null` value to remove an + * existing scheduled deletion. If specified, must be at least 30 days from upload + * time. + */ + scheduledDeletion?: string | null; + /** + * The timestamp for a thumbnail image calculated as a percentage value + * of the video's duration. To convert from a second-wise timestamp to a + * percentage, divide the desired timestamp by the total duration of the video. If + * this value is not set, the default thumbnail image is taken from 0s of the + * video. + */ + thumbnailTimestampPct?: number; + /** + * The identifier for the watermark profile + */ + watermarkId?: string; +}; +interface StreamScopedCaptions { + /** + * Uploads the caption or subtitle file to the endpoint for a specific BCP47 language. + * One caption or subtitle file per language is allowed. + * @param language The BCP 47 language tag for the caption or subtitle. + * @param input The caption or subtitle stream to upload. + * @returns The created caption entry. + * @throws {NotFoundError} if the video is not found + * @throws {BadRequestError} if the language or file is invalid + * @throws {InternalError} if an unexpected error occurs + */ + upload(language: string, input: ReadableStream): Promise; + /** + * Generate captions or subtitles for the provided language via AI. + * @param language The BCP 47 language tag to generate. + * @returns The generated caption entry. + * @throws {NotFoundError} if the video is not found + * @throws {BadRequestError} if the language is invalid + * @throws {StreamError} if a generated caption already exists + * @throws {StreamError} if the video duration is too long + * @throws {StreamError} if the video is missing audio + * @throws {StreamError} if the requested language is not supported + * @throws {InternalError} if an unexpected error occurs + */ + generate(language: string): Promise; + /** + * Lists the captions or subtitles. + * Use the language parameter to filter by a specific language. + * @param language The optional BCP 47 language tag to filter by. + * @returns The list of captions or subtitles. + * @throws {NotFoundError} if the video or caption is not found + * @throws {InternalError} if an unexpected error occurs + */ + list(language?: string): Promise; + /** + * Removes the captions or subtitles from a video. + * @param language The BCP 47 language tag to remove. + * @returns A promise that resolves when deletion completes. + * @throws {NotFoundError} if the video or caption is not found + * @throws {InternalError} if an unexpected error occurs + */ + delete(language: string): Promise; +} +interface StreamScopedDownloads { + /** + * Generates a download for a video when a video is ready to view. Available + * types are `default` and `audio`. Defaults to `default` when omitted. + * @param downloadType The download type to create. + * @returns The current downloads for the video. + * @throws {NotFoundError} if the video is not found + * @throws {BadRequestError} if the download type is invalid + * @throws {StreamError} if the video duration is too long to generate a download + * @throws {StreamError} if the video is not ready to stream + * @throws {InternalError} if an unexpected error occurs + */ + generate(downloadType?: StreamDownloadType): Promise; + /** + * Lists the downloads created for a video. + * @returns The current downloads for the video. + * @throws {NotFoundError} if the video or downloads are not found + * @throws {InternalError} if an unexpected error occurs + */ + get(): Promise; + /** + * Delete the downloads for a video. Available types are `default` and `audio`. + * Defaults to `default` when omitted. + * @param downloadType The download type to delete. + * @returns A promise that resolves when deletion completes. + * @throws {NotFoundError} if the video or downloads are not found + * @throws {InternalError} if an unexpected error occurs + */ + delete(downloadType?: StreamDownloadType): Promise; +} +interface StreamVideos { + /** + * Lists all videos in a users account. + * @returns The list of videos. + * @throws {BadRequestError} if the parameters are invalid + * @throws {InternalError} if an unexpected error occurs + */ + list(params?: StreamVideosListParams): Promise; +} +interface StreamWatermarks { + /** + * Generate a new watermark profile + * @param input The image stream to upload + * @param params The watermark creation parameters. + * @returns The created watermark profile. + * @throws {BadRequestError} if the parameters are invalid + * @throws {InvalidURLError} if the URL is invalid + * @throws {TooManyWatermarksError} if the number of allowed watermarks is reached + * @throws {InternalError} if an unexpected error occurs + */ + generate(input: ReadableStream, params: StreamWatermarkCreateParams): Promise; + /** + * Generate a new watermark profile + * @param url The image url to upload + * @param params The watermark creation parameters. + * @returns The created watermark profile. + * @throws {BadRequestError} if the parameters are invalid + * @throws {InvalidURLError} if the URL is invalid + * @throws {TooManyWatermarksError} if the number of allowed watermarks is reached + * @throws {InternalError} if an unexpected error occurs + */ + generate(url: string, params: StreamWatermarkCreateParams): Promise; + /** + * Lists all watermark profiles for an account. + * @returns The list of watermark profiles. + * @throws {InternalError} if an unexpected error occurs + */ + list(): Promise; + /** + * Retrieves details for a single watermark profile. + * @param watermarkId The watermark profile identifier. + * @returns The watermark profile details. + * @throws {NotFoundError} if the watermark is not found + * @throws {InternalError} if an unexpected error occurs + */ + get(watermarkId: string): Promise; + /** + * Deletes a watermark profile. + * @param watermarkId The watermark profile identifier. + * @returns A promise that resolves when deletion completes. + * @throws {NotFoundError} if the watermark is not found + * @throws {InternalError} if an unexpected error occurs + */ + delete(watermarkId: string): Promise; +} +type StreamUpdateVideoParams = { + /** + * Lists the origins allowed to display the video. Enter allowed origin + * domains in an array and use `*` for wildcard subdomains. Empty arrays allow the + * video to be viewed on any origin. + */ + allowedOrigins?: Array; + /** + * A user-defined identifier for the media creator. + */ + creator?: string; + /** + * The maximum duration in seconds for a video upload. Can be set for a + * video that is not yet uploaded to limit its duration. Uploads that exceed the + * specified duration will fail during processing. A value of `-1` means the value + * is unknown. + */ + maxDurationSeconds?: number; + /** + * A user modifiable key-value store used to reference other systems of + * record for managing videos. + */ + meta?: Record; + /** + * Indicates whether the video can be a accessed using the id. When + * set to `true`, a signed token must be generated with a signing key to view the + * video. + */ + requireSignedURLs?: boolean; + /** + * Indicates the date and time at which the video will be deleted. Omit + * the field to indicate no change, or include with a `null` value to remove an + * existing scheduled deletion. If specified, must be at least 30 days from upload + * time. + */ + scheduledDeletion?: string | null; + /** + * The timestamp for a thumbnail image calculated as a percentage value + * of the video's duration. To convert from a second-wise timestamp to a + * percentage, divide the desired timestamp by the total duration of the video. If + * this value is not set, the default thumbnail image is taken from 0s of the + * video. + */ + thumbnailTimestampPct?: number; +}; +type StreamCaption = { + /** + * Whether the caption was generated via AI. + */ + generated?: boolean; + /** + * The language label displayed in the native language to users. + */ + label: string; + /** + * The language tag in BCP 47 format. + */ + language: string; + /** + * The status of a generated caption. + */ + status?: 'ready' | 'inprogress' | 'error'; +}; +type StreamDownloadStatus = 'ready' | 'inprogress' | 'error'; +type StreamDownloadType = 'default' | 'audio'; +type StreamDownload = { + /** + * Indicates the progress as a percentage between 0 and 100. + */ + percentComplete: number; + /** + * The status of a generated download. + */ + status: StreamDownloadStatus; + /** + * The URL to access the generated download. + */ + url?: string; +}; +/** + * An object with download type keys. Each key is optional and only present if that + * download type has been created. + */ +type StreamDownloadGetResponse = { + /** + * The audio-only download. Only present if this download type has been created. + */ + audio?: StreamDownload; + /** + * The default video download. Only present if this download type has been created. + */ + default?: StreamDownload; +}; +type StreamWatermarkPosition = 'upperRight' | 'upperLeft' | 'lowerLeft' | 'lowerRight' | 'center'; +type StreamWatermark = { + /** + * The unique identifier for a watermark profile. + */ + id: string; + /** + * The size of the image in bytes. + */ + size: number; + /** + * The height of the image in pixels. + */ + height: number; + /** + * The width of the image in pixels. + */ + width: number; + /** + * The date and a time a watermark profile was created. + */ + created: string; + /** + * The source URL for a downloaded image. If the watermark profile was created via + * direct upload, this field is null. + */ + downloadedFrom: string | null; + /** + * A short description of the watermark profile. + */ + name: string; + /** + * The translucency of the image. A value of `0.0` makes the image completely + * transparent, and `1.0` makes the image completely opaque. Note that if the image + * is already semi-transparent, setting this to `1.0` will not make the image + * completely opaque. + */ + opacity: number; + /** + * The whitespace between the adjacent edges (determined by position) of the video + * and the image. `0.0` indicates no padding, and `1.0` indicates a fully padded + * video width or length, as determined by the algorithm. + */ + padding: number; + /** + * The size of the image relative to the overall size of the video. This parameter + * will adapt to horizontal and vertical videos automatically. `0.0` indicates no + * scaling (use the size of the image as-is), and `1.0 `fills the entire video. + */ + scale: number; + /** + * The location of the image. Valid positions are: `upperRight`, `upperLeft`, + * `lowerLeft`, `lowerRight`, and `center`. Note that `center` ignores the + * `padding` parameter. + */ + position: StreamWatermarkPosition; +}; +type StreamWatermarkCreateParams = { + /** + * A short description of the watermark profile. + */ + name?: string; + /** + * The translucency of the image. A value of `0.0` makes the image completely + * transparent, and `1.0` makes the image completely opaque. Note that if the + * image is already semi-transparent, setting this to `1.0` will not make the + * image completely opaque. + */ + opacity?: number; + /** + * The whitespace between the adjacent edges (determined by position) of the + * video and the image. `0.0` indicates no padding, and `1.0` indicates a fully + * padded video width or length, as determined by the algorithm. + */ + padding?: number; + /** + * The size of the image relative to the overall size of the video. This + * parameter will adapt to horizontal and vertical videos automatically. `0.0` + * indicates no scaling (use the size of the image as-is), and `1.0 `fills the + * entire video. + */ + scale?: number; + /** + * The location of the image. + */ + position?: StreamWatermarkPosition; +}; +type StreamVideosListParams = { + /** + * The maximum number of videos to return. + */ + limit?: number; + /** + * Return videos created before this timestamp. + * (RFC3339/RFC3339Nano) + */ + before?: string; + /** + * Comparison operator for the `before` field. + * @default 'lt' + */ + beforeComp?: StreamPaginationComparison; + /** + * Return videos created after this timestamp. + * (RFC3339/RFC3339Nano) + */ + after?: string; + /** + * Comparison operator for the `after` field. + * @default 'gte' + */ + afterComp?: StreamPaginationComparison; +}; +type StreamPaginationComparison = 'eq' | 'gt' | 'gte' | 'lt' | 'lte'; +/** + * Error object for Stream binding operations. + */ +interface StreamError extends Error { + readonly code: number; + readonly statusCode: number; + readonly message: string; + readonly stack?: string; +} +interface InternalError extends StreamError { + name: 'InternalError'; +} +interface BadRequestError extends StreamError { + name: 'BadRequestError'; +} +interface NotFoundError extends StreamError { + name: 'NotFoundError'; +} +interface ForbiddenError extends StreamError { + name: 'ForbiddenError'; +} +interface RateLimitedError extends StreamError { + name: 'RateLimitedError'; +} +interface QuotaReachedError extends StreamError { + name: 'QuotaReachedError'; +} +interface MaxFileSizeError extends StreamError { + name: 'MaxFileSizeError'; +} +interface InvalidURLError extends StreamError { + name: 'InvalidURLError'; +} +interface AlreadyUploadedError extends StreamError { + name: 'AlreadyUploadedError'; +} +interface TooManyWatermarksError extends StreamError { + name: 'TooManyWatermarksError'; +} +type MarkdownDocument = { + name: string; + blob: Blob; +}; +type ConversionResponse = { + id: string; + name: string; + mimeType: string; + format: 'markdown'; + tokens: number; + data: string; +} | { + id: string; + name: string; + mimeType: string; + format: 'error'; + error: string; +}; +type ImageConversionOptions = { + descriptionLanguage?: 'en' | 'es' | 'fr' | 'it' | 'pt' | 'de'; +}; +type EmbeddedImageConversionOptions = ImageConversionOptions & { + convert?: boolean; + maxConvertedImages?: number; +}; +type ConversionOptions = { + html?: { + images?: EmbeddedImageConversionOptions & { + convertOGImage?: boolean; + }; + hostname?: string; + cssSelector?: string; + }; + docx?: { + images?: EmbeddedImageConversionOptions; + }; + image?: ImageConversionOptions; + pdf?: { + images?: EmbeddedImageConversionOptions; + metadata?: boolean; + }; +}; +type ConversionRequestOptions = { + gateway?: GatewayOptions; + extraHeaders?: object; + conversionOptions?: ConversionOptions; +}; +type SupportedFileFormat = { + mimeType: string; + extension: string; +}; +declare abstract class ToMarkdownService { + transform(files: MarkdownDocument[], options?: ConversionRequestOptions): Promise; + transform(files: MarkdownDocument, options?: ConversionRequestOptions): Promise; + supported(): Promise; +} +declare namespace TailStream { + interface Header { + readonly name: string; + readonly value: string; + } + interface FetchEventInfo { + readonly type: "fetch"; + readonly method: string; + readonly url: string; + readonly cfJson?: object; + readonly headers: Header[]; + } + interface JsRpcEventInfo { + readonly type: "jsrpc"; + } + interface ScheduledEventInfo { + readonly type: "scheduled"; + readonly scheduledTime: Date; + readonly cron: string; + } + interface AlarmEventInfo { + readonly type: "alarm"; + readonly scheduledTime: Date; + } + interface QueueEventInfo { + readonly type: "queue"; + readonly queueName: string; + readonly batchSize: number; + } + interface EmailEventInfo { + readonly type: "email"; + readonly mailFrom: string; + readonly rcptTo: string; + readonly rawSize: number; + } + interface TraceEventInfo { + readonly type: "trace"; + readonly traces: (string | null)[]; + } + interface HibernatableWebSocketEventInfoMessage { + readonly type: "message"; + } + interface HibernatableWebSocketEventInfoError { + readonly type: "error"; + } + interface HibernatableWebSocketEventInfoClose { + readonly type: "close"; + readonly code: number; + readonly wasClean: boolean; + } + interface HibernatableWebSocketEventInfo { + readonly type: "hibernatableWebSocket"; + readonly info: HibernatableWebSocketEventInfoClose | HibernatableWebSocketEventInfoError | HibernatableWebSocketEventInfoMessage; + } + interface CustomEventInfo { + readonly type: "custom"; + } + interface FetchResponseInfo { + readonly type: "fetch"; + readonly statusCode: number; + } + interface ConnectEventInfo { + readonly type: "connect"; + } + type EventOutcome = "ok" | "canceled" | "exception" | "unknown" | "killSwitch" | "daemonDown" | "exceededCpu" | "exceededMemory" | "loadShed" | "responseStreamDisconnected" | "scriptNotFound" | "internalError"; + interface ScriptVersion { + readonly id: string; + readonly tag?: string; + readonly message?: string; + } + interface TracePreviewInfo { + readonly id: string; + readonly slug: string; + readonly name: string; + } + interface Onset { + readonly type: "onset"; + readonly attributes: Attribute[]; + // id for the span being opened by this Onset event. + readonly spanId: string; + readonly dispatchNamespace?: string; + readonly entrypoint?: string; + readonly executionModel: string; + readonly scriptName?: string; + readonly scriptTags?: string[]; + readonly scriptVersion?: ScriptVersion; + readonly preview?: TracePreviewInfo; + readonly info: FetchEventInfo | ConnectEventInfo | JsRpcEventInfo | ScheduledEventInfo | AlarmEventInfo | QueueEventInfo | EmailEventInfo | TraceEventInfo | HibernatableWebSocketEventInfo | CustomEventInfo; + } + interface Outcome { + readonly type: "outcome"; + readonly outcome: EventOutcome; + readonly cpuTime: number; + readonly wallTime: number; + } + interface SpanOpen { + readonly type: "spanOpen"; + readonly name: string; + // id for the span being opened by this SpanOpen event. + readonly spanId: string; + readonly info?: FetchEventInfo | JsRpcEventInfo | Attributes; + } + interface SpanClose { + readonly type: "spanClose"; + readonly outcome: EventOutcome; + } + interface DiagnosticChannelEvent { + readonly type: "diagnosticChannel"; + readonly channel: string; + readonly message: any; + } + interface Exception { + readonly type: "exception"; + readonly name: string; + readonly message: string; + readonly stack?: string; + } + interface Log { + readonly type: "log"; + readonly level: "debug" | "error" | "info" | "log" | "warn"; + readonly message: object; + } + interface DroppedEventsDiagnostic { + readonly diagnosticsType: "droppedEvents"; + readonly count: number; + } + interface StreamDiagnostic { + readonly type: 'streamDiagnostic'; + // To add new diagnostic types, define a new interface and add it to this union type. + readonly diagnostic: DroppedEventsDiagnostic; + } + // This marks the worker handler return information. + // This is separate from Outcome because the worker invocation can live for a long time after + // returning. For example - Websockets that return an http upgrade response but then continue + // streaming information or SSE http connections. + interface Return { + readonly type: "return"; + readonly info?: FetchResponseInfo; + } + interface Attribute { + readonly name: string; + readonly value: string | string[] | boolean | boolean[] | number | number[] | bigint | bigint[]; + } + interface Attributes { + readonly type: "attributes"; + readonly info: Attribute[]; + } + type EventType = Onset | Outcome | SpanOpen | SpanClose | DiagnosticChannelEvent | Exception | Log | StreamDiagnostic | Return | Attributes; + // Context in which this trace event lives. + interface SpanContext { + // Single id for the entire top-level invocation + // This should be a new traceId for the first worker stage invoked in the eyeball request and then + // same-account service-bindings should reuse the same traceId but cross-account service-bindings + // should use a new traceId. + readonly traceId: string; + // spanId in which this event is handled + // for Onset and SpanOpen events this would be the parent span id + // for Outcome and SpanClose these this would be the span id of the opening Onset and SpanOpen events + // For Hibernate and Mark this would be the span under which they were emitted. + // spanId is not set ONLY if: + // 1. This is an Onset event + // 2. We are not inheriting any SpanContext. (e.g. this is a cross-account service binding or a new top-level invocation) + readonly spanId?: string; + } + interface TailEvent { + // invocation id of the currently invoked worker stage. + // invocation id will always be unique to every Onset event and will be the same until the Outcome event. + readonly invocationId: string; + // Inherited spanContext for this event. + readonly spanContext: SpanContext; + readonly timestamp: Date; + readonly sequence: number; + readonly event: Event; + } + type TailEventHandler = (event: TailEvent) => void | Promise; + type TailEventHandlerObject = { + outcome?: TailEventHandler; + spanOpen?: TailEventHandler; + spanClose?: TailEventHandler; + diagnosticChannel?: TailEventHandler; + exception?: TailEventHandler; + log?: TailEventHandler; + return?: TailEventHandler; + attributes?: TailEventHandler; + }; + type TailEventHandlerType = TailEventHandler | TailEventHandlerObject; +} +// Copyright (c) 2022-2023 Cloudflare, Inc. +// Licensed under the Apache 2.0 license found in the LICENSE file or at: +// https://opensource.org/licenses/Apache-2.0 +/** + * Data types supported for holding vector metadata. + */ +type VectorizeVectorMetadataValue = string | number | boolean | string[]; +/** + * Additional information to associate with a vector. + */ +type VectorizeVectorMetadata = VectorizeVectorMetadataValue | Record; +type VectorFloatArray = Float32Array | Float64Array; +interface VectorizeError { + code?: number; + error: string; +} +/** + * Comparison logic/operation to use for metadata filtering. + * + * This list is expected to grow as support for more operations are released. + */ +type VectorizeVectorMetadataFilterOp = '$eq' | '$ne' | '$lt' | '$lte' | '$gt' | '$gte'; +type VectorizeVectorMetadataFilterCollectionOp = '$in' | '$nin'; +/** + * Filter criteria for vector metadata used to limit the retrieved query result set. + */ +type VectorizeVectorMetadataFilter = { + [field: string]: Exclude | null | { + [Op in VectorizeVectorMetadataFilterOp]?: Exclude | null; + } | { + [Op in VectorizeVectorMetadataFilterCollectionOp]?: Exclude[]; + }; +}; +/** + * Supported distance metrics for an index. + * Distance metrics determine how other "similar" vectors are determined. + */ +type VectorizeDistanceMetric = "euclidean" | "cosine" | "dot-product"; +/** + * Metadata return levels for a Vectorize query. + * + * Default to "none". + * + * @property all Full metadata for the vector return set, including all fields (including those un-indexed) without truncation. This is a more expensive retrieval, as it requires additional fetching & reading of un-indexed data. + * @property indexed Return all metadata fields configured for indexing in the vector return set. This level of retrieval is "free" in that no additional overhead is incurred returning this data. However, note that indexed metadata is subject to truncation (especially for larger strings). + * @property none No indexed metadata will be returned. + */ +type VectorizeMetadataRetrievalLevel = "all" | "indexed" | "none"; +interface VectorizeQueryOptions { + topK?: number; + namespace?: string; + returnValues?: boolean; + returnMetadata?: boolean | VectorizeMetadataRetrievalLevel; + filter?: VectorizeVectorMetadataFilter; +} +/** + * Information about the configuration of an index. + */ +type VectorizeIndexConfig = { + dimensions: number; + metric: VectorizeDistanceMetric; +} | { + preset: string; // keep this generic, as we'll be adding more presets in the future and this is only in a read capacity +}; +/** + * Metadata about an existing index. + * + * This type is exclusively for the Vectorize **beta** and will be deprecated once Vectorize RC is released. + * See {@link VectorizeIndexInfo} for its post-beta equivalent. + */ +interface VectorizeIndexDetails { + /** The unique ID of the index */ + readonly id: string; + /** The name of the index. */ + name: string; + /** (optional) A human readable description for the index. */ + description?: string; + /** The index configuration, including the dimension size and distance metric. */ + config: VectorizeIndexConfig; + /** The number of records containing vectors within the index. */ + vectorsCount: number; +} +/** + * Metadata about an existing index. + */ +interface VectorizeIndexInfo { + /** The number of records containing vectors within the index. */ + vectorCount: number; + /** Number of dimensions the index has been configured for. */ + dimensions: number; + /** ISO 8601 datetime of the last processed mutation on in the index. All changes before this mutation will be reflected in the index state. */ + processedUpToDatetime: number; + /** UUIDv4 of the last mutation processed by the index. All changes before this mutation will be reflected in the index state. */ + processedUpToMutation: number; +} +/** + * Represents a single vector value set along with its associated metadata. + */ +interface VectorizeVector { + /** The ID for the vector. This can be user-defined, and must be unique. It should uniquely identify the object, and is best set based on the ID of what the vector represents. */ + id: string; + /** The vector values */ + values: VectorFloatArray | number[]; + /** The namespace this vector belongs to. */ + namespace?: string; + /** Metadata associated with the vector. Includes the values of other fields and potentially additional details. */ + metadata?: Record; +} +/** + * Represents a matched vector for a query along with its score and (if specified) the matching vector information. + */ +type VectorizeMatch = Pick, "values"> & Omit & { + /** The score or rank for similarity, when returned as a result */ + score: number; +}; +/** + * A set of matching {@link VectorizeMatch} for a particular query. + */ +interface VectorizeMatches { + matches: VectorizeMatch[]; + count: number; +} +/** + * Results of an operation that performed a mutation on a set of vectors. + * Here, `ids` is a list of vectors that were successfully processed. + * + * This type is exclusively for the Vectorize **beta** and will be deprecated once Vectorize RC is released. + * See {@link VectorizeAsyncMutation} for its post-beta equivalent. + */ +interface VectorizeVectorMutation { + /* List of ids of vectors that were successfully processed. */ + ids: string[]; + /* Total count of the number of processed vectors. */ + count: number; +} +/** + * Result type indicating a mutation on the Vectorize Index. + * Actual mutations are processed async where the `mutationId` is the unique identifier for the operation. + */ +interface VectorizeAsyncMutation { + /** The unique identifier for the async mutation operation containing the changeset. */ + mutationId: string; +} +/** + * A Vectorize Vector Search Index for querying vectors/embeddings. + * + * This type is exclusively for the Vectorize **beta** and will be deprecated once Vectorize RC is released. + * See {@link Vectorize} for its new implementation. + */ +declare abstract class VectorizeIndex { + /** + * Get information about the currently bound index. + * @returns A promise that resolves with information about the current index. + */ + public describe(): Promise; + /** + * Use the provided vector to perform a similarity search across the index. + * @param vector Input vector that will be used to drive the similarity search. + * @param options Configuration options to massage the returned data. + * @returns A promise that resolves with matched and scored vectors. + */ + public query(vector: VectorFloatArray | number[], options?: VectorizeQueryOptions): Promise; + /** + * Insert a list of vectors into the index dataset. If a provided id exists, an error will be thrown. + * @param vectors List of vectors that will be inserted. + * @returns A promise that resolves with the ids & count of records that were successfully processed. + */ + public insert(vectors: VectorizeVector[]): Promise; + /** + * Upsert a list of vectors into the index dataset. If a provided id exists, it will be replaced with the new values. + * @param vectors List of vectors that will be upserted. + * @returns A promise that resolves with the ids & count of records that were successfully processed. + */ + public upsert(vectors: VectorizeVector[]): Promise; + /** + * Delete a list of vectors with a matching id. + * @param ids List of vector ids that should be deleted. + * @returns A promise that resolves with the ids & count of records that were successfully processed (and thus deleted). + */ + public deleteByIds(ids: string[]): Promise; + /** + * Get a list of vectors with a matching id. + * @param ids List of vector ids that should be returned. + * @returns A promise that resolves with the raw unscored vectors matching the id set. + */ + public getByIds(ids: string[]): Promise; +} +/** + * A Vectorize Vector Search Index for querying vectors/embeddings. + * + * Mutations in this version are async, returning a mutation id. + */ +declare abstract class Vectorize { + /** + * Get information about the currently bound index. + * @returns A promise that resolves with information about the current index. + */ + public describe(): Promise; + /** + * Use the provided vector to perform a similarity search across the index. + * @param vector Input vector that will be used to drive the similarity search. + * @param options Configuration options to massage the returned data. + * @returns A promise that resolves with matched and scored vectors. + */ + public query(vector: VectorFloatArray | number[], options?: VectorizeQueryOptions): Promise; + /** + * Use the provided vector-id to perform a similarity search across the index. + * @param vectorId Id for a vector in the index against which the index should be queried. + * @param options Configuration options to massage the returned data. + * @returns A promise that resolves with matched and scored vectors. + */ + public queryById(vectorId: string, options?: VectorizeQueryOptions): Promise; + /** + * Insert a list of vectors into the index dataset. If a provided id exists, an error will be thrown. + * @param vectors List of vectors that will be inserted. + * @returns A promise that resolves with a unique identifier of a mutation containing the insert changeset. + */ + public insert(vectors: VectorizeVector[]): Promise; + /** + * Upsert a list of vectors into the index dataset. If a provided id exists, it will be replaced with the new values. + * @param vectors List of vectors that will be upserted. + * @returns A promise that resolves with a unique identifier of a mutation containing the upsert changeset. + */ + public upsert(vectors: VectorizeVector[]): Promise; + /** + * Delete a list of vectors with a matching id. + * @param ids List of vector ids that should be deleted. + * @returns A promise that resolves with a unique identifier of a mutation containing the delete changeset. + */ + public deleteByIds(ids: string[]): Promise; + /** + * Get a list of vectors with a matching id. + * @param ids List of vector ids that should be returned. + * @returns A promise that resolves with the raw unscored vectors matching the id set. + */ + public getByIds(ids: string[]): Promise; +} +/** + * The interface for "version_metadata" binding + * providing metadata about the Worker Version using this binding. + */ +type WorkerVersionMetadata = { + /** The ID of the Worker Version using this binding */ + id: string; + /** The tag of the Worker Version using this binding */ + tag: string; + /** The timestamp of when the Worker Version was uploaded */ + timestamp: string; +}; +interface DynamicDispatchLimits { + /** + * Limit CPU time in milliseconds. + */ + cpuMs?: number; + /** + * Limit number of subrequests. + */ + subRequests?: number; +} +interface DynamicDispatchOptions { + /** + * Limit resources of invoked Worker script. + */ + limits?: DynamicDispatchLimits; + /** + * Arguments for outbound Worker script, if configured. + */ + outbound?: { + [key: string]: any; + }; +} +interface DispatchNamespace { + /** + * @param name Name of the Worker script. + * @param args Arguments to Worker script. + * @param options Options for Dynamic Dispatch invocation. + * @returns A Fetcher object that allows you to send requests to the Worker script. + * @throws If the Worker script does not exist in this dispatch namespace, an error will be thrown. + */ + get(name: string, args?: { + [key: string]: any; + }, options?: DynamicDispatchOptions): Fetcher; +} +declare module 'cloudflare:workflows' { + /** + * NonRetryableError allows for a user to throw a fatal error + * that makes a Workflow instance fail immediately without triggering a retry + */ + export class NonRetryableError extends Error { + public constructor(message: string, name?: string); + } +} +declare abstract class Workflow { + /** + * Get a handle to an existing instance of the Workflow. + * @param id Id for the instance of this Workflow + * @returns A promise that resolves with a handle for the Instance + */ + public get(id: string): Promise; + /** + * Create a new instance and return a handle to it. If a provided id exists, an error will be thrown. + * @param options Options when creating an instance including id and params + * @returns A promise that resolves with a handle for the Instance + */ + public create(options?: WorkflowInstanceCreateOptions): Promise; + /** + * Create a batch of instances and return handle for all of them. If a provided id exists, an error will be thrown. + * `createBatch` is limited at 100 instances at a time or when the RPC limit for the batch (1MiB) is reached. + * @param batch List of Options when creating an instance including name and params + * @returns A promise that resolves with a list of handles for the created instances. + */ + public createBatch(batch: WorkflowInstanceCreateOptions[]): Promise; +} +type WorkflowDurationLabel = 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year'; +type WorkflowSleepDuration = `${number} ${WorkflowDurationLabel}${'s' | ''}` | number; +type WorkflowRetentionDuration = WorkflowSleepDuration; +interface WorkflowInstanceCreateOptions { + /** + * An id for your Workflow instance. Must be unique within the Workflow. + */ + id?: string; + /** + * The event payload the Workflow instance is triggered with + */ + params?: PARAMS; + /** + * The retention policy for Workflow instance. + * Defaults to the maximum retention period available for the owner's account. + */ + retention?: { + successRetention?: WorkflowRetentionDuration; + errorRetention?: WorkflowRetentionDuration; + }; +} +type InstanceStatus = { + status: 'queued' // means that instance is waiting to be started (see concurrency limits) + | 'running' | 'paused' | 'errored' | 'terminated' // user terminated the instance while it was running + | 'complete' | 'waiting' // instance is hibernating and waiting for sleep or event to finish + | 'waitingForPause' // instance is finishing the current work to pause + | 'unknown'; + error?: { + name: string; + message: string; + }; + output?: unknown; +}; +interface WorkflowError { + code?: number; + message: string; +} +declare abstract class WorkflowInstance { + public id: string; + /** + * Pause the instance. + */ + public pause(): Promise; + /** + * Resume the instance. If it is already running, an error will be thrown. + */ + public resume(): Promise; + /** + * Terminate the instance. If it is errored, terminated or complete, an error will be thrown. + */ + public terminate(): Promise; + /** + * Restart the instance. + */ + public restart(): Promise; + /** + * Returns the current status of the instance. + */ + public status(): Promise; + /** + * Send an event to this instance. + */ + public sendEvent({ type, payload, }: { + type: string; + payload: unknown; + }): Promise; +} diff --git a/cloudflare-worker/edge-api/wrangler.jsonc b/cloudflare-worker/edge-api/wrangler.jsonc new file mode 100644 index 0000000000..28d56ab6be --- /dev/null +++ b/cloudflare-worker/edge-api/wrangler.jsonc @@ -0,0 +1,54 @@ +/** + * For more details on how to configure Wrangler, refer to: + * https://developers.cloudflare.com/workers/wrangler/configuration/ + */ +{ + "$schema": "node_modules/wrangler/config-schema.json", + "name": "lab17", + "main": "src/index.ts", + "compatibility_date": "2026-05-09", + "observability": { + "enabled": true + }, + "upload_source_maps": true, + "compatibility_flags": [ + "nodejs_compat" + ], + "vars": { + "APP_NAME": "lab17" + }, + "kv_namespaces": [ + { + "binding": "KV", + "id": "06c85990abb74fb3abe2c7362dfd27a4" + } + ] + /** + * Smart Placement + * https://developers.cloudflare.com/workers/configuration/smart-placement/#smart-placement + */ + // "placement": { "mode": "smart" } + /** + * Bindings + * Bindings allow your Worker to interact with resources on the Cloudflare Developer Platform, including + * databases, object storage, AI inference, real-time communication and more. + * https://developers.cloudflare.com/workers/runtime-apis/bindings/ + */ + /** + * Environment Variables + * https://developers.cloudflare.com/workers/wrangler/configuration/#environment-variables + * Note: Use secrets to store sensitive data. + * https://developers.cloudflare.com/workers/configuration/secrets/ + */ + // "vars": { "MY_VARIABLE": "production_value" } + /** + * Static Assets + * https://developers.cloudflare.com/workers/static-assets/binding/ + */ + // "assets": { "directory": "./public/", "binding": "ASSETS" } + /** + * Service Bindings (communicate between multiple Workers) + * https://developers.cloudflare.com/workers/wrangler/configuration/#service-bindings + */ + // "services": [ { "binding": "MY_SERVICE", "service": "my-service" } ] +} From 0176adcfebb2df93ce8b43f2033d8cf230bc8c29 Mon Sep 17 00:00:00 2001 From: Timur Usmanov Date: Sun, 10 May 2026 20:01:21 +0300 Subject: [PATCH 02/11] Finish ts app --- cloudflare-worker/edge-api/src/index.ts | 52 +++++++++++-------- .../edge-api/worker-configuration.d.ts | 5 +- 2 files changed, 35 insertions(+), 22 deletions(-) diff --git a/cloudflare-worker/edge-api/src/index.ts b/cloudflare-worker/edge-api/src/index.ts index 10a1d404b7..21df58b663 100644 --- a/cloudflare-worker/edge-api/src/index.ts +++ b/cloudflare-worker/edge-api/src/index.ts @@ -11,32 +11,42 @@ * Learn more at https://developers.cloudflare.com/workers/ */ -export interface Env { - KV: KVNamespace; - APP_NAME: "lab17"; +async function get_counter(env: Env): Promise { + const count = await env.KV.get("counter"); + if (count === null) { + return 0; + } + return Number.parseInt(count); +} + +async function inc_counter(env: Env): Promise { + const count = await get_counter(env); + await env.KV.put("counter", (count + 1).toString()); } export default { - async fetch(request: Request, env: Env): Promise { - const url = new URL(request.url); + async fetch(request: Request, env: Env): Promise { + const url = new URL(request.url); - if (url.pathname === "/health") { - return Response.json({ status: "ok" }); - } + if (url.pathname === "/health") { + return Response.json({ status: "ok" }); + } - if (url.pathname === "/") { - return Response.json({ - app: env.APP_NAME, - message: "Hello from Cloudflare Workers", - timestamp: new Date().toISOString(), - }); - } + if (url.pathname === "/") { + await inc_counter(env); + return Response.json({ + app: env.APP_NAME, + message: "Hello from Cloudflare Workers", + timestamp: new Date().toISOString(), + }); + } - if (url.pathname === "/counter") { - env. - } + if (url.pathname === "/counter") { + return Response.json({ + count: await get_counter(env) + }); + } - return new Response("Not Found", { status: 404 }); - }, + return new Response("Not Found", { status: 404 }); + }, }; - diff --git a/cloudflare-worker/edge-api/worker-configuration.d.ts b/cloudflare-worker/edge-api/worker-configuration.d.ts index 0309012e66..33fabadc5a 100644 --- a/cloudflare-worker/edge-api/worker-configuration.d.ts +++ b/cloudflare-worker/edge-api/worker-configuration.d.ts @@ -1,7 +1,10 @@ /* eslint-disable */ -// Generated by Wrangler by running `wrangler types` (hash: b0cc9e5b470bd5a4ec8732cd53726031) +// Generated by Wrangler by running `wrangler types` (hash: 2f1a7b23bd5a1cfd68001967281277f9) // Runtime types generated with workerd@1.20260507.1 2026-05-09 nodejs_compat declare namespace Cloudflare { + interface GlobalProps { + mainModule: typeof import("./src/index"); + } interface Env { KV: KVNamespace; APP_NAME: "lab17"; From 97c0666cc1fabab247899626d4977dd7c02ede7b Mon Sep 17 00:00:00 2001 From: Timur Usmanov Date: Sun, 10 May 2026 20:09:14 +0300 Subject: [PATCH 03/11] Add /edge --- cloudflare-worker/edge-api/src/index.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/cloudflare-worker/edge-api/src/index.ts b/cloudflare-worker/edge-api/src/index.ts index 21df58b663..6027868a1a 100644 --- a/cloudflare-worker/edge-api/src/index.ts +++ b/cloudflare-worker/edge-api/src/index.ts @@ -47,6 +47,18 @@ export default { }); } + if (url.pathname === "/edge") { + return Response.json({ + colo: request.cf?.colo, + country: request.cf?.country, + city: request.cf?.city, + asn: request.cf?.asn, + httpProtocol: request.cf?.httpProtocol, + tlsVersion: request.cf?.tlsVersion, + }); + } + + return new Response("Not Found", { status: 404 }); }, }; From ca596274892a2df8dbd7efb4c2d85f00aefcd401 Mon Sep 17 00:00:00 2001 From: Timur Usmanov Date: Sun, 10 May 2026 20:23:10 +0300 Subject: [PATCH 04/11] Add log --- cloudflare-worker/edge-api/src/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/cloudflare-worker/edge-api/src/index.ts b/cloudflare-worker/edge-api/src/index.ts index 6027868a1a..1672f1df66 100644 --- a/cloudflare-worker/edge-api/src/index.ts +++ b/cloudflare-worker/edge-api/src/index.ts @@ -27,6 +27,7 @@ async function inc_counter(env: Env): Promise { export default { async fetch(request: Request, env: Env): Promise { const url = new URL(request.url); + console.log("path", url.pathname, "colo", request.cf?.colo); if (url.pathname === "/health") { return Response.json({ status: "ok" }); From 94490e559d1b35e5440b1dda4417bee5c0a1dd71 Mon Sep 17 00:00:00 2001 From: Timur Usmanov Date: Sun, 10 May 2026 20:47:14 +0300 Subject: [PATCH 05/11] Finish lab17 --- cloudflare-worker/WORKERS.md | 86 ++++++++++++++++++++ cloudflare-worker/screenshots/dashboard.png | Bin 0 -> 125710 bytes cloudflare-worker/screenshots/logs.png | Bin 0 -> 96883 bytes cloudflare-worker/screenshots/metrics.png | Bin 0 -> 341821 bytes 4 files changed, 86 insertions(+) create mode 100644 cloudflare-worker/WORKERS.md create mode 100644 cloudflare-worker/screenshots/dashboard.png create mode 100644 cloudflare-worker/screenshots/logs.png create mode 100644 cloudflare-worker/screenshots/metrics.png diff --git a/cloudflare-worker/WORKERS.md b/cloudflare-worker/WORKERS.md new file mode 100644 index 0000000000..411270d46f --- /dev/null +++ b/cloudflare-worker/WORKERS.md @@ -0,0 +1,86 @@ +# Deployment Summary +### Worker URL +https://lab17.error10556.workers.dev + +### Main routes +- `/` - the main endpoint, increments counter +- `/counter` - returns `{"count": }` +- `/health` - returns `{"status": "ok"}` +- `/edge` - returns information about the Cloudflare deployment used for this request + +### Configuration used +I added the `APP_NAME` env. variable (`lab17`) and the `KV` key-value storage binding. This allows to keep the `count` +persistent. + +# Evidence +### Screenshot of Cloudflare dashboard +![Dashboard](/cloudflare-worker/screenshots/dashboard.png) + +### Example `/edge` JSON response +```bash +curl https://lab17.error10556.workers.dev/edge | jq +``` +```json +{ + "colo": "ARN", + "country": "FI", + "city": "Helsinki", + "asn": 56971, + "httpProtocol": "HTTP/2", + "tlsVersion": "TLSv1.3" +} +``` +It shows a Finnish location because my proxy is located there. + +### Example log or metrics screenshot +![Metrics](/cloudflare-worker/screenshots/metrics.png) + +Logs in **Observability**: +![Logs](/cloudflare-worker/screenshots/logs.png) + +# Kubernetes vs Cloudflare Workers Comparison + +| Aspect | Kubernetes | Cloudflare Workers | +|--------|------------|--------------------| +| Setup complexity | Very difficult | Easy | +| Deployment speed | Depends on network & hardware | Fast | +| Global distribution | No | Automatic | +| Cost (for small apps) | Usually overpriced | Free | +| State/persistence model | Persistent Volume Claims, StatefulSets | KV storage | +| Control/flexibility | Great | Can be insufficient | +| Best use case | Large deployments | Small projects | + +# When to Use Each +### Scenarios favoring Kubernetes +- Large deployments +- Powerful dedicated clusters +- Large professional teams +- Systems of containers + +### Scenarios favoring Workers +- Need for global deployment +- TypeScript, JavaScript, Python projects +- Simple apps + +### Your recommendation +If I had to choose between the two, I would go with Kubernetes. + +Sure, Kubernetes is often overrated by system administrators. Many projects actually don't need that level of +complexity, and are better off deploying with docker-compose. + +But still, Cloudflare workers are a bit too dependent on the Cloudflare infrastructure and ecosystem. This is especially +apparent in Russia. + +So I choose digital freedom (k8s). + +# Reflection +### What felt easier than Kubernetes? +Literally every step was easier for Workers, except maybe setting up `minikube`, which was very easy. No need to learn +arbitrary config schemas and package everything in containers. + +### What felt more constrained? +Kubernetes gives more freedom in what kind of program we are actually running. K8s allows to deploy any container and +set them up in any way we need, whereas Workers makes you follow its project structure. + +### What changed because Workers is not a Docker host? +Cannot deploy arbitrary containers. diff --git a/cloudflare-worker/screenshots/dashboard.png b/cloudflare-worker/screenshots/dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..884de3089101dc9216c17cb6a6fbf7348d960374 GIT binary patch literal 125710 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≶A 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łz@Pbnj(GOun~w3(XJQem|}o!>o1rKEWo_yd^N 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%0DX8ak)LDjTq-9_;(FJHR(`0QjsF8;mVG-vM& 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

  • 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
    fu7IqopqtVgC^H_%Z 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 zⅇ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 RRN#Mx`qL(y)SLJFzX6V|@@)VB literal 0 HcmV?d00001 diff --git a/cloudflare-worker/screenshots/metrics.png b/cloudflare-worker/screenshots/metrics.png new file mode 100644 index 0000000000000000000000000000000000000000..2449862bbf309a6e4f0b28ab9c25228884ff2d7b GIT binary patch literal 341821 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%0D;Y!cYO!U+H!)w=^W^A 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

    $@v5*)qg7+{0cX`9_zK~v6I*{8t#B~%~ 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 Date: Mon, 11 May 2026 16:13:38 +0300 Subject: [PATCH 06/11] Copy app_python from lab02 --- labs/lab18/app_python/.dockerignore | 8 ++ labs/lab18/app_python/.gitignore | 12 +++ labs/lab18/app_python/Dockerfile | 18 ++++ labs/lab18/app_python/README.md | 108 ++++++++++++++++++++++ labs/lab18/app_python/app.py | 116 ++++++++++++++++++++++++ labs/lab18/app_python/requirements.txt | 2 + labs/lab18/app_python/tests/__init__.py | 0 7 files changed, 264 insertions(+) create mode 100644 labs/lab18/app_python/.dockerignore create mode 100644 labs/lab18/app_python/.gitignore create mode 100644 labs/lab18/app_python/Dockerfile create mode 100644 labs/lab18/app_python/README.md create mode 100644 labs/lab18/app_python/app.py create mode 100644 labs/lab18/app_python/requirements.txt create mode 100644 labs/lab18/app_python/tests/__init__.py diff --git a/labs/lab18/app_python/.dockerignore b/labs/lab18/app_python/.dockerignore new file mode 100644 index 0000000000..9b36f61d19 --- /dev/null +++ b/labs/lab18/app_python/.dockerignore @@ -0,0 +1,8 @@ +**/__pycache__ +**/*.pyc +venv +docs +README.md +tests +.gitignore +.dockerignore diff --git a/labs/lab18/app_python/.gitignore b/labs/lab18/app_python/.gitignore new file mode 100644 index 0000000000..ba1db0ed69 --- /dev/null +++ b/labs/lab18/app_python/.gitignore @@ -0,0 +1,12 @@ +# Python +__pycache__/ +*.py[cod] +venv/ +*.log + +# IDE +.vscode/ +.idea/ + +# OS +.DS_Store diff --git a/labs/lab18/app_python/Dockerfile b/labs/lab18/app_python/Dockerfile new file mode 100644 index 0000000000..7b96447f2e --- /dev/null +++ b/labs/lab18/app_python/Dockerfile @@ -0,0 +1,18 @@ +FROM python:3.13-alpine +RUN addgroup -S infoservice +RUN adduser -S infoservice +RUN mkdir /app /venv +RUN chown infoservice:infoservice /venv /app +WORKDIR /app +USER infoservice +RUN python -m venv /venv +ENV PATH="/venv/bin:$PATH" +ENV VIRTUAL_ENV="/venv" + +COPY --chown=infoservice:infoservice requirements.txt . +RUN pip install -r requirements.txt + +COPY --chown=infoservice:infoservice app.py . +EXPOSE 5000 +ENTRYPOINT ["gunicorn"] +CMD ["-b", "0.0.0.0:5000", "-e", "DEBUG=true", "app:app"] diff --git a/labs/lab18/app_python/README.md b/labs/lab18/app_python/README.md new file mode 100644 index 0000000000..139ecf4b59 --- /dev/null +++ b/labs/lab18/app_python/README.md @@ -0,0 +1,108 @@ +# DevOps Info Service +## Overview + +This app is an educational project that reports system information. + +## Prerequisites + +To successfully install this app, you will need the following programs: +- Python 3.11+ +- pip + +During installation, the following modules will be acquired automatically as app dependencies: +- Flask 3.1.0 +- gunicorn + +## Installation (Linux) + +While in the same directory as this README file, execute the following: + +```bash +python -m venv venv +source venv/bin/activate +pip install -r requirements.txt +``` + +## Running the Application + +### With `gunicorn` + +It is best to run Flask application through an external manager program, in this case, `gunicorn`: + +```bash +gunicorn -b 127.0.0.1:5000 -e DEBUG=true app:app +``` + +The `DEBUG` flag allows the app to log web requests. Do not specify this flag to disable request logging: + +```bash +gunicorn -b 127.0.0.1:5000 app:app +``` + +Note that environment variables `HOST` and `PORT` are ignored if the app is run with `gunicorn`. + +### Directly + +With request logging: + +```bash +DEBUG=true python app.py +``` + +Without request logging: + +```bash +python app.py +``` + +## API Endpoints + +- `GET /` - Service and system information +- `GET /health` - Health check + +## Configuration + +| Name | Default value | Meaning | `gunicorn` behavior | +| --- | --- | --- | --- | +| `HOST` | `0.0.0.0` | On which interface to accept connections. Set to `127.0.0.1` to disallow outside connections. | Ignored | +| `PORT` | 5000 | To which port to bind. When connecting to the server, specify this port. | Ignored | +| `DEBUG` | `false` | If `true`, log web requests to console. | Used | + +## Docker + +To obtain the Docker image of this app, pull it from DockerHub or build it locally. + +### Building locally + +Execute something along the lines of: + +```bash +cd app_python +docker build -t . +``` + +### Pulling from DockerHub + +Execute this command: + +```bash +docker pull timurusmanov/devops-infoservice +``` + +In the next section, refer to the image as `timurusmanov/devops-infoservice`. + +### Running + +Here is a template for the command you need to execute: + +```bash +docker run <-it|-d> --name infoservice -p <127.0.0.1|0.0.0.0>::5000 +``` + +- Choose `-it` if you want the program to output logs to your terminal and you want to be able to terminate the + execution with a `Ctrl-C`. Choose `-d` if you want it to run in the background; in this case, terminate the program + with `docker stop infoservice`. +- Choose `127.0.0.1` if you do **not** want to expose the API endpoints to the network. Choose `0.0.0.0` if you do. +- For the `port`, choose `80` for the default HTTP port, or any other value. +- The `docker image` is going to be whatever you tagged it as in the `docker build` command or + `timurusmanov/devops-infoservice` if you pulled the image. diff --git a/labs/lab18/app_python/app.py b/labs/lab18/app_python/app.py new file mode 100644 index 0000000000..07b90cf6c8 --- /dev/null +++ b/labs/lab18/app_python/app.py @@ -0,0 +1,116 @@ +""" +DevOps Info Service +Main application module +""" +from datetime import datetime, timezone +from flask import Flask, jsonify, request +import logging +import os +import platform +import socket +HOST = os.getenv('HOST', '0.0.0.0') +PORT = int(os.getenv('PORT', 5000)) +DEBUG = os.getenv('DEBUG', 'False').lower() == 'true' + +logging.basicConfig( + level=logging.INFO if not DEBUG else logging.DEBUG, + format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' +) +logger = logging.getLogger(__name__) +app = Flask(__name__) + + +def get_system_info() -> dict[str, str | int | None]: + """Collect system information.""" + return { + 'hostname': socket.gethostname(), + 'platform': platform.system(), + 'platform_version': platform.version(), + 'architecture': platform.machine(), + 'cpu_count': os.cpu_count(), + 'python_version': platform.python_version() + } + + +def get_uptime() -> dict[str, int | str | None]: + def word_plural(number: int) -> str: + """Used for grammar when composing human-readable uptime (uptime_human)""" + return 's' if number != 1 else '' + + now = datetime.now(timezone.utc) + delta = now - START_TIME + seconds = int(delta.total_seconds()) + hours = seconds // 3600 + minutes = (seconds % 3600) // 60 + loctime = now.astimezone() + tzinfo = loctime.tzinfo + if tzinfo is not None: + tzinfo = str(tzinfo) + return { + 'uptime_seconds': seconds, + 'uptime_human': f"{hours} hour{word_plural(hours)}, {minutes} minute{word_plural(minutes)}", + 'current_time': loctime.isoformat(timespec='milliseconds'), + 'timezone': tzinfo, + } + + +def get_request_info() -> dict[str, str | None]: + return { + "client_ip": request.remote_addr, + "user_agent": request.headers.get('User-Agent'), + "method": request.method, + "path": request.path, + } + + +@app.route('/') +def index(): + logger.debug(f'Request: {request.method} {request.path}') + """Main endpoint - service and system information.""" + return jsonify({ + 'service': { + 'name': 'devops-info-service', + 'version': '1.0.0', + 'description': 'DevOps course info service', + 'framework': 'Flask' + }, + 'system': get_system_info(), + 'runtime': get_uptime(), + 'request': get_request_info(), + 'endpoints': [ + {"path": "/" , "method": "GET", "description": "Service information"}, + {"path": "/health", "method": "GET", "description": "Health check"} + ] + }) + + +@app.route('/health') +def health(): + logger.debug(f'Request: {request.method} {request.path}') + return jsonify({ + 'status': 'healthy', + 'timestamp': datetime.now(timezone.utc).isoformat(), + 'uptime_seconds': get_uptime()['uptime_seconds'] + }) + + +@app.errorhandler(404) +def not_found(error): + return jsonify({ + 'error': 'Not Found', + 'message': 'Endpoint does not exist' + }), 404 + + +@app.errorhandler(500) +def internal_error(error): + return jsonify({ + 'error': 'Internal Server Error', + 'message': 'An unexpected error occurred' + }), 500 + + +START_TIME = datetime.now(timezone.utc) +logger.info('Application starting...') +if __name__ == '__main__': + app.run(host=HOST, port=PORT, debug=DEBUG) diff --git a/labs/lab18/app_python/requirements.txt b/labs/lab18/app_python/requirements.txt new file mode 100644 index 0000000000..f0950a10ff --- /dev/null +++ b/labs/lab18/app_python/requirements.txt @@ -0,0 +1,2 @@ +Flask==3.1.0 +gunicorn==24.0.0 diff --git a/labs/lab18/app_python/tests/__init__.py b/labs/lab18/app_python/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 From 587f3d241272200faa00aa0ea7acb84b005e77e8 Mon Sep 17 00:00:00 2001 From: Timur Usmanov Date: Mon, 11 May 2026 17:25:42 +0300 Subject: [PATCH 07/11] Add shebang and make app.py executable --- labs/lab18/app_python/app.py | 1 + 1 file changed, 1 insertion(+) mode change 100644 => 100755 labs/lab18/app_python/app.py diff --git a/labs/lab18/app_python/app.py b/labs/lab18/app_python/app.py old mode 100644 new mode 100755 index 07b90cf6c8..1c21bff7ea --- a/labs/lab18/app_python/app.py +++ b/labs/lab18/app_python/app.py @@ -1,3 +1,4 @@ +#!/bin/env python """ DevOps Info Service Main application module From ed0ccd6b7926c0cca663cb3d45a8e44521a9b454 Mon Sep 17 00:00:00 2001 From: Timur Usmanov Date: Mon, 11 May 2026 17:26:05 +0300 Subject: [PATCH 08/11] Add default.nix --- labs/lab18/app_python/default.nix | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 labs/lab18/app_python/default.nix diff --git a/labs/lab18/app_python/default.nix b/labs/lab18/app_python/default.nix new file mode 100644 index 0000000000..3c450c8c16 --- /dev/null +++ b/labs/lab18/app_python/default.nix @@ -0,0 +1,24 @@ +{ pkgs ? import {} }: + +pkgs.python3Packages.buildPythonApplication { + pname = "devops-infoservice"; + version = "1.0.0"; + src = ./.; + + format = "other"; + + propagatedBuildInputs = with pkgs.python3Packages; [ + flask + ]; + + nativeBuildInputs = [ pkgs.makeWrapper ]; + + installPhase = '' + mkdir -p $out/bin + cp app.py $out/bin/devops-infoservice + + # Wrap with Python interpreter so it can execute + wrapProgram $out/bin/devops-infoservice \ + --prefix PYTHONPATH : "$PYTHONPATH" + ''; +} From 2786a671d3bfbe2d0cead42431ef21b9eab3ef70 Mon Sep 17 00:00:00 2001 From: Timur Usmanov Date: Mon, 11 May 2026 17:27:34 +0300 Subject: [PATCH 09/11] Gitignore result/ --- labs/lab18/app_python/.gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/labs/lab18/app_python/.gitignore b/labs/lab18/app_python/.gitignore index ba1db0ed69..6837cc7c16 100644 --- a/labs/lab18/app_python/.gitignore +++ b/labs/lab18/app_python/.gitignore @@ -10,3 +10,5 @@ venv/ # OS .DS_Store + +/result From b62ec8cd2c6a2aeb543f8c89b8cdf8ae9aeb502b Mon Sep 17 00:00:00 2001 From: Timur Usmanov Date: Mon, 11 May 2026 17:57:13 +0300 Subject: [PATCH 10/11] Solve task1 --- labs/lab18/screenshots/task1-nix-running.png | Bin 0 -> 323653 bytes labs/submission18.md | 109 +++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 labs/lab18/screenshots/task1-nix-running.png create mode 100644 labs/submission18.md diff --git a/labs/lab18/screenshots/task1-nix-running.png b/labs/lab18/screenshots/task1-nix-running.png new file mode 100644 index 0000000000000000000000000000000000000000..8f2b698d164d33b3cb518ad89930b66cd3e8faa2 GIT binary patch literal 323653 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

    ?NqV(SE!_ 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 VTdt {} }: + +# build a python app +pkgs.python3Packages.buildPythonApplication { +# name + pname = "devops-infoservice"; +# version + version = "1.0.0"; +# source directory (default.nix is located in app_python) + src = ./.; + +# no setup.py + format = "other"; + +# only need flask, gunicorn not needed to launch a dev server + propagatedBuildInputs = with pkgs.python3Packages; [ + flask + ]; + +# required to build + nativeBuildInputs = [ pkgs.makeWrapper ]; + +# commands to install + installPhase = '' +# create the 'bin' directory + mkdir -p $out/bin +# python requires no compilation, so copy the script + cp app.py $out/bin/devops-infoservice + +# wrap with Python interpreter so it can execute + wrapProgram $out/bin/devops-infoservice \ + --prefix PYTHONPATH : "$PYTHONPATH" + ''; +} +``` + +### Store path from multiple builds (prove they're identical) +Store path from the first build: +```text +/nix/store/4qqp6kfsd2jm0bg1x2bh3r686v4x074g-devops-infoservice-1.0.0 +``` + +Store path from the second build: +```text +/nix/store/4qqp6kfsd2jm0bg1x2bh3r686v4x074g-devops-infoservice-1.0.0 +``` + +They are identical, so the programs also are. + +### Comparison table: `pip install` vs Nix derivation +| Aspect | Lab 1 (pip + venv) | Lab 18 (Nix) | +|--------|-------------------|--------------| +| Python version | System-dependent | Pinned in derivation | +| Dependency resolution | Runtime (`pip install`) | Build-time (pure) | +| Reproducibility | Approximate (with lockfiles) | Bit-for-bit identical | +| Portability | Requires same OS + Python | Works anywhere Nix runs | +| Binary cache | No | Yes (cache.nixos.org) | +| Isolation | Virtual environment | Sandboxed build | +| Store path | N/A | Content-addressable hash | + + +### Why does `requirements.txt` provide weaker guarantees than Nix? +It pins the listed packages' versions, but it does not specify the transitive dependencies' versions. + +### Screenshots showing your Lab 1 app running from Nix-built version +![App in terminal](/labs/lab18/screenshots/task1-nix-running.png) + +### Explanation of the Nix store path format and what each part means +```text +/nix/store/4qqp6kfsd2jm0bg1x2bh3r686v4x074g-devops-infoservice-1.0.0/ +< storage> < content hash > < package name > +``` +(`ver` = "version") + +### **Reflection:** How would Nix have helped in Lab 1 if you had used it from the start? +I don't think Nix would have helped to complete Lab 1 because the main advantage, complete reproducibility, only starts +to show itself in the long term, when versions start to shift. + +But if we consider the broader picture, Nix's versioning would definitely help to avoid potential confusion if I were +developing a real system monitoring service. + +# Task 2 + From dcb91d9e3f639ddfc476d1f3607abd2b82ee7f66 Mon Sep 17 00:00:00 2001 From: Timur Usmanov Date: Mon, 11 May 2026 18:56:12 +0300 Subject: [PATCH 11/11] Finish lab18 --- labs/lab18/app_python/docker.nix | 20 ++ labs/lab18/screenshots/task2-side-by-side.png | Bin 0 -> 291570 bytes labs/submission18.md | 224 ++++++++++++++++++ 3 files changed, 244 insertions(+) create mode 100644 labs/lab18/app_python/docker.nix create mode 100644 labs/lab18/screenshots/task2-side-by-side.png diff --git a/labs/lab18/app_python/docker.nix b/labs/lab18/app_python/docker.nix new file mode 100644 index 0000000000..887e4fb0da --- /dev/null +++ b/labs/lab18/app_python/docker.nix @@ -0,0 +1,20 @@ +{ pkgs ? import {} }: + +let + app = import ./default.nix { inherit pkgs; }; +in +pkgs.dockerTools.buildLayeredImage { + name = "devops-infoservice-nix"; + tag = "1.0.0"; + + contents = [ app ]; + + config = { + Cmd = [ "${app}/bin/devops-infoservice" ]; + ExposedPorts = { + "5000/tcp" = {}; + }; + }; + + created = "1970-01-01T00:00:01Z"; # Reproducible timestamp +} diff --git a/labs/lab18/screenshots/task2-side-by-side.png b/labs/lab18/screenshots/task2-side-by-side.png new file mode 100644 index 0000000000000000000000000000000000000000..1952f3ac6ab3fdf0059e596a16fa7d1af76fa7b0 GIT binary patch literal 291570 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ΞAkp1TdS5uMIkMWOWnCg=`FOR4_5|(Tc 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

    y+o$M3vjES2277x>7fbq(z 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 {} }: + +# use the devops-infoservice app how we defined it in default.nix, but inherit pkgs +let + app = import ./default.nix { inherit pkgs; }; +in +# build image +pkgs.dockerTools.buildLayeredImage { +# name of the image + name = "devops-infoservice-nix"; +# tag of the image + tag = "1.0.0"; + +# what to include in the image + contents = [ app ]; + + config = { +# how to launch the image + Cmd = [ "${app}/bin/devops-infoservice" ]; +# info about exposed ports + ExposedPorts = { + "5000/tcp" = {}; + }; + }; + + created = "1970-01-01T00:00:01Z"; # Reproducible timestamp +} +``` + +### Side-by-side comparison: Lab 2 Dockerfile vs Nix docker.nix +| Aspect | Lab 2 Traditional Dockerfile | Lab 18 Nix dockerTools | +|--------|------------------------------|------------------------| +| **Base images** | `python:3.13-slim` (changes over time) | No base image (pure derivations) | +| **Timestamps** | Different on each build | Fixed or deterministic | +| **Package installation** | `pip install` at build time | Nix store paths (immutable) | +| **Reproducibility** | ❌ Same Dockerfile → Different images | ✅ Same docker.nix → Identical images | +| **Caching** | Layer-based (breaks on timestamp) | Content-addressable (perfect caching) | +| **Image size** | ~150MB+ with full base image | ~50-80MB with minimal closure | +| **Portability** | Requires Docker | Requires Nix (then loads to Docker) | +| **Security** | Base image vulnerabilities | Minimal dependencies, easier auditing | + +### SHA256 hash comparison proving Nix reproducibility +Docker: +```text +$ cd lab18/ +$ docker build -t lab2-app:test1 ./app_python/ +docker save lab2-app:test1 | sha256sum + +sleep 2 # Wait a moment + +docker build -t lab2-app:test2 ./app_python/ +docker save lab2-app:test2 | sha256sum +[+] Building 0.6s (15/15) FINISHED docker:default + => [internal] load build definition from Dockerfile 0.0s + => => transferring dockerfile: 524B 0.0s + => [internal] load metadata for docker.io/library/python:3.13-al 0.0s + => [internal] load .dockerignore 0.0s + => => transferring context: 115B 0.0s + => [ 1/10] FROM docker.io/library/python:3.13-alpine 0.0s + => [internal] load build context 0.0s + => => transferring context: 3.54kB 0.0s + => CACHED [ 2/10] RUN addgroup -S infoservice 0.0s + => CACHED [ 3/10] RUN adduser -S infoservice 0.0s + => CACHED [ 4/10] RUN mkdir /app /venv 0.0s + => CACHED [ 5/10] RUN chown infoservice:infoservice /venv /app 0.0s + => CACHED [ 6/10] WORKDIR /app 0.0s + => CACHED [ 7/10] RUN python -m venv /venv 0.0s + => CACHED [ 8/10] COPY --chown=infoservice:infoservice requireme 0.0s + => CACHED [ 9/10] RUN pip install -r requirements.txt 0.0s + => [10/10] COPY --chown=infoservice:infoservice app.py . 0.1s + => exporting to image 0.4s + => => exporting layers 0.4s + => => writing image sha256:4353f5dc388c76983ca17789a5e9ea45be2f4 0.0s + => => naming to docker.io/library/lab2-app:test1 0.0s +27d6b2f9c92155d362e54ed6742ada0684c9a40f09ff77b6dc08454c6045a650 - +[+] Building 0.1s (15/15) FINISHED docker:default + => [internal] load build definition from Dockerfile 0.0s + => => transferring dockerfile: 524B 0.0s + => [internal] load metadata for docker.io/library/python:3.13-al 0.0s + => [internal] load .dockerignore 0.0s + => => transferring context: 115B 0.0s + => [ 1/10] FROM docker.io/library/python:3.13-alpine 0.0s + => [internal] load build context 0.0s + => => transferring context: 63B 0.0s + => CACHED [ 2/10] RUN addgroup -S infoservice 0.0s + => CACHED [ 3/10] RUN adduser -S infoservice 0.0s + => CACHED [ 4/10] RUN mkdir /app /venv 0.0s + => CACHED [ 5/10] RUN chown infoservice:infoservice /venv /app 0.0s + => CACHED [ 6/10] WORKDIR /app 0.0s + => CACHED [ 7/10] RUN python -m venv /venv 0.0s + => CACHED [ 8/10] COPY --chown=infoservice:infoservice requireme 0.0s + => CACHED [ 9/10] RUN pip install -r requirements.txt 0.0s + => CACHED [10/10] COPY --chown=infoservice:infoservice app.py . 0.0s + => exporting to image 0.0s + => => exporting layers 0.0s + => => writing image sha256:4353f5dc388c76983ca17789a5e9ea45be2f4 0.0s + => => naming to docker.io/library/lab2-app:test2 0.0s +7d2bbcae8d570033e8fee5d3a475391aebe074362125b673306db84646dffbee - +``` + +Nix: +```text +$ cd app_python/ +$ rm $(readlink result) +rm: remove write-protected regular file '/nix/store/5xg4bxl4y3zsjay5vlj9 +6xacwygbnb66-devops-infoservice-nix.tar.gz'? n +$ sudo !! +sudo rm $(readlink result) +[sudo] password for timur: +$ nix-build docker.nix + +Adding manifests... +Done. +/nix/store/c51sqj61v7rxnfmlhd7vz7z0c7ns2jk8-devops-infoservice-nix.tar.g +z +$ sha256sum result +1eee8cfcf1ab76e558eb3074a7491cddfc4c0010c25e4c23b3ab98491e9920ed result +$ sudo rm $(readlink result) +$ nix-build docker.nix + +Adding manifests... +Done. +/nix/store/c51sqj61v7rxnfmlhd7vz7z0c7ns2jk8-devops-infoservice-nix.tar.g +z +$ sha256sum result +1eee8cfcf1ab76e558eb3074a7491cddfc4c0010c25e4c23b3ab98491e9920ed result +``` + +### Image size comparison table with analysis +| Metric | Lab 2 Dockerfile | Lab 18 Nix dockerTools | +|--------|------------------|------------------------| +| Image size | 62.6MB (with python:3.13-alpine) | 214MB | +| Reproducibility | ❌ Different hashes each build | ✅ Identical hashes | +| Build caching | Layer-based (timestamp-dependent) | Content-addressable | +| Base image dependency | Yes (python:3.13-alpine) | No base image needed | + +### `docker history` output for both approaches +Old way, with `docker build`: +```text +IMAGE CREATED CREATED BY SIZE COMMENT +d22d2731b38d 3 months ago CMD ["-b" "0.0.0.0:5000" "-e" "DEBUG=true" "… 0B buildkit.dockerfile.v0 + 3 months ago ENTRYPOINT ["gunicorn"] 0B buildkit.dockerfile.v0 + 3 months ago EXPOSE [5000/tcp] 0B buildkit.dockerfile.v0 + 3 months ago COPY --chown=infoservice:infoservice app.py … 3.41kB buildkit.dockerfile.v0 + 3 months ago RUN /bin/sh -c pip install -r requirements.t… 7.12MB buildkit.dockerfile.v0 + 3 months ago COPY --chown=infoservice:infoservice require… 30B buildkit.dockerfile.v0 + 3 months ago ENV VIRTUAL_ENV=/venv 0B buildkit.dockerfile.v0 + 3 months ago ENV PATH=/venv/bin:/usr/local/bin:/usr/local… 0B buildkit.dockerfile.v0 + 3 months ago RUN /bin/sh -c python -m venv /venv # buildk… 10.3MB buildkit.dockerfile.v0 + 3 months ago USER infoservice 0B buildkit.dockerfile.v0 + 3 months ago WORKDIR /app 0B buildkit.dockerfile.v0 + 3 months ago RUN /bin/sh -c chown infoservice:infoservice… 0B buildkit.dockerfile.v0 + 3 months ago RUN /bin/sh -c mkdir /app /venv # buildkit 0B buildkit.dockerfile.v0 + 3 months ago RUN /bin/sh -c adduser -S infoservice # buil… 3.08kB buildkit.dockerfile.v0 + 3 months ago RUN /bin/sh -c addgroup -S infoservice # bui… 1.04kB buildkit.dockerfile.v0 + 3 months ago CMD ["python3"] 0B buildkit.dockerfile.v0 + 3 months ago RUN /bin/sh -c set -eux; for src in idle3 p… 0B buildkit.dockerfile.v0 + 3 months ago RUN /bin/sh -c set -eux; apk add --no-cach… 35.8MB buildkit.dockerfile.v0 + 3 months ago ENV PYTHON_SHA256=16ede7bb7cdbfa895d11b0642f… 0B buildkit.dockerfile.v0 + 3 months ago ENV PYTHON_VERSION=3.13.11 0B buildkit.dockerfile.v0 + 3 months ago ENV GPG_KEY=7169605F62C751356D054A26A821E680… 0B buildkit.dockerfile.v0 + 3 months ago RUN /bin/sh -c set -eux; apk add --no-cache… 982kB buildkit.dockerfile.v0 + 3 months ago ENV PATH=/usr/local/bin:/usr/local/sbin:/usr… 0B buildkit.dockerfile.v0 + 3 months ago CMD ["/bin/sh"] 0B buildkit.dockerfile.v0 + 3 months ago ADD alpine-minirootfs-3.23.3-x86_64.tar.gz /… 8.44MB buildkit.dockerfile.v0 +``` + +New way: +```text +IMAGE CREATED CREATED BY SIZE COMMENT +3ab9a20187e8 N/A 0B store paths: ['/nix/store/18ms6chkvk44j77r1n0p84sjbsjah3bi-devops-infoservice-nix-customisation-layer'] + N/A 8.73kB store paths: ['/nix/store/cd1zwi95li582658j89wpykjan9d24l9-devops-infoservice-1.0.0'] + N/A 1.08MB store paths: ['/nix/store/10hk7srr12wgp2hqm5lai0xxr69m76b7-python3.13-flask-3.1.2'] + N/A 2.56MB store paths: ['/nix/store/hmgasx01bmwlz4nr23gm13q9hnqkqw19-python3.13-werkzeug-3.1.6'] + N/A 1.85MB store paths: ['/nix/store/2kwicy8c1ab6zw8p1ps3nnn623b68dn0-python3.13-jinja2-3.1.6'] + N/A 1.27MB store paths: ['/nix/store/77p6rnrhbc14aaw7iwf6d7vxl89qa9kj-python3.13-click-8.3.1'] + N/A 144kB store paths: ['/nix/store/vxp23qrd7v308fr6g63cbai6lpxqm13j-python3.13-itsdangerous-2.2.0'] + N/A 82.8kB store paths: ['/nix/store/jpyvycfsc7gx267kaswq71dawa5ng0vq-python3.13-markupsafe-3.0.3'] + N/A 73.9kB store paths: ['/nix/store/8qn7dwv1rh0h80k7w0f9pa798y90vv2y-python3.13-blinker-1.9.0'] + N/A 132MB store paths: ['/nix/store/0r6k8xa2kgqyp3r4v2w7yrb80ma2iawm-python3-3.13.12'] + N/A 10.3MB store paths: ['/nix/store/si4q3zks5mn5jhzzyri9hhd3cv789vlm-gcc-15.2.0-lib'] + N/A 9.3MB store paths: ['/nix/store/wbyqkb1vpm41s4jb8pv0i9h4jv08xdrv-openssl-3.6.1'] + N/A 5.86MB store paths: ['/nix/store/5087xk8l09k90gddzw8y9b4yypyn23a5-sqlite-3.51.2'] + N/A 505kB store paths: ['/nix/store/47h2ny0j1xbz879a9s7s55fyv3zawr3r-readline-8.3p3'] + N/A 3.28MB store paths: ['/nix/store/2iaawa9vbqas51lgpn4cjnnfdv74x8fn-ncurses-6.6'] + N/A 2.1MB store paths: ['/nix/store/291rd5nk7hkhcpzbh7pxqiz75xikdll3-util-linux-minimal-2.42-lib'] + N/A 1.85MB store paths: ['/nix/store/i27rhb3nr65rkrwz36bchkwmav6ggsmn-bash-5.3p9'] + N/A 843kB store paths: ['/nix/store/hmslvsxvs2ijb7iw5krdckai2im6vp2y-xz-5.8.3'] + N/A 448kB store paths: ['/nix/store/rnaq5b0la7pcq6hyf86iy8ihazgcamg6-gdbm-1.26-lib'] + N/A 307kB store paths: ['/nix/store/pa6n8nrmgq8jswk2pkrl5qprcls1r0ch-expat-2.7.5'] + N/A 224kB store paths: ['/nix/store/yw0fl2v8g35w2dii8phnr0fjb9nr1b0b-mpdecimal-4.0.1'] + N/A 131kB store paths: ['/nix/store/ixhlv41i2wpl84xgjcks061dz4yssbg3-zlib-1.3.2'] + N/A 87.6kB store paths: ['/nix/store/2amncb4zvr32gm5d2i8m6gz29c02cn61-bzip2-1.0.8'] + N/A 72.5kB store paths: ['/nix/store/hyai3q7gvdfppw4ky7s2mvhxvfyp5bh7-libffi-3.5.2'] + N/A 34.9MB store paths: ['/nix/store/fjkx1l5cnskzrqacf08z7i8z17256w0j-glibc-2.42-61'] + N/A 362kB store paths: ['/nix/store/sgswwrxkhdlfskklqp4gsbi2cskfg07c-libidn2-2.3.8'] + N/A 1.9MB store paths: ['/nix/store/cxjmhdbpy3bk12jc6lwpmcvlas76a7zm-tzdata-2026a'] + N/A 2.08MB store paths: ['/nix/store/i4gg1f526vl5psg5nqniflj4v77vc1kd-libunistring-1.4.2'] + N/A 197kB store paths: ['/nix/store/wrxyd3k2f4bmh52pr5rpdjxxsm5r2qxm-gcc-15.2.0-libgcc'] + N/A 197kB store paths: ['/nix/store/xx0z77494lfxr8qjwpck246fry05n3nm-xgcc-15.2.0-libgcc'] + N/A 121kB store paths: ['/nix/store/0minj1ypl50k4zl85gsngfw0z0y9ddg0-util-linux-minimal-2.42'] + N/A 118kB store paths: ['/nix/store/b73wvf83q4cjwzz99pdanbl8qpfawr69-mailcap-2.1.54'] +``` + +### Screenshots showing both containers running simultaneously +![Both](/labs/lab18/screenshots/task2-side-by-side.png) + +### **Analysis:** Why can't traditional Dockerfiles achieve bit-for-bit reproducibility? +`docker build` embeds the build timestamp into the container itself, which causes unavoidable hash discrepancies. + +### **Reflection:** If you could redo Lab 2 with Nix, what would you do differently? +If I could do that at the time, I would consider making a `docker.nix` file similar to the one in this lab and building +the docker image with Nix. + +### Practical scenarios where Nix's reproducibility matters (CI/CD, security audits, rollbacks) +Reproducibility matters a lot in scenarios where we want to prevent malicious actors from replacing the released binary +with malware. For example, if builds are completely reproducible, we could check that a GitHub release is in fact built +from the source code in the repo (which can be reviewed). + +In the rollback scenario, if we do not completely roll back some bad code change, we will immediately notice a different +hash in the package name.

    D~IS1935WNak31+ux1*-3_rgaa{ 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%0DcOhmg*Oe0hHE)QT?VWeZmu$g@I0W*7v~=oN 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