From a70f2b7ff9006df21a14d6312caac46b36220a0f Mon Sep 17 00:00:00 2001 From: Lydia Hallie Date: Fri, 14 Nov 2025 11:53:23 -0800 Subject: [PATCH 001/212] Docs: Add custor server instructions to TanStack guide (#24723) Add docs on how to deploy a custom Bun server for TanStack Start. Based on [this example](https://github.com/TanStack/router/tree/main/examples/react/start-bun/server.ts) --- docs/guides/ecosystem/tanstack-start.mdx | 772 ++++++++++++++++++++--- docs/snippets/guides.jsx | 13 +- 2 files changed, 695 insertions(+), 90 deletions(-) diff --git a/docs/guides/ecosystem/tanstack-start.mdx b/docs/guides/ecosystem/tanstack-start.mdx index 27d6c01255..d7508b3b81 100644 --- a/docs/guides/ecosystem/tanstack-start.mdx +++ b/docs/guides/ecosystem/tanstack-start.mdx @@ -48,107 +48,711 @@ mode: center ## Hosting - - - Add [Nitro](https://nitro.build/) to your project. This tool allows you to deploy your TanStack Start app to different platforms. +To host your TanStack Start app, you can use [Nitro](https://nitro.build/) or a custom Bun server for production deployments. - ```sh terminal icon="terminal" - bun add nitro - ``` + + + + + Add [Nitro](https://nitro.build/) to your project. This tool allows you to deploy your TanStack Start app to different platforms. - - Update your vite.config.ts file}> - Update your `vite.config.ts` file to include the necessary plugins for TanStack Start with Bun. + ```sh terminal icon="terminal" + bun add nitro + ``` - ```ts vite.config.ts icon="/icons/typescript.svg" - // other imports... - import { nitro } from "nitro/vite"; // [!code ++] + + Update your vite.config.ts file}> + Update your `vite.config.ts` file to include the necessary plugins for TanStack Start with Bun. - const config = defineConfig({ - plugins: [ - tanstackStart(), - nitro({ preset: "bun" }), // [!code ++] - // other plugins... - ], - }); + ```ts vite.config.ts icon="/icons/typescript.svg" + // other imports... + import { nitro } from "nitro/vite"; // [!code ++] - export default config; - ``` + const config = defineConfig({ + plugins: [ + tanstackStart(), + nitro({ preset: "bun" }), // [!code ++] + // other plugins... + ], + }); - - The `bun` preset is optional, but it configures the build output specifically for Bun's runtime. - + export default config; + ``` - - - Make sure `build` and `start` scripts are present in your `package.json` file: + + The `bun` preset is optional, but it configures the build output specifically for Bun's runtime. + - ```json package.json icon="file-json" - { - "scripts": { - "build": "bun --bun vite build", // [!code ++] - // The .output files are created by Nitro when you run `bun run build`. - // Not necessary when deploying to Vercel. - "start": "bun run .output/server/index.mjs" // [!code ++] - } - } - ``` + + + Make sure `build` and `start` scripts are present in your `package.json` file: + + ```json package.json icon="file-json" + { + "scripts": { + "build": "bun --bun vite build", // [!code ++] + // The .output files are created by Nitro when you run `bun run build`. + // Not necessary when deploying to Vercel. + "start": "bun run .output/server/index.mjs" // [!code ++] + } + } + ``` - - You do **not** need the custom `start` script when deploying to Vercel. - + + You do **not** need the custom `start` script when deploying to Vercel. + - - - Check out one of our guides to deploy your app to a hosting provider. + + + Check out one of our guides to deploy your app to a hosting provider. - - When deploying to Vercel, you can either add the `"bunVersion": "1.x"` to your `vercel.json` file, or add it to the `nitro` config in your `vite.config.ts` file: + + When deploying to Vercel, you can either add the `"bunVersion": "1.x"` to your `vercel.json` file, or add it to the `nitro` config in your `vite.config.ts` file: - - Do **not** use the `bun` Nitro preset when deploying to Vercel. - + + Do **not** use the `bun` Nitro preset when deploying to Vercel. + - ```ts vite.config.ts icon="/icons/typescript.svg" - export default defineConfig({ - plugins: [ - tanstackStart(), - nitro({ - preset: "bun", // [!code --] - vercel: { // [!code ++] - functions: { // [!code ++] - runtime: "bun1.x", // [!code ++] + ```ts vite.config.ts icon="/icons/typescript.svg" + export default defineConfig({ + plugins: [ + tanstackStart(), + nitro({ + preset: "bun", // [!code --] + vercel: { // [!code ++] + functions: { // [!code ++] + runtime: "bun1.x", // [!code ++] + }, // [!code ++] }, // [!code ++] - }, // [!code ++] - }), - ], - }); - ``` + }), + ], + }); + ``` + + + + + + + + This custom server implementation is based on [TanStack's Bun template](https://github.com/TanStack/router/blob/main/examples/react/start-bun/server.ts). It provides fine-grained control over static asset serving, including configurable memory management that preloads small files into memory for fast serving while serving larger files on-demand. This approach is useful when you need precise control over resource usage and asset loading behavior in production deployments. - - - Deploy on Vercel - - - Deploy on Render - - - Deploy on Railway - - - Deploy on DigitalOcean - - - Deploy on AWS Lambda - - - Deploy on Google Cloud Run - - + + + Create a `server.ts` file in your project root with the following custom server implementation: - - + ```ts server.ts icon="/icons/typescript.svg" expandable + /** + * TanStack Start Production Server with Bun + * + * A high-performance production server for TanStack Start applications that + * implements intelligent static asset loading with configurable memory management. + * + * Features: + * - Hybrid loading strategy (preload small files, serve large files on-demand) + * - Configurable file filtering with include/exclude patterns + * - Memory-efficient response generation + * - Production-ready caching headers + * + * Environment Variables: + * + * PORT (number) + * - Server port number + * - Default: 3000 + * + * ASSET_PRELOAD_MAX_SIZE (number) + * - Maximum file size in bytes to preload into memory + * - Files larger than this will be served on-demand from disk + * - Default: 5242880 (5MB) + * - Example: ASSET_PRELOAD_MAX_SIZE=5242880 (5MB) + * + * ASSET_PRELOAD_INCLUDE_PATTERNS (string) + * - Comma-separated list of glob patterns for files to include + * - If specified, only matching files are eligible for preloading + * - Patterns are matched against filenames only, not full paths + * - Example: ASSET_PRELOAD_INCLUDE_PATTERNS="*.js,*.css,*.woff2" + * + * ASSET_PRELOAD_EXCLUDE_PATTERNS (string) + * - Comma-separated list of glob patterns for files to exclude + * - Applied after include patterns + * - Patterns are matched against filenames only, not full paths + * - Example: ASSET_PRELOAD_EXCLUDE_PATTERNS="*.map,*.txt" + * + * ASSET_PRELOAD_VERBOSE_LOGGING (boolean) + * - Enable detailed logging of loaded and skipped files + * - Default: false + * - Set to "true" to enable verbose output + * + * ASSET_PRELOAD_ENABLE_ETAG (boolean) + * - Enable ETag generation for preloaded assets + * - Default: true + * - Set to "false" to disable ETag support + * + * ASSET_PRELOAD_ENABLE_GZIP (boolean) + * - Enable Gzip compression for eligible assets + * - Default: true + * - Set to "false" to disable Gzip compression + * + * ASSET_PRELOAD_GZIP_MIN_SIZE (number) + * - Minimum file size in bytes required for Gzip compression + * - Files smaller than this will not be compressed + * - Default: 1024 (1KB) + * + * ASSET_PRELOAD_GZIP_MIME_TYPES (string) + * - Comma-separated list of MIME types eligible for Gzip compression + * - Supports partial matching for types ending with "/" + * - Default: text/,application/javascript,application/json,application/xml,image/svg+xml + * + * Usage: + * bun run server.ts + */ + + import path from 'node:path' + + // Configuration + const SERVER_PORT = Number(process.env.PORT ?? 3000) + const CLIENT_DIRECTORY = './dist/client' + const SERVER_ENTRY_POINT = './dist/server/server.js' + + // Logging utilities for professional output + const log = { + info: (message: string) => { + console.log(`[INFO] ${message}`) + }, + success: (message: string) => { + console.log(`[SUCCESS] ${message}`) + }, + warning: (message: string) => { + console.log(`[WARNING] ${message}`) + }, + error: (message: string) => { + console.log(`[ERROR] ${message}`) + }, + header: (message: string) => { + console.log(`\n${message}\n`) + }, + } + + // Preloading configuration from environment variables + const MAX_PRELOAD_BYTES = Number( + process.env.ASSET_PRELOAD_MAX_SIZE ?? 5 * 1024 * 1024, // 5MB default + ) + + // Parse comma-separated include patterns (no defaults) + const INCLUDE_PATTERNS = (process.env.ASSET_PRELOAD_INCLUDE_PATTERNS ?? '') + .split(',') + .map((s) => s.trim()) + .filter(Boolean) + .map((pattern: string) => convertGlobToRegExp(pattern)) + + // Parse comma-separated exclude patterns (no defaults) + const EXCLUDE_PATTERNS = (process.env.ASSET_PRELOAD_EXCLUDE_PATTERNS ?? '') + .split(',') + .map((s) => s.trim()) + .filter(Boolean) + .map((pattern: string) => convertGlobToRegExp(pattern)) + + // Verbose logging flag + const VERBOSE = process.env.ASSET_PRELOAD_VERBOSE_LOGGING === 'true' + + // Optional ETag feature + const ENABLE_ETAG = (process.env.ASSET_PRELOAD_ENABLE_ETAG ?? 'true') === 'true' + + // Optional Gzip feature + const ENABLE_GZIP = (process.env.ASSET_PRELOAD_ENABLE_GZIP ?? 'true') === 'true' + const GZIP_MIN_BYTES = Number(process.env.ASSET_PRELOAD_GZIP_MIN_SIZE ?? 1024) // 1KB + const GZIP_TYPES = ( + process.env.ASSET_PRELOAD_GZIP_MIME_TYPES ?? + 'text/,application/javascript,application/json,application/xml,image/svg+xml' + ) + .split(',') + .map((v) => v.trim()) + .filter(Boolean) + + /** + * Convert a simple glob pattern to a regular expression + * Supports * wildcard for matching any characters + */ + function convertGlobToRegExp(globPattern: string): RegExp { + // Escape regex special chars except *, then replace * with .* + const escapedPattern = globPattern + .replace(/[-/\\^$+?.()|[\]{}]/g, '\\$&') + .replace(/\*/g, '.*') + return new RegExp(`^${escapedPattern}$`, 'i') + } + + /** + * Compute ETag for a given data buffer + */ + function computeEtag(data: Uint8Array): string { + const hash = Bun.hash(data) + return `W/"${hash.toString(16)}-${data.byteLength.toString()}"` + } + + /** + * Metadata for preloaded static assets + */ + interface AssetMetadata { + route: string + size: number + type: string + } + + /** + * In-memory asset with ETag and Gzip support + */ + interface InMemoryAsset { + raw: Uint8Array + gz?: Uint8Array + etag?: string + type: string + immutable: boolean + size: number + } + + /** + * Result of static asset preloading process + */ + interface PreloadResult { + routes: Record Response | Promise> + loaded: AssetMetadata[] + skipped: AssetMetadata[] + } + + /** + * Check if a file is eligible for preloading based on configured patterns + */ + function isFileEligibleForPreloading(relativePath: string): boolean { + const fileName = relativePath.split(/[/\\]/).pop() ?? relativePath + + // If include patterns are specified, file must match at least one + if (INCLUDE_PATTERNS.length > 0) { + if (!INCLUDE_PATTERNS.some((pattern) => pattern.test(fileName))) { + return false + } + } + + // If exclude patterns are specified, file must not match any + if (EXCLUDE_PATTERNS.some((pattern) => pattern.test(fileName))) { + return false + } + + return true + } + + /** + * Check if a MIME type is compressible + */ + function isMimeTypeCompressible(mimeType: string): boolean { + return GZIP_TYPES.some((type) => + type.endsWith('/') ? mimeType.startsWith(type) : mimeType === type, + ) + } + + /** + * Conditionally compress data based on size and MIME type + */ + function compressDataIfAppropriate( + data: Uint8Array, + mimeType: string, + ): Uint8Array | undefined { + if (!ENABLE_GZIP) return undefined + if (data.byteLength < GZIP_MIN_BYTES) return undefined + if (!isMimeTypeCompressible(mimeType)) return undefined + try { + return Bun.gzipSync(data.buffer as ArrayBuffer) + } catch { + return undefined + } + } + + /** + * Create response handler function with ETag and Gzip support + */ + function createResponseHandler( + asset: InMemoryAsset, + ): (req: Request) => Response { + return (req: Request) => { + const headers: Record = { + 'Content-Type': asset.type, + 'Cache-Control': asset.immutable + ? 'public, max-age=31536000, immutable' + : 'public, max-age=3600', + } + + if (ENABLE_ETAG && asset.etag) { + const ifNone = req.headers.get('if-none-match') + if (ifNone && ifNone === asset.etag) { + return new Response(null, { + status: 304, + headers: { ETag: asset.etag }, + }) + } + headers.ETag = asset.etag + } + + if ( + ENABLE_GZIP && + asset.gz && + req.headers.get('accept-encoding')?.includes('gzip') + ) { + headers['Content-Encoding'] = 'gzip' + headers['Content-Length'] = String(asset.gz.byteLength) + const gzCopy = new Uint8Array(asset.gz) + return new Response(gzCopy, { status: 200, headers }) + } + + headers['Content-Length'] = String(asset.raw.byteLength) + const rawCopy = new Uint8Array(asset.raw) + return new Response(rawCopy, { status: 200, headers }) + } + } + + /** + * Create composite glob pattern from include patterns + */ + function createCompositeGlobPattern(): Bun.Glob { + const raw = (process.env.ASSET_PRELOAD_INCLUDE_PATTERNS ?? '') + .split(',') + .map((s) => s.trim()) + .filter(Boolean) + if (raw.length === 0) return new Bun.Glob('**/*') + if (raw.length === 1) return new Bun.Glob(raw[0]) + return new Bun.Glob(`{${raw.join(',')}}`) + } + + /** + * Initialize static routes with intelligent preloading strategy + * Small files are loaded into memory, large files are served on-demand + */ + async function initializeStaticRoutes( + clientDirectory: string, + ): Promise { + const routes: Record Response | Promise> = + {} + const loaded: AssetMetadata[] = [] + const skipped: AssetMetadata[] = [] + + log.info(`Loading static assets from ${clientDirectory}...`) + if (VERBOSE) { + console.log( + `Max preload size: ${(MAX_PRELOAD_BYTES / 1024 / 1024).toFixed(2)} MB`, + ) + if (INCLUDE_PATTERNS.length > 0) { + console.log( + `Include patterns: ${process.env.ASSET_PRELOAD_INCLUDE_PATTERNS ?? ''}`, + ) + } + if (EXCLUDE_PATTERNS.length > 0) { + console.log( + `Exclude patterns: ${process.env.ASSET_PRELOAD_EXCLUDE_PATTERNS ?? ''}`, + ) + } + } + + let totalPreloadedBytes = 0 + + try { + const glob = createCompositeGlobPattern() + for await (const relativePath of glob.scan({ cwd: clientDirectory })) { + const filepath = path.join(clientDirectory, relativePath) + const route = `/${relativePath.split(path.sep).join(path.posix.sep)}` + + try { + // Get file metadata + const file = Bun.file(filepath) + + // Skip if file doesn't exist or is empty + if (!(await file.exists()) || file.size === 0) { + continue + } + + const metadata: AssetMetadata = { + route, + size: file.size, + type: file.type || 'application/octet-stream', + } + + // Determine if file should be preloaded + const matchesPattern = isFileEligibleForPreloading(relativePath) + const withinSizeLimit = file.size <= MAX_PRELOAD_BYTES + + if (matchesPattern && withinSizeLimit) { + // Preload small files into memory with ETag and Gzip support + const bytes = new Uint8Array(await file.arrayBuffer()) + const gz = compressDataIfAppropriate(bytes, metadata.type) + const etag = ENABLE_ETAG ? computeEtag(bytes) : undefined + const asset: InMemoryAsset = { + raw: bytes, + gz, + etag, + type: metadata.type, + immutable: true, + size: bytes.byteLength, + } + routes[route] = createResponseHandler(asset) + + loaded.push({ ...metadata, size: bytes.byteLength }) + totalPreloadedBytes += bytes.byteLength + } else { + // Serve large or filtered files on-demand + routes[route] = () => { + const fileOnDemand = Bun.file(filepath) + return new Response(fileOnDemand, { + headers: { + 'Content-Type': metadata.type, + 'Cache-Control': 'public, max-age=3600', + }, + }) + } + + skipped.push(metadata) + } + } catch (error: unknown) { + if (error instanceof Error && error.name !== 'EISDIR') { + log.error(`Failed to load ${filepath}: ${error.message}`) + } + } + } + + // Show detailed file overview only when verbose mode is enabled + if (VERBOSE && (loaded.length > 0 || skipped.length > 0)) { + const allFiles = [...loaded, ...skipped].sort((a, b) => + a.route.localeCompare(b.route), + ) + + // Calculate max path length for alignment + const maxPathLength = Math.min( + Math.max(...allFiles.map((f) => f.route.length)), + 60, + ) + + // Format file size with KB and actual gzip size + const formatFileSize = (bytes: number, gzBytes?: number) => { + const kb = bytes / 1024 + const sizeStr = kb < 100 ? kb.toFixed(2) : kb.toFixed(1) + + if (gzBytes !== undefined) { + const gzKb = gzBytes / 1024 + const gzStr = gzKb < 100 ? gzKb.toFixed(2) : gzKb.toFixed(1) + return { + size: sizeStr, + gzip: gzStr, + } + } + + // Rough gzip estimation (typically 30-70% compression) if no actual gzip data + const gzipKb = kb * 0.35 + return { + size: sizeStr, + gzip: gzipKb < 100 ? gzipKb.toFixed(2) : gzipKb.toFixed(1), + } + } + + if (loaded.length > 0) { + console.log('\nšŸ“ Preloaded into memory:') + console.log( + 'Path │ Size │ Gzip Size', + ) + loaded + .sort((a, b) => a.route.localeCompare(b.route)) + .forEach((file) => { + const { size, gzip } = formatFileSize(file.size) + const paddedPath = file.route.padEnd(maxPathLength) + const sizeStr = `${size.padStart(7)} kB` + const gzipStr = `${gzip.padStart(7)} kB` + console.log(`${paddedPath} │ ${sizeStr} │ ${gzipStr}`) + }) + } + + if (skipped.length > 0) { + console.log('\nšŸ’¾ Served on-demand:') + console.log( + 'Path │ Size │ Gzip Size', + ) + skipped + .sort((a, b) => a.route.localeCompare(b.route)) + .forEach((file) => { + const { size, gzip } = formatFileSize(file.size) + const paddedPath = file.route.padEnd(maxPathLength) + const sizeStr = `${size.padStart(7)} kB` + const gzipStr = `${gzip.padStart(7)} kB` + console.log(`${paddedPath} │ ${sizeStr} │ ${gzipStr}`) + }) + } + } + + // Show detailed verbose info if enabled + if (VERBOSE) { + if (loaded.length > 0 || skipped.length > 0) { + const allFiles = [...loaded, ...skipped].sort((a, b) => + a.route.localeCompare(b.route), + ) + console.log('\nšŸ“Š Detailed file information:') + console.log( + 'Status │ Path │ MIME Type │ Reason', + ) + allFiles.forEach((file) => { + const isPreloaded = loaded.includes(file) + const status = isPreloaded ? 'MEMORY' : 'ON-DEMAND' + const reason = + !isPreloaded && file.size > MAX_PRELOAD_BYTES + ? 'too large' + : !isPreloaded + ? 'filtered' + : 'preloaded' + const route = + file.route.length > 30 + ? file.route.substring(0, 27) + '...' + : file.route + console.log( + `${status.padEnd(12)} │ ${route.padEnd(30)} │ ${file.type.padEnd(28)} │ ${reason.padEnd(10)}`, + ) + }) + } else { + console.log('\nšŸ“Š No files found to display') + } + } + + // Log summary after the file list + console.log() // Empty line for separation + if (loaded.length > 0) { + log.success( + `Preloaded ${String(loaded.length)} files (${(totalPreloadedBytes / 1024 / 1024).toFixed(2)} MB) into memory`, + ) + } else { + log.info('No files preloaded into memory') + } + + if (skipped.length > 0) { + const tooLarge = skipped.filter((f) => f.size > MAX_PRELOAD_BYTES).length + const filtered = skipped.length - tooLarge + log.info( + `${String(skipped.length)} files will be served on-demand (${String(tooLarge)} too large, ${String(filtered)} filtered)`, + ) + } + } catch (error) { + log.error( + `Failed to load static files from ${clientDirectory}: ${String(error)}`, + ) + } + + return { routes, loaded, skipped } + } + + /** + * Initialize the server + */ + async function initializeServer() { + log.header('Starting Production Server') + + // Load TanStack Start server handler + let handler: { fetch: (request: Request) => Response | Promise } + try { + const serverModule = (await import(SERVER_ENTRY_POINT)) as { + default: { fetch: (request: Request) => Response | Promise } + } + handler = serverModule.default + log.success('TanStack Start application handler initialized') + } catch (error) { + log.error(`Failed to load server handler: ${String(error)}`) + process.exit(1) + } + + // Build static routes with intelligent preloading + const { routes } = await initializeStaticRoutes(CLIENT_DIRECTORY) + + // Create Bun server + const server = Bun.serve({ + port: SERVER_PORT, + + routes: { + // Serve static assets (preloaded or on-demand) + ...routes, + + // Fallback to TanStack Start handler for all other routes + '/*': (req: Request) => { + try { + return handler.fetch(req) + } catch (error) { + log.error(`Server handler error: ${String(error)}`) + return new Response('Internal Server Error', { status: 500 }) + } + }, + }, + + // Global error handler + error(error) { + log.error( + `Uncaught server error: ${error instanceof Error ? error.message : String(error)}`, + ) + return new Response('Internal Server Error', { status: 500 }) + }, + }) + + log.success(`Server listening on http://localhost:${String(server.port)}`) + } + + // Initialize the server + initializeServer().catch((error: unknown) => { + log.error(`Failed to start server: ${String(error)}`) + process.exit(1) + }) + ``` + + + + Add a `start` script to run the custom server: + + ```json package.json icon="file-json" + { + "scripts": { + "build": "bun --bun vite build", + "start": "bun run server.ts" // [!code ++] + } + } + ``` + + + + Build your application and start the server: + + ```sh terminal icon="terminal" + bun run build + bun run start + ``` + + The server will start on port 3000 by default (configurable via `PORT` environment variable). + + + + + + + + + + Deploy on Vercel + + + Deploy on Render + + + Deploy on Railway + + + Deploy on DigitalOcean + + + Deploy on AWS Lambda + + + Deploy on Google Cloud Run + + + +--- [→ See TanStack Start's official documentation](https://tanstack.com/start/latest/docs/framework/react/guide/hosting) for more information on hosting. diff --git a/docs/snippets/guides.jsx b/docs/snippets/guides.jsx index 248814ef79..b17af36b57 100644 --- a/docs/snippets/guides.jsx +++ b/docs/snippets/guides.jsx @@ -5,6 +5,12 @@ export const GuidesList = () => { blurb: "A collection of code samples and walkthroughs for performing common tasks with Bun.", }, featured: [ + { + category: "Ecosystem", + title: "Use Tanstack Start with Bun", + href: "/guides/ecosystem/tanstack-start", + cta: "View guide", + }, { category: "Ecosystem", title: "Build a frontend using Vite and Bun", @@ -35,12 +41,6 @@ export const GuidesList = () => { href: "/guides/websocket/simple", cta: "View guide", }, - { - category: "Reading files", - title: "Read a file as a string", - href: "/guides/read-file/string", - cta: "View guide", - }, ], categories: [ { @@ -135,6 +135,7 @@ export const GuidesList = () => { { title: "Build an app with Qwik and Bun", href: "/guides/ecosystem/qwik" }, { title: "Build an app with Astro and Bun", href: "/guides/ecosystem/astro" }, { title: "Build an app with Remix and Bun", href: "/guides/ecosystem/remix" }, + { title: "Use TanStack Start with Bun", href: "/guides/ecosystem/tanstack-start" }, { title: "Run Bun as a daemon with systemd", href: "/guides/ecosystem/systemd" }, { title: "Build an app with Next.js and Bun", href: "/guides/ecosystem/nextjs" }, { title: "Build an app with SvelteKit and Bun", href: "/guides/ecosystem/sveltekit" }, From f216673f982fed03dcb2361ba64d86857f181ca9 Mon Sep 17 00:00:00 2001 From: Luke Parker <10430890+Hona@users.noreply.github.com> Date: Sat, 15 Nov 2025 08:05:47 +1000 Subject: [PATCH 002/212] fix: Add missing SIGWINCH for windows (#24704) ### What does this PR do? Fixes https://github.com/oven-sh/bun/issues/22288 Fixes #22402 Fixes https://github.com/oven-sh/bun/issues/23224 Fixes https://github.com/oven-sh/bun/issues/17803 cc: Should unblock opencode/opentui window resize on windows https://github.com/sst/opentui/issues/152 ### How did you verify your code works? Clone the linked repro, verified latest bun failed, node worked, then iterated till my local bun worked. Here is a screenshot of the branch working with bun on windows image Additionally using bun vs bun-debug on a little test for our downstream package proves this works image image --- src/bun.js/bindings/BunProcess.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bun.js/bindings/BunProcess.cpp b/src/bun.js/bindings/BunProcess.cpp index e38ddf3b22..d079964114 100644 --- a/src/bun.js/bindings/BunProcess.cpp +++ b/src/bun.js/bindings/BunProcess.cpp @@ -962,6 +962,7 @@ static void loadSignalNumberMap() signalNameToNumberMap->add(signalNames[2], SIGQUIT); signalNameToNumberMap->add(signalNames[9], SIGKILL); signalNameToNumberMap->add(signalNames[15], SIGTERM); + signalNameToNumberMap->add(signalNames[27], SIGWINCH); #else signalNameToNumberMap->add(signalNames[0], SIGHUP); signalNameToNumberMap->add(signalNames[1], SIGINT); From b2c219a56c3ebcb49f0a47763f88c506d7e38773 Mon Sep 17 00:00:00 2001 From: robobun Date: Fri, 14 Nov 2025 16:21:04 -0800 Subject: [PATCH 003/212] Implement retry and repeats options for bun:test (#23713) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #16051, Fixes ENG-21437 Implements retry/repeats ```ts test("my test", () => { if (Math.random() < 0.1) throw new Error("uh oh!"); }, {repeats: 20}); ``` ``` Error: uh oh! āœ— my test ``` ```ts test("my test", () => { if (Math.random() < 0.1) throw new Error("uh oh!"); }, {retry: 5}); ``` ``` Error: uh oh! āœ“ my test (attempt 2) ``` Also fixes a bug where onTestFinished inside a test would not run if the test failed ```ts test("abc", () => { onTestFinished(() => { console.log("hello" }); throw new Error("uh oh!"); }); ``` ``` Error: uh oh! hello ``` --------- Co-authored-by: Claude Bot Co-authored-by: pfg Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> --- src/bun.js/test/Execution.zig | 74 +++++--- src/bun.js/test/Order.zig | 20 ++- src/bun.js/test/ScopeFunctions.zig | 28 +-- src/bun.js/test/bun_test.zig | 13 +- src/cli/test_command.zig | 14 ++ .../js/bun/test/test-on-test-finished.test.ts | 16 ++ .../bun/test/test-retry-repeats-basic.test.ts | 161 ++++++++++++++++++ 7 files changed, 283 insertions(+), 43 deletions(-) create mode 100644 test/js/bun/test/test-retry-repeats-basic.test.ts diff --git a/src/bun.js/test/Execution.zig b/src/bun.js/test/Execution.zig index 69f90ac347..77669082cf 100644 --- a/src/bun.js/test/Execution.zig +++ b/src/bun.js/test/Execution.zig @@ -76,7 +76,8 @@ pub const ExecutionSequence = struct { /// Index into ExecutionSequence.entries() for the entry that is not started or currently running active_entry: ?*ExecutionEntry, test_entry: ?*ExecutionEntry, - remaining_repeat_count: i64 = 1, + remaining_repeat_count: u32, + remaining_retry_count: u32, result: Result = .pending, executing: bool = false, started_at: bun.timespec = .epoch, @@ -90,11 +91,18 @@ pub const ExecutionSequence = struct { } = .not_set, maybe_skip: bool = false, - pub fn init(first_entry: ?*ExecutionEntry, test_entry: ?*ExecutionEntry) ExecutionSequence { + pub fn init(cfg: struct { + first_entry: ?*ExecutionEntry, + test_entry: ?*ExecutionEntry, + retry_count: u32 = 0, + repeat_count: u32 = 0, + }) ExecutionSequence { return .{ - .first_entry = first_entry, - .active_entry = first_entry, - .test_entry = test_entry, + .first_entry = cfg.first_entry, + .active_entry = cfg.first_entry, + .test_entry = cfg.test_entry, + .remaining_repeat_count = cfg.repeat_count, + .remaining_retry_count = cfg.retry_count, }; } @@ -349,8 +357,10 @@ fn stepSequenceOne(buntest_strong: bun_test.BunTestPtr, globalThis: *jsc.JSGloba } const next_item = sequence.active_entry orelse { - bun.debugAssert(sequence.remaining_repeat_count == 0); // repeat count is decremented when the sequence is advanced, this should only happen if the sequence were empty. which should be impossible. - groupLog.log("runOne: no repeats left; wait for group completion.", .{}); + // Sequence is complete - either because: + // 1. It ran out of entries (normal completion) + // 2. All retry/repeat attempts have been exhausted + groupLog.log("runOne: no more entries; sequence complete.", .{}); return .done; }; sequence.executing = true; @@ -455,7 +465,7 @@ fn advanceSequence(this: *Execution, sequence: *ExecutionSequence, group: *Concu sequence.executing = false; if (sequence.maybe_skip) { sequence.maybe_skip = false; - sequence.active_entry = entry.skip_to; + sequence.active_entry = if (entry.failure_skip_past) |failure_skip_past| failure_skip_past.next else null; } else { sequence.active_entry = entry.next; } @@ -465,18 +475,32 @@ fn advanceSequence(this: *Execution, sequence: *ExecutionSequence, group: *Concu if (sequence.active_entry == null) { // just completed the sequence - this.onSequenceCompleted(sequence); - sequence.remaining_repeat_count -= 1; - if (sequence.remaining_repeat_count <= 0) { - // no repeats left; indicate completion - if (group.remaining_incomplete_entries == 0) { - bun.debugAssert(false); // remaining_incomplete_entries should never go below 0 - return; - } - group.remaining_incomplete_entries -= 1; - } else { + const test_failed = sequence.result.isFail(); + const test_passed = sequence.result.isPass(.pending_is_pass); + + // Handle retry logic: if test failed and we have retries remaining, retry it + if (test_failed and sequence.remaining_retry_count > 0) { + sequence.remaining_retry_count -= 1; this.resetSequence(sequence); + return; } + + // Handle repeat logic: if test passed and we have repeats remaining, repeat it + if (test_passed and sequence.remaining_repeat_count > 0) { + sequence.remaining_repeat_count -= 1; + this.resetSequence(sequence); + return; + } + + // Only report the final result after all retries/repeats are done + this.onSequenceCompleted(sequence); + + // No more retries or repeats; mark sequence as complete + if (group.remaining_incomplete_entries == 0) { + bun.debugAssert(false); // remaining_incomplete_entries should never go below 0 + return; + } + group.remaining_incomplete_entries -= 1; } } fn onGroupStarted(_: *Execution, _: *ConcurrentGroup, globalThis: *jsc.JSGlobalObject) void { @@ -580,13 +604,13 @@ pub fn resetSequence(this: *Execution, sequence: *ExecutionSequence) void { } } - if (sequence.result.isPass(.pending_is_pass)) { - // passed or pending; run again - sequence.* = .init(sequence.first_entry, sequence.test_entry); - } else { - // already failed or skipped; don't run again - sequence.active_entry = null; - } + // Preserve the current remaining_repeat_count and remaining_retry_count + sequence.* = .init(.{ + .first_entry = sequence.first_entry, + .test_entry = sequence.test_entry, + .retry_count = sequence.remaining_retry_count, + .repeat_count = sequence.remaining_repeat_count, + }); _ = this; } diff --git a/src/bun.js/test/Order.zig b/src/bun.js/test/Order.zig index df2902c766..b1df67422e 100644 --- a/src/bun.js/test/Order.zig +++ b/src/bun.js/test/Order.zig @@ -46,9 +46,12 @@ pub fn generateAllOrder(this: *Order, entries: []const *ExecutionEntry) bun.JSEr for (entries) |entry| { if (bun.Environment.ci_assert and entry.added_in_phase != .preload) bun.assert(entry.next == null); entry.next = null; - entry.skip_to = null; + entry.failure_skip_past = null; const sequences_start = this.sequences.items.len; - try this.sequences.append(.init(entry, null)); // add sequence to concurrentgroup + try this.sequences.append(.init(.{ + .first_entry = entry, + .test_entry = null, + })); // add sequence to concurrentgroup const sequences_end = this.sequences.items.len; try this.groups.append(.init(sequences_start, sequences_end, this.groups.items.len + 1)); // add a new concurrentgroup to order this.previous_group_was_concurrent = false; @@ -139,15 +142,20 @@ pub fn generateOrderTest(this: *Order, current: *ExecutionEntry) bun.JSError!voi // set skip_to values var index = list.first; - var skip_to = current.next; + var failure_skip_past: ?*ExecutionEntry = current; while (index) |entry| : (index = entry.next) { - if (entry == skip_to) skip_to = null; - entry.skip_to = skip_to; // we should consider matching skip_to in beforeAll to skip directly to the first afterAll from its own scope rather than skipping to the first afterAll from any scope + entry.failure_skip_past = failure_skip_past; // we could consider matching skip_to in beforeAll to skip directly to the first afterAll from its own scope rather than skipping to the first afterAll from any scope + if (entry == failure_skip_past) failure_skip_past = null; } // add these as a single sequence const sequences_start = this.sequences.items.len; - try this.sequences.append(.init(list.first, current)); // add sequence to concurrentgroup + try this.sequences.append(.init(.{ + .first_entry = list.first, + .test_entry = current, + .retry_count = current.retry_count, + .repeat_count = current.repeat_count, + })); // add sequence to concurrentgroup const sequences_end = this.sequences.items.len; try appendOrExtendConcurrentGroup(this, current.base.concurrent, sequences_start, sequences_end); // add or extend the concurrent group } diff --git a/src/bun.js/test/ScopeFunctions.zig b/src/bun.js/test/ScopeFunctions.zig index ba08f8b1c9..9c44d3b388 100644 --- a/src/bun.js/test/ScopeFunctions.zig +++ b/src/bun.js/test/ScopeFunctions.zig @@ -132,10 +132,10 @@ pub fn callAsFunction(globalThis: *JSGlobalObject, callFrame: *CallFrame) bun.JS defer if (formatted_label) |label| bunTest.gpa.free(label); const bound = if (args.callback) |cb| try cb.bind(globalThis, item, &bun.String.static("cb"), 0, args_list_raw.items) else null; - try this.enqueueDescribeOrTestCallback(bunTest, globalThis, callFrame, bound, formatted_label, args.options.timeout, callback_length -| args_list.items.len, line_no); + try this.enqueueDescribeOrTestCallback(bunTest, globalThis, callFrame, bound, formatted_label, args.options, callback_length -| args_list.items.len, line_no); } } else { - try this.enqueueDescribeOrTestCallback(bunTest, globalThis, callFrame, args.callback, args.description, args.options.timeout, callback_length, line_no); + try this.enqueueDescribeOrTestCallback(bunTest, globalThis, callFrame, args.callback, args.description, args.options, callback_length, line_no); } return .js_undefined; @@ -169,7 +169,7 @@ fn filterNames(comptime Rem: type, rem: *Rem, description: ?[]const u8, parent_i } } -fn enqueueDescribeOrTestCallback(this: *ScopeFunctions, bunTest: *bun_test.BunTest, globalThis: *jsc.JSGlobalObject, callFrame: *jsc.CallFrame, callback: ?jsc.JSValue, description: ?[]const u8, timeout: u32, callback_length: usize, line_no: u32) bun.JSError!void { +fn enqueueDescribeOrTestCallback(this: *ScopeFunctions, bunTest: *bun_test.BunTest, globalThis: *jsc.JSGlobalObject, callFrame: *jsc.CallFrame, callback: ?jsc.JSValue, description: ?[]const u8, options: ParseArgumentsOptions, callback_length: usize, line_no: u32) bun.JSError!void { groupLog.begin(@src()); defer groupLog.end(); @@ -248,7 +248,9 @@ fn enqueueDescribeOrTestCallback(this: *ScopeFunctions, bunTest: *bun_test.BunTe _ = try bunTest.collection.active_scope.appendTest(bunTest.gpa, description, if (matches_filter) callback else null, .{ .has_done_parameter = has_done_parameter, - .timeout = timeout, + .timeout = options.timeout, + .retry_count = options.retry, + .repeat_count = options.repeats, }, base, .collection); }, } @@ -286,15 +288,16 @@ fn errorInCI(globalThis: *jsc.JSGlobalObject, signature: []const u8) bun.JSError const ParseArgumentsResult = struct { description: ?[]const u8, callback: ?jsc.JSValue, - options: struct { - timeout: u32 = 0, - retry: ?f64 = null, - repeats: ?f64 = null, - }, + options: ParseArgumentsOptions, pub fn deinit(this: *ParseArgumentsResult, gpa: std.mem.Allocator) void { if (this.description) |str| gpa.free(str); } }; +const ParseArgumentsOptions = struct { + timeout: u32 = 0, + retry: u32 = 0, + repeats: u32 = 0, +}; pub const CallbackMode = enum { require, allow }; pub const FunctionKind = enum { test_or_describe, hook }; @@ -382,13 +385,16 @@ pub fn parseArguments(globalThis: *jsc.JSGlobalObject, callframe: *jsc.CallFrame if (!retries.isNumber()) { return globalThis.throwPretty("{f}() expects retry to be a number", .{signature}); } - result.options.retry = retries.asNumber(); + result.options.retry = std.math.lossyCast(u32, retries.asNumber()); } if (try options.get(globalThis, "repeats")) |repeats| { if (!repeats.isNumber()) { return globalThis.throwPretty("{f}() expects repeats to be a number", .{signature}); } - result.options.repeats = repeats.asNumber(); + if (result.options.retry != 0) { + return globalThis.throwPretty("{f}(): Cannot set both retry and repeats", .{signature}); + } + result.options.repeats = std.math.lossyCast(u32, repeats.asNumber()); } } else if (options.isUndefinedOrNull()) { // no options diff --git a/src/bun.js/test/bun_test.zig b/src/bun.js/test/bun_test.zig index 6931ca5780..83a0e9b858 100644 --- a/src/bun.js/test/bun_test.zig +++ b/src/bun.js/test/bun_test.zig @@ -924,6 +924,10 @@ pub const ExecutionEntryCfg = struct { /// 0 = unlimited timeout timeout: u32, has_done_parameter: bool, + /// Number of times to retry a failed test (0 = no retries) + retry_count: u32 = 0, + /// Number of times to repeat a test (0 = run once, 1 = run twice, etc.) + repeat_count: u32 = 0, }; pub const ExecutionEntry = struct { base: BaseScope, @@ -935,9 +939,14 @@ pub const ExecutionEntry = struct { /// when this entry begins executing, the timespec will be set to the current time plus the timeout(ms). timespec: bun.timespec = .epoch, added_in_phase: AddedInPhase, + /// Number of times to retry a failed test (0 = no retries) + retry_count: u32, + /// Number of times to repeat a test (0 = run once, 1 = run twice, etc.) + repeat_count: u32, next: ?*ExecutionEntry = null, - skip_to: ?*ExecutionEntry = null, + /// if this entry fails, go to the entry 'failure_skip_past.next' + failure_skip_past: ?*ExecutionEntry = null, const AddedInPhase = enum { preload, collection, execution }; @@ -948,6 +957,8 @@ pub const ExecutionEntry = struct { .timeout = cfg.timeout, .has_done_parameter = cfg.has_done_parameter, .added_in_phase = phase, + .retry_count = cfg.retry_count, + .repeat_count = cfg.repeat_count, }); if (cb) |c| { diff --git a/src/cli/test_command.zig b/src/cli/test_command.zig index 015efd3bcf..5464a062ab 100644 --- a/src/cli/test_command.zig +++ b/src/cli/test_command.zig @@ -604,6 +604,10 @@ pub const CommandLineReporter = struct { writer: anytype, comptime dim: bool, ) void { + const initial_retry_count = test_entry.retry_count; + const attempts = (initial_retry_count - sequence.remaining_retry_count) + 1; + const initial_repeat_count = test_entry.repeat_count; + const repeats = (initial_repeat_count - sequence.remaining_repeat_count) + 1; var scopes_stack = bun.BoundedArray(*bun_test.DescribeScope, 64).init(0) catch unreachable; var parent_: ?*bun_test.DescribeScope = test_entry.base.parent; @@ -677,6 +681,16 @@ pub const CommandLineReporter = struct { else writer.print(comptime Output.prettyFmt(" {s}", false), .{display_label}) catch unreachable; + // Print attempt count if test was retried (attempts > 1) + if (attempts > 1) switch (Output.enable_ansi_colors_stderr) { + inline else => |enable_ansi_colors_stderr| writer.print(comptime Output.prettyFmt(" (attempt {d})", enable_ansi_colors_stderr), .{attempts}) catch unreachable, + }; + + // Print repeat count if test failed on a repeat (repeats > 1) + if (repeats > 1) switch (Output.enable_ansi_colors_stderr) { + inline else => |enable_ansi_colors_stderr| writer.print(comptime Output.prettyFmt(" (run {d})", enable_ansi_colors_stderr), .{repeats}) catch unreachable, + }; + if (elapsed_ns > (std.time.ns_per_us * 10)) { writer.print(" {f}", .{ Output.ElapsedFormatter{ diff --git a/test/js/bun/test/test-on-test-finished.test.ts b/test/js/bun/test/test-on-test-finished.test.ts index e97a24a2e4..de75e47347 100644 --- a/test/js/bun/test/test-on-test-finished.test.ts +++ b/test/js/bun/test/test-on-test-finished.test.ts @@ -114,3 +114,19 @@ describe("onTestFinished with all hooks", () => { expect(output).toEqual(["test", "inner afterAll", "afterEach", "onTestFinished"]); }); }); + +// Test that a failing test still runs the onTestFinished hook +describe("onTestFinished with failing test", () => { + const output: string[] = []; + + test.failing("failing test", () => { + onTestFinished(() => { + output.push("onTestFinished"); + }); + output.push("test"); + throw new Error("fail"); + }); + test("verify order", () => { + expect(output).toEqual(["test", "onTestFinished"]); + }); +}); diff --git a/test/js/bun/test/test-retry-repeats-basic.test.ts b/test/js/bun/test/test-retry-repeats-basic.test.ts new file mode 100644 index 0000000000..44e338dbec --- /dev/null +++ b/test/js/bun/test/test-retry-repeats-basic.test.ts @@ -0,0 +1,161 @@ +// Basic tests to verify retry and repeats functionality works +import { afterAll, afterEach, beforeEach, describe, expect, onTestFinished, test } from "bun:test"; + +describe("retry option", () => { + let attempts = 0; + test( + "retries failed test until it passes", + () => { + attempts++; + if (attempts < 3) { + throw new Error("fail"); + } + }, + { retry: 3 }, + ); + test("correct number of attempts from previous test", () => { + expect(attempts).toBe(3); + }); +}); + +describe("repeats option with hooks", () => { + let log: string[] = []; + describe("isolated test with repeats", () => { + beforeEach(() => { + log.push("beforeEach"); + }); + + afterEach(() => { + log.push("afterEach"); + }); + + test( + "repeats test multiple times", + () => { + log.push("test"); + }, + { repeats: 2 }, + ); + }); + + test("verify hooks ran for each repeat", () => { + // Should have: beforeEach, test, afterEach (first), beforeEach, test, afterEach (second), beforeEach, test, afterEach (third) + // repeats: 2 means 1 initial + 2 repeats = 3 total runs + expect(log).toEqual([ + "beforeEach", + "test", + "afterEach", + "beforeEach", + "test", + "afterEach", + "beforeEach", + "test", + "afterEach", + ]); + }); +}); + +describe("retry option with hooks", () => { + let attempts = 0; + let log: string[] = []; + describe("isolated test with retry", () => { + beforeEach(() => { + log.push("beforeEach"); + }); + + afterEach(() => { + log.push("afterEach"); + }); + + test( + "retries with hooks", + () => { + attempts++; + log.push(`test-${attempts}`); + if (attempts < 2) { + throw new Error("fail"); + } + }, + { retry: 3 }, + ); + }); + + test("verify hooks ran for each retry", () => { + // Should have: beforeEach, test-1, afterEach (fail), beforeEach, test-2, afterEach (pass) + expect(log).toEqual(["beforeEach", "test-1", "afterEach", "beforeEach", "test-2", "afterEach"]); + }); +}); +describe("repeats with onTestFinished", () => { + let log: string[] = []; + test( + "repeats with onTestFinished", + () => { + onTestFinished(() => { + log.push("onTestFinished"); + }); + log.push("test"); + }, + { repeats: 3 }, + ); + test("verify correct log", () => { + // repeats: 3 means 1 initial + 3 repeats = 4 total runs + expect(log).toEqual([ + "test", + "onTestFinished", + "test", + "onTestFinished", + "test", + "onTestFinished", + "test", + "onTestFinished", + ]); + }); +}); + +describe("retry with onTestFinished", () => { + let attempts = 0; + let log: string[] = []; + test( + "retry with onTestFinished", + () => { + attempts++; + onTestFinished(() => { + log.push("onTestFinished"); + }); + log.push(`test-${attempts}`); + if (attempts < 3) { + throw new Error("fail"); + } + }, + { retry: 3 }, + ); + test("verify correct log", () => { + expect(log).toEqual(["test-1", "onTestFinished", "test-2", "onTestFinished", "test-3", "onTestFinished"]); + }); +}); + +describe("retry with inner afterAll", () => { + let attempts = 0; + let log: string[] = []; + test( + "retry with inner afterAll", + () => { + attempts++; + afterAll(() => { + log.push("inner afterAll"); + }); + log.push(`test-${attempts}`); + if (attempts < 3) { + throw new Error("fail"); + } + }, + { retry: 3 }, + ); + test("verify correct log", () => { + expect(log).toEqual(["test-1", "inner afterAll", "test-2", "inner afterAll", "test-3", "inner afterAll"]); + }); +}); + +expect(() => { + test("can't pass both", () => {}, { retry: 5, repeats: 6 }); +}).toThrow(/Cannot set both retry and repeats/); From 8650e7ace41e5389354401060b1af3e085e621ee Mon Sep 17 00:00:00 2001 From: Lydia Hallie Date: Fri, 14 Nov 2025 16:45:21 -0800 Subject: [PATCH 004/212] Docs: Add templates to guides (#24732) Adds template cards to the TanStack Start and Next.js guides --- docs/guides/ecosystem/nextjs.mdx | 116 +++++++++++++------ docs/guides/ecosystem/tanstack-start.mdx | 34 ++++++ docs/images/templates/bun-nextjs-basic.png | Bin 0 -> 690425 bytes docs/images/templates/bun-nextjs-todo.png | Bin 0 -> 309453 bytes docs/images/templates/bun-tanstack-basic.png | Bin 0 -> 824881 bytes docs/images/templates/bun-tanstack-start.png | Bin 0 -> 836134 bytes docs/images/templates/bun-tanstack-todo.png | Bin 0 -> 287506 bytes docs/snippets/guides.jsx | 12 +- 8 files changed, 121 insertions(+), 41 deletions(-) create mode 100644 docs/images/templates/bun-nextjs-basic.png create mode 100644 docs/images/templates/bun-nextjs-todo.png create mode 100644 docs/images/templates/bun-tanstack-basic.png create mode 100644 docs/images/templates/bun-tanstack-start.png create mode 100644 docs/images/templates/bun-tanstack-todo.png diff --git a/docs/guides/ecosystem/nextjs.mdx b/docs/guides/ecosystem/nextjs.mdx index 2a3f4188cb..0cd9ccd04b 100644 --- a/docs/guides/ecosystem/nextjs.mdx +++ b/docs/guides/ecosystem/nextjs.mdx @@ -4,54 +4,100 @@ sidebarTitle: Next.js with Bun mode: center --- -Initialize a Next.js app with `create-next-app`. This will scaffold a new Next.js project and automatically install dependencies. - -```sh terminal icon="terminal" -bun create next-app -``` - -```txt -āœ” What is your project named? … my-app -āœ” Would you like to use TypeScript with this project? … No / Yes -āœ” Would you like to use ESLint with this project? … No / Yes -āœ” Would you like to use Tailwind CSS? ... No / Yes -āœ” Would you like to use `src/` directory with this project? … No / Yes -āœ” Would you like to use App Router? (recommended) ... No / Yes -āœ” What import alias would you like configured? … @/* -Creating a new Next.js app in /path/to/my-app. -``` +[Next.js](https://nextjs.org/) is a React framework for building full-stack web applications. It supports server-side rendering, static site generation, API routes, and more. Bun provides fast package installation and can run Next.js development and production servers. --- -You can specify a starter template using the `--example` flag. + + + Use the interactive CLI to create a new Next.js app. This will scaffold a new Next.js project and automatically install dependencies. -```sh -bun create next-app --example with-supabase -``` + ```sh terminal icon="terminal" + bun create next-app@latest my-bun-app + ``` -```txt -āœ” What is your project named? … my-app -... -``` + + + Change to the project directory and run the dev server with Bun. + + ```sh terminal icon="terminal" + cd my-bun-app + bun --bun run dev + ``` + + This starts the Next.js dev server with Bun's runtime. + + Open [`http://localhost:3000`](http://localhost:3000) with your browser to see the result. Any changes you make to `app/page.tsx` will be hot-reloaded in the browser. + + + + Modify the scripts field in your `package.json` by prefixing the Next.js CLI commands with `bun --bun`. This ensures that Bun executes the Next.js CLI for common tasks like `dev`, `build`, and `start`. + + ```json package.json icon="file-json" + { + "scripts": { + "dev": "bun --bun next dev", // [!code ++] + "build": "bun --bun next build", // [!code ++] + "start": "bun --bun next start", // [!code ++] + } + } + ``` + + + --- -To start the dev server with Bun, run `bun --bun run dev` from the project root. +## Hosting -```sh terminal icon="terminal" -cd my-app -bun --bun run dev -``` +Next.js applications on Bun can be deployed to various platforms. + + + + Deploy on Vercel + + + Deploy on Railway + + + Deploy on DigitalOcean + + + Deploy on AWS Lambda + + + Deploy on Google Cloud Run + + + Deploy on Render + + --- -To run the dev server with Node.js instead, omit `--bun`. +## Templates -```sh terminal icon="terminal" -cd my-app -bun run dev -``` + + + A simple App Router starter with Bun, Next.js, and Tailwind CSS. + + + A full-stack todo application built with Bun, Next.js, and PostgreSQL. + + --- -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. Any changes you make to `(pages/app)/index.tsx` will be hot-reloaded in the browser. +[→ See Next.js's official documentation](https://nextjs.org/docs) for more information on building and deploying Next.js applications. diff --git a/docs/guides/ecosystem/tanstack-start.mdx b/docs/guides/ecosystem/tanstack-start.mdx index d7508b3b81..2071671a36 100644 --- a/docs/guides/ecosystem/tanstack-start.mdx +++ b/docs/guides/ecosystem/tanstack-start.mdx @@ -755,4 +755,38 @@ To host your TanStack Start app, you can use [Nitro](https://nitro.build/) or a --- +## Templates + + + + A Todo application built with Bun, TanStack Start, and PostgreSQL. + + + A TanStack Start template using Bun with SSR and file-based routing. + + + The basic TanStack starter using the Bun runtime and Bun's file APIs. + + + +--- + [→ See TanStack Start's official documentation](https://tanstack.com/start/latest/docs/framework/react/guide/hosting) for more information on hosting. diff --git a/docs/images/templates/bun-nextjs-basic.png b/docs/images/templates/bun-nextjs-basic.png new file mode 100644 index 0000000000000000000000000000000000000000..95a1c90370f1cc1e7f00dcc5f058a4b991dbc82b GIT binary patch literal 690425 zcmeFZWmsHG(>4kOg1d#l;7;)1mIQ(YcOPJo;O-XOeXw95xVyW%ySrPE!R4^u=iSfF zdF6cj`*VKnbzMDO)7@3Qx?1Y)>a|v|oQxPM(pw}bC@543aS;V5D1J{0)3Jz&kRK>(H1HDSx6cJz$n*K#p^!Nz(b~IIMi=1X+ngypI2?+TIF(j zx*tvQ8sTx;S>b~kTf9{;K`TJ~P(mq-hkZ2qHUT_D?f}C!1_$*98U{$3VEglD$2#E6 z*JquTW!RvK=A9o?cgD|Nj2fS!wV2``gAFDJ# zP3$$muTCzj8NaMfQ-Aq1@+CQAeBxk-! z?0l;Nkx~~AV>3#urJ0ZI1gily&||8C#Dl7#KiHI)jp_s^C51#e#|fBHMA_+$Kw)pN zo~Nkk2$4{1!TWtQN3dz2q#WAtMbI{W{Cu26tJK+~ zv4pI;6pCH6pz?2O)G@I4g_q?M_Udv{t&byGw;zt?f~8oQf06))2g8u%w~^e)*RF5T zLG2Bnv1A^;MTiSBxs&2$(2~mG^2y*yY=D&cOK65KBIU!okF$8>AFt|KX=&8@lRpyC zj79?9B&WmU=Sq?=$LxIW&VT3{th~vPr}z5ROiE<^5lR;tuE<1}tq*2nrsR&vIrjh& z#+~#P!3S8PyCiSSU=IN-=WsZP!sp}VEXwr zx~_Usl&vmjxts3V55g*KBE7j=7O~T?77!v4xDby0_+q>KE68*r;Ev^l@`Qv; zgm&O-eZH5}37w!$XRwWQp?-UH0<*im)?#g>+Gl(JsAA;LA#!hp`S8o{?wD2v2h0|> zAy!VntI#Ra=^*zx>5$|i^PIziWp$}NE#tz@tFHy4Mo*Zr{PP_25s@QS<2MdH$TxpL z@7prGqdYA1k~$g>220(VL_x2LjFB;pi^qO?b~>j5n*;m1p9h23(u0bYq9+FX_DS3n z?2+BxKorbS8cgm8T^>H3MwlNDPkB04RzL4s7!WGA`M92)pqe7Dudax1NBoK5b<_FW zsfeCN=F8S|KcjxT2!umYZwcv)!-sLV8(Tk_gzsr1nrm}T@h1EQ<4KC)=Oc~*AJZnX z=RvKt%f^B`1bguTlNNfg{jD4tr+4uWq@&mO9|gX`(6p;tBWgi&wQ1M6^0pz5p{{t3 zBKSmMyzTgKiHY5XRW6o-$+_VROTI3S662ReP7nkuPs$#BD~?!!MJHB6I^8F@#bS$9 z|E-G5DJoE$=KSrgpMD;1f$!T4l|6BAxa}Crd$iPVMn4qCVCMc}K#1?eL-yK7)zFmFv%~;QCpTsa78qXWco2)B1 zi;>CDoZz_(zJzh5dxUyqYyJ}Z(?kqubE9KG}m6gp>Evgke z4OpS^i1+;AS@VSS==ym7y3RZGV^zD7Z}@9tl!kyql_>? zWT_}TiJ|Dfk2k3@IchXxbY|plx{AM^tzrSXv zO3Tb;`_mOOcU)p3xI4PbeF8!{C1q*l~XE;(lp=F?6wXdYh2o zt6DQFQ@RT(>J92KC%l+j97;ZI?rvNT+>Sk{oX=gJok}>>+`sP|U6S3aT|On~jgRe~ z?{?Wg-D18F+Imhq>`(0$!2AXW3y%X|_1YA^2R9K4bz?64+9IY zf_w{aG>B$R`JzF1S=iV=4NVa}6qNzp4aX9n3E7G$Gy)aSXnNF)Fo+-_;z1d-^|>UZ ziNp}VL3JSho|Turf&9*7C@(RIbyuIDJXYVSrzP|vQWMXKYlT_|b2a6Ithhv;jC1;% zs5-WCkEK4F${uY=HgPN(4$9aV?3h}b>o9bpRwH+@5Hm^nfnmfM>>TMjmT_JEk*>_x zz1W*rv@9$IY(=LW&vmhLhFbxXrYeZZGE9kX@tXgbY@Nm&-8o({j=+~|8DP>AeM_Br-7Jw+D;Y0-s3*?$i&Y$4~o*!qR~ZrGoMQRlkwI=yFxYaBXycA&uaDc&bqO3Vo!AJ0&IGEe7zn}NchM(W68FlRIxv4bhfjo z=~FwUtf3rlNo6^_dS|cMQDfIy=9Rx(Ngi9p*7`o z%06nS;L~*yE*3tH7Z?(ta%Nr~;q~EG_L#JMRT;MgydCq;bU@BANI^1!~sRPS1Qc1!%Hp8f1)8+?V+CZ%^`V za!b-91eaZ@kA`k5KN`!XZl>^guH3s%!i^#aGFLFq0BswUW;YgW_f%(r=+zC?Gun== zOV-_+lAy)J8jz|-X<8GW_3@Fz3ginHxn>DH19MDxii{dA;R ztWMP(c;UJKsuMo0b@8bsce(g+uk%|VW28RGvd25;hmGKe{)7lPSrgeW=}G*Bo+l4Y z`RsWY10}>R@y6^*CG&p z=Y;!{i~9}qJCXvy3Zb-n@Xh}GZaz>PIMA}-Y4Lz}b*y7$X;lhl-n@Q9(*594B>}$% zL4*1#0mZUbAI+=dAb7+ObRe}D*yhzyz-|DvdG!PDX;RFoy){`A>S+1(H{7Y*Tqums zuSiE;{m2wUpYg8LTCG=95Bg^EziCluTBtutLqowpK?RyX!Tx6%nV0yF zE9xcu!Sk>9RZIXB{L4SAm*D&Z=FidySwCL=Ny9O{&=Lxizh30enJB5*t4T}of~+i<^bD-@4Vj!RtpAV$#qZ4f zLRuKw>ybKJm|NQMIt!5hM+x2+`j2F0a?<}OVs9out|l!6tEX?}U@t&U{zpaszW#NehR!B`)nsY+pUrw{ zAoCwN%&bf-%>S1C!pi?gDzBW0v!S`Vh>69E&R*&eWMyaL)0P>u*{Al~vi!&{o*W;-yl1!M{4}Kbe2e{7*)H=0Dp0n=byP=>JH4(X=2EKl8tP zO%Q2~v`qV@BZ*8zWR+gxmtpqD1(WddL;J7zg+@ex`en0&1_kv2N(Xw^?4qfBq1N1Ml5{)a zhX0u*|14a8EocAxu=!`<`a4?s(-iz;Oa6|<{Zpg=nD>9o``^Yx{~)e^K=7Z-?4JwB z|FGEn1A_kn!T&p&`7Z$X!2|J%H`2`Ry*3Aoj`Jw4o>Y;74_U+zyL3AvnSbr3E87exAyDYDiX zh~9X8x_ZjJvb3ahb9dL!ak|ocFNWxE5%*U=-vC5E1cF!f06%$tn+}1n)`C2Ie1(8O zod4$Xc20ysqf1CgsNT%lp#IGZ?!7AW;v#-?%j$cJVe3L-FD@>YySuwB_x)@= z@7%91fX#W2yS5MK-TNn@_{Mw_=|WyAtw>8AKfa@HMp>)K6h*|ZOoWXx48P}6*Qc2jAyR^BrN_g5N5*wvRWebQ^UrCLB)v* zr+RRDvdY^6DTyjAxCDk?5hy~s-T=5g@^Hsyw`WVI*uWY7qL!wX1?_ET$ca&}?-9Lf z_Bm@@r1wLi#cDhyilal;>nCacFR~jrZtaN`fPQm~3;}yweg`Yl&;I3FUHS;)5_e@i3sDySmRMAW0O(!g^TX)(B(mHg=YS6cIA|Uv}_Ay-8b(6~n@W{pEEih3wGFuE%v_g6}I3;0`#Glp`$`Mh`SBvlG zf$_HS(JDynP;LeKee1rE)ui9;)MVOj%e4ku>M-s-P#lXOG|+ zwUhOE=U`{C#XUeS4EV-edHoQ5>WF7!P+{}5qvd&fWqUo$wK^m7hL4G9#Hm!LWvSU6 z!gei;?+__GPmL5kBert-Pyf%(+kmJ{-8r(EOQM#USvP2+qD zw-QLEPXRTFokwxg!I!egNuHph{t`|DksLOUz0o%fL(7pF!Eo0OiH}S+cePiPZD5vb z@yq#X<&)SFCa2kides4uXUMd4k0z3l<^c`A<0lHMDb4F>MY@HBTBPCX#0VIwi$zGZ zBv+hQU%%meuaoAv%WHh!#yHgxkO4;1=*mfOcrnMEXg<;XAe&ji16zimD~hH4&^)@| z-ez_mXIgpG!;@DJ_bgeu9n|Kk!KJgVu+)2J} z^!nvm+vv`<5LZFaX|>Wc-|TT;(*v16>ilhO!MYJd*o!*%kWyWFB23r?vr#lpX zJBW=M(BkUSa!=!Vs@e#=6967RovlKACj^KK&p&w8hdYzFIFC%~r0tE2#s#8m7u--Y zE3!(AQlci!7Y6LB?Mq21&0Kz~qh{6c1Rt_VeW;e2RnAXUagc53Zvqjb^clS^p!O@X zirH1WpBkb`@-C_`Ba_=#G>Vg$?_h;hXxW&g)H4VG4RFM|NrBfBV}cV7rOsI~6-Rid zc&E-WQoJAr0_anqwy#cra+?j7h;GjP<31Y&8A4{65lMK62evWTYNbV{`8cYh?t_QvLcq){xwm0RL;pL9P7sC`nPgK7`=L*v z8f55`n8OrXO9FAtm6PXmhI_pV;{7K?`&RkUC192^Iuk697j?NkV+?*fJ&->{jN8ptK3-dwMTJCp$sl`-R8EIs%pEt_6tbtWgTr<+8C=)wvxNWA|8xr-zM} za%vmiB^m&Wh6~|sxBZb)$DXpVeq4Y>TyfB;(&6BskONa zW^cG^J&7x3E{=J|Np5T>xf66Y*ESCtJeZAgX`p6nJ>@spOj`Wc#WawT_0T8FdkUB>X} zhMHDf+|Lsl8QQ^9sc8~I(=A)AId+1vz{2Uo=mtB_ z5feb61dT|6`n9rbV7~DZR~TN(cvkvgR1tONQc#6yyW0R{kfxf(xTJX zo+v=CaBy!Hj&I2W+F8qJGsQ)8e`k+PN{IYz%Sn|(*nYIitsSlh+R9#H zeR#Uo>C?+$#F@wV#^FYw|Nx`3YQF9<0Z4i!OrB-K#% zxH0Nge{bxyzw6ZcaPPGg>2tAW&yTc9a*ZC^IO3|CtVr%^OSRw=R^u+`6`ig%tkJ88#7~>sk8}vLLPWo+ z8-349HcZF>e`%GMtxe*exT#f|*p&k)#2=w`Iy|jVmX0cB@TG2I9yW1T%sjO$I<9MmR%d&Qio?ZNU8Kdch%Ay#Brb=>DhHU;p%$rcunCH~A--?U|CnxnqlQ{u8G_=5joL>%>_os~(0j&Ie?Mt* z{m8h(@6j3&XeVDL4`YWk1ONER!1@s6Q7W-wWhP*E+uWAwy=WgUn0`@4v3l~zErFWC zUXQL-5*1_9ud-V_x^^MmYVNTSn;@n~Fv&nj0L7u`V2^)i@G&_pBk3>NbHR7Pigxushy$Mh|o=u zr?k#R9*r&+QuaU}8@$TK8YnDzkTrcD+_tC5o2Ba}&7{H$IY&>b0X?`TpD%OQWk2nO zi+eJTc9BW`G-=QJ8J&r9_l9;Z{`6CCMgsmz(%Ll_FT2Z*N%*R3qYq^rln^v9kXDw z46b>D+XgcF)PP3kU1l(vU=~*fyYTq>odt8EP4<|{y~l(rM@1I znXe0y3JUJlMv)#X~`=Jz1As2dv>v&{dY4vHQ36FCT zDb!hYd@!&+;5Uo|b1$W&?tUkr8FBrrZ~~nkNW!+fHYK)vyVs0Lg}Qk?>wpuhL|`@& z*YXwAecOf?F{x71Bf8*~EG${f{VKV<*CtST)B1-tZ`S1iTXEIU5PYw#cm@Cx7%pIW zeJyH;aeU%Of1QrQK)(8G5dMf_B64>`RQuW zYH;1OrakKS86}wh@(fe@s2u8VkT?C~8u^zAud{Ca?Df#l*yYkk_SUldY2btQ)5p~QD-Zq$42c|oERhVeJ1%F0&b3+ z1MYVl6ws`<$6uxFRC7W?lDQq_;(=c`!_Jqtlcm_M7~IkfV2WtICYA-uADQD)hFg=A zd-Tn8sY|DAXQSrV(rh&_N@1|>_m;L0ssOVY)5kD9zx}}P@52{d<`i64bl>YER$6RQG)CSpIh<2~lwAvUqd$|^RNRbr&%~F2Xfs+*SMkhG zu$J<^#wB+(4#@0Z$MK9QA-WGqiLx8jX8S5APaZ?w8EzUVW4BhG2v2qzsBg)wu?QX1 zd^UX`0c%esOR8M<2A}*uS3$q9p6D&dPM85NN@*r=CNS@ z{HYtvH=tw>)bHxko@Niuv;n_6#wDQ3e9xwR-69ajkv*(mY+<%UFVuiGZAFQe>0qHo zz1uWZZ5N@xt0e@W5Fvc)IVD^yb-H;oPh(Mk%$W2mumB)RaxxAS&B1v>=JG|MXQ@XPDT>-L*g6#o` zTsbY5LcS`JIHo?1)T*`l(MI4ud(s}z5D+_xQDl2xVeyKgW(|BUSU4mHUp+xS^bKxS zv<{WYkeDR8K=_k+rLg2tW@n*$>jHwT{T*CO0DL(9(01ExHooTCS@9wiM6lcwF{A=?W3Us5%n)KFE{lOq3tLbh7mCW zx2eGvCviG%i42knA(ni>u7<5}$MF>`DxM}Q_9XIJ%i1(#A<52T)7U#3jjy-8mU=3v zt&KVQylYGOPwNehY3e1P?B0LhJ)QdMlAx~AK+gi1=e3~IULP(bq7TT6i6_okTA%LPPoCPJcD&sW-?CNCd?%Hty3kbQ`@W@TCGbGS zxQ%u4mBbAp*t=d-7Gil_E z+Tlo5D&yyyFXIL5BvZ8uid>ErKM@$RQVh={XEF{OAAS-B;&jle^Jak+!oI<|5Q(Mm z-cks7NyS$yN)jn303Q$dViTm$$|Gl4rn26KlySlnNhVtJ1;0XaoHnI(3G%|rO$vRe zAf&-HP($J09<$7Lp@Ay+L zrpl|CN@l&B%8Q{g9DRJ0N9Dzltg?IEd_aHv${@9&co;}C zYU0pOxRY3%z>%>#ewWgG9n2LGHq;VubxS-b&Jc`sq%7-7-XaMZpwl8@>km00`%+h0 zS|70OqhTSzNgjs}@9pYfbM+@1TbpC@G&vZa-N!NZV!d9%+uP(a(g?;9uW z$^q7)%1)8zF5L`MC{&RqwIlUItu_^HUfA)_Hl|f9J&J z_7VR&cWzYRP!{*w#u3TycTv{4vK|ZLGMlkE?`kC6qbtz#@oVB0F&J9c!xYfy)>Y0% z7~&`EI{V?_7uKVE6qPCmj%5i}Mdhwn$l&fTR7XByrz1*|Wsdu9FZIyYl|m=qFRS0Q zd^)@$>EVQ;DAQ6umGexhD0U(Q4ls32)xQv8o(C6;71Ry_o+qWX2GqB`05pc86(RtH zn`&C%TC+x_YtHYBSF0l1<8XZiaK5uJ)Ao7TiO=iBv4bSSUAZmD!S%CwPbb|!KOyeP z6gPKHfT=qRsMEUmc(?jsblv)-!k7K)j#%Z3&F@FMZLBZeFI$w5gWtBvH(z0Zp10d4 z{Dak%kNHC9p^ZX!gRR#e;L(8zgyn_{PYK!4_bdV!Cy02GXU=h{#WWvz!y+UL_Qqz# zhYSAk&8#0=D;Cdf{GzjdW*l_r znI`Nr)WpRm2k+~Z^Mx&BMOi=gW+}}}ctU@@Uyumkr!Fu8~|DfN&IPxY- zv4+~}oHS+j`m%toIZOb8YGG*dx#48oD*wlVXG}j0k%F27tXQH3*^8Aay)e68BvJ^F z&I}D!J>)Se4Nm_`j16}m9d)34Ms{`n!IL`+%r3Fuw<#HtpmA<3+Fqjp?XP;VHG8n@ zQVnHe53eCTFip=;-gxwb?LcC2fXx5W(r7=`C;cc2M){_kye;ufVGCot(#m4mxcHAN zc^(t&LJvo(;q8R|bZn;Z507cJomV9cT|Nit4(DRM1*`bO`#0q4nH(j^{BscnAsR_q z2WZWOL)!a;Z{2>HCRLz0IXKmp+UoZ#V-=sa#h+y-7Bn`d*`R%gx7u&W?%)+F85Rlx z%wZ0qPtJ6^-sE&txYU5e^(18lBf*Q2nz6MIwBf}oKm;qLrfWWEkEFN8=W5w<6r>oa z{l#U(%8qx}!ItMLugDBIqWBmHZ6N{#5!;FrG>j#fE!iJ$G}W%=3Gt!fH8E|oF_@kW zqG~6SrCEC4dV=(3$OQ@sdWLg=?XdS9@e37+ad0 z(RyVQl+oO0!>H!~4u}X>WZAx+ZI%$LeGQ0}Hnd~QHF9j_;0g(A>AC*KqGg(#m>Kl5 z%1S~0LA~7f@clInSe*@EW1gq1IFRVq8KhE%xOx^V832p$RfWyO8!QzFN~O zgTo0jI6*C7pzwgSN)|26*sqs+boC%ZqbvG=y$c{xh}w2H%|v_NnH~ZPMfmm zno^*qsn@(-&>o`>hlhXNZR(cSCV7)4etnIRD7q9R(`&Jud=z47AlJAoX`l@ZU1HMO z+^i{*U`DwfUTaNwsF54E;G!d2cA4`Hl`^{9R2xxT37KZrfKWrp3-X3go#bhaS*Q|Z@ zxqykKgdh)$6K@ruM)&M&O-|@Bq2G_QQm-dgfs~`pkX}*8m~L3Gxx(eZyZ_Bn0j&TJ|H8eb#PO+~Uep8X=>bHmcD z;I5Pv81EF3lYOn{CTqG4?M{ts78m=V1%9tnEc_PzC@HMSae52Hm6sx+_DE@Bywxk( zQOzb9F`ZVGair&C^5PZWQe6?T=Hqc>@p>QEdMxK4O)y=XuNnyE$Pc9U+ru{yeJ=VU zB&hNhPm;Gq+}W=nCW0}&!hzLvyKx@$TvD?d*HXj<^meNaG%tQgJd-m+GoN=SJ1GgY zgRP&u=FbRORUo6clF+F>ZHoYNOKIXt2%fovhbsZXAxF0;EDGq6nu|66ZBl-_0xX=f z(sh;?CT;T|YI0X!vtnl>MozbBpb=JVs33oi=$``XMVbrR4G*wJYmwiJJ1^KE(cWU^ zeAtzzU~mC%b|uf&Uun%$hfSAQr#W8{iQ%Z!>pS46YcPk~gGEZb*o1Is3O*)pmk)bpBbXMpo0V@XPvZ|0&C-SJH zmQD4=^@mB*QoOHrx_#Y6?N~BBHD1UpZ$8C!a02R|5aP}e{)j7?Z0 ztWCFul`@Caiiq$b8>y3@%?$Hc>a(-A*eT&G{BBXDY*(0XPBIt^R*|EUFXJ_HJl&lO zL4>QO=0=B()7MT6+zxkdNT?LMTSx-IcW7A^H1*eyn!wegr^D7K$O)SavsI;jh728i zD(JU2rrN|_UT@l_@TOz>&8g)A8^As=_-^>g_~{n7^4OAoe=g&{2ww%sbLCHx&W{rw zaJC-Ap5FI9c7BuE`*;uk6c^r?W$Yos7K_<$d>YuQU85vpf@6_1kzyU;qOdA9;FM%@ z^g3oHf*`XUyt4|baZMwhKhsLRg%2^(yS4q)u0pMFP|cGc*f3~9CPTIzZ)dfgZ_<6@(pJLC%W~H_JYJ9G;|@Pd ziaU+d81w9s5d6hE@%enaLO4Z@MP=Nq2nnz030DS-20`6dglNKAp@a40rRV#OT_ybl znG0Zdokcr!hB$x5*$tREUefavPW(dmS6C;9cD5ldgpJ02Ao{llI>BxkLD?wRSWOjy zkKKd#^UU=8L|l7K695NmExxSFTknT$(W8FY!eYQsf&w7tT_*!o!Q;#BIFRLVTA`;I zdGi=85WG~VbrzCYSlD2k@#M(YzB4Dw-|NYtyUU`oI9{L*hMNu>*NMpb=^Kf(^2GYO zNANlW#;qM5W*X#{)KL|QnP}0p+U9>I&(pImshqF*GJ}_Wzo-YPq?1&+#rw>AYP~B+ zr^34(?2<(|Jxm&~+|-O)Ebr!Fl7f_B{F19Ik_FYoGhj7Xd8Q-LhhHn zZiSu=u8+6FW#|@V-v2&b$6@WoZ@(Jg{f?5AU`lnG2bgt%M`{GyqfZM$)%PAkPa8VQ z|DMME>vLnao9&E~0_I)0@2QOoSkOCW(L3oHS8r1tH-?t0*!vT^zG`=-eHRIG+{z0_ z468Au7c*57m?6t97MZopJn__xnEd>xkbI;xKoa}D2np4xqsz;z(@c8)h&cP^a3Lnkp|3 zU9ql?@=F(OH?@-anl4n{Yt)b>Vo? zaZ$I8U!*9@{(R+T9n)U#2eg!(2(BFHH#wI2k%}$I!)C6+UREJ{W|h}SZ{orR%ekh zKr%R7E?+AvZlqX_&V&zvsXpT8<{ShtGr1r6to7aj_|-+mN5Toc_nt^0XCpePG^y^J zs4zWUD&o7y`@@+X4Zm1Wvm~_)?QFfw($t~rxkl1l$AKzMk`$vcj?Of8K$hM3n~?1bE}Y8WBgBhRYl@$)PVF#$TbLi4|gzA~moNvkPYFhOR0ZU1Hwi9Y%U@wHf6z zDcd~5ystKb=al*gv8@8YkLGGcicyeDBG-#vIgn^#r8!>yx@(Hnij^JR3%pn!RAnBd z%U0Dj%h}c?_?-80dW5FfG9l{GRoFw68*1U2dmvIH6&az_I^V%!0y>)J;5cRu1e}yo zGjYu-zHN$U$a+Vl@RbHPyd~@Lh+8twA-1@ijDIknljnl7n#VR%-688ndvR)p$8Cx? zS7{M_p}9}?*N5Spu@s?275c%MDTyr%ODy~zF(XV(!m=VOX8Yvv;XORx>pNYQ)n1PQ zy|s)7kKks;d$8Lp^!;N`?b^^Y>pF*Sib8_|Z0nx`&jKo?NBzwXHxLH54QG#@0neq_ zz)lLCdEwpg(>7~ym$cI@A?L=$M=`In(=E@3#r0G*`C)fh`iNKMDxm|? zc`L#3{RenLG%ke=C=M-)=2bWL%gGag4-iSQ0N%38NBIzn^@J}zh&Y1acE+7 z8?108Vr+lLaE5K4#UCpz#o3ZXq)?U&luQstsxbg5U^-!&)9xnre>7@x4V;#H8pZs0oVkE9CRp7_H=>5@$`bt{<%4{a6~C=*Y$# z0+Z3Lk9#qm)s2obi(k)eBrI}YOJN(XLm%eHt1N`?S$p)ri1Y*$_r0sJaF2%cw-@Ls zj?yqR=B^3XfO>1ZPUM}8RUp4$G<)$8o#Ip21ta<^CL2&M*^O&V-roHn5tBw|{TNa1 zzIqi^yagI=hK+IgI#{EvW|JIWWw#!s0P*N?Hs#xK)tDw~4gVZRhiM+*_D(z5Ypms- zL*YxJg`ea$d2yblKdlCEi&MAX0SC~F)tsFsvzL3ju0F52J`<7l9O_%kt-JaN!=-9bt&OfkdkBq!^moKH zD8ICH;wHoWG^i@Z?k8!WVYN38l~!N&i74ur{G8ppWiN!q+IJ-iAd@R%jYJ|>C31t~ zD4}|E6(Um1Q693D*29halEP?>HtdkZW-ZEPx8&lYUCVX+;RPjcgRxr7H{CuhgNMn) z%#T`fAFHv{OUAXHN10w8>T$6^XUHC7ULwT#Qul++!TRXEY2RKx|H72!EWvFsat+$a zRAeequjno2F1G=J(~@d=tuWFxJ8~fS7j3WRNuza(Ayv}g;oC*S*)G_@xq9Hd<**-L z|Mu&_awlHSgqZ9(HvVb{nTBjA3*d`&KE_aoH{DxZpdpx=3Gi4R(8K4P6%~l9D>4U` zO{1=9>z~z^lsYg&s%Y;TSMgl&H4yYiR&u0Qf&{@rTMH2$N9}FGu7uMK+F^~I#fw}O zuI4fEtjVY2jqa+Y^QEpSY%?!ND~4|^fAp@gs6fLJD3yvv2AnAcAN=NP-p?j83{nXaiKdd-e#H72F4C0NSP>wP<$ZyBIsDji@0+N z(2x}CHEYNjxPGM*^3y;nz@bS&@>)A`N|D^ql{_#Qc4MwxXC0@hpK{beMTDTVr+!13 z=N%l7Q(sp00ldtwTsrWx$cUO(W@RirrGOn5BkxsjKnz92gZz6E{s$wh)AtP7U|}SN zoGvoI+0$Qx#womc*fe0S($%Au`>RI&Ay4gC&QpDwY5sNm>Ak*AE1g*DR76r0vHBrO zbZpKqfjBw#X@;U9xEf3&7ln?*-*eyH(-o#EJ*tyY6=toO`=D-DVcmYG4IP%MC|6CM z_;sRK=Xn2Pa7gNTfN%Xf)M1?BS8fZVPnATPw(pFSve2to%Q-i!iz(=eYt99CGVe>i zT+Y3CVg{|Gip(d)n(lNj$HgD~KoDC8d;F6Zml!7R7v38FCc`#!&Jc+BrrX@2wnZz0 zM}7shO9Eo@FX5V)NP*6H>9Yvxi?Miz#kai{8i_=qo+BUU3tGg=4-0D3Eqb*^mmwom zg;Kcf0XsUmqv~5fJnT@BGn82@G!VD>t3oDc_PZ+S#j=h`tG0MUA}Maas?Sd5lU&rF z6GR31cb6*+(bHg3c9Gi%r*XNY;4mhZ+c93nqoPDqC zHeA0??J!m6&RTn?KAVHnAJ^bCP#e-fowDs}N4yKKgR5BRzWuh`RIVxwXAsZ!Czy-$c1XJimO zy*IwgPEoXm`HrNusujn+-^fyONUbW#%X*h?L}KyT;w%tU5?W|P=|dq2v50^S{HUnT z6BXmj-bi$P+HhAb+;4VQzlO^uNz;1B3pzZF?CcPN)HR)=I8v_%43ZsX!puE+0n^!pWs^poDdDa za-hYvMQXF;_FgT<%##(#`R(WplJob;wA>) z%ieaxa69VU)+w3<`yspaRq4iNn@~PJIuvTGJ+W-Ikgc#`M>m}!E3Ih_qdC}Os zOIz*=sNFpw_?}JolU^IDlClCJ09p0Zu_liXUy=+Lgwg0WZBA*$9Ngez=x#ybiy3)9{l%xZ9lRU$YgSq-1*8qO~LD5GmOf!JoudB1judzy@%g-WWbQ zNE5Tpi!3G*fvA#(xD0)fk57R{s_x&RK%atvcIjzX%=@y=(;pTBuu&kxU)`oy&N`~J zSWTyErEa2Zo&&-SHM$U3%Xg9J%#6@wpguQI56yH7@~Ske1C~GY{o!=$iD|LxFulA~ z7*A2L`0z1CwAiWovE(v)=lhm6wRy+&BCp4DE^7-NuUO{RSbV)S0`ZQM%>htm#i6Ol z)I0Lw$aUwu*ezl;CxVSio;|bMmMO87qbKGdbcX&`q-lMmsRiTyBW&tQoA zq`C;3I=`2sA*cG`JVnVk8*5;muD3-ABkii$Fq%>bhC8Xs_fu~8#oOCVt<=~ggW+2O zNLAdXHBQ|KWIZ5`ujE`N82!{1Ft@!B8$8n|Fk0UL>8*M5z_Ry z0oSE7)Q?uh;<1M=K=fpIm9}g^sH+r8AkNS`nEpT^G&$%tD<= zKiw-?8*u^S~arlj-td*?k~1<7NdvYhf2<%TGKFDb}I85 zudrUz{k)n8Z7cS9r#BPj`PX=|_Au4-f?_o^k$Z{X71)&R!XxYZIF%S9*I=YYW>^Qp z3d$m7m~+8Z;es1FsA8ly+m)fR@F<@&**_{)B#2V$7}Dq3@>RVn8#NQ;)?BWxc5&KO zELpHl@G-o5G>wnJZ2?-%=`NWz9xt&Vqev0ysqtNV6GR^4Oc&lnMJmoooXC%!52Wc7 z2RTwxD0d`$KYXe?Q4bzB*2aI7_vmfD@bm{aePVdgK>g}dBt=K8`oQK4jz;Ke zQAY{oR(32!X?{!5%qCi4EW>dYN=7Lc@B;n*%^tC{!CZe45I%C(V*>%D%>LK z+=oYC{SvSx&)v302Dx*+Vp*T|2O)42{VgIbCtRSPu6`S6@zhykR*|eYNXP0R z&^Qt>zwj7F(CRV-Iq=La_C;JOA2zQXf}nmGikgrkxs-Tu_u+uS=v(Pz(t+dhL=KfX zCS>DQO+f79&{VL5#*E4=$<^PD5;0HNGnu2kq=hvV#4 zrl}P}GW+^+Mo|H@Aja@qr>`j(bJgX+p*2+>RP&;yr|u{|%r$n?y1N}#I~7m!_hHCf zy1L4*On>VMj;&ec&&iBg{4_VeVq6MIvNo;R9IB%sjMb^9)}BVOR*Mc9t{d(gbi&$v zQ2r~?nI6Ai{g)utf}#OBnfch%EANAS!9g=`uQ^bcpFuHCkUt3~n^oT9aW$ynm98Ko zb=3ET-_i=QqnO{uq7^7x2r;QD$!b3}>-=#Qtz1geAqQ&wjRol$+iG?xUc?L!O+4Ra zGQc;PZIX^xgAqoggpL$BjleZ#OGgD3@J!!AT)id5NNmQ>&SRfY*IC3&e!6yM@Bo6 ziJM^Fzj$ff>mkyuv;FGTmr4~oaNKY|ql;hFA`2Ag{9CJD@jaP$H%L`fkM@h~{p`K~ zo$w&8a*6&ePCOY8X>_R>9gxkf8Em)W@30e!#T06{VnNZw`4*2CnWQYH8rWA2b;&W6=Wvg0ZFMC= ze~;fj8m>fo8`Z(P!auL!tL8e-M?5GnuYRPfT8*5@*ndJ_qWnH|!9S+ey3|l<^*GM& zU}@`wDKN*?CcY{7QUKIG+4e`%7;N3wL2nE?OFFS>ZDTNwi+osdlnhmYUBv&~rlUCs zWu!j$rjvj;0@A7` zrO3ZmRz#D*nS?PdfZ|`Gzto%L+chO-9!t5gt-u=Gos28g9L#FS?kpf1bvb8Bmy-%c+Eua z{1_5MOqx|s-Z-LSNAY1g7|E{^j?@9Wp>XTsV~Ujo5}j;Klb*YM#@9Pp(Mm#O$f6cQbszU9dTGG(%dgECrhc|A;ze3gf(jLH5W>(#L<=d5S?Dqc-v zdHa^Sv~KmIzwu}rB?2l@!_w*g+b*6i%ffYA1@t4 z>%wC({0#@oVR3gcjKR8jp%*Yl)6YxnxQ*SobEcP^I`dI;^V1xCK>8X%2$6}h&djai z!?jpxNne5`^^L3I%(uPI&_jBPkBm25Kq_w?a2>=+eFr?5RsoxqIKRJ_!W+p)S?AW8 zNpcvGCd4X}59~798|F!~CX9b^(U*C>PdLJ|HE2k_a|)*-@!Zw|g998%p-TYt(AX{l z(@|>EWCn;DB6+vVcEHS4_nF~KNoG34`h6*(*4uKIZ1dLo-RqhIoj>wlsp^eNxn=DZ zB-<#gu|@+faZvxpd3SR7L8*P43Ap?fPF``=Y^5Y1V^Oy&N*DTHPD?tvb@5_6 zPk-8vjpuog3vtx(Jd>WhkH5#wK@LMv+bGx*raOP(T1dXXZe!B$xo7s~)5oZ7?~~N8 z+UV!teCjL(X_5s>*{f^io$TwX;VSmExVD-MeU>llA`6`K))UeTSI^Puvz~X|jbY{a zeN3#pj#dfJUCt1?aKtyNA>DM?s6FL6HQOC)#%ZPuo~etKwARlpHSS&O=+Ch&{X&bq za!}>SPvn`D`_dPtK@ytrr@qogvbH1-yJ1vnWp(urKX&O@q(i@^NyKELea3t7T9t!% z!rAK^iG;5xKc_o(`ic8qBVLLr_|gCek7|R@F=V0$`y42K9Yt)&o%8ZW-XMX+36635 z+-papH`%S*3c2$tl`-gV#>9*RK@*Fm@bok6$FJeJJP6VCt-RrZGaKp)Z+pRLkO)kQ zNO@#EhE*M|PO51DLEp`@F0qol%n>=}pNUcih3COok0aJ3$)e_xp$pXC>jr&u&2i)F?&G=YBpH&**$@LxRi}tEw#Zrz2p6Prt^*huV+n zqA6u9KsjDQs`OekNTTyfmuG9bj?%bBP4A)bf12EBE`Nbho6R`}Cuk z6w3CCU7g+C<=N`UJ_PJi-YR+mMfiT=9c;51vV$sJFwvexeNoC6N zj#t*mlK9;1hc99H-cB8t!nyUP<2`$P73mPwM_$@YE;qCg#?DMN5dM0$P-BOhn&&?@ar-{KH< z&|ItgzKe*4ajSBz!ZnY>*h(ea4u9tSF01aXGHSy*+V5Qw?$0nioaa)AUmBJf_XwRA z?)SF566o@myeJaMjHI~24jxm{U)g?6D->(+9&4D!TvK&w_^Y*m&DZ*v7a5`FYB*N8{Dx0PBfA-4awZ|!U_&sd#CAxq* zB>v-*6J{_dd{HoSD?z&D8lr!sksE<>pMOwdB>L$yI^c-oZ>SjZ4_6zGDjpav6OvOAck(^Ny(JbIN?~~)v8LMW zDB{>p><*MToY9#sts6AvVuK6Zb@a8x9md5Q4${ix-Y{-X$w$0Nw;Au_UV!tX-X6{J zLL^Jn;H@}D_1b535icNy$4z6v&IcwLevv)~mf#=i8+P)%$owE*#UH>KevS#(;I}(L z)b$6gYWvwHXPLdn)khI&Rl?HWz?%>FhU$`Qb#duC_S*&Fsc$*WF?P)tznu^(7qN0u zy?;s%w-zg2+<}TnAFmW@T=NaO#yh@@_?{)X`X0U94{MVJCMYld$DY9dhmZutvHpvY zkjnWXO$t7rMIUq=WIe>UH$4Pqy;$Yvk?bt9efRr{A@NUAj}ZIamEX_)tvkDKO3sbX zCb`BQA;VqMvUFeA*iUF)CwBv$HtRE|Z@Pf z0Wi%$KP9E^z*Po2YHu{QVz7|HWxLlz9dIQ;_gi)(j~Jib*1b+C=1fh)zqU`5yTX{q zkX~*nCa7a8Z}M zD+l^OA1p~Mf<2z-;*qXo{iZfGsD14B-4djVNqw%SjwJ*i*N%}4ytE*%JQ4>owtJX6 zJ%cIZ#gkIXyfQRipJ`{GEVmUWD8ewQT=ZGp-$+o;jlWWN-ZO|$z&4WV3aX+ZY_3)~ z5`&W7ZbZZdKTp7D|LJOD6IAr`%Ueo9ezIcr9R%Daa3?t2f<8RYYU^}f{z3=5mL&E3 zZJq&*=xDolPPs){OSRH=Hh~k5=rOHv0^{J%tt}^eBNbXrJdyWJ7Ewd0rp^D*kNWlJ z^lix`snXLWsQi`_ZJK&MXDqFI|0idL_AhF{ULM<}#G`8`^-<2e;`71X-moxe1szWh z&(N9lqL)`YIzT7fTnBoTd9(?smEh6F(>*|D1jRth{Uw@}p9MAzQPP3o<2hHqg zB>hSIv{QatJF81KG)7Rs(gv5(W`GCU{Vvh(2_Wa({GX^=0-00x`1+pHX5#_vy-me^XI-02 zsA`=FCEna}sDjQ`WdC+U!zV@bV4`$%n9>_POvpWpMM>$n1(Vb!P))rBT=0<9MibeS z&_xqv)Y5Cp4OV^GelAg$&iTb5=~VWko+Ic7T7L6-0MzA#jod$#X&ic50+_6p3y!i8 z*kMhJ5UWjQSjRw;h}>|4U)XClQ>ucs2?(^lVw`XC^^37hcMa`GK3R1P#OcoLL)m)M zx2Hp_%*tsj0*PU5RkyZ6UBSEDVCcm+<;Zsr1ZmvKx6OVC2DP90!t)BiCz==IftPLI zvzd3{ppf9dp~D^n9_l~-Wt{lGO^!c>*gs5h)Fm5jU2tlr*~a$B4)p3y?VTGjbqc&& zM5KMV(+4V9FqQAmO+IIU4RPW>x{v5!v`DSY%*^2{R&VflE^x_FXIGMBv+a$WmU@vO zT&#K?#ju_?%kD|td1PlHk5KX9>+|H91meK6)resI3I80iI8^DbJb{m`D`anPKBh|h zf3o$LsDrSU!uTmn?q-5LLPkoh_h&{NCVvEilDG@gx0Ckn5~$*pS9%RMY2d2Wz>J_w znj3PIp{3`1UjPQS5Vy-|NoLl=S@ciAdn-71YrE$#Kc}dD_|uJ#ZSwb5&A7FZZwbv&Y>~#KfOdwMS6MSnJvD~$@m1m*|$`gLZ++5LStsU9NU32 ze*CNGN2(^VBeHr!E1kZROGE>k4eP&b6oc)8SC2tYxC5`p_rA) zDjSOglDmzDT5rd(P~E$)a&_LFr$kgYeTGW{WWT0(P|m3)CC;Jf0MJr<16bBPxzG5a^LrLOCruJLH8^t8%WeS-_F+K!Z$>; zCHU-n0+i_-H95Qm{arAQ`qFNd62C4qqH5eb{_?WJiWw;+#TWIczEQ9c9FlX_R^GV8 zwS-F)WGUw!kr@Y7`_-D~>bOP3@y<@Hl+`PRN< zG@--aNG{iOAC3~0W{zfCPgeT>e!Xw&dovoe^iFJ%vm- z|I+CYSLY5A7XMu&TGY z0Ne}7H}-|Z{1$;($lFMNy6-~;j5@x+=siX@aDJY>-3j|Cxp#JHa|3)af9X1gm?gk* z!ad``_CH&9_(b6|^ufp}%>Pj~G>HQTo&_(MA7RH?k57UEV@eom^%#y^${S>dk_AJo zM^)&6s|LY9_hSPY2-}@vlgD@t$@zIUm#18iT(#OvWfcjkD;afT^7ChCt>l4CtFdr} z%eiwZ(uzzlNQowTyp)pno8kyo*@}a|h%~j&^0Eoftt={LTPGqJ7L|@^L1@1OpI09z zC&@t#q<$cZGHT$RGIjiQZr*T$(34>!Q0A7L^kBcg8w;auH1om(z6>GHDWaTF)af%m`p zaA>pr7-|P85+5XiW4G`MckaaY@Ep4De@iLM6BU9SJ3}c(q~M?_mgvlL6Y7(YD|IvPQfr)Sp=a>P62<*R^!&iv0QcDQr#Gb4 z#H{^80RqEOSMKi4f!T{n*>C77Y#FGunwo3+?3 z>_cwLb90=n@5@}$qHk$g_X#fisASA?2$grWg~(EEWoiym25T#L1d?{+Hplv8LX~w% zGi2;%xpxc)q1UksE4@r?zHBlcEQqrC)*rgU9CT;CDQiqoSDSt-gJ&UaMUu2L;*Cu8 zq6;Y8)1xJIGEesF_*^PF@BC!Xo#@O*`!oZM%KZE$Ug^lU_8@8zQE2Ap!CQuG9wKG9 zW+*i>NRxt-B|ob6sdci4l8)ZCCB(lgoEw}@rAu#z;4YZmM1mUiys7C4TCZhU&wtFp zP+ehh+|JFL*~SsJ+^@Z-ylq30z~p|wj}ZZuC)j@m|8`- zx86uyZMsk}o5cx@~S6ounOdF5{r5e;b zq+->Ilk37Ha1)snzDq`2pvbLrXtzK^P7JTKumtTfdT!AB3P6zQKs_BchC!CdA1Ag( z!h|SynU0io$2F2APQpalooQ8_20W|q+-5&R{W$le0)dma%mB}$;xhw}u&t}kyk!FG zm1}+kXCygNUxy(p6kX&*x#0o>zA8j%B%WKwdl3}?AgX)NxIXj*3=HHFL`d}lAZ%S^ zTMXy`=JkIjL}iWlrFy3f?mqjv-kdyZyr^8El!6=nWx`6XlKsPiMEkw|_t4_6Xlnbo zndHZ>5RJS2sk>u?m!y~7@~wlE{d2NoM&-c)hH5~KtPYRJml&jSz6KJEaGkco>x1vs zBqkRhy(MFMU+a+^Vu^EM7+*~LJyB|!9&$j@9Qgzahl;Fm>G)&6qvy=__@BUshv)?7 zKZ?-PIb<|Qy^_aCN>L)r5I+f0l4MJ`=|Der)FaJzljiWXvR z3aY>I$g`3eG8+e*(Xss!Bj$hldsHHYQj(W-Te@L%9!ro2a_=nt&~LmQ=_^W`NI~Y4 z;hQ;wb2gu;(E^2Ufhj{4Npr~M8Nj;N`z;JIvCdEu?BT6E%!1ZmRQb0R<0=<~Ruk5& zH7YjM+tSrp0X0NhJt+#nE?%J4n}*C*-jC&U0^g5*p0*j5J@Q}y zed)u}ipdck6FDSXYf`F*Lltixn`QI5HoBBm?XF5AB2U@q+yv=5ieJVy4K78DrX6;ag|+yO)4p(~lwFifdd>l^K!B6pTDrt^vn~c? z1K%P3;_;zHdV8)`Segf1DJ?y6QH%HP(4y-NwT2c!V8Q}-wIg19#RqFi3H-amJi*fF zTzgN3j$i>8y7Nl?Ql`PrLVO}*uEcT%9>X}#SL*LPAFg>vXn{3wm^ofJsi<-6SU7Ct zZ1YYtJY||0F4Q8Uo+)f8*+DXBEqR)vS0^QaOrkVDs(CkRGLq&)H7Y~WpxrZze*T&wXMPQcdk^?*!pMr6;?|_eD|I9wDQD4`=LPt*Y_MK0a0nUN*b>?ngg&=uAx+&uob->VOmDwMl&BM2blMNcg1M9F*`v z7AAO;6Y)oA%c448zs$g8{OVm?WqZlu#$Qie`*+_3c;^zmcuk*)Fji714M`U&W4ReO z41IaPpg#=tK7LX5;0fwY86+oODYz&`>h?7YCAskK>S}`9IKAilhMKxW2U%b-vwo}J z>j76Ss(c@JU2Hb{wJZLovCIJwb2S|-+UHg+>Mp^|C+Cix8a}exK0hKlmIi7snK?Ik z#fVLLMeji!o_yNTE30of_#-&7TjHXmLR35>V*=_*s2dk;ENvzqB!XH)m&ef5KhiRE z%x>F*`L+)C+B+B8tOR8V0oXET_z^D{4gVt6rvXUeI;U|n zu$+`cLYkp&MBLtfT;3MfHl;5HFy*e{)V5qRBVO53US`g5 z=*o|e$pxICYrZ|ttEW?N@Rt5N$Ywlc(=6A05|>fU$9GBGd^0(li6%5{Q2S~_tL00U z;MSC#7BSTb3ODT^Q0R#f8*$c7QwNN8F)3YP}?Ll7Wer!V^p$((B1LyvAKc4aoYeY0Jv-t9S>_>6#Rn{48r3E zcPrrsgCNxy@ck)N9-H=uZOtPbpJ;HB4SLV8krMVnn%xIx%R6-fTyqXll&$F>sY@Hh zJ5QN{ae_oYxI|4f6irF8qSN|!jSaw)XNTkv&3k=f0V4{>qnOkTbGxC+mf}h!&MCtbj$HR#g0kufUi35$D+9dvdjd{O`&CU6ZHA3 z$TdtZJ9~inf(gZYXH{*z#Sw+IKd!hB%w7H(WXHG92_n+!-D{Z`;g#(SX;IzQG|U8> zkq8?!XZvr*tDOwA(zUkGd*>Pz4%MvgNvc4yqz~2M-L21J^Q^au&&trQw}KrG>B4Bc zRXx|m?i8j@Ht3d{=H#_Hmw@EjVoAqXSZI`@7uKCEPO-1ba)(HIMv}uDIO~vos{O z_N#t=W-ZYo?(4eIWGyt_5fG>f&Da1Ix9$_*<{4QTSLMl$Ta4P90SYlTt9Y<|9v!cL zhjz4#Z@W{Q-X|@|rnU}KicpWR65xJlEkui_mn~cU^P3GOMy;uN|MEJX>|r4L(eYcn zDaUs#fhphk50CpPXMXClN~GU(6ns@HcOnOSCkJ9T2eyf@(5g~rsp5Pe>At5gj-|J0w~g{it^v6{;G@r9%G03?Ac6G2XZ*Z5mWn#kKQ%i#VX;C!qB z?Zx2Hje~NDR5_TrKL2^dvfMMJ+MTpis2smio;RYrRO(s$1S(o>c;@Gt(x-od#aZKZSy7g!Di$Ur0H|hVjJdljqV)QPBi_;4vBs z+2Z2qeEzN&UWqRgEhUpNI;i#bT~ZM_*TEwm}YD@4;J<0>7QVku39V%cqg)6?co%# zU~ZPvrcBvfbz_2=B^q6kWXY6nUOs3YY96hY)YkFEUjSFy2IxKX`>L=dKxN$5a_Ul{BCsjknUK@)p&DJb z5&6t*?bMkoFL)Mj3Zp$lL|VV6W1qs@0e|?)ibSU|ET7eR1Jt>1YD^W=G%caQo3C-( zV1@JxV=vsd2hmvp9OErvCnEr!1X9^Q>SYa&s%_(S$q;=THM zk+m})3AaF6Mc#pcWrp-QfH9U`x#&xULDy`L-}iCrbten_bw=cm?< zRj$doL>Gg=DJ}auDP$@G6&#VInfPpIi6yBlRUczP@Ro`lBpUn2G8OyFQo78|ocT)I z!}7w;O$5($x^-(3(Dxy|V8N*3snvS9m&kaCWk>s9$(rvZ*?pmygF}NItB-t;dQBV0 zE#g3l6H%!9Q(V;zU`ZAl!hVo2(K3Y z$Z4vBG3P+1{j}f8Cm&>D+f94)V+wY8R5Vqlt&%U0)cH zzGL>P?4MYm8YKY|p6%pC5GN61i+!-XqpE}_J%&p)(?W3?>GtQ}x$W;@?{`i8a3~$@ zsZ)a&v3=HjD~^!mw~#&TJ@|+K_k9G+Ygf#FXw7zg1{HRRS#38yDoMJ}4TWrE1A1|w zfGK%C<1I0d%K?4oTvC%Ya7ZJv{u)S?zkGi;MO{PR5Sz?IB8uu|UhC*gX2ag2C%qvl zoyLP~ggL*C9|K)9IBSQhA%HOEcRZ~icbB3hYgt@E4~M$*p9*faaEd^K{b&iZzba4V zM(L?Tx*--fQ77;s8}{pWR4+lqz=dQzU*7sAQk(?^K5>(${H&R<6Zo= z#y2-QBqB%PJaFOs!>Z&Mf%Z2e4URX- z__ANPVjUJaJoHzM!Lqi&^Km5f=!eA^#_ue|RB@nuMPw}Xb;?z8RMfr2HXU%!Dtf9BtdN<)biy+AI`wd6yq?eOh;G`t zV6!o)ni@N1y;c0J(MQ3JrnXXv z0Fb}o&8g6hq8MP@_3T6L`b`o6I0yimw=u6EZfAll`t&WEv1!a5r5Egk?qtI>7^)04@oMp^!)pjwWOuvT zyTGZZ4(}XOa?VKv!EalZ{_tOn9wR?E^V{`3`GI1}P z&J?UcDN5iG71#5%O_)e{6;A$8&c4Mbqqv{6rqSh_QnYLpF2ODh0cOj--=oBaiTBmPgl>HDy|E{<7?NlM8AxavCC-p@|34?HQS#LWisJT@g zx?kJ;NXz73^1Q)uFt&E`tR~?PQnE0y(Wo+t+Fy(_uuUR(uP{~3qo19o`o`DUW0PT2 zqvF*H3fid`_}!rk!&exl9|-9tI1dQ}hhVE;=Q^Fv3WeR{PZ5Ou;I$2x*UbFQZkZQnWS=L@RYoOWE3*Url-^eLZ5RE8MpN`PBmNz`NRl@!kqJfYVJ)zbs79 zr^^9|v%X}(jCDe6fUT!R9Al}nb$PFBjz93cpvA4$@smzg*}Jsb1JH{?i=`jP0eKO~ zj@0D#ItB|<`BhAAe^6KxD-!te55{x%X-)g(-r7jUw|5`-=PY>D>V^Ju{y-$&I}5=e zeOf2R$Ny~D~sLq?)ABnqWo+(bMDcfzfdpPpF&UE!f3+e8Jc_+$%D(!5; z&y}6Ahz2t~@7ECkW8sc1x^hCOen_vyRDq|jnVpZ`SW}2lgNL#Gro?hLk4Ix;+@Y^a>f3KW!Ibn??&+mTyA zl%|l-oruHBM&T^nSydE0LfrLlU|#NilDLuVI~plL2~9&e%?d)dg$VOw-|e-}b`ZQdWc;O6D>s^%+jD4p*L6)&l_2qrbE~J*so0#t4<}dkbkU?Y zhf*3AxZjc=P2Qjf>c<^27wF2wiHWlg?1`}s@8^66Mkx7+Z>ljm!pPG_AsqInIQ6~2 zkW_)Ch7F$6R1`obsjw<2R-suzzY9?SF#^kv2skHVg72p!jVNItYD~pCY2Tq&&wxWY4OLFj^71m@^y$#VFvL=w9*8)N(5t%8^mo3QS?&t@>$G>>E z`BHuj4>x@**Rua9&VNev&*CfM7}k18X4n7l2j}-KWbYSS+$Y*c9$QbI$Ja_9lo1$Ek?1>X^(Z1_zjY697H7CsmniYEx>&PsKGGm^%rm+;x1@fGPtw?5A!Y zwyWz;2nFAPm+#HvRnEQ)kKM4aDVdk*)P@Sb$M64awgB!F6TIzSl#pH?p+11=_9!lX zCcZV~dMwJ!-(92Q1CFJNYZa4|T8749#VW&z+y_NihrLMDUvD1d`iq&tK#1w28aNl< zp_eIE4eR1`4iW4YFm0(?G+U?2M4envp3hfo@i|K%%c&;nH9JuC@}C#9gV6L^oB$8W zH`j|-nP?TQB)Mb{vi+&Twe_FIa#PQI_K^W`#?OooO3*TP0_N~W28(;#CfPo_5q9To zrQ*(OmHot%mO#fMG7=J3{gVMUQ@O!iJFQ(=!6lr$bSzaElNN_e*U*4qFJGP1q+C;n z6RTiFa-1&p?4;T;_+q|uAMwry+y=HEQB6T$`9VJ4tAKp&^c^E0L|j~Ax4;hv=APYw zEQ$Ci6oBK60Ny=58g-eI_yvVOLV1W_1f#`|r|?(As~BbI;onbR5tNg^Mpssmjy9#o zCtpkkIM?xK+uFv6e8q69*jtbe@#;4;efNdRX0v*qoE25)!Xk|%HxD`4(L@OLw05hi zbAWvKIv5}6N8|@v%zA#lm+5-+dOIT27?I5gMzImaR)N_e?2fr!S752|D!Neq?31qF z7jnlGb(bN;zak?cG2~x+Mg9oq8b;;(8YGG_QlaSb9lobs+0aDW^*hcKlq;)81E4#Q zFMT`h(G|;pAcaPKAiin z#k)R!I11g26s27t!LK0V&~aiHliDe0GRyO^B_K)2-a>vrS%H4t!vfKdx@dCDU>Wal z_o5AUTIZ!N5|#7fRmV~099S>)f4P_cY(-ih#UNuTRXye_Z!ZqP`d_;MoB$myU7Br< zqcXf>kI>fOt{q^;hll&~Myo-R?U<9=MLY!W#t8K@u`G4zHXp2*>bwJ>`G+rCG``Q+ zUA|9iFP_{yJOszftq0FflmF?t|LMRhhv21LJw(@9p_Bcevs%n}y67~@BYNBZc-8Li z)^|}q)W`hbz^Mr1`pb<;2w3}=?S7S}p*?>+2$vctHdSNHsd9~wz5GawaIym=l_+4f zR3XCE7JiwvM70kTM-*xz<0h!(d(wr}IT#}dR3AAQG06gVX+_0(;+=Lb*N6N-*!g}c zuZS_3!)bc4@pLA<=tu2gMdhk%n`_ACqN>y%9{ETGQf&CNG-7vV^M0L4MBVS|+2mG# zCvl8=D@VrO$S$T%yM_!13@^vDt>d2zt;4#j6!h*yNoX=g(l7d;_k-Mcj*fJQvpU1g>MBy8Cs)Sy<#w+0l9GSU$TW0MM8x_c)}Bnooq@f)OtU1m zc*BR;+gahaQ^De)i}gAGic9T-|1qEORE4>)&G0+JG4TM9o4AM|$t7-O?9mS*VzJTg z_x$hYv=tUj(y++H{6KO`BClh}!==zio8%A)Lt?OWu8~8?zP|e+L|!O+7$i4nZ=6|0 zug%W+RSL9c&8VUVGfmGs&h?x3>TR3NQ;td7T`P$Bei9KA$H||>7^NVO8@OuG;EI8O z3ZD&@0E6kS)Zy+9wvw}Ni}*crDN`ltv1g}0NtOA(ONi8z*R>x{pvk>bF$j^Zs#wI1l> z*p`a^q%s{(pI1K;J0NOXm%EAjpk2Z$t#YlEJ#?+5tu;(o?FRUc#RS$kc9#l<-pSad zV`Q}p?#`R*$U>V;jvLrQ!nU#pcAoM5K#qOk)CLa~zk-fNqyupLl@TuXJko)47wa}3}@THXZDG>gs9>NJi+Hl1i&-jM7SN3@lz_-Q-8b#p8+pv;1Gy#BZ)im5EG zCb7Wb_kLfMp_t?hz^>GS`XWHm%Jq`5?K5@vcMjXScwt zP88t03PV^)NRNSHYo1A+BDq-LcccZo$u35DHD}q}58v&N-VW|mC-%arobty>3x^@G zreCr!%ARDrA(0Z#xVIw0nMo9T zSR((!eg6G091}+V67zhRZ3}tLDZd8x>8I`zq)(?}9Qza#x1d0lA~Gq)g}1>jhODWH ziFdS{g=$joPI`fn5l3k{ea=90UXn0RE722i8i{LrRu^IH?R3==+jWp*xT`NR~_77BHppbsrIi2nwdPnno|k5uuJRBPf$# z<%|3n?lW!9YtgPeu>?swz5&nFiWEJlV$<%5qIAr zOVa(VW6?@P2dRb=zg(E}E)`BO-PC_tf zg&=|v{P*agugevlS}KLaD)`<{To_(E{@;ze1zdh3ko(KF^y@m-G zwH~I_-Ai>A7hm7yW0(rebqCBN6J;RGE!UbRK1)d~rJ+m4+PtQtq@DbuWGMBsws`tH zPktn|KR`aPLN!Nkazc+{iwgKyy?_fVg|Z+lF~14nrecNh2!TTW5pSTUYvxgil8Bc| z>96H{Wq##cRrbG&!Aij1Ns_d_88223h;wHe{@EsVMwF)l%cU4yj1hOn;i+DHr*d=Y z$Cx|RdZi@BTY{GCpo%4_l7gc@ZlnS3MTOmuODz3nUj3xsGI*CvnIGx1n}R^~M{@Q# zCl4$%)YrY8&?Ks@KU+HIL2pW~G^3UAL7XfhMvmu}6GWI!j)Z`zoZ0Bm1?Lz6qLLl% z77p8A+KdR0i2l9{)|>olH~mBu)2S)!pZ)%`=<*Iv!<&q>ZTv2{5ovCElU+f(@hmkl z%@Hw`jw2OSzI@oFZZOEb{efohGf$;;X`77o7L&Boi_HCIYS(mmOKck50dMI1yg4}4 zB)4^oT89tuOTMY_2`GMVR^O(k(uVyvfYC{Dhm74Qz0PiP&V;Ukfi5YkPtN)_JI~g@ zIp)+seBu+2pK^thEU8|2X6)EJC5bCYq$a!nkvlk2TT#K5^(5XXRX%cYlYa;E$~Ft^ zMX~2>bB7l7&@8_5&~i(^#R;a|FWT`RaQ>JP;dvw?G4h+%0#0Rx&|k52do%2^c?8w_ z|DC4A?4d&dlqFcRJ_iYS4S(Tu7 ziRw5)ScFdcTkIi`KdocMQ`wssa(i)`;k-#d9B;wDiTnu4Ax2$L0k2U2#VLPS2zA;k zuno?)A5NmTd5GFU%0q+q*}tkj4s72;FB2%dZiM{E5pAIC!8((rOQcsYhqPajkobAy z&T1o;K=Rr@UMv=IsWVRM8-_!;F}WwGbT32US%g08cqfrh!&W(sq9!CJ*IHpkM*~rL#5wYDVdaJ5_+h^k(gYOzKb=13_Y5`vczrd} zkc0mSY`dS_tlqaA*#ezb{y)mjDku&u=+=X~yIYXK-GT)V&frcU1SfcK2@rg6cNjFd zySuvwcMI+$|D39OAI|x!Zq==Mnt7hxyZ2gOuf}>+?6Tk6CVKUnIVLK6Vn|QPr;}+% zE=-*aD6$@(?Xow)k`E*d#Z+Mz0_|PO17Oo38t8sLy)B7AUmV4ZDP^G(58sy}SkSw} z^#J@pb$nPViP4}r^9Ab+SfS|Usb7?p9^XV(-|^_ywac+D)d3a&=%j+ocaY{j`_{E8zJ+0|KRzATn1om|?d z9{4y>H4l?_^zhi{_Ox92b2It&Dp?d3Le30|@UQ6{;phy{F=NnX%SvHC`s^El!u!k! z2id}~k8!QFr0}xLp5INKm%l7OqnszOSQoc0u|54o?4!s((r0YHPc}6+n%t1CF>cT- zsiR@ExWl)Gy%M2A9?RzbF~_iJF$JMv&osJ0?%w)z)u+D6xBuH9SvH%@n)pqNn1Ls2 zQnd`Ip;Vt?H>)x!R_6l8zDdt-l+Lqpl{@>pU+Nu2B)CjECqL-6tW13J5* z_0mf2q|^cJ3kGejXpzp}@2pJdyz4qHg-Ac%ah`L5M#TU1PjjE;N3~l0{4LVMzRDhAcDghy2 zE#3odMaW{~*4Ts;A|yC1<1wfin$Cpg$YHcULPcOD**cmI03`UVxvx9>wm{b?k!JeR9lwZRLV)sek+}R9=mXEMP%kq8_aHLKq8>T z=j49oGKlI8!nB25KkcHVsNQt16soPf4_sW3`>pG}C#W>}7{QrR@G)Aw%x!eQB#-Gl ziCT!TbA)M5LDyxaQMkgrq$PRP-CgFNS^(98`l43(OWa)3l8Ocf+!Z||=3qC4ViZvr zDA)@-6HR+3wM{!a4+IR!94?O9;%s~@)#()>u%OWmFqqGufCeO}^=ny;3u{8CzPdS1vW7$bU?qG+YZ(zqmh9HLuDm{jI*xL>Gd`YA%-QXrN2|g{2X7iRl#}xh`Wm^=&EvGYQ zhfF5>(b;^95?3z;&70h9HyPb|noE0)S?^=GYdXDJaP3_R9nK+$jD}t|WapUmJI+3B z)1Hy~yi##uOW7nQi%_L3=<^X=3PeT)kPNR7cN1EmFP<`xj(#tKu!0Ol1gY zKiQ1s3;=?Y%_L9_?$@z7E&P{vbxxh*9k7Le!R2*9+Z^z%O!2Q$#b05Bv0WSB238tl zYPHfT*9>yyj8l5(BI147E^FJ0F|Tq#@#Oh%k)ecn3lBY?QQo_-3(5)D-DHME6Jt?T zU}9i9b&JXaa}Z12h-X-bx@ZKuCKFD1;F}J?dF{Y{mDnb&Yfz> z4wc?E9iw#JYs3T$P?e(H&pwC{pDg1~f6ZXCagF(PX#A6j21UNcbY)|XjPc>B6uo0L zDPlV3URREbU!rn7D2AYAPd-jj1&omXsoVnHE~TcejeZ4I^NhI`X{NgUqItBxX}H!< zkw(r!LI%*3c`cd?6^IaHX@#Wagb1*Mk?CXL%`Ezl+GywivMo-#5^?{C`FV}UILINx zoQMNfZM0`!ray;+afQRAUPF8`)U@5pm?^T+q9d93J)<*OY$npg0zv@A9$@rX7|r}s z=}j1b*)`K@yn}(=nnoiEN@aepG4i!s!!WhU!GJpHy*s?T5V3p1In>7DCuo7WWL{#V z8Zws;C{Y&0gqx>UhvxX{s! z_|EP`|G8wbrT+cQBcx%(P^G8rkO>l}@d;Gas2w$5nLhv1I*-vUg{pLtIg)e0DT;)s zpmQ<0W%d(maiNy_sVNtWa%ALr@^fM_!iI}j3T_ldcGz`z*msL~zn<;gZ5DA=@ANDG zuxq35FYh)R;HZnqzK0E2e>1jKBp`$KKET%b#)~X)Y<`JiMr*P2+tuGVC+LC+BuJD7 zH0k0$?*ZF?%7bmxT*kkPLn}h1L*NuMwG2l^-zR)84rzIqL|W26LT0G9?vye%ha~4- zz_Cy~6gfz}%=;?GbHVU~TxGL&f>gKDJDhrG@;Fp}7!!n|8s6kmi}!`L$I9|=v+%zB!`x&E%>sPN|GXaJ^{03sQVyd-tBLNSV) zGUezewXW+gW0bUzvr~(|lgY-HyY%?VC19m1^th8kI(xNiJ6|qXQ2T;ffWQ8b6L{+F zR}~k!#UMX_Yp*k-78-(AeFtbniAXqA#7=i@7Tj=P?W|!`zF;_w9!yuKQt!`PiVGp& zac>|vbRJsVPb+Lq$M5V}vmFf{^Hj6Fl%MlSGb-q?VAe|rDcZ4PRhyD`JrABnSS8ji zP|u@FyRr|LEC5c^t^UjklEE<)&afcCypdR00$0{8|JjfGfYRm+@%)J;Q`RliC8J3z zbSMB5v~9?u;=DQ6jFgl8xO;@=Ipwu0lp7YpRWFa~;+7L6;bJCs+E z=vQyrMC2No^W%*l0#;Q0l+MWnXcnGY)2^+*ws`(^LlycvUMAwNwN<0={w^-ryF9xG zMjK*Gg=2hVOlB(E@Z>p;eDu>R2)@AxYes;VD6!=azy#YV$Qx?rCNITwy-w zOo-xuaAR@r@w0vmA=`JE?cKYppGWZi$%|`nE-McphKRX&=0GmPS!mxVrPH6{Zryscq{BtaD^8*=1vGE%9&TB*?*4-DDu^l zVYSf=b{KUUjXE)->DFh4P{vy@q2T~VR9G^Sw$YS@kTo`?IVL>j#4LMyFug>wf(xCQ zZD`8FhziUw*e>X-9G(aQ0PU)7b*CVE{zk&G_!*~tjf3PWjw9U%$?A(?2XE;~$N{+b zaw6)ajuA-IGP$&sCINh{4!&#(xb<$GlrW zVFj-&Iewh4Ayj{*kF~7p%;H=c6YEn`W=u^RKO9zlZfBM_(y~qu9ff#|Pkce=_FirB#0M{(Wm$iGKV#Ry5l~Azd)98)&*6gS2TeL32T~~jy zj}$81FCJ5NtI>A(P{;N6FA>y<>C`t!Xz89jUuV_lTQwlPLQtL|ccEl+i!V$CBGVmu z)`Z&DYH(Z69_77A8ST%kp8O~~h58_!Iyd-3fSa0M0@NIR4%c4FVW@pEqpZEtybVtalVx5zDo5h$JQ$ z>C}hi#b6x@8ftr2sK5EJmDxC)&iX15Ujz>=gLuX~4HsEnR1Y`4k=QvH6^k@)7W2mu z>9ue@vD<4uy}paSj|$j6@_ zo6oUJhOwKrs^k9I@ulH?-%OCkf*i-=jU65H=snmKhtq<{G$gYX0C6wGJH>zU`;mA^ z%doHKMay|Ib5#?-WZ8F&;tVDL?guXB){mlLtoCquLpHyxvmkMC<+xAGnW(D(s1!fah5<2bm+m{ju`}?v*X8t?WcLN{OX=WsRK;gDqFj9Czkl z8LW&`205z+v~AXZx=*CPa~HPGu5bSsBKx34UIppH!)|(Ka(~vat+?4Mswpb9kfBx?&zau;fNW8m0uJ~^+p;O;|h)FF|Wpby@ zPw@#+!4OuyMoJ@V=dH%LE9Qw8*1myaW0z}DBZ2qBSE68JSQA2;5R(Wv2_XjI2r)(g zXfMD;%}>br%o`935`lBKyNpkZdAzZXfiHQa_b)h&8pn)o+)RDAWS;u`A)*fZkP1`I z&K8Nltv;Ok41B=JRd7v9E{Y&IBS?;GI9ce3Y@U-FS$~g)rC8s?ax5#V^SMm97t|27 z$za?X(gu3eM|l+5v7*D|Ty+2jMo8#hM`%9t?q7 zY&XgdNrW&cXk;cEpic8)`q3`3_e(iV!s^CKc`vgBDobEc-OxTrXg`0XHQ$o(IEla1 z?Iu%5AjwTdWQeBII>v65jqG5*yh~qrVIcny&71#Akxxj3Dk~|D;aAW8c9ZB+kkJG- zv>&*!>}6)LkbPc3g6xSL9QD2Gm917%egy~fUYIu!*)}IPf78!q&N53L3?jFGtg6Bi z__|KM@dw<5W%3yEn-c)bC}?o&D88qE{U&D$poLU7C_2!=V$q^)Zyi!fy+gi$0q8+p z;`cr~2|2{Zeoyp)SjHNVh!>kSWKNheD<>_tG%|3b?7$b%B4y@~_ev^J{zmWnDIXw9 z?bYBuANx<_zU7DYCf-xgJ}o9vlj3y|FJk9j@0Nc^m*tVWt+#33^S}WV0!orgCVI~3iZqVmM-#~Tu4lSto zVBO6$?HN`}F{8*E#oaz^`Y>~!Or0Ufn}J5jW4`M}Ob3A)R5wr|!T>GW;GPu*Vt1TA z%I59i2cG33s^xP?rrabeN3-que8OmOUh{?xzJiCCay%aG+HxFn%(L0TBHo38aCCnr zMG6%fjk$y{P1SiPpqZ4WBUI`J~qe z8I56N?=&3vGIahzKq*R%>TRS8e)8f6&b$f&w1pnKbD=v!1&FMkZyxZ1t)Ugv97M+8 zHa}m)l*+6^cWzdc$6S;?-#!v@JkZeXqxm(@LS}%TV)dZu0;{iWQzc5Qf&>6;{WQ4f zhJb7&T@C9?Q7d@c!al8o1SzlfulhHR2UQE1{~`4>(ki~4{6|NGlD<>I)FDgjUQcN9 z-@kQlZz0R2Nlorz*A?W=hlBgNri-Yu1or@!Xg60A4xYZ1_ta15((-W*0FcVwx)4kv zw9;J01LS+2^0CAc9GM;oY8Rrv4Qn)g5N2_aXSn?s)cfLcOyd{(qq@5AocaB6%501i ze_51K_{H}LC(KX4An(0yl%GBQ{#Rp4-Atrdn38@YV5v&cUZDDIUG|rQeyN+BYIkE9m)6SV=NVP9e<~iYSdV>?GV<%jI6}f zwxz^E7Um^5vVN=8*7PaEHI@e2g<^XJ=fa~|${Xjk`#nz&?M_N%Hg+(P4Mr8cr?XxX zcah)_hPYE^bQOqWN-wm~H-che0$K>lGi)hYnv)#=c^K^XWiHfopMofhP)a+KO>qXy zey}Df9F4G3e4UoY`t^QLtCIAX&l!Yh3fBr_28T}g;AT|ZN?F2q-JjRk>osPOO_uF_ zArvHU^>fmX!9<5-sZy-P2n*bjpZf$bhB-6+`O|;HmezN#gqY*)qzcpj_wNoXQ&b#{ zW!WFLsi#Q4lp>9}+MO2_tSdh>8JXdw7mF~U8|m_!*yp7FYGm--Yft#nc3qBin&$Q) z$2~XE6JsVt^ugmW>EI@r+Y|1CoA^HGbd2}Ui%`J_3`aG*SK6}Vm1sr@`4;6VPlpw$ zVEkib;t@!ZbFX`Jg-_tv0r4}!M)Pq}+qB3U%xwNZ?LzzS z`dnhJ^s{Jd$LnnmrjNJ94p`qV)^%=i?OCMZaXw#ecTRdOxO-;=fa({b=!%ZAyX>dK zB!KIGMUw$Vreuu~W|7%=_7rXmfYI>$YJi#$9sto4-V}e4MBS{hNg%YZ?`=EH(t(+I zx--8AIgBQ#?IC0bgRMMQwUpd!;?p>}i!qXBM*O9e;jj3LeE#wypzJ z1$%8;tUf`E6AZs-!pC!6|M-M|;6^u+3hYe~i`0>qn#=#)o>L}Ak->l9?-%8xpiyY$ zZ0zfbrHWO(Ugv*15y1$; z)P+^S|7|A(7GQJiB~Urc&N-RERZKrsFflXJ5f!$qa?2CH^>4$Y6zeWFVES|kQf*$! zQW>8~y{8P(Nlf^GPnrqaepa!8SvChWW%p`|q&qd7B>%dmkq^l<9v&$a4pP6xO~v>B z=YOv`aKsOV`-nLkx~JJuvC@ZU;tc zaBD!*UY)fbzkK(Wz1D$=o!G6pl1TEU!ncO>Ls<@pG?5 ze&@c_azK?^`;PULwO9u+NBV(z&V%W!23&eAPNe5*hE$}?_T_BP0AVcGa{6aw1tuYT z9cxtikIza8E*VAIkmqu0qg0|1zg;8|<{V;WHjZ6!GpuAju}>6b-eA;@ePbt)MQ7_A zGr6n#*ECN1sP5y(JusWTGh^m-UPcKzi@6iECtcO5^eUXytmGf1xAP>n5%*nlDD= zz$uEUkXzfSOS3R4qb2mA(lPHv@WgLP2JQVY5o{O<(T2g47HU zkD5Y4-@I^|!z?%3_@NJpFOJap5ok?PHR*hvL3}^)LATW+`vuo%C;N=BX=d`ADW@>; z39!Cxyx)FNb>8TS2$LSdYUg$2u~-swMgryfk2hGWgIvdvff?xrqM(Sz^)`!d6TogP z0J^tx(FGn*=0X2p)wzGuwg)Zx!x5)EZB`AW(>udS%_EUiW8HQpOP=9@fM);x{Qc_e zadzXvOx?3#E`5bEZ3*%qQ>UEo4FK+}j$_@R5Ys8U{G zL6*M#c4&1F)Z<|Hv5=^YEJABVt%XU95#)9xV1Fs1^iu>irnS0^JYzkTf`=~UqjJ_( zjjz_1*{=jMNvC9$%KR&=rK3gr$LW|W{p)XaCipzVX$E9d!g7e_ACiLZg5GYtsi8%L zEH?k8xU%E?7d%9oxA=Z#4vH@g{4ac|{2x2ByiVoof9=fXS_D~%Q31b+-UjkAN$x@Sh$<@0VU1Jpu?262H({edG!yw;3-$_Cj={lN=jUb9J!0ln3j7(7! z?JLE{!N9K*743x)RL7QpSlUVe`XsbVu?GO9m22cXMEoFFWh?F;1g`?j#kFS&ySf$% zr#}<0^vvrsC|p*m-%V`ru7DAOzkjGgDgHpALe_gv7aw!}b;ulMYgt1Q%@kh@3PePG zmr64+n8b>KanQ~coPHf7ClNZFVL8ajYg(PvviSQcVVDt{elF1K^1-;ZpFeSPcI*uZFblskG@d&gIoh&-TPPQz44T z+o{^Guae#Dt1m+U{>mmllh683CthjsW`R)G^hM4e?v%BBb49;Xl_@^n>3wMByaG2?A$kLsY{8Y8V#3q5gj7}lsUzR2t-O}PiUYa-bZzOy!OR@zsB!J4sT|H(Ea zQZJHPm;4v+QX;ZXJ-V`_T6l-^;a(C_&edD$R zea!77rF3nalrz{E`wa&Qbdb!S7lsl&8pl3GuOTD>is2=uh}le2Jh2TV z)Je+8h(Dza_13W9*7FX5A%@H}&Ti@(`7G7r@X(;~r^)F$ZCQ4z0X&Lwvr?dErGS5% zdRp1joyZ|tH2q01LWr97kNP~;CrDCw`n|T_y>)%CyECtS!t)qfp6pNEIk|->AHVwh zsm3@}nyQZUe~QP7Z(8CYCEd#EIPFryo{sGv1C-AK%~dnMz*7Jqd-Kju2*ff=VML+C zKWE0|+pjmE(}@cKiA7bdT@OLxcIRHfiCPKsr)~dnI;){2aR7>=O$*s0%6oJ?SLjPq}T&|x<^tFFy7nujA3?Z*&4Xe5?W5Sd?_k&Kb*!*m0d;v zMEAV657h(gGAYG#;6bjW`9!`ei||&*qe>lT77A~&hxSC=b*rIjs7JQc>-1%<hip5wLBCgViyG zb)t-Pi_hb1TPkdCW;X6|evfoW4HSB5vEQo1Pw`TRJndMy?QHb&NzF%+Mew_pSV_IW zdf>po#md_uXu|;4EzP`P^~PpMT#eemM@*y`{t9ncfC#VyQ2 zsKA@Qg(kk%kHd0eJIA|T#h3>BI7`it#A8SWh0bh)wR%;B{_vD%J$FL0(FeVh({a?N zKT=b*l!MMv6asoWdvya^Cp(t0sD6J=J}90Xva!{>RL$dneFIsnbh3P2XV^)zz?F7~wSWSOa;MPwWGfaeFOX*;JW4Ymv(EQQ{c9K)1Crx{w+Lb(EK6T>TbZVvL~|`0guMyk;}p*yq*&Jk+JJu?30Ei@M>f=@ z>v6q^DnDzMf7$Kij!_hDKaAWF8}aa{d^Rq4`MiPDPC7wnY4A`2E5GuIh10ijh|SxT zBg@EzBK8`(vF_pcUn<1ooh8(gc)Alf^zHw*Dw(5>=5r67-jq!LR)!+qQ`+Ng{JuMJ zd#QtsdO)RchgES1)$Ix-ZZd9Gxs~uEGUWh((7(>%q^xcn)^vLt1Q>$5T@cbN3$nmL zphj>U32~)mj(`Ee7Q`9@!XyORK~LO*A~>%lukljwGE>y=NYPsblIXF*X#XJ4cYSeR zF}oXc@Y^mYTA3Fc%yyO}fo3Kw#F5t*&k_w0sPM(%8{rVtZed~dUVJ@XS{Foff}O;| zQdW3Rki!(I;Pd*m$eSlVPU|G=-V&3U8ew1h!w!x@a_TgghopM=BDql_Hv5&9qQy?5 z`yRz^X}jXxo+~-lEl$;AgYRYFQlnp5*Vp2b%spqq>#_SNFs_R2v8g4FybP3m#^I zAhzS6AYeyiKGwrYZ@XZ~WsV}w_e=EiNx&L1SmQiH_nk{}G@Lx&*r&Qv95uFd@U*{% ztD;lA9m$2N`t2mt5D-awK9a_8GlUX#lRoonexxWR)ovsh%?vstz7>MC=_^~Iw6>mV z`T84UzF~is>&&EC(Grs}_C^(f@+-`{ZOQ?c6zBR6SkxhwaJ(X4UB)OMS>YhvoB-fz zEs{hqASQ-V02=?n_VC4yL<&U@ic0Zw06_H>%H^SKEaQ#bmH~zkIr3#W)T00_iR385 z-bM+Lj1%GM=4k^jm~2nvFv&M^`u&Ty?W0G{fW#rNqijERH&d|>JbScL0hM$8YCV4# z2msHm?RV6j9u`!4^fbD~niv6qH2CgbO2jqZ6VS-Ssl&^!Y;MlD(9;$4-}NbRW#0wh zBkx?wONNxkSJn*ROtmK9+0#HQMb=O((uA(Qm9O@>d!iF-;eenlru{}^DD*^8I2++| zq3??v#vgAVdrKRlIaSoT`-EX)L;vLIQ*416jqvi&oh4k75mtniaQWbTF@21`n5B%7S5>!}`{#;&tJmL!2p-mYc75gDrxB1ww;=2 z0n`_1Ls_Yty4ym3B#3E<-@nsOT+s}_K&wT|xMWAif5s-Z6bN+@<*yl^EG>pRz zW)6mgx${X%69X%K1C@m`$+rc+7xpj#7~x|tL&eG%cfx!{*?+1a*f<93`guWb#+A%+ z$@=%dlR+jo$N>VP=B!>QQ5xMF^a2vN9Di@#sv__tM*Cdk$c4N;z9119>_Brw+5`k zoF>27-`V@jnDipY$6x27F5}UX)jnpkkeOgP-sa4?xh#IkG4l<=g4Q>w9-Y93(jFb0 znZC?H3+T_pGlHSatfuNFY>Zm|QoaM%ZK3E^k(F`WttRXmv8^8F=`x8>b&L}Way4a- z*pswotJP8FyZoq_oWxH{Mv2jYqTs3NwK`TIlNA1rFY12q@$0Dildd)!;RVkx!py|E z`+a8RwEXA%!UJA=Aqy)E)j_ss<;Ey}J3g8m7RE+<)%4=mLkcT_IF-DFNFMeNb;|;_ z-v>0WcLd{wK^j#gN{+jva#i(;6j-}Eq)1GF?k%V@`XeI(4C@ilxkC7WYh)QP?C5ja zcXxp`>9_#*gN$MYAghb_+#SaEnXITXFZI+KtL>xQ@s3GY8@(M6xCqzX$HLJi@|yMc zv^ezT;bJvVwIB5&4NMJ9g7j^K$VtPOx&#J~1dh*J%&MWD2*aKY-fsyICWW_IE+*bz zJ+s{%?@^9mPu{Sw$eUC8bQLD?`@SlTwliBFy7$)+k&gN-gE6VYaz;A8w!Q=p0+5b8 z{f<1JVh^(~nur2~6a8-=zXNaHT-MVO7kqS6R|UwqkR(RIi(`!!`{OJ)l>qI`%xq%K zz|kYBO*Hsirc+zFHL;pIyi+TKDF%SDaS-i&DsOXGC*dx9s^if zBbLdHY5rk{js>RA4qY>pHJi%?9mOWn@MQmnEwHka8ybp0hGzO@-LnWKkIZf+s$BK&xsqeiEHtHkMcG!#$hdmtsYT5S1S;+tXR*E)5E9isGv0oXJA)_SnEYan(@ z$9~V|t^f1Z=RZ>#|F7X{Rs_f+{c(gqq0H(!PIaO_hwYG;#m>^QmeJp9eSE>bElW#q zmRwmv5Q|t(A7&wh0ONPyxg98rBBZ@#qVKg9yB%0D-*OZV$(VWSgrIrD++N(R} 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⋙984@QbVIwPc)6=Cp&p@7zkc2<> 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

4Xg=b`__GjHQz^M&9He15U~0T#6k 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

6d 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%0Axg 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

K?OHj`#Y%Dx{}Bx-6O?tUwz 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 z%0D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Ô)~zmIVz1W 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 E-|U9t-v9sr literal 0 HcmV?d00001 diff --git a/docs/images/templates/bun-nextjs-todo.png b/docs/images/templates/bun-nextjs-todo.png new file mode 100644 index 0000000000000000000000000000000000000000..4a2d21eded26ea58bef8ee5310525c8c94962ea9 GIT binary patch literal 309453 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

9>V8G!Y+YQq9et#_NOpPG;wbe0@Y#Hzs_`SY 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�_Ua+2~a~!8(XIM=jCub6uK0bVI$0 zrm{L_q|>Wja`6X6^NGzHtXjg1BF;9|W_ zRsBd;_sbR7AkBz^%wF9oaUhbGkeBH1_kdeO1MWAS!xV+dZLe?)G&qU2yu8WBn`a_R z!EV#;r%X?yXO(WDJNC>C81ZVLjH2aL@B>4Z7S;f1lY?Xr%ib4#gzG6bwz4De3`!7@ z+5lgbO{OL*S-T>N^IeQ`M~%LQ0o~Z_4AYX9N|XbvFrlg70mbS|-oC4z{D@b~RvZi9 zi0S&j{(Hplz!AfgBc~rf$q{!^$3e)iFgC z>FFQ!69QL?jutM$*LLk{nskPF4W%`=(Sm)wYDxnIt5l|nY2w0a)fFtGkADc@LUM)hkbk`%vtT!V4 zMo#hr3@%d_=?@-1aEJFS%N;{XT3_8MTqGyR5>BtGJuYyh{kcS1R0j)|U<|O6jIzQM zq~Xd}eHkn?IL0J2fHYK<@?#;XXw2H)Y2GW(8M1mhMe zt-9NigRJlwuvAWGujQD&oQC=_u5b`|(%161f?p$vvErID@hPfJ@f0!w#h!?ll#aAA zoAq*SBW#nBO?z8wXQpq>(LALsid0#XWQ?@KyB3wMRJxGHM9w68kUNW4zn^~CDw0$0 za<<8*fOrEO*Z&<{rPy)(!?BSUmtwTI`D6r7p~_;$ZjV5`MxyAmHv~@9;GDktau5*3A&f;xEECBrY2 z`KPqr5g_#2%{AYFHlPd_1i`$XWB2W0Z*|vU=KqNX284xK`6%4qI@(9AkIS;MJe8@k zV>602tHcqB$T9Rx_V2k`R|h;Fe%7(yUW90%Fh06+?+^mnUG>u@#8Lo@Ggn0iFy!nY z4AAYF_O`BnLWX`o=M@`<{Q08t8_M9FG1`_OPIVdV)0}|B;4Ayx+P4R*IPasggDUXV zrt?}z(hFBPW&Y`!&w4V)P}66hy&dD{)PYFR*WSCkqNG&P;ojztK_l{iLzq-~AV9Mh zaypT9{&JiRH(#ykI|uusK&GXfAp|diRdURNjHc3zJ~-a097~*nwUqk?BP#pNzKX&- zv+;_7o579oPn$iw0wcvpPW)DBv#3lf2V*QI0PP#hI+4|O+KtNv0f_|#-B!(&ZJ$tk z%;iBP0O_h{eWVd`KpV{J4QJza__Ds+mbZM>a58#S6#4_?~I*pf2T!+QicGw zUHts6`D}EIVi#~1nTKNu;h;o|-W6eyV??oafm25-tSp^LLru7#@zvVcHvmKyvbQZc zB!0rI!k8e}6BRbT13mzBWbSQ{-%Z{;;?^YeSim1#!QB+ zz6!XU*}!D-vWkEM0#F8h&Z8}D!K<0Cjg6}+3~qSE{Y+fcX;!x&qIFI12$WrIqG zW`9IbA(a0*5fjtkJpp-gbaO>;XV>&~lIK?l!eG*$z8lpM zR!hx@Q>dmZ)ME*cujHI&of8qcNeoYK7pFlaAgJDpqco*Zw3WV_gJ^#(6_`X@^fd|z zpE*E-XLb`Z;|1#4TH4fl{F7Nr<5{A+$Ll3RHhN!J-{Au@B?jDhr{OP%W(pOxrS61G zfnOnxZq#uAm6h)q5QCFYhH)F_5O@0cakRl@0y8yiiV1I&c9rARom?h$L@f4vI;K(u z5J#Z}b?lDKN56R7ig)(idkEvYN#$7Mr+q;?;ePhNUEc3)O_hFif{#6w7b~c)2v{wP zfnujqen}f$0$Gpz^atOsdrc;4BU6M)dX@&?T>I&4Cs9s`ua@2wL_qZTu^k2k;YL9e zfL5}&xw+Z(WKX}i-+fMy^^MY^+Yl2#JH|Xyv~+co>zNkPBq7fs5|^pdeEV3i1~=1l z-MZ|up)B-_21l<}SKU^ahZ6a)Ra_MLKLinw6M%+xA@0ARXt3aDS|D+#e!e%zS|Q;_ zBmzHBFguvqad^8Qz8{8#es%3Jo#t~N4c=%I;Oa_m z_))?21&!-Z*@S?8usFH34sEbFbBtS*y6zN}o>PpfeUx)eZEgCE^_Ft8d6j~+n6@;r z!gAwZCCv7mOglpDzE7{nPR4j@Fl%Te(uD4?>uiF4hEWB5l}Slg$9lc^!4T`eA5FFk zhFnyxFQO%HlI{mHPyx%Z=4&_i6dZHgDoq-6Dzl;vC^FHPHx>Vx$NY!Z4wguc)-9e; z7{_+`(i&9(GfuxcVLoP4kRWKvm0xrs6*UwG!(%1%W13nQp{0DjVO~r9)`l`OFJ63r z9wxK6-p=26g6djC6&u_)@tO)_G$F2kCo{rM==74x3YvPZ3H6PQDFPFS6>#qxLf9Pp z1<>G*L@FE@^aNoXbzHpHP%jre1`1SaA;zR~4M_9Qqg|gdA$VTnrmwB-6dz;e@hGvC zv>{eAtc1>SGQX|`I~Kx59Sg#fyElGp)!EpCbwFpfhBxDSGV07fX;bz0f80Un^>yk6N&hq7qpdTh{P3>Ync;@R5 zh``DAg;mBGo)<%wTQ<@ZV>!x^jwudk6QI1!8x%0z=voPa5NSE#3~qw_pnh9G3gen1 zHoss#A~`1bvbUXUHidWqkIkjSLZ?ALKOnyUNn5C)4e#j70QsHT&U^Q)80H|#b9+ww zF4N{x@2b-$3fF{6y@N1dMy=#2 zH|4>oM){{7yjNfnpMcl1?|=CBI{k&uus}Z~@Z5TRs#A3_MqYvCKynrH=23MN**cpd z!=jQcbxwGD+DYFUnnV^>jdKu1)}|C>_>smLREg%Ne@vDD`64r)EqG3hiiX68&$sx3 zjhOP#uAJRIV=E7cVhq`0AO6XKzze|0C8U_&IcUke&|D{6Z!&QIU5zCGYOPKomg{O9pTJ7s~fKn)Z&8k(%undufw8XyL14!Oh z<41!#t_qG7Nz7N9U2t^u?Y*&IbF*rFmnX;%i#+a=I0BA>M~+@$tW~!^alvi*`rnZq zM9CUmB+eHIEs(SVa<2fLB#C>qNogJVo%|nPLhm%PalN>^Wpkg%t#}tI(pzb+-CkK~ z1O4(v^Xh5hbm)!4fK}J7aN%1|Q(lg|bk(kC`Bu1h-~+wGYn((7gR$q<3ym87Fv{Ec z5$A5{$FnD8dQaU_Z-&+wqXqQfVd~>VmkQke~v=7w=i z+m8P~P3b>hISBo@>}jX~`msI7V{H?4T?Mp*^Wz6VSsj%hIvp2QefV%(*%KJ*BN{k#d2AKGbCnsE7FVKxoS0)@WySXH3d4@gDg|EajeS+EX@&`lQ_h8u zUYwccH$VJd+F9n68=>F>YPObJ40cApJ4p@sK%6%*S7{dIPdPxxLvrKfbIuawTJ6hF zH&+bixz2FGH#WIFLZzyP3$<#!rpG?S?h|`JOeY`XXZpY za%qeE&~2$|`+nRid&u3EwKIYb3ez$EdVX^W!oxo=yplTzvNsnyur}{+KmN|n;S(2r z{_Wj4^8yzi+M#e>0hTHe5tk?DLvjDP*ZAlYn0;x1SFbOpmtx<~lj#H6xtGuQiVCT;cZY!`Qcx_p~rVpC6tlYQzlD)!H2(baH0^4Z-KrrEGFNx_Vr7-jhr!IFv-A{ z*I@NfD2O2MZC96F^DGp9#VakdMt4PI;748G@?uV`;Qr^Q8ux&rp_UN``L@(b+64uRMd$-Kr(M`*CR`o<2Bw;af#K z#}7%m^1+smAKlL7i8)v=pbMQIGF47^`QlWAZU4J8F|ah(d2CrK+$7<*UyB-mF!9f= z<$4Otnfc58H`><5ij*WLX8{EMv-#t1o;ocS^|J}yxY>;+dv4(~GKU#aN{g1U0E7)@ z>lVZsS}sc)8ZDVvJoq52_jHZKtYdB91z;@ffyj%==3z*o9OQ~f1T){`$AV^^11WlM zz2!C9KkUD-V7em$=N(}v`#ao06-AI>8TlBzl;|kLpSR7c{W6!M?GOsPGg0*s~ne1&qP!CtJ6`dI<+Z*>l zU-rwGgI@Jf|J?#IpbpwiE z>%K2wUZ=th7Jge*2sNu@{dFsafhFYnB2X#wCC35@MmjSZvpM<)fy_~khK=|}dMIHU zb4H!P>;d2I_FGx%FoYm}ZZa{Q?RWKgMSZjR9gPIJp6N2o<8^QC;)xwTb~Eko3EWw< zPtmR3?e@&Q!R|COqn0Kq>~a6|et*X_2M`dAQ0_>xKnwxoFQ`TNr`y&D1c6v$#geDe zLE}4zKk5fdnZ&VpLNU<99ADutsstJy3s7e(sp#X}~%iwI$!^czzs*Ji|^NKT| z?5WnzsjO?i_uSu*`Ccn2Wl|tiLQA@9>fmBC6LAYWS(sK{p=pVQwVq*dw@d&7W`)o2 z3;F$T61ocD!U6%i06N?-G03M!s_7hmx_BYLh>$u_TITk3?C0~c8(e+j6^kIwp3-)r zMx!hn7-d|o63G#ym5#%u9U>GM;gTtJ9zC~Bd%>;etz9v45>HVlB=0?tm_*zs7V$zB zAA>wV4FeVmAR)Fl>I6met+Wby@(}#>S*zYY%6Gf;!OPWqAce^5_4=R9n*s@M!Te6> z!4N&DdKJ&D6#X(W`6A$yNeN{$dzGTb_XRm_Fm%Y;+uQDQeX0oO2*&(?#>CSzPtj1j zs%Ur$DEPGfe4ofC51v2Fh=d>N4bsz9jn+221S98Vc7$qQz%noPVyFYm2woJ^wwq~v zWfvJ}u+spjda))N+24^V3g$`$Hy?igZV#9xc04P88Bgh#>NFG!TzopKu(CIO&KyFe zeB%9@I9idB*UuLgn3QjsERhn7(tZNI)fETEEtv?Pa$)(r*qR8}H&wZe4g)BH?`$J| zP>V__1IYun0BItNXPytS=Pg#Lr27LO{45du_tbEqnP3ge3zx1#a1(_ezoFk|-~LUB z=!*dVr>rj#V$dpbZv>Y|Mh!jQiBm+MWFAeO}VRr==XX$>i(VALPC zil=}0KR0w0^}NY<{BPsp2IPN~Py#xXs4KGq$}8~9m(I}0@S~mB1HBcwoot_F_IB{^b&Eks6A%@FP?SkF92-WF0GzT9;1aN>)O{GZPj$NpgefKx+^>bXf8N?`QDE`ZimKL9 ztc|?BpjXAKJs!7R*O=xCc(rEUJHahFkm%0`gua+rnRG`)>w@FFxiQHRDW9{{w$=M6 zgFjdgIOvf+y+KbTQ-Fq^g3)cEaTWBdKz{YB{B;}fz&>+Z%ay3`qFY7bfZ2`2D3UXv z(4ou=y?i*anVZ;VfSr{Uv8bsLnj);mYRb8^f1?4NqT*m)OOk12t4UA zv4K}d9<(BGRRPKZ?)Qd)aaLqUUIwfxA<*OeZaD&pPFMuRIE@_tQsH(8_I z$k&G3|8Yga`WTZ*%Es|e=3k6#KDH`;n2=|Zhg7HUDw%j3Xjv?0ZX|mP z!)5r^wVPhN$mzG#F053#ip~pu#zU%vc~C#S!D}=3>50^560B}WntpF)sj_H(=QMIn z9>~g`*Ecn7o_}i*`PZ#)$_Sg}laY~qu7EA_Pl1%yJZogyeWdzAZ~?teBf~#KOugdT z;m^$V5{5YBSPmG_<@KNzLFt5w7^UR=P*Q?i>ExVUqq{C@A%|1>Z9%XTN`aIPq(P#O z+phj~z1`~BD2je8%UFO>a(YUxuqC_#46t1mBeP969f3gwTB0I6kWf%_XRf9f@NVt0*K0sEAx4AyfMo#h(m$Lvpy@a{ zqg=fTa^CtW(GD;)>{bwE+B>($-EEUVNTjXoqhl026a1L@e3HdW;Hjx ztLYwpdGBQwtTu;`$!z}2Nt$g{`$ZU;ZXWFp(x-&+B9`t2UsP89IQ}TEw5!=>EX@np#Vxh9 z+?obK(1p|t*1uncB}Raw5g0Vtyk(`fTUAM8r~x#&x9k*H~td`MtgQ7qXTSvKcKsm(}Lj`CHCSUg5D5o!Yd5yLDN4b30Tu5V)BT$W z_iMrZDN_wz8zf$rw1#z~jEQ7vO+I+r>dhrBzpUoCVW#G$Q^hKX-sCntQ%aW&uQ>d) zp1)PJ6S<^q*QNJqqFf{fc3p+m|LwMm#rf4~|M@z`e8E`ut?x!Uui4us^|E{ov(lW(|~lWpcDsC-gM5R zWl30*f8r`fNn>Wf;=KRXWn2c+PQGkh>D;l+y|DzqzblvqRx0+Pt)T-&%z~ zl3oqM_Rc}$$LY`uz3ZWo4^~(if-uPpxX%TzU+%B*KqtWjF%Hz3ZI-dko>wb&>Xjr> z`;;qDKFB9L_F{6ylQYv5d?WsTZo=J|7!ok-cX@yiCj)Zoal|Bz9lBQZLcSft_unL& zae7?07&H<1{0ir=qA_8(kU5>;B^Y5e2F$atyu3UPO1E46F|n}U6#kf)6`Ahk1cu3k`2B;Omq=SuZ7a=MB?CIYV0hu1ksDHtJJl`T<{m!G{9h`0nwE> zk;)Hdz)&TNU;>2)ufsL*^2B**X7BtBn+?$ze(;`LZ~Cz}Xfxp_5j)=EoI<)w8#_fj zG>mw3`S*3W9{}CI4*1^h5*NxQ(lhBrI%r*=M0hhQ{^TT;1OTQutBe(Yen_081hK` zeu5mJ@NEw^_W4kp{o3Bj=%+VXLGc!Zt{xF``1zLOY@1kG$RV#vUBEL3!sC$~0Z!K; z+567K<|PKgpQc!y#*TDI2EslzAJdoP3JsWd?&UE2=Ui{#@XOzF=M}k=yq_S zxB~OyiFGHWYsur<8OZx54-b=q5I0Hbt9(N@m?8*7mefNIrRZY2AIYha&HkpMEAgN^ zuH6QoP=32`mc~)4a3W*Db1XlcPhjs@*%a~k`OKEOWGuDDUM#h}fF+UV+KNG)eL5Lg z+GpKpXM&-nWhZ3OmUyNz=(?*n%>)!*kz@qfq4<>oX301fA3t2h4_m3AYIiWaSr6Me z)d#CxvnOMZ7#9Ce*T&E7#ZC10lqr@qKnDXV5-r+G@cXQ{3rYkk0f7>gHsI36n%)C@ z8EYE;@aWWsK{{n-7C*nNy!^I4!5q^Ffx60tY}B}Q?GsiQuZK6ZC72B&ZRpX);}FQ- z2N|$%9d@bEI;=?2lYoiQDzGa@u;i%)`s`E121B}!h^7y&Ji}BOx9RX4AyS5yfN4lw z1d88?o+v80l8DEQXKn-J^)Iv9#b5~PJASR()q~3xY6u#Fh!Nu()2&q zJBo`gvyKZw*A?-xh4=U#Z{S{Gh$3S%GqY*?Mq5=W8)EE&Bw0@@LTX?9{Fe*mT-7ws zBJf7Pmuy9GWxZMs+zppmE*B6zc*6mrgj=P`qj5vj>Tl~n@YWVe=y^l-#~T`_Z)d!SUroHbSVDW0f@kqb<;jAizN#eIu@V&JzFIpeJF&|( z(Sj`m4H45m750Hh(B|chJ@?cdiLT%k@jKu6xy8aaF(1ulf>5WyS0bSlL}vr#p*vd7 zN`WHd&+h`nRjVN~PZ<=>sNxmQ0>qHc>1-?cm3p*@Zy)6VK4Mr3bt)qsHaUKlFHlw2)Li;*&Z&T z#yiMSbFK%Ev;f8LpSsj7EuhXc7@yYix6e{CL0@xKX8o)OG)@y<0O?TpeS^HH5w9Bs z%525I2;y9c!rIPP(Ze7G=!J3gi(akY;~jt;?|43QAffzbX$>8?w{ZM?WUx^}!&J9M zMn&iTq0&eC7K_@PE^VOkPLyQ6qw#~M5GjIGc_Ma9WJ)Xj>9{@o#7Ab|sEDv-jX18? z5Kbz$MK8^Je*7^5v*On0+Vyl}+kY`w4v1kO;em2 z-X>tm%@|C?^SPer>;*%?S4?xlD|6m-D)ZV0iwve7@N$a4XWE6**1MqkaX&_EY z2jYyMDZzed)w5dv{iwif!ekHvmV?%Iu5#P!{ntd`RI@ObC}I7NG$!49w||}eC^2|c znDhaFwjB-+pDrHj48a}ioCSS&aFbTio8=W1Nj;gBA0ptw{#!snD$Qd+ z`ByLIAJhVJCgsO@Pb#X-774_8#foe~f;!g7dE1q|3KpGD;#k-FdRFcUE9OYXVUdl4%GWFgRu z6l0HcU%FFc@AtYVqlFQ?0c^~;`9V2q?}he8Ax2Wk1R^+g*mE^2p;J(?akA}dADdDy zBSiob$kJ@X#B_M(u7a^O_xW#$ByUyTDcE?%{%8zufsdQK18zSW1XBaEsz}i675(bVAcZ<3J0r;4I6@ z;tdT=P3MoqzuS67#V1-tRGR~*st3xJfbyTX<;MLa>C^laTD zuo_ahG2vNFHXZB^ItiA_RW!#(_YR=SR1!B9yF76vVpVeEud4nhO+u|OKm|p?jxc`} zmJUR+edAQ8pudk^i3t!?E=Kv6@$d+rkk*!L*rPkQnU%Cgjq=ShRrj;B3`t( zvidJi+>BuqLu4SIN6Byeq)PcTF@DcPuMMMYN6osDWxqD?Pm?;XbiAmz=9shvoc^ARSjiUpW;w(_(&(hJ64%0%_%eUooN-MZG{P8K+beUc7;p zUpYbz#y@+wsr+lJ4T%7rSF@2{KXg*Q`EX(Vn-eP!0~rD4^x*Vu8js7B_5WVOCD))&yol zvyW+dJl(7*e6d8WntV+Y113?2YxW!6`2F(DP_&OH<;EXf%~KBC%a`nyYW22y+HHJh zU0?gK_?4@wP=4GB(K-Ha+CTIao2^NvGIQ$nK;+|X>^a%^IS`{)4Qf0s z%{fS_EhHq!v()P9ryv_gUhcNBvvVEL&=4~eLJQve+MF<~8X=#(H9yLYkkbA(VwBM< z8!6i+7MsIH_smJwAY`ON2ilr2#mxpTHJVj*C?Px4E0*!iE`J~)zmC?wCKV78g=0HX z{@^{RO~wddGdZzZDDaE|4HfGo-FuP%1cf&sL$3tWOLGM5(C7P9U}{CEgc!lShH1p{ z7~F{D@86iK*;d@RbIRjIth^U4d=2NpnWq(5DSpWZ8@b5|(}_Tk-euXLY2r?pN*kVG z#;4ITzrz!VO0C^?t+EZy{)yHX?ii&=J(FV%I`d8ar#65dG;66 zB!b)ma1yHjLT$9;XYEFt?4~LkgV=n#i zoj*-57&rsiRNpxLPyTa%0)Al1f!WdHVCe13g^2m;hCC?H5RXM#1h>Fkn#HQ5NHr+F zo>av?O3sb<+<0A(8UIvPHZld%W86||uLuh*_?xoY-G|?+2@Po22@#g#K1DDR-zCJO z)h|5PTRBhI;|$G`uUtq{Rbtjc8$@^0K(U)gIzM63=FvtI^0AcQXaX$yvzUn_l{Cra z4$VJq;OD*0{)#GFo)cdBkK@Jd3x4&|@s#;G4ng@95qKg?EZZ)NUxydSsy&sYlczQw z%UjAM=i&-!OJ=+u4`*h*1t#EX^^Rg0=SEt%x|(%GlD7>DsERQ z#7-!?N0K>%(tbUr9-^i!8W82(bZ|>_Q?vns>RKuc4*#wz0##h7nyU1~4|xB`KUx`M zMxM`noR7k$S4$}V(BwDW0!;k^vZ6LG^OkqZmmDR?<31ZsJMaY}kE5J<_ujug80*wZ zy#jx11Sp4vW9|j-`*Y(p{InT9go{H@^fjsAu@(0y8*fvKKwQ!HB9_l@HA~5~UgAhc zHLu7Cg!7m~CFAr2FYW_f;neiN_A#>$Z0G)wkOF3wrxbr(O%PxHE=?Iq5u$%QJA?K< zudV12c@x7C6P~ZGxc3|P$rpL$%Q?}$+rzy2A_>%Et2>^?g?>w+FzRyNw7 z`w%3I#RM8zwMblvtlCL~MFwY$gUqB|Jnoqm!MR%jVHjUx@bMl+G&3!S`#q!?R*sN+ zs%6G3J-6-hW2tlP$E_=4^A=~6Ni5M1?|^EV&UGW4|3bW|C(i{QmPGxf)le$7#daKL zIlR-^773DG>4^6tDZjr7ukX}dw<%D=rvJi*pW=0k2FN^~DZO4e;PI%K8JxoQP98j6 z8LCBaVym8o1|kbcysNO#*)jWI5qBdZ)o{@W@{kS+?GOlzD6NWEqFpNOd^bnHg`0cM z!I@<1?h}0wJM|EC(Eoej(!hH~bDZ{`tDH-(u{Y%g;FM zbadQvuqx)hFQ*tw9*BfQBYdW1Cbtd%$!d-Yd(WPzxCxkmvslSaHc8JUMNe*ee|MxY znPwp2y)D~$h>1vqfQze-qj@`EP^4XzOSJit1Ku-7BKf~j)Z{Zz^E#=uO0Xu}uF>rO zoL^_%A?GTUk3iD){(RQLT3Cc%$sVSQIe-E%uPf%oA&^|C&Xfq<**rR3Tr)3R(U=|- z(37*VDLp75tc6_zyWU*~klgKKi+dmzLB?FCNYbMl$Z}4(ro8%+M~7AI`3K-(6JOqy1HW{1eOrKY;<;C#jNh!zgRd)We$U zYkXtEI0Xqy_<5KBLh`)m0doeun3$N_W;svNmHo&2XL8;ygq#5C3vEu_)JX6-S%JhOw8Kj%}h! zas)dimL*9s`t|RSp~9K%M<+u_DZ-(w!D6xWAQa7o{Mi_-E~=jSbS(tdhgZ*3GG)yx zf{jz)8DHV)2@t{@NmyCJ*BAuF38E_S_3?NM4uoxxnMUP%vu_s4DCf|8-;438_%>;vwG5)`1hO;#2Sq){?~LhScG}lR`N#FYa?4 zOzdU~#iFukU__(NEnthbJ{_g8yeaF*#tcLz&y0TP-1`D1)>37v^n`z*_&ZVi1bhiX zNY#lPzt35;MCJ|mRhl|=;z%o%W~HBYT%JLxYqw1xkC}Cl6aIufVoee+U+w*Nf;(aG z4wadr@QaWYCuzq@X_Q62#0@VI$TJObM?zob?xZ~>Hhb@lz2&wFvt>%P<9^$`eVGbO zSjuw2cKsHB^91616)Q&IV-#mgtM?IoUx3)ZPEHG$=Qp{XbqyF1$;b#Bn}lafr;p?k z=8S(0g%YQUU3X|-8w6PTMFoXwHt!Rei_s7F4*(s>W~<{+=<$0)BeVMjhJw1OU?!oE{X?iOYHDg?&Zzb$GBu7l#VntHK_F~o zWk6uQd+x;2AQHR^k^Xc-wME$U;!`p9WlGfM6`+JgTH_Ukcv0Ke0;cD*h6-*QVL843 zjpY4yv%iDjN*3k-0fyX;`N?l*C2SfK-*|G*Q6I7?3>mTT55B_dVA*I%{ndB9&RdfG z9ME6I`;!FyL|@EodF%LYpsVm;5$A_HOCwFe`QLtm0EmrKWLpBwGjI5)bCH6DHn^{Jnj`TAj``Phe#s#8# zE>0x#>FZbWeO5B?tXE&CRhi3rzgaHN?p_Q z+AZ=*^%Ul356_R|D7=q8yXs?>XOk@*_b8+@>)dNx!PlX%D&{MB@y>qcwEg0=UAmXY zX#Kq>5TX0=D$j2sNTV?3*WC#)M+I)%htG6QW#V}q_m>-fV5u3AGx#wgQ8NipO+PDV z%%k@8t*fi6Q2MKf2kXM`F5=fk@$xa063+5O4{hz;2JFr0b~^dtbZO<%3bTBhP(qpg6o)_%Zx)EXwDAlqt5L`E|jy#b1N zdt)ciyZR^NNln8#U#FfwnfB@VP}Mkk%h?^&NUC`N0dQgOJ^=Go;T? zCUdO%hYwXJ_2Hf$QHEh(_+ZV;62ZV`}fR6x4ByHmPL>F(|j0TJo$ zmXi9dea^l2z30ATtigYRYtA*Fp5G4?8+J<%J67!{c#@t$1S3uISsvuNbqAeeM{q2# zuIYQLh7q>-k!ivh5)5y9RUJPHXol9}79jT1cV6&!ZtQ(h8yOXsQwe1sj+Q-GzG`T6 z1C%(|3KXm7z+eW8Y_EoE7{VsM4YZ}j1ooj-xclH9N(%0}hhB13OWYrD$y6AQx z|LREjisT}m?`xXs$(DyCQGE)~*e(CuZf3xFrFw-gHz-t*=ExTho2&MFjW=|WCekS% z*86+xG}8De5ZW*E#*_hz!Tw|B&af5^ci31W31xpD5Grzk&eiI9<~20T&0eyY0LZ|n zv&eYy-W{M)&9X^kHhs-5a<2R_bA<-DDYVY3g72SLWem~Q3xsX~0Q(jE&(fsiLH5lP zP8A!#pn(OV`eb{h=N3~t&~taMW8Dh@G}*^n0fymL&F!}kp-nG<>_ld!ttlEVh9mf} zr|fc>2$j5KWu%Z{2p9NEcmrnmR3LyT-Hc?_rx!5Qj!pT2KM7o4)ShV&Zj|CGTfwf^ zs?dSlgz$E+hXnG6?8JXN(%0z&DYauu5Ls@O;F8Vcw9W>=xZE|?0s3>sHEfy03Gx(( z1(H+LLZ1_@PN}4ZgAeL-9dHX|04AGNkatO%xee(LO`|HHDRj@pVl65M;Ryf2Di&-1 zL)*gb?&>HVZ2IoRJ;3BJ?IHem6u7Sl z7@PJ5UfHAb3`aR*xt(L*TKyZ9H^D@OT}P90K7MCKQ0@Yx6(TPG`ZX? zB5yx)*?GO(>~OM#na=F?LLUeF84CRij2MI)5kS5Y3p64Qc?FUZc}0&a0@*x;s8HR& zfnLOQf~H*I)=rVO3ZYP9(RDc)8I&qng_`-pWqt>XD}$B&(zFhT;^OjyS&gNYUzz+| zf=e2mf8IE`2zES_ANl=8duuMI*-#9ibU8QT1PUc*3W5w!2U242NDpe`F% z%}iX*8Dx6_BCf+7fC{P^Fvj-It|Sw^wq65A!G zxuf&9`3)=EFB^veKn?$pfIp5_cY0(rCSZ$)U~1nM7MV`TyR8_THS#HX&S{X@12i=y z{-e4>K>WVk6pj|SAymJ5k2$O}Z+ULhLx9nZ>s19)Vpn4ZFL@8=sU2vSg2E}*wbJ7b!Fu0tfv z2ih&qv02UZLzMAFl*!RS6l=s}e_LN&ZG@t|!WAy(>kpBn%yn^Sz@q+su*D62Fz+V~7a!ON))u zpj&|9wRZ+|s4bGB%dy+1l@s=Y7DDzEnj@8-2z^@tlPGfsw@z_7U2rdkf;u0)K zLZ+rgi$&Qrle^~5@wCzdHxpLWr=#GRXqV~iKbk@EzjI(&&Y zM4nLLR~CAt%!hi(`^Us*BIEx)H%6e`W51@9E-o}g2J`FZr4m#6Ma7{>{)v=PfkOG! z!G#`g@>wXR^Vyx8zkii9!iw6(h7U#BLiZtzM9Hy`ucVjS&3FNkiLK$m(SKe2>P%*g zIAo10Dwqqv7%rxus$p*cxZcV`n9%X4Hdc_+Yw#Z4E$RQAjU%``ZOm`j8qgY8OPsM zGV?^sd>2Rr%YH9|;4hUQHgC(Qs~ESYi#}1H=1=<)tEy z!cz$T^aenaiv9SfH=s52WHf)Tos5h8`I!5mrD9n?DDh-z>nnKlPDG>-lnnX<=v-5z zaJG!<9mm6vjT1J`wdtkVTX${Htzl(vd!%GW&#T((q*038$pD)8E>Vs@fKqi_`@_*E z%~n>g#;tNh21cC3Za`JLe;#1c_>641RC!LuJp7C)&88tZRn671n0@IQ?AJ&%L&a?U z8wd^@_mhxr!6ccSZ_my$|8=Njp!$F%?9+Lf%Z$!5waFxm{h6L3%w0O`+e^(A4gQBs z*-&-+xUgTrS1dvsK`Rt*(jJn1G#g9|p7SoNTNIyft?O|(;1Fy;;c*idK^9$ka0PkNQomVVFx>F zwxR-i_L4!VK|B;x-SfUUv!PtwaV?0z+yIDb4Y#==bl2jjYV2@#0071PLobZ0gi&cs z|10Ro36TMNO<-3PD}G88<-8`P-D)zP8>T~F10yxsXTz|0YKIh^miOJ~yf966*6aI5 zpF7@W$BBC*7>uWQbSMMxEbh1T$v9VoY65@~xk*t-2OuhoBOhine8T2F6;b4m<_dp1 z+Ic^!H)qETBnbqaTEGk;4g}0_DiH7|()R#0x)Yc_*>t(wfiZfnGIj(k-bn+B)Gnq5 zK)^mTS$NXmxdUc60X#$vK(cda{m%3&h8%_>wUCZ}5qCE>7qu}MBj1fW@(w)1!F=rq zuw12V{s6%g!=w*Nyh;k;|7SpZ&SUWuSr3D{5ZUUKXXX1N+EQawH%;V5T~~RNkhTS? zBDp%m3)CRhwnEfwI2Sc4G$Sss-G%zmqB6JAwbY?sqmM(unC@+Q8<05dQ?hR^d2{w+|Xaob_+4*I4)0-HAuE;tv_;9t~u3;C+^1pX;&s$Ogq(UmZ zde@X11POPKm;XGd5ow9=2l_*5_nQ=A{Rs)e)O5pCv4z15Ib9+kJ6z!ZJYk=!@vpZ~ z34sGMI9b-4tfUU^QHY58UMJMoXF(h{H=f=pw+fu2U-r9LH5UabLW)}yC8Y>cxD7KhytK9X_vBK;09ct5X-udv5;hzZkxR)`m z0{7_?Rsp@)F`YLHc2^kkb3!En?zcoTP&80;75Vo^`mwM96t`%#P+Uc~u2>N#2xhgP zRu5brBsfEaF#wgGA5CrSgEio0s_`Wm`rp8`kTKZOR{A7ROgASR!6qUeN;J zWLBn>_<_1m4GiFE|DKRX#eJA2#q^WM!a~s@doDGw`=VaNu0LnN9yR%sGWDis152|NXh1uoFhoZ09T)WXtU(D&bELCiU zZBuphk{+{vbBI42lF-lL6g`s;WDlJ0oCI!%9H1_ngZlR88Jqz~K ztsQPFud5!z3S_v6PC3uY^9KIJFT3NBm-QLb`hQu_Y>^U=_|JGD^!@a!`e>5j0V1N| z2%#JjewTwBZpFk}96urHn0#whZ(=?#hK>vUnl=JK3dhh4O8cQQxwcjVg?q|*YdD;X zj`x8txKYx~$KDrmhWZ9`1J;vARyx){bw`qcwU0iu5mj{Lb|<@2Iu@k!hVS4@Z4Dr+ z@22MHYmIGSNJ*Xxcu%?5bHE(Y!ANsd(>?$WhF%hMKI$)A={Ek+)T6cnx)trxmJe~t zaNjRQH(qKlm7A&ZIAJcwEr6tn(FdM0paZ;5^DBUOWANw+Ojw(0#qR;?_gYu0$iiAS zcL3xz&FiL@oRwbyrn;ZLwEwm-zLNmV5Ki)kOM@~&6F{Y@Yp(BPy6C@u*H3PBgAZn? zbnR!V$(N47&(HE6xFj|v3Iu8ihcJlAz3wJITU9(iAiK-(nZ3 zB-S+kv|Ycv`xs2OynNFXgqVTX<=J`2@G9n2CJKdAE;h}?IU@$=%}ZNp3=E7udqLN{ zAPTzJksNp+Kj3+*8S4*8r0-861ltYJ%lPTR6xM5DlI}OD0JZI86evwk4o~(EKdAU8 z(g~e~sVn(h@cJY?09?9|Ig?QQcbz?mu7R8Ywg=9I)X8LYhmK>^DuJF zu(iR%zGm%T3{UD~W3Db&IU(U>ZE!`~HYZSwJOvIa(&xL;vc?HiP=NFX_cEdV0C?4o9LLoOnG0+L$PcMUJoVd35xs$^f)l6Lu0c@!- zEgr5tUP2|qA#Zf6T8*X#Kt2Y|V6e=>GwghkM1NaAL*JqkAV@L@KLN|B9K7YTEpE4$ zLGr1MBjBfKkhIWw+&oNK`t~yO#M8q0te>DfyTAoK!-aRzw%2iw^xhR%EH;lZ6Edpn zJAf>f>9vYLo=T>E@9O|3k4G_sQvhiX7TNTp312nJCp`At;kVG50C(3z!AEAU^rBs> z%zX@Il-J0DyQ1^G)$0MMbQ>R zn9e5iWKKyC#ZWYQG9(8bNd9&DVnsX=>1Dzy6?ET0jE!aI^y?ZagtT=IP$%ijp9uy{ z4lwE|tL$x$UwZGJynuq zKt+7Ke2*02M|ZW%M|Q%IdhhfJXNA3DP7z;c0KsC;19T_b7gbI;h$?Bfh0o(+OtWwL z=r*HIE8y8kP|TKT!`Cqh{1bHm2sx1iDhjr*2}81EMOK8q-ad*Nbj&vtX>GRB+X?A} z{$h>5dySw52-=qIFF2cYe5fgSNf z7}{&g;^)^N1wj_rt|)0(*o2~%1!AhP=NH0H7xO^)M}9k9n4%aRwI? zyM8G}Yw(QlPc%D>xPztW^DvC*`**6b{+L4~=X~Ta;I-ML`;XeqZ9F<9Q#JtnzT>j? zcT5Kh>kv^@V&e^S-+z8FeRH?JA8r{lDUfGro@?Cbsmod9`Ib=k&SDc&+(2vDf^RX- zf$`^C+HaMaB4Wq|oR5jvYMNrV>PYGB4{~~$YAHek z#FCj0Vr&xNm>7}ccx*bdnN?f)ArX))Zr7zj2Q9BZHJ2*;I|bGe-^Ss=p2~YdCiveY z2w)U7rHr5PnNK3JQrQY}0q~X%DzV0I3s-Lu^o2j804Pz(t6gc~*D~KvU*zo%0q!hY z&uLZzeOl1<)bI*uFdDV6Is0oyeXMMEZV_&C%lX>4%WLHW^z+y+8;pQjpfHl1m~HOF zaHZGL#~!XBeiux&<%_KAv8>+(bc)trsASv#_!p0LZ3h548-4_eVJ^g2LNJ)k2pQ10 zQEnuCWl!z#a9|+(pnsW5U&4TQc0Z&1@a75tCx}Ub*~om(2z=sTW5um`tnOdC;f?@6 z=z1yp4v{e3oWUr*#4B zY%=f$_uhv;tKYu>s%^1(bTdAPde!6HAn(63HdxY@3`Ct%_)*nH)sfBlK6!s6Nk|UX zYs*78`?bEA@(m3ZBy!w{AeV)BRrg{2I!38ZbVETbTOpxjDH4TkydD&Loy`BEOJ_FQ zw23q6^#+k-5*y&fB}SK3o2Rt=%Njp^(4WOFCM+~dY8jmuMOMj}R_mu&!Sl`SqZ@e> zt^x`By^Ju|oF1LM`-ZNwOe~d$tlaqWg8vtpoK=pRFP&eac!{40^A!9Ewj!d!9}{B% z33@a&03QCR%sQo^;9_DzrDI@_?Y^SYDGE6Q!ah;2q?7(8=)Ei8>X^W+*b?_+llPIj zVp62+Y^>T1rpl^Ka3}bu=V!3umsC(;R2Fc|%Pb2C@LZ8ab?yKbqP#PJf_MKzA_Ul1 z0e}`h`o@dj``+~`ZPJq#=0$11WWvA2g%j5_F!)whIko{bV(JebyexTWi7Gs0G>nO= zreF^XbYZx$EoB%ruNKyrI_LU+1M>q6a-z+PK*@HpN;ewqU;fePk_Q$kZ>qiiAo3#1 zwBvq@&4T^_h9{bbk-bZipF61lXWCj)6{Dj!0_D3e3txw8RCmoQEg@;TpXZqb1yIFM ze^?_7g<=c!Jwe;Il2d?EtsMGRsJP=8r(hNN_iWYX48Sm<6@>4;i#m@F;4?T2*Od7r zFfDWQ?+{i7stqd3oJ)R;V??Q&R@<*-Y_(pVVvVBk<=4MG2j;VW&2PWlzKsCnnr>}f zsDB-8*d237qH1(?Fh#aFN4J*0iVTAl7wmyb5P|K4?-@T2t7b%}<;o3yj#{i*xy1Jc zB1~FW`Mr30Fs5Be*J@F$AEF~l35ov)!wr7@n~H|LK0MQGJBsIy{y|YaKYIp{gvA{5 zK!<9%r>fTL9+ZfnIhMuphQ1mHy%r0N*}&ZjQF)93r&>PkNWBHl)qQ^Q)GwW=Ur=DZzV(}suMZr7dDv#!3pH6^DLlk`?l9u2hj1?et?=M&E-&NhDf#Xg;sexmDE*VRVT!MNT9E{BIDv zGpxi>3t%t}I3l`EOI!eAHc|2fs>YlnB103FxS`*c8?01%eBQ;8t>`NL3cyoxF*~VY zXc~Aq1-ErCAbY116bJz5yzx^pSD+Qf+OAu&QLQ@yi!0^Ukg^y>0LyVoI{IUAN9cOK zAJYuw45KX=h+>rE$T*-%ZhP_u;o^0m(id;LbEG!7)d@1Go-n9yX%JQIF02e9zcesCH4SSplhE@-Gv^{!U|;&O z9NqxXwc?}~SA*3+E?ZQGqwl)izW7Em@O}lBtuC8?YYvv#D=V+~T(PF_i`m318l=MH5x+n4gPwWODWmwXTQK|d}$em(!oe;Qv?=MmX*~ zH{)EUTK0F7N`n&!3qdGGi2C!!;^7BMiYA*W!X>zpbgf#Sefd5RE~)b`V_U%!qO==4I^DtH;dx-kqg)l3{t$_Rsl!jES}$wFxc z_h2$*uSX;v2y}etpZFavGO!@4I)3 z5MBp2t)_n+|510Tkd2s(UDcG$9OksAyc_umD>!pMk`2sx%TfP~zhVwju$%a0S!iFs zq_Oc)zjT)AA;V4?_f&cnsB=!jy7Ykwy@xPK)=cbQQ7{TBeGEU)ws-!$JN3)%6z)Hk z!x5IcDb3&Rhs;v=R!a#Wh78l*L7&q{DG0FC3hrdY+_5fH9)GHRwE40Q;n1VlW&%t* zAr=DqPg3!v^3esyC+$~h16>=iU;?TH>Zsgm^3Kbws;;IuA-!bao@32{7J9$$w?o|C z*vjzKce9G}Z-j9BRz(6O%xZ3bLu4e|H5{-pr0pYe-7!?AJA&dJXdm=-+2L$h!56pu zo$l=T_;{4%{C9TT62%;N4m2wXY0r-ytqslA!fdG{WHXp2dImuqikOD_`K?I;_^}PUOE+Z6Ta46 zdZ8YhC(oGtpklDeRLNH{?#~W}?@1)3P@o-}nfXnNQIPm$;<+bZrGW-kh-_A5j#J5hyMKw%n0=#L;>qMZ!rP zbUT4ISQ3RW>`4COK~agt^%1nR7r=dZnw@>Vhf_GG!{xc&Jmkvx3A)@@^6@O>UAD3q zJI5;_^8C{sC+ZzG%&a2q(VsN@s6bw~T?Vbw@qH(>FRi;N;R!OvrSf2VOp~JO&wM|*BQ>{4ryltaUg6`JiUS47k zBIb=?yC$Yi$8#(W%0fkKY8=~vyG}Ve>V8x5^2tN9v-l_Kpi`EAV#N=w?eu?cc1|Ra zfts1F&sPkvr&r0aOa-{yRm1V-MSC*4EUN?a{)EN^Sle#I7L%jhie%wt4E^*!p+{0e z0%kd>C2JOu=~N|VUZ>jDy*m|wsiP%KW?i0uYuUv^nTqzs24BQU%}I|_;lYxOn9tZIv5|4NL%S5f2l6SU8#ef=YV7BbPryBkp#gnNSS0H>4s6{17!Umf} z*oX!vtnn(@HNytPe>Yi(wce4ro3_BzyDi zWnd_x{Nw88Xg$qO|H+?hlimBK@A2yU!XR0pD_gCT3O!KjbwP^kv`{9S#M+i`+dX(& z@H8h?B`fPS?$tcs`D1QSPnt6FTaH8TOKHB~lLvVNMSL@>CP5C+J|*c-D_yzD7XKW!C;@yd%I&#%?)2CN*G=|LZ|f@Fi0NAa`gyE=$H*NsxCk3%&Xr!{HU#?1AA%G(M1{M^|{bg6yZ*CpxPk@cR{HRKGk#gzDvd z`uno6Hkz(b*jne%!aGG(xTXF$ZrWymXIhTxiN9-B^$bP^B)m~rhm1y;vPzg4f)_sk zviOoM^8eh~-`k&q{#Ri% zF`al+!hoDib=7&r)wncN{de!E1Xcgi2Op`n=XN`J5P_;4gR!`jIV;Z=XK%)5LxYC2 zwS=kSp?tnUzm3^e)&Qy5Akk7cx<<)JPJ{@^;H1^X#0K!%>lCpo+4nyK4oLI?B_(`o zB%kYvmgXX8A!{}Eor%8E_;^@4V}LlwQsvJlDt>N0&o}#^aF;goJUr&<#0b?M9kb-T z8S*er={P1f`WC(LBiYAtwP0Z2Lgoz%60S_L2*Ne7uEC7G;IRFLrE56pheQT20~r%I zpZ34@71(2$c;JAaK}i05RRsUOI8z}J$miR;h-h0~$%67KHY{LhQ9jmi7lj$uU>Kas z*6x`rlbhZuj@TM4vwTmohr|)wMoSan5gvfCBIiuP3fF9^%s$xg+SciB7N{b$9WMi2ih;FK211FSh9CUJD3|2BTJ(|-_0NH zHAI(;zXe`^Dv9`3iAA$%g{p<0Y0O8}iMh)Ak#fdl(av{a8mByW^{zJ5>>s^6Asm!; zTO(bE1h(C;r-nLau9%$_zOHCsR=$q{JT@z+spHSH+kK28%C~L_iPu~!&ieyEPlL4- z`!4r!B;_gm1ttGf5xi)4sT##Eg*~FTR)LI{j;vzCB;^#WdG5(?PiXiZjCoy!RRQev z_XUKd22$=-CL2Z>UY{C2`K#TyEqztol9HVcs{wn#fNmA%Xs^P!4{fE+8FpB?P@36y z(yjmV?w&v{(@&uN;F?Z+A@S5Pr<0_wn!!93FpO~PGj%U2)S*-0|NCrGN-GzU^)<%D zZ|EldyS2Sq!hqN(f#{E08(i4G0*7Mxm9)OokzbI@S2Em03hXB4@&gx`80ya>LSC>? zz~jv5Q$h&?RosjyVIDZ*70bONOUhNEI%_FOG)75yz@<)CrWJ zKU+RyL{mQ1e#inLaT8A+N>?+m(F?W0H@(5C7KnQjnuO=CcN;Irnq@<;9MT!<%L~Hf zQLufOC&Q@8%#3UNQb=q!l4+U<*wE4+0>2dhom&4rPPiHYeBT{I`-2NJe3r)_d=y<} zv}bu6tdysA20Fh(y@|6I1t%!C=n2sWM=52zHTIO(CkO40re}C~*>oa(HbQAU9jP)F zl%u8t&mTEc+GaJ`{c=!F_}9CurYxyj&|8}$-$T7U$UT9h~rX<|PV6JC>}sa+-0HU2YR zL3KsZdj&51AxWPI{8K&0n%!T}T@U%6E!yTm zHfy8l2>Kzi%hv*U_dhod0 zE(%>gr(0G;JSX^>x065!oU3Fw;5%N_0t~Ru`l2u~2y@v1sW(@*f{qv;hbZ1&ns815 zO^vclfjj7*Q3)^&0V&{C$9TQrF2oE7Ndc-3F4*ma8%a->1MUu=2tBU#=INw#Nl_S- zdJYQ0y3Qh9BXjidU~jK*ihcafoX+zyMT+Q9dNH3~1~oVx^?xE#YB3=FJOvjHsEHRb z4+_#5C+b&P@TI+}(~4Xedit}$JJfg%QHw-vc!i_dMaB%TE`GWuhoL?;`F%1To_S`c zfx81NESKdc*u~7=J4`FE_?j$clTU9dAUt6R& zYfliooLuf+p^JicH$R%bM(&)>bKcOXvZWh-)IMpEeD6C>Vq-|C+RWvI=4*z5bay%e zGdWSYaGsc#fXDdn&-#WMn6yxC@z}8W&<2ku>sm%+3^{=QnUhM8TW_i+l+VIaYEM$I zn%;`6>;K|?8s^0?mWFXcT%8fZcP&WXi<({eiYvprUl%d?oG8qWAMx^-J5GX1-fN6i z^^iLqF^?k0W0H%9a4yxmlTH64C0fAn$7$z)(r%7?1cK(HWEAr zb?sGA94Tzt1my4f2z@KQiAT9K$@zqr@AvjenPh34MXbc}?jbK4KB`dt8E__wD){I_ zAx9)1her5k^QV^7N9xELBm|A@k1s~_0275vw|e&nnS*JYIO;fo=Xg*N9|6puIJKiD zs2GQAhk-Pk&K|* zWf%Pxksd#@Y3++lh;V{07l`=sm-agcoVAQ!xTBZfmUdpG_RP)j*U+1wsiA>KVqhod zzaJ=&KdyHY??!GkHyBGsa$LKABqG!5wHJIV`ny<9k(LFoKm=pm{&0;9 z&o=E@N7GoBha1b(hLR#PCq+Hcy9GArqH?p%vx#1c#S6hoOe4wuiA5iA|H@nb>uU{- z0(^|Od_kBUQY5-qsDFx=&+?J!cYD$B#DGn*K0QbTp*gM)*N2$PCj5b2bDByf8#jXK zi371#U?%PUSrCEgOye0LD2ddKmD^4T-#UDaYagEPrvZua5T-TM&j#<*O|h2;D!A+tc_RzHfzzo zt0y%eYEdBFwc~^_hcw1fQCXSpA>IAZIMCj>2b(^0ME%AuXSv=wEp9?`WF2CCYz)%+ zY{5<_u~w$^@{n#|EsvU{XWc{9cO6w6M^-I+3QQCpaii6i40fvZg~C!@sETT_*NzeO zqRaZP&}fEUW03W3PF|dn=*ar{*4uwrAE@6k@HhLF=kGG;-AEr{EoDb0* zG9sTmChRH%h9m_!%-fVVd*8>tH%4^7P5r>3$n%VnJjKc|_T3NipL)I9c@G-d?Y0$i z-2N-ofmj1iU5!lz%DWdlAc%*8ij(&w)*^5^uxa44=U8U5b}updzmlC8bf5+JLkvs_ z`XjDVJ@x+D?GOHnmxgc!^fS=u+W15C6C?Z|?;9CRF(H;D7N1 z&!iV2@^+lRq0`qu=AaF2#`6p@3=+-oPOUQn40>p?Z;SUWJNAxn-`7+FZa~-@$K07k zINU#R%X9HD{AH2n?MJH?o~EE`w|5oD1azUQs}%h^L1;92eRQ`wZIR~#Ur)U$e{ooj zRJ}@YD7_<)zl`h?)i6U@ZiWK)&fm?69V>&75GC4eI9E$UzaAZpT$IU@n8>tZlB(+R zGsuMHzMT3``{M6I>z4{MLk-+z14oNR$%DakX~2E)7p_vngO+XEqQA#+o;WATwUh=1 z`TATV<7WSKrwG1ImU+7@$v{|lauwQs{u#pvE%{RPVRW9C-=lPr|cCFAsZg?$L?8qT6xG1VpybMZ*sw-YhGy zJW4L`q!bvI?hORZ}>UromIPn^|IeqJ^L_oxJNLb06Ldp$L~ z_3!loxv6VSy9&bzog|mKjytj*rkn6|(+>RYW=_$Zs0}A!-04R4f2@rwX~#u>N_t;WdF`Mm61g{_S^jpj(j~!W3O# z#!GbMa{z}3$4jawf&ohja^e+F1qognnc<5j&*q$(nxR)B^jsuZtP69a&e~*;w13WD zZ+QeRpc7Tbp&c48V(Y7)hs@hnIB1g#&w(q!!$Yz;G>D!Jytd?B0mrUHA;aw>H#bOF z1yCAlPoQA@J*%*gxH{{XN71q>ewebYsDB!}8}0X0GnxVAGLj${1)+`hrmwE>(pfW~ zM$bXd_W5Y!y6p_}5noqC;1%zPm|)8POfDy!OEL57j1##)+#D`)7`Wwfg6i6qJuB>d z^F4-WF6kwrZsP)=)CUaBZW{h{n$x2b%&pJONJakVdidEQvhUgMexrCb;j}pvXN&3~ zBa8a+%}fXu`7=r~6_Y^5CG3;k;{3zaw<{f!LUi_BH}8$aP|rqjj6%c_Ud!(cISRVU z#^ph(5tW4GbSvvb#LjI#WJqA-ciZf-6lU$c^WZ%KON|a8x!@KDL5f%JeUX!|N-~>3YL;){8LZ8~+Rl}X`CHd8uZ6IK^~Z%(k_`CpEgdOjfpS1i z@H93L&;I$w=ZT8N5X8?E(DE96uPZa?>*#3JJ|J^ zpZFmmW5pcV!k#G`GXwHS%;D8liWss{%F$>fzlG&myFdZ$m_dwKTrbU46V+mtCnhXg z3S!PP)C7F?`;)hq3Hc?m7Px~`&1JvsHvkcUb@vB!x!n%~9N7nF@AK32{z$9F=1q>+ zD9=2<9bt;nGZkpThmZLXQ>|i#frKzmUsi)kiMF-YTkjH6R;Tw+k#Qd>VfI7&*MLTg z*;$T(KNngQ2YV1-zeK7(pJU2F+EYBF&3DW{)W?^ zSa`6|P~#Y};BZ%M_V#W6ilXq&7R#giy3Gg8u|cC}NLz5gaD$iejVu~>q6m%og5JV_ z`^IPb4Jtn(c!Q&78I7mWHOs) zy%YI=5D0v~ezjhM&v|#Ygx9c|^e$FI^WKjDLL(ze7EW5Mb&fcNb*T58t-dbinH?V+ zuA=r=^w+NoR5*d0rVh~-cZe(Z6}og@fa`kSTL&cSc>9IdaZPj$in0EFCKyn0Pc&6D zgnuj*kj>3d82l$o?N{9v-#w!jSq?p5(%hTwe`YY!f`5^yV*vfTJ_!UKnS z-GHi==wZEib+_{LxUArS{=cikOpzn;!uqtO?5T3D z*Tg0{zcKHV?#lr!S{dy)`5CPuogoMzB}-;ijlX~g+V^OCvQf39{9RBOZ}(VDAA0BT zpQZu@^wuALLhpy$nwhTN?KPTNBw`7af(c^Z;l7$8`9^Kwl7HDJ62 z&qEgH#wRtfu5)PRg8dU!W;lfD^&*1gsy6lzar1r8fBZCr&T?VR+k!jP5etbWy^ zCt57Lj!HY4jtps~(LXnqW%LStUS?b9Vg5M$qKWqRO2V1-m<4AGDV%HtS zN-*gDYy-po_N7@hUUiLZncO`EZjYa1ChJ2IwO`MgNHE<2_x?9rFJ)DqtOt_yBAmA8 zKYFEXY`TNUzuwUD%c_QJ(S~yVRm(CT1^8Mk>S``-$_OVnL~-ozWO&5;3Ib6o z3X1;JKv%1_)}jr2MEN|dCNoUVN=SH*hnsaLXBd0#1!Z?W=@d^IxRDVtpE`ua^rP17NJOtbM=8k1vO-`wyVA}dn-?n~kk8IHm zOl2yJE%%D?U-4qY4PR?R&p+iuB{3--=CdFZjK5_55x|~dt9YR@&j!$Vs9|-08HDHp zM}F?$NqTXpnjT=faUxMJkMt1?tx#6d5RwcHBF|WwrPW_Hq_~-+#q_tX_NtBHL|BR^ zFU6l{?v&jv)f39{F0mdWbA$tx3qND0DAk^%22RTbR}-Dlu-otu-FYO@)VGdA!c1|=sSnJCScL^?PDyMa+4MP zn!!4`(PR`Qu+ty!QZ|s_0M~48M*^+cfU zzui4h4s9#r&d}F0okh4rG;L5(RxR^*b1(kzkEdO}?%n%a+Y3?w* z`Kf&Al%vmMpM($@UYpogz~>4_+jRiA24rIh2bAh*)Gw{Dh!u~k$>625z$q`0yxxbz z8ytbQ2toD^ra{;8S1dJ}QMs;-4yx-83#OU%L!-Km=S)%)W@M7u?12=%_JJuDwju1` z9eKRDeD>z?$qSYD9Hh81LB5j?WOK>mRA;qDU?2~+(h?e79vI_uFoWUI|*@lW(j%W?wNC{lhK z>st~BlZ^qR433wQ3stFG*#-w$?=<=`n8Rbb|5hbr&J&~AQry;_XH_6uB%FeDn}PIA*#!?nkFU11%F4-xao>NH~g&jTa+)s+P`@L5uhOUu^o|5;UO zkp)&O_Kw7+NmQV#VU`%X0?g2|;aUNgN1hd-`e(hnMPtO9RO3ysr1nmOFJdCQq?_XV-uRDb1|)-28p}68 z(ulgd+VC7L(aax+H(i?OjWj zF|#W1w+|yb%eBcT!UP(DlHsb9@1a!6;!~);$j|HRl!;I_bLsTuhSVDVkFBo^i?VII zC8c}l?ir*(KyqkAS`d&fK^o}}$)RQF9$KWOyO9P#Is`$bLrTJZ^E}`C?N|3c4t|V( zoVn`Eb*^RN;@i14@$0sJgDrq9SOhcgMC{<^^H`e5eyArr|7V=m#eC(#+UIe4s$&PT z!n}^vy_dox022pKIk!B-Na9Vp(;tscPX%dHF#@0VtrVS9fOzZi05$nx+V|%GQqLp_ z8a;_1;2uO}ANjf7EzrtX@V0nk9LeE^oBSa3rz5S|792pWcV&};xYh%$RhP@cNogX09 zD_-HOsFgq*cgD&3L32{WW$t-;|4Na%P1?daJ#sCq#l+Nc$isPr2Om)G$AC&6H}XPMfM*P^pVH_=&$K zdA`1i$i#PA`COw+F`rT#2lB$a!Y{1o7wBl*Ys`E{e?Blb7c}0v|8N21Ks94fs=!Ba z(+%q~3AHxw$A#H{_MU#sf5bQ8B$k#H|6|U7sA^asl7N8KUA$0P6!c|1NgP9|Ek9Z zdtri7f4nNEK>zTJv=AC&F7cS9JabiV1CgQ6+EZ;JW8?JBJq6ya7uK$4U4<9jFm%iu zGeRZK8+BQXh=rnL$a~MXtHuaK^Vy^#doQQX>$Q#C4APN@TQaIi8!0S&lOb(%XApcN z6t5fp^5f49_H{ct)Nh)1&b|{UA>IbPOj8UIz{Np34UyxG2b;L4fVr!A$5n}Cl`wHLEXv$p8MK0LZH0ci9BVgpmq)5!gT&?zZ626o(MLWz!aw95BA1j+ z&?2qo$#K>aQi5-{+v-H)p<;od0bbvvO$xGKFCfv6Lkj)aQuP? zH%=sufRVnvdA_T0sXt2aP?UZ4Aie@X>_BCuwhQj~qx?l=k2f}FiJ@jhxajmj;ElfzX}Fgw?=iB~>!z_*$7 z1k#L?J}A4Po0FsC0f#ZG8YSizvJjuOdXmonZZra)ZjR2jf&B^rNqOv<@h@o1bzFHJC6pk2 zgE|Y+*Ijw)uRR<#5cc@09>-ko$N3~x(e^ra@F=a8*(41KG~1J|2VseBh_?#2{PWbE+U6-_12wRxVpv@&i{kPn-QcUW|HA=n;jf#d3lHNN%*QPbYeC4uq1 zR*sp(SZkfDU!Kq*M}?E7uwD>vT6PoVDMt50<)uFG5Pj(5C36&`i;y@gpRDGep~$!_ z>mf)!JVa>Tu_WdoxAzo3u|BkuMEFbrE&O-LguF8F5b_7m`}Fz0{}!JB`+})?q@~`| zC{WVss-v5L5PQ%lMtbdZWclhW^kgQ~P=){2_DEXMEw~2d6zl!#0=H>yy8V$jbE^J{ z+JHzGv>O4ue2339Bv&ZDOF_*jSAq0{}o@+HaQ1#Mch z7Bj3%+tl@&>hrjeRz_|rE_{FvMXRaQ`dwvx+ccMaoY)6q%hHP?jJ|7TDslsZr4uHE zFJrgXW5Td`A%Ur{$vK*G+0za)y$^>o(p2hH#RiCx2_iM!Qg(uGukcs`-!cu{Ocvvl zM1H;FrNA#DFU3!l+kfwwzZvdpl!^}NS4Ng*egHiV(Lk@_o(X0`4fq2(6)Z#umBK)f zw1p#hVsv%e=>ey#nWG7CNN5DQ54w%)w8Vk?=B7DCUmZ436DY$HzXVyFoH=AQim350 zvG=zH9i-hH(Cptf)XE&L_?8tmqR$bJl5btWYy5^L&VLbSpbXZ_kXZY0V_k}`O&$bM zeCCL>3oXA6Po||KC}!wqHY_Mj_Ij?}p@zONNg8-WS3R|x$p^3cUb@3!lJ6JJHmCp( z$w1{BR;t67M*BogVx?3Ui!2_FsEJ5DP%Qz#KQINM+C@EP;_;;I$NORthVM!wzf>AN zb&ds?%mQxLiT*O9ED0#cM$)i@%ghmRG4g^Luc0bV`o|c2?b>`fNzu^d_>s850{&0R zja7Rj8yFYG@M89L%)?b%nL@uttInb0pYv^S#9gFcbDH5#R=pPk@XjmtJn>=%)|mR| zM(j5Rg}E}i1CP(5oF_n-m!gA5giLJ(>nkFWzWLGDVJ^Rd@qtP*;rACGO&`$mgu))! zbv#1^CL_r_dOholSkSi=;(o0+je>{kuL-lcz!B2x7(|N#6<}JpaaWfkYF5dsgt(^) zhGnBP2Qt19&jWVAxfvZj;c$#3;R4nDnayXKEJf5BZFO7PqL*b`WuEzU;n(;;7kfr% z@z07Vuqy{x-!Zk^2AGXrgm(z_fxSeV=XM_-spxYtOx2rATw~CwjheI^?;Mn*-W|;Q zMOk>1)Lv&sWw%-kvE>-4C`^B|czv-V-(eaHT8IpB_Dp_= z39P_5e`LiQ|Ka)at$-ZU(F-k%DWw_8X6*?es1Z{;Q}uA`OBM1}kT&M??qCHCw3vfv z>N;|G>VhV4Stdn-Bm2Ond~g&oFMpUU!zZsR8>-1oi)VMYS}f#B0xDYC|(G=4FSMzKFE&((1h(h zuR>oy?d%zYq$V;wj>+tHL+7S>V|_grHL*LlUpYc{TK3H|RKhIkgUBc5BB<}N^@^?W z)Cu&Az~x%6?k-43_+Z?p%k9tCP99AAb-a>}#*|}GqKvYtf_uWrh|Y78x!s4ID~cHU zeUr`qsI}a`fl16@s}Rsijj(QbK~*ePUTm!UvEvuEK-+{REXJcC3TgJHnm{LIHuFe@ zP};Yome5&?MPJu+r;qZ~8%{2C2>Wk&OY)U{UhS%@@aFE+XIfaN5@2K(QKg9)!s7KX zQQBX>Y~Oyl9G6HkJW6XIK61g&AMX{QMuR*@zJNww=jtp56BI|lySgggK6Bs~PmdcQ zJy7F&P?iH$0?#O((G`p#+lTbH^HL~z+QK`aoJWA0js-cGcLQ-eYsYfAK_EPA6 z3w6LVt;UnDNrTSeU6GJB`>L;4G|^*uu@Wvk3NSG2tiGX;l|V7tNyv8ryiWVC?)Jan zgGvmfD8NS0lSt^O@M58nUwNprmTUJZA#O|_y?b|F6);Eo#&pj!w*=#XI?QEiCvl_Q z`UuXD6XD$l7CORb6$yV-D8L#pGn6>N35Y*xDiVrTt|p@(nROsHO5?@2l~% z0g+s0>WAE@(?vCt{12At2#`&_;q6=j>>1$^%VTe@&m)?-?&1p>`lT!aA)s%InJtvk zpYj%Wl-Ke?@poFKP(JqKN@KIR?HZ!Fn4v0TDh(&>aL;}Mh)hf4WT&9LPg4absw&QE z13GgJvk~1~Y?CwY{>WOKvp{&!@@*yrEZSUVN6R}y0H`hN&!)fnBUNJv#wXNcQNqf0 z_*r)vG5qV~qviF_74--CPFeA}rP8ObANs>^2R1dmdssU!K|^qsbSJXX0ruS`F?#Fw z#&U)83eW3zMEP>r&m?l03F}ZdXiUG8A#;9t6OpZ0;P;q*CTxDtrd5b-v4Sf7xubvf zLpwV=EeboGxhdl`wd#`o*}fM5?@?*LM~v-YspotN8~+qkGuL5%b#^|T<@xeJg9fXa z;mx{j#X(=?9&Y6PTxcuYdlZc2r6|qE)9Ur5r!?h9dVIn3QK$z}^cTxAI-@#W-7g!i z%rcE}Esxg&Dwu;vMBgUx%s!iFea2EO>=>@|=7Y=bE_IME4Lank`55!h?EnD8!BE@~ zka$!K#;}isc%uE|9>}likpV5$5xF@r?2W-DWI2eW46T^$_278r z-tR_nOS@9y&0suzp|oho_#o$E;?j$!Q12(*H^g!rmvpY*7n^KGt)_IA{D3kGS#YY* z!$WY+A_HIQBfv7J#+5nrdyj5d_eDGzH!nb6Bie2x?JRJJUx7K?Y*^DwXhe6N3yBxu z+R?tru5p{VIgt=U*ej5d^DN)E7@9N%g{HzA9yn7(hEuRj?uG&dr`Alx?7k)*EKX(y zo{vepC$+aIx8Vv)P{Z!(SSf_iMk^uY&b>oL zeJwkv0O;%Ba?nwYn&=ENt6wz*U)L=9;VMqVA+noQ1JL;U-N^jMn`fy%WydQn#y^Rn z80=&}>rp_PwY(aw+rHSwTsQ32<7z90W)b@iRk_v}Jh@&}V(27q8Kc~(JBc$VcfIxf zVB|AKuPUv4YDE~2eu_x);u%wm+{F|?)@`G7)?vxKh>lUuSzo4}C)mxT~L80Px;L+o@xlHN;BkA8m}ZqXm^ zHFaUvloEyCXYhdulE1=&A4E3Fz^WhhfsY*b*uFAHxDQ&oPgm}4^`+!86?- zv51c2Vy{7KJs&z)rLeeQGJnC{pEc0JsX3((fDeqTVOccD@_FF6V28x-W|S|xxxAkt z6&tWn=o-8V^2w4~UlkBgrVYFP(0{8YpENCo4uK?-IXI9a3lam_lP%}W$E-b?b)>04 z83BL&t`3Rg7vzqGi&RikB>Cz+d#-Q!6hSzl;9JRlFbr#rnvG${Nd=iU!=cwsTjk1T zn9R_kg=}&NnEtRU8o&A9$;W>a12;f570?B!grt1?aWN+#uD8u{nSn;!D+&zE^F1#= z32M6{4$KR5WKs%t=#b;*SQ}Y&K!;2R95Z~A)OEK?uVL$)ea{^IRf%T!W5WYwV>3GBzaKyVX42#Ct&wJ1nD7DE`1K5jX z=8I(NrHLYG8g6RAw4Sr(a0moG^PMnf=Y6x@YZdn)=kQ(-p7uh`Qp@E_O? zV$YdjYuVco#NW@<{P$n52v#Urq3Irej^^^unp<_GS@Ob560({4BE8Lwp9v^p_V&70 zHlhT>akZW?xoOzpg$(ju!TG6h{+8vqE4Hm{dcmF1%uvL)?H0P>7sW|b$R_S|54oWU z=DLBmjf&=6!1FifqFkJXpeVybJX6U>9)Ztav}nf@7wloa+{{S2YI^m)LNjK%EQ#~; zsB*iaA%ehLVna(};L$*(v~89>2xH?80EvL)rJ4Ub!Mgw4^*C4~1oX3fwlKa<1&U<) zJyB-x!Ow_YOx%+i0Md8k#Z+b&KU`3)giY(WP&BQ7?r7`Fr#4UDNKT|_(kE+L>`uG| z+OL)C4_W^{2vRG;*I7I$ox8QJnHu0dP>(!xT@t zBD-u@#Qkw2wAyzzLa+|O{=hV<_s%?p)%27!VV*q>0Y38^1&||^S5HVRtzuZW%^oJj zj9DvMDt)Zoga+rQH;)vJ3?ouXK98HU`Z-8v=Q9*#pJg;N{rAD#e_jJtS8^PpXc4ov zHBveMdV<~bHqHea^R{zGZ}%l7q92msLzyUp5yL7hn!~C0BJvR^G1=cdon6X@J~?!y zwNzj;NiU`&02qCgtmCFfmL9%`5eT-f?dDVd;EpfJAllR%!MrTptW4Pr7W%9m)5JLe zxlxc-#x9bh7L$cWX?gU8R;xk{sD+PJr-GxKR~+6dMru587GpPdM-~0ByXz0r+zHvd z3&4zQp)nXr-T9b&TC_KKWhU7rL zgT~?2Pu3z?NoC+&Xd6$!hplHii~d3Ly-bi$RI-20eby&ns-O;(x4*)4d z=rfmYx|*uA^s4Yr2-^^Qy9%WoLUX<&VR+Gi-!6PIV&q#&HNB&+}gzbaPZF0Vl^g9g?pPpz6PWm8rlkdNj}NUAvhq6m|}^KNF=De8aEI@_&Tkc>ofgK2?z~Rz2FvAluR1uNj{R5yGzn_ zhO*gHK$LP4HSy+6-L;Irpg5B>isZJ?q?#rHT?R9eYvxJk0!@i`iwo@&X=TGLX}kLx z_8HoPP)Gx^@R82(+a8c^wzxroa@=5%H;d?{>=c-4Bu@J_y1qqUBSs4)J+qgD(EV{k z(5bzzFJX4{z`O`oT|{<47CzOj(a(es-!Vu@7E>6w-zTJm%?ZGc{3x!Jlz)ugMexVD zCNLnY$S{;%0CnEIVf4^@q{*&a?jk_8hPbPL>`E6SE{ z1)4*+!D>!ZT7cHhoiuMW#_Il#xu1Cz8wb#-RMoJ~V9`hlvL!5K^|Phxu)ZL5VeBvG zq59gCpfK4#Z^hh}zZXf)Hf+UiJ6GjnGFi68FX8jPNtXcyp*BdC=NDlO&(6-CS9v;2 z*ZSa4|^c&wf-l^W|xlOJicixFRY}N%+BqEYZXUVnZu*FjEwK%64%2n^wQ5yd{BYJo0&R%65rnC5$x=HQcsWOwy)ny3WsA2cu~DF(+vmp8 zy60iG`VME%h~zKFxRLwg-WxIU@~Auph@d<+V}%=pt}B7jmzrxJ|3=d=Bw0F)DGh-(@tT1{QySf%^uW( z=>+i-p~|&d`I)nGf+lj;l0^{Me+%%>;v7VrKdl>d!SB~l1Q_)4K{lvZGYmlkNNto& zS#sfxAoph`B;@*>yCk*gaR%sZh%RRA)f&0@S6!+oIhyOr(f5&!sb;SKq7-P3SOsxy z^Zx3CSVPlny?{__Mm2_e*~1Vx&`W*v#uJ3bIf6>Q^3Pb#f7PN^Sdh$MCn+dA5P*+R z_M!AVaMFP}-hv*F9mzdv+36Meo|54D;b7X!(Ogjs+GjQWfZ=`~0)7By<7m=)j!bE* zn|kCgIEwJ%_lO|i|8deNrpq@pNHHle92~yXVqdoiKy}9>Xt(&NQ0^0PO|fjsX9+5- zCQg8cpiLra^ng-hk=@P0=0Jj<7`21Hf#{J_O)=H01qn{_Ix>sVmvl;mbWbt|`Zkri zh>#b?BkO8{i+tdoAjRf=OTnFtg^!~=LvHs1jeNuRK+P~C9A{^eKOYo?lxpjA?s_^vB}Fex2hU^1K>h1Q#F%<)KNA>*+OZY zv$sDRC{Mk_)Z)#?4~7{^xG|{(W00afE5nupABCg%i^)M6gmEx6s>KOF(e^Pzh%dPm znCmRDyig<|LT>V@bkl0)uH7-mfTonj6;)^?ivnGvb#9wtRAM6bnNLaC}AzB z>AzI#?bJ+|c1Gs)CU%xa+L`G#1*aan5Si%H5SB9JjYLe?zM>aII>K4qdM%a~nY)L> zh!e_wY2+hEl=MX}Wl(3RA1ndHg{-s9&dGrTBoO2X_hl=5mu<6KbweJCJS=T zbch}TV^x!|No8X7oD0ARjf9{B+B8{W3?k96sQA6GIT`EE@7ixEGnk zILuMmT4rNSUey+f$lDJ}0-PX6;aV!x=I{VuOjOaO`M{nJ9Vq&vqG&m>{-&VWyC8I< zTBl|0tM7JF%ZSg;&T6*`@|k^30BKsw0+2{20SbJ>tF`~nnkkX%{Rn<30a6)bZdr~E ziW#{(zziKhVg(i-OqNkWmPGtDXFtZ5Htb4==QpWgp+%qeZzBr7UmDfTb+s2R=ECS@t(d? zF`jPa)&j8xbp9uu2BsIi9+MWVCyHE29eI^}KOA<^m965u5rWCc`&VUWY95DwEhsHA=m&x5#eD}>h6u_^LmPmu{JkXtS7MY8l^Ns z5@nGa2-RDCF&6Q{9Ujno!x+^7FAYWqYV~xOF@x+y*Mfq$N4B!i0u)C{Mul!MR4h69 zu4kx2@_>m;rGtlp`*mf^z>r)0E{ zZM{MEvw>5Hl0I6(k_^$%x4dw3x_91AkpANrkM4|?$zWKYu%1Gb>&vyL9J}A)+S&P! zfKPpEtyn5V0aEbir0fE+D85+WB971Jy?FCy=sr%cgT^k$Wz3_v%-~Ps?|oegyaQT+ZMDO&%)MH&_x!C`*W zP6Ukh5ZQG#OA%I*e4!2N&Oxe@9-%~Z)KAF{r(5Sh4&@yv<&2GCH-GWebde%&v7&D} z0|a#S_GicyfP$oq(WOJGdiWg>o!Lu|W|M>J(=nkjGibJ1*C zGypi|5U~-~E294a#6WT{cm<=;{D`3J6fhmHr(M>|k^Y8F4*L;C0J}9|fvIS3fu}+ST8n^pl17;4@Bt55tsHsvZ3$G>9z{DUkKAbUOGk zigKR|pyKnfWbj*n+D`d!H2<%oFTFbjpyPtyfR-i=Oq1$7hUqm1qa52PVJ-ZX@oqqu zo(yJpP=yUMJlp-sEbzLm=y5}g3z~WB#ao|{0c0(j= zv#DA>Y{R2I_V5Q0IHm02?ydhctP`E+#M9OJw@8h`gBhO`nMPP2j zc^w+g>I)1pw%jyh{PhNnQEV4-0PU2I0sX5I(+jmK3AF%a4!cX%w!%+7hfs#k4GjKI zsd-ZfWn!3E1xS2VPie}n&ynExjz25vjx)_6mhJFvjpM-z^kdF z&uc%4Px?<$=7>mPOS3{9CGvTCIhC9dgy{Q}t-lf*X$==>E4Bck6|=1IVU=KIX9)V+H1Li2Q%%u|;a zQzEW*4pcSA8QMl_rFQ=_TTsg^BdzRy<@(pePH;OKe6D|ge}C`SZq-_=tc(E}mexs0 z)Et{SN$U$@`55`(-(~|W$9bl)q_S{4qG5z*JMYFW*;Je%I5WiQ(ZLzw?ZIDgtYxbOb7f zX)q0EzVOUPm^w3IbcgfBj`KUMCyt1Y&5JAYfZl-e@}qF#?I*}&>{xmvk%o~WH(!=} z_$6$<3N$h1Rk}Eu+j(-92Hu|_AdY%M2h^8Zcez~^|8R^Qn84)Bucv?#$Z@htg4Z{6 z2q1kBMzOT3I{08eHbFVzW$F*2^n@P#SHlNSMp~{$24#E2{j8ZkYg`S}gJLd%Y2Y~H z%t?f;^DkfJ$mJwD-8{r$+_Jj z2@^c)ppW;4xU@?XBg?f%VA#?@%_O$Al*o%;&1hF#e(jx&<{|JzHBl>p5rzu`o#&&t ze?CyC2#UiG-BLgBYk-#Cb4yY9c3X+fMXr;~f5|H8H^=XhRadqzbUk%Mb`11aUJew; zqx_B|0d*fOu&)d@=aSv3j3H8TpG0r28d;_&?d=K zjg7RsDcT}F%yqSWWNdD9OxpZ3wDvYD>Y1fqt>3GILV!)-qfnqNJ+fgHZ#bSNHl3Rz z6KK$fJhp&5(5XkVxH+o}!EX>CcUGnM(ahi9sPel;yXO^M!^Or)+R`ylHP{C$ZioES zPwFB^E|ZTkNI+?fc+(AaQ`>C#q)T)KOQlWlv7BNA>Yj802Y*qVOa`DR4@pZ8ht!6r zA^J{xL)zONYmd7$1vx)lBKy0vKH=S(620&;8hvV?>yW|*$c)BviPi7vKbL|im4&?( zQ-mUg!1wp1EeM{I4f>6s;rIJ9K@~`_(T0cLS3j+Y*Q>=30ca+4cbitkqP;1va!&62BUrdVsvnO1574a zZE;#VA_xoTqeWkO_Yrek_kDd{TCGx=XD7>Hj`vJjnHr6HWXFd3q{KkC*~AwUBvI5v zM)6&XBkq>FHvh8KF>85(Cs=;VGKp!JLIxfiieDiM; z`^6K6sDa)Ndlo}#M<*xY?TzYWE2)nlF`BcdW<}U8pHQ zZ$Eg1jjkb!{m}X4JNXlH=&se9-I#~yx_tnV zC;)_Q7AulM0~#z{_zH;%?GxWYld{SZFPHyjlDh?FP&KXI_mS-Q_8yvFDqbpd=Sn2q zu%$d=^x-|DK%C5lj&V37c>=UH*jinDteS~WnorXl34>DM6&3pmDH4!43?32*(8aDo zSzq#qm6e6&i=k$v0e@_`qjrH&|!0 zZr_>X1n>dq40r!a!254OW%3Cy5}r3-w9^}P)T_f>R2Lh#oG8wOOOtRO(@ndM& zAH*0ZsD>U6S2)_lnp*Jxcxwh z<`R{1q%P$6 zQkz1)t~JK)smv28WEVz&#KOfh{_Hj9`J=UPDMhJAhERpyl}AeOXuY2O1R5`o~89tuyX1GSq{QakM7aLuCBGePG-G z%xY${K~i^s?f3ux6CWx?xxRhiubXNPsxgHT7JRKrsP`17(`Rq2H5b6L&Ti90i$qq20rQ3*cJcG9nQ`RJn9bXy^y78aP20Mh*0VuCjUW#CM8APQ;wo zgW4kIBs>}dvmCP1{g3?+46He|d942$BStI$PKx}t#^&Y#a{^3Q(B$Y9CP(M`Vh=i> zioe5#4mqcx{A)ZB+KTC>p1_~pMdDnlg=o$sP)Ti&cR-)dGCDr|FZ=1mG|43m)6VaE{J4NEwlKGPJZej6&Yq<5+uNLf*Ib zd_Ikn873s2j8VXf+=<5f8B-eeqGL4zoX?5Te{7!Z7JZ%C|8ajC&22c(aSxcL)9+lX z@|~}|b&+~G$qZ2L(6JxL{}an!x$!TS2c1w`r~3VkH&9v1f<1S%BbZ?f67Id0aKl!O6@N+=sQ^62bS{>**_HI105J z%3y{&cy>)OwbOBwu#iT?8R~iQ_IAVZ8cwk?{}RB4$WDa*YbryC6C4!U!!0yg$ymZ4 zkoALcxOebP~S_{kRr%iL!*5xc}y4^2yzJD&j5taW4Y zAR9|nFOM>&@(bUU8-NydFxfW|iVYO~DY2b4YNEBe-foT`*uw4jusH$k*AYP0c`pVK zQ{wKg^cd(11XQMuQ;E3#y>Zoy2?>PqRs!S&c`n)EK?)1mi(+CA9G}L7fEvXq|5qI5 zUlt~)80H7vgxAR$ijn--9hR{#+tXA)%{fE1+Ur5$`f5S@Bu~!@#pz_EVJ~mLIkHS@ zp@@kU0MjC9q(!490`7+oPY3HiD79HXP4%ReWl#tP_p_}B^yR4oBn|%0my`anYz*=! zh=LrgdCJ%~!tb7KYz{y7z%)$E>VGqiEKxY>b@W$V7zrx~3e+}qjm~KGyK2s>w&W5i zh+kj*{^mQf;O~ok4q9<}N0lI_*g(Jj^E(ssPkDpz% zioSYhF}(5h+!nSS7^K)9wSQ12d0<@?K;6g~mMh@hb(*Mn`cMA;&kkB-%on0QxV39P2rpb6g)_Mb9t}0R!Ik5dd60Wz{H2+wj`cX#tlFK4Wd>)u7#wkbqkvycV1QAJe}?rq1X-te0Z+<|(H>DFp!l-kxL%I(FM~SuS!m)8FXl z+irP97H^dDAaDe0W~;onV(rk{D?Jq*4e?`4_DA(`^MvG=6a_#Kmda+uS~TWA;mi$* zQZ*wI->`F&EFbLmqS@3CuBjo;Tc~UnKsths6&D|Pvsrh&{7rIU!8&)JW%?gt@qZM0 z0b=omFTD}jeIJ$ndiU=Ds%WjTp?*5|P;B?{E8@bEBvr89afgCU~gQ&p<{~|6*4G)(W^Hu5@^3j z?(b-6;dmaiFq9X?i%+*mJJ7)5wyvFklBr3kfqv#wj%5{G{BP{!_BP1xd;fkC52HvA zHMV#Gv}V6WnzZLm`;#g2THwcgNq|&v{Bfu?+c7MI(Z8|P&vJ+p-z}H7ZD}g`g+lQ$_b84q@Z}=xz+L_P z*`wO!Vxzss@_naQn=1uZ) z5&i&c?!OmxgCU`m0v)fk+d0A<-c=uocg@?S2~cM9S>QPW5UNwYr_>xd|JAqR2TlN<$hRC9krbvRtAa(Tpb?;FkAe?r zg9hN8EWVHqFIFn4zv8LtxPNJRPylHp!@c%QspDKR&g@WrTQ&jU=72np`mwL7;)x@d z_~62F<@-|Gnv66ye_O|DYFJNF-dO)c+dp1L2CZ*Qa;(~kNr4j6>Rc^DUunj+!K{Z2 zK;Uk-tzC3nSXt-#H+Z9wDH^-@1J?g~9IBGiBQ%W#4;Sk>`MBxzy`` z$^t@6*>H*%gt`(@aG2DT^gi&rB$iU5mo{M zwTrV4P6v7=#P^JphQfIvDe@svHOF)vlVBx2>jOaN)~@s1ZXp#Ae%S*=;D-Q>_$-O= zaN_&U7_S&WH)Q!M)g++VaKba5Z@D@Fnz(|XRm&1dTygHjTd1)ZB)c7T_;2ThcW;4+ zJF;#lebdo;=B2rniLm3+LI@Et{k3vz(%WT4=Afe?K)!O}Lw4|!_H{m%Nh_42w?SNU!Gip=3)M(JzWOD(4W-`uo4p&bhQ+tL;hD}nRwBmAx?l(+4ycY2ayiZ#J&Qd0A+s$)L*N8>=mxZ`8oL z(jG3d&@D1soi{l67BQexhEo)+0n)28v8qeeeE&1zX^h3PM~f~>^yzp!#jr0Aqa*9TllGL1(Q!mnaky}AJU3V5I2B+S= zndy`0#Jxzvi5)wZA>)cI`N?u;D!~KP>i4fIqo=2N@!_ogj@}~%F99i?;Tcn}?>=Yc zCfT$SK5i|s^mkIe)>KR*Z$BT3uhhF;G>`XiHs#SG!6HX6`ll#w3lY2= z*u!~ORTUSR{cZ-;a zGV!Xf-TfWMLxGK0b|&V!&D$+%!XP9x1|(!mC=$vs76VXaTNXvIj2_*v)NbSb%+=(a z5$2dCQY|Q$Z#nZSql+-{-%NPs45pzWSY<>C-a!)#um_Cj?a(h@Th7|K+Fuclw7_Ir zhToCv-teqxvBDrC5@-Nj9*7Y3@#wX5xK8RQ>nm*~F9&aTI_PI|-<6LJ6j!KP?F z&U}r+9~7)AzJr&u&~_mh0(2*MzodB+1GE91-D%tgCuwC`J{YG$!u0zUbGmwn(qoX( zc7fzh0j%n7r^+~j{`L$Iw%)kcL$=6J*8i`CiJ=h|?jb!sst2aE@#(KSO$OtW5iBio z@v`Q-PInEJ%zY4ap_4US=9XK&?l?a^*c;gp;8#`02MsI$8pNl(uZ&UNl1OYVP?9NRAII4c%zf0g~aI2)GrI#+`JgpuByUSWR4 z`t*|U%#eB*XWUZA7)@`V5XyVnmJY;j8JFd|Na* zpzX+@K1FX{*m*I0m5)p1YhqE0he8-BW7=$(t^_&VW6C0Ub+>eV8`LZ*?sr+;Opsr! zC#bAA{yqVCm%75La%yaw+j!sjH)#L)>hLFd>`b6XIVo}p6k)7BExW_AEtH3GC&zDz z3Tdp}*61#KGem7k9so(Tnjq7Sb-4(kv}PB#Ni9|k!%qHWzzEZp8WIyUljxTu(eq9uDa=Oy3f=z2O~4=~SuM7FIlLkjgXQOamv&@~fH$`3N0IO0rF`+O2oV`X$X{B_^l;PVHpCp3Isx_J& z*YyCnl4QsddM&(DUJk0R$U2>LhpT@DY=>ubligsU76rj?qfpZAz_TKM`u&zrMi;Ji_R| zmlk)p{fY(|HVEu;j1#*?gWO9QJN!(kP!Z}-nm@6SI=6T}*;I42J}4Rjuln__io^J7 zSa^QNs>R3V7b@L zxvj#dLgpZ=j5iGOxW?CubCr}gD{Hq#$8&+Va~`i~&RQpKmnR+tX2$Ft5-Z=_Uu&PW zk{q9Rmj{P;2lWYZQ%~*yjn9rtK-pUHx^dJxVB5O#y7E^I8U@U9<1I;H(;+d_-M7Fy z>*I#T_6jdRXn9{tJX3~Xzr^qEh~RhiWu4TufLQnOJKgqoUMsuC)&+6jFYaSO4nW&D zK#~4o5l09}g7?Tf_rkm1+Hb)6{prmya0WeG0)?@e9u0sQky<;`&SCk#=0O+*Q|q9i z^nm#=`n8Map{)UnjApGX`haKRvlewr7ZX~0qY5PEDxX!|T+yYfDqUaCMy5g%61)hs zdt1tcY!v;nt~tB0%u9*570*n~&|y>H)%elgp1p*y-b1IAIxn*E&m5iXV!~vFrFT0& zeUy*(a5a_Hf1%FayEwvdsJa{&f4t|t03^cFk?}U`*58Z1C)U$(zfcN9SSV;$?;ir% z`U$MN?!0K?B1&r!rV01l2?53=uuoSjM(5O=62{Qc=a(}e(PsAf2 z)Y=yAY`(lVJQaSz`#%|#j*TX`EUr-g@!$8C+(!lg_;|>^V1I`6E$+_PStfR$_|qL5 zUD0Mm#%aY(>(Gp#z*KD2^CtB+*OPU@=%RE#7Y2GvXcqzU*x^$+;^H;ud6H9%;V(bh zqXn`J;608l_8XOC(vE4e20sr0VYu*5ok(nUucAH1ZZ{9SY?+XTBEg}b}#LL4xf zj6z4OpI70n2DM{P|8;W5OQhWP+pm@28?rHoS{WRz58`-OC{lpmF|=uBBK}YGK}bP` zj0O?rax9L>0nPmyTuK^v9%3Fw$)=^0(k-LRu1h!4E9L3pGJ zeR{!3X2s&R<{dFwRdu@QUKyox2}^qJn;4g`FOx7GvvjU$3_L9@yvKC$pVe6%$$N$W zHEI8ctgjA>y7}G~TqO)zkX#z1k?v-tSyEaA1SF)TQ-P&n>FyGg?sycWQxK6-x{+>u zXVvHT)#v@sOD{h=Gv~}X_qoqKGvsKc(rZy9=H{BCicXIk%|bH^q5E`2jE=56Q31Qg)AYmydUHr`MVD7N^_Al3%`A5{egp#J4B_i?E`OeqG z96FbG&c!m*l3>uQDoy>pt(?;#TvxZTH7U@Iuwc=#k7b5L@Iyc<|#;}M=jI_rR*>EDdu)5I>7_Wrm4YuB`JK9mv1>P-cq=p32)|ecw7Ap zA1B~d=dnX+bO3;V=v{z3I^UR7;`+Ti>LO%d;c~~`RQ|X-QNQ7x8<2o_+%e^mj=ae*j_&S=(CHI|Z7#brV)e7=6GI+1zXq}^-OI`sl z;#nHRFqylBu5jj`4%FCByd2<~#VG#pL4%B1c1IbW{?sMzBG@sUUlQS0{DDQG*Npov zw)i^M&n?sh=^xNHjx8~jK1zP$ttTHl#^&ETW8kLv!FTQKu|K_MibELJ6TEcYIRApfD|^a$$8$XZ`PeigvF&21 zlWg|e%R{r84&IVD`~ak9YC6?#{Eh1;!HFJ7mE)4@I1 z4zE^e`glXPOSMb4Qhag64{vl8YP}@C3C7)yJN$_|bzt*dajPsI*Og=Q?P-2bEcL;` z!H+oh$etiq_+icsl=mx`h@;XhOw^iw^Uz@218>q zt!lg+SoHikLs8(mnK9il;TnJTAOR{66qi6{8-&#n99)P!CBx{-yA+Ek=#8jr*|Oz6 zH-RUOgLhTis?Kc?oYRs!KF3XAsCPe4P^Hg&nZ5VZ-8PVuJ8>@BaXw`_5$6@*8y{*J zYc=o1zpg$!9hkcqm@ofz6;GQ^Vg#R0Z}iE1Z-DH~c6p8Wd0jQAAk44b2c9By+Rnyn#qe`s$ee?0 zs#zTxu?!*|%uq9?;p$m?gh^wU=lv2Mym({S}hfRlFl zQ?%3M5~s7`o&M&U4#kvQCW0wbt^Y8hA{`gzr;xSx{8_6_4fJle1_rj3J-yE#SN9*D zo}OCZjf;EMzb-b?Z9Be61H-F~iz8@aXiE4t^5j=wJ_wgk?PMw)cj4k!{kZb{-DDMI zZMh1SUEW0e+AgT32gryedmp(X4zfe26i`GX0!)FbGSltHDN^+mIgfgrJ!~b@xAg>o zjg@)T?~AIN?D#q`v+M&D$7xMcnToT z%skGIZ#Y{|MDg}o=FVG=_J!w82j{zdHoG=g27LKC1u@}#J>TyBDnWoV^U!hL~sOJ&R&4-X2%^B%GMlQGA zoa<+dbKpu=vgM3u{J5T?yeAD!g32xze^3n1d9Mv4|FtG&Dkc;+%`d6fz5{t3r>-R?m0`k1@gGOsR~p5H{q5G{tM zBemvjm)BDW?SotZ<2svW56fND?F1=pKV2%nGEcP8l!`V5cf0*xHnx-nK!UBcW>qHD z<{&DgRMoE3PFxEwSC<;`h*sN(e+HXUP*{qRwMwRjT9{#DdGXhWw!nFxzqH{M4z=pzM-s6AlqSSbF}Y>xih&f>a3xeO%DVhi@ImYnWxF~ zy9-@Ea~Uz}@#d{LA|bh)n7ZaAHVab|qvmz3*Z1f!9n|l}*X8(Gp7PRTX{8ZJxL=~) zjz-nbH7B4tZl6an37dV}&-bIwDrpdwR#0yh<>)=%AIHA6v#ETU>FLRBbp>ux(ch1K zf4J>xh#zXCHr+|x;!GVt%$-Ecy_tvZo}iMSRL-45+&lsNU+Cy(+FpiCw-nLrE~OcW z8c<|-AKg74xx8#;sr`hXIZeKJM3M99t(duO!Fc~$x!YgU-F7RcadW31y#w{y74!-$ zOO@5VJ!{c6!lsMbrLxxzw)YWU&GqL>h?H0ERiAr4Ijp7_3b*-F;ey7)i9$FH(dZg; z-?0G0&jED5^lQQR=1ChZHREDm#o4#dI^YpK=#U&>_(=_0?`t$M+GWKz@NBC6-I+wJ ziQ&WNoh(M`&8GwQv!=uwVKjl8ayPNGjtX#dtncdCt+ecTzn-}y5c^7iK+!DX&x_t4 z@VD+pypSPd_wJDQlG&{>KCju{n04EFz0s~{d^UQxgI@z{k4=G^+kT0`!QX;~(~JyS zcmQ@n7Y1>e>j)ybw}#^iVNP8^^DV`&5oL51D(fE(jN&Ua5PEBBW5cP#jGbHX;&g9~0!OxU*c}dVB7Y zd5ul%VVFPV7e__+iPHK8>pp*(Jt=4kR5qf#@Xq*ZE?(d9b1PA96v)Djl~9#sy8ZAj zQD=yH0!v-!u?*&-M^zeT>tO%zEl_z{oOEvg%=xb`dSBZlNWRMj9_mv(JStc**iail zsI?F11ee`w#^0{F(fF^{`JNT}-t*a-@F{yfcRpMAT7PXpYN@1qp}AY+AjVEu*o`U=#XyO>;HtSV#w)w+JV92*ZPvLi z+s9tRSe%qmoA_eKn{O?C{!oari8r&ZZ-}iVa*q(t+=sw|;o5z6x;nDOaCHnW z!xiv|#?aV4 z7C{SDFE8)K$et!Q+LN;N6k z!3!Xor-_B9!#J12jgy-*KWyziQw@AB)vD^`)*yzz6Y^!^!P zY6kZe!z(%Q)I$*SA$i9ceG$(*7DuaK$1yUn-3j*W?LNVkiyAyZltcYn)BHAQ#qTT& z^+rblD*)UBU$5zVPP`pkxhCBoEOt1iVQyC0Byij2QBTIzXQY?a^e_j(Aj@ZofTT^o zf{32a$={p`w*C3tFQM%c9ZZT&PE0kGAKmEk6`_ZzUz~gLpWF>V9(;y`{an6($KbyW zD%iEwTW@~<#g{OU!0Te*UQ5KnnaGs|?+t=HQ2}A$QYu_uOV*wUkN}`S97}r{Y=l)cu7OVd_tb(Vj;+t6>skN*)N+m z*4kErWwWB8k??e_2+=r#Jb@|sTn#d2*>w6Pf_IaB!YB-BhN+8&c=ga1_P$!}C1KJDB71iHw`Id zW8m)>Mk)+Xe^KG&XbXgt3ZsV)6c1RH%?NXH^5)i=XBP`p*{E*d$H854IqM21DI#$Q?5!;{h zhvEhU8wjK^U;DK^a8vzq^7>cy2fbFs)>B8*TI|{0TJqd0&|sT%f>Xr1W9t2gxxg=C zg{fDx3QLWbteUA6s^=l~(hIE7HZj1IpgQPR5ij9vPs4yHMNChByt>6aFn2yila`U8CyAIX zEnrlAe$sHSROoyhP(qJ0DY6r?<&ZR72q2jmu^RX$ohIop;r^Cwa`Ib5;j;2eXFoc`scO0XeM*+y9d#l7{&ve&EY^s* z`E~1M;i;n2e9pujecvo0Q4o^fRfIPiV=?6*6_VDs$6(PpQeJKdp_ipsne}>|g&tvL z3Vr!RjE>tK*Y45Kco;0QG16|mX77Bzt{yLkr#nDeh$i~&EgN|)Dw_&S`1Pp+P4d6S zAs_)N4K#rZ6wM2UwTk866~$2%wLW{8)@r}yUkw4ZIxo6`$eQMl;W&*)_PnGw;0AWB z!ohuYy-g}NWfjyrkmahe_l_!2an)ZBa-IB^Y#Je!xqFpNR5`Dqk-c>dnXr>Gr6tv{ z;28?*j(-OoHT^lK^U=i6h3Wdo9DjP|nM@XkuTH&3eXToS#W&@bmniUlK}(Zv$ekPe zCS?yB<$WRyG$tmT=ft3F~~9>~7g3895K&^`ZM z@*`Qo`YoKuc15318V>E86XwH!99rpBWEMPi^&iW9svdFwj{$_qi&aiM#W^asUG9a# z=~Spu`KLS94@q)WrKGi-(J7baBe!Ut2$r+=yA;M6A6>v6P;J53e*3`h&Cv$-%E{6L zpzQw{AT_bNUvp)yP|(ZTG^H#Ym+`Bqg;m{`g%y`jK;gbcPJLm}&bup3x%FP9%^Qou zPemwGb;cvL=${<@MARYedcKw4af`AJs#^G@koj0vZkLOVx@G0U#6ktCtfDuX8XqV} zbv$E}isqiKEnNP4hhBoQOb@*@{yjo(nyk~2($eHzhgX&5+B!~`tuEI~x&US_y+eG;w$j=D={a&B;D@Z)e?L315sh_qkB9Bj!2Ey+Tym4L-qMJd9m=P|;|V9D=gP zQ{UC~WgZ3azSy{sejHrjI{4r1c<3_HljwBR zy>D5E7J`_V4LE9VE-IR%SJ=Z?$lgb$gVa2V<%<2{uSA8<2ol8Z^|vCwqL$wi^uDD^ zkS~w24Tc`d50r42zY8w%Fql%a#G6Q)g;wSv`{tg=mJ@AoIo31Lt;TDkEL4&T9<~9p zf4PFhF>nRvx$C;W(`d*8iTynM{CB zp`FRgRaYBCHd;&H;j!hj^B#fyWK962>Al0vHdLiohRAnk7E-{T2xPl@3J;UmBpcRy zU*S{;akdk`Jouo`C*pBnx#4MNe8%mNM&`Ep=kiEoVje8*VC&#a@C}KbhhKJ!_|v{c zAp>B-FA08LG&(v}Mkmsyh8xl+k(6Ry;Pv7L+vIaGYFI;5c+^%PejaAh+x=B~hu)r^ zt5i38uA<|TaHDlFV(9(wC(7w3Hn(iVUUm^>? zLHj!TRIUwP-a!#pG4`JU6#69sz-@b`9?V}Z8%^ZDWcrYGk&$Zz?x@Ojah2K`qF4EZ zJDI#I3c4had&g6TC{I9G+LgCWqYSAU=qRWyU04 zaX*i9mWn5diUse>nJ(6cFMyEYK4HId<*%Fyt~Y`(duF}C`ZWMf2>Sa>9{wEUsaJ-# z?c-BSuQR0C{&Nv_It9Um43P%0+8b?k(BV*M=j29}26#lf8PI)8o@31PYCps08;H#} z0-7xHja#IBL|EpJ>|UK^9f)erWnWTm$T?XWoa-7xn7wVZ)_-TP-*CU0-Vd73CK>rV ze48n>*C&=o>?~UIRqZ5yG_`fTY3#4MCE+58uwptF|K9HM*z@~vF;v!Nce3JhWen5O zVxGZ!`5id{Spd#nDzqE9)t`_*^}$k0U?4@8AS!`1FS`r9(VM~q_c=Qw- zZ#szmhxw7Mn{=56mhn}7L2%^8a&C~ z7RwW~U!L_$9E}z>(p(H--YYwxesMs3^6^IZ&}&R)0MV^!%O<6<<)C*Z5vAEXk;{9w zXFgDi;u!G^-n1(754wV?IMb*RIjN@iT*IlDN>F9YP#^j$# ztX&N=Nl+ty$x+K7`P^SDFWLt(*UES;6BK#EOfdJo#YUWgSZ4~L2nb2o8T?p#&Dpg0 zokE(UhllB$bcT)X*3xsJga~dQxaRwW#W)JLo^QHbXTsH1`UO(a)<(=!Onic_-KC6y z)3r@HD=L6cnfxibyI3YMe*Uk*9c0|!+hL3vtmKgBvB55otxpK@GGe0ARw$os`C9y9p{*oz}K$H;dcc|NRM(e)q#OviIzS0g)v^0}1gNZKQVgb@ukQC2Z<5HJ|0BEEHm>D`&l{iymzM-Vfq$4dGEa zV3R`Jc+G|$MJZZxJ)q_HrucV^)40!QBE@73on0Iv&H+RJDXO1YfaYH&_XzjXw}*m~ z3dR>~)Z1uMZ(<})vdZ@S0RxvYxM8nR3AjHlnZkX4m2_>6GU0q;#nY241xj2?$*l0_ zu5tf-OuUnPdq*u)Rht1HA=ULDT54U~Kal^?SlANME4B9TRaP8L8okU2=)XIi1_Y>L>Cl0GHzIxDJP56v-&>RRwD z8Nx<8_SGN2!78%G{1@y zBm$vUk5bONws@E>x%FC@#@FQ~7GQG;o9eU~85wstyw?#K{1qTRA4@hr)U) z#^3zvYzZ;G>6&n{0%_)9t-P1_Il0$aDZoNL*LAN}66AGTXHsy<+%Ix^dN=b!+y_&U z1`dc?NNf)Q`dxxgnEDA0Y_YtCG=$9dhMLH+t`Rdy3!9{!)VJa4CLU09?>l)+)wwx& zt0L=)^;;4%el~xamGe2eN_b9N3?YRq&b32oYS@}I3;dVnZ#Aerl1aAjh*f#e)+7X0E|d)@#hECSGp61I<%Du8dhIhf^9Oq*Y_4tR9G8pdP-8 zuI*K+AJswz(!QrM`ox6lHl{k9lK-i8)C>#$vx!_pQxzHT%;8U?UG$#h;Z;>tKRfD| zy`!R$*#9H2QM;s_0cF@)puKNlp!+etJoM04E;`m_|B=Ygc<%hbL_RvleQeU}5qRJ! zWvR->SS$qhJIm=RJ#0ie*bVq>lhTEKk5M!Y9ko!Q{g~ccd3BAkHQV5cFOM@S=_O5` zK|+G?n|tz0*mAQCj@Mr@2-H*F`Leb*G5Y(#)lsU*N=^?Ct zE@d>AKWL6MpLBB6@;<*fao7cS#)vO`p5~>H>@{St`KjGT%Ga9e+%ca~2?-Z{Cw^%E(OL=U?EMgEY_GSd7O(uF)jULM?aWS?B#*wLm%hYhY zd+uLD_hheTP8yddBfKSRid<62o>kC#a{KXPs;Qg}q0{EmjYf84CXPQfCVY$(5u0Pl ztiU?=_|N_y*wfclO*F!R$QThhS{DS(w`WuMMf^cY{e^uhG2XxSHZ(9A@Tjth(mmT# zJUM#GtQJI*w@Hv!L;?GXbpS3+Q#;+xV>iy+*$&d|0s&j`EGedoklLX)0$XuJ1Go63 zL&b<1(*|+fusu_l_#^JMxI$Ve8lr;{Kl_#T#KVyNw5{e~+ArnzzbZhVU{2G6&Mv|_ zl4;5Ayy`b?^s5q(rhn6*q-xyBWUUWjmfre0Mg~+M_3pMy<%0ArY5GcSJ#MZWJD#RG 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 JrJ}mN{||*ebVC3D literal 0 HcmV?d00001 diff --git a/docs/images/templates/bun-tanstack-basic.png b/docs/images/templates/bun-tanstack-basic.png new file mode 100644 index 0000000000000000000000000000000000000000..448e499e88907c8b7416c2d726c15c4c2d67cf22 GIT binary patch literal 824881 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

`59CKilDvO={YNI&2|~{QEeS*EmJ?7{lJ6dt&A= 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 u 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%0D%eK6QfJvNhDXgi2?d916pUEg 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≺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

  • (JaC5Wojn)P$BLDllEz2chi9lkX$ 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%0AocT>kse35ImVPR*N0Mj+c1S_ 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 SkLR~AKMGJ4NU^k`|NjHm%`nga literal 0 HcmV?d00001 diff --git a/docs/images/templates/bun-tanstack-todo.png b/docs/images/templates/bun-tanstack-todo.png new file mode 100644 index 0000000000000000000000000000000000000000..9701e8652028f55f8763545207c6e43cb01fa379 GIT binary patch literal 287506 zcmZU)1ymf((mxE#0*h;K$l~tqi@PlD7Tnz-Xwbmo0fM_b!9$SX5`tS2Bsc^QLGs_^ zdG3Ah`Mx=4=-%nBo~f?ts$W$%ahmE1Smx=k=8 z0s^LrgN%%(l8g*k)6>n?!Py1@K`|~vAJss6j40n&iy8=$g(&Z<;ilk2ltJuaS2VH8 zihwBm7t)$dB?;*Drm~I2HQ;zk+$KwXqTy2`A`BMRBdZVfJ!pvDEBbwcUj+T0?q{-J zP7C{e-xNidUAxnAz^+Dv)YEAY5ggBuWu;Hj_yBljkr7A`0p{Q=&*I{NZ>@fITjY~e205Cws317^32!BdD$DUb1%PPz$bB^evy>BWda zosZFk)f(lB_wYK$@H#O z4HXl4Y~Q?NTuB>DH=x|YNo|c)jBP`Ncr-Q6n8jsh$HV+H#2sm2UY64c1Y6t}Zw<^O zpVRK3MoBq?Ji6!@X?nhtbD2_+#2sUfjE=k1~v4P6qLse%!sf zoVjb3c%J_23*pK+MTSIq9`n}q(TgPHY>zlxZEEaMVn$g=Euu%1n5aPQ7ltx$8acNG zt@aSpi>5FGhE(8v%~jK!x1px$`^RaMJIL{JoGLeG@pJR3i9`(OE_x8n*V{Xs7azLh z@YNr}k`yI4g26;ZOkmAtqUuCSTQ79Q>KUgllcBGNPfCTMk2f9fnHUYma-}F3XObyN zatlz2E0mverhbA2nHjO zLVy&%vcvJ>Ld5a?Un3)b)rggaNC-{8Z_o!`Q2+J;)$9yKzCAodn7hAEXIc5mJk$xs z-02UJD@e7TjRgJx@@&2IABxdMcrhBTyYl<&4)I2GFkIDN5-ye$x#x{^DELUR)I;E6 zcGs}`uV(&2J-!lX`^&Xc&M&_pVt zHK;!5qbZkt^!&2qg5QPf%le1>qD!xrqkXvTmNM*3a?6Ov6u$V~Vf>cYVbPQ$WQ|0} zmH0UI9gHEYt`_ZYBwjWbP0#XQK8~^QGW%6~9D4sMKAa#>o6vTZKeaya&K9EOO&$(6 z$HYru#1l%g5Ed2g1{6L#RhqfE72o%}XQ#?(t zG=8g)!wS2MK}I+1iyzD&1_XP}emnh)`mvv4x!?b7IQb7iC>S>?LJ=1=wO@8Wgu!Hw zhwIrS@DhT@ggEhmOcPrmysi-a80B6{+#bOA!O$Je1W~Zxv?EZYA7d74GkgXV0mCI5 zfL!4b4B0*y`fJZwEnBrt%0T?ys7=V)Ct`aX z6fXY6xNIwI67p@U6a${jq_M^o18%)|U8^<&+TiJ>M&DYD`&a@Gl<5J=ujtqxwmlFf zkPBXOewa9C>A{wKZ9e#XYvZRN;I)NfBcngQf0RcQ=75egUQv2uo_nl2%4r$)fGADM zD4h|(#y2xn8e2R&+$>x{+*@1?+_l)`IB`0Br2=b>3kJE=pQU12cn*{f#0NqLELD+L z;kEJt)S_vTqhr=+oiG#SO(hBWKIKsPC)H1-23lgwDTLHEA~vKph5Nstd(N z+PzgC^K6G=j-+jwfv*CSf61$3h39Vx-_f?w8c0+Uuau6neRMgK19DR zI~1MQsQdzbDO2*P);_e=+K9@9xh}^y{wC~3DzfNX<%iF>j+37%XDdHGm=5>GEmwG4&?!t~k)! zr&@5avr=VcNX{NK`M5sQGxoqYX-{JJ#(sIrvTd*)JE%d>WJW`yRKNC}!r7}$#*oa= z!qE07^vA%*dz6mwJgL?XI+3qY>@d4t9bw**agdma1^@o>1rsVGI!H1|`pOu~7&9m_ z@pZ)OQu(7qby6Qv-q(+bEs6T%&v{SzEZ_Wm6RW0|OCfj{SvIlN=xJb6`?=OtTjn#a zcJu+!XT8rewu`psw$Zjhlc%}bQ!C#OzSm6UPIa@ZvVAm~Y^`kiIhATP);`&4;uJ7_ z(VNkxTf87$6Iipi7`P~Q1UMo)3KHNWH_v4j$Pid^iEDRWb6&%0*FV-2)$dmAM(>`u zsqD?|T@H;5SpyA#lJQdUGH6|eD@ENYE+`!-s6==u2PrWqk0{NPT1m3SJcmcUXx|HW zitGxxcy);?2kGor4nSX*n2D|lW4vX3+mKxT8kbEbc zH|)Kr9f|$uOn$k%Hko_YJKVhyvzvCiz{JunwN4 zko8fImXD^&Jc{^?{B&ul1gY;BZxeAS-rEK%#5*ZN$EVO13Ch(vxIS4}O%Ii%?Wg@r z!!E_wBGC3L5B;Wa!Fng|(9?SDumPyIsQVf{tI=V!%zQyqM<}jxt8SkCBsM7eLRa3d z91ezTv)-_B5WgQsA6reomJsC$Qt)+Cx0=p3@pN@OwTx@0GxiK@KHqUjTPwYpqj9(= zoMCn<_nsKAUfYcgj_9G*Kz-VO$K*^X$xQYAen)@j<(nL?>wdmEhg1jl&nM-a`A@ar z%CA|ZKQTWfe$OuF-J1#)O5k;xaJKecJ^n8I-HT}Q;0?LhJ4Y%Xvzs1sj68IGqQ1NW zq4yr)pCURjsD2YZXse~jr_}B*N;gF35`9Y;N-!c$HtTUce`jTRK8#$E(pph=X5ds-tN5Zx#c-_k;@vauTwW~WY~CdUfoo4sMn%L+z{GrJC}n|#!;5L zsI|nh*q#-g#b4WE@Gf{G>tgbP{Mpm9phfa}^PZtZ$hkmg6W#|FYAZo_@wWq#{jk?GE!LS(iWUJ>JA#DB+TX7F#SxLwm4jL*2*A{)JZPAZw(0e!TJ8ZQP+r%Ur%c9VMy=J>!(~wH`7gl zTiI(d|E&Ad%lj>yU(c&0nkDn^(|;bU>{Xd7nveIbhPpfu-JF=Yxw0qFX=$ zT9r`0USlKJDQ5@5B3CV}#=kl(1*> z6%`1$a!BB5q{0#foW<}KlP{gxhOs}K8?%4&vkPK9 z{tUW7f=3teHU>(zYHA29@Hz+qh)9Nj46h-=ZwW;5|JLOZnGpW;MnnK0AjCKz0RQcy z4ln;)F!=q4=ARNN^%Vjt{1-m__Adndr#Gmy5a~a4WDa;6f|Rz5k`lbse&K0j-<=B{Yyg@8ar|K~lQS z&Gd`ljaftQ&E}rTm!tc>J_|3b@48g-N@2JwXvyVD3xtZuP@Pgm=r4_@xOu&59mHqQ zqIjAj-nD-c-)A1)d`PKcqPsRzaH^>2vyJ!zup6DDRpq{f|~Qog>LeCwLr+N#?-$bS8iideg{&~5b4 za?Qy?g|zEe^?GYkvgz8d=gBA9s;92c1!wrXhHdp4a*ginZlD1=Ne4;4_C2X|-f2-L zAcSk-F^%275Xm*lb=VqcO47ok;l&Mu$e~fxoLW9glRY^bu2oKM_dJtRZNHWMT1g@m z?}#u~b1jFaHGmG8d-%z#i6W&;mM`%;)M1xN`NuX+ij9LDCMv_{{0dJD*XBaYFAr$@ z*<9JGk>ME++Kh6b`GPQ(4~J2XZCcp4m6x2j#)}2d=%WyTU|cx}5-(Zd%CoDJLv{QsY?Mfnrio{}S674^ft~6~ot|l)KWGR`hn}0T>lf9e<(f6*Dj}HW zrKWy%0(3EIZ)Pny@Es(i1D|QiRZ?;=WbgN+?a0wmh|m>?`*}uP0RB zWdoVL7S0nD);E_M&El8e9qzsNz2h7Ul6gUn|AW@3e&d;ZIN04CU=~Hw%}_Q{bYoMd^G>yu zL?v{G`r724EYQ2ZV7GBZVqaiK6^`kbK&u4QhJRA8Nc+`jprG_RiIN&2oD2`*g?KV}!TI<}yB(2%fvF~ExNxo@0gDtDiJ>(YFPW62HQk&f#o&@3Jf~pGbTNz7 z%g}LxcgD8Mc0qQr1eo}R2g9|Iz%l))SSVdm6uS2Ye^&*PVLBx+gO6KkT{O}MS42us zWgp&%X>xuiK4N*hVg@Z6nwEUY22BnHPPU5HhUuBn!hfs_(s~E1aYH)^z@U_=juWdxjmT>&h2xird4oK=v7i+`Gc|B(5t4PC`Hg@x?)y zG*c!9XNQwnJ}-E4Etj?|);1G?6+fv6I=B=X`0->TGb6{_Y?-+lPT*2i0Q6*!=ak&A z$^p9xK?8B``~Zg(Xk<8OcE`u!B^0;-R0c4&a(Ot^sdR#k3lRWkJ`K%(DZD$X@lbL9 z_8!$|X?rFOWzz=F%Btn5n(%5ml}U~b4YxxMY?C2-@{0Q8m9bEQK@p;+p$H8hEbMe9 z{nq}(K7c>UT(33E1G#fzSUbgrxh&(8R{Z)Lolh$RvG^|?ihG{vqqD=_=h^%*bTWGe zdEFmJvYK(3rbGu!t_{eQT*LrCFhY1UE-0Fr2WUyOXRSu>epZ5NN9iPBQ=~4@jyI|c zOEu$z*1{~BmR-?<$iW+L%b7)gijyU6l;Pd8WvRbr3R+Ho2uOPpVbNP|RZTs+X80OH zenv)DEr_g)8omb9Nf8$oR^n7_%E~@veWZokPF#ByL~+y*(-*`@;(jyJ)4p91_sL$(OPYh)|IK4toGcMjui@b3*y0ns|{9*V_s%J?*iKn{mb!> zQgi2zexU&{)tw;C1zJA)+@XQ=_=a!knF|SXz=d80DN(-7O%df06xUUL{)X~3rA%mQ z$6-ppegvUO<#6|_*fvxEeITdmlxMz4Djpav_wHs$m z40y0^ss(=E=vf{}1L2~$H1(8FV`?+&7n`+uzpV98T(Elr1=JgxC=pmzqb?eS}4)IP2pgBRpn+?f5-xSxJ-lo($t3v6i0i=w2<6~}pL?ZZ@ zs#xlxl~Mw9Orfg}Om|)yVyYw4C$U9&Y5i!Tg<@+kYuP;82 zih-hbfg9Fu2BJVc#hVI@e~nm)qpUl(y}01-`Qv!uC01qSX|!)1Hq9rcpV{|iXi)2Z zSsKCvUY%S0Q8`$uTq3^pmf|bo1dJ7v8Eam6HZ(L2Y{J3RrEa;NT(mQ=#uzN2HKg?!EFzj*9^codOVde3${!v2!e!8c(tli?vz zep{!Q(2zSND6bOyVS+EbhAIv!LSN}7m%(@xxIr^WXhnFaVK~Mp_H>BpTRU0`%h|RlzEw z(!Q@~c%k5!#85QE5~zIRT%bDTv)vIW{WvgIjc+K#2WVYAGe4!y}vMc^0VML)v zAn!xrr-Pbj?LWRW=rt|VBBI4Sd^_&0&0W@b9ikjYla*x@c%IU?hv$h~%0#;)tnsE| zYZz$-nZkykG}b3Gts&RMM%lj_``Jc(?mR%l!Gw)6o^)gb1JR9LZbI|TyR1P^To6T6 z7|J=Fq7r2-Psu%9?P{rdG#s=cg61Rohvj&nF(?)bvA0+cGE%c)DXK^M{9whZ!)#Wr zFAm+@naz9@SR2lnWg&g(B<6njnjwTL3ZmS2QozNtv+FN%nyd3O?GC1RBlYe%hnQK{ zZ5@l-nF%aClt*7p8fdFdgwa+DCYl6ax<%L!qCw%`fG>>)uAfWgqILZMyg8>xHUyen z4*})){zM@9K%EBA#?$DAhR`?NO$6N-?cTZt$Cz!D8&i%5kRd3FmTO|`Id^8IY{Q&I zqWtwv&29DK9=*^?#*u0Sp^aFsP_ciL!n2ExBf2^_b2i(f8vG~M6}3F~EF^gi78Yrk zXMfs4qs-AAzL5&|^By$vTPztl4^~ykGnun`MjvjSrp^V{w<7$$f6%?AA)s0mb8=W= zSw2o5Gg~?9&4A$Q_DROe+7A}Em?XOe7ol47Y+rnh>-TQF#FDfS0i>t`^HU{;kGkG3 zbi-R(xDz@~R$`+wJV3G=XA?))p$1Qs8Lsm|bdDi9BDLn!V5#_ZG6pQNW{|{9#O*-3 z((KcEp4QsUL3?eox8MBu$2UeBURDHEsbkQ$hNXuqUvcZPS%bEY($9rvcEvOGw+UYm z9M(v_`C}~+04t!VN0XwXtl6A+xSis}t(!DGT0W%FgQg)TZx>G60*LO37dH+~BG-l% z-s8HBvlE5u2G*Rdn9rtv(yP@`OU$#I37N4XGu*zw#ei+<7+a`9~?N8Te~l%p*3wrj@q<2prI$=Gp`?NCf+y_kEn4Z>wC0iq7fFh(-plDS zdsWXv#iMI%&RHkS9}L7gGp`B-Zyi^xiGoE?aFp`9+MmW<`tBmrsF{Jp^X=MutPL5XC*S8ZgrKw{<5E4Sv&O#k*5>43tH*Q!7gn{F70PZ z^cTtuaGww&k{z)@?yJGel!9ipm3RM`@59C8B*`u08wNoJmExV&6RY%wdr+O>7hgGY z$dl&642ZN+fpLEHiqw!oLSU+CU$k9-L_sHXU<^6hE*|NRlML(UN4&oM)g&CEU*M+s ztm_cr#x;`fW4)63;kJlCUc}A0o?*nfm&&;<+cwMeoT$?E)KP20_A4IZvbxH{1nfm% zfWfNpsOEk(lb9;Yk0_i7Y{=^3-nnp28N#zXPmv=osI;ms6aST4OO5D${DCG${24FPcp(-#L0Rl zcvvNCRoQjBZj1ofi-dr{&BHrUL4qVHn@yI-C(_z4zo__tnTs)4X^j%q@==H7p{74r z4VDNa(!I=q-s0mn8aeL1zP=kIYAr8ULv$)gU&~k7u~mq>Zr&e|x(BY#h#Jn-@Pt!T zGp1Dy8BL~c?AhQhY6L~!GM==kQeXgZJE#j0zl;q<5iC|Ib!muJFOWpuu5N9 zu#h)ND$?!4OoMJw#rosM%79}6jouCpCBM*nt6G>`lmBxl7VQsSLIVyc!ODUhGVnt@ zrQ$u>>O)yoiTV#8vSMbeB2hk6!)8he2M{w8Bhvfh73XN53xqyg#({Sm?cz&nrW&RR zrWkIJiZ#O_&(KCy8-UE!24z?sM@lM5kHw&UQr6q(7DFb9PnUX;+UR7*8sx!9(keb5 zS=5;KWQKz)gEevm?xp$(G*QckC>Zsqr6UH~pT6GZzUr+HhN_lL4`kQugJJ z(xg@#3;bXYW>66lsW#hFdvL;$QqFXW47sE&42Nd#&hS8T%v}}H0Apy@zIc|m5c^V& zyQUQ+zyweSb+$z(^6n|S+Q)LkLfE$NORu8b7F%}1q8k9%j62)!WAvf=InylUxUXKW z^FWEUaBQF|He~p02UvqH*H~wrBaG!esS4wfhc(}-fP*=mh<8V|tX!q?iKD_g@UaEj{iEUG6gn@NBbt-G<`&yjR$>$5m7SQ*;cP zYKR0LXD}ifLb9iJk{BO$vVBuqy)}Mnbk~W{lvpVJ#1o_|JTknFXtiQ7jqEj>ao}p- zFYHlH)XMsWVY{EuXT|a+6dQ@Ec}rL}tnW6h!Oy*6X=+E$^DO&&7(C{;0#rvTPS%Jh znMqj@#%UcA(aDpNR`A`>;N2~pI99p`cvj}_ng-^g5VU@|2*%#cQ~0l>!XeU9@zrgH zPAKO_-ddyt69YB~FVD8%91(cH_V(Y%`<=0TTvT z^Iq2;sh`e!Qxf6ne8E0qAAU2=Ni*XyceUPOzCG)x`1Wlz6LD4+7NTCgl_P>~F(Evc zpy>uEVzR++#cIyfQJ2s-UV#bzCmrej{G~E#q zHXclA!T#0N#`P}q&1+q7A>yLD@64%F2l_5`@-+iIaoaN0|4zNBbBc@s0!BkzaNC(4 zGL}_pKBL~M-iBxN;_*=_icKh5gaG(~m@y@jsIU&{VkxZA!=U^k*G#AwxyRwH#)C$t z8Y65wY{WuH);l!pNa@U?^V|46sef3pyCMi;fr{9MN2iy?`hiVqBZ|ES$NNM(i({~= zc62n=8lB7Wz2b5V2|coy?^ppO$)}}t7(uyt(<8n($9GRLYNZXfkfYKmN4^4N-qJSnlO5k^#~m^K^a;w%EB|gc!R3!xYe-5L8lk}k&f#m0 zgnnPSWsuK~;oNCmv3QSyH`@ZW+N$=wsU%oRKx*upEyNI%gVL*0V#32KZ+p(zxwZ<# z=-Nm${E1PyCD{WwWj1MsPnaklO3FhE89!z6)tDySmmeZg%s!j zTppykK^ zuG+Y7-|J(h2;PrS*u;K(vHDwP6%jy=2PXz|l?<5Uht=YIRpSdJP-TAA2RB2xs=-Um zTlM|%m_S7&jxRcLm~zjzSq0OpQajqxPzVQ{8uFH3C$Fk?-Ohii)}TBcG!CoR<8r5z zD=#|oBL4}q;UovQ-I7@T21?_#McL|7s&7j2CV|4M2{c3GW;VnQ*#bRBt&~S3?pAYI zGd+o@<2}n2Y~QV6tg;V(PoJm8jfA-RG?R=d~dq5_l5IxJJZA#hp%GmDU>z(%` zzT-Q+@~6VudMWXdNA9aN)c4bpCAnbPbDJ}GyhTs@JC`1KvHu+PYo=Vi76EQ8Qc^&s73y?k!E-sGzEq)NY+tMxe6CS9zaa&A-+d=mZk zys_K2z&O{%p6Ew#u7iGXI~>IR)#%3DemyB=i2-aI>AZ7%|Kn**D(+?wziX2DQ+6HM z4;4-#miJ%3e>YiwYTxjj32k_{*7*VpxJ5AQwK(&msED9|oI8QG5K%1-nu*GlMujD% ztYtNoAX&f(SOSN-_ap&#sD_MHt6tnOX^Q{?m(C`xTHwr1_^AF?HSgP_OLEZKK$24K za%yi6+7&|J$xb@ylZSa$I?2tvOCzW)rHGdtiS91~RjTvmjzw#P&X_CtBRMhOm~^IG zQdLLQjAZDhXG`dvwl;8ybLu|VqD(;uk0ekGq9%TO?(`vd!wL8Y4gcZvf)Nf4L_s>xJW+Uq{+bzjA>Q-)^0+hDBSrmnq8}a3}3b zA`zdtA*CyAeP;ER5d$3P+RZh*(rOF?U8h zAhz=5TIJ5m6fU`jMDeL66Xx8|{pAc^_B=xk-OZ+Wm-2^7>;qu8*X`HdB88frF&G!_LbVXQ6NkRB7B&iYKGgWz}o_1sgQD zs$POd57)e_H9{A)WIstlt@-6RLLSaSa2It{3}sSm(gT*E1-}~cOTLyf@=N$m=E7}n zV{i+DV4{HGtO+;%AK>#xhNA_LD6kxV1= zK(c)?0|KRF_Su!|yr73AfQLn<=E(7;--(s#aR5BEc^vHbl1}T?D=0gDST@$0EbUTz ze%=ZChTG#aIr}TCmhsq&=|Hn=x1$NPBSgZ(pM{5?gNLmG_7+_ccV-Y00fODR0Eaj? z#pyH*imkQSMS)SZ72d}sONyIq=w+lGyD1=gdwsi+6~{3(joa0b7dM1T@ZcG=WAJ+% zmhif}T2jv{ohJV|InJo^zcL#H)uLIG2S&B;J z{HffrT&)w4pSaT4l4xH&8dm?F_=~3ac@n~gEyD@PnWEgju?(2R?<=Kq0mLcH%rY8w zG+YpzYcS6{#KiDyKSm0;To0Hx5Mm^;b`Sulw1uJHhOMZs%Iw`cN1q7Mbm-L2#gjeH zN(#S(nl{pWd>KeTMxQ*y)ch)SgmoNa%Z4->zM+Xbx;?;A3BDYj92$;=q7SGv{|g(! z`s2a$wUv8}@@UbNN;TgOW)jJ$%IP%p>-&x zUeEBJ)!Du^$L(M!ybt>5JmEwYyn=%m2c5Uf2t?@=nYrq`Hrdp85>~zgf#o|x)Zcsv z$yNHiIJt*$^kYcyPGY8eh^gxq1gCG@jOy8hJtWB5mT^e*EQBBj7jFf@N*TR*TsZwHP;~yJFL?hG;R?gX%EjI=|#+UxI=B3;2$utS#!w z;y`lfuB4}Jwq5el=J&OPHr!ElNFE~(B9+x_8}&Z8KiS`2H34!zL)O^155s! zj(-y{aJnWSKuVcOe#P2>X5zyw>+xs><^`$|JMT0!B5}j69)%;Q76z5B4(W z9hHZK!Uok(#r7txCkTR;k|DN!;;&>|W~V|FyC$ic>0<~Qqo9Rbn70{S{>Tx~^y9nNdg0QVZBkz7+LeW0%(dDNUnq zr5g2adPg{_JAJJhd#+u2@YqeVdkug)(Ocju$so?1)o+ zZ&e4T(^iR6BPbIg4NDldY2{P>14B&TM44UCkM)TGhdY$;AU=WC>%Q5(5L-9I+mzkh z*yj+Ucem3QGrc{ZrDEeZ&(D5jhwp|LPaAfhw6&}!vilZQah|BRheC%;X@iHe$*v+Y zBfTq6e;g^i2c(!-Eb?acnJ#u;FP*+k^(A~UkO733+AcV<4qZKy&E)mX0KbYaTPE{Klfp~_;#H#Z=cbZrovGtAT)BzeLcS2xn!Xw&!}q8S{Fq~Fl(t~nFtW$>egIpOVbbD!iYiXabf(_ zwV_`l;IhGQF`VmL7|i(iE^ppdI>xi(vOnb=E|W)@;-j8tUUeMbe{sc)0$4#RK7AQq z0mz^ZbfdNvpzvMTesJ z?AWyQ7B3=Q=gP4qt(q>7qsog>$$+T1k}A8EqYB%aQXi1fXqLXSzZ+X~pNzfh`8FYB zZ)0uO_$jw?R=WuJG?U33Wi=G0E=|VeBBGgLVTUh@R@OE`mlxuy5oxgSE852iptf%8^i>&|u{$?iMwC+>L@TTpS`?~h z?mmf`mW?HZ5YNdd;$CjoG}`$tx{OPbD272}EGpj>(+-=A#`I55(s zhoymc-2pMji%{>wYNzj9ggbOThTa{Qx(npd!7_!lz$?r*Q|0O$!5~~km9GyEVxLuO zqJ8GS)ibg`1|C-=t#;7h#ud;hGFNN!9}DFVO>1ONhXI)b61>NCBrZI25r}47dB{7(6Gla<>q5;tj+Yj-f^^YlDmWe3%)}ML^MPu!B)r^WzA+IM)dI?Gu3eP2MF7e2zWyoA1!< z@RqluctTR8)PM+pjG1GfI@!M|EY;G(woCVX35Z*1TJjYG2!O(Ycnh4$;Uq)E%dMInVUJcs&JzA{8G;c3kj;jR#;?ws=OTa>B^>(m(cL zFJRJI&kCEBX1ry+6d4h;&Hx+I`f$=~_*oXv{1Ggrd}zVjztb2qs|q+Yp?vLYY&Qpi z4KW#=vQ|beC1_RiDKg1>^5Z*kg_v^*tA7J}*YOnQ;e5|T$rly(^XC6Sz`9T=;4=Tq zAP&DO9f)4pJh^wn!RKL{vB_U1CWvgOdHW7&G&~)ylL=&eqp&HF_*TBUNHoU_u{4m@MX8bzZly%HJAyC%o5;FQ2PUZ$ARobm zv7%DYTlXJjfL=TYjL}eIGBYv;3WVerP)4`fhwo26{Fb*bU)pZzE zr2sgts#c^Ge&$mT-hv}W=QDnBr`7LC980hAiOYZPejjXUNB_e}rFf|DGW&EbAYWt; z>H|wl+uA@`%%-;aPlDJ|B6WzV&n=x7Vi_p1JnAP(y`BxK!N{tg#XoP&RJOxwhvr%8? z<8J&pcq!1A#7Vz4vHta&d|42w>&l*REzXHtrvEJW3u+hyW|aw59kTpQDQ1tr)+Yy3 zTdB)pqU{5hQ7pO$*%$en32Q^fn?4XBAB-nYtznZJnbN{Mn9P%+7RJ9LtF8KXnnzZhYbl$~I7{rN zBEQOyL!LtcGCPdvzI+=S_#BEaQYO=Hw!_ z`F-40Dyv_TDX4>3I4nZ3UA0EvWj$WZS_nO{gh!z0&?$as{={T;GWJIl!WcZ44S`ObiIj zAMyw%$QeG%$-rr8_UkWHXLh6C4O>wR-k*(!3Z91^YlZ+mJ1`Y*_4eMIjI$`ik0mMC zG&AfVGlzC|lMF4R{$a$LEVSQwJ>=~NljLxx9utpLlD|4L{~E3{hU<~GKwwDeZnmmB;R07yN71k&|_$%6ar`O0! zwVwIznDDuwWyhw->HFPXu%01ZU@B7?rloacv~Cc}D_3N7N5*oF!E4QEvHf25Z^SdJ z`z>WbvhcH(qD(e0Ffvp*KwV7=i8bwDd6Tnag=Ho#DT^Sk1%9GB(8IT95Es6k_viC8 z#R13*+3^T?@la{MUAa+BJa8kYJUu7UEXix zJZuLRL8R)=Q5YV_b~ zc;iJY^@g!%&)+yUB#*$4Q@73VbjCm=fLA@5F`XtqadXrlywak1>Ge9tB6Dq}FQaVn z6fZE*?5O-)3M(i$?5@_+GSaKjv_vSq6twVPO?9nKK#k&*=*zcyL+*pGj{9KU`N}|9 z<`_veWIaRq^^zFL_oSYMezluz|Hc%MZ8Smy^YPr1U6^Ha z?y_*(73S5PYpS_1Qvx!xI1s(l3`k40$(op$=t*N26E_UsztupO#71S}3@^Pk4Nytd zm`+NbR7>szu-4_~S6b01$I-MDTsw5*`|hZ3t;fanGRF4$!C200uV3c9RV;nY-+Ylz z@A;4Ci6&sGtk;q4<0qo=i_>=6Cio95s6+{;mx?!>w}Hz0;%9!OoM4X#X! zdpC=DEOgF9_!ud?i=d;UaJ@`*-L=H z@QI^pf20p@B(7hNUMoEtgr`fdAB~1DQupiuB~Y)8Tl>O}&#v9=wIrp%FXhrUwuxk! zgQ9x9D*>p+uV@eFRZ3a!+gxUd<^R6nj$k)u!lQzu$SUOmjGD9mi=g?Fe#<%&*%(y+5n~5JAUa z@Dh1THcD2FFr>T0-+5CSTm!bDGT>PAL=afWglHXMk}V&=&t~sY`-$V1+8Yk{BN#rL zG4cplyf@cH$B}RR;m|O&smq(-bXd*)r~_Ltz(=em z9qq5B(*qG22pS2it4q44ydh9b4gW_eC}5B(Wae+RlAT9NWI43*pMclVYXTh+VETgv znczQ1(S<7c(PWv`So}UuRDU>0OH1=+7~Au*!w$+xYE0SH?^Ok~m-gkfbi|Bfv_>&C zAE)x21yD*liFoSHofTNCy?S(#g`Bye-P*KORxe%Ge=a)etJ9b;v8Py?J*F>CH_d`b ztYOqQ+k1`*b>O^f8@psiuR4wiTfeESH?dV2xTpRA{kz->eSzrp#LosN*kp5jM(Hw* z62?%g;5z%)Uc;gx4#>=h);5K z5a~s_;XD}c`+eUz$A8ox%d_`R-80u*GkXYeGS997uJ_hfFbv>NJTD?UyBE+?7}70_ zDA@hZS`s}j8pK=tan{=(nniXbr;znC9m%V1@|km?^yatmVP(zicP@CY^zY(CNc&Vq zJ3i3PrSeg{NfAE3wbo$I^RRQlJ3a;qCDi-KvZCOWC*s{h{mY;^eBn0A>8;1I17+n* z760@Da-Vub?kXxhmogyDQU`@>sTdL&!m_82C~5+lTQE$prF|>P)e~1xE#-2zArSdH zuEi75^F5Zn%r4td2}$&N+F_bk#P@Eua7JWG)Xvw=6^-1mi;7TjD_eUQ7Z(@fn3I|? zome{1JeghI$BPqzpPDy7QczogC;NEy(*Um!R6qZuCI;X)Ut*Bu{$_{vtqSNGdw< zKDJI+tyn!Ys|BiE3^Ag=?@nzg^uDw=Naydh{HK^1%~os*1NX6)GgFwkL`zmY7PD1h z$IjI~3e}2!$BdKn2y?LL@2?<(;A=pm`*mf+=#?#d2R&s4kV8QyM16#S41f*ybHAyK zo^hwzDHvd0-8v8Qb-?UzBXn5Qo=Q6fkLKmAJSQ4X6rrv~r59ut+*QC+O;L(<`xu@G z`CC{03B27gUej8(6HNJWZQr01pCk)1!3;1l_3AZq2zuVC2g90!XyqR{!qAcO5$TDF zkT{&O8|mt0Fex2h?R2zf{Uk*#Ygy>n+~_xJP{a3#g!wTfu&r$=&G5IrqlrXBy;l!C z1V&q)Jj`Z}tgIW z_&$b`LWusjb57Z+LG*I$8K$YTBR%AIq)oK}O94DBMk2{}dS0CYf>-9oV!^!xCZ$#YFFCd z!cYWkMA6QabDXXBVA-&`pM8~x3k;iZI|d?XCgqcqAsHlFX#$(1s88O5t{1M<&zMBU3n7BC5sfAEV5^TFZ>=aQ_CB%_UaQ<-|v#L<6(Jh3&0T9#@QVVhk;>F8;vN6%+T}X z4R2DjfH|e;Ml(ip;dp2OtAfKj@5F*Mv`k%u+x`(yrQF0&{Qi{Y4SGBM-F8XInlad= z8(HmM@4A7OKJs;n`*;s;Z#EPMAtUxr2K4u2P)`sfM+D;~2kX}s-!o%YE=wKv%M+>& zFqnZ!OkIt9WRj`$<96g9SMh>3U?4>z%22knn6*muYBz$?+gz@XEQ%cg_3zZfF~o{C z)(}D@^s?Tu!AGre-$QATDyL_DvqtuqMzzZi@gHgFQW%jwAW#?&`bqrz4*2KUHsEwW z7$oDF^G^+3&Z_E+Xj@tk{`Lojt5)aqOEEvWgrZxHe{v!vzvdP+*he>R;>BrF>yh## z9M)?W{VoSJp-$W&6M>zS^NS!LU}wQEl40bvmLHwN#iKyDPE_82!G~@v6^vFKo$n3R zspLB_o?e_C*$mhPV>15n^1nupCk?;26)t#rT;gbe07nAw=MqoQ-bp_%MRvUToZ#tf_~iD{ z0IxszCdR9eaOH5;`?R!eq3+4oWZE4#P1AV;mR_VWLP2~YUppz(NEfm##WHj+LHb@~1axal{ zWmZA)T3xO*sbT0f8&IVrIK9LhI!3S$(y-o?gfH|iOHjfqw;fR@TiY_>AB&5v{4V<@ zMx=uOBN_PDC*Y?wKZmJ7L5k>iXiLn{mz$@8?T**X*J-0+`bh4Qz&}2g`^eiDLy_Qa zp03kaCU(Z?rb`Al;0qlXnH6F3JNgr}XI))gFDzdg7E-D|!GM*kMp5MJnUBQ8Zxl&V zMh^hiu-DIyLe14NieP6HeEoXoe|%mMdy-nJroP_3xal$#@5IcI*71HCk_2&z_Wib2 ztio>%0G7cK-7Ex#5q-ASEX?Q@8nU6Z0u4NKM-l;wYxcm9$@#H@KazOn|6ysES|So- z9+s(Z)lybJqan{ zs`OJlfN%9z|Gxr`HhTA$W!nhi6&8;j{8OLUG`xcb+Bu6oe_2yvxw+9I((6gSUxyx` zwFcPosl|1h*M`R;dTn@0{>>G61FYFk^KA!X_ue`>{xF2mI6nCnImqLKoNPBGRhVeC z=AK?_mE4&>|G`y9_rY1;KfrjbM;P-jFYjN0NW;gKjbKJR^*f!!sNoE*Sk;{dbWjC$ zCKG^}T$X+M2kilx{5YBDb)hd;JzDObW&7fgwu_@za>Rw*VA{Pda-5!CzGXABT&-5TQ z$*GaGqM(POu?{pUQTf|7H6FD8W+ZYqgb;KskY5LY;64mB^sq~G7IfskcOBx(=oFry zwYmw33sV|%hBGPjE-xDaN|8806dxn-rJt#Z2eo$qx7Obq@t6FwXskUv8oz|69?ti% zG;N0UPx4UQ0XaZ2;$1%k9pF%k^?a*^V*LIk_y9TpWKLmZ0X}*Id?*PI?e7sm@jaQS zl|#J=j{(@WC3Xes%wTjT+z5wE*<_jZ_w|4LAufZj;Q!^Iz1Yq_5?-t9x?H7$Pci@Q z0=P7@4 zKuLq08D9+t-D1kzT;5k&hk6{2l*Ql);;v`Kz0$zpr;x}S&7&#*FJHU?RslNHlnMwe z)3a}tT_X}D1u+jh3ew}zjTl%F>f`_P0d9C(fUz^pGuod1(nz2voSmX`sYi^EtP}$M z@(R6MSgL73&YCGYy&or&`o?&C?z-0~zaZz;X91JsqT;Ih<;Nb%CGFZnm=8Su+YYdE zNxU7Z_;pUdm1E0pd=<*^EvNOSGowb z2z_JKl^-PmH@s!R_Cr_!85@rjP7BrToVMp1!or}-L})tyDEoI3trXh~U?D(;T{n28 zYrTeA@brQ%Cw5QAO*>>U&AL6s@}svMd;V`^kOXXBQaHH!m*PrdytIx?yb|SKfFPOs zF8oezZX}Gp!Tvo8GKO$3INnWlF{1FUiHV+Imd4c=FJ2U7EHrtNvky*iTqn8z`RP*= z!L@Uix;P^%ueO?1b=>iV5O>mzEb8P4UR=1FUJaQqLjE;8>T3bOSQmdmhJXOpk@8eA z@&ceVXqK4|avas4fDIITz(_O{;dL$=-i1qdHH>*3?A{l#lVfK(Lzw<1;(tDuQe1N_ zR21azdW52o*va|SsZD3P-6tA8ef1A{02=Y`h7Xcsbn-XdmJ&mv9jef4kH8p`khn7q zP4g;HB_Sp4=xu4`CC1Kd7ap6GU`x#yyau4J4ZgJ57n)TXcN;C>PwnzM`k0F7YDc6u zro`!ZJQ9)$^`|eN8kHT84Nvh>%;-x<|0|)A*MOlN-h1D6t#T94O->c@3>#d8Mjo3~ z#Fy!S5duXSqbF4_ z&_Uou?4L!oz~@a9CHecCe++DlssxyrRBY#H)o1{TFISHPsh7*MG(nd2(Q=?-{v~;D zd%%q|mpWhlwkBV%0<(L!Ge}D(>*WB0>h8D9ADe!wHV_zD5_rR#8~kI>KS?cTOmpFM zJZ4o*LcOKspX2^{(-@l1&O%a!brJ-|_(sNCr+IA*Qbtw^e_%Ll`o}lHuq=K~!|NGQ zcm;+;A2c81IPvk&TagIG4|WPw?^iv5i9M7*;VUf|kq;7|+}&AahhLB)vxh zl97A$fE9SY+&|Cfynem_zv1=W2t41!*uQ{Q_e}=L3akCp2)kWvR~EVCp|Myn7nH;IohI$tQFAwGt9{M-d_0A_6lKhsQybE9yQl5xz==D{- z4na3om!UI;8EMQ3kJ7II2_tHAlSw6rfL21G3w#q~12}Hb^PpdM)_=r+kJ72EKFD|W z{@u!ZlkN0sPm56el7oNzLz%)0n#J%M;dYHg<g9K63;*%->wk_$!l}Tp3c?H~P}Q^Owf=#ASu7QWb>|#K+TSJv z2Pl9Numv6p@oO_M71!k;VqZ!JzgG4^T2^gn6pkOxLM5gK0}88v*VXv@;r}+Ce*%c9 zXlkVoaynSvlDVxWNdEhW*QV0{UXhc8fKJXR2W+m-!V&LftOX1u=n{zevXa!VZaMaW zVGU|N$eIL88aR|0c&Uvf4%Q#@{PPZQPK;5-h%XOWds}G{{`$z88k2u>5pQ=KZUF&D zz&%BimabjQe+>cv=M9n`O8CQvUa2 zh^0RDL3RepYkfti3nTN?MTG(t%ZZ~F|2QrKyjgQgJVMbsT9n{gKcn6^R1_b05`>3^ z&7Pc`ph70i6KWhZv7y*;K%}b94E#e-`y0D~5Nk>y@kU;?tM$|YJ40#j71hM=BLIYa zU}(5#4yC2J0ldKhyVT|N8z}jEah`TXmnO-SMA>$~1cu8hM}&J@XAdOcB3^JU(53C$ z%aavV#~R>v>9zXbi_{Aco03YzmuA%cgN=~FDHsW3QG(M7WQWIpMC4R8 z(D=>NsYh+!(Am>EqUIA_nijAaZp~0qNKAxr zrsHMe<{Gx1gb3Xbk^(qxm6-e2x25;2GjFXL;7CVWYG8SNUX|2Lk)n}ZcN zZfY!4p@CsDt0e&M1~|bkjc)R-vU*m|k+h{9?uAd1j|l+stxLmvY_;7+vxzm!AOV{> zf)=<(6Yp#OeV;#;GU|Pen&02-{CQyp$>?9%;{^bczxRkYCN}!x9jAWCRb|jnKAKQO zS+DPJ_)?zQJO6>tb=}pb5GhW%g$|lGlFQV0(DT77W)76_9Rsq}uPh1I0nccp!SzVR zWAFc}2|r4vD)}I9W6H-C6SdR#aUB2dp8(~j06Gadc>)bG7GRJTjqy5)i_a9MGp%3< z^|IY>{H@MXa1q}<0!wb91RYIdYrMPXj_Y%lxmuwBY9sQrcNNGK0^Og8>AUWHxOub#*oFg4w1Ny4iOXxi$KTVo7;av7pFR=T`rB^04pF(U5qKN(j$ zMG2P>rZ%Ky4gK-t;9Pe*J-Wi8R$BX?#tj_G0I5LFHe8$^yS^Ihx;y~}ZZ@6{; zF6@zf*>C*E1_e)IO_FCLM11CH8;dA#~_*Jla(9`>=-tR-6NkmXG!m50YzZN8?&P1w>D1mA@EVaohDFL~lD<- zWX_tt98aD`?fMfa7+V_aUr#{(G0aJ>n}XgvSo!pJFomaJFpN00@=lR%flebdTR42+xMwc&m7wtHpb{%XwQIi-zvV3xc6Hh5|Z#% zd;eymO!tWpYxnGt&o1fX8&wO9ZV$%{4io|sbX>|?J(7zzPM3Et-G1fp-rvEB7>Z9T zsiMj2JY1PTX7spBwrH|DD$@^pLF9GJZCkD>zJkyCRtjXUgORFizqS6lJ9;f)WfrKV)LJA?g8eT?6a zZvrR&nhNe*vavn~aP$qgV+W12M^F0t%FD~Ya$O0f(t}=UE&9{dl5rBdse46rm5xPb zyA&OH77lVce0rOPi2YsENW6fSLTSoK6V4|OrVRA98yP2_*$zD?mvMjbnC6ckDh0yx zX;`JW#gK)e<_1!GCKOWi^6CKk@wq}sg;)$~9-h0LouH%l&FVJ7YMk@l-HyUr-hmH- zf(HDw$f)z4EA(mH2E&Z_*=hRYP!oZ!Px}ik?p*-{j-UIHGyrSqEm$dT7lhDRY^L{?`XV;69_D@n@Ls^gHy^Jcy68X zqr3fMKmc8vbavywQdaG7X6Z2}y{>Jvu6gt240bE)R>@YlKk~kp8k)B|?q^w8AGmyK zK-P8SNo2yJwR^7O%h{i_6RBlbU0vUpo?H*}NlAbG!KTxbK6@C_iA%K1sDwC4d))*4 z*}}ZT?25SgYD~$YSZubKOSBCA8@UgXnBMK$B}<$@uL7gQ{2(z?dwX_%Fa>M1rWmg( zmqj%Cx0>)Nm!A)bjf6xG^eS==c4!f8hmIlO!0TE#HSM|-;@KH5Cf+~krJ1`#OL$}3 zFYq^Jj7ED+x0+r#*4Yk6ci85V=gbQ@m#Fm@2~kSah_w)+ZwA0q2}V+_zLIMi6SZ{) z@-_*l^&Ap&GsJm#3XVvtD7%SkjtUe6Gz+1NXe}OMvfqV8>sEFP?T(fBe)w=G8(~Xj z`f`WxQ0vQEC>&aSPhT680CxU7qSfdcqW*dVjKEGWAiSk_oji%-MEo=~wB&ZsK6SL@ zreZJ+C*834;y?Y#^!c5qUIQ*B56%4@KI9D$XL@pa8;F|{bDcdcpB^rIkg2ZUhb#CL z)&6Uu>OPINX2fodm!BtZUoX2}LNg_H+G;ZQOHb*a!kY7gPXB1Ngd9ZlJocgJ)|`1X zt1w`Vw5gpgBIup>urozI>v4h+6kq*my~E`cAAKVZ zYy-kDe=9DV9Suj?em>{?{`I0!rc4rJgB)|7Xe1VQ6#Ho?OE$CjWSqC?y(^#PJ(k82 z9{@0MWo$aRcD5U!6Kn}8k+(;63l+9MPwcsaI{?X+>JtCpO4VEa^V6E(=T# zA`H4cTfppM*qA>izZI|iA-ap)&S`$vXCpcJT@$%$KdDmzX}+UH)$2EWTuC7yiUT(` zyS54P+MNt>%l%HOqo3s|PHlIvW;YkVsEheVehr!F{`gnFtxaaCduT@LvpDr4fwpOc2 zOreErVRuXDvSD2KykmYVtfT%YTBf4zb~5Ki{z%Vhv!sKwqfhgF@5kE=vxl>~45vxP zULT_`YC-z^wBGW}lEv=B3Dg%CxSua-mdP5DDS}CUMW!l@(%Zlh;2*$I=nB;ElSuND zZ(o0IdrZ`+l$FMZ7I|Lnx_b0995pnpUnY5;%iZcDm>{NXgvtcn7-=4pEb4N221$Fi zGp4il;Uv4*F5I&tu8yneVhgq3)1}?Fo@2@v&~i6t;^@`o79(?6Hf3pVyLSC<;@Ouj z!8O!XPtGi%$2Jw}vP(cO*;rtHw{fPaPosBg>QO6lEB-p);|RP?{pd8ei`V)K^bK%~ z_~Typm58QtWiiv3xB$=IKVImzK)*0j5D^y`H&a= zj_5$t6M3!=P}FaDYoX6Jc?!nreixVZ+hxYhFo&e|i(&cJ_s4-@eFxUBGH+OF(pb7BX%<-+DHm7oCM|7^nPzl9X z8b?2hJ$f7l{0-%g0yFrgYy-8E#H_SxfyI|}vkijBxvtAp5YX$=m{u$&2LoLww$;J}>RTJL zv_RKz@zYCUa0FxV6Sa<3Uitm-&+;JNgCM!4E$mC6OkFj4UJ5L#Si}I@6V>8Bq6{^E zj?1Tu&?|uOvQ9dQt*ZHeZnxAW`DMEt3RvOxc$uJby6C6H+&Amh{i(6}Ej9kV^O~H2 zi$Ocolob+v*=*L}$8@m~0Uy>Qyn+0wN<^_knEkA8S;;O zDevEd$^Bpf&wNRM<|{Wf01D*qb5bY>BZCgmwq00?P(3XF1Sff>n-!XzkrD>YYredf zG!hCEO&4(-;4=ydNkr%|b|CdvzLn1L8s(1EJ1^@<5idW+d+urpf%xXN3FCeoCChVr z$F$JpD^qjUs5sx|X}&~X{V;2zV>u`zpMTG(qPTinFywAA=^TIqp;6ev$ePpA+gBn6XWNVwjs zDgzBuMp_78`^Iv#oX2?vDy#T>+U#a8-PLjUEOGcN9rcx^x37|b&Uw~(=N-?kizFS7 zlyFD0HSJ>)$y{LDgcD6jEk|kf?7ql@YW1a^{WZE-&898Q*}Dt72dDv-hOvVbmuS99 zNi1b_yK-xnonA9kg`8Wj`=OJ-qQJ#Q)ADT{7yfvRO4!x<=Mjhb?IT~K^#_fzLFK=o zz#t3`%?SNy=Yj=8FneebjK$3T-xYoXLbqoB-B}~IW=uY za<%0xudvaPdeJ?Tyg#xlGSUVs2EAor6Au{BYAI5WhQgqBIhuS8PMbqNoWUIBdoG{5 zZBrLl_`W1cW+dPust!;nF;c0(7c z+R1ImsXDIlY-VmQC&jj*?)B~07LLzc}l&j_lE6Y1{ zkDa(n(SS7vmhAy>I9xzjJVVmr!dFU^j!?kGdP)@p-lZ#9(#{sUoHW*3^yTv0?}PQ) zCmB03BH+JY|)~(c(G{I zwnKaVae`)+&MMkF&Wx~)jf$p)>}|}XMHBv3JcV4Vh$mWaP@R&tIxG zj=3)#xrf*7wXzpcRXr168V$V1`0!NFMDf%yYvG5dS;~|3iXVo0t|V`=!prNmckp9J zc4jJGogFWDcowSuJX_6o_ZbivoEE?}+ZH_D>_Z)09_d)8xNTeAM!6S_C~K%vnDbT5 z&DA;Cd|OH@0Y(N*rBfw+@a)>{XoMq0k*Bg^1zVz0Eq~1LKK0iwyXBiptMr9Nc(+u& z@ZG_%`}I(mts^M$VU}2+fb2v1BSfuP9N8336bRU$(b&f26F_vij$WLBmL5n+Zdie` z8CbpNgQ55Xr(6&#iswNsIjEM6aU}ue@9rirt&V8!Da&3O41L%})0s%5dbxBbm}A zLdp~Z^&eRt)uMWw>c=il$WO6mgBNxkP?H6IT6e}^_03DBSs&y2qDf*sSv-&4m?XFE z3Vciad6ny4*|C6}&$d6eiLDywPaaBf|JjDBx|~R{DfU=ow|x5H*o09U<0YBvCaczQ zf&4dsOCiq%lEukfCFM?j(NBaph@Nb|_b)UA?6svO?Zfn_w9z7tEI*Y~5`@Q=1-#Lx zpt<|}(Bk1u2Psa;kVU!T+XV;k5xS4jLtRD~-je`?lUUV}!eVUsZ z!o-p0LeYXkI-W(F27+Em(3z0mw?)^0ZnRYWv)iVB&KzIkp5`2v`;}8&bTg;iK_6)q znDB_a7VCn%X;t7dziExk<5HPx;cJt=-VW;gm{l^;7J8lkv^(#0`}bRO7(bO_ZqC3}$f@D&x0%8n$gR}0C-1B#tcqKJ zTxU$?cREzAui6Rl7fc1DR~2FrSDKMG5-sF9#tX42=tpB+4BolWtL)s1#LjkxjA{0= zeOq46s>vd?z{_|)%kN}$c4%e2aPGda_TelsZoEIPK$X^z(#SnIo+;_Y)F=1knablg zVUfluW6$z*zLt|;R-ZMbc!Zyg-tkxnCDSevlZO@V6g&`8r^vi;yNksLq;Ck^+h1|{7C~a=0%uHw(vnTj7WhaxtN#9}exTdt7}~U{{|fTyoDIck3e}n0EkZTeqr&ch_PW%m&ZgB_5@3 zGu&ikcC8%Izeb?EKcU_dlt(6MdF&9tS%{{n8K#WTI=1sgbWVGV9e~70UD8wi(;}BS zZ`eY%k(L5t@m1aZQLNS$bZ2iQz>e~@7Vi>A4OqF(ySM3FNu$h~R%T{TaGiYJn2FU! zo-tjyp472Kq~t6wnOtN$Z|oenzD-%)(r9|$nQd@ig$ft{c-ezXm6`IIm!H1lWPX1U1KtpWliIGwC&^?xFlwyt=03lF#GkiQ znn8!XN1F4%Cv9Mq8c!U4WOwzQ`k@zkoe_eM02UYGg=&jG(zhSAZdwdu7m~1%H-qr}>;-mols=U5MQ+&8q*3zl|t6_8>*;YA|S`eb# z?cP>KiDW&*vgSmv=n0xa@BQ-UZX*t`Z^PLw)v*rN?o(CuZSEUb9^tNiTplqSANDH^ zS$j{rPniWi=oDEEojJ`e9Xor}@R4V{IW?`<)y&4A0tzR$sB3VQLH#w zv%+nd!2OmEUWZCV_Hn8|Pnfo~{EsG9F2uXCX5{|d{--amXF3~Kex&Krn7oI}E`oe$ zpD&f=+$f<|#{xMDCSn_fJT%&}?$S)^36%!>PA%E<$Kqog$rVo>=6HQn5Jr_Q2IWR!bZ%`Y>UQdvzKFbGnEG+ zrwd78I1Za6M+ph&%a<#t8lB5+V5Q-vdy`o@awdkcrqgY+v zRd*?Y{7=YFaV$UF?QaJqb!Q4UiRp`J){!BFjl^V%=Loc^H1^}uEt{{1r*hN3heIo< zp!xJOykTalU%_at?s6bCkvW;KKeVgfo_(2a(bY8_0P`_z^-VZ~PcJ^45cQ|#hB`ge zj|pwwVvWY*`Q*wD03}gAWOaZ&AJAZn2d00y$^|k}W#lrHqSt)iIzt(+Lz5tB)k#CB zw^sUtMXX$X1wN^qp62Y6&VehNf-L%{tw>^HQO}Ws6M$f<$?Rf3ONE=_HiP9+b@rj@ zifb;?!Ljh2=x0`Zl>zq)H+7-KCYJ3iXOD~1OOFd%w_ta}wt%}9n)9kQmL5sj(~AWt z!pqvA@=I5Tlx1gy1=W$J0jF1P8r&6D`1Z6^O%?bvH#!m?=t1eI{ z2t|NZQN%=1B6fqdmnb4IrR*bAlqXs@?gv7qy6uW!i zV;by8HEOMuF{pT@z-E1!g%EhADA@-ag=_wkv7)z~c3PU^c;WV4!nMY73ohRkOtUGC3yFcbk}-EXU?;uQBwLeu9zn(QG7nlsn$1)+ zu1r)O*3FZlSSXEjhG??vDLt4g(Ln>o?@s-7@_R-d0zCG}$rhMrmc8=|zfb4`7F@R? z#mVe8?MRS1W1@LzTc#~ZT zqL(?JKD~+=3WUd4sqqdf1s}XEfFt)hsoM}(@S$~1KW9M^_5{rgHiMqMkZq>4V%xy) zVz^a9*R=WODDG;oX{GUG;X-AiY_RCyYySPDkHJZmCk|4tmjw0_lETOml9KM8nVfV_ z4`!rVOs(x}ub{ZJ?usH~zx;f|oKy8CIV`W_O_EN|R^Qt3vBJhDVEgT~r=>dv`FX-o z-O=UV)dauuNku9Pe8YX!o))`1HYd5ilLG>7V4dyXS6F<34kmXf<3YfZYkVBdRFb*kc-fVj&+*&RkyWVy6jTIn8amX_Ig7uu z*Lm>nn$Ysz-|K@y!z(W5FeAwTcSfKx)Ac!fQfnA1aZJdBlPMB?jSR`_fNcEe87_*? zdtGPi77mK=v4Q_j>qSGUrA*40C8lUe)Cn?Ixg{4ZA#L=b+(PMi{y@yNepG?gilk@j znUJH6Znh0CnplRi_S#u_&bzNHoaCc6<_`vn3>;duTb#UU3Z+b%PR!Te5f<0>eC6aK zZd?reQCv5^(_c~BRWwtIfwg7e#JW}&O?QP*XYa8R8!uv8u5f?$uy)}h>uTs?{c1ND z6`WG*B#orR?W-*sbAn%&U_igy2pHsY+-^Np9_!*w_K&`i-x+=W7hk*P>+vRAQ||2S zY)Mkh9M;VnFMV!ll7DO4Fzq>IPAaOoN02!Q4$t}E!uE#TXNXQ3eH7t^5_cG+!3i|M zR!#X_)~vAEqGiQNW5SVOtJAf=81qp``Q$)8^Le4^YgF@z?D3CB_X1)X#2?7;9)1Is z`S7c~rnYy%lZh6RAp z5Jb~vk$6*8kW5sd>iAyiKsq9fn6AAdHhl_iYKQX$N51Z*Wu{oh@JDzn9;KY;2|KFz zg6^vE?9|CKdgHL_Nu~NqWqDF!i4iN7=wtCN(>v1wAD>%}h8_35BQ>$y+8SEpWWuLvWni4L=mu#%aW@eB_3|Nmbyru zsi&!=9P8Ad4Oj3~YVar)B^JKAPkS9CQv@wk`A+D8CJuJytZ*wP`gc)ydc?4aL*-=U zr-LUyjiV|%W-4Uw)6MO#Q!Cxk!@o6-|IvB;!TXg}r>~tMp%6sJQ`*+vLa-qPn%;s|zsr`*C%`&2>|AVbZWV>6H7g0BT(nscMXarp$oiw~pmoTtv_8mxAwP^Rt@KiW^&2HI&q51W9U)OOAVfIrI$X zdpi7i?1QTKQLw+dXpMEs**j%2QTd{kLc{ilL`TgrrG*|?~hvqxZVIs@Vl8-yfN98k@@%IyB`oWJOfY0f9ikt z*jw>vyVw-GPlph4{rL1KJq@xS8?LFQ>9JA_{^Gl*o(s zR$+hnkj(&d7ag86qP^1{$wW7lOENt4)tlJI2v=Nl%$ zBdL+c!oHQK-+3}5-~J@fSo}_9JbXwX%fvClSa`R*!3cRP#uvWNXKir#{g#?>r$Y)h zf+F>GqKIRcab@ynY=A>XWSb5HzNsLB%UfGTA>EI@e7J2=J(4p@^%any z0^G-}<|KV%et%!bJ~_H;{LAFQNEJ@hsKE#d_v+!u&geyw=MLG?$kofKlkz7pdDxace8m`m^MHp?+Ae#Dk5sL-n zW^rDkXH0cq1g_2*HAbBXOiDT(PwRLy`=jGBPy|^8U3X}T0Hk`(b04d5;$GzJCo`i# zCw&z@!K2rnKN_vK*)2)b_8w`Hx|zO_+48b`J&iN5#xublOlxtr?_%LJZ&kzhTHCH> z#IA5&wPx@n*xMgBrA_b*@ZfNd@4mEJ2?<`ylc98WW-rO>UgBo%%LIOjA|^g_KML~f z60oXzHkKm`%f31nzw$pjNV!N&l2aXPhGae4X~%6bBpgD}Tvxelxb&|g%Fs{Uf6y+z zyc)V^MsL(e(oOuA3%~=BKP#CTI}V|}zwl`!nzWU7T{#>vyw;?a>rTYU4RD(tIq5$K z+BclmzzVC7c;?l8nLI9Vdj=jO)s)uh&1Wn?A*JC{^D?|;^w zw4Gx>gjGpvl`%673)r+%Zk%;Yy;eVl&^7Kx(QZPrfw93m%yM5c=ltA9v)wKZCVYDy z^etN?tt|*1sV=Ntq6E(=?3xUcwLadR%*;^g5H4>v0J$y2t(b-)Di%|$CtC=Txb}k)q0Ra{JStN!((9O!DxV& z2t6bN;1TB20}v$P1iu^-=&2M~FuS;sJdP`jT|Hu+;6r4TFiA`qdDG0c)wp9Qp6@iC z6DsDR5pa%;J!<-CpK)7@R5 zd=)%x3$LCaZ?tqkMHVImFuU~ghrfO8ppBbhKQQ)UhAClxpjWc5oe9@YlAYB?YDR>? zcFxY2KyL6w9j)TqFLQ54CeVtUJg%OT+mc^QZr8q=SWL(^1>;dy(;gio%5}8K+Qo$^F#m9P z!kW>b;5s%&c)UBU;Lkf>lbI-^TSGTj?{B&hq)P zF7vHtNZwIf50$NFv^Wf6x@V88N}oipwHrJ4YB?j4xw5-^9Y7z?yD>*g@2gz{a;cBBcBlL-u=F zj#)~W`pU);uaK+eyv~4EutWP)R~Vsr96muuMb;OKsx4r$eTuSiinLTTinl4sXkS58LO!t1xmjWenF>ZvE6&jc4e*2yn)P|I=+We}l@d$kis zdZ7->&A;-LhzL0F<)5dv-#g8X`%c_|!8+_T>Ss4a{!TEYs(^)A5wrWBMl=VMNTtco z2)X+YsZDNo%0OOb@;vIZ-wmz zmqjaJ^%bYeRL!Z8Y41ohU9yS!z!e6Ox$h?^3xX`w7tWMdH_b$;2WA6u=W zTo0^$C_QH#VaCa7r{YR}AuGSz`S?h2#fsN%;q0h!#(e_IEudz!#sbI6c>Kk?IA7hS zfXXYvR~{YiKgv_=u*m9-i%;`vzVO&yjKr#sun$W@rQXzh2omF^m3os9e{v8&#l>kO zHRQ*@W;)4JyYa#8d<%6!?%WjgqJKF&NcP<=-0FDFm{_Ki_wm6gI@-J1Z9wT<$!*)jVclV*Q_{zqJ3IRTE|0?aMaiBNg608ebt3yl-%hMN zcIxJhe&g$qd<{7eJ#UtKphEnlf)j$FuwOHFIvZwF2NgYIkeeBisKvkD5Z+#V-#c$W zKI&xaXJ;^TEZOaK5?-aQ2;-_A#oi(}u{hl;&FMt^*Nr6ya2mKSmG{B?RA{7%YH!Zm zBnoY=&TkR@t7ATQWtOb^kpaS$jVXNVA<*83ZDG(F0E#36&9u|21Dnu$q(=qRJLsjH zrpAW28unO3NY}?*wyLaz5Ns3^{I=i9VY;x6R~@RjMD`cVRpgqq>&L;KTgfQFOS!A( zN0Tqpe!jtd-t@u}FWWfT+L_fl<#J@G2J5Otd^W$h!L&6zq3%qrYp%vjMfTKKak8Dx zy8`!R1u_yH366#H^qocJfeWY7C zbpCO#zw9BV9FsPN{0no@888f!JxPIOiRyLbR%vzV*hh1dOqY zMN;W=FDGn@zDU#r^6p=-%sO3d(p}0OwdkCdBoX71kKP1EMhU97CFdTk;Trt<1{Ej> zcyP!i{HeA@8?fWy9`{T50wEs?-NRJ(^PLK$X=b(YDNBd%5g-7668~y$$T0!=}garq)NUEfZSEPiZA> z@-PJ})CZ?f$0{SWt=2>qq7l;e=dV*-h3d$tC6JUhy)GuT^rEYPy_3kuIE9IvAFE=)@a^V_l91%vxOyZr4OsWXKI^qJrpvvGGiUaXH~{fyxxV zwe7xV8O`_G@{8}yeYO2o%a5BMUt(yDGyaX-H9AOPa5@dUgLlY~HOq6FmEs+S0%!tG zYs;DsvmMDW8afo@+@LReZ_D$cMx2n=o@cw3>!6OHY0KsD%=ncCZdQC2(mp0Z?cQ$4 z{x{DvRsfh@z53AzSkeg-8b;eS1MKrf0kVEc=>_Q~>{Un?rnDRx& z>)8)UY8>Dyf86O;VrWv)PgD3d!K8{kj89Wr+M)RSxB^%ynyT{tZC#2i<2cd|9=w|s zLGRkWy@>HJfi)XzlYagZKn7$a^i9f``s3RRPtmlq*diuC80M}M7Cf7|K8pp9J78Pc zujKG4XDwq6!T2$(b8$i2vNIIdtUKOh)t_AiA zVZ9bm&iQfVZnmwQ^YKM;-VffDrdp@1>nT!C_qz4XhVjesBhMAHWs7YWs;C|!b@gt; z>Rx^Wm0EIM4$7nXqnA8x-{~c2Dcyao*+--+@VYFp%;c!Qlu$4l$V*5L{4)qU^q0W?KYw_sjcdD8ub?xoZbCiR9N&3&!lmm@JhUKZ<$<*s3;0? zOIfixPfCiFfk+jM=j|wz`aYt}^U8z0>LUaFmaYHj15r4RJQ(jL@R!MJFv&JVh^hal ze!psP00y=<>)s@uWF^%P- zuIVm(%N^%gGRJ-a2t~r3@?au7Z(A@yA|3OPs$;)$iv3JRS}8i%_h#E?PDX9w8RYo9 zCHl{*n)C%aHomKYR~WD@N1-t?;2>%kpk%n1o~H!0UaoRlJ4DfxqT=CmjpMXTB+pNt z#w=c`9cdwfzT~T@k>xf|&jx!ed!8fbOg$G2w3UUQ1NF!}HkOwo80PG3ygU@ROSllZ zcA8LsNHi|SRNYa8jBKa>^M;~V)x&E68W`OaWD%ma*2O&R$&o><&#H2E-^oXT)+ldq zM$@Cin3nGJ_%*kCV(=usT; zRf=a+gB&?S4W8EI@Wez81FVBkYzg5-`S~e25?AqXbIQQ{B}98hi;`31ucG9^(|F#s z4OX4il|%r^;qL9s&lS%{Lu3fyh&?pwekSYML_?08|HIZ>Mz!5F-NQi9;1EiSTY%tF zTuRXppg@39+@ZKzaW5X+t+*B|#oe`q;_k(*Sg|*~uKRwT=UwanDJ$R3`pub{J$v@d z2~M=~pW>m6mEcJW-iMS%IeHcg5&{7s3z8uJ;KXg_=EUo~>4876mTAr0=tYA=-*2Dh zUsjAO7EW?RI>$wQEMr7vQ=5%U0g%nSK)JWA`gI*XI__7eDLG7b*Z#qsBtRn=$zUfo zI$GoKhn)S5S`%^xZY5$j#p0J)-_^PaNJUGFxv@gqVQE8l2n4LBrzdOqdEui-CB+c) zc3FB&cD47ft$^ zKX1jkDGIHXGv=pP+muhEP?q;*u}xG9H2U%z2NeX+6ve4?+;PMN>%--oXkw(-%?I#P zL>cmLB%oamE)TY29au`5Er6du>34jHrb*J`^hZ0ozHO5C30CVm#(}%XA zouEK~pIBSU=PGfNpuPO?_55F*M^%e{+2=28A{?u4ZMoIZsdasJkj-!Gv%PFC%}I#j(Lpfk>>DNFI}2B;T4sut32HdUm-fPG)y$8g*?+KcnQ6^DXCa6M=BPJ83XEzO z_f{$HalydHfDd1V0Y@7w0%6i>EW0{(&MlN8Q5_Ovex{3+23E?H1Y81RNwWzf7H2w; zl!|*@Pj+o%FzSsV5EHdph?69F_{**)Ey{f~$ANo<;=iV4x##$h0u0~_L>gjF0s=Kz zUxuW(T3JDx-$1l*jc8$jX^y+QJ54E4(xYb`Et{L0paR=*XT7@y)~%ioy9SzPB-H)z)!vcVH;LMs z0=P^Ut9TO4{xcdwHtHveNdroV=Jt0`ss z|1(@})iCpmE#ZRr{f}=YM<)#bn$TqRXa@h~U^93X}NP6Wj?#*Btn*Rr+=wz_B* zm>dk;EHiy+7s_&(uVKk>=|EIzic+u9|Dok5#6Ro1UX6xsQkuHtaD=0dCvyB*_xkr? zY^(6;ASAzHg~xYsUAJF?6Q`ZGzcNL1rb`*pYKoPoMb(mVo@+A}s?(`o;`VQSY5&79 z?{_w26^8_2_(>E#VGbf3Ku3TFB4{>N zZ&R1j#G%U!!CMqU>TyKdu+?RnI7;#ob(kp+lhnsBmL0P%fh$p?#M@Z++&?uwG%|;n ziHOI^W}&{%g-E@mb&>>E0vSZpCiaGT6*W3Ng4zn~%UtMC8x_d;Z21|Fr~_et&U#<- z;=A2!pMCiKy8WXVrsxn+OUVrMe;nlh^_|`1I^$Jus_GfzG4$;;kBW*h89)WVfIL;1 z+#i_VmobJY70@2@)))w$RO*EV%Q%M2=9jH>MizI=q&2jdXaQB753f)d3LJE}1Z{u`Xw+r!S{jv)l86|K2(H`lsk|Kd#x9Up8mEI z;&UUi0$CCWBL)GDT?(ZnF-hINiz$;4Hcy^)wZ+sK0!Y?g=aBI1WhyEcoBi&sP*g5Z zOj8ubCxRl8LzvWM-uQ^ys0(39oiPvf5|C0b+Y@ z;=X)tHVuRll5S{FJh!G#f()%b&VSnyG4RVRpkQLfKu33ASFfplp%BfA5+Pwts3Hlq zKAW8(`3n;M!3w#~1l6XA3vCX9$IjMAP5Bj)A&G^O(OYR~Wtt(0X#PL8rX!Iateny2 zV0pfNY{^!Zp1YRUPM=DCKE%nhaB zRpoCw7ZaAlWK#Ye^AR0748s4Q1M5Styk!kkVTu4K=lOi0lNk_{?=l|Je)5PB0tF{^ zTe+_Ca&yyCus#pF%=oiaH1Q}PbkIEo*WE)u7F}|b-2ZhZf4iQqJVMyGM<^e_6)&(w zh?$;h(K(N}^`KwkOa!Qt2rKw-{xd#m9L~l7KB&N&22%qV zubdl!5{NAio>#654Dc0gwH$3$X^qm=RrP^JP7W1~Nq(N_O zD3kUxavBceg3j|+pF{^mr$9+EbcB0|H*(~sp8aDA?Qnl0n09!3LnS6N3Ia3aB7U+0 zkyay}L^Yi|Q`@M9nd?nF_nAjagMpuO-w>8yAwN1;r0gB{5P_{MzD%1sMpeA+x$9Aow3dWx7PE^ zsY=ou2r=a8k%?q-9lAfR|M)>$kea8b&+{Sq*i2qDkJV~t%xLr|mz8q0Gd8r~1 z{w4s#L7$)R3tABI>4491Dg6-+p#oNV2YObH1oxwPOw=x1g(O zT|J9nokam*!XYypRU=TGsh}A;L%)uYw!8OHCZK})tH}=sf6wBL`rK*Sc|y#6giq5z zuY{Qou|aYcvP&b81S~5|44amPu3x8Sq?I^{v>@*@Q#YQmJ8fHYyiZgg<-tGt*j180 z%2+J1I_M8U;lY{%GBlp@E2GF09J~Co3Y!SghbMW8r;I2(=lD1|C%FDR^dpqvFo9tZ zBu*u@7i{N=@&bG1?%M?Pqt5$}0x|_HOf>4+w6vh8k5X_WBk~H~>_LCvGt$>HKKMXo z955P(-$$uuJl}nqgYWfZlR{WqAVoqRTQ8PyDU+Yc#fA%{CQmiEjHHn(Cpb6gGKha! zRe>FDLT}x>sC3RhiS1;YrRtYfjM-0+?CP-D9c;G?Qpd{gH|@U8fp^^h`nClGTHDYx zEH5u#YH3-pPPhHzReUrE1Cn)4ef~f8+b3MhltQw~(QnMF1j9eUGmR12 zfq=ZJcMFzKcn_cuo0~M@*>9bY}3T?cGinJX_F~7 zh#;=FF=dOWEPD&*O)!*E9g5{2wGp&|rJ+1nFlbRCoX)4FC3}Xt59Wp|#>Q2Dst&P3LC0m5V>EGc<`0=PnktHqbN^TZrH<58$!MYKO0Te^*(;rbTg{(U7W;mlsID1 zeaC|N?dF-}p6E9fhlMI{w;Jap1+L4^i{dR#@hj@{1g~uHQ17lo^U=B_KJGsTsV755 zT;@N34|o4-pYK(eDkLG!xL;$JDbObWfb$8s<5hf0e zp&wo?JRhbq?N(Aw`IDe;N4-FsV}{lc#BL=;PE(zEw?bsjxF(X#ipBSe3Rzr2hz0Cc z+kR$ig`E|KWT)m)ghp$2u|u@U+IGr5l#B82iI4)I`^->T%dU_Q4hiZITCiDOXCFq* z+y;m3bCyNCJ@xOI>FF#lSNoeKogS#~1Mg>^9#|S1YkH$^XPmq}?}EIxi(9VzAv{4i zmNpJ;&-#cF+yHItO^wCU{HQQkz9(d2R1rPF1}~36kq3~dD5%PxG3uX+LWK2G^;gUQ zK1`k`JMPZzw#mcXIbN8aW#y74`8S4H?rVm)RBFUo0-HY%Qs){2K7FrWpBri{WsMM3 z{W(jG3l)HX51J>Wz4JYH96oM~=G4BGrLAS_mz=g8+p~eW~NbK~ypG^e* z)P4OV;66h7+Uv_GqlZ|g1ZktX{CcW(&_8ZdDJy{mu53qHX#eN$zh8zPMK|%JaZk&G zqMfbfY#iGq(acQGjxi=Br8uUWtPPjYG8YSh#+F!%Zr`DyoOyhf9``7HD)2QMBXgRxl-G# z)U!%vGlSojh5HQ_807FP0CAXlWEAhv7v$s_7V<*0GJ2PzK_&FWETsiN_h1%q)}PNg z*v~gqa9tQvxSF2X^$YFVC%(R|Ge{;iXjpb}ep}un?k|EGgJ2YHmyYm?mY2dF!Ni30XNRiiSfn)i{v(I*WL4{g>>E>g#Rh#F>ODD=QhGj$RM88yy? zuL+`{$bX7p^8J!2oCFVha*CBOm2rANmd_-7&Y7r+9xBE2>IJ$ds;4Uc^22u@Wu)z> zTIdQrMvS7oy}JsXioqTpMidNcFUVMoua6#&^HV@6We0O#bX0OV`|t6W+5j3771I$rqQ=Q6`^V7tt_6u$g}aOuzV%a`wMC@7xc8qLh} zyQ~^v&fU(IjgI#ih%MO{?!Lo&rxE>Jn;&Jr!D3#eay|+Q(W*<)7pcN@p+G5%nRHC4 zU<^uu$s28FL7;j2Ow+0nr0j6f^FIe1iLX1hXSry12zVk$QBThnzq1hBo>kGGALWSB zhTq`yr%}*P@v*6^s^Cn2!ia1ZL^aQhau!Y@& zi?4U{;u2VrkBV4h@L1|NfBiLx2u-MuI@ox4r+Ty^=rbTuGgKhh?BOF^C$~%zMFI5^ z4bCLt9>=U)m?%Zh%Ogm@Uy!0tp#PDcb{>(qYz|lOyyoeNU=>8e6hdg>cqF|g1#>PI zNbwe7he6o7Slm!enaqMZ4~ zPpd2djJ59t70=(2R>?<~A4S-FFZsvYrvK(FE0rmp|BZ>&WP}cb%x|LdeO_$NJ6a}* z^>qVcln#_-^TbB3$pX{-yFI=RXREWB_b>MJNVzTPawjmdpp>H_6RE}z{fxi_>qY~^ zrL~36dWK}Hwnkm5$%63{;#_VK1vE1XdO-TI=&3Ef`~ib6DOq}$1VbQ6<$g=Mr@#Aq zg{!t0mI9Z#5H)9#0KQNO5D$QMFeBy6*|0=-nBsXk?bUygVxV50BtRaV1r!v|%*8kLB1`pat25d3ZQB#2;XRTr2FN!{8fQ!xy2y9&XJ%kA@#;d_wrPA0^2Dx zOd2>|Y=k40F*x{Joy1cWsofjjdE|FW>OC{Tzc?ae~{{|T8SDBipB0%Cj} z*S#;YHh+IiP{n*c@CO@Dob~fOZ7{GsiYqrSXdG<~b1_H=$D&}&*%ZLd#d*QTA7;q2 zA4aFbgzD5(!9e7kAUsl;%xNeOwd{+0AOB%eC15Ssgb4$q$AQWHjqMjElyUaFBC@@z z;we8;KIHF#-TMv2Xu0kx3EovEDv}XFLB1@AiqMNrB^(YrE@R5*R(RYp^>UM_EF%k0 zIk}PG^sHK{_xXATiol8zV_tQQ9b}3 zk1W(n``I6aEE!5$VECC)nFlb)n5NZu-sPCfig`&4e@jONm&=Vok%SVlFs{XP>cvVi zUPNyIBTFJz@RWm5#?z!N75a5C6u(Bur-7 z!lYl;i~s9#-|;X{eVD?Tbp=%}yf)DhFoemXy^|%B14GFEXe%8pojVh5MFM-D%6TKt zZ&ZAJ?=LZb8X+{;L)P(M+16`#g;(a^o$FHq&_;cl z>%2bC2%sRZn7mAcZ>;6!AddSz8#5{@YLvI)J*CVL^TnDLA6EI0EB>xVQE_q29G$9@ zkG|)0+IioX)@P=81A59sL!X0!n9R3wo-VkByzd$M(;Y>XE&A|Lu$EU1`3G!-mgc60 zDrkdoE_;Iy;o2+L^xTuufFZ`jxFKrSWcbq9BgS}DSyIpeIH9i<1v=F*xWU|1IPy=N|`qRnNj-V|x zv|~mNN!BVUkZ!q`1(_k0`H1|PfLH1jlU$au4SRwa9Ak!14{Io(=f^dkHelfaQT{KW z0zuETDW5@ZFEwjbGKFM}cQzw)&V81Bj@g`IF#~Gn8TNNfo~FCl4b}5<`Kp@@#q-WY zAlZM=Lxm@T5v<+mKmq()bR)iBbrE6p3XOMr-@x(+3fAUvrYe`#yJHdyZ6VqaIy$~) zD(y}v%U6$N1xVide1(+oI_jt8=Or!srV4Lq>pl^`q{v*XFJqk!j6foQ6qjqNuU*IO zBaQu@A67S75L8@yhHC=lY+0%^+Df+-%mN=EO!wdn@uFkBO-X55GP z?0wQQou_X@108?eGMEk-7z44_N-XsJP?RaBnpH9^pFs5pf#6_^YF*LI+9*r zDCQ)B^WO0f-}>wVAq++Nnc^(bYlBMlyKDyq4x=c7Yuw{n-GDkR;|SW6)cbK7#uMYd zcvk$19(8`r#IU#1A@$_1-CFK9Eqv7l&4X7bva_>`#^n=V{0FKdA!>(Tv;WfuQ$d|! zLAerRS|y%sRY5YbJm=Wy&$^T$(V(yRsi#bj1x~ep9|e~T8q!|J?obT1V#cE_Y_De1 zC+FlELRvap>e>MPuAozSiR>FjDHF1Tab%?H^!rzv1ag2Qm#z9z2Q3*n@>v{BCnZtSxih;Efh4)3=%FR;oOy3*wC zGna1)&rC+n>Rr3#!G?|Vh;^?Wq7cjb#A8z*>{lE05pEjO*K9E^_WOd^Y0*b{s3w64 z6x8hP3s*RQ`S$Sz5A^vkvyUEOlgEIi(=rL^rvXwp=gKXw=hb&rIPE!N*{BPVi!Sd) z8oW1-3zJ3tRbF{Ee1dgoQ%lJ6snIlssen8<Cf$tqWj1Pe@|<9yi!%B%l~)@(-RIDvg!9n0b>KLrd3AzZsoD_^yu^*D{i zl?O-TWtuY37CzS@x7~#9yXzZ=oeosI@f&+*9JOOBhT@vqvOV_kdF^^-`|Gb%qdPhT z05n&+*4yfDK9M_ZI2GzCVzz#zKP6-gmFN&gv_7w$IQZ?fbXBc#JJR4u@>MWkQ@1wK!-%IT|sc?2Oxm5)5SC*jWp-s1{(+ z?D!CNe_qZJ$eNuidVBA9+f6C5O#sxme{4mSfSd)H#>)p~B8m(oyN@NQM5r|gVo%ji z0!7Yi>qa?t@b{4F9-60F2`lsBx66?vd!Hs7VGG{Fbz`Q1aSuAswRnwk`}GZnkPsic z&?!5=eZ=r-Gjk#=w>hx+fu<=+3RH+4oX8A>HC$Z{k6?_aU=H$_2k*JTH^+pC!WW&h zS*gO(8^LHfKXj30MKXQzcoKG=^KMh>cxH#mf-lUOijDW$o11JR1Of%ri->CQ#J zmxhR^oYq79%(-fJn@$c6tcSg&9W(xRu#shQUj&?cZDosjjap`%u*%B+?Unv>2M{4R zouK+e;9$Eb?8Jv$L6-KSte_zJyWtfJD_hsQ|!b5;?D&!^imfkS$k9|_CcbE6sZ-_QU0IJ;W*=cXlEmcG(T zf6-O|HNwK!x|*Fk1BtfqZPK*ifHv!}7neL(c)fn6>VD(lYwX{8g@Q?}9C1G@-xz`= zq5OQ{`7KlHC}$mz)<%DZ9lu;33l;V4cQ2)du-Cs1b*xN7`YS8zm;2L>G&I|FtJ?Rs zi=;*7SN2%InZ;?@*~uQF`c8aR9=H6r}cN301Ilr3|%6QP@ z=}Wqdp`p#Y*r9LKDk5IAgCWt9I{CngXiM`@Xo&IoqW5TLEls^)sy&R*y;jf@=SLrd;3j@7snW z-_mDit)lXOXmJE;rCDpm#(JqQIrcp5jB^0)wx;PEO~OiZo9{9t)n{WCz7iV4dvWSv z2!xHIN<1ejq514GY2_T2NQA^)i1(O2oIBey9fqXgM-*C?M3kZPX3DoKJqV{ZTx9aGSC;kNHc7aDi$z1YKKzBP8~xK5sZT3x7y$2 zj2+MG!ixS z>h%I?Xn0Sr9v_(W;hd|N)lteyM#nNZ;9kYtb<;uS0uNkO5Q=Leu9)8WA7_qudJ*M8 zy;WaD)QN)!no65P+(E6~ij)-nYofi^wn!xTT&x0KvQebeLf%fWV-KqwQK!>tik!5# z>;Qk8r58zdjrVy_s5d{o*s_YwUf5kufOFx%$uNlY6HUorvN#W)e79v*yjq0y8RE@yFGv9B8SL~-=mSGw36^9nl=XUHBNv&Mr zE?8J1D9MLH*fT`I8-|pGG0@)+{e!4uAJy$T&84jN;nDoA9lDZoHL47*OP+VOeez1N zUxKC8Y;;=)tR&kOBge{K6cfp?JummDN(!f#iiwFKGt;rg(A&Acc>S2(y4|7cU(kd_ z$h0HsEt2zg_>q|Re9vB-4nywkn=}SA&-i*90}P(wq}^dw&N(~vx0%gd8xmb25|G>O zEDfd~SGpKttxunpIklo$r+hZJestD4m-joYS zG@e|G`9$eBZfrndfs9@>Z)nx^#&RL0{T$x9i{BB_)ZFC45wUl2;(l1y=lbQJ^iTY^ zM@if@Q}lm$DKktJOnUz_MtLw*>`T!ZQw1s$Pm9d=YJ4LsOLoD)-8N((jOJQMpjq#o z<^nJA5OQ*=;lKcG>*e6-u)v`o2sOD%Cj+MSzlAM%0CA zJ!S5f+v(O-$ZvMgrzWT$Ps7fC#QM7Y5dW5*XpBY4`ZXiV3IjHbKn34t&Qt6ZtzFk{ z&VH7vnJ-z|Vg(VL&qFb9n&E>ngYw_k0os2 z2x7e@8{r9|*TNRCNK;@rRNX#MvF+|%?4Lw93?HbeO6l5sjWDcr2k}*x;>p*_HoT+B zW}mPE0QksB<{v>_HKqz>VPy{bJyfE3YZKR&fy45thg>dXwSlQM1@*m+4`iC+dvw+U&j62qtdtefvf z(F&dHV;7KGvEkkJQquQONi9{Ippp#&MRgh8NWA9ZX1^A5m-a>Id8E-Fh{DmgNXYpI zIq~eDr37C!cgY_0fN}XOZ`QI!ykc0F6v@OTIJoh=Jn)9z3Qx4`p`C}9c5Vr{l1wi1 zEOAHIMWgWmM9f4&e*wC;)U_M3uCdaxIW&S9XhSB}|D(Y{`%8km&?%>QWQya+HbiWdQ07Uis^e{ zo|?U6$|rvV0m~&w1JM!d7r6U~ln>imN3Fye<=I|rS&86UQw1cgV3Q)V;W}yEVi(EO z9+V2xcXl|di`V*{?CZ9@n>E5br5ec%24Y}5s3UY-S8ohWO$&Nct*e@}k8it{8QC+^ z6K$Mox4e1rD!K>2DaOlr#%)$H7_A*grG z$9<8*^+2z9RS49wSc0_vuf&Q`&wKsjyyq(Qr-79yh4Jy%otPR_zIN(%w^#H|XEWlr zZ34P%ZK^3zC@2v|rm13B^mG$cS&2IBEo#}~9xtY};q!bN!oi6&x>vv5Ft(L;bC^23 z_k>VlA`X{DSe`yE_Bj3SblmHwE3bT@6*4h-KV!e2RGE^65J2c%8OD!}CgdUWckg0a zzur{jdZHxXaG1WhsZl$RZu0{11LFm37dbfhUNTtpqSmo`(`*!Fv<+<)&7*k4@NE%# zjl&gEF^C;Q1k2nu$K4kypIJJ4+O)9&g3@xLdGu8jwEBZ-YEw|vk;h|Oe?{nQrHL^q zyuG}c@-iajAh(*%b}5)7v_+Tjs}v&Sd_oE@|LcF$ZR^T;hiAo%VB*)vv-Cq7Q@F9D z3Brgj?E7aWJd<`T;1Sx%?~iVp^76`W6=svM*?&eJFDiiw8e&yqy}&E0 zM(_A0^n(( n)CsRM$w6KxHcc9@^YSDTzKNq>cUGJl172$|3cJ1q#G4oZels)T(c zf_?C+Q->Y5JiW;)Cl5t9sw|{PiaxibF*I9MCth!C=buf(WoV_rhHWxU&)y%hoXQ@N4&cEK3>c z?e=_^QWDDiE2;9C-g%X#J|k%rb#Mwa@(%;houI*Y8YH7+Pwl^WEY0YzZBO=9PeOxTy`mj)AR^}qEO6F6Pc)bq8C6G%c%NkGQf43lknC*|9htTZe^fMI8F+GiSwRq>4mt z%=NmiIBU4HvnC(upS(B}6ox`+y7lfF*%?NZE4_Fk*v!u5tUfEsQG^6Y5-Pq6pVB$1 z3QP3?a(LP`u7^gPvJaTyWAjJCVTuJ>5%Ai~Y3WM3f~~bbAY7PSF%gWBiRtV1mW_HcknFBHs1B^Twq_K%&5bY)XI2~yP&Gnf*>Dz-r#q#*$oFB| zI`O;tL?PljOmVlKVNor@VBd7g)^wc7tLvIb0St3Ge}M^JeY{eOR~R2;yg3wdHc{ut zl`}JBW?9adkuMljm!1~(BsO8_{b&=`(%TPyD{HG;bRd4*$#oVei0U=j&{Ts7gW=ID`1B5XjpM zlT8*PuSCf*vYaV(aMjqpY!_wN>%Ch%+G?;sytuSEFC^)P)C(tneItypq`vB!30t`uqrg1Tv3bsq z8i8vUUoKozps3TxP-%hppB1@ni#xp38kbjxNh!9=G#x&Bx3!hU*c;SZ39*}p18!M} z3dTLfW0JSFW`I+K-ydEp&gk<@HN28Mo?sA26*KT7)N-cY%=m2v+GMD;R6wSrPFk!D z?xBsLlOvZRp+J}3p2m&XS?0V$JAnln$9k|TywaAc4mKLEvDD`Hqo;A6Vk5$`_E#!n z`m18A*%xHCyR;D^YuOx&+yhUow^X+m9WBZ{GR~3f4(~sD?Oj3sl|+omA?W$B0bLyg zYWR@*`pRy_FwH-dcALZGA|gv|!hY-C|z4Nf+BhpmdQ(wCvDf~D!1E%QkFL&=SY_ z9$3Vti%%^ zzi%Ee-da2kueYlN$y59;Lu)FE%^32KJ!9F#Zu3!-9>G`Wr&AQb7*F$CIQbChXxFuE`rYEl$Sw!qq_Q4D+dQb!%^t}YAgN!YAcbN`Ah#+nE!H&t}_0* z0f@!2FQ{iI8sS0o^G%LAV;UUaP@)#OjScLMYrWMUxBS04c8zimlBq#z9L^P<2z<6HDm9;!n==eMb)0$oCO_h16@7_5gWZ{kLut2S8&4Mbl%WwLcf+AHs zyX!D4Fs1wYPeU0)!~&ql^Xz3?IY}scN?uZMqV}Qr{5vApv7ceF?%lyGXF0ZaKZ0`+ z3I6dzbu(~gK~lW8`1QT4=d8W1c>>OpQQm-ESV0#SQ{z5&8o}<0%?)#evt%>?>_#3^ zKKi<4S9SjNM;Kz>A>n>TW*1_Qgo?Y97X@$|Qh(<&PA`D?jo%F-u%IT*VL zwVKg?NnT0a%Ro0b_IIS5B*1TqOgq+pVjxUNgVy>X=|eQyP8J~jT}a~0+Ly||y>K&B zSy@@=TV3a|X{QPNAg_r4nS!f}2QLvpyE3lqFNxlA5s$iVohGUqtIITJghcxP^p<7jfV-Yw*U zQ%@W!YO#6jNhLhg@FZw-!8K%K*K67pHX%*ngf+zQma&*(`=N7^~sQH)z)hbY_f;G^Ssa6XdmuymQT`nPy9d+{>^ zKB<@#2R#lgL#x#q=GeYsmxX{Qbi5TqfJDgJlq`g>$MsO_ZA$x^U?2fG6a@>Um}`X* zPMo@#7fID0XE)xogsC85M8`CZW8V$Rgu{&)7v6W46wO_TnlF{wuw=(mi#bBG7hKgP z)ggNrv}hb&{9jH`XhAFiD$@7u)gJTc5vlx{p%mpx#*V@XX>ku5?XWeWSndw4pgsol zI`{EK!4|s>#=u4mK_j|prC-Sd1vMzO&`cL&fns>Kumhg6IbIdB$sp@6-^keDVL|At8OP10Pl|MN`bgdU`y@*1iTz8%221Y z0rg+o`^7rE1N=Mswd*~KX*-2Dnh&);T{|M8?Nu8q+L5ju-2A@(DC8n{rMZ2j{+n_h+zAruO@9^ za$-ZT#uz5&>`gdu3r9=A&hO=E`*zCf?KLF<)J@`-0kcCbh*TwLenA*@Z5mG-k<&Jo zpJpaK=PbB`n|V9BGx{XR;Q{v_;>(XQ);n+X3X@xZUTX@>9NFdN5lV=o7UyPp?dOIH z0Q1&1O`I?nR7A?VE6=^8{`fi9x6ziA%-zPY^5svgb+N6k*LVJ1#Go!l4~CG2Vsj!Q z%t+~Oqq9weJPLV69K>vzjrs1eqeRIl2E7}7b!cL@yzq<7{;akH`2E78fq)c~vd%NVj=zo&bcg4TZ zP_h0i`~O125)70rafdU}RlU?Ry~-rxOsmKFGpou=4b_#X=`oMyi0&c??@!e^6++s= z@^V&t&{axHSsLes5}($=D?p!mjs1D9Yj>8ku)tiB1iK) zlH+yVj_w2Ioad(SW#V=Ad;v?rPpt7~jeOII<~Q@IB=fuWpaPelW@;vgnZZ~D%pay) z{R11h)8jOjtCOd^q?>w`0Wsn9;LlDRwdtm)N`wb`5{LI0Hy1dB4e%F8gtWH^Nv0OBP^Ln)QHD9M>7DTn~El!4Mz$DX6|@hSl6#HL0m(>Ll{6h|`#N_ufvg7m31)WvuhNkKt)-8-H(-_SnYkaEy|#N_0a z#iDsn{fJ%fQeQ@~B1kkNCBuFZEO39+28D1p{t817UG>lYvR+~3x%~fwK_WVx2x(3N zC_ZhUQzuuDnh4+-jR}4n8jT)WbKqGzbJ0+8h#I~P=nr+8jI#Lff!W|F#IU%I1Kby{ zPG;@;kL8WCa>8Q6c9A2UKleswz2y?>OX1U^6pjvnwnpwy_dIwA+7MmdC9R4Gq;T z@2&+Z>0G_<69h)01(tRBLMvO*_l7Konj)>=K_Rs3$t>VXJOr^7k4n3U{(7nRe&Xrc z%5!3o)7cW|O7SdP8nf)3Q}+_ff&-9Q%A$(21D%0{9u-9J(2mn?pS;0$@8CA^Q%Qj!->OWMs50pHN-v{YIS&G+J@ECe6c~b#l!;5r5(2r5?hdIs5B198TD}UlJkTs2-YwVONrA8_4Orq zC9}HCn@ldbNGTdUpE+sRbfLni$7StjdoEZTaI<>Tlrw1HeT!VuKd0X1?1m^1ympCR z75&YB692De1|#ZCOuT7gb2!Z5aHNteyL_m1A7FC$KBJt9f04~yjAAgot7@+t13%tb zj?r?PnxPO5@2(^^IGwV^*TZq}mFQV`P>lk(GL*esxRff#`gf)*I4Wv@_p)19zYDX6^p33Nl|N^ zRG|EZG@Xviz10QTX`o;Lan{M>LCY5Q>c`I?0Llzx(NK5yZ(~JX{{-;#zi>Al@QweU zoAGZEqCsa!Iy!qo2^#3Se=T5MK3Sh0krqO4ZY1?}x^Z*aDw4AOK7k@arbkk`C6jZx;e@PUddNXw>vba8o+)LP?DGC9J zE55S)u8I#_xY1Ue@>$I?t}>ID|5QHC%8`#swmaq#7hyH*M^8VEQQ=};7i znU0?m5A3f#U5IS4x*rgo%*veB-fqtu-BY z-=|6$#Vl%*TQTK-_l@ck;u&0U_%I=yc;sX zk*k1FuVaL;^kC?LCk--Olxk4rvu(+{M(q5wXf6euvBK2Qwkt8zZwL-$Q+|3eMVwzl+-)o5p7S?pg__TZSt&?)F#6NRuS= zhbtDS9raT1QV%gfEVLbk2f;DMfD0!RpV5hEksY~otjwRmwmWYk<}T*2JhyxvydGtI z&ws0Cm|lsAiAipJ`wt%xAaUE~Fp(|RAGKg`RsUJw|8~ME_)!~EgY{Kgb%82jYmJrL zC1aG=GkN1yWe%8BZZgE-27ug-5Y4h_84q{jg^kEj- zXu@C@ZagUW5y@Y;4z?cagN{roVU7seiVHtLc$Mgei>sVP?!wTnI9P(lA439!SmV!U znaF+>r;G)TmVAGJxSs)51Rub(XaM}QWwm(a@is&KGJJLD?T^huE3l@XcN*;vrB}QE z-38$6fuetAfFwYvZu}tu9=rQ}K;A@2C@<8FmrX{RJ8cQy9$(itn}qdknNI7R9zLsH zsU%<|u_M?-yY3l@<-owME`H4e_BZ@NWxEI4uuYZ6R@*`Rn{oIu*FfN!4H>^T&=zFH z%n+$U8?uWF4uQ2qwG4RR30(WCWlICH-7vxU9bBxjha%vntzaBE z1P>bA-Q6vCaEEWQ-~F8Dt@_THy8jG+n5yopukO`rt(#(Gy~>)mL2L4tac95K#;#m} zOhp?OTewZMjS&e`zbu%6-7xVX)=>-lia51HES#-7ZA}S6*sT&_2?$kAW*VV1Lsweo zlFoT$bSawq3`mPM6mYQ~C-z;r^pUv7rSIH)dwWZ7x2!6R7nOMUXHH8dk@sZ)N!&Pv zJgfdYPge{1?*ZkZnRD)7vGxul2hHy)TnFyb4M>I>n?gM)2Wh8157F6JY_`z=Ydzb9 zBueM-N_lo3UdFq1H8zU%5*K_$e)1|y&d3u$^gaf48FpD`N6*zhBQqvd-<_HwppK0w zudX|ts8ud1%RwkJmFJo_yXoAoXoFl`d~)WwMD?qQpkGwo6K5 zd$@y-&TP($qT@YGHLqFj@V-CE#znXh%7331a18&8HBy$}wCT0$`rhhOJ(ZFQhXh@x z*`wF9@qySgb3dfzavhKPTl7w;-V>f0yI{ZPt)K(2_B!q zNUEXjBki9d-1ZhDSQ}_P+I_OZmH{5n#PL(?*-y06?IBFOmdNB&tEnAF)Mu^eh*^i&Qr!kB!tM>L~jughN&LSj~~t+$ls9RmGFWP>W< zh99LBC*RNg65Z>acOA^l%@6i$=JekFXQAT?F?tyyDPE4JR4oX)u>ZxGErq+0v!Q$8 zU_n6hZq+w?@4-6eu*!kGX3f*;8gH_ugp{TJI{Kkj8iv+clz#Y6_SVJA--6?NOX}mL zixnj)I)5LfEow~Y@Fn!&Tc}q;r!9>e%yA)fg zBSj+bd8xtm!R%NjG|DVs8AR)i1jJ#0ufzdA5>yg_p{ji0vbqFWpa}c#DS$4kFjHhj zW;tm|zVlyT3~c$S9J;1Z^yk&Zp=~J>6a`>6^CBB34d@CaAdtf-ZYkPA= z6*d+4d%#bbokZ6$%L^HK5t$(d$6~z*(ijb{+Z>XH=z=26u5$ct%_Z?YZKav79FDKd zjIs9PT{^*!Pw%DN(5^>ne~vAENbXa#j8&T;@8Vqz!5%O(lUDs3>b0l5JD^ zDeNlPG3{n}zAJ7B+gtP^w(s)swnb{8jgUdg(#plbp_S8hc0tTOGphAE66fcJ4`^*YY*UwYwdB!l zTWz98w<2@-?ho>=vDxT?t~fD zeH#%Jg~oCHP~%SWyxjkDn1~|mc1y%1Sx~|rh^OM9b@?0@)wubnH0kYCZfM$6?OFDF z1vrf&1pAWeKW=$tERpoArNrXxFvw6F+7to?Lq%F*UWNdkr~n8cFC(-ko(kPHAU+#d)6T1~Y)y4up0@r|{f+GQ%ff6!b<*)WA znRSC!NYZsGdY^ob%x1}RJK|};&sME^VZPd%M4bKC1oD+_S>Du<!#STZ|z4q36SuR(pi1*6OJ2{T(Dll`!lK{6O2$>F5bU;f`ciKN)B@dg5_;d_!W=)1hj^3V+?xdIa%sjR=imcEj&uwoC#F2dInShhf65GE(;_V6 z)FWDZKk#po=)LyX9(BB6BZL)~mVO6Goy-0aE3u-281n@n6A4rw8>#z90@c zBp|jUu7=B^FKSL8sb!TGrfY89N*x=(_j-jG5Uto$nVa&BJ#9_)aH80}N(Z@Y$fu#o zj#E0Bg6X)bYlT^V^>+I5p~pq;O_#CBf_qOve3MuqXer*Hep+I~&Y-=#yEyYUWru+#{)-7?E+d ztG=uvPKBgcw%o&Wh*{&01k`MQz!eYpg8Cw@V@MzT?v92$w^l_O;0m`gn7p!#J*jOvsaS93prHY zt0~oirfST)q1hwUMuQ?46rS=sbOSP=xF*Ihhe?S$sAD*-JZVqj{9LJJfn#1bDvA!| zfT1w;z(VJCKSLrLf5qK19b*pDLY%ts)4i8DJjgwwF!8k14txUMLJIO7UrX98Gt`x- z5z9+nJ#~gg*N zq{sc9xs5<6fp5SV_DG2&p52nhJS1)O3osK5kwUx+0|$~1nCTWp_SVyy@?~GM*?u+3 z!-mceI^U_2;QZj#Gmw<{eR`@C=mtaV`By(P@i!4B#I)D`S0Wffc&n2l1@D^rbY!>e z=^zXo#{7!ZvN7z?m%8F;UA)hd5HHv`Aki3l52XQeRG^N;I<56Fu;@IPt7}2q>qY{T zuR*VhhYLx$ORe#IeHZYmn(f8SgK_PuuQ9(6BbI-{S5}JR6!#-Tx$^*5Od`^BUxDUO z^eni4^s2M2{I=%^((|||6Pa+DTm1EfG$#jm*HBOubFhxtAg+zanMFs6^J#d5h}Y?) z?CQ20UsZi7Z~~J=G1=M6>(H?6I6kbOAH<^<*&o4^D~P)aImAt69bUshx-1EI7f>xT zD+9(lethCSSk>$D9hhiDB?^IUBn2iX)qlLbEsa_+te+v_=T91F->VA+AJ=he!1W@uoO1Z4^xH$d!3Uo2~y*Q3Srsz$I$bRg231k)$V1E4lX{ifM6~1fU_#+ z0C{GAt2KBbNi~SzoGMuhLrS<6F;NG`PW&)z^o3yEj?-WF| zAD4UyrwZ)|WbKnSKpylMR<-#+K5_wH+*)r{^F6w}WYsu>$}0kS{++U3Sz7(;hC?F^ z$`zVEDJPIW*uUy4fj6XlV%V)UCu!C8up~CpBCv{Q>LR2U)Amy)lG8}c&YfVi=23K> zocqAMpto=x9c5%L8SQH5KT!PKS=sD8KQ&*pq`IP6QxT2PWNVw0@;Plx6}fxnP_*0$ zDxC5e+FC$czG%z6N+;60)!_cc$BUW_j7R*)|FsDW5g*EpAInp3gXaxk0<(BTs+mC z{7Grth?B#=_gfxW93q~bW(n>k-1;eI^3@6rs?0yN2Oq+JE~@98hu8fKn}`zl!5PnC z%WtoE;bS18=)U++xIynN2as1ehI`!qh6z8$Rt5}~b&23d$lEE+BQLtV4sMOfmQ@i&Kf5q7~&UxoSNHLQAi0N%2{~Q8Mg&Y;;YM_3$ z9iKj+Bi=7JH0HInO$4ohA~jTdH(olvk5ew*<&s!TU#^Mx&jhN@23lrmuqkIM{I>}?2?rYz26wmI zZhu+*G}Qh&;ScT|WhFPe@F}S&~ znU^mTmGtau=?SX^uP4fnvSeQ=9ekt>QPREOyZ{1X zo}@z=7KZi>$qI(5@#*v^XNz&p&*p(%=>g<#vb#7(SehT#%SUV*4$p%q`UMdh20tE^ zhp7Xo*A_LF~gQ0 z5j_dvgt(<9v3mIpFAD{viWh? zW!Vq{*UR;HtQi?O$=1w7X7Hl>qc`m0KYr*5QS1Z`MKK+x-l4SJ3SIpmNXAuGG4*@z zFm~mqc-kW&%-tvD%SsesqbksiH^?8}Lv#)L9k_+PCJqNpWwFBUC?wXP5PQ{UIMPX!o$sxXxzr!P`K~1-DTodEMgwAr!O9F&t$)7fr!cw-ejU~G z`HugYs+0qy=DXpo@*&fAsQw?-r@je@qiSN}Zejb+DDzJ~mEi?ECn#_n?#5&8ExW=E zvaW`RZwTFJ-%am#^tc$jWC@8Ez@b$Dol%HFwvXXh3Ts`35#Ae;($h~GFKt+A(g|kO z1>26x;c)5#FxDja+U@j}H1CL^X}u9Ofzz|4(O%W8s$bd5-izs`aTkaMX3aRNYP>22 ze&CI*Y!#p=u3nv#$$;wLwB=9Um^Q$}#z%g9a_^tgwdOGocY{v(WxTktIeE?%-cL(h zwj2zH`(0p>$Z#odgCnTdmlU$;C=;qFb*?qedUh^o&2nl~*$`G~0?ecH^Juw2NBF@% z;rsWax?VI}onPXm!tFQir_B?|u%uljQQM&g_EB+4iD3h=p`3&wGCU?}i9Qhx?6Yu= zbB0YD#)-xT#5*p{1moi3KwVMO3ra|RfvC*Qmop?J4XJ|^ki8BHMn~{6wrZ4H{9Y(8 zw)5QB@#@V=ulM$3AfecV2A37;=>=Mkd8Y8(^zw1qZ*xZEpV3VIPHJFBlyojpBUVy~ zmg)gupP+7OtPS|xvqi|sNM3K#Uq$DkU5cmzpeR5Hh__vwI|GMS;At4RgzhfCk8;QN z*d9AO)!3Y`NnvsL37ZqXE1qI;&M&>pv_WU-pYn*Z!G?PAgOgDVVW$+HLXK(sJCjUD z)9Y9c5;IIKT^_gI2vedN3jXT>_65{GHh%H6QU6bQ zQBQ)l$CVv$X*(^aYb=ezUn?yh#%0^OewZLDnx^+;Ri|YQi5HSs0exb<>ZTYt^wKTV z+oAu2xN+qiw_Mti{76?o1Yi$n-N5H3sHQGVzzD)u3wKM`E_OY!rm~bMs?U}ckRU_r zi&}GcE+2~{tqq&M@JYi^**GiAqk$5YQZT<-Sy7U<^1QnONW0%07L1Z8|J%{5{0~iE z-}Pd_PNFr9>US!tjn|-%Vai6JrW-G<);l29qWTM|hK#Hb6ND2T+imct>jHLN>PzoC zNCc`t5ceaJ5WE+{&CYh!U4Y#fHG8{mMSzbfl5)Tz)nCXEmaQx%y<@z$#XvE?BZBKL zJAGnogQVel9SdEiWFSpSYCa8$YQU-)`kt?>=uuoefLMOYUZjKJ1jFy=QoJ($^E-^k z^N3R7XQGe`&q>djcjms>^&D$r!cAh+dL$MZRvFD2B=5_=-e4BTB)X8L=_1;w z^Pi%je@EPXCC7nV(;0+y=|}|m(WJ92KfOF4=+X(m5K6Bz>panF!#ArN-}NyE-8(c^ zrlzU6U|MZb6H~}eYBArsOl<1#khVLt*(!l(UUc5+&PB|T8h0w`%Z+Ah-amlJi#qwC z>qj?Kh0@EcE^~N}d{iJvx!K z-_>wWuT=QskmqSzkpJ*~Z(7qrX@xqeXsms-FHC5gaO>WyXA{cdZI*R>p z$JF)~fpZ|k-0=qc0Igp}CzhQ2rgOs&rbbViA$^hYS&csxLEsq{El}lsAKd=Wm=4lZ99)fvZmZ@4E zkz4h3q$gL`>89|a$KduFn3H;iP>L=R*|p;cpZ(}3^P1o*DCKRAw}PGx3@vZCGWh($ z`g!fCT(-;H3B0An1f2O(<$6+*)h4knlJNS3XQNWwKXdVweKkac&Ej}DMo~(ijQ9oM zg!G8ojm05&;HvGD4H-64duUziJ=?A^vsB%DN+B4|X-7%jW2<5I08@^(uYzVz$uto&Hir)Z-IewJJtx!P3Wef8FZYWeR(*aLW5^!oNn z&{WD9ln-_t{=7D6xG{#J(sX){Aj{UT%J2Z}hk>6rLj{>%xw@hi#K1{rw9)nTf3a`|_c6@3qi{IK1k8UB-W?fsdqi(i(i){z@tsqN$tGBHDH#LY= zoPdOc1dq>~Af51a1&tmbLuV37l_ac9$tix@VV$ijE%E_+sf}i%RGz1KsrN}i9{ROB z-M}IU-sx21d+m9^m~65FDx6U2$Zv%Y7}_kIgSwE2Aa~=TGTg)Lt^zr}yHuL}NESB# zKZ3*%Y?b2%UfmwVl9}mQ?D+F_Q%n~qO5>b^6Lk|%%&^y3*anAm)@6|*7_vM&{BuKd z^5UEssX7$-@c^MnVA5_l;!coNj|GTMkZ={wB$>yX?hVFC5mai3#O?T0>ajbuSEMkpM4QoCnULg*(9` z*oUZR{83{;tvmS*v-2o}MVOpQ})EXg@ zZeOVCn13osQxJ%Mu{hbZnEQ|N;_sYXE#Q9%0|2KtEQZrW=&tyJ+jUJaRAcj16%jiG zY^wYxJ%k%5E3{)$LofCAg4~IuR#|f@e^SL&2qF{KMP3N5J|U_X)g*33!3cG*(hsAu zR}`4ek9n!XKh&9~x16k+PxJCec)|IledWRd7k2IIO!b1#iSqYpRuhsu(iLvfMplP| zmTyX8xQhBTLP=We?AY?x0U0!E{~1c_QhtBD9ve-<tG@8no+Uz6-_I9AF_SOjtHD9(I6M?%Hv$V$Z7ayC+GHjp*uPnZ~{7zuKq ze9}h}zV7KTHss4#4tz?*m*z68XKJOO8Zn|`T0*5}+`u8OKOpl#39Og&B&OMWL1lIz zrurjme6or*z(Oj`&B{hY70=~emSv2&wm}HZV8CeLn8eu#rzU6~RufPnrliiAf(-q0 zm{VS})p#x58s=8Ye^X#$d7wH7HQ%H^k<&1etla(%d(S(y>1o3VS5rvRAdaVaDG2_M z47~8I^wL-PeJ4zAgchTJx%-K-0_3AA6&3#1r#Juq=ik+RBIa*IK(AY!5giDLB?dN+ zz1~D-9s{EBRoM&{Pn=&nzRcQ#{OTx4i<~R8LIl7Vc8L~1p=P|XYpwDCmmNrMLV2|> zMFzu}iLz0FV4-TE_MFAeVMJ|TO{|d2W1uVb)?JDIV zs9Vnsf+_{c4*mmY0DKqX6|8p(x?ZAVBumSRX!k3^@cyHup}VyxPPk69qoLa>d(E~2 zq2cN5OV@)=a!GR9FN!OC%cpH|M4W-D>4;0XJU|@$;7b2qoK_Fpp)ev~cTP-eD+`{H zUS(>pG&#dV8Ek{Mg|ZiJoCB1Q##1W;)l}&ov#YTx&-dBg9LT;;k`zxo!vvK61;y^$ zp%ermgD~rR#sWxJLZiVdo~Aduyx}3zsMr#NW->`LoB0q%z9Z6oxyqCCJu0?6@l!1y z$Dc=l{J)bj+{I!i{fB#Xd-21|2^o|X?fDjQ;tO`-tJZK+U9<{k+lgr9co@m!w)lzP zrFADY2$IHJzl^4u{}9=;pA-HSQ$92hh3=?0^+!gV*5+#i7BlSNsQ4Z~#gBIOCutj7 zJ|!mp^xqJeQ)Y6}BVoVZ^4A-N9P&)$!i0#9j|0|-$n3Plo&P!r(23-~=9bZWX}U8t zTKu180i8&|1TEIb@@CpUfNZd45)jSydFV^&>04|@kplO27?(UTM_ z$bcQkSzC#q=0G>x4Hnyk$t78Hgz~&1*3b`6`E5s)hkj!oH9=1Ig}L>UoA|>|vKw=w%*?K%PdT@Te9?MlgGKgOx2*AmeF<9~TlnxaXz}Ce~e&4AT zDHui($w4i`ZhgCf+TRbL!j6X6Co{Vr@xXa0X2(ks0L)I`_Y7jmfVOc&X@q=oOd(0W z<9(etrJo}w>>f&n#)lB}8^G~K!TdkmcR8PuF8L@a0&?K1f=(zC#QVwrksF`|r2aMG zPVN2i*VX=iP^(H5@JONfXho%M_tXzqqt;AID|Le*zF5ms>})|(8T!}?Rx`3U3s@o( zSBy%naZ<4qUQ35Mb=p-!xW*?}5r5K3R$~|Lr}j>y8s9Q>`MT~)7gbNXmBtjy(MAu@K<%Lifyd%F&ua`;Z2j{Yin&r36jm%N@*NV22 z(4UhltxgkzRpAVa#vN9|?Ua!19k5Ei?rR7hhnQWBC|auSUr>tj8H-v@dY&vWf%!6? zAbFT;%lSxU_|5<#x9p_XnJ~x^owF#VHZZ~!9YWG9giJLVzzfSYP%Cp}s_>DH*|GSO zX$WX&|3-83Wb$+{NcD8k7P`)-lJKNC0Il%#urH>Kwo-J)q=`OqFUvD`RYWk59O3r} z&ZDJF2<10v%O~KBdTOhVOvXkf0c$y7aXAz=6Kp?0wUU)(OEX_ls){7n@gaPS1!ox- znF-w`6V52J+T_U8g--I?wM)i|a{Po=q+_?B$x2%*A0Np~tj4INipfh% z)OE^@ow5`S@xulWNgU5H80UU1Jadu5fo*!~@e>AA&;+cEHB_GMv26rV1ajwc` z5Mu%bq5)PY8t{+E-7x|vqlHz>SwQbTP03DOmfmCs%7;eZnUtj;zX`=N076{4IV76@b$7or9zs$0E7rmz(x$N{SQ5KtQsm1~!E{q*oSx-o%)1UM>w*%r%xxEP{%-)6jG74LasV4^^C`qaWQGy(q zYRTw+#nyQ;=EsBELGFOcDJ6%etLvh=xPzIaEC3XE3Dn=d4810ZFXKtSsHOA%iM>BW z{dcgtFrk9{^X3lNKTYSxINE%0fnwBEh0DzqQ%Od=>v8sddV|wqpSvDEwVWQ2=c2}H z$Jgh73bnUMT<~X5)Ta**GScV_oH@eb=UU%G(luGpgzcvc3FLcK31>!*k+}WjdJie) z*C4G4dl-TyQ*av7Ru^xm=Q#uHQBNZBmozU2=5;e0NBY0eDaI$3j}49|c8j25nJw|Q z)MDy+hP=LUZ<-yRV}8X@LZV;$)%oq`g-2~7*^+2qKV_P(ZxhcsVvDns%S|ok!p=4dip z?NY^9*4X`pnwzN7b3q6%27ylUyvkH`+qDLJDZQ_9cD;*}!r~PA!S}olnUV^4PIDgx z{DQz_lGqJGr??eDP8%G#t!CO*g7T0wuf`-qV(k51LhIH)8puHNP}TLjZ7k{KMNM5! zxuRNReZju^afXG1AHN(zybsOT0TYq}S>9u*bR|KqCM1}D&pn|5U?VUY$F75E2bakM zg%JFoC!h*hKnrT`0t*V-8e4QN=`im!S(YjIcR!^ic5zWPHbXEvO(lL(jB-4{4K|(D zI*wCv#o&<%EebMITxP{Z!pPM=uP+3#pGpI{WZNJ_wo}L#aOvPoYG@c9E8rDpIb6<4 zD2}a^ra@FRYV2GVFGM&Lj|Zr^0966k8f+&?K$0xjxpKH-o3N_(g7Z=Pmgmo=WZfab z@IXhS+z>|T=s@P^lL{yYW6}7)j$RwN;#mtFBd1nMJ@1*M{eUoQ8yJ#X0ccWHAuSWU zDEEvX;fl3AnxYEj5ogq_2Z?lJ*QYC)v?@em<@$%pM$V1lgrc?}DYn^hoGdx1^iA(pkvJ@n;JzV5Xxr);^CQbRX9qsgRC%;Oo z9CGacWM@0Rnyxs0+|^$+x->i4{mAvp(bR607z6Z4Mh<#+8^9J8qM}VY19~^A>4hTa z=*1kyC-~0vG#JPIyiawmUogFuFf4Nj98<4kpOEZZS|B#jzaf=I z@rQ==`C$Bv%!)M;z(#(>a89Ji6lrBe4q<>z@Z%9W0Y;ILFb)Cvk#*9s`;HbvYSjSw zbtvKBn&t8xMj+mht_1k98MaK#4Nm#RyM-M@6ZKho zMp`RNtqNZ4Rd3xnc8FnRQh4{=|6?T%v`Il_V2!;F^ zc|`8j$;Lo58^_Fp?86>)_MWyC(_crkx7Pkr>*VWCWdg;UD23gQk|uRjaFzoQH)J_W z)SlV+L9}+th%*lg3Zv2FuH%RG+0Of(Pu2IrI?ZwmB%0RYvXLk6P&Hnrk(>>>@`A8{ z*|M^+{3k7CeW#yoaI=R4BVpBPeQ|meL+?F3PO{+f62-!qfwV@QIF}v%mz{NoD5^Wt zX?PO;Q%{+`R2jB2YNVoh`QlgJg(3B4+V(G-s0AU(XWA@>$q?e*D8CQdpuDKPnpZwO zvVViv1+{P88mK_RDX;r8rZ+})SA!f_1-{o8vk|3BH=xBwMzh@aAw8`SJO-x+p{1w7 zNU53}tyF>^l_Rnm$z)9&ic2sT9?>Rfd!wZWv_;)AaZS;N@S*!9pk{#2d%8IlJ--Y| zbbx45GXk}E8>>;SY1OO=uf(RrkJab5At6_JQ&oxbyd`Wu$qUo@k1?JSk2frl>QdaQ z)g<@{s+F?BBq)Mky3P2kB>bvU^zBmcE@Me*?7W;Tc{E2cj054y%ErIA9`x<+ zA4;IN`;@%>xp=E>D7Jc<^YVFz169!0*5`QoPRxIUpG!6>3CAs~1^aH?5nfM2Qq@KW z{&3O;$#R^PUN_Uh55046G~tiVfb4} z==2g3_Iz**Y6H>UloJf9U<8r_BQ5m@Zq?@`)OOY%(IKgh+vvyPVdA^(0dLw5-Ima_ z#f-opfowyxcEa93soSB*-+te1BL@mIaXTg`;N< z0gT8-U0%@FT6bL6X0iy_R<)bQ$->UttN1 zB#ZBIV1{jq$57fry zbnR^^v+K?AAR)gKjK9CVm>3uo1PM!sV*c>lm$)uzAh3kMGA%`xZzM4Fe2|9PD!h1E zJTz(j)k1mG1X*5Ij7%b?02dwc4ju`ZZu9IDj9SWJ5UCZWJ`kzeSXsTGE8M>5-aA8UgqrzvuqjUSdxl=s*v5nM ze$5u$=J< z;}I5Zc)uU8cL%?r({0&MJ3e_RM7~_#Z@a4T4j1G9TwN47t1Ku$?tIEp8|`{~Tsp}u zyQyq#ZRP9gF3Y57t>pf?@K4RTy7Jr`JP`L!S59A^i0(vut`ZT$ga04|A_NmSv2?4%_$HRFhVw zE=sr*$Z{NHca@FR`NkMaNUA~BAB#gVo$=+SQtpK|YB5N?s5Int7_$0T{p!RsxB3~_ zr;sYy-TG$jj1T~1X%6-{A5Wh9tVhjWWN583wv8GK!IpYOSQ{?^T17QD>SYeCY*i~N z&Lmge5XRbI!@0TFW9G>)-~Q&}jrEc+F8DwCH6Q2N?D`vxeB-VwG2(V_N?KOek=;4w=zhCJGEe6%$&rc>Dp1y|Ib zrJisA9@sa}^m%@WPJj_CjrWzyWWB~Za&+$AyBE_;OuW!9Yqc+AD9vj#)1<*L&Rz)3 z8E=)Yn(s$S><_dQrfLnrEq%8Sea)N9V(*o#Z}qr)KNZUJg*(oNP&F*0Ip87WE$Gm$ z&$8wE27V_&!74uc@0fzFduin5PA@mPrH002ln)c@#d(yWUBfC+*{%1=r+ZI~OC^3b z(%@>M&fzM*fe&L`uP+`Wz(mSTxk7qYs5 zrgUrqRdb3gbP$^#;1I4U-lM%%sMKa1OlI1So}d4L9Eh}li8DqyDFjoMN=UP8w*GrN zJ;kKa&LMW=Gk9b~k;{0bfanza&~e>8349hJN%Tz6G|%FPDZw?A!FVK+=w2@$1n$$p+`j?HFf9>-T}Vlf|J>)k4z&8{s)$4cnDYx%a~? zwGnndr>w!5NbNY`)zhUPYHlfKewKp!(V(Lj0@1dWaY*P#LC@(Rj4k|?N()XO5RUP-+pJpcsm_z*WzP^rjMAW@4VG8~Z#u35FlS>bR zr5m}~x^a7}2gsU|CKweUJooOv zY34N!deNDk25~SAw)%z0#u{|bRZsA*KWPh!qw|g`16b)xD(f?hLddKtF`{VaG)gvM zE1!ELz=cr41qewks*SvKPhFR7`>B>ohXj)Y&!4-<_-1ZuWlGVRU>6foxiN@Qb%q@1 zb;fs^7p<2-CQ0w?g^0jUS7E#*GVz6L_PDXyY>TqaqHEuf60n#eHJXKzxl&!2*Kjg_ zzHzQRSGv^OmTKNvWr}O20ev)#FBMhzZu?I6^=ckN94{JQm8esq2}4{qFt{c`rASdC zUn}0R51u{U+ZFCvF~h?&@?RuEoX` zg4K$E7KRR8P$d}H{IhA!1e=;{j&SKScPg@lo9L`hM63@|o_=gB!cSiDYYh%49!9Xm z2@*IDGkhgk0RrXReo86^v66-`C=W^e!;Hh_9FO%iakyuXYR%EudW{$T($V9hY{$%*54HN-bR_xM8x-%YF5e{qM(W zoc-!JzZRbN;J%pC>`-b(U$ybE2lnw%I~C6Q+U&HB6`) zliImQSu3%8uyFF>w|AcG3)xcoPkJ}ybMP5x2ny9;08=D-23A6(*5Y36R-_amS6v~R z(FlY?<2??Ofoe=+pq8IuBD)u3Z(-eARUmr6~PPH5@QAQb8%IrtBSPD3lrK zL;f3pQMV!eTw2Z;jU@Ur051AluVkbFFjb+1damANE!ujMk77V{LR_t^qWdUoX^YtJ zrHen&rkz{oF24a|QDNF)?0?!9^69r4AR*a=T9gOq^_Tw)o9-~tHm#3Q5)C-zNm>~*iK@KHJ zV4GtHjuApL$vXI~7)X@jb-0gdpvv$9@f@Kz$#s)(o%6$o`~^~41Exb$RIqvL>K$>6 zd-GvOUW$=^Q2`h2cB@-*w6Kl0KF8QK&XRrqmgIuu(sK~I{(ZY|AM+G3QE%KPQR`Y% z1LgcvCcU~D&!7+ObAWajY8%8(Ck}&m%c;Yg;d7m$k8TQf6tl_}gVI7LbCY}6J~cOx zGD_@mr=J`Yjp8y*vLApXp66Ub>Hx}taJi}hG^=mLYk{z_4XFx*d=5gGPJAL%nKaep znOub~T}E?(E=H^`(|HHYS+A!AKW!z0Vl;V@~xx%+zjj5@|b)7Yj zC^W!v?I;>BdqJ1}#4aGRs=4G%dagMmB088CC2?y#AJKP%si>a(Nhokc21st zP$&5n@iv)vekhQ^)0hN)OtE}1I;2KC$zZ>nT%K~jSU&%*o>hm`hCN+CP%^Uy_C^Rm z$_N`!(MA_QS*+$yd0;o`RjohC_!XRARUsZ_fO6AgPq@(QvQy2nNpna7$t(N0`(^Cd z@7;4nhj#2$S#|*Zc_(32Bmm4r#T{@Asr%;~wQ$yDF1DWGgKBT{bCxsSD99X|Sw&CY zU=(5Gyj^hguDuEp4LwKwfmhWVa3!uALInw}pouC%tuBT?F;A`#)7t#;wGnm+56% z&e+xErz(!tyS!8-&pVC=Mjn6cvtW)q*tKmyYupZ}$kSq&>*EZbQ_4AEFa7u;mKx#42$pcNZi z*KLW&^sSA2zWRz_JsJ`Q$iw6}z@iE}Lj1wCJ`IEjn$c0V~SMwbxUw#W0$REkth3zxFu zo+)-Q4#GO^Re}=h!M(_%%MN zUv7c8s+xCMh`HTr|T`G!1#7D z2?AR*NF)Q8_l7BWbPzoMl()%+plNoop}^fJ{$y~SLoM_xnHk|wi@(;Eh&(kT(^Hgk zSyej>tV;|Ga`-Ajz}2upscE+KSdyxeU2oq2t5lOt zsiOOOB=QkrO{K*^luC6RFcYzYxWw;CziYp!IL>t)ea`jWwidBxe}r}yx9X<|r7L@^ zI%myF#kzq0Y{g;Kc#bF{?aKD>hTN?lI0)Y6_4u8FNmj)Y$ zFP2~Z$z{1<{W3v-_TdhMsndFnBOzu%0FZzJ>Amr^0gLJIkW?eOpG!bX79`{VgF>{H z3(m`LKjMe7JwAs}`P2v^5y2Kl_KL=h?Y3xrcR1)@lD@gQsjscA6-!Q}nHu$x^{cYx zdj5tcT)cN zW{B|bev!};fW`gYkEfqf{T_3=TL=es*SE237SFmJ>nWP}hyKr1RT&Z(t#?A9>?UFy zSjErU2Cwmq(+3|=-v|{ihy%)Ubx2Qhz&ugfxo|u4#z|gK!gq7lQ?SNk)vOl2>0!Cz z4KBctfHnA+L9_>i!qE6qM@9u;L1_Nl6M)v6Ur>wl`)gAjH?4H3p6WGM=D}Z%g^-e( z_6BO|3* zL4wk@k8Fbu97x`MWusEPNER}RLj!KsM-~oMibK$QZr2P&$epcgN(Mv`7!g4Vq36_o zVdojFk3_Cehof4q(L_hhqtE1N=Q+-_K)HXb*g{*-{O&M;OCepStorcn7K}u4#z|kn z#NZb_rr(k4)2!c{>_uzCu6!2fEKSNn(jf0;dXUBA3-REe#6``X(6okKp27QvHAL0d;;8q)CLuCV zl;nfkD%Ix^us@?fCxLl3Xve9hUoq2PLM-yZb>@wcyr72f{HiI(D%QMV&!6G%TW6t% zn9e}-OKD6_Tt{z0R|f5%+X2!UpoBpH=!#GchoP3}*ZOklrE^qL304=hSYZ{bpaGdI z4AF+rdu=Hs9oE)6S}ZE9eg0U~ADg2W?_XEPva7YaIpM-vQOH{^+bC&51(~3!i;q;g zXh19Je}lZiRVJwh3xJVj`HI*dJE!va|B>|;P*JsQ+b|46BRRCd&q(hY)= z($XmnN+TfM4N?Nq-QA6JHwbx|<#>#8atP|HiSP5ix% z31ePl4C+^e74cJO>A*zHK%$|0jc7%T?CZGtJU~_=f{DU;E!(}7qt!!h0Q-gJCQ zcs8nOpHi#By^@&2gdkQ!U&@vGgYB=6&wurn!77h<(()UZ5Dz|SKmyH|gnp{W4750h zdu~)OYz~vjxk&A^j!X5tI1-)KV0$!UM(38I2AQSHY=m`i^E2uVFE3Z7jQ2W9% zh#bd^t%Tvb7vZA9P=2VeN~948qN@lyt07D!g{8~jXY&@+`%uajTBSAe zZ_e1nyrBO^r>i6|hr$Ext2lO@Af0jN?IfGc@{t#geN5JjrBf@yfEBRiHW^D!lhug+ zQcpF(YQ@Nc2(}Snj`J$~AaYd5&%7->O3*W}+a$F8+zt%ApIv;fe^ub$*>J#qo*)6C z7puHKV6XTB8er5+GC^dN#0V&%D*wpx3%hYgXJ43v!-bf$#CU1=uqDr;u`DdXqKtWH zHw#Va10Vk2Xm&;x@9e}Uwzs{ksH^SN_utQAO%w<*3!~is9e}kwoNet zxw)Q)Pu$qSp{cIF9fkn=|ApFD^x^i_z0Fe#aF_GZjtOd22h+$PNMQGRmYu7>A#=s^ z?;hld%Q@jH&yg4FJg$%M>rZzvCvu5jZC+GwRZLK1|ERfIvXoVe)}2P}>3C3mJz^NF zOY!E<%oV;kIU5tGx(VBBv!gPO_AUHjk&&l zQkl^%6V3mq3=Qbj0}0&v$H5^fB=7Yp?)2MjzUYTk((TH5wj2!z`l10NhS>sl)676d z>4yc)BS#=7;?>%!fi;Mk`OVJ{EJh0uj{;sViM)~5!67I&9z2Ns;>{{=eqMJVdxIo~ zW4nXl7`w1@GyDg!Dd1=FcrQj@^W!cxIKJ)S`};^nsVE1_%?q&%h~`JM@(#>ZP-TF8 zXfM%;#f$>MB;&yPK!#qXE{3!>7zC>Jf9A{6`K~kZ%mxA|DCq?@uqMBRG#+bDzqd2E zsBOn$m-Q-SynH9IhmNjUkwvB<8DTQ7JO9jllCnr;>`tpp`OD?C%08168AFgWEq>js zTf~oVnm*w;^_JZ7e3A#CeddqP6O0ATW%Ta`?P5Qee~K%1C9V^)#{b3v*p|R?KONk_{y(J(0?7@mAsLoA|%#DzxVFFY!{!JrWuFe z)TA0zyD~WlpWtGkAxg`-ltpuM-_9!$IOT7J9rTqY>(}fH-CE_BOV5J$0gRdqq{`4`t$IY#I=>MFDA&SN~@^x6oBd3u4j2W*L ziXxvmp(^Y7=Cgm?jTR>@5HNMZ@y&(Qi=2``oSZYv|2Wiv%B}GfZtuy$*A_-BUf1soskcp)FY>+i6LmK$UAyU&*2zBjjcIC}t}p>BJ`7Dc$H^CGXq9Mx7}>q@7MZ;|;+5uTvL)d`)uT-T)0l_% zJ^$_FpZkj6N1uc_2+ZxxJVd;l08&|!So?a70|;SRJcYgIojuxL_68 zOy6={;w-w=d4if4TrR6_B>=`tg1jYQ3&}2j&O>|Ue(y1o2=LE&n<&o~_j3zV9p1A*jug1PX>4`T)G9j5?Ttq2 zC?Fr}Tx%_`$BQ3dut0+E$(tFnTj0;zCEuvOzsH52JDHfE-Z?q?E0G(wMkv@D7NQEh zX%*B>h4nQCaQ8MM@W>b|md?kgn$K$nD7;8a>i$}+2lbv<9X+&^GZlV(UE#0cn39*x z;srHQc@`!^njjy6PvA`PGB-h4p1#N>r@bodds&tviprn^cG+ybCg1o=zRtIL&nQ{% zR&u814blu_$b?%Y%kDPcZe4vd{7E&=p3HGu<*b5|rA%-B*DEm9Xs1sdr)gLUQNzrI|I=nMAp1l7Gx6D;@rbrJDQ(;F)=OB~N=}bR-1vtL(}c0P0=$w$%d}?g(n5ZUv;=}&?FpNm=nill zPtqB7;O3O9tjaHd(##=D%ei-yK(=MyaYbn6$}*sEZc6CvXsRFeT7VY5!_UNwb^25Nj5A=t(dvha9M~sdS z^h8tqy=fbx4@5ff0RztdqyR*E;spOu03>WJ{HK}^?p06ldj-7G8ZD#<&rJ*k{zQ6V z|8Q>^%Z1TeZg$deqf_6=jh7`_kANaX`p2>4HRug9{PZktXK!WUaV%z#rY$eYSz}^ET9lo zq8YkLxG!h2>n~ALEMm@qXLRck_TklZ6=*&~yJo16ZCm{YSK`ZDWyMZh%1rJo48m)Crzm;cEcvSc;l7TMw!=|BlHxH!W-y;o_d`035&7RQ)HhfEGK}zdW01DWwn8pJ zdwICh9T<*-b8`11is800nt(Nc-GegcDkbQWoIhQIM&~5m78*HB8<$_;*ug0b#5k_NMcuah*kCvYr{J zz4B$E*pymYv(#^?tugwAov8Jmu2C+C1qgYVU{b>+_Y<=tGv~__I;t`x=9IKUs1;QP zU|r6%efupig^3Vd`Hqpa;?sF)`MUw^4omkUbS~|bH#le|nFZ*|OmSlo3T;*4+|PC0 zC!eKI4B<_)&rF#&uecgqJ2q@(9rv!2x$ZPHd%eppYXIP`Bi0!Ly?M{m@+Ukk|G+@M z*uP0mU#oyN1tlTF6Q$P+-j;IfhV%ZF^SHc*L}s0VKl$pyExZ;V-3W8Qc-ch3?<8M( zxk`(@!7XBy&-+7_DZn;|O6hAz=Hou5cQEBD{_>P_S_4$M)G?syNAZ#Cen2Kq-kAIl1|@U_~QcDS880wlRx`Z;e4>hz9k=9!BP_e;ax=uIn2y*wqz zqs4j?O^e@Tsdw*cooMK@Tl`^$OL*e<^t71B@TJ}bwP=L@M>>Qj>5kw8z)bh;UX}Gf zur*c|?yyu8qY+5!s;!X%+;O~FA`^F=**YlM@jt~!C zy)2w>wzd3C2g1=j86+pLCypK1>=*7LSP12)N7r_T4Y4n+6VKeJ=~Ch!i@XfRBCdy>ul2;#yF$Q<N!Rp+>9yZwAihr{BAU%HgK9B9vn<+ zkm)(xOnq9m?xa>WQ8c8glQR2bbe@W!?HoKF6JoV{DJd=2?Fe=ug2;cfL#h&R$Gaj4 zD#~b{zP@w@^T@9h$aQT7@$cppCo{Nkf8=siGvQsh21T-5Jew!riQI2Nc3Tz|4a;he zE-Ud4Rk<~X`pu%O@(As?lIu!#Ln(hd-JVBYi*>slPw(wr>+=^8OGB+eh+L<(`j@Bh z9E`d=E#jj61vKtLfKjf;^JPFp_-*Cn6^nS~G!i?g(GI0z&NU+0kyN`^|G-(z;o7^# zDBDmD;BhT&*Iwg2&HPys%Sp+=;+GkB<{oSc)o#RP-VqGBg#ihTC01e#CZ+j1l^>gS ztF5%<$M6w4bQ-w$hrH>Pll!gel67?Yth`vu9|VD!V5@lgFS0}eL5af7FGk8peVDHG ze3}oYfzu~fn5UZWr@kw@e%fMmog_=c4r2MJ*iv5acouWBS&rZ;HD_+x!pH5m$3V{;vd6-~;e`A@nVW!B;J16y78 z-O+S{jsWp9O8l4n3g zkrueIpE20-g*j2?@PlRb$k0%7t;aTbS(gM{ng(`uhAn0|?9j0Gy1ye1ji>)>t+e|9 zJcsM%Sk-BWso9kfa-j$~!AiwpG&r?bq#h;j;L6rjSTe~UzJD5;`yP~%?c9ao+s+Z@ z&=Jd-05laPYcka*ZL_m(Mu_BQ`d2j9Ezw>7zDxXYY-byH%kR?PuJ2lyn~*XfG4cvY zWi1^UFX0Wcng{uCjj&a@P=2Z&+GnY*)m~p^Gjvv-?_1-osZ@Z+v?<- zpooT2*^c3UU|dSyx7^;!=OY>Y)AdCTh4}j+WrE^_roY1 zI{+P{4W&NnHJYmb>4rA&jInaQ?Qv~0>0)tho?mA717X;?ttPV9M(gteyM*UD!06pL zTH!j;X)^aXoP29#bjGgB{dvr~NQ{@K^NGqzj)s)b7w>Tpzgi@2X@rUh_gqOZbKh4H40i4q{JaZwm-gz6h*LsuU-xMU& zFC9GEQYlIDyUu3t6T(sRGN+5}Ag&+&`y8_5?jAxiQsD47OVO}>tq?R@%QvAokv#AV z-XEH6H}t33WIuf}7RTyjtKz|NsQ2IwZs-2`Oj~a}$^?+TB;V4A{h4Y=E|}_Yo(hr! zZtsbGvf(07dC}RQhD$+gNthfu;xd0C;p)(bpH0~t_s^d}u$rQ+>yO#19xFP`JJzIR z-On|@TlixIkFLJw;;ZSfF!!AZQLgxLN!x;^Qh_lRDiW7Pph*&6#C+7Ed$oMV-*D}^ zV3ruBT;zJB_w^>`g*2YO`Qj(+EVh48X9xgkR*B2-9_z@rvqO}FD|`5R!_-sW4GlD+ zX5q&hPuBlK+Kk3gEb*k4W{R2AzUzdx*c)bEmPMX<9We0j2YVCpGGh!i{gx?98@kV?Um{6<3;yop+W&lQ|HxyMzA$^MP(HFr{H zAa;dwKvS4%2KKiYu}|vqGkwycveF{NPxa89xCKT0I2dP2S!_Ym%2gf<9q}XW?f%mX z#Y~1p_l%L6O-8%o@w8tSDpb(+rw0xaO7|@2%Lhnv*f^`H#6+74@-xp%TIzEW6t83u zc8eF%<{!OO)%NMLvaZY@{JqT~lcp9>F;OpUu{dIdSTRWSsvFVMZLx{yq${D;`Jc%) zrIDVE*RpuC*_CK5DR3zD#TXU+gJNimP%}!^)ZgUY3Uo0v(QBg43VG?ePH4L4m{#C1 zNsGQET)bq95h+4xH79&c56{DJ@GH%ufq=)4sEdJNJ}U)&`^^gn!_7WLEQ?iRTEwiW z_;Lq&($M^IwU~8OJS?gwyJ!fe>w1S4#L!|Ju1*mlDjcH9xQB*3kR(a|JKzqC=U;4J zQ~tx|3T4GdW##n}Fp`&{p2CWKghw*{3FT6P@6c4|`@eOw=ARbXAJbg0i%RzazxaE_ zio5=9!7yVEW4&Ek-!>thR}N^u9CSs+n}<=A?XgVA5|lk%`|}9793`I? z@iX2ILC(RfF(Pc(USpFu1PZTp*3OS==(EtkWk`1I!RVjGF8i-xVY7kO_;~92O>fx_0O8R}SDHY)4^xM9ok5O=NPm_*7jf!O4R|Q7&nzlE*_Xo$b|#B}z}jfU zI|93ShknQVRfz=txvUmCNRGHd(&^u}1|N_WUIA|#Dsu+3{_>G_HC={s73qQPlXMrV zda4m^Nt-Y|w`hJbUZxRof=Wg7^auK_DAQK}>u#rGi}H_ikt{xjz2`zarvF=C4*<7zYm9rj5XNy@!Z~JQajHC1bx3%>fx-B+#fX@-SGmmReLql=2an!H|kEqjnApH?h z=Ss`L_{Lu-C*3OS=RlZKgV)B7d>pMaq;uKMhsbys_*BXO+#|*UWJ%bjfc5JU)Wz`V zc4}D;29gILb~L^o%MUC2HfLmcIpMAG{U!5o zsPagDGPpTThAJqkdwV+bp|l-UdsAtcGyi5+jMPEc>S7V&#e%{wZR;yZ2g)}-C8Q#Y z%Nvy-!fwXakdZ~hSU6&Q=|M#5?|&LDLUr%Cm2f27WAKpc-Q%nxNnEe(%00X$Z`{2F zz$Ps-t5x}`g*!9!)2?;`L1v6JY^iYKFrbRhaNZ^J!?7%yYGbQ?{J*gFA4LK_y8}fa z{*ajjaF+UIGiJTTP~P{1s;0%451NpC4BsyOf6PQBuE+{kcNhC@HKY(h>1iiy2a=Br*KlfL1fJNd+G0d zSZi46;j0CQT*hSXKisqH4P*L&k4h!8Sv0sfqgSX9P;(;TmJzUjn54&JRu>S@Ul*bv z!c<}{e*g0v|N9w(;a7nO+X??J)Xy%3oV73BdFMnozfdbYcSSq1KiwQ{k^Z09mI?i8 zC&Nyi%SMU;r=J6`87G-+2&m$sM$CvXcMJ&rfrtuZl<2Js>MVS<28AWj!IkMdhp9bG zBuag1n1sOm3jX1Mig_iWzrjM5?6*@%C1})rffQ_yQMypQNbt%Y4>c#i7oS0~m@S9} z-a!JeialO^djE!W{t4^=pCanuc1VsEdl+GH{ncyH5RLI!{DtAhF-yyZ*(8 z)&q0iki>tb14;t2FGn9>@a|%e49+@cZK=*`V2PN*CE^#A6-rE`lE>NNWfa=wasP1x z#+uYP?JL5M%ZNA;`P9$$O{tJAx7nx}jM!Y;;CM1&wX$-YKWX zcN5R^?zrc%lzy$?6Cs8I6oTVG8B9oy{MppoxqlzwudxMWgw9Wd!#~cpN-+aOD7<@+ z>f|+U|N7bIFuWqC#K5PN)YFAc0DqzII%a*LTwOFG{F^Z;<5b+Gp)_pTF#mN*JN!??&12A)y_VD2_307S z$bR5X1_dsxx*GLNs=A)7)w~N_hIr+*k^IN-(gGCK7+ieqZn=Mb+5ZT~E;I&HRF)ro zrZCi5uxt~Oc$(BV64N<3=O`*@ zNL0kqMh7S~P)YcXU|!*^|WEo zU?ck#BGi!^1wWsX4WelqKatNn=(`*(&Q%Tr@#KHV+y8v}S>vK;#DKt`LsXyZZqL(~u0t-Y z%5@a_8WBCD(trlbC(d<)Vx-rk7i=D9#WlOS?6ExF!#lX=F}v_eAPg)?SwSVu{@L;c z$~4_OMp-{up2&6x#>J*{zi7yp0e4n@3D~kWty>P+XjS&Arqg;SeTA<{X$DPFbBoMI z3v;4e;idjO&&HxC=;3KYL^V?e01RGoF@RqeD?*2o)QBctT_k_Zy_gUR0{7;4`GhOS z;KGqB{oBy{zb}G;jiMhj&RG3D@Q^QSQGgjr1QBW7E^R!}JnUBg9YlmkVKEoYdMJQT zY)bc!NmW(IP-fWq^jYE$#lS{@&rI^yJzNgQ4e<;B&&lTTn7r1%S@pKwiA+XX2_{&X;K67|J%*~;xf2>tZUj|CIMDn7Ex_89=8FK9x^2s7n zWcJV}daJw`TBTa}Q6S~hXOTu!`7c^y-;Dvwb1m4n_-{1xe=UzPNCj1O{=Aw|F*M7x z9}_c2BWZm3jY08uAtKF6w7s)eD~c#R6Kt~%_K$=M+dn>0LJoJ#7ioB=yazE~nogetDKDoG+twK24__K0z+%ou)#U(pRHC3W$!o_~J&r`R$ z;c8J!&$TpPu37eOO$ousSSF;iaZPzSVerBqpEcA!WEIbxwpAPoD|H}uJe>6%{-YtM zKs?O7P@ThTxJ7N6-J2}((u+h1>ZgK=fuB=DUlBoy-wwYNB8&Y?Qf5n%avtldLBOUY zUBr#Ud=R~`he<873ybMOL`8N-`UiDQU7*H%ChFSaVZH3j>7Ey>25HH#Xx&P!bQzkM z(UEG+a+&WsU&Ys%&y(<4@8R(V8M4wjquMkOVba7s#RDAwy%WCDbx`yBE8U9@^oJWN zu{XR&9g-KUQh1BA2%WI89JY5QmUcXoSrz++b}vb?CHv0*F~l6Qa9#tss>vpC5e7eH zhHF_x`xzP3;quM2B@mxIWRYEpTKmPLYbpEHgGpBd&=&HXu#w;wA`KargamUJph9Er zm_7SujO8DnYf_iOr`&v|4rW7{6=hh2uSYIPmLoflZ8)h`T*kjt|_760Lyvg*Reqt;KC(6!1e&FF{068a&Ln&egVE`d0QFTiczOs!nJD z?a>g-LOCo0eFnxYiheo8r6*CEZFWlhC3v7)z$_eYnJ`FfSxcc$bNGI{RwEZUB~F;? z=>KOQNaj1A9C^hG9j{Gc(U^dVX<>3q{Zebl#Fzy`S{l`E6 z* zrQ|X2AFTUZ?4tu!0fcsWum9UqI^gZlOFP_F*yuX1;bk&(<>Y$3aZw(+dh_F=BkiqJ zlK%%?SD|Nz9fT7}6j77&)JT4{q$C<8SGgemqViF4ufY8ibdhS>oJ`;QH& zR&BYytvt^CZYjffy5}EvGRX)nw};cn_VxZ-pa9xM2Y>7jiBpnzenavyxW#p$CsNWX z?m?D8x&n(_lseScg|8EqWW6GcM4N3ECk{)d`@QvUy3tC7CKqG;=ZG!pzP zrr5dA?{0xGc5NR~KQRo;>N<3_J?E>AppZnBCwnMj20oz_D9OJ01Gf@|{MP1xha)C} z*WoFvkqPYzRkC+2MN=#}>C_gL`8|A|46jGWiRje4!PyYi!NjpMp7NW$4@-~mx8`W#v_hUs~Y~txh6jih! zv2RKB$zWC4)`1~1P8&$s{}go(o99Hjv6<4}M%5A~zM{4*5L+yU zf6ahjy<=fagm6UR2tq|uO-LkVlq^K`e*2WNZbr>G^$SK`X0_jqonGCe09slu(bx_D zYi()RNc_J0$LaD@P5#=C!7l&t)lKhawhggnsrvb15`x~l09{RCr=c@0qvabeI>*h=|J6$3cM8a%!wmbx#Y3t+>#uhXr?Hik1#L*enLxDU+v2*t zS#;k5Lo^(I9BYyPH*mH88(ptmnPy+zDlH``XFyzPbWvvMkIvM|f+YF&)v|QyzoVA+ z<3+Ufg4R}U;4%GZ_?P@p!fOo%JIC!>{VenxvP>o4%-G%Vb21`0IXMfT(+pC%{(40RLJdTJU95 zEfv{eErnBW%?l}j?g*OZ{a-l-{zm36P^w%qLq6KTX>$Ej#6W9t8hpQs_n@K@T(6HO zp-oV8?x0Z0^es3_JH+AmwS#QjBr(sE-3S>R9=2SuTNXwOQ~AxgL0pLg*jGx?u;O~- zD66Tv(4rZRofgnKUV!TRLW?;Mbeh_)g3@AK=WrC>bc?V!S&3{S3h$TEP`^0rklJTL z6){5zKhl|nj*$o=_+_9-pyFxO4~6c>8K!7{EFS-6TmA=KKd}G@>Zf2|wubnH9gi1^ z>VcJ-8hp!da-1Uk5%D=nq{7InsJG_}gMLn>&|H>^RR7g(E~NC%w0{IH9WdaoT9R#U z)Cpce(^{PRmp5760j4y7ZcgH{2U}EU%9`lP)U^9z+`227Y2ir z2#?XM^Z+b*eyQi|%l}~2zdy*6_<8$7F7R3RKS@1G5TSn$Km4`es}|W|FY`+gBflo z{ZgH%+WSc^p7!bH>i1-N0zU_d z86YyUGui0IE$)9IP~~u5V5|Ob6|KtZ}k?h{9d;% z7aid4&Voq6&yf2==w&mx%%p<<^0pJj){n*vh>jCwSSF_58OL2yuB%R@ad#wq{UIT$ zR2Y$xuZyO1EEZ3Uh|r}Yw(yvhL~4EN9Y^^~MX8J2c_b zI{lOC928MB4)3|X4p=+~UxUDmkbD{k{3O6FicF&zJ+D<~B;IFeIag#4vojN*BnJG9 zIE}RER&fyv3@R=2USurtMtpnY=p%hES3w~l5RPEh@Z{v=S>!+daiQBWBI8urH+!Xk zKkpeR51$DKya5V4y*%L0P4VOah1`@qeg5Beq!-iA81UhpVXFQYw=}CQJ!VAQstmHB z>nwqQTkY6R$1c>$l!ffFDL(yYFCV;COE-~ehEX>=-XrLha<}_<4o;G_sI2(9nR=5k zephm#+*#g-EWFLO7iymChhgd$qDQo==J2k9vDOOR==9{VAW-Ox+~l(aZ!*7aYCyt7 zF2GQEKL*-wBZX|VgjW8*ONS+X{%?vUvJP$nVkmv9S#f5}xe*C(%M)pdXT%L02`?R{ zRl}~(r%4KlI71toBK~H8nsA9^B7p5OU_Y;iU?=H`hN-<3x5vr&9poHWj}R7U6pp0v zius#-?E)DBP3yNjq2BklPBy)_kQ@y7&ZS+-moV8<0#B9S1xJew)uw6xiFN#cEZrQ$4eWlP=kB2IzN!F1 znWkG6qX;{a;iOl@ea(%ketNa7kp@bHOD@*VI*>tjZ6#S3EHDKxcfM>}ydxFM%kjef z%^~Ax=|V6NTg3H_hy#mJ$J9g3wYwO0?ac{D)Fj10#I(MyOmWu|HYY#<;}yQ3sud8+ zLZwhjw+H2?e=KUcUpmGVH+FDP`L(@mzS83LVTfy{_qyd;u;FU{JwjJk?6|_}Am>P2 zUGt$$rNvpFl6RH*WaAP|uxZpQNrT6;!~wkY6EL+1akr7Nu_#N+jmfJ&zt4y49A-}! zDNB zqT@(BVe^iJU^UA74p#R*IkWq#L&0lDYCt=xz`s#cNBiFYoWGjynAfk}6o+vii1}p@Y%_8pe3XMnJf^B)(Co+(X`4*uuaO?G%B=($OTU9q2J3}KOG;}z9&Jv1($syQ9G zl^#872^4svp}#}R8>_>@WH7wOPJ_+wcST`x5V`;!%P1-0uU7dMjcWd_?@Ox|t}hXy zt>=e{y?&|t_PqT0!Pj@5m8vlu33Vvw_;`LR_suJ@Pj8-?i{x+_MaIAR?Q!=TE@|Ae zQnm<7Ab(-EavJ4YQqogt53JS*O8UAq(+jJ?!NFc+p%ZvNB6`dE+h1R|Zby8CkS7B` z&p#}$JS?pcw~77i5IPN2LJ=pC0i$@=*(?yeAGh<`*WKEn_~TY$6_qk8{O4SFpgR4s zq-Ct>Jnb0cvU!$=@(8eMCkm~JP{hjjKI--}f+0pv`kL^}QtkQZPv4d+oni`{LsB$# zRnN90E&v6HfMs*PoVH+ZZkk8@Y#g42;+#CkmG*7j1m@!=^o6)MFOtKe=ao z3dDcJM$wHKPX{yS8yQ_ye|xaLw_tf20|2@)!#fjv@`sBtscQiwszg?w+X2CAg?ULdRlagwL|B?YJ&-sA;O&Y(#7t@-k&zxH zmHqqiD;+7j)j0j-v4N%H&jPZYM|z%NMUjV;hc>PkIm1gCOyV%?LZc;{uj+Kn0CoeW zW*F(=P`n1C?-favW&ZjsiHj9%`G|+LA9S!+?NWTnW^}vp-iOx z;b9cw3@Vxf`X9Z2)pt&Rl!Ys+k1DD-r7G}qhTOPz%xnSqQ60dUD5$S$yxC`XCm04$ zAYc}gwU=3ceb#HmeB@;8qdm6Q&2azLvA1IRF(ATNC@5}wrA%C}*T;VeJb$vX9hHX6 z_G6A?5`@WD`aezmt*@yG>es`VHY++X_rDHykYBMioDcKgAAO4h>hhcntc0(%wv+ox z$HZhm93*p~M#w^Apb~gpiHmI#WIMt$%gbflI|b&ao44#-#Jwy(GJ;?PalfJ6>0B+ld=wtmW8SRweLyso|n=u-BUId{Xw4t*U18fNv{mD^fadF1~5 zHttDW^m&`ky-&jpdx3O_m=f68Sno$TYm1xZVh0%ZHq{|`@#B8!YhbVt0)zB!Q#-IA zXR9Q@Cf9)d(N*K2$9Gu-gSfo46?5r^Fo%;Mk$2T?M-^X1}noY9-#az)UYhNRHbNFt7w4vY@%K z$TPr~XVGG-$N1}6)l~(rmU+mJ*tTay?uf(s&~5FVtH|xWR;Q7#NlNmQM0Gtj%$qF- zg#i?hge@ZczCkZRk0oOU5#?AQ$}kF*gTOQbMLrlxi^Pt06e^qhj*;Ks2ur~Bj4kM! zi$a*@DoMd$WauxNhtC%POn9xRmggg`jdYgY7@KG=4Vt4yqpYbe6pe?crqfz zm($JVD|b)E~v=le3$VhpjqWvNQO#CouZBb)_$1A%(nnG8V(ayH=wd z9yDyetqlGUasI{(YWHjI?8Hn8BTv~-R@nXFwu>-$lrYp=rvAoHIw(Qy_vl6?fJszv z7zn~unF(rq@Tud40ejY*zA!I1dApqTvdXKOzi7-qmn(c?!r5W@~Cycsh&DKQ44zaCTg z&ny5KadyuEptcy4zBBpXld`fPrEK!wZv}Fp<|qP3bbjREU{qDxrc=pR_XpJ;sj%+j zlWd9yOZUrS!xvcYy{|u#Pqdr@=peP}$hrLeO6OJtcB`W+(46(!(W4a}xmN->(E6HJ zYu~MtntaUF=RV5gs3G6WnK`j-KVSG^x3%hUu39SnZZiMMDG`B3c-3pxIE|pak@~_U zGXzL_zH6SDV3rn*s=8;ZL!O-e z0*Hug>#)(&tR{+_`9li0Mial5ybH*J{B%|P&|?~bkWHGzUkr0Pj9t7m>Zf7r1D~jT zCR4*OB9ovnal0PX7@=7aonyVfL07dFXI5s?bysAndyKt7kqm z{dL6AReBu2)+Ik5bE;OoC`EJvm_RTqD3;ET2u15X z>{Z{EW1dZ()Jk*Ag57s zYsZU-0l5dUnRh*v(}k4!{%nl&Rfmi4igQV$Tu9_=jM~oEG5Us z0o~+j<~kL9qZg=s2E?fn%dWvR2%-53n`1$w0=yD2gL~u%eEL*#K>@xfv zleb+fY6~Ut1O{w?JYl<&lZ5yo=?!37(ghKXz-}DF@oal+n&(_+l z2suXnyezfryWRfw)5HM=FwIo+OJJ_v7oZ7*2%uSXZgo+=umR?O@r#bA2E|30EiC91HQ#qI7i487-X|qh+kAQLkx^zL)?Ox??O7J_t7?buR}5WtENCDPWgM+ZcJ&;|&oI$xuq|kCvT$=mT2HY4oM2hB&MEPufRHiNJ%~>pm#vOsvBnD~BT6RA8h4K0rKm9ykvdgefRr%0BdalqFwDC^^EWBDmA9C%`U!+PIUKuuzwsrm0mBy6R&EqFQ{p? ziGHK;g65gKhI26zbwkGGpFE*alG0zT1;h@ZI6b+Laf6yG^YY#LU#P=DlRfGfy7YCd z9+Bnuy!1?`RFZ8CJCn(2X}eKC-*k)s{I#hJFFnBPioU0uPNdjt0yr*4L>_D{mD+pS zL$UIi3K2%eTQ3F@L=A*VyB~Y3EKGpHh>}CPfj^Q6q@p$qH z;RQ+wB;&jN^^z;89HWX3m%Y^$UXIZpwe&N{Z5ONe8fK(3c@Pwlz|!ERoe+ryc^Sv> zVebua*rL~=NZTk>6m4~P;Se5&go9|=Iq*$Egh z(K_LYe0-Qxk#gs2nGvlBJn!-O-2?KIEobXL?+>Si<=g_CZ#mX7_swIIExK-u|FBJn zZ2DDAzWY#n%0}xW*5fLcfNqZ;DQ`JTtDXtZif47D3z&)P0o3VD@p~2d{*asO)*SbJHr%D;UYc( z;b%8G-;aFrUKJ(8G^2d7*zW}BBf;H(f9lr}!{=5PE1sGUYv5re6ttQVe8#1Q9H3-? zNc_+bHkMMPC`+n%zC~-lag@ZPlc4S&rq=rN=yg06t!bs!&L_VG8R#p}(WlRPm=UTo z$DC|!2OL%a&x}EtRpbR^tG&+>c-SPM$kogHZa4p$_U7T($B+%WKqg7NDxn9Ih(Rs) z$uD+>UCW)dHe27Et9+8d$-(%+^V>eSV3U^BU1miM2~`!!?LSK=?FJCT7Zn*3Osz$V zKc>DI^ayOf8u?sY)>t%C7G+b>xK>iS+8lBPE6EpQ^WOzPos86NHYBGt9v93Jpx5qX z=G}_c4}ZxUVk3e2NgZZo=DxrMyB1PNKgw+4z z>#d`rY`gYh83$zuK|(+UhaLn3q?;j!P&!3AMM^*z1f;teN~BXjkQ8a@kZzUkmX^}* zocsOWcRkPj$L~MZ=vs5lb?!L!v5&n^iSywsZRz>ab(KHMDmN1OBGOFo)qnl)S?~K& zc9-d`F|nKafUI_NZIIsbrWyg^dr~7aXkzO$uV8*QpB(LaLbtS^=XoR`3viv z-e{_vdmk$O;v7O%>rT6>qnzB8@f>&jdp`d7*!WjU(0{)AVM^c1(TdvrDYU8CvJq)W ziciu#@dNga!`#^zMdkbh2F_b#Sb9Mj5YB^z?r>NM9Z4d51z=?UM~*jAe7t`Am}SNm zqZ7+?>(|P{5%|ckaFOo&+MHZmv=+%w;ByTvMGDCa0OZ8>aW*$tVf>-2Vk*CCohD14 zAI#sBs9hT_c>gM_e0|v2%9i2hB(^?@Q+azn>VJzz``&z=mAAL|ypz3^rXRR&WU?+^yvQTpg{e-Idq-TGpX8vb?AmQa8OH6&2T5}M4-0%IVeYKa>NDm`~{ND{@J&J!wEH}z%|8~?8G!Vec-w^%Rz-Q zzK<6X4dOc{AP})50EM!8KV%`1Th_7=S!atq`7QrEsO58M!k^4>@A$byJ`5&HzWsB%OdN)xkVsTJPb6L+6+gdHh-idJM zo3gnwEaD*wd3E$pWd{&Bk9g>XiJvvCeYNq2ED+@KSPz;_^({R@ z`I0=K56H9(yx4C#oqZE2m^(R{2P8`|NoxQ&zS_u3D(y+kcqIkLVdJDUa6}q~v)PhT zeWH7a>;)zENqS<;4fBrC($7uD9}o7U-!`n3xBa9z7VT-1Yrn{*Y%E+tH4hd8-t}qI z)s6$Pr#QW@5#SpkY!96RKY>8%FpnmG?IZi3A)~Ghl;_LfOVR6tK_@QfF!jYpwr|q0 zN@8PdQb1ajoXoyxzq+ssc21FpTs5KF;I*{8pJxa}!hrUOMNf~%XMQ6Q=A2+wYP@?mbv0Zj{sKFY+jrt$g4eYUV9)!$X$}xVv7xv+#g-Q0a4SL22 z*W#1TH$-OlZ=DSVi;wZ}c;9rdX9(4g@hdxi3(A4J;l!tndtPF$t5}2y!9i-8{KRD~ zbMIhV1~}qS($g`=|6=pm+<79m(VwXM}7}{M;ISl=EOmVeD6Jm)OAaDAV>D8u#>3 z((~8Ts*|!mYV62p3 z>~kt4l}ZLGJYD`0fabZwbmDcYqT&*Zdpuo8Pzq_#1P0N=`HEn`>=_?`+Ylb3C*L#O ziUtFbid3v$y@-BJ9T9lnaDUTrI}eVl&4I-(cfVdA3HtI(_le;4r#24@3yXUO{g+rY z+v_n!037(sW>N7s_$vu}5`WQy*k}VDA7Ur+pXvAA=Y6l9CX{&}7k3t^oZ=WlS*!K? ze-iJ|b8t4(g;>p}7w8BA6uulRahdhyv&YV91ra0x)GZ24zdJa4!KWs!3(xjn>34DK z7&vvbT%1Sn43Oylr6xCCSTcKXF_kI3{P!~BFGI%Fw$V@ZH#x!)I~oE=hZU&Mt`9cu)cjaJ8dcd7 zT&>$GjgP!10PMlgcW8rE1+92f!==4#hhlfhBr6Hd6k2hskL5JJg^?6!O0!9lOgi5z z;|O?qrAM)u{^&$#=;AyGe4+AMv6oW&Lnj9>n4mida&_6=&(B?S4SuRXvTmb7sc=_5eE2)I`*dKaw^cylget~Big7<>579goJJvkAT$7k< z{9<+m!p7dv*W)NMP~KI-Ew0XwJH2|~j4EE68vR$}Tgg~7?e)BV-kq>rVgaV2>s&;M z>=jyjU)gC&LVpfw99skRkD*o7*lyBOzzKTSuiy~7`*`ly8WH3*2G7y5S74L!V{L5*Ctg&<@$pMX%Un(bdiX8FsdV-FJ76lRc3xg8l|f zz9marX2>}$Zou{#v&;9uai^rxgOu_ zjHC0C7_r*@jR1t!gGs0<#w__2$$bJsfU0#tEyW*?oC_ z)&rJCMT`FOB{p#W1E#gv_1?e!Zeu&pc0>1h3*R1P%l!$l8@NAJ{{Gqf+qC+efBil3 z!nlcMHuzcX+z9-~YG^PLSWM1L0xHFKL>IWVr%i{mlad!@@@kz&QM|vj zf5_2REAR9a6npLnEgcv`3W<@)esx(}BGjHYP62ajp4I{u;CgSz5bF{i9}Fq?w5YU@ z{^A9q47i9Nc|nNdp<$lFMonH`?_G_~wu%=rtc5bcs)plPg%;#nMV7jC_7ZV4@?hUy zaK5B0MXzBhbfV#oXXA>aFc`=2mwd6w`0#b{M|W=x=6F`hwinLZEaBcPu+0@c*e`QP1$FH~t01r*DpPpZL8uSNcvSGb&&DV2^-FojVki2E|E>W2xWav?9 zg*9Ru)de+wwT4tgr8kuJGW?pwOcMI?i};O=wbJO~pQw++f%L1a*BL5gKY179jpb)5R41ru)c!zm`}arLkd z%b7d{DzhGTa^G=x?)wy{I}uQ|1zV7pm3pZD@e~(`lh}7M>psZ!k$lmP$WCi_HKV~L zV*4j9F&T?|x2CgrwRbJilN{m%6eAKY9_g+Vdat%VelG3V{e)wvD-#0xq=R8WeV3nb zz@*vz4+CE)30TvtjtoVXW2CjgfQF3ku~gR3#XRk^H=)vi(y#mI>>@AH{g5DPC&AL~ z{>~PO9$>4=FrbWjc1!eE%gOVmq(iHKGDD0F7N8?jJzk(4)s6f=ap3Nr)zGCSh#XQ`x@|ect3OLJg>Hl_8c?D zyhwjCeodSH#PzLJ>+?U^ob5Wu=DDOGWJ1yxLIl(;Wuf%YQML!#1$s~CrsF+MBUQc( z2Zz;Aw|}nPqigv`nn?^fSvna}_4S+^+2p|)#I+SF*;4~^Dk+RHhCp^_@CD7hUut^ZLG79i$+$ym=iX|jw z!r6mf{%n~wJN9B6tNU$QKKtvB!C@Mn3RYtT1(e!jroXbbemj_J+vP>x7H;lEq9@}OQ*n(+2)`!+)<_I^V?2)}(N|b}% zCzUJme7cz~lqkJ-&!sUeK1=2?Y2UI<4!-(;_{B>GIu%TZT~0#@YM#=Aer8zw4sBj^0g+hR23;?g`SItXNh(UwMo-q z2rY>yhlfk7NU7KT7!bZhJ5*VB?;p5_*&4*D4)~ddwbO8iGHU&A&h=ORlX? ziVSODK`8fe(W+`EHh3xlBY-1&0fe@CRJWeJLX9g3uT5oS&vR-p4c z%P=MF?Vq!!L!-7CHF+GUSlt~geM6d?YXKIgFzb~8oj{Y`9&qN>#Ao&!sg_e|{-ruj z2cuqnAe`6QQ)LQv<)&F`BEzJp?8-at#EuK^)-HVu7C*}BzVhw@?6oD95WR?IGpy#S z0gE5%cPI_rvtk9=dS`(|C>iupnO?ZLU4X0)JNy(ZR&pV9$$Tl6Apfk*b&&@OAEJxN z3novBfbN2wNXG;OAgJxwqerdn!H@NM8vi z#o@=RZQ6Kak>J?sjsc&P;6P-f3GzDa@-@&Exc-!@LL95%*-Q|huHpZT}GQjs~<-6``uEq47zK+w|uv8S#9tHmZjSV z@+n_NW*w%YlT$Vd)e89h%!$k7R=Q6XNrs%ONG)xeTy-5TI&5(Hd?m$T)*R&-T?0tX z#BH=nVLB2sWn>9CgQ;IW$$HDd(?PdcnmXvZbtfqOXgx$d*N4_1+1}ue>(XPv4@%rN zf74QnYA9p!8_!S0!lj+c@08Bf&*oZxQ@rj5>o?T zdF1vb{0!hlD!nY@-?$mpLy)p`ONsOK9Ipe4GX1JadT-25)#%ez(6HI7n9;{eq>M-O zjY@~Llj1*#O&}s=j!?G;2a85xTar9gI^@+mLHFz({i3{E|Ip*9^Xef63C?E(EZ!0q zH!TSFiNtoA-j8=wqVqaWX*X4)kE(*QVs!%N9;Ts18M}K-x^bWL5CjD3e*mUEreVOR z$aQ41`JTBo&Sl{Rx?kMb^9UAVtgZr)4>XYWQtAN`jy;a;UZyB>mtFR51|3QFAfZ3M zm#(@f$_^YER0JwAE|*zWqud&n!g#&?rS==PEjSM!Fc>w1W>yO542#EJwEc5*dP1)y zGgqM%cXHRKdtF+8kdKCUkEjbDS_cv+X&xTZ_pK^nvV&96a4x0ZWg=e}yb{C4?~J#` z&ECpyedhJUxSabLgee#|_+c`W>3=sRzkFPrkj|x+9B$&kD4dN+h&Nvdt683X;`WQX z1h|om3AZnmELj{6&nO!+qZt@cgO0F}?72K`{uy#Vb;64=%Y%OY6E%d7$p@a7Poq+) zK?hDuHX%&^*9pa}Qx{EI?but|sumH%Wq+pZMg>g0UDl5pMv=YUa-EnL@I0u&8GNRr zE{Q+oYvOiekh0c3a}yhw`VBPOzH3s*!rLVa8t?P;Ew(-L z{7SP7_@wd7c)nfDG;^&@#|5^T9{Gbp2QADq?f?wNPdzA3qv zq_zRR?``r;(Rm#EQ=R5>t;&ntdU+;S`WkGZ6nk+Mg-qA}$0s+pdfA}xPwypH{m7pg ztbMll*~OkT$@$yHR4Ur|PT$Cj)N)$mR{HOz)tK+O3X--c{I#6@(U<)7#Lzsw8))D& zIk%J3(wwBO+G$Icja$-}sGvp4@MlOxT^G_n1{M|9zcafQGw%iQu_z8du?nyfcQaeW zxcED3Q)SxRn`Eai{z{F3cVyd-Z3nD#Ntp4{2?+@FMS8)`Kl5v`4>h7#G*#NJNQ#Kw z-UTt5kZ~wQmq#w0+AqK35g~+RT?KB3>@BU|ebIE*?{LDwyPdZX>EM}z1|1z5^f!P5 z*%)x-I7b^R?;Ky~QRA{+eb4bC&9NS?N)kICj^@9`eLhEQuYq^OZ>Uc5XL;vbz(9E?~~qBv#W;8>}2P=1%?F^@1OG zyXRVE^8Sw)j39orEbaiGK3ZO2#$`0joHRorg2KWC*$a=RrZn;_k45EYu-^ZM?MZkm zd~3ScwFPu`b1knEF6%*2*48`Gs-GKA-NL>Z&8CiZwE;5u8`o--8ZIkVx)~`tB$Kk5 z>SDydjx0njJzaQ}{wsi`*7OD%Cyr{T)UDBW?#mn>O zB$p~b^0<^fe)X#piH{^7437F>**sFTPl9?DlkF&G;-p*4^uwX~szSE6?UqQ11By1# z_{(JDF2z8n7gm_}((t%Q=lJKE06l7-vEnV*WN?5f5bbDKqS*^6De-Potb(g>HY(Hd z17w&%AscgmZJcgbPa0koy{Mw{9#LR9ev*?$Dn^K}GRg@Zf}6Ae8OpM+R2Gsx7>Es) zR*4+krOlr$?^t?!i@$oS8}k^2$c$)()H<$W+xPv405Ser-L-4EpfA4Svnn6R-Q(_|Z|7n&4FX>VykH6&|LR?mnLHAFwhx zH$av}+@YN%y?v;RfFM#vWwEleV~XHQ>oK9(=%~gC zfq8zxlvT1PioiD(M!rki?s2aI|I)J3gyn{uJq@+wH3$U*h{>ijiq4&ia1LacXbx6c z&hJ+LW9EFq$UePo7P82G0tiHvS0;LXDQw^Jq`Y4??00_cXPad}>G?8N64~IX&mNb$ z9TOdAadBMid^Q^7x2AtOtJX@Oz0gid6(FWgh)lgNcSmr^6I<8iTQEqBUe zFNt`0Oo7;r%?u-GYgNbIjPyPMLdRLO!p6!6=~;JP!*el`S7$3psW&Blf1LrWp!%|x zS%%liM*d_fGMh3Fh$W@pcw7!QvA+bMc9W5q7c1Q{KVH6Cp(93zURt4}Lg4 zx$4Y4SEf}Vmr}?-v{kL;hD~634k|POerjiUfX=(BJ>a)tBT@AquQt2H@y1dle_x1^ z5wqTL6!s%O){K>9eOF0q=l3zhBvgjx-UFP!LzTP5Z)R*G%a}1xUk}n4H*(nd@w+kM zwO#AEn+koaf_M?}E$!OR?1kKOfM-+SQ5+?iNg}J?u0zG#etsV^4=jy)4ltAHnWaGQf8!&-Z>0=Ai> zKal}Eq%txo$-QKnoHc4)5fx%YpvO6TQey$hGCUrxz6e$E%)Yng-Q2_jphZcODCPtd z@&e~k_}@Vkv90Xq{{a>F=+3#2)7tPH5K%K;2b~8ggP!?iKAkMPOsJlmk4@qYQr95& z@FJ9AvPoC++%&(+f!$T5UhjT~^Ta#E%T5K9FVMNG3i>^54`_)p~v6V?#qW!ey9i>+D@aYFZk#LXWPypynr0Xb^RS*^6;MuMv(*@~z~s zd@4N2OemBj7n2!ZXleo@1eM|QeQb+wwGT9I!(MXMZ$D;;X7N{6X@2v$%75hi3Qt`$ zblYf@B)1*b#>h!d%8xMb-mTx;ZNEW!zy0>>5WmjYJ2fk=;Gzz5G-&Du&^b}u-_Ia> zD)<%Km5lvDNU9GdKANllelpqoXMDSUugU%t9_znKi!CHYOne$Fx10a|u>?NLjTKn= zPoH{m4pR2Ez0trjnik-QqmRTo_b`YxpcZnIsu83YhUxACWgWpJL$2h?|@Qx2j-{;r~=bl%OKQscgNjuT87oUU&GM(yFH3Xi#~|HYP)8 zFX>UR*X!M~L+cGhybtd2wfO5#!?sC=&^Z^4`9xo$y2#~lp%qM-Z+-&34qpXr zgWEagKak6Yf)FsaJi?R{roPB4z2HS&B%kG7WL@W#L?!#S?TI{Z(7L9+dhJp~^TLzc*Mj}C`2StcpI(-BC=#Nm$5 zqVwrcUx12kyPd943FTHS>Wt8gWamVN^(Icn)42UqbKv1de^6bI_a?Z0fVh1GCH+iK zdiuMrZ|mEm`fbwFq4teZpv7II?zD0Q**E3-Ey0$z$~#(Fuf@-LR37zlet^rSG=SR5 zjXvChI!OG!_wR*OFn~m8_vEkHT|e^ihsAp_(cVWnt5astJJXJV17Qq^O|)Y~WFwSS zm_53tv+$7uT$K&7bR0up^=^U2HLj#KJ91#px|-AG9$#14$uuP)1P5~W8EKw%|A)CN zt9g=H;91h7s#J<-c?DXhucc-+@rHkcOW1qpRIg#*=n$+4zwWnn_QT@T02?;BSa@F1 zM1_Dp(Tq9Kv?NT85%m?WiU+~1ziIQ?t}y+!s33(OYl6=;=wlWiIFoZbxvB|7kKE`+%)w5Vh}O@1UCW|o4m+ZhJNCBI<&WR^h`G(y0JtU3j$Soa7_*8-?+k+ z!b&v9ia!TW9h231FR-yRfIvO@9gFA!Y@z>y_fw6S?65|x=I!oY8dK zid0a^d9LE%ERB-KddSRQ&?6D_@#c8XmW_(?mG;$9*gP{+jUxPCsVnvk2%1G+Dp)y$v6XO$v#SO5$`Zer-7bSDHh7w6es_{ zs|vmAoFU>;f3^Qd%Vf*&a*N zE3gy?i^9$Tl|;rmu)&1dUughhXTHrz#{8O)ziXfi)ZGS{f5Z}~(hn`m8c)L5rA4BI zHxWst4%xR~=X0Rcv|I+701Ksbl$*c1!gw@fWbmd($#7Ay<4KuI#-F2teo%U8I0HGC z94$X8Ci{BV%tUu@#dQcD1D8EA>{k@?#4j4nmz?xzbE9p8c5eDsVlC^p#~=juo}9nl zN#KO4Rqf{L1hAf+-sD4Y;)pHJqKCw$JKTEG{X^7xfBYR2r3OS&PpySF#vU(Me>_+9 zF250S4{QC)!XB2E!oxC8?p`5jNp$5h9Zkuv<{eU935dMkvu`29ffuNO)F~5dA_COU zAhd~nqqcg_EohQK-fua22~LI&6qWJA^uH-|3{0MipP4h5NRqz!W=6YoCy(zdsfEC- zdkz}#K{o$zK!49N{&Hj0`)`=XkCC)wRYUiA1KVS6MjUM0Srf_BztB6L=Y#CC1 zF+#I=c}P4SCEXs<(0>a~hF*H*r(+w@DrmduY$v{~+sI$V%8;L3roFFHp*$_Gww-(j zq*()=n;IGVi7%S3PMoEJ4NcU8Zs%@;MxvZl2tuR&O~S(H+`=ulUk*2$9s(7>g+67C zOuEG4yUq*nY$|Slhz?qZIaOfcv%fn9gjJY+*nLh@^E|+^U7o^eU0wH`BZl{{lwA|M z!my)xSgFPq^Z40cpwS)PuK8il)-H4fW$l%;phYjo%6UmhNX+%~Z1x{d8aXt9>f>(c z6Z^*Fi9&Px3qWr_n?1PW+{;>U)GxiX+)BXd65p)`(_(pEP*DLiK@#e}avr-)TTr?^ zc~IlIKXI(KmKY%GuRKSC6_3ma74Z{;%kC8essN>ODy9kHLu+9NTfhueb|xa60X19> zf~Tg}^etcE+uiap*$S1prbKfhxTo}{sZ)B%$|Fx<>f3&WX8gt4#RTc7ZDPH8?nLU zS6V9*ni8^i^447yTNgys;%&no^f#XW+7_g@fZY9tTP0VyKz@i@a#zdm8WbNTDUoX) zu+3_`rpkmDAvtgFR-cOHjv{4vNHbqn4a==AhI8`kqY{jv#l$!qm%TadGke}{ZXc6S z()6K9kG`}c8hXHyia72YG=JTF`}ZQ1=JnLqyvFT{zV{^A>*Uq*rK;MbAFO@f9`*~k zX=%T)|FUw&&EA^sZx{c!ZyN;}_Ke?H<2LHgu<~{_kzJPpk?A*=`D#>UKm_=CS2Quk zDn`MD85z@1b_pWN>&a`+$rh)s)Bd`~QmQ%)ivPwlz}PJWP)&mM@MMF444HeZV~DnR zUxMOc#5ryp5DJBK82aVdeV&=vZ#o)LnxPsxOAS&8$aO^FALs682N&Bnomu9*axp~3 z#N|a+e$=b+Z=h3k0WY>0n>({~_=FPHQLJcujJf)$B%!IFEE*n}j7c#072KmWHWWTFL)zrK)BSq=lqQ zB0CV_+Dv7(PwSr#;d^*v@p~XPIdVNm%EGVVU^5>HKnd7C&86VP$S|*fpMS~%>(y2Z zk3#Zg?xh$jaEz+Su#%BoiB0EeD?Bb@#1SLekv`L`@a4sau-=Z5G$OWbCo211se2LA z2stq(DZB?F5YxI-sQMks)PYF-yD!EoJd}r-^rgtrata<_5~*Z2JF@>?WBvLmH!Oz~ zB^)Bp;nuQmcft6>k1Qv1gvKXq1|UBlP~BZ4#KNNgeL(E97Q%fEpsa~Y2&qV-87{rc zGh-2*T66t-MWXE@P*&*{dK(pp2bWqa`PG?FdOBgZFWw;ycLK)s5=)iOfp_mD^j2X>cxk$UzujnDnibUnucw60d2gd)(J~4QxVj!k;wH z1yhtW8{l^LkppX8%+ntdjhydn`VDE-js(I8Z*nURd(^BRvldcWIH^ep-sRi7|Be_3 zkCATvtuh@-K`PqpU&l+HAqn)=UwWT1yc`U$Y!3hPKHIjK`BrcmOg={alBdvsZ%ovQ zCHLZ!S-HVZZVgF@l4LApenCNe@K$*kXMe_~1i)2{z;pr{OT)GA5OirwICtk#PRQKqChE=`EAp&~W?*77_SuJ5V?RcHOjkEllvS}-;iJ@>&|V#Jxr z0HG@dCY(5c_;$Cm|C_kmsIK;jFoBD)!x+Ybb2&{MI< zD5xjZ1DFOE-dLJXLkQJWMdOX~L}L0kg{h`Sz;s})m#v8-GY=dht|jM6|n zNC{vi{Sfh^$}%HJhkX2*DFC;(n;1K1+zzbB6!(4IYLVCpz%O6n{RB|J zu;#+(@A+iKpy&VZC;xZmzOP6TpW(9K`j%v6OlX!VEvZtIlkYPN+0c=M0}GLcOO~>kYW-Q#9Lg`1o9x z_DwKD!aTym?Y64d3WbG-Fk1Api$dJ9kFeiJLrJ_k*bA@<7HUrgycX;xgrlev;9b)H z?Is9jUr}7v5li+IHOjU=M%1wRq9YF&;SEF2YUXLvlwE}nI7`sh6ps{FF+9RS%f$v` z+H1ULoOQEI77qkTAh_6r_DOsEGC}y^_&~p;_Cu{uHO2!+spw-`O-+?E73z-QF#C^b zBppqga+b9}UcON!j@MU{!u0g8KAWS3O+kH~$Pk5aSyOV@_hlQHKL{}~H^8yjs4^1& z>&!bCVv6A%i@N$n(eONm7HVybI_=jd`*H$&VM>`x9C;mWkxss`rKC{)S$DI~{O@YH z?RP3O!(~G6b@-A{MS(D};7%c2tyxq@r>kpiZm7Z{6Z>8I1=Ynv&WHH>Ij40cy~s>M ztpX;y$}+{JnvZi$)}Iw3;_?+D9`o?nbs%aH%JFRINJ&ZmrWnh?X71;l_|u*baj^jr zz+GnD9`gT+Kt7VY&;!a`Yg#lWwB{9zpEpDNeG<8t^1FoS!=J$qC=et#k^LPViEoC= zd7ctz3Kc`txeT?3U-d(~q2`b9un6umP{iXA zs$4_%{`w{e`PYL|<1KTdsI@b1=NAc?g{rsy2){tv*a+UfW%4HMN0L?v^{jf)RB;un zGCa~z3{SmP^UOdV`&{3*w8>0ySvj`2^LBm~Xz6`;NY^_yX8tPBRJQ9{e{YJUFD|S4 z68~MI0`tKX(hgvI|Hr)kE9jK4sCpyA?mpIg3{)BP_eFCZE21)dCeoHUEWpI37+mbn zT~&H$1w&>Cp|kTr)Z>H(lGbBJtFBlEvKVd2)sEVQ!L-JuGobNw7hKa0yOD$$>tD^T zXYKw-PfZ~zCT0Nw)J~5kz0Dgr_U;-D+)oW3M-;LpU}`Se#v}-GU#Yogz?HR1`b6;mc~}DQuoan# z>Hm7z0~S>xq~aIR+`>tb^ug*(p>C2~Li+YUFJacm%E}w#1`_s_9MM1NV)%T)MYZ)e zg#6sd->8$6vTPX^S^c@IqrWwo(V&TTUV1{gL^W|c*JVU8WaP`-r>{gGuPNE?rB(kv zlA@tUg$}c7DUPV2s_hUNQTM7Vs-Lj8O>`biHu zG-C7v;dyRz+TO)CiiuYkoWgX(DXJGpGf<%jt%*Yarb4@1LndZbYdXbX+aGnj&vmU6 zXQkCcTi{1xL|J)o?z)M`TG(yip2sEyhay>B0w*}@a>Wc~H&F|j{QKYn}1L4rz>{EEvu z!Tp|Sbks!xGGZtA1*-_qeG0t#6|E-#(EsUGsuU1elH8D$IIr~=z0W4R6GC=OAak3t;mysw_gaEQVm>Y^a}N$=CrXzZSkJZh@>$U;B}X(OHbWMAee z8h&!FSAyF;P$owk zmt+bzjC`v;(<;wZTwwdbKXz-2wOeN8KmWE{I;`CaiRJ3@g{4=2rjf9wCk0!AtZwGr zqW|=IM_7i{A70+f1+AKI@;Kg%-K;e4(DhKI@^9gSGA?S=Rz{KJ{q|#Sj%t1}ZcJ>4 zryfKN<5S$C&^bt_*LeBRE*|-9u;71p0X)lOHz-l?c`P&?D$n#e)LrJourZsn27$Lk z*1hzOReDp*<7n>9TfT9Cf>5uxl~ebxXEh})41(u1_(cx9zs&6Ta8Sd!%EhRs0JFZ_ z%u@I$a8_Lq#~=7&(x(MNfA+Czlrm`)x6*wRdr(4t$SaVTP2QC zliA%ag0_^@lOlbdn^yQ?WZ9I}@WOJ}9H;f4c=e%-!Sq>G@am57bO{Zww!h}LG|0E}-T zD!yeXTvsv5Z*wwK61K~*JW~8+O2)~sz)9iR|IwA2IRDB;VUDchHMF6Oa{Ekpkd%Nhk>srBduI(x+RT zm-Fg#E!UVnK5%|^RtQs+I>A&~+3M{C1_lu>AyDbxGToPV|FCa>wmQK`e3gx zY#~?ZHk3TQU|9FlDbH<~Vv}BL=~HtI5%!TV4H_TBp>Qra2-ELZF$LMKCziCIgU#+! zk^?m10+8B9_B_$Q4pR|pj}g1udrY`UMQ)E!{dOi**}ZE{Kc3c^lEzTU(yEiDdg)Hx zFjVjqys4e)14SI%%4;qvTTmEdQenkkVvvqe-zk5x1+XA59%lIuQYDz3_uZojgS-9A z{~)b4QpuRd?A#;&Mu<0kO=0TiXxK(q<)vTbA3t)blcO!K6N+fbv^!Se@)>snVco@T zV7Mjaz4ESt5;5V@F^h8IV7latjJt5s>Z&k=6AX=z{{rF&$xKS$iV(Gu%^H&qMEmUa zc<4(2`2HW}n+VMJHEAB9?KsIxnPB!Jxr?A3t&yZu9~oABr)-it-|Uj=Ir|LX1X5vv zDY&8~nMrOK5RiUQ-bbFv74s*;4U=d-5!*InyXx`8_tdWIPT%oB@x!3%$ChjF_zuhK z+Bf~f>!QKWk7M!b4f^jW8bjmTi>LnW;g*27$kU~6q3=rgei)};1raatP|5U2#hl^p z{A;g(78QceNe^1dd5n(%Flp63_9uTQpRTsaUJLFOM=FlX3-5rR8h0DvOOiLr#U@w2 z>100^@5&<&BKQXOs~@Sn!h+xbD796|A>$;ux*WYS2dad!8{yVS#WQJAia_q;?r6yw zDg9;ncX9sE5xhyW=U2LO&-3(j@%b}Osc&0<-Z_6>xgaWOp($fiAseIqt~5KF#HVEn z53`>B^+V?lQ5vee zug(E^cbLc}n~uwc7vb*%Wi8ezduoU&?VGW6K6oiuAq=guEV$XTwN1@5m5QhC$LkJi zO-cBrNNJ`FdA__8Uuu7T{V=OF--kO;xGE1w2QMZTcq#wu`wNMD7lANPRcu?v&=q>G zu`yS(z^huQ+}fJaS6j(>E?lmR3R=OOsVa7!nvA+LYG>1PE*A^I@%LfMEFZGwy`2M< zyZ*nN03VBL+(lp%RYy_#4yC?Ak-?#_>>-`%1Mtn8qmxzt4cQARed%H9GEJZ1W~v#= zQyraJ{-g<}Z>?r{8dO2eL7pbhWJWfGZnB?&q^p~fF_@@B4i674U%Ys@v2Y>+Ln@lO zQ;3joEAHKrjTuQL0GJyvY>0%SHV-+yvRhpiCTTZV?E)o*0K8z8mrzssFL-ecWLrc! zJa3j3Fy8NI^?5pjdBLSU7a4!L;HpfJch_~M!nOONj~`Y?)sXx8v>ty0*U0ts^aPBT z>nzojcIW9^D^6+O+LD(vRRii=K3nq9mD7U2|6Nl)L! zR~r*=zEybjI8?o=--xXG$zGr1bD5az*;WvgJV+7Kja#P0IVH>K_33R1+R~YX*#2x* zQX#{Cxy3c#1#B&wPAv}#?2X$)e#KB$(tM1`K3`*Eyv797($ezV_V&vI(-O%RMQGfE z!Po?NrmF~AZdiK7$*%RG;z~*vf!dMYTYu$A$-H<;*_DmKaGe`8sgvGNR&;EE0kBsi z2veOzO!4PL`x>QRd2tQ}>cXHd6##W9`t;h$zanIJ5cUPN1#J&QqD6Df+ky?ixo^X) zzv>W_prvLfTNZ z<=e7Z*}Q)i-DN_hwOwP3RSa{();U1bdT+=G(vT_eLt5rNkE3#%|L#DRa(<()-cwG^`liE{L6NUVlX0LBmjt11b0 z;=tRY@NfA9<^OJ-v%KK((nLu+MyfX57Q~xAcz&rUuG-X@LK@s!+gO{*QCQCR@>e z3?g@q%h?J~y_e^EAuBY9Av1=0Yog;BIqf4Wb)6KS036a>##@tSU1^=Pewc^RaewTd z=~}nrkMnp~7ydb3uhz-Nxbj1!)!M<9agSrtAHY=)$Pj5HvfU!4m>?~eE;Y@>=6Guy zU?+Sas1{A+RNee9v-FV+mi&UtN>+25GTXUyp0) zq<~IRr)Zox*6Vs@Gp+r|FAS1sckV(K8T~MH*0JOe3&zYLv2%`KL|#Orz#rl0M<^R0 zG=))ScShI6F>QK~u`ot;PG4SnJ|bNHD(@PhF<8PD0%x*qT?TnFB1uxA`R@<@&K1AN zjn4i9_h5p&|Aq&0EWcI-nx{GbY|(CEJL={^Zgrz+-%NsOCL&kffPJO!u;QWEjcK*} z5Yn86by?0=6m|1{1mD2M5AFB8AIm~z)W8T#;WQXvNF3h*6UUE%T#Pu;Zb|wKPjr<# znj7?qqKkin4i@zx&}Nrj!9PEc%(;>|v*yM(2 zNEsBv>%QLe_2z@^6Cj0Y<_2T?_R*SWFQsDQh}{%HPV7|41j||i6+?Jf3mwJUx2XRX zX35|!OB*|tTf7s!Od-A`O(^1ecwm~+y{-S$N{nT|O*NZTu&@Qhkf>~@{7+)&l!n|A zy~-O%MME0NFTl_P@i0dsMw@yc$c|SMJ`0yi<@n|U2NlA?JqFJ(fHXZwsTje0UL!UL#4*S)70mOib7(4F+i!W_ zj21i?@1X7~TG;diZS^=gHDiX@)NMYlaj>%!dUhM6PxE$?zFAO+)sfE>s2yOv^M#%b z%E}h=3DlqnTwhXK!S`0=Tl}9)W^TM1RSz4MV*=4T8DzS4sO)2~J^UpUbco)$2p@Da z^n=0e-OcO**;%mmHaXRyNvOgefI+O{xEZGHClC>EV?_qeLS+Yk!H994 z*Vk8z4Rf!5*rn+tQ#Q=wKHuZQ&R*07_r96a(s@39wY~KUgg7C&ce>MH+Xc-{?$MLX znUk8&e59rbN zLmxyyy1P3>q!AEl5Cv%@rTfrQhm`IHkxuC@38h4&6$F24Zs$V&F#m9+*a0OJ=R9o(aF7(? zlHta}BRQwmH@7_5=D-LCpQYG-d1c_fQ*AfO@>b=%aF6bx*N3KGd#8g30Lk2*Gg6;b zp2ePR>*s~{ZfM+D@N1c$dJt1m#M##4_gjnGRH;+~s=m3uc3&hk*0JYboC1?x?K(6| zFsLbt_+a|WeM0>__o8vo)^4@$48Wf6xR!JtMXe0c#=Sg0ni3><%l5Eziz?i6;xXY{ zfQ&W@-Z-RcF#Q0QyJm*@_x^Z+M*lm_em1m) zMEEk?d;~#|t%Mca;c8xJ&A_N`x&T`G8j0701WORJQY6WI)>nB|x0o4#u5eSKlZ)C1 zLY|HRi1u~*=+=X@6QQimpJkRBhX5H90TuV#8wUV}ljm_-2N?jaunkfN-Wjd@1&MTd zeBn<~|hR|I?4v$lWu##Kfl4iPCSBE88y?UDxXa&OJ{SYV{HT5y!d2gFfD3J;U!7 zN8{HD#gpkz6j)f0tf6#8%=b?~RF@N0byxuvxxN664DHEDK3`<2^Wu!qLDJCIXRd!= zKMO++i(hM(yuN(E^Lk#p@WGVs&5s^gkqV{fm18P`Ns@TNT!}WFXW$U8&r9rNM8c&# zKQorCePC3O%i41SlE#ga6R&}MnRR3AxAVGt#p_%BN2Lz_Bru((!yGoJK#2YP1+bb9 z0#iQi!90Y46xL=)D{=!uzpF+o@?Jap0+7`CkQmF|`Kpz3Rj++QAoA^1+2}cC;LI&x z&P~~#d+Y@;9-M%F&(_vBZyr}YBy#4Mbc1k{cOFs%VJyM6!>f6?j`|o}cK3PfRS3ef zWp~j=+VbS1=x>h`ohi)JrR4y_biQ8xZ;_vgfx`nF;6A1)aL`Df&WJoE(S1- z{#Ys!DU??3Lp7Ahrst~3<} zF;~9CD6(!cP;^-CHlOgoxLji~cYv^2^jW^Oe}|->en7uzbeCruVNlBjgm*ZiSK|^7 zAqfbJ?)DRp4FCxOK`TpsbRPUDQgK&>4{$gdtW@zqRL|FymS0(5zh^i#^DVnc$*d~A z6!-Jm4i80brLOz!yU5*stP15~quz?qx6CEz2T|4^fCv}Fa&f?^DLB5r<16Nh<&VJx zaW)1a$w)iDwPM=3viXJbi$Tv_ccTNKLQvnRgYyj*DVLaOy_iLLl>cqbSExu1xuP74 z2g^dN1uAuWK;RMpaakJ7O|jc*dVshe&g-h9u8nWM$Q=B;C}0Bu{eC?2m7>6NX}zW| z2Yde;=-DLVP_K!exIbDTo|Rs?!{+!CVoVE55fVd!On?aK6fKJ%Oi34i>08Vmj^~L? z%%3fuyy~_XF|>_lgat&X3j$S~?pHd!oc=;mE;yk&i6MeW~ z5BMJZ@%#ETV|6$o=5&*4URGm3gZA`WV$0`vy|AX5p7x-RNsvrai6}C#PZ;oj8#28d zMK&sV1Nx&aq$S9gh78rRMBD)=ZK~K^RK?gwN&81uc@8_n!xrq#?3b!LlRwu^EZ={` z3irH(EgN3OW6nJp_;+5!vH>@7904+42<)p1zvYn?b<L{zQfR-QiowP> z{Ir*`#J*}vkP{y2?e$P`nk4V{5yivzlIL&x>$b=qMSRKD{M`ifEDYC}z@Gxd>)&_G zetEo5*tCB|TyO(QD5{x3QQ3TB6)xImI((w+9%dgYg2n5u#L*d2IOAUXV$_CoWth4y zSM`^Ls-jrj=T|AsDGxJl)So~YKEiwctMODoVu_U~3U&?w*Su=Y&K)8(ta` z*seFQl4rA|UnMb+RLO~i$rmk?CeT>~RXj1M(!K!4u!YX(bBiRyMMkP3@aPPTGud_j63ah1SIi&o*Nwausoe#pHUSsD zDeK3@3b;U`5cMz9^Ow*+xC>8@hkE-XVAyo9>}m1r@+^?6AsF5r2ndiVdSfl};dex& zlUP^qq2TMppHWqXesFqQ)EcN}WGiNjFKsL4+DaaBeN8|zykUpZ0gnK#J7-H+=?tzW zf@T;sTKGlR(FOW>)lSc2?z9W``NUo}tnteKg)wlcBfd~jESMCR_ zj=DnPb3>3k408x(M8c<^ApUAhhFDgt%}sR{9s$afW<(_NtD8V3U^_(C%>kAG>A4t) zr!+11;Al**jhMwM^Ejjczx{;5)g3Ekf8<93{x;+om&67wH$ZhKkWvQ8?2h-pJ?1(( zo;C{vPlB7~8rFt$2uU2)5-0v6GeSVpTMD~y{_z~Q+FFF?DV~-pT8MYX(k}-kJl>x- z9u9`LykP0ZdgibPU5E(^gB;c}*-+oirrfqqrmuO3t`t{Rhe-b;{ zPwC(&513Z3OU@>djT&XMS4O|*h&%;O^6_)|qo?nM@Or;|`SSKtuV>kBa5soLP-_0- zJD78Ce#0+6OtULwCaV0~4XMn^iA>?9?AOHD~p5zeq!frl4ktR1gW! zp|3IJfC64<<+-%2{Qj536~f_bcR|98L(pXwS}9Sq20KKP!+hWnz1&DUtk++4b3ZOf z!3oqwSsz37oIa%tmwF9QYVKLp3RDWmmSM>mnW0@=kh^R^QX z>{_Q8vxM6L1u@;k?6>ry#(;+`rIm z^#FHqg{VivrqbgM%R3)d+s_Vl2nS*Ha@r4yFuJ`@HehkxI7UAtD#7g6Enp9#@L4K= zRKxz3!zZ5`4MOxqr@%w|x~TZ83`n6ip6rX!sM1xy6U6mvXRVlDu0_i>tOCZmzyVNQ zXm7^DW~zN$ ziQupa1gSgO3>pa}{dR#eZ<+F0r$1B|$)^Q10;jJ|vp0QA2*3Lhoo~eF(~^0u0%7Ig zdT_byl4meVBYEmXH(11%-H2Y9Ms2zTgwNPi4mKDnBWp>qZVDKtku@=5u*r?E??=J7 z9m=K*-7gtnX6K+a(X9Y)b{!Mv3O>pVu z5W1CUrl-9??_qth`=T;wYent!}~ zM`Nkq3w%~GTeI@Gl4e3KFz21k3E0Fg!&j5e#P&#y!sZ70w6Sv{V0w_0d;cVgtDR?*UTiT{XkSSeZV^4?gRhrV9B~<%R@mmU!*a*&FNjLqfZ~|5KdbQJ>2?{vmtOZ zePI=T5MkS+JtD}`Hu#Eah7Pz(BwR)bxbDWQ*DZO`Llj$aG@909o+xuOeQ%g*E)gUk zJ`~7wyg}trHUn}T3)Ij(JqV;bn?EgkF7r?x^$Z;TTY2uU79VHHwcmx zv75>$<5*rDgJq)!TuJUZKg<&aCE#$0endyu0FH)lk>giD5Si`4N`t}!R`mX4ZtJiP zUS7aL;ZTM5J$CI`4L_FmUt3tccR#j`6W0`^AYv~gJ7+o3@<{({uuzK%d4}j9=RgV~ zci_76e*u3lSuu7k9pa8WTTgX<6?l&;OiBcsm=4E{XJp;D4p2>7zNkmKA#c4jc52#K zhWbFcf))&0HHC`>uczrAxB+&{7SB419F|*E^cCqv-$`)N74<=^_5mp1u4Mr{{3ZG6 z%Dpa%#+NK)dU}gmbSkbu6>E+-QQu>))9x*E7TDLB#h_46UFf^~0f-&p)jtsWfGz(E z#ldY?`u^hd8|%^1Ey1r(D1q{a^O?Tj5+K8nhrhlIZz$3G=;f&ORVhvVIjGfS(2jWq zSjT5wJsXF^9;JJKt0W9mFZTn5y`ye9O&n5Ey@jQp>XvS{Q}eOu%p29B+qS2+bIgY} zlb_!l$VR~!+RVWr;emb+;C(`L7u7GbW=;&?a{kz?I!CRh1Z9&8%1iY2eV2C%jm`@$ z)$m2EmW|M^B(*g|!hzpBf20ea%#T6xj*g+g2Rq*#gpxrCQih^yIT8#$Z%E488F)WH z+a;CJAJU6{3$)s0LT4&~(ll8JePUq5>#>x@wT>IJB`1B1B{={U(L?4c8XXWI+`_s~ zlzH*}3kK8aou@}odZ~XnZ^BypaGCT=y9wE6W_I8E2$A7+abssBg9YFM#zGYQ1%~=s zVGzN(g_!v+I}-KLPk#imN8)VMZubl*MY)cjHrI777npWxv|;}7l7DS9H#rFbDS}Zw zMwv}|z(k?0HsWCw?{i&GHHQ>z8#w%a%Mq<%$O*g#9c;Qj*#U2j0~=ezkus$8E4VFl ze)c_XSy{aC8_O*<8X-0R6w<#sg(Oc)EToK!E<-&>a>@NGYn=*uHst~QTlrb@B3K$o zqtf6u==T0vw;I8kI$L~fdb!o%YC_@)%xLZY&Gy>F<&lHXLoHYoLi)sFpU(Rc03I=& z?!?N$pGY3o0M&I+&6BGlIV_+^@Ff+q{2D%YC^#0lecO3vc^^Qtg1-Y7xhGz%v!!(I zn8E2oi256cu{f3|FTkk|kD>xc_|NjZr{FT@g=E9-R{y>@6J$eoE2Y}TuBEZ3OTIt6 zQl6eK0P>%Mz>Q&{-=2j^e{@^lGr4^Y>7Wc$imcEI0c$bCm9@_ufe-g?qYE1%!iB8! zZ-FJ2PXD~K4Dv*=ivkbN>Efd{Bp9eeKqY?~YFD%FAk__Sa4L4t-N49=^4m5|c^Jug z`!Nvn8i4eN9aG!`x<}B%_*{J=V3+*B72@Uu(p#>pQ336lb>YY9ezydA0@O#$15{(` zq)0%&G7N&*-%!R1qJz0@GbC{{tf)i=UZ1%jcY!{q}N8tqF#7TVlOZ2SR$wKi>puL=9if{Mz zx!bpFvkx?>YdaK3NNg}9Ss?+nFTjoPRV4kj4peNPFKSioj6YQ6PB3({e9pUjd7+0x z*az&XF>4gTF2a<8hzQ*Wn_&3YMVo}5>jn0aWohol#eAU9PWAhxnjCs&S)JeR%|-&p zk7B(k<)(I5jFnAQ4lqu4zO6^R8KkvzJFl4%5+|5sBgm%Pk&XZk^c%+EZQhmd^+YQ{ z^k;sxW(JPjJ9N(pSib~#OV9%seU=cw;?AhAT)`xY5W6EDa<90I5k}HO_Z6(B==^7P z@kOj(**+whYz-SUj5cbRkvp|ZEsd(G<4|Xd{%^QOhbU715B~cT9dRUY>2vEAcI?c7 zat4U&Mp(_ockj=Bl7^=?r>>SZ?JF>nkDwY!hMQX@UEhPyksIQ8se(c***952W~&sy zQ4^5UULKsHSBQcg&S#p^&8r#q$u8kydlE&Yc!2ux?P?v{7|To}oC}U>*=}aK@TS&z zkUHBwjy%30Nr)j$2$bi24!&n{Ep}`HX(!KG57%-?k#y4;&*KqQp`F*wph$mG7_&|7 z!YdhS>t7<(n}Fx4&m*5y1A^d;{W#KgD4}t&S}|p){~PEl)#ah>x(>Osu9B0`TdpXf zk+Ic`{P^9)+p;`cBJvoMB4;l?2QGb1cBnze#s?(;=Uwk*#*?87U-XOx3E^1Yw7mLg zJ%!Z%=c(1(%dFmV-T1B4lNL6oi+;VBru+?|NA90>LR+ zg%3d|%5}ow^LUcfq+P0kf+D8FGmZE5zVA&}syj*GdF9hDXp1vUsk#O|2${ z2E>eN>j!Q1r^!T_a=r^-SJF0u`Z-v)4f6&z3~)MW5U5povvLzTnW6Axj~KWY%tpZwMW4mWz_^R*l{Ps@|UC)&y1xEjT?s zsLB&AR>d}jSc(TA5$+jq5?6)6WL!#Dp!xndsL-EW&#vBV=``J;>$c1}VNJ$*)OQij z_*z)HbG$E6+|gHaQTKp+sX1Z>Me0!BqUz>^O#rUvGcwPK-jJboq2s$`KR) zbZp-TIvDw3Pqdj+jj*?~8uDMSF)`hbA7M8>161cqB?QUh5V)1Epy?1|z8+%sczd61 zFR&z!8H341)*-b`6!>T~XbnYGx}hH*Dxhxi<$nigUC`*bX32oU|ET<)?Tx?|=R+!x z;MlJ!C=-@fK9Gdv{BX_7{@Ed{f~QO@9flI1l?$GGnSHtQ)jsS#TX5w1N*YOW_wxGx zC)9nP@e`1udi8yFs-?z0;MJn5dF_L*gcy=*^T5kq{{lqLy=S2; zH5=GQjzd6>5TbZH#WH|I*aj+LaA*k1U{42`PTMtXGOWi*QA!cf$WW@%nSh4&j$uvt zL63f%Nu8}lOQBLh>?}pq$Y9UO=04LuZ;o}3u4uyy8!H>1hohQ}EIIe_>31Hi*js#` zyoo(C9QVgF)mWDC*=9)(DS>OaP8Q%qK9L3};S{dC(eGHu=g$52w^Af;@prh+VS>;= z{s>$>JX zNy7-PF2`@Kp>rz1D7uK4-jorjK|*=}&MpXN+>7&TVHWzm%u!8km%#LWI<;Hk*o*4> zcW9BgJ_Y#0G$legPbO&L;$q)xrGAmH9-R*oi&AOCM|+<$ZFJntD#5Y(y6J2ik0Ls^ zi*u2Ae-!!@aM8vo#xVepK#iY01b1Z2N|0UQeedEuCu&%Agjj^$Mj%j$-=$AQIL|j{non8Vjl4^*4yivlTh}+O(WcGv+{6fj`w8}R945%jYQFQVGUG#oamuTq)Hu&}-@iV2*YZ$R zcmh)6Z8wv#`hz_aLqh|p0>_k3>oklFdM)=$NZ-|uvN6~EvO+&3;0njv75HND5p~>EF>H8aAzS7$tq(JkHBuEj- zH{}wD3=#u9VPZgwD5*Lz3}kE?2(`y03tssoIQdwGp}Tq_dtO@%5ora{u!mfU>xNf_FUYyCXDgwQTYyv24 z1-_8%2Jm}VGn8(FsUN|#uoYW&FWV;^M!iSB($0Dz$R1+A+_t3*WCcU=-t8gm0k)rT zN-v}<+yBMs7qJZqk4Q)__NHtGiiSx1Ikg*+^ZJ|2XhL+_v+XncB56);Ir)i2W7*Ul6W7N}PAL!S>f6k||JdoVag*=zW5WU3 z_npJ~nByM<16v*>lEgAbp*(kkyX75F2oLlo@uk0MU+v;jjhEZDJGycKQY3+;jDYc( z^yn~1&)$GDKHjp(&7SF^di9;T=Z}1EKC}D83YqxmOiW^QIGE!hV$uPK{m>N?3EdMd z4dTnJ2K<2#ScrDcRm^|A`3jmD9L&PaW~sZtf{HMo5|_{xp2qAdpkW7d@bXR>Y#1e> zPU7h)N*Fg%QO@^jv{JphT4$@b$#Ad)$;A~Up5M9dqf3xqgqbrIdP)=B-<*5C+J(}h zP3Z!q0Vd$j#&D=rK)w+)PG}0ik81c}$*@NWG_L^*4)C7DCC7EuG8)M7z`mObA}&r& zPMJ)1law9jqh?^Z%3`ZmRONfSL9%V_D<2H)h+1uVSJyL`E9F>bv`cTy9g5ch8v%OP z+q<&=rsd%yIKZ%_zunye_6RWklXxJJ(As{=_rzT7O$P!HZrVTFoHf}BXFtLJZXLWI z?~nUGTImF%8lk}(i36@8vK+Hc1XS<>e*@yDZQShrFVBYnEG&~rsTw0VBIeOaNcE1d zPQ4+{8GlM(Ht)@OUzJh=w0RF?zAE1Lyy;$A@~}a#Aep$ri&uBBe70cuKbn#Ag_~Ut z4&}Y!rcSc#EMUf7fQ6yIu|Wj9zrQCAn!_g$kUZ=vhctMY1J97QbT#N+bz^EM)a%{c zwB!V9c7A6&+%vykxh_pRe+#Jh*a4&`>DKW0_#AL2owA=|`ozHU>%f9BPc|nv`$UoD zv;fVTbtnR}UQubNO9`X#eh za)rVEjfTL-8un_W{~9KQh6f8usrUjg0sB=px4nx(66ckTs9Ww{Rp1%>Ech1pp|~3)ZaN{P$eKRe>SyXRFSD z&mh3+d5C6xOZsclqEigq?Af#2laGda#T#;MwC921t%Sq;r7x){{t&OD$k8ZH~EGy6` zK`MmllLHJj(jTlzj3dzmgfad5P2k4|bim{#(P;U>PQyXlA1J}6)ZW7y7#d1?_ipnC zv2Cp~#V%scbpk=Z82x6~=C4x$87LNxj%azfCQ@8I&7r)_gL71n*9OFD0rd_akf|s? zA^}GBUzRuzSz-#`XJ9#Ia5x)NxJ>M@F#SeRIL~a4l8Q=K>1GUZcF*1G*M0D>VvQsZ z=HhG;&31NUf=Q=o1!}@^aJ9l+g>8|+MfiOl+aOA&$2*tI$}4EA;Al2$YGT6u_cXTF z0b99EYS{;@uunz|fVsCxv||x2-N1p>!()2LZf!~BS#w?hL>oX;-;p+{>#t>^I1&k% zpqy>>FE9NH?6r6u8x~k;xqen0q-yd1PvHh|q)cd1;mKDh2~jgd#zO^<3PI!6u%xsI zii++K_1XPyqkfE98b_VXZFs6ie~IipM?8{9uqG~VXCjq1T zV~P7>!K75sC_*FwV$7;ym&_TPx*O(&!)XQ8Af5s;1PZ~{JFl4S zG)5l?wJ5s z><2Konid*2F)F|Ddx*xQxMDM~=K?5caYUKxd3m<~ZHHn8&`oDOG-d~mEHbqHH5IZ* z=i9-1qv=F{SSdax`1$82hKxe0mGu_72;5M1hIbf{)l-52 zA9}Yj{O3)?(0z%PDn|%@r5t})plbysaWd{@Y<|CKm576#-55}I=8fJS)*OVzWp^kj zpxg+f@XZz)Fr+N5y}9a(yy`uT>!Xh~esQKEfvmBd=Ck3LH~cI>&IB|w*XX7nz_jAJz9=Q^j# z$r|=kaPI}F$7d}QLLV&w8OFx9%oqPM4B%!$H#OPa8({l!(?g7Ce_V{Mv!6ft0dc}? zjU}g4N7{!nrb|-6Na5>Ef>urqOt}p}A;QNOff&R1S$u1!FYIe|pN+iPh=yZa`W8O> z5TUe1B3R>b~yTV-87a;Hp<}BkaG*OjH`P~0mC2{Z^ zC=_@>)7p=Pa16v-E%(4n?@|^sR0meE67W?#isRe2cbcxct4L=$8-8HP{jT4!K-(%n zRx`U_iqODrz!%0;Z_vMtH8P5z7gew4^Zw^W7vTBfdb=U?qGrqu@p+jn`HeKg=UsKS z2(Wnzt>&tkZ=%U#-M`6Zuy-O&64nwU?HP=r^Z<4G*C|@?D{hv82EFV zC<;sT|Gb76JTDS!yAHkP8kWUR$!+*P()Y8X7^TKDbMqToCcQw$5gI zJ5(s5A$;)=#t+QsqYSMlk5o}R^xFhEGkYOusI;JIKvosYsDj2+vz^cPpO>{jW9n>I zfnFAk4n%2im&@_%)9OgO*w~^AnPi(EWYIxG)?Mv1%><^g`a(Y{R1QD zAmH7AViPp*pwJ=+N-1bboQB+{jB)5?4QKg6|9P1lbOnu+0sj-)a@cdUkyzSZ=xcYS z4K+@a4Z25lNhmc=HB8Kv(8v`*$MxI^t8O7wLob-7T6@bGK1{g8Z86v0s^Vl#(z(t~ z5(n6gVH0SPd@3NDKc>w7uPA^Uw8EDp%Bz?i)MXZu&Rn(|X*IYv{60%Qv9js|w=>@T zw^72^2%?|Jp>0nV7d8Xh7>Fm|tl@9K#KK0UN4CR}uS1JfKxfbjHv$t1=xtki-pR>- zYXLwzpjjkG`aio(>WVn_>ZK3z0?n?uL!@fXf-A(T!Zu%kxjs$F#RWb~x0@vQI^$Zv)rD*LivnwpH7SVdIszHkt z2OWs81v%P(Y&+=3BJkV{1I7b>1z`D}oRg0gTTga~zCpf&CBA*@NU2dJMrk?er#x5k z(imSZ#d}hbSY9HtajW9hEJ2o1%DZs4g`@)7c(c=Kq(ToiEC0%N{MQEjL4GGRBK7DfSDJEu$=5}~JC@dBCb zS{7vT;rI~C!h&Tc@F!^zB4;a_el6PK)vMVe-3k7s?@=)qE;QX>O}$}_H;P4x+>f|& zjoH%Xr8>K0BreAeg^(2nihm9UXqGRJ>tx6Z4z7wFfa`GtYq}cQIf*)WV06^EF=CvP zE@|%LG3jQV7}C>3con#d=#)H>GOeY;b5k`^OraCRIedFlhgC`1)gLGbe32t>@MItR zc)!Qg%w#dO@dM6pW|f{TX_|SM^h2UcvnE1<^W68<&58eLW;_7b2oo*Z+H>ejU$H1` z-y4(}b4%&&|5bOR--+0gIrI3dOG`_mr<$Z2& zU9()qya9htZi+*M|JQfNa(PbIu>4uCTpNpRH6TmTs-LQmAku8Q`6sHx1lJTS`-405 z!he|I1i*IZ2zbgX0+W4@IdcgG3a}oGvQ23jGcLvf^A%5p&B^`;hG6N@G`|v>Vh4ldZiFC0*bWUN#m94?bL-r!2% zkqBtYCGrr~N>f`SHXFs(U^wI*QCzFe?B0v2@WI$E5Q7KAHe-{?*!s0RpX0HcLAC8q zPt~ls{s~jWof;Zphd>-$Un%OO+}%_ZhCH_GcdO_lGFFrMZCyt6)M#(&+V6keBZJS6IbeXw5_k z#XcJiQIp{Yymr{ykFQu^d)Xgb*gNlu^9pHr@Q{)Ul2+cCaO$Lyw7ooM;aFe+6xDQx|+S|GoTmvYB^bcKy&0H7SA(SLpaUK)*6 zxinHi?YTDG?W$Hj74>Le+vInQRLk&B_%7qOA#8O98*}W8XgunmwwwR0v%9_p6*F9?VvA_qzg0`a1oqfq zTRF${uB*KHw%fa4p$xeW6G8=Vn!Vt&rDmho+97OUS^ed;uz=R_n(}an#vK~!z8K=n zI&ISzo8!&+ai~*G*rmxUKpa~vf#7?<3;pMJ%0bW3Ebc(gFs6VXo|y96feXL+enuYPy;rC`EGAq=-u4b$P9E26kQ4iL@V$9W7rj9Ovn7wh1$_-U$}@A~Y8T1gG(P&v zLA1UAyEXpc6XgH@-?%`G2;6XuxU~Dv1O@Ok$$9gNPYSgxeZmqm=7UO<8f%{^`_rIyosi~&p`-x)y;<*HS%;h1Ukhchq-ioT zTc67n%YvNMn+loR4rn9=mCYxyUrwWhFx9aqgf*{&L5meb$NeMcG421&H1u&9GGJ?u z=T~yt6?D+suFo`n_GeiB`SrVb!1VB)I$qDo^wDD7>OLi94NRDUZbk?o3h=&>gz%-aK4w+B{<&re`hb^C@`z?9sYa`a$*L^O$N% zaRm;$BmNM=k}^*gdj!iiZjPCK(;Uk-0sZrbhSLfUFVVXA`CPyN;=UP@gPO(PMgcx` zJP};*Bk80G{sD}%B&!`veUfcNSXvB>kDY46lX<%(;oN8h)^>`D zEMpd|0=p;g;-qB&YNdmRlXJU-Sj1;??pJlM{c3eC2&A5l?qOT`P$&PWO2I)p)EUBUomglmD8sy<$%J^fv(H|X{ ze{G;QfSzlH(63f5a@~%&l0z%O)F%X7s=Gr>6hisqHL(^hE$F93{k?=2vjG7f+mB;M zn*n&9$bA2kR9JlSp_ddVL6(%ayg4W6pT$SQobZWs_SBkbYQ)58BxAPjxezRE`u!J_ ziRE=cr{R&We{J41aH=VY%ril>xqp0(*d(y7r^KN;oVe+(9Kg(mo zi(d(4$3ISzwEPBSY04^Y$o56}9Z+Ya;4%u8mns+f+twb*u74S$fb;`^>Bs|h#hNC|rt3ucpR&e(ZPq(34x;jKSp4Cy@^e9JR0{`<1oF+&l7- zA_TXW7Ng!|JZ`6}nJ)1i!{u=h<^x{NE|&Y>3Isn`&X{Y5zND6U6~*{DmdUU7nu>7h zVOc$9gPXf7G~AUc8J-TI#aKz;bMvUVEY3M(8RQjsGWm z0LW}UVg?vYZUt5VD#H#`fOr72`xvY6Hfc%&wxrQFF+_Oqrsdoy60&PfnMwKLZgzBS)>ckz)QrwdK&oMfUc2GKpb<=Lxwd5?a z#Im`hv20D7uG=8;! zn#D3|^j7Lz0_p)Pc|b*Q2Wif&!FGoC`iEcrkCo6tT;BO8w?*kbd~tO`nKt6Yq&%}pjLrbpY;sA|Tph817pc&)uV%({;^K5$S~6jmCNX1xrV#N6T}zv{%l zAVS`rC`$?ela+0Bequ?OJ>{=@<(x^8Swto1hP;|>Fi^oYwLp-iIk#Hdb^JOo&E$MT1|O-CQOYN6j}iY?L~4rnRoqY z^-Vbg19C`?N0=9yC=>MSMcr1#??xGO9%Ft0oh}+hS`4GwBwV{XaN>nckmav> z{KK8!({K!-dhVB}B$6 zy(~8yYL;;`iy6a4OI{k&PZ#1Dm$s=zlSt(SuDSKD>U3=_D+e zr1cN~37OmqK#$u^=kmxGfY4#~g-JS19Rj?}2CM)26ovQ<0Om!=JR+b&;kR^^DE=b*EGiwO05F6&s{B2@d|JIyc(QMdHFH{ zOT*X6!SLbNH%t_wiiEowLGlD4-6%Ny;#7clOPKEDwGek(C%_7@6x{i%{sT1h%*6X5 z1ix)Cd;_gy*%jsq#0CB_`82TaD58ZqLjZ9|(%b`$8Ha~6nQhh-z0ZlI9Zj?WgAgP7#hxucc$ zZRAPsJ2z#8HA~W9FfAu<;5bhdU~O|sXL=Ixsx}9tS3F=8Nl5pW*t>uJ`uO8Dl^WE* zoRfL3`!iO!xY`OD&Ap)fqJ|7A?8K?g4wGl>J0>cj{KX~w86_nR&mO;K=s+(C!4A6m zQVbmfi{|-N0=4Bu!Mo2|PN$N#_!q{O9n(EdnG)S!Oz5emek*x+B)V%Y&A9Uj4-pb6 z|93*<371a+w#J&32ZTkx!dkx;GXm#>l7IiZurU}vNi)HeAw7v;UH56@z$Ac&;u{g_ zPo4n^{MG=t^tK{-$&A+*$$BSlG0GfNWRjJ;I@@tsfOnl+&kh5kGGvlbs3>9OFL@@d zl%DT?>sx=*d+C?W1d<>02X7+o%k9PUvoRe@0u|M5p*%T)dwBO;RQLR~<3q*pDeQC> zRg2I@16Inn6?CVlu>Sfs9}DyX0Cdl%G%CH+^@)UH(!U*fkZe>Fbv{{ecAoeFZSe`y&|D&s0Tzt||C`6OW47uvMQP;JUMDGb{hR1F=0T_worhg}V25;qBov zQ++goywt;r!x-Y6s8L!d)!IxoxO$Ed?&uuQN&gU(-fp6m;h`1IBDeWiI^aZo6mPGn zDSw*k3+}9}>2Z5!%N;DfT}CYznyU(M5gk2Qj~LT-HLlD1Ueni`)b2+gbn1FlSM>`Y zPq#zxYn32hvYe{Hpyhu|zbB>(8`IW0)UwR;BiZXIsL|KU)~h$dUK#K6q^8qBeabhV^|ZMIlSBx|EH@+%z%F!Lo*`PxDfG3ufF;9 zXlxo0b7X0TV&WN zZBxwjL707XRn#e_!NHVb#8(en;cRj}c=o=JgC1=Q&(bi3OB(Vg7pLEWx{Eb|{~x@Uh)%$yyOWn0is4^rw41Vkk58SP`rfA&RV#|J#0^DrQ*u615#Yb^omf=sAA} zo?^#9v2-*rKa8R#@VT(xTq(A(JE+gtEmcsBXg4r4&+W9v$|FxLL}Xtl_dFU^>{X9B z>7WC><*voK-bt7LieUN3zl|Bj@02s7khPW`=X4XhM$!c7);vitOgtboAP<$%xbkle za`K8Rh!!4ZCa6jO*6H<0N=dEEV@bi~IgDJOQ)arlfWtZv5#CrSau~5d`t_}bfaYIG zH?=!xj|j6Nagk?07F^$H;?blnJG*=6%RFNsCiTBzXrKeUoGV5X@Uu+K+y~gZ6M;+# zzZT`A<{yy6Qr_Da3hxR7;W^`jyu&WdQ!`fF;PCcgJi0S1q*6?xv?xQ2I()k9k4Uzd zN|!kOQ6|#7PVB13_ShPxCnSeY7TQX7kcypC&6RnADz`~qiKQ>m(@vC);!r*TVCV%ZBe*b>3~ z76@Ncxh!6b~dq2JyQ^RDL;%o(lts(QM!&QCe z2?mo^BFYK0&U#MBXnzmJQ-q}jx?=C$$IMqgd~bc1nJfBKcYDjC=E&Rt?Rpz+8T_|tLT7biSS!$Pqi|jZBo|(t>xGX~pSNL^ zmz17%0=>5154Y}tL(S>nh}+QgySn6&#YJae{+{U%PtMdQd0%cE=HZLL@{laOieXL6 zQE>dE*2ITKpj{x7C`Gg@NW!^#Vhf29w~{FV-Nr+N)6De4PK_qE=n8C&>(#-#m@_TW z#QEqe$kxWLkavTFucU5qVqaa0X*m)O2dl;a|CG&OfCdkk#*)}{44hH_!o2l_hA+vR zGvTjGCIreJmCxPS{>NGY31wgyUYapWfpB`)+%>XDvC5f>OgC~`&XGHz3|4@M=cX%< zBEovwhfvVb*WYNeNg<)yFUIs???e5?#8gT<|&cxCwdj{vzW^oA?mWhh*uf*ME*57;Z?6a-(+=~TcK`m=aEl1hh zsgZpi;+HdeC#_k*Hb*F!!#<_*+NM;Kuu&?bLr7H2-`}0j18#u{J0q)qWLDIaL9(jC z@-aHo%=28N1v-}@m5Z!pWD^|IOnsaDfXa2mpAq4qt=Y(MpC+#V%U7HcOPp64>~ED0 zs2_as&?#iu(;gda|7`mFNb#smuPT114KygvkJ8x%9BPz5pKXWpNS5-3>_Sc^GsBs{+r|F^{{v4ep= zod2Qu4+PR>&Gjk39BNc7D>02=_Tco6j#}&@#QBnKnqMOvBZX>zkcMYXAbwY(Eq~O% zc=JSj4=aqnI5(k%xF)ZdUqHhOK;K8!6Tu~PsB`DwfKS?yp|BtU@#C`TU)u*ImWae0DXI(2F+9p*^x5-Fw>Pf>`l?}5kSB4O~cz%HxG zeUn;bfS^<7fUbl5+=bZBY-=?20fp~=pV1K&=E`a-g3bk57vHT`Hp~BpIKl6M;i=0z zQ2xF7pmB#lDHtAGA2>b5M*0^W`$>Rb1l&{+p17pQL~oH$LJvws{Z&Wh zghR2{o-kjeh+4%oJ#L6Ul`$Tz&&E?_IvT;Mp-{D7HSx{91gY!N^a3h>JDq>0c^&%x zS<(>m07kdM85RRXeGy1LMjW)k+_u+Y#}NQ+X$~NQl9Zn-%UBVTFYoHr*f1@;?Os8- zm@$9qEqR1sB0wWl@lwp5u;9@$Qc~@JacoLHS?!XRGV`p{bR$I}pC&s8kx65K%+Gbs z`u}qi-vQAKvn~6pSN``1V8^1M!<`&RtMa^MGUL12{HwufdsHqn(9k=MOd5r38XXd}(mG}YBt6YeO=Wy>=;;g!$V>S~<8Znj1M8QgDWH8k| zzJSi6SpTy|@WyhGi3$#g4E-xaytLCO9I%QrPk^uhuDQZ(l~z|B3$E11$HwMX8d|US z_tX9#U+*1H_4~*FM=CUM9J|b896O{GLdLOYBq9nK85uc9kv(#7viF`5A}f3Eo!PLm z_ojZ=OYgk`=yg#(eN=BuV;9PAX2vp{fd8D@x`+2%WU1nb3 zC8391X%|hxQ3P`nQiX+XlssK4pX|(0%P$D%<>vg2raFBL;nT0_jSz}T|GM|YK9H&j zTrLLcAUg4%4WSN0MQ0Fadhw@TV0jpu9FcZ$FA*b>98%A=jtMd8t#>XQ=8O%;()X*1 zDBEEl*x{1mtHnHL;^+pbMaxM!pMrdhaz=rjx%4s)k$sLEI?CXu*aq%;i7U6%`{!b_NN-H!r6{umj(X zD1kfB11HN;@Hu(%BDi#l1KNS2wAqLI40vROLxt##nP5SRC65Lv^u31?@SR!U z$<5o+bxt?T0=KO-e4N5Q}gbYS-y*P7^7&dR+j zouRfJF-epee_iCx9lP{aV2B|HMs+P$<4qR3xwd~RBefUa0ew>fV8 z+Bee4RI;BLu6jyn!Wm3)^%$I6Sx~AUnQUSrWgn8~;a_yS*aC}CQ7)($6O<>p-PA%Y z{Gt?S4Bgg`|Kz7Wc@6ic?R>boOxh#G+xi4QJs41tZ$`cDpVZvk`a#uKmV6C_7e<%B zkdA%iCrIEEj4;O!Ezvzc2lxuUWIHZA`@2Am)o=m`Q<1l-Sm}fqW=Y&7{*&B>I`WvK zr6rH8$(*v-H>V`RTYd->frmhkaQS8)TGSaNu*c5R+uC|8wWOaR)SLGp9pf-=aJs-A zFP8l^_iA@VAPvR&Z%DHQx6935uSD}mU5yK`^46%;;$l~waHYU!JjJN}=P&`!oDy(~ zhReT#c|`$eil%Lo_4b}`DZu$G4?>?k8jO-$b1(poCKIQ^S-nj+`cz&;cZS~w-%ah< z?AQVZFfcottn@@oz|=3j%s0sc)5aWf&2b&k*LUvSd!u+YX8?as_03>wcWVUcsE!Rc%Cg$yC{v zY61jvGZ0D&4WSu}n+V?9X6uZ%5_npo+jOE9@~S2vcF@d-d7k~ABuNU27>d6m9ykm) zG|*H*Io|1T{pB%cR+0h}FtEuF22Q<$V-;!6q5IMlX8`;yIXK^NOe1?hSF}ut_A%T< z*C1$n{JDN1VAGcE$3xS%(5PB-&X!t1x$>yU}D^8NYjI`3Nx z1$Xw?GDWOD?ag$)U-es8i*vGF17Xg2y89*E6y4>^W!XUP6JXr9$Yk~bFxGlj_v(*X zMH98XS2LeZT?dgIz+xt$mUwbTb9zDCW{Z*Uxpd#>)`f^8&z&D%frh zo7{5q^I(@dMiPO1`pn?LQF2WktLU1q(qfOZF6mE@*Y$2!k6VY&N;qPwr|EvJ(RGY3 zJCxX4HOM-y0*UK}%Py-mN{fky(4?az%*jzlBM6!eZyah`*#SpoJse_6+AtYb!#JRyx$-|z*?>kNg#gVe5Ra}>7B>juSTZT}oLb@ls5>Pp zE3h{fb-Z<)c=&&9Tm2d&d53~;W-7lh8yA8(3Lgx2IUEc~L+d&eOFHo$i26oD$cJwa z76zF`odBn2Xqe9X;L3`lOjD{pCwiO|A}q8+8q!MIu0~+2RN~6OXqA16gX-tRf(D_ZS2gXjK{)G8*)Bsn9|Ykx?%s?w>k$HRf-#*Br^qz4NTxflcogmsED3`**!x?w;F7I49Cf_6&l7LI}pw=Y_%CQ-|omBLC{g zvy4ZhmH^uTlz*l?SQ9p{YOFPPjw}sh8S?oSRS+}yA}+a=T(lCdGJEi-CMJ! zsai!zB`|0f%q})L5CVJ5Kx6C&=X^ECY6f05lBLvt_3s)bh_NMau$bR{tQAi_?4NU6Qel(2H=#T!{-O1bKn z?~a~<)EVt&EooJI{*Q?y(AWtx_^Z?CAtUgFSZa%xlUApyJji|>efhQ2*+XN-gKm)@ zE32o^10<{cOKgy~?99Z@r{}Etp2K^?U9K||?6-a-ypAym&EE;q1CUToSkW$Gtr5EC zDI|;`c((WDXFjSvZ>_0iFzYM7ey$vQHsK3TOCWsYvhwM`^;#Qn1S*;A_P`r7;Rd-y zYt_?3b?)$3g!DQmQ?N(v+!zo?eXgfn;WGn4!-XaT_;2pXeq~4uxXmpd&{+y#V==7Z z;Qai&QhqJr01PsZ6R=K6%`gz5ecEL7%%>_@Vt~}^Xk-&$9({YzY3@rDJ4M7M8M;Hs z#KTF*BfvSwb;XlOjc}HZoE<5Q;bFbB11>$Z@xfBbbE7#|%n!-LS8%hr?mI;G48ddK z2SLIGyL=z4F!WNdZ+1Bi7T(;O*TYaU%b}R{$xl=_LZCD=)tlsJpvBmaxT%k^+w8;m z#>4)@ErlYR$;L5HxYKe-LRC9p^l?a5E~Nda_)I#;F*DP#AX2DAQlpSf?Lv2!r|0o~ zUeCATV!Qmbddk_-NA)a6+o^Y5>s?4vB=H(d|MFbxpmwcJ*7+W2u(+{M7`Q?mAW7a= zx~czbOTPmEUY3g?AZ?Uwmq>}N0tYOL%_BhBB-TERG<5eVm$N5Lr8_o%_bYUB?0s$$ z9b|S1=9T___F~Q+{4S;d&{-qW0jldK-^Mqhm!F|}QS8%PARTQjF30{0KwnYQF~yn2SIbOOHlsE;?wqrJRz+?JvPKQe-DXo zn*iY3I|c}ege!c&NbR%(pKqyC^us8yoX=Rjf-%zHoUmH`Q&My=f3`72E5Eu2OPoO> zqOtzmZh3*P7Lp>XH%W|NI}tEzBndQAVv@R0 zda_*vguYou+M#jr1UssOgYqrQ5v2Xp{FvuGM&$^jJ7QnF`T6%=P#CMr%gM%yt;h^o z9q6=K?eN#f^Dn=5ot-Tr5|>l@iX=Y?LNo$jQK;@ZnbLo3mz|KrLY0vAED~~-jPC1I zdmWYuH8j>k`(0pNvFE}c9 zMnfQ)!RfVW;6d3fQ0EN%baf{tU_%h95ss3R7qYcuDzbM0%%ZY+K6^g>nhMYfc9EQM+k3bC=X1WN70`2=O*zw+r{vwdCFCqy2MUUHIY;M8B zwB47o%NF@^bRwO1};zjc<1Oe_9+&Y%nTdWuLw6zH&tUt(e_EYPY8`5SD%#7_M z()A(J-rl=Qg}eWTl0^(@Dn*ilE&9g$uK|QZPW&zxZ2POt)__*@gt+;|$1OUZFY&{y zC29%d1u*Zr`Q%LE&}rwjCxbl00a!d7y&f9B=-_z<39)z3+lBE<+d(jC$3!=!H|!`I zDxzJP({Zr3&Bf5YaK(z@2#@%v0ROz&zGvs!P;<2JgxYz34ut4U0P7h;X6*pnKKiB8 zklNU^cw_od#mqI!yW6xj^(2-L7~Ctmr41|(_nbnt68#(?S?&p%iPf{SuJ>u!N6#mG z0<`TYNYQ;cCgay`F#!Hkg(<_AVGFywiiQWCJT5h;hcIUJXa)WBkK`Z+gLu2#k*}oj zyB;JoC;8Gn;QzYQGq;WpEtod?=iAyPkTh6yzQ+p-qn55cunF;Cb9)}-QV)01>@Lju z*&2gupe%Z!tv$D(xCx%@94Gf-By{A@ z0-tglgK`f+qL)KvTRHL;54O|miJnnpZ34bg-w!U;_%|Zk_iQ1E+%dRf23UdI+x;Id zI9Gxi|&Pq%_NqBeNQ;Mmw$*H8y9SiO3 z8F~GEwH2i0s5gRe_64}b+Kz!J&Oh^GtpJ2FpyEAf+B%kt2ZwB$`{3oTm0yv-{(Q20 zpm)bEj^Z7v|J#@47i<3d79is?hOX4J@p`)wgzk}ni?<@i>Lgh8(<&01<%96p0b8Y} zj92uhuvIh=3>vu%uF9X?_ZT8?QoR2&)+6>EuNCMqOcM-;?s5?$K|CJJOSX;>*=Uh( z{V2;Lxogs8lNadh+NbofZJEz|f#ft=^T$pOO*qj|c!ZdOYO7!HJ$ZNR+U-8(w6OBI zeNk)^6IerDsGb&TGs%9ETmYj|;68VH6;O&4clRKeOo4(4$h%qAg^?GrUGS6SdL2SR z2pG|@^T+h%a2Id|Uo(lZX-sJAAYhGwdNH(~y8z%#MZPfL1lluV-6Hd7@%^QxV`*eC zj6FW}Op|F4-}E><3HPk@saOlNvU{EWZ5wl)22Hg_`-Hn+iQ9&-lpNpbn?o|lb?I>zlLMESFWsozsgn#L{sJ~xG3&o7{j|@mQPeVS&CL~o_ z72nB}s!7PB9Ie=#CY24GYnNOHwM`-+jxtERr&7EC%oRk#gVVh0)l6N2uv4biW!Ja7 zF0U7Rc7TUmL6BRIhJwx+)|BWhF@WWDkAU<|87x*(* z-kHu)YheJuAda;Fmil9_+F3?6T9JH@3Dx5M%(oRK7LYU|7_Euna~n#A1+%AQic=O^ zoN@BRb5kXbfV9*J5^VmerByqDjXKCrWfDZhoNNx~o(1qgD#yJCD^6O+!SIz|z}a~6 z3GA(p_5_TG02RWO=eHz&J?Z@h>ejZ-weDC*+ycl|@K_&A@7dSEWR;r{~M&+)Q~091D(;uDec=emG*chxfJJP)a^qkEd@#pNz9o0$_R zPmN1`^WB^c)m7%03R$lLWW_m$><3@g!%BA5Z%*hOz5((C9fyFKW1HhrnFm_W)VHsD zy*Rq}Pwu4^N)QOQ%r8l@6yY^rWdY}v%93&=MrvPUr#`@qao&h% z5^h}T1Zh))24IYPl_Imcp!ccQ7qHvjr+{5HbjVP~{S^}iL!UZeIou_8I)e&~k23Fa>u&5vzbAm7bL)jhK}XW+ zj;DH#9dZ>;D4eniItLQ4GZ6i_tBe=G&k-QJmfZ4!jzya4 z5Hwlw#{*}f?Cd7IS0?d=%RE^Ms{8vF*F&&EW}*;d5Z&+@1g5c$EQiu44e{2{_`}DA z0E<(a1fh4LA&+a~LWxG{I^Xv%6>V~uq}up(Z2CuDf%_El03_a|9j*vd+2y@w^I|v1T2T{^rc@i#p=DmCz5U&X zseOCYY6YAHIJfUfy2lQ@qNGAUTNZchjm?jOmjDeJ$*w`6M_D@3NbR<;vT)MulkkRT%!`LgoaUpoRudi}R@h_!^L5ArxRd9;W?Wrk8^D z`MRcKi@e_V@6R~Ap=7}fpx|AOj1;ziBB4JA2u)C>-cP4$BX-3CV)>QZA0_j0gY4Kl z($r>-R-j=uD3tbAuf{_n?^uH5BmG;pNv*2=x1^^R0WH%w{>Ap3y~EktUr^PFh#oHw>U9;yQG2WUY2X#!t|VoYvj@3{UU?q- z+Qh1Z@+#Y>tg3#!bU#8rrfmR2H+(%HDsuj3*od8H;t{Wd5Dzti6fB#-_ zr97%5-CE95?DybPoq^z=tDl&S8gg_#_y~J7zxE6{J2~}D;MI!@a?2D$}e>(b+#vi88s zo)}&(foWlqgq<619JTg{5-1=9<`k(h7o9VD)?8_&5Us(edREU}bREsa*XvDsS-Ar< zm2*&fwl?zP80ZzfHCrm(W+1!M0MZ=4qT0C2b8JVz^zYdx%ED{)Z-|@yvx!sehztI4 z2T`$L)Ao~;<3efANVP$r*Qm2xYIPLcvg09zoFr7=97~uLtvpPqV)y(p$ISli=h$V^ zp-SB}2j@){WrP5S=5T?%`G;B^sVqlvrL2J|t}ILaDRv+62pl&UXy8_Jm#&rkbDPtv zoP|u1IkP8yY1@P4@7zCup?o9?0QNGSY>QOi0dm+eocJq<5CkFhrCV`I*vzv(rv@g0 zkx4=KC(}+#^rK?dfwUR=K_ryYL3h8V?O!AOu8c{Cp&tc5{EAP*E;aWQc-1H(mSxF< zpxSi^W4Y)!wtDaZixJ-%qItId<~_J&%j;C}kWkuK2vlyy_F#EGqFhZe-td?2Jh;q4 zA;F)Oc~0h4l~1tA3v$XX-$^?roL81E`9H5BzPXOiMB=4I7;I9i2;$Up@t{7$V;FbuAAM`c(W}-dMpD z1{8_x3YS!(+))`A{E%XIjgJe$BASQVC|#>YwR>J}x(M>u<=9I_KR+~MMxeCyOmF4M zEN!pv3R+89;O@KjwO#Y+Fib|gMnV%3e$>%f|5jiGpv-6J@?-P@4jKZ_GuR*y5Kg^` zdb6)ON#d~C)<-z=iM4(kq8GBO0LlgfWZ;W4AfmE+9rCS$*#mzV9q5= zY>gKJ6fH0!^74W9JX>NyI=KG+=UqM(N-3E#L&H_|f!=ffJ`M#vF7sOcnUhouh*Eo? z@U#)R30DZygrZlx)ah?yftN8bNVKMs(^u_I}n_daEDKqG&ns|>|0Q6GS)l` z%NSb7)=NAaR}0eD4}lI3-109ThMOe#wX%3jktcC5_*eAm;6N7C1Rl3Y^u||*aVhBS zu!c_PDQXUx+0K!Pbxt#307RCtFl@_JvNhd@g&#_ZXwVC5Amv1`1gQA z7pmWc#OJ^IX->Iqfp3{(64FQuCbw0XyE5?L6UhT+QX;V%FnZ8hYJ!j(&S!9IZ%#VI zgTa$2X$oWvK1R8u*;erYvSNIE*Z8FifD#5aB+}`;0o}ir7@BotHf3x7x4s3Yx}dBz zaR6M4BqaquJVyow44MOO`PFq{C6w1IVb=Dpp};T%{ta9}Fx1SUPX$edyw?Y7YbzpS z8|38-sPXO)$^sXdA^J@6pEC9!ukz^F@yK5S3a$YnK5;HJ98ZfgY{rLd}Az zx8*wy{O)HB%HNow@oL1ybH%UD{9yrjM*h3?en4BV(lejv@2$50Ub1!qWz8h8M4FG&Fnrv+N zPU*o+%tj2JbH?m~0)%1w?bI2uKz)5U=Po}4w2Ka)N@!GUIevd8t;XT+W!q%V2WUBm zFE5_=S(bF1q0sH#iOIMX1cXSE4^ayQKhV%^x4VCudBheJW6Rp^i?AX|ViV5Gf4hD^ zw|Fb0K*RA?o5jOQJ=-`~tL`}qWjE-x3#X)XOA|a6x~<y3I2Qb>-e=`aBz4~!v#kE(0tCLw~qg>zR{tp6E|hAMqjsD zwkQnYgleH4Md0Yz;UhSuRX-`x6r>MZP`*f$ZD2^~`Xp)UR1*mN>Kw3#3mV<8{rfK5 zD39BVfqY3j7(#er`SIJ?9g5Qz!%yxSV28k->Ho6zVgiUa@`VLL`1-(#3n7D~n4L%v zDmfpy!Is1^YDtaM2J;~oHyBn3Q>F;mG?a4%!(AGu?pfj@eWVd6Qvv*8^?I5+2IU9^ zCUC0E!Mn+M|L`wZ6#ZGZECMx$&j#n9`ZIMUSD9&F8s+1^J1I`#HX!oB#EnqiE714i zSqeb%kElvP2pA3YOWBXxYk@8xFC=RDPkZfxK(u0EMa9^M_&`UzDJla4g9)$q zBg8yR@7~e6fq@T?Mdb3+q`Xt;ggSLKn^F9>0?>TL>^y^o*eAamkJx3Qc4d(pv_OdJ zT`vBpdW%k&+`qOVlhrzUbgc2}4Um9&q^#7&UmY5^nUZNTLR1aZRC;==THes7>bHg2 ze(?)jV-S}s1hdHq9pV)>+1{LcdSLnopi_p;Dz60l$)0k%e|7Xs_BsSVyS7uiil_O_ghtZb-n<)Gn*@hF?XZx)6R z_X8(X;@Y{!lY7Z+9R^+gTo83(%1M`i2YKoAuamz8Q+cmmQ6y)u6EYVT6=6}i4xqGe zyZF9|B}D5kpU~b^Xvfx&zW)9^Fxf9i-(^>aY`sg!r%Tzz1EM+Y6|s(jEJ@!}zL<`% zev_zrw5EvguE0;BmsY(SwOu&+ZJ2mdtX0$~$01QIW5R25iAFStMwRV&30g2JQ96mqd5J zV$D_FEOr5EG=#my)_o??WJFQnWO#UQRg~K=s4ZGQV9s$$V!5@#=Fp2aW=WKt)f1On zaYz~r)t<*wBTW&=rB974+k+Day{b1Ooc-X|Wh0EyeE_AflmAh(rE$5H11pmxOT+H44OUV&5Ba%Vc5N!`^!41`tFL8~j^`cPwxKS3^ zQhbWTcY}>XWtX_=NiF)#?bV|{7-EZzV~!+?^_3nng-@aAnL&bp0K(k1Ia@V7iQs{s&Z42XC=IYg@SN|W5f+6v$Auz{J zK^+RVaK*r!9S{nZkGm1}d-@{kw*a3#S2Bb4iz{d<^flw!!u6`)BrY>4aEOimFhP`a z&f}t>fDB8EzuF;Rs00#0?xq3sZv`JKM`J|ZQ?r!&U%&T$1l;&rN!XqpNr$`12z*K4 znlbaSEB)n3P)a9cxx)vvU)#}Kw-kURqe)Yrd;t@UUw;<;)yxSzj$i^5<#CM(==CP+ zg5rqr#!N@1kE*cugXiM|P*fgsQ`N7Y?YPTfKudo~Rl^Xt9k7niB`}X=s5w!IBFm)H zYd-inHYb!KW!GqMT3yc$7tC}7kfjI!CxvYMQfK>Hv0Oou$`s-<)*3=%sQ~#BW}lS^?8Zmh}1u#Hl{Ge};x2Gn;`|D*+#7vw8{j^qIw}Itewa zw+7453SIl=3{RUq9#AuZe@Q!jvE0lWqh&`SaA`KgUNS zOX*uHJ&K?&V`je>MmnadQ~b`?h$gGaHCVb5akTMR&aGXxs+O6J0gUCFP2{^{jn5My znLnPt$#OQ)d0x;?`I6q-o0|E!ZZ5#XYw^C7dU7ebwUT6%(KlR=5Kd(?&DT$Ymx}(+ zX9cfvYCzc#&J#80fufb2P`h;V2R+mqHKpoeW~2wnw}RwOc8V63R{#%bKs}(Vucvpl z!e5rUju|O}c`~}b{I&oOQ77fFL zJKV8Sly^DKn}M{MmGps2t9-!swjs5n>B^mn(dLD(+~teCb28pt$oaC_{q);ME$HZD zflNn=feFMCXeC2*e4j}*8J9k-+L}Nf^&#%!{2;#{%iHs}k~yyux?{x^BbI(*@sJK0 zt(>9LP9?X?D1}=8{0BX#^S7qjDMjX|Fnj8{Vi#?1+UK96&oR#7N zxEd9~kA`BWao2EoPn#N*o1rZda^R)-4G<^KU=wvSg{SOlibs5x&HwAzv%zpY*rdz? zpN+cHr;aUMf42qZQoUA88RWFj%nB#>Pf?{J4B=nC`T*185{5)d$2_qh=(#5v7^RT8 zj$u?KJSuwZ7$Uz0MJui}1`Pi`@Qj-&c?vekjrTWc9vf4qx-o>m9m1C?}oS(CuG%A)>=`;b|>w$Sp>!QtIlU;rEQ!M40QroiwFQr@Sb zz^Z>rJ|;eo1})DZo-hwNnw6fJ|At@9P^1+grv6{lOaNq=C>`DWY$qtwtk<0z{Zz@# z>Nu!alP%K|I0oECW+ptAt$0Ex+KL^1Z^TI_Jw~vgzvgmf%QYGwZw>dD6)(# zPGLFm<>|G+?t#LZlb`&)>C_-E=2}r|v!jtwg8;Q+pVGuhuI)#QKIj`QM6vpTR=ccG}fHCKN8WI@Edz;}I&ADwjalix?_ zF;pAz%0GV}D+z{`M}5`ct?7QU6NEFy#vL&id(@Fv{j4}8k#Uk`ZSV#*K3!mK3a@=g zEb4t);qpxXUPMV^&1y&p(F?hbW6ma<`q`7s5doczw1nVH#*-gGH#P5DXloc1?&NN+ zulvPbu!;h=B0?=wE`&1GQiQA>DByWrBwG)FS<*u`W-d4V@I59yDOH+D zAEe_l)ILj;NtA*_GJkM+{0rnvK!9J5O-bY>J#lP~-K=Uz4L*P%=X<)mcker&aIeUV znm%gTib2nDXUhA2*`=|ew66}T2a|bR%khS*eZWUSoxQe6AI$~=M#QQq@sML@{#qtq zu$UqE(tLlplF*k^xdFa2;Sj=;x7k@fxXG&^m0q|jAo2sPYK)e9mJ`V1QC5HsFiJi$)TP>8P9C0g{fF%^2}=bTgzN{hX4mbZwRsS#Zg6tOFqgn{=d785MCHG382BR^ z;`%&453h2eYm_0KhNZz3V;FhZUsq1< z@cZq>_(B(^NkG*9YGGOd zW4i@jq>+{QAD9Ywhi9N{2K_}h0F3{A8vl94FvxQ=NKg-pt!Hy!A4l8Ydr!k16BOnu za+YWX$EeXs1X|j5%5uAf4DPdr4f3sG0`G}Za!7-{v0OS~hS9QTr|Efb-FgIuY{sA8 z7vgM`!{3BX%59466K4SMy+Kl_HKO{)U*l89TM7cIAZ72oZBV#nTGgvpJoxVOuK-gX z^YJW%W?0}LHY`_*j6fbM2y%r=^@c;tVm*4Sl08xNtd?`ntVhed1UydNk7cknyey|3 zz}Oa*n|6Mfv`&tji^{FERER?^GrZlb-BS!AXN?Pg{_9GQfChC4YHX#sTck5-^9c5 zy0{_0&t-vT@D1EM^=!nguf!6zS`reF9E_*0`gz<7H0~<`r)Ic=%+Vtx9S*<;k!3S^ zlAa_0G)k3;ck*R^6N*Pqo&S#sP7wzmgjyqAK$$MoL@qnt`2$Gv^+8hUIaLYJ^svLX zcfFZsOUc7u0cr|HExUtk2*vrj`V=rVXI~jy#|xoPpbS^b{WAdA2eMGD0!4iGe|Z4l zd!#`&#nfU8J|FNL3r~0x$qWcJZc@S`p{5CBwi`2CBp1IIu>(OcBiBy=erKG0Ph?&L zprzH=$3ALsiQvMbe)#LR8a+0>JYD93FjlrF6on`iB{h5SHn~Dm!r!?iVYv+f2h-b{|||p4Wfp7T960)wfUfxCXNQL=rewc z7{6+}^t3Y_0D=X*JiFsiKF$Xgxs%yQ<(^YYvk(q$RCdnLG?LlTM%0b71s69H)Tu+* z_4s(0aCn4!D9ZGM?h<7xT0E1$UUeQTV?nv0m>0!UjRx{3PPfg=a{jaarO^N4a3%aN z84aq%WhTbP1zhW2@-9zLA8g1%0!q^eQ}V%mTL~}_d()nNsF$SMe-oCv`RTHLncu@z z4R9Utk##6Ady_=OZpA4J-T*XFx!x`ykSbgjl)Iht8eb$wz^^i;E-qD_g6b zYE!F^KP#}#Muv8Gc-nt_vMeEcmmay-)_rH8v!<5#*t&E|X|e^VQsM# zXZ~X=HX#Tr54nRhGcmP%kQ2cyGwRe;Id@*?f>so!*W#K*bDXB~Hw%e}fnt?-hYf)^RlU z>MFk4$Nw5CjZm-$%!1S=^q*sy0B)bM^J?_0$yYio{kPSAdHAg)(a6gdSJ1|c&mT? zT(NQLvnF-mDip%rg1oM;aSBXSpld8fVxyiS84vfuXteb&lh4^~D(d$Y0gRh+sKr$9 zbRN=C38`}0fDk;%4Hp;$wQA`aPzv}TSBn7hHBZ%>c1qk?>=SB_)6Zs-mJNU5wX@OM zS}5{D8CH@_5?}X?#{V)>yh6wjKwXJZTs{k!O%_Bq`YO0boXQ%K!CT zOmn)j>vuoXk-c!~WFa)UuFwD;Lav9dYDoPB&6FM*Y|raBXB8x>n{G$P#>P&qcV81% z{(SS-Ju)AUOQ}WFPxMCaJlj#W5$}56d>f`$1u7pgvv9OZjd?33ZJHQ*XMT`>vUWDj z>3`g~6HA&caY|KgpUan$`9&i;1OHVyUaJp9MUO|G-tv`l2Z1vDlMK{`vkvWOo^|Xk zL7WvmIsF)5EjN9VXkU{lqf|&7*{Mcje0eZW>Ke}Y#nj#BdG=bHEIWsr(ImLXH%q7d zilbtW+RNV?CxRBLuq!CHsjB~HBh?XnWiYxy_ePpN!NBGyxR)VcFc72kbE-_5zVE=X zVXOk(c7HfW{GkMHjsMRmeXbvPlO9{&3!Z`fr}oAn%86r33Tef5pM@;0$yDvx51b$# z)ZEaa9_A4<`nNHwLHvcn#fr4ALaF+<3ZN>S*azqsYdWjZ{O7a8fl{uryAdbu z4YZG^)z=0e)w4;m(_&sglv!7q>8%-NZj+>2*gTiKy+lcWDbpqn+Rw7_1v0QzJ=G~W z_G03Ox5X9(7rOW}+*^FqYD>HBeL-foVsQyI!or`%)EW0Vr4UH$<82X*cKtrb8W59@ zy@=8N_%NT;DCqOSN5O6>eCEf&sYp>c^|YSZM^*Zi+^)5kAzXXn2~hJzBJdGXVz#+{ zk_$C7R%nJ0CT2qDLiZAWIm zinQG=l}MpH!m4&PN;GhC_A@+A?Vouj;)ZVJ-@{f+o~T)&-jX*+|eo z0G|+Pd6<&@CLBBE!zeBL#;8ArFQ)U}dn>K$i~gV1C6(R9LcqQTmF1E*r~IymM?4m3 z$-V*J89bdUA0b)Y#1|bI8OZgnJE+)>jw96Xc7F|O?v@Z*8Oh+&`J;L@iBJO+o3!oo zZtPZBU%Yqhlen!z3m;cptM;F@n*@f6kNavT9ZGC+iArgns3^Jp+@Xu7epo5DQGv+h zfu^labcqEQDT4(U365|oHsd|}Lw2Z<%y1x!*hh8#>bTT!oSW`5ykAYQWIPFSp3&k& z8?{wYM)lWvA2r9MYdf;yGA)#EjCvHPA61sX(aOOn&)*sM|9^kOZ(G?2Vkx7`_hW8_ zh~2OI%5?r+H39V`&yO1~&-}QQCqb=#{f?Z)2OVS6%&SuuE{W6A;`pk~%osmN@e`O4 zoz!j`xC`}7$mMFUm*Fuu&EyapbrP}~8}>KKp)77hh@oIiG|rhD?+TRY4Lz^Sucda+ z>5!&5;wT6o4Cya9XA>?I{(M5R?c;`r)Wb5mflUG}p`W6dA)Hxa8(top|8Je;*tl1x zfVEMOd$VvB%s}%ID}Fic`lM<_+`(9a{*idA+M|}vP~vy2p~bP^B@mJzSO&m$&ClpM zq-9*I2B6UyMHN(#5x^by3qmQ41ofmAJt7XQ>`GRgVRih%(}eN0->-*8fP=|*8JGVqetWZJfH&3oJ9-C|E5gDNWj@eN^od& zdlh+AWqT1`mHWvR^`26SN1o>zwWTHESL>r10pg4SGtCHhHY4hhn?W}jQ7x};8aaUM zNfOTuU)3U79_h9=aa9AHZq_aO$Z%P2F$N*Cl-ELr$TLNz zu1U%Js;|bVRTS4Uf^xVMxI7{!iqmKQ=Qvc`LB8&lr5JgxYlpFGk6&_cT`p0%t-BIF zsn@mF0&Cu-eV}I<&7~6_l6$&T{2?Ar$3Ux&+~M8`$r&5RdGM7Y%UF1nJhvJ&^M*p# z{0yZCWeHSkJ@&m93E~s&(Q>jST9gW#spI@wSJXE5d;Pf@i|g4sjEM(j7LO#K1aOxA zPQieJ&X+nzlrK)O{C|Dr-(3(&WD4@mKgtyX4mDouhqY{HjX>{?QfJWiuvaZPOEOc- zjespgs#5O`R_&`Gd$K9MTI**s<`QjO+?9RgyVg#{R~KQ)8KK05edG%HQfo?#E8OdR z0L36#!usY)F|B3vY!f5#PZ(rLg2R_^z)dej_tLedK4PV&apNKE0bWv^ph zJWp465~CXQ-ik?0s3BBTM|*7i1F;t%FZ=>K_*3BUS0Wr%=N?j&~paEx=JTpsjGQx1z8=|Tt$a? z9+{xdW|B7VPUyVnc?{0;w$W(Otg{-c3=SD1z4z%4BQdd)Z|mF$?*?Q&mIfILLG(!uogKTnO){W37beweJhJ=lUT*+`yRzlO&@!$tZzZ9+9l1c5GAy_a+~ zkfV7HmQi$H@qhxjx<1+wkaw4`2|g5BkSF}iJVb3uxLm@@PgMQSq+4gv1Th2#&yp66Mmk&!nH;RpU! zo_K;P$|(is{H0;5s|Jb~<{l}!7JLK7yDnQPHCuG7;Rdr=L!7E|Le5rqcMw#~@ z-a4noL=W^USypmJ^qr5aoEz>`CT$K@KN#e(P?q>k9RABO37d1~@|?dK-UAU+Ul%8u z1l>_XPz3}IM!x8D7S7;t@Nz7K^?yh+LHVvIyTX=o9T!-D@7YJmHBP&pBDd4>Ce2AP zg;yK*)w7bXWUr*GI+>WXa!}J~mAVFu@u+i$E%MW2nvNc41FvzkB3DoR(ad?pIwObPdOui!= zs>%Y7@)!pjUp>&E$@L{=7V%NAGf3oC3(ca1rGdT^;WT)bJuip@*=~a4C1u61_%~Px zO4S^Tj~%Xm9J!rso_X7oKm14iuR!y@#l@VBh$Pu&iS$)#N5>ax$=9}XU7VV#ol96d z;urj6>3y9|+M@tr3UnNpj%?e?xq~LW9AC1vFtyEMc6TtI>eo$3Rv@k~w&et*H_g`i zdqe$H>w6vG7DG4hX*X#mVIISs#l2m}-iY(LN7xTg7ck|kSEdU%s}$?a2WzE}F4J|^ zcRDK)R59@4UH678hXS+P*OJDFqn$5R**~GkWk~S99v;1l5)`eDTRIIZO;)*beh#uS zQ&2xBiq#0=mEuVWTV`&sA$}4w8m}LGbtPrwrP=!0QoOe3H40F_4wN=#RwD*kK>A?A zTyk5b8w7Wnle@t|f|sFNjbbR0+dCU=`X0ZWPVHab+-7-1Y*%s4S1N?m^8$|vW~t@v z?FROJ zQ3WCX&4b?=b3M#}ob^dvzF}<>A4w{TJI>}wlJymJy&XfiulmT6*w@LOR9%5#D3`$o zf#y9eX#@VdgMKIbSUan4+nQ%q`-F z3}&fO#BBUH9p{0>U766NX#^9et&Y*tTkhB#U#*OaggWg)eQq0x&3p7PJ3GlMEvE=? zF4y59TL@XC!>?!PwTxWNz)l?1)PDoA>=Q9wPiNIj49HV$+LdeP6IJ5W5en;8$P`st zG-Pbp7;%0*@S#uj$$hQ(KVI4?JV>1b7H?p6sV3qX??ENG6Dx5X*2qQG_VmWa)x|F9oZMc{6Vk$Pjew7V1|Ct!Is4ZC&F9l&u7J-w`5s8peMJl5S5A7e*2qUq zPHRmS&dy%bs@7SRvShOGN70`X_j{Wjd3HjTQII(OZLk=RtaZqC1@BQ%U@Tg?P(r4nC|bn?SjLF@a$o#7KxiOw1;b{2jT0*(n$ z0*fkG*gEN$u2IimiDM;U}l1;JG^2k zD6a**mH76U0O(hN1?bUb%fiM)F>DwDj?9}1-81uT33_?jU2NA58i-jxg)dc%bUJBK z4E}6BH(HbTqL<-;ySJz6?I|PyLU(+G^tuCeoDL%mY2S9wbV|L8U5)4MJ9_GNU*>Cy zhb_wJCclbuSIkj@q_=_)uq1$%+G>TDMf7_){>js5gjE9tqs9CfMTh#4+)Y2_!=LK{ z@6+}+XN40!+x)a)`RS2hz}l9a0`xBz?v6V#vWf#W!7-ED&XeIwF4bYFsf*{+B=O;| zUR|bl3__maJx2;!s_B`Hs*O5DiIYLNpK>o+_)M(*ZSCoGn_hskjvI!6F)UFub+HQbUehVFKIk%wCkbo4tBmo z8ly6}(=uYeH~N-6cdL^Jzo7?yx-3aZ}=Or70$<@4&XL#Nmync~U1_mTRp*1~Q`xvwd2hLlHAO~J;*!`ep8L2JI!#<}xStpt18f3X6 zy=i4bS}ZlMauuh&c^?k2zQV#wlKpa4@f~)0XyLCq#euqwMUOEfm4wqTBRf|0Pm120n^l?$c| zx~#ac(-<=PRXs?hV8N*pO$>r&4faPBIb6IR7#Jw2n+V2{?Qj=TF{n&^BJqNR*;aa9 zRmNM1`MM_iGK+97)T_!Ob=1c{)TG?ozP^KHp)9sjX#Jw2NMe5C;Xr`z1PIam0(O5b z^4ZNW06nx^LEm58tzf`r%+AX4zjJhdMb7lTRH*Q)vsi8DlgmgV#A@gtaZyAWEt}v_ z;;-EjD1o_ljEZ^BT1Uryu+d<_-S@;_IMffZO0Y#{l4sFepYGAqnTwYr3M8h$pmfqh z*4EbOW<$UzX~x3K1LE3216j@8b5NO&=>b09jqr*2ctR9O{P2$%)30)Kn1VjDt%Vzl zrGI&<2E5;wR;Sq+c0G~7n(_#I3eJm10 zl=eG*1VfqAck4DXS0l#F+*ktzzgm|d%~9iDAOnuu*@&dD1<}-GLSI^sWNw zD&mOBHDjoK#7*%ER^&9A z{?#*khdiwbh*AQ>0bnpf|Ek7#pk=a1qXjD+)nz=c&d56Ti)8cNmph$TGDT+<+$f4C z717XI7m8`NG`esCNT%xk}{U< z$>1+*F;&frUD;pm*ot_1zF3}(`9H@irK5Bb>dZ1P!*qVs}LtsKN zgdBXV0WG6AgL^+`b^CcW8BXnXDqcJVa}-wl%AT~yMXs=Qf{wNIb~Hun=NB6MXAxwh z(F*$3&r|HFJk{p@Tm+Dqby=#2lP;H%!M_%Zq01XnES!;Tq(`oO+LgK95NV#Wt~E(m zjR1jW1vFl(YvlXl)q9mE@a@l7!$Q*_Ax!~3Mqh<(pAKeRFtlsNsUD5CbG znDDq*e1U@%mTCJP@`>eMUQrjR2Rnl$nkTgbWzQto; zKEl#kRLvhRUGsTQ+@hJf`X>cj`Vu2jrSQlvuA%$ZByTbB#VaBr8L}AkUq2X1jk&JV zXw=rBie|5qOOB~ZPr>d&ehdvdJ_r9Q>}JZn))fiTceI@RhHpZubnw*`-^FaH^zdyW z)$uGqbKtHLC@I|Z4@~65sBU73-0jBeQVCD5tpGzjmnh~4C5;0$dMVUb@jm?7?+nqu zdIU`kgQS0oHBXD6W>D3d#kq)H;Y4G`UGZClz>l8S71-2n5gotT-xq{8Fl1Ll3^6|N z@AHy>#IdQlz{DddqQ*9q;#x{W{bb+6co&NtlDsOM39tGNApyg<(#RI}+w(}ie|^sl zXn-g2`}~`Q7~K46-tT28eGjU|z{3yh8@-8c+=_my1=rdqY&~6-^U|?UP^5%oKe6Lw z+Gp&hK3`+e!5fIh1R>}P6#Y1O$;7xznK~*6`O$|kr=C!P%9RnU-o|V+5XPGx^t&pI zFaRGYax`FhqR~<JV;4sQ>Vn9eVgAyM8QJ z05VJu@S*s5JC6m=UYCQNrCK4Z7C`1SSz8Kb;{qgF3tF+{yxTKZ?^D-Z$-0}1tuHsy z|MSUrS_3quX{?@0sXmkhNxOO2{RA@FJPS0Gp7I@MMaf&NC1)m^^fCoOC6*;G_|5xr z8DvE9u=FfpcY|~kOHc8FUz=ObNFt!LvgrC=$-$0{>%vfPlp)(K#5U#!_b;XnO{A*% z3{#?M&yfAL&13u2DUI^|J_?CMkEn5 zgz)>(G4!y6#iWHz41K# z`vaIVP7Z#SGZ1i|!Wp#lfs|A??%33$H?AdE)m8O2IdoA5#36Z@iof`BSq;uwiT;94 ziUi2j8r-`W@L1zW-a*3Y`jE6r`1rm58Fw3okYE3nB0a_d@kEbC6Z^(CQ}O~*9jYAg zRBCyf)?Sn#htCxYo4`Yhi=gde01qwoqiHB!F>c~-rS8y!I%h1FPInQGE?dhRo0xmtSo!4E2WIrx=&?N)D-e8&nz3PnQK^aU-X);P1msG#r^6oNI;%KxWv`YO>!@bI9sYC!PPMXiF79DcIk z?R^N~vX!dUz&agPmU#Am1m(-znb|ciBy95;0LhB2Cjs1KvMHe6Chw>)^(=qDQ?$>K z33oi`rVp#5DPIPPied_XD|g|?`9LOdajfzJ&)?53lS^KU)ADDAEZA=v?15#B-PVcb zn`2WT_q}Y!{ws*{kX(7?)iybu^bp6_l&I;Qn&l*a70Viz9Xo%#R34Zt;c|_CKZ#p= zxK)?8=LYEo*i&El+{CueItaX5Shqxifvxly){VS&gBCv#5$}_q@P#>(B zu2*)(cCo(%JnKPH_JnU^yi16c$w)k~=+6}SNrWGi#WwaK?NYJrgq~}% z+vUtclP%Qnr(hTVY3;y^>bkL_SvMrpr5`X6<~!a@KJY^rzU2YpUH|7f59pyvcaRjC zOA@fa0mi@7Lt3CBLHT+1_+TZ!-LkNjQb@?yKn>#qgL>9t1!-V(q=)2po*GXXCe4k} z*3h7rcY{(%Pn{2E$}(LICIhMsVtG1BWzgDr7Tu39nMGt}vuPH1R(O&jtrTTRs1>+3 zUVV8a_!z#jID=2?Ql+Z#G``!#dkr2XFM5YFsV!eI0Veb}$xC@F*Z^&YNffsyxu6mwdkCIXsgHxVr||rV|Inu8jq5 zeQ(H@PxJsMb8T+V%XMPkixj!eR^715g5=e{!6%fKnef_>GuTY>YQy4=1MsuF@*)B( z@y#!@$nCYj*R~D&l1{798VPc2jc-?GvhqiEY+dnVuYzi?wMq@#o0{V_AatYB1&~EtbD6S74 z?Wqd7HY}6r)#tH+r+hp8xiWGZei~9Dc2-wb{1`XW{6^C5R%yCqq9N=CK_loOSKl?v z@tNtZpEqwE9yg(7U)i;ilh*ZK9~$~^r$CCG2}j94HnKruJYbvDbm9~f4do+k+T%Ar zE!?tfyp<9{{MTn6;Xn2@gp3Zny46Who!zrIt8a5v{$$cpiiAgqx4ue=Ix^fhbYBWm z*)CbJB;wV-&IlCE+^w4X{Xu9pDo~(|KnU`f)uAyHHK|2nSNZ?50K^5*?uCpTRT<4q z-}1z7IE;=L36BM2fOtNdufO3H2?34rE% zIuG#I2^nF6(@)ZI_W=60>HO`@sq55g*aq=$86|hPM&kLKI-+@ig-ifY`EJQ2 zJ2c;$Wucok3f5yszyL1E`a&Ao8j4bHD9BB<-FeAbti{TYuC^nPnh6somXMe{qR+<7 zJ-SSJ5*-k_RX$(lt+I(5a*shbOqNz8Ee+Bd)$=kgw>HAGe513)i6Mmw#IDa#e^;w6 z{h68)PD)=8=cb=Zl$aaXNq)TI8>cPB^6 z5b+u2gx)Ovf%IeNw#a$Ku@-^m`)v#k{~!C}n~w7i$)ddwc7VW;1cZ0-hsPKI|A~U` z-Qb#MW{Jk#>N#dlp*VjunnQ;8$+L_}O<4uO_m323JIE(ebhyZF6Q{n3yZGe(Rbt>N z`0YVlv4E&%{mV~i@D;MofLTm~y@|_XPiJ`}Jhup9M5~Ju5c@n$rPF)pR*2>l>0!wF z$($-lV|<6P1B7qhN!?uK+1Q8GM1S*1xUwY~n?|NF<=NvS8kvMUdOG7GU4-Mmx1FkdUbV3z91YiHThe+oXL@t0~wSRc_MYnBO0-bt7#tDq2LMfSFRhI9j` z@7V`{PCBm1O;QG@bra5_*S|$%X9Quoq2f#lccuX9FFBTw!d7ab?JuO=LdRlv$h^q; zyt@GqZCpb#9L=6xAS2fI%NnbU3qXQltX4#$aSxF9--d3SaX0N_WprczO`*kRz(7La znu>9yfD!PvzivXp`&c1HlRBwCFIU;TEr6{_fzRlJpC(h1%0_hE_)uiP;4zI+JV z&^-<_i51n66{h-H*{Z>qr;nTbLG|py&<|fPqx3VNl^zx=6`3W9Jr)?91!#;NV223wB?`&uqZ_Wtg@%MfNiKF*2;)5*FiHM7oB!d8D1)-q)MIgGt%H0G z{7Zkb-wn$gpIIdt;-Iwm?N~C*CCy$i=e*^4#PqzUlz^1!d3@#*+wK){)(+Yej59HAWBFI|4d_9*KcF{Mv-R`;(7sC zda6z!x-O}Iwdk^nC(1XcVdx zDo?LC0*c30d_GJg0~M}hY$?B|sjU-$H<^oN2ly%8c{=2-vkuA61PzBOE-E({E&!R^ zvkR%z;WffSd*XF5k~(iujg;g8sK7D3b%gU9O{9QGwRnEar(;WXGL=vJ0*(BY*0(B} zDGt|mQhpJOGPpUIhw>Q%8Y4Fn@joWkmHhr%#iQ|M;C9^nR1%j+?ZuXDi+&#j+NEe+ z#O}-G+y-C zFmQaPDMg9}bWF@D&srKw)549;Iuf2bl?9ny!r7$JnO71}pbY zmp5C@H@#gma(3=W1UKZl`}&IAb;}}GVFNz$UsOwoa%1X!Ja}jVDg51n3rt^nB_hx!2_J?;--V^U00!MFQ7;q zk7Om=Hl9)>XE;SaDBWw!#++GPC!cx`v?yMd)3QcDJA{Zr^MkRDjM};XBpIhP+#W6ViGI?$K)XZ(b-Fu+= zV%+mG>3z(+lG}nS@BI+Gw@_!ZzE(nCLTz(=KPe@p zBElHdP?sPFm=XkG0D<`?5j8VV9NCJ~fsDEkV}4RhqKXKb#=y;6dBi)qkb|BS!*}EJ zSUeopesNnifhfbgQ@rwZ{0{&9s7(X&o$9{^o^p+Rww1i~JJDfP8<= zT_=1R@}5U;%^wsq=dR#*8$aZrk&ZYftfj95413+#vKqiVHZ3Xsw0EAeCzApq(Yk)e z=QM&O+t9xY$G)uCxnki50IJD+p1g3LEXT6~mtuWHfD9e!kP0%aWEohN1#WWhP8YnJ ztzyr2gs$3zwtr61q=Z`~*qz7NIsA|wq%{0t*%hQd4|GLnD9*d2)F0O#d1}nOqPNET zVtiUu{yP1zJmv%mgk`R6=u2r<2&Zz5q`3O^kYEn3eDN30-=^#db?4r!Sqk+^8yLLi#F|8Bc*u1GgaXu!|_Sfp78L6t;U1MoTm(_ z54-yyFt_(MBTYW}%Q!`5@fat*!cZZd+UKN+_2gQ2>A{`P(fqn>dm&ijwbUj?T3@(K zK57^NfE3c+7#oGgT9SE_XXWZum$CVjmRTz83UaE1GH?^G_=mS%;$*8Mi7dPu`$wV? zbA&B*b0MntV%7F~E@6pxP)`KWv8(UU?AQÐhicRssqd3@Cp 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%0Dj+Golyy{4hy-z{ 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

    &t_k!jt- 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 literal 0 HcmV?d00001 diff --git a/docs/snippets/guides.jsx b/docs/snippets/guides.jsx index b17af36b57..96c999dca3 100644 --- a/docs/snippets/guides.jsx +++ b/docs/snippets/guides.jsx @@ -11,6 +11,12 @@ export const GuidesList = () => { href: "/guides/ecosystem/tanstack-start", cta: "View guide", }, + { + category: "Ecosystem", + title: "Use Next.js with Bun", + href: "/guides/ecosystem/nextjs", + cta: "View guide", + }, { category: "Ecosystem", title: "Build a frontend using Vite and Bun", @@ -23,12 +29,6 @@ export const GuidesList = () => { href: "/guides/runtime/typescript", cta: "View guide", }, - { - category: "Streams", - title: "Convert a ReadableStream to a string", - href: "/guides/streams/to-string", - cta: "View guide", - }, { category: "HTTP", title: "Write a simple HTTP server", From 19f21c00bdfd171346acf3f5570a0fed0d964e04 Mon Sep 17 00:00:00 2001 From: Dylan Conway Date: Fri, 14 Nov 2025 16:49:21 -0800 Subject: [PATCH 005/212] fix #24510 (#24563) ### What does this PR do? The assertion was too strict. This pr changes to assertion to allow multiple of the same dependency id to be present. Also changes all the assertions to debug assertions. fixes #24510 ### How did you verify your code works? Manually, and added a new test --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Marko Vejnovic --- src/install/lockfile.zig | 2 +- src/install/lockfile/Tree.zig | 46 +++++++++++++++++++--------------- test/cli/install/hoist.test.ts | 30 ++++++++++++++++++++++ 3 files changed, 57 insertions(+), 21 deletions(-) create mode 100644 test/cli/install/hoist.test.ts diff --git a/src/install/lockfile.zig b/src/install/lockfile.zig index ba5073e7f7..180f4d7498 100644 --- a/src/install/lockfile.zig +++ b/src/install/lockfile.zig @@ -944,7 +944,7 @@ pub fn hoist( .install_root_dependencies = install_root_dependencies, .workspace_filters = workspace_filters, .packages_to_install = packages_to_install, - .pending_optional_peers = .init(bun.default_allocator), + .pending_optional_peers = .init(allocator), }; try (Tree{}).processSubtree( diff --git a/src/install/lockfile/Tree.zig b/src/install/lockfile/Tree.zig index 656353c32c..b4a25ae9cd 100644 --- a/src/install/lockfile/Tree.zig +++ b/src/install/lockfile/Tree.zig @@ -247,9 +247,11 @@ pub fn Builder(comptime method: BuilderMethod) type { queue: TreeFiller, log: *logger.Log, lockfile: *const Lockfile, - // unresolved optional peers that might resolve later. if they do we will want to assign - // builder.resolutions[peer.dep_id] to the resolved pkg_id. - pending_optional_peers: std.AutoHashMap(PackageNameHash, bun.collections.ArrayListDefault(DependencyID)), + // Unresolved optional peers that might resolve later. if they do we will want to assign + // builder.resolutions[peer.dep_id] to the resolved pkg_id. A dependency ID set is used because there + // can be multiple instances of the same package in the tree, so the same unresolved dependency ID + // could be visited multiple times before it's resolved. + pending_optional_peers: std.AutoArrayHashMap(PackageNameHash, std.AutoArrayHashMap(DependencyID, void)), manager: if (method == .filter) *const PackageManager else void, sort_buf: std.ArrayListUnmanaged(DependencyID) = .{}, workspace_filters: if (method == .filter) []const WorkspaceFilter else void = if (method == .filter) &.{}, @@ -581,29 +583,32 @@ pub fn processSubtree( .dependency_loop, .hoisted => continue, .resolve => |res_id| { - bun.assertWithLocation(pkg_id == invalid_package_id, @src()); - bun.assertWithLocation(res_id != invalid_package_id, @src()); + bun.debugAssert(pkg_id == invalid_package_id); + bun.debugAssert(res_id != invalid_package_id); builder.resolutions[dep_id] = res_id; if (comptime Environment.allow_assert) { - bun.assertWithLocation(!builder.pending_optional_peers.contains(dependency.name_hash), @src()); + bun.debugAssert(!builder.pending_optional_peers.contains(dependency.name_hash)); } - if (builder.pending_optional_peers.fetchRemove(dependency.name_hash)) |entry| { + + if (builder.pending_optional_peers.fetchSwapRemove(dependency.name_hash)) |entry| { var peers = entry.value; defer peers.deinit(); - for (peers.items()) |unresolved_dep_id| { - bun.assertWithLocation(builder.resolutions[unresolved_dep_id] == invalid_package_id, @src()); + for (peers.keys()) |unresolved_dep_id| { + // the dependency should be either unresolved or the same dependency as above + bun.debugAssert(unresolved_dep_id == dep_id or builder.resolutions[unresolved_dep_id] == invalid_package_id); builder.resolutions[unresolved_dep_id] = res_id; } } }, .resolve_replace => |replace| { - bun.assertWithLocation(pkg_id != invalid_package_id, @src()); + bun.debugAssert(pkg_id != invalid_package_id); builder.resolutions[replace.dep_id] = pkg_id; - if (builder.pending_optional_peers.fetchRemove(dependency.name_hash)) |entry| { + if (builder.pending_optional_peers.fetchSwapRemove(dependency.name_hash)) |entry| { var peers = entry.value; defer peers.deinit(); - for (peers.items()) |unresolved_dep_id| { - bun.assertWithLocation(builder.resolutions[unresolved_dep_id] == invalid_package_id, @src()); + for (peers.keys()) |unresolved_dep_id| { + // the dependency should be either unresolved or the same dependency as above + bun.debugAssert(unresolved_dep_id == replace.dep_id or builder.resolutions[unresolved_dep_id] == invalid_package_id); builder.resolutions[unresolved_dep_id] = pkg_id; } } @@ -626,9 +631,10 @@ pub fn processSubtree( // later if it's possible to resolve it. const entry = try builder.pending_optional_peers.getOrPut(dependency.name_hash); if (!entry.found_existing) { - entry.value_ptr.* = .init(); + entry.value_ptr.* = .init(builder.allocator); } - try entry.value_ptr.append(dep_id); + + try entry.value_ptr.put(dep_id, {}); }, .placement => |dest| { bun.handleOom(dependency_lists[dest.id].append(builder.allocator, dep_id)); @@ -676,21 +682,21 @@ fn hoistDependency( const res_id = builder.resolutions[dep_id]; if (res_id == invalid_package_id and package_id == invalid_package_id) { - bun.assertWithLocation(dep.behavior.isOptionalPeer(), @src()); - bun.assertWithLocation(dependency.behavior.isOptionalPeer(), @src()); + bun.debugAssert(dep.behavior.isOptionalPeer()); + bun.debugAssert(dependency.behavior.isOptionalPeer()); // both optional peers will need to be resolved if they can resolve later. // remember input package_id and dependency for later return .resolve_later; } if (res_id == invalid_package_id) { - bun.assertWithLocation(dep.behavior.isOptionalPeer(), @src()); + bun.debugAssert(dep.behavior.isOptionalPeer()); return .{ .resolve_replace = .{ .id = this.id, .dep_id = dep_id } }; } if (package_id == invalid_package_id) { - bun.assertWithLocation(dependency.behavior.isOptionalPeer(), @src()); - bun.assertWithLocation(res_id != invalid_package_id, @src()); + bun.debugAssert(dependency.behavior.isOptionalPeer()); + bun.debugAssert(res_id != invalid_package_id); // resolve optional peer to `builder.resolutions[dep_id]` return .{ .resolve = res_id }; // 1 } diff --git a/test/cli/install/hoist.test.ts b/test/cli/install/hoist.test.ts new file mode 100644 index 0000000000..12919c36b1 --- /dev/null +++ b/test/cli/install/hoist.test.ts @@ -0,0 +1,30 @@ +import { afterAll, beforeAll, test } from "bun:test"; +import { VerdaccioRegistry, bunEnv, runBunInstall } from "harness"; + +const registry = new VerdaccioRegistry(); + +beforeAll(async () => { + await registry.start(); +}); + +afterAll(() => { + registry.stop(); +}); + +test("should handle resolving optional peer from multiple instances of same package", async () => { + const { packageDir } = await registry.createTestDir({ + files: { + "package.json": JSON.stringify({ + name: "pkg", + dependencies: { + "dep-1": "npm:one-optional-peer-dep@1.0.2", + "dep-2": "npm:one-optional-peer-dep@1.0.2", + "one-dep": "1.0.0", + }, + }), + }, + }); + + // this shouldn't hit an assertion + await runBunInstall(bunEnv, packageDir); +}); From 5908bfbfc688752293fc773f9763cebab0561fbd Mon Sep 17 00:00:00 2001 From: Dylan Conway Date: Fri, 14 Nov 2025 17:43:36 -0800 Subject: [PATCH 006/212] fix(YAML.stringify): number-like strings prefixed with `0` (#24731) ### What does this PR do? Ensures strings that would parse as a number with leading zeroes aren't emitted without quotes. fixes #23691 ### How did you verify your code works? Added a test --- src/bun.js/api/YAMLObject.zig | 22 ++++++++++++++-------- test/js/bun/yaml/yaml.test.ts | 5 +++++ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/bun.js/api/YAMLObject.zig b/src/bun.js/api/YAMLObject.zig index 0c01e36feb..6862e2e6dd 100644 --- a/src/bun.js/api/YAMLObject.zig +++ b/src/bun.js/api/YAMLObject.zig @@ -843,14 +843,20 @@ const Stringifier = struct { '0' => { if (i == start) { if (i + 1 < str.length()) { - const nc = str.charAt(i + 1); - if (nc == 'x' or nc == 'X') { - base = .hex; - } else if (nc == 'o' or nc == 'O') { - base = .oct; - } else { - offset.* = i; - return false; + switch (str.charAt(i + 1)) { + 'x', 'X' => { + base = .hex; + }, + 'o', 'O' => { + base = .oct; + }, + '0'...'9' => { + // 0 prefix allowed + }, + else => { + offset.* = i; + return false; + }, } i += 1; } else { diff --git a/test/js/bun/yaml/yaml.test.ts b/test/js/bun/yaml/yaml.test.ts index 2b451c9909..59276fc20e 100644 --- a/test/js/bun/yaml/yaml.test.ts +++ b/test/js/bun/yaml/yaml.test.ts @@ -1329,6 +1329,11 @@ my_config: // Octal numbers expect(YAML.stringify("0o777")).toBe('"0o777"'); expect(YAML.stringify("0O644")).toBe('"0O644"'); + + // Zero prefix + expect(YAML.stringify({ a: "011", b: "110" })).toBe('{a: "011",b: "110"}'); + expect(YAML.stringify(YAML.parse('"0123"'))).toBe('"0123"'); + expect(YAML.stringify("0000123")).toBe('"0000123"'); }); test("quotes strings with colons followed by spaces", () => { From 277fc558e2039e3ab25ecebecc5a3f04c5c3199a Mon Sep 17 00:00:00 2001 From: pfg Date: Fri, 14 Nov 2025 19:52:43 -0800 Subject: [PATCH 007/212] only-failures fix (#24701) ### What does this PR do? Removes these accidental blank lines image ### How did you verify your code works? --- src/cli/test_command.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cli/test_command.zig b/src/cli/test_command.zig index 5464a062ab..ec1aa77aa2 100644 --- a/src/cli/test_command.zig +++ b/src/cli/test_command.zig @@ -1544,7 +1544,7 @@ pub const TestCommand = struct { const write_snapshots_success = try jest.Jest.runner.?.snapshots.writeInlineSnapshots(); try jest.Jest.runner.?.snapshots.writeSnapshotFile(); var coverage_options = ctx.test_options.coverage; - if (reporter.summary().pass > 20 and !Output.isAIAgent() and !reporter.reporters.dots) { + if (reporter.summary().pass > 20 and !Output.isAIAgent() and !reporter.reporters.dots and !reporter.reporters.only_failures) { if (reporter.summary().skip > 0) { Output.prettyError("\n{d} tests skipped:\n", .{reporter.summary().skip}); Output.flush(); From e53ceb62ec337772b306d76ef05d4ce2050e6b28 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Sat, 15 Nov 2025 16:36:15 -0800 Subject: [PATCH 008/212] zig: fix missing uses of bun.callmod_inline (#24738) results in better strack traces in debug mode --- src/bun.js/api/BunObject.zig | 6 ++-- src/bun.js/api/ffi.zig | 2 +- .../event_loop/AnyTaskWithExtraContext.zig | 2 +- src/bun.js/jsc/host_fn.zig | 4 +-- src/bun.js/webcore/BakeResponse.zig | 2 +- src/codegen/generate-classes.ts | 32 +++++++++---------- src/codegen/generate-js2native.ts | 2 +- src/deps/uws/App.zig | 4 +-- src/deps/uws/Response.zig | 4 +-- src/js_printer.zig | 4 +-- src/router.zig | 4 +-- src/string/immutable/unicode.zig | 10 +----- 12 files changed, 33 insertions(+), 43 deletions(-) diff --git a/src/bun.js/api/BunObject.zig b/src/bun.js/api/BunObject.zig index f522c106c3..8eb64a3126 100644 --- a/src/bun.js/api/BunObject.zig +++ b/src/bun.js/api/BunObject.zig @@ -755,11 +755,9 @@ pub fn sleepSync(globalObject: *jsc.JSGlobalObject, callframe: *jsc.CallFrame) b return .js_undefined; } -pub fn gc(vm: *jsc.VirtualMachine, sync: bool) usize { - return vm.garbageCollect(sync); -} +pub const gc = Bun__gc; export fn Bun__gc(vm: *jsc.VirtualMachine, sync: bool) callconv(.c) usize { - return @call(.always_inline, gc, .{ vm, sync }); + return vm.garbageCollect(sync); } pub fn shrink(globalObject: *jsc.JSGlobalObject, _: *jsc.CallFrame) bun.JSError!jsc.JSValue { diff --git a/src/bun.js/api/ffi.zig b/src/bun.js/api/ffi.zig index 18f647124f..4b99ba8b5a 100644 --- a/src/bun.js/api/ffi.zig +++ b/src/bun.js/api/ffi.zig @@ -34,7 +34,7 @@ fn dangerouslyRunWithoutJitProtections(R: type, func: anytype, args: anytype) R const has_protection = (Environment.isAarch64 and Environment.isMac); if (comptime has_protection) pthread_jit_write_protect_np(@intFromBool(false)); defer if (comptime has_protection) pthread_jit_write_protect_np(@intFromBool(true)); - return @call(.always_inline, func, args); + return @call(bun.callmod_inline, func, args); } const Offsets = extern struct { diff --git a/src/bun.js/event_loop/AnyTaskWithExtraContext.zig b/src/bun.js/event_loop/AnyTaskWithExtraContext.zig index 42cc957ca6..acbd8e6ba0 100644 --- a/src/bun.js/event_loop/AnyTaskWithExtraContext.zig +++ b/src/bun.js/event_loop/AnyTaskWithExtraContext.zig @@ -54,7 +54,7 @@ pub fn New(comptime Type: type, comptime ContextType: type, comptime Callback: a pub fn wrap(this: ?*anyopaque, extra: ?*anyopaque) void { @call( - .always_inline, + bun.callmod_inline, Callback, .{ @as(*Type, @ptrCast(@alignCast(this.?))), diff --git a/src/bun.js/jsc/host_fn.zig b/src/bun.js/jsc/host_fn.zig index 1d001bd826..1cc4d1b904 100644 --- a/src/bun.js/jsc/host_fn.zig +++ b/src/bun.js/jsc/host_fn.zig @@ -696,7 +696,7 @@ pub fn wrapInstanceMethod( } } - return @call(.always_inline, @field(Container, name), args); + return @call(bun.callmod_inline, @field(Container, name), args); } }.method; } @@ -838,7 +838,7 @@ pub fn wrapStaticMethod( defer iter.deinit(); - return @call(.always_inline, @field(Container, name), args); + return @call(bun.callmod_inline, @field(Container, name), args); } }.method; } diff --git a/src/bun.js/webcore/BakeResponse.zig b/src/bun.js/webcore/BakeResponse.zig index 020769ac99..c3f4cffb9b 100644 --- a/src/bun.js/webcore/BakeResponse.zig +++ b/src/bun.js/webcore/BakeResponse.zig @@ -70,7 +70,7 @@ pub fn constructRedirect( } pub export fn BakeResponseClass__constructRender(globalObject: *jsc.JSGlobalObject, callFrame: *jsc.CallFrame) callconv(jsc.conv) jsc.JSValue { - return @call(.always_inline, jsc.toJSHostFn(constructRender), .{ globalObject, callFrame }); + return @call(bun.callmod_inline, jsc.toJSHostFn(constructRender), .{ globalObject, callFrame }); } /// This function is only available on JSBakeResponse diff --git a/src/codegen/generate-classes.ts b/src/codegen/generate-classes.ts index 1c18c4738c..eac4f1e8cf 100644 --- a/src/codegen/generate-classes.ts +++ b/src/codegen/generate-classes.ts @@ -2171,7 +2171,7 @@ const JavaScriptCoreBindings = struct { output += ` pub fn ${classSymbolName(typeName, "finalize")}(thisValue: *${typeName}) callconv(jsc.conv) void { if (comptime Environment.enable_logs) log_zig_finalize("${typeName}", thisValue); - @call(.always_inline, ${typeName}.finalize, .{thisValue}); + @call(bun.callmod_inline, ${typeName}.finalize, .{thisValue}); } `; } @@ -2214,7 +2214,7 @@ const JavaScriptCoreBindings = struct { output += ` pub fn ${classSymbolName(typeName, "call")}(globalObject: *jsc.JSGlobalObject, callFrame: *jsc.CallFrame) callconv(jsc.conv) jsc.JSValue { if (comptime Environment.enable_logs) log_zig_call("${typeName}", callFrame); - return @call(.always_inline, jsc.toJSHostFn(${typeName}.call), .{globalObject, callFrame}); + return @call(bun.callmod_inline, jsc.toJSHostFn(${typeName}.call), .{globalObject, callFrame}); } `; } @@ -2224,7 +2224,7 @@ const JavaScriptCoreBindings = struct { output += ` pub fn ${classSymbolName(typeName, "getInternalProperties")}(thisValue: *${typeName}, globalObject: *jsc.JSGlobalObject, thisValue: jsc.JSValue) callconv(jsc.conv) jsc.JSValue { if (comptime Environment.enable_logs) log_zig_get_internal_properties("${typeName}"); - return @call(.always_inline, ${typeName}.getInternalProperties, .{thisValue, globalObject, thisValue}); + return @call(bun.callmod_inline, ${typeName}.getInternalProperties, .{thisValue, globalObject, thisValue}); } `; } @@ -2240,9 +2240,9 @@ const JavaScriptCoreBindings = struct { if (comptime Environment.enable_logs) log_zig_getter("${typeName}", "${name}"); return switch (@typeInfo(@typeInfo(@TypeOf(${typeName}.${getter})).@"fn".return_type.?)) { .error_union => { - return @call(.always_inline, jsc.toJSHostCall, .{globalObject, @src(), ${typeName}.${getter}, .{this, ${thisValue ? "thisValue," : ""} globalObject}}); + return @call(bun.callmod_inline, jsc.toJSHostCall, .{globalObject, @src(), ${typeName}.${getter}, .{this, ${thisValue ? "thisValue," : ""} globalObject}}); }, - else => @call(.always_inline, ${typeName}.${getter}, .{this, ${thisValue ? "thisValue," : ""} globalObject}), + else => @call(bun.callmod_inline, ${typeName}.${getter}, .{this, ${thisValue ? "thisValue," : ""} globalObject}), }; } `; @@ -2257,10 +2257,10 @@ const JavaScriptCoreBindings = struct { if (error_union.payload != void) { @compileError("Setter return type must be JSError!void or void"); } - return @call(.always_inline, jsc.host_fn.toJSHostSetterValue, .{globalObject, @call(.always_inline, ${typeName}.${setter}, .{this, ${thisValue ? "thisValue," : ""} globalObject, value})}); + return @call(bun.callmod_inline, jsc.host_fn.toJSHostSetterValue, .{globalObject, @call(bun.callmod_inline, ${typeName}.${setter}, .{this, ${thisValue ? "thisValue," : ""} globalObject, value})}); }, .void => { - @call(.always_inline, ${typeName}.${setter}, .{this, ${thisValue ? "thisValue," : ""} globalObject, value}); + @call(bun.callmod_inline, ${typeName}.${setter}, .{this, ${thisValue ? "thisValue," : ""} globalObject, value}); return true; }, else => @compileError("Setter return type must be JSError!void or void"), @@ -2284,7 +2284,7 @@ const JavaScriptCoreBindings = struct { output += ` pub fn ${names.fn}(thisValue: *${typeName}, globalObject: *jsc.JSGlobalObject, callFrame: *jsc.CallFrame${proto[name].passThis ? ", js_this_value: jsc.JSValue" : ""}) callconv(jsc.conv) jsc.JSValue { if (comptime Environment.enable_logs) log_zig_method("${typeName}", "${name}", callFrame); - return @call(.always_inline, jsc.toJSHostCall, .{globalObject, @src(), ${typeName}.${fn}, .{thisValue, globalObject, callFrame${proto[name].passThis ? ", js_this_value" : ""}}}); + return @call(bun.callmod_inline, jsc.toJSHostCall, .{globalObject, @src(), ${typeName}.${fn}, .{thisValue, globalObject, callFrame${proto[name].passThis ? ", js_this_value" : ""}}}); } `; } @@ -2302,10 +2302,10 @@ const JavaScriptCoreBindings = struct { if (comptime Environment.enable_logs) log_zig_class_getter("${typeName}", "${name}"); return switch (@typeInfo(@typeInfo(@TypeOf(${typeName}.${getter})).@"fn".return_type.?)) { .error_union => { - return @call(.always_inline, jsc.toJSHostCall, .{globalObject, @src(), ${typeName}.${getter}, .{globalObject, ${thisValue ? "thisValue," : ""} propertyName}}); + return @call(bun.callmod_inline, jsc.toJSHostCall, .{globalObject, @src(), ${typeName}.${getter}, .{globalObject, ${thisValue ? "thisValue," : ""} propertyName}}); }, else => { - return @call(.always_inline, ${typeName}.${getter}, .{globalObject, ${thisValue ? "thisValue," : ""} propertyName}); + return @call(bun.callmod_inline, ${typeName}.${getter}, .{globalObject, ${thisValue ? "thisValue," : ""} propertyName}); }, }; } @@ -2316,7 +2316,7 @@ const JavaScriptCoreBindings = struct { output += ` pub fn ${names.setter}(globalObject: *jsc.JSGlobalObject, thisValue: jsc.JSValue, target: jsc.JSValue) callconv(jsc.conv) bool { if (comptime Environment.enable_logs) log_zig_class_setter("${typeName}", "${name}", target); - return @call(.always_inline, ${typeName}.${setter || accessor.setter}, .{thisValue, globalObject, target}); + return @call(bun.callmod_inline, ${typeName}.${setter || accessor.setter}, .{thisValue, globalObject, target}); } `; } @@ -2330,7 +2330,7 @@ const JavaScriptCoreBindings = struct { .map(ZigDOMJITArgTypeDefinition) .join(", ")}) callconv(jsc.conv) jsc.JSValue { if (comptime Environment.enable_logs) log_zig_class_domjit("${typeName}", "${name}"); - return @call(.always_inline, ${typeName}.${DOMJITName(fn)}, .{thisValue, globalObject, ${args.map((_, i) => `arg${i}`).join(", ")}}); + return @call(bun.callmod_inline, ${typeName}.${DOMJITName(fn)}, .{thisValue, globalObject, ${args.map((_, i) => `arg${i}`).join(", ")}}); } `; } @@ -2338,7 +2338,7 @@ const JavaScriptCoreBindings = struct { output += ` pub fn ${names.fn}(globalObject: *jsc.JSGlobalObject, callFrame: *jsc.CallFrame) callconv(jsc.conv) jsc.JSValue { if (comptime Environment.enable_logs) log_zig_class_method("${typeName}", "${name}", callFrame); - return @call(.always_inline, jsc.toJSHostFn(${typeName}.${fn}), .{globalObject, callFrame}); + return @call(bun.callmod_inline, jsc.toJSHostFn(${typeName}.${fn}), .{globalObject, callFrame}); } `; } @@ -2350,7 +2350,7 @@ const JavaScriptCoreBindings = struct { output += ` pub fn ${symbolName(typeName, "onStructuredCloneSerialize")}(thisValue: *${typeName}, globalObject: *jsc.JSGlobalObject, ctx: *anyopaque, writeBytes: WriteBytesFn) callconv(jsc.conv) void { if (comptime Environment.enable_logs) log_zig_structured_clone_serialize("${typeName}"); - @call(.always_inline, ${typeName}.onStructuredCloneSerialize, .{thisValue, globalObject, ctx, writeBytes}); + @call(bun.callmod_inline, ${typeName}.onStructuredCloneSerialize, .{thisValue, globalObject, ctx, writeBytes}); } `; @@ -2359,7 +2359,7 @@ const JavaScriptCoreBindings = struct { output += ` pub fn ${exports.get("structuredClone_transferable")}(thisValue: *${typeName}, globalObject: *jsc.JSGlobalObject, ctx: *anyopaque, write: WriteBytesFn) callconv(jsc.conv) void { if (comptime Environment.enable_logs) log_zig_structured_clone_transfer("${typeName}"); - @call(.always_inline, ${typeName}.onStructuredCloneTransfer, .{thisValue, globalObject, ctx, write}); + @call(bun.callmod_inline, ${typeName}.onStructuredCloneTransfer, .{thisValue, globalObject, ctx, write}); } `; } @@ -2369,7 +2369,7 @@ const JavaScriptCoreBindings = struct { output += ` pub fn ${symbolName(typeName, "onStructuredCloneDeserialize")}(globalObject: *jsc.JSGlobalObject, ptr: *[*]u8, end: [*]u8) callconv(jsc.conv) jsc.JSValue { if (comptime Environment.enable_logs) log_zig_structured_clone_deserialize("${typeName}"); - return @call(.always_inline, jsc.toJSHostCall, .{ globalObject, @src(), ${typeName}.onStructuredCloneDeserialize, .{globalObject, ptr, end} }); + return @call(bun.callmod_inline, jsc.toJSHostCall, .{ globalObject, @src(), ${typeName}.onStructuredCloneDeserialize, .{globalObject, ptr, end} }); } `; } else { diff --git a/src/codegen/generate-js2native.ts b/src/codegen/generate-js2native.ts index f8f8e82449..7c40ef1d7a 100644 --- a/src/codegen/generate-js2native.ts +++ b/src/codegen/generate-js2native.ts @@ -228,7 +228,7 @@ export function getJS2NativeZig(gs2NativeZigPath: string) { filename: x.filename, })}(global: *jsc.JSGlobalObject, call_frame: *jsc.CallFrame) callconv(jsc.conv) jsc.JSValue {`, ` const function = @import(${JSON.stringify(path.relative(path.dirname(gs2NativeZigPath), x.filename))});`, - ` return @call(.always_inline, jsc.toJSHostFn(function.${x.symbol_target}), .{global, call_frame});`, + ` return @call(bun.callmod_inline, jsc.toJSHostFn(function.${x.symbol_target}), .{global, call_frame});`, "}", ]), "comptime {", diff --git a/src/deps/uws/App.zig b/src/deps/uws/App.zig index 6e7e496cb4..2b0236e51c 100644 --- a/src/deps/uws/App.zig +++ b/src/deps/uws/App.zig @@ -85,7 +85,7 @@ pub fn NewApp(comptime ssl: bool) type { pub fn handle(res: *uws.uws_res, req: *Request, user_data: ?*anyopaque) callconv(.c) void { if (comptime UserDataType == void) { return @call( - .always_inline, + bun.callmod_inline, handler, .{ {}, @@ -95,7 +95,7 @@ pub fn NewApp(comptime ssl: bool) type { ); } else { return @call( - .always_inline, + bun.callmod_inline, handler, .{ @as(UserDataType, @ptrCast(@alignCast(user_data.?))), diff --git a/src/deps/uws/Response.zig b/src/deps/uws/Response.zig index dee0976a9b..0a1ce7f901 100644 --- a/src/deps/uws/Response.zig +++ b/src/deps/uws/Response.zig @@ -264,7 +264,7 @@ pub fn NewResponse(ssl_flag: i32) type { const Args = *@TypeOf(args_tuple); pub fn handle(user_data: ?*anyopaque) callconv(.c) void { const args: Args = @ptrCast(@alignCast(user_data.?)); - @call(.always_inline, handler_fn, args.*); + @call(bun.callmod_inline, handler_fn, args.*); } }; @@ -436,7 +436,7 @@ pub const AnyResponse = union(enum) { switch (this) { inline .SSL, .TCP => |resp, ssl| resp.onData(UserDataType, struct { pub fn onDataCallback(user_data: UserDataType, _: *uws.NewApp(ssl == .SSL).Response, data: []const u8, last: bool) void { - @call(.always_inline, handler, .{ user_data, data, last }); + @call(bun.callmod_inline, handler, .{ user_data, data, last }); } }.onDataCallback, optional_data), } diff --git a/src/js_printer.zig b/src/js_printer.zig index 284fe0f80f..c1733e4606 100644 --- a/src/js_printer.zig +++ b/src/js_printer.zig @@ -831,14 +831,14 @@ fn NewPrinter( fn fmt(p: *Printer, comptime str: string, args: anytype) !void { const len = @call( - .always_inline, + bun.callmod_inline, std.fmt.count, .{ str, args }, ); var ptr = try p.writer.reserve(len); const written = @call( - .always_inline, + bun.callmod_inline, std.fmt.bufPrint, .{ ptr[0..len], str, args }, ) catch unreachable; diff --git a/src/router.zig b/src/router.zig index 2bea8ac7a6..875d7da9be 100644 --- a/src/router.zig +++ b/src/router.zig @@ -601,7 +601,7 @@ pub const Route = struct { .eq => switch (a.kind) { // static + dynamic are sorted alphabetically .static, .dynamic => @call( - .always_inline, + bun.callmod_inline, sortByNameString, .{ ctx, @@ -612,7 +612,7 @@ pub const Route = struct { // catch all and optional catch all must appear below dynamic .catch_all, .optional_catch_all => switch (std.math.order(a.param_count, b.param_count)) { .eq => @call( - .always_inline, + bun.callmod_inline, sortByNameString, .{ ctx, diff --git a/src/string/immutable/unicode.zig b/src/string/immutable/unicode.zig index 865f7be7df..6e704a6098 100644 --- a/src/string/immutable/unicode.zig +++ b/src/string/immutable/unicode.zig @@ -1885,15 +1885,7 @@ pub fn encodeUTF8Comptime(comptime cp: u32) []const u8 { // This is a clone of golang's "utf8.EncodeRune" that has been modified to encode using // WTF-8 instead. See https://simonsapin.github.io/wtf-8/ for more info. pub fn encodeWTF8Rune(p: *[4]u8, r: i32) u3_fast { - return @call( - .always_inline, - encodeWTF8RuneT, - .{ - p, - u32, - @as(u32, @intCast(r)), - }, - ); + return encodeWTF8RuneT(p, u32, @intCast(r)); } pub fn encodeWTF8RuneT(p: *[4]u8, comptime R: type, r: R) u3_fast { From 2cb8d4eae82d321fed79b52d6af54c0a54053786 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Sat, 15 Nov 2025 16:45:37 -0800 Subject: [PATCH 009/212] cmake: remove GIT_CHANGED_SOURCES (#24737) dead code --- cmake/analysis/RunClangFormat.cmake | 20 ----------------- cmake/analysis/RunClangTidy.cmake | 23 +------------------ cmake/analysis/RunPrettier.cmake | 20 ----------------- cmake/analysis/RunZigFormat.cmake | 19 ---------------- cmake/tools/SetupGit.cmake | 34 +---------------------------- 5 files changed, 2 insertions(+), 114 deletions(-) diff --git a/cmake/analysis/RunClangFormat.cmake b/cmake/analysis/RunClangFormat.cmake index 106ac54ef6..f290116b53 100644 --- a/cmake/analysis/RunClangFormat.cmake +++ b/cmake/analysis/RunClangFormat.cmake @@ -34,26 +34,6 @@ register_command( ALWAYS_RUN ) -if(GIT_CHANGED_SOURCES) - set(CLANG_FORMAT_CHANGED_SOURCES) - foreach(source ${CLANG_FORMAT_SOURCES}) - list(FIND GIT_CHANGED_SOURCES ${source} index) - if(NOT ${index} EQUAL -1) - list(APPEND CLANG_FORMAT_CHANGED_SOURCES ${source}) - endif() - endforeach() -endif() - -if(CLANG_FORMAT_CHANGED_SOURCES) - set(CLANG_FORMAT_DIFF_COMMAND ${CLANG_FORMAT_PROGRAM} - -i # edits files in-place - --verbose - ${CLANG_FORMAT_CHANGED_SOURCES} - ) -else() - set(CLANG_FORMAT_DIFF_COMMAND ${CMAKE_COMMAND} -E echo "No changed files for clang-format") -endif() - register_command( TARGET clang-format-diff diff --git a/cmake/analysis/RunClangTidy.cmake b/cmake/analysis/RunClangTidy.cmake index ee5782ade8..23e1422c27 100644 --- a/cmake/analysis/RunClangTidy.cmake +++ b/cmake/analysis/RunClangTidy.cmake @@ -3,7 +3,7 @@ set(CLANG_TIDY_SOURCES ${BUN_C_SOURCES} ${BUN_CXX_SOURCES}) set(CLANG_TIDY_COMMAND ${CLANG_TIDY_PROGRAM} - -p ${BUILD_PATH} + -p ${BUILD_PATH} --config-file=${CWD}/.clang-tidy ) @@ -40,27 +40,6 @@ register_command( ALWAYS_RUN ) -if(GIT_CHANGED_SOURCES) - set(CLANG_TIDY_CHANGED_SOURCES) - foreach(source ${CLANG_TIDY_SOURCES}) - list(FIND GIT_CHANGED_SOURCES ${source} index) - if(NOT ${index} EQUAL -1) - list(APPEND CLANG_TIDY_CHANGED_SOURCES ${source}) - endif() - endforeach() -endif() - -if(CLANG_TIDY_CHANGED_SOURCES) - set(CLANG_TIDY_DIFF_COMMAND ${CLANG_TIDY_PROGRAM} - ${CLANG_TIDY_CHANGED_SOURCES} - --fix - --fix-errors - --fix-notes - ) -else() - set(CLANG_TIDY_DIFF_COMMAND ${CMAKE_COMMAND} -E echo "No changed files for clang-tidy") -endif() - register_command( TARGET clang-tidy-diff diff --git a/cmake/analysis/RunPrettier.cmake b/cmake/analysis/RunPrettier.cmake index 8c8ceb1ba1..55122f1854 100644 --- a/cmake/analysis/RunPrettier.cmake +++ b/cmake/analysis/RunPrettier.cmake @@ -92,26 +92,6 @@ register_command( ALWAYS_RUN ) -if(GIT_CHANGED_SOURCES) - set(PRETTIER_CHANGED_SOURCES) - foreach(source ${PRETTIER_SOURCES}) - list(FIND GIT_CHANGED_SOURCES ${source} index) - if(NOT ${index} EQUAL -1) - list(APPEND PRETTIER_CHANGED_SOURCES ${source}) - endif() - endforeach() -endif() - -if(PRETTIER_CHANGED_SOURCES) - set(PRETTIER_DIFF_COMMAND ${PRETTIER_COMMAND} - --write - --plugin=prettier-plugin-organize-imports - ${PRETTIER_CHANGED_SOURCES} - ) -else() - set(PRETTIER_DIFF_COMMAND ${CMAKE_COMMAND} -E echo "No changed files for prettier") -endif() - register_command( TARGET prettier-diff diff --git a/cmake/analysis/RunZigFormat.cmake b/cmake/analysis/RunZigFormat.cmake index 0ff7c23865..9486eb4368 100644 --- a/cmake/analysis/RunZigFormat.cmake +++ b/cmake/analysis/RunZigFormat.cmake @@ -25,25 +25,6 @@ register_command( ALWAYS_RUN ) -if(GIT_CHANGED_SOURCES) - set(ZIG_FORMAT_CHANGED_SOURCES) - foreach(source ${ZIG_FORMAT_SOURCES}) - list(FIND GIT_CHANGED_SOURCES ${source} index) - if(NOT ${index} EQUAL -1) - list(APPEND ZIG_FORMAT_CHANGED_SOURCES ${source}) - endif() - endforeach() -endif() - -if(ZIG_FORMAT_CHANGED_SOURCES) - set(ZIG_FORMAT_DIFF_COMMAND ${ZIG_EXECUTABLE} - fmt - ${ZIG_FORMAT_CHANGED_SOURCES} - ) -else() - set(ZIG_FORMAT_DIFF_COMMAND ${CMAKE_COMMAND} -E echo "No changed files for zig-format") -endif() - register_command( TARGET zig-format-diff diff --git a/cmake/tools/SetupGit.cmake b/cmake/tools/SetupGit.cmake index 7f28fe7743..5e084991a7 100644 --- a/cmake/tools/SetupGit.cmake +++ b/cmake/tools/SetupGit.cmake @@ -4,41 +4,9 @@ find_command( COMMAND git REQUIRED - OFF + ${CI} ) if(NOT GIT_PROGRAM) return() endif() - -set(GIT_DIFF_COMMAND ${GIT_PROGRAM} diff --no-color --name-only --diff-filter=AMCR origin/main HEAD) - -execute_process( - COMMAND - ${GIT_DIFF_COMMAND} - WORKING_DIRECTORY - ${CWD} - OUTPUT_STRIP_TRAILING_WHITESPACE - OUTPUT_VARIABLE - GIT_DIFF - ERROR_STRIP_TRAILING_WHITESPACE - ERROR_VARIABLE - GIT_DIFF_ERROR - RESULT_VARIABLE - GIT_DIFF_RESULT -) - -if(NOT GIT_DIFF_RESULT EQUAL 0) - message(WARNING "Command failed: ${GIT_DIFF_COMMAND} ${GIT_DIFF_ERROR}") - return() -endif() - -string(REPLACE "\n" ";" GIT_CHANGED_SOURCES "${GIT_DIFF}") - -if(CI) - set(GIT_CHANGED_SOURCES "${GIT_CHANGED_SOURCES}") - message(STATUS "Set GIT_CHANGED_SOURCES: ${GIT_CHANGED_SOURCES}") -endif() - -list(TRANSFORM GIT_CHANGED_SOURCES PREPEND ${CWD}/) -list(LENGTH GIT_CHANGED_SOURCES GIT_CHANGED_SOURCES_COUNT) From 87eca6bbc7adc5c34135b0e45827b24d54083b0c Mon Sep 17 00:00:00 2001 From: Michael H Date: Sun, 16 Nov 2025 19:23:01 +1100 Subject: [PATCH 010/212] docs: re-apply many recent changes that somehow aren't present (#24719) lots of recent changes aren't present, so this reapplies them --- CONTRIBUTING.md | 2 +- docs/bundler/executables.mdx | 40 +++++- docs/bundler/index.mdx | 2 +- docs/docs.json | 3 +- docs/guides/html-rewriter/extract-links.mdx | 11 +- docs/guides/http/file-uploads.mdx | 4 +- docs/guides/install/add-peer.mdx | 4 +- docs/guides/runtime/cicd.mdx | 12 +- docs/guides/runtime/define-constant.mdx | 8 +- docs/guides/test/concurrent-test-glob.mdx | 143 ++++++++++++++++++++ docs/guides/test/spy-on.mdx | 4 +- docs/guides/websocket/context.mdx | 11 +- docs/guides/websocket/pubsub.mdx | 5 +- docs/guides/websocket/simple.mdx | 5 +- docs/pm/cli/info.mdx | 70 ++++++++++ docs/pm/cli/install.mdx | 127 ++++++++++++++++- docs/pm/cli/link.mdx | 13 ++ docs/pm/cli/publish.mdx | 8 ++ docs/pm/overrides.mdx | 12 +- docs/pm/workspaces.mdx | 18 ++- docs/project/contributing.mdx | 75 ++++++++-- docs/quickstart.mdx | 11 +- docs/runtime/bunfig.mdx | 54 +++++++- docs/runtime/html-rewriter.mdx | 33 ++--- docs/runtime/http/routing.mdx | 2 +- docs/runtime/http/websockets.mdx | 10 +- docs/runtime/module-resolution.mdx | 23 ++++ docs/runtime/redis.mdx | 1 + docs/runtime/utils.mdx | 4 +- docs/test/configuration.mdx | 47 +++++++ docs/test/reporters.mdx | 9 ++ packages/bun-types/bun.d.ts | 2 +- test/bundler/expectBundled.ts | 2 +- 33 files changed, 681 insertions(+), 94 deletions(-) create mode 100644 docs/guides/test/concurrent-test-glob.mdx create mode 100644 docs/pm/cli/info.mdx diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9d7785abb1..192ce5ad63 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -201,7 +201,7 @@ Bun generally takes about 2.5 minutes to compile a debug build when there are Zi - Batch up your changes - Ensure zls is running with incremental watching for LSP errors (if you use VSCode and install Zig and run `bun run build` once to download Zig, this should just work) - Prefer using the debugger ("CodeLLDB" in VSCode) to step through the code. -- Use debug logs. `BUN_DEBUG_=1` will enable debug logging for the corresponding `Output.scoped(., .hidden)` logs. You can also set `BUN_DEBUG_QUIET_LOGS=1` to disable all debug logging that isn't explicitly enabled. To dump debug lgos into a file, `BUN_DEBUG=.log`. Debug logs are aggressively removed in release builds. +- Use debug logs. `BUN_DEBUG_=1` will enable debug logging for the corresponding `Output.scoped(., .hidden)` logs. You can also set `BUN_DEBUG_QUIET_LOGS=1` to disable all debug logging that isn't explicitly enabled. To dump debug logs into a file, `BUN_DEBUG=.log`. Debug logs are aggressively removed in release builds. - src/js/\*\*.ts changes are pretty much instant to rebuild. C++ changes are a bit slower, but still much faster than the Zig code (Zig is one compilation unit, C++ is many). ## Code generation scripts diff --git a/docs/bundler/executables.mdx b/docs/bundler/executables.mdx index 79e6d6a55e..8de435e715 100644 --- a/docs/bundler/executables.mdx +++ b/docs/bundler/executables.mdx @@ -90,7 +90,7 @@ The order of the `--target` flag does not matter, as long as they're delimited b | bun-linux-x64 | Linux | x64 | āœ… | āœ… | glibc | | bun-linux-arm64 | Linux | arm64 | āœ… | N/A | glibc | | bun-windows-x64 | Windows | x64 | āœ… | āœ… | - | -| ~~bun-windows-arm64~~ | Windows | arm64 | āŒ | āŒ | - | +| ~~bun-windows-arm64~~ | ~~Windows~~ | ~~arm64~~ | āŒ | āŒ | - | | bun-darwin-x64 | macOS | x64 | āœ… | āœ… | - | | bun-darwin-arm64 | macOS | arm64 | āœ… | N/A | - | | bun-linux-x64-musl | Linux | x64 | āœ… | āœ… | musl | @@ -524,12 +524,46 @@ codesign -vvv --verify ./myapp --- +## Code splitting + +Standalone executables support code splitting. Use `--compile` with `--splitting` to create an executable that loads code-split chunks at runtime. + +```bash +bun build --compile --splitting ./src/entry.ts --outdir ./build +``` + + + +```ts src/entry.ts icon="/icons/typescript.svg" +console.log("Entrypoint loaded"); +const lazy = await import("./lazy.ts"); +lazy.hello(); +``` + +```ts src/lazy.ts icon="/icons/typescript.svg" +export function hello() { + console.log("Lazy module loaded"); +} +``` + + + +```bash terminal icon="terminal" +./build/entry +``` + +```txt +Entrypoint loaded +Lazy module loaded +``` + +--- + ## Unsupported CLI arguments Currently, the `--compile` flag can only accept a single entrypoint at a time and does not support the following flags: -- `--outdir` — use `outfile` instead. -- `--splitting` +- `--outdir` — use `outfile` instead (except when using with `--splitting`). - `--public-path` - `--target=node` or `--target=browser` - `--no-bundle` - we always bundle everything into the executable. diff --git a/docs/bundler/index.mdx b/docs/bundler/index.mdx index 6204c42bca..ce0736b746 100644 --- a/docs/bundler/index.mdx +++ b/docs/bundler/index.mdx @@ -1376,7 +1376,7 @@ interface BuildConfig { publicPath?: string; define?: Record; loader?: { [k in string]: Loader }; - sourcemap?: "none" | "linked" | "inline" | "external" | "linked" | boolean; // default: "none", true -> "inline" + sourcemap?: "none" | "linked" | "inline" | "external" | boolean; // default: "none", true -> "inline" /** * package.json `exports` conditions used when resolving imports * diff --git a/docs/docs.json b/docs/docs.json index cfb3924cc3..2ad4eae8a2 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -188,7 +188,7 @@ { "group": "Publishing & Analysis", "icon": "upload", - "pages": ["/pm/cli/publish", "/pm/cli/outdated", "/pm/cli/why", "/pm/cli/audit"] + "pages": ["/pm/cli/publish", "/pm/cli/outdated", "/pm/cli/why", "/pm/cli/audit", "/pm/cli/info"] }, { "group": "Workspace Management", @@ -456,6 +456,7 @@ "pages": [ "/guides/test/run-tests", "/guides/test/watch-mode", + "/guides/test/concurrent-test-glob", "/guides/test/migrate-from-jest", "/guides/test/mock-functions", "/guides/test/spy-on", diff --git a/docs/guides/html-rewriter/extract-links.mdx b/docs/guides/html-rewriter/extract-links.mdx index d2b8e2962f..d019c3e5a4 100644 --- a/docs/guides/html-rewriter/extract-links.mdx +++ b/docs/guides/html-rewriter/extract-links.mdx @@ -37,6 +37,7 @@ await extractLinks("https://bun.com"); When scraping websites, you often want to convert relative URLs (like `/docs`) to absolute URLs. Here's how to handle URL resolution: +{/* prettier-ignore */} ```ts extract-links.ts icon="/icons/typescript.svg" async function extractLinksFromURL(url: string) { const response = await fetch(url); @@ -47,13 +48,11 @@ async function extractLinksFromURL(url: string) { const href = el.getAttribute("href"); if (href) { // Convert relative URLs to absolute // [!code ++] - try { - // [!code ++] + try { // [!code ++] const absoluteURL = new URL(href, url).href; // [!code ++] - links.add(absoluteURL); // [!code ++] - } catch { - // [!code ++] - links.add(href); + links.add(absoluteURL); + } catch { // [!code ++] + links.add(href); // [!code ++] } // [!code ++] } }, diff --git a/docs/guides/http/file-uploads.mdx b/docs/guides/http/file-uploads.mdx index b704a7f82d..787487039f 100644 --- a/docs/guides/http/file-uploads.mdx +++ b/docs/guides/http/file-uploads.mdx @@ -65,6 +65,7 @@ First we use the [`.formData()`](https://developer.mozilla.org/en-US/docs/Web/AP Finally, we write the `Blob` to disk using [`Bun.write()`](https://bun.com/docs/api/file-io#writing-files-bun-write). +{/* prettier-ignore */} ```ts index.ts icon="/icons/typescript.svg" const server = Bun.serve({ port: 4000, @@ -80,8 +81,7 @@ const server = Bun.serve({ }); // parse formdata at /action // [!code ++] - if (url.pathname === "/action") { - // [!code ++] + if (url.pathname === "/action") { // [!code ++] const formdata = await req.formData(); // [!code ++] const name = formdata.get("name"); // [!code ++] const profilePicture = formdata.get("profilePicture"); // [!code ++] diff --git a/docs/guides/install/add-peer.mdx b/docs/guides/install/add-peer.mdx index 7ded7f6e38..e50980a74f 100644 --- a/docs/guides/install/add-peer.mdx +++ b/docs/guides/install/add-peer.mdx @@ -26,14 +26,14 @@ This will add the package to `peerDependencies` in `package.json`. Running `bun install` will install peer dependencies by default, unless marked optional in `peerDependenciesMeta`. +{/* prettier-ignore */} ```json package.json icon="file-json" { "peerDependencies": { "@types/bun": "^1.3.2" }, "peerDependenciesMeta": { - "@types/bun": { - // [!code ++] + "@types/bun": { // [!code ++] "optional": true // [!code ++] } // [!code ++] } diff --git a/docs/guides/runtime/cicd.mdx b/docs/guides/runtime/cicd.mdx index 6c68246f2e..a4aae4f126 100644 --- a/docs/guides/runtime/cicd.mdx +++ b/docs/guides/runtime/cicd.mdx @@ -15,12 +15,12 @@ jobs: steps: # ... - uses: actions/checkout@v4 - - uses: oven-sh/setup-bun@v2 // [!code ++] + - uses: oven-sh/setup-bun@v2 # [!code ++] # run any `bun` or `bunx` command - - run: bun install // [!code ++] - - run: bun index.ts // [!code ++] - - run: bun run build // [!code ++] + - run: bun install # [!code ++] + - run: bun index.ts # [!code ++] + - run: bun run build # [!code ++] ``` --- @@ -36,8 +36,8 @@ jobs: steps: # ... - uses: oven-sh/setup-bun@v2 - with: // [!code ++] - bun-version: 1.2.0 # or "latest", "canary", // [!code ++] + with: # [!code ++] + bun-version: 1.2.0 # or "latest", "canary", # [!code ++] ``` --- diff --git a/docs/guides/runtime/define-constant.mdx b/docs/guides/runtime/define-constant.mdx index 591c5a6f96..542fe40961 100644 --- a/docs/guides/runtime/define-constant.mdx +++ b/docs/guides/runtime/define-constant.mdx @@ -27,9 +27,9 @@ if (process.env.NODE_ENV === "production") { Before the code reaches the JavaScript engine, Bun replaces `process.env.NODE_ENV` with `"production"`. +{/* prettier-ignore */} ```ts -if ("production" === "production") { - // [!code ++] +if ("production" === "production") { // [!code ++] console.log("Production mode"); } else { console.log("Development mode"); @@ -42,9 +42,9 @@ It doesn't stop there. Bun's optimizing transpiler is smart enough to do some ba Since `"production" === "production"` is always `true`, Bun replaces the entire expression with the `true` value. +{/* prettier-ignore */} ```ts -if (true) { - // [!code ++] +if (true) { // [!code ++] console.log("Production mode"); } else { console.log("Development mode"); diff --git a/docs/guides/test/concurrent-test-glob.mdx b/docs/guides/test/concurrent-test-glob.mdx new file mode 100644 index 0000000000..8a2d5a2c8e --- /dev/null +++ b/docs/guides/test/concurrent-test-glob.mdx @@ -0,0 +1,143 @@ +--- +title: Selectively run tests concurrently with glob patterns +sidebarTitle: Concurrent test glob +mode: center +--- + +This guide demonstrates how to use the `concurrentTestGlob` option to selectively run tests concurrently based on file naming patterns. + +## Project Structure + +```sh title="Project Structure" icon="folder-tree" +my-project/ +ā”œā”€ā”€ bunfig.toml +ā”œā”€ā”€ tests/ +│ ā”œā”€ā”€ unit/ +│ │ ā”œā”€ā”€ math.test.ts # Sequential +│ │ └── utils.test.ts # Sequential +│ └── integration/ +│ ā”œā”€ā”€ concurrent-api.test.ts # Concurrent +│ └── concurrent-database.test.ts # Concurrent +``` + +## Configuration + +Configure your `bunfig.toml` to run test files with "concurrent-" prefix concurrently: + +```toml title="bunfig.toml" icon="settings" +[test] +# Run all test files with "concurrent-" prefix concurrently +concurrentTestGlob = "**/concurrent-*.test.ts" +``` + +## Test Files + +### Unit Test (Sequential) + +Sequential tests are good for tests that share state or have specific ordering requirements: + +```ts title="tests/unit/math.test.ts" icon="/icons/typescript.svg" +import { test, expect } from "bun:test"; + +// These tests run sequentially by default +let sharedState = 0; + +test("addition", () => { + sharedState = 5 + 3; + expect(sharedState).toBe(8); +}); + +test("uses previous state", () => { + // This test depends on the previous test's state + expect(sharedState).toBe(8); +}); +``` + +### Integration Test (Concurrent) + +Tests in files matching the glob pattern automatically run concurrently: + +```ts title="tests/integration/concurrent-api.test.ts" icon="/icons/typescript.svg" +import { test, expect } from "bun:test"; + +// These tests automatically run concurrently due to filename matching the glob pattern. +// Using test() is equivalent to test.concurrent() when the file matches concurrentTestGlob. +// Each test is independent and can run in parallel. + +test("fetch user data", async () => { + const response = await fetch("/api/user/1"); + expect(response.ok).toBe(true); +}); + +test("fetch posts", async () => { + const response = await fetch("/api/posts"); + expect(response.ok).toBe(true); +}); + +test("fetch comments", async () => { + const response = await fetch("/api/comments"); + expect(response.ok).toBe(true); +}); +``` + +## Running Tests + +```bash terminal icon="terminal" +# Run all tests - concurrent-*.test.ts files will run concurrently +bun test + +# Override: Force ALL tests to run concurrently +# Note: This overrides bunfig.toml and runs all tests concurrently, regardless of glob +bun test --concurrent + +# Run only unit tests (sequential) +bun test tests/unit + +# Run only integration tests (concurrent due to glob pattern) +bun test tests/integration +``` + +## Benefits + +1. **Gradual Migration**: Migrate to concurrent tests file by file by renaming them +2. **Clear Organization**: File naming convention indicates execution mode +3. **Performance**: Integration tests run faster in parallel +4. **Safety**: Unit tests remain sequential where needed +5. **Flexibility**: Easy to change execution mode by renaming files + +## Migration Strategy + +To migrate existing tests to concurrent execution: + +1. **Start with independent integration tests** - These typically don't share state +2. **Rename files to match the glob pattern**: `mv api.test.ts concurrent-api.test.ts` +3. **Verify tests still pass** - Run `bun test` to ensure no race conditions +4. **Monitor for shared state issues** - Watch for flaky tests or unexpected failures +5. **Continue migrating stable tests incrementally** - Don't rush the migration + +## Tips + +- **Use descriptive prefixes**: `concurrent-`, `parallel-`, `async-` +- **Keep related sequential tests together** in the same directory +- **Document why certain tests must remain sequential** with comments +- **Use `test.concurrent()` for fine-grained control** in sequential files + (Note: In files matched by `concurrentTestGlob`, plain `test()` already runs concurrently) + +## Multiple Patterns + +You can specify multiple patterns for different test categories: + +```toml title="bunfig.toml" icon="settings" +[test] +concurrentTestGlob = [ + "**/integration/*.test.ts", + "**/e2e/*.test.ts", + "**/concurrent-*.test.ts" +] +``` + +This configuration will run tests concurrently if they match any of these patterns: + +- All tests in `integration/` directories +- All tests in `e2e/` directories +- All tests with `concurrent-` prefix anywhere in the project diff --git a/docs/guides/test/spy-on.mdx b/docs/guides/test/spy-on.mdx index b5dea537e2..74519c08c5 100644 --- a/docs/guides/test/spy-on.mdx +++ b/docs/guides/test/spy-on.mdx @@ -23,6 +23,7 @@ const spy = spyOn(leo, "sayHi"); Once the spy is created, it can be used to write `expect` assertions relating to method calls. +{/* prettier-ignore */} ```ts import { test, expect, spyOn } from "bun:test"; @@ -35,8 +36,7 @@ const leo = { const spy = spyOn(leo, "sayHi"); -test("turtles", () => { - // [!code ++] +test("turtles", () => { // [!code ++] expect(spy).toHaveBeenCalledTimes(0); // [!code ++] leo.sayHi("pizza"); // [!code ++] expect(spy).toHaveBeenCalledTimes(1); // [!code ++] diff --git a/docs/guides/websocket/context.mdx b/docs/guides/websocket/context.mdx index d313de2605..85c8ecc05b 100644 --- a/docs/guides/websocket/context.mdx +++ b/docs/guides/websocket/context.mdx @@ -9,7 +9,7 @@ When building a WebSocket server, it's typically necessary to store some identif With [Bun.serve()](https://bun.com/docs/api/websockets contextual-data), this "contextual data" is set when the connection is initially upgraded by passing a `data` parameter in the `server.upgrade()` call. ```ts server.ts icon="/icons/typescript.svg" -Bun.serve<{ socketId: number }>({ +Bun.serve({ fetch(req, server) { const success = server.upgrade(req, { data: { @@ -22,6 +22,9 @@ Bun.serve<{ socketId: number }>({ // ... }, websocket: { + // TypeScript: specify the type of ws.data like this + data: {} as { socketId: number }, + // define websocket handlers async message(ws, message) { // the contextual data is available as the `data` property @@ -43,8 +46,7 @@ type WebSocketData = { userId: string; }; -// TypeScript: specify the type of `data` -Bun.serve({ +Bun.serve({ async fetch(req, server) { // use a library to parse cookies const cookies = parseCookies(req.headers.get("Cookie")); @@ -62,6 +64,9 @@ Bun.serve({ if (upgraded) return undefined; }, websocket: { + // TypeScript: specify the type of ws.data like this + data: {} as WebSocketData, + async message(ws, message) { // save the message to a database await saveMessageToDatabase({ diff --git a/docs/guides/websocket/pubsub.mdx b/docs/guides/websocket/pubsub.mdx index b70c094046..056d37b838 100644 --- a/docs/guides/websocket/pubsub.mdx +++ b/docs/guides/websocket/pubsub.mdx @@ -9,7 +9,7 @@ Bun's server-side `WebSocket` API provides a native pub-sub API. Sockets can be This code snippet implements a simple single-channel chat server. ```ts server.ts icon="/icons/typescript.svg" -const server = Bun.serve<{ username: string }>({ +const server = Bun.serve({ fetch(req, server) { const cookies = req.headers.get("cookie"); const username = getUsernameFromCookies(cookies); @@ -19,6 +19,9 @@ const server = Bun.serve<{ username: string }>({ return new Response("Hello world"); }, websocket: { + // TypeScript: specify the type of ws.data like this + data: {} as { username: string }, + open(ws) { const msg = `${ws.data.username} has entered the chat`; ws.subscribe("the-group-chat"); diff --git a/docs/guides/websocket/simple.mdx b/docs/guides/websocket/simple.mdx index 1a2dd2dc15..4450b0e418 100644 --- a/docs/guides/websocket/simple.mdx +++ b/docs/guides/websocket/simple.mdx @@ -9,7 +9,7 @@ Start a simple WebSocket server using [`Bun.serve`](https://bun.com/docs/api/htt Inside `fetch`, we attempt to upgrade incoming `ws:` or `wss:` requests to WebSocket connections. ```ts server.ts icon="/icons/typescript.svg" -const server = Bun.serve<{ authToken: string }>({ +const server = Bun.serve({ fetch(req, server) { const success = server.upgrade(req); if (success) { @@ -22,6 +22,9 @@ const server = Bun.serve<{ authToken: string }>({ return new Response("Hello world!"); }, websocket: { + // TypeScript: specify the type of ws.data like this + data: {} as { authToken: string }, + // this is called when a message is received async message(ws, message) { console.log(`Received ${message}`); diff --git a/docs/pm/cli/info.mdx b/docs/pm/cli/info.mdx new file mode 100644 index 0000000000..9e4feb1352 --- /dev/null +++ b/docs/pm/cli/info.mdx @@ -0,0 +1,70 @@ +--- +title: "bun info" +description: "Display package metadata from the npm registry" +--- + +`bun info` displays package metadata from the npm registry. + +## Usage + +```bash terminal icon="terminal" +bun info react +``` + +This will display information about the `react` package, including its latest version, description, homepage, dependencies, and more. + +## Viewing specific versions + +To view information about a specific version: + +```bash terminal icon="terminal" +bun info react@18.0.0 +``` + +## Viewing specific properties + +You can also query specific properties from the package metadata: + +```bash terminal icon="terminal" +bun info react version +bun info react dependencies +bun info react repository.url +``` + +## JSON output + +To get the output in JSON format, use the `--json` flag: + +```bash terminal icon="terminal" +bun info react --json +``` + +## Alias + +`bun pm view` is an alias for `bun info`: + +```bash terminal icon="terminal" +bun pm view react # equivalent to: bun info react +``` + +## Examples + +```bash terminal icon="terminal" +# View basic package information +bun info is-number + +# View a specific version +bun info is-number@7.0.0 + +# View all available versions +bun info is-number versions + +# View package dependencies +bun info express dependencies + +# View package homepage +bun info lodash homepage + +# Get JSON output +bun info react --json +``` diff --git a/docs/pm/cli/install.mdx b/docs/pm/cli/install.mdx index e5cfa58836..65b0c3ce8a 100644 --- a/docs/pm/cli/install.mdx +++ b/docs/pm/cli/install.mdx @@ -134,14 +134,14 @@ For more information on filtering with `bun install`, refer to [Package Manager Bun supports npm's `"overrides"` and Yarn's `"resolutions"` in `package.json`. These are mechanisms for specifying a version range for _metadependencies_—the dependencies of your dependencies. Refer to [Package manager > Overrides and resolutions](/pm/overrides) for complete documentation. +{/* prettier-ignore */} ```json package.json file="file-json" { "name": "my-app", "dependencies": { "foo": "^2.0.0" }, - "overrides": { - // [!code ++] + "overrides": { // [!code ++] "bar": "~4.4.0" // [!code ++] } // [!code ++] } @@ -304,7 +304,16 @@ For more advanced security scanning, including integration with services & custo ## Configuration -The default behavior of `bun install` can be configured in `bunfig.toml`. The default values are shown below. +### Configuring `bun install` with `bunfig.toml` + +`bunfig.toml` is searched for in the following paths on `bun install`, `bun remove`, and `bun add`: + +1. `$XDG_CONFIG_HOME/.bunfig.toml` or `$HOME/.bunfig.toml` +2. `./bunfig.toml` + +If both are found, the results are merged together. + +Configuring with `bunfig.toml` is optional. Bun tries to be zero configuration in general, but that's not always possible. The default behavior of `bun install` can be configured in `bunfig.toml`. The default values are shown below. ```toml bunfig.toml icon="settings" [install] @@ -345,7 +354,29 @@ minimumReleaseAge = 259200 # seconds minimumReleaseAgeExcludes = ["@types/node", "typescript"] ``` ---- +### Configuring with environment variables + +Environment variables have a higher priority than `bunfig.toml`. + +| Name | Description | +| ---------------------------------- | ------------------------------------------------------------- | +| `BUN_CONFIG_REGISTRY` | Set an npm registry (default: https://registry.npmjs.org) | +| `BUN_CONFIG_TOKEN` | Set an auth token (currently does nothing) | +| `BUN_CONFIG_YARN_LOCKFILE` | Save a Yarn v1-style yarn.lock | +| `BUN_CONFIG_LINK_NATIVE_BINS` | Point `bin` in package.json to a platform-specific dependency | +| `BUN_CONFIG_SKIP_SAVE_LOCKFILE` | Don’t save a lockfile | +| `BUN_CONFIG_SKIP_LOAD_LOCKFILE` | Don’t load a lockfile | +| `BUN_CONFIG_SKIP_INSTALL_PACKAGES` | Don’t install any packages | + +Bun always tries to use the fastest available installation method for the target platform. On macOS, that’s `clonefile` and on Linux, that’s `hardlink`. You can change which installation method is used with the `--backend` flag. When unavailable or on error, `clonefile` and `hardlink` fallsback to a platform-specific implementation of copying files. + +Bun stores installed packages from npm in `~/.bun/install/cache/${name}@${version}`. Note that if the semver version has a `build` or a `pre` tag, it is replaced with a hash of that value instead. This is to reduce the chances of errors from long file paths, but unfortunately complicates figuring out where a package was installed on disk. + +When the `node_modules` folder exists, before installing, Bun checks if the `"name"` and `"version"` in `package/package.json` in the expected node_modules folder matches the expected `name` and `version`. This is how it determines whether it should install. It uses a custom JSON parser which stops parsing as soon as it finds `"name"` and `"version"`. + +When a `bun.lock` doesn’t exist or `package.json` has changed dependencies, tarballs are downloaded & extracted eagerly while resolving. + +When a `bun.lock` exists and `package.json` hasn’t changed, Bun downloads missing dependencies lazily. If the package with a matching `name` & `version` already exists in the expected location within `node_modules`, Bun won’t attempt to download the tarball. ## CI/CD @@ -395,6 +426,94 @@ jobs: run: bun run build ``` +## Platform-specific dependencies? + +bun stores normalized `cpu` and `os` values from npm in the lockfile, along with the resolved packages. It skips downloading, extracting, and installing packages disabled for the current target at runtime. This means the lockfile won't change between platforms/architectures even if the packages ultimately installed do change. + +### `--cpu` and `--os` flags + +You can override the target platform for package selection: + +```bash +bun install --cpu=x64 --os=linux +``` + +This installs packages for the specified platform instead of the current system. Useful for cross-platform builds or when preparing deployments for different environments. + +**Accepted values for `--cpu`**: `arm64`, `x64`, `ia32`, `ppc64`, `s390x` + +**Accepted values for `--os`**: `linux`, `darwin`, `win32`, `freebsd`, `openbsd`, `sunos`, `aix` + +## Peer dependencies? + +Peer dependencies are handled similarly to yarn. `bun install` will automatically install peer dependencies. If the dependency is marked optional in `peerDependenciesMeta`, an existing dependency will be chosen if possible. + +## Lockfile + +`bun.lock` is Bun’s lockfile format. See [our blogpost about the text lockfile](https://bun.com/blog/bun-lock-text-lockfile). + +Prior to Bun 1.2, the lockfile was binary and called `bun.lockb`. Old lockfiles can be upgraded to the new format by running `bun install --save-text-lockfile --frozen-lockfile --lockfile-only`, and then deleting `bun.lockb`. + +## Cache + +To delete the cache: + +```bash +bun pm cache rm +# or +rm -rf ~/.bun/install/cache +``` + +## Platform-specific backends + +`bun install` uses different system calls to install dependencies depending on the platform. This is a performance optimization. You can force a specific backend with the `--backend` flag. + +**`hardlink`** is the default backend on Linux. Benchmarking showed it to be the fastest on Linux. + +```bash +rm -rf node_modules +bun install --backend hardlink +``` + +**`clonefile`** is the default backend on macOS. Benchmarking showed it to be the fastest on macOS. It is only available on macOS. + +```bash +rm -rf node_modules +bun install --backend clonefile +``` + +**`clonefile_each_dir`** is similar to `clonefile`, except it clones each file individually per directory. It is only available on macOS and tends to perform slower than `clonefile`. Unlike `clonefile`, this does not recursively clone subdirectories in one system call. + +```bash +rm -rf node_modules +bun install --backend clonefile_each_dir +``` + +**`copyfile`** is the fallback used when any of the above fail, and is the slowest. on macOS, it uses `fcopyfile()` and on linux it uses `copy_file_range()`. + +```bash +rm -rf node_modules +bun install --backend copyfile +``` + +**`symlink`** is typically only used for `file:` dependencies (and eventually `link:`) internally. To prevent infinite loops, it skips symlinking the `node_modules` folder. + +If you install with `--backend=symlink`, Node.js won't resolve node_modules of dependencies unless each dependency has its own node_modules folder or you pass `--preserve-symlinks` to `node` or `bun`. See [Node.js documentation on `--preserve-symlinks`](https://nodejs.org/api/cli.html#--preserve-symlinks). + +```bash +rm -rf node_modules +bun install --backend symlink +bun --preserve-symlinks ./my-file.js +node --preserve-symlinks ./my-file.js # https://nodejs.org/api/cli.html#--preserve-symlinks +``` + +## npm registry metadata + +Bun uses a binary format for caching NPM registry responses. This loads much faster than JSON and tends to be smaller on disk. +You will see these files in `~/.bun/install/cache/*.npm`. The filename pattern is `${hash(packageName)}.npm`. It’s a hash so that extra directories don’t need to be created for scoped packages. + +Bun's usage of `Cache-Control` ignores `Age`. This improves performance, but means bun may be about 5 minutes out of date to receive the latest package version metadata from npm. + ## pnpm migration Bun automatically migrates projects from pnpm to bun. When a `pnpm-lock.yaml` file is detected and no `bun.lock` file exists, Bun will automatically migrate the lockfile to `bun.lock` during installation. The original `pnpm-lock.yaml` file remains unmodified. diff --git a/docs/pm/cli/link.mdx b/docs/pm/cli/link.mdx index 6515ae30eb..860d6be2b4 100644 --- a/docs/pm/cli/link.mdx +++ b/docs/pm/cli/link.mdx @@ -43,6 +43,19 @@ In addition, the `--save` flag can be used to add `cool-pkg` to the `dependencie } ``` +## Unlinking + +Use `bun unlink` in the root directory to unregister a local package. + +```bash terminal icon="terminal" +cd /path/to/cool-pkg +bun unlink +``` + +```txt +bun unlink v1.x (7416672e) +``` + --- diff --git a/docs/pm/cli/publish.mdx b/docs/pm/cli/publish.mdx index af65bdfd96..c47f41fe51 100644 --- a/docs/pm/cli/publish.mdx +++ b/docs/pm/cli/publish.mdx @@ -89,6 +89,14 @@ The `--dry-run` flag can be used to simulate the publish process without actuall bun publish --dry-run ``` +### `--tolerate-republish` + +Exit with code 0 instead of 1 if the package version already exists. Useful in CI/CD where jobs may be re-run. + +```sh terminal icon="terminal" +bun publish --tolerate-republish +``` + ### `--gzip-level` Specify the level of gzip compression to use when packing the package. Only applies to `bun publish` without a tarball path argument. Values range from `0` to `9` (default is `9`). diff --git a/docs/pm/overrides.mdx b/docs/pm/overrides.mdx index a8e4f32083..cd7a89d5a5 100644 --- a/docs/pm/overrides.mdx +++ b/docs/pm/overrides.mdx @@ -5,14 +5,14 @@ description: "Control metadependency versions with npm overrides and Yarn resolu Bun supports npm's `"overrides"` and Yarn's `"resolutions"` in `package.json`. These are mechanisms for specifying a version range for _metadependencies_—the dependencies of your dependencies. +{/* prettier-ignore */} ```json package.json icon="file-json" { "name": "my-app", "dependencies": { "foo": "^2.0.0" }, - "overrides": { - // [!code ++] + "overrides": { // [!code ++] "bar": "~4.4.0" // [!code ++] } // [!code ++] } @@ -50,14 +50,14 @@ Add `bar` to the `"overrides"` field in `package.json`. Bun will defer to the sp overrides](https://docs.npmjs.com/cli/v9/configuring-npm/package-json#overrides) are not supported. +{/* prettier-ignore */} ```json package.json icon="file-json" { "name": "my-app", "dependencies": { "foo": "^2.0.0" }, - "overrides": { - // [!code ++] + "overrides": { // [!code ++] "bar": "~4.4.0" // [!code ++] } // [!code ++] } @@ -69,14 +69,14 @@ The syntax is similar for `"resolutions"`, which is Yarn's alternative to `"over As with `"overrides"`, _nested resolutions_ are not currently supported. +{/* prettier-ignore */} ```json package.json icon="file-json" { "name": "my-app", "dependencies": { "foo": "^2.0.0" }, - "resolutions": { - // [!code ++] + "resolutions": { // [!code ++] "bar": "~4.4.0" // [!code ++] } // [!code ++] } diff --git a/docs/pm/workspaces.mdx b/docs/pm/workspaces.mdx index 6570597dd4..e524822b89 100644 --- a/docs/pm/workspaces.mdx +++ b/docs/pm/workspaces.mdx @@ -30,7 +30,7 @@ It's common for a monorepo to have the following structure: In the root `package.json`, the `"workspaces"` key is used to indicate which subdirectories should be considered packages/workspaces within the monorepo. It's conventional to place all the workspace in a directory called `packages`. -```json +```json package.json icon="file-json" { "name": "my-project", "version": "1.0.0", @@ -42,14 +42,22 @@ In the root `package.json`, the `"workspaces"` key is used to indicate which sub ``` - **Glob support** — Bun supports full glob syntax in `"workspaces"` (see [here](/runtime/glob#supported-glob-patterns) - for a comprehensive list of supported syntax), _except_ for exclusions (e.g. `!**/excluded/**`), which are not - implemented yet. + **Glob support** — Bun supports full glob syntax in `"workspaces"`, including negative patterns (e.g. + `!**/excluded/**`). See [here](https://bun.com/docs/api/glob#supported-glob-patterns) for a comprehensive list of + supported syntax. +```json package.json icon="file-json" +{ + "name": "my-project", + "version": "1.0.0", + "workspaces": ["packages/**", "!packages/**/test/**", "!packages/**/template/**"] +} +``` + Each workspace has it's own `package.json`. When referencing other packages in the monorepo, semver or workspace protocols (e.g. `workspace:*`) can be used as the version field in your `package.json`. -```json +```json packages/pkg-a/package.json icon="file-json" { "name": "pkg-a", "version": "1.0.0", diff --git a/docs/project/contributing.mdx b/docs/project/contributing.mdx index 31a0c511bc..b645b005f1 100644 --- a/docs/project/contributing.mdx +++ b/docs/project/contributing.mdx @@ -7,26 +7,40 @@ Configuring a development environment for Bun can take 10-30 minutes depending o If you are using Windows, please refer to [this guide](/project/building-windows) -## Install Dependencies +## Using Nix (Alternative) + +A Nix flake is provided as an alternative to manual dependency installation: + +```bash +nix develop +# or explicitly use the pure shell +# nix develop .#pure +export CMAKE_SYSTEM_PROCESSOR=$(uname -m) +bun bd +``` + +This provides all dependencies in an isolated, reproducible environment without requiring sudo. + +## Install Dependencies (Manual) Using your system's package manager, install Bun's dependencies: ```bash macOS (Homebrew) -$ brew install automake ccache cmake coreutils gnu-sed go icu4c libiconv libtool ninja pkg-config rust ruby +$ brew install automake cmake coreutils gnu-sed go icu4c libiconv libtool ninja pkg-config rust ruby sccache ``` ```bash Ubuntu/Debian -$ sudo apt install curl wget lsb-release software-properties-common cargo ccache cmake git golang libtool ninja-build pkg-config rustc ruby-full xz-utils +$ sudo apt install curl wget lsb-release software-properties-common cargo cmake git golang libtool ninja-build pkg-config rustc ruby-full xz-utils ``` ```bash Arch -$ sudo pacman -S base-devel ccache cmake git go libiconv libtool make ninja pkg-config python rust sed unzip ruby +$ sudo pacman -S base-devel cmake git go libiconv libtool make ninja pkg-config python rust sed unzip ruby ``` ```bash Fedora -$ sudo dnf install cargo ccache cmake git golang libtool ninja-build pkg-config rustc ruby libatomic-static libstdc++-static sed unzip which libicu-devel 'perl(Math::BigInt)' +$ sudo dnf install cargo clang19 llvm19 lld19 cmake git golang libtool ninja-build pkg-config rustc ruby libatomic-static libstdc++-static sed unzip which libicu-devel 'perl(Math::BigInt)' ``` ```bash openSUSE Tumbleweed @@ -56,6 +70,46 @@ $ brew install bun +### Optional: Install `sccache` + +sccache is used to cache compilation artifacts, significantly speeding up builds. It must be installed with S3 support: + +```bash +# For macOS +$ brew install sccache + +# For Linux. Note that the version in your package manager may not have S3 support. +$ cargo install sccache --features=s3 +``` + +This will install `sccache` with S3 support. Our build scripts will automatically detect and use `sccache` with our shared S3 cache. **Note**: Not all versions of `sccache` are compiled with S3 support, hence we recommend installing it via `cargo`. + +#### Registering AWS Credentials for `sccache` (Core Developers Only) + +Core developers have write access to the shared S3 cache. To enable write access, you must log in with AWS credentials. The easiest way to do this is to use the [`aws` CLI](https://aws.amazon.com/cli/) and invoke [`aws configure` to provide your AWS security info](https://docs.aws.amazon.com/cli/latest/reference/configure/). + +The `cmake` scripts should automatically detect your AWS credentials from the environment or the `~/.aws/credentials` file. + +

    + Logging in to the `aws` CLI + + 1. Install the AWS CLI by following [the official guide](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). + 2. Log in to your AWS account console. A team member should provide you with your credentials. + 3. Click your name in the top right > Security credentials. + 4. Scroll to "Access keys" and create a new access key. + 5. Run `aws configure` in your terminal and provide the access key ID and secret access key when prompted. + +
    + +
    + Common Issues You May Encounter + + - To confirm that the cache is being used, you can use the `sccache --show-stats` command right after a build. This will expose very useful statistics, including cache hits/misses. + - If you have multiple AWS profiles configured, ensure that the correct profile is set in the `AWS_PROFILE` environment variable. + - `sccache` follows a server-client model. If you run into weird issues where `sccache` refuses to use S3, even though you have AWS credentials configured, try killing any running `sccache` servers with `sccache --stop-server` and then re-running the build. + +
    + ## Install LLVM Bun requires LLVM 19 (`clang` is part of LLVM). This version requirement is to match WebKit (precompiled), as mismatching versions will cause memory allocation failures at runtime. In most cases, you can install LLVM through your system package manager: @@ -156,7 +210,7 @@ Bun generally takes about 2.5 minutes to compile a debug build when there are Zi - Batch up your changes - Ensure zls is running with incremental watching for LSP errors (if you use VSCode and install Zig and run `bun run build` once to download Zig, this should just work) - Prefer using the debugger ("CodeLLDB" in VSCode) to step through the code. -- Use debug logs. `BUN_DEBUG_=1` will enable debug logging for the corresponding `Output.scoped(., false)` logs. You can also set `BUN_DEBUG_QUIET_LOGS=1` to disable all debug logging that isn't explicitly enabled. To dump debug lgos into a file, `BUN_DEBUG=.log`. Debug logs are aggressively removed in release builds. +- Use debug logs. `BUN_DEBUG_=1` will enable debug logging for the corresponding `Output.scoped(., .hidden)` logs. You can also set `BUN_DEBUG_QUIET_LOGS=1` to disable all debug logging that isn't explicitly enabled. To dump debug logs into a file, `BUN_DEBUG=.log`. Debug logs are aggressively removed in release builds. - src/js/\*\*.ts changes are pretty much instant to rebuild. C++ changes are a bit slower, but still much faster than the Zig code (Zig is one compilation unit, C++ is many). ## Code generation scripts @@ -327,15 +381,6 @@ bun run build -DUSE_STATIC_LIBATOMIC=OFF The built version of Bun may not work on other systems if compiled this way. -### ccache conflicts with building TinyCC on macOS - -If you run into issues with `ccache` when building TinyCC, try reinstalling ccache - -```bash -brew uninstall ccache -brew install ccache -``` - ## Using bun-debug - Disable logging: `BUN_DEBUG_QUIET_LOGS=1 bun-debug ...` (to disable all debug logging) diff --git a/docs/quickstart.mdx b/docs/quickstart.mdx index 21509db9f7..59939e6887 100644 --- a/docs/quickstart.mdx +++ b/docs/quickstart.mdx @@ -219,16 +219,21 @@ Build a minimal HTTP server with `Bun.serve`, run it locally, then evolve it by Bun can also execute `"scripts"` from your `package.json`. Add the following script: +{/* prettier-ignore */} ```json package.json icon="file-code" { "name": "quickstart", "module": "index.ts", "type": "module", - "scripts": { - "start": "bun run index.ts" - }, + "private": true, + "scripts": { // [!code ++] + "start": "bun run index.ts" // [!code ++] + }, // [!code ++] "devDependencies": { "@types/bun": "latest" + }, + "peerDependencies": { + "typescript": "^5" } } ``` diff --git a/docs/runtime/bunfig.mdx b/docs/runtime/bunfig.mdx index 57fb1805f0..a296acb827 100644 --- a/docs/runtime/bunfig.mdx +++ b/docs/runtime/bunfig.mdx @@ -276,6 +276,58 @@ This is useful for catching flaky tests or non-deterministic behavior. Each test The `--rerun-each` CLI flag will override this setting when specified. +### `test.concurrentTestGlob` + +Specify a glob pattern to automatically run matching test files with concurrent test execution enabled. Test files matching this pattern will behave as if the `--concurrent` flag was passed, running all tests within those files concurrently. + +```toml title="bunfig.toml" icon="settings" +[test] +concurrentTestGlob = "**/concurrent-*.test.ts" +``` + +This is useful for: + +- Gradually migrating test suites to concurrent execution +- Running integration tests concurrently while keeping unit tests sequential +- Separating fast concurrent tests from tests that require sequential execution + +The `--concurrent` CLI flag will override this setting when specified. + +### `test.onlyFailures` + +When enabled, only failed tests are displayed in the output. This helps reduce noise in large test suites by hiding passing tests. Default `false`. + +```toml title="bunfig.toml" icon="settings" +[test] +onlyFailures = true +``` + +This is equivalent to using the `--only-failures` flag when running `bun test`. + +### `test.reporter` + +Configure the test reporter settings. + +#### `test.reporter.dots` + +Enable the dots reporter, which displays a compact output showing a dot for each test. Default `false`. + +```toml title="bunfig.toml" icon="settings" +[test.reporter] +dots = true +``` + +#### `test.reporter.junit` + +Enable JUnit XML reporting and specify the output file path. + +```toml title="bunfig.toml" icon="settings" +[test.reporter] +junit = "test-results.xml" +``` + +This generates a JUnit XML report that can be consumed by CI systems and other tools. + ## Package manager Package management is a complex issue; to support a range of use cases, the behavior of `bun install` can be configured under the `[install]` section. @@ -551,7 +603,7 @@ For more details see [Minimum release age](/pm/cli/install#minimum-release-age) The `bun run` command can be configured under the `[run]` section. These apply to the `bun run` command and the `bun` command when running a file or executable or script. -Currently, `bunfig.toml` isn't always automatically loaded for `bun run` in a local project (it does check for a global `bunfig.toml`), so you might still need to pass `-c` or `-c=bunfig.toml` to use these settings. +Currently, `bunfig.toml` is only automatically loaded for `bun run` in a local project (it doesn't check for a global `.bunfig.toml`). ### `run.shell` - use the system shell or Bun's shell diff --git a/docs/runtime/html-rewriter.mdx b/docs/runtime/html-rewriter.mdx index cdddae9e1a..5e05ee0706 100644 --- a/docs/runtime/html-rewriter.mdx +++ b/docs/runtime/html-rewriter.mdx @@ -46,29 +46,22 @@ console.log(result); This replaces all images with a thumbnail of Rick Astley and wraps each `` in a link, producing a diff like this: +{/* prettier-ignore */} ```html - // [!code --] // [!code --] - // [!code --] -
    - // [!code ++] - Definitely not a rickroll - // [!code ++] - - // [!code ++] - - // [!code ++] - Definitely not a rickroll - // [!code ++] - - // [!code ++] - - // [!code ++] - Definitely not a rickroll - // [!code ++] - - // [!code ++] + + + + + Definitely not a rickroll + + + Definitely not a rickroll + + + Definitely not a rickroll + ``` diff --git a/docs/runtime/http/routing.mdx b/docs/runtime/http/routing.mdx index 06af0a2cbb..37cb4b3545 100644 --- a/docs/runtime/http/routing.mdx +++ b/docs/runtime/http/routing.mdx @@ -283,7 +283,7 @@ You can also access the `Server` object from the `fetch` handler. It's the secon const server = Bun.serve({ fetch(req, server) { const ip = server.requestIP(req); - return new Response(`Your IP is ${ip}`); + return new Response(`Your IP is ${ip.address}`); }, }); ``` diff --git a/docs/runtime/http/websockets.mdx b/docs/runtime/http/websockets.mdx index 174043200d..2b005c488a 100644 --- a/docs/runtime/http/websockets.mdx +++ b/docs/runtime/http/websockets.mdx @@ -107,13 +107,13 @@ Bun.serve({ Once the upgrade succeeds, Bun will send a `101 Switching Protocols` response per the [spec](https://developer.mozilla.org/en-US/docs/Web/HTTP/Protocol_upgrade_mechanism). Additional `headers` can be attached to this `Response` in the call to `server.upgrade()`. +{/* prettier-ignore */} ```ts server.ts icon="/icons/typescript.svg" Bun.serve({ fetch(req, server) { const sessionId = await generateSessionId(); server.upgrade(req, { - headers: { - // [!code ++] + headers: { // [!code ++] "Set-Cookie": `SessionId=${sessionId}`, // [!code ++] }, // [!code ++] }); @@ -126,6 +126,8 @@ Bun.serve({ Contextual `data` can be attached to a new WebSocket in the `.upgrade()` call. This data is made available on the `ws.data` property inside the WebSocket handlers. +To strongly type `ws.data`, add a `data` property to the `websocket` handler object. This types `ws.data` across all lifecycle hooks. + ```ts server.ts icon="/icons/typescript.svg" type WebSocketData = { createdAt: number; @@ -166,6 +168,10 @@ Bun.serve({ }); ``` + +**Note:** Previously, you could specify the type of `ws.data` using a type parameter on `Bun.serve`, like `Bun.serve({...})`. This pattern was removed due to [a limitation in TypeScript](https://github.com/microsoft/TypeScript/issues/26242) in favor of the `data` property shown above. + + To connect to this server from the browser, create a new `WebSocket`. ```ts browser.js icon="file-code" diff --git a/docs/runtime/module-resolution.mdx b/docs/runtime/module-resolution.mdx index a43843eec6..ed456b535c 100644 --- a/docs/runtime/module-resolution.mdx +++ b/docs/runtime/module-resolution.mdx @@ -183,6 +183,29 @@ import { stuff } from "foo"; The full specification of this algorithm are officially documented in the [Node.js documentation](https://nodejs.org/api/modules.html); we won't rehash it here. Briefly: if you import `from "foo"`, Bun scans up the file system for a `node_modules` directory containing the package `foo`. +### NODE_PATH + +Bun supports `NODE_PATH` for additional module resolution directories: + +```bash +NODE_PATH=./packages bun run src/index.js +``` + +```ts +// packages/foo/index.js +export const hello = "world"; + +// src/index.js +import { hello } from "foo"; +``` + +Multiple paths use the platform's delimiter (`:` on Unix, `;` on Windows): + +```bash +NODE_PATH=./packages:./lib bun run src/index.js # Unix/macOS +NODE_PATH=./packages;./lib bun run src/index.js # Windows +``` + Once it finds the `foo` package, Bun reads the `package.json` to determine how the package should be imported. To determine the package's entrypoint, Bun first reads the `exports` field and checks for the following conditions. ```json package.json icon="file-json" diff --git a/docs/runtime/redis.mdx b/docs/runtime/redis.mdx index 0a6e12d243..532c67b51a 100644 --- a/docs/runtime/redis.mdx +++ b/docs/runtime/redis.mdx @@ -51,6 +51,7 @@ await client.incr("counter"); By default, the client reads connection information from the following environment variables (in order of precedence): - `REDIS_URL` +- `VALKEY_URL` - If not set, defaults to `"redis://localhost:6379"` ### Connection Lifecycle diff --git a/docs/runtime/utils.mdx b/docs/runtime/utils.mdx index 55abcc3183..fd13dd01b1 100644 --- a/docs/runtime/utils.mdx +++ b/docs/runtime/utils.mdx @@ -234,8 +234,8 @@ Bun.openInEditor(currentFile); You can override this via the `debug.editor` setting in your [`bunfig.toml`](/runtime/bunfig). ```toml bunfig.toml -[debug] // [!code ++] -editor = "code" // [!code ++] +[debug] # [!code ++] +editor = "code" # [!code ++] ``` Or specify an editor with the `editor` param. You can also specify a line and column number. diff --git a/docs/test/configuration.mdx b/docs/test/configuration.mdx index 2e8488fed0..9fff440301 100644 --- a/docs/test/configuration.mdx +++ b/docs/test/configuration.mdx @@ -184,6 +184,53 @@ This is useful for: - Large test suites that consume significant memory - Development environments with memory constraints +## Test execution + +### concurrentTestGlob + +Automatically run test files matching a glob pattern with concurrent test execution enabled. This is useful for gradually migrating test suites to concurrent execution or for running specific test types concurrently. + +```toml title="bunfig.toml" icon="settings" +[test] +concurrentTestGlob = "**/concurrent-*.test.ts" # Run files matching this pattern concurrently +``` + +Test files matching this pattern will behave as if the `--concurrent` flag was passed, running all tests within those files concurrently. This allows you to: + +- Gradually migrate your test suite to concurrent execution +- Run integration tests concurrently while keeping unit tests sequential +- Separate fast concurrent tests from tests that require sequential execution + +The `--concurrent` CLI flag will override this setting when specified, forcing all tests to run concurrently regardless of the glob pattern. + +#### randomize + +Run tests in random order to identify tests with hidden dependencies: + +```toml title="bunfig.toml" icon="settings" +[test] +randomize = true +``` + +#### seed + +Specify a seed for reproducible random test order. Requires `randomize = true`: + +```toml title="bunfig.toml" icon="settings" +[test] +randomize = true +seed = 2444615283 +``` + +#### rerunEach + +Re-run each test file multiple times to identify flaky tests: + +```toml title="bunfig.toml" icon="settings" +[test] +rerunEach = 3 +``` + ## Coverage Options ### Basic Coverage Settings diff --git a/docs/test/reporters.mdx b/docs/test/reporters.mdx index 7568296506..d978ef3929 100644 --- a/docs/test/reporters.mdx +++ b/docs/test/reporters.mdx @@ -41,6 +41,15 @@ test/package-json-lint.test.ts: Ran 4 tests across 1 files. [0.66ms] ``` +### Dots Reporter + +The dots reporter shows `.` for passing tests and `F` for failures—useful for large test suites. + +```sh terminal icon="terminal" +bun test --dots +bun test --reporter=dots +``` + ### JUnit XML Reporter For CI/CD environments, Bun supports generating JUnit XML reports. JUnit XML is a widely-adopted format for test results that can be parsed by many CI/CD systems, including GitLab, Jenkins, and others. diff --git a/packages/bun-types/bun.d.ts b/packages/bun-types/bun.d.ts index a4d84f4352..57f6d82965 100644 --- a/packages/bun-types/bun.d.ts +++ b/packages/bun-types/bun.d.ts @@ -1788,7 +1788,7 @@ declare module "bun" { * @see {@link outdir} required for `"linked"` maps * @see {@link publicPath} to customize the base url of linked source maps */ - sourcemap?: "none" | "linked" | "inline" | "external" | "linked" | boolean; + sourcemap?: "none" | "linked" | "inline" | "external" | boolean; /** * package.json `exports` conditions used when resolving imports diff --git a/test/bundler/expectBundled.ts b/test/bundler/expectBundled.ts index 9f25448ace..4379263dbc 100644 --- a/test/bundler/expectBundled.ts +++ b/test/bundler/expectBundled.ts @@ -215,7 +215,7 @@ export interface BundlerTestInput { unsupportedJSFeatures?: string[]; /** if set to true or false, create or edit tsconfig.json to set compilerOptions.useDefineForClassFields */ useDefineForClassFields?: boolean; - sourceMap?: "inline" | "external" | "linked" | "none" | "linked"; + sourceMap?: "inline" | "external" | "linked" | "none"; plugins?: BunPlugin[] | ((builder: PluginBuilder) => void | Promise); install?: string[]; production?: boolean; From 8b5b36ec7aa9b753a2509e291deb43a2f02c89e6 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Mon, 17 Nov 2025 11:23:13 -0800 Subject: [PATCH 011/212] runtime: fix n-api ThreadSafeFunction finalizer (#24771) Closes https://github.com/oven-sh/bun/issues/24552 Closes https://github.com/oven-sh/bun/issues/24664 Closes https://github.com/oven-sh/bun/issues/24702 Closes https://github.com/oven-sh/bun/issues/24703 Closes https://github.com/oven-sh/bun/issues/24768 --- src/napi/napi.zig | 1 + .../test/parallel/test-integration-rspack.ts | 39 +++++++++++++++++++ test/no-validate-exceptions.txt | 1 + test/no-validate-leaksan.txt | 3 +- 4 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 test/js/bun/test/parallel/test-integration-rspack.ts diff --git a/src/napi/napi.zig b/src/napi/napi.zig index de8beab2b4..06c96280d8 100644 --- a/src/napi/napi.zig +++ b/src/napi/napi.zig @@ -1683,6 +1683,7 @@ pub const ThreadSafeFunction = struct { .env = this.env, .fun = fun, .data = this.finalizer_data, + .hint = this.ctx, }; finalizer.enqueue(); } else { diff --git a/test/js/bun/test/parallel/test-integration-rspack.ts b/test/js/bun/test/parallel/test-integration-rspack.ts new file mode 100644 index 0000000000..7ee282c65d --- /dev/null +++ b/test/js/bun/test/parallel/test-integration-rspack.ts @@ -0,0 +1,39 @@ +import { expect } from "bun:test"; +import { bunEnv, bunExe, tmpdirSync } from "harness"; +import { join } from "path"; + +const cwd = tmpdirSync(); +console.log([0, cwd]); + +let proc = Bun.spawn({ + cmd: [bunExe(), "create", "rsbuild@latest", "app", "--template", "solid-ts"], + stdio: ["ignore", "inherit", "inherit"], + cwd, + env: bunEnv, +}); +await proc.exited; +console.log([1]); +expect(proc.signalCode).toBeNull(); +expect(proc.exitCode).toBe(0); + +proc = Bun.spawn({ + cmd: [bunExe(), "install"], + stdio: ["ignore", "inherit", "inherit"], + cwd: join(cwd, "app"), + env: bunEnv, +}); +await proc.exited; +console.log([2]); +expect(proc.signalCode).toBeNull(); +expect(proc.exitCode).toBe(0); + +proc = Bun.spawn({ + cmd: [bunExe(), "--bun", "run", "build"], + stdio: ["ignore", "inherit", "inherit"], + cwd: join(cwd, "app"), + env: bunEnv, +}); +await proc.exited; +console.log([3]); +expect(proc.signalCode).toBeNull(); +expect(proc.exitCode).toBe(0); diff --git a/test/no-validate-exceptions.txt b/test/no-validate-exceptions.txt index c3b05f5a11..7ca32272e1 100644 --- a/test/no-validate-exceptions.txt +++ b/test/no-validate-exceptions.txt @@ -54,6 +54,7 @@ test/bundler/bundler_comments.test.ts test/js/node/test/parallel/test-fs-promises-file-handle-readLines.mjs test/js/bun/test/parallel/test-require-builtins.ts test/cli/install/bun-install-lifecycle-scripts.test.ts +test/js/bun/test/parallel/test-integration-rspack.ts # trips asan on my macos test machine test/js/node/test/parallel/test-fs-watch.js diff --git a/test/no-validate-leaksan.txt b/test/no-validate-leaksan.txt index 8fe4d3468b..aaca0b2f5d 100644 --- a/test/no-validate-leaksan.txt +++ b/test/no-validate-leaksan.txt @@ -391,6 +391,7 @@ test/napi/node-napi-tests/test/js-native-api/6_object_wrap/do.test.ts test/bake/dev/production.test.ts test/js/third_party/pg-gateway/pglite.test.ts +test/js/bun/test/parallel/test-integration-rspack.ts test/js/web/websocket/websocket-subprotocol-strict.test.ts test/js/node/net/node-net-server.test.ts @@ -427,4 +428,4 @@ test/js/bun/test/parallel/test-http-should-not-accept-untrusted-certificates.ts # Need to run the event loop once more to ensure sockets close test/js/node/test/parallel/test-https-localaddress-bind-error.js -test/js/node/test/parallel/test-crypto-op-during-process-exit.js \ No newline at end of file +test/js/node/test/parallel/test-crypto-op-during-process-exit.js From 983bb52df7f6b7f23e03d0a2af206c4241d010f6 Mon Sep 17 00:00:00 2001 From: Dylan Conway Date: Mon, 17 Nov 2025 12:04:20 -0800 Subject: [PATCH 012/212] fix #24550 (#24726) ### What does this PR do? Fixes a regression introduced in Bun v1.3.2 with #24283. We are not able to skip `sharp` lifecycle scripts before v0.33.0 because previous versions did not use optional dependencies with prebuilds. Fixes #24550 Fixes ENG-21519 ### How did you verify your code works? Manually --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> --- src/install/PackageInstaller.zig | 14 ++++-- src/install/isolated_install/Installer.zig | 8 +++- src/install/postinstall_optimizer.zig | 53 ++++++++++++++++------ 3 files changed, 57 insertions(+), 18 deletions(-) diff --git a/src/install/PackageInstaller.zig b/src/install/PackageInstaller.zig index 42fcb87957..fabda13fa2 100644 --- a/src/install/PackageInstaller.zig +++ b/src/install/PackageInstaller.zig @@ -284,7 +284,7 @@ pub const PackageInstaller = struct { if (manager.postinstall_optimizer.isNativeBinlinkEnabled()) native_binlink_optimization: { // Check for native binlink optimization const name_hash = pkg_name_hashes[package_id]; - if (manager.postinstall_optimizer.get(name_hash)) |optimizer| { + if (manager.postinstall_optimizer.get(.{ .name_hash = name_hash })) |optimizer| { switch (optimizer) { .native_binlink => { const target_cpu = manager.options.cpu; @@ -1163,7 +1163,11 @@ pub const PackageInstaller = struct { enqueueLifecycleScripts: { if (this.manager.postinstall_optimizer.shouldIgnoreLifecycleScripts( - pkg_name_hash, + .{ + .name_hash = pkg_name_hash, + .version = if (resolution.tag == .npm) resolution.value.npm.version else null, + .version_buf = this.lockfile.buffers.string_bytes.items, + }, this.lockfile.packages.items(.resolutions)[package_id].get(this.lockfile.buffers.resolutions.items), this.lockfile.packages.items(.meta), this.manager.options.cpu, @@ -1353,7 +1357,11 @@ pub const PackageInstaller = struct { enqueueLifecycleScripts: { if (this.manager.postinstall_optimizer.shouldIgnoreLifecycleScripts( - pkg_name_hash, + .{ + .name_hash = pkg_name_hash, + .version = if (resolution.tag == .npm) resolution.value.npm.version else null, + .version_buf = this.lockfile.buffers.string_bytes.items, + }, this.lockfile.packages.items(.resolutions)[package_id].get(this.lockfile.buffers.resolutions.items), this.lockfile.packages.items(.meta), this.manager.options.cpu, diff --git a/src/install/isolated_install/Installer.zig b/src/install/isolated_install/Installer.zig index 1923745e95..9eadd190c1 100644 --- a/src/install/isolated_install/Installer.zig +++ b/src/install/isolated_install/Installer.zig @@ -930,7 +930,11 @@ pub const Installer = struct { if (pkg_res.tag != .root and (pkg_res.tag == .workspace or is_trusted)) enqueue_lifecycle_scripts: { var pkg_scripts: Package.Scripts = pkg_script_lists[pkg_id]; if (is_trusted and manager.postinstall_optimizer.shouldIgnoreLifecycleScripts( - pkg_name_hashes[pkg_id], + .{ + .name_hash = pkg_name_hash, + .version = if (pkg_res.tag == .npm) pkg_res.value.npm.version else null, + .version_buf = lockfile.buffers.string_bytes.items, + }, installer.lockfile.buffers.resolutions.items, pkg_metas, manager.options.cpu, @@ -1311,7 +1315,7 @@ pub const Installer = struct { } const name_hash = name_hashes[pkg_id]; - if (postinstall_optimizer.get(name_hash)) |optimizer| { + if (postinstall_optimizer.get(.{ .name_hash = name_hash })) |optimizer| { switch (optimizer) { .native_binlink => { const manager = this.manager; diff --git a/src/install/postinstall_optimizer.zig b/src/install/postinstall_optimizer.zig index c009058541..d2ed846fb8 100644 --- a/src/install/postinstall_optimizer.zig +++ b/src/install/postinstall_optimizer.zig @@ -3,11 +3,19 @@ pub const PostinstallOptimizer = enum { ignore, const default_native_binlinks_name_hashes = &[_]PackageNameHash{ - bun.Semver.String.Builder.stringHash("esbuild"), + Semver.String.Builder.stringHash("esbuild"), }; - const default_ignore_name_hashes = &[_]PackageNameHash{ - bun.Semver.String.Builder.stringHash("sharp"), + const DefaultIgnore = struct { + name_hash: PackageNameHash, + minimum_version: Semver.Version, + }; + + const default_ignore = [1]DefaultIgnore{ + .{ + .name_hash = Semver.String.Builder.stringHash("sharp"), + .minimum_version = Semver.Version.parseUTF8("0.33.0").version.min(), + }, }; fn fromStringArrayGroup(list: *List, expr: *const ast.Expr, allocator: std.mem.Allocator, value: PostinstallOptimizer) !bool { @@ -20,7 +28,7 @@ pub const PostinstallOptimizer = enum { if (entry.isString()) { const str = entry.asString(allocator) orelse continue; if (str.len == 0) continue; - const hash = bun.Semver.String.Builder.stringHash(str); + const hash = Semver.String.Builder.stringHash(str); try list.dynamic.put(allocator, hash, value); } } @@ -83,9 +91,15 @@ pub const PostinstallOptimizer = enum { return true; } + const PkgInfo = struct { + name_hash: PackageNameHash, + version: ?Semver.Version = null, + version_buf: []const u8 = "", + }; + pub fn shouldIgnoreLifecycleScripts( this: *const @This(), - name_hash: PackageNameHash, + pkg_info: PkgInfo, resolutions: []const PackageID, metas: []const Meta, target_cpu: Npm.Architecture, @@ -96,7 +110,7 @@ pub const PostinstallOptimizer = enum { return false; } - const mode = this.get(name_hash) orelse return false; + const mode = this.get(pkg_info) orelse return false; return switch (mode) { .native_binlink => @@ -115,26 +129,38 @@ pub const PostinstallOptimizer = enum { }; } - fn fromDefault(name_hash: PackageNameHash) ?PostinstallOptimizer { + fn fromDefault(pkg_info: PkgInfo) ?PostinstallOptimizer { for (default_native_binlinks_name_hashes) |hash| { - if (hash == name_hash) { + if (hash == pkg_info.name_hash) { return .native_binlink; } } - for (default_ignore_name_hashes) |hash| { - if (hash == name_hash) { + for (default_ignore) |default| { + if (default.name_hash == pkg_info.name_hash) { + if (pkg_info.version) |version| { + if (version.order( + default.minimum_version, + pkg_info.version_buf, + + // minimum version doesn't need a string_buf because + // it doesn't use pre/build tags + "", + ) == .lt) { + return null; + } + } return .ignore; } } return null; } - pub fn get(this: *const @This(), name_hash: PackageNameHash) ?PostinstallOptimizer { - if (this.dynamic.get(name_hash)) |optimize| { + pub fn get(this: *const @This(), pkg_info: PkgInfo) ?PostinstallOptimizer { + if (this.dynamic.get(pkg_info.name_hash)) |optimize| { return optimize; } - const default = fromDefault(name_hash) orelse { + const default = fromDefault(pkg_info) orelse { return null; }; @@ -159,6 +185,7 @@ pub const PostinstallOptimizer = enum { const std = @import("std"); const bun = @import("bun"); +const Semver = bun.Semver; const ast = bun.ast; const install = bun.install; From 509a97a43516fe4f6d4ff4003d1c9aeef89e92ce Mon Sep 17 00:00:00 2001 From: robobun Date: Mon, 17 Nov 2025 12:04:42 -0800 Subject: [PATCH 013/212] Add --no-env-file flag to disable automatic .env loading (#24767) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Implements `--no-env-file` CLI flag and bunfig configuration options to disable automatic `.env` file loading at runtime and in the bundler. ## Motivation Users may want to disable automatic `.env` file loading for: - Production environments where env vars are managed externally - CI/CD pipelines where .env files should be ignored - Testing scenarios where explicit env control is needed - Security contexts where .env files should not be trusted ## Changes ### CLI Flag - Added `--no-env-file` flag that disables loading of default .env files - Still respects explicit `--env-file` arguments for intentional env loading ### Bunfig Configuration Added support for disabling .env loading via `bunfig.toml`: - `env = false` - disables default .env file loading - `env = null` - disables default .env file loading - `env.file = false` - disables default .env file loading - `env.file = null` - disables default .env file loading ### Implementation - Added `disable_default_env_files` field to `api.TransformOptions` with serialization support - Added `disable_default_env_files` field to `options.Env` struct - Implemented `loadEnvConfig` in bunfig parser to handle env configuration - Wired up flag throughout runtime and bundler code paths - Preserved package.json script runner behavior (always skips default .env files) ## Tests Added comprehensive test suite (`test/cli/run/no-envfile.test.ts`) with 9 tests covering: - `--no-env-file` flag with `.env`, `.env.local`, `.env.development.local` - Bunfig configurations: `env = false`, `env.file = false`, `env = true` - `--no-env-file` with `-e` eval flag - `--no-env-file` combined with `--env-file` (explicit files still load) - Production mode behavior All tests pass with debug bun and fail with system bun (as expected). ## Example Usage ```bash # Disable all default .env files bun --no-env-file index.js # Disable defaults but load explicit file bun --no-env-file --env-file .env.production index.js # Disable via bunfig.toml cat > bunfig.toml << 'CONFIG' env = false CONFIG bun index.js ``` ## Files Changed - `src/cli/Arguments.zig` - CLI flag parsing - `src/api/schema.zig` - API schema field with encode/decode - `src/options.zig` - Env struct field and wiring - `src/bunfig.zig` - Config parsing with loadEnvConfig - `src/transpiler.zig` - Runtime wiring - `src/bun.js.zig` - Runtime wiring - `src/cli/exec_command.zig` - Runtime wiring - `src/cli/run_command.zig` - Preserved package.json script runner behavior - `test/cli/run/no-envfile.test.ts` - Comprehensive test suite šŸ¤– Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --------- Co-authored-by: Claude Bot Co-authored-by: Claude --- src/api/schema.zig | 11 ++ src/bun.js.zig | 2 +- src/bunfig.zig | 41 +++++ src/cli/Arguments.zig | 5 + src/cli/exec_command.zig | 2 +- src/cli/run_command.zig | 2 + src/options.zig | 5 + src/transpiler.zig | 2 +- test/cli/run/no-envfile.test.ts | 265 ++++++++++++++++++++++++++++++++ 9 files changed, 332 insertions(+), 3 deletions(-) create mode 100644 test/cli/run/no-envfile.test.ts diff --git a/src/api/schema.zig b/src/api/schema.zig index 7fafbf53b3..80cfe546de 100644 --- a/src/api/schema.zig +++ b/src/api/schema.zig @@ -1688,6 +1688,9 @@ pub const api = struct { /// env_files env_files: []const []const u8, + /// disable_default_env_files + disable_default_env_files: bool = false, + /// extension_order extension_order: []const []const u8, @@ -1824,6 +1827,9 @@ pub const api = struct { 27 => { this.packages = try reader.readValue(PackagesMode); }, + 28 => { + this.disable_default_env_files = try reader.readValue(bool); + }, else => { return error.InvalidMessage; }, @@ -1944,6 +1950,11 @@ pub const api = struct { try writer.writeValue([]const u8, packages); } + if (this.disable_default_env_files) { + try writer.writeFieldID(28); + try writer.writeInt(@as(u8, @intFromBool(this.disable_default_env_files))); + } + try writer.endMessage(); } }; diff --git a/src/bun.js.zig b/src/bun.js.zig index 0d5710262f..1c79e41f64 100644 --- a/src/bun.js.zig +++ b/src/bun.js.zig @@ -135,7 +135,7 @@ pub const Run = struct { try @import("./bun.js/config.zig").configureTransformOptionsForBunVM(ctx.allocator, ctx.args), null, ); - try bundle.runEnvLoader(false); + try bundle.runEnvLoader(bundle.options.env.disable_default_env_files); const mini = jsc.MiniEventLoop.initGlobal(bundle.env, null); mini.top_level_dir = ctx.args.absolute_working_dir orelse ""; return bun.shell.Interpreter.initAndRunFromFile(ctx, mini, entry_path); diff --git a/src/bunfig.zig b/src/bunfig.zig index 6251f2f10f..312debfa12 100644 --- a/src/bunfig.zig +++ b/src/bunfig.zig @@ -148,6 +148,43 @@ pub const Bunfig = struct { } } + fn loadEnvConfig(this: *Parser, expr: js_ast.Expr) !void { + switch (expr.data) { + .e_null => { + // env = null -> disable default .env files + this.bunfig.disable_default_env_files = true; + }, + .e_boolean => |boolean| { + // env = false -> disable default .env files + // env = true -> keep default behavior (load .env files) + if (!boolean.value) { + this.bunfig.disable_default_env_files = true; + } + }, + .e_object => |obj| { + // env = { file: false } -> disable default .env files + if (obj.get("file")) |file_expr| { + switch (file_expr.data) { + .e_null => { + this.bunfig.disable_default_env_files = true; + }, + .e_boolean => |boolean| { + if (!boolean.value) { + this.bunfig.disable_default_env_files = true; + } + }, + else => { + try this.addError(file_expr.loc, "Expected 'file' to be a boolean or null"); + }, + } + } + }, + else => { + try this.addError(expr.loc, "Expected 'env' to be a boolean, null, or an object"); + }, + } + } + pub fn parse(this: *Parser, comptime cmd: Command.Tag) !void { bun.analytics.Features.bunfig += 1; @@ -191,6 +228,10 @@ pub const Bunfig = struct { this.bunfig.origin = try expr.data.e_string.string(allocator); } + if (json.get("env")) |env_expr| { + try this.loadEnvConfig(env_expr); + } + if (comptime cmd == .RunCommand or cmd == .AutoCommand) { if (json.get("serve")) |expr| { if (expr.get("port")) |port| { diff --git a/src/cli/Arguments.zig b/src/cli/Arguments.zig index 0ba62e79c3..efc50819a5 100644 --- a/src/cli/Arguments.zig +++ b/src/cli/Arguments.zig @@ -42,6 +42,7 @@ pub const ParamType = clap.Param(clap.Help); pub const base_params_ = (if (Environment.show_crash_trace) debug_params else [_]ParamType{}) ++ [_]ParamType{ clap.parseParam("--env-file ... Load environment variables from the specified file(s)") catch unreachable, + clap.parseParam("--no-env-file Disable automatic loading of .env files") catch unreachable, clap.parseParam("--cwd Absolute path to resolve files & entry points from. This just changes the process' cwd.") catch unreachable, clap.parseParam("-c, --config ? Specify path to Bun config file. Default $cwd/bunfig.toml") catch unreachable, clap.parseParam("-h, --help Display this menu and exit") catch unreachable, @@ -608,6 +609,10 @@ pub fn parse(allocator: std.mem.Allocator, ctx: Command.Context, comptime cmd: C opts.env_files = args.options("--env-file"); opts.extension_order = args.options("--extension-order"); + if (args.flag("--no-env-file")) { + opts.disable_default_env_files = true; + } + if (args.flag("--preserve-symlinks")) { opts.preserve_symlinks = true; } diff --git a/src/cli/exec_command.zig b/src/cli/exec_command.zig index 5bde215948..67b254ff47 100644 --- a/src/cli/exec_command.zig +++ b/src/cli/exec_command.zig @@ -8,7 +8,7 @@ pub const ExecCommand = struct { try @import("../bun.js/config.zig").configureTransformOptionsForBunVM(ctx.allocator, ctx.args), null, ); - try bundle.runEnvLoader(false); + try bundle.runEnvLoader(bundle.options.env.disable_default_env_files); var buf: bun.PathBuffer = undefined; const cwd = switch (bun.sys.getcwd(&buf)) { .result => |p| p, diff --git a/src/cli/run_command.zig b/src/cli/run_command.zig index 956dd9f851..ef4df2a3aa 100644 --- a/src/cli/run_command.zig +++ b/src/cli/run_command.zig @@ -814,6 +814,8 @@ pub const RunCommand = struct { } } + // Always skip default .env files for package.json script runner + // (see comment in env_loader.zig:542-548 - the script's own bun instance loads .env) this_transpiler.runEnvLoader(true) catch {}; } diff --git a/src/options.zig b/src/options.zig index 653cb30ecf..f131f9ddd9 100644 --- a/src/options.zig +++ b/src/options.zig @@ -2020,6 +2020,8 @@ pub const BundleOptions = struct { opts.env.files = transform.env_files; } + opts.env.disable_default_env_files = transform.disable_default_env_files; + if (transform.origin) |origin| { opts.origin = URL.parse(origin); } @@ -2225,6 +2227,9 @@ pub const Env = struct { /// List of explicit env files to load (e..g specified by --env-file args) files: []const []const u8 = &[_][]u8{}, + /// If true, disable loading of default .env files (from --no-env-file flag or bunfig) + disable_default_env_files: bool = false, + pub fn init( allocator: std.mem.Allocator, ) Env { diff --git a/src/transpiler.zig b/src/transpiler.zig index a532c57767..f3980e3dd9 100644 --- a/src/transpiler.zig +++ b/src/transpiler.zig @@ -528,7 +528,7 @@ pub const Transpiler = struct { this.options.env.prefix = "BUN_"; } - try this.runEnvLoader(false); + try this.runEnvLoader(this.options.env.disable_default_env_files); var is_production = this.env.isProduction(); diff --git a/test/cli/run/no-envfile.test.ts b/test/cli/run/no-envfile.test.ts new file mode 100644 index 0000000000..fd55d39264 --- /dev/null +++ b/test/cli/run/no-envfile.test.ts @@ -0,0 +1,265 @@ +import { expect, test } from "bun:test"; +import { bunEnv, bunExe, tempDir } from "harness"; + +test("--no-env-file disables .env loading", async () => { + using dir = tempDir("no-env-file", { + ".env": "FOO=bar", + "index.js": "console.log(process.env.FOO);", + }); + + // Without --no-env-file, .env should be loaded + { + await using proc = Bun.spawn({ + cmd: [bunExe(), "index.js"], + env: bunEnv, + cwd: String(dir), + stderr: "pipe", + stdout: "pipe", + }); + + const [stdout, stderr, exitCode] = await Promise.all([proc.stdout.text(), proc.stderr.text(), proc.exited]); + + expect(stderr).toBe(""); + expect(stdout.trim()).toBe("bar"); + expect(exitCode).toBe(0); + } + + // With --no-env-file, .env should NOT be loaded + { + await using proc = Bun.spawn({ + cmd: [bunExe(), "--no-env-file", "index.js"], + env: bunEnv, + cwd: String(dir), + stderr: "pipe", + stdout: "pipe", + }); + + const [stdout, stderr, exitCode] = await Promise.all([proc.stdout.text(), proc.stderr.text(), proc.exited]); + + expect(stderr).toBe(""); + expect(stdout.trim()).toBe("undefined"); + expect(exitCode).toBe(0); + } +}); + +test("--no-env-file disables .env.local loading", async () => { + using dir = tempDir("no-env-file-local", { + ".env": "FOO=bar", + ".env.local": "FOO=local", + "index.js": "console.log(process.env.FOO);", + }); + + // Without --no-env-file, .env.local should override .env + { + await using proc = Bun.spawn({ + cmd: [bunExe(), "index.js"], + env: bunEnv, + cwd: String(dir), + stderr: "pipe", + stdout: "pipe", + }); + + const [stdout, stderr, exitCode] = await Promise.all([proc.stdout.text(), proc.stderr.text(), proc.exited]); + + expect(stderr).toBe(""); + expect(stdout.trim()).toBe("local"); + expect(exitCode).toBe(0); + } + + // With --no-env-file, neither should be loaded + { + await using proc = Bun.spawn({ + cmd: [bunExe(), "--no-env-file", "index.js"], + env: bunEnv, + cwd: String(dir), + stderr: "pipe", + stdout: "pipe", + }); + + const [stdout, stderr, exitCode] = await Promise.all([proc.stdout.text(), proc.stderr.text(), proc.exited]); + + expect(stderr).toBe(""); + expect(stdout.trim()).toBe("undefined"); + expect(exitCode).toBe(0); + } +}); + +test("--no-env-file disables .env.development.local loading", async () => { + using dir = tempDir("no-env-file-dev-local", { + ".env": "FOO=bar", + ".env.development.local": "FOO=dev-local", + "index.js": "console.log(process.env.FOO);", + }); + + // Without --no-env-file, .env.development.local should be loaded + { + await using proc = Bun.spawn({ + cmd: [bunExe(), "index.js"], + env: bunEnv, + cwd: String(dir), + stderr: "pipe", + stdout: "pipe", + }); + + const [stdout, stderr, exitCode] = await Promise.all([proc.stdout.text(), proc.stderr.text(), proc.exited]); + + expect(stderr).toBe(""); + expect(stdout.trim()).toBe("dev-local"); + expect(exitCode).toBe(0); + } + + // With --no-env-file, it should NOT be loaded + { + await using proc = Bun.spawn({ + cmd: [bunExe(), "--no-env-file", "index.js"], + env: bunEnv, + cwd: String(dir), + stderr: "pipe", + stdout: "pipe", + }); + + const [stdout, stderr, exitCode] = await Promise.all([proc.stdout.text(), proc.stderr.text(), proc.exited]); + + expect(stderr).toBe(""); + expect(stdout.trim()).toBe("undefined"); + expect(exitCode).toBe(0); + } +}); + +test("bunfig env.file = false disables .env loading", async () => { + using dir = tempDir("bunfig-env-file-false", { + ".env": "FOO=bar", + "bunfig.toml": ` +[env] +file = false +`, + "index.js": "console.log(process.env.FOO);", + }); + + await using proc = Bun.spawn({ + cmd: [bunExe(), "index.js"], + env: bunEnv, + cwd: String(dir), + stderr: "pipe", + stdout: "pipe", + }); + + const [stdout, stderr, exitCode] = await Promise.all([proc.stdout.text(), proc.stderr.text(), proc.exited]); + + expect(stderr).toBe(""); + expect(stdout.trim()).toBe("undefined"); + expect(exitCode).toBe(0); +}); + +test("bunfig env = false disables .env loading", async () => { + using dir = tempDir("bunfig-env-false", { + ".env": "FOO=bar", + "bunfig.toml": ` +env = false +`, + "index.js": "console.log(process.env.FOO);", + }); + + await using proc = Bun.spawn({ + cmd: [bunExe(), "index.js"], + env: bunEnv, + cwd: String(dir), + stderr: "pipe", + stdout: "pipe", + }); + + const [stdout, stderr, exitCode] = await Promise.all([proc.stdout.text(), proc.stderr.text(), proc.exited]); + + expect(stderr).toBe(""); + expect(stdout.trim()).toBe("undefined"); + expect(exitCode).toBe(0); +}); + +test("--no-env-file with -e flag", async () => { + using dir = tempDir("no-env-file-eval", { + ".env": "FOO=bar", + }); + + await using proc = Bun.spawn({ + cmd: [bunExe(), "--no-env-file", "-e", "console.log(process.env.FOO)"], + env: bunEnv, + cwd: String(dir), + stderr: "pipe", + stdout: "pipe", + }); + + const [stdout, stderr, exitCode] = await Promise.all([proc.stdout.text(), proc.stderr.text(), proc.exited]); + + expect(stderr).toBe(""); + expect(stdout.trim()).toBe("undefined"); + expect(exitCode).toBe(0); +}); + +test("--no-env-file combined with --env-file still loads explicit file", async () => { + using dir = tempDir("no-env-file-with-env-file", { + ".env": "FOO=bar", + ".env.custom": "FOO=custom", + "index.js": "console.log(process.env.FOO);", + }); + + // --no-env-file should skip .env but --env-file should load .env.custom + await using proc = Bun.spawn({ + cmd: [bunExe(), "--no-env-file", "--env-file", ".env.custom", "index.js"], + env: bunEnv, + cwd: String(dir), + stderr: "pipe", + stdout: "pipe", + }); + + const [stdout, stderr, exitCode] = await Promise.all([proc.stdout.text(), proc.stderr.text(), proc.exited]); + + expect(stderr).toBe(""); + expect(stdout.trim()).toBe("custom"); + expect(exitCode).toBe(0); +}); + +test("bunfig env = true still loads .env files", async () => { + using dir = tempDir("bunfig-env-true", { + ".env": "FOO=bar", + "bunfig.toml": ` +env = true +`, + "index.js": "console.log(process.env.FOO);", + }); + + await using proc = Bun.spawn({ + cmd: [bunExe(), "index.js"], + env: bunEnv, + cwd: String(dir), + stderr: "pipe", + stdout: "pipe", + }); + + const [stdout, stderr, exitCode] = await Promise.all([proc.stdout.text(), proc.stderr.text(), proc.exited]); + + expect(stderr).toBe(""); + expect(stdout.trim()).toBe("bar"); + expect(exitCode).toBe(0); +}); + +test("--no-env-file in production mode", async () => { + using dir = tempDir("no-env-file-production", { + ".env": "FOO=bar", + ".env.production": "FOO=prod", + "index.js": "console.log(process.env.FOO);", + }); + + await using proc = Bun.spawn({ + cmd: [bunExe(), "--no-env-file", "index.js"], + env: { ...bunEnv, NODE_ENV: "production" }, + cwd: String(dir), + stderr: "pipe", + stdout: "pipe", + }); + + const [stdout, stderr, exitCode] = await Promise.all([proc.stdout.text(), proc.stderr.text(), proc.exited]); + + expect(stderr).toBe(""); + expect(stdout.trim()).toBe("undefined"); + expect(exitCode).toBe(0); +}); From 9513c1d1d9a723828eefe863f0b0fbdd08921904 Mon Sep 17 00:00:00 2001 From: Marko Vejnovic Date: Mon, 17 Nov 2025 13:36:03 -0800 Subject: [PATCH 014/212] chore: HttpContext.h cleanup (#24730) --- packages/bun-uws/src/HttpContext.h | 146 +++++++++++++---------------- packages/bun-uws/src/HttpRouter.h | 26 ++--- 2 files changed, 76 insertions(+), 96 deletions(-) diff --git a/packages/bun-uws/src/HttpContext.h b/packages/bun-uws/src/HttpContext.h index 2d1e7b79b9..5ac6695383 100644 --- a/packages/bun-uws/src/HttpContext.h +++ b/packages/bun-uws/src/HttpContext.h @@ -38,6 +38,56 @@ namespace uWS { + +namespace detail { + +template +[[nodiscard]] constexpr auto makeArray(T&& el0, Args&&... values) noexcept { + return std::array, 1 + sizeof...(Args)>{ + std::forward(el0), std::forward(values)... + }; +} + +static constexpr auto supportedHttpMethods = makeArray( + "ACL", + "BIND", + "CHECKOUT", + "CONNECT", + "COPY", + "DELETE", + "GET", + "HEAD", + "LINK", + "LOCK", + "M-SEARCH", + "MERGE", + "MKACTIVITY", + "MKCALENDAR", + "MKCOL", + "MOVE", + "NOTIFY", + "OPTIONS", + "PATCH", + "POST", + "PROPFIND", + "PROPPATCH", + "PURGE", + "PUT", + "QUERY", + "REBIND", + "REPORT", + "SEARCH", + "SOURCE", + "SUBSCRIBE", + "TRACE", + "UNBIND", + "UNLINK", + "UNLOCK", + "UNSUBSCRIBE" +); + +} // namespace detail + template struct HttpResponse; template @@ -53,78 +103,6 @@ private: /* Minimum allowed receive throughput per second (clients uploading less than 16kB/sec get dropped) */ static constexpr int HTTP_RECEIVE_THROUGHPUT_BYTES = 16 * 1024; - -#define FOR_EACH_HTTP_METHOD(MACRO) \ - MACRO("ACL") \ - MACRO("BIND") \ - MACRO("CHECKOUT") \ - MACRO("CONNECT") \ - MACRO("COPY") \ - MACRO("DELETE") \ - MACRO("GET") \ - MACRO("HEAD") \ - MACRO("LINK") \ - MACRO("LOCK") \ - MACRO("M-SEARCH") \ - MACRO("MERGE") \ - MACRO("MKACTIVITY") \ - MACRO("MKCALENDAR") \ - MACRO("MKCOL") \ - MACRO("MOVE") \ - MACRO("NOTIFY") \ - MACRO("OPTIONS") \ - MACRO("PATCH") \ - MACRO("POST") \ - MACRO("PROPFIND") \ - MACRO("PROPPATCH") \ - MACRO("PURGE") \ - MACRO("PUT") \ - MACRO("QUERY") \ - MACRO("REBIND") \ - MACRO("REPORT") \ - MACRO("SEARCH") \ - MACRO("SOURCE") \ - MACRO("SUBSCRIBE") \ - MACRO("TRACE") \ - MACRO("UNBIND") \ - MACRO("UNLINK") \ - MACRO("UNLOCK") \ - MACRO("UNSUBSCRIBE") \ - - -#ifndef _WIN32 - static constexpr std::array HTTP_METHODS = { - #define MACRO(name) std::string {name}, - FOR_EACH_HTTP_METHOD(MACRO) - #undef MACRO - }; - static std::span getAllHttpMethods() { - return {HTTP_METHODS.data(), HTTP_METHODS.size()}; - } -#else - // Windows, and older C++ can't do constexpr std::array - static constexpr std::array HTTP_METHODS = { - #define MACRO(name) name, - FOR_EACH_HTTP_METHOD(MACRO) - #undef MACRO - }; - - static std::span getAllHttpMethods() { - static std::once_flag flag; - static std::array methods; - std::call_once(flag, []() { - methods = { - #define MACRO(name) std::string {name}, - FOR_EACH_HTTP_METHOD(MACRO) - #undef MACRO - }; - }); - return {methods.data(), methods.size()}; - } -#endif -#undef FOR_EACH_HTTP_METHOD - - us_socket_context_t *getSocketContext() { return (us_socket_context_t *) this; } @@ -195,7 +173,7 @@ private: /* Call filter */ HttpContextData *httpContextData = getSocketContextDataS(s); - + if(httpResponseData && httpResponseData->isConnectRequest) { if (httpResponseData->socketData && httpContextData->onSocketData) { httpContextData->onSocketData(httpResponseData->socketData, SSL, s, "", 0, true); @@ -203,7 +181,7 @@ private: if(httpResponseData->inStream) { httpResponseData->inStream(reinterpret_cast *>(s), "", 0, true, httpResponseData->userData); httpResponseData->inStream = nullptr; - } + } } @@ -253,7 +231,7 @@ private: /* Mark that we are inside the parser now */ httpContextData->flags.isParsingHttp = true; httpResponseData->isIdle = false; - + // clients need to know the cursor after http parse, not servers! // how far did we read then? we need to know to continue with websocket parsing data? or? @@ -266,7 +244,7 @@ private: auto result = httpResponseData->consumePostPadded(httpContextData->maxHeaderSize, httpResponseData->isConnectRequest, httpContextData->flags.requireHostHeader,httpContextData->flags.useStrictMethodValidation, data, (unsigned int) length, s, proxyParser, [httpContextData](void *s, HttpRequest *httpRequest) -> void * { - + /* For every request we reset the timeout and hang until user makes action */ /* Warning: if we are in shutdown state, resetting the timer is a security issue! */ us_socket_timeout(SSL, (us_socket_t *) s, 0); @@ -465,7 +443,7 @@ private: us_socket_context_on_writable(SSL, getSocketContext(), [](us_socket_t *s) { auto *asyncSocket = reinterpret_cast *>(s); auto *httpResponseData = reinterpret_cast *>(asyncSocket->getAsyncSocketData()); - + /* Attempt to drain the socket buffer before triggering onWritable callback */ size_t bufferedAmount = asyncSocket->getBufferedAmount(); if (bufferedAmount > 0) { @@ -536,7 +514,7 @@ private: us_socket_context_on_end(SSL, getSocketContext(), [](us_socket_t *s) { auto *asyncSocket = reinterpret_cast *>(s); asyncSocket->uncorkWithoutSending(); - + /* We do not care for half closed sockets */ return asyncSocket->close(); }); @@ -602,14 +580,16 @@ public: void onHttp(std::string_view method, std::string_view pattern, MoveOnlyFunction *, HttpRequest *)> &&handler, bool upgrade = false) { HttpContextData *httpContextData = getSocketContextData(); - std::span methods; - std::array methods_buffer; + std::span methods; + std::string method_buffer; + std::string_view method_sv_buffer; // When it's NOT node:http, allow the uWS default precedence ordering. if (method == "*" && !httpContextData->flags.useStrictMethodValidation) { - methods = getAllHttpMethods(); + methods = detail::supportedHttpMethods; } else { - methods_buffer[0] = std::string(method); - methods = {methods_buffer.data(), 1}; + method_buffer = std::string(method); + method_sv_buffer = std::string_view(method_buffer); + methods = {&method_sv_buffer, 1}; } uint32_t priority = method == "*" ? httpContextData->currentRouter->LOW_PRIORITY : (upgrade ? httpContextData->currentRouter->HIGH_PRIORITY : httpContextData->currentRouter->MEDIUM_PRIORITY); diff --git a/packages/bun-uws/src/HttpRouter.h b/packages/bun-uws/src/HttpRouter.h index fffd02364e..d90311899e 100644 --- a/packages/bun-uws/src/HttpRouter.h +++ b/packages/bun-uws/src/HttpRouter.h @@ -33,13 +33,13 @@ namespace uWS { -template +template struct HttpRouter { static constexpr std::string_view ANY_METHOD_TOKEN = "*"; static constexpr uint32_t HIGH_PRIORITY = 0xd0000000, MEDIUM_PRIORITY = 0xe0000000, LOW_PRIORITY = 0xf0000000; private: - USERDATA userData; + UserDataType userData; static const unsigned int MAX_URL_SEGMENTS = 100; /* Handler ids are 32-bit */ @@ -60,8 +60,8 @@ private: std::vector handlers = {}; bool isHighPriority = false; - Node(std::string name) : name(std::move(name)) {} - } root = {"rootNode"}; + explicit constexpr Node(std::string name) noexcept : name(std::move(name)) {} + } root {"rootNode"}; /* Sort wildcards after alphanum */ int lexicalOrder(std::string_view name) { @@ -78,7 +78,7 @@ private: } /* Advance from parent to child, adding child if necessary */ - Node *getNode(Node *parent, std::string child, bool isHighPriority) { + Node *getNode(Node *parent, std::string_view child, bool isHighPriority) { for (const std::unique_ptr &node : parent->children) { if (node->name == child && node->isHighPriority == isHighPriority) { return node.get(); @@ -86,7 +86,7 @@ private: } /* Insert sorted, but keep order if parent is root (we sort methods by priority elsewhere) */ - std::unique_ptr newNode(new Node(child)); + auto newNode = std::make_unique(std::string(child)); newNode->isHighPriority = isHighPriority; auto iter = std::upper_bound(parent->children.begin(), parent->children.end(), newNode, [parent, this](auto &a, auto &b) { if (a->isHighPriority != b->isHighPriority) { @@ -120,7 +120,7 @@ private: } routeParameters; /* Set URL for router. Will reset any URL cache */ - inline void setUrl(std::string_view url) { + void setUrl(std::string_view url) { /* Todo: URL may also start with "http://domain/" or "*", not only "/" */ @@ -130,7 +130,7 @@ private: } /* Lazily parse or read from cache */ - inline std::pair getUrlSegment(int urlSegment) { + std::pair getUrlSegment(int urlSegment) { if (urlSegment > urlSegmentTop) { /* Signal as STOP when we have no more URL or stack space */ if (!currentUrl.length() || urlSegment > int(MAX_URL_SEGMENTS - 1)) { @@ -164,7 +164,7 @@ private: } /* Executes as many handlers it can */ - bool executeHandlers(Node *parent, int urlSegment, USERDATA &userData) { + bool executeHandlers(Node *parent, int urlSegment, UserDataType &userData) { auto [segment, isStop] = getUrlSegment(urlSegment); @@ -248,7 +248,7 @@ public: return {routeParameters.paramsTop, routeParameters.params}; } - USERDATA &getUserData() { + UserDataType &getUserData() { return userData; } @@ -278,11 +278,11 @@ public: } /* Adds the corresponding entires in matching tree and handler list */ - void add(const std::span &methods, std::string_view pattern, MoveOnlyFunction &&handler, uint32_t priority = MEDIUM_PRIORITY) { + void add(std::span methods, std::string_view pattern, MoveOnlyFunction &&handler, uint32_t priority = MEDIUM_PRIORITY) { /* First remove existing handler */ remove(methods[0], pattern, priority); - for (const std::string &method : methods) { + for (const std::string_view method : methods) { /* Lookup method */ Node *node = getNode(&root, method, false); /* Iterate over all segments */ @@ -381,4 +381,4 @@ public: } -#endif // UWS_HTTPROUTER_HPP \ No newline at end of file +#endif // UWS_HTTPROUTER_HPP From 7c485177ee5a4878234de3aa822a80361cc9cf8d Mon Sep 17 00:00:00 2001 From: robobun Date: Tue, 18 Nov 2025 06:46:44 -0800 Subject: [PATCH 015/212] Add compile-time flags to control .env and bunfig.toml autoloading (#24790) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary This PR adds two new compile options to control whether standalone executables autoload `.env` files and `bunfig.toml` configuration files. ## New Options ### JavaScript API ```js await Bun.build({ entrypoints: ["./entry.ts"], compile: { autoloadDotenv: false, // Disable .env loading (default: true) autoloadBunfig: false, // Disable bunfig.toml loading (default: true) } }); ``` ### CLI Flags ```bash bun build --compile --no-compile-autoload-dotenv entry.ts bun build --compile --no-compile-autoload-bunfig entry.ts bun build --compile --compile-autoload-dotenv entry.ts bun build --compile --compile-autoload-bunfig entry.ts ``` ## Implementation The flags are stored in a new `Flags` packed struct in `StandaloneModuleGraph`: ```zig pub const Flags = packed struct(u32) { disable_default_env_files: bool = false, disable_autoload_bunfig: bool = false, _padding: u30 = 0, }; ``` These flags are: 1. Set during compilation from CLI args or JS API options 2. Serialized into the `StandaloneModuleGraph` embedded in the executable 3. Read at runtime in `bootStandalone()` to conditionally load config files ## Testing Manually tested and verified: - āœ… Default behavior loads `.env` files - āœ… `--no-compile-autoload-dotenv` disables `.env` loading - āœ… `--compile-autoload-dotenv` explicitly enables `.env` loading - āœ… Default behavior loads `bunfig.toml` (verified with preload script) - āœ… `--no-compile-autoload-bunfig` disables `bunfig.toml` loading Test cases added in `test/bundler/bundler_compile_autoload.test.ts` ## Files Changed - `src/StandaloneModuleGraph.zig` - Added Flags struct, updated encode/decode - `src/bun.js.zig` - Checks flags in bootStandalone() - `src/bun.js/api/JSBundler.zig` - Added autoload options to CompileOptions - `src/bundler/bundle_v2.zig` - Pass flags to toExecutable() - `src/cli.zig` - Added flags to BundlerOptions - `src/cli/Arguments.zig` - Added CLI argument parsing - `src/cli/build_command.zig` - Pass flags from context - `test/bundler/expectBundled.ts` - Support new compile options - `test/bundler/bundler_compile_autoload.test.ts` - New test file --------- Co-authored-by: Claude Bot Co-authored-by: Claude Co-authored-by: Jarred Sumner --- packages/bun-types/bun.d.ts | 20 ++ src/StandaloneModuleGraph.zig | 15 +- src/bun.js.zig | 11 +- src/bun.js/api/JSBundler.zig | 10 + src/bundler/bundle_v2.zig | 4 + src/cli.zig | 2 + src/cli/Arguments.zig | 40 +++ src/cli/build_command.zig | 4 + test/bundler/bundler_compile_autoload.test.ts | 267 ++++++++++++++++++ test/bundler/expectBundled.ts | 18 ++ 10 files changed, 387 insertions(+), 4 deletions(-) create mode 100644 test/bundler/bundler_compile_autoload.test.ts diff --git a/packages/bun-types/bun.d.ts b/packages/bun-types/bun.d.ts index 57f6d82965..7937b4976c 100644 --- a/packages/bun-types/bun.d.ts +++ b/packages/bun-types/bun.d.ts @@ -1933,6 +1933,26 @@ declare module "bun" { execArgv?: string[]; executablePath?: string; outfile?: string; + /** + * Whether to autoload .env files when the standalone executable runs + * + * Standalone-only: applies only when building/running the standalone executable. + * + * Equivalent CLI flags: `--compile-autoload-dotenv`, `--no-compile-autoload-dotenv` + * + * @default true + */ + autoloadDotenv?: boolean; + /** + * Whether to autoload bunfig.toml when the standalone executable runs + * + * Standalone-only: applies only when building/running the standalone executable. + * + * Equivalent CLI flags: `--compile-autoload-bunfig`, `--no-compile-autoload-bunfig` + * + * @default true + */ + autoloadBunfig?: boolean; windows?: { hideConsole?: boolean; icon?: string; diff --git a/src/StandaloneModuleGraph.zig b/src/StandaloneModuleGraph.zig index 823ec33974..b51a807d3a 100644 --- a/src/StandaloneModuleGraph.zig +++ b/src/StandaloneModuleGraph.zig @@ -7,6 +7,7 @@ pub const StandaloneModuleGraph = struct { files: bun.StringArrayHashMap(File), entry_point_id: u32 = 0, compile_exec_argv: []const u8 = "", + flags: Flags = .{}, // We never want to hit the filesystem for these files // We use the `/$bunfs/` prefix to indicate that it's a virtual path @@ -289,6 +290,13 @@ pub const StandaloneModuleGraph = struct { modules_ptr: bun.StringPointer = .{}, entry_point_id: u32 = 0, compile_exec_argv_ptr: bun.StringPointer = .{}, + flags: Flags = .{}, + }; + + pub const Flags = packed struct(u32) { + disable_default_env_files: bool = false, + disable_autoload_bunfig: bool = false, + _padding: u30 = 0, }; const trailer = "\n---- Bun! ----\n"; @@ -334,6 +342,7 @@ pub const StandaloneModuleGraph = struct { .files = modules, .entry_point_id = offsets.entry_point_id, .compile_exec_argv = sliceToZ(raw_bytes, offsets.compile_exec_argv_ptr), + .flags = offsets.flags, }; } @@ -349,7 +358,7 @@ pub const StandaloneModuleGraph = struct { return bytes[ptr.offset..][0..ptr.length :0]; } - pub fn toBytes(allocator: std.mem.Allocator, prefix: []const u8, output_files: []const bun.options.OutputFile, output_format: bun.options.Format, compile_exec_argv: []const u8) ![]u8 { + pub fn toBytes(allocator: std.mem.Allocator, prefix: []const u8, output_files: []const bun.options.OutputFile, output_format: bun.options.Format, compile_exec_argv: []const u8, flags: Flags) ![]u8 { var serialize_trace = bun.perf.trace("StandaloneModuleGraph.serialize"); defer serialize_trace.end(); @@ -498,6 +507,7 @@ pub const StandaloneModuleGraph = struct { .modules_ptr = string_builder.appendCount(std.mem.sliceAsBytes(modules.items)), .compile_exec_argv_ptr = string_builder.appendCountZ(compile_exec_argv), .byte_count = string_builder.len, + .flags = flags, }; _ = string_builder.append(std.mem.asBytes(&offsets)); @@ -979,8 +989,9 @@ pub const StandaloneModuleGraph = struct { windows_options: bun.options.WindowsOptions, compile_exec_argv: []const u8, self_exe_path: ?[]const u8, + flags: Flags, ) !CompileResult { - const bytes = toBytes(allocator, module_prefix, output_files, output_format, compile_exec_argv) catch |err| { + const bytes = toBytes(allocator, module_prefix, output_files, output_format, compile_exec_argv, flags) catch |err| { return CompileResult.failFmt("failed to generate module graph bytes: {s}", .{@errorName(err)}); }; if (bytes.len == 0) return CompileResult.fail(.no_output_files); diff --git a/src/bun.js.zig b/src/bun.js.zig index 1c79e41f64..84ab5016b1 100644 --- a/src/bun.js.zig +++ b/src/bun.js.zig @@ -26,7 +26,8 @@ pub const Run = struct { js_ast.Stmt.Data.Store.create(); const arena = Arena.init(); - if (!ctx.debug.loaded_bunfig) { + // Load bunfig.toml unless disabled by compile flags + if (!ctx.debug.loaded_bunfig and !graph.flags.disable_autoload_bunfig) { try bun.cli.Arguments.loadConfigPath(ctx.allocator, true, "bunfig.toml", ctx, .RunCommand); } @@ -81,7 +82,13 @@ pub const Run = struct { .unspecified => {}, } - b.options.env.behavior = .load_all_without_inlining; + // If .env loading is disabled, only load process env vars + // Otherwise, load all .env files + if (graph.flags.disable_default_env_files) { + b.options.env.behavior = .disable; + } else { + b.options.env.behavior = .load_all_without_inlining; + } b.configureDefines() catch { failWithBuildError(vm); diff --git a/src/bun.js/api/JSBundler.zig b/src/bun.js/api/JSBundler.zig index 0b549f9a5d..dfbf1adc9e 100644 --- a/src/bun.js/api/JSBundler.zig +++ b/src/bun.js/api/JSBundler.zig @@ -57,6 +57,8 @@ pub const JSBundler = struct { windows_description: OwnedString = OwnedString.initEmpty(bun.default_allocator), windows_copyright: OwnedString = OwnedString.initEmpty(bun.default_allocator), outfile: OwnedString = OwnedString.initEmpty(bun.default_allocator), + autoload_dotenv: bool = true, + autoload_bunfig: bool = true, pub fn fromJS(globalThis: *jsc.JSGlobalObject, config: jsc.JSValue, allocator: std.mem.Allocator, compile_target: ?CompileTarget) JSError!?CompileOptions { var this = CompileOptions{ @@ -177,6 +179,14 @@ pub const JSBundler = struct { try this.outfile.appendSliceExact(slice.slice()); } + if (try object.getBooleanLoose(globalThis, "autoloadDotenv")) |autoload_dotenv| { + this.autoload_dotenv = autoload_dotenv; + } + + if (try object.getBooleanLoose(globalThis, "autoloadBunfig")) |autoload_bunfig| { + this.autoload_bunfig = autoload_bunfig; + } + return this; } diff --git a/src/bundler/bundle_v2.zig b/src/bundler/bundle_v2.zig index b83e7121fb..76c35c3430 100644 --- a/src/bundler/bundle_v2.zig +++ b/src/bundler/bundle_v2.zig @@ -2042,6 +2042,10 @@ pub const BundleV2 = struct { compile_options.executable_path.slice() else null, + .{ + .disable_default_env_files = !compile_options.autoload_dotenv, + .disable_autoload_bunfig = !compile_options.autoload_bunfig, + }, ) catch |err| { return bun.StandaloneModuleGraph.CompileResult.failFmt("{s}", .{@errorName(err)}); }; diff --git a/src/cli.zig b/src/cli.zig index 245925dc34..63b605339c 100644 --- a/src/cli.zig +++ b/src/cli.zig @@ -458,6 +458,8 @@ pub const Command = struct { compile: bool = false, compile_target: Cli.CompileTarget = .{}, compile_exec_argv: ?[]const u8 = null, + compile_autoload_dotenv: bool = true, + compile_autoload_bunfig: bool = true, windows: options.WindowsOptions = .{}, }; diff --git a/src/cli/Arguments.zig b/src/cli/Arguments.zig index efc50819a5..9f163ad617 100644 --- a/src/cli/Arguments.zig +++ b/src/cli/Arguments.zig @@ -149,6 +149,10 @@ pub const build_only_params = [_]ParamType{ clap.parseParam("--production Set NODE_ENV=production and enable minification") catch unreachable, clap.parseParam("--compile Generate a standalone Bun executable containing your bundled code. Implies --production") catch unreachable, clap.parseParam("--compile-exec-argv Prepend arguments to the standalone executable's execArgv") catch unreachable, + clap.parseParam("--compile-autoload-dotenv Enable autoloading of .env files in standalone executable (default: true)") catch unreachable, + clap.parseParam("--no-compile-autoload-dotenv Disable autoloading of .env files in standalone executable") catch unreachable, + clap.parseParam("--compile-autoload-bunfig Enable autoloading of bunfig.toml in standalone executable (default: true)") catch unreachable, + clap.parseParam("--no-compile-autoload-bunfig Disable autoloading of bunfig.toml in standalone executable") catch unreachable, clap.parseParam("--bytecode Use a bytecode cache") catch unreachable, clap.parseParam("--watch Automatically restart the process on file change") catch unreachable, clap.parseParam("--no-clear-screen Disable clearing the terminal screen on reload when --watch is enabled") catch unreachable, @@ -1023,6 +1027,42 @@ pub fn parse(allocator: std.mem.Allocator, ctx: Command.Context, comptime cmd: C ctx.bundler_options.compile_exec_argv = compile_exec_argv; } + // Handle --compile-autoload-dotenv flags + { + const has_positive = args.flag("--compile-autoload-dotenv"); + const has_negative = args.flag("--no-compile-autoload-dotenv"); + + if (has_positive or has_negative) { + if (!ctx.bundler_options.compile) { + Output.errGeneric("--compile-autoload-dotenv requires --compile", .{}); + Global.crash(); + } + if (has_positive and has_negative) { + Output.errGeneric("Cannot use both --compile-autoload-dotenv and --no-compile-autoload-dotenv", .{}); + Global.crash(); + } + ctx.bundler_options.compile_autoload_dotenv = has_positive; + } + } + + // Handle --compile-autoload-bunfig flags + { + const has_positive = args.flag("--compile-autoload-bunfig"); + const has_negative = args.flag("--no-compile-autoload-bunfig"); + + if (has_positive or has_negative) { + if (!ctx.bundler_options.compile) { + Output.errGeneric("--compile-autoload-bunfig requires --compile", .{}); + Global.crash(); + } + if (has_positive and has_negative) { + Output.errGeneric("Cannot use both --compile-autoload-bunfig and --no-compile-autoload-bunfig", .{}); + Global.crash(); + } + ctx.bundler_options.compile_autoload_bunfig = has_positive; + } + } + if (args.flag("--windows-hide-console")) { // --windows-hide-console technically doesnt depend on WinAPI, but since since --windows-icon // does, all of these customization options have been gated to windows-only diff --git a/src/cli/build_command.zig b/src/cli/build_command.zig index 8aa3e780f0..031fcb9be7 100644 --- a/src/cli/build_command.zig +++ b/src/cli/build_command.zig @@ -440,6 +440,10 @@ pub const BuildCommand = struct { ctx.bundler_options.windows, ctx.bundler_options.compile_exec_argv orelse "", null, + .{ + .disable_default_env_files = !ctx.bundler_options.compile_autoload_dotenv, + .disable_autoload_bunfig = !ctx.bundler_options.compile_autoload_bunfig, + }, ) catch |err| { Output.printErrorln("failed to create executable: {s}", .{@errorName(err)}); Global.exit(1); diff --git a/test/bundler/bundler_compile_autoload.test.ts b/test/bundler/bundler_compile_autoload.test.ts new file mode 100644 index 0000000000..be4ca6e119 --- /dev/null +++ b/test/bundler/bundler_compile_autoload.test.ts @@ -0,0 +1,267 @@ +import { describe } from "bun:test"; +import { itBundled } from "./expectBundled"; + +describe("bundler", () => { + // Test that .env files are loaded by default in standalone executables + itBundled("compile/AutoloadDotenvDefault", { + compile: true, + files: { + "/entry.ts": /* js */ ` + console.log(process.env.TEST_VAR || "not found"); + `, + }, + runtimeFiles: { + "/.env": `TEST_VAR=from_dotenv`, + }, + run: { + stdout: "from_dotenv", + setCwd: true, + }, + }); + + // Test that .env files can be disabled with autoloadDotenv: false + itBundled("compile/AutoloadDotenvDisabled", { + compile: { + autoloadDotenv: false, + }, + files: { + "/entry.ts": /* js */ ` + console.log(process.env.TEST_VAR || "not found"); + `, + }, + runtimeFiles: { + "/.env": `TEST_VAR=from_dotenv`, + }, + run: { + stdout: "not found", + setCwd: true, + }, + }); + + // Test that .env files can be explicitly enabled with autoloadDotenv: true + itBundled("compile/AutoloadDotenvEnabledExplicitly", { + compile: { + autoloadDotenv: true, + }, + files: { + "/entry.ts": /* js */ ` + console.log(process.env.TEST_VAR || "not found"); + `, + }, + runtimeFiles: { + "/.env": `TEST_VAR=from_dotenv`, + }, + run: { + stdout: "from_dotenv", + setCwd: true, + }, + }); + + // Test that process environment variables take precedence over .env files + itBundled("compile/AutoloadDotenvWithExistingEnv", { + compile: true, + files: { + "/entry.ts": /* js */ ` + console.log(process.env.TEST_VAR || "not found"); + `, + }, + runtimeFiles: { + "/.env": `TEST_VAR=from_dotenv`, + }, + run: { + stdout: "from_shell", + setCwd: true, + env: { + TEST_VAR: "from_shell", + }, + }, + }); + + // Test that bunfig.toml is loaded by default (preload is executed) + itBundled("compile/AutoloadBunfigDefault", { + compile: true, + files: { + "/entry.ts": /* js */ ` + console.log("ENTRY"); + `, + }, + runtimeFiles: { + "/bunfig.toml": ` +preload = ["./preload.ts"] + `, + "/preload.ts": ` +console.log("PRELOAD"); + `, + }, + run: { + stdout: "PRELOAD\nENTRY", + setCwd: true, + }, + }); + + // Test that bunfig.toml can be disabled with autoloadBunfig: false + itBundled("compile/AutoloadBunfigDisabled", { + compile: { + autoloadBunfig: false, + }, + files: { + "/entry.ts": /* js */ ` + console.log("ENTRY"); + `, + }, + runtimeFiles: { + "/bunfig.toml": ` +preload = ["./preload.ts"] + `, + "/preload.ts": ` +console.log("PRELOAD"); + `, + }, + run: { + // When bunfig is disabled, preload should NOT execute + stdout: "ENTRY", + setCwd: true, + }, + }); + + // Test that bunfig.toml can be explicitly enabled with autoloadBunfig: true + itBundled("compile/AutoloadBunfigEnabled", { + compile: { + autoloadBunfig: true, + }, + files: { + "/entry.ts": /* js */ ` + console.log("ENTRY"); + `, + }, + runtimeFiles: { + "/bunfig.toml": ` +preload = ["./preload.ts"] + `, + "/preload.ts": ` +console.log("PRELOAD"); + `, + }, + run: { + stdout: "PRELOAD\nENTRY", + setCwd: true, + }, + }); + + // Test CLI backend with autoloadDotenv: false + itBundled("compile/AutoloadDotenvDisabledCLI", { + compile: { + autoloadDotenv: false, + }, + backend: "cli", + files: { + "/entry.ts": /* js */ ` + console.log(process.env.TEST_VAR || "not found"); + `, + }, + runtimeFiles: { + "/.env": `TEST_VAR=from_dotenv`, + }, + run: { + stdout: "not found", + setCwd: true, + }, + }); + + // Test CLI backend with autoloadDotenv: true + itBundled("compile/AutoloadDotenvEnabledCLI", { + compile: { + autoloadDotenv: true, + }, + backend: "cli", + files: { + "/entry.ts": /* js */ ` + console.log(process.env.TEST_VAR || "not found"); + `, + }, + runtimeFiles: { + "/.env": `TEST_VAR=from_dotenv`, + }, + run: { + stdout: "from_dotenv", + setCwd: true, + }, + }); + + // Test CLI backend with autoloadBunfig: false + itBundled("compile/AutoloadBunfigDisabledCLI", { + compile: { + autoloadBunfig: false, + }, + backend: "cli", + files: { + "/entry.ts": /* js */ ` + console.log("ENTRY"); + `, + }, + runtimeFiles: { + "/bunfig.toml": ` +preload = ["./preload.ts"] + `, + "/preload.ts": ` +console.log("PRELOAD"); + `, + }, + run: { + stdout: "ENTRY", + setCwd: true, + }, + }); + + // Test CLI backend with autoloadBunfig: true + itBundled("compile/AutoloadBunfigEnabledCLI", { + compile: { + autoloadBunfig: true, + }, + backend: "cli", + files: { + "/entry.ts": /* js */ ` + console.log("ENTRY"); + `, + }, + runtimeFiles: { + "/bunfig.toml": ` +preload = ["./preload.ts"] + `, + "/preload.ts": ` +console.log("PRELOAD"); + `, + }, + run: { + stdout: "PRELOAD\nENTRY", + setCwd: true, + }, + }); + + // Test that both flags can be disabled together without interference + itBundled("compile/AutoloadBothDisabled", { + compile: { + autoloadDotenv: false, + autoloadBunfig: false, + }, + files: { + "/entry.ts": /* js */ ` + console.log(process.env.TEST_VAR || "not found"); + console.log("ENTRY"); + `, + }, + runtimeFiles: { + "/.env": `TEST_VAR=from_dotenv`, + "/bunfig.toml": ` +preload = ["./preload.ts"] + `, + "/preload.ts": ` +console.log("PRELOAD"); + `, + }, + run: { + stdout: "not found\nENTRY", + setCwd: true, + }, + }); +}); diff --git a/test/bundler/expectBundled.ts b/test/bundler/expectBundled.ts index 4379263dbc..66bd3b6894 100644 --- a/test/bundler/expectBundled.ts +++ b/test/bundler/expectBundled.ts @@ -702,6 +702,16 @@ function expectBundled( ? Object.entries(bundleErrors).flatMap(([file, v]) => v.map(error => ({ file, error }))) : null; + // Helper to add compile boolean flags + const compileFlag = (prop: string, trueFlag: string, falseFlag: string): string[] => { + if (compile && typeof compile === "object" && Object.prototype.hasOwnProperty.call(compile, prop)) { + const value = (compile as any)[prop]; + if (value === true) return [trueFlag]; + if (value === false) return [falseFlag]; + } + return []; + }; + if (backend === "cli") { if (plugins) { throw new Error("plugins not possible in backend=CLI"); @@ -719,6 +729,8 @@ function expectBundled( compile && typeof compile === "object" && "execArgv" in compile ? `--compile-exec-argv=${Array.isArray(compile.execArgv) ? compile.execArgv.join(" ") : compile.execArgv}` : [], + compileFlag("autoloadDotenv", "--compile-autoload-dotenv", "--no-compile-autoload-dotenv"), + compileFlag("autoloadBunfig", "--compile-autoload-bunfig", "--no-compile-autoload-bunfig"), outfile ? `--outfile=${outfile}` : `--outdir=${outdir}`, define && Object.entries(define).map(([k, v]) => ["--define", `${k}=${v}`]), `--target=${target}`, @@ -1058,6 +1070,12 @@ function expectBundled( target: compile, outfile: outfile, }; + } else if (typeof compile === "object") { + // When compile is already an object, ensure it has outfile set + compile = { + ...compile, + outfile: outfile, + }; } } From af498a0483002913bebcd5a48e359df495ed9ff3 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Tue, 18 Nov 2025 06:55:15 -0800 Subject: [PATCH 016/212] runtime: fix small leak in Blob deinit (#24802) pulled out of https://github.com/oven-sh/bun/pull/21663 --- scripts/runner.node.mjs | 2 +- src/bun.js/webcore/Blob.zig | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/runner.node.mjs b/scripts/runner.node.mjs index dd566d2b27..bb8d98754a 100755 --- a/scripts/runner.node.mjs +++ b/scripts/runner.node.mjs @@ -494,7 +494,7 @@ async function runTests() { if (isBuildkite) { // Group flaky tests together, regardless of the title const context = flaky ? "flaky" : title; - const style = flaky || title.startsWith("vendor") ? "warning" : "error"; + const style = flaky ? "warning" : "error"; if (!flaky) attempt = 1; // no need to show the retries count on failures, we know it maxed out if (title.startsWith("vendor")) { diff --git a/src/bun.js/webcore/Blob.zig b/src/bun.js/webcore/Blob.zig index c224f9a559..0389bb03a5 100644 --- a/src/bun.js/webcore/Blob.zig +++ b/src/bun.js/webcore/Blob.zig @@ -4772,6 +4772,7 @@ export fn Blob__ref(self: *Blob) void { export fn Blob__deref(self: *Blob) void { bun.assertf(self.isHeapAllocated(), "cannot deref: this Blob is not heap-allocated", .{}); if (self.#ref_count.decrement() == .should_destroy) { + self.#ref_count.increment(); // deinit has its own isHeapAllocated() guard around bun.destroy(this), so this is needed to ensure that returns true. self.deinit(); } } From ab80bbe4c286bd6dfaabe64129ddcb6f1ce9f0a5 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Tue, 18 Nov 2025 06:55:45 -0800 Subject: [PATCH 017/212] runtime: fix small leak in node:net.SocketAddress (#24800) pulled out of https://github.com/oven-sh/bun/pull/21663 --- src/bun.js/api/bun/socket/SocketAddress.zig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/bun.js/api/bun/socket/SocketAddress.zig b/src/bun.js/api/bun/socket/SocketAddress.zig index 473e112839..d3957ca47f 100644 --- a/src/bun.js/api/bun/socket/SocketAddress.zig +++ b/src/bun.js/api/bun/socket/SocketAddress.zig @@ -80,10 +80,11 @@ pub const Options = struct { }; } - inline fn throwBadPort(global: *jsc.JSGlobalObject, port_: jsc.JSValue) bun.JSError { + fn throwBadPort(global: *jsc.JSGlobalObject, port_: jsc.JSValue) bun.JSError { const ty = global.determineSpecificType(port_) catch { return global.ERR(.SOCKET_BAD_PORT, "The \"options.port\" argument must be a valid IP port number.", .{}).throw(); }; + defer ty.deref(); return global.ERR(.SOCKET_BAD_PORT, "The \"options.port\" argument must be a valid IP port number. Got {f}.", .{ty}).throw(); } }; From f03957474e3b68ba59327d6ae85b2d83810a488a Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Tue, 18 Nov 2025 06:57:19 -0800 Subject: [PATCH 018/212] runtime: fix small leak in Bun.spawn (#24798) pulled out of https://github.com/oven-sh/bun/pull/21663 --- src/bun.js/api/bun/js_bun_spawn_bindings.zig | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bun.js/api/bun/js_bun_spawn_bindings.zig b/src/bun.js/api/bun/js_bun_spawn_bindings.zig index 165b950d57..7a24fdd8ef 100644 --- a/src/bun.js/api/bun/js_bun_spawn_bindings.zig +++ b/src/bun.js/api/bun/js_bun_spawn_bindings.zig @@ -132,6 +132,7 @@ pub fn spawnMaybeSync( var maybe_ipc_mode: if (is_sync) void else ?IPC.Mode = if (is_sync) {} else null; var ipc_callback: JSValue = .zero; var extra_fds = std.array_list.Managed(bun.spawn.SpawnOptions.Stdio).init(bun.default_allocator); + defer extra_fds.deinit(); var argv0: ?[*:0]const u8 = null; var ipc_channel: i32 = -1; var timeout: ?i32 = null; From cac8e626356b22324f1f437f1f15ef7045a6500b Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Tue, 18 Nov 2025 10:49:21 -0800 Subject: [PATCH 019/212] zig: switch exhaustively on os + arch more (#24796) --- src/StandaloneModuleGraph.zig | 2 +- src/Watcher.zig | 2 +- src/async/posix_event_loop.zig | 2 +- src/bun.js/api/ffi.zig | 2 +- src/bun.js/node/StatFS.zig | 2 +- src/bun.js/node/dir_iterator.zig | 22 +++++++--------------- src/bun.js/node/node_fs.zig | 4 ++-- src/bun.js/node/node_os.zig | 12 ++++++------ src/bun.js/webcore/Blob.zig | 2 +- src/bun.zig | 2 +- src/cli/upgrade_command.zig | 2 +- src/compile_target.zig | 2 +- src/crash_handler.zig | 8 ++++---- src/deps/uws/Loop.zig | 2 +- src/deps/uws/Response.zig | 2 +- src/fd.zig | 2 +- src/install/npm.zig | 8 ++++---- src/resolver/resolve_path.zig | 2 +- src/sys.zig | 22 +++++++++++----------- src/windows.zig | 2 +- 20 files changed, 48 insertions(+), 56 deletions(-) diff --git a/src/StandaloneModuleGraph.zig b/src/StandaloneModuleGraph.zig index b51a807d3a..df838ae007 100644 --- a/src/StandaloneModuleGraph.zig +++ b/src/StandaloneModuleGraph.zig @@ -1380,7 +1380,7 @@ pub const StandaloneModuleGraph = struct { return error.FileNotFound; }; }, - else => @compileError("TODO"), + .wasm => @compileError("TODO"), } } diff --git a/src/Watcher.zig b/src/Watcher.zig index 3a8f448426..6a217b1136 100644 --- a/src/Watcher.zig +++ b/src/Watcher.zig @@ -144,7 +144,7 @@ const Platform = switch (Environment.os) { .linux => @import("./watcher/INotifyWatcher.zig"), .mac => @import("./watcher/KEventWatcher.zig"), .windows => WindowsWatcher, - else => @compileError("Unsupported platform"), + .wasm => @compileError("Unsupported platform"), }; pub const WatchEvent = struct { diff --git a/src/async/posix_event_loop.zig b/src/async/posix_event_loop.zig index 88b6311608..8b403f529a 100644 --- a/src/async/posix_event_loop.zig +++ b/src/async/posix_event_loop.zig @@ -1089,7 +1089,7 @@ pub const FilePoll = struct { pub const Waker = switch (Environment.os) { .mac => KEventWaker, .linux => LinuxWaker, - else => @compileError(unreachable), + .windows, .wasm => @compileError("unreachable"), }; pub const LinuxWaker = struct { diff --git a/src/bun.js/api/ffi.zig b/src/bun.js/api/ffi.zig index 4b99ba8b5a..d1127e4e15 100644 --- a/src/bun.js/api/ffi.zig +++ b/src/bun.js/api/ffi.zig @@ -1011,7 +1011,7 @@ pub const FFI = struct { .linux => "so", .mac => "dylib", .windows => "dll", - else => @compileError("TODO"), + .wasm => @compileError("TODO"), }, )) |resolved| { @memcpy(filepath_buf[0..resolved.len], resolved); diff --git a/src/bun.js/node/StatFS.zig b/src/bun.js/node/StatFS.zig index d0f3577023..c1cdaa0a9a 100644 --- a/src/bun.js/node/StatFS.zig +++ b/src/bun.js/node/StatFS.zig @@ -65,7 +65,7 @@ pub fn StatFSType(comptime big: bool) type { statfs_.f_files, statfs_.f_ffree, }, - else => @compileError("Unsupported OS"), + .wasm => @compileError("Unsupported OS"), }; return .{ ._fstype = @truncate(@as(i64, @intCast(fstype_))), diff --git a/src/bun.js/node/dir_iterator.zig b/src/bun.js/node/dir_iterator.zig index c660271eaa..215fcf395e 100644 --- a/src/bun.js/node/dir_iterator.zig +++ b/src/bun.js/node/dir_iterator.zig @@ -34,8 +34,8 @@ pub const Iterator = NewIterator(false); pub const IteratorW = NewIterator(true); pub fn NewIterator(comptime use_windows_ospath: bool) type { - return switch (builtin.os.tag) { - .macos, .ios, .freebsd, .netbsd, .dragonfly, .openbsd, .solaris => struct { + return switch (bun.Environment.os) { + .mac => struct { dir: FD, seek: i64, buf: [8192]u8 align(@alignOf(std.posix.system.dirent)), @@ -329,7 +329,7 @@ pub fn NewIterator(comptime use_windows_ospath: bool) type { } } }, - .wasi => struct { + .wasm => struct { dir: FD, buf: [8192]u8, // TODO align(@alignOf(os.wasi.dirent_t)), cookie: u64, @@ -393,7 +393,6 @@ pub fn NewIterator(comptime use_windows_ospath: bool) type { } } }, - else => @compileError("unimplemented"), }; } @@ -414,14 +413,8 @@ pub fn NewWrappedIterator(comptime path_type: PathType) type { pub fn init(dir: FD) Self { return Self{ - .iter = switch (builtin.os.tag) { - .macos, - .ios, - .freebsd, - .netbsd, - .dragonfly, - .openbsd, - .solaris, + .iter = switch (bun.Environment.os) { + .mac, => IteratorType{ .dir = dir, .seek = 0, @@ -429,7 +422,7 @@ pub fn NewWrappedIterator(comptime path_type: PathType) type { .end_index = 0, .buf = undefined, }, - .linux, .haiku => IteratorType{ + .linux => IteratorType{ .dir = dir, .index = 0, .end_index = 0, @@ -443,14 +436,13 @@ pub fn NewWrappedIterator(comptime path_type: PathType) type { .buf = undefined, .name_data = undefined, }, - .wasi => IteratorType{ + .wasm => IteratorType{ .dir = dir, .cookie = posix.wasi.DIRCOOKIE_START, .index = 0, .end_index = 0, .buf = undefined, }, - else => @compileError("unimplemented"), }, }; } diff --git a/src/bun.js/node/node_fs.zig b/src/bun.js/node/node_fs.zig index c90d2a40ae..c67176bb9b 100644 --- a/src/bun.js/node/node_fs.zig +++ b/src/bun.js/node/node_fs.zig @@ -3733,7 +3733,7 @@ pub const NodeFS = struct { return ret.success; } - @compileError(unreachable); + @compileError("unreachable"); } pub fn exists(this: *NodeFS, args: Arguments.Exists, _: Flavor) Maybe(Return.Exists) { @@ -4800,7 +4800,7 @@ pub const NodeFS = struct { bun.String => { bun.handleOom(entries.append(jsc.WebCore.encoding.toBunString(strings.withoutNTPrefix(std.meta.Child(@TypeOf(name_to_copy)), name_to_copy), args.encoding))); }, - else => @compileError(unreachable), + else => @compileError("unreachable"), } } } diff --git a/src/bun.js/node/node_os.zig b/src/bun.js/node/node_os.zig index f4bd9eee52..ecbf372fa6 100644 --- a/src/bun.js/node/node_os.zig +++ b/src/bun.js/node/node_os.zig @@ -38,7 +38,7 @@ pub fn cpus(global: *jsc.JSGlobalObject) bun.JSError!jsc.JSValue { .linux => cpusImplLinux, .mac => cpusImplDarwin, .windows => cpusImplWindows, - else => @compileError("Unsupported OS"), + .wasm => @compileError("Unsupported OS"), }; return cpusImpl(global) catch { @@ -452,7 +452,7 @@ pub fn loadavg(global: *jsc.JSGlobalObject) bun.JSError!jsc.JSValue { pub const networkInterfaces = switch (Environment.os) { .linux, .mac => networkInterfacesPosix, .windows => networkInterfacesWindows, - else => @compileError("Unsupported OS"), + .wasm => @compileError("Unsupported OS"), }; fn networkInterfacesPosix(globalThis: *jsc.JSGlobalObject) bun.JSError!jsc.JSValue { @@ -787,7 +787,7 @@ pub fn release() bun.String { @memcpy(name_buffer[0..value.len], value); break :slice name_buffer[0..value.len]; }, - else => @compileError("unsupported os"), + .wasm => @compileError("unsupported os"), }; return bun.String.cloneUTF8(value); @@ -881,7 +881,7 @@ pub fn totalmem() u64 { .windows => { return libuv.uv_get_total_memory(); }, - else => @compileError("unsupported os"), + .wasm => @compileError("unsupported os"), } } @@ -923,7 +923,7 @@ pub fn uptime(global: *jsc.JSGlobalObject) bun.JSError!f64 { return @floatFromInt(info.uptime); return 0; }, - else => @compileError("unsupported os"), + .wasm => @compileError("unsupported os"), } } @@ -990,7 +990,7 @@ pub fn version() bun.JSError!bun.String { @memcpy(name_buffer[0..slice.len], slice); break :slice name_buffer[0..slice.len]; }, - else => @compileError("unsupported os"), + .wasm => @compileError("unsupported os"), }; return bun.String.cloneUTF8(slice); diff --git a/src/bun.js/webcore/Blob.zig b/src/bun.js/webcore/Blob.zig index 0389bb03a5..ffaa35af51 100644 --- a/src/bun.js/webcore/Blob.zig +++ b/src/bun.js/webcore/Blob.zig @@ -2670,7 +2670,7 @@ pub fn getWriter( return globalThis.throwValue(err.withPath(pathlike.path.slice()).toJS(globalThis)); }, } - @compileError(unreachable); + @compileError("unreachable"); }; const is_stdout_or_stderr = brk: { diff --git a/src/bun.zig b/src/bun.zig index 8697e07a8c..cdfc3e6cd0 100644 --- a/src/bun.zig +++ b/src/bun.zig @@ -2729,7 +2729,7 @@ pub inline fn resolveSourcePath( }, sub_path, }) catch - @compileError(unreachable))[0..].*; + @compileError("unreachable"))[0..].*; break :path &resolved; }; } diff --git a/src/cli/upgrade_command.zig b/src/cli/upgrade_command.zig index 607ad8f533..f5b2fc806a 100644 --- a/src/cli/upgrade_command.zig +++ b/src/cli/upgrade_command.zig @@ -39,7 +39,7 @@ pub const Version = struct { .mac => "darwin", .linux => "linux", .windows => "windows", - else => @compileError("Unsupported OS for Bun Upgrade"), + .wasm => @compileError("Unsupported OS for Bun Upgrade"), }; pub const arch_label = if (Environment.isAarch64) "aarch64" else "x64"; diff --git a/src/compile_target.zig b/src/compile_target.zig index 8980cd94ae..1c3f7d54a4 100644 --- a/src/compile_target.zig +++ b/src/compile_target.zig @@ -469,7 +469,7 @@ pub fn defineValues(this: *const CompileTarget) []const []const u8 { switch (arch) { .x64 => "\"x64\"", .arm64 => "\"arm64\"", - else => @compileError("TODO"), + .wasm => @compileError("TODO"), }, "\"" ++ Global.package_json_version ++ "\"", diff --git a/src/crash_handler.zig b/src/crash_handler.zig index c8f46d1a30..ac92d0879a 100644 --- a/src/crash_handler.zig +++ b/src/crash_handler.zig @@ -322,7 +322,7 @@ pub fn crashHandler( } }, .mac, .linux => {}, - else => @compileError("TODO"), + .wasm => @compileError("TODO"), } writer.writeAll(": ") catch std.posix.abort(); @@ -831,7 +831,7 @@ fn handleSegfaultPosix(sig: i32, info: *const std.posix.siginfo_t, _: ?*const an const addr = switch (bun.Environment.os) { .linux => @intFromPtr(info.fields.sigfault.addr), .mac => @intFromPtr(info.addr), - else => @compileError(unreachable), + .windows, .wasm => @compileError("unreachable"), }; crashHandler( @@ -895,7 +895,7 @@ pub fn init() void { .mac, .linux => { resetOnPosix(); }, - else => @compileError("TODO"), + .wasm => @compileError("TODO"), } } @@ -1532,7 +1532,7 @@ fn report(url: []const u8) void { }, } }, - else => @compileError("Not implemented"), + .wasm => @compileError("Not implemented"), } } diff --git a/src/deps/uws/Loop.zig b/src/deps/uws/Loop.zig index fabebfba42..c4e663a671 100644 --- a/src/deps/uws/Loop.zig +++ b/src/deps/uws/Loop.zig @@ -24,7 +24,7 @@ pub const PosixLoop = extern struct { .mac => std.posix.system.kevent64_s, // TODO: .windows => *anyopaque, - else => @compileError("Unsupported OS"), + .wasm => @compileError("Unsupported OS"), }; pub fn uncork(this: *PosixLoop) void { diff --git a/src/deps/uws/Response.zig b/src/deps/uws/Response.zig index 0a1ce7f901..4dd8cc0b4f 100644 --- a/src/deps/uws/Response.zig +++ b/src/deps/uws/Response.zig @@ -422,7 +422,7 @@ pub const AnyResponse = union(enum) { return switch (@TypeOf(response)) { *uws.NewApp(true).Response => .{ .SSL = response }, *uws.NewApp(false).Response => .{ .TCP = response }, - else => @compileError(unreachable), + else => @compileError("unreachable"), }; } diff --git a/src/fd.zig b/src/fd.zig index 75eab577cf..805a737685 100644 --- a/src/fd.zig +++ b/src/fd.zig @@ -287,7 +287,7 @@ pub const FD = packed struct(backing_int) { }; }, }, - else => @compileError("FD.close() not implemented for fd platform"), + .wasm => @compileError("FD.close() not implemented for fd platform"), }; if (Environment.isDebug) { if (result) |err| { diff --git a/src/install/npm.zig b/src/install/npm.zig index e2a26f8040..11ca8fa72d 100644 --- a/src/install/npm.zig +++ b/src/install/npm.zig @@ -646,7 +646,7 @@ pub const OperatingSystem = enum(u16) { .linux => @enumFromInt(linux), .mac => @enumFromInt(darwin), .windows => @enumFromInt(win32), - else => @compileError("Unsupported operating system: " ++ @tagName(Environment.os)), + .wasm => @compileError("Unsupported operating system: " ++ @tagName(Environment.os)), }; pub fn isMatch(this: OperatingSystem, target: OperatingSystem) bool { @@ -672,7 +672,7 @@ pub const OperatingSystem = enum(u16) { .linux => "linux", .mac => "darwin", .windows => "win32", - else => @compileError("Unsupported operating system: " ++ @tagName(current)), + .wasm => @compileError("Unsupported operating system: " ++ @tagName(current)), }; pub fn negatable(this: OperatingSystem) Negatable(OperatingSystem) { @@ -765,13 +765,13 @@ pub const Architecture = enum(u16) { pub const current: Architecture = switch (Environment.arch) { .arm64 => @enumFromInt(arm64), .x64 => @enumFromInt(x64), - else => @compileError("Specify architecture: " ++ Environment.arch), + .wasm => @compileError("Specify architecture: " ++ Environment.arch), }; pub const current_name = switch (Environment.arch) { .arm64 => "arm64", .x64 => "x64", - else => @compileError("Unsupported architecture: " ++ @tagName(current)), + .wasm => @compileError("Unsupported architecture: " ++ @tagName(current)), }; pub const NameMap = bun.ComptimeStringMap(u16, .{ diff --git a/src/resolver/resolve_path.zig b/src/resolver/resolve_path.zig index 9c7a023fe2..61155c109f 100644 --- a/src/resolver/resolve_path.zig +++ b/src/resolver/resolve_path.zig @@ -497,7 +497,7 @@ pub fn dirname(str: []const u8, comptime platform: Platform) []const u8 { const separator = lastIndexOfSeparatorWindows(str) orelse return std.fs.path.diskDesignatorWindows(str); return str[0..separator]; }, - else => @compileError("not implemented"), + .nt => @compileError("not implemented"), } } diff --git a/src/sys.zig b/src/sys.zig index a2b860fed3..acc8fbd66e 100644 --- a/src/sys.zig +++ b/src/sys.zig @@ -53,7 +53,7 @@ pub const syscall = switch (Environment.os) { .linux => std.os.linux, // macOS requires using libc .mac => std.c, - else => @compileError("not implemented"), + .windows, .wasm => @compileError("not implemented"), }; fn toPackedO(number: anytype) std.posix.O { @@ -698,7 +698,7 @@ pub fn mkdiratZ(dir_fd: bun.FileDescriptor, file_path: [*:0]const u8, mode: mode return switch (Environment.os) { .mac => Maybe(void).errnoSysP(syscall.mkdirat(@intCast(dir_fd.cast()), file_path, mode), .mkdir, file_path) orelse .success, .linux => Maybe(void).errnoSysP(linux.mkdirat(@intCast(dir_fd.cast()), file_path, mode), .mkdir, file_path) orelse .success, - else => @compileError("mkdir is not implemented on this platform"), + .windows, .wasm => @compileError("mkdir is not implemented on this platform"), }; } @@ -760,7 +760,7 @@ pub fn mkdir(file_path: [:0]const u8, flags: mode_t) Maybe(void) { ) orelse .success; }, - else => @compileError("mkdir is not implemented on this platform"), + .wasm => @compileError("mkdir is not implemented on this platform"), }; } @@ -1718,7 +1718,7 @@ pub fn write(fd: bun.FileDescriptor, bytes: []const u8) Maybe(usize) { return Maybe(usize){ .result = bytes_written }; }, - else => @compileError("Not implemented yet"), + .wasm => @compileError("Not implemented yet"), }; } @@ -1992,7 +1992,7 @@ pub fn read(fd: bun.FileDescriptor, buf: []u8) Maybe(usize) { return Maybe(usize){ .result = amount_read }; }, - else => @compileError("read is not implemented on this platform"), + .wasm => @compileError("read is not implemented on this platform"), }; } @@ -2023,7 +2023,7 @@ pub fn poll(fds: []std.posix.pollfd, timeout: i32) Maybe(usize) { const rc = switch (Environment.os) { .mac => darwin_nocancel.@"poll$NOCANCEL"(fds.ptr, fds.len, timeout), .linux => linux.poll(fds.ptr, fds.len, timeout), - else => @compileError("poll is not implemented on this platform"), + .wasm => @compileError("poll is not implemented on this platform"), }; if (Maybe(usize).errnoSys(rc, .poll)) |err| { if (err.getErrno() == .INTR) continue; @@ -2038,7 +2038,7 @@ pub fn ppoll(fds: []std.posix.pollfd, timeout: ?*std.posix.timespec, sigmask: ?* const rc = switch (Environment.os) { .mac => darwin_nocancel.@"ppoll$NOCANCEL"(fds.ptr, fds.len, timeout, sigmask), .linux => linux.ppoll(fds.ptr, fds.len, timeout, sigmask), - else => @compileError("ppoll is not implemented on this platform"), + .wasm => @compileError("ppoll is not implemented on this platform"), }; if (Maybe(usize).errnoSys(rc, .ppoll)) |err| { if (err.getErrno() == .INTR) continue; @@ -2330,7 +2330,7 @@ pub fn renameat2(from_dir: bun.FileDescriptor, from: [:0]const u8, to_dir: bun.F const rc = switch (comptime Environment.os) { .linux => std.os.linux.renameat2(@intCast(from_dir.cast()), from.ptr, @intCast(to_dir.cast()), to.ptr, flags.int()), .mac => bun.c.renameatx_np(@intCast(from_dir.cast()), from.ptr, @intCast(to_dir.cast()), to.ptr, flags.int()), - else => @compileError("renameat2() is not implemented on this platform"), + .windows, .wasm => @compileError("renameat2() is not implemented on this platform"), }; if (Maybe(void).errnoSys(rc, .rename)) |err| { @@ -2703,7 +2703,7 @@ pub fn unlinkat(dirfd: bun.FileDescriptor, to: anytype) Maybe(void) { } pub fn getFdPath(fd: bun.FileDescriptor, out_buffer: *bun.PathBuffer) Maybe([]u8) { - switch (comptime builtin.os.tag) { + switch (Environment.os) { .windows => { var wide_buf: [windows.PATH_MAX_WIDE]u16 = undefined; const wide_slice = bun.windows.GetFinalPathNameByHandle(fd.cast(), .{}, wide_buf[0..]) catch { @@ -2713,7 +2713,7 @@ pub fn getFdPath(fd: bun.FileDescriptor, out_buffer: *bun.PathBuffer) Maybe([]u8 // Trust that Windows gives us valid UTF-16LE. return .{ .result = @constCast(bun.strings.fromWPath(out_buffer, wide_slice)) }; }, - .macos, .ios, .watchos, .tvos => { + .mac => { // On macOS, we can use F.GETPATH fcntl command to query the OS for // the path to the file descriptor. @memset(out_buffer[0..out_buffer.*.len], 0); @@ -2733,7 +2733,7 @@ pub fn getFdPath(fd: bun.FileDescriptor, out_buffer: *bun.PathBuffer) Maybe([]u8 .result => |result| .{ .result = result }, }; }, - else => @compileError("querying for canonical path of a handle is unsupported on this host"), + .wasm => @compileError("querying for canonical path of a handle is unsupported on this host"), } } diff --git a/src/windows.zig b/src/windows.zig index a909b11858..5cbdb1f124 100644 --- a/src/windows.zig +++ b/src/windows.zig @@ -3957,7 +3957,7 @@ pub fn spawnWatcherChild( /// broke when I just used it. Not sure. ... but this works! fn @"windows process.dlopen"(str: *bun.String) callconv(.c) ?*anyopaque { if (comptime !bun.Environment.isWindows) { - @compileError(unreachable); + @compileError("unreachable"); } var buf: bun.WPathBuffer = undefined; From 11b20aa508a31e264e545236dfdc84279eb32483 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Tue, 18 Nov 2025 12:00:56 -0800 Subject: [PATCH 020/212] runtime: fix small leak in Bun.listen (#24799) pulled out of https://github.com/oven-sh/bun/pull/21663 Co-authored-by: Ciro Spaciari --- src/bun.js/api/bun/socket/Listener.zig | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bun.js/api/bun/socket/Listener.zig b/src/bun.js/api/bun/socket/Listener.zig index 420347cb38..be9e10b62f 100644 --- a/src/bun.js/api/bun/socket/Listener.zig +++ b/src/bun.js/api/bun/socket/Listener.zig @@ -234,6 +234,7 @@ pub fn listen(globalObject: *jsc.JSGlobalObject, opts: JSValue) bun.JSError!JSVa } const hostname = bun.handleOom(hostname_or_unix.intoOwnedSlice(bun.default_allocator)); + errdefer bun.default_allocator.free(hostname); var connection: Listener.UnixOrHost = if (port) |port_| .{ .host = .{ .host = hostname, From 2d954995cd04915914af815f67169978123864e3 Mon Sep 17 00:00:00 2001 From: Ciro Spaciari Date: Tue, 18 Nov 2025 14:00:53 -0800 Subject: [PATCH 021/212] Fix Response wrapper and us_internal_disable_sweep_timer (#24623) ### What does this PR do? Fix Response wrapper and us_internal_disable_sweep_timer Fixes https://linear.app/oven/issue/ENG-21510/panic-attempt-to-use-null-value-in-responsezig ### How did you verify your code works? CI --- packages/bun-usockets/src/loop.c | 5 ++++- src/deps/uws/Response.zig | 21 +++++++++++++-------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/packages/bun-usockets/src/loop.c b/packages/bun-usockets/src/loop.c index acc0806f4d..621f118b47 100644 --- a/packages/bun-usockets/src/loop.c +++ b/packages/bun-usockets/src/loop.c @@ -43,6 +43,9 @@ extern void Bun__internal_ensureDateHeaderTimerIsEnabled(struct us_loop_t *loop) void sweep_timer_cb(struct us_internal_callback_t *cb); +// when the sweep timer is disabled, we don't need to do anything +void sweep_timer_noop(struct us_timer_t *timer) {} + void us_internal_enable_sweep_timer(struct us_loop_t *loop) { loop->data.sweep_timer_count++; if (loop->data.sweep_timer_count == 1) { @@ -54,7 +57,7 @@ void us_internal_enable_sweep_timer(struct us_loop_t *loop) { void us_internal_disable_sweep_timer(struct us_loop_t *loop) { loop->data.sweep_timer_count--; if (loop->data.sweep_timer_count == 0) { - us_timer_set(loop->data.sweep_timer, (void (*)(struct us_timer_t *)) sweep_timer_cb, 0, 0); + us_timer_set(loop->data.sweep_timer, (void (*)(struct us_timer_t *)) sweep_timer_noop, 0, 0); } } diff --git a/src/deps/uws/Response.zig b/src/deps/uws/Response.zig index 4dd8cc0b4f..79cacb628e 100644 --- a/src/deps/uws/Response.zig +++ b/src/deps/uws/Response.zig @@ -164,13 +164,15 @@ pub fn NewResponse(ssl_flag: i32) type { pub fn handle(this: *c.uws_res, amount: u64, data: ?*anyopaque) callconv(.c) bool { if (comptime UserDataType == void) { return @call(bun.callmod_inline, handler, .{ {}, amount, castRes(this) }); - } else { + } else if (data) |user_data_ptr| { + // null should always be treated as a no-op, there's no case where it should have any effect. return @call(bun.callmod_inline, handler, .{ - @as(UserDataType, @ptrCast(@alignCast(data.?))), + @as(UserDataType, @ptrCast(@alignCast(user_data_ptr))), amount, castRes(this), }); } + return true; } }; c.uws_res_on_writable(ssl_flag, res.downcast(), Wrapper.handle, user_data); @@ -189,8 +191,9 @@ pub fn NewResponse(ssl_flag: i32) type { pub fn handle(this: *c.uws_res, user_data: ?*anyopaque) callconv(.c) void { if (comptime UserDataType == void) { @call(bun.callmod_inline, handler, .{ {}, castRes(this), {} }); - } else { - @call(bun.callmod_inline, handler, .{ @as(UserDataType, @ptrCast(@alignCast(user_data.?))), castRes(this) }); + } else if (user_data) |user_data_ptr| { + // null should always be treated as a no-op, there's no case where it should have any effect. + @call(bun.callmod_inline, handler, .{ @as(UserDataType, @ptrCast(@alignCast(user_data_ptr))), castRes(this) }); } } }; @@ -205,8 +208,9 @@ pub fn NewResponse(ssl_flag: i32) type { pub fn handle(this: *c.uws_res, user_data: ?*anyopaque) callconv(.c) void { if (comptime UserDataType == void) { @call(bun.callmod_inline, handler, .{ {}, castRes(this) }); - } else { - @call(bun.callmod_inline, handler, .{ @as(UserDataType, @ptrCast(@alignCast(user_data.?))), castRes(this) }); + } else if (user_data) |user_data_ptr| { + // null should always be treated as a no-op, there's no case where it should have any effect. + @call(bun.callmod_inline, handler, .{ @as(UserDataType, @ptrCast(@alignCast(user_data_ptr))), castRes(this) }); } } }; @@ -236,9 +240,10 @@ pub fn NewResponse(ssl_flag: i32) type { if (len > 0) chunk_ptr[0..len] else "", last, }); - } else { + } else if (user_data) |user_data_ptr| { + // null should always be treated as a no-op, there's no case where it should have any effect. @call(bun.callmod_inline, handler_fn, .{ - @as(UserDataType, @ptrCast(@alignCast(user_data.?))), + @as(UserDataType, @ptrCast(@alignCast(user_data_ptr))), castRes(this), if (len > 0) chunk_ptr[0..len] else "", last, From 9a9473d4b972358bd2c672950a23fa901c4b9b7e Mon Sep 17 00:00:00 2001 From: Ciro Spaciari Date: Tue, 18 Nov 2025 14:02:21 -0800 Subject: [PATCH 022/212] fix(createEmptyObject) fix some createEmptyObject values part 2 (#24827) ### What does this PR do? We must use the right number of properties or we should set it to 0 ### How did you verify your code works? Read the code to check the amount of properties + CI --- src/bun.js/api/bun/js_bun_spawn_bindings.zig | 2 +- src/bun.js/api/bun/socket/tls_socket_functions.zig | 2 +- src/bun.js/test/jest.zig | 5 +++-- src/bundler/bundle_v2.zig | 3 +-- src/cli/pack_command.zig | 4 ++-- src/cli/upgrade_command.zig | 2 +- src/crash_handler.zig | 3 +-- src/css/values/color_js.zig | 2 +- src/install/dependency.zig | 2 +- src/install/install_binding.zig | 2 +- src/s3/list_objects.zig | 2 +- 11 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/bun.js/api/bun/js_bun_spawn_bindings.zig b/src/bun.js/api/bun/js_bun_spawn_bindings.zig index 7a24fdd8ef..7b957f8929 100644 --- a/src/bun.js/api/bun/js_bun_spawn_bindings.zig +++ b/src/bun.js/api/bun/js_bun_spawn_bindings.zig @@ -949,7 +949,7 @@ pub fn spawnMaybeSync( const resultPid = jsc.JSValue.jsNumberFromInt32(subprocess.pid()); subprocess.finalize(); - const sync_value = jsc.JSValue.createEmptyObject(globalThis, 5 + @as(usize, @intFromBool(!signalCode.isEmptyOrUndefinedOrNull()))); + const sync_value = jsc.JSValue.createEmptyObject(globalThis, 0); sync_value.put(globalThis, jsc.ZigString.static("exitCode"), exitCode); if (!signalCode.isEmptyOrUndefinedOrNull()) { sync_value.put(globalThis, jsc.ZigString.static("signalCode"), signalCode); diff --git a/src/bun.js/api/bun/socket/tls_socket_functions.zig b/src/bun.js/api/bun/socket/tls_socket_functions.zig index 1330d208d1..18a234bfff 100644 --- a/src/bun.js/api/bun/socket/tls_socket_functions.zig +++ b/src/bun.js/api/bun/socket/tls_socket_functions.zig @@ -259,7 +259,7 @@ pub fn getSharedSigalgs(this: *This, globalObject: *jsc.JSGlobalObject, _: *jsc. pub fn getCipher(this: *This, globalObject: *jsc.JSGlobalObject, _: *jsc.CallFrame) bun.JSError!JSValue { const ssl_ptr = this.socket.ssl() orelse return .js_undefined; const cipher = BoringSSL.SSL_get_current_cipher(ssl_ptr); - var result = JSValue.createEmptyObject(globalObject, 3); + var result = JSValue.createEmptyObject(globalObject, 0); if (cipher == null) { result.put(globalObject, ZigString.static("name"), JSValue.jsNull()); diff --git a/src/bun.js/test/jest.zig b/src/bun.js/test/jest.zig index 07144dbf5c..a2add25650 100644 --- a/src/bun.js/test/jest.zig +++ b/src/bun.js/test/jest.zig @@ -179,7 +179,7 @@ pub const Jest = struct { } pub fn createTestModule(globalObject: *JSGlobalObject) bun.JSError!JSValue { - const module = JSValue.createEmptyObject(globalObject, 20); + const module = JSValue.createEmptyObject(globalObject, 23); const test_scope_functions = try bun_test.ScopeFunctions.createBound(globalObject, .@"test", .zero, .{}, bun_test.ScopeFunctions.strings.@"test"); module.put(globalObject, ZigString.static("test"), test_scope_functions); @@ -204,6 +204,7 @@ pub const Jest = struct { module.put(globalObject, ZigString.static("expect"), Expect.js.getConstructor(globalObject)); module.put(globalObject, ZigString.static("expectTypeOf"), ExpectTypeOf.js.getConstructor(globalObject)); + // will add more 9 properties in the module here so we need to allocate 23 properties createMockObjects(globalObject, module); return module; @@ -229,7 +230,7 @@ pub const Jest = struct { mockFn.put(globalObject, ZigString.static("restore"), restoreAllMocks); mockFn.put(globalObject, ZigString.static("clearAllMocks"), clearAllMocks); - const jest = JSValue.createEmptyObject(globalObject, 10); + const jest = JSValue.createEmptyObject(globalObject, 11); jest.put(globalObject, ZigString.static("fn"), mockFn); jest.put(globalObject, ZigString.static("mock"), mockModuleFn); jest.put(globalObject, ZigString.static("spyOn"), spyOn); diff --git a/src/bundler/bundle_v2.zig b/src/bundler/bundle_v2.zig index 76c35c3430..2f297b729b 100644 --- a/src/bundler/bundle_v2.zig +++ b/src/bundler/bundle_v2.zig @@ -2151,7 +2151,6 @@ pub const BundleV2 = struct { .pending => unreachable, .err => try this.toJSError(promise, globalThis), .value => |*build| { - const build_output = jsc.JSValue.createEmptyObject(globalThis, 3); const output_files = build.output_files.items; const output_files_js = jsc.JSValue.createEmptyArray(globalThis, output_files.len) catch return promise.reject(globalThis, error.JSError); if (output_files_js == .zero) { @@ -2203,7 +2202,7 @@ pub const BundleV2 = struct { return promise.reject(globalThis, err); }; } - + const build_output = jsc.JSValue.createEmptyObject(globalThis, 3); build_output.put(globalThis, jsc.ZigString.static("outputs"), output_files_js); build_output.put(globalThis, jsc.ZigString.static("success"), .true); build_output.put( diff --git a/src/cli/pack_command.zig b/src/cli/pack_command.zig index daaf8f8881..f250eb2798 100644 --- a/src/cli/pack_command.zig +++ b/src/cli/pack_command.zig @@ -2721,7 +2721,7 @@ pub const bindings = struct { const entries = try JSArray.createEmpty(global, entries_info.items.len); for (entries_info.items, 0..) |entry, i| { - const obj = JSValue.createEmptyObject(global, 4); + const obj = JSValue.createEmptyObject(global, 0); obj.put(global, "pathname", entry.pathname.toJS(global)); obj.put(global, "kind", entry.kind.toJS(global)); obj.put(global, "perm", JSValue.jsNumber(entry.perm)); @@ -2731,7 +2731,7 @@ pub const bindings = struct { try entries.putIndex(global, @intCast(i), obj); } - const result = JSValue.createEmptyObject(global, 2); + const result = JSValue.createEmptyObject(global, 4); result.put(global, "entries", entries); result.put(global, "size", JSValue.jsNumber(tarball.len)); result.put(global, "shasum", shasum_str.toJS(global)); diff --git a/src/cli/upgrade_command.zig b/src/cli/upgrade_command.zig index f5b2fc806a..cf9dc91427 100644 --- a/src/cli/upgrade_command.zig +++ b/src/cli/upgrade_command.zig @@ -901,7 +901,7 @@ pub const upgrade_js_bindings = struct { var tempdir_fd: ?bun.FileDescriptor = null; pub fn generate(global: *jsc.JSGlobalObject) jsc.JSValue { - const obj = JSValue.createEmptyObject(global, 3); + const obj = JSValue.createEmptyObject(global, 2); const open = ZigString.static("openTempDirWithoutSharingDelete"); obj.put(global, open, jsc.createCallback(global, open, 1, jsOpenTempDirWithoutSharingDelete)); const close = ZigString.static("closeTempDirHandle"); diff --git a/src/crash_handler.zig b/src/crash_handler.zig index ac92d0879a..3bc18b642b 100644 --- a/src/crash_handler.zig +++ b/src/crash_handler.zig @@ -1846,12 +1846,11 @@ pub const js_bindings = struct { const JSValue = jsc.JSValue; pub fn generate(global: *jsc.JSGlobalObject) jsc.JSValue { - const obj = jsc.JSValue.createEmptyObject(global, 3); + const obj = jsc.JSValue.createEmptyObject(global, 8); inline for (.{ .{ "getMachOImageZeroOffset", jsGetMachOImageZeroOffset }, .{ "getFeaturesAsVLQ", jsGetFeaturesAsVLQ }, .{ "getFeatureData", jsGetFeatureData }, - .{ "segfault", jsSegfault }, .{ "panic", jsPanic }, .{ "rootError", jsRootError }, diff --git a/src/css/values/color_js.zig b/src/css/values/color_js.zig index e41036194e..2e677f5d79 100644 --- a/src/css/values/color_js.zig +++ b/src/css/values/color_js.zig @@ -286,7 +286,7 @@ pub fn jsFunctionColor(globalThis: *jsc.JSGlobalObject, callFrame: *jsc.CallFram return object; }, .@"{rgb}" => { - const object = jsc.JSValue.createEmptyObject(globalThis, 4); + const object = jsc.JSValue.createEmptyObject(globalThis, 3); object.put(globalThis, "r", jsc.JSValue.jsNumber(rgba.red)); object.put(globalThis, "g", jsc.JSValue.jsNumber(rgba.green)); object.put(globalThis, "b", jsc.JSValue.jsNumber(rgba.blue)); diff --git a/src/install/dependency.zig b/src/install/dependency.zig index b264e38419..8aff88c322 100644 --- a/src/install/dependency.zig +++ b/src/install/dependency.zig @@ -285,7 +285,7 @@ pub const Version = struct { value: Value = .{ .uninitialized = {} }, pub fn toJS(dep: *const Version, buf: []const u8, globalThis: *jsc.JSGlobalObject) bun.JSError!jsc.JSValue { - const object = jsc.JSValue.createEmptyObject(globalThis, 2); + const object = jsc.JSValue.createEmptyObject(globalThis, 0); object.put(globalThis, "type", bun.String.static(@tagName(dep.tag)).toJS(globalThis)); switch (dep.tag) { diff --git a/src/install/install_binding.zig b/src/install/install_binding.zig index 88e998b95e..fc937f4529 100644 --- a/src/install/install_binding.zig +++ b/src/install/install_binding.zig @@ -4,7 +4,7 @@ pub const bun_install_js_bindings = struct { const JSGlobalObject = jsc.JSGlobalObject; pub fn generate(global: *JSGlobalObject) JSValue { - const obj = JSValue.createEmptyObject(global, 2); + const obj = JSValue.createEmptyObject(global, 1); const parseLockfile = ZigString.static("parseLockfile"); obj.put(global, parseLockfile, jsc.createCallback(global, parseLockfile, 1, jsParseLockfile)); return obj; diff --git a/src/s3/list_objects.zig b/src/s3/list_objects.zig index c862041588..7d17be4252 100644 --- a/src/s3/list_objects.zig +++ b/src/s3/list_objects.zig @@ -73,7 +73,7 @@ pub const S3ListObjectsV2Result = struct { } pub fn toJS(this: *const @This(), globalObject: *JSGlobalObject) bun.JSError!JSValue { - const jsResult = JSValue.createEmptyObject(globalObject, 12); + const jsResult = JSValue.createEmptyObject(globalObject, 0); if (this.name) |name| { jsResult.put(globalObject, jsc.ZigString.static("name"), try bun.String.createUTF8ForJS(globalObject, name)); From 1b36d352531119a935aa0d45b806870a7f694f23 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Tue, 18 Nov 2025 17:51:19 -0800 Subject: [PATCH 023/212] cmake: separate variable for ZIG_COMPILER_SAFE default is unnecessary (#24797) --- cmake/tools/SetupZig.cmake | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/cmake/tools/SetupZig.cmake b/cmake/tools/SetupZig.cmake index 1de53f05e3..320a6f4e64 100644 --- a/cmake/tools/SetupZig.cmake +++ b/cmake/tools/SetupZig.cmake @@ -55,13 +55,7 @@ optionx(ZIG_OBJECT_FORMAT "obj|bc" "Output file format for Zig object files" DEF optionx(ZIG_LOCAL_CACHE_DIR FILEPATH "The path to local the zig cache directory" DEFAULT ${CACHE_PATH}/zig/local) optionx(ZIG_GLOBAL_CACHE_DIR FILEPATH "The path to the global zig cache directory" DEFAULT ${CACHE_PATH}/zig/global) -if(CI) - set(ZIG_COMPILER_SAFE_DEFAULT ON) -else() - set(ZIG_COMPILER_SAFE_DEFAULT OFF) -endif() - -optionx(ZIG_COMPILER_SAFE BOOL "Download a ReleaseSafe build of the Zig compiler." DEFAULT ${ZIG_COMPILER_SAFE_DEFAULT}) +optionx(ZIG_COMPILER_SAFE BOOL "Download a ReleaseSafe build of the Zig compiler." DEFAULT ${CI}) setenv(ZIG_LOCAL_CACHE_DIR ${ZIG_LOCAL_CACHE_DIR}) setenv(ZIG_GLOBAL_CACHE_DIR ${ZIG_GLOBAL_CACHE_DIR}) From 00545065389566853a8a6feeeda3a41e6aef8cb3 Mon Sep 17 00:00:00 2001 From: Dylan Conway Date: Wed, 19 Nov 2025 18:54:41 -0800 Subject: [PATCH 024/212] fix(windows): close worker libuv loop (#24811) ### What does this PR do? We need to call `uv_loop_close` in order to remove the threadlocal loop from a list in libuv so it won't be used later. This explains the crash reports because they have `workers_terminated` in features. Fixes #24804 Closes BUN-3NV Closes ENG-21523 ### How did you verify your code works? Manually. I'm not sure how to write a test yet other than manually clicking sleep --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Zack Radisic --- src/bun.js/web_worker.zig | 12 +++++++++++- src/deps/libuv.zig | 31 ++++++++++++++++++++----------- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/src/bun.js/web_worker.zig b/src/bun.js/web_worker.zig index 4fb209e832..d74686cfaa 100644 --- a/src/bun.js/web_worker.zig +++ b/src/bun.js/web_worker.zig @@ -611,10 +611,19 @@ pub fn exitAndDeinit(this: *WebWorker) noreturn { loop_.internal_loop_data.jsc_vm = null; } + if (vm_to_deinit) |vm| { + // this deinit needs to happen before `Loop.shutdown` + // in order to not call uv_close on the gc timer twice. + vm.gc_controller.deinit(); + } + + if (comptime Environment.isWindows) { + bun.windows.libuv.Loop.shutdown(); + } + this.deinit(); if (vm_to_deinit) |vm| { - vm.gc_controller.deinit(); vm.deinit(); // NOTE: deinit here isn't implemented, so freeing workers will leak the vm. } bun.deleteAllPoolsForThreadExit(); @@ -637,6 +646,7 @@ const WTFStringImpl = @import("../string.zig").WTFStringImpl; const bun = @import("bun"); const Async = bun.Async; +const Environment = bun.Environment; const Output = bun.Output; const assert = bun.assert; diff --git a/src/deps/libuv.zig b/src/deps/libuv.zig index f09aa3c0c2..7e8db2d0ab 100644 --- a/src/deps/libuv.zig +++ b/src/deps/libuv.zig @@ -654,19 +654,28 @@ pub const Loop = extern struct { return null; } - pub fn close(ptr: *Loop) void { - _ = uv_loop_close(ptr); + fn closeWalkCb(handle: ?*uv_handle_t, data: ?*anyopaque) callconv(.c) void { + _ = data; + const h = handle.?; + if (uv_is_closing(h) == 0) { + uv_close(h, null); + } } - pub fn new() ?*Loop { - const ptr = bun.default_allocator.create(Loop) catch return null; - if (init(ptr) != null) return null; - return ptr; - } + pub fn shutdown() void { + const loop = threadlocal_loop orelse { + return; + }; - pub fn delete(ptr: *Loop) void { - close(ptr); - bun.default_allocator.destroy(ptr); + if (uv_loop_close(loop).errEnum()) |err| { + if (err == .BUSY) { + uv_walk(loop, &closeWalkCb, null); + _ = uv_run(loop, .default); + bun.debugAssert(uv_loop_close(loop) == .zero); + } + } + + threadlocal_loop = null; } threadlocal var threadlocal_loop_data: Loop = undefined; @@ -2120,7 +2129,7 @@ pub const uv_free_func = ?*const fn (?*anyopaque) callconv(.c) void; pub extern fn uv_library_shutdown() void; pub extern fn uv_replace_allocator(malloc_func: uv_malloc_func, realloc_func: uv_realloc_func, calloc_func: uv_calloc_func, free_func: uv_free_func) c_int; pub extern fn uv_loop_init(loop: *uv_loop_t) ReturnCode; -pub extern fn uv_loop_close(loop: *uv_loop_t) c_int; +pub extern fn uv_loop_close(loop: *uv_loop_t) ReturnCode; pub extern fn uv_loop_new() *uv_loop_t; pub extern fn uv_loop_delete(*uv_loop_t) void; pub extern fn uv_loop_size() usize; From b55462666204cdd74d5d2ff446746c7880b4929d Mon Sep 17 00:00:00 2001 From: Dylan Conway Date: Wed, 19 Nov 2025 20:31:37 -0800 Subject: [PATCH 025/212] fix ENG-21528 (#24865) ### What does this PR do? Makes sure we are creating error messages with an allocator that will not `deinit` at the end of function scope on error. fixes ENG-21528 ### How did you verify your code works? Added a test --- src/bun.js/api/JSTranspiler.zig | 6 +++--- test/bundler/transpiler/transpiler.test.js | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/bun.js/api/JSTranspiler.zig b/src/bun.js/api/JSTranspiler.zig index fd76a26a97..d5f004113f 100644 --- a/src/bun.js/api/JSTranspiler.zig +++ b/src/bun.js/api/JSTranspiler.zig @@ -666,7 +666,7 @@ pub fn constructor(globalThis: *jsc.JSGlobalObject, callframe: *jsc.CallFrame) b } if ((config.log.warnings + config.log.errors) > 0) { - return globalThis.throwValue(try config.log.toJS(globalThis, allocator, "Failed to create transpiler")); + return globalThis.throwValue(try config.log.toJS(globalThis, bun.default_allocator, "Failed to create transpiler")); } const log = &config.log; @@ -677,7 +677,7 @@ pub fn constructor(globalThis: *jsc.JSGlobalObject, callframe: *jsc.CallFrame) b jsc.VirtualMachine.get().transpiler.env, ) catch |err| { if ((log.warnings + log.errors) > 0) { - return globalThis.throwValue(try log.toJS(globalThis, allocator, "Failed to create transpiler")); + return globalThis.throwValue(try log.toJS(globalThis, bun.default_allocator, "Failed to create transpiler")); } return globalThis.throwError(err, "Error creating transpiler"); @@ -688,7 +688,7 @@ pub fn constructor(globalThis: *jsc.JSGlobalObject, callframe: *jsc.CallFrame) b transpiler.options.env.behavior = .disable; transpiler.configureDefines() catch |err| { if ((log.warnings + log.errors) > 0) { - return globalThis.throwValue(try log.toJS(globalThis, allocator, "Failed to load define")); + return globalThis.throwValue(try log.toJS(globalThis, bun.default_allocator, "Failed to load define")); } return globalThis.throwError(err, "Failed to load define"); }; diff --git a/test/bundler/transpiler/transpiler.test.js b/test/bundler/transpiler/transpiler.test.js index b8f57e7f0b..609d0e4d89 100644 --- a/test/bundler/transpiler/transpiler.test.js +++ b/test/bundler/transpiler/transpiler.test.js @@ -101,6 +101,12 @@ describe("Bun.Transpiler", () => { hideFromStackTrace(ts.expectPrinted); hideFromStackTrace(ts.expectParseError); + it("handles errors when parsing macros", () => { + expect(() => { + new Bun.Transpiler({ macro: "hi" }); + }).toThrow("Unexpected hi"); + }); + it("normalizes \\r\\n", () => { ts.expectPrinted_("console.log(`\r\n\r\n\r\n`)", "console.log(`\n\n\n`);\n"); }); From 9189fc4fa14c21f5e7bcc064183e58079b655758 Mon Sep 17 00:00:00 2001 From: Jarred Sumner Date: Wed, 19 Nov 2025 21:17:51 -0800 Subject: [PATCH 026/212] Fixes #24817 (#24864) ### What does this PR do? Fixes #24817 ### How did you verify your code works? Test --------- Co-authored-by: taylor.fish --- src/bun.js/api/server/StaticRoute.zig | 11 ++++- src/bun.js/webcore/Body.zig | 8 ++++ src/http/MimeType.zig | 1 - test/regression/issue/24817.test.ts | 62 +++++++++++++++++++++++++++ 4 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 test/regression/issue/24817.test.ts diff --git a/src/bun.js/api/server/StaticRoute.zig b/src/bun.js/api/server/StaticRoute.zig index f996168236..585f6ca6ae 100644 --- a/src/bun.js/api/server/StaticRoute.zig +++ b/src/bun.js/api/server/StaticRoute.zig @@ -29,9 +29,11 @@ pub const InitFromBytesOptions = struct { /// Ownership of `blob` is transferred to this function. pub fn initFromAnyBlob(blob: *const AnyBlob, options: InitFromBytesOptions) *StaticRoute { var headers = bun.handleOom(Headers.from(options.headers, bun.default_allocator, .{ .body = blob })); - if (options.mime_type) |mime_type| { - if (headers.getContentType() == null) { + if (headers.getContentType() == null) { + if (options.mime_type) |mime_type| { bun.handleOom(headers.append("Content-Type", mime_type.value)); + } else if (blob.hasContentTypeFromUser()) { + bun.handleOom(headers.append("Content-Type", blob.contentType())); } } @@ -92,6 +94,7 @@ pub fn fromJS(globalThis: *jsc.JSGlobalObject, argument: jsc.JSValue) bun.JSErro // The user may want to pass in the same Response object multiple endpoints // Let's let them do that. const bodyValue = response.getBodyValue(); + const was_string = bodyValue.wasString(); bodyValue.toBlobIfPossible(); const blob: AnyBlob = brk: { @@ -151,6 +154,10 @@ pub fn fromJS(globalThis: *jsc.JSGlobalObject, argument: jsc.JSValue) bun.JSErro .allocator = bun.default_allocator, }; + if (was_string and headers.getContentType() == null) { + bun.handleOom(headers.append("Content-Type", bun.http.MimeType.Table.@"text/plain; charset=utf-8".slice())); + } + // Generate ETag if not already present if (headers.get("etag") == null) { if (blob.slice().len > 0) { diff --git a/src/bun.js/webcore/Body.zig b/src/bun.js/webcore/Body.zig index e949b1fcfb..34b7da8595 100644 --- a/src/bun.js/webcore/Body.zig +++ b/src/bun.js/webcore/Body.zig @@ -272,6 +272,14 @@ pub const Value = union(Tag) { }; } + pub fn wasString(this: *const Value) bool { + return switch (this.*) { + .InternalBlob => |*blob| blob.was_string, + .WTFStringImpl => true, + else => false, + }; + } + pub const heap_breakdown_label = "BodyValue"; pub const ValueError = union(enum) { AbortReason: jsc.CommonAbortReason, diff --git a/src/http/MimeType.zig b/src/http/MimeType.zig index dcb643a445..b051b16c8d 100644 --- a/src/http/MimeType.zig +++ b/src/http/MimeType.zig @@ -246,7 +246,6 @@ pub const html = MimeType.initComptime("text/html;charset=utf-8", .html); pub const json = MimeType.initComptime("application/json;charset=utf-8", .json); pub const transpiled_json = javascript; pub const text = MimeType.initComptime("text/plain;charset=utf-8", .html); -pub const text_plain = MimeType.initComptime("text/plain;charset=utf-8", .text); pub const wasm = MimeType.initComptime( "application/wasm", .wasm, diff --git a/test/regression/issue/24817.test.ts b/test/regression/issue/24817.test.ts new file mode 100644 index 0000000000..5c8aac5b22 --- /dev/null +++ b/test/regression/issue/24817.test.ts @@ -0,0 +1,62 @@ +// https://github.com/oven-sh/bun/issues/24817 +// Unicode not working with static route +import { expect, test } from "bun:test"; + +test("static routes should handle unicode correctly", async () => { + using server = Bun.serve({ + port: 0, + routes: { + "/dynamic": () => new Response("ā–²"), + "/static": new Response("ā–²"), + "/unicode-string": new Response("ć“ć‚“ć«ć”ćÆäø–ē•Œ"), + "/emoji": new Response("šŸŽ‰šŸš€āœØ"), + }, + }); + + const baseUrl = server.url.href; + + // Test basic unicode character + { + const staticResp = await fetch(`${baseUrl}/static`); + + const staticText = await staticResp.text(); + expect(staticText).toBe("ā–²"); + expect(staticResp.headers.get("content-type")).toBe("text/plain; charset=utf-8"); + } + + // Test Japanese characters + { + const resp = await fetch(`${baseUrl}/unicode-string`); + const text = await resp.text(); + + expect(text).toBe("ć“ć‚“ć«ć”ćÆäø–ē•Œ"); + expect(resp.headers.get("content-type")).toBe("text/plain; charset=utf-8"); + } + + // Test emoji + { + const resp = await fetch(`${baseUrl}/emoji`); + const text = await resp.text(); + + expect(text).toBe("šŸŽ‰šŸš€āœØ"); + expect(resp.headers.get("content-type")).toBe("text/plain; charset=utf-8"); + } +}); + +test("static routes with explicit content-type should not override", async () => { + using server = Bun.serve({ + port: 0, + routes: { + "/custom": new Response("ā–²", { headers: { "content-type": "text/html" } }), + }, + }); + + const baseUrl = server.url.href; + + const resp = await fetch(`${baseUrl}/custom`); + const text = await resp.text(); + + expect(text).toBe("ā–²"); + // Should respect the explicit content-type + expect(resp.headers.get("content-type")).toBe("text/html"); +}); From 0480d55a676e8f4c960042e5485e92aa079434a9 Mon Sep 17 00:00:00 2001 From: Dylan Conway Date: Wed, 19 Nov 2025 21:20:55 -0800 Subject: [PATCH 027/212] fix(YAML): handle exponential merge keys (#24729) ### What does this PR do? Fixes ENG-21490 ### How did you verify your code works? Added a test that would previously fail due to timeout. It also confirms the parsed result is correct. --------- Co-authored-by: taylor.fish --- src/collections/baby_list.zig | 21 ++-- src/interchange/yaml.zig | 187 ++++++++++++++++------------------ test/js/bun/yaml/yaml.test.ts | 125 +++++++++++++++++++++++ 3 files changed, 223 insertions(+), 110 deletions(-) diff --git a/src/collections/baby_list.zig b/src/collections/baby_list.zig index 80237c0c3f..bac768a269 100644 --- a/src/collections/baby_list.zig +++ b/src/collections/baby_list.zig @@ -53,13 +53,6 @@ pub fn BabyList(comptime Type: type) type { const unsupported_arg_msg = "unsupported argument to `moveFromList`: *" ++ @typeName(ListType); - const items = if (comptime @hasField(ListType, "items")) - list_ptr.items - else if (comptime std.meta.hasFn(ListType, "slice")) - list_ptr.slice() - else - @compileError(unsupported_arg_msg); - const capacity = if (comptime @hasField(ListType, "capacity")) list_ptr.capacity else if (comptime @hasField(ListType, "cap")) @@ -69,6 +62,15 @@ pub fn BabyList(comptime Type: type) type { else @compileError(unsupported_arg_msg); + const items = if (comptime std.meta.hasFn(ListType, "moveToUnmanaged")) + list_ptr.moveToUnmanaged().items + else if (comptime @hasField(ListType, "items")) + list_ptr.items + else if (comptime std.meta.hasFn(ListType, "slice")) + list_ptr.slice() + else + @compileError(unsupported_arg_msg); + if (comptime Environment.allow_assert) { bun.assert(items.len <= capacity); } @@ -88,7 +90,10 @@ pub fn BabyList(comptime Type: type) type { list_ptr.* = .empty; } else { this.#allocator.set(bun.allocators.asStd(allocator)); - list_ptr.* = .init(allocator); + // `moveToUnmanaged` already cleared the old list. + if (comptime !std.meta.hasFn(ListType, "moveToUnmanaged")) { + list_ptr.* = .init(allocator); + } } return this; } diff --git a/src/interchange/yaml.zig b/src/interchange/yaml.zig index 7aab24b11b..048fc86d53 100644 --- a/src/interchange/yaml.zig +++ b/src/interchange/yaml.zig @@ -780,7 +780,7 @@ pub fn Parser(comptime enc: Encoding) type { const mapping_line = self.token.line; _ = mapping_line; - var props: std.array_list.Managed(G.Property) = .init(self.allocator); + var props: MappingProps = .init(self.allocator); { try self.context.set(.flow_in); @@ -833,39 +833,7 @@ pub fn Parser(comptime enc: Encoding) type { }); } else { const value = try self.parseNode(.{}); - - append: { - switch (key.data) { - .e_string => |key_string| { - if (key_string.eqlComptime("<<")) { - switch (value.data) { - .e_object => |value_obj| { - try props.appendSlice(value_obj.properties.slice()); - break :append; - }, - .e_array => |value_arr| { - for (value_arr.slice()) |item| { - switch (item.data) { - .e_object => |item_obj| { - try props.appendSlice(item_obj.properties.slice()); - }, - else => {}, - } - } - break :append; - }, - else => {}, - } - } - }, - else => {}, - } - - try props.append(.{ - .key = key, - .value = value, - }); - } + try props.appendMaybeMerge(key, value); } if (self.token.data == .collect_entry) { @@ -880,7 +848,7 @@ pub fn Parser(comptime enc: Encoding) type { try self.scan(.{}); - return .init(E.Object, .{ .properties = .moveFromList(&props) }, mapping_start.loc()); + return .init(E.Object, .{ .properties = props.moveList() }, mapping_start.loc()); } fn parseBlockSequence(self: *@This()) ParseError!Expr { @@ -994,6 +962,83 @@ pub fn Parser(comptime enc: Encoding) type { return .init(E.Array, .{ .items = .moveFromList(&seq) }, sequence_start.loc()); } + /// Should only be used with expressions created with the YAML parser. It assumes + /// only null, boolean, number, string, array, object are possible. It also only + /// does pointer comparison with arrays and objects (so exponential merges are avoided) + fn yamlMergeKeyExprEql(l: Expr, r: Expr) bool { + if (std.meta.activeTag(l.data) != std.meta.activeTag(r.data)) { + return false; + } + + return switch (l.data) { + .e_null => true, + .e_boolean => |l_boolean| l_boolean.value == r.data.e_boolean.value, + .e_number => |l_number| l_number.value == r.data.e_number.value, + .e_string => |l_string| l_string.eql(E.String, r.data.e_string), + + .e_array => |l_array| l_array == r.data.e_array, + .e_object => |l_object| l_object == r.data.e_object, + + else => false, + }; + } + + const MappingProps = struct { + #list: bun.collections.ArrayList(G.Property), + + pub fn init(allocator: std.mem.Allocator) MappingProps { + return .{ .#list = .initIn(allocator) }; + } + + pub fn merge(self: *MappingProps, merge_props: []const G.Property) OOM!void { + try self.#list.ensureUnusedCapacity(merge_props.len); + var iter = std.mem.reverseIterator(merge_props); + next_merge_prop: while (iter.next()) |merge_prop| { + const merge_key = merge_prop.key.?; + for (self.#list.items()) |existing_prop| { + const existing_key = existing_prop.key.?; + if (yamlMergeKeyExprEql(existing_key, merge_key)) { + continue :next_merge_prop; + } + } + self.#list.appendAssumeCapacity(merge_prop); + } + } + + pub fn append(self: *MappingProps, prop: G.Property) OOM!void { + try self.#list.append(prop); + } + + pub fn appendMaybeMerge(self: *MappingProps, key: Expr, value: Expr) OOM!void { + if (switch (key.data) { + .e_string => |key_str| !key_str.eqlComptime("<<"), + else => true, + }) { + return self.#list.append(.{ .key = key, .value = value }); + } + + return switch (value.data) { + .e_object => |value_obj| self.merge(value_obj.properties.slice()), + .e_array => |value_arr| { + for (value_arr.items.slice()) |item| { + const item_obj = switch (item.data) { + .e_object => |obj| obj, + else => continue, + }; + + try self.merge(item_obj.properties.slice()); + } + }, + + else => self.#list.append(.{ .key = key, .value = value }), + }; + } + + pub fn moveList(self: *MappingProps) G.Property.List { + return .moveFromList(&self.#list); + } + }; + fn parseBlockMapping( self: *@This(), first_key: Expr, @@ -1011,7 +1056,7 @@ pub fn Parser(comptime enc: Encoding) type { try self.block_indents.push(mapping_indent); defer self.block_indents.pop(); - var props: std.array_list.Managed(G.Property) = .init(self.allocator); + var props: MappingProps = .init(self.allocator); { // try self.context.set(.block_in); @@ -1056,42 +1101,11 @@ pub fn Parser(comptime enc: Encoding) type { }, }; - append: { - switch (first_key.data) { - .e_string => |key_string| { - if (key_string.eqlComptime("<<")) { - switch (value.data) { - .e_object => |value_obj| { - try props.appendSlice(value_obj.properties.slice()); - break :append; - }, - .e_array => |value_arr| { - for (value_arr.slice()) |item| { - switch (item.data) { - .e_object => |item_obj| { - try props.appendSlice(item_obj.properties.slice()); - }, - else => {}, - } - } - break :append; - }, - else => {}, - } - } - }, - else => {}, - } - - try props.append(.{ - .key = first_key, - .value = value, - }); - } + try props.appendMaybeMerge(first_key, value); } if (self.context.get() == .flow_in) { - return .init(E.Object, .{ .properties = .moveFromList(&props) }, mapping_start.loc()); + return .init(E.Object, .{ .properties = props.moveList() }, mapping_start.loc()); } try self.context.set(.block_in); @@ -1173,41 +1187,10 @@ pub fn Parser(comptime enc: Encoding) type { }, }; - append: { - switch (key.data) { - .e_string => |key_string| { - if (key_string.eqlComptime("<<")) { - switch (value.data) { - .e_object => |value_obj| { - try props.appendSlice(value_obj.properties.slice()); - break :append; - }, - .e_array => |value_arr| { - for (value_arr.slice()) |item| { - switch (item.data) { - .e_object => |item_obj| { - try props.appendSlice(item_obj.properties.slice()); - }, - else => {}, - } - } - break :append; - }, - else => {}, - } - } - }, - else => {}, - } - - try props.append(.{ - .key = key, - .value = value, - }); - } + try props.appendMaybeMerge(key, value); } - return .init(E.Object, .{ .properties = .moveFromList(&props) }, mapping_start.loc()); + return .init(E.Object, .{ .properties = props.moveList() }, mapping_start.loc()); } const NodeProperties = struct { diff --git a/test/js/bun/yaml/yaml.test.ts b/test/js/bun/yaml/yaml.test.ts index 59276fc20e..cecb864cd3 100644 --- a/test/js/bun/yaml/yaml.test.ts +++ b/test/js/bun/yaml/yaml.test.ts @@ -813,6 +813,131 @@ my_config: const input2 = await file(join(import.meta.dir, "fixtures", "AHatInTime.yaml")).text(); expect(YAML.parse(input2)).toMatchSnapshot(); }); + + test("handles YAML bombs", () => { + function buildTest(depth) { + const lines: string[] = []; + lines.push(`a0: &a0\n k0: 0`); + for (let i = 1; i <= depth; i++) { + const refs = Array.from({ length: i }, (_, j) => `*a${j}`).join(", "); + lines.push(`a${i}: &a${i}\n <<: [${refs}]\n k${i}: ${i}`); + } + lines.push(`root:\n <<: *a${depth}`); + const input = lines.join("\n"); + + const expected: any = {}; + for (let i = 0; i <= depth; i++) { + const record = {}; + for (let j = 0; j <= i; j++) record[`k${j}`] = j; + expected[`a${i}`] = record; + } + expected.root = { ...expected[`a${depth}`] }; + + return { input, expected }; + } + + const { input, expected } = buildTest(24); + + expect(YAML.parse(input)).toEqual(expected); + }, 100); + + describe("merge keys", () => { + test("merge overrides", () => { + const input = ` +--- +- &CENTER { x: 1, 'y': 2 } +- &LEFT { x: 0, 'y': 2 } +- &BIG { r: 10 } +- &SMALL { r: 1 } + +# All the following maps are equal: + +- # Explicit keys + x: 1 + 'y': 2 + r: 10 + label: center/big + +- # Merge one map + << : *CENTER + r: 10 + label: center/big + +- # Merge multiple maps + << : [ *CENTER, *BIG ] + label: center/big + +- # Override + << : [ *BIG, *LEFT, *SMALL ] + x: 1 + label: center/big + `; + + const expected = [ + { x: 1, y: 2 }, + { x: 0, y: 2 }, + { r: 10 }, + { r: 1 }, + { x: 1, y: 2, r: 10, label: "center/big" }, + { x: 1, y: 2, r: 10, label: "center/big" }, + { x: 1, y: 2, r: 10, label: "center/big" }, + { x: 1, y: 2, r: 10, label: "center/big" }, + ]; + + expect(YAML.parse(input)).toEqual(expected); + }); + + test("duplicate merge key", () => { + const input = ` +--- +<<: {x: 1, y: 2} +foo: bar +<<: {z: 3, t: 4} +`; + + expect(YAML.parse(input)).toEqual({ + x: 1, + y: 2, + z: 3, + t: 4, + foo: "bar", + }); + }); + + test("duplicate keys from the same anchor", () => { + let input = ` +defaults: &d + foo: 1 + foo: 2 +config: + <<: *d`; + expect(YAML.parse(input)).toEqual({ + defaults: { + foo: 2, + }, + config: { + foo: 2, + }, + }); + + // Can still override + input = ` +defaults: &d + foo: 1 + foo: 2 +config: + <<: *d + foo: 3`; + expect(YAML.parse(input)).toEqual({ + defaults: { + foo: 2, + }, + config: { + foo: 3, + }, + }); + }); + }); }); describe("stringify", () => { From d584c86d5bb8b63905d794bd95ff8d498c43a1e8 Mon Sep 17 00:00:00 2001 From: Jarred Sumner Date: Wed, 19 Nov 2025 22:16:41 -0800 Subject: [PATCH 028/212] Delete incorrect debug assertion --- src/bun.js/bindings/bindings.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/bun.js/bindings/bindings.cpp b/src/bun.js/bindings/bindings.cpp index b0c60b98c6..945c31bda4 100644 --- a/src/bun.js/bindings/bindings.cpp +++ b/src/bun.js/bindings/bindings.cpp @@ -5359,8 +5359,6 @@ extern "C" void JSC__JSGlobalObject__queueMicrotaskJob(JSC::JSGlobalObject* arg0 JSValue::decode(JSValue4) }; - ASSERT(microtaskArgs[0].isCallable()); - if (microtaskArgs[1].isEmpty()) { microtaskArgs[1] = jsUndefined(); } From 0e23375d204c5140de5d648f0450677948747af9 Mon Sep 17 00:00:00 2001 From: Dylan Conway Date: Wed, 19 Nov 2025 22:44:21 -0800 Subject: [PATCH 029/212] fix ENG-21527 (#24861) ### What does this PR do? fixes ENG-21527 ### How did you verify your code works? Added a test --- src/bun.js/bindings/webcore/JSDOMFormData.cpp | 10 ++++++++-- test/js/web/html/FormData.test.ts | 8 ++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/bun.js/bindings/webcore/JSDOMFormData.cpp b/src/bun.js/bindings/webcore/JSDOMFormData.cpp index 65d317ecf9..c6b9683540 100644 --- a/src/bun.js/bindings/webcore/JSDOMFormData.cpp +++ b/src/bun.js/bindings/webcore/JSDOMFormData.cpp @@ -651,6 +651,7 @@ JSC::JSValue getInternalProperties(JSC::VM& vm, JSGlobalObject* lexicalGlobalObj if (jsValue.isString() || jsValue.inherits()) { // Make sure this runs before the deferral scope is called. JSValue resultValue = toJSValue(value); + RETURN_IF_EXCEPTION(throwScope, {}); ensureStillAliveHere(resultValue); JSC::JSArray* array = nullptr; @@ -672,7 +673,9 @@ JSC::JSValue getInternalProperties(JSC::VM& vm, JSGlobalObject* lexicalGlobalObj obj->putDirect(vm, ident, array, 0); } else if (jsValue.isObject() && jsValue.getObject()->inherits()) { JSC::JSArray* array = jsCast(jsValue.getObject()); - array->push(lexicalGlobalObject, toJSValue(value)); + JSValue jsValue = toJSValue(value); + RETURN_IF_EXCEPTION(throwScope, {}); + array->push(lexicalGlobalObject, jsValue); RETURN_IF_EXCEPTION(throwScope, {}); } else { @@ -680,7 +683,10 @@ JSC::JSValue getInternalProperties(JSC::VM& vm, JSGlobalObject* lexicalGlobalObj } } else { seenKeys.add(key); - obj->putDirect(vm, ident, toJSValue(value), 0); + JSValue jsValue = toJSValue(value); + RETURN_IF_EXCEPTION(throwScope, {}); + obj->putDirectMayBeIndex(lexicalGlobalObject, ident, jsValue); + RETURN_IF_EXCEPTION(throwScope, {}); } } diff --git a/test/js/web/html/FormData.test.ts b/test/js/web/html/FormData.test.ts index 8ad2491624..d81dd74345 100644 --- a/test/js/web/html/FormData.test.ts +++ b/test/js/web/html/FormData.test.ts @@ -269,6 +269,14 @@ describe("FormData", () => { }); }); + test("FormData.toJSON doesn't crash with numbers", () => { + const fd = new FormData(); + // @ts-expect-error + fd.append(1, 1); + // @ts-expect-error + expect(fd.toJSON()).toEqual({ "1": "1" }); + }); + it("should throw on bad boundary", async () => { const response = new Response('foo\r\nContent-Disposition: form-data; name="foo"\r\n\r\nbar\r\n', { headers: { From 788f03454d4f77f82a2d3cc6223130048fba4a35 Mon Sep 17 00:00:00 2001 From: Jarred Sumner Date: Wed, 19 Nov 2025 22:52:01 -0800 Subject: [PATCH 030/212] Show debugger in crash reports (#24871) ### What does this PR do? Show debugger in crash reports ### How did you verify your code works? --- src/analytics.zig | 1 + src/bun.js/Debugger.zig | 1 + 2 files changed, 2 insertions(+) diff --git a/src/analytics.zig b/src/analytics.zig index fd8f46876d..0afa2d7605 100644 --- a/src/analytics.zig +++ b/src/analytics.zig @@ -39,6 +39,7 @@ pub const Features = struct { pub var bunfig: usize = 0; pub var define: usize = 0; pub var dotenv: usize = 0; + pub var debugger: usize = 0; pub var external: usize = 0; pub var extracted_packages: usize = 0; pub var fetch: usize = 0; diff --git a/src/bun.js/Debugger.zig b/src/bun.js/Debugger.zig index 8a1f5e0afe..090becc477 100644 --- a/src/bun.js/Debugger.zig +++ b/src/bun.js/Debugger.zig @@ -30,6 +30,7 @@ var futex_atomic: std.atomic.Value(u32) = .init(0); pub fn waitForDebuggerIfNecessary(this: *VirtualMachine) void { const debugger = &(this.debugger orelse return); + bun.analytics.Features.debugger += 1; if (!debugger.must_block_until_connected) { return; } From b38ba38a187b53de55137d1941c8517f8ab04095 Mon Sep 17 00:00:00 2001 From: Alistair Smith Date: Thu, 20 Nov 2025 02:08:49 -0500 Subject: [PATCH 031/212] types: correct ReadableStream methods, allow Response instance for serve routes under a method (#24872) --- packages/bun-types/overrides.d.ts | 25 ++++--- packages/bun-types/serve.d.ts | 29 ++++---- test/integration/bun-types/bun-types.test.ts | 2 +- test/integration/bun-types/fixture/globals.ts | 5 ++ .../bun-types/fixture/serve-types.test.ts | 67 ++++++++++++++++--- test/integration/bun-types/fixture/streams.ts | 12 ++++ 6 files changed, 109 insertions(+), 31 deletions(-) diff --git a/packages/bun-types/overrides.d.ts b/packages/bun-types/overrides.d.ts index f3b6f5e2cf..1ebfac963c 100644 --- a/packages/bun-types/overrides.d.ts +++ b/packages/bun-types/overrides.d.ts @@ -23,16 +23,6 @@ interface BunConsumerConvenienceMethods { * Consume as JSON */ json(): Promise; - - /** - * Consume as a FormData instance - */ - formData(): Promise; - - /** - * Consume as an ArrayBuffer - */ - arrayBuffer(): Promise; } declare module "stream/web" { @@ -51,6 +41,21 @@ declare module "buffer" { // slightly different from just "copying in the methods" (the difference is // related to how type parameters are resolved) bytes(): Promise>; + + /** + * Consume the blob as a FormData instance + */ + formData(): Promise; + + /** + * Consume the blob as an ArrayBuffer + */ + arrayBuffer(): Promise; + + /** + * Returns a readable stream of the blob's contents + */ + stream(): ReadableStream>; } } diff --git a/packages/bun-types/serve.d.ts b/packages/bun-types/serve.d.ts index c465af924c..78b0eea3d4 100644 --- a/packages/bun-types/serve.d.ts +++ b/packages/bun-types/serve.d.ts @@ -283,7 +283,8 @@ declare module "bun" { * return new Response(); * }, * websocket: { - * open(ws) { + * data: {} as {accessToken: string | null}, + * message(ws) { * console.log(ws.data.accessToken); * } * } @@ -486,13 +487,15 @@ declare module "bun" { } namespace Serve { - type ExtractRouteParams = T extends `${string}:${infer Param}/${infer Rest}` - ? { [K in Param]: string } & ExtractRouteParams - : T extends `${string}:${infer Param}` - ? { [K in Param]: string } - : T extends `${string}*` - ? {} - : {}; + type ExtractRouteParams = string extends T + ? Record + : T extends `${string}:${infer Param}/${infer Rest}` + ? { [K in Param]: string } & ExtractRouteParams + : T extends `${string}:${infer Param}` + ? { [K in Param]: string } + : T extends `${string}*` + ? {} + : {}; /** * Development configuration for {@link Bun.serve} @@ -549,14 +552,16 @@ declare module "bun" { [Path in R]: | BaseRouteValue | Handler, Server, Response> - | Partial, Server, Response>>>; + | Partial, Server, Response> | Response>>; }; type RoutesWithUpgrade = { [Path in R]: | BaseRouteValue | Handler, Server, Response | undefined | void> - | Partial, Server, Response | undefined | void>>>; + | Partial< + Record, Server, Response | undefined | void> | Response> + >; }; type FetchOrRoutes = @@ -786,7 +791,7 @@ declare module "bun" { * } satisfies Bun.Serve.Options<{ name: string }>; * ``` */ - type Options = Bun.__internal.XOR< + type Options = Bun.__internal.XOR< HostnamePortServeOptions, UnixServeOptions > & @@ -1276,7 +1281,7 @@ declare module "bun" { * }); * ``` */ - function serve( + function serve( options: Serve.Options, ): Server; } diff --git a/test/integration/bun-types/bun-types.test.ts b/test/integration/bun-types/bun-types.test.ts index 9e4a37d094..a48d0c17b8 100644 --- a/test/integration/bun-types/bun-types.test.ts +++ b/test/integration/bun-types/bun-types.test.ts @@ -435,7 +435,7 @@ describe("@types/bun integration test", () => { code: 2322, line: "24154.ts:11:3", message: - "Type 'Blob' is not assignable to type 'import(\"buffer\").Blob'.\nThe types returned by 'stream()' are incompatible between these types.\nType 'ReadableStream>' is missing the following properties from type 'ReadableStream': blob, text, bytes, json, and 2 more.", + "Type 'Blob' is not assignable to type 'import(\"buffer\").Blob'.\nThe types returned by 'stream()' are incompatible between these types.\nType 'ReadableStream>' is missing the following properties from type 'ReadableStream': blob, text, bytes, json", }, { code: 2769, diff --git a/test/integration/bun-types/fixture/globals.ts b/test/integration/bun-types/fixture/globals.ts index 148ef0e534..0ca54f0153 100644 --- a/test/integration/bun-types/fixture/globals.ts +++ b/test/integration/bun-types/fixture/globals.ts @@ -335,3 +335,8 @@ new Error("asdf", { new Error("asdf", { cause: new Error("asdf"), }); + +// @ts-expect-error this interface is defined top level in globals.d.ts so we +// are making sure that .d.ts is a module and that anything top level doesn't +// leak to userland +expectType(); diff --git a/test/integration/bun-types/fixture/serve-types.test.ts b/test/integration/bun-types/fixture/serve-types.test.ts index 1f71f0434d..90af82d392 100644 --- a/test/integration/bun-types/fixture/serve-types.test.ts +++ b/test/integration/bun-types/fixture/serve-types.test.ts @@ -20,13 +20,18 @@ export default { expectType(ws.data).is<{ name: string }>(); }, }, -} satisfies Bun.ServeOptions<{ name: string }>; + routes: { + "/": req => { + expectType(req.params).is>(); + }, + }, +} satisfies Bun.Serve.Options<{ name: string }>; function expectInstanceOf(value: unknown, constructor: new (...args: any[]) => T): asserts value is T { expect(value).toBeInstanceOf(constructor); } -function test( +function test( name: string, options: Bun.Serve.Options, { @@ -71,6 +76,11 @@ function test( } test("basic", { + routes: { + "/123": { + "GET": new Response("Cool/great"), + }, + }, fetch(req) { console.log(req.url); // => http://localhost:3000/ return new Response("Hello World"); @@ -459,15 +469,15 @@ test("very basic fetch with websocket message handler", { fetch: () => new Response("ok"), websocket: { message: ws => { - // + expectType(ws).is>(); }, }, }); test("yet another basic fetch and websocket message handler", { websocket: { - message: () => { - // + message: ws => { + expectType(ws).is>(); }, }, fetch: (req, server) => { @@ -481,8 +491,8 @@ test("yet another basic fetch and websocket message handler", { test("websocket + upgrade on a route path", { websocket: { - message: () => { - // + message: ws => { + expectType(ws).is>(); }, }, routes: { @@ -563,7 +573,7 @@ test( if (Math.random() > 0.5) return undefined; return new Response(); }, - websocket: { message() {} }, + websocket: { message: ws => expectType(ws).is>() }, }, { overrideExpectBehavior: server => { @@ -816,3 +826,44 @@ test("multiple properties combined", { return new Response(`Combined server error: ${error.message}`, { status: 500 }); }, }); + +test("#24819 regression", { + development: !process.env.production, + routes: { + "/health": { + GET: new Response("OK"), + POST: req => { + expectType(req).is>(); + return Response.json("Sup"); + }, + }, + }, +}); + +// @ts-expect-error +test("#24819 regression with no response requires websocket", { + development: !process.env.production, + routes: { + "/health": { + GET: new Response("OK"), + POST: req => { + expectType(req).is>(); + }, + }, + }, +}); + +test("#24819 regression with websocket is happy", { + websocket: { + message: console.log, + }, + development: !process.env.production, + routes: { + "/health": { + GET: new Response("OK"), + POST: req => { + expectType(req).is>(); + }, + }, + }, +}); diff --git a/test/integration/bun-types/fixture/streams.ts b/test/integration/bun-types/fixture/streams.ts index d4989ecc5e..ad64910184 100644 --- a/test/integration/bun-types/fixture/streams.ts +++ b/test/integration/bun-types/fixture/streams.ts @@ -69,3 +69,15 @@ Bun.file("./foo.csv") }, }), ); + +// @ts-expect-error These properties do not exist right now +expectType(new ReadableStream().arrayBuffer()); +// @ts-expect-error These properties do not exist right now +expectType(new ReadableStream().formData()); + +expectType(new Blob([]).text()).is>(); +expectType(new Blob([]).arrayBuffer()).is>(); +expectType(new Blob([]).bytes()).is>>(); +expectType(new Blob([]).json()).is>(); +expectType(new Blob([]).formData()).is>(); +expectType(new Blob([]).stream()).is>>(); From 595ad7de93004f8c8661741ef2a7cdbab1f886c9 Mon Sep 17 00:00:00 2001 From: Conner Phillippi <98125604+connerlphillippi@users.noreply.github.com> Date: Wed, 19 Nov 2025 23:37:55 -0800 Subject: [PATCH 032/212] Add .aikido configuration file to exclude test and scripts directories (#24877) --- .aikido | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .aikido diff --git a/.aikido b/.aikido new file mode 100644 index 0000000000..0af82c86f5 --- /dev/null +++ b/.aikido @@ -0,0 +1,4 @@ +exclude: + paths: + - test + - scripts \ No newline at end of file From 28b950e2b062485e1272f06f90d799662daeb485 Mon Sep 17 00:00:00 2001 From: Conner Phillippi <98125604+connerlphillippi@users.noreply.github.com> Date: Wed, 19 Nov 2025 23:46:30 -0800 Subject: [PATCH 033/212] Add 'bench' to excluded paths in .aikido (#24879) ### What does this PR do? ### How did you verify your code works? --- .aikido | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.aikido b/.aikido index 0af82c86f5..2afa8b44bd 100644 --- a/.aikido +++ b/.aikido @@ -1,4 +1,5 @@ exclude: paths: - test - - scripts \ No newline at end of file + - scripts + - bench From a4af0aa4a84948108b7f26da4ad0496f46d8af9c Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Thu, 20 Nov 2025 15:36:02 -0800 Subject: [PATCH 034/212] Rename test-http-should-not-emit-or-throw error-when-writing-after-socket.end.ts to test-http-should-not-emit-or-throw-error-when-writing-after-socket.end.ts --- ...ould-not-emit-or-throw-error-when-writing-after-socket.end.ts} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test/js/bun/test/parallel/{test-http-should-not-emit-or-throw error-when-writing-after-socket.end.ts => test-http-should-not-emit-or-throw-error-when-writing-after-socket.end.ts} (100%) diff --git a/test/js/bun/test/parallel/test-http-should-not-emit-or-throw error-when-writing-after-socket.end.ts b/test/js/bun/test/parallel/test-http-should-not-emit-or-throw-error-when-writing-after-socket.end.ts similarity index 100% rename from test/js/bun/test/parallel/test-http-should-not-emit-or-throw error-when-writing-after-socket.end.ts rename to test/js/bun/test/parallel/test-http-should-not-emit-or-throw-error-when-writing-after-socket.end.ts From b92d2edcffd678c91996e1f1833499446ef9a83f Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Thu, 20 Nov 2025 15:36:31 -0800 Subject: [PATCH 035/212] Rename test-http-chunked-encoding-must be-valid-after-without-flushHeaders.ts to test-http-chunked-encoding-must-be-valid-after-without-flushHeaders.ts --- ...-chunked-encoding-must-be-valid-after-without-flushHeaders.ts} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test/js/bun/test/parallel/{test-http-chunked-encoding-must be-valid-after-without-flushHeaders.ts => test-http-chunked-encoding-must-be-valid-after-without-flushHeaders.ts} (100%) diff --git a/test/js/bun/test/parallel/test-http-chunked-encoding-must be-valid-after-without-flushHeaders.ts b/test/js/bun/test/parallel/test-http-chunked-encoding-must-be-valid-after-without-flushHeaders.ts similarity index 100% rename from test/js/bun/test/parallel/test-http-chunked-encoding-must be-valid-after-without-flushHeaders.ts rename to test/js/bun/test/parallel/test-http-chunked-encoding-must-be-valid-after-without-flushHeaders.ts From b72ba3144140d719a94edf8d874815d68cdf511b Mon Sep 17 00:00:00 2001 From: Dylan Conway Date: Thu, 20 Nov 2025 17:01:24 -0800 Subject: [PATCH 036/212] fix(Blob.prototype.stream): handle undefined chunkSize (#24900) ### What does this PR do? `blob.stream(undefined)` ### How did you verify your code works? Added a test --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> --- src/bun.js/webcore/Blob.zig | 9 ++++----- test/internal/ban-limits.json | 2 +- test/js/web/streams/streams.test.js | 8 ++++++++ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/bun.js/webcore/Blob.zig b/src/bun.js/webcore/Blob.zig index ffaa35af51..90d6b452ea 100644 --- a/src/bun.js/webcore/Blob.zig +++ b/src/bun.js/webcore/Blob.zig @@ -1980,14 +1980,13 @@ pub fn getStream( return cached; } var recommended_chunk_size: SizeType = 0; - var arguments_ = callframe.arguments_old(2); - var arguments = arguments_.ptr[0..arguments_.len]; - if (arguments.len > 0) { - if (!arguments[0].isNumber() and !arguments[0].isUndefinedOrNull()) { + const recommended_chunk_size_value = callframe.argument(0); + if (!recommended_chunk_size_value.isUndefinedOrNull()) { + if (!recommended_chunk_size_value.isNumber()) { return globalThis.throwInvalidArguments("chunkSize must be a number", .{}); } - recommended_chunk_size = @as(SizeType, @intCast(@max(0, @as(i52, @truncate(arguments[0].toInt64()))))); + recommended_chunk_size = @intCast(@max(0, @as(i52, @truncate(recommended_chunk_size_value.toInt64())))); } const stream = try jsc.WebCore.ReadableStream.fromBlobCopyRef( globalThis, diff --git a/test/internal/ban-limits.json b/test/internal/ban-limits.json index 699a509b0d..82ae899b8b 100644 --- a/test/internal/ban-limits.json +++ b/test/internal/ban-limits.json @@ -4,7 +4,7 @@ " catch bun.outOfMemory()": 0, "!= alloc.ptr": 0, "!= allocator.ptr": 0, - ".arguments_old(": 265, + ".arguments_old(": 264, ".jsBoolean(false)": 0, ".jsBoolean(true)": 0, ".stdDir()": 42, diff --git a/test/js/web/streams/streams.test.js b/test/js/web/streams/streams.test.js index 2d03f58f87..d1c5bd8b9c 100644 --- a/test/js/web/streams/streams.test.js +++ b/test/js/web/streams/streams.test.js @@ -1059,6 +1059,14 @@ it("new Response(stream).blob() (direct)", async () => { expect(await blob.text()).toBe('{"hello":true}'); }); +it("Blob.stream(undefined) does not crash", () => { + var blob = new Blob(["abdefgh"]); + var stream = blob.stream(undefined); + expect(stream instanceof ReadableStream).toBeTrue(); + stream = blob.stream(null); + expect(stream instanceof ReadableStream).toBeTrue(); +}); + it("Blob.stream() -> new Response(stream).text()", async () => { var blob = new Blob(["abdefgh"]); var stream = blob.stream(); From 5702b39ef1a90969dcb6aad87d799d67973e4911 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Thu, 20 Nov 2025 17:14:37 -0800 Subject: [PATCH 037/212] runtime: implement CompressionStream/DecompressionStream (#24757) Closes https://github.com/oven-sh/bun/issues/1723 Closes https://github.com/oven-sh/bun/pull/22214 Closes https://github.com/oven-sh/bun/pull/24241 also supports the `"brotli"` and `"zstd"` formats image --- bench/runner.mjs | 5 +- bench/snippets/compression-streams.mjs | 156 ++++++++++++++++++ docs/runtime/nodejs-compat.mdx | 4 +- src/bun.js/bindings/JSCompressionStream.cpp | 139 ++++++++++++++++ src/bun.js/bindings/JSCompressionStream.h | 40 +++++ src/bun.js/bindings/JSDecompressionStream.cpp | 139 ++++++++++++++++ src/bun.js/bindings/JSDecompressionStream.h | 40 +++++ src/bun.js/bindings/ZigGlobalObject.cpp | 4 + src/bun.js/bindings/ZigGlobalObject.lut.txt | 6 +- src/bun.js/bindings/js_classes.ts | 2 + .../bindings/webcore/DOMClientIsoSubspaces.h | 2 + src/bun.js/bindings/webcore/DOMConstructors.h | 4 +- src/bun.js/bindings/webcore/DOMIsoSubspaces.h | 2 + src/codegen/bundle-modules.ts | 2 +- src/js/builtins/CompressionStream.ts | 33 ++++ src/js/builtins/DecompressionStream.ts | 33 ++++ src/js/node/stream.web.ts | 4 +- test/integration/bun-types/fixture/streams.ts | 2 + .../test/parallel/test-global-webstreams.js | 24 +++ .../test-whatwg-webstreams-compression.js | 70 ++++++++ 20 files changed, 699 insertions(+), 12 deletions(-) create mode 100644 bench/snippets/compression-streams.mjs create mode 100644 src/bun.js/bindings/JSCompressionStream.cpp create mode 100644 src/bun.js/bindings/JSCompressionStream.h create mode 100644 src/bun.js/bindings/JSDecompressionStream.cpp create mode 100644 src/bun.js/bindings/JSDecompressionStream.h create mode 100644 src/js/builtins/CompressionStream.ts create mode 100644 src/js/builtins/DecompressionStream.ts create mode 100644 test/js/node/test/parallel/test-global-webstreams.js create mode 100644 test/js/node/test/parallel/test-whatwg-webstreams-compression.js diff --git a/bench/runner.mjs b/bench/runner.mjs index 9f6bcee16f..b9715232f0 100644 --- a/bench/runner.mjs +++ b/bench/runner.mjs @@ -13,7 +13,4 @@ export function run(opts = {}) { } export const bench = Mitata.bench; - -export function group(_name, fn) { - return Mitata.group(fn); -} +export const group = Mitata.group; diff --git a/bench/snippets/compression-streams.mjs b/bench/snippets/compression-streams.mjs new file mode 100644 index 0000000000..b8f3d34cd5 --- /dev/null +++ b/bench/snippets/compression-streams.mjs @@ -0,0 +1,156 @@ +import { bench, group, run } from "../runner.mjs"; + +const runAll = !process.argv.includes("--simple"); + +const small = new Uint8Array(1024); +const medium = new Uint8Array(1024 * 100); +const large = new Uint8Array(1024 * 1024); + +for (let i = 0; i < large.length; i++) { + const value = Math.floor(Math.sin(i / 100) * 128 + 128); + if (i < small.length) small[i] = value; + if (i < medium.length) medium[i] = value; + large[i] = value; +} + +const format = new Intl.NumberFormat("en-US", { notation: "compact", unit: "byte" }); + +async function compress(data, format) { + const cs = new CompressionStream(format); + const writer = cs.writable.getWriter(); + const reader = cs.readable.getReader(); + + writer.write(data); + writer.close(); + + const chunks = []; + while (true) { + const { done, value } = await reader.read(); + if (done) break; + chunks.push(value); + } + + const result = new Uint8Array(chunks.reduce((acc, chunk) => acc + chunk.length, 0)); + let offset = 0; + for (const chunk of chunks) { + result.set(chunk, offset); + offset += chunk.length; + } + return result; +} + +async function decompress(data, format) { + const ds = new DecompressionStream(format); + const writer = ds.writable.getWriter(); + const reader = ds.readable.getReader(); + + writer.write(data); + writer.close(); + + const chunks = []; + while (true) { + const { done, value } = await reader.read(); + if (done) break; + chunks.push(value); + } + + const result = new Uint8Array(chunks.reduce((acc, chunk) => acc + chunk.length, 0)); + let offset = 0; + for (const chunk of chunks) { + result.set(chunk, offset); + offset += chunk.length; + } + return result; +} + +async function roundTrip(data, format) { + const compressed = await compress(data, format); + return await decompress(compressed, format); +} + +const formats = ["deflate", "gzip", "deflate-raw"]; +if (runAll) formats.push("brotli", "zstd"); + +// Small data benchmarks (1KB) +group(`CompressionStream ${format.format(small.length)}`, () => { + for (const fmt of formats) { + try { + new CompressionStream(fmt); + bench(fmt, async () => await compress(small, fmt)); + } catch (e) { + // Skip unsupported formats + } + } +}); + +// Medium data benchmarks (100KB) +group(`CompressionStream ${format.format(medium.length)}`, () => { + for (const fmt of formats) { + try { + new CompressionStream(fmt); + bench(fmt, async () => await compress(medium, fmt)); + } catch (e) {} + } +}); + +// Large data benchmarks (1MB) +group(`CompressionStream ${format.format(large.length)}`, () => { + for (const fmt of formats) { + try { + new CompressionStream(fmt); + bench(fmt, async () => await compress(large, fmt)); + } catch (e) { + // Skip unsupported formats + } + } +}); + +const compressedData = {}; +for (const fmt of formats) { + try { + compressedData[fmt] = { + small: await compress(small, fmt), + medium: await compress(medium, fmt), + large: await compress(large, fmt), + }; + } catch (e) { + // Skip unsupported formats + } +} + +group(`DecompressionStream ${format.format(small.length)}`, () => { + for (const fmt of formats) { + if (compressedData[fmt]) { + bench(fmt, async () => await decompress(compressedData[fmt].small, fmt)); + } + } +}); + +group(`DecompressionStream ${format.format(medium.length)}`, () => { + for (const fmt of formats) { + if (compressedData[fmt]) { + bench(fmt, async () => await decompress(compressedData[fmt].medium, fmt)); + } + } +}); + +group(`DecompressionStream ${format.format(large.length)}`, () => { + for (const fmt of formats) { + if (compressedData[fmt]) { + bench(fmt, async () => await decompress(compressedData[fmt].large, fmt)); + } + } +}); + +group(`roundtrip ${format.format(large.length)}`, () => { + for (const fmt of formats) { + try { + new CompressionStream(fmt); + bench(fmt, async () => await roundTrip(large, fmt)); + } catch (e) { + // Skip unsupported formats + } + } +}); + +await run(); diff --git a/docs/runtime/nodejs-compat.mdx b/docs/runtime/nodejs-compat.mdx index ff5b489d99..0a382f97bd 100644 --- a/docs/runtime/nodejs-compat.mdx +++ b/docs/runtime/nodejs-compat.mdx @@ -245,7 +245,7 @@ The table below lists all globals implemented by Node.js and Bun's current compa ### [`CompressionStream`](https://developer.mozilla.org/en-US/docs/Web/API/CompressionStream) -šŸ”“ Not implemented. +🟢 Fully implemented. ### [`console`](https://developer.mozilla.org/en-US/docs/Web/API/console) @@ -273,7 +273,7 @@ The table below lists all globals implemented by Node.js and Bun's current compa ### [`DecompressionStream`](https://developer.mozilla.org/en-US/docs/Web/API/DecompressionStream) -šŸ”“ Not implemented. +🟢 Fully implemented. ### [`Event`](https://developer.mozilla.org/en-US/docs/Web/API/Event) diff --git a/src/bun.js/bindings/JSCompressionStream.cpp b/src/bun.js/bindings/JSCompressionStream.cpp new file mode 100644 index 0000000000..5fa7be0e09 --- /dev/null +++ b/src/bun.js/bindings/JSCompressionStream.cpp @@ -0,0 +1,139 @@ +#include "config.h" +#include "JSCompressionStream.h" + +#include "JSDOMBuiltinConstructor.h" +#include "JSDOMGlobalObjectInlines.h" +#include "WebCoreJSClientData.h" +#include "WebCoreJSBuiltins.h" +#include +#include + +namespace WebCore { + +using namespace JSC; + +static JSC_DECLARE_CUSTOM_GETTER(jsCompressionStreamConstructor); + +class JSCompressionStreamPrototype final : public JSC::JSNonFinalObject { +public: + using Base = JSC::JSNonFinalObject; + static JSCompressionStreamPrototype* create(JSC::VM& vm, JSDOMGlobalObject* globalObject, JSC::Structure* structure) + { + JSCompressionStreamPrototype* ptr = new (NotNull, JSC::allocateCell(vm)) JSCompressionStreamPrototype(vm, globalObject, structure); + ptr->finishCreation(vm); + return ptr; + } + + DECLARE_INFO; + template + static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) + { + STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSCompressionStreamPrototype, Base); + return &vm.plainObjectSpace(); + } + + static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) + { + return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info()); + } + +private: + JSCompressionStreamPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure) + : JSC::JSNonFinalObject(vm, structure) + { + } + + void finishCreation(JSC::VM&); +}; +STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSCompressionStreamPrototype, JSCompressionStreamPrototype::Base); + +using JSCompressionStreamDOMConstructor = JSDOMBuiltinConstructor; + +template<> const ClassInfo JSCompressionStreamDOMConstructor::s_info = { "CompressionStream"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSCompressionStreamDOMConstructor) }; + +template<> JSValue JSCompressionStreamDOMConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject) +{ + UNUSED_PARAM(vm); + return globalObject.functionPrototype(); +} + +template<> void JSCompressionStreamDOMConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject) +{ + putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); + JSString* nameString = jsNontrivialString(vm, "CompressionStream"_s); + m_originalName.set(vm, this, nameString); + putDirect(vm, vm.propertyNames->name, nameString, JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); + putDirect(vm, vm.propertyNames->prototype, JSCompressionStream::prototype(vm, globalObject), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum | JSC::PropertyAttribute::DontDelete); +} + +template<> FunctionExecutable* JSCompressionStreamDOMConstructor::initializeExecutable(VM& vm) +{ + return compressionStreamInitializeCompressionStreamCodeGenerator(vm); +} + +static const HashTableValue JSCompressionStreamPrototypeTableValues[] = { + { "constructor"_s, static_cast(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { HashTableValue::GetterSetterType, jsCompressionStreamConstructor, 0 } }, + { "readable"_s, static_cast(JSC::PropertyAttribute::DontEnum | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::Accessor | JSC::PropertyAttribute::Builtin), NoIntrinsic, { HashTableValue::BuiltinAccessorType, compressionStreamReadableCodeGenerator, 0 } }, + { "writable"_s, static_cast(JSC::PropertyAttribute::DontEnum | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::Accessor | JSC::PropertyAttribute::Builtin), NoIntrinsic, { HashTableValue::BuiltinAccessorType, compressionStreamWritableCodeGenerator, 0 } }, +}; + +const ClassInfo JSCompressionStreamPrototype::s_info = { "CompressionStream"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSCompressionStreamPrototype) }; + +void JSCompressionStreamPrototype::finishCreation(VM& vm) +{ + Base::finishCreation(vm); + reifyStaticProperties(vm, JSCompressionStream::info(), JSCompressionStreamPrototypeTableValues, *this); + JSC_TO_STRING_TAG_WITHOUT_TRANSITION(); +} + +const ClassInfo JSCompressionStream::s_info = { "CompressionStream"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSCompressionStream) }; + +JSC::GCClient::IsoSubspace* JSCompressionStream::subspaceForImpl(JSC::VM& vm) +{ + return WebCore::subspaceForImpl( + vm, + [](auto& spaces) { return spaces.m_clientSubspaceForCompressionStream.get(); }, + [](auto& spaces, auto&& space) { spaces.m_clientSubspaceForCompressionStream = std::forward(space); }, + [](auto& spaces) { return spaces.m_subspaceForCompressionStream.get(); }, + [](auto& spaces, auto&& space) { spaces.m_subspaceForCompressionStream = std::forward(space); }); +} + +JSCompressionStream::JSCompressionStream(Structure* structure, JSDOMGlobalObject& globalObject) + : JSDOMObject(structure, globalObject) +{ +} + +void JSCompressionStream::finishCreation(VM& vm) +{ + Base::finishCreation(vm); + ASSERT(inherits(info())); +} + +JSObject* JSCompressionStream::createPrototype(VM& vm, JSDOMGlobalObject& globalObject) +{ + auto* structure = JSCompressionStreamPrototype::createStructure(vm, &globalObject, globalObject.objectPrototype()); + structure->setMayBePrototype(true); + return JSCompressionStreamPrototype::create(vm, &globalObject, structure); +} + +JSObject* JSCompressionStream::prototype(VM& vm, JSDOMGlobalObject& globalObject) +{ + return getDOMPrototype(vm, globalObject); +} + +JSValue JSCompressionStream::getConstructor(VM& vm, const JSGlobalObject* globalObject) +{ + return getDOMConstructor(vm, *jsCast(globalObject)); +} + +JSC_DEFINE_CUSTOM_GETTER(jsCompressionStreamConstructor, (JSGlobalObject * lexicalGlobalObject, EncodedJSValue thisValue, PropertyName)) +{ + auto& vm = JSC::getVM(lexicalGlobalObject); + auto throwScope = DECLARE_THROW_SCOPE(vm); + auto* prototype = jsDynamicCast(JSValue::decode(thisValue)); + if (!prototype) + return throwVMTypeError(lexicalGlobalObject, throwScope); + return JSValue::encode(JSCompressionStream::getConstructor(vm, lexicalGlobalObject)); +} + +} // namespace WebCore diff --git a/src/bun.js/bindings/JSCompressionStream.h b/src/bun.js/bindings/JSCompressionStream.h new file mode 100644 index 0000000000..99833ab99d --- /dev/null +++ b/src/bun.js/bindings/JSCompressionStream.h @@ -0,0 +1,40 @@ +#pragma once + +#include "JSDOMWrapper.h" + +namespace WebCore { + +class JSCompressionStream : public JSDOMObject { +public: + using Base = JSDOMObject; + static JSCompressionStream* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject) + { + JSCompressionStream* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSCompressionStream(structure, *globalObject); + ptr->finishCreation(globalObject->vm()); + return ptr; + } + + static JSC::JSObject* createPrototype(JSC::VM&, JSDOMGlobalObject&); + static JSC::JSObject* prototype(JSC::VM&, JSDOMGlobalObject&); + static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); + + DECLARE_INFO; + + static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) + { + return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info()); + } + + template static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) + { + if constexpr (mode == JSC::SubspaceAccess::Concurrently) + return nullptr; + return subspaceForImpl(vm); + } + static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); + + JSCompressionStream(JSC::Structure*, JSDOMGlobalObject&); + void finishCreation(JSC::VM&); +}; + +} // namespace WebCore diff --git a/src/bun.js/bindings/JSDecompressionStream.cpp b/src/bun.js/bindings/JSDecompressionStream.cpp new file mode 100644 index 0000000000..160e01eb47 --- /dev/null +++ b/src/bun.js/bindings/JSDecompressionStream.cpp @@ -0,0 +1,139 @@ +#include "config.h" +#include "JSDecompressionStream.h" + +#include "JSDOMBuiltinConstructor.h" +#include "JSDOMGlobalObjectInlines.h" +#include "WebCoreJSClientData.h" +#include "WebCoreJSBuiltins.h" +#include +#include + +namespace WebCore { + +using namespace JSC; + +static JSC_DECLARE_CUSTOM_GETTER(jsDecompressionStreamConstructor); + +class JSDecompressionStreamPrototype final : public JSC::JSNonFinalObject { +public: + using Base = JSC::JSNonFinalObject; + static JSDecompressionStreamPrototype* create(JSC::VM& vm, JSDOMGlobalObject* globalObject, JSC::Structure* structure) + { + JSDecompressionStreamPrototype* ptr = new (NotNull, JSC::allocateCell(vm)) JSDecompressionStreamPrototype(vm, globalObject, structure); + ptr->finishCreation(vm); + return ptr; + } + + DECLARE_INFO; + template + static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) + { + STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSDecompressionStreamPrototype, Base); + return &vm.plainObjectSpace(); + } + + static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) + { + return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info()); + } + +private: + JSDecompressionStreamPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure) + : JSC::JSNonFinalObject(vm, structure) + { + } + + void finishCreation(JSC::VM&); +}; +STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSDecompressionStreamPrototype, JSDecompressionStreamPrototype::Base); + +using JSDecompressionStreamDOMConstructor = JSDOMBuiltinConstructor; + +template<> const ClassInfo JSDecompressionStreamDOMConstructor::s_info = { "DecompressionStream"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSDecompressionStreamDOMConstructor) }; + +template<> JSValue JSDecompressionStreamDOMConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject) +{ + UNUSED_PARAM(vm); + return globalObject.functionPrototype(); +} + +template<> void JSDecompressionStreamDOMConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject) +{ + putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); + JSString* nameString = jsNontrivialString(vm, "DecompressionStream"_s); + m_originalName.set(vm, this, nameString); + putDirect(vm, vm.propertyNames->name, nameString, JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); + putDirect(vm, vm.propertyNames->prototype, JSDecompressionStream::prototype(vm, globalObject), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum | JSC::PropertyAttribute::DontDelete); +} + +template<> FunctionExecutable* JSDecompressionStreamDOMConstructor::initializeExecutable(VM& vm) +{ + return decompressionStreamInitializeDecompressionStreamCodeGenerator(vm); +} + +static const HashTableValue JSDecompressionStreamPrototypeTableValues[] = { + { "constructor"_s, static_cast(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { HashTableValue::GetterSetterType, jsDecompressionStreamConstructor, 0 } }, + { "readable"_s, static_cast(JSC::PropertyAttribute::DontEnum | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::Accessor | JSC::PropertyAttribute::Builtin), NoIntrinsic, { HashTableValue::BuiltinAccessorType, decompressionStreamReadableCodeGenerator, 0 } }, + { "writable"_s, static_cast(JSC::PropertyAttribute::DontEnum | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::Accessor | JSC::PropertyAttribute::Builtin), NoIntrinsic, { HashTableValue::BuiltinAccessorType, decompressionStreamWritableCodeGenerator, 0 } }, +}; + +const ClassInfo JSDecompressionStreamPrototype::s_info = { "DecompressionStream"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSDecompressionStreamPrototype) }; + +void JSDecompressionStreamPrototype::finishCreation(VM& vm) +{ + Base::finishCreation(vm); + reifyStaticProperties(vm, JSDecompressionStream::info(), JSDecompressionStreamPrototypeTableValues, *this); + JSC_TO_STRING_TAG_WITHOUT_TRANSITION(); +} + +const ClassInfo JSDecompressionStream::s_info = { "DecompressionStream"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSDecompressionStream) }; + +JSC::GCClient::IsoSubspace* JSDecompressionStream::subspaceForImpl(JSC::VM& vm) +{ + return WebCore::subspaceForImpl( + vm, + [](auto& spaces) { return spaces.m_clientSubspaceForDecompressionStream.get(); }, + [](auto& spaces, auto&& space) { spaces.m_clientSubspaceForDecompressionStream = std::forward(space); }, + [](auto& spaces) { return spaces.m_subspaceForDecompressionStream.get(); }, + [](auto& spaces, auto&& space) { spaces.m_subspaceForDecompressionStream = std::forward(space); }); +} + +JSDecompressionStream::JSDecompressionStream(Structure* structure, JSDOMGlobalObject& globalObject) + : JSDOMObject(structure, globalObject) +{ +} + +void JSDecompressionStream::finishCreation(VM& vm) +{ + Base::finishCreation(vm); + ASSERT(inherits(info())); +} + +JSObject* JSDecompressionStream::createPrototype(VM& vm, JSDOMGlobalObject& globalObject) +{ + auto* structure = JSDecompressionStreamPrototype::createStructure(vm, &globalObject, globalObject.objectPrototype()); + structure->setMayBePrototype(true); + return JSDecompressionStreamPrototype::create(vm, &globalObject, structure); +} + +JSObject* JSDecompressionStream::prototype(VM& vm, JSDOMGlobalObject& globalObject) +{ + return getDOMPrototype(vm, globalObject); +} + +JSValue JSDecompressionStream::getConstructor(VM& vm, const JSGlobalObject* globalObject) +{ + return getDOMConstructor(vm, *jsCast(globalObject)); +} + +JSC_DEFINE_CUSTOM_GETTER(jsDecompressionStreamConstructor, (JSGlobalObject * lexicalGlobalObject, EncodedJSValue thisValue, PropertyName)) +{ + auto& vm = JSC::getVM(lexicalGlobalObject); + auto throwScope = DECLARE_THROW_SCOPE(vm); + auto* prototype = jsDynamicCast(JSValue::decode(thisValue)); + if (!prototype) + return throwVMTypeError(lexicalGlobalObject, throwScope); + return JSValue::encode(JSDecompressionStream::getConstructor(vm, lexicalGlobalObject)); +} + +} // namespace WebCore diff --git a/src/bun.js/bindings/JSDecompressionStream.h b/src/bun.js/bindings/JSDecompressionStream.h new file mode 100644 index 0000000000..b35119606a --- /dev/null +++ b/src/bun.js/bindings/JSDecompressionStream.h @@ -0,0 +1,40 @@ +#pragma once + +#include "JSDOMWrapper.h" + +namespace WebCore { + +class JSDecompressionStream : public JSDOMObject { +public: + using Base = JSDOMObject; + static JSDecompressionStream* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject) + { + JSDecompressionStream* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSDecompressionStream(structure, *globalObject); + ptr->finishCreation(globalObject->vm()); + return ptr; + } + + static JSC::JSObject* createPrototype(JSC::VM&, JSDOMGlobalObject&); + static JSC::JSObject* prototype(JSC::VM&, JSDOMGlobalObject&); + static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); + + DECLARE_INFO; + + static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) + { + return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info()); + } + + template static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) + { + if constexpr (mode == JSC::SubspaceAccess::Concurrently) + return nullptr; + return subspaceForImpl(vm); + } + static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); + + JSDecompressionStream(JSC::Structure*, JSDOMGlobalObject&); + void finishCreation(JSC::VM&); +}; + +} // namespace WebCore diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp index caf3c26aa2..7e22705369 100644 --- a/src/bun.js/bindings/ZigGlobalObject.cpp +++ b/src/bun.js/bindings/ZigGlobalObject.cpp @@ -78,6 +78,8 @@ #include "JSAbortAlgorithm.h" #include "JSAbortController.h" #include "JSAbortSignal.h" +#include "JSCompressionStream.h" +#include "JSDecompressionStream.h" #include "JSBroadcastChannel.h" #include "JSBuffer.h" #include "JSBufferList.h" @@ -962,9 +964,11 @@ WEBCORE_GENERATED_CONSTRUCTOR_GETTER(AbortSignal); WEBCORE_GENERATED_CONSTRUCTOR_GETTER(BroadcastChannel); WEBCORE_GENERATED_CONSTRUCTOR_GETTER(ByteLengthQueuingStrategy) WEBCORE_GENERATED_CONSTRUCTOR_GETTER(CloseEvent); +WEBCORE_GENERATED_CONSTRUCTOR_GETTER(CompressionStream); WEBCORE_GENERATED_CONSTRUCTOR_GETTER(CountQueuingStrategy) WEBCORE_GENERATED_CONSTRUCTOR_GETTER(CryptoKey); WEBCORE_GENERATED_CONSTRUCTOR_GETTER(CustomEvent); +WEBCORE_GENERATED_CONSTRUCTOR_GETTER(DecompressionStream); WEBCORE_GENERATED_CONSTRUCTOR_GETTER(DOMException); WEBCORE_GENERATED_CONSTRUCTOR_GETTER(DOMFormData); WEBCORE_GENERATED_CONSTRUCTOR_GETTER(DOMURL); diff --git a/src/bun.js/bindings/ZigGlobalObject.lut.txt b/src/bun.js/bindings/ZigGlobalObject.lut.txt index 49b22f1412..9fbf2e00f0 100644 --- a/src/bun.js/bindings/ZigGlobalObject.lut.txt +++ b/src/bun.js/bindings/ZigGlobalObject.lut.txt @@ -21,9 +21,9 @@ setInterval functionSetInterval Function 1 setTimeout functionSetTimeout Function 1 structuredClone WebCore::jsFunctionStructuredClone Function 2 - + global GlobalObject_getGlobalThis PropertyCallback - + Bun GlobalObject::m_bunObject CellProperty|DontDelete|ReadOnly File GlobalObject::m_JSDOMFileConstructor CellProperty crypto GlobalObject::m_cryptoObject CellProperty @@ -48,9 +48,11 @@ BroadcastChannel BroadcastChannelConstructorCallback PropertyCallback ByteLengthQueuingStrategy ByteLengthQueuingStrategyConstructorCallback PropertyCallback CloseEvent CloseEventConstructorCallback PropertyCallback + CompressionStream CompressionStreamConstructorCallback PropertyCallback CountQueuingStrategy CountQueuingStrategyConstructorCallback PropertyCallback CryptoKey CryptoKeyConstructorCallback PropertyCallback CustomEvent CustomEventConstructorCallback PropertyCallback + DecompressionStream DecompressionStreamConstructorCallback PropertyCallback DOMException DOMExceptionConstructorCallback PropertyCallback ErrorEvent ErrorEventConstructorCallback PropertyCallback Event EventConstructorCallback PropertyCallback diff --git a/src/bun.js/bindings/js_classes.ts b/src/bun.js/bindings/js_classes.ts index 564fbb39bc..989f69cbb4 100644 --- a/src/bun.js/bindings/js_classes.ts +++ b/src/bun.js/bindings/js_classes.ts @@ -8,4 +8,6 @@ export default [ ["WritableStream", "JSWritableStream.h"], ["TransformStream", "JSTransformStream.h"], ["ArrayBuffer"], + ["CompressionStream", "JSCompressionStream.h"], + ["DecompressionStream", "JSDecompressionStream.h"], ]; diff --git a/src/bun.js/bindings/webcore/DOMClientIsoSubspaces.h b/src/bun.js/bindings/webcore/DOMClientIsoSubspaces.h index ce662148a5..b19ae4faa9 100644 --- a/src/bun.js/bindings/webcore/DOMClientIsoSubspaces.h +++ b/src/bun.js/bindings/webcore/DOMClientIsoSubspaces.h @@ -283,6 +283,8 @@ public: std::unique_ptr m_clientSubspaceForReadableStreamSource; std::unique_ptr m_clientSubspaceForTransformStream; std::unique_ptr m_clientSubspaceForTransformStreamDefaultController; + std::unique_ptr m_clientSubspaceForCompressionStream; + std::unique_ptr m_clientSubspaceForDecompressionStream; std::unique_ptr m_clientSubspaceForWritableStream; std::unique_ptr m_clientSubspaceForWritableStreamDefaultController; std::unique_ptr m_clientSubspaceForWritableStreamDefaultWriter; diff --git a/src/bun.js/bindings/webcore/DOMConstructors.h b/src/bun.js/bindings/webcore/DOMConstructors.h index d83ef6cfe3..78b38e131a 100644 --- a/src/bun.js/bindings/webcore/DOMConstructors.h +++ b/src/bun.js/bindings/webcore/DOMConstructors.h @@ -198,6 +198,8 @@ enum class DOMConstructorID : uint16_t { ReadableStreamSource, TransformStream, TransformStreamDefaultController, + CompressionStream, + DecompressionStream, WritableStream, WritableStreamDefaultController, WritableStreamDefaultWriter, @@ -860,7 +862,7 @@ enum class DOMConstructorID : uint16_t { EventEmitter, }; -static constexpr unsigned numberOfDOMConstructorsBase = 846; +static constexpr unsigned numberOfDOMConstructorsBase = 848; static constexpr unsigned bunExtraConstructors = 3; diff --git a/src/bun.js/bindings/webcore/DOMIsoSubspaces.h b/src/bun.js/bindings/webcore/DOMIsoSubspaces.h index cce908c751..049b161b8f 100644 --- a/src/bun.js/bindings/webcore/DOMIsoSubspaces.h +++ b/src/bun.js/bindings/webcore/DOMIsoSubspaces.h @@ -266,6 +266,8 @@ public: std::unique_ptr m_subspaceForReadableStreamSource; std::unique_ptr m_subspaceForTransformStream; std::unique_ptr m_subspaceForTransformStreamDefaultController; + std::unique_ptr m_subspaceForCompressionStream; + std::unique_ptr m_subspaceForDecompressionStream; std::unique_ptr m_subspaceForWritableStream; std::unique_ptr m_subspaceForWritableStreamDefaultController; std::unique_ptr m_subspaceForWritableStreamDefaultWriter; diff --git a/src/codegen/bundle-modules.ts b/src/codegen/bundle-modules.ts index f539171ef6..c282da4560 100644 --- a/src/codegen/bundle-modules.ts +++ b/src/codegen/bundle-modules.ts @@ -532,7 +532,7 @@ declare module "module" { `; for (const [name] of jsclasses) { - dts += `\ndeclare function $inherits${name}(value: any): boolean;`; + dts += `\ndeclare function $inherits${name}(value: any): value is ${name};`; } return dts; diff --git a/src/js/builtins/CompressionStream.ts b/src/js/builtins/CompressionStream.ts new file mode 100644 index 0000000000..a777b35a53 --- /dev/null +++ b/src/js/builtins/CompressionStream.ts @@ -0,0 +1,33 @@ +export function initializeCompressionStream(this, format) { + const zlib = require("node:zlib"); + const stream = require("node:stream"); + + const builders = { + "deflate": zlib.createDeflate, + "deflate-raw": zlib.createDeflateRaw, + "gzip": zlib.createGzip, + "brotli": zlib.createBrotliCompress, + "zstd": zlib.createZstdCompress, + }; + + if (!(format in builders)) + throw $ERR_INVALID_ARG_VALUE("format", format, "must be one of: " + Object.keys(builders).join(", ")); + + const handle = builders[format](); + $putByIdDirectPrivate(this, "readable", stream.Readable.toWeb(handle)); + $putByIdDirectPrivate(this, "writable", stream.Writable.toWeb(handle)); + + return this; +} + +$getter; +export function readable(this) { + if (!$inheritsCompressionStream(this)) throw $makeGetterTypeError("CompressionStream", "readable"); + return $getByIdDirectPrivate(this, "readable"); +} + +$getter; +export function writable(this) { + if (!$inheritsCompressionStream(this)) throw $makeGetterTypeError("CompressionStream", "writable"); + return $getByIdDirectPrivate(this, "writable"); +} diff --git a/src/js/builtins/DecompressionStream.ts b/src/js/builtins/DecompressionStream.ts new file mode 100644 index 0000000000..bf608d03fd --- /dev/null +++ b/src/js/builtins/DecompressionStream.ts @@ -0,0 +1,33 @@ +export function initializeDecompressionStream(this, format) { + const zlib = require("node:zlib"); + const stream = require("node:stream"); + + const builders = { + "deflate": zlib.createInflate, + "deflate-raw": zlib.createInflateRaw, + "gzip": zlib.createGunzip, + "brotli": zlib.createBrotliDecompress, + "zstd": zlib.createZstdDecompress, + }; + + if (!(format in builders)) + throw $ERR_INVALID_ARG_VALUE("format", format, "must be one of: " + Object.keys(builders).join(", ")); + + const handle = builders[format](); + $putByIdDirectPrivate(this, "readable", stream.Readable.toWeb(handle)); + $putByIdDirectPrivate(this, "writable", stream.Writable.toWeb(handle)); + + return this; +} + +$getter; +export function readable(this) { + if (!$inheritsDecompressionStream(this)) throw $makeGetterTypeError("DecompressionStream", "readable"); + return $getByIdDirectPrivate(this, "readable"); +} + +$getter; +export function writable(this) { + if (!$inheritsDecompressionStream(this)) throw $makeGetterTypeError("DecompressionStream", "writable"); + return $getByIdDirectPrivate(this, "writable"); +} diff --git a/src/js/node/stream.web.ts b/src/js/node/stream.web.ts index a0d92215bd..8de228b824 100644 --- a/src/js/node/stream.web.ts +++ b/src/js/node/stream.web.ts @@ -15,6 +15,6 @@ export default { CountQueuingStrategy, TextEncoderStream, TextDecoderStream, - CompressionStream: undefined, - DecompressionStream: undefined, + CompressionStream, + DecompressionStream, }; diff --git a/test/integration/bun-types/fixture/streams.ts b/test/integration/bun-types/fixture/streams.ts index ad64910184..f53338482a 100644 --- a/test/integration/bun-types/fixture/streams.ts +++ b/test/integration/bun-types/fixture/streams.ts @@ -59,6 +59,8 @@ expectType(node_stream.blob()).is>(); Bun.file("./foo.csv").stream().pipeThrough(new TextDecoderStream()).pipeThrough(new TextEncoderStream()); +Bun.file("./foo.csv").stream().pipeThrough(new CompressionStream("gzip")).pipeThrough(new DecompressionStream("gzip")); + Bun.file("./foo.csv") .stream() .pipeThrough(new TextDecoderStream()) diff --git a/test/js/node/test/parallel/test-global-webstreams.js b/test/js/node/test/parallel/test-global-webstreams.js new file mode 100644 index 0000000000..ab20e376b7 --- /dev/null +++ b/test/js/node/test/parallel/test-global-webstreams.js @@ -0,0 +1,24 @@ +'use strict'; + +require('../common'); + +const assert = require('assert'); +const webstreams = require('stream/web'); + +assert.strictEqual(ReadableStream, webstreams.ReadableStream); +assert.strictEqual(ReadableStreamDefaultReader, webstreams.ReadableStreamDefaultReader); +assert.strictEqual(ReadableStreamBYOBReader, webstreams.ReadableStreamBYOBReader); +assert.strictEqual(ReadableStreamBYOBRequest, webstreams.ReadableStreamBYOBRequest); +assert.strictEqual(ReadableByteStreamController, webstreams.ReadableByteStreamController); +assert.strictEqual(ReadableStreamDefaultController, webstreams.ReadableStreamDefaultController); +assert.strictEqual(TransformStream, webstreams.TransformStream); +assert.strictEqual(TransformStreamDefaultController, webstreams.TransformStreamDefaultController); +assert.strictEqual(WritableStream, webstreams.WritableStream); +assert.strictEqual(WritableStreamDefaultWriter, webstreams.WritableStreamDefaultWriter); +assert.strictEqual(WritableStreamDefaultController, webstreams.WritableStreamDefaultController); +assert.strictEqual(ByteLengthQueuingStrategy, webstreams.ByteLengthQueuingStrategy); +assert.strictEqual(CountQueuingStrategy, webstreams.CountQueuingStrategy); +assert.strictEqual(TextEncoderStream, webstreams.TextEncoderStream); +assert.strictEqual(TextDecoderStream, webstreams.TextDecoderStream); +assert.strictEqual(CompressionStream, webstreams.CompressionStream); +assert.strictEqual(DecompressionStream, webstreams.DecompressionStream); diff --git a/test/js/node/test/parallel/test-whatwg-webstreams-compression.js b/test/js/node/test/parallel/test-whatwg-webstreams-compression.js new file mode 100644 index 0000000000..a6f2e1b425 --- /dev/null +++ b/test/js/node/test/parallel/test-whatwg-webstreams-compression.js @@ -0,0 +1,70 @@ +// Flags: --no-warnings +'use strict'; + +const common = require('../common'); + +const { + CompressionStream, + DecompressionStream, +} = require('stream/web'); + +const assert = require('assert'); +const dec = new TextDecoder(); + +async function test(format) { + const gzip = new CompressionStream(format); + const gunzip = new DecompressionStream(format); + + assert.strictEqual(gzip[Symbol.toStringTag], 'CompressionStream'); + assert.strictEqual(gunzip[Symbol.toStringTag], 'DecompressionStream'); + + gzip.readable.pipeTo(gunzip.writable).then(common.mustCall()); + + const reader = gunzip.readable.getReader(); + const writer = gzip.writable.getWriter(); + + const compressed_data = []; + const reader_function = ({ value, done }) => { + if (value) + compressed_data.push(value); + if (!done) + return reader.read().then(reader_function); + assert.strictEqual(dec.decode(Buffer.concat(compressed_data)), 'hello'); + }; + const reader_promise = reader.read().then(reader_function); + + await Promise.all([ + reader_promise, + reader_promise.then(() => reader.read().then(({ done }) => assert(done))), + writer.write('hello'), + writer.close(), + ]); +} + +Promise.all(['gzip', 'deflate', 'deflate-raw', 'brotli', 'zstd'].map((i) => test(i))).then(common.mustCall()); + +[1, 'hello', false, {}].forEach((i) => { + assert.throws(() => new CompressionStream(i), { + code: 'ERR_INVALID_ARG_VALUE', + }); + assert.throws(() => new DecompressionStream(i), { + code: 'ERR_INVALID_ARG_VALUE', + }); +}); + +assert.throws( + () => Reflect.get(CompressionStream.prototype, 'readable', {}), { + name: 'TypeError', + }); +assert.throws( + () => Reflect.get(CompressionStream.prototype, 'writable', {}), { + name: 'TypeError', + }); +assert.throws( + () => Reflect.get(DecompressionStream.prototype, 'readable', {}), { + name: 'TypeError', + }); +assert.throws( + () => Reflect.get(DecompressionStream.prototype, 'writable', {}), { + name: 'TypeError', + }); From a0c5edb15be6b994c8289c432cbfcc7245659e26 Mon Sep 17 00:00:00 2001 From: Conner Phillippi <98125604+connerlphillippi@users.noreply.github.com> Date: Thu, 20 Nov 2025 17:35:16 -0800 Subject: [PATCH 038/212] Add new package paths to .aikido configuration --- .aikido | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.aikido b/.aikido index 2afa8b44bd..db335af624 100644 --- a/.aikido +++ b/.aikido @@ -3,3 +3,17 @@ exclude: - test - scripts - bench + - packages/bun-lambda + - packages/bun-release + - packages/bun-wasm + - packages/bun-vscode + - packages/bun-plugin-yaml + - packages/bun-plugin-svelte + - packages/bun-native-plugin-rs + - packages/bun-native-bundler-plugin-api + - packages/bun-inspector-protocol + - packages/bun-inspector-frontend + - packages/bun-error + - packages/bun-debug-adapter-protocol + - packages/bun-build-mdx-rs + - packages/@types/bun From 274e01c737e85f8142070a9745b43a2ba09fce4c Mon Sep 17 00:00:00 2001 From: Dylan Conway Date: Thu, 20 Nov 2025 20:56:02 -0800 Subject: [PATCH 039/212] remove `jsc.createCallback` (#24910) ### What does this PR do? This was creating `Zig::FFIFunction` when we could instead use a plain `JSC::JSFunction` ### How did you verify your code works? Added a test --- src/bake/FrameworkRouter.zig | 4 +- src/bun.js/api/BunObject.zig | 8 ++-- src/bun.js/api/FFIObject.zig | 2 +- src/bun.js/api/HashObject.zig | 9 +--- src/bun.js/api/TOMLObject.zig | 7 ++-- src/bun.js/api/UnsafeObject.zig | 2 +- src/bun.js/api/YAMLObject.zig | 14 ++++--- src/bun.js/api/crypto/PasswordObject.zig | 8 ++-- src/bun.js/api/ffi.zig | 4 -- src/bun.js/bindings/JSFFIFunction.cpp | 22 +++------- src/bun.js/bindings/JSFFIFunction.h | 2 - src/bun.js/bindings/JSFunction.zig | 8 +++- src/bun.js/bindings/JSGlobalObject.zig | 11 ----- src/bun.js/bindings/ZigGlobalObject.cpp | 12 ------ src/bun.js/bindings/ZigGlobalObject.h | 4 -- src/bun.js/jsc.zig | 1 - src/bun.js/jsc/host_fn.zig | 52 +----------------------- src/bun.js/test/DoneCallback.zig | 2 +- src/bun.js/test/ScopeFunctions.zig | 8 ++-- src/bun.js/test/jest.zig | 32 +++++++-------- src/cli/upgrade_command.zig | 4 +- src/codegen/bindgen.ts | 2 +- src/crash_handler.zig | 2 +- src/csrf.zig | 4 +- src/deps/uws/UpgradedDuplex.zig | 4 -- src/install/install_binding.zig | 2 +- src/install/npm.zig | 2 +- src/semver/SemverObject.zig | 16 ++++---- test/js/bun/util/hash.test.js | 12 ++++++ 29 files changed, 88 insertions(+), 172 deletions(-) diff --git a/src/bake/FrameworkRouter.zig b/src/bake/FrameworkRouter.zig index 8824e851d7..010c60b202 100644 --- a/src/bake/FrameworkRouter.zig +++ b/src/bake/FrameworkRouter.zig @@ -1166,7 +1166,7 @@ pub const JSFrameworkRouter = struct { pub fn getBindings(global: *jsc.JSGlobalObject) bun.JSError!jsc.JSValue { return (try jsc.JSObject.create(.{ - .parseRoutePattern = global.createHostFunction("parseRoutePattern", parseRoutePattern, 1), + .parseRoutePattern = jsc.JSFunction.create(global, "parseRoutePattern", jsc.host_fn.toJSHostFn(parseRoutePattern), 1, .{}), .FrameworkRouter = js.getConstructor(global), }, global)).toJS(); } @@ -1313,7 +1313,7 @@ pub const JSFrameworkRouter = struct { bun.destroy(this); } - pub fn parseRoutePattern(global: *JSGlobalObject, frame: *CallFrame) !JSValue { + pub fn parseRoutePattern(global: *JSGlobalObject, frame: *CallFrame) bun.JSError!JSValue { var arena = std.heap.ArenaAllocator.init(bun.default_allocator); defer arena.deinit(); const alloc = arena.allocator(); diff --git a/src/bun.js/api/BunObject.zig b/src/bun.js/api/BunObject.zig index 8eb64a3126..e45ff6a664 100644 --- a/src/bun.js/api/BunObject.zig +++ b/src/bun.js/api/BunObject.zig @@ -508,10 +508,10 @@ export fn Bun__inspect_singleline(globalThis: *JSGlobalObject, value: JSValue) b } pub fn getInspect(globalObject: *jsc.JSGlobalObject, _: *jsc.JSObject) jsc.JSValue { - const fun = jsc.createCallback(globalObject, ZigString.static("inspect"), 2, inspect); + const fun = jsc.JSFunction.create(globalObject, "inspect", inspect, 2, .{}); var str = ZigString.init("nodejs.util.inspect.custom"); fun.put(globalObject, ZigString.static("custom"), jsc.JSValue.symbolFor(globalObject, &str)); - fun.put(globalObject, ZigString.static("table"), jsc.createCallback(globalObject, ZigString.static("table"), 3, inspectTable)); + fun.put(globalObject, ZigString.static("table"), jsc.JSFunction.create(globalObject, "table", inspectTable, 3, .{})); return fun; } @@ -1375,13 +1375,13 @@ const CSRFObject = struct { object.put( globalThis, ZigString.static("generate"), - jsc.createCallback(globalThis, ZigString.static("generate"), 1, @import("../../csrf.zig").csrf__generate), + jsc.JSFunction.create(globalThis, "generate", @import("../../csrf.zig").csrf__generate, 1, .{}), ); object.put( globalThis, ZigString.static("verify"), - jsc.createCallback(globalThis, ZigString.static("verify"), 1, @import("../../csrf.zig").csrf__verify), + jsc.JSFunction.create(globalThis, "verify", @import("../../csrf.zig").csrf__verify, 1, .{}), ); return object; diff --git a/src/bun.js/api/FFIObject.zig b/src/bun.js/api/FFIObject.zig index d45da78d31..f7e2b0a3b8 100644 --- a/src/bun.js/api/FFIObject.zig +++ b/src/bun.js/api/FFIObject.zig @@ -19,7 +19,7 @@ pub fn toJS(globalObject: *jsc.JSGlobalObject) jsc.JSValue { object.put( globalObject, comptime ZigString.static(field), - jsc.createCallback(globalObject, comptime ZigString.static(field), 1, comptime @field(fields, field)), + jsc.JSFunction.create(globalObject, field, @field(fields, field), 1, .{}), ); } diff --git a/src/bun.js/api/HashObject.zig b/src/bun.js/api/HashObject.zig index 3d547a1a62..05256cf581 100644 --- a/src/bun.js/api/HashObject.zig +++ b/src/bun.js/api/HashObject.zig @@ -32,7 +32,7 @@ pub const murmur64v2 = hashWrap(std.hash.murmur.Murmur2_64); pub const rapidhash = hashWrap(bun.deprecated.RapidHash); pub fn create(globalThis: *jsc.JSGlobalObject) jsc.JSValue { - const function = jsc.createCallback(globalThis, ZigString.static("hash"), 1, wyhash); + const function = jsc.JSFunction.create(globalThis, "hash", wyhash, 1, .{}); const fns = comptime .{ "wyhash", "adler32", @@ -48,12 +48,7 @@ pub fn create(globalThis: *jsc.JSGlobalObject) jsc.JSValue { "rapidhash", }; inline for (fns) |name| { - const value = jsc.createCallback( - globalThis, - ZigString.static(name), - 1, - @field(HashObject, name), - ); + const value = jsc.JSFunction.create(globalThis, name, @field(HashObject, name), 1, .{}); function.put(globalThis, comptime ZigString.static(name), value); } diff --git a/src/bun.js/api/TOMLObject.zig b/src/bun.js/api/TOMLObject.zig index 8b3d414d9e..419d0579de 100644 --- a/src/bun.js/api/TOMLObject.zig +++ b/src/bun.js/api/TOMLObject.zig @@ -3,11 +3,12 @@ pub fn create(globalThis: *jsc.JSGlobalObject) jsc.JSValue { object.put( globalThis, ZigString.static("parse"), - jsc.createCallback( + jsc.JSFunction.create( globalThis, - ZigString.static("parse"), - 1, + "parse", parse, + 1, + .{}, ), ); diff --git a/src/bun.js/api/UnsafeObject.zig b/src/bun.js/api/UnsafeObject.zig index f42fcb29a2..7ab191b9c3 100644 --- a/src/bun.js/api/UnsafeObject.zig +++ b/src/bun.js/api/UnsafeObject.zig @@ -9,7 +9,7 @@ pub fn create(globalThis: *jsc.JSGlobalObject) jsc.JSValue { object.put( globalThis, comptime ZigString.static(name), - jsc.createCallback(globalThis, comptime ZigString.static(name), 1, comptime @field(fields, name)), + jsc.JSFunction.create(globalThis, name, @field(fields, name), 1, .{}), ); } return object; diff --git a/src/bun.js/api/YAMLObject.zig b/src/bun.js/api/YAMLObject.zig index 6862e2e6dd..043352e793 100644 --- a/src/bun.js/api/YAMLObject.zig +++ b/src/bun.js/api/YAMLObject.zig @@ -3,21 +3,23 @@ pub fn create(globalThis: *jsc.JSGlobalObject) jsc.JSValue { object.put( globalThis, ZigString.static("parse"), - jsc.createCallback( + jsc.JSFunction.create( globalThis, - ZigString.static("parse"), - 1, + "parse", parse, + 1, + .{}, ), ); object.put( globalThis, ZigString.static("stringify"), - jsc.createCallback( + jsc.JSFunction.create( globalThis, - ZigString.static("stringify"), - 3, + "stringify", stringify, + 3, + .{}, ), ); diff --git a/src/bun.js/api/crypto/PasswordObject.zig b/src/bun.js/api/crypto/PasswordObject.zig index 8f8d7a1fde..0a7753b1c9 100644 --- a/src/bun.js/api/crypto/PasswordObject.zig +++ b/src/bun.js/api/crypto/PasswordObject.zig @@ -324,10 +324,10 @@ pub const JSPasswordObject = struct { pub export fn JSPasswordObject__create(globalObject: *jsc.JSGlobalObject) jsc.JSValue { var object = JSValue.createEmptyObject(globalObject, 4); - object.put(globalObject, ZigString.static("hash"), jsc.createCallback(globalObject, ZigString.static("hash"), 2, JSPasswordObject__hash)); - object.put(globalObject, ZigString.static("hashSync"), jsc.createCallback(globalObject, ZigString.static("hashSync"), 2, JSPasswordObject__hashSync)); - object.put(globalObject, ZigString.static("verify"), jsc.createCallback(globalObject, ZigString.static("verify"), 2, JSPasswordObject__verify)); - object.put(globalObject, ZigString.static("verifySync"), jsc.createCallback(globalObject, ZigString.static("verifySync"), 2, JSPasswordObject__verifySync)); + object.put(globalObject, ZigString.static("hash"), jsc.JSFunction.create(globalObject, "hash", JSPasswordObject__hash, 2, .{})); + object.put(globalObject, ZigString.static("hashSync"), jsc.JSFunction.create(globalObject, "hashSync", JSPasswordObject__hashSync, 2, .{})); + object.put(globalObject, ZigString.static("verify"), jsc.JSFunction.create(globalObject, "verify", JSPasswordObject__verify, 2, .{})); + object.put(globalObject, ZigString.static("verifySync"), jsc.JSFunction.create(globalObject, "verifySync", JSPasswordObject__verifySync, 2, .{})); return object; } diff --git a/src/bun.js/api/ffi.zig b/src/bun.js/api/ffi.zig index d1127e4e15..94e736920b 100644 --- a/src/bun.js/api/ffi.zig +++ b/src/bun.js/api/ffi.zig @@ -780,7 +780,6 @@ pub const FFI = struct { &str, @as(u32, @intCast(function.arg_types.items.len)), bun.cast(*const jsc.JSHostFn, compiled.ptr), - false, true, function.symbol_from_dynamic_library, ); @@ -1134,7 +1133,6 @@ pub const FFI = struct { &str, @as(u32, @intCast(function.arg_types.items.len)), bun.cast(*const jsc.JSHostFn, compiled.ptr), - false, true, function.symbol_from_dynamic_library, ); @@ -1237,7 +1235,6 @@ pub const FFI = struct { name, @as(u32, @intCast(function.arg_types.items.len)), bun.cast(*jsc.JSHostFn, compiled.ptr), - false, true, function.symbol_from_dynamic_library, ); @@ -1449,7 +1446,6 @@ pub const FFI = struct { // val.allocator.free(val.step.compiled.buf); if (val.step.compiled.js_function != .zero) { _ = globalThis; - // _ = jsc.untrackFunction(globalThis, val.step.compiled.js_function); val.step.compiled.js_function = .zero; } diff --git a/src/bun.js/bindings/JSFFIFunction.cpp b/src/bun.js/bindings/JSFFIFunction.cpp index ee99be8c8e..0a66f73665 100644 --- a/src/bun.js/bindings/JSFFIFunction.cpp +++ b/src/bun.js/bindings/JSFFIFunction.cpp @@ -71,24 +71,17 @@ extern "C" FFICallbackFunctionWrapper* Bun__createFFICallbackFunction( return wrapper; } -extern "C" Zig::JSFFIFunction* Bun__CreateFFIFunctionWithData(Zig::GlobalObject* globalObject, const ZigString* symbolName, unsigned argCount, Zig::FFIFunction functionPointer, bool strong, void* data) +extern "C" Zig::JSFFIFunction* Bun__CreateFFIFunctionWithData(Zig::GlobalObject* globalObject, const ZigString* symbolName, unsigned argCount, Zig::FFIFunction functionPointer, void* data) { auto& vm = JSC::getVM(globalObject); Zig::JSFFIFunction* function = Zig::JSFFIFunction::create(vm, globalObject, argCount, symbolName != nullptr ? Zig::toStringCopy(*symbolName) : String(), functionPointer, JSC::NoIntrinsic); - if (strong) - globalObject->trackFFIFunction(function); function->dataPtr = data; return function; } -extern "C" JSC::EncodedJSValue Bun__CreateFFIFunctionWithDataValue(Zig::GlobalObject* globalObject, const ZigString* symbolName, unsigned argCount, Zig::FFIFunction functionPointer, bool strong, void* data) +extern "C" JSC::EncodedJSValue Bun__CreateFFIFunctionWithDataValue(Zig::GlobalObject* globalObject, const ZigString* symbolName, unsigned argCount, Zig::FFIFunction functionPointer, void* data) { - return JSC::JSValue::encode(Bun__CreateFFIFunctionWithData(globalObject, symbolName, argCount, functionPointer, strong, data)); -} - -extern "C" Zig::JSFFIFunction* Bun__CreateFFIFunction(Zig::GlobalObject* globalObject, const ZigString* symbolName, unsigned argCount, Zig::FFIFunction functionPointer, bool strong) -{ - return Bun__CreateFFIFunctionWithData(globalObject, symbolName, argCount, functionPointer, strong, nullptr); + return JSC::JSValue::encode(Bun__CreateFFIFunctionWithData(globalObject, symbolName, argCount, functionPointer, data)); } extern "C" void* Bun__FFIFunction_getDataPtr(JSC::EncodedJSValue jsValue) @@ -110,11 +103,8 @@ extern "C" void Bun__FFIFunction_setDataPtr(JSC::EncodedJSValue jsValue, void* p function->dataPtr = ptr; } -extern "C" void Bun__untrackFFIFunction(Zig::GlobalObject* globalObject, JSC::EncodedJSValue function) -{ - globalObject->untrackFFIFunction(JSC::jsCast(JSC::JSValue::decode(function))); -} -extern "C" JSC::EncodedJSValue Bun__CreateFFIFunctionValue(Zig::GlobalObject* globalObject, const ZigString* symbolName, unsigned argCount, Zig::FFIFunction functionPointer, bool strong, bool addPtrField, void* symbolFromDynamicLibrary) + +extern "C" JSC::EncodedJSValue Bun__CreateFFIFunctionValue(Zig::GlobalObject* globalObject, const ZigString* symbolName, unsigned argCount, Zig::FFIFunction functionPointer, bool addPtrField, void* symbolFromDynamicLibrary) { if (addPtrField) { auto* function = Zig::JSFFIFunction::createForFFI(globalObject->vm(), globalObject, argCount, symbolName != nullptr ? Zig::toStringCopy(*symbolName) : String(), reinterpret_cast(functionPointer)); @@ -127,7 +117,7 @@ extern "C" JSC::EncodedJSValue Bun__CreateFFIFunctionValue(Zig::GlobalObject* gl return JSC::JSValue::encode(function); } - return Bun__CreateFFIFunctionWithDataValue(globalObject, symbolName, argCount, functionPointer, strong, nullptr); + return Bun__CreateFFIFunctionWithDataValue(globalObject, symbolName, argCount, functionPointer, nullptr); } namespace Zig { diff --git a/src/bun.js/bindings/JSFFIFunction.h b/src/bun.js/bindings/JSFFIFunction.h index 4b7cc250e9..6eccae7b61 100644 --- a/src/bun.js/bindings/JSFFIFunction.h +++ b/src/bun.js/bindings/JSFFIFunction.h @@ -98,5 +98,3 @@ private: }; } // namespace JSC - -extern "C" Zig::JSFFIFunction* Bun__CreateFFIFunction(Zig::GlobalObject* globalObject, const ZigString* symbolName, unsigned argCount, Zig::FFIFunction functionPointer, bool strong); diff --git a/src/bun.js/bindings/JSFunction.zig b/src/bun.js/bindings/JSFunction.zig index 9e4ede4e1a..4cb565da6a 100644 --- a/src/bun.js/bindings/JSFunction.zig +++ b/src/bun.js/bindings/JSFunction.zig @@ -30,7 +30,7 @@ pub const JSFunction = opaque { pub fn create( global: *JSGlobalObject, fn_name: anytype, - comptime implementation: jsc.JSHostFnZig, + comptime implementation: anytype, function_length: u32, options: CreateJSFunctionOptions, ) JSValue { @@ -40,7 +40,11 @@ pub const JSFunction = opaque { bun.String => fn_name, else => bun.String.init(fn_name), }, - jsc.toJSHostFn(implementation), + switch (@TypeOf(implementation)) { + jsc.JSHostFnZig => jsc.toJSHostFn(implementation), + jsc.JSHostFn => implementation, + else => @compileError("unexpected function type"), + }, function_length, options.implementation_visibility, options.intrinsic, diff --git a/src/bun.js/bindings/JSGlobalObject.zig b/src/bun.js/bindings/JSGlobalObject.zig index e882f8de98..fa2a092018 100644 --- a/src/bun.js/bindings/JSGlobalObject.zig +++ b/src/bun.js/bindings/JSGlobalObject.zig @@ -776,17 +776,6 @@ pub const JSGlobalObject = opaque { return default; } - pub inline fn createHostFunction( - global: *JSGlobalObject, - comptime display_name: [:0]const u8, - // when querying from JavaScript, 'func.name' - comptime function: anytype, - // when querying from JavaScript, 'func.len' - comptime argument_count: u32, - ) JSValue { - return jsc.host_fn.NewRuntimeFunction(global, ZigString.static(display_name), argument_count, jsc.toJSHostFn(function), false, false, null); - } - /// Get a lazily-initialized `JSC::String` from `BunCommonStrings.h`. pub inline fn commonStrings(this: *jsc.JSGlobalObject) CommonStrings { jsc.markBinding(@src()); diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp index 7e22705369..c2d3b64f8a 100644 --- a/src/bun.js/bindings/ZigGlobalObject.cpp +++ b/src/bun.js/bindings/ZigGlobalObject.cpp @@ -2995,7 +2995,6 @@ void GlobalObject::visitAdditionalChildren(Visitor& visitor) thisObject->globalEventScope->visitJSEventListeners(visitor); thisObject->m_aboutToBeNotifiedRejectedPromises.visit(thisObject, visitor); - thisObject->m_ffiFunctions.visit(thisObject, visitor); ScriptExecutionContext* context = thisObject->scriptExecutionContext(); visitor.addOpaqueRoot(context); @@ -3558,17 +3557,6 @@ bool GlobalObject::hasNapiFinalizers() const void GlobalObject::setNodeWorkerEnvironmentData(JSMap* data) { m_nodeWorkerEnvironmentData.set(vm(), this, data); } -void GlobalObject::trackFFIFunction(JSC::JSFunction* function) -{ - this->m_ffiFunctions.append(vm(), this, function); -} -bool GlobalObject::untrackFFIFunction(JSC::JSFunction* function) -{ - return this->m_ffiFunctions.removeFirstMatching(this, [&](JSC::WriteBarrier& untrackedFunction) -> bool { - return untrackedFunction.get() == function; - }); -} - extern "C" void Zig__GlobalObject__destructOnExit(Zig::GlobalObject* globalObject) { auto& vm = JSC::getVM(globalObject); diff --git a/src/bun.js/bindings/ZigGlobalObject.h b/src/bun.js/bindings/ZigGlobalObject.h index 937da8c906..ffbc145c0e 100644 --- a/src/bun.js/bindings/ZigGlobalObject.h +++ b/src/bun.js/bindings/ZigGlobalObject.h @@ -672,9 +672,6 @@ public: String agentClusterID() const; static String defaultAgentClusterID(); - void trackFFIFunction(JSC::JSFunction* function); - bool untrackFFIFunction(JSC::JSFunction* function); - BunPlugin::OnLoad onLoadPlugins {}; BunPlugin::OnResolve onResolvePlugins {}; @@ -734,7 +731,6 @@ private: WebCore::SubtleCrypto* m_subtleCrypto = nullptr; Bun::WriteBarrierList m_aboutToBeNotifiedRejectedPromises; - Bun::WriteBarrierList m_ffiFunctions; }; class EvalGlobalObject : public GlobalObject { diff --git a/src/bun.js/jsc.zig b/src/bun.js/jsc.zig index 61adcd7564..b4f8cc51ab 100644 --- a/src/bun.js/jsc.zig +++ b/src/bun.js/jsc.zig @@ -37,7 +37,6 @@ pub const toJSHostFnWithContext = host_fn.toJSHostFnWithContext; pub const toJSHostCall = host_fn.toJSHostCall; pub const fromJSHostCall = host_fn.fromJSHostCall; pub const fromJSHostCallGeneric = host_fn.fromJSHostCallGeneric; -pub const createCallback = host_fn.createCallback; // JSC Classes Bindings pub const AnyPromise = @import("./bindings/AnyPromise.zig").AnyPromise; diff --git a/src/bun.js/jsc/host_fn.zig b/src/bun.js/jsc/host_fn.zig index 1cc4d1b904..738080a0f5 100644 --- a/src/bun.js/jsc/host_fn.zig +++ b/src/bun.js/jsc/host_fn.zig @@ -271,72 +271,32 @@ const private = struct { ?*const ZigString, argCount: u32, function: *const JSHostFn, - strong: bool, data: *anyopaque, ) JSValue; - pub extern fn Bun__CreateFFIFunction( - globalObject: *JSGlobalObject, - symbolName: ?*const ZigString, - argCount: u32, - function: *const JSHostFn, - strong: bool, - ) *anyopaque; pub extern fn Bun__CreateFFIFunctionValue( globalObject: *JSGlobalObject, symbolName: ?*const ZigString, argCount: u32, function: *const JSHostFn, - strong: bool, add_ptr_field: bool, inputFunctionPtr: ?*anyopaque, ) JSValue; - pub extern fn Bun__untrackFFIFunction( - globalObject: *JSGlobalObject, - function: JSValue, - ) bool; - pub extern fn Bun__FFIFunction_getDataPtr(JSValue) ?*anyopaque; pub extern fn Bun__FFIFunction_setDataPtr(JSValue, ?*anyopaque) void; }; -pub fn NewFunction( - globalObject: *JSGlobalObject, - symbolName: ?*const ZigString, - argCount: u32, - comptime function: anytype, - strong: bool, -) JSValue { - if (@TypeOf(function) == JSHostFn) { - return NewRuntimeFunction(globalObject, symbolName, argCount, function, strong, false, null); - } - return NewRuntimeFunction(globalObject, symbolName, argCount, toJSHostFn(function), strong, false, null); -} - -pub fn createCallback( - globalObject: *JSGlobalObject, - symbolName: ?*const ZigString, - argCount: u32, - comptime function: anytype, -) JSValue { - if (@TypeOf(function) == JSHostFn) { - return NewRuntimeFunction(globalObject, symbolName, argCount, function, false, false, null); - } - return NewRuntimeFunction(globalObject, symbolName, argCount, toJSHostFn(function), false, false, null); -} - pub fn NewRuntimeFunction( globalObject: *JSGlobalObject, symbolName: ?*const ZigString, argCount: u32, functionPointer: *const JSHostFn, - strong: bool, add_ptr_property: bool, inputFunctionPtr: ?*anyopaque, ) JSValue { jsc.markBinding(@src()); - return private.Bun__CreateFFIFunctionValue(globalObject, symbolName, argCount, functionPointer, strong, add_ptr_property, inputFunctionPtr); + return private.Bun__CreateFFIFunctionValue(globalObject, symbolName, argCount, functionPointer, add_ptr_property, inputFunctionPtr); } pub fn getFunctionData(function: JSValue) ?*anyopaque { @@ -354,7 +314,6 @@ pub fn NewFunctionWithData( symbolName: ?*const ZigString, argCount: u32, comptime function: JSHostFnZig, - strong: bool, data: *anyopaque, ) JSValue { jsc.markBinding(@src()); @@ -363,19 +322,10 @@ pub fn NewFunctionWithData( symbolName, argCount, toJSHostFn(function), - strong, data, ); } -pub fn untrackFunction( - globalObject: *JSGlobalObject, - value: JSValue, -) bool { - jsc.markBinding(@src()); - return private.Bun__untrackFFIFunction(globalObject, value); -} - pub const DOMEffect = struct { reads: [4]ID = std.mem.zeroes([4]ID), writes: [4]ID = std.mem.zeroes([4]ID), diff --git a/src/bun.js/test/DoneCallback.zig b/src/bun.js/test/DoneCallback.zig index 7c1c4e49a3..f9bb8e3619 100644 --- a/src/bun.js/test/DoneCallback.zig +++ b/src/bun.js/test/DoneCallback.zig @@ -29,7 +29,7 @@ pub fn createUnbound(globalThis: *JSGlobalObject) JSValue { } pub fn bind(value: JSValue, globalThis: *JSGlobalObject) bun.JSError!JSValue { - const callFn = jsc.host_fn.NewFunction(globalThis, bun.ZigString.static("done"), 1, BunTest.bunTestDoneCallback, false); + const callFn = jsc.JSFunction.create(globalThis, "done", BunTest.bunTestDoneCallback, 1, .{}); return try callFn.bind(globalThis, value, &bun.String.static("done"), 1, &.{}); } diff --git a/src/bun.js/test/ScopeFunctions.zig b/src/bun.js/test/ScopeFunctions.zig index 9c44d3b388..715c334505 100644 --- a/src/bun.js/test/ScopeFunctions.zig +++ b/src/bun.js/test/ScopeFunctions.zig @@ -450,9 +450,9 @@ pub fn createUnbound(globalThis: *JSGlobalObject, mode: Mode, each: jsc.JSValue, return value; } -pub fn bind(value: JSValue, globalThis: *JSGlobalObject, name: *const bun.String) bun.JSError!JSValue { - const callFn = jsc.host_fn.NewFunction(globalThis, &name.toZigString(), 1, callAsFunction, false); - const bound = try callFn.bind(globalThis, value, name, 1, &.{}); +pub fn bind(value: JSValue, globalThis: *JSGlobalObject, name: bun.String) bun.JSError!JSValue { + const callFn = jsc.JSFunction.create(globalThis, name, callAsFunction, 1, .{}); + const bound = try callFn.bind(globalThis, value, &name, 1, &.{}); try bound.setPrototypeDirect(value.getPrototype(globalThis), globalThis); return bound; } @@ -462,7 +462,7 @@ pub fn createBound(globalThis: *JSGlobalObject, mode: Mode, each: jsc.JSValue, c defer groupLog.end(); const value = createUnbound(globalThis, mode, each, cfg); - return bind(value, globalThis, &name); + return bind(value, globalThis, name); } const bun = @import("bun"); diff --git a/src/bun.js/test/jest.zig b/src/bun.js/test/jest.zig index a2add25650..3725a5d5cd 100644 --- a/src/bun.js/test/jest.zig +++ b/src/bun.js/test/jest.zig @@ -195,12 +195,12 @@ pub const Jest = struct { const xdescribe_scope_functions = bun_test.ScopeFunctions.createBound(globalObject, .describe, .zero, .{ .self_mode = .skip }, bun_test.ScopeFunctions.strings.xdescribe) catch return .zero; module.put(globalObject, ZigString.static("xdescribe"), xdescribe_scope_functions); - module.put(globalObject, ZigString.static("beforeEach"), jsc.host_fn.NewFunction(globalObject, ZigString.static("beforeEach"), 1, bun_test.js_fns.genericHook(.beforeEach).hookFn, false)); - module.put(globalObject, ZigString.static("beforeAll"), jsc.host_fn.NewFunction(globalObject, ZigString.static("beforeAll"), 1, bun_test.js_fns.genericHook(.beforeAll).hookFn, false)); - module.put(globalObject, ZigString.static("afterAll"), jsc.host_fn.NewFunction(globalObject, ZigString.static("afterAll"), 1, bun_test.js_fns.genericHook(.afterAll).hookFn, false)); - module.put(globalObject, ZigString.static("afterEach"), jsc.host_fn.NewFunction(globalObject, ZigString.static("afterEach"), 1, bun_test.js_fns.genericHook(.afterEach).hookFn, false)); - module.put(globalObject, ZigString.static("onTestFinished"), jsc.host_fn.NewFunction(globalObject, ZigString.static("onTestFinished"), 1, bun_test.js_fns.genericHook(.onTestFinished).hookFn, false)); - module.put(globalObject, ZigString.static("setDefaultTimeout"), jsc.host_fn.NewFunction(globalObject, ZigString.static("setDefaultTimeout"), 1, jsSetDefaultTimeout, false)); + module.put(globalObject, ZigString.static("beforeEach"), jsc.JSFunction.create(globalObject, "beforeEach", bun_test.js_fns.genericHook(.beforeEach).hookFn, 1, .{})); + module.put(globalObject, ZigString.static("beforeAll"), jsc.JSFunction.create(globalObject, "beforeAll", bun_test.js_fns.genericHook(.beforeAll).hookFn, 1, .{})); + module.put(globalObject, ZigString.static("afterAll"), jsc.JSFunction.create(globalObject, "afterAll", bun_test.js_fns.genericHook(.afterAll).hookFn, 1, .{})); + module.put(globalObject, ZigString.static("afterEach"), jsc.JSFunction.create(globalObject, "afterEach", bun_test.js_fns.genericHook(.afterEach).hookFn, 1, .{})); + module.put(globalObject, ZigString.static("onTestFinished"), jsc.JSFunction.create(globalObject, "onTestFinished", bun_test.js_fns.genericHook(.onTestFinished).hookFn, 1, .{})); + module.put(globalObject, ZigString.static("setDefaultTimeout"), jsc.JSFunction.create(globalObject, "setDefaultTimeout", jsSetDefaultTimeout, 1, .{})); module.put(globalObject, ZigString.static("expect"), Expect.js.getConstructor(globalObject)); module.put(globalObject, ZigString.static("expectTypeOf"), ExpectTypeOf.js.getConstructor(globalObject)); @@ -211,20 +211,20 @@ pub const Jest = struct { } fn createMockObjects(globalObject: *JSGlobalObject, module: JSValue) void { - const setSystemTime = jsc.host_fn.NewFunction(globalObject, ZigString.static("setSystemTime"), 0, JSMock__jsSetSystemTime, false); + const setSystemTime = jsc.JSFunction.create(globalObject, "setSystemTime", JSMock__jsSetSystemTime, 0, .{}); module.put( globalObject, ZigString.static("setSystemTime"), setSystemTime, ); - const useFakeTimers = jsc.host_fn.NewFunction(globalObject, ZigString.static("useFakeTimers"), 0, JSMock__jsUseFakeTimers, false); - const useRealTimers = jsc.host_fn.NewFunction(globalObject, ZigString.static("useRealTimers"), 0, JSMock__jsUseRealTimers, false); + const useFakeTimers = jsc.JSFunction.create(globalObject, "useFakeTimers", JSMock__jsUseFakeTimers, 0, .{}); + const useRealTimers = jsc.JSFunction.create(globalObject, "useRealTimers", JSMock__jsUseRealTimers, 0, .{}); - const mockFn = jsc.host_fn.NewFunction(globalObject, ZigString.static("fn"), 1, JSMock__jsMockFn, false); - const spyOn = jsc.host_fn.NewFunction(globalObject, ZigString.static("spyOn"), 2, JSMock__jsSpyOn, false); - const restoreAllMocks = jsc.host_fn.NewFunction(globalObject, ZigString.static("restoreAllMocks"), 2, JSMock__jsRestoreAllMocks, false); - const clearAllMocks = jsc.host_fn.NewFunction(globalObject, ZigString.static("clearAllMocks"), 2, JSMock__jsClearAllMocks, false); - const mockModuleFn = jsc.host_fn.NewFunction(globalObject, ZigString.static("module"), 2, JSMock__jsModuleMock, false); + const mockFn = jsc.JSFunction.create(globalObject, "fn", JSMock__jsMockFn, 1, .{}); + const spyOn = jsc.JSFunction.create(globalObject, "spyOn", JSMock__jsSpyOn, 2, .{}); + const restoreAllMocks = jsc.JSFunction.create(globalObject, "restoreAllMocks", JSMock__jsRestoreAllMocks, 2, .{}); + const clearAllMocks = jsc.JSFunction.create(globalObject, "clearAllMocks", JSMock__jsClearAllMocks, 2, .{}); + const mockModuleFn = jsc.JSFunction.create(globalObject, "module", JSMock__jsModuleMock, 2, .{}); module.put(globalObject, ZigString.static("mock"), mockFn); mockFn.put(globalObject, ZigString.static("module"), mockModuleFn); mockFn.put(globalObject, ZigString.static("restore"), restoreAllMocks); @@ -252,8 +252,8 @@ pub const Jest = struct { ZigString.static("useRealTimers"), useRealTimers, ); - jest.put(globalObject, ZigString.static("now"), jsc.host_fn.NewFunction(globalObject, ZigString.static("now"), 0, JSMock__jsNow, false)); - jest.put(globalObject, ZigString.static("setTimeout"), jsc.host_fn.NewFunction(globalObject, ZigString.static("setTimeout"), 1, jsSetDefaultTimeout, false)); + jest.put(globalObject, ZigString.static("now"), jsc.JSFunction.create(globalObject, "now", JSMock__jsNow, 0, .{})); + jest.put(globalObject, ZigString.static("setTimeout"), jsc.JSFunction.create(globalObject, "setTimeout", jsSetDefaultTimeout, 1, .{})); module.put(globalObject, ZigString.static("jest"), jest); module.put(globalObject, ZigString.static("spyOn"), spyOn); diff --git a/src/cli/upgrade_command.zig b/src/cli/upgrade_command.zig index cf9dc91427..9252782e01 100644 --- a/src/cli/upgrade_command.zig +++ b/src/cli/upgrade_command.zig @@ -903,9 +903,9 @@ pub const upgrade_js_bindings = struct { pub fn generate(global: *jsc.JSGlobalObject) jsc.JSValue { const obj = JSValue.createEmptyObject(global, 2); const open = ZigString.static("openTempDirWithoutSharingDelete"); - obj.put(global, open, jsc.createCallback(global, open, 1, jsOpenTempDirWithoutSharingDelete)); + obj.put(global, open, jsc.JSFunction.create(global, "openTempDirWithoutSharingDelete", jsOpenTempDirWithoutSharingDelete, 1, .{})); const close = ZigString.static("closeTempDirHandle"); - obj.put(global, close, jsc.createCallback(global, close, 1, jsCloseTempDirHandle)); + obj.put(global, close, jsc.JSFunction.create(global, "closeTempDirHandle", jsCloseTempDirHandle, 1, .{})); return obj; } diff --git a/src/codegen/bindgen.ts b/src/codegen/bindgen.ts index 6e9fd9d408..0ab0708612 100644 --- a/src/codegen/bindgen.ts +++ b/src/codegen/bindgen.ts @@ -1455,7 +1455,7 @@ for (const [filename, { functions, typedefs }] of files) { const minArgCount = fn.variants.reduce((acc, vari) => Math.min(acc, vari.args.length), Number.MAX_SAFE_INTEGER); zig.line(`pub fn ${wrapperName}(global: *jsc.JSGlobalObject) callconv(jsc.conv) jsc.JSValue {`); zig.line( - ` return jsc.host_fn.NewRuntimeFunction(global, jsc.ZigString.static(${str(fn.name)}), ${minArgCount}, js${cap(fn.name)}, false, false, null);`, + ` return jsc.host_fn.NewRuntimeFunction(global, jsc.ZigString.static(${str(fn.name)}), ${minArgCount}, js${cap(fn.name)}, false, null);`, ); zig.line(`}`); } diff --git a/src/crash_handler.zig b/src/crash_handler.zig index 3bc18b642b..d902410444 100644 --- a/src/crash_handler.zig +++ b/src/crash_handler.zig @@ -1858,7 +1858,7 @@ pub const js_bindings = struct { .{ "raiseIgnoringPanicHandler", jsRaiseIgnoringPanicHandler }, }) |tuple| { const name = jsc.ZigString.static(tuple[0]); - obj.put(global, name, jsc.createCallback(global, name, 1, tuple[1])); + obj.put(global, name, jsc.JSFunction.create(global, tuple[0], tuple[1], 1, .{})); } return obj; } diff --git a/src/csrf.zig b/src/csrf.zig index d78756a83f..45a204c92a 100644 --- a/src/csrf.zig +++ b/src/csrf.zig @@ -291,7 +291,7 @@ pub fn csrf__generate_impl(globalObject: *jsc.JSGlobalObject, callframe: *jsc.Ca return encoding.toNodeEncoding().encodeWithMaxSize(globalObject, boring.EVP_MAX_MD_SIZE + 32, token_bytes); } -pub const csrf__generate = jsc.toJSHostFn(csrf__generate_impl); +pub const csrf__generate = csrf__generate_impl; /// JS binding function for verifying CSRF tokens /// First argument is token (required), second is options (optional) @@ -377,7 +377,7 @@ pub fn csrf__verify_impl(globalObject: *jsc.JSGlobalObject, call_frame: *jsc.Cal return jsc.JSValue.jsBoolean(is_valid); } -pub const csrf__verify = jsc.toJSHostFn(csrf__verify_impl); +pub const csrf__verify = csrf__verify_impl; const hmac = @import("./hmac.zig"); const std = @import("std"); diff --git a/src/deps/uws/UpgradedDuplex.zig b/src/deps/uws/UpgradedDuplex.zig index 26204293e5..419c03b690 100644 --- a/src/deps/uws/UpgradedDuplex.zig +++ b/src/deps/uws/UpgradedDuplex.zig @@ -270,7 +270,6 @@ pub fn getJSHandlers(this: *UpgradedDuplex, globalThis: *jsc.JSGlobalObject) bun null, 0, onReceivedData, - false, this, ); dataCallback.ensureStillAlive(); @@ -290,7 +289,6 @@ pub fn getJSHandlers(this: *UpgradedDuplex, globalThis: *jsc.JSGlobalObject) bun null, 0, onReceivedData, - false, this, ); endCallback.ensureStillAlive(); @@ -310,7 +308,6 @@ pub fn getJSHandlers(this: *UpgradedDuplex, globalThis: *jsc.JSGlobalObject) bun null, 0, onWritable, - false, this, ); writableCallback.ensureStillAlive(); @@ -329,7 +326,6 @@ pub fn getJSHandlers(this: *UpgradedDuplex, globalThis: *jsc.JSGlobalObject) bun null, 0, onCloseJS, - false, this, ); closeCallback.ensureStillAlive(); diff --git a/src/install/install_binding.zig b/src/install/install_binding.zig index fc937f4529..504c2391d3 100644 --- a/src/install/install_binding.zig +++ b/src/install/install_binding.zig @@ -6,7 +6,7 @@ pub const bun_install_js_bindings = struct { pub fn generate(global: *JSGlobalObject) JSValue { const obj = JSValue.createEmptyObject(global, 1); const parseLockfile = ZigString.static("parseLockfile"); - obj.put(global, parseLockfile, jsc.createCallback(global, parseLockfile, 1, jsParseLockfile)); + obj.put(global, parseLockfile, jsc.JSFunction.create(global, "parseLockfile", jsParseLockfile, 1, .{})); return obj; } diff --git a/src/install/npm.zig b/src/install/npm.zig index 11ca8fa72d..b79fb89cbb 100644 --- a/src/install/npm.zig +++ b/src/install/npm.zig @@ -1337,7 +1337,7 @@ pub const PackageManifest = struct { pub fn generate(global: *JSGlobalObject) JSValue { const obj = JSValue.createEmptyObject(global, 1); const parseManifestString = ZigString.static("parseManifest"); - obj.put(global, parseManifestString, jsc.createCallback(global, parseManifestString, 2, jsParseManifest)); + obj.put(global, parseManifestString, jsc.JSFunction.create(global, "parseManifest", jsParseManifest, 2, .{})); return obj; } diff --git a/src/semver/SemverObject.zig b/src/semver/SemverObject.zig index 91c7d90ee2..7fbc12bc5a 100644 --- a/src/semver/SemverObject.zig +++ b/src/semver/SemverObject.zig @@ -6,24 +6,24 @@ pub fn create(globalThis: *jsc.JSGlobalObject) jsc.JSValue { object.put( globalThis, jsc.ZigString.static("satisfies"), - jsc.host_fn.NewFunction( + jsc.JSFunction.create( globalThis, - jsc.ZigString.static("satisfies"), - 2, + "satisfies", SemverObject.satisfies, - false, + 2, + .{}, ), ); object.put( globalThis, jsc.ZigString.static("order"), - jsc.host_fn.NewFunction( + jsc.JSFunction.create( globalThis, - jsc.ZigString.static("order"), - 2, + "order", SemverObject.order, - false, + 2, + .{}, ), ); diff --git a/test/js/bun/util/hash.test.js b/test/js/bun/util/hash.test.js index 9dd290439f..c680649b01 100644 --- a/test/js/bun/util/hash.test.js +++ b/test/js/bun/util/hash.test.js @@ -74,3 +74,15 @@ it(`Bun.hash.rapidhash()`, () => { gcTick(); expect(Bun.hash.rapidhash(new TextEncoder().encode("hello world"))).toBe(0x58a89bdcee89c08cn); }); +it("does not crash when changing Int32Array constructor with Bun.hash.xxHash32 as species", () => { + const arr = new Int32Array(); + function foo(a4) { + return a4; + } + foo[Symbol.species] = Bun.hash.xxHash32; + arr.constructor = foo; + + expect(() => { + arr.map(Bun.hash.xxHash32); + }).toThrow("species is not a constructor"); +}); From abb1b0c4d75acabf1742b951a1f739068c94a7bd Mon Sep 17 00:00:00 2001 From: Marko Vejnovic Date: Thu, 20 Nov 2025 23:37:31 -0800 Subject: [PATCH 040/212] test(ENG-21524): Fuzzilli Stop-Gap (#24826) ### What does this PR do? Adds [@mschwarzl's Fuzzilli Support PR](https://github.com/oven-sh/bun/pull/23862) with the changes necessary to be able to: - Run it in CI - Make no impact on `debug` and `release` mode. ### How did you verify your code works? --------- Co-authored-by: Martin Schwarzl Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Dylan Conway --- build.zig | 11 + cmake/CompilerFlags.cmake | 17 ++ cmake/Options.cmake | 2 + cmake/targets/BuildBun.cmake | 1 + package.json | 1 + src/bun.js/bindings/FuzzilliREPRL.cpp | 286 ++++++++++++++++++++++++ src/bun.js/bindings/ZigGlobalObject.cpp | 9 + src/cli.zig | 18 +- src/cli/fuzzilli_command.zig | 63 ++++++ src/env.zig | 1 + src/js/eval/fuzzilli-reprl.ts | 91 ++++++++ 11 files changed, 499 insertions(+), 1 deletion(-) create mode 100644 src/bun.js/bindings/FuzzilliREPRL.cpp create mode 100644 src/cli/fuzzilli_command.zig create mode 100644 src/js/eval/fuzzilli-reprl.ts diff --git a/build.zig b/build.zig index eb16d47401..3b50fd1fbe 100644 --- a/build.zig +++ b/build.zig @@ -32,6 +32,7 @@ const BunBuildOptions = struct { /// enable debug logs in release builds enable_logs: bool = false, enable_asan: bool, + enable_fuzzilli: bool, enable_valgrind: bool, use_mimalloc: bool, tracy_callstack_depth: u16, @@ -81,6 +82,7 @@ const BunBuildOptions = struct { opts.addOption(bool, "baseline", this.isBaseline()); opts.addOption(bool, "enable_logs", this.enable_logs); opts.addOption(bool, "enable_asan", this.enable_asan); + opts.addOption(bool, "enable_fuzzilli", this.enable_fuzzilli); opts.addOption(bool, "enable_valgrind", this.enable_valgrind); opts.addOption(bool, "use_mimalloc", this.use_mimalloc); opts.addOption([]const u8, "reported_nodejs_version", b.fmt("{f}", .{this.reported_nodejs_version})); @@ -255,6 +257,7 @@ pub fn build(b: *Build) !void { .tracy_callstack_depth = b.option(u16, "tracy_callstack_depth", "") orelse 10, .enable_logs = b.option(bool, "enable_logs", "Enable logs in release") orelse false, .enable_asan = b.option(bool, "enable_asan", "Enable asan") orelse false, + .enable_fuzzilli = b.option(bool, "enable_fuzzilli", "Enable fuzzilli instrumentation") orelse false, .enable_valgrind = b.option(bool, "enable_valgrind", "Enable valgrind") orelse false, .use_mimalloc = b.option(bool, "use_mimalloc", "Use mimalloc as default allocator") orelse false, .llvm_codegen_threads = b.option(u32, "llvm_codegen_threads", "Number of threads to use for LLVM codegen") orelse 1, @@ -490,6 +493,7 @@ fn addMultiCheck( .no_llvm = root_build_options.no_llvm, .enable_asan = root_build_options.enable_asan, .enable_valgrind = root_build_options.enable_valgrind, + .enable_fuzzilli = root_build_options.enable_fuzzilli, .use_mimalloc = root_build_options.use_mimalloc, .override_no_export_cpp_apis = root_build_options.override_no_export_cpp_apis, }; @@ -605,13 +609,20 @@ fn configureObj(b: *Build, opts: *BunBuildOptions, obj: *Compile) void { obj.no_link_obj = opts.os != .windows; + if (opts.enable_asan and !enableFastBuild(b)) { if (@hasField(Build.Module, "sanitize_address")) { + if (opts.enable_fuzzilli) { + obj.sanitize_coverage_trace_pc_guard = true; + } obj.root_module.sanitize_address = true; } else { const fail_step = b.addFail("asan is not supported on this platform"); obj.step.dependOn(&fail_step.step); } + } else if (opts.enable_fuzzilli) { + const fail_step = b.addFail("fuzzilli requires asan"); + obj.step.dependOn(&fail_step.step); } obj.bundle_compiler_rt = false; obj.bundle_ubsan_rt = false; diff --git a/cmake/CompilerFlags.cmake b/cmake/CompilerFlags.cmake index cff32fb166..bff19e1974 100644 --- a/cmake/CompilerFlags.cmake +++ b/cmake/CompilerFlags.cmake @@ -51,6 +51,23 @@ if(ENABLE_ASAN) ) endif() +if(ENABLE_FUZZILLI) + register_compiler_flags( + DESCRIPTION "Enable coverage instrumentation for fuzzing" + -fsanitize-coverage=trace-pc-guard + ) + + register_linker_flags( + DESCRIPTION "Link coverage instrumentation" + -fsanitize-coverage=trace-pc-guard + ) + + register_compiler_flags( + DESCRIPTION "Enable fuzzilli-specific code" + -DFUZZILLI_ENABLED + ) +endif() + # --- Optimization level --- if(DEBUG) register_compiler_flags( diff --git a/cmake/Options.cmake b/cmake/Options.cmake index ac6ce10c74..e54f6db166 100644 --- a/cmake/Options.cmake +++ b/cmake/Options.cmake @@ -127,6 +127,8 @@ if (NOT ENABLE_ASAN) set(ENABLE_ZIG_ASAN OFF) endif() +optionx(ENABLE_FUZZILLI BOOL "If fuzzilli support should be enabled" DEFAULT OFF) + if(RELEASE AND LINUX AND CI AND NOT ENABLE_ASSERTIONS AND NOT ENABLE_ASAN) set(DEFAULT_LTO ON) else() diff --git a/cmake/targets/BuildBun.cmake b/cmake/targets/BuildBun.cmake index 43b061846b..6b23266ade 100644 --- a/cmake/targets/BuildBun.cmake +++ b/cmake/targets/BuildBun.cmake @@ -695,6 +695,7 @@ register_command( -Dcpu=${ZIG_CPU} -Denable_logs=$,true,false> -Denable_asan=$,true,false> + -Denable_fuzzilli=$,true,false> -Denable_valgrind=$,true,false> -Duse_mimalloc=$,true,false> -Dllvm_codegen_threads=${LLVM_ZIG_CODEGEN_THREADS} diff --git a/package.json b/package.json index c8bdbc36fa..ee34f430b8 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "bd:v": "(bun run --silent build:debug &> /tmp/bun.debug.build.log || (cat /tmp/bun.debug.build.log && rm -rf /tmp/bun.debug.build.log && exit 1)) && rm -f /tmp/bun.debug.build.log && ./build/debug/bun-debug", "bd": "BUN_DEBUG_QUIET_LOGS=1 bun --silent bd:v", "build:debug": "export COMSPEC=\"C:\\Windows\\System32\\cmd.exe\" && bun ./scripts/build.mjs -GNinja -DCMAKE_BUILD_TYPE=Debug -B build/debug --log-level=NOTICE", + "build:debug:fuzzilli": "export COMSPEC=\"C:\\Windows\\System32\\cmd.exe\" && bun ./scripts/build.mjs -GNinja -DCMAKE_BUILD_TYPE=Debug -B build/debug-fuzz -DENABLE_FUZZILLI=ON --log-level=NOTICE", "build:debug:noasan": "export COMSPEC=\"C:\\Windows\\System32\\cmd.exe\" && bun ./scripts/build.mjs -GNinja -DCMAKE_BUILD_TYPE=Debug -DENABLE_ASAN=OFF -B build/debug --log-level=NOTICE", "build:release": "bun ./scripts/build.mjs -GNinja -DCMAKE_BUILD_TYPE=Release -B build/release", "build:ci": "bun ./scripts/build.mjs -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=ON -DCI=true -B build/release-ci --verbose --fresh", diff --git a/src/bun.js/bindings/FuzzilliREPRL.cpp b/src/bun.js/bindings/FuzzilliREPRL.cpp new file mode 100644 index 0000000000..b3e0815271 --- /dev/null +++ b/src/bun.js/bindings/FuzzilliREPRL.cpp @@ -0,0 +1,286 @@ +#ifdef FUZZILLI_ENABLED +#include "JavaScriptCore/CallFrame.h" +#include "JavaScriptCore/Identifier.h" +#include "JavaScriptCore/JSGlobalObject.h" +#include "ZigGlobalObject.h" +#include "root.h" +#include "wtf/text/WTFString.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define REPRL_DWFD 103 + +extern "C" { + +// Signal handler to ensure output is flushed before crash +static void fuzzilliSignalHandler(int sig) +{ + // Flush all output + fflush(stdout); + fflush(stderr); + fsync(STDOUT_FILENO); + fsync(STDERR_FILENO); + + // Re-raise the signal with default handler + signal(sig, SIG_DFL); + raise(sig); +} + +// Implementation of the global fuzzilli() function for Bun +// This function is used by Fuzzilli to: +// 1. Test crash detection with fuzzilli('FUZZILLI_CRASH', type) +// 2. Print output with fuzzilli('FUZZILLI_PRINT', value) +static JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES functionFuzzilli(JSC::JSGlobalObject* globalObject, JSC::CallFrame* callFrame) +{ + JSC::VM& vm = globalObject->vm(); + auto scope = DECLARE_THROW_SCOPE(vm); + + if (callFrame->argumentCount() < 1) { + return JSC::JSValue::encode(JSC::jsUndefined()); + } + + JSC::JSValue arg0 = callFrame->argument(0); + WTF::String command = arg0.toWTFString(globalObject); + RETURN_IF_EXCEPTION(scope, JSC::JSValue::encode(JSC::jsUndefined())); + + if (command == "FUZZILLI_CRASH"_s) { + // Fuzzilli uses this to test crash detection + // The second argument is an integer specifying the crash type + int crashType = 0; + if (callFrame->argumentCount() >= 2) { + JSC::JSValue arg1 = callFrame->argument(1); + crashType = arg1.toInt32(globalObject); + } + + // Print the crash type for debugging + fprintf(stdout, "FUZZILLI_CRASH: %d\n", crashType); + fflush(stdout); + + // Trigger different types of crashes for testing (similar to V8 implementation) + switch (crashType) { + case 0: + // IMMEDIATE_CRASH - Simple abort + std::abort(); + break; + + case 1: + // CHECK failure - assertion in release builds + // Use __builtin_trap() for a direct crash + __builtin_trap(); + break; + + case 2: + // DCHECK failure - always crash (use trap instead of assert which is disabled in release) + __builtin_trap(); + break; + + case 3: + // Wild write - heap buffer overflow (will be caught by ASAN) + { + volatile char* buffer = new char[10]; + buffer[20] = 'x'; // Write past the end - ASAN should catch this + // Don't delete to make it more obvious + } + break; + + case 4: + // Use-after-free (will be caught by ASAN) + { + volatile char* buffer = new char[10]; + delete[] buffer; + buffer[0] = 'x'; // Use after free - ASAN should catch this + } + break; + + case 5: + // Null pointer dereference + { + volatile int* ptr = nullptr; + *ptr = 42; + } + break; + + case 6: + // Stack buffer overflow (will be caught by ASAN) + { + volatile char buffer[10]; + volatile char* p = const_cast(buffer); + p[20] = 'x'; // Write past stack buffer + } + break; + + case 7: + // Double free (will be caught by ASAN) + { + char* buffer = new char[10]; + delete[] buffer; + delete[] buffer; // Double free - ASAN should catch this + } + break; + + case 8: + // Verify DEBUG or ASAN is enabled + // Expected to be compiled with debug or ASAN, don't crash + fprintf(stdout, "DEBUG or ASAN is enabled\n"); + fflush(stdout); + break; + + default: + // Unknown crash type, just abort + std::abort(); + break; + } + } else if (command == "FUZZILLI_PRINT"_s) { + // Optional: Print the second argument + if (callFrame->argumentCount() >= 2) { + JSC::JSValue arg1 = callFrame->argument(1); + WTF::String output = arg1.toWTFString(globalObject); + RETURN_IF_EXCEPTION(scope, JSC::JSValue::encode(JSC::jsUndefined())); + + FILE* f = fdopen(REPRL_DWFD, "w"); + fprintf(f, "%s\n", output.utf8().data()); + fflush(f); + } + } + + return JSC::JSValue::encode(JSC::jsUndefined()); +} + +// ============================================================================ +// Coverage instrumentation for Fuzzilli +// Based on workerd implementation +// Only enabled when ASAN is active +// ============================================================================ + +#define SHM_SIZE 0x200000 +#define MAX_EDGES ((SHM_SIZE - 4) * 8) + +struct shmem_data { + uint32_t num_edges; + unsigned char edges[]; +}; + +// Global coverage data +static struct shmem_data* __shmem = nullptr; +static uint32_t* __edges_start = nullptr; +static uint32_t* __edges_stop = nullptr; + +// Reset edge guards for next iteration +static void __sanitizer_cov_reset_edgeguards() +{ + if (!__edges_start || !__edges_stop) return; + uint64_t N = 0; + for (uint32_t* x = __edges_start; x < __edges_stop && N < MAX_EDGES; x++) { + *x = ++N; + } +} + +// Called by the compiler to initialize coverage instrumentation +extern "C" void __sanitizer_cov_trace_pc_guard_init(uint32_t* start, uint32_t* stop) +{ + // Avoid duplicate initialization + if (start == stop || *start) return; + + if (__edges_start != nullptr || __edges_stop != nullptr) { + fprintf(stderr, "[COV] Coverage instrumentation is only supported for a single module\n"); + _exit(-1); + } + + __edges_start = start; + __edges_stop = stop; + + // Map the shared memory region + const char* shm_key = getenv("SHM_ID"); + if (!shm_key) { + fprintf(stderr, "[COV] no shared memory bitmap available, using malloc\n"); + __shmem = (struct shmem_data*)malloc(SHM_SIZE); + if (!__shmem) { + fprintf(stderr, "[COV] Failed to allocate coverage bitmap\n"); + _exit(-1); + } + memset(__shmem, 0, SHM_SIZE); + } else { + int fd = shm_open(shm_key, O_RDWR, S_IREAD | S_IWRITE); + if (fd <= -1) { + fprintf(stderr, "[COV] Failed to open shared memory region: %s\n", strerror(errno)); + _exit(-1); + } + + __shmem = (struct shmem_data*)mmap(0, SHM_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); + if (__shmem == MAP_FAILED) { + fprintf(stderr, "[COV] Failed to mmap shared memory region\n"); + _exit(-1); + } + } + + __sanitizer_cov_reset_edgeguards(); + __shmem->num_edges = stop - start; + fprintf(stderr, "[COV] Coverage instrumentation initialized with %u edges\n", __shmem->num_edges); +} + +// Called by the compiler for each edge +extern "C" void __sanitizer_cov_trace_pc_guard(uint32_t* guard) +{ + // There's a small race condition here: if this function executes in two threads for the same + // edge at the same time, the first thread might disable the edge (by setting the guard to zero) + // before the second thread fetches the guard value (and thus the index). However, our + // instrumentation ignores the first edge (see libcoverage.c) and so the race is unproblematic. + if (!__shmem) return; + uint32_t index = *guard; + // If this function is called before coverage instrumentation is properly initialized we want to return early. + if (!index) return; + __shmem->edges[index / 8] |= 1 << (index % 8); + *guard = 0; +} + +// Function to reset coverage for next REPRL iteration +// This should be called after each script execution +JSC_DEFINE_HOST_FUNCTION(jsResetCoverage, (JSC::JSGlobalObject * globalObject, JSC::CallFrame*)) +{ + __sanitizer_cov_reset_edgeguards(); + return JSC::JSValue::encode(JSC::jsUndefined()); +} + +// Register the fuzzilli() function on a Bun global object +void Bun__REPRL__registerFuzzilliFunctions(Zig::GlobalObject* globalObject) +{ + JSC::VM& vm = globalObject->vm(); + + // Install signal handlers to ensure output is flushed before crashes + // This is important for ASAN output to be captured + signal(SIGABRT, fuzzilliSignalHandler); + signal(SIGSEGV, fuzzilliSignalHandler); + signal(SIGILL, fuzzilliSignalHandler); + signal(SIGFPE, fuzzilliSignalHandler); + + globalObject->putDirectNativeFunction( + vm, + globalObject, + JSC::Identifier::fromString(vm, "fuzzilli"_s), + 2, // max 2 arguments + functionFuzzilli, + JSC::ImplementationVisibility::Public, + JSC::NoIntrinsic, + JSC::PropertyAttribute::DontEnum | JSC::PropertyAttribute::DontDelete); + + globalObject->putDirectNativeFunction( + vm, + globalObject, + JSC::Identifier::fromString(vm, "resetCoverage"_s), + 0, + jsResetCoverage, + JSC::ImplementationVisibility::Public, + JSC::NoIntrinsic, + JSC::PropertyAttribute::DontEnum | JSC::PropertyAttribute::DontDelete); +} + +} // extern "C" + +#endif // FUZZILLI_ENABLED diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp index c2d3b64f8a..a47cb93a25 100644 --- a/src/bun.js/bindings/ZigGlobalObject.cpp +++ b/src/bun.js/bindings/ZigGlobalObject.cpp @@ -260,6 +260,11 @@ extern "C" unsigned getJSCBytecodeCacheVersion() return getWebKitBytecodeCacheVersion(); } +// Declare fuzzilli function registration from FuzzilliREPRL.cpp +#ifdef FUZZILLI_ENABLED +extern "C" void Bun__REPRL__registerFuzzilliFunctions(Zig::GlobalObject*); +#endif + extern "C" void JSCInitialize(const char* envp[], size_t envc, void (*onCrash)(const char* ptr, size_t length), bool evalMode) { static std::once_flag jsc_init_flag; @@ -503,6 +508,10 @@ extern "C" JSC::JSGlobalObject* Zig__GlobalObject__create(void* console_client, Bun__setDefaultGlobalObject(globalObject); JSC::gcProtect(globalObject); +#ifdef FUZZILLI_ENABLED + Bun__REPRL__registerFuzzilliFunctions(static_cast(globalObject)); +#endif + vm.setOnComputeErrorInfo(computeErrorInfoWrapperToString); vm.setOnComputeErrorInfoJSValue(computeErrorInfoWrapperToJSValue); vm.setComputeLineColumnWithSourcemap(computeLineColumnWithSourcemap); diff --git a/src/cli.zig b/src/cli.zig index 63b605339c..204999fbe9 100644 --- a/src/cli.zig +++ b/src/cli.zig @@ -91,6 +91,7 @@ pub const PackCommand = @import("./cli/pack_command.zig").PackCommand; pub const AuditCommand = @import("./cli/audit_command.zig").AuditCommand; pub const InitCommand = @import("./cli/init_command.zig").InitCommand; pub const WhyCommand = @import("./cli/why_command.zig").WhyCommand; +pub const FuzzilliCommand = @import("./cli/fuzzilli_command.zig").FuzzilliCommand; pub const Arguments = @import("./cli/Arguments.zig"); @@ -626,6 +627,10 @@ pub const Command = struct { RootCommandMatcher.case("prune") => .ReservedCommand, RootCommandMatcher.case("list") => .PackageManagerCommand, RootCommandMatcher.case("why") => .WhyCommand, + RootCommandMatcher.case("fuzzilli") => if (bun.Environment.enable_fuzzilli) + .FuzzilliCommand + else + .AutoCommand, RootCommandMatcher.case("-e") => .AutoCommand, @@ -935,6 +940,15 @@ pub const Command = struct { try ExecCommand.exec(ctx); } else Tag.printHelp(.ExecCommand, true); }, + .FuzzilliCommand => { + if (bun.Environment.enable_fuzzilli) { + const ctx = try Command.init(allocator, log, .FuzzilliCommand); + try FuzzilliCommand.exec(ctx); + return; + } else { + return error.UnrecognizedCommand; + } + }, } } @@ -970,6 +984,7 @@ pub const Command = struct { PublishCommand, AuditCommand, WhyCommand, + FuzzilliCommand, /// Used by crash reports. /// @@ -1007,6 +1022,7 @@ pub const Command = struct { .PublishCommand => 'k', .AuditCommand => 'A', .WhyCommand => 'W', + .FuzzilliCommand => 'F', }; } @@ -1320,7 +1336,7 @@ pub const Command = struct { Output.flush(); }, else => { - HelpCommand.printWithReason(.explicit); + HelpCommand.printWithReason(.explicit, false); }, } } diff --git a/src/cli/fuzzilli_command.zig b/src/cli/fuzzilli_command.zig new file mode 100644 index 0000000000..f1c24005e0 --- /dev/null +++ b/src/cli/fuzzilli_command.zig @@ -0,0 +1,63 @@ +pub const FuzzilliCommand = if (bun.Environment.enable_fuzzilli) struct { + pub fn exec(ctx: Command.Context) !void { + @branchHint(.cold); + + if (!Environment.isPosix) { + Output.prettyErrorln("error: Fuzzilli mode is only supported on POSIX systems", .{}); + Global.exit(1); + } + + // Set an environment variable so we can detect fuzzilli mode in JavaScript + + // Verify REPRL file descriptors are available + const REPRL_CRFD: c_int = 100; + verifyFd(REPRL_CRFD) catch { + Output.prettyErrorln("error: REPRL_CRFD (fd {d}) is not available. Run Bun under Fuzzilli.", .{REPRL_CRFD}); + Output.prettyErrorln("Example: fuzzilli --profile=bun /path/to/bun fuzzilli", .{}); + Global.exit(1); + }; + + // Always embed the REPRL script (it's small and not worth the runtime overhead) + const reprl_script = @embedFile("../js/eval/fuzzilli-reprl.ts"); + + // Create temp file for the script + var temp_dir = bun.FD.cwd().openDir("/tmp", .{}) catch { + Output.prettyErrorln("error: Could not access /tmp directory", .{}); + Global.exit(1); + }; + defer temp_dir.close(); + + const temp_file_name = "bun-fuzzilli-reprl.js"; + const temp_file = temp_dir.createFile(temp_file_name, .{ .truncate = true }) catch { + Output.prettyErrorln("error: Could not create temp file", .{}); + Global.exit(1); + }; + defer temp_file.close(); + + _ = temp_file.writeAll(reprl_script) catch { + Output.prettyErrorln("error: Could not write temp file", .{}); + Global.exit(1); + }; + + Output.prettyErrorln("[FUZZILLI] Temp file written, booting JS runtime", .{}); + + // Run the temp file + const temp_path = "/tmp/bun-fuzzilli-reprl.js"; + try Run.boot(ctx, temp_path, null); + } + + fn verifyFd(fd: c_int) !void { + const stat = try std_posix.fstat(fd); + _ = stat; + } +} else {}; + +const bun = @import("bun"); +const Environment = bun.Environment; +const Global = bun.Global; +const Output = bun.Output; +const Command = bun.cli.Command; +const Run = bun.bun_js.Run; + +const std = @import("std"); +const std_posix = std.posix; diff --git a/src/env.zig b/src/env.zig index be7e75dafd..528d4ef5a1 100644 --- a/src/env.zig +++ b/src/env.zig @@ -51,6 +51,7 @@ pub const dump_source = isDebug and !isTest; pub const base_path = build_options.base_path; pub const enable_logs = build_options.enable_logs; pub const enable_asan = build_options.enable_asan; +pub const enable_fuzzilli = build_options.enable_fuzzilli; pub const codegen_path = build_options.codegen_path; pub const codegen_embed = build_options.codegen_embed; diff --git a/src/js/eval/fuzzilli-reprl.ts b/src/js/eval/fuzzilli-reprl.ts new file mode 100644 index 0000000000..2cc125036d --- /dev/null +++ b/src/js/eval/fuzzilli-reprl.ts @@ -0,0 +1,91 @@ +// Comprehensive REPRL wrapper for Bun fuzzing with all runtime APIs exposed +// Based on workerd's approach to maximize fuzzing coverage +// https://bun.com/docs/runtime + +const REPRL_CRFD = 100; // Control read FD +const REPRL_CWFD = 101; // Control write FD +const REPRL_DRFD = 102; // Data read FD + +const fs = require("node:fs"); + +// Make common Node modules available +globalThis.require = require; +globalThis.__dirname = "/"; +globalThis.__filename = "/fuzzilli.js"; + +// ============================================================================ +// REPRL Protocol Loop +// ============================================================================ + +// Verify we're running under Fuzzilli before starting REPRL loop +// The Zig code should have already checked, but double-check here +try { + // Try to stat fd 100 to see if it exists + fs.fstatSync(REPRL_CRFD); +} catch { + // FD doesn't exist - not running under Fuzzilli + console.error("ERROR: REPRL file descriptors not available. Must run under Fuzzilli."); + process.exit(1); +} + +// Send HELO handshake +fs.writeSync(REPRL_CWFD, Buffer.from("HELO")); + +// Read HELO response +const response = Buffer.alloc(4); +const responseBytes = fs.readSync(REPRL_CRFD, response, 0, 4, null); +if (responseBytes !== 4) { + throw new Error(`REPRL handshake failed: expected 4 bytes, got ${responseBytes}`); +} + +// Main REPRL loop +while (true) { + // Read command + const cmd = Buffer.alloc(4); + const cmd_n = fs.readSync(REPRL_CRFD, cmd, 0, 4, null); + + if (cmd_n === 0) { + // EOF + break; + } + + if (cmd_n !== 4 || cmd.toString() !== "exec") { + throw new Error(`Invalid REPRL command: expected 'exec', got ${cmd.toString()}`); + } + + // Read script size (8 bytes, little-endian) + const size_bytes = Buffer.alloc(8); + fs.readSync(REPRL_CRFD, size_bytes, 0, 8, null); + const script_size = Number(size_bytes.readBigUInt64LE(0)); + + // Read script data from REPRL_DRFD + const script_data = Buffer.alloc(script_size); + let total_read = 0; + while (total_read < script_size) { + const n = fs.readSync(REPRL_DRFD, script_data, total_read, script_size - total_read, null); + if (n === 0) break; + total_read += n; + } + + const script = script_data.toString("utf8"); + + // Execute script + let exit_code = 0; + try { + // Use indirect eval to execute in global scope + (0, eval)(script); + } catch (_e) { + // Print uncaught exception like workerd does + console.log(`uncaught:${_e}`); + exit_code = 1; + } + + // Send status back (4 bytes: exit code in REPRL format) + // Format: lower 8 bits = signal number, next 8 bits = exit code + const status = exit_code << 8; + const status_bytes = Buffer.alloc(4); + status_bytes.writeUInt32LE(status, 0); + fs.writeSync(REPRL_CWFD, status_bytes); + + resetCoverage(); +} From 7ec1aa8c951b99a2c87a3879d7b4aae64943f943 Mon Sep 17 00:00:00 2001 From: robobun Date: Fri, 21 Nov 2025 12:45:57 -0800 Subject: [PATCH 041/212] docs: document new features from v1.3.2 and v1.3.3 (#24932) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## What does this PR do? Adds missing documentation for features introduced in Bun v1.3.2 and v1.3.3: - **Standalone executable config flags** (`docs/bundler/executables.mdx`): Document `--no-compile-autoload-dotenv` and `--no-compile-autoload-bunfig` flags that control automatic config file loading in compiled binaries - **Test retry/repeats** (`docs/test/writing-tests.mdx`): Document the `retry` and `repeats` test options for handling flaky tests - **Disable env file loading** (`docs/runtime/environment-variables.mdx`): Document `--no-env-file` flag and `env = false` bunfig option ## How did you verify your code works? - [x] Verified documentation is accurate against source code implementation in `src/cli/Arguments.zig` - [x] Verified features are not already documented elsewhere - [x] Cross-referenced with v1.3.2 and v1.3.3 release notes šŸ¤– Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Bot Co-authored-by: Claude --- docs/bundler/executables.mdx | 29 ++++++++++++++++++++ docs/runtime/environment-variables.mdx | 17 ++++++++++++ docs/test/writing-tests.mdx | 37 ++++++++++++++++++++++++++ 3 files changed, 83 insertions(+) diff --git a/docs/bundler/executables.mdx b/docs/bundler/executables.mdx index 8de435e715..fefa2769e6 100644 --- a/docs/bundler/executables.mdx +++ b/docs/bundler/executables.mdx @@ -183,6 +183,35 @@ console.log(process.execArgv); // ["--smol", "--user-agent=MyBot"] --- +## Disabling automatic config loading + +By default, standalone executables look for `.env` and `bunfig.toml` files in the directory where the executable is run. You can disable this behavior at build time for deterministic execution regardless of the user's working directory. + +```bash icon="terminal" terminal +# Disable .env loading +bun build --compile --no-compile-autoload-dotenv ./app.ts --outfile myapp + +# Disable bunfig.toml loading +bun build --compile --no-compile-autoload-bunfig ./app.ts --outfile myapp + +# Disable both +bun build --compile --no-compile-autoload-dotenv --no-compile-autoload-bunfig ./app.ts --outfile myapp +``` + +You can also configure this via the JavaScript API: + +```ts +await Bun.build({ + entrypoints: ["./app.ts"], + compile: { + autoloadDotenv: false, // Disable .env loading + autoloadBunfig: false, // Disable bunfig.toml loading + }, +}); +``` + +--- + ## Act as the Bun CLI New in Bun v1.2.16 diff --git a/docs/runtime/environment-variables.mdx b/docs/runtime/environment-variables.mdx index c1b38edc1b..529b5348af 100644 --- a/docs/runtime/environment-variables.mdx +++ b/docs/runtime/environment-variables.mdx @@ -72,6 +72,23 @@ bun --env-file=.env.1 src/index.ts bun --env-file=.env.abc --env-file=.env.def run build ``` +## Disabling automatic `.env` loading + +Use `--no-env-file` to disable Bun's automatic `.env` file loading. This is useful in production environments or CI/CD pipelines where you want to rely solely on system environment variables. + +```sh +bun run --no-env-file index.ts +``` + +This can also be configured in `bunfig.toml`: + +```toml bunfig.toml icon="settings" +# Disable loading .env files +env = false +``` + +Explicitly provided environment files via `--env-file` will still be loaded even when default loading is disabled. + --- ## Quotation marks diff --git a/docs/test/writing-tests.mdx b/docs/test/writing-tests.mdx index a2de3839a5..5fee977356 100644 --- a/docs/test/writing-tests.mdx +++ b/docs/test/writing-tests.mdx @@ -78,6 +78,43 @@ In `bun:test`, test timeouts throw an uncatchable exception to force the test to The default timeout for each test is 5000ms (5 seconds) if not overridden by this timeout option or `jest.setDefaultTimeout()`. +## Retries and Repeats + +### test.retry + +Use the `retry` option to automatically retry a test if it fails. The test passes if it succeeds within the specified number of attempts. This is useful for flaky tests that may fail intermittently. + +```ts title="example.test.ts" icon="/icons/typescript.svg" +import { test } from "bun:test"; + +test( + "flaky network request", + async () => { + const response = await fetch("https://example.com/api"); + expect(response.ok).toBe(true); + }, + { retry: 3 }, // Retry up to 3 times if the test fails +); +``` + +### test.repeats + +Use the `repeats` option to run a test multiple times regardless of pass/fail status. The test fails if any iteration fails. This is useful for detecting flaky tests or stress testing. Note that `repeats: N` runs the test N+1 times total (1 initial run + N repeats). + +```ts title="example.test.ts" icon="/icons/typescript.svg" +import { test } from "bun:test"; + +test( + "ensure test is stable", + () => { + expect(Math.random()).toBeLessThan(1); + }, + { repeats: 20 }, // Runs 21 times total (1 initial + 20 repeats) +); +``` + +You cannot use both `retry` and `repeats` on the same test. + ### 🧟 Zombie Process Killer When a test times out and processes spawned in the test via `Bun.spawn`, `Bun.spawnSync`, or `node:child_process` are not killed, they will be automatically killed and a message will be logged to the console. This prevents zombie processes from lingering in the background after timed-out tests. From 4450d738fa76b1cccdf02b4376270e5da7027aee Mon Sep 17 00:00:00 2001 From: Michael H Date: Sat, 22 Nov 2025 09:06:19 +1100 Subject: [PATCH 042/212] docs: more consistency + minor updates (#24764) Co-authored-by: RiskyMH --- README.md | 8 +- docs/bundler/css.mdx | 2 +- docs/bundler/executables.mdx | 6 +- docs/bundler/fullstack.mdx | 6 +- docs/bundler/hot-reloading.mdx | 4 +- docs/bundler/html-static.mdx | 7 +- docs/bundler/index.mdx | 33 ++++--- docs/bundler/loaders.mdx | 4 +- docs/bundler/macros.mdx | 2 +- docs/docs.json | 2 +- docs/feedback.mdx | 14 +-- docs/guides/binary/arraybuffer-to-array.mdx | 2 +- docs/guides/binary/arraybuffer-to-blob.mdx | 2 +- docs/guides/binary/arraybuffer-to-buffer.mdx | 2 +- docs/guides/binary/arraybuffer-to-string.mdx | 2 +- .../binary/arraybuffer-to-typedarray.mdx | 2 +- docs/guides/binary/blob-to-arraybuffer.mdx | 2 +- docs/guides/binary/blob-to-dataview.mdx | 2 +- docs/guides/binary/blob-to-stream.mdx | 2 +- docs/guides/binary/blob-to-string.mdx | 2 +- docs/guides/binary/blob-to-typedarray.mdx | 2 +- docs/guides/binary/buffer-to-arraybuffer.mdx | 2 +- docs/guides/binary/buffer-to-blob.mdx | 2 +- .../binary/buffer-to-readablestream.mdx | 2 +- docs/guides/binary/buffer-to-string.mdx | 2 +- docs/guides/binary/buffer-to-typedarray.mdx | 2 +- docs/guides/binary/dataview-to-string.mdx | 2 +- .../binary/typedarray-to-arraybuffer.mdx | 2 +- docs/guides/binary/typedarray-to-blob.mdx | 2 +- docs/guides/binary/typedarray-to-buffer.mdx | 2 +- docs/guides/binary/typedarray-to-dataview.mdx | 2 +- .../binary/typedarray-to-readablestream.mdx | 2 +- docs/guides/binary/typedarray-to-string.mdx | 2 +- docs/guides/deployment/vercel.mdx | 2 - docs/guides/ecosystem/discordjs.mdx | 4 +- docs/guides/ecosystem/express.mdx | 4 +- docs/guides/ecosystem/mongoose.mdx | 2 +- docs/guides/ecosystem/neon-drizzle.mdx | 4 +- .../ecosystem/neon-serverless-postgres.mdx | 4 +- docs/guides/ecosystem/prisma-postgres.mdx | 2 +- docs/guides/ecosystem/prisma.mdx | 2 +- docs/guides/ecosystem/qwik.mdx | 8 +- docs/guides/ecosystem/sentry.mdx | 4 +- docs/guides/ecosystem/sveltekit.mdx | 2 +- docs/guides/ecosystem/tanstack-start.mdx | 1 - docs/guides/ecosystem/upstash.mdx | 2 +- docs/guides/ecosystem/vite.mdx | 2 +- docs/guides/html-rewriter/extract-links.mdx | 4 +- .../html-rewriter/extract-social-meta.mdx | 2 +- docs/guides/http/file-uploads.mdx | 2 +- docs/guides/http/hot.mdx | 2 +- docs/guides/http/server.mdx | 2 +- docs/guides/http/simple.mdx | 2 +- docs/guides/http/stream-file.mdx | 6 +- docs/guides/http/tls.mdx | 2 +- docs/guides/install/add-dev.mdx | 2 +- docs/guides/install/add-git.mdx | 2 +- docs/guides/install/add-optional.mdx | 2 +- docs/guides/install/add-peer.mdx | 2 +- docs/guides/install/add-tarball.mdx | 2 +- docs/guides/install/add.mdx | 2 +- docs/guides/install/azure-artifacts.mdx | 6 +- docs/guides/install/custom-registry.mdx | 4 +- docs/guides/install/git-diff-bun-lockfile.mdx | 3 +- docs/guides/install/npm-alias.mdx | 2 +- docs/guides/install/registry-scope.mdx | 6 +- docs/guides/install/trusted.mdx | 2 +- docs/guides/install/workspaces.mdx | 2 +- docs/guides/install/yarnlock.mdx | 7 +- docs/guides/process/ctrl-c.mdx | 2 +- docs/guides/process/ipc.mdx | 4 +- docs/guides/process/nanoseconds.mdx | 2 +- docs/guides/process/os-signals.mdx | 2 +- docs/guides/process/spawn-stderr.mdx | 4 +- docs/guides/process/spawn-stdout.mdx | 4 +- docs/guides/process/spawn.mdx | 4 +- docs/guides/process/stdin.mdx | 2 +- docs/guides/read-file/arraybuffer.mdx | 4 +- docs/guides/read-file/buffer.mdx | 2 +- docs/guides/read-file/exists.mdx | 2 +- docs/guides/read-file/mime.mdx | 2 +- docs/guides/read-file/stream.mdx | 2 +- docs/guides/read-file/uint8array.mdx | 2 +- docs/guides/read-file/watch.mdx | 2 +- docs/guides/runtime/cicd.mdx | 2 +- docs/guides/runtime/delete-directory.mdx | 2 +- docs/guides/runtime/delete-file.mdx | 2 +- docs/guides/runtime/import-json.mdx | 2 +- docs/guides/runtime/import-toml.mdx | 2 +- docs/guides/runtime/import-yaml.mdx | 2 +- docs/guides/runtime/read-env.mdx | 2 +- docs/guides/runtime/set-env.mdx | 4 +- docs/guides/runtime/shell.mdx | 2 +- docs/guides/runtime/tsconfig-paths.mdx | 2 +- docs/guides/runtime/typescript.mdx | 2 +- docs/guides/runtime/vscode-debugger.mdx | 3 +- docs/guides/runtime/web-debugger.mdx | 2 +- docs/guides/streams/to-array.mdx | 2 +- docs/guides/streams/to-arraybuffer.mdx | 2 +- docs/guides/streams/to-blob.mdx | 2 +- docs/guides/streams/to-buffer.mdx | 2 +- docs/guides/streams/to-json.mdx | 2 +- docs/guides/streams/to-string.mdx | 2 +- docs/guides/streams/to-typedarray.mdx | 2 +- docs/guides/test/bail.mdx | 2 +- docs/guides/test/concurrent-test-glob.mdx | 7 +- docs/guides/test/coverage-threshold.mdx | 2 +- docs/guides/test/coverage.mdx | 2 +- docs/guides/test/happy-dom.mdx | 2 +- docs/guides/test/migrate-from-jest.mdx | 10 +- docs/guides/test/mock-clock.mdx | 4 +- docs/guides/test/mock-functions.mdx | 2 +- docs/guides/test/rerun-each.mdx | 2 +- docs/guides/test/run-tests.mdx | 4 +- docs/guides/test/skip-tests.mdx | 2 +- docs/guides/test/snapshot.mdx | 4 +- docs/guides/test/spy-on.mdx | 2 +- docs/guides/test/svelte-test.mdx | 6 +- docs/guides/test/testing-library.mdx | 6 +- docs/guides/test/timeout.mdx | 2 +- docs/guides/test/todo-tests.mdx | 2 +- docs/guides/test/update-snapshots.mdx | 2 +- docs/guides/test/watch-mode.mdx | 2 +- docs/guides/util/base64.mdx | 2 +- docs/guides/util/deep-equals.mdx | 6 +- docs/guides/util/deflate.mdx | 2 +- docs/guides/util/entrypoint.mdx | 4 +- docs/guides/util/escape-html.mdx | 2 +- docs/guides/util/file-url-to-path.mdx | 2 +- docs/guides/util/gzip.mdx | 2 +- docs/guides/util/hash-a-password.mdx | 2 +- docs/guides/util/import-meta-dir.mdx | 4 +- docs/guides/util/import-meta-file.mdx | 4 +- docs/guides/util/import-meta-path.mdx | 4 +- docs/guides/util/javascript-uuid.mdx | 4 +- docs/guides/util/main.mdx | 2 +- docs/guides/util/path-to-file-url.mdx | 2 +- docs/guides/util/sleep.mdx | 2 +- docs/guides/util/version.mdx | 2 +- .../util/which-path-to-executable-bin.mdx | 2 +- docs/guides/websocket/context.mdx | 2 +- docs/guides/websocket/simple.mdx | 2 +- docs/guides/write-file/basic.mdx | 4 +- docs/guides/write-file/blob.mdx | 4 +- docs/guides/write-file/cat.mdx | 4 +- docs/guides/write-file/file-cp.mdx | 4 +- docs/guides/write-file/filesink.mdx | 2 +- docs/guides/write-file/response.mdx | 4 +- docs/guides/write-file/stdout.mdx | 4 +- docs/guides/write-file/stream.mdx | 4 +- docs/guides/write-file/unlink.mdx | 2 +- docs/index.mdx | 2 +- docs/installation.mdx | 2 +- docs/normalize-internal-links.js | 1 - docs/pm/bunx.mdx | 4 +- docs/pm/cli/install.mdx | 2 +- docs/pm/cli/link.mdx | 4 +- docs/pm/cli/outdated.mdx | 6 +- docs/pm/workspaces.mdx | 3 +- docs/project/building-windows.mdx | 2 +- docs/project/license.mdx | 2 +- docs/quickstart.mdx | 4 +- docs/runtime/bunfig.mdx | 28 +++++- docs/runtime/c-compiler.mdx | 4 +- docs/runtime/child-process.mdx | 2 +- docs/runtime/cookies.mdx | 38 ++++---- docs/runtime/debugger.mdx | 2 +- docs/runtime/environment-variables.mdx | 12 +-- docs/runtime/http/routing.mdx | 2 +- docs/runtime/http/server.mdx | 10 +- docs/runtime/http/websockets.mdx | 2 +- docs/runtime/index.mdx | 4 +- docs/runtime/module-resolution.mdx | 4 +- docs/runtime/networking/fetch.mdx | 2 +- docs/runtime/nodejs-compat.mdx | 2 +- docs/runtime/s3.mdx | 6 +- docs/runtime/secrets.mdx | 17 ++-- docs/runtime/sql.mdx | 20 ++-- docs/runtime/sqlite.mdx | 19 +++- docs/runtime/templating/create.mdx | 8 +- docs/runtime/transpiler.mdx | 2 +- docs/runtime/utils.mdx | 4 +- docs/runtime/watch-mode.mdx | 2 +- docs/runtime/workers.mdx | 22 +---- docs/snippets/cli/publish.mdx | 4 +- docs/snippets/guides.jsx | 4 + docs/snippets/product-card.mdx | 32 ------- docs/snippets/product-tiles.mdx | 94 ------------------- docs/test/index.mdx | 2 +- docs/test/snapshots.mdx | 6 +- docs/typescript.mdx | 4 +- packages/bun-release/src/npm/install.ts | 2 +- packages/bun-types/.gitignore | 3 +- packages/bun-types/package.json | 3 +- packages/bun-types/scripts/build.ts | 30 +++++- src/bun.js/bindings/v8/CLAUDE.md | 6 +- src/cli.zig | 2 +- src/cli/install.sh | 2 +- src/cli/upgrade_command.zig | 2 +- src/init/rule.md | 6 +- .../PackageManager/CommandLineArguments.zig | 2 +- src/install/windows-shim/bun_shim_impl.zig | 2 +- .../components/Footer.jsx | 6 +- .../react-spa-no-tailwind/components/Hero.jsx | 2 +- test/cli/create/tailwind.tsx | 2 +- 205 files changed, 429 insertions(+), 504 deletions(-) delete mode 100644 docs/snippets/product-card.mdx delete mode 100644 docs/snippets/product-tiles.mdx diff --git a/README.md b/README.md index 3c845722d1..82c0626611 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ Bun supports Linux (x64 & arm64), macOS (x64 & Apple Silicon) and Windows (x64). curl -fsSL https://bun.com/install | bash # on windows -powershell -c "irm bun.com/install.ps1 | iex" +powershell -c "irm bun.sh/install.ps1 | iex" # with npm npm install -g bun @@ -104,13 +104,13 @@ bun upgrade --canary - [File types (Loaders)](https://bun.com/docs/runtime/loaders) - [TypeScript](https://bun.com/docs/runtime/typescript) - [JSX](https://bun.com/docs/runtime/jsx) - - [Environment variables](https://bun.com/docs/runtime/env) + - [Environment variables](https://bun.com/docs/runtime/environment-variables) - [Bun APIs](https://bun.com/docs/runtime/bun-apis) - [Web APIs](https://bun.com/docs/runtime/web-apis) - - [Node.js compatibility](https://bun.com/docs/runtime/nodejs-apis) + - [Node.js compatibility](https://bun.com/docs/runtime/nodejs-compat) - [Single-file executable](https://bun.com/docs/bundler/executables) - [Plugins](https://bun.com/docs/runtime/plugins) - - [Watch mode / Hot Reloading](https://bun.com/docs/runtime/hot) + - [Watch mode / Hot Reloading](https://bun.com/docs/runtime/watch-mode) - [Module resolution](https://bun.com/docs/runtime/modules) - [Auto-install](https://bun.com/docs/runtime/autoimport) - [bunfig.toml](https://bun.com/docs/runtime/bunfig) diff --git a/docs/bundler/css.mdx b/docs/bundler/css.mdx index 730332f173..7a73280b79 100644 --- a/docs/bundler/css.mdx +++ b/docs/bundler/css.mdx @@ -72,7 +72,7 @@ Bun's CSS bundler automatically converts this nested syntax into traditional fla You can also nest media queries and other at-rules inside selectors, eliminating the need to repeat selector patterns: -```css title="styles.css" icon="file-code" +```scss title="styles.css" icon="file-code" .responsive-element { display: block; diff --git a/docs/bundler/executables.mdx b/docs/bundler/executables.mdx index fefa2769e6..71b3386a4b 100644 --- a/docs/bundler/executables.mdx +++ b/docs/bundler/executables.mdx @@ -118,7 +118,7 @@ These constants are embedded directly into your compiled binary at build time, p For comprehensive examples and advanced patterns, see the [Build-time constants - guide](https://bun.com/guides/runtime/build-time-constants). + guide](/guides/runtime/build-time-constants). --- @@ -288,12 +288,12 @@ console.log(`Server running at http://localhost:${server.port}`);

    Hello World

    - + ``` -```ts app.js icon="file-code" +```ts app.ts icon="file-code" console.log("Hello from the client!"); ``` diff --git a/docs/bundler/fullstack.mdx b/docs/bundler/fullstack.mdx index 937d41d39f..6b108d9866 100644 --- a/docs/bundler/fullstack.mdx +++ b/docs/bundler/fullstack.mdx @@ -632,7 +632,7 @@ const server = serve({ console.log(`šŸš€ Server running on ${server.url}`); ``` -```html title="public/index.html" +```html title="public/index.html" icon="file-code" @@ -757,7 +757,7 @@ export function App() { } ``` -```css title="src/styles.css" +```css title="src/styles.css" icon="file-code" * { margin: 0; padding: 0; @@ -999,7 +999,7 @@ CMD ["bun", "index.js"] ### Environment Variables -```bash title=".env.production" icon="file-code" +```ini title=".env.production" icon="file-code" NODE_ENV=production PORT=3000 DATABASE_URL=postgresql://user:pass@localhost:5432/myapp diff --git a/docs/bundler/hot-reloading.mdx b/docs/bundler/hot-reloading.mdx index 3e82484220..0204191d50 100644 --- a/docs/bundler/hot-reloading.mdx +++ b/docs/bundler/hot-reloading.mdx @@ -9,7 +9,7 @@ Hot Module Replacement (HMR) allows you to update modules in a running applicati ## `import.meta.hot` API Reference -Bun implements a client-side HMR API modeled after [Vite's `import.meta.hot` API](https://vitejs.dev/guide/api-hmr.html). It can be checked for with `if (import.meta.hot)`, tree-shaking it in production. +Bun implements a client-side HMR API modeled after [Vite's `import.meta.hot` API](https://vite.dev/guide/api-hmr). It can be checked for with `if (import.meta.hot)`, tree-shaking it in production. ```ts title="index.ts" icon="/icons/typescript.svg" if (import.meta.hot) { @@ -144,7 +144,7 @@ Indicates that multiple dependencies' modules can be accepted. This variant acce `import.meta.hot.data` maintains state between module instances during hot replacement, enabling data transfer from previous to new versions. When `import.meta.hot.data` is written into, Bun will also mark this module as capable of self-accepting (equivalent of calling `import.meta.hot.accept()`). -```jsx title="index.ts" icon="/icons/typescript.svg" +```tsx title="index.tsx" icon="/icons/typescript.svg" import { createRoot } from "react-dom/client"; import { App } from "./app"; diff --git a/docs/bundler/html-static.mdx b/docs/bundler/html-static.mdx index 135b7f41ac..5ae8d10653 100644 --- a/docs/bundler/html-static.mdx +++ b/docs/bundler/html-static.mdx @@ -164,7 +164,7 @@ For example: } ``` -```css abc.css +```css abc.css icon="file-code" body { background-color: red; } @@ -174,7 +174,7 @@ body { This outputs: -```css +```css styles.css icon="file-code" body { background-color: red; } @@ -385,7 +385,8 @@ All paths are resolved relative to your HTML file, making it easy to organize yo - Need more configuration options for things like asset handling - Need a way to configure CORS, headers, etc. -If you want to submit a PR, most of the code is [here](https://github.com/oven-sh/bun/blob/main/src/bun.js/api/bun/html-rewriter.ts). You could even copy paste that file into your project and use it as a starting point. +{/* todo: find the correct link to link to as this 404's and there isn't any similar files */} +{/* If you want to submit a PR, most of the code is [here](https://github.com/oven-sh/bun/blob/main/src/bun.js/api/bun/html-rewriter.ts). You could even copy paste that file into your project and use it as a starting point. */} diff --git a/docs/bundler/index.mdx b/docs/bundler/index.mdx index ce0736b746..5a6743318c 100644 --- a/docs/bundler/index.mdx +++ b/docs/bundler/index.mdx @@ -106,7 +106,7 @@ For each file specified in `entrypoints`, Bun will generate a new bundle. This b The contents of `out/index.js` will look something like this: -```ts title="out/index.js" icon="/icons/javascript.svg" +```js title="out/index.js" icon="/icons/javascript.svg" // out/index.js // ... // ~20k lines of code @@ -527,7 +527,7 @@ Injects environment variables into the bundled output by converting `process.env For the input below: -```ts title="input.js" icon="/icons/javascript.svg" +```js title="input.js" icon="/icons/javascript.svg" // input.js console.log(process.env.FOO); console.log(process.env.BAZ); @@ -535,7 +535,7 @@ console.log(process.env.BAZ); The generated bundle will contain the following code: -```ts title="output.js" icon="/icons/javascript.svg" +```js title="output.js" icon="/icons/javascript.svg" // output.js console.log("bar"); console.log("123"); @@ -580,7 +580,7 @@ console.log(process.env.BAZ); The generated bundle will contain the following code: -```ts title="output.js" icon="/icons/javascript.svg" +```js title="output.js" icon="/icons/javascript.svg" console.log(process.env.FOO); console.log("https://acme.com"); console.log(process.env.BAZ); @@ -722,7 +722,7 @@ Normally, bundling `index.tsx` would generate a bundle containing the entire sou The generated bundle will look something like this: -```ts title="out/index.js" icon="/icons/javascript.svg" +```js title="out/index.js" icon="/icons/javascript.svg" import { z } from "zod"; // ... @@ -1026,7 +1026,7 @@ Setting `publicPath` will prefix all file paths with the specified value. The output file would now look something like this. -```ts title="out/index.js" icon="/icons/javascript.svg" +```js title="out/index.js" icon="/icons/javascript.svg" var logo = "https://cdn.example.com/logo-a7305bdef.svg"; ``` @@ -1356,10 +1356,12 @@ interface BuildConfig { * JSX configuration object for controlling JSX transform behavior */ jsx?: { + runtime?: "automatic" | "classic"; + importSource?: string; factory?: string; fragment?: string; - importSource?: string; - runtime?: "automatic" | "classic"; + sideEffects?: boolean; + development?: boolean; }; naming?: | string @@ -1443,13 +1445,20 @@ interface BuildConfig { drop?: string[]; /** - * When set to `true`, the returned promise rejects with an AggregateError when a build failure happens. - * When set to `false`, the `success` property of the returned object will be `false` when a build failure happens. + * - When set to `true`, the returned promise rejects with an AggregateError when a build failure happens. + * - When set to `false`, returns a {@link BuildOutput} with `{success: false}` * - * This defaults to `false` in Bun 1.1 and will change to `true` in Bun 1.2 - * as most usage of `Bun.build` forgets to check for errors. + * @default true */ throw?: boolean; + + /** + * Custom tsconfig.json file path to use for path resolution. + * Equivalent to `--tsconfig-override` in the CLI. + */ + tsconfig?: string; + + outdir?: string; } interface BuildOutput { diff --git a/docs/bundler/loaders.mdx b/docs/bundler/loaders.mdx index bb55a49675..daa612dc7c 100644 --- a/docs/bundler/loaders.mdx +++ b/docs/bundler/loaders.mdx @@ -312,7 +312,7 @@ The `html` loader processes HTML files and bundles any referenced assets. It wil For example, given this HTML file: -```html title="src/index.html" +```html title="src/index.html" icon="file-code" @@ -325,7 +325,7 @@ For example, given this HTML file: It will output a new HTML file with the bundled assets: -```html title="dist/index.html" +```html title="dist/index.html" icon="file-code" diff --git a/docs/bundler/macros.mdx b/docs/bundler/macros.mdx index e4cfffeb37..23dd41c802 100644 --- a/docs/bundler/macros.mdx +++ b/docs/bundler/macros.mdx @@ -87,7 +87,7 @@ macro(); When shipping a library containing a macro to npm or another package registry, use the `"macro"` export condition to provide a special version of your package exclusively for the macro environment. -```json title="package.json" icon="file-code" +```json title="package.json" icon="file-json" { "name": "my-package", "exports": { diff --git a/docs/docs.json b/docs/docs.json index 2ad4eae8a2..4bec7db641 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -456,7 +456,6 @@ "pages": [ "/guides/test/run-tests", "/guides/test/watch-mode", - "/guides/test/concurrent-test-glob", "/guides/test/migrate-from-jest", "/guides/test/mock-functions", "/guides/test/spy-on", @@ -465,6 +464,7 @@ "/guides/test/update-snapshots", "/guides/test/coverage", "/guides/test/coverage-threshold", + "/guides/test/concurrent-test-glob", "/guides/test/skip-tests", "/guides/test/todo-tests", "/guides/test/timeout", diff --git a/docs/feedback.mdx b/docs/feedback.mdx index 710cb89b7a..fdb2f298b6 100644 --- a/docs/feedback.mdx +++ b/docs/feedback.mdx @@ -4,13 +4,9 @@ description: Share feedback, bug reports, and feature requests mode: center --- -import Feedback from "/snippets/cli/feedback.mdx"; - Whether you've found a bug, have a performance issue, or just want to suggest an improvement, here's how you can open a helpful issue: - - For general questions, please join our [Discord](https://discord.com/invite/CXdq2DP29u). - +For general questions, please join our [Discord](https://bun.com/discord). ## Reporting Issues @@ -56,9 +52,7 @@ Whether you've found a bug, have a performance issue, or just want to suggest an - For MacOS and Linux: copy the output of `uname -mprs` - For Windows: copy the output of this command in the powershell console: - ```powershell - "$([Environment]::OSVersion | ForEach-Object VersionString) $(if ([Environment]::Is64BitOperatingSystem) { "x64" } else { "x86" })" - ``` + `"$([Environment]::OSVersion | ForEach-Object VersionString) $(if ([Environment]::Is64BitOperatingSystem) { "x64" } else { "x86" })"` @@ -79,7 +73,3 @@ echo "please document X" | bun feedback --email you@example.com ``` You can provide feedback as text arguments, file paths, or piped input. - ---- - - diff --git a/docs/guides/binary/arraybuffer-to-array.mdx b/docs/guides/binary/arraybuffer-to-array.mdx index 6141431fae..bce60089f6 100644 --- a/docs/guides/binary/arraybuffer-to-array.mdx +++ b/docs/guides/binary/arraybuffer-to-array.mdx @@ -26,4 +26,4 @@ const regularArr = Array.from(uintArr); --- -See [Docs > API > Binary Data](https://bun.com/docs/api/binary-data#conversion) for complete documentation on manipulating binary data with Bun. +See [Docs > API > Binary Data](/runtime/binary-data#conversion) for complete documentation on manipulating binary data with Bun. diff --git a/docs/guides/binary/arraybuffer-to-blob.mdx b/docs/guides/binary/arraybuffer-to-blob.mdx index d3b4bef160..74c59f3dae 100644 --- a/docs/guides/binary/arraybuffer-to-blob.mdx +++ b/docs/guides/binary/arraybuffer-to-blob.mdx @@ -23,4 +23,4 @@ blob.type; // => "application/octet-stream" --- -See [Docs > API > Binary Data](https://bun.com/docs/api/binary-data#conversion) for complete documentation on manipulating binary data with Bun. +See [Docs > API > Binary Data](/runtime/binary-data#conversion) for complete documentation on manipulating binary data with Bun. diff --git a/docs/guides/binary/arraybuffer-to-buffer.mdx b/docs/guides/binary/arraybuffer-to-buffer.mdx index ba448c7456..b2c6f282a4 100644 --- a/docs/guides/binary/arraybuffer-to-buffer.mdx +++ b/docs/guides/binary/arraybuffer-to-buffer.mdx @@ -24,4 +24,4 @@ const nodeBuffer = Buffer.from(arrBuffer, 0, 16); // view first 16 bytes --- -See [Docs > API > Binary Data](https://bun.com/docs/api/binary-data#conversion) for complete documentation on manipulating binary data with Bun. +See [Docs > API > Binary Data](/runtime/binary-data#conversion) for complete documentation on manipulating binary data with Bun. diff --git a/docs/guides/binary/arraybuffer-to-string.mdx b/docs/guides/binary/arraybuffer-to-string.mdx index 67d8559f93..d488baa515 100644 --- a/docs/guides/binary/arraybuffer-to-string.mdx +++ b/docs/guides/binary/arraybuffer-to-string.mdx @@ -14,4 +14,4 @@ const str = decoder.decode(buf); --- -See [Docs > API > Binary Data](https://bun.com/docs/api/binary-data#conversion) for complete documentation on manipulating binary data with Bun. +See [Docs > API > Binary Data](/runtime/binary-data#conversion) for complete documentation on manipulating binary data with Bun. diff --git a/docs/guides/binary/arraybuffer-to-typedarray.mdx b/docs/guides/binary/arraybuffer-to-typedarray.mdx index 194c26c05b..9293568b5e 100644 --- a/docs/guides/binary/arraybuffer-to-typedarray.mdx +++ b/docs/guides/binary/arraybuffer-to-typedarray.mdx @@ -38,4 +38,4 @@ const arr = new Uint8Array(buffer, 0, 16); // view first 16 bytes --- -See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities. +See [Docs > API > Utils](/runtime/utils) for more useful utilities. diff --git a/docs/guides/binary/blob-to-arraybuffer.mdx b/docs/guides/binary/blob-to-arraybuffer.mdx index 6edfa274c1..d4e5edfaba 100644 --- a/docs/guides/binary/blob-to-arraybuffer.mdx +++ b/docs/guides/binary/blob-to-arraybuffer.mdx @@ -13,4 +13,4 @@ const buf = await blob.arrayBuffer(); --- -See [Docs > API > Binary Data](https://bun.com/docs/api/binary-data#conversion) for complete documentation on manipulating binary data with Bun. +See [Docs > API > Binary Data](/runtime/binary-data#conversion) for complete documentation on manipulating binary data with Bun. diff --git a/docs/guides/binary/blob-to-dataview.mdx b/docs/guides/binary/blob-to-dataview.mdx index 9b9a77d281..0db0ff26c4 100644 --- a/docs/guides/binary/blob-to-dataview.mdx +++ b/docs/guides/binary/blob-to-dataview.mdx @@ -13,4 +13,4 @@ const arr = new DataView(await blob.arrayBuffer()); --- -See [Docs > API > Binary Data](https://bun.com/docs/api/binary-data#conversion) for complete documentation on manipulating binary data with Bun. +See [Docs > API > Binary Data](/runtime/binary-data#conversion) for complete documentation on manipulating binary data with Bun. diff --git a/docs/guides/binary/blob-to-stream.mdx b/docs/guides/binary/blob-to-stream.mdx index bd433d7fb2..1a746b83b8 100644 --- a/docs/guides/binary/blob-to-stream.mdx +++ b/docs/guides/binary/blob-to-stream.mdx @@ -13,4 +13,4 @@ const stream = await blob.stream(); --- -See [Docs > API > Binary Data](https://bun.com/docs/api/binary-data#conversion) for complete documentation on manipulating binary data with Bun. +See [Docs > API > Binary Data](/runtime/binary-data#conversion) for complete documentation on manipulating binary data with Bun. diff --git a/docs/guides/binary/blob-to-string.mdx b/docs/guides/binary/blob-to-string.mdx index af1bb71bc3..39e1898e41 100644 --- a/docs/guides/binary/blob-to-string.mdx +++ b/docs/guides/binary/blob-to-string.mdx @@ -14,4 +14,4 @@ const str = await blob.text(); --- -See [Docs > API > Binary Data](https://bun.com/docs/api/binary-data#conversion) for complete documentation on manipulating binary data with Bun. +See [Docs > API > Binary Data](/runtime/binary-data#conversion) for complete documentation on manipulating binary data with Bun. diff --git a/docs/guides/binary/blob-to-typedarray.mdx b/docs/guides/binary/blob-to-typedarray.mdx index 80bfb2f4c4..8453e7cb9e 100644 --- a/docs/guides/binary/blob-to-typedarray.mdx +++ b/docs/guides/binary/blob-to-typedarray.mdx @@ -13,4 +13,4 @@ const arr = new Uint8Array(await blob.arrayBuffer()); --- -See [Docs > API > Binary Data](https://bun.com/docs/api/binary-data#conversion) for complete documentation on manipulating binary data with Bun. +See [Docs > API > Binary Data](/runtime/binary-data#conversion) for complete documentation on manipulating binary data with Bun. diff --git a/docs/guides/binary/buffer-to-arraybuffer.mdx b/docs/guides/binary/buffer-to-arraybuffer.mdx index 57c5c13608..549e88f8e8 100644 --- a/docs/guides/binary/buffer-to-arraybuffer.mdx +++ b/docs/guides/binary/buffer-to-arraybuffer.mdx @@ -13,4 +13,4 @@ const arrBuf = nodeBuf.buffer; --- -See [Docs > API > Binary Data](https://bun.com/docs/api/binary-data#conversion) for complete documentation on manipulating binary data with Bun. +See [Docs > API > Binary Data](/runtime/binary-data#conversion) for complete documentation on manipulating binary data with Bun. diff --git a/docs/guides/binary/buffer-to-blob.mdx b/docs/guides/binary/buffer-to-blob.mdx index 325bb457f7..f108221118 100644 --- a/docs/guides/binary/buffer-to-blob.mdx +++ b/docs/guides/binary/buffer-to-blob.mdx @@ -13,4 +13,4 @@ const blob = new Blob([buf]); --- -See [Docs > API > Binary Data](https://bun.com/docs/api/binary-data#conversion) for complete documentation on manipulating binary data with Bun. +See [Docs > API > Binary Data](/runtime/binary-data#conversion) for complete documentation on manipulating binary data with Bun. diff --git a/docs/guides/binary/buffer-to-readablestream.mdx b/docs/guides/binary/buffer-to-readablestream.mdx index 6456dd9792..5765fcf965 100644 --- a/docs/guides/binary/buffer-to-readablestream.mdx +++ b/docs/guides/binary/buffer-to-readablestream.mdx @@ -40,4 +40,4 @@ const stream = blob.stream(1024); --- -See [Docs > API > Binary Data](https://bun.com/docs/api/binary-data#conversion) for complete documentation on manipulating binary data with Bun. +See [Docs > API > Binary Data](/runtime/binary-data#conversion) for complete documentation on manipulating binary data with Bun. diff --git a/docs/guides/binary/buffer-to-string.mdx b/docs/guides/binary/buffer-to-string.mdx index cf761d54a4..32ba943f7e 100644 --- a/docs/guides/binary/buffer-to-string.mdx +++ b/docs/guides/binary/buffer-to-string.mdx @@ -24,4 +24,4 @@ const str = buf.toString("utf8", 0, 5); --- -See [Docs > API > Binary Data](https://bun.com/docs/api/binary-data#conversion) for complete documentation on manipulating binary data with Bun. +See [Docs > API > Binary Data](/runtime/binary-data#conversion) for complete documentation on manipulating binary data with Bun. diff --git a/docs/guides/binary/buffer-to-typedarray.mdx b/docs/guides/binary/buffer-to-typedarray.mdx index 6a9678c2cb..2d34841092 100644 --- a/docs/guides/binary/buffer-to-typedarray.mdx +++ b/docs/guides/binary/buffer-to-typedarray.mdx @@ -13,4 +13,4 @@ buf instanceof Uint8Array; // => true --- -See [Docs > API > Binary Data](https://bun.com/docs/api/binary-data#conversion) for complete documentation on manipulating binary data with Bun. +See [Docs > API > Binary Data](/runtime/binary-data#conversion) for complete documentation on manipulating binary data with Bun. diff --git a/docs/guides/binary/dataview-to-string.mdx b/docs/guides/binary/dataview-to-string.mdx index a1147cf2d6..db2c60051c 100644 --- a/docs/guides/binary/dataview-to-string.mdx +++ b/docs/guides/binary/dataview-to-string.mdx @@ -14,4 +14,4 @@ const str = decoder.decode(dv); --- -See [Docs > API > Binary Data](https://bun.com/docs/api/binary-data#conversion) for complete documentation on manipulating binary data with Bun. +See [Docs > API > Binary Data](/runtime/binary-data#conversion) for complete documentation on manipulating binary data with Bun. diff --git a/docs/guides/binary/typedarray-to-arraybuffer.mdx b/docs/guides/binary/typedarray-to-arraybuffer.mdx index a746d2007f..1be382e5b5 100644 --- a/docs/guides/binary/typedarray-to-arraybuffer.mdx +++ b/docs/guides/binary/typedarray-to-arraybuffer.mdx @@ -24,4 +24,4 @@ arr.byteLength; // => 32 --- -See [Docs > API > Binary Data](https://bun.com/docs/api/binary-data#conversion) for complete documentation on manipulating binary data with Bun. +See [Docs > API > Binary Data](/runtime/binary-data#conversion) for complete documentation on manipulating binary data with Bun. diff --git a/docs/guides/binary/typedarray-to-blob.mdx b/docs/guides/binary/typedarray-to-blob.mdx index 5ac00a6779..afa9c33b1c 100644 --- a/docs/guides/binary/typedarray-to-blob.mdx +++ b/docs/guides/binary/typedarray-to-blob.mdx @@ -15,4 +15,4 @@ console.log(await blob.text()); --- -See [Docs > API > Binary Data](https://bun.com/docs/api/binary-data#conversion) for complete documentation on manipulating binary data with Bun. +See [Docs > API > Binary Data](/runtime/binary-data#conversion) for complete documentation on manipulating binary data with Bun. diff --git a/docs/guides/binary/typedarray-to-buffer.mdx b/docs/guides/binary/typedarray-to-buffer.mdx index daa782a159..e9bdd2054e 100644 --- a/docs/guides/binary/typedarray-to-buffer.mdx +++ b/docs/guides/binary/typedarray-to-buffer.mdx @@ -13,4 +13,4 @@ const buf = Buffer.from(arr); --- -See [Docs > API > Binary Data](https://bun.com/docs/api/binary-data#conversion) for complete documentation on manipulating binary data with Bun. +See [Docs > API > Binary Data](/runtime/binary-data#conversion) for complete documentation on manipulating binary data with Bun. diff --git a/docs/guides/binary/typedarray-to-dataview.mdx b/docs/guides/binary/typedarray-to-dataview.mdx index 3a7603e74b..5822d7ef19 100644 --- a/docs/guides/binary/typedarray-to-dataview.mdx +++ b/docs/guides/binary/typedarray-to-dataview.mdx @@ -13,4 +13,4 @@ const dv = new DataView(arr.buffer, arr.byteOffset, arr.byteLength); --- -See [Docs > API > Binary Data](https://bun.com/docs/api/binary-data#conversion) for complete documentation on manipulating binary data with Bun. +See [Docs > API > Binary Data](/runtime/binary-data#conversion) for complete documentation on manipulating binary data with Bun. diff --git a/docs/guides/binary/typedarray-to-readablestream.mdx b/docs/guides/binary/typedarray-to-readablestream.mdx index dec46b02d9..4871ab1b52 100644 --- a/docs/guides/binary/typedarray-to-readablestream.mdx +++ b/docs/guides/binary/typedarray-to-readablestream.mdx @@ -40,4 +40,4 @@ const stream = blob.stream(1024); --- -See [Docs > API > Binary Data](https://bun.com/docs/api/binary-data#conversion) for complete documentation on manipulating binary data with Bun. +See [Docs > API > Binary Data](/runtime/binary-data#conversion) for complete documentation on manipulating binary data with Bun. diff --git a/docs/guides/binary/typedarray-to-string.mdx b/docs/guides/binary/typedarray-to-string.mdx index 5e6e5726a0..86ab4c4b50 100644 --- a/docs/guides/binary/typedarray-to-string.mdx +++ b/docs/guides/binary/typedarray-to-string.mdx @@ -15,4 +15,4 @@ const str = decoder.decode(arr); --- -See [Docs > API > Binary Data](https://bun.com/docs/api/binary-data#conversion) for complete documentation on manipulating binary data with Bun. +See [Docs > API > Binary Data](/runtime/binary-data#conversion) for complete documentation on manipulating binary data with Bun. diff --git a/docs/guides/deployment/vercel.mdx b/docs/guides/deployment/vercel.mdx index ff4ea58202..8fd052b6ff 100644 --- a/docs/guides/deployment/vercel.mdx +++ b/docs/guides/deployment/vercel.mdx @@ -4,8 +4,6 @@ sidebarTitle: Deploy on Vercel mode: center --- -import { ProductCard } from "/snippets/product-card.mdx"; - [Vercel](https://vercel.com/) is a cloud platform that lets you build, deploy, and scale your apps. diff --git a/docs/guides/ecosystem/discordjs.mdx b/docs/guides/ecosystem/discordjs.mdx index 7ab36e2727..9e5869fa18 100644 --- a/docs/guides/ecosystem/discordjs.mdx +++ b/docs/guides/ecosystem/discordjs.mdx @@ -22,7 +22,7 @@ bun add discord.js --- -Before we go further, we need to go to the [Discord developer portal](https://discord.com/developers/applications), login/signup, create a new _Application_, then create a new _Bot_ within that application. Follow the [official guide](https://discordjs.guide/preparations/setting-up-a-bot-application.html#creating-your-bot) for step-by-step instructions. +Before we go further, we need to go to the [Discord developer portal](https://discord.com/developers/applications), login/signup, create a new _Application_, then create a new _Bot_ within that application. Follow the [official guide](https://discordjs.guide/legacy/preparations/app-setup#creating-your-bot) for step-by-step instructions. --- @@ -30,7 +30,7 @@ Once complete, you'll be presented with your bot's _private key_. Let's add this This is an example token that has already been invalidated. -```txt .env.local icon="settings" +```ini .env.local icon="settings" DISCORD_TOKEN=NzkyNzE1NDU0MTk2MDg4ODQy.X-hvzA.Ovy4MCQywSkoMRRclStW4xAYK7I ``` diff --git a/docs/guides/ecosystem/express.mdx b/docs/guides/ecosystem/express.mdx index e61fe1fbf3..0257f030d6 100644 --- a/docs/guides/ecosystem/express.mdx +++ b/docs/guides/ecosystem/express.mdx @@ -7,8 +7,8 @@ mode: center Express and other major Node.js HTTP libraries should work out of the box. Bun implements the [`node:http`](https://nodejs.org/api/http.html) and [`node:https`](https://nodejs.org/api/https.html) modules that these libraries rely on. - Refer to the [Runtime > Node.js APIs](https://bun.com/docs/runtime/nodejs-apis#node-http) page for more detailed - compatibility information. + Refer to the [Runtime > Node.js APIs](/runtime/nodejs-compat#node-http) page for more detailed compatibility + information. ```sh terminal icon="terminal" diff --git a/docs/guides/ecosystem/mongoose.mdx b/docs/guides/ecosystem/mongoose.mdx index 3555838789..01d3d2fb83 100644 --- a/docs/guides/ecosystem/mongoose.mdx +++ b/docs/guides/ecosystem/mongoose.mdx @@ -89,4 +89,4 @@ Moo! --- -This is a simple introduction to using Mongoose with TypeScript and Bun. As you build your application, refer to the official [MongoDB](https://docs.mongodb.com/) and [Mongoose](https://mongoosejs.com/docs/) sites for complete documentation. +This is a simple introduction to using Mongoose with TypeScript and Bun. As you build your application, refer to the official [MongoDB](https://www.mongodb.com/docs) and [Mongoose](https://mongoosejs.com/docs/) sites for complete documentation. diff --git a/docs/guides/ecosystem/neon-drizzle.mdx b/docs/guides/ecosystem/neon-drizzle.mdx index 5cef85e7f6..f33f7d3b94 100644 --- a/docs/guides/ecosystem/neon-drizzle.mdx +++ b/docs/guides/ecosystem/neon-drizzle.mdx @@ -20,7 +20,7 @@ bun add -D drizzle-kit Create a `.env.local` file and add your [Neon Postgres connection string](https://neon.tech/docs/connect/connect-from-any-app) to it. -```txt .env.local icon="settings" +```ini .env.local icon="settings" DATABASE_URL=postgresql://usertitle:password@ep-adj-noun-guid.us-east-1.aws.neon.tech/neondb?sslmode=require ``` @@ -33,7 +33,7 @@ import { neon } from "@neondatabase/serverless"; import { drizzle } from "drizzle-orm/neon-http"; // Bun automatically loads the DATABASE_URL from .env.local -// Refer to: https://bun.com/docs/runtime/env for more information +// Refer to: https://bun.com/docs/runtime/environment-variables for more information const sql = neon(process.env.DATABASE_URL!); export const db = drizzle(sql); diff --git a/docs/guides/ecosystem/neon-serverless-postgres.mdx b/docs/guides/ecosystem/neon-serverless-postgres.mdx index 84cd4d870e..a081f37f6d 100644 --- a/docs/guides/ecosystem/neon-serverless-postgres.mdx +++ b/docs/guides/ecosystem/neon-serverless-postgres.mdx @@ -21,7 +21,7 @@ bun add @neondatabase/serverless Create a `.env.local` file and add your [Neon Postgres connection string](https://neon.tech/docs/connect/connect-from-any-app) to it. -```sh .env.local icon="settings" +```ini .env.local icon="settings" DATABASE_URL=postgresql://usertitle:password@ep-adj-noun-guid.us-east-1.aws.neon.tech/neondb?sslmode=require ``` @@ -33,7 +33,7 @@ Paste the following code into your project's `index.ts` file. import { neon } from "@neondatabase/serverless"; // Bun automatically loads the DATABASE_URL from .env.local -// Refer to: https://bun.com/docs/runtime/env for more information +// Refer to: https://bun.com/docs/runtime/environment-variables for more information const sql = neon(process.env.DATABASE_URL); const rows = await sql`SELECT version()`; diff --git a/docs/guides/ecosystem/prisma-postgres.mdx b/docs/guides/ecosystem/prisma-postgres.mdx index d8bc15ca45..fb0133e30f 100644 --- a/docs/guides/ecosystem/prisma-postgres.mdx +++ b/docs/guides/ecosystem/prisma-postgres.mdx @@ -62,7 +62,7 @@ mode: center Set up your Postgres database URL in the `.env` file. - ```env .env icon="settings" + ```ini .env icon="settings" DATABASE_URL="postgresql://username:password@localhost:5432/mydb?schema=public" ``` diff --git a/docs/guides/ecosystem/prisma.mdx b/docs/guides/ecosystem/prisma.mdx index a762159423..f586b654a4 100644 --- a/docs/guides/ecosystem/prisma.mdx +++ b/docs/guides/ecosystem/prisma.mdx @@ -161,4 +161,4 @@ mode: center --- -That's it! Now that you've set up Prisma using Bun, we recommend referring to the [official Prisma docs](https://www.prisma.io/docs/concepts/components/prisma-client) as you continue to develop your application. +That's it! Now that you've set up Prisma using Bun, we recommend referring to the [official Prisma docs](https://www.prisma.io/docs/orm/prisma-client) as you continue to develop your application. diff --git a/docs/guides/ecosystem/qwik.mdx b/docs/guides/ecosystem/qwik.mdx index 3a5f38695c..1c3cdd8192 100644 --- a/docs/guides/ecosystem/qwik.mdx +++ b/docs/guides/ecosystem/qwik.mdx @@ -65,14 +65,14 @@ bun create qwik │ bun qwik add │ │ │ │ Relevant docs: │ -│ https://qwik.builder.io/docs/getting-started/ │ +│ https://qwik.dev/docs/getting-started/ │ │ │ │ Questions? Start the conversation at: │ -│ https://qwik.builder.io/chat │ +│ https://qwik.dev/chat │ │ https://twitter.com/QwikDev │ │ │ │ Presentations, Podcasts and Videos: │ -│ https://qwik.builder.io/media/ │ +│ https://qwik.dev/media/ │ │ │ │ Next steps: │ │ cd my-app │ @@ -111,4 +111,4 @@ Open [http://localhost:5173](http://localhost:5173) with your browser to see the --- -Refer to the [Qwik docs](https://qwik.builder.io/docs/getting-started/) for complete documentation. +Refer to the [Qwik docs](https://qwik.dev/docs/getting-started/) for complete documentation. diff --git a/docs/guides/ecosystem/sentry.mdx b/docs/guides/ecosystem/sentry.mdx index a7bc1353cd..8f515b9d75 100644 --- a/docs/guides/ecosystem/sentry.mdx +++ b/docs/guides/ecosystem/sentry.mdx @@ -20,7 +20,7 @@ bun add @sentry/bun Then, initialize the Sentry SDK with your Sentry DSN in your app's entry file. You can find your DSN in your Sentry project settings. -```js sentry.ts icon="/icons/typescript.svg" +```ts sentry.ts icon="/icons/typescript.svg" import * as Sentry from "@sentry/bun"; // Ensure to call this before importing any other modules! @@ -37,7 +37,7 @@ Sentry.init({ You can verify that Sentry is working by capturing a test error: -```js sentry.ts icon="/icons/typescript.svg" +```ts sentry.ts icon="/icons/typescript.svg" setTimeout(() => { try { foo(); diff --git a/docs/guides/ecosystem/sveltekit.mdx b/docs/guides/ecosystem/sveltekit.mdx index 9b0d892d38..f886e335ab 100644 --- a/docs/guides/ecosystem/sveltekit.mdx +++ b/docs/guides/ecosystem/sveltekit.mdx @@ -88,7 +88,7 @@ To build for production, you'll need to add the right SvelteKit adapter. Current Now, make the following changes to your `svelte.config.js`. -```ts svelte.config.js icon="file-code" +```js svelte.config.js icon="file-code" import adapter from "@sveltejs/adapter-auto"; // [!code --] import adapter from "svelte-adapter-bun"; // [!code ++] import { vitePreprocess } from "@sveltejs/vite-plugin-svelte"; diff --git a/docs/guides/ecosystem/tanstack-start.mdx b/docs/guides/ecosystem/tanstack-start.mdx index 2071671a36..a84a385627 100644 --- a/docs/guides/ecosystem/tanstack-start.mdx +++ b/docs/guides/ecosystem/tanstack-start.mdx @@ -98,7 +98,6 @@ To host your TanStack Start app, you can use [Nitro](https://nitro.build/) or a } ``` - You do **not** need the custom `start` script when deploying to Vercel. diff --git a/docs/guides/ecosystem/upstash.mdx b/docs/guides/ecosystem/upstash.mdx index d28680b0a9..d7e8f1301e 100644 --- a/docs/guides/ecosystem/upstash.mdx +++ b/docs/guides/ecosystem/upstash.mdx @@ -34,7 +34,7 @@ mode: center Set the `REDIS_URL` environment variable in your `.env` file using the Redis endpoint (not the REST URL): - ```env .env icon="settings" + ```ini .env icon="settings" REDIS_URL=rediss://********@********.upstash.io:6379 ``` diff --git a/docs/guides/ecosystem/vite.mdx b/docs/guides/ecosystem/vite.mdx index 64f3c89f3d..938432b2de 100644 --- a/docs/guides/ecosystem/vite.mdx +++ b/docs/guides/ecosystem/vite.mdx @@ -74,4 +74,4 @@ bunx --bun vite build --- -This is a stripped down guide to get you started with Vite + Bun. For more information, see the [Vite documentation](https://vitejs.dev/guide/). +This is a stripped down guide to get you started with Vite + Bun. For more information, see the [Vite documentation](https://vite.dev/guide/). diff --git a/docs/guides/html-rewriter/extract-links.mdx b/docs/guides/html-rewriter/extract-links.mdx index d019c3e5a4..eabeff55ed 100644 --- a/docs/guides/html-rewriter/extract-links.mdx +++ b/docs/guides/html-rewriter/extract-links.mdx @@ -6,7 +6,7 @@ mode: center ## Extract links from a webpage -Bun's [HTMLRewriter](https://bun.com/docs/api/html-rewriter) API can be used to efficiently extract links from HTML content. It works by chaining together CSS selectors to match the elements, text, and attributes you want to process. This is a simple example of how to extract links from a webpage. You can pass `.transform` a `Response`, `Blob`, or `string`. +Bun's [HTMLRewriter](/runtime/html-rewriter) API can be used to efficiently extract links from HTML content. It works by chaining together CSS selectors to match the elements, text, and attributes you want to process. This is a simple example of how to extract links from a webpage. You can pass `.transform` a `Response`, `Blob`, or `string`. ```ts extract-links.ts icon="/icons/typescript.svg" async function extractLinks(url: string) { @@ -68,4 +68,4 @@ const websiteLinks = await extractLinksFromURL("https://example.com"); --- -See [Docs > API > HTMLRewriter](https://bun.com/docs/api/html-rewriter) for complete documentation on HTML transformation with Bun. +See [Docs > API > HTMLRewriter](/runtime/html-rewriter) for complete documentation on HTML transformation with Bun. diff --git a/docs/guides/html-rewriter/extract-social-meta.mdx b/docs/guides/html-rewriter/extract-social-meta.mdx index 455c75739d..c4d35ed2c6 100644 --- a/docs/guides/html-rewriter/extract-social-meta.mdx +++ b/docs/guides/html-rewriter/extract-social-meta.mdx @@ -6,7 +6,7 @@ mode: center ## Extract social share images and Open Graph tags -Bun's [HTMLRewriter](https://bun.com/docs/api/html-rewriter) API can be used to efficiently extract social share images and Open Graph metadata from HTML content. This is particularly useful for building link preview features, social media cards, or web scrapers. We can use HTMLRewriter to match CSS selectors to HTML elements, text, and attributes we want to process. +Bun's [HTMLRewriter](/runtime/html-rewriter) API can be used to efficiently extract social share images and Open Graph metadata from HTML content. This is particularly useful for building link preview features, social media cards, or web scrapers. We can use HTMLRewriter to match CSS selectors to HTML elements, text, and attributes we want to process. ```ts extract-social-meta.ts icon="/icons/typescript.svg" interface SocialMetadata { diff --git a/docs/guides/http/file-uploads.mdx b/docs/guides/http/file-uploads.mdx index 787487039f..1741914a79 100644 --- a/docs/guides/http/file-uploads.mdx +++ b/docs/guides/http/file-uploads.mdx @@ -63,7 +63,7 @@ Our form will send a `POST` request to the `/action` endpoint with the form data First we use the [`.formData()`](https://developer.mozilla.org/en-US/docs/Web/API/Request/formData) method on the incoming `Request` to asynchronously parse its contents to a `FormData` instance. Then we can use the [`.get()`](https://developer.mozilla.org/en-US/docs/Web/API/FormData/get) method to extract the value of the `name` and `profilePicture` fields. Here `name` corresponds to a `string` and `profilePicture` is a `Blob`. -Finally, we write the `Blob` to disk using [`Bun.write()`](https://bun.com/docs/api/file-io#writing-files-bun-write). +Finally, we write the `Blob` to disk using [`Bun.write()`](/runtime/file-io#writing-files-bun-write). {/* prettier-ignore */} ```ts index.ts icon="/icons/typescript.svg" diff --git a/docs/guides/http/hot.mdx b/docs/guides/http/hot.mdx index ecc6e04627..fac3d5dcdf 100644 --- a/docs/guides/http/hot.mdx +++ b/docs/guides/http/hot.mdx @@ -4,7 +4,7 @@ sidebarTitle: Hot reload an HTTP server mode: center --- -Bun supports the [`--hot`](https://bun.com/docs/runtime/hot#hot-mode) flag to run a file with hot reloading enabled. When any module or file changes, Bun re-runs the file. +Bun supports the [`--hot`](/runtime/watch-mode#hot-mode) flag to run a file with hot reloading enabled. When any module or file changes, Bun re-runs the file. ```sh terminal icon="terminal" bun --hot run index.ts diff --git a/docs/guides/http/server.mdx b/docs/guides/http/server.mdx index ec75f1635e..efbd1a54fe 100644 --- a/docs/guides/http/server.mdx +++ b/docs/guides/http/server.mdx @@ -6,7 +6,7 @@ mode: center This starts an HTTP server listening on port `3000`. It demonstrates basic routing with a number of common responses and also handles POST data from standard forms or as JSON. -See [`Bun.serve`](https://bun.com/docs/api/http) for details. +See [`Bun.serve`](/runtime/http/server) for details. ```ts server.ts icon="/icons/typescript.svg" const server = Bun.serve({ diff --git a/docs/guides/http/simple.mdx b/docs/guides/http/simple.mdx index 91e862465c..a8e6479c2c 100644 --- a/docs/guides/http/simple.mdx +++ b/docs/guides/http/simple.mdx @@ -6,7 +6,7 @@ mode: center This starts an HTTP server listening on port `3000`. It responds to all requests with a `Response` with status `200` and body `"Welcome to Bun!"`. -See [`Bun.serve`](https://bun.com/docs/api/http) for details. +See [`Bun.serve`](/runtime/http/server) for details. ```ts server.ts icon="/icons/typescript.svg" const server = Bun.serve({ diff --git a/docs/guides/http/stream-file.mdx b/docs/guides/http/stream-file.mdx index b5a31639a2..08cee886a6 100644 --- a/docs/guides/http/stream-file.mdx +++ b/docs/guides/http/stream-file.mdx @@ -4,7 +4,7 @@ sidebarTitle: Stream file response mode: center --- -This snippet reads a file from disk using [`Bun.file()`](https://bun.com/docs/api/file-io#reading-files-bun-file). This returns a `BunFile` instance, which can be passed directly into the `new Response` constructor. +This snippet reads a file from disk using [`Bun.file()`](/runtime/file-io#reading-files-bun-file). This returns a `BunFile` instance, which can be passed directly into the `new Response` constructor. ```ts server.ts icon="/icons/typescript.svg" const path = "/path/to/file.txt"; @@ -32,7 +32,7 @@ new Response(Bun.file("./img.png")).headers.get("Content-Type"); --- -Putting it all together with [`Bun.serve()`](https://bun.com/docs/api/http#bun-serve). +Putting it all together with [`Bun.serve()`](/runtime/http/server). ```ts server.ts icon="/icons/typescript.svg" // static file server @@ -47,4 +47,4 @@ Bun.serve({ --- -See [Docs > API > File I/O](https://bun.com/docs/api/file-io#writing-files-bun-write) for complete documentation of `Bun.write()`. +See [Docs > API > File I/O](/runtime/file-io#writing-files-bun-write) for complete documentation of `Bun.write()`. diff --git a/docs/guides/http/tls.mdx b/docs/guides/http/tls.mdx index 14bb44c447..e0ffbc3b15 100644 --- a/docs/guides/http/tls.mdx +++ b/docs/guides/http/tls.mdx @@ -4,7 +4,7 @@ sidebarTitle: Configure TLS mode: center --- -Set the `tls` key to configure TLS. Both `key` and `cert` are required. The `key` should be the contents of your private key; `cert` should be the contents of your issued certificate. Use [`Bun.file()`](https://bun.com/docs/api/file-io#reading-files-bun-file) to read the contents. +Set the `tls` key to configure TLS. Both `key` and `cert` are required. The `key` should be the contents of your private key; `cert` should be the contents of your issued certificate. Use [`Bun.file()`](/runtime/file-io#reading-files-bun-file) to read the contents. ```ts server.ts icon="/icons/typescript.svg" const server = Bun.serve({ diff --git a/docs/guides/install/add-dev.mdx b/docs/guides/install/add-dev.mdx index 7e0a501f91..c9bf2f8e78 100644 --- a/docs/guides/install/add-dev.mdx +++ b/docs/guides/install/add-dev.mdx @@ -25,4 +25,4 @@ This will add the package to `devDependencies` in `package.json`. --- -See [Docs > Package manager](https://bun.com/docs/cli/install) for complete documentation of Bun's package manager. +See [Docs > Package manager](/pm/cli/install) for complete documentation of Bun's package manager. diff --git a/docs/guides/install/add-git.mdx b/docs/guides/install/add-git.mdx index 7f8f3c8d81..882e67aba8 100644 --- a/docs/guides/install/add-git.mdx +++ b/docs/guides/install/add-git.mdx @@ -37,4 +37,4 @@ bun add github:colinhacks/zod --- -See [Docs > Package manager](https://bun.com/docs/cli/install) for complete documentation of Bun's package manager. +See [Docs > Package manager](/pm/cli/install) for complete documentation of Bun's package manager. diff --git a/docs/guides/install/add-optional.mdx b/docs/guides/install/add-optional.mdx index 568ebeba4e..d1a4fd8214 100644 --- a/docs/guides/install/add-optional.mdx +++ b/docs/guides/install/add-optional.mdx @@ -24,4 +24,4 @@ This will add the package to `optionalDependencies` in `package.json`. --- -See [Docs > Package manager](https://bun.com/docs/cli/install) for complete documentation of Bun's package manager. +See [Docs > Package manager](/pm/cli/install) for complete documentation of Bun's package manager. diff --git a/docs/guides/install/add-peer.mdx b/docs/guides/install/add-peer.mdx index e50980a74f..d2e55f517f 100644 --- a/docs/guides/install/add-peer.mdx +++ b/docs/guides/install/add-peer.mdx @@ -42,4 +42,4 @@ Running `bun install` will install peer dependencies by default, unless marked o --- -See [Docs > Package manager](https://bun.com/docs/cli/install) for complete documentation of Bun's package manager. +See [Docs > Package manager](/pm/cli/install) for complete documentation of Bun's package manager. diff --git a/docs/guides/install/add-tarball.mdx b/docs/guides/install/add-tarball.mdx index 36abdd66b0..1165b404e1 100644 --- a/docs/guides/install/add-tarball.mdx +++ b/docs/guides/install/add-tarball.mdx @@ -32,4 +32,4 @@ import { z } from "zod"; --- -See [Docs > Package manager](https://bun.com/docs/cli/install) for complete documentation of Bun's package manager. +See [Docs > Package manager](/pm/cli/install) for complete documentation of Bun's package manager. diff --git a/docs/guides/install/add.mdx b/docs/guides/install/add.mdx index bb69bd2753..f9d2a81201 100644 --- a/docs/guides/install/add.mdx +++ b/docs/guides/install/add.mdx @@ -41,4 +41,4 @@ bun add zod@next --- -See [Docs > Package manager](https://bun.com/docs/cli/install) for complete documentation of Bun's package manager. +See [Docs > Package manager](/pm/cli/install) for complete documentation of Bun's package manager. diff --git a/docs/guides/install/azure-artifacts.mdx b/docs/guides/install/azure-artifacts.mdx index 9ec522f0c1..2e4d703dbb 100644 --- a/docs/guides/install/azure-artifacts.mdx +++ b/docs/guides/install/azure-artifacts.mdx @@ -31,9 +31,9 @@ password = "$NPM_PASSWORD" --- -Then assign your Azure Personal Access Token to the `NPM_PASSWORD` environment variable. Bun [automatically reads](https://bun.com/docs/runtime/env) `.env` files, so create a file called `.env` in your project root. There is no need to base-64 encode this token! Bun will do this for you. +Then assign your Azure Personal Access Token to the `NPM_PASSWORD` environment variable. Bun [automatically reads](/runtime/environment-variables) `.env` files, so create a file called `.env` in your project root. There is no need to base-64 encode this token! Bun will do this for you. -```txt .env icon="settings" +```ini .env icon="settings" NPM_PASSWORD= ``` @@ -43,7 +43,7 @@ NPM_PASSWORD= --- -To configure Azure Artifacts without `bunfig.toml`, you can set the `NPM_CONFIG_REGISTRY` environment variable. The URL should include `:username` and `:_password` as query parameters. Replace `` and `` with the apprropriate values. +To configure Azure Artifacts without `bunfig.toml`, you can set the `NPM_CONFIG_REGISTRY` environment variable. The URL should include `:username` and `:_password` as query parameters. Replace `` and `` with the appropriate values. ```bash terminal icon="terminal" NPM_CONFIG_REGISTRY=https://pkgs.dev.azure.com/my-azure-artifacts-user/_packaging/my-azure-artifacts-user/npm/registry/:username=:_password= diff --git a/docs/guides/install/custom-registry.mdx b/docs/guides/install/custom-registry.mdx index ce5cd1426b..c5d2e56e7f 100644 --- a/docs/guides/install/custom-registry.mdx +++ b/docs/guides/install/custom-registry.mdx @@ -20,7 +20,7 @@ registry = "https://usertitle:password@registry.npmjs.org" --- -Your `bunfig.toml` can reference environment variables. Bun automatically loads environment variables from `.env.local`, `.env.[NODE_ENV]`, and `.env`. See [Docs > Environment variables](https://bun.com/docs/runtime/env) for more information. +Your `bunfig.toml` can reference environment variables. Bun automatically loads environment variables from `.env.local`, `.env.[NODE_ENV]`, and `.env`. See [Docs > Environment variables](/runtime/environment-variables) for more information. ```toml bunfig.toml icon="settings" [install] @@ -29,4 +29,4 @@ registry = { url = "https://registry.npmjs.org", token = "$npm_token" } --- -See [Docs > Package manager](https://bun.com/docs/cli/install) for complete documentation of Bun's package manager. +See [Docs > Package manager](/pm/cli/install) for complete documentation of Bun's package manager. diff --git a/docs/guides/install/git-diff-bun-lockfile.mdx b/docs/guides/install/git-diff-bun-lockfile.mdx index b92fe38035..016aa9705f 100644 --- a/docs/guides/install/git-diff-bun-lockfile.mdx +++ b/docs/guides/install/git-diff-bun-lockfile.mdx @@ -6,7 +6,8 @@ mode: center Bun v1.1.39 introduced `bun.lock`, a JSONC formatted lockfile. `bun.lock` is human-readable and git-diffable without - configuration, at no cost to performance. [**Learn more.**](https://bun.com/docs/install/lockfile#text-based-lockfile) + configuration, at no cost to performance. In 1.2.0+ it is the default format used for new projects. [**Learn + more.**](/pm/lockfile#text-based-lockfile) --- diff --git a/docs/guides/install/npm-alias.mdx b/docs/guides/install/npm-alias.mdx index e6201aeb4c..6639db6396 100644 --- a/docs/guides/install/npm-alias.mdx +++ b/docs/guides/install/npm-alias.mdx @@ -22,4 +22,4 @@ z.string(); --- -See [Docs > Package manager](https://bun.com/docs/cli/install) for complete documentation of Bun's package manager. +See [Docs > Package manager](/pm/cli/install) for complete documentation of Bun's package manager. diff --git a/docs/guides/install/registry-scope.mdx b/docs/guides/install/registry-scope.mdx index 1c9496a0d6..337ca6fd9c 100644 --- a/docs/guides/install/registry-scope.mdx +++ b/docs/guides/install/registry-scope.mdx @@ -4,7 +4,7 @@ sidebarTitle: Configure a scoped registry mode: center --- -Private registries can be configured using either [`.npmrc`](https://bun.com/docs/install/npmrc) or [`bunfig.toml`](https://bun.com/docs/runtime/bunfig#install-registry). While both are supported, we recommend using **bunfig.toml** for enhanced flexibility and Bun-specific options. +Private registries can be configured using either [`.npmrc`](/pm/npmrc) or [`bunfig.toml`](/runtime/bunfig#install-registry). While both are supported, we recommend using **bunfig.toml** for enhanced flexibility and Bun-specific options. To configure a registry for a particular npm scope: @@ -28,7 +28,7 @@ To configure a registry for a particular npm scope: --- -Your `bunfig.toml` can reference environment variables. Bun automatically loads environment variables from `.env.local`, `.env.[NODE_ENV]`, and `.env`. See [Docs > Environment variables](https://bun.com/docs/runtime/env) for more information. +Your `bunfig.toml` can reference environment variables. Bun automatically loads environment variables from `.env.local`, `.env.[NODE_ENV]`, and `.env`. See [Docs > Environment variables](/runtime/environment-variables) for more information. ```toml bunfig.toml icon="settings" [install.scopes] @@ -37,4 +37,4 @@ Your `bunfig.toml` can reference environment variables. Bun automatically loads --- -See [Docs > Package manager](https://bun.com/docs/cli/install) for complete documentation of Bun's package manager. +See [Docs > Package manager](/pm/cli/install) for complete documentation of Bun's package manager. diff --git a/docs/guides/install/trusted.mdx b/docs/guides/install/trusted.mdx index 49efb33e5f..7660315003 100644 --- a/docs/guides/install/trusted.mdx +++ b/docs/guides/install/trusted.mdx @@ -47,4 +47,4 @@ bun install --- -See [Docs > Package manager > Trusted dependencies](https://bun.com/docs/install/lifecycle) for complete documentation of trusted dependencies. +See [Docs > Package manager > Trusted dependencies](/pm/lifecycle) for complete documentation of trusted dependencies. diff --git a/docs/guides/install/workspaces.mdx b/docs/guides/install/workspaces.mdx index 6e789d2eb1..7653ee9fa3 100644 --- a/docs/guides/install/workspaces.mdx +++ b/docs/guides/install/workspaces.mdx @@ -67,4 +67,4 @@ bun add zod --- -See [Docs > Package manager](https://bun.com/docs/cli/install) for complete documentation of Bun's package manager. +See [Docs > Package manager](/pm/cli/install) for complete documentation of Bun's package manager. diff --git a/docs/guides/install/yarnlock.mdx b/docs/guides/install/yarnlock.mdx index 534033bc1e..c40539ee8d 100644 --- a/docs/guides/install/yarnlock.mdx +++ b/docs/guides/install/yarnlock.mdx @@ -6,12 +6,13 @@ mode: center Bun v1.1.39 introduced `bun.lock`, a JSONC formatted lockfile. `bun.lock` is human-readable and git-diffable without - configuration, at no cost to performance. [**Learn more.**](https://bun.com/docs/install/lockfile#text-based-lockfile) + configuration, at no cost to performance. In 1.2.0+ it is the default format used for new projects. [**Learn + more.**](/pm/lockfile#text-based-lockfile) --- -Use the `--yarn` flag to generate a Yarn-compatible `yarn.lock` file (in addition to `bun.lock`). +Use the `--yarn` flag to generate a Yarn-compatible `yarn.lock` file (in addition to `bun.lock{b}`). ```sh terminal icon="terminal" bun install --yarn @@ -47,4 +48,4 @@ abab@^2.0.6: --- -See [Docs > Package manager](https://bun.com/docs/cli/install) for complete documentation of Bun's package manager. +See [Docs > Package manager](/pm/cli/install) for complete documentation of Bun's package manager. diff --git a/docs/guides/process/ctrl-c.mdx b/docs/guides/process/ctrl-c.mdx index cffee3085f..1d000e7a55 100644 --- a/docs/guides/process/ctrl-c.mdx +++ b/docs/guides/process/ctrl-c.mdx @@ -15,4 +15,4 @@ process.on("SIGINT", () => { --- -See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities. +See [Docs > API > Utils](/runtime/utils) for more useful utilities. diff --git a/docs/guides/process/ipc.mdx b/docs/guides/process/ipc.mdx index 1df59fcb04..6a9b15de41 100644 --- a/docs/guides/process/ipc.mdx +++ b/docs/guides/process/ipc.mdx @@ -4,7 +4,7 @@ sidebarTitle: Spawn a child process and communicate using IPC mode: center --- -Use [`Bun.spawn()`](https://bun.com/docs/api/spawn) to spawn a child process. When spawning a second `bun` process, you can open a direct inter-process communication (IPC) channel between the two processes. +Use [`Bun.spawn()`](/runtime/child-process) to spawn a child process. When spawning a second `bun` process, you can open a direct inter-process communication (IPC) channel between the two processes. This API is only compatible with other `bun` processes. Use `process.execPath` to get a path to the currently running @@ -66,4 +66,4 @@ process.send({ message: "Hello from child as object" }); --- -See [Docs > API > Child processes](https://bun.com/docs/api/spawn) for complete documentation. +See [Docs > API > Child processes](/runtime/child-process) for complete documentation. diff --git a/docs/guides/process/nanoseconds.mdx b/docs/guides/process/nanoseconds.mdx index 8f974a84fb..74a677b487 100644 --- a/docs/guides/process/nanoseconds.mdx +++ b/docs/guides/process/nanoseconds.mdx @@ -12,4 +12,4 @@ Bun.nanoseconds(); --- -See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities. +See [Docs > API > Utils](/runtime/utils) for more useful utilities. diff --git a/docs/guides/process/os-signals.mdx b/docs/guides/process/os-signals.mdx index eff7d3f0ab..b124911ac3 100644 --- a/docs/guides/process/os-signals.mdx +++ b/docs/guides/process/os-signals.mdx @@ -38,4 +38,4 @@ process.on("exit", code => { --- -See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities. +See [Docs > API > Utils](/runtime/utils) for more useful utilities. diff --git a/docs/guides/process/spawn-stderr.mdx b/docs/guides/process/spawn-stderr.mdx index cadfdf0f13..73155ecbfc 100644 --- a/docs/guides/process/spawn-stderr.mdx +++ b/docs/guides/process/spawn-stderr.mdx @@ -4,7 +4,7 @@ sidebarTitle: Read stderr mode: center --- -When using [`Bun.spawn()`](https://bun.com/docs/api/spawn), the child process inherits the `stderr` of the spawning process. If instead you'd prefer to read and handle `stderr`, set the `stderr` option to `"pipe"`. +When using [`Bun.spawn()`](/runtime/child-process), the child process inherits the `stderr` of the spawning process. If instead you'd prefer to read and handle `stderr`, set the `stderr` option to `"pipe"`. ```ts const proc = Bun.spawn(["echo", "hello"], { @@ -31,4 +31,4 @@ if (errors) { --- -See [Docs > API > Child processes](https://bun.com/docs/api/spawn) for complete documentation. +See [Docs > API > Child processes](/runtime/child-process) for complete documentation. diff --git a/docs/guides/process/spawn-stdout.mdx b/docs/guides/process/spawn-stdout.mdx index ab64f2a2cf..0b84fe89fc 100644 --- a/docs/guides/process/spawn-stdout.mdx +++ b/docs/guides/process/spawn-stdout.mdx @@ -4,7 +4,7 @@ sidebarTitle: Read stdout mode: center --- -When using [`Bun.spawn()`](https://bun.com/docs/api/spawn), the `stdout` of the child process can be consumed as a `ReadableStream` via `proc.stdout`. +When using [`Bun.spawn()`](/runtime/child-process), the `stdout` of the child process can be consumed as a `ReadableStream` via `proc.stdout`. ```ts const proc = Bun.spawn(["echo", "hello"]); @@ -25,4 +25,4 @@ const proc = Bun.spawn(["echo", "hello"], { --- -See [Docs > API > Child processes](https://bun.com/docs/api/spawn) for complete documentation. +See [Docs > API > Child processes](/runtime/child-process) for complete documentation. diff --git a/docs/guides/process/spawn.mdx b/docs/guides/process/spawn.mdx index a03ac5eaea..9a217d19ed 100644 --- a/docs/guides/process/spawn.mdx +++ b/docs/guides/process/spawn.mdx @@ -4,7 +4,7 @@ sidebarTitle: Spawn child process mode: center --- -Use [`Bun.spawn()`](https://bun.com/docs/api/spawn) to spawn a child process. +Use [`Bun.spawn()`](/runtime/child-process) to spawn a child process. ```ts const proc = Bun.spawn(["echo", "hello"]); @@ -40,4 +40,4 @@ output; // => "hello\n" --- -See [Docs > API > Child processes](https://bun.com/docs/api/spawn) for complete documentation. +See [Docs > API > Child processes](/runtime/child-process) for complete documentation. diff --git a/docs/guides/process/stdin.mdx b/docs/guides/process/stdin.mdx index b9fb18f614..d0e132fb9d 100644 --- a/docs/guides/process/stdin.mdx +++ b/docs/guides/process/stdin.mdx @@ -59,4 +59,4 @@ Chunk: hello --- -See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities. +See [Docs > API > Utils](/runtime/utils) for more useful utilities. diff --git a/docs/guides/read-file/arraybuffer.mdx b/docs/guides/read-file/arraybuffer.mdx index 563ca71d1d..ca37d89524 100644 --- a/docs/guides/read-file/arraybuffer.mdx +++ b/docs/guides/read-file/arraybuffer.mdx @@ -15,7 +15,7 @@ const buffer = await file.arrayBuffer(); --- -The binary content in the `ArrayBuffer` can then be read as a typed array, such as `Int8Array`. For `Uint8Array`, use [`.bytes()`](./uint8array). +The binary content in the `ArrayBuffer` can then be read as a typed array, such as `Int8Array`. For `Uint8Array`, use [`.bytes()`](/guides/read-file/uint8array). ```ts index.ts icon="/icons/typescript.svg" const buffer = await file.arrayBuffer(); @@ -27,4 +27,4 @@ bytes.length; --- -Refer to the [Typed arrays](https://bun.com/docs/api/binary-data#typedarray) docs for more information on working with typed arrays in Bun. +Refer to the [Typed arrays](/runtime/binary-data#typedarray) docs for more information on working with typed arrays in Bun. diff --git a/docs/guides/read-file/buffer.mdx b/docs/guides/read-file/buffer.mdx index 5b24eda0a4..f1f8aad4d4 100644 --- a/docs/guides/read-file/buffer.mdx +++ b/docs/guides/read-file/buffer.mdx @@ -18,4 +18,4 @@ const buffer = Buffer.from(arrbuf); --- -Refer to [Binary data > Buffer](https://bun.com/docs/api/binary-data#buffer) for more information on working with `Buffer` and other binary data formats in Bun. +Refer to [Binary data > Buffer](/runtime/binary-data#buffer) for more information on working with `Buffer` and other binary data formats in Bun. diff --git a/docs/guides/read-file/exists.mdx b/docs/guides/read-file/exists.mdx index 320e659252..787668ff03 100644 --- a/docs/guides/read-file/exists.mdx +++ b/docs/guides/read-file/exists.mdx @@ -15,4 +15,4 @@ await file.exists(); // boolean; --- -Refer to [API > File I/O](https://bun.com/docs/api/file-io) for more information on working with `BunFile`. +Refer to [API > File I/O](/runtime/file-io) for more information on working with `BunFile`. diff --git a/docs/guides/read-file/mime.mdx b/docs/guides/read-file/mime.mdx index c3a369a013..1349d9bbf4 100644 --- a/docs/guides/read-file/mime.mdx +++ b/docs/guides/read-file/mime.mdx @@ -19,4 +19,4 @@ file.type; // image/png --- -Refer to [API > File I/O](https://bun.com/docs/api/file-io) for more information on working with `BunFile`. +Refer to [API > File I/O](/runtime/file-io) for more information on working with `BunFile`. diff --git a/docs/guides/read-file/stream.mdx b/docs/guides/read-file/stream.mdx index 2724ad2f6a..a2542c22a6 100644 --- a/docs/guides/read-file/stream.mdx +++ b/docs/guides/read-file/stream.mdx @@ -25,4 +25,4 @@ for await (const chunk of stream) { --- -Refer to the [Streams](https://bun.com/docs/api/streams) documentation for more information on working with streams in Bun. +Refer to the [Streams](/runtime/streams) documentation for more information on working with streams in Bun. diff --git a/docs/guides/read-file/uint8array.mdx b/docs/guides/read-file/uint8array.mdx index 53c902e682..939aa277f5 100644 --- a/docs/guides/read-file/uint8array.mdx +++ b/docs/guides/read-file/uint8array.mdx @@ -20,4 +20,4 @@ byteArray.length; // length of byteArray --- -Refer to [API > Binary data > Typed arrays](https://bun.com/docs/api/binary-data#typedarray) for more information on working with `Uint8Array` and other binary data formats in Bun. +Refer to [API > Binary data > Typed arrays](/runtime/binary-data#typedarray) for more information on working with `Uint8Array` and other binary data formats in Bun. diff --git a/docs/guides/read-file/watch.mdx b/docs/guides/read-file/watch.mdx index dde7a8c2a1..ef41129bab 100644 --- a/docs/guides/read-file/watch.mdx +++ b/docs/guides/read-file/watch.mdx @@ -63,4 +63,4 @@ process.on("SIGINT", () => { --- -Refer to [API > Binary data > Typed arrays](https://bun.com/docs/api/binary-data#typedarray) for more information on working with `Uint8Array` and other binary data formats in Bun. +Refer to [API > Binary data > Typed arrays](/runtime/binary-data#typedarray) for more information on working with `Uint8Array` and other binary data formats in Bun. diff --git a/docs/guides/runtime/cicd.mdx b/docs/guides/runtime/cicd.mdx index a4aae4f126..1fc0786640 100644 --- a/docs/guides/runtime/cicd.mdx +++ b/docs/guides/runtime/cicd.mdx @@ -37,7 +37,7 @@ jobs: # ... - uses: oven-sh/setup-bun@v2 with: # [!code ++] - bun-version: 1.2.0 # or "latest", "canary", # [!code ++] + bun-version: 1.3.2 # or "latest", "canary", # [!code ++] ``` --- diff --git a/docs/guides/runtime/delete-directory.mdx b/docs/guides/runtime/delete-directory.mdx index bcc8055051..460bf8c3ed 100644 --- a/docs/guides/runtime/delete-directory.mdx +++ b/docs/guides/runtime/delete-directory.mdx @@ -36,4 +36,4 @@ try { --- -See [Docs > API > FileSystem](https://bun.com/docs/api/file-io) for more filesystem operations. +See [Docs > API > FileSystem](/runtime/file-io) for more filesystem operations. diff --git a/docs/guides/runtime/delete-file.mdx b/docs/guides/runtime/delete-file.mdx index e8e24390e5..a3aabea4fc 100644 --- a/docs/guides/runtime/delete-file.mdx +++ b/docs/guides/runtime/delete-file.mdx @@ -18,4 +18,4 @@ const exists = await file.exists(); --- -See [Docs > API > FileSystem](https://bun.com/docs/api/file-io) for more filesystem operations. +See [Docs > API > FileSystem](/runtime/file-io) for more filesystem operations. diff --git a/docs/guides/runtime/import-json.mdx b/docs/guides/runtime/import-json.mdx index 1ed290a601..3ebdb20612 100644 --- a/docs/guides/runtime/import-json.mdx +++ b/docs/guides/runtime/import-json.mdx @@ -43,4 +43,4 @@ data.author.name; // => "John Dough" --- -See [Docs > Runtime > TypeScript](https://bun.com/docs/runtime/typescript) for more information on using TypeScript with Bun. +See [Docs > Runtime > TypeScript](/runtime/typescript) for more information on using TypeScript with Bun. diff --git a/docs/guides/runtime/import-toml.mdx b/docs/guides/runtime/import-toml.mdx index 991e12e049..3976b7e226 100644 --- a/docs/guides/runtime/import-toml.mdx +++ b/docs/guides/runtime/import-toml.mdx @@ -29,4 +29,4 @@ data.author.name; // => "John Dough" --- -See [Docs > Runtime > TypeScript](https://bun.com/docs/runtime/typescript) for more information on using TypeScript with Bun. +See [Docs > Runtime > TypeScript](/runtime/typescript) for more information on using TypeScript with Bun. diff --git a/docs/guides/runtime/import-yaml.mdx b/docs/guides/runtime/import-yaml.mdx index e4ff38155b..c9e7a036ad 100644 --- a/docs/guides/runtime/import-yaml.mdx +++ b/docs/guides/runtime/import-yaml.mdx @@ -101,4 +101,4 @@ export = contents; --- -See [Docs > API > YAML](https://bun.com/docs/api/yaml) for complete documentation on YAML support in Bun. +See [Docs > API > YAML](/runtime/yaml) for complete documentation on YAML support in Bun. diff --git a/docs/guides/runtime/read-env.mdx b/docs/guides/runtime/read-env.mdx index 7e3294e246..0f8c828292 100644 --- a/docs/guides/runtime/read-env.mdx +++ b/docs/guides/runtime/read-env.mdx @@ -34,4 +34,4 @@ FOOBAR=aaaaaa --- -See [Docs > Runtime > Environment variables](https://bun.com/docs/runtime/env) for more information on using environment variables with Bun. +See [Docs > Runtime > Environment variables](/runtime/environment-variables) for more information on using environment variables with Bun. diff --git a/docs/guides/runtime/set-env.mdx b/docs/guides/runtime/set-env.mdx index 27ed10b32c..a374875227 100644 --- a/docs/guides/runtime/set-env.mdx +++ b/docs/guides/runtime/set-env.mdx @@ -21,7 +21,7 @@ Bun reads the following files automatically (listed in order of increasing prece - `.env.production`, `.env.development`, `.env.test` (depending on value of `NODE_ENV`) - `.env.local` (not loaded when `NODE_ENV=test`) -```txt .env icon="settings" +```ini .env icon="settings" FOO=hello BAR=world ``` @@ -48,4 +48,4 @@ $env:FOO="helloworld"; bun run dev --- -See [Docs > Runtime > Environment variables](https://bun.com/docs/runtime/env) for more information on using environment variables with Bun. +See [Docs > Runtime > Environment variables](/runtime/environment-variables) for more information on using environment variables with Bun. diff --git a/docs/guides/runtime/shell.mdx b/docs/guides/runtime/shell.mdx index b845a625a5..723aa3fa8e 100644 --- a/docs/guides/runtime/shell.mdx +++ b/docs/guides/runtime/shell.mdx @@ -39,4 +39,4 @@ for await (const line of $`ls -l`.lines()) { --- -See [Docs > API > Shell](https://bun.com/docs/runtime/shell) for complete documentation. +See [Docs > API > Shell](/runtime/shell) for complete documentation. diff --git a/docs/guides/runtime/tsconfig-paths.mdx b/docs/guides/runtime/tsconfig-paths.mdx index 6c102d483b..5381084c19 100644 --- a/docs/guides/runtime/tsconfig-paths.mdx +++ b/docs/guides/runtime/tsconfig-paths.mdx @@ -28,4 +28,4 @@ import { Button } from "@components/Button"; // imports from "./src/components/B --- -See [Docs > Runtime > TypeScript](https://bun.com/docs/runtime/typescript) for more information on using TypeScript with Bun. +See [Docs > Runtime > TypeScript](/runtime/typescript) for more information on using TypeScript with Bun. diff --git a/docs/guides/runtime/typescript.mdx b/docs/guides/runtime/typescript.mdx index 25a52df0c6..811e6b1d9a 100644 --- a/docs/guides/runtime/typescript.mdx +++ b/docs/guides/runtime/typescript.mdx @@ -48,4 +48,4 @@ Below is the full set of recommended `compilerOptions` for a Bun project. With t --- -Refer to [Ecosystem > TypeScript](https://bun.com/docs/runtime/typescript) for a complete guide to TypeScript support in Bun. +Refer to [Ecosystem > TypeScript](/runtime/typescript) for a complete guide to TypeScript support in Bun. diff --git a/docs/guides/runtime/vscode-debugger.mdx b/docs/guides/runtime/vscode-debugger.mdx index d254ee4ab9..fae551616b 100644 --- a/docs/guides/runtime/vscode-debugger.mdx +++ b/docs/guides/runtime/vscode-debugger.mdx @@ -5,8 +5,7 @@ mode: center --- - VSCode extension support is currently buggy. We recommend the [Web - Debugger](https://bun.com/guides/runtime/web-debugger) for now. + VSCode extension support is currently buggy. We recommend the [Web Debugger](/guides/runtime/web-debugger) for now. Bun speaks the [WebKit Inspector Protocol](https://github.com/oven-sh/bun/blob/main/packages/bun-inspector-protocol/src/protocol/jsc/index.d.ts) so you can debug your code with an interactive debugger. diff --git a/docs/guides/runtime/web-debugger.mdx b/docs/guides/runtime/web-debugger.mdx index 46cc4d7e63..36a63301bc 100644 --- a/docs/guides/runtime/web-debugger.mdx +++ b/docs/guides/runtime/web-debugger.mdx @@ -4,7 +4,7 @@ sidebarTitle: Web debugger mode: center --- -Bun speaks the [WebKit Inspector Protocol](https://github.com/oven-sh/bun/blob/main/packages/bun-vscode/types/jsc.d.ts). To enable debugging when running code with Bun, use the `--inspect` flag. For demonstration purposes, consider the following simple web server. +Bun speaks the [WebKit Inspector Protocol](https://github.com/oven-sh/bun/blob/main/packages/bun-inspector-protocol/src/protocol/jsc/index.d.ts). To enable debugging when running code with Bun, use the `--inspect` flag. For demonstration purposes, consider the following simple web server. ```ts server.ts icon="/icons/typescript.svg" Bun.serve({ diff --git a/docs/guides/streams/to-array.mdx b/docs/guides/streams/to-array.mdx index 3fc1547231..ff9134696d 100644 --- a/docs/guides/streams/to-array.mdx +++ b/docs/guides/streams/to-array.mdx @@ -13,4 +13,4 @@ const str = await Bun.readableStreamToArray(stream); --- -See [Docs > API > Utils](https://bun.com/docs/api/utils#bun-readablestreamto) for documentation on Bun's other `ReadableStream` conversion functions. +See [Docs > API > Utils](/runtime/utils#bun-readablestreamto) for documentation on Bun's other `ReadableStream` conversion functions. diff --git a/docs/guides/streams/to-arraybuffer.mdx b/docs/guides/streams/to-arraybuffer.mdx index 4e05cb8cee..9b9e0535ec 100644 --- a/docs/guides/streams/to-arraybuffer.mdx +++ b/docs/guides/streams/to-arraybuffer.mdx @@ -13,4 +13,4 @@ const buf = await Bun.readableStreamToArrayBuffer(stream); --- -See [Docs > API > Utils](https://bun.com/docs/api/utils#bun-readablestreamto) for documentation on Bun's other `ReadableStream` conversion functions. +See [Docs > API > Utils](/runtime/utils#bun-readablestreamto) for documentation on Bun's other `ReadableStream` conversion functions. diff --git a/docs/guides/streams/to-blob.mdx b/docs/guides/streams/to-blob.mdx index df604513c6..1585e01c44 100644 --- a/docs/guides/streams/to-blob.mdx +++ b/docs/guides/streams/to-blob.mdx @@ -13,4 +13,4 @@ const blob = await Bun.readableStreamToBlob(stream); --- -See [Docs > API > Utils](https://bun.com/docs/api/utils#bun-readablestreamto) for documentation on Bun's other `ReadableStream` conversion functions. +See [Docs > API > Utils](/runtime/utils#bun-readablestreamto) for documentation on Bun's other `ReadableStream` conversion functions. diff --git a/docs/guides/streams/to-buffer.mdx b/docs/guides/streams/to-buffer.mdx index 2befca63cd..46e98dbaaf 100644 --- a/docs/guides/streams/to-buffer.mdx +++ b/docs/guides/streams/to-buffer.mdx @@ -14,4 +14,4 @@ const nodeBuf = Buffer.from(arrBuf); --- -See [Docs > API > Utils](https://bun.com/docs/api/utils#bun-readablestreamto) for documentation on Bun's other `ReadableStream` conversion functions. +See [Docs > API > Utils](/runtime/utils#bun-readablestreamto) for documentation on Bun's other `ReadableStream` conversion functions. diff --git a/docs/guides/streams/to-json.mdx b/docs/guides/streams/to-json.mdx index 567decf586..5e93fc37df 100644 --- a/docs/guides/streams/to-json.mdx +++ b/docs/guides/streams/to-json.mdx @@ -13,4 +13,4 @@ const json = await stream.json(); --- -See [Docs > API > Utils](https://bun.com/docs/api/utils#bun-readablestreamto) for documentation on Bun's other `ReadableStream` conversion functions. +See [Docs > API > Utils](/runtime/utils#bun-readablestreamto) for documentation on Bun's other `ReadableStream` conversion functions. diff --git a/docs/guides/streams/to-string.mdx b/docs/guides/streams/to-string.mdx index c07f8a3991..81f26efe1c 100644 --- a/docs/guides/streams/to-string.mdx +++ b/docs/guides/streams/to-string.mdx @@ -13,4 +13,4 @@ const str = await Bun.readableStreamToText(stream); --- -See [Docs > API > Utils](https://bun.com/docs/api/utils#bun-readablestreamto) for documentation on Bun's other `ReadableStream` conversion functions. +See [Docs > API > Utils](/runtime/utils#bun-readablestreamto) for documentation on Bun's other `ReadableStream` conversion functions. diff --git a/docs/guides/streams/to-typedarray.mdx b/docs/guides/streams/to-typedarray.mdx index 4925910af4..4d6dd6adff 100644 --- a/docs/guides/streams/to-typedarray.mdx +++ b/docs/guides/streams/to-typedarray.mdx @@ -21,4 +21,4 @@ const uint8 = await Bun.readableStreamToBytes(stream); --- -See [Docs > API > Utils](https://bun.com/docs/api/utils#bun-readablestreamto) for documentation on Bun's other `ReadableStream` conversion functions. +See [Docs > API > Utils](/runtime/utils#bun-readablestreamto) for documentation on Bun's other `ReadableStream` conversion functions. diff --git a/docs/guides/test/bail.mdx b/docs/guides/test/bail.mdx index c69f8f0fbb..9cd56cacf9 100644 --- a/docs/guides/test/bail.mdx +++ b/docs/guides/test/bail.mdx @@ -21,4 +21,4 @@ bun test --bail=10 --- -See [Docs > Test runner](https://bun.sh/docs/cli/test) for complete documentation of `bun test`. +See [Docs > Test runner](/test) for complete documentation of `bun test`. diff --git a/docs/guides/test/concurrent-test-glob.mdx b/docs/guides/test/concurrent-test-glob.mdx index 8a2d5a2c8e..5f68c50351 100644 --- a/docs/guides/test/concurrent-test-glob.mdx +++ b/docs/guides/test/concurrent-test-glob.mdx @@ -2,6 +2,7 @@ title: Selectively run tests concurrently with glob patterns sidebarTitle: Concurrent test glob mode: center +description: Set a glob pattern to decide which tests from which files run in parallel --- This guide demonstrates how to use the `concurrentTestGlob` option to selectively run tests concurrently based on file naming patterns. @@ -69,12 +70,14 @@ test("fetch user data", async () => { expect(response.ok).toBe(true); }); -test("fetch posts", async () => { +// can also use test.concurrent() for explicitly marking it as concurrent +test.concurrent("fetch posts", async () => { const response = await fetch("/api/posts"); expect(response.ok).toBe(true); }); -test("fetch comments", async () => { +// can also use test.serial() for explicitly marking it as sequential +test.serial("fetch comments", async () => { const response = await fetch("/api/comments"); expect(response.ok).toBe(true); }); diff --git a/docs/guides/test/coverage-threshold.mdx b/docs/guides/test/coverage-threshold.mdx index 560e38756b..5efdc197b4 100644 --- a/docs/guides/test/coverage-threshold.mdx +++ b/docs/guides/test/coverage-threshold.mdx @@ -64,4 +64,4 @@ coverageThreshold = { lines = 0.5, functions = 0.7 } --- -See [Docs > Test runner > Coverage](https://bun.sh/docs/test/coverage) for complete documentation on code coverage reporting in Bun. +See [Docs > Test runner > Coverage](/test/code-coverage) for complete documentation on code coverage reporting in Bun. diff --git a/docs/guides/test/coverage.mdx b/docs/guides/test/coverage.mdx index 7c2315c297..0c18dba670 100644 --- a/docs/guides/test/coverage.mdx +++ b/docs/guides/test/coverage.mdx @@ -46,4 +46,4 @@ coverage = true # always enable coverage --- -Refer to [Docs > Test runner > Coverage](https://bun.sh/docs/test/coverage) for complete documentation on code coverage reporting in Bun. +Refer to [Docs > Test runner > Coverage](/test/code-coverage) for complete documentation on code coverage reporting in Bun. diff --git a/docs/guides/test/happy-dom.mdx b/docs/guides/test/happy-dom.mdx index 14a40db2f0..88673378a0 100644 --- a/docs/guides/test/happy-dom.mdx +++ b/docs/guides/test/happy-dom.mdx @@ -70,4 +70,4 @@ Ran 1 tests across 1 files. 1 total [125.00ms] --- -Refer to the [Happy DOM repo](https://github.com/capricorn86/happy-dom) and [Docs > Test runner > DOM](https://bun.sh/docs/test/dom) for complete documentation on writing browser tests with Bun. +Refer to the [Happy DOM repo](https://github.com/capricorn86/happy-dom) and [Docs > Test runner > DOM](/test/dom) for complete documentation on writing browser tests with Bun. diff --git a/docs/guides/test/migrate-from-jest.mdx b/docs/guides/test/migrate-from-jest.mdx index af0ebc0daf..fbe3e6dca4 100644 --- a/docs/guides/test/migrate-from-jest.mdx +++ b/docs/guides/test/migrate-from-jest.mdx @@ -62,7 +62,7 @@ describe("my test suite", () => { --- -Bun implements the vast majority of Jest's matchers, but compatibility isn't 100% yet. Refer to the full compatibility table at [Docs > Test runner > Writing tests](https://bun.sh/docs/test/writing#matchers). +Bun implements the vast majority of Jest's matchers, but compatibility isn't 100% yet. Refer to the full compatibility table at [Docs > Test runner > Writing tests](/test/writing-tests#matchers). Some notable missing features: @@ -74,7 +74,7 @@ If you're using `testEnvironment: "jsdom"` to run your tests in a browser-like e At the moment jsdom does not work in Bun due to its internal use of V8 APIs. Track support for it [here](https://github.com/oven-sh/bun/issues/3554). -```toml bunfig.toml +```toml bunfig.toml icon="settings" [test] preload = ["./happy-dom.ts"] ``` @@ -107,11 +107,11 @@ bun test --timeout 10000 Many other flags become irrelevant or obsolete when using `bun test`. -- `transform` — Bun supports TypeScript & JSX. Other file types can be configured with [Plugins](https://bun.sh/docs/runtime/plugins). +- `transform` — Bun supports TypeScript & JSX. Other file types can be configured with [Plugins](/runtime/plugins). - `extensionsToTreatAsEsm` - `haste` — Bun uses it's own internal source maps - `watchman`, `watchPlugins`, `watchPathIgnorePatterns` — use `--watch` to run tests in watch mode -- `verbose` — set `logLevel: "debug"` in [`bunfig.toml`](https://bun.sh/docs/runtime/bunfig#loglevel) +- `verbose` — set `logLevel: "debug"` in [`bunfig.toml`](/runtime/bunfig#loglevel) --- @@ -122,4 +122,4 @@ Settings that aren't mentioned here are not supported or have no equivalent. Ple See also: - [Mark a test as a todo](/guides/test/todo-tests) -- [Docs > Test runner > Writing tests](https://bun.sh/docs/test/writing) +- [Docs > Test runner > Writing tests](/test/writing-tests) diff --git a/docs/guides/test/mock-clock.mdx b/docs/guides/test/mock-clock.mdx index fd862254fa..21ec7e2776 100644 --- a/docs/guides/test/mock-clock.mdx +++ b/docs/guides/test/mock-clock.mdx @@ -22,7 +22,7 @@ test("party like it's 1999", () => { --- -The `setSystemTime` function is commonly used on conjunction with [Lifecycle Hooks](https://bun.sh/docs/test/lifecycle) to configure a testing environment with a deterministic "fake clock". +The `setSystemTime` function is commonly used on conjunction with [Lifecycle Hooks](/test/lifecycle) to configure a testing environment with a deterministic "fake clock". ```ts import { test, expect, beforeAll, setSystemTime } from "bun:test"; @@ -47,4 +47,4 @@ setSystemTime(); // reset to actual time --- -See [Docs > Test Runner > Date and time](https://bun.sh/docs/test/time) for complete documentation on mocking with the Bun test runner. +See [Docs > Test Runner > Date and time](/test/dates-times) for complete documentation on mocking with the Bun test runner. diff --git a/docs/guides/test/mock-functions.mdx b/docs/guides/test/mock-functions.mdx index 93b14c953e..8abd9602c2 100644 --- a/docs/guides/test/mock-functions.mdx +++ b/docs/guides/test/mock-functions.mdx @@ -67,4 +67,4 @@ test("random", async () => { --- -See [Docs > Test Runner > Mocks](https://bun.sh/docs/test/mocks) for complete documentation on mocking with the Bun test runner. +See [Docs > Test Runner > Mocks](/test/mocks) for complete documentation on mocking with the Bun test runner. diff --git a/docs/guides/test/rerun-each.mdx b/docs/guides/test/rerun-each.mdx index 12046aebbd..964d976508 100644 --- a/docs/guides/test/rerun-each.mdx +++ b/docs/guides/test/rerun-each.mdx @@ -13,4 +13,4 @@ bun test --rerun-each 10 --- -See [Docs > Test runner](https://bun.sh/docs/cli/test) for complete documentation of `bun test`. +See [Docs > Test runner](/test) for complete documentation of `bun test`. diff --git a/docs/guides/test/run-tests.mdx b/docs/guides/test/run-tests.mdx index 54638b950e..fd0b9759b1 100644 --- a/docs/guides/test/run-tests.mdx +++ b/docs/guides/test/run-tests.mdx @@ -4,7 +4,7 @@ sidebarTitle: Run tests mode: center --- -Bun has a built-in [test runner](https://bun.sh/docs/cli/test) with a Jest-like `expect` API. +Bun has a built-in [test runner](/test) with a Jest-like `expect` API. --- @@ -113,4 +113,4 @@ Ran 6 tests across 3 files. [59.00ms] --- -See [Docs > Test Runner](https://bun.sh/docs/cli/test) for complete documentation on the test runner. +See [Docs > Test Runner](/test) for complete documentation on the test runner. diff --git a/docs/guides/test/skip-tests.mdx b/docs/guides/test/skip-tests.mdx index 135e516efb..11a2565668 100644 --- a/docs/guides/test/skip-tests.mdx +++ b/docs/guides/test/skip-tests.mdx @@ -40,4 +40,4 @@ Ran 3 tests across 1 files. [74.00ms] See also: - [Mark a test as a todo](/guides/test/todo-tests) -- [Docs > Test runner > Writing tests](https://bun.sh/docs/test/writing) +- [Docs > Test runner > Writing tests](/test/writing-tests) diff --git a/docs/guides/test/snapshot.mdx b/docs/guides/test/snapshot.mdx index df16c0f73d..1be74fcbbf 100644 --- a/docs/guides/test/snapshot.mdx +++ b/docs/guides/test/snapshot.mdx @@ -49,7 +49,7 @@ test The `snap.test.ts.snap` file is a JavaScript file that exports a serialized version of the value passed into `expect()`. The `{foo: "bar"}` object has been serialized to JSON. ```js snap.test.ts.snap icon="file-code" -// Bun Snapshot v1, https://bun.sh/docs/test/snapshots +// Bun Snapshot v1, https://bun.com/docs/test/snapshots exports[`snapshot 1`] = ` { @@ -99,4 +99,4 @@ Ran 1 tests across 1 files. [102.00ms] --- -See [Docs > Test Runner > Snapshots](https://bun.sh/docs/test/snapshots) for complete documentation on snapshots with the Bun test runner. +See [Docs > Test Runner > Snapshots](/test/snapshots) for complete documentation on snapshots with the Bun test runner. diff --git a/docs/guides/test/spy-on.mdx b/docs/guides/test/spy-on.mdx index 74519c08c5..4685ddf047 100644 --- a/docs/guides/test/spy-on.mdx +++ b/docs/guides/test/spy-on.mdx @@ -46,4 +46,4 @@ test("turtles", () => { // [!code ++] --- -See [Docs > Test Runner > Mocks](https://bun.sh/docs/test/mocks) for complete documentation on mocking with the Bun test runner. +See [Docs > Test Runner > Mocks](/test/mocks) for complete documentation on mocking with the Bun test runner. diff --git a/docs/guides/test/svelte-test.mdx b/docs/guides/test/svelte-test.mdx index 54e555ae76..6f57573f0e 100644 --- a/docs/guides/test/svelte-test.mdx +++ b/docs/guides/test/svelte-test.mdx @@ -14,7 +14,7 @@ bun add @testing-library/svelte svelte@4 @happy-dom/global-registrator Then, save this plugin in your project. -```ts svelte-loader.js icon="/icons/typescript.svg" +```ts svelte-loader.ts icon="/icons/typescript.svg" import { plugin } from "bun"; import { compile } from "svelte/compiler"; import { readFileSync } from "fs"; @@ -61,10 +61,10 @@ Add this to `bunfig.toml` to tell Bun to preload the plugin, so it loads before ```toml bunfig.toml icon="settings" [test] # Tell Bun to load this plugin before your tests run -preload = ["./svelte-loader.js"] +preload = ["./svelte-loader.ts"] # This also works: -# test.preload = ["./svelte-loader.js"] +# test.preload = ["./svelte-loader.ts"] ``` --- diff --git a/docs/guides/test/testing-library.mdx b/docs/guides/test/testing-library.mdx index 36e5b61540..7e4ed0a440 100644 --- a/docs/guides/test/testing-library.mdx +++ b/docs/guides/test/testing-library.mdx @@ -8,7 +8,7 @@ You can use [Testing Library](https://testing-library.com/) with Bun's test runn --- -As a prerequisite to using Testing Library you will need to install [Happy Dom](https://github.com/capricorn86/happy-dom). ([see Bun's Happy DOM guide for more information](https://bun.sh/guides/test/happy-dom)). +As a prerequisite to using Testing Library you will need to install [Happy Dom](https://github.com/capricorn86/happy-dom). ([see Bun's Happy DOM guide for more information](/guides/test/happy-dom)). ```sh terminal icon="terminal" bun add -D @happy-dom/global-registrator @@ -24,7 +24,7 @@ bun add -D @testing-library/react @testing-library/dom @testing-library/jest-dom --- -Next you will need to create a preload script for Happy DOM and for Testing Library. For more details about the Happy DOM setup script see [Bun's Happy DOM guide](https://bun.sh/guides/test/happy-dom). +Next you will need to create a preload script for Happy DOM and for Testing Library. For more details about the Happy DOM setup script see [Bun's Happy DOM guide](/guides/test/happy-dom). ```ts happydom.ts icon="/icons/typescript.svg" import { GlobalRegistrator } from "@happy-dom/global-registrator"; @@ -90,4 +90,4 @@ test("Can use Testing Library", () => { --- -Refer to the [Testing Library docs](https://testing-library.com/), [Happy DOM repo](https://github.com/capricorn86/happy-dom) and [Docs > Test runner > DOM](https://bun.sh/docs/test/dom) for complete documentation on writing browser tests with Bun. +Refer to the [Testing Library docs](https://testing-library.com/), [Happy DOM repo](https://github.com/capricorn86/happy-dom) and [Docs > Test runner > DOM](/test/dom) for complete documentation on writing browser tests with Bun. diff --git a/docs/guides/test/timeout.mdx b/docs/guides/test/timeout.mdx index 182fbea339..9d333ac2c4 100644 --- a/docs/guides/test/timeout.mdx +++ b/docs/guides/test/timeout.mdx @@ -14,4 +14,4 @@ bun test --timeout 3000 # 3 seconds --- -See [Docs > Test runner](https://bun.sh/docs/cli/test) for complete documentation of `bun test`. +See [Docs > Test runner](/test) for complete documentation of `bun test`. diff --git a/docs/guides/test/todo-tests.mdx b/docs/guides/test/todo-tests.mdx index a349b088a1..e1ff067044 100644 --- a/docs/guides/test/todo-tests.mdx +++ b/docs/guides/test/todo-tests.mdx @@ -71,4 +71,4 @@ $ echo $? See also: - [Skip a test](/guides/test/skip-tests) -- [Docs > Test runner > Writing tests](https://bun.sh/docs/test/writing) +- [Docs > Test runner > Writing tests](/test/writing-tests) diff --git a/docs/guides/test/update-snapshots.mdx b/docs/guides/test/update-snapshots.mdx index 4cdd5f3c2f..f0069dbe33 100644 --- a/docs/guides/test/update-snapshots.mdx +++ b/docs/guides/test/update-snapshots.mdx @@ -46,4 +46,4 @@ Ran 1 tests across 1 files. [102.00ms] --- -See [Docs > Test Runner > Snapshots](https://bun.sh/docs/test/snapshots) for complete documentation on snapshots with the Bun test runner. +See [Docs > Test Runner > Snapshots](/test/snapshots) for complete documentation on snapshots with the Bun test runner. diff --git a/docs/guides/test/watch-mode.mdx b/docs/guides/test/watch-mode.mdx index dd24911c7a..8b3f7b9556 100644 --- a/docs/guides/test/watch-mode.mdx +++ b/docs/guides/test/watch-mode.mdx @@ -21,4 +21,4 @@ This will restart the running Bun process whenever a file change is detected. It --- -See [Docs > Test Runner](https://bun.sh/docs/cli/test) for complete documentation on the test runner. +See [Docs > Test Runner](/test) for complete documentation on the test runner. diff --git a/docs/guides/util/base64.mdx b/docs/guides/util/base64.mdx index 11ae957d4d..350ee72c4c 100644 --- a/docs/guides/util/base64.mdx +++ b/docs/guides/util/base64.mdx @@ -14,4 +14,4 @@ const decoded = atob(encoded); // => "hello world" --- -See [Docs > Web APIs](https://bun.com/docs/runtime/web-apis) for a complete breakdown of the Web APIs implemented in Bun. +See [Docs > Web APIs](/runtime/web-apis) for a complete breakdown of the Web APIs implemented in Bun. diff --git a/docs/guides/util/deep-equals.mdx b/docs/guides/util/deep-equals.mdx index f5f15fae28..c3ef2d626c 100644 --- a/docs/guides/util/deep-equals.mdx +++ b/docs/guides/util/deep-equals.mdx @@ -4,7 +4,7 @@ sidebarTitle: Deep equality mode: center --- -Check if two objects are deeply equal. This is used internally by `expect().toEqual()` in Bun's [test runner](https://bun.com/docs/test/writing). +Check if two objects are deeply equal. This is used internally by `expect().toEqual()` in Bun's [test runner](/test/writing-tests). ```ts index.ts icon="/icons/typescript.svg" const a = { a: 1, b: 2, c: { d: 3 } }; @@ -15,7 +15,7 @@ Bun.deepEquals(a, b); // true --- -Pass `true` as a third argument to enable strict mode. This is used internally by `expect().toStrictEqual()` in Bun's [test runner](https://bun.com/docs/test/writing). +Pass `true` as a third argument to enable strict mode. This is used internally by `expect().toStrictEqual()` in Bun's [test runner](/test/writing-tests). The following examples would return `true` in non-strict mode but `false` in strict mode. @@ -38,4 +38,4 @@ Bun.deepEquals(new Foo(), { a: 1 }, true); // false --- -See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities. +See [Docs > API > Utils](/runtime/utils) for more useful utilities. diff --git a/docs/guides/util/deflate.mdx b/docs/guides/util/deflate.mdx index 6c525db2ef..90f367bb4e 100644 --- a/docs/guides/util/deflate.mdx +++ b/docs/guides/util/deflate.mdx @@ -17,4 +17,4 @@ const decompressed = Bun.inflateSync(compressed); --- -See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities. +See [Docs > API > Utils](/runtime/utils) for more useful utilities. diff --git a/docs/guides/util/entrypoint.mdx b/docs/guides/util/entrypoint.mdx index a7105a00d0..e495ecc683 100644 --- a/docs/guides/util/entrypoint.mdx +++ b/docs/guides/util/entrypoint.mdx @@ -4,7 +4,7 @@ sidebarTitle: Check entrypoint mode: center --- -Bun provides a handful of module-specific utilities on the [`import.meta`](https://bun.com/docs/api/import-meta) object. Use `import.meta.main` to check if the current file is the entrypoint of the current process. +Bun provides a handful of module-specific utilities on the [`import.meta`](/runtime/module-resolution#import-meta) object. Use `import.meta.main` to check if the current file is the entrypoint of the current process. ```ts index.ts icon="/icons/typescript.svg" if (import.meta.main) { @@ -16,4 +16,4 @@ if (import.meta.main) { --- -See [Docs > API > import.meta](https://bun.com/docs/api/import-meta) for complete documentation. +See [Docs > API > import.meta](/runtime/module-resolution#import-meta) for complete documentation. diff --git a/docs/guides/util/escape-html.mdx b/docs/guides/util/escape-html.mdx index ca2fec3cfa..fc08af9a63 100644 --- a/docs/guides/util/escape-html.mdx +++ b/docs/guides/util/escape-html.mdx @@ -21,4 +21,4 @@ Bun.escapeHTML(""); --- -See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities. +See [Docs > API > Utils](/runtime/utils) for more useful utilities. diff --git a/docs/guides/util/file-url-to-path.mdx b/docs/guides/util/file-url-to-path.mdx index 1ff86fc31b..3990f3befb 100644 --- a/docs/guides/util/file-url-to-path.mdx +++ b/docs/guides/util/file-url-to-path.mdx @@ -13,4 +13,4 @@ Bun.fileURLToPath("file:///path/to/file.txt"); --- -See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities. +See [Docs > API > Utils](/runtime/utils) for more useful utilities. diff --git a/docs/guides/util/gzip.mdx b/docs/guides/util/gzip.mdx index 84b9d97067..0a3763f9ed 100644 --- a/docs/guides/util/gzip.mdx +++ b/docs/guides/util/gzip.mdx @@ -17,4 +17,4 @@ const decompressed = Bun.gunzipSync(compressed); --- -See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities. +See [Docs > API > Utils](/runtime/utils) for more useful utilities. diff --git a/docs/guides/util/hash-a-password.mdx b/docs/guides/util/hash-a-password.mdx index d45d6da6e2..ef01dde286 100644 --- a/docs/guides/util/hash-a-password.mdx +++ b/docs/guides/util/hash-a-password.mdx @@ -53,4 +53,4 @@ const isMatch = await Bun.password.verify(password, hash); --- -See [Docs > API > Hashing](https://bun.com/docs/api/hashing#bun-password) for complete documentation. +See [Docs > API > Hashing](/runtime/hashing#bun-password) for complete documentation. diff --git a/docs/guides/util/import-meta-dir.mdx b/docs/guides/util/import-meta-dir.mdx index 2890273034..8a2355cd89 100644 --- a/docs/guides/util/import-meta-dir.mdx +++ b/docs/guides/util/import-meta-dir.mdx @@ -4,7 +4,7 @@ sidebarTitle: import.meta.dir mode: center --- -Bun provides a handful of module-specific utilities on the [`import.meta`](https://bun.com/docs/api/import-meta) object. +Bun provides a handful of module-specific utilities on the [`import.meta`](/runtime/module-resolution#import-meta) object. ```ts /a/b/c.ts icon="/icons/typescript.svg" import.meta.dir; // => "/a/b" @@ -12,4 +12,4 @@ import.meta.dir; // => "/a/b" --- -See [Docs > API > import.meta](https://bun.com/docs/api/import-meta) for complete documentation. +See [Docs > API > import.meta](/runtime/module-resolution#import-meta) for complete documentation. diff --git a/docs/guides/util/import-meta-file.mdx b/docs/guides/util/import-meta-file.mdx index cf16226b35..01edbafa66 100644 --- a/docs/guides/util/import-meta-file.mdx +++ b/docs/guides/util/import-meta-file.mdx @@ -4,7 +4,7 @@ sidebarTitle: import.meta.file mode: center --- -Bun provides a handful of module-specific utilities on the [`import.meta`](https://bun.com/docs/api/import-meta) object. Use `import.meta.file` to retrieve the name of the current file. +Bun provides a handful of module-specific utilities on the [`import.meta`](/runtime/module-resolution#import-meta) object. Use `import.meta.file` to retrieve the name of the current file. ```ts /a/b/c.ts icon="/icons/typescript.svg" import.meta.file; // => "c.ts" @@ -12,4 +12,4 @@ import.meta.file; // => "c.ts" --- -See [Docs > API > import.meta](https://bun.com/docs/api/import-meta) for complete documentation. +See [Docs > API > import.meta](/runtime/module-resolution#import-meta) for complete documentation. diff --git a/docs/guides/util/import-meta-path.mdx b/docs/guides/util/import-meta-path.mdx index 3e1f20aec8..80e92bfd1f 100644 --- a/docs/guides/util/import-meta-path.mdx +++ b/docs/guides/util/import-meta-path.mdx @@ -4,7 +4,7 @@ sidebarTitle: import.meta.path mode: center --- -Bun provides a handful of module-specific utilities on the [`import.meta`](https://bun.com/docs/api/import-meta) object. Use `import.meta.path` to retrieve the absolute path of the current file. +Bun provides a handful of module-specific utilities on the [`import.meta`](/runtime/module-resolution#import-meta) object. Use `import.meta.path` to retrieve the absolute path of the current file. ```ts /a/b/c.ts icon="/icons/typescript.svg" import.meta.path; // => "/a/b/c.ts" @@ -12,4 +12,4 @@ import.meta.path; // => "/a/b/c.ts" --- -See [Docs > API > import.meta](https://bun.com/docs/api/import-meta) for complete documentation. +See [Docs > API > import.meta](/runtime/module-resolution#import-meta) for complete documentation. diff --git a/docs/guides/util/javascript-uuid.mdx b/docs/guides/util/javascript-uuid.mdx index 1d9a0ea0f6..1c0d4bfa6b 100644 --- a/docs/guides/util/javascript-uuid.mdx +++ b/docs/guides/util/javascript-uuid.mdx @@ -8,7 +8,7 @@ Use `crypto.randomUUID()` to generate a UUID v4. This API works in Bun, Node.js, ```ts crypto.randomUUID(); -// => "123e4567-e89b-12d3-a456-426614174000" +// => "123e4567-e89b-42d3-a456-426614174000" ``` --- @@ -22,4 +22,4 @@ Bun.randomUUIDv7(); --- -See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities. +See [Docs > API > Utils](/runtime/utils) for more useful utilities. diff --git a/docs/guides/util/main.mdx b/docs/guides/util/main.mdx index f308c64a7c..ea41dbf2d1 100644 --- a/docs/guides/util/main.mdx +++ b/docs/guides/util/main.mdx @@ -40,4 +40,4 @@ bun run foo.ts --- -See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities. +See [Docs > API > Utils](/runtime/utils) for more useful utilities. diff --git a/docs/guides/util/path-to-file-url.mdx b/docs/guides/util/path-to-file-url.mdx index aac29788df..65ffe7b201 100644 --- a/docs/guides/util/path-to-file-url.mdx +++ b/docs/guides/util/path-to-file-url.mdx @@ -13,4 +13,4 @@ Bun.pathToFileURL("/path/to/file.txt"); --- -See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities. +See [Docs > API > Utils](/runtime/utils) for more useful utilities. diff --git a/docs/guides/util/sleep.mdx b/docs/guides/util/sleep.mdx index 30daedc805..738738c213 100644 --- a/docs/guides/util/sleep.mdx +++ b/docs/guides/util/sleep.mdx @@ -21,4 +21,4 @@ await new Promise(resolve => setTimeout(resolve, ms)); --- -See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities. +See [Docs > API > Utils](/runtime/utils) for more useful utilities. diff --git a/docs/guides/util/version.mdx b/docs/guides/util/version.mdx index 73b3942744..5fa039b08a 100644 --- a/docs/guides/util/version.mdx +++ b/docs/guides/util/version.mdx @@ -20,4 +20,4 @@ Bun.revision; // => "49231b2cb9aa48497ab966fc0bb6b742dacc4994" --- -See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities. +See [Docs > API > Utils](/runtime/utils) for more useful utilities. diff --git a/docs/guides/util/which-path-to-executable-bin.mdx b/docs/guides/util/which-path-to-executable-bin.mdx index fe9cda53a6..e524561089 100644 --- a/docs/guides/util/which-path-to-executable-bin.mdx +++ b/docs/guides/util/which-path-to-executable-bin.mdx @@ -14,4 +14,4 @@ Bun.which("bun"); // => "/home/user/.bun/bin/bun" --- -See [Docs > API > Utils](https://bun.com/docs/api/utils#bun-which) for complete documentation. +See [Docs > API > Utils](/runtime/utils#bun-which) for complete documentation. diff --git a/docs/guides/websocket/context.mdx b/docs/guides/websocket/context.mdx index 85c8ecc05b..3104ec9a12 100644 --- a/docs/guides/websocket/context.mdx +++ b/docs/guides/websocket/context.mdx @@ -6,7 +6,7 @@ mode: center When building a WebSocket server, it's typically necessary to store some identifying information or context associated with each connected client. -With [Bun.serve()](https://bun.com/docs/api/websockets contextual-data), this "contextual data" is set when the connection is initially upgraded by passing a `data` parameter in the `server.upgrade()` call. +With [Bun.serve()](/runtime/http/websockets#contextual-data), this "contextual data" is set when the connection is initially upgraded by passing a `data` parameter in the `server.upgrade()` call. ```ts server.ts icon="/icons/typescript.svg" Bun.serve({ diff --git a/docs/guides/websocket/simple.mdx b/docs/guides/websocket/simple.mdx index 4450b0e418..6239d13365 100644 --- a/docs/guides/websocket/simple.mdx +++ b/docs/guides/websocket/simple.mdx @@ -4,7 +4,7 @@ sidebarTitle: Simple server mode: center --- -Start a simple WebSocket server using [`Bun.serve`](https://bun.com/docs/api/http). +Start a simple WebSocket server using [`Bun.serve`](/runtime/http/server). Inside `fetch`, we attempt to upgrade incoming `ws:` or `wss:` requests to WebSocket connections. diff --git a/docs/guides/write-file/basic.mdx b/docs/guides/write-file/basic.mdx index 4edd4207a2..6f3eec5287 100644 --- a/docs/guides/write-file/basic.mdx +++ b/docs/guides/write-file/basic.mdx @@ -6,7 +6,7 @@ mode: center This code snippet writes a string to disk at a particular _absolute path_. -It uses the fast [`Bun.write()`](https://bun.com/docs/api/file-io#writing-files-bun-write) API to efficiently write data to disk. The first argument is a _destination_; the second is the _data_ to write. +It uses the fast [`Bun.write()`](/runtime/file-io#writing-files-bun-write) API to efficiently write data to disk. The first argument is a _destination_; the second is the _data_ to write. ```ts const path = "/path/to/file.txt"; @@ -43,4 +43,4 @@ const bytes = await Bun.write(path, "Lorem ipsum"); --- -See [Docs > API > File I/O](https://bun.com/docs/api/file-io#writing-files-bun-write) for complete documentation of `Bun.write()`. +See [Docs > API > File I/O](/runtime/file-io#writing-files-bun-write) for complete documentation of `Bun.write()`. diff --git a/docs/guides/write-file/blob.mdx b/docs/guides/write-file/blob.mdx index ccaaaefc78..78810b740d 100644 --- a/docs/guides/write-file/blob.mdx +++ b/docs/guides/write-file/blob.mdx @@ -6,7 +6,7 @@ mode: center This code snippet writes a `Blob` to disk at a particular path. -It uses the fast [`Bun.write()`](https://bun.com/docs/api/file-io#writing-files-bun-write) API to efficiently write data to disk. The first argument is a _destination_, like an absolute path or `BunFile` instance. The second argument is the _data_ to write. +It uses the fast [`Bun.write()`](/runtime/file-io#writing-files-bun-write) API to efficiently write data to disk. The first argument is a _destination_, like an absolute path or `BunFile` instance. The second argument is the _data_ to write. ```ts const path = "/path/to/file.txt"; @@ -27,4 +27,4 @@ await Bun.write(path, data); --- -See [Docs > API > File I/O](https://bun.com/docs/api/file-io#writing-files-bun-write) for complete documentation of `Bun.write()`. +See [Docs > API > File I/O](/runtime/file-io#writing-files-bun-write) for complete documentation of `Bun.write()`. diff --git a/docs/guides/write-file/cat.mdx b/docs/guides/write-file/cat.mdx index 44b5d91cf0..92ca362e04 100644 --- a/docs/guides/write-file/cat.mdx +++ b/docs/guides/write-file/cat.mdx @@ -4,7 +4,7 @@ sidebarTitle: Write file to stdout mode: center --- -Bun exposes `stdout` as a `BunFile` with the `Bun.stdout` property. This can be used as a destination for [`Bun.write()`](https://bun.com/docs/api/file-io#writing-files-bun-write). +Bun exposes `stdout` as a `BunFile` with the `Bun.stdout` property. This can be used as a destination for [`Bun.write()`](/runtime/file-io#writing-files-bun-write). This code writes a file to `stdout` similar to the `cat` command in Unix. @@ -16,4 +16,4 @@ await Bun.write(Bun.stdout, file); --- -See [Docs > API > File I/O](https://bun.com/docs/api/file-io#writing-files-bun-write) for complete documentation of `Bun.write()`. +See [Docs > API > File I/O](/runtime/file-io#writing-files-bun-write) for complete documentation of `Bun.write()`. diff --git a/docs/guides/write-file/file-cp.mdx b/docs/guides/write-file/file-cp.mdx index d43d5f7225..d8eb08d67c 100644 --- a/docs/guides/write-file/file-cp.mdx +++ b/docs/guides/write-file/file-cp.mdx @@ -6,7 +6,7 @@ mode: center This code snippet copies a file to another location on disk. -It uses the fast [`Bun.write()`](https://bun.com/docs/api/file-io#writing-files-bun-write) API to efficiently write data to disk. The first argument is a _destination_, like an absolute path or `BunFile` instance. The second argument is the _data_ to write. +It uses the fast [`Bun.write()`](/runtime/file-io#writing-files-bun-write) API to efficiently write data to disk. The first argument is a _destination_, like an absolute path or `BunFile` instance. The second argument is the _data_ to write. ```ts const file = Bun.file("/path/to/original.txt"); @@ -15,4 +15,4 @@ await Bun.write("/path/to/copy.txt", file); --- -See [Docs > API > File I/O](https://bun.com/docs/api/file-io#writing-files-bun-write) for complete documentation of `Bun.write()`. +See [Docs > API > File I/O](/runtime/file-io#writing-files-bun-write) for complete documentation of `Bun.write()`. diff --git a/docs/guides/write-file/filesink.mdx b/docs/guides/write-file/filesink.mdx index 5414ed933f..68333e5445 100644 --- a/docs/guides/write-file/filesink.mdx +++ b/docs/guides/write-file/filesink.mdx @@ -51,4 +51,4 @@ writer.end(); --- -Full documentation: [FileSink](https://bun.com/docs/api/file-io#incremental-writing-with-filesink). +Full documentation: [FileSink](/runtime/file-io#incremental-writing-with-filesink). diff --git a/docs/guides/write-file/response.mdx b/docs/guides/write-file/response.mdx index 2f0721623a..20e04ff69c 100644 --- a/docs/guides/write-file/response.mdx +++ b/docs/guides/write-file/response.mdx @@ -6,7 +6,7 @@ mode: center This code snippet writes a `Response` to disk at a particular path. Bun will consume the `Response` body according to its `Content-Type` header. -It uses the fast [`Bun.write()`](https://bun.com/docs/api/file-io#writing-files-bun-write) API to efficiently write data to disk. The first argument is a _destination_, like an absolute path or `BunFile` instance. The second argument is the _data_ to write. +It uses the fast [`Bun.write()`](/runtime/file-io#writing-files-bun-write) API to efficiently write data to disk. The first argument is a _destination_, like an absolute path or `BunFile` instance. The second argument is the _data_ to write. ```ts const result = await fetch("https://bun.com"); @@ -16,4 +16,4 @@ await Bun.write(path, result); --- -See [Docs > API > File I/O](https://bun.com/docs/api/file-io#writing-files-bun-write) for complete documentation of `Bun.write()`. +See [Docs > API > File I/O](/runtime/file-io#writing-files-bun-write) for complete documentation of `Bun.write()`. diff --git a/docs/guides/write-file/stdout.mdx b/docs/guides/write-file/stdout.mdx index 1e980c0947..3c1d9fd681 100644 --- a/docs/guides/write-file/stdout.mdx +++ b/docs/guides/write-file/stdout.mdx @@ -12,7 +12,7 @@ console.log("Lorem ipsum"); --- -For more advanced use cases, Bun exposes `stdout` as a `BunFile` via the `Bun.stdout` property. This can be used as a destination for [`Bun.write()`](https://bun.com/docs/api/file-io#writing-files-bun-write). +For more advanced use cases, Bun exposes `stdout` as a `BunFile` via the `Bun.stdout` property. This can be used as a destination for [`Bun.write()`](/runtime/file-io#writing-files-bun-write). ```ts await Bun.write(Bun.stdout, "Lorem ipsum"); @@ -20,4 +20,4 @@ await Bun.write(Bun.stdout, "Lorem ipsum"); --- -See [Docs > API > File I/O](https://bun.com/docs/api/file-io#writing-files-bun-write) for complete documentation of `Bun.write()`. +See [Docs > API > File I/O](/runtime/file-io#writing-files-bun-write) for complete documentation of `Bun.write()`. diff --git a/docs/guides/write-file/stream.mdx b/docs/guides/write-file/stream.mdx index 739c60c320..1c13bd5c48 100644 --- a/docs/guides/write-file/stream.mdx +++ b/docs/guides/write-file/stream.mdx @@ -4,7 +4,7 @@ sidebarTitle: Write stream mode: center --- -To write a `ReadableStream` to disk, first create a `Response` instance from the stream. This `Response` can then be written to disk using [`Bun.write()`](https://bun.com/docs/api/file-io#writing-files-bun-write). +To write a `ReadableStream` to disk, first create a `Response` instance from the stream. This `Response` can then be written to disk using [`Bun.write()`](/runtime/file-io#writing-files-bun-write). ```ts const stream: ReadableStream = ...; @@ -16,4 +16,4 @@ await Bun.write(path, response); --- -See [Docs > API > File I/O](https://bun.com/docs/api/file-io#writing-files-bun-write) for complete documentation of `Bun.write()`. +See [Docs > API > File I/O](/runtime/file-io#writing-files-bun-write) for complete documentation of `Bun.write()`. diff --git a/docs/guides/write-file/unlink.mdx b/docs/guides/write-file/unlink.mdx index d20cc37287..7835f503d2 100644 --- a/docs/guides/write-file/unlink.mdx +++ b/docs/guides/write-file/unlink.mdx @@ -15,4 +15,4 @@ await file.delete(); --- -See [Docs > API > File I/O](https://bun.com/docs/api/file-io#reading-files-bun-file) for complete documentation of `Bun.file()`. +See [Docs > API > File I/O](/runtime/file-io#reading-files-bun-file) for complete documentation of `Bun.file()`. diff --git a/docs/index.mdx b/docs/index.mdx index f45293b998..471e021af4 100644 --- a/docs/index.mdx +++ b/docs/index.mdx @@ -127,7 +127,7 @@ Bun is designed from the ground-up with today's JavaScript ecosystem in mind. - **Speed**. Bun processes start [4x faster than Node.js](https://twitter.com/jarredsumner/status/1499225725492076544) currently (try it yourself!) - **TypeScript & JSX support**. You can directly execute `.jsx`, `.ts`, and `.tsx` files; Bun's transpiler converts these to vanilla JavaScript before execution. - **ESM & CommonJS compatibility**. The world is moving towards ES modules (ESM), but millions of packages on npm still require CommonJS. Bun recommends ES modules, but supports CommonJS. -- **Web-standard APIs**. Bun implements standard Web APIs like `fetch`, `WebSocket`, and `ReadableStream`. Bun is powered by the JavaScriptCore engine, which is developed by Apple for Safari, so some APIs like [`Headers`](https://developer.mozilla.org/en-US/Web/API/Headers) and [`URL`](https://developer.mozilla.org/en-US/Web/API/URL) directly use [Safari's implementation](https://github.com/oven-sh/bun/blob/HEAD/src/bun.js/bindings/webcore/JSFetchHeaders.cpp). +- **Web-standard APIs**. Bun implements standard Web APIs like `fetch`, `WebSocket`, and `ReadableStream`. Bun is powered by the JavaScriptCore engine, which is developed by Apple for Safari, so some APIs like [`Headers`](https://developer.mozilla.org/en-US/docs/Web/API/Headers) and [`URL`](https://developer.mozilla.org/en-US/docs/Web/API/URL) directly use [Safari's implementation](https://github.com/oven-sh/bun/blob/HEAD/src/bun.js/bindings/webcore/JSFetchHeaders.cpp). - **Node.js compatibility**. In addition to supporting Node-style module resolution, Bun aims for full compatibility with built-in Node.js globals (`process`, `Buffer`) and modules (`path`, `fs`, `http`, etc.) _This is an ongoing effort that is not complete._ Refer to the [compatibility page](/runtime/nodejs-compat) for the current status. Bun is more than a runtime. The long-term goal is to be a cohesive, infrastructural toolkit for building apps with JavaScript/TypeScript, including a package manager, transpiler, bundler, script runner, test runner, and more. diff --git a/docs/installation.mdx b/docs/installation.mdx index 4f518c3033..0280436eec 100644 --- a/docs/installation.mdx +++ b/docs/installation.mdx @@ -1,6 +1,6 @@ --- title: Installation -description: Install Bun +description: Install Bun with npm, Homebrew, Docker, or the official script. --- ## Overview diff --git a/docs/normalize-internal-links.js b/docs/normalize-internal-links.js index 3fd5d44504..97a1957b4d 100644 --- a/docs/normalize-internal-links.js +++ b/docs/normalize-internal-links.js @@ -15,7 +15,6 @@ if (element.getAttribute("rel") === "noreferrer") { element.removeAttribute("rel"); } - console.log(`Removed target="_blank" from: ${element.textContent || element.innerHTML.substring(0, 50)}`); } }); }); diff --git a/docs/pm/bunx.mdx b/docs/pm/bunx.mdx index d2299cf9df..48dafc0e73 100644 --- a/docs/pm/bunx.mdx +++ b/docs/pm/bunx.mdx @@ -30,7 +30,7 @@ Packages can declare executables in the `"bin"` field of their `package.json`. T These executables are commonly plain JavaScript files marked with a [shebang line]() to indicate which program should be used to execute them. The following file indicates that it should be executed with `node`. -```ts dist/index.js icon="/icons/javascript.svg" +```js dist/index.js icon="/icons/javascript.svg" #!/usr/bin/env node console.log("Hello world!"); @@ -78,6 +78,6 @@ bunx --package @angular/cli ng To force bun to always be used with a script, use a shebang. -```ts dist/index.js icon="/icons/javascript.svg" +```js dist/index.js icon="/icons/javascript.svg" #!/usr/bin/env bun ``` diff --git a/docs/pm/cli/install.mdx b/docs/pm/cli/install.mdx index 65b0c3ce8a..054e364a91 100644 --- a/docs/pm/cli/install.mdx +++ b/docs/pm/cli/install.mdx @@ -135,7 +135,7 @@ For more information on filtering with `bun install`, refer to [Package Manager Bun supports npm's `"overrides"` and Yarn's `"resolutions"` in `package.json`. These are mechanisms for specifying a version range for _metadependencies_—the dependencies of your dependencies. Refer to [Package manager > Overrides and resolutions](/pm/overrides) for complete documentation. {/* prettier-ignore */} -```json package.json file="file-json" +```json package.json icon="file-json" { "name": "my-app", "dependencies": { diff --git a/docs/pm/cli/link.mdx b/docs/pm/cli/link.mdx index 860d6be2b4..2591abbf30 100644 --- a/docs/pm/cli/link.mdx +++ b/docs/pm/cli/link.mdx @@ -14,7 +14,7 @@ bun link ``` ```txt -bun link v1.x (7416672e) +bun link v1.3.2 (7416672e) Success! Registered "cool-pkg" To use cool-pkg in a project, run: @@ -53,7 +53,7 @@ bun unlink ``` ```txt -bun unlink v1.x (7416672e) +bun unlink v1.3.2 (7416672e) ``` --- diff --git a/docs/pm/cli/outdated.mdx b/docs/pm/cli/outdated.mdx index da72e0c490..69a70b3998 100644 --- a/docs/pm/cli/outdated.mdx +++ b/docs/pm/cli/outdated.mdx @@ -15,7 +15,7 @@ bun outdated | Package | Current | Update | Latest | | ------------------------------ | ------- | --------- | ---------- | | @sinclair/typebox | 0.34.15 | 0.34.16 | 0.34.16 | -| @types/bun (dev) | 1.2.0 | 1.2.23 | 1.2.23 | +| @types/bun (dev) | 1.3.0 | 1.3.2 | 1.3.2 | | eslint (dev) | 8.57.1 | 8.57.1 | 9.20.0 | | eslint-plugin-security (dev) | 2.1.1 | 2.1.1 | 3.0.1 | | eslint-plugin-sonarjs (dev) | 0.23.0 | 0.23.0 | 3.0.1 | @@ -55,7 +55,7 @@ bun outdated eslint-plugin-security eslint-plugin-sonarjs You can also pass glob patterns to check for outdated packages: ```sh terminal icon="terminal" -bun outdated eslint* +bun outdated 'eslint*' ``` ```txt @@ -75,7 +75,7 @@ bun outdated '@types/*' ```txt | Package | Current | Update | Latest | | ------------------ | ------- | ------ | ------ | -| @types/bun (dev) | 1.2.0 | 1.2.23 | 1.2.23 | +| @types/bun (dev) | 1.3.0 | 1.3.2 | 1.3.2 | ``` Or to exclude all `@types/*` packages: diff --git a/docs/pm/workspaces.mdx b/docs/pm/workspaces.mdx index e524822b89..961037914a 100644 --- a/docs/pm/workspaces.mdx +++ b/docs/pm/workspaces.mdx @@ -43,8 +43,7 @@ In the root `package.json`, the `"workspaces"` key is used to indicate which sub **Glob support** — Bun supports full glob syntax in `"workspaces"`, including negative patterns (e.g. - `!**/excluded/**`). See [here](https://bun.com/docs/api/glob#supported-glob-patterns) for a comprehensive list of - supported syntax. + `!**/excluded/**`). See [here](/runtime/glob#supported-glob-patterns) for a comprehensive list of supported syntax. ```json package.json icon="file-json" diff --git a/docs/project/building-windows.mdx b/docs/project/building-windows.mdx index 59cb8f788e..9a4a3ab2d7 100644 --- a/docs/project/building-windows.mdx +++ b/docs/project/building-windows.mdx @@ -22,7 +22,7 @@ By default, running unverified scripts are blocked. Bun v1.1 or later. We use Bun to run it's own code generators. ```ps1 -> irm bun.com/install.ps1 | iex +> irm bun.sh/install.ps1 | iex ``` [Visual Studio](https://visualstudio.microsoft.com) with the "Desktop Development with C++" workload. While installing, make sure to install Git as well, if Git for Windows is not already installed. diff --git a/docs/project/license.mdx b/docs/project/license.mdx index 679ff7be84..fa51203c26 100644 --- a/docs/project/license.mdx +++ b/docs/project/license.mdx @@ -11,7 +11,7 @@ Bun statically links JavaScriptCore (and WebKit) which is LGPL-2 licensed. WebCo > (1) If you statically link against an LGPL'd library, you must also provide your application in an object (not necessarily source) format, so that a user has the opportunity to modify the library and relink the application. -You can find the patched version of WebKit used by Bun here: [https://github.com/oven-sh/webkit](https://github.com/oven-sh/webkit). If you would like to relink Bun with changes: +You can find the patched version of WebKit used by Bun here: https://github.com/oven-sh/webkit. If you would like to relink Bun with changes: - `git submodule update --init --recursive` - `make jsc` diff --git a/docs/quickstart.mdx b/docs/quickstart.mdx index 59939e6887..6781199996 100644 --- a/docs/quickstart.mdx +++ b/docs/quickstart.mdx @@ -92,7 +92,7 @@ Build a minimal HTTP server with `Bun.serve`, run it locally, then evolve it by Then add the following to your `compilerOptions` in `tsconfig.json`: - ```json tsconfig.json icon="file-code" + ```json tsconfig.json icon="file-json" { "compilerOptions": { "lib": ["ESNext"], @@ -220,7 +220,7 @@ Build a minimal HTTP server with `Bun.serve`, run it locally, then evolve it by Bun can also execute `"scripts"` from your `package.json`. Add the following script: {/* prettier-ignore */} -```json package.json icon="file-code" +```json package.json icon="file-json" { "name": "quickstart", "module": "index.ts", diff --git a/docs/runtime/bunfig.mdx b/docs/runtime/bunfig.mdx index a296acb827..669e9a1330 100644 --- a/docs/runtime/bunfig.mdx +++ b/docs/runtime/bunfig.mdx @@ -452,8 +452,8 @@ To configure the directory where Bun installs globally installed binaries and CL Environment variable: `BUN_INSTALL_BIN` ```toml title="bunfig.toml" icon="settings" -# where globally-installed package bins are linked [install] +# where globally-installed package bins are linked globalBinDir = "~/.bun/bin" ``` @@ -585,6 +585,32 @@ editor = "code" # - "emacs" ``` +### `install.security.scanner` + +Configure a security scanner to scan packages for vulnerabilities before installation. + +First, install a security scanner from npm: + +```bash terminal icon="terminal" +bun add -d @acme/bun-security-scanner +``` + +Then configure it in your `bunfig.toml`: + +```toml bunfig.toml icon="settings" +[install.security] +scanner = "@acme/bun-security-scanner" +``` + +When a security scanner is configured: + +- Auto-install is automatically disabled for security +- Packages are scanned before installation +- Installation is cancelled if fatal issues are found +- Security warnings are displayed during installation + +Learn more about [using and writing security scanners](/pm/security-scanner-api). + ### `install.minimumReleaseAge` Configure a minimum age (in seconds) for npm package versions. Package versions published more recently than this threshold will be filtered out during installation. Default is `null` (disabled). diff --git a/docs/runtime/c-compiler.mdx b/docs/runtime/c-compiler.mdx index 14c0e27216..516fc3efbd 100644 --- a/docs/runtime/c-compiler.mdx +++ b/docs/runtime/c-compiler.mdx @@ -13,7 +13,7 @@ See the [introduction blog post](https://bun.com/blog/compile-and-run-c-in-js) f JavaScript: -```ts hello.js icon="file-code" +```ts hello.ts icon="file-code" import { cc } from "bun:ffi"; import source from "./hello.c" with { type: "file" }; @@ -87,7 +87,7 @@ You can also pass a `napi_env` to receive the N-API environment used to call the For example, if you have a string in C, you can return it to JavaScript like this: -```ts hello.js +```ts hello.ts import { cc } from "bun:ffi"; import source from "./hello.c" with { type: "file" }; diff --git a/docs/runtime/child-process.mdx b/docs/runtime/child-process.mdx index 6be68a6f27..8ebdc0b92a 100644 --- a/docs/runtime/child-process.mdx +++ b/docs/runtime/child-process.mdx @@ -289,7 +289,7 @@ childProc.disconnect(); To use IPC between a `bun` process and a Node.js process, set `serialization: "json"` in `Bun.spawn`. This is because Node.js and Bun use different JavaScript engines with different object serialization formats. -```ts bun-node-ipc.js icon="file-code" +```js bun-node-ipc.js icon="file-code" if (typeof Bun !== "undefined") { const prefix = `[bun ${process.versions.bun} šŸ‡]`; const node = Bun.spawn({ diff --git a/docs/runtime/cookies.mdx b/docs/runtime/cookies.mdx index 641dfc7989..0d90bd0420 100644 --- a/docs/runtime/cookies.mdx +++ b/docs/runtime/cookies.mdx @@ -9,7 +9,7 @@ Bun provides native APIs for working with HTTP cookies through `Bun.Cookie` and `Bun.CookieMap` provides a Map-like interface for working with collections of cookies. It implements the `Iterable` interface, allowing you to use it with `for...of` loops and other iteration methods. -```ts filename="cookies.ts" icon="/icons/typescript.svg" +```ts title="cookies.ts" icon="/icons/typescript.svg" // Empty cookie map const cookies = new Bun.CookieMap(); @@ -33,7 +33,7 @@ const cookies3 = new Bun.CookieMap([ In Bun's HTTP server, the `cookies` property on the request object (in `routes`) is an instance of `CookieMap`: -```ts filename="server.ts" icon="/icons/typescript.svg" +```ts title="server.ts" icon="/icons/typescript.svg" const server = Bun.serve({ routes: { "/": req => { @@ -68,7 +68,7 @@ console.log("Server listening at: " + server.url); Retrieves a cookie by name. Returns `null` if the cookie doesn't exist. -```ts filename="get-cookie.ts" icon="/icons/typescript.svg" +```ts title="get-cookie.ts" icon="/icons/typescript.svg" // Get by name const cookie = cookies.get("session"); @@ -81,7 +81,7 @@ if (cookie != null) { Checks if a cookie with the given name exists. -```ts filename="has-cookie.ts" icon="/icons/typescript.svg" +```ts title="has-cookie.ts" icon="/icons/typescript.svg" // Check if cookie exists if (cookies.has("session")) { // Cookie exists @@ -96,7 +96,7 @@ if (cookies.has("session")) { Adds or updates a cookie in the map. Cookies default to `{ path: "/", sameSite: "lax" }`. -```ts filename="set-cookie.ts" icon="/icons/typescript.svg" +```ts title="set-cookie.ts" icon="/icons/typescript.svg" // Set by name and value cookies.set("session", "abc123"); @@ -119,7 +119,7 @@ cookies.set(cookie); Removes a cookie from the map. When applied to a Response, this adds a cookie with an empty string value and an expiry date in the past. A cookie will only delete successfully on the browser if the domain and path is the same as it was when the cookie was created. -```ts filename="delete-cookie.ts" icon="/icons/typescript.svg" +```ts title="delete-cookie.ts" icon="/icons/typescript.svg" // Delete by name using default domain and path. cookies.delete("session"); @@ -135,7 +135,7 @@ cookies.delete({ Converts the cookie map to a serializable format. -```ts filename="cookie-to-json.ts" icon="/icons/typescript.svg" +```ts title="cookie-to-json.ts" icon="/icons/typescript.svg" const json = cookies.toJSON(); ``` @@ -145,7 +145,7 @@ Returns an array of values for Set-Cookie headers that can be used to apply all When using `Bun.serve()`, you don't need to call this method explicitly. Any changes made to the `req.cookies` map are automatically applied to the response headers. This method is primarily useful when working with other HTTP server implementations. -```ts filename="node-server.js" icon="file-code" +```js title="node-server.js" icon="file-code" import { createServer } from "node:http"; import { CookieMap } from "bun"; @@ -172,7 +172,7 @@ server.listen(3000, () => { `CookieMap` provides several methods for iteration: -```ts filename="iterate-cookies.ts" icon="/icons/typescript.svg" +```ts title="iterate-cookies.ts" icon="/icons/typescript.svg" // Iterate over [name, cookie] entries for (const [name, value] of cookies) { console.log(`${name}: ${value}`); @@ -205,7 +205,7 @@ cookies.forEach((value, name) => { Returns the number of cookies in the map. -```ts filename="cookie-size.ts" icon="/icons/typescript.svg" +```ts title="cookie-size.ts" icon="/icons/typescript.svg" console.log(cookies.size); // Number of cookies ``` @@ -213,7 +213,7 @@ console.log(cookies.size); // Number of cookies `Bun.Cookie` represents an HTTP cookie with its name, value, and attributes. -```ts filename="cookie-class.ts" icon="/icons/typescript.svg" +```ts title="cookie-class.ts" icon="/icons/typescript.svg" import { Cookie } from "bun"; // Create a basic cookie @@ -243,7 +243,7 @@ const objCookie = new Bun.Cookie({ ### Constructors -```ts filename="constructors.ts" icon="/icons/typescript.svg" +```ts title="constructors.ts" icon="/icons/typescript.svg" // Basic constructor with name/value new Bun.Cookie(name: string, value: string); @@ -259,7 +259,7 @@ new Bun.Cookie(options: CookieInit); ### Properties -```ts filename="cookie-properties.ts" icon="/icons/typescript.svg" +```ts title="cookie-properties.ts" icon="/icons/typescript.svg" cookie.name; // string - Cookie name cookie.value; // string - Cookie value cookie.domain; // string | null - Domain scope (null if not specified) @@ -278,7 +278,7 @@ cookie.httpOnly; // boolean - Accessible only via HTTP (not JavaScript) Checks if the cookie has expired. -```ts filename="is-expired.ts" icon="/icons/typescript.svg" +```ts title="is-expired.ts" icon="/icons/typescript.svg" // Expired cookie (Date in the past) const expiredCookie = new Bun.Cookie("name", "value", { expires: new Date(Date.now() - 1000), @@ -302,7 +302,7 @@ console.log(sessionCookie.isExpired()); // false Returns a string representation of the cookie suitable for a `Set-Cookie` header. -```ts filename="serialize-cookie.ts" icon="/icons/typescript.svg" +```ts title="serialize-cookie.ts" icon="/icons/typescript.svg" const cookie = new Bun.Cookie("session", "abc123", { domain: "example.com", path: "/admin", @@ -322,7 +322,7 @@ console.log(cookie.toString()); Converts the cookie to a plain object suitable for JSON serialization. -```ts filename="cookie-json.ts" icon="/icons/typescript.svg" +```ts title="cookie-json.ts" icon="/icons/typescript.svg" const cookie = new Bun.Cookie("session", "abc123", { secure: true, httpOnly: true, @@ -349,7 +349,7 @@ const jsonString = JSON.stringify(cookie); Parses a cookie string into a `Cookie` instance. -```ts filename="parse-cookie.ts" icon="/icons/typescript.svg" +```ts title="parse-cookie.ts" icon="/icons/typescript.svg" const cookie = Bun.Cookie.parse("name=value; Path=/; Secure; SameSite=Lax"); console.log(cookie.name); // "name" @@ -363,7 +363,7 @@ console.log(cookie.sameSite); // "lax" Factory method to create a cookie. -```ts filename="cookie-from.ts" icon="/icons/typescript.svg" +```ts title="cookie-from.ts" icon="/icons/typescript.svg" const cookie = Bun.Cookie.from("session", "abc123", { httpOnly: true, secure: true, @@ -373,7 +373,7 @@ const cookie = Bun.Cookie.from("session", "abc123", { ## Types -```ts filename="types.ts" icon="/icons/typescript.svg" +```ts title="types.ts" icon="/icons/typescript.svg" interface CookieInit { name?: string; value?: string; diff --git a/docs/runtime/debugger.mdx b/docs/runtime/debugger.mdx index c718f2632f..add9018b37 100644 --- a/docs/runtime/debugger.mdx +++ b/docs/runtime/debugger.mdx @@ -115,7 +115,7 @@ Here's a cheat sheet explaining the functions of the control flow buttons. ### Visual Studio Code Debugger -Experimental support for debugging Bun scripts is available in Visual Studio Code. To use it, you'll need to install the [Bun VSCode extension](https://bun.com/guides/runtime/vscode-debugger). +Experimental support for debugging Bun scripts is available in Visual Studio Code. To use it, you'll need to install the [Bun VSCode extension](/guides/runtime/vscode-debugger). --- diff --git a/docs/runtime/environment-variables.mdx b/docs/runtime/environment-variables.mdx index 529b5348af..087da9ef56 100644 --- a/docs/runtime/environment-variables.mdx +++ b/docs/runtime/environment-variables.mdx @@ -13,7 +13,7 @@ Bun reads the following files automatically (listed in order of increasing prece - `.env.production`, `.env.development`, `.env.test` (depending on value of `NODE_ENV`) - `.env.local` -```txt .env icon="settings" +```ini .env icon="settings" FOO=hello BAR=world ``` @@ -46,7 +46,7 @@ bun exec 'FOO=helloworld bun run dev' On Windows, `package.json` scripts called with `bun run` will automatically use the **bun shell**, making the following also cross-platform. -```json package.json +```json package.json icon="file-json" "scripts": { "dev": "NODE_ENV=development bun --watch app.ts", }, @@ -95,7 +95,7 @@ Explicitly provided environment files via `--env-file` will still be loaded even Bun supports double quotes, single quotes, and template literal backticks: -```txt .env icon="settings" +```ini .env icon="settings" FOO='hello' FOO="hello" FOO=`hello` @@ -105,7 +105,7 @@ FOO=`hello` Environment variables are automatically _expanded_. This means you can reference previously-defined variables in your environment variables. -```txt .env icon="settings" +```ini .env icon="settings" FOO=world BAR=hello$FOO ``` @@ -116,7 +116,7 @@ process.env.BAR; // => "helloworld" This is useful for constructing connection strings or other compound values. -```txt .env icon="settings" +```ini .env icon="settings" DB_USER=postgres DB_PASSWORD=secret DB_HOST=localhost @@ -126,7 +126,7 @@ DB_URL=postgres://$DB_USER:$DB_PASSWORD@$DB_HOST:$DB_PORT/$DB_NAME This can be disabled by escaping the `$` with a backslash. -```txt .env icon="settings" +```ini .env icon="settings" FOO=world BAR=hello\$FOO ``` diff --git a/docs/runtime/http/routing.mdx b/docs/runtime/http/routing.mdx index 37cb4b3545..418e421866 100644 --- a/docs/runtime/http/routing.mdx +++ b/docs/runtime/http/routing.mdx @@ -102,7 +102,7 @@ Bun.serve({ TypeScript parses route parameters when passed as a string literal, so that your editor will show autocomplete when accessing `request.params`. -```ts title="index.ts" +```ts title="index.ts" icon="/icons/typescript.svg" import type { BunRequest } from "bun"; Bun.serve({ diff --git a/docs/runtime/http/server.mdx b/docs/runtime/http/server.mdx index f230f1e7ea..59083df7f2 100644 --- a/docs/runtime/http/server.mdx +++ b/docs/runtime/http/server.mdx @@ -32,12 +32,8 @@ const server = Bun.serve({ // Redirect from /blog/hello to /blog/hello/world "/blog/hello": Response.redirect("/blog/hello/world"), - // Serve a file by buffering it in memory - "/favicon.ico": new Response(await Bun.file("./favicon.ico").bytes(), { - headers: { - "Content-Type": "image/x-icon", - }, - }), + // Serve a file by lazily loading it into memory + "/favicon.ico": Bun.file("./favicon.ico"), }, // (optional) fallback for unmatched routes: @@ -126,7 +122,7 @@ bun --port=4002 server.ts - `BUN_PORT` environment variable ```sh -bun_PORT=4002 bun server.ts +BUN_PORT=4002 bun server.ts ``` - `PORT` environment variable diff --git a/docs/runtime/http/websockets.mdx b/docs/runtime/http/websockets.mdx index 2b005c488a..657da9f40b 100644 --- a/docs/runtime/http/websockets.mdx +++ b/docs/runtime/http/websockets.mdx @@ -174,7 +174,7 @@ Bun.serve({ To connect to this server from the browser, create a new `WebSocket`. -```ts browser.js icon="file-code" +```js browser.js icon="file-code" const socket = new WebSocket("ws://localhost:3000/chat"); socket.addEventListener("message", event => { diff --git a/docs/runtime/index.mdx b/docs/runtime/index.mdx index 7ffa1d0a9b..9a01aa2e73 100644 --- a/docs/runtime/index.mdx +++ b/docs/runtime/index.mdx @@ -94,7 +94,7 @@ Cleaning... Done. ``` -Bun executes the script command in a subshell. On Linux & macOS, it checks for the following shells in order, using the first one it finds: `bash`, `sh`, `zsh`. On windows, it uses [bun shell](https://bun.com/docs/runtime/shell) to support bash-like syntax and many common commands. +Bun executes the script command in a subshell. On Linux & macOS, it checks for the following shells in order, using the first one it finds: `bash`, `sh`, `zsh`. On Windows, it uses [bun shell](/runtime/shell) to support bash-like syntax and many common commands. āš”ļø The startup time for `npm run` on Linux is roughly 170ms; with Bun it is `6ms`. @@ -153,7 +153,7 @@ bun run --filter 'ba*' `, + "script.ts": `import data from "./data"; console.log(data);`, + }, + async test(dev) { + const c = await dev.client("/", { + errors: ['script.ts:1:18: error: Could not resolve: "./data"'], + }); + await c.expectReload(async () => { + await dev.write("data.ts", "export default 'data';"); + }); + await c.expectMessage("data"); + }, +}); +``` + +Specify expected errors with the `errors` option: + +```ts +await dev.delete("other.ts", { + errors: ['index.ts:1:16: error: Could not resolve: "./other"'], +}); +``` diff --git a/.claude/skills/zig-system-calls/SKILL.md b/.claude/skills/zig-system-calls/SKILL.md new file mode 100644 index 0000000000..48f179463a --- /dev/null +++ b/.claude/skills/zig-system-calls/SKILL.md @@ -0,0 +1,268 @@ +--- +name: zig-system-calls +description: Guides using bun.sys for system calls and file I/O in Zig. Use when implementing file operations instead of std.fs or std.posix. +--- + +# System Calls & File I/O in Zig + +Use `bun.sys` instead of `std.fs` or `std.posix` for cross-platform syscalls with proper error handling. + +## bun.sys.File (Preferred) + +For most file operations, use the `bun.sys.File` wrapper: + +```zig +const File = bun.sys.File; + +const file = switch (File.open(path, bun.O.RDWR, 0o644)) { + .result => |f| f, + .err => |err| return .{ .err = err }, +}; +defer file.close(); + +// Read/write +_ = try file.read(buffer).unwrap(); +_ = try file.writeAll(data).unwrap(); + +// Get file info +const stat = try file.stat().unwrap(); +const size = try file.getEndPos().unwrap(); + +// std.io compatible +const reader = file.reader(); +const writer = file.writer(); +``` + +### Complete Example + +```zig +const File = bun.sys.File; + +pub fn writeFile(path: [:0]const u8, data: []const u8) File.WriteError!void { + const file = switch (File.open(path, bun.O.WRONLY | bun.O.CREAT | bun.O.TRUNC, 0o664)) { + .result => |f| f, + .err => |err| return err.toError(), + }; + defer file.close(); + + _ = switch (file.writeAll(data)) { + .result => {}, + .err => |err| return err.toError(), + }; +} +``` + +## Why bun.sys? + +| Aspect | bun.sys | std.fs/std.posix | +| ----------- | -------------------------------- | ------------------- | +| Return Type | `Maybe(T)` with detailed Error | Generic error union | +| Windows | Full support with libuv fallback | Limited/POSIX-only | +| Error Info | errno, syscall tag, path, fd | errno only | +| EINTR | Automatic retry | Manual handling | + +## Error Handling with Maybe(T) + +`bun.sys` functions return `Maybe(T)` - a tagged union: + +```zig +const sys = bun.sys; + +// Pattern 1: Switch on result/error +switch (sys.read(fd, buffer)) { + .result => |bytes_read| { + // use bytes_read + }, + .err => |err| { + // err.errno, err.syscall, err.fd, err.path + if (err.getErrno() == .AGAIN) { + // handle EAGAIN + } + }, +} + +// Pattern 2: Unwrap with try (converts to Zig error) +const bytes = try sys.read(fd, buffer).unwrap(); + +// Pattern 3: Unwrap with default +const value = sys.stat(path).unwrapOr(default_stat); +``` + +## Low-Level File Operations + +Only use these when `bun.sys.File` doesn't meet your needs. + +### Opening Files + +```zig +const sys = bun.sys; + +// Use bun.O flags (cross-platform normalized) +const fd = switch (sys.open(path, bun.O.RDONLY, 0)) { + .result => |fd| fd, + .err => |err| return .{ .err = err }, +}; +defer fd.close(); + +// Common flags +bun.O.RDONLY, bun.O.WRONLY, bun.O.RDWR +bun.O.CREAT, bun.O.TRUNC, bun.O.APPEND +bun.O.NONBLOCK, bun.O.DIRECTORY +``` + +### Reading & Writing + +```zig +// Single read (may return less than buffer size) +switch (sys.read(fd, buffer)) { + .result => |n| { /* n bytes read */ }, + .err => |err| { /* handle error */ }, +} + +// Read until EOF or buffer full +const total = try sys.readAll(fd, buffer).unwrap(); + +// Position-based read/write +sys.pread(fd, buffer, offset) +sys.pwrite(fd, data, offset) + +// Vector I/O +sys.readv(fd, iovecs) +sys.writev(fd, iovecs) +``` + +### File Info + +```zig +sys.stat(path) // Follow symlinks +sys.lstat(path) // Don't follow symlinks +sys.fstat(fd) // From file descriptor +sys.fstatat(fd, path) + +// Linux-only: faster selective stat +sys.statx(path, &.{ .size, .mtime }) +``` + +### Path Operations + +```zig +sys.unlink(path) +sys.unlinkat(dir_fd, path) +sys.rename(from, to) +sys.renameat(from_dir, from, to_dir, to) +sys.readlink(path, buf) +sys.readlinkat(fd, path, buf) +sys.link(T, src, dest) +sys.linkat(src_fd, src, dest_fd, dest) +sys.symlink(target, dest) +sys.symlinkat(target, dirfd, dest) +sys.mkdir(path, mode) +sys.mkdirat(dir_fd, path, mode) +sys.rmdir(path) +``` + +### Permissions + +```zig +sys.chmod(path, mode) +sys.fchmod(fd, mode) +sys.fchmodat(fd, path, mode, flags) +sys.chown(path, uid, gid) +sys.fchown(fd, uid, gid) +``` + +### Closing File Descriptors + +Close is on `bun.FD`: + +```zig +fd.close(); // Asserts on error (use in defer) + +// Or if you need error info: +if (fd.closeAllowingBadFileDescriptor(null)) |err| { + // handle error +} +``` + +## Directory Operations + +```zig +var buf: bun.PathBuffer = undefined; +const cwd = try sys.getcwd(&buf).unwrap(); +const cwdZ = try sys.getcwdZ(&buf).unwrap(); // Zero-terminated +sys.chdir(path, destination) +``` + +### Directory Iteration + +Use `bun.DirIterator` instead of `std.fs.Dir.Iterator`: + +```zig +var iter = bun.iterateDir(dir_fd); +while (true) { + switch (iter.next()) { + .result => |entry| { + if (entry) |e| { + const name = e.name.slice(); + const kind = e.kind; // .file, .directory, .sym_link, etc. + } else { + break; // End of directory + } + }, + .err => |err| return .{ .err = err }, + } +} +``` + +## Socket Operations + +**Important**: `bun.sys` has limited socket support. For network I/O: + +- **Non-blocking sockets**: Use `uws.Socket` (libuwebsockets) exclusively +- **Pipes/blocking I/O**: Use `PipeReader.zig` and `PipeWriter.zig` + +Available in bun.sys: + +```zig +sys.setsockopt(fd, level, optname, value) +sys.socketpair(domain, socktype, protocol, nonblocking_status) +``` + +Do NOT use `bun.sys` for socket read/write - use `uws.Socket` instead. + +## Other Operations + +```zig +sys.ftruncate(fd, size) +sys.lseek(fd, offset, whence) +sys.dup(fd) +sys.dupWithFlags(fd, flags) +sys.fcntl(fd, cmd, arg) +sys.pipe() +sys.mmap(...) +sys.munmap(memory) +sys.access(path, mode) +sys.futimens(fd, atime, mtime) +sys.utimens(path, atime, mtime) +``` + +## Error Type + +```zig +const err: bun.sys.Error = ...; +err.errno // Raw errno value +err.getErrno() // As std.posix.E enum +err.syscall // Which syscall failed (Tag enum) +err.fd // Optional: file descriptor +err.path // Optional: path string +``` + +## Key Points + +- Prefer `bun.sys.File` wrapper for most file operations +- Use low-level `bun.sys` functions only when needed +- Use `bun.O.*` flags instead of `std.os.O.*` +- Handle `Maybe(T)` with switch or `.unwrap()` +- Use `defer fd.close()` for cleanup +- EINTR is handled automatically in most functions +- For sockets, use `uws.Socket` not `bun.sys` diff --git a/.cursor/rules/building-bun.mdc b/.cursor/rules/building-bun.mdc deleted file mode 100644 index 2fef59b551..0000000000 --- a/.cursor/rules/building-bun.mdc +++ /dev/null @@ -1,41 +0,0 @@ ---- -description: -globs: src/**/*.cpp,src/**/*.zig -alwaysApply: false ---- - -### Build Commands - -- **Build debug version**: `bun bd` or `bun run build:debug` - - Creates a debug build at `./build/debug/bun-debug` - - Compilation takes ~2.5 minutes -- **Run tests with your debug build**: `bun bd test ` - - **CRITICAL**: Never use `bun test` directly - it won't include your changes -- **Run any command with debug build**: `bun bd ` - -### Run a file - -To run a file, use: - -```sh -bun bd <...args> -``` - -**CRITICAL**: Never use `bun ` directly. It will not have your changes. - -### Logging - -`BUN_DEBUG_$(SCOPE)=1` enables debug logs for a specific debug log scope. - -Debug logs look like this: - -```zig -const log = bun.Output.scoped(.${SCOPE}, .hidden); - -// ...later -log("MY DEBUG LOG", .{}) -``` - -### Code Generation - -Code generation happens automatically as part of the build process. There are no commands to run. diff --git a/.cursor/rules/dev-server-tests.mdc b/.cursor/rules/dev-server-tests.mdc deleted file mode 100644 index 23b1ec153b..0000000000 --- a/.cursor/rules/dev-server-tests.mdc +++ /dev/null @@ -1,139 +0,0 @@ ---- -description: Writing HMR/Dev Server tests -globs: test/bake/* ---- - -# Writing HMR/Dev Server tests - -Dev server tests validate that hot-reloading is robust, correct, and reliable. Remember to write thorough, yet concise tests. - -## File Structure - -- `test/bake/bake-harness.ts` - shared utilities and test harness - - primary test functions `devTest` / `prodTest` / `devAndProductionTest` - - class `Dev` (controls subprocess for dev server) - - class `Client` (controls a happy-dom subprocess for having the page open) - - more helpers -- `test/bake/client-fixture.mjs` - subprocess for what `Client` controls. it loads a page and uses IPC to query parts of the page, run javascript, and much more. -- `test/bake/dev/*.test.ts` - these call `devTest` to test dev server and hot reloading -- `test/bake/dev-and-prod.ts` - these use `devAndProductionTest` to run the same test on dev and production mode. these tests cannot really test hot reloading for obvious reasons. - -## Categories - -bundle.test.ts - Bundle tests are tests concerning bundling bugs that only occur in DevServer. -css.test.ts - CSS tests concern bundling bugs with CSS files -plugins.test.ts - Plugin tests concern plugins in development mode. -ecosystem.test.ts - These tests involve ensuring certain libraries are correct. It is preferred to test more concrete bugs than testing entire packages. -esm.test.ts - ESM tests are about various esm features in development mode. -html.test.ts - HTML tests are tests relating to HTML files themselves. -react-spa.test.ts - Tests relating to React, our react-refresh transform, and basic server component transforms. -sourcemap.test.ts - Tests verifying source-maps are correct. - -## `devTest` Basics - -A test takes in two primary inputs: `files` and `async test(dev) {` - -```ts -import { devTest, emptyHtmlFile } from "../bake-harness"; - -devTest("html file is watched", { - files: { - "index.html": emptyHtmlFile({ - scripts: ["/script.ts"], - body: "

    Hello

    ", - }), - "script.ts": ` - console.log("hello"); - `, - }, - async test(dev) { - await dev.fetch("/").expect.toInclude("

    Hello

    "); - await dev.fetch("/").expect.toInclude("

    Hello

    "); - await dev.patch("index.html", { - find: "Hello", - replace: "World", - }); - await dev.fetch("/").expect.toInclude("

    World

    "); - - // Works - await using c = await dev.client("/"); - await c.expectMessage("hello"); - - // Editing HTML reloads - await c.expectReload(async () => { - await dev.patch("index.html", { - find: "World", - replace: "Hello", - }); - await dev.fetch("/").expect.toInclude("

    Hello

    "); - }); - await c.expectMessage("hello"); - - await c.expectReload(async () => { - await dev.patch("index.html", { - find: "Hello", - replace: "Bar", - }); - await dev.fetch("/").expect.toInclude("

    Bar

    "); - }); - await c.expectMessage("hello"); - - await c.expectReload(async () => { - await dev.patch("script.ts", { - find: "hello", - replace: "world", - }); - }); - await c.expectMessage("world"); - }, -}); -``` - -`files` holds the initial state, and the callback runs with the server running. `dev.fetch()` runs HTTP requests, while `dev.client()` opens a browser instance to the code. - -Functions `dev.write` and `dev.patch` and `dev.delete` mutate the filesystem. Do not use `node:fs` APIs, as the dev server ones are hooked to wait for hot-reload, and all connected clients to receive changes. - -When a change performs a hard-reload, that must be explicitly annotated with `expectReload`. This tells `client-fixture.mjs` that the test is meant to reload the page once; All other hard reloads automatically fail the test. - -Client's have `console.log` instrumented, so that any unasserted logs fail the test. This makes it more obvious when an extra reload or re-evaluation. Messages are awaited via `c.expectMessage("log")` or with multiple arguments if there are multiple logs. - -## Testing for bundling errors - -By default, a client opening a page to an error will fail the test. This makes testing errors explicit. - -```ts -devTest("import then create", { - files: { - "index.html": ` - - - - - - - - `, - "script.ts": ` - import data from "./data"; - console.log(data); - `, - }, - async test(dev) { - const c = await dev.client("/", { - errors: ['script.ts:1:18: error: Could not resolve: "./data"'], - }); - await c.expectReload(async () => { - await dev.write("data.ts", "export default 'data';"); - }); - await c.expectMessage("data"); - }, -}); -``` - -Many functions take an options value to allow specifying it will produce errors. For example, this delete is going to cause a resolution failure. - -```ts -await dev.delete("other.ts", { - errors: ['index.ts:1:16: error: Could not resolve: "./other"'], -}); -``` diff --git a/.cursor/rules/javascriptcore-class.mdc b/.cursor/rules/javascriptcore-class.mdc deleted file mode 100644 index 0e1507223f..0000000000 --- a/.cursor/rules/javascriptcore-class.mdc +++ /dev/null @@ -1,413 +0,0 @@ ---- -description: JavaScript class implemented in C++ -globs: *.cpp -alwaysApply: false ---- - -# Implementing JavaScript classes in C++ - -If there is a publicly accessible Constructor and Prototype, then there are 3 classes: - -- IF there are C++ class members we need a destructor, so `class Foo : public JSC::DestructibleObject`, if no C++ class fields (only JS properties) then we don't need a class at all usually. We can instead use JSC::constructEmptyObject(vm, structure) and `putDirectOffset` like in [NodeFSStatBinding.cpp](mdc:src/bun.js/bindings/NodeFSStatBinding.cpp). -- class FooPrototype : public JSC::JSNonFinalObject -- class FooConstructor : public JSC::InternalFunction - -If there is no publicly accessible Constructor, just the Prototype and the class is necessary. In some cases, we can avoid the prototype entirely (but that's rare). - -If there are C++ fields on the Foo class, the Foo class will need an iso subspace added to [DOMClientIsoSubspaces.h](mdc:src/bun.js/bindings/webcore/DOMClientIsoSubspaces.h) and [DOMIsoSubspaces.h](mdc:src/bun.js/bindings/webcore/DOMIsoSubspaces.h). Prototype and Constructor do not need subspaces. - -Usually you'll need to #include "root.h" at the top of C++ files or you'll get lint errors. - -Generally, defining the subspace looks like this: - -```c++ - -class Foo : public JSC::DestructibleObject { - -// ... - - template - static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) - { - if constexpr (mode == JSC::SubspaceAccess::Concurrently) - return nullptr; - return WebCore::subspaceForImpl( - vm, - [](auto& spaces) { return spaces.m_clientSubspaceFor${MyClassT}.get(); }, - [](auto& spaces, auto&& space) { spaces.m_clientSubspaceFor${MyClassT} = std::forward(space); }, - [](auto& spaces) { return spaces.m_subspaceFo${MyClassT}.get(); }, - [](auto& spaces, auto&& space) { spaces.m_subspaceFor${MyClassT} = std::forward(space); }); - } - - -``` - -It's better to put it in the .cpp file instead of the .h file, when possible. - -## Defining properties - -Define properties on the prototype. Use a const HashTableValues like this: - -```C++ -static JSC_DECLARE_HOST_FUNCTION(jsX509CertificateProtoFuncCheckEmail); -static JSC_DECLARE_HOST_FUNCTION(jsX509CertificateProtoFuncCheckHost); -static JSC_DECLARE_HOST_FUNCTION(jsX509CertificateProtoFuncCheckIP); -static JSC_DECLARE_HOST_FUNCTION(jsX509CertificateProtoFuncCheckIssued); -static JSC_DECLARE_HOST_FUNCTION(jsX509CertificateProtoFuncCheckPrivateKey); -static JSC_DECLARE_HOST_FUNCTION(jsX509CertificateProtoFuncToJSON); -static JSC_DECLARE_HOST_FUNCTION(jsX509CertificateProtoFuncToLegacyObject); -static JSC_DECLARE_HOST_FUNCTION(jsX509CertificateProtoFuncToString); -static JSC_DECLARE_HOST_FUNCTION(jsX509CertificateProtoFuncVerify); - -static JSC_DECLARE_CUSTOM_GETTER(jsX509CertificateGetter_ca); -static JSC_DECLARE_CUSTOM_GETTER(jsX509CertificateGetter_fingerprint); -static JSC_DECLARE_CUSTOM_GETTER(jsX509CertificateGetter_fingerprint256); -static JSC_DECLARE_CUSTOM_GETTER(jsX509CertificateGetter_fingerprint512); -static JSC_DECLARE_CUSTOM_GETTER(jsX509CertificateGetter_subject); -static JSC_DECLARE_CUSTOM_GETTER(jsX509CertificateGetter_subjectAltName); -static JSC_DECLARE_CUSTOM_GETTER(jsX509CertificateGetter_infoAccess); -static JSC_DECLARE_CUSTOM_GETTER(jsX509CertificateGetter_keyUsage); -static JSC_DECLARE_CUSTOM_GETTER(jsX509CertificateGetter_issuer); -static JSC_DECLARE_CUSTOM_GETTER(jsX509CertificateGetter_issuerCertificate); -static JSC_DECLARE_CUSTOM_GETTER(jsX509CertificateGetter_publicKey); -static JSC_DECLARE_CUSTOM_GETTER(jsX509CertificateGetter_raw); -static JSC_DECLARE_CUSTOM_GETTER(jsX509CertificateGetter_serialNumber); -static JSC_DECLARE_CUSTOM_GETTER(jsX509CertificateGetter_validFrom); -static JSC_DECLARE_CUSTOM_GETTER(jsX509CertificateGetter_validTo); -static JSC_DECLARE_CUSTOM_GETTER(jsX509CertificateGetter_validFromDate); -static JSC_DECLARE_CUSTOM_GETTER(jsX509CertificateGetter_validToDate); - -static const HashTableValue JSX509CertificatePrototypeTableValues[] = { - { "ca"_s, static_cast(PropertyAttribute::ReadOnly | PropertyAttribute::CustomAccessor), NoIntrinsic, { HashTableValue::GetterSetterType, jsX509CertificateGetter_ca, 0 } }, - { "checkEmail"_s, static_cast(PropertyAttribute::Function), NoIntrinsic, { HashTableValue::NativeFunctionType, jsX509CertificateProtoFuncCheckEmail, 2 } }, - { "checkHost"_s, static_cast(PropertyAttribute::Function), NoIntrinsic, { HashTableValue::NativeFunctionType, jsX509CertificateProtoFuncCheckHost, 2 } }, - { "checkIP"_s, static_cast(PropertyAttribute::Function), NoIntrinsic, { HashTableValue::NativeFunctionType, jsX509CertificateProtoFuncCheckIP, 1 } }, - { "checkIssued"_s, static_cast(PropertyAttribute::Function), NoIntrinsic, { HashTableValue::NativeFunctionType, jsX509CertificateProtoFuncCheckIssued, 1 } }, - { "checkPrivateKey"_s, static_cast(PropertyAttribute::Function), NoIntrinsic, { HashTableValue::NativeFunctionType, jsX509CertificateProtoFuncCheckPrivateKey, 1 } }, - { "fingerprint"_s, static_cast(PropertyAttribute::ReadOnly | PropertyAttribute::CustomAccessor), NoIntrinsic, { HashTableValue::GetterSetterType, jsX509CertificateGetter_fingerprint, 0 } }, - { "fingerprint256"_s, static_cast(PropertyAttribute::ReadOnly | PropertyAttribute::CustomAccessor), NoIntrinsic, { HashTableValue::GetterSetterType, jsX509CertificateGetter_fingerprint256, 0 } }, - { "fingerprint512"_s, static_cast(PropertyAttribute::ReadOnly | PropertyAttribute::CustomAccessor), NoIntrinsic, { HashTableValue::GetterSetterType, jsX509CertificateGetter_fingerprint512, 0 } }, - { "infoAccess"_s, static_cast(PropertyAttribute::ReadOnly | PropertyAttribute::CustomAccessor), NoIntrinsic, { HashTableValue::GetterSetterType, jsX509CertificateGetter_infoAccess, 0 } }, - { "issuer"_s, static_cast(PropertyAttribute::ReadOnly | PropertyAttribute::CustomAccessor), NoIntrinsic, { HashTableValue::GetterSetterType, jsX509CertificateGetter_issuer, 0 } }, - { "issuerCertificate"_s, static_cast(PropertyAttribute::ReadOnly | PropertyAttribute::CustomAccessor), NoIntrinsic, { HashTableValue::GetterSetterType, jsX509CertificateGetter_issuerCertificate, 0 } }, - { "keyUsage"_s, static_cast(PropertyAttribute::ReadOnly | PropertyAttribute::CustomAccessor), NoIntrinsic, { HashTableValue::GetterSetterType, jsX509CertificateGetter_keyUsage, 0 } }, - { "publicKey"_s, static_cast(PropertyAttribute::ReadOnly | PropertyAttribute::CustomAccessor), NoIntrinsic, { HashTableValue::GetterSetterType, jsX509CertificateGetter_publicKey, 0 } }, - { "raw"_s, static_cast(PropertyAttribute::ReadOnly | PropertyAttribute::CustomAccessor), NoIntrinsic, { HashTableValue::GetterSetterType, jsX509CertificateGetter_raw, 0 } }, - { "serialNumber"_s, static_cast(PropertyAttribute::ReadOnly | PropertyAttribute::CustomAccessor), NoIntrinsic, { HashTableValue::GetterSetterType, jsX509CertificateGetter_serialNumber, 0 } }, - { "subject"_s, static_cast(PropertyAttribute::ReadOnly | PropertyAttribute::CustomAccessor), NoIntrinsic, { HashTableValue::GetterSetterType, jsX509CertificateGetter_subject, 0 } }, - { "subjectAltName"_s, static_cast(PropertyAttribute::ReadOnly | PropertyAttribute::CustomAccessor), NoIntrinsic, { HashTableValue::GetterSetterType, jsX509CertificateGetter_subjectAltName, 0 } }, - { "toJSON"_s, static_cast(PropertyAttribute::Function), NoIntrinsic, { HashTableValue::NativeFunctionType, jsX509CertificateProtoFuncToJSON, 0 } }, - { "toLegacyObject"_s, static_cast(PropertyAttribute::Function), NoIntrinsic, { HashTableValue::NativeFunctionType, jsX509CertificateProtoFuncToLegacyObject, 0 } }, - { "toString"_s, static_cast(PropertyAttribute::Function), NoIntrinsic, { HashTableValue::NativeFunctionType, jsX509CertificateProtoFuncToString, 0 } }, - { "validFrom"_s, static_cast(PropertyAttribute::ReadOnly | PropertyAttribute::CustomAccessor), NoIntrinsic, { HashTableValue::GetterSetterType, jsX509CertificateGetter_validFrom, 0 } }, - { "validFromDate"_s, static_cast(PropertyAttribute::ReadOnly | PropertyAttribute::CustomAccessorOrValue), NoIntrinsic, { HashTableValue::GetterSetterType, jsX509CertificateGetter_validFromDate, 0 } }, - { "validTo"_s, static_cast(PropertyAttribute::ReadOnly | PropertyAttribute::CustomAccessor), NoIntrinsic, { HashTableValue::GetterSetterType, jsX509CertificateGetter_validTo, 0 } }, - { "validToDate"_s, static_cast(PropertyAttribute::ReadOnly | PropertyAttribute::CustomAccessorOrValue), NoIntrinsic, { HashTableValue::GetterSetterType, jsX509CertificateGetter_validToDate, 0 } }, - { "verify"_s, static_cast(PropertyAttribute::Function), NoIntrinsic, { HashTableValue::NativeFunctionType, jsX509CertificateProtoFuncVerify, 1 } }, -}; -``` - -### Creating a prototype class - -Follow a pattern like this: - -```c++ -class JSX509CertificatePrototype final : public JSC::JSNonFinalObject { -public: - using Base = JSC::JSNonFinalObject; - static constexpr unsigned StructureFlags = Base::StructureFlags; - - static JSX509CertificatePrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure) - { - JSX509CertificatePrototype* prototype = new (NotNull, allocateCell(vm)) JSX509CertificatePrototype(vm, structure); - prototype->finishCreation(vm); - return prototype; - } - - template - static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) - { - return &vm.plainObjectSpace(); - } - - DECLARE_INFO; - - static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) - { - auto* structure = JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info()); - structure->setMayBePrototype(true); - return structure; - } - -private: - JSX509CertificatePrototype(JSC::VM& vm, JSC::Structure* structure) - : Base(vm, structure) - { - } - - void finishCreation(JSC::VM& vm); -}; - -const ClassInfo JSX509CertificatePrototype::s_info = { "X509Certificate"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSX509CertificatePrototype) }; - -void JSX509CertificatePrototype::finishCreation(VM& vm) -{ - Base::finishCreation(vm); - reifyStaticProperties(vm, JSX509Certificate::info(), JSX509CertificatePrototypeTableValues, *this); - JSC_TO_STRING_TAG_WITHOUT_TRANSITION(); -} - -} // namespace Bun -``` - -### Getter definition: - -```C++ - -JSC_DEFINE_CUSTOM_GETTER(jsX509CertificateGetter_ca, (JSGlobalObject * globalObject, EncodedJSValue thisValue, PropertyName)) -{ - VM& vm = globalObject->vm(); - auto scope = DECLARE_THROW_SCOPE(vm); - - JSX509Certificate* thisObject = jsDynamicCast(JSValue::decode(thisValue)); - if (UNLIKELY(!thisObject)) { - Bun::throwThisTypeError(*globalObject, scope, "JSX509Certificate"_s, "ca"_s); - return {}; - } - - return JSValue::encode(jsBoolean(thisObject->view().isCA())); -} -``` - -### Setter definition - -```C++ -JSC_DEFINE_CUSTOM_SETTER(jsImportMetaObjectSetter_require, (JSGlobalObject * jsGlobalObject, JSC::EncodedJSValue thisValue, JSC::EncodedJSValue encodedValue, PropertyName propertyName)) -{ - ImportMetaObject* thisObject = jsDynamicCast(JSValue::decode(thisValue)); - if (UNLIKELY(!thisObject)) - return false; - - JSValue value = JSValue::decode(encodedValue); - if (!value.isCell()) { - // TODO: - return true; - } - - thisObject->requireProperty.set(thisObject->vm(), thisObject, value.asCell()); - return true; -} -``` - -### Function definition - -```C++ -JSC_DEFINE_HOST_FUNCTION(jsX509CertificateProtoFuncToJSON, (JSGlobalObject * globalObject, CallFrame* callFrame)) -{ - VM& vm = globalObject->vm(); - auto scope = DECLARE_THROW_SCOPE(vm); - auto *thisObject = jsDynamicCast(callFrame->thisValue()); - if (UNLIKELY(!thisObject)) { - Bun::throwThisTypeError(*globalObject, scope, "MyClass"_s, "myFunctionName"_s); - return {}; - } - - return JSValue::encode(functionThatReturnsJSValue(vm, globalObject, thisObject)); -} -``` - -### Constructor definition - -```C++ - -JSC_DECLARE_HOST_FUNCTION(callStats); -JSC_DECLARE_HOST_FUNCTION(constructStats); - -class JSStatsConstructor final : public JSC::InternalFunction { -public: - using Base = JSC::InternalFunction; - static constexpr unsigned StructureFlags = Base::StructureFlags; - - static JSStatsConstructor* create(JSC::VM& vm, JSC::Structure* structure, JSC::JSObject* prototype) - { - JSStatsConstructor* constructor = new (NotNull, JSC::allocateCell(vm)) JSStatsConstructor(vm, structure); - constructor->finishCreation(vm, prototype); - return constructor; - } - - DECLARE_INFO; - - template - static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) - { - return &vm.internalFunctionSpace(); - } - - static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) - { - return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::InternalFunctionType, StructureFlags), info()); - } - -private: - JSStatsConstructor(JSC::VM& vm, JSC::Structure* structure) - : Base(vm, structure, callStats, constructStats) - { - } - - void finishCreation(JSC::VM& vm, JSC::JSObject* prototype) - { - Base::finishCreation(vm, 0, "Stats"_s); - putDirectWithoutTransition(vm, vm.propertyNames->prototype, prototype, JSC::PropertyAttribute::DontEnum | JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly); - } -}; -``` - -### Structure caching - -If there's a class, prototype, and constructor: - -1. Add the `JSC::LazyClassStructure` to [ZigGlobalObject.h](mdc:src/bun.js/bindings/ZigGlobalObject.h) -2. Initialize the class structure in [ZigGlobalObject.cpp](mdc:src/bun.js/bindings/ZigGlobalObject.cpp) in `void GlobalObject::finishCreation(VM& vm)` -3. Visit the class structure in visitChildren in [ZigGlobalObject.cpp](mdc:src/bun.js/bindings/ZigGlobalObject.cpp) in `void GlobalObject::visitChildrenImpl` - -```c++#ZigGlobalObject.cpp -void GlobalObject::finishCreation(VM& vm) { -// ... - m_JSStatsBigIntClassStructure.initLater( - [](LazyClassStructure::Initializer& init) { - // Call the function to initialize our class structure. - Bun::initJSBigIntStatsClassStructure(init); - }); -``` - -Then, implement the function that creates the structure: - -```c++ -void setupX509CertificateClassStructure(LazyClassStructure::Initializer& init) -{ - auto* prototypeStructure = JSX509CertificatePrototype::createStructure(init.vm, init.global, init.global->objectPrototype()); - auto* prototype = JSX509CertificatePrototype::create(init.vm, init.global, prototypeStructure); - - auto* constructorStructure = JSX509CertificateConstructor::createStructure(init.vm, init.global, init.global->functionPrototype()); - - auto* constructor = JSX509CertificateConstructor::create(init.vm, init.global, constructorStructure, prototype); - - auto* structure = JSX509Certificate::createStructure(init.vm, init.global, prototype); - init.setPrototype(prototype); - init.setStructure(structure); - init.setConstructor(constructor); -} -``` - -If there's only a class, use `JSC::LazyProperty` instead of `JSC::LazyClassStructure`: - -1. Add the `JSC::LazyProperty` to @ZigGlobalObject.h -2. Initialize the class structure in @ZigGlobalObject.cpp in `void GlobalObject::finishCreation(VM& vm)` -3. Visit the lazy property in visitChildren in @ZigGlobalObject.cpp in `void GlobalObject::visitChildrenImpl` - void GlobalObject::finishCreation(VM& vm) { - // ... - this.m_myLazyProperty.initLater([](const JSC::LazyProperty::Initializer& init) { - init.set(Bun::initMyStructure(init.vm, reinterpret_cast(init.owner))); - }); - -``` - -Then, implement the function that creates the structure: -```c++ -Structure* setupX509CertificateStructure(JSC::VM &vm, Zig::GlobalObject* globalObject) -{ - // If there is a prototype: - auto* prototypeStructure = JSX509CertificatePrototype::createStructure(init.vm, init.global, init.global->objectPrototype()); - auto* prototype = JSX509CertificatePrototype::create(init.vm, init.global, prototypeStructure); - - // If there is no prototype or it only has - - auto* structure = JSX509Certificate::createStructure(init.vm, init.global, prototype); - init.setPrototype(prototype); - init.setStructure(structure); - init.setConstructor(constructor); -} -``` - -Then, use the structure by calling `globalObject.m_myStructureName.get(globalObject)` - -```C++ -JSC_DEFINE_HOST_FUNCTION(x509CertificateConstructorConstruct, (JSGlobalObject * globalObject, CallFrame* callFrame)) -{ - VM& vm = globalObject->vm(); - auto scope = DECLARE_THROW_SCOPE(vm); - - if (!callFrame->argumentCount()) { - Bun::throwError(globalObject, scope, ErrorCode::ERR_MISSING_ARGS, "X509Certificate constructor requires at least one argument"_s); - return {}; - } - - JSValue arg = callFrame->uncheckedArgument(0); - if (!arg.isCell()) { - Bun::throwError(globalObject, scope, ErrorCode::ERR_INVALID_ARG_TYPE, "X509Certificate constructor argument must be a Buffer, TypedArray, or string"_s); - return {}; - } - - auto* zigGlobalObject = defaultGlobalObject(globalObject); - Structure* structure = zigGlobalObject->m_JSX509CertificateClassStructure.get(zigGlobalObject); - JSValue newTarget = callFrame->newTarget(); - if (UNLIKELY(zigGlobalObject->m_JSX509CertificateClassStructure.constructor(zigGlobalObject) != newTarget)) { - auto scope = DECLARE_THROW_SCOPE(vm); - if (!newTarget) { - throwTypeError(globalObject, scope, "Class constructor X509Certificate cannot be invoked without 'new'"_s); - return {}; - } - - auto* functionGlobalObject = defaultGlobalObject(getFunctionRealm(globalObject, newTarget.getObject())); - RETURN_IF_EXCEPTION(scope, {}); - structure = InternalFunction::createSubclassStructure(globalObject, newTarget.getObject(), functionGlobalObject->NodeVMScriptStructure()); - RETURN_IF_EXCEPTION(scope, {}); - } - - return JSValue::encode(createX509Certificate(vm, globalObject, structure, arg)); -} -``` - -### Expose to Zig - -To expose the constructor to zig: - -```c++ -extern "C" JSC::EncodedJSValue Bun__JSBigIntStatsObjectConstructor(Zig::GlobalObject* globalobject) -{ - return JSValue::encode(globalobject->m_JSStatsBigIntClassStructure.constructor(globalobject)); -} -``` - -Zig: - -```zig -extern "c" fn Bun__JSBigIntStatsObjectConstructor(*JSC.JSGlobalObject) JSC.JSValue; -pub const getBigIntStatsConstructor = Bun__JSBigIntStatsObjectConstructor; -``` - -To create an object (instance) of a JS class defined in C++ from Zig, follow the \_\_toJS convention like this: - -```c++ -// X509* is whatever we need to create the object -extern "C" EncodedJSValue Bun__X509__toJS(Zig::GlobalObject* globalObject, X509* cert) -{ - // ... implementation details - auto* structure = globalObject->m_JSX509CertificateClassStructure.get(globalObject); - return JSValue::encode(JSX509Certificate::create(globalObject->vm(), structure, globalObject, WTFMove(cert))); -} -``` - -And from Zig: - -```zig -const X509 = opaque { - // ... class - - extern fn Bun__X509__toJS(*JSC.JSGlobalObject, *X509) JSC.JSValue; - - pub fn toJS(this: *X509, globalObject: *JSC.JSGlobalObject) JSC.JSValue { - return Bun__X509__toJS(globalObject, this); - } -}; -``` diff --git a/.cursor/rules/registering-bun-modules.mdc b/.cursor/rules/registering-bun-modules.mdc deleted file mode 100644 index 225eaa56ed..0000000000 --- a/.cursor/rules/registering-bun-modules.mdc +++ /dev/null @@ -1,203 +0,0 @@ -# Registering Functions, Objects, and Modules in Bun - -This guide documents the process of adding new functionality to the Bun global object and runtime. - -## Overview - -Bun's architecture exposes functionality to JavaScript through a set of carefully registered functions, objects, and modules. Most core functionality is implemented in Zig, with JavaScript bindings that make these features accessible to users. - -There are several key ways to expose functionality in Bun: - -1. **Global Functions**: Direct methods on the `Bun` object (e.g., `Bun.serve()`) -2. **Getter Properties**: Lazily initialized properties on the `Bun` object (e.g., `Bun.sqlite`) -3. **Constructor Classes**: Classes available through the `Bun` object (e.g., `Bun.ValkeyClient`) -4. **Global Modules**: Modules that can be imported directly (e.g., `import {X} from "bun:*"`) - -## The Registration Process - -Adding new functionality to Bun involves several coordinated steps across multiple files: - -### 1. Implement the Core Functionality in Zig - -First, implement your feature in Zig, typically in its own directory in `src/`. Examples: - -- `src/valkey/` for Redis/Valkey client -- `src/semver/` for SemVer functionality -- `src/smtp/` for SMTP client - -### 2. Create JavaScript Bindings - -Create bindings that expose your Zig functionality to JavaScript: - -- Create a class definition file (e.g., `js_bindings.classes.ts`) to define the JavaScript interface -- Implement `JSYourFeature` struct in a file like `js_your_feature.zig` - -Example from a class definition file: - -```typescript -// Example from a .classes.ts file -import { define } from "../../codegen/class-definitions"; - -export default [ - define({ - name: "YourFeature", - construct: true, - finalize: true, - hasPendingActivity: true, - memoryCost: true, - klass: {}, - JSType: "0b11101110", - proto: { - yourMethod: { - fn: "yourZigMethod", - length: 1, - }, - property: { - getter: "getProperty", - }, - }, - values: ["cachedValues"], - }), -]; -``` - -### 3. Register with BunObject in `src/bun.js/bindings/BunObject+exports.h` - -Add an entry to the `FOR_EACH_GETTER` macro: - -```c -// In BunObject+exports.h -#define FOR_EACH_GETTER(macro) \ - macro(CSRF) \ - macro(CryptoHasher) \ - ... \ - macro(YourFeature) \ -``` - -### 4. Create a Getter Function in `src/bun.js/api/BunObject.zig` - -Implement a getter function in `BunObject.zig` that returns your feature: - -```zig -// In BunObject.zig -pub const YourFeature = toJSGetter(Bun.getYourFeatureConstructor); - -// In the exportAll() function: -@export(&BunObject.YourFeature, .{ .name = getterName("YourFeature") }); -``` - -### 5. Implement the Getter Function in a Relevant Zig File - -Implement the function that creates your object: - -```zig -// In your main module file (e.g., src/your_feature/your_feature.zig) -pub fn getYourFeatureConstructor(globalThis: *JSC.JSGlobalObject, _: *JSC.JSObject) JSC.JSValue { - return JSC.API.YourFeature.getConstructor(globalThis); -} -``` - -### 6. Add to Build System - -Ensure your files are included in the build system by adding them to the appropriate targets. - -## Example: Adding a New Module - -Here's a comprehensive example of adding a hypothetical SMTP module: - -1. Create implementation files in `src/smtp/`: - - - `index.zig`: Main entry point that exports everything - - `SmtpClient.zig`: Core SMTP client implementation - - `js_smtp.zig`: JavaScript bindings - - `js_bindings.classes.ts`: Class definition - -2. Define your JS class in `js_bindings.classes.ts`: - -```typescript -import { define } from "../../codegen/class-definitions"; - -export default [ - define({ - name: "EmailClient", - construct: true, - finalize: true, - hasPendingActivity: true, - configurable: false, - memoryCost: true, - klass: {}, - JSType: "0b11101110", - proto: { - send: { - fn: "send", - length: 1, - }, - verify: { - fn: "verify", - length: 0, - }, - close: { - fn: "close", - length: 0, - }, - }, - values: ["connectionPromise"], - }), -]; -``` - -3. Add getter to `BunObject+exports.h`: - -```c -#define FOR_EACH_GETTER(macro) \ - macro(CSRF) \ - ... \ - macro(SMTP) \ -``` - -4. Add getter function to `BunObject.zig`: - -```zig -pub const SMTP = toJSGetter(Bun.getSmtpConstructor); - -// In exportAll: -@export(&BunObject.SMTP, .{ .name = getterName("SMTP") }); -``` - -5. Implement getter in your module: - -```zig -pub fn getSmtpConstructor(globalThis: *JSC.JSGlobalObject, _: *JSC.JSObject) JSC.JSValue { - return JSC.API.JSEmailClient.getConstructor(globalThis); -} -``` - -## Best Practices - -1. **Follow Naming Conventions**: Align your naming with existing patterns -2. **Reference Existing Modules**: Study similar modules like Valkey or S3Client for guidance -3. **Memory Management**: Be careful with memory management and reference counting -4. **Error Handling**: Use `bun.JSError!JSValue` for proper error propagation -5. **Documentation**: Add JSDoc comments to your JavaScript bindings -6. **Testing**: Add tests for your new functionality - -## Common Gotchas - -- Be sure to handle reference counting properly with `ref()`/`deref()` -- Always implement proper cleanup in `deinit()` and `finalize()` -- For network operations, manage socket lifetimes correctly -- Use `JSC.Codegen` correctly to generate necessary binding code - -## Related Files - -- `src/bun.js/bindings/BunObject+exports.h`: Registration of getters and functions -- `src/bun.js/api/BunObject.zig`: Implementation of getters and object creation -- `src/bun.js/api/BunObject.classes.ts`: Class definitions -- `.cursor/rules/zig-javascriptcore-classes.mdc`: More details on class bindings - -## Additional Resources - -For more detailed information on specific topics: - -- See `zig-javascriptcore-classes.mdc` for details on creating JS class bindings -- Review existing modules like `valkey`, `sqlite`, or `s3` for real-world examples diff --git a/.cursor/rules/writing-tests.mdc b/.cursor/rules/writing-tests.mdc deleted file mode 100644 index c5ce928766..0000000000 --- a/.cursor/rules/writing-tests.mdc +++ /dev/null @@ -1,91 +0,0 @@ ---- -description: Writing tests for Bun -globs: ---- -# Writing tests for Bun - -## Where tests are found - -You'll find all of Bun's tests in the `test/` directory. - -* `test/` - * `cli/` - CLI command tests, like `bun install` or `bun init` - * `js/` - JavaScript & TypeScript tests - * `bun/` - `Bun` APIs tests, separated by category, for example: `glob/` for `Bun.Glob` tests - * `node/` - Node.js module tests, separated by module, for example: `assert/` for `node:assert` tests - * `test/` - Vendored Node.js tests, taken from the Node.js repository (does not conform to Bun's test style) - * `web/` - Web API tests, separated by category, for example: `fetch/` for `Request` and `Response` tests - * `third_party/` - npm package tests, to validate that basic usage works in Bun - * `napi/` - N-API tests - * `v8/` - V8 C++ API tests - * `bundler/` - Bundler, transpiler, CSS, and `bun build` tests - * `regression/issue/[number]` - Regression tests, always make one when fixing a particular issue - -## How tests are written - -Bun's tests are written as JavaScript and TypeScript files with the Jest-style APIs, like `test`, `describe`, and `expect`. They are tested using Bun's own test runner, `bun test`. - -```js -import { describe, test, expect } from "bun:test"; -import assert, { AssertionError } from "assert"; - -describe("assert(expr)", () => { - test.each([true, 1, "foo"])(`assert(%p) does not throw`, expr => { - expect(() => assert(expr)).not.toThrow(); - }); - - test.each([false, 0, "", null, undefined])(`assert(%p) throws`, expr => { - expect(() => assert(expr)).toThrow(AssertionError); - }); -}); -``` - -## Testing conventions - -* See `test/harness.ts` for common test utilities and helpers -* Be rigorous and test for edge-cases and unexpected inputs -* Use data-driven tests, e.g. `test.each`, to reduce boilerplate when possible -* When you need to test Bun as a CLI, use the following pattern: - -```js -import { test, expect } from "bun:test"; -import { spawn } from "bun"; -import { bunExe, bunEnv } from "harness"; - -test("bun --version", async () => { - const { exited, stdout: stdoutStream, stderr: stderrStream } = spawn({ - cmd: [bunExe(), "--version"], - env: bunEnv, - stdout: "pipe", - stderr: "pipe", - }); - const [ exitCode, stdout, stderr ] = await Promise.all([ - exited, - new Response(stdoutStream).text(), - new Response(stderrStream).text(), - ]); - expect({ exitCode, stdout, stderr }).toMatchObject({ - exitCode: 0, - stdout: expect.stringContaining(Bun.version), - stderr: "", - }); -}); -``` - -## Before writing a test - -* If you are fixing a bug, write the test first and make sure it fails (as expected) with the canary version of Bun -* If you are fixing a Node.js compatibility bug, create a throw-away snippet of code and test that it works as you expect in Node.js, then that it fails (as expected) with the canary version of Bun -* When the expected behaviour is ambigious, defer to matching what happens in Node.js -* Always attempt to find related tests in an existing test file before creating a new test file - - - - - - - - - - - diff --git a/.cursor/rules/zig-javascriptcore-classes.mdc b/.cursor/rules/zig-javascriptcore-classes.mdc deleted file mode 100644 index 88636c9752..0000000000 --- a/.cursor/rules/zig-javascriptcore-classes.mdc +++ /dev/null @@ -1,509 +0,0 @@ ---- -description: How Zig works with JavaScriptCore bindings generator -globs: -alwaysApply: false ---- - -# Bun's JavaScriptCore Class Bindings Generator - -This document explains how Bun's class bindings generator works to bridge Zig and JavaScript code through JavaScriptCore (JSC). - -## Architecture Overview - -Bun's binding system creates a seamless bridge between JavaScript and Zig, allowing Zig implementations to be exposed as JavaScript classes. The system has several key components: - -1. **Zig Implementation** (.zig files) -2. **JavaScript Interface Definition** (.classes.ts files) -3. **Generated Code** (C++/Zig files that connect everything) - -## Class Definition Files - -### JavaScript Interface (.classes.ts) - -The `.classes.ts` files define the JavaScript API using a declarative approach: - -```typescript -// Example: encoding.classes.ts -define({ - name: "TextDecoder", - constructor: true, - JSType: "object", - finalize: true, - proto: { - decode: { - // Function definition - args: 1, - }, - encoding: { - // Getter with caching - getter: true, - cache: true, - }, - fatal: { - // Read-only property - getter: true, - }, - ignoreBOM: { - // Read-only property - getter: true, - }, - }, -}); -``` - -Each class definition specifies: - -- The class name -- Whether it has a constructor -- JavaScript type (object, function, etc.) -- Properties and methods in the `proto` field -- Caching strategy for properties -- Finalization requirements - -### Zig Implementation (.zig) - -The Zig files implement the native functionality: - -```zig -// Example: TextDecoder.zig -pub const TextDecoder = struct { - // Expose generated bindings as `js` namespace with trait conversion methods - pub const js = JSC.Codegen.JSTextDecoder; - pub const toJS = js.toJS; - pub const fromJS = js.fromJS; - pub const fromJSDirect = js.fromJSDirect; - - // Internal state - encoding: []const u8, - fatal: bool, - ignoreBOM: bool, - - // Constructor implementation - note use of globalObject - pub fn constructor( - globalObject: *JSGlobalObject, - callFrame: *JSC.CallFrame, - ) bun.JSError!*TextDecoder { - // Implementation - - return bun.new(TextDecoder, .{ - // Fields - }); - } - - // Prototype methods - note return type includes JSError - pub fn decode( - this: *TextDecoder, - globalObject: *JSGlobalObject, - callFrame: *JSC.CallFrame, - ) bun.JSError!JSC.JSValue { - // Implementation - } - - // Getters - pub fn getEncoding(this: *TextDecoder, globalObject: *JSGlobalObject) JSC.JSValue { - return JSC.JSValue.createStringFromUTF8(globalObject, this.encoding); - } - - pub fn getFatal(this: *TextDecoder, globalObject: *JSGlobalObject) JSC.JSValue { - return JSC.JSValue.jsBoolean(this.fatal); - } - - // Cleanup - note standard pattern of using deinit/deref - fn deinit(this: *TextDecoder) void { - // Release any retained resources - // Free the pointer at the end. - bun.destroy(this); - } - - // Finalize - called by JS garbage collector. This should call deinit, or deref if reference counted. - pub fn finalize(this: *TextDecoder) void { - this.deinit(); - } -}; -``` - -Key components in the Zig file: - -- The struct containing native state -- `pub const js = JSC.Codegen.JS` to include generated code -- Constructor and methods using `bun.JSError!JSValue` return type for proper error handling -- Consistent use of `globalObject` parameter name instead of `ctx` -- Methods matching the JavaScript interface -- Getters/setters for properties -- Proper resource cleanup pattern with `deinit()` and `finalize()` -- Update `src/bun.js/bindings/generated_classes_list.zig` to include the new class - -## Code Generation System - -The binding generator produces C++ code that connects JavaScript and Zig: - -1. **JSC Class Structure**: Creates C++ classes for the JS object, prototype, and constructor -2. **Memory Management**: Handles GC integration through JSC's WriteBarrier -3. **Method Binding**: Connects JS function calls to Zig implementations -4. **Type Conversion**: Converts between JS values and Zig types -5. **Property Caching**: Implements the caching system for properties - -The generated C++ code includes: - -- A JSC wrapper class (`JSTextDecoder`) -- A prototype class (`JSTextDecoderPrototype`) -- A constructor function (`JSTextDecoderConstructor`) -- Function bindings (`TextDecoderPrototype__decodeCallback`) -- Property getters/setters (`TextDecoderPrototype__encodingGetterWrap`) - -## CallFrame Access - -The `CallFrame` object provides access to JavaScript execution context: - -```zig -pub fn decode( - this: *TextDecoder, - globalObject: *JSGlobalObject, - callFrame: *JSC.CallFrame -) bun.JSError!JSC.JSValue { - // Get arguments - const input = callFrame.argument(0); - const options = callFrame.argument(1); - - // Get this value - const thisValue = callFrame.thisValue(); - - // Implementation with error handling - if (input.isUndefinedOrNull()) { - return globalObject.throw("Input cannot be null or undefined", .{}); - } - - // Return value or throw error - return JSC.JSValue.jsString(globalObject, "result"); -} -``` - -CallFrame methods include: - -- `argument(i)`: Get the i-th argument -- `argumentCount()`: Get the number of arguments -- `thisValue()`: Get the `this` value -- `callee()`: Get the function being called - -## Property Caching and GC-Owned Values - -The `cache: true` option in property definitions enables JSC's WriteBarrier to efficiently store values: - -```typescript -encoding: { - getter: true, - cache: true, // Enable caching -} -``` - -### C++ Implementation - -In the generated C++ code, caching uses JSC's WriteBarrier: - -```cpp -JSC_DEFINE_CUSTOM_GETTER(TextDecoderPrototype__encodingGetterWrap, (...)) { - auto& vm = JSC::getVM(lexicalGlobalObject); - Zig::GlobalObject *globalObject = reinterpret_cast(lexicalGlobalObject); - auto throwScope = DECLARE_THROW_SCOPE(vm); - JSTextDecoder* thisObject = jsCast(JSValue::decode(encodedThisValue)); - JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); - - // Check for cached value and return if present - if (JSValue cachedValue = thisObject->m_encoding.get()) - return JSValue::encode(cachedValue); - - // Get value from Zig implementation - JSC::JSValue result = JSC::JSValue::decode( - TextDecoderPrototype__getEncoding(thisObject->wrapped(), globalObject) - ); - RETURN_IF_EXCEPTION(throwScope, {}); - - // Store in cache for future access - thisObject->m_encoding.set(vm, thisObject, result); - RELEASE_AND_RETURN(throwScope, JSValue::encode(result)); -} -``` - -### Zig Accessor Functions - -For each cached property, the generator creates Zig accessor functions that allow Zig code to work with these GC-owned values: - -```zig -// External function declarations -extern fn TextDecoderPrototype__encodingSetCachedValue(JSC.JSValue, *JSC.JSGlobalObject, JSC.JSValue) callconv(JSC.conv) void; -extern fn TextDecoderPrototype__encodingGetCachedValue(JSC.JSValue) callconv(JSC.conv) JSC.JSValue; - -/// `TextDecoder.encoding` setter -/// This value will be visited by the garbage collector. -pub fn encodingSetCached(thisValue: JSC.JSValue, globalObject: *JSC.JSGlobalObject, value: JSC.JSValue) void { - JSC.markBinding(@src()); - TextDecoderPrototype__encodingSetCachedValue(thisValue, globalObject, value); -} - -/// `TextDecoder.encoding` getter -/// This value will be visited by the garbage collector. -pub fn encodingGetCached(thisValue: JSC.JSValue) ?JSC.JSValue { - JSC.markBinding(@src()); - const result = TextDecoderPrototype__encodingGetCachedValue(thisValue); - if (result == .zero) - return null; - - return result; -} -``` - -### Benefits of GC-Owned Values - -This system provides several key benefits: - -1. **Automatic Memory Management**: The JavaScriptCore GC tracks and manages these values -2. **Proper Garbage Collection**: The WriteBarrier ensures values are properly visited during GC -3. **Consistent Access**: Zig code can easily get/set these cached JS values -4. **Performance**: Cached values avoid repeated computation or serialization - -### Use Cases - -GC-owned cached values are particularly useful for: - -1. **Computed Properties**: Store expensive computation results -2. **Lazily Created Objects**: Create objects only when needed, then cache them -3. **References to Other Objects**: Store references to other JS objects that need GC tracking -4. **Memoization**: Cache results based on input parameters - -The WriteBarrier mechanism ensures that any JS values stored in this way are properly tracked by the garbage collector. - -## Memory Management and Finalization - -The binding system handles memory management across the JavaScript/Zig boundary: - -1. **Object Creation**: JavaScript `new TextDecoder()` creates both a JS wrapper and a Zig struct -2. **Reference Tracking**: JSC's GC tracks all JS references to the object -3. **Finalization**: When the JS object is collected, the finalizer releases Zig resources - -Bun uses a consistent pattern for resource cleanup: - -```zig -// Resource cleanup method - separate from finalization -pub fn deinit(this: *TextDecoder) void { - // Release resources like strings - this._encoding.deref(); // String deref pattern - - // Free any buffers - if (this.buffer) |buffer| { - bun.default_allocator.free(buffer); - } -} - -// Called by the GC when object is collected -pub fn finalize(this: *TextDecoder) void { - JSC.markBinding(@src()); // For debugging - this.deinit(); // Clean up resources - bun.default_allocator.destroy(this); // Free the object itself -} -``` - -Some objects that hold references to other JS objects use `.deref()` instead: - -```zig -pub fn finalize(this: *SocketAddress) void { - JSC.markBinding(@src()); - this._presentation.deref(); // Release references - this.destroy(); -} -``` - -## Error Handling with JSError - -Bun uses `bun.JSError!JSValue` return type for proper error handling: - -```zig -pub fn decode( - this: *TextDecoder, - globalObject: *JSGlobalObject, - callFrame: *JSC.CallFrame -) bun.JSError!JSC.JSValue { - // Throwing an error - if (callFrame.argumentCount() < 1) { - return globalObject.throw("Missing required argument", .{}); - } - - // Or returning a success value - return JSC.JSValue.jsString(globalObject, "Success!"); -} -``` - -This pattern allows Zig functions to: - -1. Return JavaScript values on success -2. Throw JavaScript exceptions on error -3. Propagate errors automatically through the call stack - -## Type Safety and Error Handling - -The binding system includes robust error handling: - -```cpp -// Example of type checking in generated code -JSTextDecoder* thisObject = jsDynamicCast(callFrame->thisValue()); -if (UNLIKELY(!thisObject)) { - scope.throwException(lexicalGlobalObject, - Bun::createInvalidThisError(lexicalGlobalObject, callFrame->thisValue(), "TextDecoder"_s)); - return {}; -} -``` - -## Prototypal Inheritance - -The binding system creates proper JavaScript prototype chains: - -1. **Constructor**: JSTextDecoderConstructor with standard .prototype property -2. **Prototype**: JSTextDecoderPrototype with methods and properties -3. **Instances**: Each JSTextDecoder instance with **proto** pointing to prototype - -This ensures JavaScript inheritance works as expected: - -```cpp -// From generated code -void JSTextDecoderConstructor::finishCreation(VM& vm, JSC::JSGlobalObject* globalObject, JSTextDecoderPrototype* prototype) -{ - Base::finishCreation(vm, 0, "TextDecoder"_s, PropertyAdditionMode::WithoutStructureTransition); - - // Set up the prototype chain - putDirectWithoutTransition(vm, vm.propertyNames->prototype, prototype, PropertyAttribute::DontEnum | PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly); - ASSERT(inherits(info())); -} -``` - -## Performance Considerations - -The binding system is optimized for performance: - -1. **Direct Pointer Access**: JavaScript objects maintain a direct pointer to Zig objects -2. **Property Caching**: WriteBarrier caching avoids repeated native calls for stable properties -3. **Memory Management**: JSC garbage collection integrated with Zig memory management -4. **Type Conversion**: Fast paths for common JavaScript/Zig type conversions - -## Creating a New Class Binding - -To create a new class binding in Bun: - -1. **Define the class interface** in a `.classes.ts` file: - - ```typescript - define({ - name: "MyClass", - constructor: true, - finalize: true, - proto: { - myMethod: { - args: 1, - }, - myProperty: { - getter: true, - cache: true, - }, - }, - }); - ``` - -2. **Implement the native functionality** in a `.zig` file: - - ```zig - pub const MyClass = struct { - // Generated bindings - pub const js = JSC.Codegen.JSMyClass; - pub const toJS = js.toJS; - pub const fromJS = js.fromJS; - pub const fromJSDirect = js.fromJSDirect; - - // State - value: []const u8, - - pub const new = bun.TrivialNew(@This()); - - // Constructor - pub fn constructor( - globalObject: *JSGlobalObject, - callFrame: *JSC.CallFrame, - ) bun.JSError!*MyClass { - const arg = callFrame.argument(0); - // Implementation - } - - // Method - pub fn myMethod( - this: *MyClass, - globalObject: *JSGlobalObject, - callFrame: *JSC.CallFrame, - ) bun.JSError!JSC.JSValue { - // Implementation - } - - // Getter - pub fn getMyProperty(this: *MyClass, globalObject: *JSGlobalObject) JSC.JSValue { - return JSC.JSValue.jsString(globalObject, this.value); - } - - // Resource cleanup - pub fn deinit(this: *MyClass) void { - // Clean up resources - } - - pub fn finalize(this: *MyClass) void { - this.deinit(); - bun.destroy(this); - } - }; - ``` - -3. **The binding generator** creates all necessary C++ and Zig glue code to connect JavaScript and Zig, including: - - C++ class definitions - - Method and property bindings - - Memory management utilities - - GC integration code - -## Generated Code Structure - -The binding generator produces several components: - -### 1. C++ Classes - -For each Zig class, the system generates: - -- **JS**: Main wrapper that holds a pointer to the Zig object (`JSTextDecoder`) -- **JSPrototype**: Contains methods and properties (`JSTextDecoderPrototype`) -- **JSConstructor**: Implementation of the JavaScript constructor (`JSTextDecoderConstructor`) - -### 2. C++ Methods and Properties - -- **Method Callbacks**: `TextDecoderPrototype__decodeCallback` -- **Property Getters/Setters**: `TextDecoderPrototype__encodingGetterWrap` -- **Initialization Functions**: `finishCreation` methods for setting up the class - -### 3. Zig Bindings - -- **External Function Declarations**: - - ```zig - extern fn TextDecoderPrototype__decode(*TextDecoder, *JSC.JSGlobalObject, *JSC.CallFrame) callconv(JSC.conv) JSC.EncodedJSValue; - ``` - -- **Cached Value Accessors**: - - ```zig - pub fn encodingGetCached(thisValue: JSC.JSValue) ?JSC.JSValue { ... } - pub fn encodingSetCached(thisValue: JSC.JSValue, globalObject: *JSC.JSGlobalObject, value: JSC.JSValue) void { ... } - ``` - -- **Constructor Helpers**: - ```zig - pub fn create(globalObject: *JSC.JSGlobalObject) bun.JSError!JSC.JSValue { ... } - ``` - -### 4. GC Integration - -- **Memory Cost Calculation**: `estimatedSize` method -- **Child Visitor Methods**: `visitChildrenImpl` and `visitAdditionalChildren` -- **Heap Analysis**: `analyzeHeap` for debugging memory issues - -This architecture makes it possible to implement high-performance native functionality in Zig while exposing a clean, idiomatic JavaScript API to users. From 699d8b1e1ce6714f4dd06fcdc623c74cbf9f94b1 Mon Sep 17 00:00:00 2001 From: SUZUKI Sosuke Date: Fri, 26 Dec 2025 07:00:58 +0900 Subject: [PATCH 197/212] Upgrade WebKit Dec 24, 2025 (#25684) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - WTFMove → WTF::move / std::move: Replaced WTFMove() macro with WTF::move() function for WTF types, std::move() for std types - SortedArrayMap removed: Replaced with if-else chains in EventFactory.cpp, JSCryptoKeyUsage.cpp - Wasm::Memory::create signature changed: Removed VM parameter - URLPattern allocation: Changed from WTF_MAKE_ISO_ALLOCATED to WTF_MAKE_TZONE_ALLOCATED --------- Co-authored-by: Claude Opus 4.5 Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> --- cmake/tools/SetupWebKit.cmake | 2 +- src/bake/BakeGlobalObject.cpp | 4 +- src/bake/BakeSourceProvider.cpp | 8 +- src/bake/BakeSourceProvider.h | 4 +- src/bake/DevServerSourceProvider.h | 4 +- src/bun.js/bindings/BunCPUProfiler.cpp | 6 +- src/bun.js/bindings/BunClientData.cpp | 4 +- src/bun.js/bindings/BunClientData.h | 4 +- src/bun.js/bindings/BunDebugger.cpp | 6 +- src/bun.js/bindings/BunInjectedScriptHost.cpp | 2 +- src/bun.js/bindings/BunInspector.cpp | 6 +- src/bun.js/bindings/BunObject.cpp | 6 +- src/bun.js/bindings/BunPlugin.cpp | 2 +- src/bun.js/bindings/BunProcess.cpp | 2 +- src/bun.js/bindings/BunProcess.h | 4 +- src/bun.js/bindings/BunString.cpp | 12 +- src/bun.js/bindings/ConsoleObject.cpp | 6 +- src/bun.js/bindings/CookieMap.cpp | 14 +- src/bun.js/bindings/DOMFormData.cpp | 4 +- src/bun.js/bindings/DOMURL.cpp | 10 +- src/bun.js/bindings/ErrorStackTrace.h | 6 +- src/bun.js/bindings/EventLoopTask.h | 6 +- src/bun.js/bindings/EventLoopTaskNoContext.h | 2 +- src/bun.js/bindings/Exception.h | 4 +- src/bun.js/bindings/ExceptionOr.h | 14 +- src/bun.js/bindings/FormatStackTraceForJS.cpp | 2 +- .../InspectorBunFrontendDevServerAgent.cpp | 6 +- .../bindings/InspectorHTTPServerAgent.cpp | 16 +- .../bindings/InspectorLifecycleAgent.cpp | 4 +- .../bindings/InternalModuleRegistry.cpp | 2 +- src/bun.js/bindings/JSBuffer.cpp | 16 +- src/bun.js/bindings/JSBunRequest.cpp | 4 +- src/bun.js/bindings/JSBundlerPlugin.cpp | 4 +- src/bun.js/bindings/JSBundlerPlugin.h | 4 +- src/bun.js/bindings/JSCTaskScheduler.cpp | 10 +- src/bun.js/bindings/JSCommonJSModule.cpp | 8 +- .../bindings/JSDOMExceptionHandling.cpp | 2 +- src/bun.js/bindings/JSDOMExceptionHandling.h | 4 +- src/bun.js/bindings/JSDOMWrapper.h | 2 +- src/bun.js/bindings/JSDOMWrapperCache.h | 4 +- src/bun.js/bindings/JSFFIFunction.cpp | 8 +- src/bun.js/bindings/JSSecrets.cpp | 6 +- src/bun.js/bindings/JSStringDecoder.cpp | 2 +- src/bun.js/bindings/JSX509Certificate.cpp | 12 +- src/bun.js/bindings/ModuleLoader.cpp | 32 +-- src/bun.js/bindings/NodeDirent.cpp | 4 +- src/bun.js/bindings/NodeHTTP.cpp | 6 +- src/bun.js/bindings/NodeVM.cpp | 8 +- src/bun.js/bindings/NodeVMModule.cpp | 8 +- src/bun.js/bindings/NodeVMModule.h | 2 +- src/bun.js/bindings/NodeVMScript.cpp | 6 +- src/bun.js/bindings/NodeVMScript.h | 4 +- .../bindings/NodeVMSourceTextModule.cpp | 16 +- src/bun.js/bindings/NodeVMSourceTextModule.h | 4 +- src/bun.js/bindings/NodeVMSyntheticModule.cpp | 2 +- src/bun.js/bindings/NodeVMSyntheticModule.h | 4 +- .../bindings/ScriptExecutionContext.cpp | 14 +- src/bun.js/bindings/Serialization.cpp | 4 +- src/bun.js/bindings/ShellBindings.cpp | 2 +- src/bun.js/bindings/TextCodecCJK.cpp | 4 +- src/bun.js/bindings/TextEncodingRegistry.cpp | 2 +- src/bun.js/bindings/URLSearchParams.cpp | 4 +- src/bun.js/bindings/Uint8Array.cpp | 4 +- src/bun.js/bindings/ZigGlobalObject.cpp | 34 +-- src/bun.js/bindings/ZigSourceProvider.cpp | 6 +- src/bun.js/bindings/ZigSourceProvider.h | 2 +- src/bun.js/bindings/bindings.cpp | 58 ++--- src/bun.js/bindings/helpers.h | 4 +- src/bun.js/bindings/napi.cpp | 36 +-- src/bun.js/bindings/napi.h | 2 +- src/bun.js/bindings/ncrypto.cpp | 38 +-- src/bun.js/bindings/ncrypto.h | 6 +- .../bindings/node/crypto/CryptoDhJob.cpp | 6 +- src/bun.js/bindings/node/crypto/CryptoDhJob.h | 10 +- .../node/crypto/CryptoGenDhKeyPair.cpp | 10 +- .../bindings/node/crypto/CryptoGenDhKeyPair.h | 4 +- .../node/crypto/CryptoGenDsaKeyPair.cpp | 4 +- .../node/crypto/CryptoGenEcKeyPair.cpp | 4 +- .../bindings/node/crypto/CryptoGenKeyPair.cpp | 12 +- .../node/crypto/CryptoGenNidKeyPair.cpp | 4 +- .../node/crypto/CryptoGenRsaKeyPair.cpp | 6 +- .../bindings/node/crypto/CryptoHkdf.cpp | 28 +-- .../bindings/node/crypto/CryptoKeygen.cpp | 14 +- .../bindings/node/crypto/CryptoKeys.cpp | 14 +- .../bindings/node/crypto/CryptoPrimes.cpp | 22 +- .../bindings/node/crypto/CryptoSignJob.cpp | 24 +- .../bindings/node/crypto/CryptoSignJob.h | 10 +- .../bindings/node/crypto/CryptoUtil.cpp | 10 +- .../node/crypto/DiffieHellmanFunctions.h | 4 +- src/bun.js/bindings/node/crypto/JSCipher.cpp | 10 +- src/bun.js/bindings/node/crypto/JSCipher.h | 4 +- .../node/crypto/JSCipherConstructor.cpp | 2 +- .../node/crypto/JSCipherPrototype.cpp | 6 +- .../bindings/node/crypto/JSDiffieHellman.h | 4 +- .../crypto/JSDiffieHellmanConstructor.cpp | 4 +- .../node/crypto/JSDiffieHellmanGroup.h | 4 +- .../JSDiffieHellmanGroupConstructor.cpp | 2 +- src/bun.js/bindings/node/crypto/JSECDH.h | 4 +- .../node/crypto/JSECDHConstructor.cpp | 2 +- .../bindings/node/crypto/JSECDHPrototype.cpp | 2 +- src/bun.js/bindings/node/crypto/JSKeyObject.h | 4 +- .../bindings/node/crypto/JSPrivateKeyObject.h | 4 +- .../bindings/node/crypto/JSPublicKeyObject.h | 4 +- .../bindings/node/crypto/JSSecretKeyObject.h | 4 +- src/bun.js/bindings/node/crypto/JSSign.cpp | 10 +- src/bun.js/bindings/node/crypto/JSVerify.cpp | 12 +- src/bun.js/bindings/node/crypto/KeyObject.cpp | 60 ++--- src/bun.js/bindings/node/crypto/KeyObject.h | 2 +- .../bindings/node/crypto/KeyObjectData.h | 8 +- .../node/crypto/node_crypto_binding.cpp | 2 +- src/bun.js/bindings/webcore/AbortSignal.cpp | 8 +- .../bindings/webcore/ActiveDOMObject.cpp | 12 +- src/bun.js/bindings/webcore/ActiveDOMObject.h | 10 +- .../webcore/AddEventListenerOptions.h | 2 +- .../bindings/webcore/BroadcastChannel.cpp | 20 +- src/bun.js/bindings/webcore/BufferSource.h | 2 +- .../webcore/BunBroadcastChannelRegistry.cpp | 2 +- src/bun.js/bindings/webcore/CallbackResult.h | 4 +- src/bun.js/bindings/webcore/DOMPromiseProxy.h | 8 +- src/bun.js/bindings/webcore/ErrorCallback.cpp | 2 +- src/bun.js/bindings/webcore/Event.cpp | 2 +- src/bun.js/bindings/webcore/EventContext.h | 2 +- src/bun.js/bindings/webcore/EventEmitter.cpp | 2 +- src/bun.js/bindings/webcore/EventFactory.cpp | 174 ++++++------- src/bun.js/bindings/webcore/EventInit.h | 2 +- .../bindings/webcore/EventListenerMap.cpp | 6 +- src/bun.js/bindings/webcore/FetchHeaders.cpp | 8 +- src/bun.js/bindings/webcore/FetchHeaders.h | 6 +- .../bindings/webcore/HTTPHeaderField.cpp | 6 +- src/bun.js/bindings/webcore/HTTPHeaderField.h | 6 +- src/bun.js/bindings/webcore/HTTPHeaderMap.cpp | 6 +- src/bun.js/bindings/webcore/HTTPHeaderMap.h | 10 +- src/bun.js/bindings/webcore/HTTPParsers.h | 2 +- .../webcore/IdentifierEventListenerMap.cpp | 10 +- .../webcore/IdentifierEventListenerMap.h | 4 +- .../bindings/webcore/JSAbortController.cpp | 8 +- .../bindings/webcore/JSAbortController.h | 2 +- src/bun.js/bindings/webcore/JSAbortSignal.cpp | 10 +- src/bun.js/bindings/webcore/JSAbortSignal.h | 2 +- .../bindings/webcore/JSBroadcastChannel.cpp | 10 +- .../bindings/webcore/JSBroadcastChannel.h | 2 +- src/bun.js/bindings/webcore/JSCloseEvent.cpp | 8 +- src/bun.js/bindings/webcore/JSCloseEvent.h | 2 +- src/bun.js/bindings/webcore/JSCookie.cpp | 16 +- src/bun.js/bindings/webcore/JSCookie.h | 2 +- src/bun.js/bindings/webcore/JSCookieMap.cpp | 16 +- src/bun.js/bindings/webcore/JSCookieMap.h | 2 +- src/bun.js/bindings/webcore/JSCustomEvent.cpp | 10 +- src/bun.js/bindings/webcore/JSCustomEvent.h | 2 +- .../bindings/webcore/JSDOMConvertRecord.h | 8 +- .../webcore/JSDOMConvertScheduledAction.h | 2 +- .../bindings/webcore/JSDOMConvertSequences.h | 34 +-- .../bindings/webcore/JSDOMConvertStrings.cpp | 2 +- .../bindings/webcore/JSDOMConvertUnion.h | 10 +- .../bindings/webcore/JSDOMConvertVariadic.h | 2 +- .../bindings/webcore/JSDOMException.cpp | 8 +- src/bun.js/bindings/webcore/JSDOMException.h | 2 +- src/bun.js/bindings/webcore/JSDOMFormData.cpp | 18 +- src/bun.js/bindings/webcore/JSDOMFormData.h | 2 +- .../webcore/JSDOMOperationReturningPromise.h | 4 +- src/bun.js/bindings/webcore/JSDOMPromise.cpp | 4 +- .../bindings/webcore/JSDOMPromiseDeferred.cpp | 12 +- .../bindings/webcore/JSDOMPromiseDeferred.h | 10 +- src/bun.js/bindings/webcore/JSDOMURL.cpp | 34 +-- src/bun.js/bindings/webcore/JSDOMURL.h | 2 +- src/bun.js/bindings/webcore/JSErrorEvent.cpp | 8 +- src/bun.js/bindings/webcore/JSErrorEvent.h | 2 +- src/bun.js/bindings/webcore/JSEvent.cpp | 12 +- src/bun.js/bindings/webcore/JSEvent.h | 2 +- .../bindings/webcore/JSEventEmitter.cpp | 20 +- src/bun.js/bindings/webcore/JSEventEmitter.h | 2 +- .../bindings/webcore/JSEventEmitterCustom.cpp | 4 +- src/bun.js/bindings/webcore/JSEventTarget.cpp | 10 +- src/bun.js/bindings/webcore/JSEventTarget.h | 2 +- .../bindings/webcore/JSEventTargetCustom.cpp | 2 +- .../bindings/webcore/JSFetchHeaders.cpp | 14 +- src/bun.js/bindings/webcore/JSFetchHeaders.h | 2 +- src/bun.js/bindings/webcore/JSMIMEType.cpp | 10 +- src/bun.js/bindings/webcore/JSMIMEType.h | 4 +- .../bindings/webcore/JSMessageChannel.cpp | 6 +- .../bindings/webcore/JSMessageChannel.h | 2 +- .../bindings/webcore/JSMessageEvent.cpp | 10 +- src/bun.js/bindings/webcore/JSMessageEvent.h | 2 +- src/bun.js/bindings/webcore/JSMessagePort.cpp | 8 +- src/bun.js/bindings/webcore/JSMessagePort.h | 2 +- src/bun.js/bindings/webcore/JSPerformance.cpp | 18 +- src/bun.js/bindings/webcore/JSPerformance.h | 2 +- .../bindings/webcore/JSPerformanceEntry.cpp | 2 +- .../bindings/webcore/JSPerformanceEntry.h | 2 +- .../webcore/JSPerformanceEntryCustom.cpp | 12 +- .../bindings/webcore/JSPerformanceMark.cpp | 8 +- .../bindings/webcore/JSPerformanceMark.h | 2 +- .../bindings/webcore/JSPerformanceMeasure.cpp | 2 +- .../bindings/webcore/JSPerformanceMeasure.h | 2 +- .../webcore/JSPerformanceObserver.cpp | 8 +- .../bindings/webcore/JSPerformanceObserver.h | 2 +- .../JSPerformanceObserverEntryList.cpp | 8 +- .../webcore/JSPerformanceObserverEntryList.h | 2 +- .../webcore/JSPerformanceResourceTiming.cpp | 2 +- .../webcore/JSPerformanceResourceTiming.h | 2 +- .../webcore/JSPerformanceServerTiming.cpp | 4 +- .../webcore/JSPerformanceServerTiming.h | 2 +- .../bindings/webcore/JSPerformanceTiming.cpp | 4 +- .../bindings/webcore/JSPerformanceTiming.h | 2 +- .../bindings/webcore/JSReadableStreamSink.cpp | 8 +- .../bindings/webcore/JSReadableStreamSink.h | 2 +- .../webcore/JSReadableStreamSource.cpp | 10 +- .../bindings/webcore/JSReadableStreamSource.h | 2 +- .../webcore/JSReadableStreamSourceCustom.cpp | 4 +- src/bun.js/bindings/webcore/JSTextEncoder.cpp | 6 +- src/bun.js/bindings/webcore/JSTextEncoder.h | 2 +- src/bun.js/bindings/webcore/JSURLPattern.cpp | 22 +- src/bun.js/bindings/webcore/JSURLPattern.h | 2 +- .../bindings/webcore/JSURLSearchParams.cpp | 16 +- .../bindings/webcore/JSURLSearchParams.h | 2 +- .../bindings/webcore/JSValueInWrappedObject.h | 2 +- .../webcore/JSWasmStreamingCompiler.cpp | 4 +- .../webcore/JSWasmStreamingCompiler.h | 2 +- src/bun.js/bindings/webcore/JSWebSocket.cpp | 26 +- src/bun.js/bindings/webcore/JSWebSocket.h | 2 +- src/bun.js/bindings/webcore/JSWorker.cpp | 26 +- src/bun.js/bindings/webcore/JSWorker.h | 2 +- .../bindings/webcore/JSWritableStream.cpp | 8 +- .../bindings/webcore/JSWritableStream.h | 2 +- .../bindings/webcore/JSWritableStreamSink.cpp | 8 +- .../bindings/webcore/JSWritableStreamSink.h | 2 +- src/bun.js/bindings/webcore/MessageEvent.cpp | 26 +- src/bun.js/bindings/webcore/MessagePort.cpp | 30 +-- .../bindings/webcore/MessagePortChannel.cpp | 8 +- .../MessagePortChannelProviderImpl.cpp | 8 +- .../webcore/MessagePortChannelRegistry.cpp | 4 +- .../bindings/webcore/NetworkLoadMetrics.cpp | 34 +-- src/bun.js/bindings/webcore/Performance.cpp | 14 +- .../bindings/webcore/PerformanceMark.cpp | 2 +- .../bindings/webcore/PerformanceMeasure.cpp | 4 +- .../bindings/webcore/PerformanceObserver.cpp | 4 +- .../bindings/webcore/PerformanceObserver.h | 2 +- .../webcore/PerformanceObserverEntryList.cpp | 4 +- .../webcore/PerformanceResourceTiming.cpp | 4 +- .../webcore/PerformanceServerTiming.cpp | 6 +- .../webcore/PerformanceUserTiming.cpp | 6 +- .../ReadableStreamDefaultController.cpp | 2 +- .../bindings/webcore/ReadableStreamSink.cpp | 6 +- .../bindings/webcore/ReadableStreamSink.h | 2 +- .../bindings/webcore/ReadableStreamSource.cpp | 6 +- .../webcore/RegisteredEventListener.h | 4 +- .../bindings/webcore/ResourceTiming.cpp | 10 +- src/bun.js/bindings/webcore/ResourceTiming.h | 8 +- .../webcore/SerializedScriptValue.cpp | 234 +++++++++--------- .../bindings/webcore/SerializedScriptValue.h | 18 +- src/bun.js/bindings/webcore/ServerTiming.cpp | 2 +- src/bun.js/bindings/webcore/ServerTiming.h | 10 +- .../bindings/webcore/ServerTimingParser.cpp | 4 +- .../bindings/webcore/StructuredClone.cpp | 14 +- .../webcore/StructuredSerializeOptions.h | 2 +- src/bun.js/bindings/webcore/URLPattern.cpp | 39 ++- src/bun.js/bindings/webcore/URLPattern.h | 2 +- .../bindings/webcore/URLPatternComponent.cpp | 12 +- .../URLPatternConstructorStringParser.cpp | 18 +- .../bindings/webcore/URLPatternParser.cpp | 20 +- .../bindings/webcore/URLPatternParser.h | 2 +- .../bindings/webcore/URLPatternTokenizer.cpp | 2 +- src/bun.js/bindings/webcore/WebSocket.cpp | 38 +-- src/bun.js/bindings/webcore/Worker.cpp | 40 +-- .../bindings/webcore/WritableStream.cpp | 6 +- .../bindings/webcore/WritableStreamSink.h | 4 +- .../bindings/webcrypto/CryptoAlgorithm.cpp | 8 +- .../webcrypto/CryptoAlgorithmAES_CBC.cpp | 18 +- .../CryptoAlgorithmAES_CBCOpenSSL.cpp | 4 +- .../webcrypto/CryptoAlgorithmAES_CFB.cpp | 18 +- .../CryptoAlgorithmAES_CFBOpenSSL.cpp | 4 +- .../webcrypto/CryptoAlgorithmAES_CTR.cpp | 18 +- .../CryptoAlgorithmAES_CTROpenSSL.cpp | 4 +- .../webcrypto/CryptoAlgorithmAES_GCM.cpp | 18 +- .../CryptoAlgorithmAES_GCMOpenSSL.cpp | 4 +- .../webcrypto/CryptoAlgorithmAES_KW.cpp | 14 +- .../CryptoAlgorithmAES_KWOpenSSL.cpp | 4 +- .../webcrypto/CryptoAlgorithmAesGcmParams.h | 2 +- .../webcrypto/CryptoAlgorithmECDH.cpp | 26 +- .../webcrypto/CryptoAlgorithmECDSA.cpp | 22 +- .../webcrypto/CryptoAlgorithmEd25519.cpp | 22 +- .../webcrypto/CryptoAlgorithmHKDF.cpp | 6 +- .../webcrypto/CryptoAlgorithmHMAC.cpp | 18 +- .../webcrypto/CryptoAlgorithmHMACOpenSSL.cpp | 4 +- .../webcrypto/CryptoAlgorithmPBKDF2.cpp | 6 +- .../CryptoAlgorithmRSAES_PKCS1_v1_5.cpp | 28 +-- .../CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp | 28 +-- .../webcrypto/CryptoAlgorithmRSA_OAEP.cpp | 28 +-- .../webcrypto/CryptoAlgorithmRSA_PSS.cpp | 28 +-- .../webcrypto/CryptoAlgorithmRsaOaepParams.h | 2 +- .../webcrypto/CryptoAlgorithmSHA1.cpp | 8 +- .../webcrypto/CryptoAlgorithmSHA224.cpp | 8 +- .../webcrypto/CryptoAlgorithmSHA256.cpp | 8 +- .../webcrypto/CryptoAlgorithmSHA384.cpp | 8 +- .../webcrypto/CryptoAlgorithmSHA512.cpp | 8 +- .../webcrypto/CryptoAlgorithmX25519.cpp | 26 +- .../bindings/webcrypto/CryptoKeyAES.cpp | 6 +- src/bun.js/bindings/webcrypto/CryptoKeyEC.cpp | 20 +- src/bun.js/bindings/webcrypto/CryptoKeyEC.h | 2 +- .../bindings/webcrypto/CryptoKeyECOpenSSL.cpp | 16 +- .../bindings/webcrypto/CryptoKeyHMAC.cpp | 6 +- .../bindings/webcrypto/CryptoKeyOKP.cpp | 20 +- .../webcrypto/CryptoKeyOKPOpenSSL.cpp | 8 +- .../bindings/webcrypto/CryptoKeyRSA.cpp | 30 +-- src/bun.js/bindings/webcrypto/CryptoKeyRSA.h | 2 +- .../webcrypto/CryptoKeyRSAComponents.cpp | 22 +- .../webcrypto/CryptoKeyRSAComponents.h | 6 +- .../webcrypto/CryptoKeyRSAOpenSSL.cpp | 16 +- .../bindings/webcrypto/CryptoKeyRaw.cpp | 2 +- src/bun.js/bindings/webcrypto/CryptoKeyRaw.h | 2 +- src/bun.js/bindings/webcrypto/JSCryptoKey.cpp | 8 +- src/bun.js/bindings/webcrypto/JSCryptoKey.h | 2 +- .../bindings/webcrypto/JSCryptoKeyUsage.cpp | 4 +- .../bindings/webcrypto/JSSubtleCrypto.cpp | 32 +-- .../bindings/webcrypto/JSSubtleCrypto.h | 2 +- .../bindings/webcrypto/PhonyWorkQueue.cpp | 2 +- .../bindings/webcrypto/SubtleCrypto.cpp | 100 ++++---- src/bun.js/modules/BunJSCModule.h | 10 +- src/codegen/bindgen.ts | 6 +- src/codegen/generate-classes.ts | 12 +- src/vm/SigintWatcher.h | 4 +- 321 files changed, 1623 insertions(+), 1624 deletions(-) diff --git a/cmake/tools/SetupWebKit.cmake b/cmake/tools/SetupWebKit.cmake index 6ff1af55d8..85bac91e7b 100644 --- a/cmake/tools/SetupWebKit.cmake +++ b/cmake/tools/SetupWebKit.cmake @@ -2,7 +2,7 @@ option(WEBKIT_VERSION "The version of WebKit to use") option(WEBKIT_LOCAL "If a local version of WebKit should be used instead of downloading") if(NOT WEBKIT_VERSION) - set(WEBKIT_VERSION 8400ec68b2649d7b95f10576ad648c3aa8a92b77) + set(WEBKIT_VERSION 2317e1413969bff5e86d240f9f50aa2120776414) endif() string(SUBSTRING ${WEBKIT_VERSION} 0 16 WEBKIT_VERSION_PREFIX) diff --git a/src/bake/BakeGlobalObject.cpp b/src/bake/BakeGlobalObject.cpp index f7ca1b4231..b5c25eecac 100644 --- a/src/bake/BakeGlobalObject.cpp +++ b/src/bake/BakeGlobalObject.cpp @@ -141,10 +141,10 @@ JSC::JSInternalPromise* bakeModuleLoaderFetch(JSC::JSGlobalObject* globalObject, globalObject, source.toWTFString(), origin, - WTFMove(moduleKey), + WTF::move(moduleKey), WTF::TextPosition(), JSC::SourceProviderSourceType::Module)); - return resolvedInternalPromise(globalObject, JSC::JSSourceCode::create(vm, WTFMove(sourceCode))); + return resolvedInternalPromise(globalObject, JSC::JSSourceCode::create(vm, WTF::move(sourceCode))); } // We unconditionally prefix the key with "bake:" inside diff --git a/src/bake/BakeSourceProvider.cpp b/src/bake/BakeSourceProvider.cpp index 8efa3d8d34..24353dcb7b 100644 --- a/src/bake/BakeSourceProvider.cpp +++ b/src/bake/BakeSourceProvider.cpp @@ -33,7 +33,7 @@ extern "C" JSC::EncodedJSValue BakeLoadInitialServerCode(JSC::JSGlobalObject* gl global, source.toWTFString(), origin, - WTFMove(string), + WTF::move(string), WTF::TextPosition(), JSC::SourceProviderSourceType::Program )); @@ -67,7 +67,7 @@ extern "C" JSC::EncodedJSValue BakeLoadServerHmrPatch(GlobalObject* global, BunS global, source.toWTFString(), origin, - WTFMove(string), + WTF::move(string), WTF::TextPosition(), JSC::SourceProviderSourceType::Program )); @@ -93,7 +93,7 @@ extern "C" JSC::EncodedJSValue BakeLoadServerHmrPatchWithSourceMap(GlobalObject* sourceMapJSONPtr, sourceMapJSONLength, origin, - WTFMove(string), + WTF::move(string), WTF::TextPosition(), JSC::SourceProviderSourceType::Program ); @@ -159,7 +159,7 @@ extern "C" JSC::EncodedJSValue BakeRegisterProductionChunk(JSC::JSGlobalObject* global, source.toWTFString(), origin, - WTFMove(string), + WTF::move(string), WTF::TextPosition(), JSC::SourceProviderSourceType::Module )); diff --git a/src/bake/BakeSourceProvider.h b/src/bake/BakeSourceProvider.h index 7055fcedbe..2b6ffe495d 100644 --- a/src/bake/BakeSourceProvider.h +++ b/src/bake/BakeSourceProvider.h @@ -20,7 +20,7 @@ public: const TextPosition& startPosition, JSC::SourceProviderSourceType sourceType) { - auto provider = adoptRef(*new SourceProvider(source, sourceOrigin, WTFMove(sourceURL), startPosition, sourceType)); + auto provider = adoptRef(*new SourceProvider(source, sourceOrigin, WTF::move(sourceURL), startPosition, sourceType)); auto* zigGlobalObject = jsCast(globalObject); auto specifier = Bun::toString(provider->sourceURL()); Bun__addBakeSourceProviderSourceMap(zigGlobalObject->bunVM(), provider.ptr(), &specifier); @@ -38,7 +38,7 @@ private: source, sourceOrigin, JSC::SourceTaintedOrigin::Untainted, - WTFMove(sourceURL), + WTF::move(sourceURL), startPosition, sourceType) { diff --git a/src/bake/DevServerSourceProvider.h b/src/bake/DevServerSourceProvider.h index 7667b6f811..d18087dd14 100644 --- a/src/bake/DevServerSourceProvider.h +++ b/src/bake/DevServerSourceProvider.h @@ -25,7 +25,7 @@ public: const TextPosition& startPosition, JSC::SourceProviderSourceType sourceType) { - auto provider = adoptRef(*new DevServerSourceProvider(source, sourceMapJSONPtr, sourceMapJSONLength, sourceOrigin, WTFMove(sourceURL), startPosition, sourceType)); + auto provider = adoptRef(*new DevServerSourceProvider(source, sourceMapJSONPtr, sourceMapJSONLength, sourceOrigin, WTF::move(sourceURL), startPosition, sourceType)); auto* zigGlobalObject = jsCast<::Zig::GlobalObject*>(globalObject); auto specifier = Bun::toString(provider->sourceURL()); provider->m_globalObject = zigGlobalObject; @@ -52,7 +52,7 @@ private: source, sourceOrigin, JSC::SourceTaintedOrigin::Untainted, - WTFMove(sourceURL), + WTF::move(sourceURL), startPosition, sourceType) , m_sourceMapJSON(sourceMapJSONPtr, sourceMapJSONLength) diff --git a/src/bun.js/bindings/BunCPUProfiler.cpp b/src/bun.js/bindings/BunCPUProfiler.cpp index e31dccaae6..6fa40d2881 100644 --- a/src/bun.js/bindings/BunCPUProfiler.cpp +++ b/src/bun.js/bindings/BunCPUProfiler.cpp @@ -34,7 +34,7 @@ void startCPUProfiler(JSC::VM& vm) auto stopwatch = WTF::Stopwatch::create(); stopwatch->start(); - JSC::SamplingProfiler& samplingProfiler = vm.ensureSamplingProfiler(WTFMove(stopwatch)); + JSC::SamplingProfiler& samplingProfiler = vm.ensureSamplingProfiler(WTF::move(stopwatch)); // Set sampling interval to 1ms (1000 microseconds) to match Node.js samplingProfiler.setTimingInterval(WTF::Seconds::fromMicroseconds(1000)); @@ -92,7 +92,7 @@ WTF::String stopCPUProfilerAndGetJSON(JSC::VM& vm) rootNode.lineNumber = -1; rootNode.columnNumber = -1; rootNode.hitCount = 0; - nodes.append(WTFMove(rootNode)); + nodes.append(WTF::move(rootNode)); int nextNodeId = 2; WTF::Vector samples; @@ -229,7 +229,7 @@ WTF::String stopCPUProfilerAndGetJSON(JSC::VM& vm) node.columnNumber = columnNumber; node.hitCount = 0; - nodes.append(WTFMove(node)); + nodes.append(WTF::move(node)); // Add this node as child of parent if (currentParentId > 0) { diff --git a/src/bun.js/bindings/BunClientData.cpp b/src/bun.js/bindings/BunClientData.cpp index 37ebf65dde..aa1285153b 100644 --- a/src/bun.js/bindings/BunClientData.cpp +++ b/src/bun.js/bindings/BunClientData.cpp @@ -85,10 +85,10 @@ void JSVMClientData::create(VM* vm, void* bunVM) JSVMClientData* clientData = new JSVMClientData(*vm, provider); clientData->bunVM = bunVM; vm->deferredWorkTimer->onAddPendingWork = [clientData](Ref&& ticket, JSC::DeferredWorkTimer::WorkType kind) -> void { - Bun::JSCTaskScheduler::onAddPendingWork(clientData, WTFMove(ticket), kind); + Bun::JSCTaskScheduler::onAddPendingWork(clientData, WTF::move(ticket), kind); }; vm->deferredWorkTimer->onScheduleWorkSoon = [clientData](JSC::DeferredWorkTimer::Ticket ticket, JSC::DeferredWorkTimer::Task&& task) -> void { - Bun::JSCTaskScheduler::onScheduleWorkSoon(clientData, ticket, WTFMove(task)); + Bun::JSCTaskScheduler::onScheduleWorkSoon(clientData, ticket, WTF::move(task)); }; vm->deferredWorkTimer->onCancelPendingWork = [clientData](JSC::DeferredWorkTimer::Ticket ticket) -> void { Bun::JSCTaskScheduler::onCancelPendingWork(clientData, ticket); diff --git a/src/bun.js/bindings/BunClientData.h b/src/bun.js/bindings/BunClientData.h index 07ba0cfc95..d0ba38b19d 100644 --- a/src/bun.js/bindings/BunClientData.h +++ b/src/bun.js/bindings/BunClientData.h @@ -170,7 +170,7 @@ ALWAYS_INLINE JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm, GetClient uniqueSubspace = makeUnique ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, T); } space = uniqueSubspace.get(); - setServer(subspaces, WTFMove(uniqueSubspace)); + setServer(subspaces, WTF::move(uniqueSubspace)); IGNORE_WARNINGS_BEGIN("unreachable-code") IGNORE_WARNINGS_BEGIN("tautological-compare") @@ -184,7 +184,7 @@ ALWAYS_INLINE JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm, GetClient auto uniqueClientSubspace = makeUnique(*space); auto* clientSpace = uniqueClientSubspace.get(); - setClient(clientSubspaces, WTFMove(uniqueClientSubspace)); + setClient(clientSubspaces, WTF::move(uniqueClientSubspace)); return clientSpace; } diff --git a/src/bun.js/bindings/BunDebugger.cpp b/src/bun.js/bindings/BunDebugger.cpp index 00ee9499e9..25573fb197 100644 --- a/src/bun.js/bindings/BunDebugger.cpp +++ b/src/bun.js/bindings/BunDebugger.cpp @@ -280,7 +280,7 @@ public: } for (auto message : messages) { - dispatcher.dispatchMessageFromRemote(WTFMove(message)); + dispatcher.dispatchMessageFromRemote(WTF::move(message)); if (!debugger) { debugger = reinterpret_cast(globalObject->debugger()); @@ -293,7 +293,7 @@ public: } } else { for (auto message : messages) { - dispatcher.dispatchMessageFromRemote(WTFMove(message)); + dispatcher.dispatchMessageFromRemote(WTF::move(message)); } } @@ -461,7 +461,7 @@ JSC_DEFINE_HOST_FUNCTION(jsFunctionSend, (JSC::JSGlobalObject * globalObject, JS messages.append(value.toWTFString(globalObject).isolatedCopy()); return true; }); - jsConnection->connection()->sendMessageToInspectorFromDebuggerThread(WTFMove(messages)); + jsConnection->connection()->sendMessageToInspectorFromDebuggerThread(WTF::move(messages)); } return JSValue::encode(jsUndefined()); diff --git a/src/bun.js/bindings/BunInjectedScriptHost.cpp b/src/bun.js/bindings/BunInjectedScriptHost.cpp index 7141083305..0402d3ec87 100644 --- a/src/bun.js/bindings/BunInjectedScriptHost.cpp +++ b/src/bun.js/bindings/BunInjectedScriptHost.cpp @@ -130,7 +130,7 @@ JSValue BunInjectedScriptHost::getInternalProperties(VM& vm, JSGlobalObject* exe String name = worker->name(); if (!name.isEmpty()) - array->putDirectIndex(exec, index++, constructInternalProperty(vm, exec, "name"_s, jsString(vm, WTFMove(name)))); + array->putDirectIndex(exec, index++, constructInternalProperty(vm, exec, "name"_s, jsString(vm, WTF::move(name)))); array->putDirectIndex(exec, index++, constructInternalProperty(vm, exec, "terminated"_s, jsBoolean(worker->wasTerminated()))); diff --git a/src/bun.js/bindings/BunInspector.cpp b/src/bun.js/bindings/BunInspector.cpp index ef7a9a251d..cbabe4f91e 100644 --- a/src/bun.js/bindings/BunInspector.cpp +++ b/src/bun.js/bindings/BunInspector.cpp @@ -74,7 +74,7 @@ public: Bun__tickWhilePaused(&done); }; } - this->globalObject->inspectorDebuggable().dispatchMessageFromRemote(WTFMove(messageString)); + this->globalObject->inspectorDebuggable().dispatchMessageFromRemote(WTF::move(messageString)); } void drain() @@ -138,7 +138,7 @@ static void addInspector(void* app, JSC::JSGlobalObject* globalObject) delete inspector; } }; - ((uWS::SSLApp*)app)->ws("/bun:inspect", std::move(handler)); + ((uWS::SSLApp*)app)->ws("/bun:inspect", WTF::move(handler)); } else { auto handler = uWS::App::WebSocketBehavior { @@ -174,7 +174,7 @@ static void addInspector(void* app, JSC::JSGlobalObject* globalObject) delete inspector; } }; - ((uWS::App*)app)->ws("/bun:inspect", std::move(handler)); + ((uWS::App*)app)->ws("/bun:inspect", WTF::move(handler)); } } diff --git a/src/bun.js/bindings/BunObject.cpp b/src/bun.js/bindings/BunObject.cpp index 3f83574572..6296b0599f 100644 --- a/src/bun.js/bindings/BunObject.cpp +++ b/src/bun.js/bindings/BunObject.cpp @@ -232,12 +232,12 @@ static inline JSC::EncodedJSValue flattenArrayOfBuffersIntoArrayBufferOrUint8Arr } if (asUint8Array) { - auto uint8array = JSC::JSUint8Array::create(lexicalGlobalObject, lexicalGlobalObject->m_typedArrayUint8.get(lexicalGlobalObject), WTFMove(buffer), 0, byteLength); + auto uint8array = JSC::JSUint8Array::create(lexicalGlobalObject, lexicalGlobalObject->m_typedArrayUint8.get(lexicalGlobalObject), WTF::move(buffer), 0, byteLength); RETURN_IF_EXCEPTION(throwScope, {}); return JSValue::encode(uint8array); } - RELEASE_AND_RETURN(throwScope, JSValue::encode(JSC::JSArrayBuffer::create(vm, lexicalGlobalObject->arrayBufferStructure(), WTFMove(buffer)))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(JSC::JSArrayBuffer::create(vm, lexicalGlobalObject->arrayBufferStructure(), WTF::move(buffer)))); } JSC_DEFINE_HOST_FUNCTION(functionConcatTypedArrays, (JSGlobalObject * globalObject, JSC::CallFrame* callFrame)) @@ -585,7 +585,7 @@ JSC_DEFINE_HOST_FUNCTION(functionPathToFileURL, (JSC::JSGlobalObject * lexicalGl auto fileURL = WTF::URL::fileURLWithFileSystemPath(pathString); auto object = WebCore::DOMURL::create(fileURL.string(), String()); - jsValue = WebCore::toJSNewlyCreated>(*lexicalGlobalObject, globalObject, throwScope, WTFMove(object)); + jsValue = WebCore::toJSNewlyCreated>(*lexicalGlobalObject, globalObject, throwScope, WTF::move(object)); } auto* jsDOMURL = jsCast(jsValue.asCell()); diff --git a/src/bun.js/bindings/BunPlugin.cpp b/src/bun.js/bindings/BunPlugin.cpp index 94bc835023..590037d1a5 100644 --- a/src/bun.js/bindings/BunPlugin.cpp +++ b/src/bun.js/bindings/BunPlugin.cpp @@ -371,7 +371,7 @@ void BunPlugin::Base::append(JSC::VM& vm, JSC::RegExp* filter, JSC::JSObject* fu } else { Group newGroup; newGroup.append(vm, filter, func); - this->groups.append(WTFMove(newGroup)); + this->groups.append(WTF::move(newGroup)); this->namespaces.append(namespaceString); } } diff --git a/src/bun.js/bindings/BunProcess.cpp b/src/bun.js/bindings/BunProcess.cpp index 0c427be8f0..f0e77d579c 100644 --- a/src/bun.js/bindings/BunProcess.cpp +++ b/src/bun.js/bindings/BunProcess.cpp @@ -3740,7 +3740,7 @@ JSC_DEFINE_CUSTOM_GETTER(processTitle, (JSC::JSGlobalObject * globalObject, JSC: BunString str; Bun__Process__getTitle(globalObject, &str); auto value = str.transferToWTFString(); - auto* result = jsString(globalObject->vm(), WTFMove(value)); + auto* result = jsString(globalObject->vm(), WTF::move(value)); RETURN_IF_EXCEPTION(scope, {}); RELEASE_AND_RETURN(scope, JSValue::encode(result)); #else diff --git a/src/bun.js/bindings/BunProcess.h b/src/bun.js/bindings/BunProcess.h index 807b4c0c10..02b049ebf1 100644 --- a/src/bun.js/bindings/BunProcess.h +++ b/src/bun.js/bindings/BunProcess.h @@ -35,7 +35,7 @@ class Process : public WebCore::JSEventEmitter { public: Process(JSC::Structure* structure, WebCore::JSDOMGlobalObject& globalObject, Ref&& impl) - : Base(structure, globalObject, WTFMove(impl)) + : Base(structure, globalObject, WTF::move(impl)) { } @@ -88,7 +88,7 @@ public: static Process* create(WebCore::JSDOMGlobalObject& globalObject, JSC::Structure* structure) { auto emitter = WebCore::EventEmitter::create(*globalObject.scriptExecutionContext()); - Process* accessor = new (NotNull, JSC::allocateCell(globalObject.vm())) Process(structure, globalObject, WTFMove(emitter)); + Process* accessor = new (NotNull, JSC::allocateCell(globalObject.vm())) Process(structure, globalObject, WTF::move(emitter)); accessor->finishCreation(globalObject.vm()); return accessor; } diff --git a/src/bun.js/bindings/BunString.cpp b/src/bun.js/bindings/BunString.cpp index 6c90ec612e..fddb5c8cbe 100644 --- a/src/bun.js/bindings/BunString.cpp +++ b/src/bun.js/bindings/BunString.cpp @@ -102,7 +102,7 @@ extern "C" [[ZIG_EXPORT(zero_is_throw)]] JSC::EncodedJSValue BunString__createUT return {}; } scope.assertNoException(); - return JSValue::encode(jsString(vm, WTFMove(str))); + return JSValue::encode(jsString(vm, WTF::move(str))); } extern "C" JSC::EncodedJSValue BunString__transferToJS(BunString* bunString, JSC::JSGlobalObject* globalObject) @@ -125,12 +125,12 @@ extern "C" JSC::EncodedJSValue BunString__transferToJS(BunString* bunString, JSC #endif bunString->impl.wtf->deref(); *bunString = { .tag = BunStringTag::Dead }; - return JSValue::encode(jsString(vm, WTFMove(str))); + return JSValue::encode(jsString(vm, WTF::move(str))); } WTF::String str = bunString->toWTFString(); *bunString = { .tag = BunStringTag::Dead }; - return JSValue::encode(jsString(vm, WTFMove(str))); + return JSValue::encode(jsString(vm, WTF::move(str))); } // int64_t max to say "not a number" @@ -553,7 +553,7 @@ extern "C" JSC::EncodedJSValue BunString__toJSDOMURL(JSC::JSGlobalObject* lexica auto str = bunString->toWTFString(BunString::ZeroCopy); auto object = WebCore::DOMURL::create(str, String()); - auto jsValue = WebCore::toJSNewlyCreated>(*lexicalGlobalObject, globalObject, throwScope, WTFMove(object)); + auto jsValue = WebCore::toJSNewlyCreated>(*lexicalGlobalObject, globalObject, throwScope, WTF::move(object)); auto* jsDOMURL = jsCast(jsValue.asCell()); vm.heap.reportExtraMemoryAllocated(jsDOMURL, jsDOMURL->wrapped().memoryCostForGC()); RELEASE_AND_RETURN(throwScope, JSC::JSValue::encode(jsValue)); @@ -573,7 +573,7 @@ extern "C" WTF::URL* URL__fromJS(EncodedJSValue encodedValue, JSC::JSGlobalObjec if (!url.isValid() || url.isNull()) return nullptr; - return new WTF::URL(WTFMove(url)); + return new WTF::URL(WTF::move(url)); } extern "C" BunString URL__getHrefFromJS(EncodedJSValue encodedValue, JSC::JSGlobalObject* globalObject) @@ -647,7 +647,7 @@ extern "C" WTF::URL* URL__fromString(BunString* input) if (!url.isValid()) return nullptr; - return new WTF::URL(WTFMove(url)); + return new WTF::URL(WTF::move(url)); } extern "C" BunString URL__protocol(WTF::URL* url) diff --git a/src/bun.js/bindings/ConsoleObject.cpp b/src/bun.js/bindings/ConsoleObject.cpp index beecfc84a1..6d8fddae56 100644 --- a/src/bun.js/bindings/ConsoleObject.cpp +++ b/src/bun.js/bindings/ConsoleObject.cpp @@ -35,7 +35,7 @@ void ConsoleObject::messageWithTypeAndLevel(MessageType type, MessageLevel level Ref&& arguments) { if (globalObject->inspectable()) { - if (auto* client = globalObject->inspectorController().consoleClient().get()) { + if (auto client = globalObject->inspectorController().consoleClient()) { client->messageWithTypeAndLevel(type, level, globalObject, arguments.copyRef()); } } @@ -113,7 +113,7 @@ void ConsoleObject::warnUnimplemented(const String& method) {} void ConsoleObject::profile(JSC::JSGlobalObject* globalObject, const String& title) { if (globalObject->inspectable()) { - if (auto* client = globalObject->inspectorController().consoleClient().get()) { + if (auto client = globalObject->inspectorController().consoleClient()) { client->profile(globalObject, title); } } @@ -122,7 +122,7 @@ void ConsoleObject::profile(JSC::JSGlobalObject* globalObject, const String& tit void ConsoleObject::profileEnd(JSC::JSGlobalObject* globalObject, const String& title) { if (globalObject->inspectable()) { - if (auto* client = globalObject->inspectorController().consoleClient().get()) { + if (auto client = globalObject->inspectorController().consoleClient()) { client->profileEnd(globalObject, title); } } diff --git a/src/bun.js/bindings/CookieMap.cpp b/src/bun.js/bindings/CookieMap.cpp index f2adb476b4..fa84f70939 100644 --- a/src/bun.js/bindings/CookieMap.cpp +++ b/src/bun.js/bindings/CookieMap.cpp @@ -47,12 +47,12 @@ CookieMap::CookieMap() } CookieMap::CookieMap(Vector>&& cookies) - : m_modifiedCookies(WTFMove(cookies)) + : m_modifiedCookies(WTF::move(cookies)) { } CookieMap::CookieMap(Vector>&& cookies) - : m_originalCookies(WTFMove(cookies)) + : m_originalCookies(WTF::move(cookies)) { } @@ -68,7 +68,7 @@ ExceptionOr> CookieMap::create(std::variant return Exception { TypeError, "Invalid cookie string: expected name=value pair"_s }; } } - return adoptRef(*new CookieMap(WTFMove(cookies))); + return adoptRef(*new CookieMap(WTF::move(cookies))); }, [&](const HashMap& pairs) -> ExceptionOr> { Vector> cookies; @@ -76,7 +76,7 @@ ExceptionOr> CookieMap::create(std::variant cookies.append(KeyValuePair(entry.key, entry.value)); } - return adoptRef(*new CookieMap(WTFMove(cookies))); + return adoptRef(*new CookieMap(WTF::move(cookies))); }, [&](const String& cookieString) -> ExceptionOr> { StringView forCookieHeader = cookieString; @@ -121,7 +121,7 @@ ExceptionOr> CookieMap::create(std::variant cookies.append(KeyValuePair(name, value)); } - return adoptRef(*new CookieMap(WTFMove(cookies))); + return adoptRef(*new CookieMap(WTF::move(cookies))); }); return std::visit(visitor, variant); @@ -181,7 +181,7 @@ void CookieMap::set(Ref cookie) { removeInternal(cookie->name()); // Add the new cookie - m_modifiedCookies.append(WTFMove(cookie)); + m_modifiedCookies.append(WTF::move(cookie)); } ExceptionOr CookieMap::remove(const CookieStoreDeleteOptions& options) @@ -198,7 +198,7 @@ ExceptionOr CookieMap::remove(const CookieStoreDeleteOptions& options) return cookie_exception.releaseException(); } auto cookie = cookie_exception.releaseReturnValue(); - m_modifiedCookies.append(WTFMove(cookie)); + m_modifiedCookies.append(WTF::move(cookie)); return {}; } diff --git a/src/bun.js/bindings/DOMFormData.cpp b/src/bun.js/bindings/DOMFormData.cpp index 08c203585f..e866c2704e 100644 --- a/src/bun.js/bindings/DOMFormData.cpp +++ b/src/bun.js/bindings/DOMFormData.cpp @@ -173,7 +173,7 @@ void DOMFormData::set(const String& name, Item&& item) } if (initialMatchLocation) { - m_items[*initialMatchLocation] = WTFMove(item); + m_items[*initialMatchLocation] = WTF::move(item); m_items.removeAllMatching([&name](const auto& item) { return item.name == name; @@ -182,7 +182,7 @@ void DOMFormData::set(const String& name, Item&& item) return; } - m_items.append(WTFMove(item)); + m_items.append(WTF::move(item)); } DOMFormData::Iterator::Iterator(DOMFormData& target) diff --git a/src/bun.js/bindings/DOMURL.cpp b/src/bun.js/bindings/DOMURL.cpp index 2bfc6d4336..61af7c6338 100644 --- a/src/bun.js/bindings/DOMURL.cpp +++ b/src/bun.js/bindings/DOMURL.cpp @@ -56,7 +56,7 @@ static inline String redact(const String& input) } inline DOMURL::DOMURL(URL&& completeURL) - : m_url(WTFMove(completeURL)) + : m_url(WTF::move(completeURL)) , m_initialURLCostForGC(static_cast(std::min(m_url.string().impl()->costDuringGC(), std::numeric_limits::max()))) { ASSERT(m_url.isValid()); @@ -67,7 +67,7 @@ ExceptionOr> DOMURL::create(const String& url) URL completeURL { url }; if (!completeURL.isValid()) return Exception { InvalidURLError, makeString(redact(url), " cannot be parsed as a URL."_s) }; - return adoptRef(*new DOMURL(WTFMove(completeURL))); + return adoptRef(*new DOMURL(WTF::move(completeURL))); } ExceptionOr> DOMURL::create(const String& url, const URL& base) @@ -76,7 +76,7 @@ ExceptionOr> DOMURL::create(const String& url, const URL& base) URL completeURL { base, url }; if (!completeURL.isValid()) return Exception { InvalidURLError, makeString(redact(url), " cannot be parsed as a URL."_s) }; - return adoptRef(*new DOMURL(WTFMove(completeURL))); + return adoptRef(*new DOMURL(WTF::move(completeURL))); } ExceptionOr> DOMURL::create(const String& url, const String& base) @@ -102,7 +102,7 @@ RefPtr DOMURL::parse(const String& url, const String& base) auto completeURL = parseInternal(url, base); if (!completeURL.isValid()) return {}; - return adoptRef(*new DOMURL(WTFMove(completeURL))); + return adoptRef(*new DOMURL(WTF::move(completeURL))); } bool DOMURL::canParse(const String& url, const String& base) @@ -117,7 +117,7 @@ ExceptionOr DOMURL::setHref(const String& url) return Exception { InvalidURLError, makeString(redact(url), " cannot be parsed as a URL."_s) }; } - m_url = WTFMove(completeURL); + m_url = WTF::move(completeURL); if (m_searchParams) m_searchParams->updateFromAssociatedURL(); return {}; diff --git a/src/bun.js/bindings/ErrorStackTrace.h b/src/bun.js/bindings/ErrorStackTrace.h index faaac27a84..1d8f89c70d 100644 --- a/src/bun.js/bindings/ErrorStackTrace.h +++ b/src/bun.js/bindings/ErrorStackTrace.h @@ -169,7 +169,7 @@ public: } JSCStackTrace(WTF::Vector&& frames) - : m_frames(WTFMove(frames)) + : m_frames(WTF::move(frames)) { } @@ -177,7 +177,7 @@ public: bool isEmpty() const { return m_frames.isEmpty(); } JSCStackFrame& at(size_t i) { return m_frames.at(i); } - WTF::Vector&& frames() { return WTFMove(m_frames); } + WTF::Vector&& frames() { return WTF::move(m_frames); } static JSCStackTrace fromExisting(JSC::VM& vm, const WTF::Vector& existingFrames); @@ -203,7 +203,7 @@ public: private: JSCStackTrace(WTF::Vector& frames) - : m_frames(WTFMove(frames)) + : m_frames(WTF::move(frames)) { } }; diff --git a/src/bun.js/bindings/EventLoopTask.h b/src/bun.js/bindings/EventLoopTask.h index 953fc0da85..021c39b1a1 100644 --- a/src/bun.js/bindings/EventLoopTask.h +++ b/src/bun.js/bindings/EventLoopTask.h @@ -11,20 +11,20 @@ public: template::value && std::is_convertible>::value>::type> EventLoopTask(T task) - : m_task(WTFMove(task)) + : m_task(WTF::move(task)) , m_isCleanupTask(false) { } EventLoopTask(Function&& task) - : m_task([task = WTFMove(task)](ScriptExecutionContext&) { task(); }) + : m_task([task = WTF::move(task)](ScriptExecutionContext&) { task(); }) , m_isCleanupTask(false) { } template>::value>::type> EventLoopTask(CleanupTaskTag, T task) - : m_task(WTFMove(task)) + : m_task(WTF::move(task)) , m_isCleanupTask(true) { } diff --git a/src/bun.js/bindings/EventLoopTaskNoContext.h b/src/bun.js/bindings/EventLoopTaskNoContext.h index e795a23ccb..fede33f260 100644 --- a/src/bun.js/bindings/EventLoopTaskNoContext.h +++ b/src/bun.js/bindings/EventLoopTaskNoContext.h @@ -12,7 +12,7 @@ class EventLoopTaskNoContext { public: EventLoopTaskNoContext(JSC::JSGlobalObject* globalObject, Function&& task) : m_createdInBunVm(defaultGlobalObject(globalObject)->bunVM()) - , m_task(WTFMove(task)) + , m_task(WTF::move(task)) { } diff --git a/src/bun.js/bindings/Exception.h b/src/bun.js/bindings/Exception.h index e14b1e01a1..a5b09e9bf4 100644 --- a/src/bun.js/bindings/Exception.h +++ b/src/bun.js/bindings/Exception.h @@ -39,7 +39,7 @@ public: ExceptionCode code() const { return m_code; } const String& message() const { return m_message; } - String&& releaseMessage() { return WTFMove(m_message); } + String&& releaseMessage() { return WTF::move(m_message); } Exception isolatedCopy() const { @@ -55,7 +55,7 @@ Exception isolatedCopy(Exception&&); inline Exception::Exception(ExceptionCode code, String message) : m_code { code } - , m_message { WTFMove(message) } + , m_message { WTF::move(message) } { } diff --git a/src/bun.js/bindings/ExceptionOr.h b/src/bun.js/bindings/ExceptionOr.h index aed54f7375..adad6fe19f 100644 --- a/src/bun.js/bindings/ExceptionOr.h +++ b/src/bun.js/bindings/ExceptionOr.h @@ -92,12 +92,12 @@ private: ExceptionOr isolatedCopy(ExceptionOr&&); template inline ExceptionOr::ExceptionOr(Exception&& exception) - : m_value(makeUnexpected(WTFMove(exception))) + : m_value(makeUnexpected(WTF::move(exception))) { } template inline ExceptionOr::ExceptionOr(ReturnType&& returnValue) - : m_value(WTFMove(returnValue)) + : m_value(WTF::move(returnValue)) { } @@ -118,7 +118,7 @@ template inline const Exception& ExceptionOr::e template inline Exception ExceptionOr::releaseException() { - return WTFMove(m_value.error()); + return WTF::move(m_value.error()); } template inline const ReturnType& ExceptionOr::returnValue() const @@ -128,11 +128,11 @@ template inline const ReturnType& ExceptionOr:: template inline ReturnType ExceptionOr::releaseReturnValue() { - return WTFMove(m_value.value()); + return WTF::move(m_value.value()); } template inline ExceptionOr::ExceptionOr(Exception&& exception) - : m_value(WTFMove(exception)) + : m_value(WTF::move(exception)) { } @@ -167,7 +167,7 @@ template inline ReturnReferenceType& ExceptionOr::ExceptionOr(Exception&& exception) - : m_value(makeUnexpected(WTFMove(exception))) + : m_value(makeUnexpected(WTF::move(exception))) { } @@ -183,7 +183,7 @@ inline const Exception& ExceptionOr::exception() const inline Exception ExceptionOr::releaseException() { - return WTFMove(m_value.error()); + return WTF::move(m_value.error()); } inline ExceptionOr isolatedCopy(ExceptionOr&& value) diff --git a/src/bun.js/bindings/FormatStackTraceForJS.cpp b/src/bun.js/bindings/FormatStackTraceForJS.cpp index c570432ea3..bd53f19267 100644 --- a/src/bun.js/bindings/FormatStackTraceForJS.cpp +++ b/src/bun.js/bindings/FormatStackTraceForJS.cpp @@ -687,7 +687,7 @@ JSC_DEFINE_HOST_FUNCTION(errorConstructorFuncCaptureStackTrace, (JSC::JSGlobalOb JSCStackTrace::getFramesForCaller(vm, callFrame, errorObject, caller, stackTrace, stackTraceLimit); if (auto* instance = jsDynamicCast(errorObject)) { - instance->setStackFrames(vm, WTFMove(stackTrace)); + instance->setStackFrames(vm, WTF::move(stackTrace)); if (instance->hasMaterializedErrorInfo()) { const auto& propertyName = vm.propertyNames->stack; VM::DeletePropertyModeScope scope(vm, VM::DeletePropertyMode::IgnoreConfigurable); diff --git a/src/bun.js/bindings/InspectorBunFrontendDevServerAgent.cpp b/src/bun.js/bindings/InspectorBunFrontendDevServerAgent.cpp index 81039a09de..4cc5e4c659 100644 --- a/src/bun.js/bindings/InspectorBunFrontendDevServerAgent.cpp +++ b/src/bun.js/bindings/InspectorBunFrontendDevServerAgent.cpp @@ -82,7 +82,7 @@ void InspectorBunFrontendDevServerAgent::bundleStart(int devServerId, RefbundleStart(devServerId, WTFMove(triggerFiles)); + m_frontendDispatcher->bundleStart(devServerId, WTF::move(triggerFiles)); } void InspectorBunFrontendDevServerAgent::bundleComplete(int devServerId, double durationMs) @@ -106,7 +106,7 @@ void InspectorBunFrontendDevServerAgent::clientNavigated(int devServerId, int co if (!m_enabled || !m_frontendDispatcher) return; - m_frontendDispatcher->clientNavigated(devServerId, connectionId, url, WTFMove(routeBundleId)); + m_frontendDispatcher->clientNavigated(devServerId, connectionId, url, WTF::move(routeBundleId)); } void InspectorBunFrontendDevServerAgent::clientErrorReported(int devServerId, const String& clientErrorPayloadBase64) @@ -154,7 +154,7 @@ void InspectorBunFrontendDevServerAgent__notifyBundleStart(InspectorBunFrontendD files->addItem(triggerFiles[i].transferToWTFString()); } - agent->bundleStart(devServerId, WTFMove(files)); + agent->bundleStart(devServerId, WTF::move(files)); } void InspectorBunFrontendDevServerAgent__notifyBundleComplete(InspectorBunFrontendDevServerAgent* agent, int devServerId, double durationMs) diff --git a/src/bun.js/bindings/InspectorHTTPServerAgent.cpp b/src/bun.js/bindings/InspectorHTTPServerAgent.cpp index cc376d13ac..e1e1278498 100644 --- a/src/bun.js/bindings/InspectorHTTPServerAgent.cpp +++ b/src/bun.js/bindings/InspectorHTTPServerAgent.cpp @@ -132,7 +132,7 @@ void InspectorHTTPServerAgent::serverRoutesUpdated(int serverId, int hotReloadId return; } - this->m_frontendDispatcher->serverRoutesUpdated(serverId, hotReloadId, WTFMove(routes)); + this->m_frontendDispatcher->serverRoutesUpdated(serverId, hotReloadId, WTF::move(routes)); } void InspectorHTTPServerAgent::requestWillBeSent(Ref&& request) { @@ -140,7 +140,7 @@ void InspectorHTTPServerAgent::requestWillBeSent(Refm_frontendDispatcher->requestWillBeSent(WTFMove(request)); + this->m_frontendDispatcher->requestWillBeSent(WTF::move(request)); } void InspectorHTTPServerAgent::responseReceived(Ref&& response) { @@ -148,7 +148,7 @@ void InspectorHTTPServerAgent::responseReceived(Refm_frontendDispatcher->responseReceived(WTFMove(response)); + this->m_frontendDispatcher->responseReceived(WTF::move(response)); } void InspectorHTTPServerAgent::bodyChunkReceived(Ref&& chunk) { @@ -156,7 +156,7 @@ void InspectorHTTPServerAgent::bodyChunkReceived(Refm_frontendDispatcher->bodyChunkReceived(WTFMove(chunk)); + this->m_frontendDispatcher->bodyChunkReceived(WTF::move(chunk)); } void InspectorHTTPServerAgent::requestFinished(int requestId, int serverId, double timestamp, std::optional&& opt_duration) { @@ -164,7 +164,7 @@ void InspectorHTTPServerAgent::requestFinished(int requestId, int serverId, doub return; } - this->m_frontendDispatcher->requestFinished(requestId, serverId, timestamp, WTFMove(opt_duration)); + this->m_frontendDispatcher->requestFinished(requestId, serverId, timestamp, WTF::move(opt_duration)); } void InspectorHTTPServerAgent::requestHandlerException(Ref&& error) { @@ -172,7 +172,7 @@ void InspectorHTTPServerAgent::requestHandlerException(Refm_frontendDispatcher->requestHandlerException(WTFMove(error)); + this->m_frontendDispatcher->requestHandlerException(WTF::move(error)); } } @@ -258,9 +258,9 @@ struct Route { object->setScriptUrl(route.script_url.toWTFString()); } - routes->addItem(WTFMove(object)); + routes->addItem(WTF::move(object)); } - agent->serverRoutesUpdated(serverId, hotReloadId, WTFMove(routes)); + agent->serverRoutesUpdated(serverId, hotReloadId, WTF::move(routes)); } } diff --git a/src/bun.js/bindings/InspectorLifecycleAgent.cpp b/src/bun.js/bindings/InspectorLifecycleAgent.cpp index 67ae982299..e3c24a1f9a 100644 --- a/src/bun.js/bindings/InspectorLifecycleAgent.cpp +++ b/src/bun.js/bindings/InspectorLifecycleAgent.cpp @@ -122,7 +122,7 @@ void InspectorLifecycleAgent::reportError(ZigException& exception) } // error(const String& message, const String& name, Ref>&& urls, Ref>&& lineColumns, Ref>&& sourceLines); - m_frontendDispatcher->error(WTFMove(message), WTFMove(name), WTFMove(urls), WTFMove(lineColumns), WTFMove(sourceLines)); + m_frontendDispatcher->error(WTF::move(message), WTF::move(name), WTF::move(urls), WTF::move(lineColumns), WTF::move(sourceLines)); } Protocol::ErrorStringOr InspectorLifecycleAgent::preventExit() @@ -206,7 +206,7 @@ Protocol::ErrorStringOr InspectorLifecycleAgent::getModuleGraph() RETURN_IF_EXCEPTION(scope, makeUnexpected(ErrorString("Failed to convert value to string"_s))); } - return ModuleGraph { WTFMove(esm), WTFMove(cjs), WTFMove(cwd), WTFMove(main), WTFMove(argv) }; + return ModuleGraph { WTF::move(esm), WTF::move(cjs), WTF::move(cwd), WTF::move(main), WTF::move(argv) }; } } diff --git a/src/bun.js/bindings/InternalModuleRegistry.cpp b/src/bun.js/bindings/InternalModuleRegistry.cpp index 1b0837ae73..4e4f6fb428 100644 --- a/src/bun.js/bindings/InternalModuleRegistry.cpp +++ b/src/bun.js/bindings/InternalModuleRegistry.cpp @@ -100,7 +100,7 @@ ALWAYS_INLINE JSC::JSValue generateNativeModule( #ifdef BUN_DYNAMIC_JS_LOAD_PATH JSValue initializeInternalModuleFromDisk(JSGlobalObject* globalObject, VM& vm, const WTF::String& moduleName, WTF::String fileBase, const WTF::String& urlString) { - WTF::String file = makeString(ASCIILiteral::fromLiteralUnsafe(BUN_DYNAMIC_JS_LOAD_PATH), "/"_s, WTFMove(fileBase)); + WTF::String file = makeString(ASCIILiteral::fromLiteralUnsafe(BUN_DYNAMIC_JS_LOAD_PATH), "/"_s, WTF::move(fileBase)); if (auto contents = WTF::FileSystemImpl::readEntireFile(file)) { auto string = WTF::String::fromUTF8(contents.value()); return generateModule(globalObject, vm, string, moduleName, urlString); diff --git a/src/bun.js/bindings/JSBuffer.cpp b/src/bun.js/bindings/JSBuffer.cpp index e3be045a44..90471a55cb 100644 --- a/src/bun.js/bindings/JSBuffer.cpp +++ b/src/bun.js/bindings/JSBuffer.cpp @@ -352,7 +352,7 @@ JSC::EncodedJSValue JSBuffer__bufferFromPointerAndLengthAndDeinit(JSC::JSGlobalO bytesDeallocator(p, ctx); })); - uint8Array = JSC::JSUint8Array::create(lexicalGlobalObject, subclassStructure, WTFMove(buffer), 0, length); + uint8Array = JSC::JSUint8Array::create(lexicalGlobalObject, subclassStructure, WTF::move(buffer), 0, length); } else { uint8Array = JSC::JSUint8Array::create(lexicalGlobalObject, subclassStructure, 0); } @@ -409,7 +409,7 @@ static JSC::EncodedJSValue writeToBuffer(JSC::JSGlobalObject* lexicalGlobalObjec JSC::JSUint8Array* createBuffer(JSC::JSGlobalObject* lexicalGlobalObject, Ref&& backingStore) { size_t length = backingStore->byteLength(); - return JSC::JSUint8Array::create(lexicalGlobalObject, defaultGlobalObject(lexicalGlobalObject)->JSBufferSubclassStructure(), WTFMove(backingStore), 0, length); + return JSC::JSUint8Array::create(lexicalGlobalObject, defaultGlobalObject(lexicalGlobalObject)->JSBufferSubclassStructure(), WTF::move(backingStore), 0, length); } JSC::JSUint8Array* createBuffer(JSC::JSGlobalObject* lexicalGlobalObject, const uint8_t* ptr, size_t length) @@ -1771,7 +1771,7 @@ JSC::EncodedJSValue jsBufferToStringFromBytes(JSGlobalObject* lexicalGlobalObjec } memcpy(data.data(), bytes.data(), bytes.size()); - return JSValue::encode(jsString(vm, WTFMove(str))); + return JSValue::encode(jsString(vm, WTF::move(str))); } case BufferEncodingType::ucs2: case BufferEncodingType::utf16le: { @@ -1786,7 +1786,7 @@ JSC::EncodedJSValue jsBufferToStringFromBytes(JSGlobalObject* lexicalGlobalObjec return {}; } memcpy(reinterpret_cast(data.data()), bytes.data(), u16length * 2); - return JSValue::encode(jsString(vm, WTFMove(str))); + return JSValue::encode(jsString(vm, WTF::move(str))); } case BufferEncodingType::ascii: { std::span data; @@ -1796,7 +1796,7 @@ JSC::EncodedJSValue jsBufferToStringFromBytes(JSGlobalObject* lexicalGlobalObjec return {}; } Bun__encoding__writeLatin1(bytes.data(), bytes.size(), data.data(), data.size(), static_cast(encoding)); - return JSValue::encode(jsString(vm, WTFMove(str))); + return JSValue::encode(jsString(vm, WTF::move(str))); } case WebCore::BufferEncodingType::utf8: @@ -2167,7 +2167,7 @@ extern "C" JSC::EncodedJSValue JSBuffer__fromMmap(Zig::GlobalObject* globalObjec #endif })); - auto* view = JSC::JSUint8Array::create(globalObject, structure, WTFMove(buffer), 0, length); + auto* view = JSC::JSUint8Array::create(globalObject, structure, WTF::move(buffer), 0, length); RETURN_IF_EXCEPTION(scope, {}); if (!view) [[unlikely]] { @@ -2889,7 +2889,7 @@ EncodedJSValue constructBufferFromArrayBuffer(JSC::ThrowScope& throwScope, JSGlo auto isResizableOrGrowableShared = jsBuffer->isResizableOrGrowableShared(); if (isResizableOrGrowableShared) { auto* subclassStructure = globalObject->JSResizableOrGrowableSharedBufferSubclassStructure(); - auto* uint8Array = JSC::JSUint8Array::create(lexicalGlobalObject, subclassStructure, WTFMove(buffer), offset, std::nullopt); + auto* uint8Array = JSC::JSUint8Array::create(lexicalGlobalObject, subclassStructure, WTF::move(buffer), offset, std::nullopt); RETURN_IF_EXCEPTION(throwScope, {}); if (!uint8Array) [[unlikely]] { throwOutOfMemoryError(globalObject, throwScope); @@ -2898,7 +2898,7 @@ EncodedJSValue constructBufferFromArrayBuffer(JSC::ThrowScope& throwScope, JSGlo RELEASE_AND_RETURN(throwScope, JSC::JSValue::encode(uint8Array)); } auto* subclassStructure = globalObject->JSBufferSubclassStructure(); - auto* uint8Array = JSC::JSUint8Array::create(lexicalGlobalObject, subclassStructure, WTFMove(buffer), offset, length); + auto* uint8Array = JSC::JSUint8Array::create(lexicalGlobalObject, subclassStructure, WTF::move(buffer), offset, length); RETURN_IF_EXCEPTION(throwScope, {}); if (!uint8Array) [[unlikely]] { throwOutOfMemoryError(globalObject, throwScope); diff --git a/src/bun.js/bindings/JSBunRequest.cpp b/src/bun.js/bindings/JSBunRequest.cpp index f72f54a40f..1a40d64dc2 100644 --- a/src/bun.js/bindings/JSBunRequest.cpp +++ b/src/bun.js/bindings/JSBunRequest.cpp @@ -132,7 +132,7 @@ JSBunRequest* JSBunRequest::clone(JSC::VM& vm, JSGlobalObject* globalObject) if (auto* wrapper = jsDynamicCast(cookiesObject)) { auto cookieMap = wrapper->protectedWrapped(); auto cookieMapClone = cookieMap->clone(); - auto cookies = WebCore::toJSNewlyCreated(globalObject, jsCast(globalObject), WTFMove(cookieMapClone)); + auto cookies = WebCore::toJSNewlyCreated(globalObject, jsCast(globalObject), WTF::move(cookieMapClone)); clone->setCookies(cookies.getObject()); } } @@ -266,7 +266,7 @@ JSC_DEFINE_CUSTOM_GETTER(jsJSBunRequestGetCookies, (JSC::JSGlobalObject * global auto cookieMap = cookieMapResult.releaseReturnValue(); // Convert to JS - auto cookies = WebCore::toJSNewlyCreated(globalObject, jsCast(globalObject), WTFMove(cookieMap)); + auto cookies = WebCore::toJSNewlyCreated(globalObject, jsCast(globalObject), WTF::move(cookieMap)); RETURN_IF_EXCEPTION(throwScope, encodedJSValue()); request->setCookies(cookies.getObject()); return JSValue::encode(cookies); diff --git a/src/bun.js/bindings/JSBundlerPlugin.cpp b/src/bun.js/bindings/JSBundlerPlugin.cpp index 3bd323e2ef..c1152b494f 100644 --- a/src/bun.js/bindings/JSBundlerPlugin.cpp +++ b/src/bun.js/bindings/JSBundlerPlugin.cpp @@ -71,7 +71,7 @@ void BundlerPlugin::NamespaceList::append(JSC::VM& vm, JSC::RegExp* filter, Stri auto pattern = filter->pattern(); auto filter_regexp = FilterRegExp(pattern, filter->flags()); - nsGroup->append(WTFMove(filter_regexp)); + nsGroup->append(WTF::move(filter_regexp)); } static bool anyMatchesForNamespace(JSC::VM& vm, BundlerPlugin::NamespaceList& list, const BunString* namespaceStr, const BunString* path) @@ -260,7 +260,7 @@ void BundlerPlugin::NativePluginList::append(JSC::VM& vm, JSC::RegExp* filter, S auto pattern = filter->pattern(); auto filter_regexp = FilterRegExp(pattern, filter->flags()); - nsGroup->append(WTFMove(filter_regexp)); + nsGroup->append(WTF::move(filter_regexp)); } if (index == std::numeric_limits::max()) { diff --git a/src/bun.js/bindings/JSBundlerPlugin.h b/src/bun.js/bindings/JSBundlerPlugin.h index 34fb313075..ee59d1e614 100644 --- a/src/bun.js/bindings/JSBundlerPlugin.h +++ b/src/bun.js/bindings/JSBundlerPlugin.h @@ -29,8 +29,8 @@ public: WTF::Lock lock {}; FilterRegExp(FilterRegExp&& other) - : m_pattern(WTFMove(other.m_pattern)) - , regex(WTFMove(other.regex)) + : m_pattern(WTF::move(other.m_pattern)) + , regex(WTF::move(other.regex)) { } diff --git a/src/bun.js/bindings/JSCTaskScheduler.cpp b/src/bun.js/bindings/JSCTaskScheduler.cpp index 7652caabef..171b5c4edc 100644 --- a/src/bun.js/bindings/JSCTaskScheduler.cpp +++ b/src/bun.js/bindings/JSCTaskScheduler.cpp @@ -16,8 +16,8 @@ extern "C" void Bun__eventLoop__incrementRefConcurrently(void* bunVM, int delta) class JSCDeferredWorkTask { public: JSCDeferredWorkTask(Ref ticket, Task&& task) - : ticket(WTFMove(ticket)) - , task(WTFMove(task)) + : ticket(WTF::move(ticket)) + , task(WTF::move(task)) { } @@ -43,14 +43,14 @@ void JSCTaskScheduler::onAddPendingWork(WebCore::JSVMClientData* clientData, Ref Locker holder { scheduler.m_lock }; if (kind == DeferredWorkTimer::WorkType::ImminentlyScheduled) { Bun__eventLoop__incrementRefConcurrently(clientData->bunVM, 1); - scheduler.m_pendingTicketsKeepingEventLoopAlive.add(WTFMove(ticket)); + scheduler.m_pendingTicketsKeepingEventLoopAlive.add(WTF::move(ticket)); } else { - scheduler.m_pendingTicketsOther.add(WTFMove(ticket)); + scheduler.m_pendingTicketsOther.add(WTF::move(ticket)); } } void JSCTaskScheduler::onScheduleWorkSoon(WebCore::JSVMClientData* clientData, Ticket ticket, Task&& task) { - auto* job = new JSCDeferredWorkTask(*ticket, WTFMove(task)); + auto* job = new JSCDeferredWorkTask(*ticket, WTF::move(task)); Bun__queueJSCDeferredWorkTaskConcurrently(clientData->bunVM, job); } diff --git a/src/bun.js/bindings/JSCommonJSModule.cpp b/src/bun.js/bindings/JSCommonJSModule.cpp index b6000602bc..095d305e66 100644 --- a/src/bun.js/bindings/JSCommonJSModule.cpp +++ b/src/bun.js/bindings/JSCommonJSModule.cpp @@ -112,7 +112,7 @@ extern "C" void Bun__VM__setEntryPointEvalResultCJS(void*, EncodedJSValue); static bool evaluateCommonJSModuleOnce(JSC::VM& vm, Zig::GlobalObject* globalObject, JSCommonJSModule* moduleObject, JSString* dirname, JSValue filename) { auto scope = DECLARE_THROW_SCOPE(vm); - SourceCode code = std::move(moduleObject->sourceCode); + SourceCode code = WTF::move(moduleObject->sourceCode); // If an exception occurred somewhere else, we might have cleared the source code. if (code.isNull()) [[unlikely]] { @@ -715,7 +715,7 @@ JSC_DEFINE_HOST_FUNCTION(functionJSCommonJSModule_compile, (JSGlobalObject * glo } moduleObject->sourceCode = makeSource( - WTFMove(wrappedString), + WTF::move(wrappedString), SourceOrigin(URL::fileURLWithFileSystemPath(filenameString)), JSC::SourceTaintedOrigin::Untainted, filenameString, @@ -1365,7 +1365,7 @@ void JSCommonJSModule::evaluate( if (this->hasEvaluated) return; - this->sourceCode = JSC::SourceCode(WTFMove(sourceProvider)); + this->sourceCode = JSC::SourceCode(WTF::move(sourceProvider)); evaluateCommonJSModuleOnce(vm, globalObject, this, this->m_dirname.get(), this->m_filename.get()); } @@ -1466,7 +1466,7 @@ std::optional createCommonJSModule( moduleObject = JSCommonJSModule::create( vm, globalObject->CommonJSModuleObjectStructure(), - requireMapKey, filename, dirname, WTFMove(JSC::SourceCode(WTFMove(sourceProvider)))); + requireMapKey, filename, dirname, JSC::SourceCode(WTF::move(sourceProvider))); moduleObject->putDirect(vm, WebCore::clientData(vm)->builtinNames().exportsPublicName(), diff --git a/src/bun.js/bindings/JSDOMExceptionHandling.cpp b/src/bun.js/bindings/JSDOMExceptionHandling.cpp index f2dc435086..2b8bd8a3ab 100644 --- a/src/bun.js/bindings/JSDOMExceptionHandling.cpp +++ b/src/bun.js/bindings/JSDOMExceptionHandling.cpp @@ -212,7 +212,7 @@ JSValue createDOMException(JSGlobalObject& lexicalGlobalObject, Exception&& exce void propagateExceptionSlowPath(JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& throwScope, Exception&& exception) { throwScope.assertNoExceptionExceptTermination(); - auto jsException = createDOMException(lexicalGlobalObject, WTFMove(exception)); + auto jsException = createDOMException(lexicalGlobalObject, WTF::move(exception)); RETURN_IF_EXCEPTION(throwScope, ); throwException(&lexicalGlobalObject, throwScope, jsException); } diff --git a/src/bun.js/bindings/JSDOMExceptionHandling.h b/src/bun.js/bindings/JSDOMExceptionHandling.h index 600673927e..7f04a6efde 100644 --- a/src/bun.js/bindings/JSDOMExceptionHandling.h +++ b/src/bun.js/bindings/JSDOMExceptionHandling.h @@ -80,7 +80,7 @@ ALWAYS_INLINE void propagateException(JSC::JSGlobalObject& lexicalGlobalObject, { if (throwScope.exception()) return; - propagateExceptionSlowPath(lexicalGlobalObject, throwScope, WTFMove(exception)); + propagateExceptionSlowPath(lexicalGlobalObject, throwScope, WTF::move(exception)); } inline void propagateException(JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& throwScope, ExceptionOr&& value) @@ -91,7 +91,7 @@ inline void propagateException(JSC::JSGlobalObject& lexicalGlobalObject, JSC::Th ALWAYS_INLINE void propagateException(JSC::JSGlobalObject* lexicalGlobalObject, JSC::ThrowScope& throwScope, Exception&& exception) { - return propagateException(*lexicalGlobalObject, throwScope, WTFMove(exception)); + return propagateException(*lexicalGlobalObject, throwScope, WTF::move(exception)); } template void invokeFunctorPropagatingExceptionIfNecessary(JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& throwScope, Functor&& functor) diff --git a/src/bun.js/bindings/JSDOMWrapper.h b/src/bun.js/bindings/JSDOMWrapper.h index bff0179a45..d27d0c24c3 100644 --- a/src/bun.js/bindings/JSDOMWrapper.h +++ b/src/bun.js/bindings/JSDOMWrapper.h @@ -91,7 +91,7 @@ public: protected: JSDOMWrapper(JSC::Structure* structure, JSC::JSGlobalObject& globalObject, Ref&& impl) : Base(structure, globalObject) - , m_wrapped(WTFMove(impl)) + , m_wrapped(WTF::move(impl)) { } diff --git a/src/bun.js/bindings/JSDOMWrapperCache.h b/src/bun.js/bindings/JSDOMWrapperCache.h index 11795651a0..7397ae993c 100644 --- a/src/bun.js/bindings/JSDOMWrapperCache.h +++ b/src/bun.js/bindings/JSDOMWrapperCache.h @@ -186,14 +186,14 @@ template inline auto createWrapper(JSDOMGlobalObj ASSERT(!getCachedWrapper(globalObject->world(), domObject)); auto* domObjectPtr = domObject.ptr(); - auto* wrapper = WrapperClass::create(getDOMStructure(globalObject->vm(), *globalObject), globalObject, WTFMove(domObject)); + auto* wrapper = WrapperClass::create(getDOMStructure(globalObject->vm(), *globalObject), globalObject, WTF::move(domObject)); cacheWrapper(globalObject->world(), domObjectPtr, wrapper); return wrapper; } template inline auto createWrapper(JSDOMGlobalObject* globalObject, Ref&& domObject) -> typename std::enable_if::value, typename JSDOMWrapperConverterTraits::WrapperClass*>::type { - return createWrapper(globalObject, unsafeRefDowncast(WTFMove(domObject))); + return createWrapper(globalObject, unsafeRefDowncast(WTF::move(domObject))); } template inline JSC::JSValue wrap(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, DOMClass& domObject) diff --git a/src/bun.js/bindings/JSFFIFunction.cpp b/src/bun.js/bindings/JSFFIFunction.cpp index 0a66f73665..292f15e875 100644 --- a/src/bun.js/bindings/JSFFIFunction.cpp +++ b/src/bun.js/bindings/JSFFIFunction.cpp @@ -127,7 +127,7 @@ const ClassInfo JSFFIFunction::s_info = { "Function"_s, &Base::s_info, nullptr, JSFFIFunction::JSFFIFunction(VM& vm, NativeExecutable* executable, JSGlobalObject* globalObject, Structure* structure, CFFIFunction&& function) : Base(vm, executable, globalObject, structure) - , m_function(WTFMove(function)) + , m_function(WTF::move(function)) { // used in NAPI dataPtr = nullptr; @@ -153,7 +153,7 @@ JSFFIFunction* JSFFIFunction::create(VM& vm, Zig::GlobalObject* globalObject, un { NativeExecutable* executable = vm.getHostFunction(FFIFunction, ImplementationVisibility::Public, intrinsic, FFIFunction, nullptr, name); Structure* structure = globalObject->FFIFunctionStructure(); - JSFFIFunction* function = new (NotNull, allocateCell(vm)) JSFFIFunction(vm, executable, globalObject, structure, reinterpret_cast(WTFMove(FFIFunction))); + JSFFIFunction* function = new (NotNull, allocateCell(vm)) JSFFIFunction(vm, executable, globalObject, structure, reinterpret_cast(WTF::move(FFIFunction))); function->finishCreation(vm, executable, length, name); return function; } @@ -176,7 +176,7 @@ JSFFIFunction* JSFFIFunction::createForFFI(VM& vm, Zig::GlobalObject* globalObje NativeExecutable* executable = vm.getHostFunction(FFIFunction, ImplementationVisibility::Public, NoIntrinsic, FFIFunction, nullptr, name); #endif Structure* structure = globalObject->FFIFunctionStructure(); - JSFFIFunction* function = new (NotNull, allocateCell(vm)) JSFFIFunction(vm, executable, globalObject, structure, reinterpret_cast(WTFMove(FFIFunction))); + JSFFIFunction* function = new (NotNull, allocateCell(vm)) JSFFIFunction(vm, executable, globalObject, structure, reinterpret_cast(WTF::move(FFIFunction))); function->finishCreation(vm, executable, length, name); return function; } @@ -212,7 +212,7 @@ FFI_Callback_threadsafe_call(FFICallbackFunctionWrapper& wrapper, size_t argCoun for (size_t i = 0; i < argCount; ++i) argsVec.append(args[i]); - WebCore::ScriptExecutionContext::postTaskTo(globalObject->scriptExecutionContext()->identifier(), [argsVec = WTFMove(argsVec), wrapper](WebCore::ScriptExecutionContext& ctx) mutable { + WebCore::ScriptExecutionContext::postTaskTo(globalObject->scriptExecutionContext()->identifier(), [argsVec = WTF::move(argsVec), wrapper](WebCore::ScriptExecutionContext& ctx) mutable { auto* globalObject = JSC::jsCast(ctx.jsGlobalObject()); auto& vm = JSC::getVM(globalObject); JSC::MarkedArgumentBuffer arguments; diff --git a/src/bun.js/bindings/JSSecrets.cpp b/src/bun.js/bindings/JSSecrets.cpp index 94fd771a8c..f86093ec52 100644 --- a/src/bun.js/bindings/JSSecrets.cpp +++ b/src/bun.js/bindings/JSSecrets.cpp @@ -246,13 +246,13 @@ void Bun__SecretsJobOptions__runTask(SecretsJobOptions* opts, JSGlobalObject* gl auto result = Secrets::getPassword(opts->service, opts->name, opts->error); if (result.has_value()) { // Store as String for main thread (String is thread-safe to construct from CString) - opts->resultPassword = WTFMove(result.value()); + opts->resultPassword = WTF::move(result.value()); } break; } case SecretsJobOptions::SET: - opts->error = Secrets::setPassword(opts->service, opts->name, WTFMove(opts->password), opts->allowUnrestrictedAccess); + opts->error = Secrets::setPassword(opts->service, opts->name, WTF::move(opts->password), opts->allowUnrestrictedAccess); break; case SecretsJobOptions::DELETE_OP: @@ -288,7 +288,7 @@ void Bun__SecretsJobOptions__runFromJS(SecretsJobOptions* opts, JSGlobalObject* switch (opts->op) { case SecretsJobOptions::GET: if (opts->resultPassword.has_value()) { - auto resultPassword = WTFMove(opts->resultPassword.value()); + auto resultPassword = WTF::move(opts->resultPassword.value()); result = jsString(vm, String::fromUTF8(resultPassword.span())); RETURN_IF_EXCEPTION(scope, ); memsetSpan(resultPassword.mutableSpan(), 0); diff --git a/src/bun.js/bindings/JSStringDecoder.cpp b/src/bun.js/bindings/JSStringDecoder.cpp index 14b8e51da4..4d6186509d 100644 --- a/src/bun.js/bindings/JSStringDecoder.cpp +++ b/src/bun.js/bindings/JSStringDecoder.cpp @@ -486,7 +486,7 @@ static JSC_DEFINE_CUSTOM_GETTER(jsStringDecoder_lastChar, (JSGlobalObject * lexi RETURN_IF_EXCEPTION(scope, {}); auto buffer = ArrayBuffer::create({ castedThis->m_lastChar, 4 }); auto* globalObject = static_cast(lexicalGlobalObject); - JSC::JSUint8Array* uint8Array = JSC::JSUint8Array::create(lexicalGlobalObject, globalObject->JSBufferSubclassStructure(), WTFMove(buffer), 0, 4); + JSC::JSUint8Array* uint8Array = JSC::JSUint8Array::create(lexicalGlobalObject, globalObject->JSBufferSubclassStructure(), WTF::move(buffer), 0, 4); RELEASE_AND_RETURN(scope, JSC::JSValue::encode(uint8Array)); } static JSC_DEFINE_CUSTOM_GETTER(jsStringDecoder_lastNeed, (JSGlobalObject * lexicalGlobalObject, JSC::EncodedJSValue thisValue, PropertyName attributeName)) diff --git a/src/bun.js/bindings/JSX509Certificate.cpp b/src/bun.js/bindings/JSX509Certificate.cpp index 36058482cf..0dfee02575 100644 --- a/src/bun.js/bindings/JSX509Certificate.cpp +++ b/src/bun.js/bindings/JSX509Certificate.cpp @@ -265,13 +265,13 @@ JSX509Certificate* JSX509Certificate::create(JSC::VM& vm, JSC::Structure* struct return nullptr; } - return create(vm, structure, globalObject, WTFMove(result.value)); + return create(vm, structure, globalObject, WTF::move(result.value)); } JSX509Certificate* JSX509Certificate::create(JSC::VM& vm, JSC::Structure* structure, JSC::JSGlobalObject* globalObject, ncrypto::X509Pointer&& cert) { auto* certificate = create(vm, structure); - certificate->m_x509 = WTFMove(cert); + certificate->m_x509 = WTF::move(cert); size_t size = i2d_X509(certificate->m_x509.get(), nullptr); certificate->m_extraMemorySizeForGC = size; vm.heap.reportExtraMemoryAllocated(certificate, size); @@ -573,7 +573,7 @@ JSUint8Array* JSX509Certificate::computeRaw(ncrypto::X509View view, JSGlobalObje Ref buffer = JSC::ArrayBuffer::createFromBytes(std::span(reinterpret_cast(bptr->data), bptr->length), createSharedTask([](void* data) { ncrypto::BIOPointer free_me(static_cast(data)); })); - RELEASE_AND_RETURN(scope, Bun::createBuffer(globalObject, WTFMove(buffer))); + RELEASE_AND_RETURN(scope, Bun::createBuffer(globalObject, WTF::move(buffer))); } bool JSX509Certificate::computeIsCA(ncrypto::X509View view, JSGlobalObject* globalObject) @@ -1046,8 +1046,8 @@ JSValue JSX509Certificate::computePublicKey(ncrypto::X509View view, JSGlobalObje return {}; } - auto handle = KeyObject::create(CryptoKeyType::Public, WTFMove(result.value)); - return JSPublicKeyObject::create(vm, globalObject->m_JSPublicKeyObjectClassStructure.get(lexicalGlobalObject), lexicalGlobalObject, WTFMove(handle)); + auto handle = KeyObject::create(CryptoKeyType::Public, WTF::move(result.value)); + return JSPublicKeyObject::create(vm, globalObject->m_JSPublicKeyObjectClassStructure.get(lexicalGlobalObject), lexicalGlobalObject, WTF::move(handle)); } JSValue JSX509Certificate::computeInfoAccess(ncrypto::X509View view, JSGlobalObject* globalObject, bool legacy) @@ -1171,7 +1171,7 @@ extern "C" EncodedJSValue Bun__X509__toJS(X509* cert, JSGlobalObject* globalObje { ncrypto::X509Pointer cert_ptr(cert); auto* zigGlobalObject = defaultGlobalObject(globalObject); - return JSValue::encode(JSX509Certificate::create(zigGlobalObject->vm(), zigGlobalObject->m_JSX509CertificateClassStructure.get(zigGlobalObject), globalObject, WTFMove(cert_ptr))); + return JSValue::encode(JSX509Certificate::create(zigGlobalObject->vm(), zigGlobalObject->m_JSX509CertificateClassStructure.get(zigGlobalObject), globalObject, WTF::move(cert_ptr))); } JSC_DEFINE_HOST_FUNCTION(jsIsX509Certificate, (JSGlobalObject * globalObject, CallFrame* callFrame)) diff --git a/src/bun.js/bindings/ModuleLoader.cpp b/src/bun.js/bindings/ModuleLoader.cpp index fb46b9f127..05ab6649c1 100644 --- a/src/bun.js/bindings/ModuleLoader.cpp +++ b/src/bun.js/bindings/ModuleLoader.cpp @@ -422,10 +422,10 @@ static JSValue handleVirtualModuleResult( globalObject, object); auto source = JSC::SourceCode( - JSC::SyntheticSourceProvider::create(WTFMove(function), + JSC::SyntheticSourceProvider::create(WTF::move(function), JSC::SourceOrigin(), specifier->toWTFString(BunString::ZeroCopy))); JSC::ensureStillAliveHere(object); - RELEASE_AND_RETURN(scope, rejectOrResolve(JSSourceCode::create(globalObject->vm(), WTFMove(source)))); + RELEASE_AND_RETURN(scope, rejectOrResolve(JSSourceCode::create(globalObject->vm(), WTF::move(source)))); } case OnLoadResultTypePromise: { @@ -496,7 +496,7 @@ extern "C" void Bun__onFulfillAsyncModule( auto created = Bun::createCommonJSModule(jsCast(globalObject), specifierValue, res->result.value); EXCEPTION_ASSERT(created.has_value() == !scope.exception()); if (created.has_value()) { - JSSourceCode* code = JSSourceCode::create(vm, WTFMove(created.value())); + JSSourceCode* code = JSSourceCode::create(vm, WTF::move(created.value())); promise->resolve(globalObject, code); scope.assertNoExceptionExceptTermination(); } else { @@ -956,7 +956,7 @@ static JSValue fetchESMSourceCode( auto created = Bun::createCommonJSModule(globalObject, specifierJS, res->result.value); EXCEPTION_ASSERT(created.has_value() == !scope.exception()); if (created.has_value()) { - RELEASE_AND_RETURN(scope, rejectOrResolve(JSSourceCode::create(vm, WTFMove(created.value())))); + RELEASE_AND_RETURN(scope, rejectOrResolve(JSSourceCode::create(vm, WTF::move(created.value())))); } if constexpr (allowPromise) { @@ -978,10 +978,10 @@ static JSValue fetchESMSourceCode( RELEASE_AND_RETURN(scope, rejectOrResolve(JSSourceCode::create(vm, JSC::SourceCode(provider)))); } -#define CASE(str, name) \ - case (SyntheticModuleType::name): { \ - auto source = JSC::SourceCode(JSC::SyntheticSourceProvider::create(generateNativeModule_##name, JSC::SourceOrigin(), WTFMove(moduleKey))); \ - RELEASE_AND_RETURN(scope, rejectOrResolve(JSSourceCode::create(vm, WTFMove(source)))); \ +#define CASE(str, name) \ + case (SyntheticModuleType::name): { \ + auto source = JSC::SourceCode(JSC::SyntheticSourceProvider::create(generateNativeModule_##name, JSC::SourceOrigin(), WTF::move(moduleKey))); \ + RELEASE_AND_RETURN(scope, rejectOrResolve(JSSourceCode::create(vm, WTF::move(source)))); \ } BUN_FOREACH_ESM_NATIVE_MODULE(CASE) #undef CASE @@ -991,7 +991,7 @@ static JSValue fetchESMSourceCode( if (tag & SyntheticModuleType::InternalModuleRegistryFlag) { constexpr auto mask = (SyntheticModuleType::InternalModuleRegistryFlag - 1); auto source = JSC::SourceCode(JSC::SyntheticSourceProvider::create(generateInternalModuleSourceCode(globalObject, static_cast(tag & mask)), JSC::SourceOrigin(URL(makeString("builtins://"_s, moduleKey))), moduleKey)); - RELEASE_AND_RETURN(scope, rejectOrResolve(JSSourceCode::create(vm, WTFMove(source)))); + RELEASE_AND_RETURN(scope, rejectOrResolve(JSSourceCode::create(vm, WTF::move(source)))); } else { auto&& provider = Zig::SourceProvider::create(globalObject, res->result.value, JSC::SourceProviderSourceType::Module, true); RELEASE_AND_RETURN(scope, rejectOrResolve(JSC::JSSourceCode::create(vm, JSC::SourceCode(provider)))); @@ -1022,7 +1022,7 @@ static JSValue fetchESMSourceCode( auto created = Bun::createCommonJSModule(globalObject, specifierJS, res->result.value); EXCEPTION_ASSERT(created.has_value() == !scope.exception()); if (created.has_value()) { - RELEASE_AND_RETURN(scope, rejectOrResolve(JSSourceCode::create(vm, WTFMove(created.value())))); + RELEASE_AND_RETURN(scope, rejectOrResolve(JSSourceCode::create(vm, WTF::move(created.value())))); } if constexpr (allowPromise) { @@ -1067,10 +1067,10 @@ static JSValue fetchESMSourceCode( globalObject, value); auto source = JSC::SourceCode( - JSC::SyntheticSourceProvider::create(WTFMove(function), + JSC::SyntheticSourceProvider::create(WTF::move(function), JSC::SourceOrigin(), specifier->toWTFString(BunString::ZeroCopy))); JSC::ensureStillAliveHere(value); - RELEASE_AND_RETURN(scope, rejectOrResolve(JSSourceCode::create(globalObject->vm(), WTFMove(source)))); + RELEASE_AND_RETURN(scope, rejectOrResolve(JSSourceCode::create(globalObject->vm(), WTF::move(source)))); } // TOML and JSONC may go through here else if (res->result.value.tag == SyntheticModuleType::ExportsObject) { @@ -1084,10 +1084,10 @@ static JSValue fetchESMSourceCode( globalObject, value); auto source = JSC::SourceCode( - JSC::SyntheticSourceProvider::create(WTFMove(function), + JSC::SyntheticSourceProvider::create(WTF::move(function), JSC::SourceOrigin(), specifier->toWTFString(BunString::ZeroCopy))); JSC::ensureStillAliveHere(value); - RELEASE_AND_RETURN(scope, rejectOrResolve(JSSourceCode::create(globalObject->vm(), WTFMove(source)))); + RELEASE_AND_RETURN(scope, rejectOrResolve(JSSourceCode::create(globalObject->vm(), WTF::move(source)))); } else if (res->result.value.tag == SyntheticModuleType::ExportDefaultObject) { JSC::JSValue value = JSC::JSValue::decode(res->result.value.jsvalue_for_export); if (!value) { @@ -1099,10 +1099,10 @@ static JSValue fetchESMSourceCode( globalObject, value); auto source = JSC::SourceCode( - JSC::SyntheticSourceProvider::create(WTFMove(function), + JSC::SyntheticSourceProvider::create(WTF::move(function), JSC::SourceOrigin(), specifier->toWTFString(BunString::ZeroCopy))); JSC::ensureStillAliveHere(value); - RELEASE_AND_RETURN(scope, rejectOrResolve(JSSourceCode::create(globalObject->vm(), WTFMove(source)))); + RELEASE_AND_RETURN(scope, rejectOrResolve(JSSourceCode::create(globalObject->vm(), WTF::move(source)))); } RELEASE_AND_RETURN(scope, rejectOrResolve(JSC::JSSourceCode::create(vm, JSC::SourceCode(Zig::SourceProvider::create(globalObject, res->result.value))))); diff --git a/src/bun.js/bindings/NodeDirent.cpp b/src/bun.js/bindings/NodeDirent.cpp index d4d7fae7a0..ac05a49417 100644 --- a/src/bun.js/bindings/NodeDirent.cpp +++ b/src/bun.js/bindings/NodeDirent.cpp @@ -349,14 +349,14 @@ extern "C" JSC::EncodedJSValue Bun__Dirent__toJS(Zig::GlobalObject* globalObject if (!pathValue) { auto pathString = path->transferToWTFString(); - pathValue = jsString(vm, WTFMove(pathString)); + pathValue = jsString(vm, WTF::move(pathString)); if (previousPath) { *previousPath = pathValue; } } auto nameString = name->transferToWTFString(); - auto nameValue = jsString(vm, WTFMove(nameString)); + auto nameValue = jsString(vm, WTF::move(nameString)); auto typeValue = jsNumber(type); object->putDirectOffset(vm, 0, nameValue); object->putDirectOffset(vm, 1, pathValue); diff --git a/src/bun.js/bindings/NodeHTTP.cpp b/src/bun.js/bindings/NodeHTTP.cpp index 33fcc4e1c6..d315e75249 100644 --- a/src/bun.js/bindings/NodeHTTP.cpp +++ b/src/bun.js/bindings/NodeHTTP.cpp @@ -115,14 +115,14 @@ static void assignHeadersFromUWebSocketsForCall(uWS::HttpRequest* request, JSVal { std::string_view fullURLStdStr = request->getFullUrl(); String fullURL = String::fromUTF8ReplacingInvalidSequences({ reinterpret_cast(fullURLStdStr.data()), fullURLStdStr.length() }); - args.append(jsString(vm, WTFMove(fullURL))); + args.append(jsString(vm, WTF::move(fullURL))); } // Get the method. if (methodString.isUndefinedOrNull()) [[unlikely]] { std::string_view methodView = request->getMethod(); WTF::String methodString = String::fromUTF8ReplacingInvalidSequences({ reinterpret_cast(methodView.data()), methodView.length() }); - args.append(jsString(vm, WTFMove(methodString))); + args.append(jsString(vm, WTF::move(methodString))); } else { args.append(methodString); } @@ -216,7 +216,7 @@ static EncodedJSValue assignHeadersFromUWebSockets(uWS::HttpRequest* request, JS std::string_view fullURLStdStr = request->getFullUrl(); String fullURL = String::fromUTF8ReplacingInvalidSequences({ reinterpret_cast(fullURLStdStr.data()), fullURLStdStr.length() }); PutPropertySlot slot(objectValue, false); - objectValue->put(objectValue, globalObject, builtinNames.urlPublicName(), jsString(vm, WTFMove(fullURL)), slot); + objectValue->put(objectValue, globalObject, builtinNames.urlPublicName(), jsString(vm, WTF::move(fullURL)), slot); RETURN_IF_EXCEPTION(scope, {}); } diff --git a/src/bun.js/bindings/NodeVM.cpp b/src/bun.js/bindings/NodeVM.cpp index baf305f5b4..c8e1053672 100644 --- a/src/bun.js/bindings/NodeVM.cpp +++ b/src/bun.js/bindings/NodeVM.cpp @@ -146,7 +146,7 @@ JSC::JSFunction* constructAnonymousFunction(JSC::JSGlobalObject* globalObject, c EXCEPTION_ASSERT(!!throwScope.exception() == code.isNull()); SourceCode sourceCode( - JSC::StringSourceProvider::create(code, sourceOrigin, WTFMove(options.filename), sourceTaintOrigin, position, SourceProviderSourceType::Program), + JSC::StringSourceProvider::create(code, sourceOrigin, WTF::move(options.filename), sourceTaintOrigin, position, SourceProviderSourceType::Program), position.m_line.oneBasedInt(), position.m_column.oneBasedInt()); CodeCache* cache = vm.codeCache(); @@ -1276,7 +1276,7 @@ JSC_DEFINE_HOST_FUNCTION(vmModuleCompileFunction, (JSGlobalObject * globalObject options.parsingContext->setGlobalScopeExtension(functionScope); // Create the function using constructAnonymousFunction with the appropriate scope chain - JSFunction* function = constructAnonymousFunction(globalObject, ArgList(constructFunctionArgs), sourceOrigin, WTFMove(options), JSC::SourceTaintedOrigin::Untainted, functionScope); + JSFunction* function = constructAnonymousFunction(globalObject, ArgList(constructFunctionArgs), sourceOrigin, WTF::move(options), JSC::SourceTaintedOrigin::Untainted, functionScope); RETURN_IF_EXCEPTION(scope, {}); if (!function) { @@ -1573,12 +1573,12 @@ void configureNodeVM(JSC::VM& vm, Zig::GlobalObject* globalObject) } BaseVMOptions::BaseVMOptions(String filename) - : filename(WTFMove(filename)) + : filename(WTF::move(filename)) { } BaseVMOptions::BaseVMOptions(String filename, OrdinalNumber lineOffset, OrdinalNumber columnOffset) - : filename(WTFMove(filename)) + : filename(WTF::move(filename)) , lineOffset(lineOffset) , columnOffset(columnOffset) { diff --git a/src/bun.js/bindings/NodeVMModule.cpp b/src/bun.js/bindings/NodeVMModule.cpp index ff9489c006..202692f1f5 100644 --- a/src/bun.js/bindings/NodeVMModule.cpp +++ b/src/bun.js/bindings/NodeVMModule.cpp @@ -12,14 +12,14 @@ namespace Bun { NodeVMModuleRequest::NodeVMModuleRequest(WTF::String specifier, WTF::HashMap importAttributes) - : m_specifier(WTFMove(specifier)) - , m_importAttributes(WTFMove(importAttributes)) + : m_specifier(WTF::move(specifier)) + , m_importAttributes(WTF::move(importAttributes)) { } void NodeVMModuleRequest::addImportAttribute(WTF::String key, WTF::String value) { - m_importAttributes.set(WTFMove(key), WTFMove(value)); + m_importAttributes.set(WTF::move(key), WTF::move(value)); } JSArray* NodeVMModuleRequest::toJS(JSGlobalObject* globalObject) const @@ -152,7 +152,7 @@ JSValue NodeVMModule::evaluate(JSGlobalObject* globalObject, uint32_t timeout, b NodeVMModule::NodeVMModule(JSC::VM& vm, JSC::Structure* structure, WTF::String identifier, JSValue context, JSValue moduleWrapper) : Base(vm, structure) - , m_identifier(WTFMove(identifier)) + , m_identifier(WTF::move(identifier)) , m_context(context && context.isObject() ? asObject(context) : nullptr, JSC::WriteBarrierEarlyInit) , m_moduleWrapper(vm, this, moduleWrapper) { diff --git a/src/bun.js/bindings/NodeVMModule.h b/src/bun.js/bindings/NodeVMModule.h index 57179d37f8..67ce3d5ef1 100644 --- a/src/bun.js/bindings/NodeVMModule.h +++ b/src/bun.js/bindings/NodeVMModule.h @@ -56,7 +56,7 @@ public: void namespaceObject(JSC::VM& vm, JSModuleNamespaceObject* value) { m_namespaceObject.set(vm, this, value); } const WTF::Vector& moduleRequests() const { return m_moduleRequests; } - void addModuleRequest(NodeVMModuleRequest request) { m_moduleRequests.append(WTFMove(request)); } + void addModuleRequest(NodeVMModuleRequest request) { m_moduleRequests.append(WTF::move(request)); } // Purposely not virtual. Dispatches to the correct subclass. JSValue createModuleRecord(JSC::JSGlobalObject* globalObject); diff --git a/src/bun.js/bindings/NodeVMScript.cpp b/src/bun.js/bindings/NodeVMScript.cpp index 7602c80a50..b6ae742d67 100644 --- a/src/bun.js/bindings/NodeVMScript.cpp +++ b/src/bun.js/bindings/NodeVMScript.cpp @@ -133,7 +133,7 @@ constructScript(JSGlobalObject* globalObject, CallFrame* callFrame, JSValue newT const bool produceCachedData = options.produceCachedData; auto filename = options.filename; - NodeVMScript* script = NodeVMScript::create(vm, globalObject, structure, WTFMove(source), WTFMove(options)); + NodeVMScript* script = NodeVMScript::create(vm, globalObject, structure, WTF::move(source), WTF::move(options)); RETURN_IF_EXCEPTION(scope, {}); fetcher->owner(vm, script); @@ -150,7 +150,7 @@ constructScript(JSGlobalObject* globalObject, CallFrame* callFrame, JSValue newT JSC::LexicallyScopedFeatures lexicallyScopedFeatures = globalObject->globalScopeExtension() ? JSC::TaintedByWithScopeLexicallyScopedFeature : JSC::NoLexicallyScopedFeatures; JSC::SourceCodeKey key(script->source(), {}, JSC::SourceCodeType::ProgramType, lexicallyScopedFeatures, JSC::JSParserScriptMode::Classic, JSC::DerivedContextType::None, JSC::EvalContextType::None, false, {}, std::nullopt); Ref cachedBytecode = JSC::CachedBytecode::create(std::span(cachedData), nullptr, {}); - JSC::UnlinkedProgramCodeBlock* unlinkedBlock = JSC::decodeCodeBlock(vm, key, WTFMove(cachedBytecode)); + JSC::UnlinkedProgramCodeBlock* unlinkedBlock = JSC::decodeCodeBlock(vm, key, WTF::move(cachedBytecode)); if (!unlinkedBlock) { script->cachedDataRejected(TriState::True); @@ -264,7 +264,7 @@ void NodeVMScriptConstructor::finishCreation(VM& vm, JSObject* prototype) NodeVMScript* NodeVMScript::create(VM& vm, JSGlobalObject* globalObject, Structure* structure, SourceCode source, ScriptOptions options) { - NodeVMScript* ptr = new (NotNull, allocateCell(vm)) NodeVMScript(vm, structure, WTFMove(source), WTFMove(options)); + NodeVMScript* ptr = new (NotNull, allocateCell(vm)) NodeVMScript(vm, structure, WTF::move(source), WTF::move(options)); ptr->finishCreation(vm); return ptr; } diff --git a/src/bun.js/bindings/NodeVMScript.h b/src/bun.js/bindings/NodeVMScript.h index 5637ae939a..356d247a8b 100644 --- a/src/bun.js/bindings/NodeVMScript.h +++ b/src/bun.js/bindings/NodeVMScript.h @@ -91,8 +91,8 @@ private: NodeVMScript(JSC::VM& vm, JSC::Structure* structure, JSC::SourceCode source, ScriptOptions options) : Base(vm, structure) - , m_source(WTFMove(source)) - , m_options(WTFMove(options)) + , m_source(WTF::move(source)) + , m_options(WTF::move(options)) { } diff --git a/src/bun.js/bindings/NodeVMSourceTextModule.cpp b/src/bun.js/bindings/NodeVMSourceTextModule.cpp index af84196723..5c3ad694ec 100644 --- a/src/bun.js/bindings/NodeVMSourceTextModule.cpp +++ b/src/bun.js/bindings/NodeVMSourceTextModule.cpp @@ -97,17 +97,17 @@ NodeVMSourceTextModule* NodeVMSourceTextModule::create(VM& vm, JSGlobalObject* g WTF::String sourceText = sourceTextValue.toWTFString(globalObject); RETURN_IF_EXCEPTION(scope, nullptr); - Ref sourceProvider = StringSourceProvider::create(WTFMove(sourceText), sourceOrigin, String {}, SourceTaintedOrigin::Untainted, + Ref sourceProvider = StringSourceProvider::create(WTF::move(sourceText), sourceOrigin, String {}, SourceTaintedOrigin::Untainted, TextPosition { OrdinalNumber::fromZeroBasedInt(lineOffset), OrdinalNumber::fromZeroBasedInt(columnOffset) }, SourceProviderSourceType::Module); - SourceCode sourceCode(WTFMove(sourceProvider), lineOffset, columnOffset); + SourceCode sourceCode(WTF::move(sourceProvider), lineOffset, columnOffset); auto* zigGlobalObject = defaultGlobalObject(globalObject); WTF::String identifier = identifierValue.toWTFString(globalObject); RETURN_IF_EXCEPTION(scope, nullptr); NodeVMSourceTextModule* ptr = new (NotNull, allocateCell(vm)) NodeVMSourceTextModule( - vm, zigGlobalObject->NodeVMSourceTextModuleStructure(), WTFMove(identifier), contextValue, - WTFMove(sourceCode), moduleWrapper, initializeImportMeta); + vm, zigGlobalObject->NodeVMSourceTextModuleStructure(), WTF::move(identifier), contextValue, + WTF::move(sourceCode), moduleWrapper, initializeImportMeta); RETURN_IF_EXCEPTION(scope, nullptr); ptr->finishCreation(vm); @@ -127,7 +127,7 @@ NodeVMSourceTextModule* NodeVMSourceTextModule::create(VM& vm, JSGlobalObject* g SourceCodeKey key(ptr->sourceCode(), {}, SourceCodeType::ProgramType, lexicallyScopedFeatures, JSParserScriptMode::Classic, DerivedContextType::None, EvalContextType::None, false, {}, std::nullopt); Ref cachedBytecode = CachedBytecode::create(std::span(cachedData), nullptr, {}); RETURN_IF_EXCEPTION(scope, nullptr); - UnlinkedModuleProgramCodeBlock* unlinkedBlock = decodeCodeBlock(vm, key, WTFMove(cachedBytecode)); + UnlinkedModuleProgramCodeBlock* unlinkedBlock = decodeCodeBlock(vm, key, WTF::move(cachedBytecode)); RETURN_IF_EXCEPTION(scope, nullptr); if (unlinkedBlock) { @@ -274,7 +274,7 @@ JSValue NodeVMSourceTextModule::createModuleRecord(JSGlobalObject* globalObject) break; } - attributeMap.set("type"_s, WTFMove(attributesTypeString)); + attributeMap.set("type"_s, WTF::move(attributesTypeString)); attributesObject->putDirect(vm, JSC::Identifier::fromString(vm, "type"_s), attributesType); if (const String& hostDefinedImportType = request.m_attributes->hostDefinedImportType(); !hostDefinedImportType.isEmpty()) { @@ -291,7 +291,7 @@ JSValue NodeVMSourceTextModule::createModuleRecord(JSGlobalObject* globalObject) } requestObject->putDirect(vm, attributesIdentifier, attributesObject); - addModuleRequest({ WTF::String(*request.m_specifier), WTFMove(attributeMap) }); + addModuleRequest({ WTF::String(*request.m_specifier), WTF::move(attributeMap) }); requestsArray->putDirectIndex(globalObject, i, requestObject); } @@ -347,7 +347,7 @@ JSValue NodeVMSourceTextModule::link(JSGlobalObject* globalObject, JSArray* spec record->setImportedModule(globalObject, Identifier::fromString(vm, specifier), resolvedRecord); RETURN_IF_EXCEPTION(scope, {}); - m_resolveCache.set(WTFMove(specifier), WriteBarrier { vm, this, moduleNative }); + m_resolveCache.set(WTF::move(specifier), WriteBarrier { vm, this, moduleNative }); RETURN_IF_EXCEPTION(scope, {}); } } diff --git a/src/bun.js/bindings/NodeVMSourceTextModule.h b/src/bun.js/bindings/NodeVMSourceTextModule.h index e7e27cfdfc..790c1b5cc5 100644 --- a/src/bun.js/bindings/NodeVMSourceTextModule.h +++ b/src/bun.js/bindings/NodeVMSourceTextModule.h @@ -58,9 +58,9 @@ private: SourceCode m_sourceCode; NodeVMSourceTextModule(JSC::VM& vm, JSC::Structure* structure, WTF::String identifier, JSValue context, SourceCode sourceCode, JSValue moduleWrapper, JSValue initializeImportMeta) - : Base(vm, structure, WTFMove(identifier), context, moduleWrapper) + : Base(vm, structure, WTF::move(identifier), context, moduleWrapper) , m_initializeImportMeta(initializeImportMeta && !initializeImportMeta.isUndefined() ? initializeImportMeta : JSValue(), JSC::WriteBarrierEarlyInit) - , m_sourceCode(WTFMove(sourceCode)) + , m_sourceCode(WTF::move(sourceCode)) { } diff --git a/src/bun.js/bindings/NodeVMSyntheticModule.cpp b/src/bun.js/bindings/NodeVMSyntheticModule.cpp index 8455d7d88c..7cc66b429e 100644 --- a/src/bun.js/bindings/NodeVMSyntheticModule.cpp +++ b/src/bun.js/bindings/NodeVMSyntheticModule.cpp @@ -80,7 +80,7 @@ NodeVMSyntheticModule* NodeVMSyntheticModule::create(VM& vm, JSGlobalObject* glo auto* structure = zigGlobalObject->NodeVMSyntheticModuleStructure(); WTF::String identifier = identifierValue.toWTFString(globalObject); RETURN_IF_EXCEPTION(scope, nullptr); - auto* ptr = new (NotNull, allocateCell(vm)) NodeVMSyntheticModule(vm, structure, WTFMove(identifier), contextValue, moduleWrapperValue, WTFMove(exportNames), syntheticEvaluationStepsValue); + auto* ptr = new (NotNull, allocateCell(vm)) NodeVMSyntheticModule(vm, structure, WTF::move(identifier), contextValue, moduleWrapperValue, WTF::move(exportNames), syntheticEvaluationStepsValue); ptr->finishCreation(vm); return ptr; } diff --git a/src/bun.js/bindings/NodeVMSyntheticModule.h b/src/bun.js/bindings/NodeVMSyntheticModule.h index 3d005d804d..e269bd94dc 100644 --- a/src/bun.js/bindings/NodeVMSyntheticModule.h +++ b/src/bun.js/bindings/NodeVMSyntheticModule.h @@ -52,8 +52,8 @@ private: WTF::HashSet m_exportNames; NodeVMSyntheticModule(JSC::VM& vm, JSC::Structure* structure, WTF::String identifier, JSValue context, JSValue moduleWrapper, WTF::HashSet exportNames, JSValue syntheticEvaluationSteps) - : Base(vm, structure, WTFMove(identifier), context, moduleWrapper) - , m_exportNames(WTFMove(exportNames)) + : Base(vm, structure, WTF::move(identifier), context, moduleWrapper) + , m_exportNames(WTF::move(exportNames)) , m_syntheticEvaluationSteps(vm, this, syntheticEvaluationSteps) { } diff --git a/src/bun.js/bindings/ScriptExecutionContext.cpp b/src/bun.js/bindings/ScriptExecutionContext.cpp index e546e7fc29..c314bddd16 100644 --- a/src/bun.js/bindings/ScriptExecutionContext.cpp +++ b/src/bun.js/bindings/ScriptExecutionContext.cpp @@ -137,7 +137,7 @@ ScriptExecutionContext::~ScriptExecutionContext() m_inScriptExecutionContextDestructor = true; #endif // ASSERT_ENABLED - auto postMessageCompletionHandlers = WTFMove(m_processMessageWithMessagePortsSoonHandlers); + auto postMessageCompletionHandlers = WTF::move(m_processMessageWithMessagePortsSoonHandlers); for (auto& completionHandler : postMessageCompletionHandlers) completionHandler(); @@ -157,7 +157,7 @@ bool ScriptExecutionContext::postTaskTo(ScriptExecutionContextIdentifier identif if (!context) return false; - context->postTaskConcurrently(WTFMove(task)); + context->postTaskConcurrently(WTF::move(task)); return true; } @@ -201,7 +201,7 @@ bool ScriptExecutionContext::ensureOnContextThread(ScriptExecutionContextIdentif return false; if (!context->isContextThread()) { - context->postTaskConcurrently(WTFMove(task)); + context->postTaskConcurrently(WTF::move(task)); return true; } } @@ -218,7 +218,7 @@ bool ScriptExecutionContext::ensureOnMainThread(FunctionpostTaskConcurrently(WTFMove(task)); + context->postTaskConcurrently(WTF::move(task)); return true; } @@ -231,7 +231,7 @@ ScriptExecutionContext* ScriptExecutionContext::getMainThreadScriptExecutionCont void ScriptExecutionContext::processMessageWithMessagePortsSoon(CompletionHandler&& completionHandler) { ASSERT(isContextThread()); - m_processMessageWithMessagePortsSoonHandlers.append(WTFMove(completionHandler)); + m_processMessageWithMessagePortsSoonHandlers.append(WTF::move(completionHandler)); if (m_willProcessMessageWithMessagePortsSoon) { return; @@ -368,13 +368,13 @@ ScriptExecutionContext* executionContext(JSC::JSGlobalObject* globalObject) void ScriptExecutionContext::postTaskConcurrently(Function&& lambda) { - auto* task = new EventLoopTask(WTFMove(lambda)); + auto* task = new EventLoopTask(WTF::move(lambda)); static_cast(m_globalObject)->queueTaskConcurrently(task); } // Executes the task on context's thread asynchronously. void ScriptExecutionContext::postTask(Function&& lambda) { - auto* task = new EventLoopTask(WTFMove(lambda)); + auto* task = new EventLoopTask(WTF::move(lambda)); static_cast(m_globalObject)->queueTask(task); } // Executes the task on context's thread asynchronously. diff --git a/src/bun.js/bindings/Serialization.cpp b/src/bun.js/bindings/Serialization.cpp index 9af0d6a492..5385e153db 100644 --- a/src/bun.js/bindings/Serialization.cpp +++ b/src/bun.js/bindings/Serialization.cpp @@ -33,7 +33,7 @@ extern "C" SerializedValueSlice Bun__serializeJSValue(JSGlobalObject* globalObje auto forStorage = (static_cast(flags) & static_cast(SerializedFlags::ForStorage)) ? SerializationForStorage::Yes : SerializationForStorage::No; auto context = SerializationContext::Default; auto forTransferEnum = (static_cast(flags) & static_cast(SerializedFlags::ForCrossProcessTransfer)) ? SerializationForCrossProcessTransfer::Yes : SerializationForCrossProcessTransfer::No; - ExceptionOr> serialized = SerializedScriptValue::create(*globalObject, value, WTFMove(transferList), dummyPorts, forStorage, context, forTransferEnum); + ExceptionOr> serialized = SerializedScriptValue::create(*globalObject, value, WTF::move(transferList), dummyPorts, forStorage, context, forTransferEnum); EXCEPTION_ASSERT(!!scope.exception() == serialized.hasException()); if (serialized.hasException()) { @@ -61,6 +61,6 @@ extern "C" EncodedJSValue Bun__JSValue__deserialize(JSGlobalObject* globalObject { Vector vector(std::span { bytes, size }); /// ?! did i just give ownership of these bytes to JSC? - auto scriptValue = SerializedScriptValue::createFromWireBytes(WTFMove(vector)); + auto scriptValue = SerializedScriptValue::createFromWireBytes(WTF::move(vector)); return JSValue::encode(scriptValue->deserialize(*globalObject, globalObject)); } diff --git a/src/bun.js/bindings/ShellBindings.cpp b/src/bun.js/bindings/ShellBindings.cpp index 5d8cc9d692..db11b91f75 100644 --- a/src/bun.js/bindings/ShellBindings.cpp +++ b/src/bun.js/bindings/ShellBindings.cpp @@ -22,7 +22,7 @@ extern "C" SYSV_ABI EncodedJSValue Bun__createShellInterpreter(Zig::GlobalObject auto* structure = globalObject->JSShellInterpreterStructure(); ASSERT(structure); - auto* result = WebCore::JSShellInterpreter::create(vm, globalObject, structure, ptr, WTFMove(args), resolveFn, rejectFn); + auto* result = WebCore::JSShellInterpreter::create(vm, globalObject, structure, ptr, WTF::move(args), resolveFn, rejectFn); size_t size = ShellInterpreter__estimatedSize(ptr); vm.heap.reportExtraMemoryAllocated(result, size); diff --git a/src/bun.js/bindings/TextCodecCJK.cpp b/src/bun.js/bindings/TextCodecCJK.cpp index c2dc80f276..b09ee61889 100644 --- a/src/bun.js/bindings/TextCodecCJK.cpp +++ b/src/bun.js/bindings/TextCodecCJK.cpp @@ -1081,7 +1081,7 @@ static Vector gbEncodeShared(StringView string, Function gb18030Encode(StringView string, Function&)>&& unencodableHandler) { - return gbEncodeShared(string, WTFMove(unencodableHandler), IsGBK::No); + return gbEncodeShared(string, WTF::move(unencodableHandler), IsGBK::No); } // https://encoding.spec.whatwg.org/#gbk-decoder @@ -1092,7 +1092,7 @@ String TextCodecCJK::gbkDecode(std::span bytes, bool flush, bool static Vector gbkEncode(StringView string, Function&)>&& unencodableHandler) { - return gbEncodeShared(string, WTFMove(unencodableHandler), IsGBK::Yes); + return gbEncodeShared(string, WTF::move(unencodableHandler), IsGBK::Yes); } constexpr size_t maxUChar32Digits = 10; diff --git a/src/bun.js/bindings/TextEncodingRegistry.cpp b/src/bun.js/bindings/TextEncodingRegistry.cpp index cab9ba628f..356537245b 100644 --- a/src/bun.js/bindings/TextEncodingRegistry.cpp +++ b/src/bun.js/bindings/TextEncodingRegistry.cpp @@ -174,7 +174,7 @@ static void addToTextCodecMap(ASCIILiteral name, NewTextCodecFunction&& function { ASCIILiteral atomName = textEncodingNameMap().get(name); ASSERT(!atomName.isNull()); - textCodecMap().add(atomName, WTFMove(function)); + textCodecMap().add(atomName, WTF::move(function)); } static void pruneBlocklistedCodecs() WTF_REQUIRES_LOCK(encodingRegistryLock) diff --git a/src/bun.js/bindings/URLSearchParams.cpp b/src/bun.js/bindings/URLSearchParams.cpp index e8a15e5194..7d5f9d225d 100644 --- a/src/bun.js/bindings/URLSearchParams.cpp +++ b/src/bun.js/bindings/URLSearchParams.cpp @@ -35,7 +35,7 @@ extern "C" JSC::EncodedJSValue URLSearchParams__create(JSDOMGlobalObject* global { String str = Zig::toString(*input); auto result = URLSearchParams::create(str, nullptr); - return JSC::JSValue::encode(WebCore::toJSNewlyCreated(globalObject, globalObject, WTFMove(result))); + return JSC::JSValue::encode(WebCore::toJSNewlyCreated(globalObject, globalObject, WTF::move(result))); } extern "C" WebCore::URLSearchParams* URLSearchParams__fromJS(JSC::EncodedJSValue value) @@ -75,7 +75,7 @@ ExceptionOr> URLSearchParams::create(std::variant>& pairs) -> ExceptionOr> { return adoptRef(*new URLSearchParams(pairs)); }, [&](const String& string) -> ExceptionOr> { return adoptRef(*new URLSearchParams(string, nullptr)); }); + return adoptRef(*new URLSearchParams(WTF::move(pairs))); }, [&](const Vector>& pairs) -> ExceptionOr> { return adoptRef(*new URLSearchParams(pairs)); }, [&](const String& string) -> ExceptionOr> { return adoptRef(*new URLSearchParams(string, nullptr)); }); return std::visit(visitor, variant); } diff --git a/src/bun.js/bindings/Uint8Array.cpp b/src/bun.js/bindings/Uint8Array.cpp index 9e37d9225f..53feafee1e 100644 --- a/src/bun.js/bindings/Uint8Array.cpp +++ b/src/bun.js/bindings/Uint8Array.cpp @@ -15,7 +15,7 @@ extern "C" JSC::EncodedJSValue JSUint8Array__fromDefaultAllocator(JSC::JSGlobalO mi_free(p); })); - uint8Array = JSC::JSUint8Array::create(lexicalGlobalObject, lexicalGlobalObject->typedArrayStructureWithTypedArrayType(), WTFMove(buffer), 0, length); + uint8Array = JSC::JSUint8Array::create(lexicalGlobalObject, lexicalGlobalObject->typedArrayStructureWithTypedArrayType(), WTF::move(buffer), 0, length); } else { uint8Array = JSC::JSUint8Array::create(lexicalGlobalObject, lexicalGlobalObject->typedArrayStructureWithTypedArrayType(), 0); } @@ -36,7 +36,7 @@ extern "C" JSC::EncodedJSValue JSArrayBuffer__fromDefaultAllocator(JSC::JSGlobal buffer = ArrayBuffer::create(0, 1); } - auto arrayBuffer = JSC::JSArrayBuffer::create(lexicalGlobalObject->vm(), lexicalGlobalObject->arrayBufferStructure(), WTFMove(buffer)); + auto arrayBuffer = JSC::JSArrayBuffer::create(lexicalGlobalObject->vm(), lexicalGlobalObject->arrayBufferStructure(), WTF::move(buffer)); return JSC::JSValue::encode(arrayBuffer); } diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp index 0e9e1161e2..dbbe784ad0 100644 --- a/src/bun.js/bindings/ZigGlobalObject.cpp +++ b/src/bun.js/bindings/ZigGlobalObject.cpp @@ -531,7 +531,7 @@ extern "C" JSC::JSGlobalObject* Zig__GlobalObject__create(void* console_client, auto& options = worker.options(); if (options.env.has_value()) { - HashMap map = WTFMove(*std::exchange(options.env, std::nullopt)); + HashMap map = *std::exchange(options.env, std::nullopt); auto size = map.size(); // In theory, a GC could happen before we finish putting all the properties on the object. @@ -547,7 +547,7 @@ extern "C" JSC::JSGlobalObject* Zig__GlobalObject__create(void* console_client, for (auto k : map) { // They can have environment variables with numbers as keys. // So we must use putDirectMayBeIndex to handle that. - env->putDirectMayBeIndex(globalObject, JSC::Identifier::fromString(vm, WTFMove(k.key)), strings.at(i++)); + env->putDirectMayBeIndex(globalObject, JSC::Identifier::fromString(vm, WTF::move(k.key)), strings.at(i++)); } globalObject->m_processEnvObject.set(vm, globalObject, env); } @@ -1073,7 +1073,7 @@ JSC_DEFINE_HOST_FUNCTION(functionQueueMicrotask, // The runtime inspects argumentCount to determine which arguments are present, so callers may pass only the subset they need. // Here we pass: function, callback, asyncContext. JSC::QueuedTask task { nullptr, JSC::InternalMicrotask::BunPerformMicrotaskJob, globalObject, function, callback, asyncContext }; - globalObject->vm().queueMicrotask(WTFMove(task)); + globalObject->vm().queueMicrotask(WTF::move(task)); return JSC::JSValue::encode(JSC::jsUndefined()); } @@ -1130,7 +1130,7 @@ JSC_DEFINE_HOST_FUNCTION(functionBTOA, return {}; } WTF::StringImpl::copyCharacters(ptr, encodedString.span16()); - encodedString = WTFMove(dest); + encodedString = WTF::move(dest); } unsigned length = encodedString.length(); @@ -1198,7 +1198,7 @@ extern "C" JSC::EncodedJSValue ArrayBuffer__fromSharedMemfd(int64_t fd, JSC::JSG })); if (type == JSC::Uint8ArrayType) { - auto uint8array = JSC::JSUint8Array::create(globalObject, globalObject->m_typedArrayUint8.get(globalObject), WTFMove(buffer), 0, byteLength); + auto uint8array = JSC::JSUint8Array::create(globalObject, globalObject->m_typedArrayUint8.get(globalObject), WTF::move(buffer), 0, byteLength); return JSValue::encode(uint8array); } @@ -1210,7 +1210,7 @@ extern "C" JSC::EncodedJSValue ArrayBuffer__fromSharedMemfd(int64_t fd, JSC::JSG return JSC::JSValue::encode(JSC::JSValue {}); } - return JSValue::encode(JSC::JSArrayBuffer::create(globalObject->vm(), structure, WTFMove(buffer))); + return JSValue::encode(JSC::JSArrayBuffer::create(globalObject->vm(), structure, WTF::move(buffer))); } else { RELEASE_ASSERT_NOT_REACHED(); } @@ -1232,7 +1232,7 @@ extern "C" JSC::EncodedJSValue Bun__createArrayBufferForCopy(JSC::JSGlobalObject if (len > 0) memcpy(arrayBuffer->data(), ptr, len); - RELEASE_AND_RETURN(scope, JSValue::encode(JSC::JSArrayBuffer::create(globalObject->vm(), globalObject->arrayBufferStructure(JSC::ArrayBufferSharingMode::Default), WTFMove(arrayBuffer)))); + RELEASE_AND_RETURN(scope, JSValue::encode(JSC::JSArrayBuffer::create(globalObject->vm(), globalObject->arrayBufferStructure(JSC::ArrayBufferSharingMode::Default), WTF::move(arrayBuffer)))); } extern "C" JSC::EncodedJSValue Bun__allocUint8ArrayForCopy(JSC::JSGlobalObject* globalObject, size_t len, void** ptr) @@ -1286,7 +1286,7 @@ extern "C" JSC::EncodedJSValue Bun__makeArrayBufferWithBytesNoCopy(JSC::JSGlobal if (deallocator) deallocator(p, deallocatorContext); })); - JSArrayBuffer* jsBuffer = JSArrayBuffer::create(vm, globalObject->arrayBufferStructure(ArrayBufferSharingMode::Default), WTFMove(buffer)); + JSArrayBuffer* jsBuffer = JSArrayBuffer::create(vm, globalObject->arrayBufferStructure(ArrayBufferSharingMode::Default), WTF::move(buffer)); RETURN_IF_EXCEPTION(scope, {}); return JSValue::encode(jsBuffer); } @@ -1299,7 +1299,7 @@ extern "C" JSC::EncodedJSValue Bun__makeTypedArrayWithBytesNoCopy(JSC::JSGlobalO auto buffer_ = ArrayBuffer::createFromBytes({ static_cast(ptr), len }, createSharedTask([=](void* p) { if (deallocator) deallocator(p, deallocatorContext); })); - RefPtr&& buffer = WTFMove(buffer_); + RefPtr&& buffer = WTF::move(buffer_); if (!buffer) { throwOutOfMemoryError(globalObject, scope); return {}; @@ -1313,7 +1313,7 @@ extern "C" JSC::EncodedJSValue Bun__makeTypedArrayWithBytesNoCopy(JSC::JSGlobalO switch (ty) { #define JSC_TYPED_ARRAY_FACTORY(type) \ case Type##type: \ - RELEASE_AND_RETURN(scope, JSValue::encode(JS##type##Array::create(globalObject, globalObject->typedArrayStructure(Type##type, isResizableOrGrowableShared), WTFMove(buffer), offset, length))); + RELEASE_AND_RETURN(scope, JSValue::encode(JS##type##Array::create(globalObject, globalObject->typedArrayStructure(Type##type, isResizableOrGrowableShared), WTF::move(buffer), offset, length))); #undef JSC_TYPED_ARRAY_CHECK FOR_EACH_TYPED_ARRAY_TYPE_EXCLUDING_DATA_VIEW(JSC_TYPED_ARRAY_FACTORY) case NotTypedArray: @@ -1337,7 +1337,7 @@ JSC_DEFINE_HOST_FUNCTION(functionCreateUninitializedArrayBuffer, return {}; } - RELEASE_AND_RETURN(scope, JSValue::encode(JSC::JSArrayBuffer::create(globalObject->vm(), globalObject->arrayBufferStructure(JSC::ArrayBufferSharingMode::Default), WTFMove(arrayBuffer)))); + RELEASE_AND_RETURN(scope, JSValue::encode(JSC::JSArrayBuffer::create(globalObject->vm(), globalObject->arrayBufferStructure(JSC::ArrayBufferSharingMode::Default), WTF::move(arrayBuffer)))); } static inline JSC::EncodedJSValue jsFunctionAddEventListenerBody(JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame, Zig::GlobalObject* castedThis) @@ -1358,7 +1358,7 @@ static inline JSC::EncodedJSValue jsFunctionAddEventListenerBody(JSC::JSGlobalOb EnsureStillAliveScope argument2 = callFrame->argument(2); auto options = argument2.value().isUndefined() ? false : convert, IDLBoolean>>(*lexicalGlobalObject, argument2.value()); RETURN_IF_EXCEPTION(throwScope, {}); - auto result = JSValue::encode(WebCore::toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl->addEventListenerForBindings(WTFMove(type), WTFMove(listener), WTFMove(options)); })); + auto result = JSValue::encode(WebCore::toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl->addEventListenerForBindings(WTF::move(type), WTF::move(listener), WTF::move(options)); })); RETURN_IF_EXCEPTION(throwScope, {}); vm.writeBarrier(&static_cast(*castedThis), argument1.value()); return result; @@ -1387,7 +1387,7 @@ static inline JSC::EncodedJSValue jsFunctionRemoveEventListenerBody(JSC::JSGloba EnsureStillAliveScope argument2 = callFrame->argument(2); auto options = argument2.value().isUndefined() ? false : convert, IDLBoolean>>(*lexicalGlobalObject, argument2.value()); RETURN_IF_EXCEPTION(throwScope, {}); - auto result = JSValue::encode(WebCore::toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl->removeEventListenerForBindings(WTFMove(type), WTFMove(listener), WTFMove(options)); })); + auto result = JSValue::encode(WebCore::toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl->removeEventListenerForBindings(WTF::move(type), WTF::move(listener), WTF::move(options)); })); RETURN_IF_EXCEPTION(throwScope, {}); vm.writeBarrier(&static_cast(*castedThis), argument1.value()); return result; @@ -1503,7 +1503,7 @@ JSC_DEFINE_HOST_FUNCTION(createWritableStreamFromInternal, (JSGlobalObject * glo auto* jsDOMGlobalObject = JSC::jsCast(globalObject); auto internalWritableStream = InternalWritableStream::fromObject(*jsDOMGlobalObject, *callFrame->uncheckedArgument(0).toObject(globalObject)); - return JSValue::encode(toJSNewlyCreated(globalObject, jsDOMGlobalObject, WritableStream::create(WTFMove(internalWritableStream)))); + return JSValue::encode(toJSNewlyCreated(globalObject, jsDOMGlobalObject, WritableStream::create(WTF::move(internalWritableStream)))); } JSC_DEFINE_HOST_FUNCTION(addAbortAlgorithmToSignal, (JSGlobalObject * globalObject, CallFrame* callFrame)) @@ -1518,7 +1518,7 @@ JSC_DEFINE_HOST_FUNCTION(addAbortAlgorithmToSignal, (JSGlobalObject * globalObje Ref abortAlgorithm = JSAbortAlgorithm::create(vm, callFrame->uncheckedArgument(1).getObject()); - auto algorithmIdentifier = AbortSignal::addAbortAlgorithmToSignal(abortSignal->wrapped(), WTFMove(abortAlgorithm)); + auto algorithmIdentifier = AbortSignal::addAbortAlgorithmToSignal(abortSignal->wrapped(), WTF::move(abortAlgorithm)); return JSValue::encode(JSC::jsNumber(algorithmIdentifier)); } @@ -3104,7 +3104,7 @@ extern "C" void JSC__JSGlobalObject__queueMicrotaskCallback(Zig::GlobalObject* g // Do not use JSCell* here because the GC will try to visit it. // Use BunInvokeJobWithArguments to pass the two arguments (ptr and callback) to the trampoline function JSC::QueuedTask task { nullptr, JSC::InternalMicrotask::BunInvokeJobWithArguments, globalObject, function, JSValue(std::bit_cast(reinterpret_cast(ptr))), JSValue(std::bit_cast(reinterpret_cast(callback))) }; - globalObject->vm().queueMicrotask(WTFMove(task)); + globalObject->vm().queueMicrotask(WTF::move(task)); } JSC::Identifier GlobalObject::moduleLoaderResolve(JSGlobalObject* jsGlobalObject, @@ -3450,7 +3450,7 @@ static JSC::JSPromise* handleResponseOnStreamingAction(JSGlobalObject* lexicalGl return promise; } - auto wrapper = WebCore::toJSNewlyCreated(globalObject, globalObject, WTFMove(compiler)); + auto wrapper = WebCore::toJSNewlyCreated(globalObject, globalObject, WTF::move(compiler)); auto builtin = globalObject->wasmStreamingConsumeStreamFunction(); auto callData = JSC::getCallData(builtin); MarkedArgumentBuffer arguments; diff --git a/src/bun.js/bindings/ZigSourceProvider.cpp b/src/bun.js/bindings/ZigSourceProvider.cpp index 021b567551..ff17060d39 100644 --- a/src/bun.js/bindings/ZigSourceProvider.cpp +++ b/src/bun.js/bindings/ZigSourceProvider.cpp @@ -110,7 +110,7 @@ Ref SourceProvider::create( toSourceOrigin(sourceURLString, isBuiltin), sourceURLString.impl(), TextPosition(), sourceType)); - provider->m_cachedBytecode = WTFMove(bytecode); + provider->m_cachedBytecode = WTF::move(bytecode); return provider; } @@ -348,11 +348,11 @@ int SourceProvider::readCache(JSC::VM& vm, const JSC::SourceCode& sourceCode) // if (fileTotalSize == 0) // return 0; - // Ref cachedBytecode = JSC::CachedBytecode::create(WTFMove(mappedFile)); + // Ref cachedBytecode = JSC::CachedBytecode::create(WTF::move(mappedFile)); // // auto key = JSC::sourceCodeKeyForSerializedModule(vm, sourceCode); // // if (isCachedBytecodeStillValid(vm, cachedBytecode.copyRef(), key, // // JSC::SourceCodeType::ModuleType)) { - // m_cachedBytecode = WTFMove(cachedBytecode); + // m_cachedBytecode = WTF::move(cachedBytecode); // return 1; // } else { // FileSystem::truncateFile(fd, 0); diff --git a/src/bun.js/bindings/ZigSourceProvider.h b/src/bun.js/bindings/ZigSourceProvider.h index 2379c883c4..b1d036791d 100644 --- a/src/bun.js/bindings/ZigSourceProvider.h +++ b/src/bun.js/bindings/ZigSourceProvider.h @@ -64,7 +64,7 @@ private: JSC::SourceTaintedOrigin taintedness, const SourceOrigin& sourceOrigin, WTF::String&& sourceURL, const TextPosition& startPosition, JSC::SourceProviderSourceType sourceType) - : Base(sourceOrigin, WTFMove(sourceURL), String(), taintedness, startPosition, sourceType) + : Base(sourceOrigin, WTF::move(sourceURL), String(), taintedness, startPosition, sourceType) , m_globalObject(globalObject) , m_source(sourceImpl) { diff --git a/src/bun.js/bindings/bindings.cpp b/src/bun.js/bindings/bindings.cpp index 0f3b3d07e7..ebaecfbe4d 100644 --- a/src/bun.js/bindings/bindings.cpp +++ b/src/bun.js/bindings/bindings.cpp @@ -722,9 +722,9 @@ bool Bun__deepEquals(JSC::JSGlobalObject* globalObject, JSValue v1, JSValue v2, ASSERT(c2); std::optional isSpecialEqual = specialObjectsDequal(globalObject, gcBuffer, stack, scope, c1, c2); RETURN_IF_EXCEPTION(scope, false); - if (isSpecialEqual.has_value()) return std::move(*isSpecialEqual); + if (isSpecialEqual.has_value()) return WTF::move(*isSpecialEqual); isSpecialEqual = specialObjectsDequal(globalObject, gcBuffer, stack, scope, c2, c1); - if (isSpecialEqual.has_value()) return std::move(*isSpecialEqual); + if (isSpecialEqual.has_value()) return WTF::move(*isSpecialEqual); JSObject* o1 = v1.getObject(); JSObject* o2 = v2.getObject(); @@ -1806,7 +1806,7 @@ WebCore::FetchHeaders* WebCore__FetchHeaders__createFromJS(JSC::JSGlobalObject* // `fill` doesn't set an exception on the VM if it fails, it returns an // ExceptionOr. So we need to check for the exception and, if set, // translate it to JSValue and throw it. - WebCore::propagateException(*lexicalGlobalObject, throwScope, headers->fill(WTFMove(init.value()))); + WebCore::propagateException(*lexicalGlobalObject, throwScope, headers->fill(WTF::move(init.value()))); // If there's an exception, it will be thrown by the above call to fill(). // in that case, let's also free the headers to make memory leaks harder. @@ -1841,7 +1841,7 @@ JSC::EncodedJSValue WebCore__FetchHeaders__clone(WebCore::FetchHeaders* headers, Zig::GlobalObject* globalObject = static_cast(arg1); auto* clone = new WebCore::FetchHeaders({ WebCore::FetchHeaders::Guard::None, {} }); WebCore::propagateException(*arg1, throwScope, clone->fill(*headers)); - return JSC::JSValue::encode(WebCore::toJSNewlyCreated(arg1, globalObject, WTFMove(clone))); + return JSC::JSValue::encode(WebCore::toJSNewlyCreated(arg1, globalObject, WTF::move(clone))); } WebCore::FetchHeaders* WebCore__FetchHeaders__cloneThis(WebCore::FetchHeaders* headers, JSC::JSGlobalObject* lexicalGlobalObject) @@ -1972,7 +1972,7 @@ WebCore::FetchHeaders* WebCore__FetchHeaders__createFromPicoHeaders_(const void* } } - headers->setInternalHeaders(WTFMove(map)); + headers->setInternalHeaders(WTF::move(map)); } return headers; } @@ -1995,12 +1995,12 @@ WebCore::FetchHeaders* WebCore__FetchHeaders__createFromUWS(void* arg1) HTTPHeaderName name; if (WebCore::findHTTPHeaderName(nameView, name)) { - map.add(name, WTFMove(value)); + map.add(name, WTF::move(value)); } else { - map.setUncommonHeader(nameView.toString().isolatedCopy(), WTFMove(value)); + map.setUncommonHeader(nameView.toString().isolatedCopy(), WTF::move(value)); } } - headers->setInternalHeaders(WTFMove(map)); + headers->setInternalHeaders(WTF::move(map)); return headers; } void WebCore__FetchHeaders__deref(WebCore::FetchHeaders* arg0) @@ -2022,7 +2022,7 @@ WebCore::FetchHeaders* WebCore__FetchHeaders__createValueNotJS(JSC::JSGlobalObje auto* headers = new WebCore::FetchHeaders({ WebCore::FetchHeaders::Guard::None, {} }); headers->relaxAdoptionRequirement(); - WebCore::propagateException(*arg0, throwScope, headers->fill(WebCore::FetchHeaders::Init(WTFMove(pairs)))); + WebCore::propagateException(*arg0, throwScope, headers->fill(WebCore::FetchHeaders::Init(WTF::move(pairs)))); if (throwScope.exception()) { headers->deref(); return nullptr; @@ -2043,9 +2043,9 @@ JSC::EncodedJSValue WebCore__FetchHeaders__createValue(JSC::JSGlobalObject* arg0 } Ref headers = WebCore::FetchHeaders::create(); - WebCore::propagateException(*arg0, throwScope, headers->fill(WebCore::FetchHeaders::Init(WTFMove(pairs)))); + WebCore::propagateException(*arg0, throwScope, headers->fill(WebCore::FetchHeaders::Init(WTF::move(pairs)))); - JSValue value = WebCore::toJSNewlyCreated(arg0, static_cast(arg0), WTFMove(headers)); + JSValue value = WebCore::toJSNewlyCreated(arg0, static_cast(arg0), WTF::move(headers)); JSFetchHeaders* fetchHeaders = jsCast(value); fetchHeaders->computeMemoryCost(); @@ -2908,7 +2908,7 @@ JSC::EncodedJSValue JSC__JSModuleLoader__evaluate(JSC::JSGlobalObject* globalObj JSC::SourceCode sourceCode = JSC::makeSource( src, JSC::SourceOrigin { origin }, JSC::SourceTaintedOrigin::Untainted, origin.fileSystemPath(), WTF::TextPosition(), JSC::SourceProviderSourceType::Module); - globalObject->moduleLoader()->provideFetch(globalObject, jsString(vm, origin.fileSystemPath()), WTFMove(sourceCode)); + globalObject->moduleLoader()->provideFetch(globalObject, jsString(vm, origin.fileSystemPath()), WTF::move(sourceCode)); auto* promise = JSC::importModule(globalObject, JSC::Identifier::fromString(vm, origin.fileSystemPath()), JSValue(jsString(vm, referrer.fileSystemPath())), JSValue(), JSValue()); auto scope = DECLARE_THROW_SCOPE(vm); @@ -3138,8 +3138,8 @@ JSC::EncodedJSValue JSC__JSGlobalObject__createAggregateError(JSC::JSGlobalObjec auto& vm = JSC::getVM(globalObject); auto scope = DECLARE_THROW_SCOPE(vm); - JSC::JSValue message = JSC::jsOwnedString(vm, Zig::toString(*arg3)); - JSC::JSValue options = JSC::jsUndefined(); + WTF::String message = Zig::toString(*arg3); + JSC::JSValue cause = JSC::jsUndefined(); JSC::JSArray* array = nullptr; { JSC::ObjectInitializationScope initializationScope(vm); @@ -3160,14 +3160,14 @@ JSC::EncodedJSValue JSC__JSGlobalObject__createAggregateError(JSC::JSGlobalObjec JSC::Structure* errorStructure = globalObject->errorStructure(JSC::ErrorType::AggregateError); - RELEASE_AND_RETURN(scope, JSC::JSValue::encode(JSC::createAggregateError(globalObject, vm, errorStructure, array, message, options, nullptr, JSC::TypeNothing, false))); + RELEASE_AND_RETURN(scope, JSC::JSValue::encode(JSC::createAggregateError(vm, errorStructure, array, message, cause, nullptr, JSC::TypeNothing, false))); } -JSC::EncodedJSValue JSC__JSGlobalObject__createAggregateErrorWithArray(JSC::JSGlobalObject* global, JSC::JSArray* array, BunString message, JSValue options) +JSC::EncodedJSValue JSC__JSGlobalObject__createAggregateErrorWithArray(JSC::JSGlobalObject* global, JSC::JSArray* array, BunString message, JSValue cause) { auto& vm = JSC::getVM(global); JSC::Structure* errorStructure = global->errorStructure(JSC::ErrorType::AggregateError); WTF::String messageString = message.toWTFString(); - return JSC::JSValue::encode(JSC::createAggregateError(global, vm, errorStructure, array, JSC::jsString(vm, messageString), options, nullptr, JSC::TypeNothing, false)); + return JSC::JSValue::encode(JSC::createAggregateError(vm, errorStructure, array, messageString, cause, nullptr, JSC::TypeNothing, false)); } JSC::EncodedJSValue ZigString__toAtomicValue(const ZigString* arg0, JSC::JSGlobalObject* arg1) @@ -3178,11 +3178,11 @@ JSC::EncodedJSValue ZigString__toAtomicValue(const ZigString* arg0, JSC::JSGloba if (isTaggedUTF16Ptr(arg0->ptr)) { if (auto impl = WTF::AtomStringImpl::lookUp(std::span { reinterpret_cast(untag(arg0->ptr)), arg0->len })) { - return JSC::JSValue::encode(JSC::jsString(arg1->vm(), WTF::String(WTFMove(impl)))); + return JSC::JSValue::encode(JSC::jsString(arg1->vm(), WTF::String(WTF::move(impl)))); } } else { if (auto impl = WTF::AtomStringImpl::lookUp(std::span { untag(arg0->ptr), arg0->len })) { - return JSC::JSValue::encode(JSC::jsString(arg1->vm(), WTF::String(WTFMove(impl)))); + return JSC::JSValue::encode(JSC::jsString(arg1->vm(), WTF::String(WTF::move(impl)))); } } @@ -3203,7 +3203,7 @@ JSC::EncodedJSValue ZigString__toExternalU16(const uint16_t* arg0, size_t len, J auto ref = String(ExternalStringImpl::create({ reinterpret_cast(arg0), len }, reinterpret_cast(const_cast(arg0)), free_global_string)); - return JSC::JSValue::encode(JSC::jsString(global->vm(), WTFMove(ref))); + return JSC::JSValue::encode(JSC::jsString(global->vm(), WTF::move(ref))); } // This must be a globally allocated string @@ -3215,10 +3215,10 @@ JSC::EncodedJSValue ZigString__toExternalU16(const uint16_t* arg0, size_t len, J } if (Zig::isTaggedUTF16Ptr(str.ptr)) { auto ref = String(ExternalStringImpl::create({ reinterpret_cast(Zig::untag(str.ptr)), str.len }, Zig::untagVoid(str.ptr), free_global_string)); - return JSC::JSValue::encode(JSC::jsString(arg1->vm(), WTFMove(ref))); + return JSC::JSValue::encode(JSC::jsString(arg1->vm(), WTF::move(ref))); } else { auto ref = String(ExternalStringImpl::create({ Zig::untag(str.ptr), str.len }, Zig::untagVoid(str.ptr), free_global_string)); - return JSC::JSValue::encode(JSC::jsString(arg1->vm(), WTFMove(ref))); + return JSC::JSValue::encode(JSC::jsString(arg1->vm(), WTF::move(ref))); } } @@ -3525,7 +3525,7 @@ void JSC__JSPromise__rejectOnNextTickWithHandled(JSC::JSPromise* promise, JSC::J } JSC::QueuedTask task { nullptr, JSC::InternalMicrotask::BunPerformMicrotaskJob, globalObject, microtaskFunction, rejectPromiseFunction, globalObject->m_asyncContextData.get()->getInternalField(0), promise, value }; - globalObject->vm().queueMicrotask(WTFMove(task)); + globalObject->vm().queueMicrotask(WTF::move(task)); RETURN_IF_EXCEPTION(scope, ); } } @@ -5412,8 +5412,8 @@ extern "C" void JSC__JSGlobalObject__queueMicrotaskJob(JSC::JSGlobalObject* arg0 #endif - JSC::QueuedTask task { nullptr, JSC::InternalMicrotask::BunPerformMicrotaskJob, globalObject, microTaskFunction, WTFMove(microtaskArgs[0]), WTFMove(microtaskArgs[1]), WTFMove(microtaskArgs[2]), WTFMove(microtaskArgs[3]) }; - globalObject->vm().queueMicrotask(WTFMove(task)); + JSC::QueuedTask task { nullptr, JSC::InternalMicrotask::BunPerformMicrotaskJob, globalObject, microTaskFunction, WTF::move(microtaskArgs[0]), WTF::move(microtaskArgs[1]), WTF::move(microtaskArgs[2]), WTF::move(microtaskArgs[3]) }; + globalObject->vm().queueMicrotask(WTF::move(task)); } extern "C" WebCore::AbortSignal* WebCore__AbortSignal__new(JSC::JSGlobalObject* globalObject) @@ -5430,7 +5430,7 @@ extern "C" JSC::EncodedJSValue WebCore__AbortSignal__create(JSC::JSGlobalObject* auto* context = thisObject->scriptExecutionContext(); auto abortSignal = WebCore::AbortSignal::create(context); - return JSValue::encode(toJSNewlyCreated>(*globalObject, *jsCast(globalObject), WTFMove(abortSignal))); + return JSValue::encode(toJSNewlyCreated>(*globalObject, *jsCast(globalObject), WTF::move(abortSignal))); } extern "C" JSC::EncodedJSValue WebCore__AbortSignal__toJS(WebCore::AbortSignal* arg0, JSC::JSGlobalObject* globalObject) { @@ -5697,15 +5697,15 @@ CPP_DECL JSC::EncodedJSValue WebCore__DOMFormData__createFromURLQuery(JSC::JSGlo auto scope = DECLARE_THROW_SCOPE(globalObject->vm()); return Bun::ERR::STRING_TOO_LONG(scope, globalObject); } - auto formData = DOMFormData::create(globalObject->scriptExecutionContext(), WTFMove(str)); - return JSValue::encode(toJSNewlyCreated(arg0, globalObject, WTFMove(formData))); + auto formData = DOMFormData::create(globalObject->scriptExecutionContext(), WTF::move(str)); + return JSValue::encode(toJSNewlyCreated(arg0, globalObject, WTF::move(formData))); } CPP_DECL JSC::EncodedJSValue WebCore__DOMFormData__create(JSC::JSGlobalObject* arg0) { Zig::GlobalObject* globalObject = static_cast(arg0); auto formData = DOMFormData::create(globalObject->scriptExecutionContext()); - return JSValue::encode(toJSNewlyCreated(arg0, globalObject, WTFMove(formData))); + return JSValue::encode(toJSNewlyCreated(arg0, globalObject, WTF::move(formData))); } CPP_DECL WebCore::DOMFormData* WebCore__DOMFormData__fromJS(JSC::EncodedJSValue JSValue1) diff --git a/src/bun.js/bindings/helpers.h b/src/bun.js/bindings/helpers.h index 4e69126a00..16411881e0 100644 --- a/src/bun.js/bindings/helpers.h +++ b/src/bun.js/bindings/helpers.h @@ -208,14 +208,14 @@ static const WTF::String toStringCopy(ZigString str) return WTF::String(); } memcpy(out.data(), untag(str.ptr), str.len * sizeof(char16_t)); - return WTF::String(WTFMove(impl)); + return WTF::String(WTF::move(impl)); } else { std::span out; auto impl = WTF::StringImpl::tryCreateUninitialized(str.len, out); if (!impl) [[unlikely]] return WTF::String(); memcpy(out.data(), untag(str.ptr), str.len * sizeof(Latin1Character)); - return WTF::String(WTFMove(impl)); + return WTF::String(WTF::move(impl)); } } diff --git a/src/bun.js/bindings/napi.cpp b/src/bun.js/bindings/napi.cpp index c68618adf3..447287be0e 100644 --- a/src/bun.js/bindings/napi.cpp +++ b/src/bun.js/bindings/napi.cpp @@ -606,7 +606,7 @@ extern "C" napi_status napi_set_named_property(napi_env env, napi_value object, JSC::EnsureStillAliveScope ensureAlive2(target); auto nameStr = WTF::String::fromUTF8({ utf8name, strlen(utf8name) }); - auto name = JSC::PropertyName(JSC::Identifier::fromString(vm, WTFMove(nameStr))); + auto name = JSC::PropertyName(JSC::Identifier::fromString(vm, WTF::move(nameStr))); PutPropertySlot slot(target, false); target->putInline(globalObject, name, jsValue, slot); @@ -632,7 +632,7 @@ extern "C" napi_status napi_create_arraybuffer(napi_env env, return napi_set_last_error(env, napi_generic_failure); } - auto* jsArrayBuffer = JSC::JSArrayBuffer::create(vm, globalObject->arrayBufferStructure(), WTFMove(arrayBuffer)); + auto* jsArrayBuffer = JSC::JSArrayBuffer::create(vm, globalObject->arrayBufferStructure(), WTF::move(arrayBuffer)); NAPI_RETURN_IF_EXCEPTION(env); if (data && jsArrayBuffer->impl()) [[likely]] { @@ -1451,7 +1451,7 @@ node_api_create_external_string_latin1(napi_env env, }); Zig::GlobalObject* globalObject = toJS(env); - JSString* out = JSC::jsString(JSC::getVM(globalObject), WTF::String(WTFMove(impl))); + JSString* out = JSC::jsString(JSC::getVM(globalObject), WTF::String(WTF::move(impl))); ensureStillAliveHere(out); *result = toNapi(out, globalObject); ensureStillAliveHere(out); @@ -1487,7 +1487,7 @@ node_api_create_external_string_utf16(napi_env env, }); Zig::GlobalObject* globalObject = toJS(env); - JSString* out = JSC::jsString(JSC::getVM(globalObject), WTF::String(WTFMove(impl))); + JSString* out = JSC::jsString(JSC::getVM(globalObject), WTF::String(WTF::move(impl))); ensureStillAliveHere(out); *result = toNapi(out, globalObject); ensureStillAliveHere(out); @@ -1714,27 +1714,27 @@ static JSC::JSArrayBufferView* createArrayBufferView( Structure* structure = globalObject->typedArrayStructure(getTypedArrayTypeFromNAPI(type), arrayBuffer->isResizableOrGrowableShared()); switch (type) { case napi_int8_array: - return JSC::JSInt8Array::create(globalObject, structure, WTFMove(arrayBuffer), byteOffset, length); + return JSC::JSInt8Array::create(globalObject, structure, WTF::move(arrayBuffer), byteOffset, length); case napi_uint8_array: - return JSC::JSUint8Array::create(globalObject, structure, WTFMove(arrayBuffer), byteOffset, length); + return JSC::JSUint8Array::create(globalObject, structure, WTF::move(arrayBuffer), byteOffset, length); case napi_uint8_clamped_array: - return JSC::JSUint8ClampedArray::create(globalObject, structure, WTFMove(arrayBuffer), byteOffset, length); + return JSC::JSUint8ClampedArray::create(globalObject, structure, WTF::move(arrayBuffer), byteOffset, length); case napi_int16_array: - return JSC::JSInt16Array::create(globalObject, structure, WTFMove(arrayBuffer), byteOffset, length); + return JSC::JSInt16Array::create(globalObject, structure, WTF::move(arrayBuffer), byteOffset, length); case napi_uint16_array: - return JSC::JSUint16Array::create(globalObject, structure, WTFMove(arrayBuffer), byteOffset, length); + return JSC::JSUint16Array::create(globalObject, structure, WTF::move(arrayBuffer), byteOffset, length); case napi_int32_array: - return JSC::JSInt32Array::create(globalObject, structure, WTFMove(arrayBuffer), byteOffset, length); + return JSC::JSInt32Array::create(globalObject, structure, WTF::move(arrayBuffer), byteOffset, length); case napi_uint32_array: - return JSC::JSUint32Array::create(globalObject, structure, WTFMove(arrayBuffer), byteOffset, length); + return JSC::JSUint32Array::create(globalObject, structure, WTF::move(arrayBuffer), byteOffset, length); case napi_float32_array: - return JSC::JSFloat32Array::create(globalObject, structure, WTFMove(arrayBuffer), byteOffset, length); + return JSC::JSFloat32Array::create(globalObject, structure, WTF::move(arrayBuffer), byteOffset, length); case napi_float64_array: - return JSC::JSFloat64Array::create(globalObject, structure, WTFMove(arrayBuffer), byteOffset, length); + return JSC::JSFloat64Array::create(globalObject, structure, WTF::move(arrayBuffer), byteOffset, length); case napi_bigint64_array: - return JSC::JSBigInt64Array::create(globalObject, structure, WTFMove(arrayBuffer), byteOffset, length); + return JSC::JSBigInt64Array::create(globalObject, structure, WTF::move(arrayBuffer), byteOffset, length); case napi_biguint64_array: - return JSC::JSBigUint64Array::create(globalObject, structure, WTFMove(arrayBuffer), byteOffset, length); + return JSC::JSBigUint64Array::create(globalObject, structure, WTF::move(arrayBuffer), byteOffset, length); default: ASSERT_NOT_REACHED_WITH_MESSAGE("Unexpected napi_typedarray_type"); } @@ -2031,7 +2031,7 @@ extern "C" napi_status napi_create_external_buffer(napi_env env, size_t length, // TODO: is there a way to create a detached uint8 array? auto arrayBuffer = JSC::ArrayBuffer::createUninitialized(0, 1); - auto* buffer = JSC::JSUint8Array::create(globalObject, subclassStructure, WTFMove(arrayBuffer), 0, 0); + auto* buffer = JSC::JSUint8Array::create(globalObject, subclassStructure, WTF::move(arrayBuffer), 0, 0); NAPI_RETURN_IF_EXCEPTION(env); buffer->existingBuffer()->detach(vm); @@ -2048,7 +2048,7 @@ extern "C" napi_status napi_create_external_buffer(napi_env env, size_t length, // do nothing })); - auto* buffer = JSC::JSUint8Array::create(globalObject, subclassStructure, WTFMove(arrayBuffer), 0, length); + auto* buffer = JSC::JSUint8Array::create(globalObject, subclassStructure, WTF::move(arrayBuffer), 0, length); NAPI_RETURN_IF_EXCEPTION(env); // setup finalizer after creating the array. if it throws callers of napi_create_external_buffer are expected @@ -2076,7 +2076,7 @@ extern "C" napi_status napi_create_external_arraybuffer(napi_env env, void* exte env->doFinalizer(finalize_cb, p, finalize_hint); })); - auto* buffer = JSC::JSArrayBuffer::create(vm, globalObject->arrayBufferStructure(ArrayBufferSharingMode::Default), WTFMove(arrayBuffer)); + auto* buffer = JSC::JSArrayBuffer::create(vm, globalObject->arrayBufferStructure(ArrayBufferSharingMode::Default), WTF::move(arrayBuffer)); *result = toNapi(buffer, globalObject); NAPI_RETURN_SUCCESS(env); diff --git a/src/bun.js/bindings/napi.h b/src/bun.js/bindings/napi.h index 56346cd019..30efadbcdd 100644 --- a/src/bun.js/bindings/napi.h +++ b/src/bun.js/bindings/napi.h @@ -669,7 +669,7 @@ public: NapiRef(Ref&& env, uint32_t count, Bun::NapiFinalizer finalizer) : env(env) , globalObject(JSC::Weak(env->globalObject())) - , finalizer(WTFMove(finalizer)) + , finalizer(WTF::move(finalizer)) , refCount(count) { } diff --git a/src/bun.js/bindings/ncrypto.cpp b/src/bun.js/bindings/ncrypto.cpp index 446ee74a64..e1e747ed78 100644 --- a/src/bun.js/bindings/ncrypto.cpp +++ b/src/bun.js/bindings/ncrypto.cpp @@ -206,7 +206,7 @@ DataPointer& DataPointer::operator=(DataPointer&& other) noexcept { if (this == &other) return *this; this->~DataPointer(); - return *new (this) DataPointer(WTFMove(other)); + return *new (this) DataPointer(WTF::move(other)); } DataPointer::~DataPointer() @@ -337,7 +337,7 @@ BignumPointer& BignumPointer::operator=(BignumPointer&& other) noexcept { if (this == &other) return *this; this->~BignumPointer(); - return *new (this) BignumPointer(WTFMove(other)); + return *new (this) BignumPointer(WTF::move(other)); } BignumPointer::~BignumPointer() @@ -515,7 +515,7 @@ BignumPointer BignumPointer::NewPrime(const PrimeConfig& params, PrimeCheckCallback cb) { BignumPointer prime(BN_new()); - if (!prime || !prime.generate(params, WTFMove(cb))) { + if (!prime || !prime.generate(params, WTF::move(cb))) { return {}; } return prime; @@ -1039,7 +1039,7 @@ X509Pointer& X509Pointer::operator=(X509Pointer&& other) noexcept { if (this == &other) return *this; this->~X509Pointer(); - return *new (this) X509Pointer(WTFMove(other)); + return *new (this) X509Pointer(WTF::move(other)); } X509Pointer::~X509Pointer() @@ -1276,7 +1276,7 @@ X509View::CheckMatch X509View::checkHost(const std::span host, case 1: { if (peername != nullptr) { DataPointer name(peername, strlen(peername)); - if (peerName != nullptr) *peerName = WTFMove(name); + if (peerName != nullptr) *peerName = WTF::move(name); } return CheckMatch::MATCH; } @@ -1384,11 +1384,11 @@ Result X509Pointer::Parse( X509Pointer pem( PEM_read_bio_X509_AUX(bio.get(), nullptr, NoPasswordCallback, nullptr)); - if (pem) return Result(WTFMove(pem)); + if (pem) return Result(WTF::move(pem)); BIO_reset(bio.get()); X509Pointer der(d2i_X509_bio(bio.get(), nullptr)); - if (der) return Result(WTFMove(der)); + if (der) return Result(WTF::move(der)); return Result(ERR_get_error()); } @@ -1537,7 +1537,7 @@ BIOPointer& BIOPointer::operator=(BIOPointer&& other) noexcept { if (this == &other) return *this; this->~BIOPointer(); - return *new (this) BIOPointer(WTFMove(other)); + return *new (this) BIOPointer(WTF::move(other)); } BIOPointer::~BIOPointer() @@ -1638,7 +1638,7 @@ DHPointer& DHPointer::operator=(DHPointer&& other) noexcept { if (this == &other) return *this; this->~DHPointer(); - return *new (this) DHPointer(WTFMove(other)); + return *new (this) DHPointer(WTF::move(other)); } DHPointer::~DHPointer() @@ -1695,7 +1695,7 @@ DHPointer DHPointer::FromGroup(const WTF::StringView name, auto generator = GetStandardGenerator(); if (!generator) return {}; // Unable to create the generator. - return New(WTFMove(group), WTFMove(generator)); + return New(WTF::move(group), WTF::move(generator)); } DHPointer DHPointer::New(BignumPointer&& p, BignumPointer&& g) @@ -2131,7 +2131,7 @@ EVPKeyPointer::PrivateKeyEncodingConfig::PrivateKeyEncodingConfig( auto& otherPassphrase = other.passphrase.value(); auto newPassphrase = DataPointer::Alloc(otherPassphrase.size()); memcpy(newPassphrase.get(), otherPassphrase.get(), otherPassphrase.size()); - passphrase = WTFMove(newPassphrase); + passphrase = WTF::move(newPassphrase); } } @@ -2209,7 +2209,7 @@ EVPKeyPointer& EVPKeyPointer::operator=(EVPKeyPointer&& other) noexcept { if (this == &other) return *this; this->~EVPKeyPointer(); - return *new (this) EVPKeyPointer(WTFMove(other)); + return *new (this) EVPKeyPointer(WTF::move(other)); } EVPKeyPointer::~EVPKeyPointer() @@ -2361,7 +2361,7 @@ EVPKeyPointer::ParseKeyResult TryParsePublicKeyInner(const BIOPointer& bp, EVPKeyPointer pkey(parse(&p, der_len)); if (!pkey) return EVPKeyPointer::ParseKeyResult(EVPKeyPointer::PKParseError::FAILED); - return EVPKeyPointer::ParseKeyResult(WTFMove(pkey)); + return EVPKeyPointer::ParseKeyResult(WTF::move(pkey)); } constexpr bool IsASN1Sequence(const unsigned char* data, @@ -2523,7 +2523,7 @@ EVPKeyPointer::ParseKeyResult EVPKeyPointer::TryParsePrivateKey( return ParseKeyResult(PKParseError::FAILED, err); } if (!pkey) return ParseKeyResult(PKParseError::FAILED); - return ParseKeyResult(WTFMove(pkey)); + return ParseKeyResult(WTF::move(pkey)); }; auto bio = BIOPointer::New(buffer); @@ -2865,7 +2865,7 @@ SSLPointer& SSLPointer::operator=(SSLPointer&& other) noexcept { if (this == &other) return *this; this->~SSLPointer(); - return *new (this) SSLPointer(WTFMove(other)); + return *new (this) SSLPointer(WTF::move(other)); } SSLPointer::~SSLPointer() @@ -3092,7 +3092,7 @@ SSLCtxPointer& SSLCtxPointer::operator=(SSLCtxPointer&& other) noexcept { if (this == &other) return *this; this->~SSLCtxPointer(); - return *new (this) SSLCtxPointer(WTFMove(other)); + return *new (this) SSLCtxPointer(WTF::move(other)); } SSLCtxPointer::~SSLCtxPointer() @@ -3400,7 +3400,7 @@ CipherCtxPointer& CipherCtxPointer::operator=( { if (this == &other) return *this; this->~CipherCtxPointer(); - return *new (this) CipherCtxPointer(WTFMove(other)); + return *new (this) CipherCtxPointer(WTF::move(other)); } CipherCtxPointer::~CipherCtxPointer() @@ -4470,7 +4470,7 @@ void Cipher::ForEach(Cipher::CipherNameCallback&& callback) { ClearErrorOnReturn clearErrorOnReturn; CipherCallbackContext context; - context.cb = WTFMove(callback); + context.cb = WTF::move(callback); EVP_CIPHER_do_all_sorted( #if OPENSSL_VERSION_MAJOR >= 3 @@ -4885,7 +4885,7 @@ std::pair X509Name::Iterator::operator*() const int value_str_size = ASN1_STRING_to_UTF8(&value_str, value); return { - WTFMove(name_str), + WTF::move(name_str), WTF::String::fromUTF8(std::span(value_str, value_str_size)), }; } diff --git a/src/bun.js/bindings/ncrypto.h b/src/bun.js/bindings/ncrypto.h index 3a5e2307f5..358b89d58e 100644 --- a/src/bun.js/bindings/ncrypto.h +++ b/src/bun.js/bindings/ncrypto.h @@ -182,13 +182,13 @@ struct Result final { std::optional openssl_error = std::nullopt; Result(T&& value) : has_value(true) - , value(WTFMove(value)) + , value(WTF::move(value)) { } Result(E&& error, std::optional openssl_error = std::nullopt) : has_value(false) - , error(WTFMove(error)) - , openssl_error(WTFMove(openssl_error)) + , error(WTF::move(error)) + , openssl_error(WTF::move(openssl_error)) { } inline operator bool() const { return has_value; } diff --git a/src/bun.js/bindings/node/crypto/CryptoDhJob.cpp b/src/bun.js/bindings/node/crypto/CryptoDhJob.cpp index e0f0ea144a..b6f50aa61f 100644 --- a/src/bun.js/bindings/node/crypto/CryptoDhJob.cpp +++ b/src/bun.js/bindings/node/crypto/CryptoDhJob.cpp @@ -64,7 +64,7 @@ void DhJobCtx::runFromJS(JSGlobalObject* lexicalGlobalObject, JSValue callback) extern "C" DhJob* Bun__DhJob__create(JSGlobalObject* globalObject, DhJobCtx* ctx, EncodedJSValue callback); DhJob* DhJob::create(JSGlobalObject* globalObject, DhJobCtx&& ctx, JSValue callback) { - DhJobCtx* ctxCopy = new DhJobCtx(WTFMove(ctx)); + DhJobCtx* ctxCopy = new DhJobCtx(WTF::move(ctx)); return Bun__DhJob__create(globalObject, ctxCopy, JSValue::encode(callback)); } @@ -77,7 +77,7 @@ void DhJob::schedule() extern "C" void Bun__DhJob__createAndSchedule(JSGlobalObject* globalObject, DhJobCtx* ctx, EncodedJSValue callback); void DhJob::createAndSchedule(JSGlobalObject* globalObject, DhJobCtx&& ctx, JSValue callback) { - DhJobCtx* ctxCopy = new DhJobCtx(WTFMove(ctx)); + DhJobCtx* ctxCopy = new DhJobCtx(WTF::move(ctx)); Bun__DhJob__createAndSchedule(globalObject, ctxCopy, JSValue::encode(callback)); } @@ -152,7 +152,7 @@ JSC_DEFINE_HOST_FUNCTION(jsDiffieHellman, (JSGlobalObject * lexicalGlobalObject, RETURN_IF_EXCEPTION(scope, {}); if (!callbackValue.isUndefined()) { - DhJob::createAndSchedule(lexicalGlobalObject, WTFMove(*ctx), callbackValue); + DhJob::createAndSchedule(lexicalGlobalObject, WTF::move(*ctx), callbackValue); return JSValue::encode(jsUndefined()); } diff --git a/src/bun.js/bindings/node/crypto/CryptoDhJob.h b/src/bun.js/bindings/node/crypto/CryptoDhJob.h index cb2f04e83a..575597d5e5 100644 --- a/src/bun.js/bindings/node/crypto/CryptoDhJob.h +++ b/src/bun.js/bindings/node/crypto/CryptoDhJob.h @@ -13,15 +13,15 @@ struct DhJobCtx { public: DhJobCtx(RefPtr&& privateKey, RefPtr&& publicKey) - : m_privateKey(WTFMove(privateKey)) - , m_publicKey(WTFMove(publicKey)) + : m_privateKey(WTF::move(privateKey)) + , m_publicKey(WTF::move(publicKey)) { } DhJobCtx(DhJobCtx&& other) - : m_privateKey(WTFMove(other.m_privateKey)) - , m_publicKey(WTFMove(other.m_publicKey)) - , m_result(WTFMove(other.m_result)) + : m_privateKey(WTF::move(other.m_privateKey)) + , m_publicKey(WTF::move(other.m_publicKey)) + , m_result(WTF::move(other.m_result)) { } diff --git a/src/bun.js/bindings/node/crypto/CryptoGenDhKeyPair.cpp b/src/bun.js/bindings/node/crypto/CryptoGenDhKeyPair.cpp index b73602daf1..58cb7a6192 100644 --- a/src/bun.js/bindings/node/crypto/CryptoGenDhKeyPair.cpp +++ b/src/bun.js/bindings/node/crypto/CryptoGenDhKeyPair.cpp @@ -33,7 +33,7 @@ extern "C" void Bun__DhKeyPairJobCtx__runFromJS(DhKeyPairJobCtx* ctx, JSGlobalOb extern "C" DhKeyPairJob* Bun__DhKeyPairJob__create(JSGlobalObject* globalObject, DhKeyPairJobCtx* ctx, EncodedJSValue callback); DhKeyPairJob* DhKeyPairJob::create(JSGlobalObject* globalObject, DhKeyPairJobCtx&& ctx, JSValue callback) { - DhKeyPairJobCtx* ctxCopy = new DhKeyPairJobCtx(WTFMove(ctx)); + DhKeyPairJobCtx* ctxCopy = new DhKeyPairJobCtx(WTF::move(ctx)); return Bun__DhKeyPairJob__create(globalObject, ctxCopy, JSValue::encode(callback)); } @@ -46,7 +46,7 @@ void DhKeyPairJob::schedule() extern "C" void Bun__DhKeyPairJob__createAndSchedule(JSGlobalObject* globalObject, DhKeyPairJobCtx* ctx, EncodedJSValue callback); void DhKeyPairJob::createAndSchedule(JSGlobalObject* globalObject, DhKeyPairJobCtx&& ctx, JSValue callback) { - DhKeyPairJobCtx* ctxCopy = new DhKeyPairJobCtx(WTFMove(ctx)); + DhKeyPairJobCtx* ctxCopy = new DhKeyPairJobCtx(WTF::move(ctx)); Bun__DhKeyPairJob__createAndSchedule(globalObject, ctxCopy, JSValue::encode(callback)); } @@ -61,13 +61,13 @@ ncrypto::EVPKeyCtxPointer DhKeyPairJobCtx::setup() m_opensslError = ERR_get_error(); return {}; } - auto dh = ncrypto::DHPointer::New(WTFMove(prime), WTFMove(bnG)); + auto dh = ncrypto::DHPointer::New(WTF::move(prime), WTF::move(bnG)); if (!dh) { m_opensslError = ERR_get_error(); return {}; } - keyParams = ncrypto::EVPKeyPointer::NewDH(WTFMove(dh)); + keyParams = ncrypto::EVPKeyPointer::NewDH(WTF::move(dh)); } else if (std::get_if(&m_prime)) { auto paramCtx = ncrypto::EVPKeyCtxPointer::NewFromID(EVP_PKEY_DH); @@ -139,7 +139,7 @@ std::optional DhKeyPairJobCtx::fromJS(JSGlobalObject* globalObj } return DhKeyPairJobCtx( - WTFMove(group), + WTF::move(group), config); } diff --git a/src/bun.js/bindings/node/crypto/CryptoGenDhKeyPair.h b/src/bun.js/bindings/node/crypto/CryptoGenDhKeyPair.h index 845cb4b90c..9ea6fa7cea 100644 --- a/src/bun.js/bindings/node/crypto/CryptoGenDhKeyPair.h +++ b/src/bun.js/bindings/node/crypto/CryptoGenDhKeyPair.h @@ -12,7 +12,7 @@ struct DhKeyPairJobCtx : KeyPairJobCtx { public: DhKeyPairJobCtx(ncrypto::DHPointer&& group, const KeyEncodingConfig& config) : KeyPairJobCtx(config.publicKeyEncoding, config.privateKeyEncoding) - , m_prime(WTFMove(group)) + , m_prime(WTF::move(group)) { } @@ -25,7 +25,7 @@ public: DhKeyPairJobCtx(ncrypto::BignumPointer&& prime, const KeyEncodingConfig& config) : KeyPairJobCtx(config.publicKeyEncoding, config.privateKeyEncoding) - , m_prime(WTFMove(prime)) + , m_prime(WTF::move(prime)) { } diff --git a/src/bun.js/bindings/node/crypto/CryptoGenDsaKeyPair.cpp b/src/bun.js/bindings/node/crypto/CryptoGenDsaKeyPair.cpp index 2eb41bae02..23b38a6f4a 100644 --- a/src/bun.js/bindings/node/crypto/CryptoGenDsaKeyPair.cpp +++ b/src/bun.js/bindings/node/crypto/CryptoGenDsaKeyPair.cpp @@ -32,7 +32,7 @@ extern "C" void Bun__DsaKeyPairJobCtx__runFromJS(DsaKeyPairJobCtx* ctx, JSGlobal extern "C" DsaKeyPairJob* Bun__DsaKeyPairJob__create(JSGlobalObject* globalObject, DsaKeyPairJobCtx* ctx, EncodedJSValue callback); DsaKeyPairJob* DsaKeyPairJob::create(JSGlobalObject* globalObject, DsaKeyPairJobCtx&& ctx, JSValue callback) { - DsaKeyPairJobCtx* ctxCopy = new DsaKeyPairJobCtx(WTFMove(ctx)); + DsaKeyPairJobCtx* ctxCopy = new DsaKeyPairJobCtx(WTF::move(ctx)); return Bun__DsaKeyPairJob__create(globalObject, ctxCopy, JSValue::encode(callback)); } @@ -45,7 +45,7 @@ void DsaKeyPairJob::schedule() extern "C" void Bun__DsaKeyPairJob__createAndSchedule(JSGlobalObject* globalObject, DsaKeyPairJobCtx* ctx, EncodedJSValue callback); void DsaKeyPairJob::createAndSchedule(JSGlobalObject* globalObject, DsaKeyPairJobCtx&& ctx, JSValue callback) { - DsaKeyPairJobCtx* ctxCopy = new DsaKeyPairJobCtx(WTFMove(ctx)); + DsaKeyPairJobCtx* ctxCopy = new DsaKeyPairJobCtx(WTF::move(ctx)); Bun__DsaKeyPairJob__createAndSchedule(globalObject, ctxCopy, JSValue::encode(callback)); } diff --git a/src/bun.js/bindings/node/crypto/CryptoGenEcKeyPair.cpp b/src/bun.js/bindings/node/crypto/CryptoGenEcKeyPair.cpp index 854a55457c..17614c93ee 100644 --- a/src/bun.js/bindings/node/crypto/CryptoGenEcKeyPair.cpp +++ b/src/bun.js/bindings/node/crypto/CryptoGenEcKeyPair.cpp @@ -33,7 +33,7 @@ extern "C" void Bun__EcKeyPairJobCtx__runFromJS(EcKeyPairJobCtx* ctx, JSGlobalOb extern "C" EcKeyPairJob* Bun__EcKeyPairJob__create(JSGlobalObject* globalObject, EcKeyPairJobCtx* ctx, EncodedJSValue callback); EcKeyPairJob* EcKeyPairJob::create(JSGlobalObject* globalObject, EcKeyPairJobCtx&& ctx, JSValue callback) { - EcKeyPairJobCtx* ctxCopy = new EcKeyPairJobCtx(WTFMove(ctx)); + EcKeyPairJobCtx* ctxCopy = new EcKeyPairJobCtx(WTF::move(ctx)); return Bun__EcKeyPairJob__create(globalObject, ctxCopy, JSValue::encode(callback)); } @@ -46,7 +46,7 @@ void EcKeyPairJob::schedule() extern "C" void Bun__EcKeyPairJob__createAndSchedule(JSGlobalObject* globalObject, EcKeyPairJobCtx* ctx, EncodedJSValue callback); void EcKeyPairJob::createAndSchedule(JSGlobalObject* globalObject, EcKeyPairJobCtx&& ctx, JSValue callback) { - EcKeyPairJobCtx* ctxCopy = new EcKeyPairJobCtx(WTFMove(ctx)); + EcKeyPairJobCtx* ctxCopy = new EcKeyPairJobCtx(WTF::move(ctx)); Bun__EcKeyPairJob__createAndSchedule(globalObject, ctxCopy, JSValue::encode(callback)); } diff --git a/src/bun.js/bindings/node/crypto/CryptoGenKeyPair.cpp b/src/bun.js/bindings/node/crypto/CryptoGenKeyPair.cpp index 004168bad7..a551f1fbba 100644 --- a/src/bun.js/bindings/node/crypto/CryptoGenKeyPair.cpp +++ b/src/bun.js/bindings/node/crypto/CryptoGenKeyPair.cpp @@ -26,7 +26,7 @@ void KeyPairJobCtx::runTask(JSGlobalObject* globalObject, ncrypto::EVPKeyCtxPoin } ncrypto::EVPKeyPointer key = ncrypto::EVPKeyPointer(pkey); - m_keyObj = KeyObject::create(CryptoKeyType::Private, WTFMove(key)); + m_keyObj = KeyObject::create(CryptoKeyType::Private, WTF::move(key)); } void KeyPairJobCtx::runFromJS(JSGlobalObject* lexicalGlobalObject, JSValue callback) @@ -150,21 +150,21 @@ JSC_DEFINE_HOST_FUNCTION(jsGenerateKeyPair, (JSC::JSGlobalObject * globalObject, std::optional ctx = RsaKeyPairJobCtx::fromJS(globalObject, scope, typeView, optionsValue, config); EXCEPTION_ASSERT(ctx.has_value() == !scope.exception()); RETURN_IF_EXCEPTION(scope, {}); - RsaKeyPairJob::createAndSchedule(globalObject, WTFMove(*ctx), callbackValue); + RsaKeyPairJob::createAndSchedule(globalObject, WTF::move(*ctx), callbackValue); return JSValue::encode(jsUndefined()); } if (typeView == "dsa"_s) { std::optional ctx = DsaKeyPairJobCtx::fromJS(globalObject, scope, typeView, optionsValue, config); EXCEPTION_ASSERT(ctx.has_value() == !scope.exception()); RETURN_IF_EXCEPTION(scope, {}); - DsaKeyPairJob::createAndSchedule(globalObject, WTFMove(*ctx), callbackValue); + DsaKeyPairJob::createAndSchedule(globalObject, WTF::move(*ctx), callbackValue); return JSValue::encode(jsUndefined()); } if (typeView == "ec"_s) { std::optional ctx = EcKeyPairJobCtx::fromJS(globalObject, scope, typeView, optionsValue, config); EXCEPTION_ASSERT(ctx.has_value() == !scope.exception()); RETURN_IF_EXCEPTION(scope, {}); - EcKeyPairJob::createAndSchedule(globalObject, WTFMove(*ctx), callbackValue); + EcKeyPairJob::createAndSchedule(globalObject, WTF::move(*ctx), callbackValue); return JSValue::encode(jsUndefined()); } // TODO: should just get `id` here @@ -172,14 +172,14 @@ JSC_DEFINE_HOST_FUNCTION(jsGenerateKeyPair, (JSC::JSGlobalObject * globalObject, std::optional ctx = NidKeyPairJobCtx::fromJS(globalObject, scope, typeView, optionsValue, config); EXCEPTION_ASSERT(ctx.has_value() == !scope.exception()); RETURN_IF_EXCEPTION(scope, {}); - NidKeyPairJob::createAndSchedule(globalObject, WTFMove(*ctx), callbackValue); + NidKeyPairJob::createAndSchedule(globalObject, WTF::move(*ctx), callbackValue); return JSValue::encode(jsUndefined()); } if (typeView == "dh"_s) { std::optional ctx = DhKeyPairJobCtx::fromJS(globalObject, scope, typeView, optionsValue, config); EXCEPTION_ASSERT(ctx.has_value() == !scope.exception()); RETURN_IF_EXCEPTION(scope, {}); - DhKeyPairJob::createAndSchedule(globalObject, WTFMove(*ctx), callbackValue); + DhKeyPairJob::createAndSchedule(globalObject, WTF::move(*ctx), callbackValue); return JSValue::encode(jsUndefined()); } diff --git a/src/bun.js/bindings/node/crypto/CryptoGenNidKeyPair.cpp b/src/bun.js/bindings/node/crypto/CryptoGenNidKeyPair.cpp index 6d7a3c4bbd..eb10af213a 100644 --- a/src/bun.js/bindings/node/crypto/CryptoGenNidKeyPair.cpp +++ b/src/bun.js/bindings/node/crypto/CryptoGenNidKeyPair.cpp @@ -33,7 +33,7 @@ extern "C" void Bun__NidKeyPairJobCtx__runFromJS(NidKeyPairJobCtx* ctx, JSGlobal extern "C" NidKeyPairJob* Bun__NidKeyPairJob__create(JSGlobalObject* globalObject, NidKeyPairJobCtx* ctx, EncodedJSValue callback); NidKeyPairJob* NidKeyPairJob::create(JSGlobalObject* globalObject, NidKeyPairJobCtx&& ctx, JSValue callback) { - NidKeyPairJobCtx* ctxCopy = new NidKeyPairJobCtx(WTFMove(ctx)); + NidKeyPairJobCtx* ctxCopy = new NidKeyPairJobCtx(WTF::move(ctx)); return Bun__NidKeyPairJob__create(globalObject, ctxCopy, JSValue::encode(callback)); } @@ -46,7 +46,7 @@ void NidKeyPairJob::schedule() extern "C" void Bun__NidKeyPairJob__createAndSchedule(JSGlobalObject* globalObject, NidKeyPairJobCtx* ctx, EncodedJSValue callback); void NidKeyPairJob::createAndSchedule(JSGlobalObject* globalObject, NidKeyPairJobCtx&& ctx, JSValue callback) { - NidKeyPairJobCtx* ctxCopy = new NidKeyPairJobCtx(WTFMove(ctx)); + NidKeyPairJobCtx* ctxCopy = new NidKeyPairJobCtx(WTF::move(ctx)); Bun__NidKeyPairJob__createAndSchedule(globalObject, ctxCopy, JSValue::encode(callback)); } diff --git a/src/bun.js/bindings/node/crypto/CryptoGenRsaKeyPair.cpp b/src/bun.js/bindings/node/crypto/CryptoGenRsaKeyPair.cpp index 49a683ad9b..856f11f393 100644 --- a/src/bun.js/bindings/node/crypto/CryptoGenRsaKeyPair.cpp +++ b/src/bun.js/bindings/node/crypto/CryptoGenRsaKeyPair.cpp @@ -34,7 +34,7 @@ extern "C" void Bun__RsaKeyPairJobCtx__runFromJS(RsaKeyPairJobCtx* ctx, JSGlobal extern "C" RsaKeyPairJob* Bun__RsaKeyPairJob__create(JSGlobalObject* globalObject, RsaKeyPairJobCtx* ctx, EncodedJSValue callback); RsaKeyPairJob* RsaKeyPairJob::create(JSGlobalObject* globalObject, RsaKeyPairJobCtx&& ctx, JSValue callback) { - RsaKeyPairJobCtx* ctxCopy = new RsaKeyPairJobCtx(WTFMove(ctx)); + RsaKeyPairJobCtx* ctxCopy = new RsaKeyPairJobCtx(WTF::move(ctx)); return Bun__RsaKeyPairJob__create(globalObject, ctxCopy, JSValue::encode(callback)); } @@ -47,7 +47,7 @@ void RsaKeyPairJob::schedule() extern "C" void Bun__RsaKeyPairJob__createAndSchedule(JSGlobalObject* globalObject, RsaKeyPairJobCtx* ctx, EncodedJSValue callback); void RsaKeyPairJob::createAndSchedule(JSGlobalObject* globalObject, RsaKeyPairJobCtx&& ctx, JSValue callback) { - RsaKeyPairJobCtx* ctxCopy = new RsaKeyPairJobCtx(WTFMove(ctx)); + RsaKeyPairJobCtx* ctxCopy = new RsaKeyPairJobCtx(WTF::move(ctx)); Bun__RsaKeyPairJob__createAndSchedule(globalObject, ctxCopy, JSValue::encode(callback)); } @@ -61,7 +61,7 @@ ncrypto::EVPKeyCtxPointer RsaKeyPairJobCtx::setup() if (m_exponent != ncrypto::EVPKeyCtxPointer::kDefaultRsaExponent) { auto bn = ncrypto::BignumPointer::New(); - if (!bn.setWord(m_exponent) || !ctx.setRsaKeygenPubExp(WTFMove(bn))) { + if (!bn.setWord(m_exponent) || !ctx.setRsaKeygenPubExp(WTF::move(bn))) { m_opensslError = ERR_get_error(); return {}; } diff --git a/src/bun.js/bindings/node/crypto/CryptoHkdf.cpp b/src/bun.js/bindings/node/crypto/CryptoHkdf.cpp index 653e14ff0c..031df5209d 100644 --- a/src/bun.js/bindings/node/crypto/CryptoHkdf.cpp +++ b/src/bun.js/bindings/node/crypto/CryptoHkdf.cpp @@ -17,19 +17,19 @@ namespace Bun { HkdfJobCtx::HkdfJobCtx(Digest digest, size_t length, KeyObject&& key, WTF::Vector&& info, WTF::Vector&& salt) : m_digest(digest) , m_length(length) - , m_key(WTFMove(key)) - , m_info(WTFMove(info)) - , m_salt(WTFMove(salt)) + , m_key(WTF::move(key)) + , m_info(WTF::move(info)) + , m_salt(WTF::move(salt)) { } HkdfJobCtx::HkdfJobCtx(HkdfJobCtx&& other) : m_digest(other.m_digest) , m_length(other.m_length) - , m_key(WTFMove(other.m_key)) - , m_info(WTFMove(other.m_info)) - , m_salt(WTFMove(other.m_salt)) - , m_result(WTFMove(other.m_result)) + , m_key(WTF::move(other.m_key)) + , m_info(WTF::move(other.m_info)) + , m_salt(WTF::move(other.m_salt)) + , m_result(WTF::move(other.m_result)) { } @@ -113,7 +113,7 @@ void HkdfJobCtx::deinit() extern "C" HkdfJob* Bun__HkdfJob__create(JSGlobalObject* globalObject, HkdfJobCtx* ctx, EncodedJSValue callback); HkdfJob* HkdfJob::create(JSGlobalObject* globalObject, HkdfJobCtx&& ctx, JSValue callback) { - HkdfJobCtx* ctxCopy = new HkdfJobCtx(WTFMove(ctx)); + HkdfJobCtx* ctxCopy = new HkdfJobCtx(WTF::move(ctx)); return Bun__HkdfJob__create(globalObject, ctxCopy, JSValue::encode(callback)); } @@ -126,7 +126,7 @@ void HkdfJob::schedule() extern "C" void Bun__HkdfJob__createAndSchedule(JSGlobalObject* globalObject, HkdfJobCtx* ctx, EncodedJSValue callback); void HkdfJob::createAndSchedule(JSGlobalObject* globalObject, HkdfJobCtx&& ctx, JSValue callback) { - HkdfJobCtx* ctxCopy = new HkdfJobCtx(WTFMove(ctx)); + HkdfJobCtx* ctxCopy = new HkdfJobCtx(WTF::move(ctx)); return Bun__HkdfJob__createAndSchedule(globalObject, ctxCopy, JSValue::encode(callback)); } @@ -151,21 +151,21 @@ KeyObject prepareKey(JSGlobalObject* globalObject, ThrowScope& scope, JSValue ke Vector copy; copy.append(view->span()); - return KeyObject::create(WTFMove(copy)); + return KeyObject::create(WTF::move(copy)); } // Handle ArrayBuffer types if (auto* view = jsDynamicCast(key)) { Vector copy; copy.append(view->span()); - return KeyObject::create(WTFMove(copy)); + return KeyObject::create(WTF::move(copy)); } if (auto* buf = jsDynamicCast(key)) { auto* impl = buf->impl(); Vector copy; copy.append(impl->span()); - return KeyObject::create(WTFMove(copy)); + return KeyObject::create(WTF::move(copy)); } ERR::INVALID_ARG_TYPE(scope, globalObject, "ikm"_s, "string or an instance of SecretKeyObject, ArrayBuffer, TypedArray, DataView, or Buffer"_s, key); @@ -236,7 +236,7 @@ std::optional HkdfJobCtx::fromJS(JSGlobalObject* lexicalGlobalObject return std::nullopt; } - return HkdfJobCtx(hash, length, WTFMove(keyObject), WTFMove(info), WTFMove(salt)); + return HkdfJobCtx(hash, length, WTF::move(keyObject), WTF::move(info), WTF::move(salt)); } JSC_DEFINE_HOST_FUNCTION(jsHkdf, (JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) @@ -251,7 +251,7 @@ JSC_DEFINE_HOST_FUNCTION(jsHkdf, (JSGlobalObject * lexicalGlobalObject, JSC::Cal V::validateFunction(scope, lexicalGlobalObject, callback, "callback"_s); RETURN_IF_EXCEPTION(scope, {}); - HkdfJob::createAndSchedule(lexicalGlobalObject, WTFMove(ctx.value()), callback); + HkdfJob::createAndSchedule(lexicalGlobalObject, WTF::move(ctx.value()), callback); return JSValue::encode(jsUndefined()); } diff --git a/src/bun.js/bindings/node/crypto/CryptoKeygen.cpp b/src/bun.js/bindings/node/crypto/CryptoKeygen.cpp index 6c49a5c6c9..d3f73952e1 100644 --- a/src/bun.js/bindings/node/crypto/CryptoKeygen.cpp +++ b/src/bun.js/bindings/node/crypto/CryptoKeygen.cpp @@ -32,7 +32,7 @@ void SecretKeyJobCtx::runTask(JSGlobalObject* lexicalGlobalObject) return; } - m_result = WTFMove(key); + m_result = WTF::move(key); } extern "C" void Bun__SecretKeyJobCtx__runFromJS(SecretKeyJobCtx* ctx, JSGlobalObject* lexicalGlobalObject, JSC::JSValue callback) @@ -51,10 +51,10 @@ void SecretKeyJobCtx::runFromJS(JSGlobalObject* lexicalGlobalObject, JSC::JSValu return; } - KeyObject keyObject = KeyObject::create(WTFMove(*m_result)); + KeyObject keyObject = KeyObject::create(WTF::move(*m_result)); Structure* structure = globalObject->m_JSSecretKeyObjectClassStructure.get(lexicalGlobalObject); - JSSecretKeyObject* secretKey = JSSecretKeyObject::create(vm, structure, lexicalGlobalObject, WTFMove(keyObject)); + JSSecretKeyObject* secretKey = JSSecretKeyObject::create(vm, structure, lexicalGlobalObject, WTF::move(keyObject)); Bun__EventLoop__runCallback2(lexicalGlobalObject, JSValue::encode(callback), @@ -88,7 +88,7 @@ void SecretKeyJob::schedule() extern "C" void Bun__SecretKeyJob__createAndSchedule(JSC::JSGlobalObject*, SecretKeyJobCtx*, EncodedJSValue callback); void SecretKeyJob::createAndSchedule(JSC::JSGlobalObject* lexicalGlobalObject, SecretKeyJobCtx&& ctx, JSC::JSValue callback) { - SecretKeyJobCtx* ctxCopy = new SecretKeyJobCtx(WTFMove(ctx)); + SecretKeyJobCtx* ctxCopy = new SecretKeyJobCtx(WTF::move(ctx)); return Bun__SecretKeyJob__createAndSchedule(lexicalGlobalObject, ctxCopy, JSValue::encode(callback)); } @@ -150,7 +150,7 @@ JSC_DEFINE_HOST_FUNCTION(jsGenerateKey, (JSC::JSGlobalObject * lexicalGlobalObje EXCEPTION_ASSERT(ctx.has_value() == !scope.exception()); RETURN_IF_EXCEPTION(scope, {}); - SecretKeyJob::createAndSchedule(lexicalGlobalObject, WTFMove(ctx.value()), callbackValue); + SecretKeyJob::createAndSchedule(lexicalGlobalObject, WTF::move(ctx.value()), callbackValue); return JSValue::encode(jsUndefined()); } @@ -176,9 +176,9 @@ JSC_DEFINE_HOST_FUNCTION(jsGenerateKeySync, (JSC::JSGlobalObject * lexicalGlobal auto& result = ctx->m_result.value(); auto* globalObject = defaultGlobalObject(lexicalGlobalObject); - KeyObject keyObject = KeyObject::create(WTFMove(result)); + KeyObject keyObject = KeyObject::create(WTF::move(result)); Structure* structure = globalObject->m_JSSecretKeyObjectClassStructure.get(lexicalGlobalObject); - JSSecretKeyObject* secretKey = JSSecretKeyObject::create(vm, structure, lexicalGlobalObject, WTFMove(keyObject)); + JSSecretKeyObject* secretKey = JSSecretKeyObject::create(vm, structure, lexicalGlobalObject, WTF::move(keyObject)); return JSValue::encode(secretKey); } diff --git a/src/bun.js/bindings/node/crypto/CryptoKeys.cpp b/src/bun.js/bindings/node/crypto/CryptoKeys.cpp index 799954e7c7..1ef0cfe0a4 100644 --- a/src/bun.js/bindings/node/crypto/CryptoKeys.cpp +++ b/src/bun.js/bindings/node/crypto/CryptoKeys.cpp @@ -23,7 +23,7 @@ JSC_DEFINE_HOST_FUNCTION(jsCreateSecretKey, (JSC::JSGlobalObject * lexicalGlobal RETURN_IF_EXCEPTION(scope, {}); Structure* structure = globalObject->m_JSSecretKeyObjectClassStructure.get(lexicalGlobalObject); - JSSecretKeyObject* secretKey = JSSecretKeyObject::create(vm, structure, lexicalGlobalObject, WTFMove(keyObject)); + JSSecretKeyObject* secretKey = JSSecretKeyObject::create(vm, structure, lexicalGlobalObject, WTF::move(keyObject)); return JSValue::encode(secretKey); } @@ -43,7 +43,7 @@ JSC_DEFINE_HOST_FUNCTION(jsCreatePublicKey, (JSC::JSGlobalObject * lexicalGlobal if (prepareResult.keyData) { RefPtr keyData = *prepareResult.keyData; - keyObject = KeyObject::create(CryptoKeyType::Public, WTFMove(keyData)); + keyObject = KeyObject::create(CryptoKeyType::Public, WTF::move(keyData)); } else { keyObject = KeyObject::getPublicOrPrivateKey( globalObject, @@ -53,12 +53,12 @@ JSC_DEFINE_HOST_FUNCTION(jsCreatePublicKey, (JSC::JSGlobalObject * lexicalGlobal prepareResult.formatType, prepareResult.encodingType, prepareResult.cipher, - WTFMove(prepareResult.passphrase)); + WTF::move(prepareResult.passphrase)); RETURN_IF_EXCEPTION(scope, {}); } Structure* structure = globalObject->m_JSPublicKeyObjectClassStructure.get(lexicalGlobalObject); - JSPublicKeyObject* publicKey = JSPublicKeyObject::create(vm, structure, lexicalGlobalObject, WTFMove(keyObject)); + JSPublicKeyObject* publicKey = JSPublicKeyObject::create(vm, structure, lexicalGlobalObject, WTF::move(keyObject)); return JSValue::encode(publicKey); } @@ -78,7 +78,7 @@ JSC_DEFINE_HOST_FUNCTION(jsCreatePrivateKey, (JSGlobalObject * lexicalGlobalObje if (prepareResult.keyData) { auto keyData = *prepareResult.keyData; - keyObject = KeyObject::create(CryptoKeyType::Private, WTFMove(keyData)); + keyObject = KeyObject::create(CryptoKeyType::Private, WTF::move(keyData)); } else { keyObject = KeyObject::getPublicOrPrivateKey( globalObject, @@ -88,12 +88,12 @@ JSC_DEFINE_HOST_FUNCTION(jsCreatePrivateKey, (JSGlobalObject * lexicalGlobalObje prepareResult.formatType, prepareResult.encodingType, prepareResult.cipher, - WTFMove(prepareResult.passphrase)); + WTF::move(prepareResult.passphrase)); RETURN_IF_EXCEPTION(scope, {}); } Structure* structure = globalObject->m_JSPrivateKeyObjectClassStructure.get(lexicalGlobalObject); - JSPrivateKeyObject* privateKey = JSPrivateKeyObject::create(vm, structure, lexicalGlobalObject, WTFMove(keyObject)); + JSPrivateKeyObject* privateKey = JSPrivateKeyObject::create(vm, structure, lexicalGlobalObject, WTF::move(keyObject)); return JSValue::encode(privateKey); } diff --git a/src/bun.js/bindings/node/crypto/CryptoPrimes.cpp b/src/bun.js/bindings/node/crypto/CryptoPrimes.cpp index 39f6ac8a67..a900b56f1e 100644 --- a/src/bun.js/bindings/node/crypto/CryptoPrimes.cpp +++ b/src/bun.js/bindings/node/crypto/CryptoPrimes.cpp @@ -10,7 +10,7 @@ using namespace ncrypto; using namespace JSC; CheckPrimeJobCtx::CheckPrimeJobCtx(ncrypto::BignumPointer candidate, int32_t checks) - : m_candidate(WTFMove(candidate)) + : m_candidate(WTF::move(candidate)) , m_checks(checks) { } @@ -54,7 +54,7 @@ void CheckPrimeJobCtx::deinit() extern "C" CheckPrimeJob* Bun__CheckPrimeJob__create(JSGlobalObject*, CheckPrimeJobCtx*, EncodedJSValue callback); CheckPrimeJob* CheckPrimeJob::create(JSGlobalObject* globalObject, ncrypto::BignumPointer candidate, int32_t checks, JSValue callback) { - CheckPrimeJobCtx* ctx = new CheckPrimeJobCtx(WTFMove(candidate), checks); + CheckPrimeJobCtx* ctx = new CheckPrimeJobCtx(WTF::move(candidate), checks); return Bun__CheckPrimeJob__create(globalObject, ctx, JSValue::encode(callback)); } @@ -67,7 +67,7 @@ void CheckPrimeJob::schedule() extern "C" void Bun__CheckPrimeJob__createAndSchedule(JSGlobalObject*, CheckPrimeJobCtx*, EncodedJSValue callback); void CheckPrimeJob::createAndSchedule(JSGlobalObject* globalObject, ncrypto::BignumPointer candidate, int32_t checks, JSValue callback) { - CheckPrimeJobCtx* ctx = new CheckPrimeJobCtx(WTFMove(candidate), checks); + CheckPrimeJobCtx* ctx = new CheckPrimeJobCtx(WTF::move(candidate), checks); return Bun__CheckPrimeJob__createAndSchedule(globalObject, ctx, JSValue::encode(callback)); } @@ -165,7 +165,7 @@ JSC_DEFINE_HOST_FUNCTION(jsCheckPrime, (JSC::JSGlobalObject * lexicalGlobalObjec return {}; } - CheckPrimeJob::createAndSchedule(lexicalGlobalObject, WTFMove(candidate), checks, callback); + CheckPrimeJob::createAndSchedule(lexicalGlobalObject, WTF::move(candidate), checks, callback); return JSValue::encode(jsUndefined()); } @@ -174,9 +174,9 @@ GeneratePrimeJobCtx::GeneratePrimeJobCtx(int32_t size, bool safe, ncrypto::Bignu : m_size(size) , m_safe(safe) , m_bigint(bigint) - , m_add(WTFMove(add)) - , m_rem(WTFMove(rem)) - , m_prime(WTFMove(prime)) + , m_add(WTF::move(add)) + , m_rem(WTF::move(rem)) + , m_prime(WTF::move(prime)) { } @@ -239,7 +239,7 @@ void GeneratePrimeJobCtx::deinit() extern "C" GeneratePrimeJob* Bun__GeneratePrimeJob__create(JSGlobalObject*, GeneratePrimeJobCtx*, EncodedJSValue callback); GeneratePrimeJob* GeneratePrimeJob::create(JSGlobalObject* globalObject, int32_t size, bool safe, ncrypto::BignumPointer prime, ncrypto::BignumPointer add, ncrypto::BignumPointer rem, bool bigint, JSValue callback) { - GeneratePrimeJobCtx* ctx = new GeneratePrimeJobCtx(size, safe, WTFMove(prime), WTFMove(add), WTFMove(rem), bigint); + GeneratePrimeJobCtx* ctx = new GeneratePrimeJobCtx(size, safe, WTF::move(prime), WTF::move(add), WTF::move(rem), bigint); return Bun__GeneratePrimeJob__create(globalObject, ctx, JSValue::encode(callback)); } @@ -252,7 +252,7 @@ void GeneratePrimeJob::schedule() extern "C" void Bun__GeneratePrimeJob__createAndSchedule(JSGlobalObject*, GeneratePrimeJobCtx*, EncodedJSValue callback); void GeneratePrimeJob::createAndSchedule(JSGlobalObject* globalObject, int32_t size, bool safe, ncrypto::BignumPointer prime, ncrypto::BignumPointer add, ncrypto::BignumPointer rem, bool bigint, JSValue callback) { - GeneratePrimeJobCtx* ctx = new GeneratePrimeJobCtx(size, safe, WTFMove(prime), WTFMove(add), WTFMove(rem), bigint); + GeneratePrimeJobCtx* ctx = new GeneratePrimeJobCtx(size, safe, WTF::move(prime), WTF::move(add), WTF::move(rem), bigint); Bun__GeneratePrimeJob__createAndSchedule(globalObject, ctx, JSValue::encode(callback)); } @@ -286,7 +286,7 @@ JSValue GeneratePrimeJob::result(JSGlobalObject* globalObject, JSC::ThrowScope& BignumPointer::EncodePaddedInto(prime.get(), reinterpret_cast(buf->data()), buf->byteLength()); - return JSArrayBuffer::create(vm, globalObject->arrayBufferStructure(), WTFMove(buf)); + return JSArrayBuffer::create(vm, globalObject->arrayBufferStructure(), WTF::move(buf)); } JSC_DEFINE_HOST_FUNCTION(jsGeneratePrime, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) @@ -393,7 +393,7 @@ JSC_DEFINE_HOST_FUNCTION(jsGeneratePrime, (JSC::JSGlobalObject * lexicalGlobalOb return ERR::CRYPTO_OPERATION_FAILED(scope, lexicalGlobalObject, "could not generate prime"_s); } - GeneratePrimeJob::createAndSchedule(lexicalGlobalObject, size, safe, WTFMove(prime), WTFMove(add), WTFMove(rem), bigint, callback); + GeneratePrimeJob::createAndSchedule(lexicalGlobalObject, size, safe, WTF::move(prime), WTF::move(add), WTF::move(rem), bigint, callback); return JSValue::encode(jsUndefined()); } diff --git a/src/bun.js/bindings/node/crypto/CryptoSignJob.cpp b/src/bun.js/bindings/node/crypto/CryptoSignJob.cpp index 77899d2e92..1b9d80177a 100644 --- a/src/bun.js/bindings/node/crypto/CryptoSignJob.cpp +++ b/src/bun.js/bindings/node/crypto/CryptoSignJob.cpp @@ -25,7 +25,7 @@ JSC_DEFINE_HOST_FUNCTION(jsVerifyOneShot, (JSGlobalObject * lexicalGlobalObject, RETURN_IF_EXCEPTION(scope, {}); if (!callbackValue.isUndefined()) { - SignJob::createAndSchedule(lexicalGlobalObject, WTFMove(*ctx), callbackValue); + SignJob::createAndSchedule(lexicalGlobalObject, WTF::move(*ctx), callbackValue); return JSValue::encode(jsUndefined()); } @@ -53,7 +53,7 @@ JSC_DEFINE_HOST_FUNCTION(jsSignOneShot, (JSGlobalObject * lexicalGlobalObject, C RETURN_IF_EXCEPTION(scope, {}); if (!callbackValue.isUndefined()) { - SignJob::createAndSchedule(lexicalGlobalObject, WTFMove(*ctx), callbackValue); + SignJob::createAndSchedule(lexicalGlobalObject, WTF::move(*ctx), callbackValue); return JSValue::encode(jsUndefined()); } @@ -69,7 +69,7 @@ JSC_DEFINE_HOST_FUNCTION(jsSignOneShot, (JSGlobalObject * lexicalGlobalObject, C auto sigBuf = ArrayBuffer::createUninitialized(result.size(), 1); memcpy(sigBuf->data(), result.data(), result.size()); - auto* signature = JSUint8Array::create(lexicalGlobalObject, globalObject->JSBufferSubclassStructure(), WTFMove(sigBuf), 0, result.size()); + auto* signature = JSUint8Array::create(lexicalGlobalObject, globalObject->JSBufferSubclassStructure(), WTF::move(sigBuf), 0, result.size()); RETURN_IF_EXCEPTION(scope, {}); return JSValue::encode(signature); } @@ -182,7 +182,7 @@ void SignJobCtx::runTask(JSGlobalObject* globalObject) m_signResult = ByteSource::allocated(p1363Buffer.release()); } else { - m_signResult = WTFMove(bs); + m_signResult = WTF::move(bs); } } break; @@ -226,7 +226,7 @@ void SignJobCtx::runFromJS(JSGlobalObject* lexicalGlobalObject, JSValue callback auto sigBuf = ArrayBuffer::createUninitialized(m_signResult->size(), 1); memcpy(sigBuf->data(), m_signResult->data(), m_signResult->size()); - auto* signature = JSUint8Array::create(lexicalGlobalObject, globalObject->JSBufferSubclassStructure(), WTFMove(sigBuf), 0, m_signResult->size()); + auto* signature = JSUint8Array::create(lexicalGlobalObject, globalObject->JSBufferSubclassStructure(), WTF::move(sigBuf), 0, m_signResult->size()); RETURN_IF_EXCEPTION(scope, ); Bun__EventLoop__runCallback2( @@ -259,7 +259,7 @@ void SignJobCtx::runFromJS(JSGlobalObject* lexicalGlobalObject, JSValue callback extern "C" SignJob* Bun__SignJob__create(JSGlobalObject* globalObject, SignJobCtx* ctx, EncodedJSValue callback); SignJob* SignJob::create(JSGlobalObject* globalObject, SignJobCtx&& ctx, JSValue callback) { - SignJobCtx* ctxCopy = new SignJobCtx(WTFMove(ctx)); + SignJobCtx* ctxCopy = new SignJobCtx(WTF::move(ctx)); return Bun__SignJob__create(globalObject, ctxCopy, JSValue::encode(callback)); } @@ -272,7 +272,7 @@ void SignJob::schedule() extern "C" void Bun__SignJob__createAndSchedule(JSGlobalObject* globalObject, SignJobCtx* ctx, EncodedJSValue callback); void SignJob::createAndSchedule(JSGlobalObject* globalObject, SignJobCtx&& ctx, JSValue callback) { - SignJobCtx* ctxCopy = new SignJobCtx(WTFMove(ctx)); + SignJobCtx* ctxCopy = new SignJobCtx(WTF::move(ctx)); Bun__SignJob__createAndSchedule(globalObject, ctxCopy, JSValue::encode(callback)); } @@ -333,7 +333,7 @@ std::optional SignJobCtx::fromJS(JSGlobalObject* globalObject, Throw KeyObject keyObject; if (prepareResult.keyData) { - keyObject = KeyObject::create(keyType, WTFMove(*prepareResult.keyData)); + keyObject = KeyObject::create(keyType, WTF::move(*prepareResult.keyData)); } else { keyObject = KeyObject::getPublicOrPrivateKey( @@ -344,7 +344,7 @@ std::optional SignJobCtx::fromJS(JSGlobalObject* globalObject, Throw prepareResult.formatType, prepareResult.encodingType, prepareResult.cipher, - WTFMove(prepareResult.passphrase)); + WTF::move(prepareResult.passphrase)); RETURN_IF_EXCEPTION(scope, {}); } @@ -424,18 +424,18 @@ std::optional SignJobCtx::fromJS(JSGlobalObject* globalObject, Throw return SignJobCtx( mode, keyObject.data(), - WTFMove(data), + WTF::move(data), digest, padding, pssSaltLength, dsaSigEnc, - WTFMove(signature)); + WTF::move(signature)); } return SignJobCtx( mode, keyObject.data(), - WTFMove(data), + WTF::move(data), digest, padding, pssSaltLength, diff --git a/src/bun.js/bindings/node/crypto/CryptoSignJob.h b/src/bun.js/bindings/node/crypto/CryptoSignJob.h index ac029b09cb..f3bf6a5313 100644 --- a/src/bun.js/bindings/node/crypto/CryptoSignJob.h +++ b/src/bun.js/bindings/node/crypto/CryptoSignJob.h @@ -22,8 +22,8 @@ public: SignJobCtx(Mode mode, RefPtr keyData, Vector&& data, ncrypto::Digest digest, std::optional padding, std::optional saltLength, DSASigEnc dsaSigEnc, Vector&& signature = {}) : m_mode(mode) , m_keyData(keyData) - , m_data(WTFMove(data)) - , m_signature(WTFMove(signature)) + , m_data(WTF::move(data)) + , m_signature(WTF::move(signature)) , m_digest(digest) , m_padding(padding) , m_saltLength(saltLength) @@ -34,9 +34,9 @@ public: SignJobCtx(SignJobCtx&& other) : m_mode(other.m_mode) - , m_keyData(WTFMove(other.m_keyData)) - , m_data(WTFMove(other.m_data)) - , m_signature(WTFMove(other.m_signature)) + , m_keyData(WTF::move(other.m_keyData)) + , m_data(WTF::move(other.m_data)) + , m_signature(WTF::move(other.m_signature)) , m_digest(other.m_digest) , m_padding(other.m_padding) , m_saltLength(other.m_saltLength) diff --git a/src/bun.js/bindings/node/crypto/CryptoUtil.cpp b/src/bun.js/bindings/node/crypto/CryptoUtil.cpp index 2c8d73c0ee..29b2b9c538 100644 --- a/src/bun.js/bindings/node/crypto/CryptoUtil.cpp +++ b/src/bun.js/bindings/node/crypto/CryptoUtil.cpp @@ -82,7 +82,7 @@ EncodedJSValue encode(JSGlobalObject* lexicalGlobalObject, ThrowScope& scope, st memcpy(buffer->data(), bytes.data(), bytes.size()); - return JSValue::encode(JSC::JSUint8Array::create(lexicalGlobalObject, globalObject->JSBufferSubclassStructure(), WTFMove(buffer), 0, bytes.size())); + return JSValue::encode(JSC::JSUint8Array::create(lexicalGlobalObject, globalObject->JSBufferSubclassStructure(), WTF::move(buffer), 0, bytes.size())); } default: { return jsBufferToStringFromBytes(lexicalGlobalObject, scope, bytes, encoding); @@ -157,7 +157,7 @@ std::optional keyFromString(JSGlobalObject* lexicalGloba }; auto res = ncrypto::EVPKeyPointer::TryParsePrivateKey(config, ncryptoBuf); if (res) { - ncrypto::EVPKeyPointer keyPtr(WTFMove(res.value)); + ncrypto::EVPKeyPointer keyPtr(WTF::move(res.value)); return keyPtr; } @@ -255,7 +255,7 @@ std::optional passphraseFromBufferSource(JSC::JSGlobalObje auto span = utf8.span(); if (auto ptr = ncrypto::DataPointer::Alloc(span.size())) { memcpy(ptr.get(), span.data(), span.size()); - return WTFMove(ptr); + return WTF::move(ptr); } throwOutOfMemoryError(globalObject, scope); @@ -271,7 +271,7 @@ std::optional passphraseFromBufferSource(JSC::JSGlobalObje auto length = array->byteLength(); if (auto ptr = ncrypto::DataPointer::Alloc(length)) { memcpy(ptr.get(), array->vector(), length); - return WTFMove(ptr); + return WTF::move(ptr); } throwOutOfMemoryError(globalObject, scope); @@ -481,7 +481,7 @@ bool convertP1363ToDER(const ncrypto::Buffer& p1363Sig, return false; } - if (!asn1_sig.setParams(WTFMove(r), WTFMove(s))) { + if (!asn1_sig.setParams(WTF::move(r), WTF::move(s))) { return false; } diff --git a/src/bun.js/bindings/node/crypto/DiffieHellmanFunctions.h b/src/bun.js/bindings/node/crypto/DiffieHellmanFunctions.h index feb50dae6d..778b8592b7 100644 --- a/src/bun.js/bindings/node/crypto/DiffieHellmanFunctions.h +++ b/src/bun.js/bindings/node/crypto/DiffieHellmanFunctions.h @@ -251,7 +251,7 @@ JSC::EncodedJSValue jsDiffieHellmanProtoFuncSetPublicKeyTemplate(JSC::JSGlobalOb auto& dh = thisObject->getImpl(); - if (!dh.setPublicKey(WTFMove(key))) { + if (!dh.setPublicKey(WTF::move(key))) { throwError(globalObject, scope, ErrorCode::ERR_CRYPTO_OPERATION_FAILED, "Failed to set public key"_s); return {}; } @@ -286,7 +286,7 @@ JSC::EncodedJSValue jsDiffieHellmanProtoFuncSetPrivateKeyTemplate(JSC::JSGlobalO auto& dh = thisObject->getImpl(); - if (!dh.setPrivateKey(WTFMove(key))) { + if (!dh.setPrivateKey(WTF::move(key))) { throwError(globalObject, scope, ErrorCode::ERR_CRYPTO_OPERATION_FAILED, "Failed to set private key"_s); return {}; } diff --git a/src/bun.js/bindings/node/crypto/JSCipher.cpp b/src/bun.js/bindings/node/crypto/JSCipher.cpp index d593ace4b2..4b1b9a4c57 100644 --- a/src/bun.js/bindings/node/crypto/JSCipher.cpp +++ b/src/bun.js/bindings/node/crypto/JSCipher.cpp @@ -76,7 +76,7 @@ JSValue rsaFunction(JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* ca RETURN_IF_EXCEPTION(scope, {}); if (prepareResult.keyData) { RefPtr data = *prepareResult.keyData; - keyObject = KeyObject::create(CryptoKeyType::Public, WTFMove(data)); + keyObject = KeyObject::create(CryptoKeyType::Public, WTF::move(data)); } else { keyObject = KeyObject::getPublicOrPrivateKey( globalObject, @@ -86,7 +86,7 @@ JSValue rsaFunction(JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* ca prepareResult.formatType, prepareResult.encodingType, prepareResult.cipher, - WTFMove(prepareResult.passphrase)); + WTF::move(prepareResult.passphrase)); RETURN_IF_EXCEPTION(scope, {}); } break; @@ -97,7 +97,7 @@ JSValue rsaFunction(JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* ca RETURN_IF_EXCEPTION(scope, {}); if (prepareResult.keyData) { RefPtr data = *prepareResult.keyData; - keyObject = KeyObject::create(CryptoKeyType::Private, WTFMove(data)); + keyObject = KeyObject::create(CryptoKeyType::Private, WTF::move(data)); } else { keyObject = KeyObject::getPublicOrPrivateKey( globalObject, @@ -107,7 +107,7 @@ JSValue rsaFunction(JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* ca prepareResult.formatType, prepareResult.encodingType, prepareResult.cipher, - WTFMove(prepareResult.passphrase)); + WTF::move(prepareResult.passphrase)); RETURN_IF_EXCEPTION(scope, {}); } break; @@ -215,7 +215,7 @@ JSValue rsaFunction(JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* ca return {}; } - RELEASE_AND_RETURN(scope, JSUint8Array::create(lexicalGlobalObject, globalObject->JSBufferSubclassStructure(), WTFMove(outBuf), 0, result.size())); + RELEASE_AND_RETURN(scope, JSUint8Array::create(lexicalGlobalObject, globalObject->JSBufferSubclassStructure(), WTF::move(outBuf), 0, result.size())); } JSC_DEFINE_HOST_FUNCTION(jsPublicEncrypt, (JSC::JSGlobalObject * globalObject, JSC::CallFrame* callFrame)) diff --git a/src/bun.js/bindings/node/crypto/JSCipher.h b/src/bun.js/bindings/node/crypto/JSCipher.h index 7c0a4dd625..75d105ae28 100644 --- a/src/bun.js/bindings/node/crypto/JSCipher.h +++ b/src/bun.js/bindings/node/crypto/JSCipher.h @@ -43,7 +43,7 @@ public: static JSCipher* create(JSC::VM& vm, JSC::Structure* structure, JSC::JSGlobalObject* globalObject, CipherKind kind, ncrypto::CipherCtxPointer&& ctx, std::optional authTagLen, int32_t maxMessageSize) { - JSCipher* instance = new (NotNull, JSC::allocateCell(vm)) JSCipher(vm, structure, kind, WTFMove(ctx), authTagLen, maxMessageSize); + JSCipher* instance = new (NotNull, JSC::allocateCell(vm)) JSCipher(vm, structure, kind, WTF::move(ctx), authTagLen, maxMessageSize); instance->finishCreation(vm, globalObject); return instance; } @@ -109,7 +109,7 @@ private: , m_authTagLen(authTagLen) , m_pendingAuthFailed(false) , m_maxMessageSize(maxMessageSize) - , m_ctx(WTFMove(ctx)) + , m_ctx(WTF::move(ctx)) { } diff --git a/src/bun.js/bindings/node/crypto/JSCipherConstructor.cpp b/src/bun.js/bindings/node/crypto/JSCipherConstructor.cpp index 063e95407d..6261433f5f 100644 --- a/src/bun.js/bindings/node/crypto/JSCipherConstructor.cpp +++ b/src/bun.js/bindings/node/crypto/JSCipherConstructor.cpp @@ -219,7 +219,7 @@ JSC_DEFINE_HOST_FUNCTION(constructCipher, (JSC::JSGlobalObject * globalObject, J auto* zigGlobalObject = defaultGlobalObject(globalObject); JSC::Structure* structure = zigGlobalObject->m_JSCipherClassStructure.get(zigGlobalObject); - return JSC::JSValue::encode(JSCipher::create(vm, structure, globalObject, cipherKind, WTFMove(ctx), authTagLength, maxMessageSize)); + return JSC::JSValue::encode(JSCipher::create(vm, structure, globalObject, cipherKind, WTF::move(ctx), authTagLength, maxMessageSize)); } } // namespace Bun diff --git a/src/bun.js/bindings/node/crypto/JSCipherPrototype.cpp b/src/bun.js/bindings/node/crypto/JSCipherPrototype.cpp index bc9f5276ca..76b6103931 100644 --- a/src/bun.js/bindings/node/crypto/JSCipherPrototype.cpp +++ b/src/bun.js/bindings/node/crypto/JSCipherPrototype.cpp @@ -116,7 +116,7 @@ JSC_DEFINE_HOST_FUNCTION(jsCipherUpdate, (JSC::JSGlobalObject * lexicalGlobalObj if (!res && cipher->m_kind == CipherKind::Decipher && cipher->m_ctx.isCcmMode()) { cipher->m_pendingAuthFailed = true; - RELEASE_AND_RETURN(scope, JSValue::encode(JSUint8Array::create(lexicalGlobalObject, globalObject->JSBufferSubclassStructure(), WTFMove(outBuf), 0, bufLen))); + RELEASE_AND_RETURN(scope, JSValue::encode(JSUint8Array::create(lexicalGlobalObject, globalObject->JSBufferSubclassStructure(), WTF::move(outBuf), 0, bufLen))); } if (res != 1) { @@ -124,7 +124,7 @@ JSC_DEFINE_HOST_FUNCTION(jsCipherUpdate, (JSC::JSGlobalObject * lexicalGlobalObj return {}; } - RELEASE_AND_RETURN(scope, JSValue::encode(JSUint8Array::create(lexicalGlobalObject, globalObject->JSBufferSubclassStructure(), WTFMove(outBuf), 0, bufLen))); + RELEASE_AND_RETURN(scope, JSValue::encode(JSUint8Array::create(lexicalGlobalObject, globalObject->JSBufferSubclassStructure(), WTF::move(outBuf), 0, bufLen))); } JSC_DEFINE_HOST_FUNCTION(jsCipherFinal, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) @@ -192,7 +192,7 @@ JSC_DEFINE_HOST_FUNCTION(jsCipherFinal, (JSC::JSGlobalObject * lexicalGlobalObje return {}; } - RELEASE_AND_RETURN(scope, JSValue::encode(JSUint8Array::create(lexicalGlobalObject, globalObject->JSBufferSubclassStructure(), WTFMove(outBuf), 0, outLen))); + RELEASE_AND_RETURN(scope, JSValue::encode(JSUint8Array::create(lexicalGlobalObject, globalObject->JSBufferSubclassStructure(), WTF::move(outBuf), 0, outLen))); } JSC_DEFINE_HOST_FUNCTION(jsCipherSetAutoPadding, (JSC::JSGlobalObject * globalObject, JSC::CallFrame* callFrame)) diff --git a/src/bun.js/bindings/node/crypto/JSDiffieHellman.h b/src/bun.js/bindings/node/crypto/JSDiffieHellman.h index 3645d59084..5e21d84693 100644 --- a/src/bun.js/bindings/node/crypto/JSDiffieHellman.h +++ b/src/bun.js/bindings/node/crypto/JSDiffieHellman.h @@ -24,7 +24,7 @@ public: static JSDiffieHellman* create(JSC::VM& vm, JSC::Structure* structure, JSC::JSGlobalObject* globalObject, ncrypto::DHPointer&& dh) { - JSDiffieHellman* instance = new (NotNull, JSC::allocateCell(vm)) JSDiffieHellman(vm, structure, WTFMove(dh)); + JSDiffieHellman* instance = new (NotNull, JSC::allocateCell(vm)) JSDiffieHellman(vm, structure, WTF::move(dh)); instance->finishCreation(vm, globalObject); return instance; } @@ -48,7 +48,7 @@ public: private: JSDiffieHellman(JSC::VM& vm, JSC::Structure* structure, ncrypto::DHPointer&& dh) : Base(vm, structure) - , m_dh(WTFMove(dh)) + , m_dh(WTF::move(dh)) { } diff --git a/src/bun.js/bindings/node/crypto/JSDiffieHellmanConstructor.cpp b/src/bun.js/bindings/node/crypto/JSDiffieHellmanConstructor.cpp index 2dba02a437..8c281c45ce 100644 --- a/src/bun.js/bindings/node/crypto/JSDiffieHellmanConstructor.cpp +++ b/src/bun.js/bindings/node/crypto/JSDiffieHellmanConstructor.cpp @@ -160,7 +160,7 @@ JSC_DEFINE_HOST_FUNCTION(constructDiffieHellman, (JSC::JSGlobalObject * globalOb } } - dh = ncrypto::DHPointer::New(WTFMove(bn_p), WTFMove(bn_g)); + dh = ncrypto::DHPointer::New(WTF::move(bn_p), WTF::move(bn_g)); if (!dh) { return JSValue::encode(createError(globalObject, ErrorCode::ERR_INVALID_ARG_VALUE, "Invalid DH parameters"_s)); } @@ -170,7 +170,7 @@ JSC_DEFINE_HOST_FUNCTION(constructDiffieHellman, (JSC::JSGlobalObject * globalOb auto* zigGlobalObject = defaultGlobalObject(globalObject); JSC::Structure* structure = zigGlobalObject->m_JSDiffieHellmanClassStructure.get(zigGlobalObject); - return JSC::JSValue::encode(JSDiffieHellman::create(vm, structure, globalObject, WTFMove(dh))); + return JSC::JSValue::encode(JSDiffieHellman::create(vm, structure, globalObject, WTF::move(dh))); } } // namespace Bun diff --git a/src/bun.js/bindings/node/crypto/JSDiffieHellmanGroup.h b/src/bun.js/bindings/node/crypto/JSDiffieHellmanGroup.h index cb3d544fd6..5767929602 100644 --- a/src/bun.js/bindings/node/crypto/JSDiffieHellmanGroup.h +++ b/src/bun.js/bindings/node/crypto/JSDiffieHellmanGroup.h @@ -23,7 +23,7 @@ public: static JSDiffieHellmanGroup* create(JSC::VM& vm, JSC::Structure* structure, JSC::JSGlobalObject* globalObject, ncrypto::DHPointer&& dh) { - JSDiffieHellmanGroup* instance = new (NotNull, JSC::allocateCell(vm)) JSDiffieHellmanGroup(vm, structure, WTFMove(dh)); + JSDiffieHellmanGroup* instance = new (NotNull, JSC::allocateCell(vm)) JSDiffieHellmanGroup(vm, structure, WTF::move(dh)); instance->finishCreation(vm, globalObject); return instance; } @@ -49,7 +49,7 @@ public: private: JSDiffieHellmanGroup(JSC::VM& vm, JSC::Structure* structure, ncrypto::DHPointer&& dh) : Base(vm, structure) - , m_dh(WTFMove(dh)) + , m_dh(WTF::move(dh)) { } diff --git a/src/bun.js/bindings/node/crypto/JSDiffieHellmanGroupConstructor.cpp b/src/bun.js/bindings/node/crypto/JSDiffieHellmanGroupConstructor.cpp index 408dbc82a4..bbdc90ac92 100644 --- a/src/bun.js/bindings/node/crypto/JSDiffieHellmanGroupConstructor.cpp +++ b/src/bun.js/bindings/node/crypto/JSDiffieHellmanGroupConstructor.cpp @@ -61,7 +61,7 @@ JSC_DEFINE_HOST_FUNCTION(constructDiffieHellmanGroup, (JSC::JSGlobalObject * glo RETURN_IF_EXCEPTION(scope, {}); } - return JSC::JSValue::encode(JSDiffieHellmanGroup::create(vm, structure, globalObject, WTFMove(dh))); + return JSC::JSValue::encode(JSDiffieHellmanGroup::create(vm, structure, globalObject, WTF::move(dh))); } } // namespace Bun diff --git a/src/bun.js/bindings/node/crypto/JSECDH.h b/src/bun.js/bindings/node/crypto/JSECDH.h index ea0907e37e..9b1594117b 100644 --- a/src/bun.js/bindings/node/crypto/JSECDH.h +++ b/src/bun.js/bindings/node/crypto/JSECDH.h @@ -25,7 +25,7 @@ public: static JSECDH* create(JSC::VM& vm, JSC::Structure* structure, JSC::JSGlobalObject* globalObject, ncrypto::ECKeyPointer&& key, const EC_GROUP* group) { - JSECDH* instance = new (NotNull, JSC::allocateCell(vm)) JSECDH(vm, structure, WTFMove(key), group); + JSECDH* instance = new (NotNull, JSC::allocateCell(vm)) JSECDH(vm, structure, WTF::move(key), group); instance->finishCreation(vm, globalObject); return instance; } @@ -53,7 +53,7 @@ public: private: JSECDH(JSC::VM& vm, JSC::Structure* structure, ncrypto::ECKeyPointer&& key, const EC_GROUP* group) : Base(vm, structure) - , m_key(WTFMove(key)) + , m_key(WTF::move(key)) , m_group(group) { ASSERT(m_group); diff --git a/src/bun.js/bindings/node/crypto/JSECDHConstructor.cpp b/src/bun.js/bindings/node/crypto/JSECDHConstructor.cpp index 2e0d80edcc..f65e45710d 100644 --- a/src/bun.js/bindings/node/crypto/JSECDHConstructor.cpp +++ b/src/bun.js/bindings/node/crypto/JSECDHConstructor.cpp @@ -72,7 +72,7 @@ JSC_DEFINE_HOST_FUNCTION(constructECDH, (JSC::JSGlobalObject * globalObject, JSC JSC::Structure* structure = zigGlobalObject->m_JSECDHClassStructure.get(zigGlobalObject); const EC_GROUP* group = key.getGroup(); - return JSC::JSValue::encode(JSECDH::create(vm, structure, globalObject, WTFMove(key), group)); + return JSC::JSValue::encode(JSECDH::create(vm, structure, globalObject, WTF::move(key), group)); } JSC_DEFINE_HOST_FUNCTION(jsECDHConvertKey, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) diff --git a/src/bun.js/bindings/node/crypto/JSECDHPrototype.cpp b/src/bun.js/bindings/node/crypto/JSECDHPrototype.cpp index 4441e85219..0205462001 100644 --- a/src/bun.js/bindings/node/crypto/JSECDHPrototype.cpp +++ b/src/bun.js/bindings/node/crypto/JSECDHPrototype.cpp @@ -346,7 +346,7 @@ JSC_DEFINE_HOST_FUNCTION(jsECDHProtoFuncSetPrivateKey, (JSC::JSGlobalObject * gl } // Replace the old key with the new one - ecdh->m_key = WTFMove(newKey); + ecdh->m_key = WTF::move(newKey); ecdh->m_group = ecdh->m_key.getGroup(); // Return this for chaining diff --git a/src/bun.js/bindings/node/crypto/JSKeyObject.h b/src/bun.js/bindings/node/crypto/JSKeyObject.h index 49af4225ee..5d7af7ae3b 100644 --- a/src/bun.js/bindings/node/crypto/JSKeyObject.h +++ b/src/bun.js/bindings/node/crypto/JSKeyObject.h @@ -26,7 +26,7 @@ public: static JSKeyObject* create(JSC::VM& vm, JSC::Structure* structure, JSC::JSGlobalObject* globalObject, KeyObject&& keyObject) { - JSKeyObject* instance = new (NotNull, JSC::allocateCell(vm)) JSKeyObject(vm, structure, WTFMove(keyObject)); + JSKeyObject* instance = new (NotNull, JSC::allocateCell(vm)) JSKeyObject(vm, structure, WTF::move(keyObject)); instance->finishCreation(vm, globalObject); return instance; } @@ -46,7 +46,7 @@ public: JSKeyObject(JSC::VM& vm, JSC::Structure* structure, KeyObject&& keyObject) : Base(vm, structure) - , m_handle(WTFMove(keyObject)) + , m_handle(WTF::move(keyObject)) { } diff --git a/src/bun.js/bindings/node/crypto/JSPrivateKeyObject.h b/src/bun.js/bindings/node/crypto/JSPrivateKeyObject.h index 1b97bf3ddf..3573f76f1c 100644 --- a/src/bun.js/bindings/node/crypto/JSPrivateKeyObject.h +++ b/src/bun.js/bindings/node/crypto/JSPrivateKeyObject.h @@ -24,7 +24,7 @@ public: static JSPrivateKeyObject* create(JSC::VM& vm, JSC::Structure* structure, JSC::JSGlobalObject* globalObject, KeyObject&& keyObject) { - JSPrivateKeyObject* instance = new (NotNull, JSC::allocateCell(vm)) JSPrivateKeyObject(vm, structure, WTFMove(keyObject)); + JSPrivateKeyObject* instance = new (NotNull, JSC::allocateCell(vm)) JSPrivateKeyObject(vm, structure, WTF::move(keyObject)); instance->finishCreation(vm, globalObject); return instance; } @@ -50,7 +50,7 @@ public: void finishCreation(JSC::VM&, JSC::JSGlobalObject*); JSPrivateKeyObject(JSC::VM& vm, JSC::Structure* structure, KeyObject&& keyObject) - : Base(vm, structure, WTFMove(keyObject)) + : Base(vm, structure, WTF::move(keyObject)) { } }; diff --git a/src/bun.js/bindings/node/crypto/JSPublicKeyObject.h b/src/bun.js/bindings/node/crypto/JSPublicKeyObject.h index 4354f6a57c..0dd04f20c9 100644 --- a/src/bun.js/bindings/node/crypto/JSPublicKeyObject.h +++ b/src/bun.js/bindings/node/crypto/JSPublicKeyObject.h @@ -25,7 +25,7 @@ public: static JSPublicKeyObject* create(JSC::VM& vm, JSC::Structure* structure, JSC::JSGlobalObject* globalObject, KeyObject&& keyObject) { - JSPublicKeyObject* instance = new (NotNull, JSC::allocateCell(vm)) JSPublicKeyObject(vm, structure, WTFMove(keyObject)); + JSPublicKeyObject* instance = new (NotNull, JSC::allocateCell(vm)) JSPublicKeyObject(vm, structure, WTF::move(keyObject)); instance->finishCreation(vm, globalObject); return instance; } @@ -51,7 +51,7 @@ public: void finishCreation(JSC::VM&, JSC::JSGlobalObject*); JSPublicKeyObject(JSC::VM& vm, JSC::Structure* structure, KeyObject&& keyObject) - : Base(vm, structure, WTFMove(keyObject)) + : Base(vm, structure, WTF::move(keyObject)) { } }; diff --git a/src/bun.js/bindings/node/crypto/JSSecretKeyObject.h b/src/bun.js/bindings/node/crypto/JSSecretKeyObject.h index e0a2d95664..72a18a8acb 100644 --- a/src/bun.js/bindings/node/crypto/JSSecretKeyObject.h +++ b/src/bun.js/bindings/node/crypto/JSSecretKeyObject.h @@ -24,7 +24,7 @@ public: static JSSecretKeyObject* create(JSC::VM& vm, JSC::Structure* structure, JSC::JSGlobalObject* globalObject, KeyObject&& keyObject) { - JSSecretKeyObject* instance = new (NotNull, JSC::allocateCell(vm)) JSSecretKeyObject(vm, structure, WTFMove(keyObject)); + JSSecretKeyObject* instance = new (NotNull, JSC::allocateCell(vm)) JSSecretKeyObject(vm, structure, WTF::move(keyObject)); instance->finishCreation(vm, globalObject); return instance; } @@ -48,7 +48,7 @@ public: void finishCreation(JSC::VM&, JSC::JSGlobalObject*); JSSecretKeyObject(JSC::VM& vm, JSC::Structure* structure, KeyObject&& keyObject) - : Base(vm, structure, WTFMove(keyObject)) + : Base(vm, structure, WTF::move(keyObject)) { } }; diff --git a/src/bun.js/bindings/node/crypto/JSSign.cpp b/src/bun.js/bindings/node/crypto/JSSign.cpp index 7bb627dc5d..e5878a0baa 100644 --- a/src/bun.js/bindings/node/crypto/JSSign.cpp +++ b/src/bun.js/bindings/node/crypto/JSSign.cpp @@ -194,7 +194,7 @@ JSC_DEFINE_HOST_FUNCTION(jsSignProtoFuncInit, (JSC::JSGlobalObject * globalObjec } // Store the initialized context in the JSSign object - thisObject->m_mdCtx = WTFMove(mdCtx); + thisObject->m_mdCtx = WTF::move(mdCtx); return JSC::JSValue::encode(JSC::jsUndefined()); } @@ -303,7 +303,7 @@ JSUint8Array* signWithKey(JSC::JSGlobalObject* lexicalGlobalObject, JSSign* this } // Move mdCtx out of JSSign object - ncrypto::EVPMDCtxPointer mdCtx = WTFMove(thisObject->m_mdCtx); + ncrypto::EVPMDCtxPointer mdCtx = WTF::move(thisObject->m_mdCtx); // Validate DSA parameters if (!pkey.validateDsaParameters()) { @@ -394,7 +394,7 @@ JSUint8Array* signWithKey(JSC::JSGlobalObject* lexicalGlobalObject, JSSign* this // Create and return JSUint8Array auto* globalObject = defaultGlobalObject(lexicalGlobalObject); - RELEASE_AND_RETURN(scope, JSC::JSUint8Array::create(lexicalGlobalObject, globalObject->JSBufferSubclassStructure(), WTFMove(sigBuffer), 0, finalSignatureLength)); + RELEASE_AND_RETURN(scope, JSC::JSUint8Array::create(lexicalGlobalObject, globalObject->JSBufferSubclassStructure(), WTF::move(sigBuffer), 0, finalSignatureLength)); } JSC_DEFINE_HOST_FUNCTION(jsSignProtoFuncSign, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) @@ -446,7 +446,7 @@ JSC_DEFINE_HOST_FUNCTION(jsSignProtoFuncSign, (JSC::JSGlobalObject * lexicalGlob KeyObject keyObject; if (prepareResult.keyData) { - keyObject = KeyObject::create(CryptoKeyType::Private, WTFMove(*prepareResult.keyData)); + keyObject = KeyObject::create(CryptoKeyType::Private, WTF::move(*prepareResult.keyData)); } else { keyObject = KeyObject::getPublicOrPrivateKey( lexicalGlobalObject, @@ -456,7 +456,7 @@ JSC_DEFINE_HOST_FUNCTION(jsSignProtoFuncSign, (JSC::JSGlobalObject * lexicalGlob prepareResult.formatType, prepareResult.encodingType, prepareResult.cipher, - WTFMove(prepareResult.passphrase)); + WTF::move(prepareResult.passphrase)); RETURN_IF_EXCEPTION(scope, {}); } diff --git a/src/bun.js/bindings/node/crypto/JSVerify.cpp b/src/bun.js/bindings/node/crypto/JSVerify.cpp index c019c06f36..7d566662d7 100644 --- a/src/bun.js/bindings/node/crypto/JSVerify.cpp +++ b/src/bun.js/bindings/node/crypto/JSVerify.cpp @@ -200,7 +200,7 @@ JSC_DEFINE_HOST_FUNCTION(jsVerifyProtoFuncInit, (JSGlobalObject * globalObject, } // Store the initialized context in the JSVerify object - thisObject->m_mdCtx = WTFMove(mdCtx); + thisObject->m_mdCtx = WTF::move(mdCtx); return JSC::JSValue::encode(JSC::jsUndefined()); } @@ -339,7 +339,7 @@ JSC_DEFINE_HOST_FUNCTION(jsVerifyProtoFuncVerify, (JSGlobalObject * globalObject KeyObject keyObject; if (prepareResult.keyData) { - keyObject = KeyObject::create(CryptoKeyType::Public, WTFMove(*prepareResult.keyData)); + keyObject = KeyObject::create(CryptoKeyType::Public, WTF::move(*prepareResult.keyData)); } else { keyObject = KeyObject::getPublicOrPrivateKey( globalObject, @@ -349,7 +349,7 @@ JSC_DEFINE_HOST_FUNCTION(jsVerifyProtoFuncVerify, (JSGlobalObject * globalObject prepareResult.formatType, prepareResult.encodingType, prepareResult.cipher, - WTFMove(prepareResult.passphrase)); + WTF::move(prepareResult.passphrase)); RETURN_IF_EXCEPTION(scope, {}); } @@ -367,7 +367,7 @@ JSC_DEFINE_HOST_FUNCTION(jsVerifyProtoFuncVerify, (JSGlobalObject * globalObject RETURN_IF_EXCEPTION(scope, {}); // Move mdCtx out of JSVerify object to finalize it - ncrypto::EVPMDCtxPointer mdCtx = WTFMove(thisObject->m_mdCtx); + ncrypto::EVPMDCtxPointer mdCtx = WTF::move(thisObject->m_mdCtx); // Validate DSA parameters if (!keyPtr.validateDsaParameters()) { @@ -485,7 +485,7 @@ std::optional keyFromPublicString(JSGlobalObject* lexica auto publicRes = ncrypto::EVPKeyPointer::TryParsePublicKey(publicConfig, ncryptoBuf); if (publicRes) { - ncrypto::EVPKeyPointer keyPtr(WTFMove(publicRes.value)); + ncrypto::EVPKeyPointer keyPtr(WTF::move(publicRes.value)); return keyPtr; } @@ -494,7 +494,7 @@ std::optional keyFromPublicString(JSGlobalObject* lexica privateConfig.format = ncrypto::EVPKeyPointer::PKFormatType::PEM; auto privateRes = ncrypto::EVPKeyPointer::TryParsePrivateKey(privateConfig, ncryptoBuf); if (privateRes) { - ncrypto::EVPKeyPointer keyPtr(WTFMove(privateRes.value)); + ncrypto::EVPKeyPointer keyPtr(WTF::move(privateRes.value)); return keyPtr; } } diff --git a/src/bun.js/bindings/node/crypto/KeyObject.cpp b/src/bun.js/bindings/node/crypto/KeyObject.cpp index 0a1d9658b6..601f607ba2 100644 --- a/src/bun.js/bindings/node/crypto/KeyObject.cpp +++ b/src/bun.js/bindings/node/crypto/KeyObject.cpp @@ -298,7 +298,7 @@ JSValue toJS(JSGlobalObject* lexicalGlobalObject, ThrowScope& scope, const ncryp } memcpy(buf->data(), bptr->data, bptr->length); - return JSUint8Array::create(lexicalGlobalObject, globalObject->JSBufferSubclassStructure(), WTFMove(buf), 0, bptr->length); + return JSUint8Array::create(lexicalGlobalObject, globalObject->JSBufferSubclassStructure(), WTF::move(buf), 0, bptr->length); } JSC::JSValue KeyObject::exportPublic(JSC::JSGlobalObject* lexicalGlobalObject, JSC::ThrowScope& scope, const ncrypto::EVPKeyPointer::PublicKeyEncodingConfig& config) @@ -312,7 +312,7 @@ JSC::JSValue KeyObject::exportPublic(JSC::JSGlobalObject* lexicalGlobalObject, J KeyObject keyObject = *this; keyObject.type() = CryptoKeyType::Public; Structure* structure = globalObject->m_JSPublicKeyObjectClassStructure.get(lexicalGlobalObject); - JSPublicKeyObject* publicKey = JSPublicKeyObject::create(vm, structure, lexicalGlobalObject, WTFMove(keyObject)); + JSPublicKeyObject* publicKey = JSPublicKeyObject::create(vm, structure, lexicalGlobalObject, WTF::move(keyObject)); return publicKey; } @@ -340,7 +340,7 @@ JSValue KeyObject::exportPrivate(JSGlobalObject* lexicalGlobalObject, ThrowScope if (config.output_key_object) { KeyObject keyObject = *this; Structure* structure = globalObject->m_JSPrivateKeyObjectClassStructure.get(lexicalGlobalObject); - JSPrivateKeyObject* privateKey = JSPrivateKeyObject::create(vm, structure, lexicalGlobalObject, WTFMove(keyObject)); + JSPrivateKeyObject* privateKey = JSPrivateKeyObject::create(vm, structure, lexicalGlobalObject, WTF::move(keyObject)); return privateKey; } @@ -420,7 +420,7 @@ JSValue KeyObject::exportSecret(JSGlobalObject* lexicalGlobalObject, ThrowScope& return {}; } memcpy(buf->data(), key.begin(), key.size()); - return JSUint8Array::create(lexicalGlobalObject, globalObject->JSBufferSubclassStructure(), WTFMove(buf), 0, key.size()); + return JSUint8Array::create(lexicalGlobalObject, globalObject->JSBufferSubclassStructure(), WTF::move(buf), 0, key.size()); }; if (!optionsValue.isUndefined()) { @@ -648,7 +648,7 @@ static std::optional*> getSymmetricKey(const WebCore::Cryp KeyObject KeyObject::create(CryptoKeyType type, RefPtr&& data) { - return KeyObject(type, WTFMove(data)); + return KeyObject(type, WTF::move(data)); } WebCore::ExceptionOr KeyObject::create(WebCore::CryptoKey& key) @@ -664,7 +664,7 @@ WebCore::ExceptionOr KeyObject::create(WebCore::CryptoKey& key) WTF::Vector copy; copy.appendVector(*keyData.value()); - return create(WTFMove(copy)); + return create(WTF::move(copy)); } case WebCore::CryptoKeyType::Public: { @@ -678,7 +678,7 @@ WebCore::ExceptionOr KeyObject::create(WebCore::CryptoKey& key) EVP_PKEY_up_ref(keyValue.key); ncrypto::EVPKeyPointer keyPtr(keyValue.key); - return create(CryptoKeyType::Public, WTFMove(keyPtr)); + return create(CryptoKeyType::Public, WTF::move(keyPtr)); } case WebCore::CryptoKeyType::Private: { @@ -692,7 +692,7 @@ WebCore::ExceptionOr KeyObject::create(WebCore::CryptoKey& key) EVP_PKEY_up_ref(keyValue.key); ncrypto::EVPKeyPointer keyPtr(keyValue.key); - return create(CryptoKeyType::Private, WTFMove(keyPtr)); + return create(CryptoKeyType::Private, WTF::move(keyPtr)); } } @@ -701,14 +701,14 @@ WebCore::ExceptionOr KeyObject::create(WebCore::CryptoKey& key) KeyObject KeyObject::create(WTF::Vector&& symmetricKey) { - RefPtr data = KeyObjectData::create(WTFMove(symmetricKey)); - return KeyObject(CryptoKeyType::Secret, WTFMove(data)); + RefPtr data = KeyObjectData::create(WTF::move(symmetricKey)); + return KeyObject(CryptoKeyType::Secret, WTF::move(data)); } KeyObject KeyObject::create(CryptoKeyType type, ncrypto::EVPKeyPointer&& asymmetricKey) { - RefPtr data = KeyObjectData::create(WTFMove(asymmetricKey)); - return KeyObject(type, WTFMove(data)); + RefPtr data = KeyObjectData::create(WTF::move(asymmetricKey)); + return KeyObject(type, WTF::move(data)); } void KeyObject::getKeyObjectFromHandle(JSGlobalObject* globalObject, ThrowScope& scope, JSValue keyValue, const KeyObject& handle, PrepareAsymmetricKeyMode mode) @@ -880,7 +880,7 @@ KeyObject KeyObject::getKeyObjectHandleFromJwk(JSGlobalObject* globalObject, Thr return {}; } - return create(keyType, WTFMove(key)); + return create(keyType, WTF::move(key)); } case Kty::Ec: { auto crvView = getJwkStringView(globalObject, scope, jwk, "crv"_s, "key.crv"_s); @@ -942,7 +942,7 @@ KeyObject KeyObject::getKeyObjectHandleFromJwk(JSGlobalObject* globalObject, Thr auto key = EVPKeyPointer::New(); key.set(ec); - return create(keyType, WTFMove(key)); + return create(keyType, WTF::move(key)); } case Kty::Rsa: { auto nView = getJwkStringView(globalObject, scope, jwk, "n"_s, "key.n"_s); @@ -989,8 +989,8 @@ KeyObject KeyObject::getKeyObjectHandleFromJwk(JSGlobalObject* globalObject, Thr } } - auto key = EVPKeyPointer::NewRSA(WTFMove(rsa)); - return create(keyType, WTFMove(key)); + auto key = EVPKeyPointer::NewRSA(WTF::move(rsa)); + return create(keyType, WTF::move(key)); } } @@ -1041,7 +1041,7 @@ EVPKeyPointer::PrivateKeyEncodingConfig KeyObject::getPrivateKeyEncoding( } if (passphrase) { - config.passphrase = WTFMove(*passphrase); + config.passphrase = WTF::move(*passphrase); } } @@ -1071,13 +1071,13 @@ KeyObject KeyObject::getPublicOrPrivateKey( formatType, encodingType, cipher, - WTFMove(passphrase), + WTF::move(passphrase), KeyEncodingContext::Input); RETURN_IF_EXCEPTION(scope, {}); auto res = EVPKeyPointer::TryParsePrivateKey(config, buf); if (res) { - return create(CryptoKeyType::Private, WTFMove(res.value)); + return create(CryptoKeyType::Private, WTF::move(res.value)); } if (res.error.value() == EVPKeyPointer::PKParseError::NEED_PASSPHRASE) { @@ -1099,20 +1099,20 @@ KeyObject KeyObject::getPublicOrPrivateKey( formatType, encodingType, cipher, - WTFMove(passphrase), + WTF::move(passphrase), KeyEncodingContext::Input); RETURN_IF_EXCEPTION(scope, {}); if (config.format == EVPKeyPointer::PKFormatType::PEM) { auto publicRes = EVPKeyPointer::TryParsePublicKeyPEM(buf); if (publicRes) { - return create(CryptoKeyType::Public, WTFMove(publicRes.value)); + return create(CryptoKeyType::Public, WTF::move(publicRes.value)); } if (publicRes.error.value() == EVPKeyPointer::PKParseError::NOT_RECOGNIZED) { auto privateRes = EVPKeyPointer::TryParsePrivateKey(config, buf); if (privateRes) { - return create(CryptoKeyType::Public, WTFMove(privateRes.value)); + return create(CryptoKeyType::Public, WTF::move(privateRes.value)); } if (privateRes.error.value() == EVPKeyPointer::PKParseError::NEED_PASSPHRASE) { @@ -1145,7 +1145,7 @@ KeyObject KeyObject::getPublicOrPrivateKey( if (isPublic(config, buf)) { auto res = EVPKeyPointer::TryParsePublicKey(config, buf); if (res) { - return create(CryptoKeyType::Public, WTFMove(res.value)); + return create(CryptoKeyType::Public, WTF::move(res.value)); } throwCryptoError(globalObject, scope, res.openssl_error.value_or(0), "Failed to read asymmetric key"_s); @@ -1154,7 +1154,7 @@ KeyObject KeyObject::getPublicOrPrivateKey( auto res = EVPKeyPointer::TryParsePrivateKey(config, buf); if (res) { - return create(CryptoKeyType::Private, WTFMove(res.value)); + return create(CryptoKeyType::Private, WTF::move(res.value)); } if (res.error.value() == EVPKeyPointer::PKParseError::NEED_PASSPHRASE) { @@ -1343,7 +1343,7 @@ KeyObject::PrepareAsymmetricKeyResult KeyObject::prepareAsymmetricKey(JSC::JSGlo .formatType = config.format, .encodingType = config.type, .cipher = config.cipher, - .passphrase = WTFMove(config.passphrase), + .passphrase = WTF::move(config.passphrase), }; } } @@ -1360,7 +1360,7 @@ KeyObject::PrepareAsymmetricKeyResult KeyObject::prepareAsymmetricKey(JSC::JSGlo .formatType = config.format, .encodingType = config.type, .cipher = config.cipher, - .passphrase = WTFMove(config.passphrase), + .passphrase = WTF::move(config.passphrase), }; } @@ -1377,7 +1377,7 @@ KeyObject::PrepareAsymmetricKeyResult KeyObject::prepareAsymmetricKey(JSC::JSGlo .formatType = config.format, .encodingType = config.type, .cipher = config.cipher, - .passphrase = WTFMove(config.passphrase), + .passphrase = WTF::move(config.passphrase), }; } @@ -1460,14 +1460,14 @@ KeyObject KeyObject::prepareSecretKey(JSGlobalObject* globalObject, ThrowScope& Vector copy; copy.append(view->span()); - return create(WTFMove(copy)); + return create(WTF::move(copy)); } // TODO(dylan-conway): avoid copying by keeping the buffer alive if (auto* view = jsDynamicCast(keyValue)) { Vector copy; copy.append(view->span()); - return create(WTFMove(copy)); + return create(WTF::move(copy)); } // TODO(dylan-conway): avoid copying by keeping the buffer alive @@ -1475,7 +1475,7 @@ KeyObject KeyObject::prepareSecretKey(JSGlobalObject* globalObject, ThrowScope& auto* impl = arrayBuffer->impl(); Vector copy; copy.append(impl->span()); - return create(WTFMove(copy)); + return create(WTF::move(copy)); } if (bufferOnly) { diff --git a/src/bun.js/bindings/node/crypto/KeyObject.h b/src/bun.js/bindings/node/crypto/KeyObject.h index f33fb40382..d783cf9102 100644 --- a/src/bun.js/bindings/node/crypto/KeyObject.h +++ b/src/bun.js/bindings/node/crypto/KeyObject.h @@ -16,7 +16,7 @@ class KeyObject { WTF_MAKE_TZONE_ALLOCATED(KeyObject); KeyObject(WebCore::CryptoKeyType type, RefPtr&& data) - : m_data(WTFMove(data)) + : m_data(WTF::move(data)) , m_type(type) { } diff --git a/src/bun.js/bindings/node/crypto/KeyObjectData.h b/src/bun.js/bindings/node/crypto/KeyObjectData.h index 46ccfda7e2..ce7450afb1 100644 --- a/src/bun.js/bindings/node/crypto/KeyObjectData.h +++ b/src/bun.js/bindings/node/crypto/KeyObjectData.h @@ -8,12 +8,12 @@ struct KeyObjectData : ThreadSafeRefCounted { WTF_MAKE_TZONE_ALLOCATED(KeyObjectData); KeyObjectData(WTF::Vector&& symmetricKey) - : symmetricKey(WTFMove(symmetricKey)) + : symmetricKey(WTF::move(symmetricKey)) { } KeyObjectData(ncrypto::EVPKeyPointer&& asymmetricKey) - : asymmetricKey(WTFMove(asymmetricKey)) + : asymmetricKey(WTF::move(asymmetricKey)) { } @@ -22,12 +22,12 @@ public: static RefPtr create(WTF::Vector&& symmetricKey) { - return adoptRef(*new KeyObjectData(WTFMove(symmetricKey))); + return adoptRef(*new KeyObjectData(WTF::move(symmetricKey))); } static RefPtr create(ncrypto::EVPKeyPointer&& asymmetricKey) { - return adoptRef(*new KeyObjectData(WTFMove(asymmetricKey))); + return adoptRef(*new KeyObjectData(WTF::move(asymmetricKey))); } WTF::Vector symmetricKey; diff --git a/src/bun.js/bindings/node/crypto/node_crypto_binding.cpp b/src/bun.js/bindings/node/crypto/node_crypto_binding.cpp index e490ebfabd..e8c2d019da 100644 --- a/src/bun.js/bindings/node/crypto/node_crypto_binding.cpp +++ b/src/bun.js/bindings/node/crypto/node_crypto_binding.cpp @@ -197,7 +197,7 @@ JSC_DEFINE_HOST_FUNCTION(jsCertExportChallenge, (JSC::JSGlobalObject * lexicalGl return JSValue::encode(jsEmptyString(vm)); } - auto* bufferResult = JSC::JSUint8Array::create(lexicalGlobalObject, static_cast(lexicalGlobalObject)->JSBufferSubclassStructure(), WTFMove(result), 0, cert.len); + auto* bufferResult = JSC::JSUint8Array::create(lexicalGlobalObject, static_cast(lexicalGlobalObject)->JSBufferSubclassStructure(), WTF::move(result), 0, cert.len); RETURN_IF_EXCEPTION(scope, {}); return JSValue::encode(bufferResult); diff --git a/src/bun.js/bindings/webcore/AbortSignal.cpp b/src/bun.js/bindings/webcore/AbortSignal.cpp index 3b4f2217c6..1e36c497db 100644 --- a/src/bun.js/bindings/webcore/AbortSignal.cpp +++ b/src/bun.js/bindings/webcore/AbortSignal.cpp @@ -191,7 +191,7 @@ void AbortSignal::signalAbort(JSC::JSValue reason) for (Ref dependentSignal : std::exchange(m_dependentSignals, {})) { if (!dependentSignal->aborted()) { dependentSignal->markAborted(reason); - dependentSignalsToAbort.append(WTFMove(dependentSignal)); + dependentSignalsToAbort.append(WTF::move(dependentSignal)); } } @@ -222,7 +222,7 @@ void AbortSignal::cleanNativeBindings(void* ref) return ctx == ref; }); - std::exchange(m_native_callbacks, WTFMove(callbacks)); + std::exchange(m_native_callbacks, WTF::move(callbacks)); this->eventListenersDidChange(); } @@ -257,7 +257,7 @@ uint32_t AbortSignal::addAbortAlgorithmToSignal(AbortSignal& signal, RefhandleEvent(signal.jsReason(*signal.scriptExecutionContext()->jsGlobalObject())); return 0; } - return signal.addAlgorithm([algorithm = WTFMove(algorithm)](JSC::JSValue value) mutable { + return signal.addAlgorithm([algorithm = WTF::move(algorithm)](JSC::JSValue value) mutable { algorithm->handleEvent(value); }); } @@ -269,7 +269,7 @@ void AbortSignal::removeAbortAlgorithmFromSignal(AbortSignal& signal, uint32_t a uint32_t AbortSignal::addAlgorithm(Algorithm&& algorithm) { - m_algorithms.append(std::make_pair(++m_algorithmIdentifier, WTFMove(algorithm))); + m_algorithms.append(std::make_pair(++m_algorithmIdentifier, WTF::move(algorithm))); return m_algorithmIdentifier; } diff --git a/src/bun.js/bindings/webcore/ActiveDOMObject.cpp b/src/bun.js/bindings/webcore/ActiveDOMObject.cpp index d2662f8e9f..39eb5d4d02 100644 --- a/src/bun.js/bindings/webcore/ActiveDOMObject.cpp +++ b/src/bun.js/bindings/webcore/ActiveDOMObject.cpp @@ -134,7 +134,7 @@ // auto* context = scriptExecutionContext(); // if (!context) // return; -// context->eventLoop().queueTask(source, WTFMove(function)); +// context->eventLoop().queueTask(source, WTF::move(function)); // } // class ActiveDOMObjectEventDispatchTask : public EventLoopTask { @@ -142,7 +142,7 @@ // ActiveDOMObjectEventDispatchTask(TaskSource source, EventLoopTaskGroup& group, ActiveDOMObject& object, Function&& dispatchEvent) // : EventLoopTask(source, group) // , m_object(object) -// , m_dispatchEvent(WTFMove(dispatchEvent)) +// , m_dispatchEvent(WTF::move(dispatchEvent)) // { // ++m_object.m_pendingActivityInstanceCount; // } @@ -173,10 +173,10 @@ // if (!context) // return; // auto& eventLoopTaskGroup = context->eventLoop(); -// auto task = makeUnique(source, eventLoopTaskGroup, *this, [target = Ref { target }, event = WTFMove(event)] { +// auto task = makeUnique(source, eventLoopTaskGroup, *this, [target = Ref { target }, event = WTF::move(event)] { // target->dispatchEvent(event); // }); -// eventLoopTaskGroup.queueTask(WTFMove(task)); +// eventLoopTaskGroup.queueTask(WTF::move(task)); // } // void ActiveDOMObject::queueCancellableTaskToDispatchEventInternal(EventTarget& target, TaskSource source, TaskCancellationGroup& cancellationGroup, Ref&& event) @@ -186,10 +186,10 @@ // if (!context) // return; // auto& eventLoopTaskGroup = context->eventLoop(); -// auto task = makeUnique(source, eventLoopTaskGroup, *this, CancellableTask(cancellationGroup, [target = Ref { target }, event = WTFMove(event)] { +// auto task = makeUnique(source, eventLoopTaskGroup, *this, CancellableTask(cancellationGroup, [target = Ref { target }, event = WTF::move(event)] { // target->dispatchEvent(event); // })); -// eventLoopTaskGroup.queueTask(WTFMove(task)); +// eventLoopTaskGroup.queueTask(WTF::move(task)); // } // } // namespace WebCore diff --git a/src/bun.js/bindings/webcore/ActiveDOMObject.h b/src/bun.js/bindings/webcore/ActiveDOMObject.h index 52daebc6fa..99a444e352 100644 --- a/src/bun.js/bindings/webcore/ActiveDOMObject.h +++ b/src/bun.js/bindings/webcore/ActiveDOMObject.h @@ -106,7 +106,7 @@ // template // static void queueTaskKeepingObjectAlive(T& object, TaskSource source, Function&& task) // { -// object.queueTaskInEventLoop(source, [protectedObject = Ref { object }, activity = object.ActiveDOMObject::makePendingActivity(object), task = WTFMove(task)] () { +// object.queueTaskInEventLoop(source, [protectedObject = Ref { object }, activity = object.ActiveDOMObject::makePendingActivity(object), task = WTF::move(task)] () { // task(); // }); // } @@ -114,8 +114,8 @@ // template // static void queueCancellableTaskKeepingObjectAlive(T& object, TaskSource source, TaskCancellationGroup& cancellationGroup, Function&& task) // { -// CancellableTask cancellableTask(cancellationGroup, WTFMove(task)); -// object.queueTaskInEventLoop(source, [protectedObject = Ref { object }, activity = object.ActiveDOMObject::makePendingActivity(object), cancellableTask = WTFMove(cancellableTask)]() mutable { +// CancellableTask cancellableTask(cancellationGroup, WTF::move(task)); +// object.queueTaskInEventLoop(source, [protectedObject = Ref { object }, activity = object.ActiveDOMObject::makePendingActivity(object), cancellableTask = WTF::move(cancellableTask)]() mutable { // cancellableTask(); // }); // } @@ -123,13 +123,13 @@ // template // static void queueTaskToDispatchEvent(EventTargetType& target, TaskSource source, Ref&& event) // { -// target.queueTaskToDispatchEventInternal(target, source, WTFMove(event)); +// target.queueTaskToDispatchEventInternal(target, source, WTF::move(event)); // } // template // static void queueCancellableTaskToDispatchEvent(EventTargetType& target, TaskSource source, TaskCancellationGroup& cancellationGroup, Ref&& event) // { -// target.queueCancellableTaskToDispatchEventInternal(target, source, cancellationGroup, WTFMove(event)); +// target.queueCancellableTaskToDispatchEventInternal(target, source, cancellationGroup, WTF::move(event)); // } // protected: diff --git a/src/bun.js/bindings/webcore/AddEventListenerOptions.h b/src/bun.js/bindings/webcore/AddEventListenerOptions.h index 79128ee152..ddf74b529b 100644 --- a/src/bun.js/bindings/webcore/AddEventListenerOptions.h +++ b/src/bun.js/bindings/webcore/AddEventListenerOptions.h @@ -36,7 +36,7 @@ struct AddEventListenerOptions : EventListenerOptions { : EventListenerOptions(capture) , passive(passive) , once(once) - , signal(WTFMove(signal)) + , signal(WTF::move(signal)) { } diff --git a/src/bun.js/bindings/webcore/BroadcastChannel.cpp b/src/bun.js/bindings/webcore/BroadcastChannel.cpp index bf4dab991e..f0b3ebbbb5 100644 --- a/src/bun.js/bindings/webcore/BroadcastChannel.cpp +++ b/src/bun.js/bindings/webcore/BroadcastChannel.cpp @@ -71,7 +71,7 @@ static UncheckedKeyHashMap, public Identified { @@ -123,7 +123,7 @@ void BroadcastChannel::MainThreadBridge::ensureOnMainThread(Functionm_name, protectedThis->identifier()); channelToContextIdentifier().add(protectedThis->identifier(), contextId); }); @@ -142,7 +142,7 @@ void BroadcastChannel::MainThreadBridge::unregisterChannel() { Ref protectedThis { *this }; - ScriptExecutionContext::ensureOnMainThread([protectedThis = WTFMove(protectedThis)](auto& context) { + ScriptExecutionContext::ensureOnMainThread([protectedThis = WTF::move(protectedThis)](auto& context) { context.broadcastChannelRegistry().unregisterChannel(protectedThis->m_name, protectedThis->identifier()); channelToContextIdentifier().remove(protectedThis->identifier()); }); @@ -152,8 +152,8 @@ void BroadcastChannel::MainThreadBridge::postMessage(Ref& { Ref protectedThis { *this }; - ScriptExecutionContext::ensureOnMainThread([protectedThis = WTFMove(protectedThis), message = WTFMove(message)](auto& context) mutable { - context.broadcastChannelRegistry().postMessage(protectedThis->m_name, protectedThis->identifier(), WTFMove(message)); + ScriptExecutionContext::ensureOnMainThread([protectedThis = WTF::move(protectedThis), message = WTF::move(message)](auto& context) mutable { + context.broadcastChannelRegistry().postMessage(protectedThis->m_name, protectedThis->identifier(), WTF::move(message)); }); } @@ -237,14 +237,14 @@ void BroadcastChannel::dispatchMessageTo(BroadcastChannelIdentifier channelIdent if (!contextIdentifier) return; - ScriptExecutionContext::ensureOnContextThread(contextIdentifier, [channelIdentifier, message = WTFMove(message)](auto&) mutable { + ScriptExecutionContext::ensureOnContextThread(contextIdentifier, [channelIdentifier, message = WTF::move(message)](auto&) mutable { RefPtr channel; { Locker locker { allBroadcastChannelsLock }; channel = allBroadcastChannels().get(channelIdentifier); } if (channel) - channel->dispatchMessage(WTFMove(message)); + channel->dispatchMessage(WTF::move(message)); }); } @@ -256,7 +256,7 @@ void BroadcastChannel::dispatchMessage(Ref&& message) if (m_isClosed) return; - ScriptExecutionContext::postTaskTo(contextIdForBroadcastChannelId(m_mainThreadBridge->identifier()), [this, message = WTFMove(message)](ScriptExecutionContext& context) mutable { + ScriptExecutionContext::postTaskTo(contextIdForBroadcastChannelId(m_mainThreadBridge->identifier()), [this, message = WTF::move(message)](ScriptExecutionContext& context) mutable { if (m_isClosed) return; @@ -267,7 +267,7 @@ void BroadcastChannel::dispatchMessage(Ref&& message) auto& vm = JSC::getVM(globalObject); auto scope = DECLARE_CATCH_SCOPE(vm); Vector> dummyPorts; - auto event = MessageEvent::create(*globalObject, WTFMove(message), {}, {}, nullptr, WTFMove(dummyPorts)); + auto event = MessageEvent::create(*globalObject, WTF::move(message), {}, {}, nullptr, WTF::move(dummyPorts)); if (scope.exception()) [[unlikely]] { // Currently, we assume that the only way we can get here is if we have a termination. RELEASE_ASSERT(vm.hasPendingTerminationException()); diff --git a/src/bun.js/bindings/webcore/BufferSource.h b/src/bun.js/bindings/webcore/BufferSource.h index 5e8f688a3d..2915b6f6d1 100644 --- a/src/bun.js/bindings/webcore/BufferSource.h +++ b/src/bun.js/bindings/webcore/BufferSource.h @@ -39,7 +39,7 @@ public: BufferSource() {} BufferSource(VariantType&& variant) - : m_variant(WTFMove(variant)) + : m_variant(WTF::move(variant)) { } diff --git a/src/bun.js/bindings/webcore/BunBroadcastChannelRegistry.cpp b/src/bun.js/bindings/webcore/BunBroadcastChannelRegistry.cpp index 258d297170..e8155aa993 100644 --- a/src/bun.js/bindings/webcore/BunBroadcastChannelRegistry.cpp +++ b/src/bun.js/bindings/webcore/BunBroadcastChannelRegistry.cpp @@ -45,7 +45,7 @@ void BunBroadcastChannelRegistry::postMessageLocally(const String& name, Broadca void BunBroadcastChannelRegistry::postMessageToRemote(const String& name, MessageWithMessagePorts&& message) { - // auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler)); + // auto callbackAggregator = CallbackAggregator::create(WTF::move(completionHandler)); // PartitionedSecurityOrigin origin { clientOrigin.topOrigin.securityOrigin(), clientOrigin.clientOrigin.securityOrigin() }; // postMessageLocally(origin, name, std::nullopt, *message.message, callbackAggregator.copyRef()); } diff --git a/src/bun.js/bindings/webcore/CallbackResult.h b/src/bun.js/bindings/webcore/CallbackResult.h index abedf5a2ff..f0ce0cc7d6 100644 --- a/src/bun.js/bindings/webcore/CallbackResult.h +++ b/src/bun.js/bindings/webcore/CallbackResult.h @@ -64,7 +64,7 @@ template inline CallbackResult::CallbackResult( } template inline CallbackResult::CallbackResult(ReturnType&& returnValue) - : m_value(WTFMove(returnValue)) + : m_value(WTF::move(returnValue)) { } @@ -76,7 +76,7 @@ template inline CallbackResultType CallbackResult inline auto CallbackResult::releaseReturnValue() -> ReturnType&& { ASSERT(m_value.has_value()); - return WTFMove(m_value.value()); + return WTF::move(m_value.value()); } // Void specialization diff --git a/src/bun.js/bindings/webcore/DOMPromiseProxy.h b/src/bun.js/bindings/webcore/DOMPromiseProxy.h index 765528460b..573ee5d517 100644 --- a/src/bun.js/bindings/webcore/DOMPromiseProxy.h +++ b/src/bun.js/bindings/webcore/DOMPromiseProxy.h @@ -206,7 +206,7 @@ inline void DOMPromiseProxy::reject(Exception exception, RejectAsHandle { ASSERT(!m_valueOrException); - m_valueOrException = ExceptionOr { WTFMove(exception) }; + m_valueOrException = ExceptionOr { WTF::move(exception) }; for (auto& deferredPromise : m_deferredPromises) deferredPromise->reject(m_valueOrException->exception(), rejectAsHandled); } @@ -260,7 +260,7 @@ inline void DOMPromiseProxy::resolve() inline void DOMPromiseProxy::reject(Exception exception, RejectAsHandled rejectAsHandled) { ASSERT(!m_valueOrException); - m_valueOrException = ExceptionOr { WTFMove(exception) }; + m_valueOrException = ExceptionOr { WTF::move(exception) }; for (auto& deferredPromise : m_deferredPromises) deferredPromise->reject(m_valueOrException->exception(), rejectAsHandled); } @@ -276,7 +276,7 @@ inline DOMPromiseProxyWithResolveCallback::DOMPromiseProxyWithResolveCa template inline DOMPromiseProxyWithResolveCallback::DOMPromiseProxyWithResolveCallback(ResolveCallback&& function) - : m_resolveCallback(WTFMove(function)) + : m_resolveCallback(WTF::move(function)) { } @@ -344,7 +344,7 @@ inline void DOMPromiseProxyWithResolveCallback::reject(Exception except { ASSERT(!m_valueOrException); - m_valueOrException = ExceptionOr { WTFMove(exception) }; + m_valueOrException = ExceptionOr { WTF::move(exception) }; for (auto& deferredPromise : m_deferredPromises) deferredPromise->reject(m_valueOrException->exception(), rejectAsHandled); } diff --git a/src/bun.js/bindings/webcore/ErrorCallback.cpp b/src/bun.js/bindings/webcore/ErrorCallback.cpp index 5c9aab344c..f54160caa2 100644 --- a/src/bun.js/bindings/webcore/ErrorCallback.cpp +++ b/src/bun.js/bindings/webcore/ErrorCallback.cpp @@ -33,7 +33,7 @@ namespace WebCore { void ErrorCallback::scheduleCallback(ScriptExecutionContext& context, Ref&& exception) { - context.postTask([protectedThis = Ref { *this }, exception = WTFMove(exception)](ScriptExecutionContext&) { + context.postTask([protectedThis = Ref { *this }, exception = WTF::move(exception)](ScriptExecutionContext&) { protectedThis->handleEvent(exception); }); } diff --git a/src/bun.js/bindings/webcore/Event.cpp b/src/bun.js/bindings/webcore/Event.cpp index 0e4bd33690..f2619e598b 100644 --- a/src/bun.js/bindings/webcore/Event.cpp +++ b/src/bun.js/bindings/webcore/Event.cpp @@ -126,7 +126,7 @@ void Event::setTarget(RefPtr&& target) if (m_target == target) return; - m_target = WTFMove(target); + m_target = WTF::move(target); if (m_target) receivedTarget(); } diff --git a/src/bun.js/bindings/webcore/EventContext.h b/src/bun.js/bindings/webcore/EventContext.h index 41214c9d3c..98c1479bb1 100644 --- a/src/bun.js/bindings/webcore/EventContext.h +++ b/src/bun.js/bindings/webcore/EventContext.h @@ -106,7 +106,7 @@ private: inline EventContext::EventContext(Type type, Node* node, RefPtr&& currentTarget, EventTarget* origin, int closedShadowDepth, bool currentTargetIsInShadowTree) : m_node { node } - , m_currentTarget { WTFMove(currentTarget) } + , m_currentTarget { WTF::move(currentTarget) } , m_target { origin } , m_closedShadowDepth { closedShadowDepth } , m_currentTargetIsInShadowTree { currentTargetIsInShadowTree } diff --git a/src/bun.js/bindings/webcore/EventEmitter.cpp b/src/bun.js/bindings/webcore/EventEmitter.cpp index afdbedab4c..c9ab566b41 100644 --- a/src/bun.js/bindings/webcore/EventEmitter.cpp +++ b/src/bun.js/bindings/webcore/EventEmitter.cpp @@ -265,7 +265,7 @@ bool EventEmitter::innerInvokeEventListeners(const Identifier& eventType, Simple errorValue = JSC::jsUndefined(); } expcep.append(errorValue); - fireEventListeners(errorIdentifier, WTFMove(expcep)); + fireEventListeners(errorIdentifier, WTF::move(expcep)); } } } diff --git a/src/bun.js/bindings/webcore/EventFactory.cpp b/src/bun.js/bindings/webcore/EventFactory.cpp index e920afe217..062a6aac8e 100644 --- a/src/bun.js/bindings/webcore/EventFactory.cpp +++ b/src/bun.js/bindings/webcore/EventFactory.cpp @@ -37,277 +37,277 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj { switch (impl->eventInterface()) { // case AnimationEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // case AnimationPlaybackEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #if ENABLE(APPLE_PAY) // case ApplePayCancelEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(APPLE_PAY_COUPON_CODE) // case ApplePayCouponCodeChangedEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(APPLE_PAY) // case ApplePayPaymentAuthorizedEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(APPLE_PAY) // case ApplePayPaymentMethodSelectedEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(APPLE_PAY) // case ApplePayShippingContactSelectedEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(APPLE_PAY) // case ApplePayShippingMethodSelectedEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(APPLE_PAY) // case ApplePayValidateMerchantEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(WEB_AUDIO) // case AudioProcessingEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif case EventInterfaceType: { - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } // case BeforeUnloadEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #if ENABLE(MEDIA_RECORDER) // case BlobEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // case ClipboardEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); case CloseEventInterfaceType: { - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } // case CompositionEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // case CustomEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #if ENABLE(DEVICE_ORIENTATION) // case DeviceMotionEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(DEVICE_ORIENTATION) // case DeviceOrientationEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // case DragEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); case ErrorEventInterfaceType: { - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } // #if ENABLE(SERVICE_WORKER) // case ExtendableEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(SERVICE_WORKER) // case ExtendableMessageEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(SERVICE_WORKER) // case FetchEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // case FocusEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // case FormDataEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #if ENABLE(GAMEPAD) // case GamepadEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(IOS_GESTURE_EVENTS) || ENABLE(MAC_GESTURE_EVENTS) // case GestureEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // case HashChangeEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // case IDBVersionChangeEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // case InputEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // case KeyboardEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #if ENABLE(ENCRYPTED_MEDIA) // case MediaEncryptedEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(ENCRYPTED_MEDIA) // case MediaKeyMessageEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // case MediaQueryListEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #if ENABLE(MEDIA_RECORDER) // case MediaRecorderErrorEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(MEDIA_STREAM) // case MediaStreamTrackEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(PAYMENT_REQUEST) // case MerchantValidationEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif case MessageEventInterfaceType: - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); // case MouseEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // case MutationEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #if ENABLE(NOTIFICATION_EVENT) // case NotificationEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(WEB_AUDIO) // case OfflineAudioCompletionEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(MEDIA_STREAM) // case OverconstrainedErrorEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // case OverflowEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // case PageTransitionEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #if ENABLE(PAYMENT_REQUEST) // case PaymentMethodChangeEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(PAYMENT_REQUEST) // case PaymentRequestUpdateEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(PICTURE_IN_PICTURE_API) // case PictureInPictureEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // case PointerEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // case PopStateEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // case ProgressEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // case PromiseRejectionEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #if ENABLE(SERVICE_WORKER) // case PushEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(SERVICE_WORKER) // case PushSubscriptionChangeEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(WEB_RTC) // case RTCDTMFToneChangeEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(WEB_RTC) // case RTCDataChannelEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(WEB_RTC) // case RTCErrorEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(WEB_RTC) // case RTCPeerConnectionIceErrorEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(WEB_RTC) // case RTCPeerConnectionIceEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(WEB_RTC) // case RTCRtpSFrameTransformErrorEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(WEB_RTC) // case RTCTrackEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(WEB_RTC) // case RTCTransformEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // case SVGZoomEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // case SecurityPolicyViolationEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // case SpeechRecognitionErrorEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // case SpeechRecognitionEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #if ENABLE(SPEECH_SYNTHESIS) // case SpeechSynthesisErrorEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(SPEECH_SYNTHESIS) // case SpeechSynthesisEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // case StorageEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // case SubmitEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // case TextEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #if ENABLE(TOUCH_EVENTS) // case TouchEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(VIDEO) // case TrackEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // case TransitionEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // case UIEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #if ENABLE(WEBGL) // case WebGLContextEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(LEGACY_ENCRYPTED_MEDIA) // case WebKitMediaKeyMessageEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(LEGACY_ENCRYPTED_MEDIA) // case WebKitMediaKeyNeededEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(WIRELESS_PLAYBACK_TARGET) // case WebKitPlaybackTargetAvailabilityEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // case WheelEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // case XMLHttpRequestProgressEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #if ENABLE(WEBXR) // case XRInputSourceEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(WEBXR) // case XRInputSourcesChangeEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(WEBXR) // case XRReferenceSpaceEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // #if ENABLE(WEBXR) // case XRSessionEventInterfaceType: - // return createWrapper(globalObject, WTFMove(impl)); + // return createWrapper(globalObject, WTF::move(impl)); // #endif // } default: { @@ -315,7 +315,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj } } - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } } // namespace WebCore diff --git a/src/bun.js/bindings/webcore/EventInit.h b/src/bun.js/bindings/webcore/EventInit.h index 0e588593c5..1b7fd80941 100644 --- a/src/bun.js/bindings/webcore/EventInit.h +++ b/src/bun.js/bindings/webcore/EventInit.h @@ -33,7 +33,7 @@ struct EventInit { bool composed { false }; template void encode(Encoder&) const; - template static WARN_UNUSED_RETURN bool decode(Decoder&, EventInit&); + template WARN_UNUSED_RETURN static bool decode(Decoder&, EventInit&); }; template diff --git a/src/bun.js/bindings/webcore/EventListenerMap.cpp b/src/bun.js/bindings/webcore/EventListenerMap.cpp index be3493744f..468b4e00ba 100644 --- a/src/bun.js/bindings/webcore/EventListenerMap.cpp +++ b/src/bun.js/bindings/webcore/EventListenerMap.cpp @@ -110,7 +110,7 @@ void EventListenerMap::replace(const AtomString& eventType, EventListener& oldLi ASSERT(index != notFound); auto& registeredListener = listeners->at(index); registeredListener->markAsRemoved(); - registeredListener = RegisteredEventListener::create(WTFMove(newListener), options); + registeredListener = RegisteredEventListener::create(WTF::move(newListener), options); } bool EventListenerMap::add(const AtomString& eventType, Ref&& listener, const RegisteredEventListener::Options& options) @@ -120,11 +120,11 @@ bool EventListenerMap::add(const AtomString& eventType, Ref&& lis if (auto* listeners = find(eventType)) { if (findListener(*listeners, listener, options.capture) != notFound) return false; // Duplicate listener. - listeners->append(RegisteredEventListener::create(WTFMove(listener), options)); + listeners->append(RegisteredEventListener::create(WTF::move(listener), options)); return true; } - m_entries.append({ eventType, EventListenerVector { RegisteredEventListener::create(WTFMove(listener), options) } }); + m_entries.append({ eventType, EventListenerVector { RegisteredEventListener::create(WTF::move(listener), options) } }); return true; } diff --git a/src/bun.js/bindings/webcore/FetchHeaders.cpp b/src/bun.js/bindings/webcore/FetchHeaders.cpp index 970c0a18ea..f241e7e0e8 100644 --- a/src/bun.js/bindings/webcore/FetchHeaders.cpp +++ b/src/bun.js/bindings/webcore/FetchHeaders.cpp @@ -169,7 +169,7 @@ ExceptionOr> FetchHeaders::create(std::optional&& header return result.releaseException(); } - return adoptRef(*new FetchHeaders { Guard::None, WTFMove(headers) }); + return adoptRef(*new FetchHeaders { Guard::None, WTF::move(headers) }); } ExceptionOr FetchHeaders::fill(const Init& headerInit) @@ -184,7 +184,7 @@ ExceptionOr FetchHeaders::fill(const FetchHeaders& otherHeaders) headers.commonHeaders().appendVector(otherHeaders.m_headers.commonHeaders()); headers.uncommonHeaders().appendVector(otherHeaders.m_headers.uncommonHeaders()); headers.getSetCookieHeaders().appendVector(otherHeaders.m_headers.getSetCookieHeaders()); - setInternalHeaders(WTFMove(headers)); + setInternalHeaders(WTF::move(headers)); m_updateCounter++; return {}; } @@ -343,7 +343,7 @@ std::optional> FetchHeaders::Iterator::next() if (key.isNull()) { if (m_cookieIndex < setCookieHeaders.size()) { String value = setCookieHeaders[m_cookieIndex++]; - return KeyValuePair { WTF::httpHeaderNameStringImpl(HTTPHeaderName::SetCookie), WTFMove(value) }; + return KeyValuePair { WTF::httpHeaderNameStringImpl(HTTPHeaderName::SetCookie), WTF::move(value) }; } m_currentIndex++; continue; @@ -352,7 +352,7 @@ std::optional> FetchHeaders::Iterator::next() m_currentIndex++; auto value = m_headers->m_headers.get(key); if (!value.isNull()) - return KeyValuePair { WTFMove(key), WTFMove(value) }; + return KeyValuePair { WTF::move(key), WTF::move(value) }; } return std::nullopt; diff --git a/src/bun.js/bindings/webcore/FetchHeaders.h b/src/bun.js/bindings/webcore/FetchHeaders.h index c7b7d73eb9..1785f66984 100644 --- a/src/bun.js/bindings/webcore/FetchHeaders.h +++ b/src/bun.js/bindings/webcore/FetchHeaders.h @@ -55,7 +55,7 @@ public: using Init = std::variant>, Vector>>; static ExceptionOr> create(std::optional&&); - static Ref create(Guard guard = Guard::None, HTTPHeaderMap&& headers = {}) { return adoptRef(*new FetchHeaders { guard, WTFMove(headers) }); } + static Ref create(Guard guard = Guard::None, HTTPHeaderMap&& headers = {}) { return adoptRef(*new FetchHeaders { guard, WTF::move(headers) }); } static Ref create(const FetchHeaders& headers) { return adoptRef(*new FetchHeaders { headers }); } ExceptionOr append(const String& name, const String& value); @@ -112,7 +112,7 @@ public: return Iterator(*this, true); } - void setInternalHeaders(HTTPHeaderMap&& headers) { m_headers = WTFMove(headers); } + void setInternalHeaders(HTTPHeaderMap&& headers) { m_headers = WTF::move(headers); } const HTTPHeaderMap& internalHeaders() const { return m_headers; } void setGuard(Guard); @@ -130,7 +130,7 @@ private: inline FetchHeaders::FetchHeaders(Guard guard, HTTPHeaderMap&& headers) : m_guard(guard) - , m_headers(WTFMove(headers)) + , m_headers(WTF::move(headers)) { } diff --git a/src/bun.js/bindings/webcore/HTTPHeaderField.cpp b/src/bun.js/bindings/webcore/HTTPHeaderField.cpp index 649e756fc0..122c58a960 100644 --- a/src/bun.js/bindings/webcore/HTTPHeaderField.cpp +++ b/src/bun.js/bindings/webcore/HTTPHeaderField.cpp @@ -218,9 +218,9 @@ std::optional HTTPHeaderField::create(String&& unparsedName, St if (!RFC7230::isValidName(trimmedName) || !RFC7230::isValidValue(trimmedValue)) return std::nullopt; - auto name = trimmedName.length() == unparsedName.length() ? WTFMove(unparsedName) : trimmedName.toString(); - auto value = trimmedValue.length() == unparsedValue.length() ? WTFMove(unparsedValue) : trimmedValue.toString(); - return { { WTFMove(name), WTFMove(value) } }; + auto name = trimmedName.length() == unparsedName.length() ? WTF::move(unparsedName) : trimmedName.toString(); + auto value = trimmedValue.length() == unparsedValue.length() ? WTF::move(unparsedValue) : trimmedValue.toString(); + return { { WTF::move(name), WTF::move(value) } }; } } diff --git a/src/bun.js/bindings/webcore/HTTPHeaderField.h b/src/bun.js/bindings/webcore/HTTPHeaderField.h index 5acb00c8a2..1d8ef651de 100644 --- a/src/bun.js/bindings/webcore/HTTPHeaderField.h +++ b/src/bun.js/bindings/webcore/HTTPHeaderField.h @@ -41,8 +41,8 @@ public: private: HTTPHeaderField(String&& name, String&& value) - : m_name(WTFMove(name)) - , m_value(WTFMove(value)) + : m_name(WTF::move(name)) + , m_value(WTF::move(value)) { } String m_name; @@ -69,7 +69,7 @@ std::optional HTTPHeaderField::decode(Decoder& decoder) if (!value) return std::nullopt; - return { { WTFMove(*name), WTFMove(*value) } }; + return { { WTF::move(*name), WTF::move(*value) } }; } namespace RFC7230 { diff --git a/src/bun.js/bindings/webcore/HTTPHeaderMap.cpp b/src/bun.js/bindings/webcore/HTTPHeaderMap.cpp index 3f1ad6fd32..6ef789490b 100644 --- a/src/bun.js/bindings/webcore/HTTPHeaderMap.cpp +++ b/src/bun.js/bindings/webcore/HTTPHeaderMap.cpp @@ -54,9 +54,9 @@ HTTPHeaderMap HTTPHeaderMap::isolatedCopy() const& HTTPHeaderMap HTTPHeaderMap::isolatedCopy() && { HTTPHeaderMap map; - map.m_commonHeaders = crossThreadCopy(WTFMove(m_commonHeaders)); - map.m_uncommonHeaders = crossThreadCopy(WTFMove(m_uncommonHeaders)); - map.m_setCookieHeaders = crossThreadCopy(WTFMove(m_setCookieHeaders)); + map.m_commonHeaders = crossThreadCopy(WTF::move(m_commonHeaders)); + map.m_uncommonHeaders = crossThreadCopy(WTF::move(m_uncommonHeaders)); + map.m_setCookieHeaders = crossThreadCopy(WTF::move(m_setCookieHeaders)); return map; } diff --git a/src/bun.js/bindings/webcore/HTTPHeaderMap.h b/src/bun.js/bindings/webcore/HTTPHeaderMap.h index 126170bf2e..86c67ff4e8 100644 --- a/src/bun.js/bindings/webcore/HTTPHeaderMap.h +++ b/src/bun.js/bindings/webcore/HTTPHeaderMap.h @@ -41,7 +41,7 @@ public: String value; CommonHeader isolatedCopy() const & { return { key, value.isolatedCopy() }; } - CommonHeader isolatedCopy() && { return { key, WTFMove(value).isolatedCopy() }; } + CommonHeader isolatedCopy() && { return { key, WTF::move(value).isolatedCopy() }; } template void encode(Encoder &) const; template static std::optional decode(Decoder &); @@ -60,7 +60,7 @@ public: String value; UncommonHeader isolatedCopy() const & { return { key.isolatedCopy(), value.isolatedCopy() }; } - UncommonHeader isolatedCopy() && { return { WTFMove(key).isolatedCopy(), WTFMove(value).isolatedCopy() }; } + UncommonHeader isolatedCopy() && { return { WTF::move(key).isolatedCopy(), WTF::move(value).isolatedCopy() }; } template void encode(Encoder &) const; template static std::optional decode(Decoder &); @@ -261,7 +261,7 @@ public: } template void encode(Encoder &) const; - template static WARN_UNUSED_RETURN bool decode(Decoder &, HTTPHeaderMap &); + template WARN_UNUSED_RETURN static bool decode(Decoder &, HTTPHeaderMap &); void setUncommonHeader(const String &name, const String &value); void setUncommonHeaderCloneName(const StringView name, const String &value); @@ -290,7 +290,7 @@ auto HTTPHeaderMap::CommonHeader::decode(Decoder &decoder) -> std::optional @@ -310,7 +310,7 @@ auto HTTPHeaderMap::UncommonHeader::decode(Decoder &decoder) -> std::optional diff --git a/src/bun.js/bindings/webcore/HTTPParsers.h b/src/bun.js/bindings/webcore/HTTPParsers.h index b12b1b284b..c966cb7896 100644 --- a/src/bun.js/bindings/webcore/HTTPParsers.h +++ b/src/bun.js/bindings/webcore/HTTPParsers.h @@ -146,7 +146,7 @@ inline bool isHTTPSpace(char16_t character) // if (!isValidHTTPToken(token)) // return false; -// set.add(WTFMove(token)); +// set.add(WTF::move(token)); // return true; // } diff --git a/src/bun.js/bindings/webcore/IdentifierEventListenerMap.cpp b/src/bun.js/bindings/webcore/IdentifierEventListenerMap.cpp index 89ce0bba39..0149bf9019 100644 --- a/src/bun.js/bindings/webcore/IdentifierEventListenerMap.cpp +++ b/src/bun.js/bindings/webcore/IdentifierEventListenerMap.cpp @@ -56,7 +56,7 @@ void IdentifierEventListenerMap::replace(const JSC::Identifier& eventType, Event ASSERT(index != notFound); auto& registeredListener = listeners->at(index); registeredListener->markAsRemoved(); - registeredListener = SimpleRegisteredEventListener::create(WTFMove(newListener), once); + registeredListener = SimpleRegisteredEventListener::create(WTF::move(newListener), once); } bool IdentifierEventListenerMap::add(const JSC::Identifier& eventType, Ref&& listener, bool once) @@ -66,11 +66,11 @@ bool IdentifierEventListenerMap::add(const JSC::Identifier& eventType, Refappend(SimpleRegisteredEventListener::create(WTFMove(listener), once)); + listeners->append(SimpleRegisteredEventListener::create(WTF::move(listener), once)); return true; } - m_entries.append({ eventType, SimpleEventListenerVector { SimpleRegisteredEventListener::create(WTFMove(listener), once) } }); + m_entries.append({ eventType, SimpleEventListenerVector { SimpleRegisteredEventListener::create(WTF::move(listener), once) } }); return true; } @@ -81,11 +81,11 @@ bool IdentifierEventListenerMap::prepend(const JSC::Identifier& eventType, Refinsert(0, SimpleRegisteredEventListener::create(WTFMove(listener), once)); + listeners->insert(0, SimpleRegisteredEventListener::create(WTF::move(listener), once)); return true; } - m_entries.append({ eventType, SimpleEventListenerVector { SimpleRegisteredEventListener::create(WTFMove(listener), once) } }); + m_entries.append({ eventType, SimpleEventListenerVector { SimpleRegisteredEventListener::create(WTF::move(listener), once) } }); return true; } diff --git a/src/bun.js/bindings/webcore/IdentifierEventListenerMap.h b/src/bun.js/bindings/webcore/IdentifierEventListenerMap.h index d78f7ec11c..cb28c1e869 100644 --- a/src/bun.js/bindings/webcore/IdentifierEventListenerMap.h +++ b/src/bun.js/bindings/webcore/IdentifierEventListenerMap.h @@ -14,7 +14,7 @@ class SimpleRegisteredEventListener : public RefCounted create(Ref&& listener, bool once) { - return adoptRef(*new SimpleRegisteredEventListener(WTFMove(listener), once)); + return adoptRef(*new SimpleRegisteredEventListener(WTF::move(listener), once)); } EventListener& callback() const { return m_callback; } @@ -27,7 +27,7 @@ private: SimpleRegisteredEventListener(Ref&& listener, bool once) : m_isOnce(once) , m_wasRemoved(false) - , m_callback(WTFMove(listener)) + , m_callback(WTF::move(listener)) { } diff --git a/src/bun.js/bindings/webcore/JSAbortController.cpp b/src/bun.js/bindings/webcore/JSAbortController.cpp index 14f2e4f378..b488219e97 100644 --- a/src/bun.js/bindings/webcore/JSAbortController.cpp +++ b/src/bun.js/bindings/webcore/JSAbortController.cpp @@ -109,7 +109,7 @@ template<> EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSAbortControllerDOMConstruct if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -155,7 +155,7 @@ void JSAbortControllerPrototype::finishCreation(VM& vm) const ClassInfo JSAbortController::s_info = { "AbortController"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSAbortController) }; JSAbortController::JSAbortController(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -217,7 +217,7 @@ static inline JSC::EncodedJSValue jsAbortControllerPrototypeFunction_abortBody(J EnsureStillAliveScope argument0 = callFrame->argument(0); auto reason = convert(*lexicalGlobalObject, argument0.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.abort(*jsCast(lexicalGlobalObject), WTFMove(reason)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.abort(*jsCast(lexicalGlobalObject), WTF::move(reason)); }))); } JSC_DEFINE_HOST_FUNCTION(jsAbortControllerPrototypeFunction_abort, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -308,7 +308,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj // RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer); #endif } - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, AbortController& impl) diff --git a/src/bun.js/bindings/webcore/JSAbortController.h b/src/bun.js/bindings/webcore/JSAbortController.h index 483328aa88..8384075778 100644 --- a/src/bun.js/bindings/webcore/JSAbortController.h +++ b/src/bun.js/bindings/webcore/JSAbortController.h @@ -32,7 +32,7 @@ public: static JSAbortController* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { auto& vm = JSC::getVM(globalObject); - JSAbortController* ptr = new (NotNull, JSC::allocateCell(vm)) JSAbortController(structure, *globalObject, WTFMove(impl)); + JSAbortController* ptr = new (NotNull, JSC::allocateCell(vm)) JSAbortController(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(vm); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSAbortSignal.cpp b/src/bun.js/bindings/webcore/JSAbortSignal.cpp index 453f337675..0e7ef079df 100644 --- a/src/bun.js/bindings/webcore/JSAbortSignal.cpp +++ b/src/bun.js/bindings/webcore/JSAbortSignal.cpp @@ -166,7 +166,7 @@ void JSAbortSignalPrototype::finishCreation(VM& vm) const ClassInfo JSAbortSignal::s_info = { "AbortSignal"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSAbortSignal) }; JSAbortSignal::JSAbortSignal(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSEventTarget(structure, globalObject, WTFMove(impl)) + : JSEventTarget(structure, globalObject, WTF::move(impl)) { } @@ -273,7 +273,7 @@ static inline JSC::EncodedJSValue jsAbortSignalConstructorFunction_abortBody(JSC EnsureStillAliveScope argument0 = callFrame->argument(0); auto reason = convert(*lexicalGlobalObject, argument0.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJSNewlyCreated>(*lexicalGlobalObject, *jsCast(lexicalGlobalObject), throwScope, AbortSignal::abort(*jsCast(lexicalGlobalObject), *context, WTFMove(reason))))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJSNewlyCreated>(*lexicalGlobalObject, *jsCast(lexicalGlobalObject), throwScope, AbortSignal::abort(*jsCast(lexicalGlobalObject), *context, WTF::move(reason))))); } JSC_DEFINE_HOST_FUNCTION(jsAbortSignalConstructorFunction_abort, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -295,7 +295,7 @@ static inline JSC::EncodedJSValue jsAbortSignalConstructorFunction_timeoutBody(J EnsureStillAliveScope argument0 = callFrame->uncheckedArgument(0); auto milliseconds = convert>(*lexicalGlobalObject, argument0.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJSNewlyCreated>(*lexicalGlobalObject, *jsCast(lexicalGlobalObject), throwScope, AbortSignal::timeout(*context, WTFMove(milliseconds))))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJSNewlyCreated>(*lexicalGlobalObject, *jsCast(lexicalGlobalObject), throwScope, AbortSignal::timeout(*context, WTF::move(milliseconds))))); } JSC_DEFINE_HOST_FUNCTION(jsAbortSignalConstructorFunction_timeout, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -331,7 +331,7 @@ static inline JSC::EncodedJSValue jsAbortSignalConstructorFunction_anyBody(JSC:: i++; }); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJSNewlyCreated>(*lexicalGlobalObject, *jsCast(lexicalGlobalObject), throwScope, AbortSignal::any(*context, WTFMove(signals))))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJSNewlyCreated>(*lexicalGlobalObject, *jsCast(lexicalGlobalObject), throwScope, AbortSignal::any(*context, WTF::move(signals))))); } JSC_DEFINE_HOST_FUNCTION(jsAbortSignalConstructorFunction_any, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -441,7 +441,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj // RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer); #endif } - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, AbortSignal& impl) diff --git a/src/bun.js/bindings/webcore/JSAbortSignal.h b/src/bun.js/bindings/webcore/JSAbortSignal.h index 4de1f1b746..90911cfc28 100644 --- a/src/bun.js/bindings/webcore/JSAbortSignal.h +++ b/src/bun.js/bindings/webcore/JSAbortSignal.h @@ -34,7 +34,7 @@ public: static JSAbortSignal* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { auto& vm = JSC::getVM(globalObject); - JSAbortSignal* ptr = new (NotNull, JSC::allocateCell(vm)) JSAbortSignal(structure, *globalObject, WTFMove(impl)); + JSAbortSignal* ptr = new (NotNull, JSC::allocateCell(vm)) JSAbortSignal(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(vm); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSBroadcastChannel.cpp b/src/bun.js/bindings/webcore/JSBroadcastChannel.cpp index ae86b895dc..a53e47a293 100644 --- a/src/bun.js/bindings/webcore/JSBroadcastChannel.cpp +++ b/src/bun.js/bindings/webcore/JSBroadcastChannel.cpp @@ -118,11 +118,11 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSBroadcastChannelDOMCon EnsureStillAliveScope argument0 = callFrame->uncheckedArgument(0); auto name = convert(*lexicalGlobalObject, argument0.value()); RETURN_IF_EXCEPTION(throwScope, {}); - auto object = BroadcastChannel::create(*context, WTFMove(name)); + auto object = BroadcastChannel::create(*context, WTF::move(name)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -244,7 +244,7 @@ void JSBroadcastChannelPrototype::finishCreation(VM& vm, JSGlobalObject* globalO const ClassInfo JSBroadcastChannel::s_info = { "BroadcastChannel"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSBroadcastChannel) }; JSBroadcastChannel::JSBroadcastChannel(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSEventTarget(structure, globalObject, WTFMove(impl)) + : JSEventTarget(structure, globalObject, WTF::move(impl)) { } @@ -356,7 +356,7 @@ static inline JSC::EncodedJSValue jsBroadcastChannelPrototypeFunction_postMessag EnsureStillAliveScope argument0 = callFrame->uncheckedArgument(0); auto message = convert(*lexicalGlobalObject, argument0.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.postMessage(*jsCast(lexicalGlobalObject), WTFMove(message)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.postMessage(*jsCast(lexicalGlobalObject), WTF::move(message)); }))); } JSC_DEFINE_HOST_FUNCTION(jsBroadcastChannelPrototypeFunction_postMessage, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -483,7 +483,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj // RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer); #endif } - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, BroadcastChannel& impl) diff --git a/src/bun.js/bindings/webcore/JSBroadcastChannel.h b/src/bun.js/bindings/webcore/JSBroadcastChannel.h index ddf672284d..e59c70d9f4 100644 --- a/src/bun.js/bindings/webcore/JSBroadcastChannel.h +++ b/src/bun.js/bindings/webcore/JSBroadcastChannel.h @@ -33,7 +33,7 @@ public: using DOMWrapped = BroadcastChannel; static JSBroadcastChannel* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSBroadcastChannel* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSBroadcastChannel(structure, *globalObject, WTFMove(impl)); + JSBroadcastChannel* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSBroadcastChannel(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSCloseEvent.cpp b/src/bun.js/bindings/webcore/JSCloseEvent.cpp index 0abd88897b..9c986ad14e 100644 --- a/src/bun.js/bindings/webcore/JSCloseEvent.cpp +++ b/src/bun.js/bindings/webcore/JSCloseEvent.cpp @@ -189,11 +189,11 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSCloseEventDOMConstruct EnsureStillAliveScope argument1 = callFrame->argument(1); auto eventInitDict = convert>(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, {}); - auto object = CloseEvent::create(WTFMove(type), WTFMove(eventInitDict)); + auto object = CloseEvent::create(WTF::move(type), WTF::move(eventInitDict)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -239,7 +239,7 @@ void JSCloseEventPrototype::finishCreation(VM& vm) const ClassInfo JSCloseEvent::s_info = { "CloseEvent"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSCloseEvent) }; JSCloseEvent::JSCloseEvent(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSEvent(structure, globalObject, WTFMove(impl)) + : JSEvent(structure, globalObject, WTF::move(impl)) { } @@ -366,7 +366,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj // RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer); #endif } - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, CloseEvent& impl) diff --git a/src/bun.js/bindings/webcore/JSCloseEvent.h b/src/bun.js/bindings/webcore/JSCloseEvent.h index 13dc230087..7e53476926 100644 --- a/src/bun.js/bindings/webcore/JSCloseEvent.h +++ b/src/bun.js/bindings/webcore/JSCloseEvent.h @@ -33,7 +33,7 @@ public: using DOMWrapped = CloseEvent; static JSCloseEvent* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSCloseEvent* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSCloseEvent(structure, *globalObject, WTFMove(impl)); + JSCloseEvent* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSCloseEvent(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSCookie.cpp b/src/bun.js/bindings/webcore/JSCookie.cpp index a53ff6336f..b16f33a902 100644 --- a/src/bun.js/bindings/webcore/JSCookie.cpp +++ b/src/bun.js/bindings/webcore/JSCookie.cpp @@ -326,7 +326,7 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSCookieDOMConstructor:: auto cookie = cookie_exception.releaseReturnValue(); auto* globalObject = castedThis->globalObject(); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(lexicalGlobalObject, globalObject, WTFMove(cookie)))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(lexicalGlobalObject, globalObject, WTF::move(cookie)))); } else if (callFrame->argumentCount() == 1 && callFrame->argument(0).isObject()) { // new Bun.Cooke({ // name: "name", @@ -347,7 +347,7 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSCookieDOMConstructor:: } auto cookie = cookie_exception.releaseReturnValue(); auto* globalObject = castedThis->globalObject(); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(lexicalGlobalObject, globalObject, WTFMove(cookie)))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(lexicalGlobalObject, globalObject, WTF::move(cookie)))); } else if (callFrame->argumentCount() >= 2) { // new Bun.Cookie("name", "value", { // domain: "domain", @@ -383,7 +383,7 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSCookieDOMConstructor:: auto cookie = cookie_exception.releaseReturnValue(); auto* globalObject = castedThis->globalObject(); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(lexicalGlobalObject, globalObject, WTFMove(cookie)))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(lexicalGlobalObject, globalObject, WTF::move(cookie)))); } return throwVMError(lexicalGlobalObject, throwScope, createNotEnoughArgumentsError(lexicalGlobalObject)); @@ -445,7 +445,7 @@ void JSCookiePrototype::finishCreation(VM& vm) const ClassInfo JSCookie::s_info = { "Cookie"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSCookie) }; JSCookie::JSCookie(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -547,7 +547,7 @@ JSC_DEFINE_HOST_FUNCTION(jsCookieStaticFunctionParse, (JSGlobalObject * lexicalG RELEASE_AND_RETURN(throwScope, {}); } auto cookie = cookie_exception.releaseReturnValue(); - return JSValue::encode(toJSNewlyCreated(lexicalGlobalObject, defaultGlobalObject(lexicalGlobalObject), WTFMove(cookie))); + return JSValue::encode(toJSNewlyCreated(lexicalGlobalObject, defaultGlobalObject(lexicalGlobalObject), WTF::move(cookie))); } if (!WebCore::isValidHTTPHeaderValue(cookieString)) [[unlikely]] { @@ -563,7 +563,7 @@ JSC_DEFINE_HOST_FUNCTION(jsCookieStaticFunctionParse, (JSGlobalObject * lexicalG auto cookie = cookie_exception.releaseReturnValue(); auto* globalObject = defaultGlobalObject(lexicalGlobalObject); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJSNewlyCreated(lexicalGlobalObject, globalObject, WTFMove(cookie)))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJSNewlyCreated(lexicalGlobalObject, globalObject, WTF::move(cookie)))); } JSC_DEFINE_HOST_FUNCTION(jsCookieStaticFunctionFrom, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -602,7 +602,7 @@ JSC_DEFINE_HOST_FUNCTION(jsCookieStaticFunctionFrom, (JSGlobalObject * lexicalGl } auto cookie = cookie_exception.releaseReturnValue(); auto* globalObject = jsCast(lexicalGlobalObject); - return JSValue::encode(toJSNewlyCreated(lexicalGlobalObject, globalObject, WTFMove(cookie))); + return JSValue::encode(toJSNewlyCreated(lexicalGlobalObject, globalObject, WTF::move(cookie))); } JSC_DEFINE_HOST_FUNCTION(jsCookieStaticFunctionSerialize, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -968,7 +968,7 @@ void JSCookieOwner::finalize(JSC::Handle handle, void* context) JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObject, Ref&& impl) { - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, Cookie& impl) diff --git a/src/bun.js/bindings/webcore/JSCookie.h b/src/bun.js/bindings/webcore/JSCookie.h index f2f893bf25..1a9268fb12 100644 --- a/src/bun.js/bindings/webcore/JSCookie.h +++ b/src/bun.js/bindings/webcore/JSCookie.h @@ -11,7 +11,7 @@ public: using Base = JSDOMWrapper; static JSCookie* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSCookie* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSCookie(structure, *globalObject, WTFMove(impl)); + JSCookie* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSCookie(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSCookieMap.cpp b/src/bun.js/bindings/webcore/JSCookieMap.cpp index b97bc8aba4..0fe8dd3ce1 100644 --- a/src/bun.js/bindings/webcore/JSCookieMap.cpp +++ b/src/bun.js/bindings/webcore/JSCookieMap.cpp @@ -146,9 +146,9 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSCookieMapDOMConstructo Vector pair; pair.append(firstStr); pair.append(secondStr); - seqSeq.append(WTFMove(pair)); + seqSeq.append(WTF::move(pair)); } - init = WTFMove(seqSeq); + init = WTF::move(seqSeq); } else { // Handle as record HashMap record; @@ -166,21 +166,21 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSCookieMapDOMConstructo record.set(propertyName.string(), valueStr); } - init = WTFMove(record); + init = WTF::move(record); } } else { throwTypeError(lexicalGlobalObject, throwScope, "Invalid initializer type"_s); return {}; } - auto result_exception = CookieMap::create(WTFMove(init)); + auto result_exception = CookieMap::create(WTF::move(init)); if (result_exception.hasException()) { WebCore::propagateException(lexicalGlobalObject, throwScope, result_exception.releaseException()); RELEASE_AND_RETURN(throwScope, {}); } auto result = result_exception.releaseReturnValue(); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJSNewlyCreated(lexicalGlobalObject, castedThis->globalObject(), WTFMove(result)))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJSNewlyCreated(lexicalGlobalObject, castedThis->globalObject(), WTF::move(result)))); } JSC_ANNOTATE_HOST_FUNCTION(JSCookieMapDOMConstructorConstruct, JSCookieMapDOMConstructor::construct); @@ -229,7 +229,7 @@ void JSCookieMapPrototype::finishCreation(VM& vm) const ClassInfo JSCookieMap::s_info = { "CookieMap"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSCookieMap) }; JSCookieMap::JSCookieMap(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -411,7 +411,7 @@ static inline JSC::EncodedJSValue jsCookieMapPrototypeFunction_setBody(JSC::JSGl } auto cookie = cookie_exception.releaseReturnValue(); - impl.set(WTFMove(cookie)); + impl.set(WTF::move(cookie)); return JSValue::encode(jsUndefined()); } @@ -655,7 +655,7 @@ void JSCookieMapOwner::finalize(JSC::Handle handle, void* context) JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObject, Ref&& impl) { - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, CookieMap& impl) diff --git a/src/bun.js/bindings/webcore/JSCookieMap.h b/src/bun.js/bindings/webcore/JSCookieMap.h index 9b16ffcc19..24158374df 100644 --- a/src/bun.js/bindings/webcore/JSCookieMap.h +++ b/src/bun.js/bindings/webcore/JSCookieMap.h @@ -11,7 +11,7 @@ public: using Base = JSDOMWrapper; static JSCookieMap* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSCookieMap* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSCookieMap(structure, *globalObject, WTFMove(impl)); + JSCookieMap* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSCookieMap(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSCustomEvent.cpp b/src/bun.js/bindings/webcore/JSCustomEvent.cpp index c764817533..bff23a2b3a 100644 --- a/src/bun.js/bindings/webcore/JSCustomEvent.cpp +++ b/src/bun.js/bindings/webcore/JSCustomEvent.cpp @@ -172,11 +172,11 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSCustomEventDOMConstruc EnsureStillAliveScope argument1 = callFrame->argument(1); auto eventInitDict = convert>(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, {}); - auto object = CustomEvent::create(type, WTFMove(eventInitDict)); + auto object = CustomEvent::create(type, WTF::move(eventInitDict)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -221,7 +221,7 @@ void JSCustomEventPrototype::finishCreation(VM& vm) const ClassInfo JSCustomEvent::s_info = { "CustomEvent"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSCustomEvent) }; JSCustomEvent::JSCustomEvent(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSEvent(structure, globalObject, WTFMove(impl)) + : JSEvent(structure, globalObject, WTF::move(impl)) { } @@ -290,7 +290,7 @@ static inline JSC::EncodedJSValue jsCustomEventPrototypeFunction_initCustomEvent EnsureStillAliveScope argument3 = callFrame->argument(3); auto detail = argument3.value().isUndefined() ? jsNull() : convert(*lexicalGlobalObject, argument3.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.initCustomEvent(type, WTFMove(bubbles), WTFMove(cancelable), WTFMove(detail)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.initCustomEvent(type, WTF::move(bubbles), WTF::move(cancelable), WTF::move(detail)); }))); } JSC_DEFINE_HOST_FUNCTION(jsCustomEventPrototypeFunction_initCustomEvent, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -371,7 +371,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj // // RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer); // #endif // } - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, CustomEvent& impl) diff --git a/src/bun.js/bindings/webcore/JSCustomEvent.h b/src/bun.js/bindings/webcore/JSCustomEvent.h index d32bf98e45..f9dd2ddb86 100644 --- a/src/bun.js/bindings/webcore/JSCustomEvent.h +++ b/src/bun.js/bindings/webcore/JSCustomEvent.h @@ -33,7 +33,7 @@ public: using DOMWrapped = CustomEvent; static JSCustomEvent* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSCustomEvent* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSCustomEvent(structure, *globalObject, WTFMove(impl)); + JSCustomEvent* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSCustomEvent(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSDOMConvertRecord.h b/src/bun.js/bindings/webcore/JSDOMConvertRecord.h index 9e2d08b70e..1b5fde3902 100644 --- a/src/bun.js/bindings/webcore/JSDOMConvertRecord.h +++ b/src/bun.js/bindings/webcore/JSDOMConvertRecord.h @@ -146,7 +146,7 @@ private: auto addResult = resultMap.add(typedKey, result.size()); if (!addResult.isNewEntry) { ASSERT(result[addResult.iterator->value].key == typedKey); - result[addResult.iterator->value].value = WTFMove(typedValue); + result[addResult.iterator->value].value = WTF::move(typedValue); return true; } } @@ -154,7 +154,7 @@ private: UNUSED_VARIABLE(resultMap); // 5. Otherwise, append to result a mapping (typedKey, typedValue). - result.append({ WTFMove(typedKey), WTFMove(typedValue) }); + result.append({ WTF::move(typedKey), WTF::move(typedValue) }); return true; }); @@ -203,7 +203,7 @@ private: auto addResult = resultMap.add(typedKey, result.size()); if (!addResult.isNewEntry) { ASSERT(result[addResult.iterator->value].key == typedKey); - result[addResult.iterator->value].value = WTFMove(typedValue); + result[addResult.iterator->value].value = WTF::move(typedValue); continue; } } @@ -211,7 +211,7 @@ private: UNUSED_VARIABLE(resultMap); // 5. Otherwise, append to result a mapping (typedKey, typedValue). - result.append({ WTFMove(typedKey), WTFMove(typedValue) }); + result.append({ WTF::move(typedKey), WTF::move(typedValue) }); } } diff --git a/src/bun.js/bindings/webcore/JSDOMConvertScheduledAction.h b/src/bun.js/bindings/webcore/JSDOMConvertScheduledAction.h index 61ac02caff..1e38aec6f0 100644 --- a/src/bun.js/bindings/webcore/JSDOMConvertScheduledAction.h +++ b/src/bun.js/bindings/webcore/JSDOMConvertScheduledAction.h @@ -41,7 +41,7 @@ template<> struct Converter : DefaultConverter::convert(lexicalGlobalObject, value); RETURN_IF_EXCEPTION(scope, nullptr); - return ScheduledAction::create(globalObject.world(), WTFMove(code)); + return ScheduledAction::create(globalObject.world(), WTF::move(code)); } // The value must be an object at this point because no non-object values are callable. diff --git a/src/bun.js/bindings/webcore/JSDOMConvertSequences.h b/src/bun.js/bindings/webcore/JSDOMConvertSequences.h index 8b93310323..035e593ecd 100644 --- a/src/bun.js/bindings/webcore/JSDOMConvertSequences.h +++ b/src/bun.js/bindings/webcore/JSDOMConvertSequences.h @@ -173,7 +173,7 @@ struct GenericSequenceConverter { // auto convertedValue = Converter::convert(*lexicalGlobalObject, nextValue); auto convertedValue = Bun::convertIDL(*lexicalGlobalObject, nextValue, elementCtx); RETURN_IF_EXCEPTION(scope, ); - Traits::append(*lexicalGlobalObject, result, index++, WTFMove(convertedValue)); + Traits::append(*lexicalGlobalObject, result, index++, WTF::move(convertedValue)); RETURN_IF_EXCEPTION(scope, ); }); @@ -182,13 +182,13 @@ struct GenericSequenceConverter { if (index != result.size()) { throwTypeError(&lexicalGlobalObject, scope); } - return WTFMove(result); + return WTF::move(result); } static ReturnType convert(JSC::JSGlobalObject& lexicalGlobalObject, JSC::JSObject* object, ReturnType&& result) { auto ctx = Bun::DefaultConversionContext {}; - return convert(lexicalGlobalObject, object, WTFMove(result), ctx); + return convert(lexicalGlobalObject, object, WTF::move(result), ctx); } template @@ -205,7 +205,7 @@ struct GenericSequenceConverter { auto convertedValue = Converter::convert(*lexicalGlobalObject, nextValue, std::forward(exceptionThrower)); RETURN_IF_EXCEPTION(scope, ); - Traits::append(*lexicalGlobalObject, result, index++, WTFMove(convertedValue)); + Traits::append(*lexicalGlobalObject, result, index++, WTF::move(convertedValue)); RETURN_IF_EXCEPTION(scope, ); }); @@ -214,7 +214,7 @@ struct GenericSequenceConverter { if (index != result.size()) { throwTypeError(&lexicalGlobalObject, scope); } - return WTFMove(result); + return WTF::move(result); } static ReturnType convert(JSC::JSGlobalObject& lexicalGlobalObject, JSC::JSObject* object, JSC::JSValue method) @@ -233,7 +233,7 @@ struct GenericSequenceConverter { auto convertedValue = Converter::convert(lexicalGlobalObject, nextValue); RETURN_IF_EXCEPTION(scope, ); - Traits::append(lexicalGlobalObject, result, index++, WTFMove(convertedValue)); + Traits::append(lexicalGlobalObject, result, index++, WTF::move(convertedValue)); RETURN_IF_EXCEPTION(scope, ); }); @@ -242,7 +242,7 @@ struct GenericSequenceConverter { if (index != result.size()) { throwTypeError(&lexicalGlobalObject, scope); } - return WTFMove(result); + return WTF::move(result); } }; @@ -268,7 +268,7 @@ struct NumericSequenceConverter { Traits::append(lexicalGlobalObject, result, i, indexValue.asInt32()); RETURN_IF_EXCEPTION(scope, {}); } - return WTFMove(result); + return WTF::move(result); } ASSERT(indexingType == JSC::DoubleShape); @@ -285,7 +285,7 @@ struct NumericSequenceConverter { RETURN_IF_EXCEPTION(scope, {}); } } - return WTFMove(result); + return WTF::move(result); } static ReturnType convert(JSC::JSGlobalObject& lexicalGlobalObject, JSC::JSValue value) @@ -325,9 +325,9 @@ struct NumericSequenceConverter { RETURN_IF_EXCEPTION(scope, {}); if (!isLengthExact) - RELEASE_AND_RETURN(scope, GenericConverter::convert(lexicalGlobalObject, object, WTFMove(result))); + RELEASE_AND_RETURN(scope, GenericConverter::convert(lexicalGlobalObject, object, WTF::move(result))); - return convertArray(lexicalGlobalObject, scope, array, length, indexingType, WTFMove(result)); + return convertArray(lexicalGlobalObject, scope, array, length, indexingType, WTF::move(result)); } static ReturnType convert(JSC::JSGlobalObject& lexicalGlobalObject, JSC::JSObject* object, JSC::JSValue method) @@ -360,9 +360,9 @@ struct NumericSequenceConverter { RETURN_IF_EXCEPTION(scope, {}); if (!isLengthExact) - RELEASE_AND_RETURN(scope, GenericConverter::convert(lexicalGlobalObject, object, method, WTFMove(result))); + RELEASE_AND_RETURN(scope, GenericConverter::convert(lexicalGlobalObject, object, method, WTF::move(result))); - return convertArray(lexicalGlobalObject, scope, array, length, indexingType, WTFMove(result)); + return convertArray(lexicalGlobalObject, scope, array, length, indexingType, WTF::move(result)); } }; @@ -395,7 +395,7 @@ struct SequenceConverter { // auto convertedValue = Converter::convert(lexicalGlobalObject, indexValue); auto convertedValue = Bun::convertIDL(lexicalGlobalObject, indexValue, elementCtx); RETURN_IF_EXCEPTION(scope, {}); - Traits::append(lexicalGlobalObject, result, i, WTFMove(convertedValue)); + Traits::append(lexicalGlobalObject, result, i, WTF::move(convertedValue)); } return result; } @@ -410,7 +410,7 @@ struct SequenceConverter { // auto convertedValue = Converter::convert(lexicalGlobalObject, indexValue); auto convertedValue = Bun::convertIDL(lexicalGlobalObject, indexValue, elementCtx); RETURN_IF_EXCEPTION(scope, {}); - Traits::append(lexicalGlobalObject, result, i, WTFMove(convertedValue)); + Traits::append(lexicalGlobalObject, result, i, WTF::move(convertedValue)); } return result; } @@ -443,7 +443,7 @@ struct SequenceConverter { auto convertedValue = Converter::convert(lexicalGlobalObject, indexValue, std::forward(exceptionThrower)); RETURN_IF_EXCEPTION(scope, {}); - Traits::append(lexicalGlobalObject, result, i, WTFMove(convertedValue)); + Traits::append(lexicalGlobalObject, result, i, WTF::move(convertedValue)); RETURN_IF_EXCEPTION(scope, {}); } return result; @@ -458,7 +458,7 @@ struct SequenceConverter { auto convertedValue = Converter::convert(lexicalGlobalObject, indexValue, std::forward(exceptionThrower)); RETURN_IF_EXCEPTION(scope, {}); - Traits::append(lexicalGlobalObject, result, i, WTFMove(convertedValue)); + Traits::append(lexicalGlobalObject, result, i, WTF::move(convertedValue)); RETURN_IF_EXCEPTION(scope, {}); } return result; diff --git a/src/bun.js/bindings/webcore/JSDOMConvertStrings.cpp b/src/bun.js/bindings/webcore/JSDOMConvertStrings.cpp index c2d77e7e0c..16c52e6bdd 100644 --- a/src/bun.js/bindings/webcore/JSDOMConvertStrings.cpp +++ b/src/bun.js/bindings/webcore/JSDOMConvertStrings.cpp @@ -103,7 +103,7 @@ String valueToUSVString(JSGlobalObject& lexicalGlobalObject, JSValue value) auto string = value.toWTFString(&lexicalGlobalObject); RETURN_IF_EXCEPTION(scope, {}); - return replaceUnpairedSurrogatesWithReplacementCharacter(WTFMove(string)); + return replaceUnpairedSurrogatesWithReplacementCharacter(WTF::move(string)); } AtomString valueToUSVAtomString(JSGlobalObject& lexicalGlobalObject, JSValue value) diff --git a/src/bun.js/bindings/webcore/JSDOMConvertUnion.h b/src/bun.js/bindings/webcore/JSDOMConvertUnion.h index 837a9be292..0b51201525 100644 --- a/src/bun.js/bindings/webcore/JSDOMConvertUnion.h +++ b/src/bun.js/bindings/webcore/JSDOMConvertUnion.h @@ -208,7 +208,7 @@ template struct Converter> : DefaultConverter struct Converter> : DefaultConverter>::value) ? JSC::JSArrayBuffer::toWrappedAllowShared(vm, value) : JSC::JSArrayBuffer::toWrapped(vm, value); if (arrayBuffer) { if (hasArrayBufferType) - return ConditionalReturner::get(WTFMove(arrayBuffer)).value(); + return ConditionalReturner::get(WTF::move(arrayBuffer)).value(); RELEASE_AND_RETURN(scope, (ConditionalConverter::convert(lexicalGlobalObject, value).value())); } } @@ -239,7 +239,7 @@ template struct Converter> : DefaultConverter>::value) ? JSC::JSArrayBufferView::toWrappedAllowShared(vm, value) : JSC::JSArrayBufferView::toWrapped(vm, value); if (arrayBufferView) { if (hasArrayBufferViewType) - return ConditionalReturner::get(WTFMove(arrayBufferView)).value(); + return ConditionalReturner::get(WTF::move(arrayBufferView)).value(); RELEASE_AND_RETURN(scope, (ConditionalConverter::convert(lexicalGlobalObject, value).value())); } } @@ -252,7 +252,7 @@ template struct Converter> : DefaultConverter::get(WTFMove(dataView)).value(); + return ConditionalReturner::get(WTF::move(dataView)).value(); RELEASE_AND_RETURN(scope, (ConditionalConverter::convert(lexicalGlobalObject, value).value())); } } @@ -280,7 +280,7 @@ template struct Converter> : DefaultConverter FixedVector::Item ASSERT_UNUSED(scope, !!scope.exception() == !value); if (!value) return {}; - result[resultIndex] = WTFMove(*value); + result[resultIndex] = WTF::move(*value); resultIndex++; } diff --git a/src/bun.js/bindings/webcore/JSDOMException.cpp b/src/bun.js/bindings/webcore/JSDOMException.cpp index e33f56fbfb..4812c93340 100644 --- a/src/bun.js/bindings/webcore/JSDOMException.cpp +++ b/src/bun.js/bindings/webcore/JSDOMException.cpp @@ -153,11 +153,11 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSDOMExceptionDOMConstru RETURN_IF_EXCEPTION(throwScope, {}); } - auto object = DOMException::create(WTFMove(message), WTFMove(name)); + auto object = DOMException::create(WTF::move(message), WTF::move(name)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -233,7 +233,7 @@ void JSDOMExceptionPrototype::finishCreation(VM& vm) const ClassInfo JSDOMException::s_info = { "DOMException"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSDOMException) }; JSDOMException::JSDOMException(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -381,7 +381,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj // // RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer); // #endif // } - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, DOMException& impl) diff --git a/src/bun.js/bindings/webcore/JSDOMException.h b/src/bun.js/bindings/webcore/JSDOMException.h index 71e72003e1..41829d9504 100644 --- a/src/bun.js/bindings/webcore/JSDOMException.h +++ b/src/bun.js/bindings/webcore/JSDOMException.h @@ -34,7 +34,7 @@ public: using Base = JSDOMWrapper; static JSDOMException* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSDOMException* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSDOMException(structure, *globalObject, WTFMove(impl)); + JSDOMException* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSDOMException(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSDOMFormData.cpp b/src/bun.js/bindings/webcore/JSDOMFormData.cpp index c6b9683540..77a0d1cedf 100644 --- a/src/bun.js/bindings/webcore/JSDOMFormData.cpp +++ b/src/bun.js/bindings/webcore/JSDOMFormData.cpp @@ -167,7 +167,7 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSDOMFormDataDOMConstruc if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -227,7 +227,7 @@ void JSDOMFormDataPrototype::finishCreation(VM& vm) const ClassInfo JSDOMFormData::s_info = { "FormData"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSDOMFormData) }; JSDOMFormData::JSDOMFormData(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -285,7 +285,7 @@ static inline JSC::EncodedJSValue jsDOMFormDataPrototypeFunction_append1Body(JSC EnsureStillAliveScope argument1 = callFrame->uncheckedArgument(1); auto value = convert(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.append(WTFMove(name), WTFMove(value)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.append(WTF::move(name), WTF::move(value)); }))); } extern "C" BunString Blob__getFileNameString(void* impl); @@ -316,7 +316,7 @@ static inline JSC::EncodedJSValue jsDOMFormDataPrototypeFunction_append2Body(JSC auto filename = argument2.value().isUndefined() ? Blob__getFileNameString(blobValue->impl()).toWTFString(BunString::ZeroCopy) : convert(*lexicalGlobalObject, argument2.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.append(WTFMove(name), WTFMove(blobValue), WTFMove(filename)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.append(WTF::move(name), WTF::move(blobValue), WTF::move(filename)); }))); } static inline JSC::EncodedJSValue jsDOMFormDataPrototypeFunction_appendOverloadDispatcher(JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame, typename IDLOperation::ClassParameter castedThis) @@ -355,7 +355,7 @@ static inline JSC::EncodedJSValue jsDOMFormDataPrototypeFunction_deleteBody(JSC: EnsureStillAliveScope argument0 = callFrame->uncheckedArgument(0); auto name = convert(*lexicalGlobalObject, argument0.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.remove(WTFMove(name)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.remove(WTF::move(name)); }))); } JSC_DEFINE_HOST_FUNCTION(jsDOMFormDataPrototypeFunction_delete, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -433,7 +433,7 @@ static inline JSC::EncodedJSValue jsDOMFormDataPrototypeFunction_hasBody(JSC::JS EnsureStillAliveScope argument0 = callFrame->uncheckedArgument(0); auto name = convert(*lexicalGlobalObject, argument0.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, impl.has(WTFMove(name))))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, impl.has(WTF::move(name))))); } JSC_DEFINE_HOST_FUNCTION(jsDOMFormDataPrototypeFunction_has, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -454,7 +454,7 @@ static inline JSC::EncodedJSValue jsDOMFormDataPrototypeFunction_set1Body(JSC::J EnsureStillAliveScope argument1 = callFrame->uncheckedArgument(1); auto value = convert(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.set(WTFMove(name), WTFMove(value)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.set(WTF::move(name), WTF::move(value)); }))); } static inline JSC::EncodedJSValue jsDOMFormDataPrototypeFunction_set2Body(JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame, typename IDLOperation::ClassParameter castedThis) @@ -483,7 +483,7 @@ static inline JSC::EncodedJSValue jsDOMFormDataPrototypeFunction_set2Body(JSC::J auto filename = argument2.value().isUndefined() ? Blob__getFileNameString(blobValue->impl()).toWTFString(BunString::ZeroCopy) : convert(*lexicalGlobalObject, argument2.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.set(WTFMove(name), WTFMove(blobValue), WTFMove(filename)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.set(WTF::move(name), WTF::move(blobValue), WTF::move(filename)); }))); } static inline JSC::EncodedJSValue jsDOMFormDataPrototypeFunction_setOverloadDispatcher(JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame, typename IDLOperation::ClassParameter castedThis) @@ -759,7 +759,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj // RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer); #endif } - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, DOMFormData& impl) diff --git a/src/bun.js/bindings/webcore/JSDOMFormData.h b/src/bun.js/bindings/webcore/JSDOMFormData.h index 286e820b1e..d40e88f4c1 100644 --- a/src/bun.js/bindings/webcore/JSDOMFormData.h +++ b/src/bun.js/bindings/webcore/JSDOMFormData.h @@ -31,7 +31,7 @@ public: using Base = JSDOMWrapper; static JSDOMFormData* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSDOMFormData* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSDOMFormData(structure, *globalObject, WTFMove(impl)); + JSDOMFormData* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSDOMFormData(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSDOMOperationReturningPromise.h b/src/bun.js/bindings/webcore/JSDOMOperationReturningPromise.h index 99aa7437e8..08abdc9958 100644 --- a/src/bun.js/bindings/webcore/JSDOMOperationReturningPromise.h +++ b/src/bun.js/bindings/webcore/JSDOMOperationReturningPromise.h @@ -49,7 +49,7 @@ public: ASSERT_GC_OBJECT_INHERITS(thisObject, JSClass::info()); // FIXME: We should refactor the binding generated code to use references for lexicalGlobalObject and thisObject. - return operation(&lexicalGlobalObject, &callFrame, thisObject, WTFMove(promise)); + return operation(&lexicalGlobalObject, &callFrame, thisObject, WTF::move(promise)); })); } @@ -77,7 +77,7 @@ public: { return JSC::JSValue::encode(callPromiseFunction(lexicalGlobalObject, callFrame, [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::CallFrame& callFrame, Ref&& promise) { // FIXME: We should refactor the binding generated code to use references for lexicalGlobalObject. - return operation(&lexicalGlobalObject, &callFrame, WTFMove(promise)); + return operation(&lexicalGlobalObject, &callFrame, WTF::move(promise)); })); } diff --git a/src/bun.js/bindings/webcore/JSDOMPromise.cpp b/src/bun.js/bindings/webcore/JSDOMPromise.cpp index a8ec36dea6..56dd702a27 100644 --- a/src/bun.js/bindings/webcore/JSDOMPromise.cpp +++ b/src/bun.js/bindings/webcore/JSDOMPromise.cpp @@ -40,7 +40,7 @@ namespace WebCore { auto DOMPromise::whenSettled(std::function&& callback) -> IsCallbackRegistered { - return whenPromiseIsSettled(globalObject(), promise(), WTFMove(callback)); + return whenPromiseIsSettled(globalObject(), promise(), WTF::move(callback)); } auto DOMPromise::whenPromiseIsSettled(JSDOMGlobalObject* globalObject, JSC::JSObject* promise, Function&& callback) -> IsCallbackRegistered @@ -48,7 +48,7 @@ auto DOMPromise::whenPromiseIsSettled(JSDOMGlobalObject* globalObject, JSC::JSOb auto& lexicalGlobalObject = *globalObject; auto& vm = lexicalGlobalObject.vm(); JSLockHolder lock(vm); - auto* handler = JSC::JSNativeStdFunction::create(vm, globalObject, 1, String {}, [callback = WTFMove(callback)](JSGlobalObject*, CallFrame*) mutable { + auto* handler = JSC::JSNativeStdFunction::create(vm, globalObject, 1, String {}, [callback = WTF::move(callback)](JSGlobalObject*, CallFrame*) mutable { callback(); return JSC::JSValue::encode(JSC::jsUndefined()); }); diff --git a/src/bun.js/bindings/webcore/JSDOMPromiseDeferred.cpp b/src/bun.js/bindings/webcore/JSDOMPromiseDeferred.cpp index e4799696e3..e26b6bb831 100644 --- a/src/bun.js/bindings/webcore/JSDOMPromiseDeferred.cpp +++ b/src/bun.js/bindings/webcore/JSDOMPromiseDeferred.cpp @@ -61,7 +61,7 @@ void DeferredPromise::callFunction(JSGlobalObject& lexicalGlobalObject, ResolveM // if (activeDOMObjectsAreSuspended()) { // JSC::Strong strongResolution(lexicalGlobalObject.vm(), resolution); // ASSERT(scriptExecutionContext()->eventLoop().isSuspended()); - // scriptExecutionContext()->eventLoop().queueTask(TaskSource::Networking, [this, protectedThis = Ref { *this }, mode, strongResolution = WTFMove(strongResolution)]() mutable { + // scriptExecutionContext()->eventLoop().queueTask(TaskSource::Networking, [this, protectedThis = Ref { *this }, mode, strongResolution = WTF::move(strongResolution)]() mutable { // if (shouldIgnoreRequestToFulfill()) // return; @@ -97,13 +97,13 @@ void DeferredPromise::whenSettled(Function&& callback) return; // if (activeDOMObjectsAreSuspended()) { - // scriptExecutionContext()->eventLoop().queueTask(TaskSource::Networking, [this, protectedThis = Ref { *this }, callback = WTFMove(callback)]() mutable { - // whenSettled(WTFMove(callback)); + // scriptExecutionContext()->eventLoop().queueTask(TaskSource::Networking, [this, protectedThis = Ref { *this }, callback = WTF::move(callback)]() mutable { + // whenSettled(WTF::move(callback)); // }); // return; // } - DOMPromise::whenPromiseIsSettled(globalObject(), deferred(), WTFMove(callback)); + DOMPromise::whenPromiseIsSettled(globalObject(), deferred(), WTF::move(callback)); } void DeferredPromise::reject(RejectAsHandled rejectAsHandled) @@ -165,7 +165,7 @@ void DeferredPromise::reject(Exception exception, RejectAsHandled rejectAsHandle return; } - auto error = createDOMException(lexicalGlobalObject, WTFMove(exception)); + auto error = createDOMException(lexicalGlobalObject, WTF::move(exception)); if (scope.exception()) [[unlikely]] { handleUncaughtException(scope, lexicalGlobalObject); return; @@ -273,7 +273,7 @@ void fulfillPromiseWithArrayBuffer(Ref&& promise, ArrayBuffer* void fulfillPromiseWithArrayBuffer(Ref&& promise, const void* data, size_t length) { - fulfillPromiseWithArrayBuffer(WTFMove(promise), ArrayBuffer::tryCreate({ reinterpret_cast(data), length }).get()); + fulfillPromiseWithArrayBuffer(WTF::move(promise), ArrayBuffer::tryCreate({ reinterpret_cast(data), length }).get()); } bool DeferredPromise::handleTerminationExceptionIfNeeded(CatchScope& scope, JSDOMGlobalObject& lexicalGlobalObject) diff --git a/src/bun.js/bindings/webcore/JSDOMPromiseDeferred.h b/src/bun.js/bindings/webcore/JSDOMPromiseDeferred.h index aa2070ee6f..67f58839be 100644 --- a/src/bun.js/bindings/webcore/JSDOMPromiseDeferred.h +++ b/src/bun.js/bindings/webcore/JSDOMPromiseDeferred.h @@ -237,12 +237,12 @@ class DOMPromiseDeferredBase { public: DOMPromiseDeferredBase(Ref&& genericPromise) - : m_promise(WTFMove(genericPromise)) + : m_promise(WTF::move(genericPromise)) { } DOMPromiseDeferredBase(DOMPromiseDeferredBase&& promise) - : m_promise(WTFMove(promise.m_promise)) + : m_promise(WTF::move(promise.m_promise)) { } @@ -259,7 +259,7 @@ public: DOMPromiseDeferredBase& operator=(DOMPromiseDeferredBase&& other) { - m_promise = WTFMove(other.m_promise); + m_promise = WTF::move(other.m_promise); return *this; } @@ -284,7 +284,7 @@ public: void whenSettled(Function&& function) { - m_promise->whenSettled(WTFMove(function)); + m_promise->whenSettled(WTF::move(function)); } protected: @@ -390,7 +390,7 @@ using BindingPromiseFunction = JSC::EncodedJSValue(JSC::JSGlobalObject*, JSC::Ca template inline void bindingPromiseFunctionAdapter(JSC::JSGlobalObject& lexicalGlobalObject, JSC::CallFrame& callFrame, Ref&& promise) { - bindingFunction(&lexicalGlobalObject, &callFrame, WTFMove(promise)); + bindingFunction(&lexicalGlobalObject, &callFrame, WTF::move(promise)); } template diff --git a/src/bun.js/bindings/webcore/JSDOMURL.cpp b/src/bun.js/bindings/webcore/JSDOMURL.cpp index ef5b82ab2d..98e786a942 100644 --- a/src/bun.js/bindings/webcore/JSDOMURL.cpp +++ b/src/bun.js/bindings/webcore/JSDOMURL.cpp @@ -162,11 +162,11 @@ template<> EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSDOMURLDOMConstructor::const EnsureStillAliveScope argument1 = callFrame->argument(1); auto base = argument1.value().isUndefined() ? String() : convert(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, {}); - auto object = base.isEmpty() ? DOMURL::create(WTFMove(url)) : DOMURL::create(WTFMove(url), WTFMove(base)); + auto object = base.isEmpty() ? DOMURL::create(WTF::move(url)) : DOMURL::create(WTF::move(url), WTF::move(base)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -239,7 +239,7 @@ void JSDOMURLPrototype::finishCreation(VM& vm) const ClassInfo JSDOMURL::s_info = { "URL"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSDOMURL) }; JSDOMURL::JSDOMURL(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -300,7 +300,7 @@ static inline bool setJSDOMURL_hrefSetter(JSGlobalObject& lexicalGlobalObject, J auto nativeValue = convert(lexicalGlobalObject, value); RETURN_IF_EXCEPTION(throwScope, false); invokeFunctorPropagatingExceptionIfNecessary(lexicalGlobalObject, throwScope, [&] { - return impl.setHref(WTFMove(nativeValue)); + return impl.setHref(WTF::move(nativeValue)); }); return true; } @@ -345,7 +345,7 @@ static inline bool setJSDOMURL_protocolSetter(JSGlobalObject& lexicalGlobalObjec auto nativeValue = convert(lexicalGlobalObject, value); RETURN_IF_EXCEPTION(throwScope, false); invokeFunctorPropagatingExceptionIfNecessary(lexicalGlobalObject, throwScope, [&] { - return impl.setProtocol(WTFMove(nativeValue)); + return impl.setProtocol(WTF::move(nativeValue)); }); return true; } @@ -377,7 +377,7 @@ static inline bool setJSDOMURL_usernameSetter(JSGlobalObject& lexicalGlobalObjec auto nativeValue = convert(lexicalGlobalObject, value); RETURN_IF_EXCEPTION(throwScope, false); invokeFunctorPropagatingExceptionIfNecessary(lexicalGlobalObject, throwScope, [&] { - return impl.setUsername(WTFMove(nativeValue)); + return impl.setUsername(WTF::move(nativeValue)); }); return true; } @@ -409,7 +409,7 @@ static inline bool setJSDOMURL_passwordSetter(JSGlobalObject& lexicalGlobalObjec auto nativeValue = convert(lexicalGlobalObject, value); RETURN_IF_EXCEPTION(throwScope, false); invokeFunctorPropagatingExceptionIfNecessary(lexicalGlobalObject, throwScope, [&] { - return impl.setPassword(WTFMove(nativeValue)); + return impl.setPassword(WTF::move(nativeValue)); }); return true; } @@ -441,7 +441,7 @@ static inline bool setJSDOMURL_hostSetter(JSGlobalObject& lexicalGlobalObject, J auto nativeValue = convert(lexicalGlobalObject, value); RETURN_IF_EXCEPTION(throwScope, false); invokeFunctorPropagatingExceptionIfNecessary(lexicalGlobalObject, throwScope, [&] { - return impl.setHost(WTFMove(nativeValue)); + return impl.setHost(WTF::move(nativeValue)); }); return true; } @@ -473,7 +473,7 @@ static inline bool setJSDOMURL_hostnameSetter(JSGlobalObject& lexicalGlobalObjec auto nativeValue = convert(lexicalGlobalObject, value); RETURN_IF_EXCEPTION(throwScope, false); invokeFunctorPropagatingExceptionIfNecessary(lexicalGlobalObject, throwScope, [&] { - return impl.setHostname(WTFMove(nativeValue)); + return impl.setHostname(WTF::move(nativeValue)); }); return true; } @@ -505,7 +505,7 @@ static inline bool setJSDOMURL_portSetter(JSGlobalObject& lexicalGlobalObject, J auto nativeValue = convert(lexicalGlobalObject, value); RETURN_IF_EXCEPTION(throwScope, false); invokeFunctorPropagatingExceptionIfNecessary(lexicalGlobalObject, throwScope, [&] { - return impl.setPort(WTFMove(nativeValue)); + return impl.setPort(WTF::move(nativeValue)); }); return true; } @@ -537,7 +537,7 @@ static inline bool setJSDOMURL_pathnameSetter(JSGlobalObject& lexicalGlobalObjec auto nativeValue = convert(lexicalGlobalObject, value); RETURN_IF_EXCEPTION(throwScope, false); invokeFunctorPropagatingExceptionIfNecessary(lexicalGlobalObject, throwScope, [&] { - return impl.setPathname(WTFMove(nativeValue)); + return impl.setPathname(WTF::move(nativeValue)); }); return true; } @@ -569,7 +569,7 @@ static inline bool setJSDOMURL_hashSetter(JSGlobalObject& lexicalGlobalObject, J auto nativeValue = convert(lexicalGlobalObject, value); RETURN_IF_EXCEPTION(throwScope, false); invokeFunctorPropagatingExceptionIfNecessary(lexicalGlobalObject, throwScope, [&] { - return impl.setHash(WTFMove(nativeValue)); + return impl.setHash(WTF::move(nativeValue)); }); return true; } @@ -601,7 +601,7 @@ static inline bool setJSDOMURL_searchSetter(JSGlobalObject& lexicalGlobalObject, auto nativeValue = convert(lexicalGlobalObject, value); RETURN_IF_EXCEPTION(throwScope, false); invokeFunctorPropagatingExceptionIfNecessary(lexicalGlobalObject, throwScope, [&] { - return impl.setSearch(WTFMove(nativeValue)); + return impl.setSearch(WTF::move(nativeValue)); }); return true; } @@ -643,7 +643,7 @@ static inline JSC::EncodedJSValue jsDOMURLConstructorFunction_parseBody(JSC::JSG EnsureStillAliveScope argument1 = callFrame->argument(1); auto base = argument1.value().isUndefined() ? String() : convert(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>>(*lexicalGlobalObject, *jsCast(lexicalGlobalObject), throwScope, DOMURL::parse(WTFMove(url), WTFMove(base))))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>>(*lexicalGlobalObject, *jsCast(lexicalGlobalObject), throwScope, DOMURL::parse(WTF::move(url), WTF::move(base))))); } JSC_DEFINE_HOST_FUNCTION(jsDOMURLConstructorFunction_parse, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -665,7 +665,7 @@ static inline JSC::EncodedJSValue jsDOMURLConstructorFunction_canParseBody(JSC:: EnsureStillAliveScope argument1 = callFrame->argument(1); auto base = argument1.value().isUndefined() ? String() : convert(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, DOMURL::canParse(WTFMove(url), WTFMove(base))))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, DOMURL::canParse(WTF::move(url), WTF::move(base))))); } JSC_DEFINE_HOST_FUNCTION(jsDOMURLConstructorFunction_canParse, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -717,7 +717,7 @@ static inline JSC::EncodedJSValue jsDOMURLConstructorFunction_revokeObjectURLBod // EnsureStillAliveScope argument0 = callFrame->uncheckedArgument(0); // auto url = convert(*lexicalGlobalObject, argument0.value()); // RETURN_IF_EXCEPTION(throwScope, {}); - // RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return DOMURL::revokeObjectURL(*context, WTFMove(url)); }))); + // RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return DOMURL::revokeObjectURL(*context, WTF::move(url)); }))); } JSC_DEFINE_HOST_FUNCTION(jsDOMURLConstructorFunction_revokeObjectURL, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -854,7 +854,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj // RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer); #endif } - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, DOMURL& impl) diff --git a/src/bun.js/bindings/webcore/JSDOMURL.h b/src/bun.js/bindings/webcore/JSDOMURL.h index 54e38cdc4b..22e9743174 100644 --- a/src/bun.js/bindings/webcore/JSDOMURL.h +++ b/src/bun.js/bindings/webcore/JSDOMURL.h @@ -31,7 +31,7 @@ public: using Base = JSDOMWrapper; static JSDOMURL* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSDOMURL* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSDOMURL(structure, *globalObject, WTFMove(impl)); + JSDOMURL* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSDOMURL(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSErrorEvent.cpp b/src/bun.js/bindings/webcore/JSErrorEvent.cpp index ae464e73fa..61299b8460 100644 --- a/src/bun.js/bindings/webcore/JSErrorEvent.cpp +++ b/src/bun.js/bindings/webcore/JSErrorEvent.cpp @@ -218,11 +218,11 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSErrorEventDOMConstruct EnsureStillAliveScope argument1 = callFrame->argument(1); auto eventInitDict = convert>(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, {}); - auto object = ErrorEvent::create(type, WTFMove(eventInitDict)); + auto object = ErrorEvent::create(type, WTF::move(eventInitDict)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -270,7 +270,7 @@ void JSErrorEventPrototype::finishCreation(VM& vm) const ClassInfo JSErrorEvent::s_info = { "ErrorEvent"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSErrorEvent) }; JSErrorEvent::JSErrorEvent(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSEvent(structure, globalObject, WTFMove(impl)) + : JSEvent(structure, globalObject, WTF::move(impl)) { } @@ -444,7 +444,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj // // by adding the SkipVTableValidation attribute to the interface IDL definition // // RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer); // #endif - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, ErrorEvent& impl) diff --git a/src/bun.js/bindings/webcore/JSErrorEvent.h b/src/bun.js/bindings/webcore/JSErrorEvent.h index 5f8bbd8026..8e285d9878 100644 --- a/src/bun.js/bindings/webcore/JSErrorEvent.h +++ b/src/bun.js/bindings/webcore/JSErrorEvent.h @@ -34,7 +34,7 @@ public: using DOMWrapped = ErrorEvent; static JSErrorEvent* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSErrorEvent* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSErrorEvent(structure, *globalObject, WTFMove(impl)); + JSErrorEvent* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSErrorEvent(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSEvent.cpp b/src/bun.js/bindings/webcore/JSEvent.cpp index 1a59d7200f..63ac7b031e 100644 --- a/src/bun.js/bindings/webcore/JSEvent.cpp +++ b/src/bun.js/bindings/webcore/JSEvent.cpp @@ -166,11 +166,11 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSEventDOMConstructor::c RETURN_IF_EXCEPTION(throwScope, {}); auto eventInitDict = convert>(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, {}); - auto object = Event::create(WTFMove(type), WTFMove(eventInitDict)); + auto object = Event::create(WTF::move(type), WTF::move(eventInitDict)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -247,7 +247,7 @@ const ClassInfo JSEvent::s_info = { "Event"_s, &Base::s_info, &JSEventTable CREATE_METHOD_TABLE(JSEvent) }; JSEvent::JSEvent(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -365,7 +365,7 @@ static inline bool setJSEvent_cancelBubbleSetter(JSGlobalObject& lexicalGlobalOb auto nativeValue = convert(lexicalGlobalObject, value); RETURN_IF_EXCEPTION(throwScope, false); invokeFunctorPropagatingExceptionIfNecessary(lexicalGlobalObject, throwScope, [&] { - return impl.setCancelBubble(WTFMove(nativeValue)); + return impl.setCancelBubble(WTF::move(nativeValue)); }); return true; } @@ -490,7 +490,7 @@ static inline bool setJSEvent_returnValueSetter(JSGlobalObject& lexicalGlobalObj auto nativeValue = convert(lexicalGlobalObject, value); RETURN_IF_EXCEPTION(throwScope, false); invokeFunctorPropagatingExceptionIfNecessary(lexicalGlobalObject, throwScope, [&] { - return impl.setLegacyReturnValue(WTFMove(nativeValue)); + return impl.setLegacyReturnValue(WTF::move(nativeValue)); }); return true; } @@ -578,7 +578,7 @@ static inline JSC::EncodedJSValue jsEventPrototypeFunction_initEventBody(JSC::JS EnsureStillAliveScope argument2 = callFrame->argument(2); auto cancelable = convert(*lexicalGlobalObject, argument2.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.initEvent(WTFMove(type), WTFMove(bubbles), WTFMove(cancelable)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.initEvent(WTF::move(type), WTF::move(bubbles), WTF::move(cancelable)); }))); } JSC_DEFINE_HOST_FUNCTION(jsEventPrototypeFunction_initEvent, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) diff --git a/src/bun.js/bindings/webcore/JSEvent.h b/src/bun.js/bindings/webcore/JSEvent.h index 77f324eb94..9f963dc134 100644 --- a/src/bun.js/bindings/webcore/JSEvent.h +++ b/src/bun.js/bindings/webcore/JSEvent.h @@ -32,7 +32,7 @@ public: using Base = JSDOMWrapper; static JSEvent* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSEvent* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSEvent(structure, *globalObject, WTFMove(impl)); + JSEvent* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSEvent(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSEventEmitter.cpp b/src/bun.js/bindings/webcore/JSEventEmitter.cpp index 1ff73c6a2e..4c405a03c3 100644 --- a/src/bun.js/bindings/webcore/JSEventEmitter.cpp +++ b/src/bun.js/bindings/webcore/JSEventEmitter.cpp @@ -116,7 +116,7 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSEventEmitterDOMConstru object->setMaxListeners(maxListeners.toUInt32(lexicalGlobalObject)); } static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -210,7 +210,7 @@ void JSEventEmitterPrototype::finishCreation(VM& vm) const ClassInfo JSEventEmitter::s_info = { "EventEmitter"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSEventEmitter) }; JSEventEmitter::JSEventEmitter(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -275,13 +275,13 @@ inline JSC::EncodedJSValue JSEventEmitter::addListener(JSC::JSGlobalObject* lexi args.append(argument0.value()); args.append(argument1.value()); - JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.emitForBindings(WTFMove(newListenerEventType), WTFMove(args)); })); + JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.emitForBindings(WTF::move(newListenerEventType), WTF::move(args)); })); RETURN_IF_EXCEPTION(throwScope, {}); // then, add the listener auto listener = convert>>(*lexicalGlobalObject, argument1.value(), *castedThis, [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentMustBeObjectError(lexicalGlobalObject, scope, 1, "listener"_s, "EventEmitter"_s, "addListener"_s); }); RETURN_IF_EXCEPTION(throwScope, {}); - JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.addListenerForBindings(WTFMove(eventType), WTFMove(listener), once, prepend); })); + JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.addListenerForBindings(WTF::move(eventType), WTF::move(listener), once, prepend); })); RETURN_IF_EXCEPTION(throwScope, {}); vm.writeBarrier(&static_cast(*castedThis), argument1.value()); @@ -387,7 +387,7 @@ inline JSC::EncodedJSValue JSEventEmitter::removeListener(JSC::JSGlobalObject* l EnsureStillAliveScope argument1 = callFrame->uncheckedArgument(1); auto listener = convert>>(*lexicalGlobalObject, argument1.value(), *castedThis, [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentMustBeObjectError(lexicalGlobalObject, scope, 1, "listener"_s, "EventEmitter"_s, "removeListener"_s); }); RETURN_IF_EXCEPTION(throwScope, {}); - JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.removeListenerForBindings(WTFMove(eventType), WTFMove(listener)); })); + JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.removeListenerForBindings(WTF::move(eventType), WTF::move(listener)); })); RETURN_IF_EXCEPTION(throwScope, {}); vm.writeBarrier(&static_cast(*castedThis), argument1.value()); impl.setThisObject(actualThis); @@ -413,7 +413,7 @@ static inline JSC::EncodedJSValue jsEventEmitterPrototypeFunction_removeAllListe EnsureStillAliveScope argument0 = callFrame->uncheckedArgument(0); auto eventType = argument0.value().toPropertyKey(lexicalGlobalObject); RETURN_IF_EXCEPTION(throwScope, {}); - JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.removeAllListenersForBindings(WTFMove(eventType)); })); + JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.removeAllListenersForBindings(WTF::move(eventType)); })); RETURN_IF_EXCEPTION(throwScope, {}); impl.setThisObject(actualThis); RELEASE_AND_RETURN(throwScope, JSValue::encode(actualThis)); @@ -456,7 +456,7 @@ static inline JSC::EncodedJSValue jsEventEmitterPrototypeFunction_eventNamesBody for (auto& name : impl.getEventNames()) { args.append(JSC::identifierToSafePublicJSValue(vm, name)); } - auto array = JSC::constructArray(lexicalGlobalObject, static_cast(nullptr), WTFMove(args)); + auto array = JSC::constructArray(lexicalGlobalObject, static_cast(nullptr), WTF::move(args)); RETURN_IF_EXCEPTION(throwScope, {}); RELEASE_AND_RETURN(throwScope, JSC::JSValue::encode(array)); } @@ -496,7 +496,7 @@ static inline JSC::EncodedJSValue jsEventEmitterPrototypeFunction_listenersBody( for (auto* listener : impl.getListeners(eventType)) { args.append(listener); } - auto array = JSC::constructArray(lexicalGlobalObject, static_cast(nullptr), WTFMove(args)); + auto array = JSC::constructArray(lexicalGlobalObject, static_cast(nullptr), WTF::move(args)); RETURN_IF_EXCEPTION(throwScope, {}); RELEASE_AND_RETURN(throwScope, JSC::JSValue::encode(array)); } @@ -586,7 +586,7 @@ JSC_DEFINE_HOST_FUNCTION(Events_functionGetEventListeners, for (auto* listener : impl.getListeners(eventType)) { args.append(listener); } - auto array = JSC::constructArray(lexicalGlobalObject, static_cast(nullptr), WTFMove(args)); + auto array = JSC::constructArray(lexicalGlobalObject, static_cast(nullptr), WTF::move(args)); RETURN_IF_EXCEPTION(throwScope, {}); RELEASE_AND_RETURN(throwScope, JSC::JSValue::encode(array)); } @@ -652,7 +652,7 @@ JSC_DEFINE_HOST_FUNCTION(Events_functionOn, EnsureStillAliveScope argument2 = callFrame->uncheckedArgument(2); auto listener = convert>>(*lexicalGlobalObject, argument2.value(), *argument0, [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentMustBeObjectError(lexicalGlobalObject, scope, 2, "listener"_s, "EventEmitter"_s, "removeListener"_s); }); RETURN_IF_EXCEPTION(throwScope, {}); - auto result = JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.addListenerForBindings(WTFMove(eventType), WTFMove(listener), false, false); })); + auto result = JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.addListenerForBindings(WTF::move(eventType), WTF::move(listener), false, false); })); RETURN_IF_EXCEPTION(throwScope, {}); vm.writeBarrier(argument0, argument2.value()); return result; diff --git a/src/bun.js/bindings/webcore/JSEventEmitter.h b/src/bun.js/bindings/webcore/JSEventEmitter.h index 83d4467028..f0c588327e 100644 --- a/src/bun.js/bindings/webcore/JSEventEmitter.h +++ b/src/bun.js/bindings/webcore/JSEventEmitter.h @@ -17,7 +17,7 @@ public: using Base = JSDOMWrapper; static JSEventEmitter* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSEventEmitter* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSEventEmitter(structure, *globalObject, WTFMove(impl)); + JSEventEmitter* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSEventEmitter(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSEventEmitterCustom.cpp b/src/bun.js/bindings/webcore/JSEventEmitterCustom.cpp index 3a174ce480..924ee30bb5 100644 --- a/src/bun.js/bindings/webcore/JSEventEmitterCustom.cpp +++ b/src/bun.js/bindings/webcore/JSEventEmitterCustom.cpp @@ -22,7 +22,7 @@ using namespace JSC; JSValue toJSNewlyCreated(JSGlobalObject*, JSDOMGlobalObject* globalObject, Ref&& value) { - return createWrapper(globalObject, WTFMove(value)); + return createWrapper(globalObject, WTF::move(value)); } EventEmitter* JSEventEmitter::toWrapped(VM& vm, JSValue value) @@ -72,7 +72,7 @@ JSEventEmitter* jsEventEmitterCastFast(VM& vm, JSC::JSGlobalObject* lexicalGloba impl->setThisObject(thisObject); auto throwScope = DECLARE_THROW_SCOPE(vm); - auto result = toJSNewlyCreated>(*lexicalGlobalObject, *globalObject, throwScope, WTFMove(impl)); + auto result = toJSNewlyCreated>(*lexicalGlobalObject, *globalObject, throwScope, WTF::move(impl)); thisObject->putDirect(vm, name, result, 0); diff --git a/src/bun.js/bindings/webcore/JSEventTarget.cpp b/src/bun.js/bindings/webcore/JSEventTarget.cpp index d1fed97ce7..f2b75d165b 100644 --- a/src/bun.js/bindings/webcore/JSEventTarget.cpp +++ b/src/bun.js/bindings/webcore/JSEventTarget.cpp @@ -114,7 +114,7 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSEventTargetDOMConstruc if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -161,7 +161,7 @@ void JSEventTargetPrototype::finishCreation(VM& vm) const ClassInfo JSEventTarget::s_info = { "EventTarget"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSEventTarget) }; JSEventTarget::JSEventTarget(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -238,12 +238,12 @@ static inline JSC::EncodedJSValue jsEventTargetPrototypeFunction_addEventListene JSObject& target = *castedThis; errorInstance->putDirect(vm, vm.propertyNames->target, &target); RETURN_IF_EXCEPTION(throwScope, {}); - errorInstance->putDirect(vm, vm.propertyNames->type, jsString(vm, WTFMove(type))); + errorInstance->putDirect(vm, vm.propertyNames->type, jsString(vm, WTF::move(type))); Bun::Process::emitWarningErrorInstance(lexicalGlobalObject, errorInstance); if (throwScope.exception()) [[unlikely]] throwScope.clearException(); } - auto result = JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.addEventListenerForBindings(WTFMove(type), WTFMove(listener), WTFMove(options)); })); + auto result = JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.addEventListenerForBindings(WTF::move(type), WTF::move(listener), WTF::move(options)); })); RETURN_IF_EXCEPTION(throwScope, {}); vm.writeBarrier(&static_cast(*castedThis), argument1.value()); return result; @@ -272,7 +272,7 @@ static inline JSC::EncodedJSValue jsEventTargetPrototypeFunction_removeEventList EnsureStillAliveScope argument2 = callFrame->argument(2); auto options = argument2.value().isUndefined() ? false : convert, IDLBoolean>>(*lexicalGlobalObject, argument2.value()); RETURN_IF_EXCEPTION(throwScope, {}); - auto result = JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.removeEventListenerForBindings(WTFMove(type), WTFMove(listener), WTFMove(options)); })); + auto result = JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.removeEventListenerForBindings(WTF::move(type), WTF::move(listener), WTF::move(options)); })); RETURN_IF_EXCEPTION(throwScope, {}); vm.writeBarrier(&static_cast(*castedThis), argument1.value()); return result; diff --git a/src/bun.js/bindings/webcore/JSEventTarget.h b/src/bun.js/bindings/webcore/JSEventTarget.h index f8b2f99d14..a29c68e61f 100644 --- a/src/bun.js/bindings/webcore/JSEventTarget.h +++ b/src/bun.js/bindings/webcore/JSEventTarget.h @@ -36,7 +36,7 @@ public: using Base = JSDOMWrapper; static JSEventTarget* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSEventTarget* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSEventTarget(structure, *globalObject, WTFMove(impl)); + JSEventTarget* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSEventTarget(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSEventTargetCustom.cpp b/src/bun.js/bindings/webcore/JSEventTargetCustom.cpp index 368a57c74b..e30cd3033d 100644 --- a/src/bun.js/bindings/webcore/JSEventTargetCustom.cpp +++ b/src/bun.js/bindings/webcore/JSEventTargetCustom.cpp @@ -47,7 +47,7 @@ using namespace JSC; JSValue toJSNewlyCreated(JSGlobalObject*, JSDOMGlobalObject* globalObject, Ref&& value) { - return createWrapper(globalObject, WTFMove(value)); + return createWrapper(globalObject, WTF::move(value)); } EventTarget* JSEventTarget::toWrapped(VM& vm, JSValue value) diff --git a/src/bun.js/bindings/webcore/JSFetchHeaders.cpp b/src/bun.js/bindings/webcore/JSFetchHeaders.cpp index 24c94caf95..e3ab16c356 100644 --- a/src/bun.js/bindings/webcore/JSFetchHeaders.cpp +++ b/src/bun.js/bindings/webcore/JSFetchHeaders.cpp @@ -136,7 +136,7 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSFetchHeadersDOMConstru if (argument0.value() && !argument0.value().isUndefined()) { if (auto* existingJsFetchHeaders = jsDynamicCast(argument0.value())) { auto newHeaders = FetchHeaders::create(existingJsFetchHeaders->wrapped()); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(newHeaders)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(newHeaders)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -147,11 +147,11 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSFetchHeadersDOMConstru } RETURN_IF_EXCEPTION(throwScope, {}); - auto object = FetchHeaders::create(WTFMove(init)); + auto object = FetchHeaders::create(WTF::move(init)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -331,7 +331,7 @@ void JSFetchHeadersPrototype::finishCreation(VM& vm) const ClassInfo JSFetchHeaders::s_info = { "Headers"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSFetchHeaders) }; JSFetchHeaders::JSFetchHeaders(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -401,7 +401,7 @@ static inline JSC::EncodedJSValue jsFetchHeadersPrototypeFunction_appendBody(JSC EnsureStillAliveScope argument1 = callFrame->uncheckedArgument(1); auto value = convert(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.append(WTFMove(name), WTFMove(value)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.append(WTF::move(name), WTF::move(value)); }))); } /** @@ -503,7 +503,7 @@ static inline JSC::EncodedJSValue jsFetchHeadersPrototypeFunction_setBody(JSC::J EnsureStillAliveScope argument1 = callFrame->uncheckedArgument(1); auto value = convert(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.set(WTFMove(name), WTFMove(value)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.set(WTF::move(name), WTF::move(value)); }))); } JSC_DEFINE_HOST_FUNCTION(jsFetchHeadersPrototypeFunction_set, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -760,7 +760,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj // RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer); #endif } - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, FetchHeaders& impl) diff --git a/src/bun.js/bindings/webcore/JSFetchHeaders.h b/src/bun.js/bindings/webcore/JSFetchHeaders.h index 46e52f703c..33ba364098 100644 --- a/src/bun.js/bindings/webcore/JSFetchHeaders.h +++ b/src/bun.js/bindings/webcore/JSFetchHeaders.h @@ -31,7 +31,7 @@ public: using Base = JSDOMWrapper; static JSFetchHeaders* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSFetchHeaders* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSFetchHeaders(structure, *globalObject, WTFMove(impl)); + JSFetchHeaders* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSFetchHeaders(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSMIMEType.cpp b/src/bun.js/bindings/webcore/JSMIMEType.cpp index 57edf53082..0f9b967741 100644 --- a/src/bun.js/bindings/webcore/JSMIMEType.cpp +++ b/src/bun.js/bindings/webcore/JSMIMEType.cpp @@ -272,7 +272,7 @@ static std::tuple parseTypeAndSubtype(JSGlobalObject* gl String subtype = subtypeView.convertToASCIILowercase(); // Return type, subtype, and the index where parameters start - return std::make_tuple(WTFMove(type), WTFMove(subtype), paramsStartIndex); + return std::make_tuple(WTF::move(type), WTF::move(subtype), paramsStartIndex); } //-- JSMIMEType (Instance) Implementation -- @@ -282,7 +282,7 @@ const ClassInfo JSMIMEType::s_info = { "MIMEType"_s, &Base::s_info, nullptr, nul JSMIMEType* JSMIMEType::create(VM& vm, Structure* structure, String type, String subtype, JSMIMEParams* params) { JSMIMEType* instance = new (NotNull, allocateCell(vm)) JSMIMEType(vm, structure); - instance->finishCreation(vm, WTFMove(type), WTFMove(subtype), params); + instance->finishCreation(vm, WTF::move(type), WTF::move(subtype), params); return instance; } @@ -300,8 +300,8 @@ void JSMIMEType::finishCreation(VM& vm, String type, String subtype, JSMIMEParam { Base::finishCreation(vm); ASSERT(inherits(info())); - m_type = WTFMove(type); - m_subtype = WTFMove(subtype); + m_type = WTF::move(type); + m_subtype = WTF::move(subtype); m_parameters.set(vm, this, params); } @@ -581,7 +581,7 @@ JSC_DEFINE_HOST_FUNCTION(constructMIMEType, (JSGlobalObject * globalObject, Call JSMIMEParams* paramsInstance = JSMIMEParams::create(vm, paramsStructure, paramsMap); // 4. Create the JSMIMEType instance - JSMIMEType* instance = JSMIMEType::create(vm, structure, WTFMove(type), WTFMove(subtype), paramsInstance); + JSMIMEType* instance = JSMIMEType::create(vm, structure, WTF::move(type), WTF::move(subtype), paramsInstance); return JSC::JSValue::encode(instance); } diff --git a/src/bun.js/bindings/webcore/JSMIMEType.h b/src/bun.js/bindings/webcore/JSMIMEType.h index f7bf15af92..f4697c2031 100644 --- a/src/bun.js/bindings/webcore/JSMIMEType.h +++ b/src/bun.js/bindings/webcore/JSMIMEType.h @@ -36,10 +36,10 @@ public: DECLARE_VISIT_CHILDREN; const WTF::String& type() const { return m_type; } - void setType(WTF::String type) { m_type = WTFMove(type); } + void setType(WTF::String type) { m_type = WTF::move(type); } const WTF::String& subtype() const { return m_subtype; } - void setSubtype(WTF::String subtype) { m_subtype = WTFMove(subtype); } + void setSubtype(WTF::String subtype) { m_subtype = WTF::move(subtype); } JSMIMEParams* parameters() const { return m_parameters.get(); } diff --git a/src/bun.js/bindings/webcore/JSMessageChannel.cpp b/src/bun.js/bindings/webcore/JSMessageChannel.cpp index 0d46552605..e7ebdd447f 100644 --- a/src/bun.js/bindings/webcore/JSMessageChannel.cpp +++ b/src/bun.js/bindings/webcore/JSMessageChannel.cpp @@ -102,7 +102,7 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSMessageChannelDOMConst if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -148,7 +148,7 @@ void JSMessageChannelPrototype::finishCreation(VM& vm) const ClassInfo JSMessageChannel::s_info = { "MessageChannel"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSMessageChannel) }; JSMessageChannel::JSMessageChannel(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -301,7 +301,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj // RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer); #endif } - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, MessageChannel& impl) diff --git a/src/bun.js/bindings/webcore/JSMessageChannel.h b/src/bun.js/bindings/webcore/JSMessageChannel.h index 08b5b96ff9..6dad079ed4 100644 --- a/src/bun.js/bindings/webcore/JSMessageChannel.h +++ b/src/bun.js/bindings/webcore/JSMessageChannel.h @@ -31,7 +31,7 @@ public: using Base = JSDOMWrapper; static JSMessageChannel* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSMessageChannel* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSMessageChannel(structure, *globalObject, WTFMove(impl)); + JSMessageChannel* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSMessageChannel(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSMessageEvent.cpp b/src/bun.js/bindings/webcore/JSMessageEvent.cpp index b7db3c24a4..90545ef958 100644 --- a/src/bun.js/bindings/webcore/JSMessageEvent.cpp +++ b/src/bun.js/bindings/webcore/JSMessageEvent.cpp @@ -244,11 +244,11 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSMessageEventDOMConstru EnsureStillAliveScope argument1 = callFrame->argument(1); auto eventInitDict = convert>(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, {}); - auto object = MessageEvent::create(WTFMove(type), WTFMove(eventInitDict)); + auto object = MessageEvent::create(WTF::move(type), WTF::move(eventInitDict)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -297,7 +297,7 @@ void JSMessageEventPrototype::finishCreation(VM& vm) const ClassInfo JSMessageEvent::s_info = { "MessageEvent"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSMessageEvent) }; JSMessageEvent::JSMessageEvent(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSEvent(structure, globalObject, WTFMove(impl)) + : JSEvent(structure, globalObject, WTF::move(impl)) { } @@ -430,7 +430,7 @@ static inline JSC::EncodedJSValue jsMessageEventPrototypeFunction_initMessageEve EnsureStillAliveScope argument7 = callFrame->argument(7); auto messagePorts = argument7.value().isUndefined() ? Converter>>::ReturnType {} : convert>>(*lexicalGlobalObject, argument7.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.initMessageEvent(WTFMove(type), WTFMove(bubbles), WTFMove(cancelable), WTFMove(data), WTFMove(originArg), WTFMove(lastEventId), WTFMove(source), WTFMove(messagePorts)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.initMessageEvent(WTF::move(type), WTF::move(bubbles), WTF::move(cancelable), WTF::move(data), WTF::move(originArg), WTF::move(lastEventId), WTF::move(source), WTF::move(messagePorts)); }))); } JSC_DEFINE_HOST_FUNCTION(jsMessageEventPrototypeFunction_initMessageEvent, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -518,7 +518,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj // RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer); #endif } - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, MessageEvent& impl) diff --git a/src/bun.js/bindings/webcore/JSMessageEvent.h b/src/bun.js/bindings/webcore/JSMessageEvent.h index 8f48568f77..d4a29c524a 100644 --- a/src/bun.js/bindings/webcore/JSMessageEvent.h +++ b/src/bun.js/bindings/webcore/JSMessageEvent.h @@ -33,7 +33,7 @@ public: using DOMWrapped = MessageEvent; static JSMessageEvent* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSMessageEvent* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSMessageEvent(structure, *globalObject, WTFMove(impl)); + JSMessageEvent* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSMessageEvent(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSMessagePort.cpp b/src/bun.js/bindings/webcore/JSMessagePort.cpp index 94aad037df..5fb0d1fec8 100644 --- a/src/bun.js/bindings/webcore/JSMessagePort.cpp +++ b/src/bun.js/bindings/webcore/JSMessagePort.cpp @@ -150,7 +150,7 @@ void JSMessagePortPrototype::finishCreation(VM& vm) const ClassInfo JSMessagePort::s_info = { "MessagePort"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSMessagePort) }; JSMessagePort::JSMessagePort(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSEventTarget(structure, globalObject, WTFMove(impl)) + : JSEventTarget(structure, globalObject, WTF::move(impl)) { } @@ -254,7 +254,7 @@ static inline JSC::EncodedJSValue jsMessagePortPrototypeFunction_postMessage1Bod EnsureStillAliveScope argument1 = callFrame->uncheckedArgument(1); auto transfer = convert>(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.postMessage(*jsCast(lexicalGlobalObject), WTFMove(message), WTFMove(transfer)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.postMessage(*jsCast(lexicalGlobalObject), WTF::move(message), WTF::move(transfer)); }))); } static inline JSC::EncodedJSValue jsMessagePortPrototypeFunction_postMessage2Body(JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame, typename IDLOperation::ClassParameter castedThis) @@ -270,7 +270,7 @@ static inline JSC::EncodedJSValue jsMessagePortPrototypeFunction_postMessage2Bod EnsureStillAliveScope argument1 = callFrame->argument(1); auto options = convert>(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.postMessage(*jsCast(lexicalGlobalObject), WTFMove(message), WTFMove(options)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.postMessage(*jsCast(lexicalGlobalObject), WTF::move(message), WTF::move(options)); }))); } static inline JSC::EncodedJSValue jsMessagePortPrototypeFunction_postMessageOverloadDispatcher(JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame, typename IDLOperation::ClassParameter castedThis) @@ -478,7 +478,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj // RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer); #endif } - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, MessagePort& impl) diff --git a/src/bun.js/bindings/webcore/JSMessagePort.h b/src/bun.js/bindings/webcore/JSMessagePort.h index dda3f9988a..3cbd5e3ceb 100644 --- a/src/bun.js/bindings/webcore/JSMessagePort.h +++ b/src/bun.js/bindings/webcore/JSMessagePort.h @@ -33,7 +33,7 @@ public: using DOMWrapped = MessagePort; static JSMessagePort* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSMessagePort* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSMessagePort(structure, *globalObject, WTFMove(impl)); + JSMessagePort* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSMessagePort(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSPerformance.cpp b/src/bun.js/bindings/webcore/JSPerformance.cpp index 813a973501..7c0f987ab3 100644 --- a/src/bun.js/bindings/webcore/JSPerformance.cpp +++ b/src/bun.js/bindings/webcore/JSPerformance.cpp @@ -252,7 +252,7 @@ void JSPerformancePrototype::finishCreation(VM& vm) const ClassInfo JSPerformance::s_info = { "Performance"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSPerformance) }; JSPerformance::JSPerformance(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSEventTarget(structure, globalObject, WTFMove(impl)) + : JSEventTarget(structure, globalObject, WTF::move(impl)) { } @@ -452,7 +452,7 @@ static inline JSC::EncodedJSValue jsPerformancePrototypeFunction_getEntriesByTyp EnsureStillAliveScope argument0 = callFrame->uncheckedArgument(0); auto type = convert(*lexicalGlobalObject, argument0.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, impl.getEntriesByType(WTFMove(type))))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, impl.getEntriesByType(WTF::move(type))))); } JSC_DEFINE_HOST_FUNCTION(jsPerformancePrototypeFunction_getEntriesByType, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -475,7 +475,7 @@ static inline JSC::EncodedJSValue jsPerformancePrototypeFunction_getEntriesByNam EnsureStillAliveScope argument1 = callFrame->argument(1); auto type = argument1.value().isUndefined() ? String() : convert(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, impl.getEntriesByName(WTFMove(name), WTFMove(type))))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, impl.getEntriesByName(WTF::move(name), WTF::move(type))))); } JSC_DEFINE_HOST_FUNCTION(jsPerformancePrototypeFunction_getEntriesByName, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -510,7 +510,7 @@ static inline JSC::EncodedJSValue jsPerformancePrototypeFunction_setResourceTimi EnsureStillAliveScope argument0 = callFrame->uncheckedArgument(0); auto maxSize = convert(*lexicalGlobalObject, argument0.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.setResourceTimingBufferSize(WTFMove(maxSize)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.setResourceTimingBufferSize(WTF::move(maxSize)); }))); } JSC_DEFINE_HOST_FUNCTION(jsPerformancePrototypeFunction_setResourceTimingBufferSize, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -533,7 +533,7 @@ static inline JSC::EncodedJSValue jsPerformancePrototypeFunction_markBody(JSC::J EnsureStillAliveScope argument1 = callFrame->argument(1); auto markOptions = convert>(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, impl.mark(*jsCast(lexicalGlobalObject), WTFMove(markName), WTFMove(markOptions))))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, impl.mark(*jsCast(lexicalGlobalObject), WTF::move(markName), WTF::move(markOptions))))); } JSC_DEFINE_HOST_FUNCTION(jsPerformancePrototypeFunction_mark, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -551,7 +551,7 @@ static inline JSC::EncodedJSValue jsPerformancePrototypeFunction_clearMarksBody( EnsureStillAliveScope argument0 = callFrame->argument(0); auto markName = argument0.value().isUndefined() ? String() : convert(*lexicalGlobalObject, argument0.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.clearMarks(WTFMove(markName)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.clearMarks(WTF::move(markName)); }))); } JSC_DEFINE_HOST_FUNCTION(jsPerformancePrototypeFunction_clearMarks, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -577,7 +577,7 @@ static inline JSC::EncodedJSValue jsPerformancePrototypeFunction_measureBody(JSC EnsureStillAliveScope argument2 = callFrame->argument(2); auto endMark = argument2.value().isUndefined() ? String() : convert(*lexicalGlobalObject, argument2.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, impl.measure(*jsCast(lexicalGlobalObject), WTFMove(measureName), WTFMove(startOrMeasureOptions), WTFMove(endMark))))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, impl.measure(*jsCast(lexicalGlobalObject), WTF::move(measureName), WTF::move(startOrMeasureOptions), WTF::move(endMark))))); } JSC_DEFINE_HOST_FUNCTION(jsPerformancePrototypeFunction_measure, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -595,7 +595,7 @@ static inline JSC::EncodedJSValue jsPerformancePrototypeFunction_clearMeasuresBo EnsureStillAliveScope argument0 = callFrame->argument(0); auto measureName = argument0.value().isUndefined() ? String() : convert(*lexicalGlobalObject, argument0.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.clearMeasures(WTFMove(measureName)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.clearMeasures(WTF::move(measureName)); }))); } JSC_DEFINE_HOST_FUNCTION(jsPerformancePrototypeFunction_clearMeasures, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -672,7 +672,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj // RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer); #endif } - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, Performance& impl) diff --git a/src/bun.js/bindings/webcore/JSPerformance.h b/src/bun.js/bindings/webcore/JSPerformance.h index 9aa6f243e9..0cbb940959 100644 --- a/src/bun.js/bindings/webcore/JSPerformance.h +++ b/src/bun.js/bindings/webcore/JSPerformance.h @@ -35,7 +35,7 @@ public: using DOMWrapped = Performance; static JSPerformance* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSPerformance* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSPerformance(structure, *globalObject, WTFMove(impl)); + JSPerformance* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSPerformance(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSPerformanceEntry.cpp b/src/bun.js/bindings/webcore/JSPerformanceEntry.cpp index 1ff05b9c48..adf1d170fa 100644 --- a/src/bun.js/bindings/webcore/JSPerformanceEntry.cpp +++ b/src/bun.js/bindings/webcore/JSPerformanceEntry.cpp @@ -135,7 +135,7 @@ void JSPerformanceEntryPrototype::finishCreation(VM& vm) const ClassInfo JSPerformanceEntry::s_info = { "PerformanceEntry"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSPerformanceEntry) }; JSPerformanceEntry::JSPerformanceEntry(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } diff --git a/src/bun.js/bindings/webcore/JSPerformanceEntry.h b/src/bun.js/bindings/webcore/JSPerformanceEntry.h index 36a5df80a7..b8af390991 100644 --- a/src/bun.js/bindings/webcore/JSPerformanceEntry.h +++ b/src/bun.js/bindings/webcore/JSPerformanceEntry.h @@ -31,7 +31,7 @@ public: using Base = JSDOMWrapper; static JSPerformanceEntry* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSPerformanceEntry* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSPerformanceEntry(structure, *globalObject, WTFMove(impl)); + JSPerformanceEntry* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSPerformanceEntry(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSPerformanceEntryCustom.cpp b/src/bun.js/bindings/webcore/JSPerformanceEntryCustom.cpp index a7d86488b7..944427d627 100644 --- a/src/bun.js/bindings/webcore/JSPerformanceEntryCustom.cpp +++ b/src/bun.js/bindings/webcore/JSPerformanceEntryCustom.cpp @@ -51,21 +51,21 @@ JSValue toJSNewlyCreated(JSGlobalObject*, JSDOMGlobalObject* globalObject, Ref

    performanceEntryType()) { // case PerformanceEntry::Type::Navigation: - // return createWrapper(globalObject, WTFMove(entry)); + // return createWrapper(globalObject, WTF::move(entry)); case PerformanceEntry::Type::Mark: - return createWrapper(globalObject, WTFMove(entry)); + return createWrapper(globalObject, WTF::move(entry)); case PerformanceEntry::Type::Measure: - return createWrapper(globalObject, WTFMove(entry)); + return createWrapper(globalObject, WTF::move(entry)); // case PerformanceEntry::Type::Resource: - // return createWrapper(globalObject, WTFMove(entry)); + // return createWrapper(globalObject, WTF::move(entry)); // case PerformanceEntry::Type::Paint: - // return createWrapper(globalObject, WTFMove(entry)); + // return createWrapper(globalObject, WTF::move(entry)); default: { } } ASSERT_NOT_REACHED(); - return createWrapper(globalObject, WTFMove(entry)); + return createWrapper(globalObject, WTF::move(entry)); } JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, PerformanceEntry& entry) diff --git a/src/bun.js/bindings/webcore/JSPerformanceMark.cpp b/src/bun.js/bindings/webcore/JSPerformanceMark.cpp index a7fa5e5768..56a7b33bef 100644 --- a/src/bun.js/bindings/webcore/JSPerformanceMark.cpp +++ b/src/bun.js/bindings/webcore/JSPerformanceMark.cpp @@ -105,11 +105,11 @@ template<> EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSPerformanceMarkDOMConstruct EnsureStillAliveScope argument1 = callFrame->argument(1); auto markOptions = convert>(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, {}); - auto object = PerformanceMark::create(*castedThis->globalObject(), *context, WTFMove(markName), WTFMove(markOptions)); + auto object = PerformanceMark::create(*castedThis->globalObject(), *context, WTF::move(markName), WTF::move(markOptions)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -153,7 +153,7 @@ void JSPerformanceMarkPrototype::finishCreation(VM& vm) const ClassInfo JSPerformanceMark::s_info = { "PerformanceMark"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSPerformanceMark) }; JSPerformanceMark::JSPerformanceMark(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSPerformanceEntry(structure, globalObject, WTFMove(impl)) + : JSPerformanceEntry(structure, globalObject, WTF::move(impl)) { } @@ -266,7 +266,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj // RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer); #endif } - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, PerformanceMark& impl) diff --git a/src/bun.js/bindings/webcore/JSPerformanceMark.h b/src/bun.js/bindings/webcore/JSPerformanceMark.h index 00c92883ef..177af58fa9 100644 --- a/src/bun.js/bindings/webcore/JSPerformanceMark.h +++ b/src/bun.js/bindings/webcore/JSPerformanceMark.h @@ -32,7 +32,7 @@ public: using DOMWrapped = PerformanceMark; static JSPerformanceMark* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSPerformanceMark* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSPerformanceMark(structure, *globalObject, WTFMove(impl)); + JSPerformanceMark* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSPerformanceMark(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSPerformanceMeasure.cpp b/src/bun.js/bindings/webcore/JSPerformanceMeasure.cpp index c0dbd10789..008f4a29cb 100644 --- a/src/bun.js/bindings/webcore/JSPerformanceMeasure.cpp +++ b/src/bun.js/bindings/webcore/JSPerformanceMeasure.cpp @@ -119,7 +119,7 @@ void JSPerformanceMeasurePrototype::finishCreation(VM& vm) const ClassInfo JSPerformanceMeasure::s_info = { "PerformanceMeasure"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSPerformanceMeasure) }; JSPerformanceMeasure::JSPerformanceMeasure(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSPerformanceEntry(structure, globalObject, WTFMove(impl)) + : JSPerformanceEntry(structure, globalObject, WTF::move(impl)) { } diff --git a/src/bun.js/bindings/webcore/JSPerformanceMeasure.h b/src/bun.js/bindings/webcore/JSPerformanceMeasure.h index 15134c1891..62ab867472 100644 --- a/src/bun.js/bindings/webcore/JSPerformanceMeasure.h +++ b/src/bun.js/bindings/webcore/JSPerformanceMeasure.h @@ -32,7 +32,7 @@ public: using DOMWrapped = PerformanceMeasure; static JSPerformanceMeasure* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSPerformanceMeasure* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSPerformanceMeasure(structure, *globalObject, WTFMove(impl)); + JSPerformanceMeasure* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSPerformanceMeasure(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSPerformanceObserver.cpp b/src/bun.js/bindings/webcore/JSPerformanceObserver.cpp index 12621cb1d3..01b0b441bb 100644 --- a/src/bun.js/bindings/webcore/JSPerformanceObserver.cpp +++ b/src/bun.js/bindings/webcore/JSPerformanceObserver.cpp @@ -180,7 +180,7 @@ template<> EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSPerformanceObserverDOMConst if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -228,7 +228,7 @@ void JSPerformanceObserverPrototype::finishCreation(VM& vm) const ClassInfo JSPerformanceObserver::s_info = { "PerformanceObserver"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSPerformanceObserver) }; JSPerformanceObserver::JSPerformanceObserver(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -290,7 +290,7 @@ static inline JSC::EncodedJSValue jsPerformanceObserverPrototypeFunction_observe EnsureStillAliveScope argument0 = callFrame->argument(0); auto options = convert>(*lexicalGlobalObject, argument0.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.observe(WTFMove(options)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.observe(WTF::move(options)); }))); } JSC_DEFINE_HOST_FUNCTION(jsPerformanceObserverPrototypeFunction_observe, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -408,7 +408,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj // RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer); #endif } - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, PerformanceObserver& impl) diff --git a/src/bun.js/bindings/webcore/JSPerformanceObserver.h b/src/bun.js/bindings/webcore/JSPerformanceObserver.h index 6f6baef607..989fc79b7e 100644 --- a/src/bun.js/bindings/webcore/JSPerformanceObserver.h +++ b/src/bun.js/bindings/webcore/JSPerformanceObserver.h @@ -32,7 +32,7 @@ public: using Base = JSDOMWrapper; static JSPerformanceObserver* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSPerformanceObserver* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSPerformanceObserver(structure, *globalObject, WTFMove(impl)); + JSPerformanceObserver* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSPerformanceObserver(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSPerformanceObserverEntryList.cpp b/src/bun.js/bindings/webcore/JSPerformanceObserverEntryList.cpp index 7c5a4972b4..4b7a580efd 100644 --- a/src/bun.js/bindings/webcore/JSPerformanceObserverEntryList.cpp +++ b/src/bun.js/bindings/webcore/JSPerformanceObserverEntryList.cpp @@ -133,7 +133,7 @@ void JSPerformanceObserverEntryListPrototype::finishCreation(VM& vm) const ClassInfo JSPerformanceObserverEntryList::s_info = { "PerformanceObserverEntryList"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSPerformanceObserverEntryList) }; JSPerformanceObserverEntryList::JSPerformanceObserverEntryList(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -199,7 +199,7 @@ static inline JSC::EncodedJSValue jsPerformanceObserverEntryListPrototypeFunctio EnsureStillAliveScope argument0 = callFrame->uncheckedArgument(0); auto type = convert(*lexicalGlobalObject, argument0.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, impl.getEntriesByType(WTFMove(type))))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, impl.getEntriesByType(WTF::move(type))))); } JSC_DEFINE_HOST_FUNCTION(jsPerformanceObserverEntryListPrototypeFunction_getEntriesByType, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -222,7 +222,7 @@ static inline JSC::EncodedJSValue jsPerformanceObserverEntryListPrototypeFunctio EnsureStillAliveScope argument1 = callFrame->argument(1); auto type = argument1.value().isUndefined() ? String() : convert(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, impl.getEntriesByName(WTFMove(name), WTFMove(type))))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, impl.getEntriesByName(WTF::move(name), WTF::move(type))))); } JSC_DEFINE_HOST_FUNCTION(jsPerformanceObserverEntryListPrototypeFunction_getEntriesByName, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -296,7 +296,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj // RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer); #endif } - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, PerformanceObserverEntryList& impl) diff --git a/src/bun.js/bindings/webcore/JSPerformanceObserverEntryList.h b/src/bun.js/bindings/webcore/JSPerformanceObserverEntryList.h index 9c77f7a39b..2c7a8091e3 100644 --- a/src/bun.js/bindings/webcore/JSPerformanceObserverEntryList.h +++ b/src/bun.js/bindings/webcore/JSPerformanceObserverEntryList.h @@ -31,7 +31,7 @@ public: using Base = JSDOMWrapper; static JSPerformanceObserverEntryList* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSPerformanceObserverEntryList* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSPerformanceObserverEntryList(structure, *globalObject, WTFMove(impl)); + JSPerformanceObserverEntryList* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSPerformanceObserverEntryList(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSPerformanceResourceTiming.cpp b/src/bun.js/bindings/webcore/JSPerformanceResourceTiming.cpp index dbef65a877..a0e82c0094 100644 --- a/src/bun.js/bindings/webcore/JSPerformanceResourceTiming.cpp +++ b/src/bun.js/bindings/webcore/JSPerformanceResourceTiming.cpp @@ -166,7 +166,7 @@ void JSPerformanceResourceTimingPrototype::finishCreation(VM& vm) const ClassInfo JSPerformanceResourceTiming::s_info = { "PerformanceResourceTiming"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSPerformanceResourceTiming) }; JSPerformanceResourceTiming::JSPerformanceResourceTiming(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSPerformanceEntry(structure, globalObject, WTFMove(impl)) + : JSPerformanceEntry(structure, globalObject, WTF::move(impl)) { } diff --git a/src/bun.js/bindings/webcore/JSPerformanceResourceTiming.h b/src/bun.js/bindings/webcore/JSPerformanceResourceTiming.h index 86e6b29327..e9127b59d1 100644 --- a/src/bun.js/bindings/webcore/JSPerformanceResourceTiming.h +++ b/src/bun.js/bindings/webcore/JSPerformanceResourceTiming.h @@ -33,7 +33,7 @@ public: static JSPerformanceResourceTiming* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { auto& vm = JSC::getVM(globalObject); - JSPerformanceResourceTiming* ptr = new (NotNull, JSC::allocateCell(vm)) JSPerformanceResourceTiming(structure, *globalObject, WTFMove(impl)); + JSPerformanceResourceTiming* ptr = new (NotNull, JSC::allocateCell(vm)) JSPerformanceResourceTiming(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(vm); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSPerformanceServerTiming.cpp b/src/bun.js/bindings/webcore/JSPerformanceServerTiming.cpp index 492a393198..99abe5e87f 100644 --- a/src/bun.js/bindings/webcore/JSPerformanceServerTiming.cpp +++ b/src/bun.js/bindings/webcore/JSPerformanceServerTiming.cpp @@ -133,7 +133,7 @@ void JSPerformanceServerTimingPrototype::finishCreation(VM& vm) const ClassInfo JSPerformanceServerTiming::s_info = { "PerformanceServerTiming"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSPerformanceServerTiming) }; JSPerformanceServerTiming::JSPerformanceServerTiming(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -296,7 +296,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj // RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer); // #endif // } - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, PerformanceServerTiming& impl) diff --git a/src/bun.js/bindings/webcore/JSPerformanceServerTiming.h b/src/bun.js/bindings/webcore/JSPerformanceServerTiming.h index 7d549f3689..fd32594b17 100644 --- a/src/bun.js/bindings/webcore/JSPerformanceServerTiming.h +++ b/src/bun.js/bindings/webcore/JSPerformanceServerTiming.h @@ -32,7 +32,7 @@ public: static JSPerformanceServerTiming* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { auto& vm = JSC::getVM(globalObject); - JSPerformanceServerTiming* ptr = new (NotNull, JSC::allocateCell(vm)) JSPerformanceServerTiming(structure, *globalObject, WTFMove(impl)); + JSPerformanceServerTiming* ptr = new (NotNull, JSC::allocateCell(vm)) JSPerformanceServerTiming(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(vm); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSPerformanceTiming.cpp b/src/bun.js/bindings/webcore/JSPerformanceTiming.cpp index 1f21ac34f4..f9a93c638a 100644 --- a/src/bun.js/bindings/webcore/JSPerformanceTiming.cpp +++ b/src/bun.js/bindings/webcore/JSPerformanceTiming.cpp @@ -168,7 +168,7 @@ void JSPerformanceTimingPrototype::finishCreation(VM& vm) const ClassInfo JSPerformanceTiming::s_info = { "PerformanceTiming"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSPerformanceTiming) }; JSPerformanceTiming::JSPerformanceTiming(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -624,7 +624,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj // RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer); #endif } - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, PerformanceTiming& impl) diff --git a/src/bun.js/bindings/webcore/JSPerformanceTiming.h b/src/bun.js/bindings/webcore/JSPerformanceTiming.h index a9a1d0124e..e7c42ec4a0 100644 --- a/src/bun.js/bindings/webcore/JSPerformanceTiming.h +++ b/src/bun.js/bindings/webcore/JSPerformanceTiming.h @@ -31,7 +31,7 @@ public: using Base = JSDOMWrapper; static JSPerformanceTiming* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSPerformanceTiming* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSPerformanceTiming(structure, *globalObject, WTFMove(impl)); + JSPerformanceTiming* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSPerformanceTiming(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSReadableStreamSink.cpp b/src/bun.js/bindings/webcore/JSReadableStreamSink.cpp index 0a34f52ff5..93219a4700 100644 --- a/src/bun.js/bindings/webcore/JSReadableStreamSink.cpp +++ b/src/bun.js/bindings/webcore/JSReadableStreamSink.cpp @@ -106,7 +106,7 @@ void JSReadableStreamSinkPrototype::finishCreation(VM& vm) const ClassInfo JSReadableStreamSink::s_info = { "ReadableStreamSink"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSReadableStreamSink) }; JSReadableStreamSink::JSReadableStreamSink(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -148,7 +148,7 @@ static inline JSC::EncodedJSValue jsReadableStreamSinkPrototypeFunction_enqueueB EnsureStillAliveScope argument0 = callFrame->uncheckedArgument(0); auto chunk = convert>(*lexicalGlobalObject, argument0.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.enqueue(WTFMove(chunk)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.enqueue(WTF::move(chunk)); }))); } JSC_DEFINE_HOST_FUNCTION(jsReadableStreamSinkPrototypeFunction_enqueue, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -183,7 +183,7 @@ static inline JSC::EncodedJSValue jsReadableStreamSinkPrototypeFunction_errorBod EnsureStillAliveScope argument0 = callFrame->uncheckedArgument(0); auto message = convert(*lexicalGlobalObject, argument0.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.error(WTFMove(message)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.error(WTF::move(message)); }))); } JSC_DEFINE_HOST_FUNCTION(jsReadableStreamSinkPrototypeFunction_error, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -227,7 +227,7 @@ void JSReadableStreamSinkOwner::finalize(JSC::Handle handle, void* JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObject, Ref&& impl) { - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, ReadableStreamSink& impl) diff --git a/src/bun.js/bindings/webcore/JSReadableStreamSink.h b/src/bun.js/bindings/webcore/JSReadableStreamSink.h index 66c77c2c70..e029d9ac31 100644 --- a/src/bun.js/bindings/webcore/JSReadableStreamSink.h +++ b/src/bun.js/bindings/webcore/JSReadableStreamSink.h @@ -31,7 +31,7 @@ public: using Base = JSDOMWrapper; static JSReadableStreamSink* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSReadableStreamSink* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSReadableStreamSink(structure, *globalObject, WTFMove(impl)); + JSReadableStreamSink* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSReadableStreamSink(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSReadableStreamSource.cpp b/src/bun.js/bindings/webcore/JSReadableStreamSource.cpp index b2e5751b09..24115897c0 100644 --- a/src/bun.js/bindings/webcore/JSReadableStreamSource.cpp +++ b/src/bun.js/bindings/webcore/JSReadableStreamSource.cpp @@ -116,7 +116,7 @@ void JSReadableStreamSourcePrototype::finishCreation(VM& vm) const ClassInfo JSReadableStreamSource::s_info = { "ReadableStreamSource"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSReadableStreamSource) }; JSReadableStreamSource::JSReadableStreamSource(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -163,7 +163,7 @@ static inline JSC::EncodedJSValue jsReadableStreamSourcePrototypeFunction_startB auto throwScope = DECLARE_THROW_SCOPE(vm); UNUSED_PARAM(throwScope); UNUSED_PARAM(callFrame); - RELEASE_AND_RETURN(throwScope, (JSValue::encode(castedThis->start(*lexicalGlobalObject, *callFrame, WTFMove(promise))))); + RELEASE_AND_RETURN(throwScope, (JSValue::encode(castedThis->start(*lexicalGlobalObject, *callFrame, WTF::move(promise))))); } JSC_DEFINE_HOST_FUNCTION(jsReadableStreamSourcePrototypeFunction_start, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -177,7 +177,7 @@ static inline JSC::EncodedJSValue jsReadableStreamSourcePrototypeFunction_pullBo auto throwScope = DECLARE_THROW_SCOPE(vm); UNUSED_PARAM(throwScope); UNUSED_PARAM(callFrame); - RELEASE_AND_RETURN(throwScope, (JSValue::encode(castedThis->pull(*lexicalGlobalObject, *callFrame, WTFMove(promise))))); + RELEASE_AND_RETURN(throwScope, (JSValue::encode(castedThis->pull(*lexicalGlobalObject, *callFrame, WTF::move(promise))))); } JSC_DEFINE_HOST_FUNCTION(jsReadableStreamSourcePrototypeFunction_pull, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -197,7 +197,7 @@ static inline JSC::EncodedJSValue jsReadableStreamSourcePrototypeFunction_cancel EnsureStillAliveScope argument0 = callFrame->uncheckedArgument(0); auto reason = convert(*lexicalGlobalObject, argument0.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.cancel(WTFMove(reason)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.cancel(WTF::move(reason)); }))); } JSC_DEFINE_HOST_FUNCTION(jsReadableStreamSourcePrototypeFunction_cancel, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -252,7 +252,7 @@ void JSReadableStreamSourceOwner::finalize(JSC::Handle handle, voi JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObject, Ref&& impl) { - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, ReadableStreamSource& impl) diff --git a/src/bun.js/bindings/webcore/JSReadableStreamSource.h b/src/bun.js/bindings/webcore/JSReadableStreamSource.h index 6cd8f933f6..eb26e8018b 100644 --- a/src/bun.js/bindings/webcore/JSReadableStreamSource.h +++ b/src/bun.js/bindings/webcore/JSReadableStreamSource.h @@ -31,7 +31,7 @@ public: using Base = JSDOMWrapper; static JSReadableStreamSource* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSReadableStreamSource* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSReadableStreamSource(structure, *globalObject, WTFMove(impl)); + JSReadableStreamSource* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSReadableStreamSource(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSReadableStreamSourceCustom.cpp b/src/bun.js/bindings/webcore/JSReadableStreamSourceCustom.cpp index 7082fd6f29..64b2d40439 100644 --- a/src/bun.js/bindings/webcore/JSReadableStreamSourceCustom.cpp +++ b/src/bun.js/bindings/webcore/JSReadableStreamSourceCustom.cpp @@ -45,14 +45,14 @@ JSValue JSReadableStreamSource::start(JSGlobalObject& lexicalGlobalObject, CallF m_controller.set(vm, this, controller); - wrapped().start(ReadableStreamDefaultController(controller), WTFMove(promise)); + wrapped().start(ReadableStreamDefaultController(controller), WTF::move(promise)); return jsUndefined(); } JSValue JSReadableStreamSource::pull(JSGlobalObject&, CallFrame&, Ref&& promise) { - wrapped().pull(WTFMove(promise)); + wrapped().pull(WTF::move(promise)); return jsUndefined(); } diff --git a/src/bun.js/bindings/webcore/JSTextEncoder.cpp b/src/bun.js/bindings/webcore/JSTextEncoder.cpp index 0a1fcf212e..6eddba70b7 100644 --- a/src/bun.js/bindings/webcore/JSTextEncoder.cpp +++ b/src/bun.js/bindings/webcore/JSTextEncoder.cpp @@ -189,7 +189,7 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSTextEncoderDOMConstruc if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -314,7 +314,7 @@ void JSTextEncoderPrototype::finishCreation(VM& vm) const ClassInfo JSTextEncoder::s_info = { "TextEncoder"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSTextEncoder) }; JSTextEncoder::JSTextEncoder(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -527,7 +527,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj // RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer); #endif } - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, TextEncoder& impl) diff --git a/src/bun.js/bindings/webcore/JSTextEncoder.h b/src/bun.js/bindings/webcore/JSTextEncoder.h index 3b192f5223..9775edeae6 100644 --- a/src/bun.js/bindings/webcore/JSTextEncoder.h +++ b/src/bun.js/bindings/webcore/JSTextEncoder.h @@ -34,7 +34,7 @@ public: using Base = JSDOMWrapper; static JSTextEncoder* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSTextEncoder* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSTextEncoder(structure, *globalObject, WTFMove(impl)); + JSTextEncoder* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSTextEncoder(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSURLPattern.cpp b/src/bun.js/bindings/webcore/JSURLPattern.cpp index b6b531ca04..987ec667b6 100644 --- a/src/bun.js/bindings/webcore/JSURLPattern.cpp +++ b/src/bun.js/bindings/webcore/JSURLPattern.cpp @@ -63,15 +63,15 @@ using namespace JSC; static URLPattern::URLPatternInput convertToWTFVariant(std::variant&& input) { if (std::holds_alternative(input)) - return URLPattern::URLPatternInput(std::get(std::move(input))); - return URLPattern::URLPatternInput(std::get(std::move(input))); + return URLPattern::URLPatternInput(std::get(WTF::move(input))); + return URLPattern::URLPatternInput(std::get(WTF::move(input))); } static std::optional convertToOptionalWTFVariant(std::optional>&& input) { if (!input) return std::nullopt; - return convertToWTFVariant(std::move(*input)); + return convertToWTFVariant(WTF::move(*input)); } // Functions @@ -144,11 +144,11 @@ static inline EncodedJSValue constructJSURLPattern1(JSGlobalObject* lexicalGloba EnsureStillAliveScope argument2 = callFrame->argument(2); auto options = convert>(*lexicalGlobalObject, argument2.value()); RETURN_IF_EXCEPTION(throwScope, encodedJSValue()); - auto object = URLPattern::create(*context, convertToWTFVariant(WTFMove(input)), WTFMove(baseURL), WTFMove(options)); + auto object = URLPattern::create(*context, convertToWTFVariant(WTF::move(input)), WTF::move(baseURL), WTF::move(options)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -171,11 +171,11 @@ static inline EncodedJSValue constructJSURLPattern2(JSGlobalObject* lexicalGloba EnsureStillAliveScope argument1 = callFrame->argument(1); auto options = convert>(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, encodedJSValue()); - auto object = URLPattern::create(*context, convertToOptionalWTFVariant(WTFMove(input)), WTFMove(options)); + auto object = URLPattern::create(*context, convertToOptionalWTFVariant(WTF::move(input)), WTF::move(options)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -258,7 +258,7 @@ void JSURLPatternPrototype::finishCreation(VM& vm) const ClassInfo JSURLPattern::s_info = { "URLPattern"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSURLPattern) }; JSURLPattern::JSURLPattern(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -428,7 +428,7 @@ static inline JSC::EncodedJSValue jsURLPatternPrototypeFunction_testBody(JSC::JS EnsureStillAliveScope argument1 = callFrame->argument(1); auto baseURL = argument1.value().isUndefined() ? String() : convert(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, encodedJSValue()); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, impl.test(*context, convertToOptionalWTFVariant(WTFMove(input)), WTFMove(baseURL))))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, impl.test(*context, convertToOptionalWTFVariant(WTF::move(input)), WTF::move(baseURL))))); } JSC_DEFINE_HOST_FUNCTION(jsURLPatternPrototypeFunction_test, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -452,7 +452,7 @@ static inline JSC::EncodedJSValue jsURLPatternPrototypeFunction_execBody(JSC::JS EnsureStillAliveScope argument1 = callFrame->argument(1); auto baseURL = argument1.value().isUndefined() ? String() : convert(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, encodedJSValue()); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, impl.exec(*context, convertToOptionalWTFVariant(WTFMove(input)), WTFMove(baseURL))))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, impl.exec(*context, convertToOptionalWTFVariant(WTF::move(input)), WTF::move(baseURL))))); } JSC_DEFINE_HOST_FUNCTION(jsURLPatternPrototypeFunction_exec, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -527,7 +527,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj #if ENABLE(BINDING_INTEGRITY) verifyVTable(impl.ptr()); #endif - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, URLPattern& impl) diff --git a/src/bun.js/bindings/webcore/JSURLPattern.h b/src/bun.js/bindings/webcore/JSURLPattern.h index 1f7b6b520e..6eb14ed88b 100644 --- a/src/bun.js/bindings/webcore/JSURLPattern.h +++ b/src/bun.js/bindings/webcore/JSURLPattern.h @@ -32,7 +32,7 @@ public: static JSURLPattern* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { SUPPRESS_UNCOUNTED_LOCAL auto& vm = globalObject->vm(); - JSURLPattern* ptr = new (NotNull, JSC::allocateCell(vm)) JSURLPattern(structure, *globalObject, WTFMove(impl)); + JSURLPattern* ptr = new (NotNull, JSC::allocateCell(vm)) JSURLPattern(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(vm); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSURLSearchParams.cpp b/src/bun.js/bindings/webcore/JSURLSearchParams.cpp index b1e296f95f..4afb51317b 100644 --- a/src/bun.js/bindings/webcore/JSURLSearchParams.cpp +++ b/src/bun.js/bindings/webcore/JSURLSearchParams.cpp @@ -125,11 +125,11 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSURLSearchParamsDOMCons EnsureStillAliveScope argument0 = callFrame->argument(0); auto init = argument0.value().isUndefined() ? emptyString() : convert>, IDLRecord, IDLUSVString>>(*lexicalGlobalObject, argument0.value()); RETURN_IF_EXCEPTION(throwScope, {}); - auto object = URLSearchParams::create(WTFMove(init)); + auto object = URLSearchParams::create(WTF::move(init)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -199,7 +199,7 @@ void JSURLSearchParamsPrototype::finishCreation(VM& vm) const ClassInfo JSURLSearchParams::s_info = { "URLSearchParams"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSURLSearchParams) }; JSURLSearchParams::JSURLSearchParams(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -259,7 +259,7 @@ static inline JSC::EncodedJSValue jsURLSearchParamsPrototypeFunction_appendBody( EnsureStillAliveScope argument1 = callFrame->uncheckedArgument(1); auto value = convert(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.append(WTFMove(name), WTFMove(value)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.append(WTF::move(name), WTF::move(value)); }))); } JSC_DEFINE_HOST_FUNCTION(jsURLSearchParamsPrototypeFunction_append, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -287,7 +287,7 @@ static inline JSC::EncodedJSValue jsURLSearchParamsPrototypeFunction_deleteBody( RETURN_IF_EXCEPTION(throwScope, {}); } - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.remove(WTFMove(name), WTFMove(value)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.remove(WTF::move(name), WTF::move(value)); }))); } JSC_DEFINE_HOST_FUNCTION(jsURLSearchParamsPrototypeFunction_delete, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -361,7 +361,7 @@ static inline JSC::EncodedJSValue jsURLSearchParamsPrototypeFunction_hasBody(JSC RETURN_IF_EXCEPTION(throwScope, {}); } - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, impl.has(name, WTFMove(value))))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, impl.has(name, WTF::move(value))))); } JSC_DEFINE_HOST_FUNCTION(jsURLSearchParamsPrototypeFunction_has, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -384,7 +384,7 @@ static inline JSC::EncodedJSValue jsURLSearchParamsPrototypeFunction_setBody(JSC EnsureStillAliveScope argument1 = callFrame->uncheckedArgument(1); auto value = convert(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.set(WTFMove(name), WTFMove(value)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.set(WTF::move(name), WTF::move(value)); }))); } JSC_DEFINE_HOST_FUNCTION(jsURLSearchParamsPrototypeFunction_set, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -687,7 +687,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj // // RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer); // #endif // } - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, URLSearchParams& impl) diff --git a/src/bun.js/bindings/webcore/JSURLSearchParams.h b/src/bun.js/bindings/webcore/JSURLSearchParams.h index 4c4ba34145..14f0609778 100644 --- a/src/bun.js/bindings/webcore/JSURLSearchParams.h +++ b/src/bun.js/bindings/webcore/JSURLSearchParams.h @@ -31,7 +31,7 @@ public: using Base = JSDOMWrapper; static JSURLSearchParams* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSURLSearchParams* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSURLSearchParams(structure, *globalObject, WTFMove(impl)); + JSURLSearchParams* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSURLSearchParams(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSValueInWrappedObject.h b/src/bun.js/bindings/webcore/JSValueInWrappedObject.h index 12a41ab257..28cb4897b1 100644 --- a/src/bun.js/bindings/webcore/JSValueInWrappedObject.h +++ b/src/bun.js/bindings/webcore/JSValueInWrappedObject.h @@ -95,7 +95,7 @@ inline void JSValueInWrappedObject::setWeakly(JSC::JSValue value) m_nonCell = {}; JSC::Weak weak { value.asCell() }; WTF::storeStoreFence(); - m_cell = WTFMove(weak); + m_cell = WTF::move(weak); } inline void JSValueInWrappedObject::set(JSC::VM& vm, const JSC::JSCell* owner, JSC::JSValue value) diff --git a/src/bun.js/bindings/webcore/JSWasmStreamingCompiler.cpp b/src/bun.js/bindings/webcore/JSWasmStreamingCompiler.cpp index 3b327f5b61..af3baa8a19 100644 --- a/src/bun.js/bindings/webcore/JSWasmStreamingCompiler.cpp +++ b/src/bun.js/bindings/webcore/JSWasmStreamingCompiler.cpp @@ -82,7 +82,7 @@ void JSWasmStreamingCompilerPrototype::finishCreation(VM& vm) const ClassInfo JSWasmStreamingCompiler::s_info = { "WasmStreamingCompiler"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSWasmStreamingCompiler) }; JSWasmStreamingCompiler::JSWasmStreamingCompiler(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -220,7 +220,7 @@ void JSWasmStreamingCompilerOwner::finalize(JSC::Handle handle, vo JSValue toJSNewlyCreated(JSGlobalObject*, JSDOMGlobalObject* globalObject, Ref&& impl) { - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSValue toJS(JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, Wasm::StreamingCompiler& impl) diff --git a/src/bun.js/bindings/webcore/JSWasmStreamingCompiler.h b/src/bun.js/bindings/webcore/JSWasmStreamingCompiler.h index 86bdc4db83..d40eb990ea 100644 --- a/src/bun.js/bindings/webcore/JSWasmStreamingCompiler.h +++ b/src/bun.js/bindings/webcore/JSWasmStreamingCompiler.h @@ -11,7 +11,7 @@ public: using Base = JSDOMWrapper; static JSWasmStreamingCompiler* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSWasmStreamingCompiler* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSWasmStreamingCompiler(structure, *globalObject, WTFMove(impl)); + JSWasmStreamingCompiler* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSWasmStreamingCompiler(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSWebSocket.cpp b/src/bun.js/bindings/webcore/JSWebSocket.cpp index c9475097f9..db678ebc7b 100644 --- a/src/bun.js/bindings/webcore/JSWebSocket.cpp +++ b/src/bun.js/bindings/webcore/JSWebSocket.cpp @@ -158,11 +158,11 @@ static inline JSC::EncodedJSValue constructJSWebSocket1(JSGlobalObject* lexicalG EnsureStillAliveScope argument1 = callFrame->argument(1); auto protocols = argument1.value().isUndefined() ? Converter>::ReturnType {} : convert>(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, {}); - auto object = WebSocket::create(*context, WTFMove(url), WTFMove(protocols)); + auto object = WebSocket::create(*context, WTF::move(url), WTF::move(protocols)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -185,11 +185,11 @@ static inline JSC::EncodedJSValue constructJSWebSocket2(JSGlobalObject* lexicalG EnsureStillAliveScope argument1 = callFrame->uncheckedArgument(1); auto protocol = convert(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, {}); - auto object = WebSocket::create(*context, WTFMove(url), WTFMove(protocol)); + auto object = WebSocket::create(*context, WTF::move(url), WTF::move(protocol)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -258,12 +258,12 @@ static inline JSC::EncodedJSValue constructJSWebSocket3(JSGlobalObject* lexicalG } } - auto object = (rejectUnauthorized == -1) ? WebSocket::create(*context, WTFMove(url), protocols, WTFMove(headersInit)) : WebSocket::create(*context, WTFMove(url), protocols, WTFMove(headersInit), rejectUnauthorized ? true : false); + auto object = (rejectUnauthorized == -1) ? WebSocket::create(*context, WTF::move(url), protocols, WTF::move(headersInit)) : WebSocket::create(*context, WTF::move(url), protocols, WTF::move(headersInit), rejectUnauthorized ? true : false); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *globalObject, throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *globalObject, throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -356,7 +356,7 @@ void JSWebSocketPrototype::finishCreation(VM& vm) const ClassInfo JSWebSocket::s_info = { "WebSocket"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSWebSocket) }; JSWebSocket::JSWebSocket(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSEventTarget(structure, globalObject, WTFMove(impl)) + : JSEventTarget(structure, globalObject, WTF::move(impl)) { } @@ -596,7 +596,7 @@ static inline bool setJSWebSocket_binaryTypeSetter(JSGlobalObject& lexicalGlobal auto nativeValue = convert(lexicalGlobalObject, value); RETURN_IF_EXCEPTION(throwScope, false); invokeFunctorPropagatingExceptionIfNecessary(lexicalGlobalObject, throwScope, [&] { - return impl.setBinaryType(WTFMove(nativeValue)); + return impl.setBinaryType(WTF::move(nativeValue)); }); return true; } @@ -642,7 +642,7 @@ static inline JSC::EncodedJSValue jsWebSocketPrototypeFunction_send4Body(JSC::JS EnsureStillAliveScope argument0 = callFrame->uncheckedArgument(0); auto data = convert(*lexicalGlobalObject, argument0.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.send(WTFMove(data)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.send(WTF::move(data)); }))); } static inline JSC::EncodedJSValue jsWebSocketPrototypeFunction_sendOverloadDispatcher(JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame, typename IDLOperation::ClassParameter castedThis) @@ -687,7 +687,7 @@ static inline JSC::EncodedJSValue jsWebSocketPrototypeFunction_closeBody(JSC::JS EnsureStillAliveScope argument1 = callFrame->argument(1); auto reason = argument1.value().isUndefined() ? String() : convert(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.close(WTFMove(code), WTFMove(reason)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.close(WTF::move(code), WTF::move(reason)); }))); } JSC_DEFINE_HOST_FUNCTION(jsWebSocketPrototypeFunction_close, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -741,7 +741,7 @@ static inline JSC::EncodedJSValue jsWebSocketPrototypeFunction_ping5Body(JSC::JS EnsureStillAliveScope argument0 = callFrame->uncheckedArgument(0); auto data = convert(*lexicalGlobalObject, argument0.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.ping(WTFMove(data)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.ping(WTF::move(data)); }))); } static inline JSC::EncodedJSValue jsWebSocketPrototypeFunction_pingOverloadDispatcher(JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame, typename IDLOperation::ClassParameter castedThis) @@ -820,7 +820,7 @@ static inline JSC::EncodedJSValue jsWebSocketPrototypeFunction_pong5Body(JSC::JS EnsureStillAliveScope argument0 = callFrame->uncheckedArgument(0); auto data = convert(*lexicalGlobalObject, argument0.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.pong(WTFMove(data)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.pong(WTF::move(data)); }))); } static inline JSC::EncodedJSValue jsWebSocketPrototypeFunction_pongOverloadDispatcher(JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame, typename IDLOperation::ClassParameter castedThis) @@ -951,7 +951,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj // RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer); #endif } - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, WebSocket& impl) diff --git a/src/bun.js/bindings/webcore/JSWebSocket.h b/src/bun.js/bindings/webcore/JSWebSocket.h index 29f82e4eec..46f4a2ab1b 100644 --- a/src/bun.js/bindings/webcore/JSWebSocket.h +++ b/src/bun.js/bindings/webcore/JSWebSocket.h @@ -33,7 +33,7 @@ public: using DOMWrapped = WebSocket; static JSWebSocket* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSWebSocket* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSWebSocket(structure, *globalObject, WTFMove(impl)); + JSWebSocket* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSWebSocket(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSWorker.cpp b/src/bun.js/bindings/webcore/JSWorker.cpp index bf44513e49..ce2c877375 100644 --- a/src/bun.js/bindings/webcore/JSWorker.cpp +++ b/src/bun.js/bindings/webcore/JSWorker.cpp @@ -194,7 +194,7 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSWorkerDOMConstructor:: std::optional> seq = convert>(*lexicalGlobalObject, array); RETURN_IF_EXCEPTION(throwScope, {}); if (seq) { - options.preloadModules = WTFMove(*seq); + options.preloadModules = WTF::move(*seq); options.preloadModules.removeAllMatching([](const String& str) { return str.isEmpty(); }); @@ -265,7 +265,7 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSWorkerDOMConstructor:: env.add(key.impl()->isolatedCopy(), str); } - options.env.emplace(WTFMove(env)); + options.env.emplace(WTF::move(env)); } // needed to match the coercion behavior of `String(value)`, which returns a descriptive @@ -303,7 +303,7 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSWorkerDOMConstructor:: execArgv.append(str); }); RETURN_IF_EXCEPTION(throwScope, {}); - options.execArgv.emplace(WTFMove(execArgv)); + options.execArgv.emplace(WTF::move(execArgv)); } } @@ -315,7 +315,7 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSWorkerDOMConstructor:: // If node:worker_threads has not been imported, environment data will not be set up yet. valueToTransfer->putDirectIndex(globalObject, 1, environmentData ? environmentData : jsUndefined()); - ExceptionOr> serialized = SerializedScriptValue::create(*lexicalGlobalObject, valueToTransfer, WTFMove(transferList), ports, SerializationForStorage::No, SerializationContext::WorkerPostMessage); + ExceptionOr> serialized = SerializedScriptValue::create(*lexicalGlobalObject, valueToTransfer, WTF::move(transferList), ports, SerializationForStorage::No, SerializationContext::WorkerPostMessage); if (serialized.hasException()) { WebCore::propagateException(*lexicalGlobalObject, throwScope, serialized.releaseException()); RELEASE_AND_RETURN(throwScope, {}); @@ -324,7 +324,7 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSWorkerDOMConstructor:: Vector transferredPorts; if (!ports.isEmpty()) { - auto disentangleResult = MessagePort::disentanglePorts(WTFMove(ports)); + auto disentangleResult = MessagePort::disentanglePorts(WTF::move(ports)); if (disentangleResult.hasException()) { WebCore::propagateException(*lexicalGlobalObject, throwScope, disentangleResult.releaseException()); RELEASE_AND_RETURN(throwScope, {}); @@ -333,14 +333,14 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSWorkerDOMConstructor:: } options.workerDataAndEnvironmentData = serialized.releaseReturnValue(); - options.dataMessagePorts = WTFMove(transferredPorts); + options.dataMessagePorts = WTF::move(transferredPorts); RETURN_IF_EXCEPTION(throwScope, {}); - auto object = Worker::create(*context, WTFMove(scriptUrl), WTFMove(options)); + auto object = Worker::create(*context, WTF::move(scriptUrl), WTF::move(options)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); @@ -425,7 +425,7 @@ void JSWorkerPrototype::finishCreation(VM& vm) const ClassInfo JSWorker::s_info = { "Worker"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSWorker) }; JSWorker::JSWorker(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSEventTarget(structure, globalObject, WTFMove(impl)) + : JSEventTarget(structure, globalObject, WTF::move(impl)) { } @@ -567,7 +567,7 @@ static inline JSC::EncodedJSValue jsWorkerPrototypeFunction_postMessage1Body(JSC EnsureStillAliveScope argument1 = callFrame->uncheckedArgument(1); auto transfer = convert>(*lexicalGlobalObject, argument1.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.postMessage(*jsCast(lexicalGlobalObject), WTFMove(message), WTFMove(transfer)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.postMessage(*jsCast(lexicalGlobalObject), WTF::move(message), WTF::move(transfer)); }))); } static inline JSC::EncodedJSValue jsWorkerPrototypeFunction_postMessage2Body(JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame, typename IDLOperation::ClassParameter castedThis) @@ -590,12 +590,12 @@ static inline JSC::EncodedJSValue jsWorkerPrototypeFunction_postMessage2Body(JSC if (transferListValue) { auto transferList = convert>(*lexicalGlobalObject, transferListValue); RETURN_IF_EXCEPTION(throwScope, {}); - options.transfer = WTFMove(transferList); + options.transfer = WTF::move(transferList); } } RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.postMessage(*jsCast(lexicalGlobalObject), WTFMove(message), WTFMove(options)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.postMessage(*jsCast(lexicalGlobalObject), WTF::move(message), WTF::move(options)); }))); } static inline JSC::EncodedJSValue jsWorkerPrototypeFunction_postMessageOverloadDispatcher(JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame, typename IDLOperation::ClassParameter castedThis) @@ -782,7 +782,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj // RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer); #endif } - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, Worker& impl) diff --git a/src/bun.js/bindings/webcore/JSWorker.h b/src/bun.js/bindings/webcore/JSWorker.h index 736d7ac5fe..2aae0754cc 100644 --- a/src/bun.js/bindings/webcore/JSWorker.h +++ b/src/bun.js/bindings/webcore/JSWorker.h @@ -33,7 +33,7 @@ public: using DOMWrapped = Worker; static JSWorker* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSWorker* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSWorker(structure, *globalObject, WTFMove(impl)); + JSWorker* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSWorker(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSWritableStream.cpp b/src/bun.js/bindings/webcore/JSWritableStream.cpp index 2a3d29a291..8a773654de 100644 --- a/src/bun.js/bindings/webcore/JSWritableStream.cpp +++ b/src/bun.js/bindings/webcore/JSWritableStream.cpp @@ -107,11 +107,11 @@ template<> JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSWritableStreamDOMConst EnsureStillAliveScope argument1 = callFrame->argument(1); auto strategy = argument1.value().isUndefined() ? std::optional::ReturnType>() : std::optional::ReturnType>(convert(*lexicalGlobalObject, argument1.value())); RETURN_IF_EXCEPTION(throwScope, {}); - auto object = WritableStream::create(*castedThis->globalObject(), WTFMove(underlyingSink), WTFMove(strategy)); + auto object = WritableStream::create(*castedThis->globalObject(), WTF::move(underlyingSink), WTF::move(strategy)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); static_assert(TypeOrExceptionOrUnderlyingType::isRef); - auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTFMove(object)); + auto jsValue = toJSNewlyCreated>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, WTF::move(object)); if constexpr (IsExceptionOr) RETURN_IF_EXCEPTION(throwScope, {}); setSubclassStructureIfNeeded(lexicalGlobalObject, callFrame, asObject(jsValue)); @@ -159,7 +159,7 @@ void JSWritableStreamPrototype::finishCreation(VM& vm) const ClassInfo JSWritableStream::s_info = { "WritableStream"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSWritableStream) }; JSWritableStream::JSWritableStream(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -295,7 +295,7 @@ void JSWritableStreamOwner::finalize(JSC::Handle handle, void* con JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObject, Ref&& impl) { - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, WritableStream& impl) diff --git a/src/bun.js/bindings/webcore/JSWritableStream.h b/src/bun.js/bindings/webcore/JSWritableStream.h index dd5cbc885f..424e6a16d6 100644 --- a/src/bun.js/bindings/webcore/JSWritableStream.h +++ b/src/bun.js/bindings/webcore/JSWritableStream.h @@ -31,7 +31,7 @@ public: using Base = JSDOMWrapper; static JSWritableStream* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSWritableStream* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSWritableStream(structure, *globalObject, WTFMove(impl)); + JSWritableStream* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSWritableStream(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/JSWritableStreamSink.cpp b/src/bun.js/bindings/webcore/JSWritableStreamSink.cpp index 225e0ff17b..512235aa3e 100644 --- a/src/bun.js/bindings/webcore/JSWritableStreamSink.cpp +++ b/src/bun.js/bindings/webcore/JSWritableStreamSink.cpp @@ -108,7 +108,7 @@ void JSWritableStreamSinkPrototype::finishCreation(VM& vm) const ClassInfo JSWritableStreamSink::s_info = { "WritableStreamSink"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSWritableStreamSink) }; JSWritableStreamSink::JSWritableStreamSink(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -153,7 +153,7 @@ static inline JSC::EncodedJSValue jsWritableStreamSinkPrototypeFunction_writeBod EnsureStillAliveScope argument0 = callFrame->uncheckedArgument(0); auto value = convert(*lexicalGlobalObject, argument0.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { return impl.write(*context, WTFMove(value), WTFMove(promise)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { return impl.write(*context, WTF::move(value), WTF::move(promise)); }))); } JSC_DEFINE_HOST_FUNCTION(jsWritableStreamSinkPrototypeFunction_write, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -188,7 +188,7 @@ static inline JSC::EncodedJSValue jsWritableStreamSinkPrototypeFunction_errorBod EnsureStillAliveScope argument0 = callFrame->uncheckedArgument(0); auto message = convert(*lexicalGlobalObject, argument0.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.error(WTFMove(message)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.error(WTF::move(message)); }))); } JSC_DEFINE_HOST_FUNCTION(jsWritableStreamSinkPrototypeFunction_error, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -232,7 +232,7 @@ void JSWritableStreamSinkOwner::finalize(JSC::Handle handle, void* JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObject, Ref&& impl) { - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, WritableStreamSink& impl) diff --git a/src/bun.js/bindings/webcore/JSWritableStreamSink.h b/src/bun.js/bindings/webcore/JSWritableStreamSink.h index a6cac9d237..ec98d4f23e 100644 --- a/src/bun.js/bindings/webcore/JSWritableStreamSink.h +++ b/src/bun.js/bindings/webcore/JSWritableStreamSink.h @@ -31,7 +31,7 @@ public: using Base = JSDOMWrapper; static JSWritableStreamSink* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSWritableStreamSink* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSWritableStreamSink(structure, *globalObject, WTFMove(impl)); + JSWritableStreamSink* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSWritableStreamSink(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcore/MessageEvent.cpp b/src/bun.js/bindings/webcore/MessageEvent.cpp index a050adfe02..113a7eb210 100644 --- a/src/bun.js/bindings/webcore/MessageEvent.cpp +++ b/src/bun.js/bindings/webcore/MessageEvent.cpp @@ -49,30 +49,30 @@ inline MessageEvent::MessageEvent(const AtomString& type, Init&& initializer, Is , m_data(JSValueTag {}) , m_origin(initializer.origin) , m_lastEventId(initializer.lastEventId) - , m_source(WTFMove(initializer.source)) - , m_ports(WTFMove(initializer.ports)) + , m_source(WTF::move(initializer.source)) + , m_ports(WTF::move(initializer.ports)) , m_jsData(initializer.data) { } inline MessageEvent::MessageEvent(const AtomString& type, DataType&& data, const String& origin, const String& lastEventId, RefPtr&& source, Vector>&& ports) : Event(type, CanBubble::No, IsCancelable::No) - , m_data(WTFMove(data)) + , m_data(WTF::move(data)) , m_origin(origin) , m_lastEventId(lastEventId) - , m_source(WTFMove(source)) - , m_ports(WTFMove(ports)) + , m_source(WTF::move(source)) + , m_ports(WTF::move(ports)) { } Ref MessageEvent::create(const AtomString& type, DataType&& data, const String& origin, const String& lastEventId, RefPtr&& source, Vector>&& ports) { - return adoptRef(*new MessageEvent(type, WTFMove(data), origin, lastEventId, WTFMove(source), WTFMove(ports))); + return adoptRef(*new MessageEvent(type, WTF::move(data), origin, lastEventId, WTF::move(source), WTF::move(ports))); } Ref MessageEvent::create(DataType&& data, const String& origin, const String& lastEventId, RefPtr&& source, Vector>&& ports) { - return create(eventNames().messageEvent, WTFMove(data), origin, lastEventId, WTFMove(source), WTFMove(ports)); + return create(eventNames().messageEvent, WTF::move(data), origin, lastEventId, WTF::move(source), WTF::move(ports)); } Ref MessageEvent::createForBindings() @@ -82,14 +82,14 @@ Ref MessageEvent::createForBindings() Ref MessageEvent::create(const AtomString& type, Init&& initializer, IsTrusted isTrusted) { - return adoptRef(*new MessageEvent(type, WTFMove(initializer), isTrusted)); + return adoptRef(*new MessageEvent(type, WTF::move(initializer), isTrusted)); } MessageEvent::~MessageEvent() = default; auto MessageEvent::create(JSC::JSGlobalObject& globalObject, Ref&& data, RefPtr&& source, Vector>&& ports) -> MessageEventWithStrongData { - return create(globalObject, WTFMove(data), {}, {}, WTFMove(source), WTFMove(ports)); + return create(globalObject, WTF::move(data), {}, {}, WTF::move(source), WTF::move(ports)); } auto MessageEvent::create(JSC::JSGlobalObject& globalObject, Ref&& data, const String& origin, const String& lastEventId, RefPtr&& source, Vector>&& ports) -> MessageEventWithStrongData @@ -107,13 +107,13 @@ auto MessageEvent::create(JSC::JSGlobalObject& globalObject, Ref strongData(vm, deserialized); auto& eventType = didFail ? eventNames().messageerrorEvent : eventNames().messageEvent; - auto event = adoptRef(*new MessageEvent(eventType, WTFMove(data), origin, lastEventId, WTFMove(source), WTFMove(ports))); + auto event = adoptRef(*new MessageEvent(eventType, WTF::move(data), origin, lastEventId, WTF::move(source), WTF::move(ports))); JSC::Strong strongWrapper(vm, JSC::jsCast(toJS(&globalObject, JSC::jsCast(&globalObject), event.get()))); // Since we've already deserialized the SerializedScriptValue, cache the result so we don't have to deserialize // again the next time JSMessageEvent::data() gets called by the main world. event->cachedData().set(vm, strongWrapper.get(), deserialized); - return MessageEventWithStrongData { event, WTFMove(strongWrapper) }; + return MessageEventWithStrongData { event, WTF::move(strongWrapper) }; } void MessageEvent::initMessageEvent(const AtomString& type, bool canBubble, bool cancelable, JSValue data, const String& origin, const String& lastEventId, RefPtr&& source, Vector>&& ports) @@ -133,8 +133,8 @@ void MessageEvent::initMessageEvent(const AtomString& type, bool canBubble, bool m_cachedData.clear(); m_origin = origin; m_lastEventId = lastEventId; - m_source = WTFMove(source); - m_ports = WTFMove(ports); + m_source = WTF::move(source); + m_ports = WTF::move(ports); m_cachedPorts.clear(); } diff --git a/src/bun.js/bindings/webcore/MessagePort.cpp b/src/bun.js/bindings/webcore/MessagePort.cpp index a99084d387..8cdca2d979 100644 --- a/src/bun.js/bindings/webcore/MessagePort.cpp +++ b/src/bun.js/bindings/webcore/MessagePort.cpp @@ -95,7 +95,7 @@ void MessagePort::notifyMessageAvailable(const MessagePortIdentifier& identifier if (!scriptExecutionContextIdentifier) return; - ScriptExecutionContext::ensureOnContextThread(*scriptExecutionContextIdentifier, [weakPort = WTFMove(weakPort)](auto&) { + ScriptExecutionContext::ensureOnContextThread(*scriptExecutionContextIdentifier, [weakPort = WTF::move(weakPort)](auto&) { if (RefPtr port = weakPort.get()) port->messageAvailable(); }); @@ -159,7 +159,7 @@ ExceptionOr MessagePort::postMessage(JSC::JSGlobalObject& state, JSC::JSVa // LOG(MessagePorts, "Attempting to post message to port %s (to be received by port %s)", m_identifier.logString().utf8().data(), m_remoteIdentifier.logString().utf8().data()); Vector> ports; - auto messageData = SerializedScriptValue::create(state, messageValue, WTFMove(options.transfer), ports, SerializationForStorage::No, SerializationContext::WorkerPostMessage); + auto messageData = SerializedScriptValue::create(state, messageValue, WTF::move(options.transfer), ports, SerializationForStorage::No, SerializationContext::WorkerPostMessage); if (messageData.hasException()) return messageData.releaseException(); @@ -175,15 +175,15 @@ ExceptionOr MessagePort::postMessage(JSC::JSGlobalObject& state, JSC::JSVa return Exception { ExceptionCode::DataCloneError }; } - auto disentangleResult = MessagePort::disentanglePorts(WTFMove(ports)); + auto disentangleResult = MessagePort::disentanglePorts(WTF::move(ports)); if (disentangleResult.hasException()) return disentangleResult.releaseException(); transferredPorts = disentangleResult.releaseReturnValue(); } - MessageWithMessagePorts message { messageData.releaseReturnValue(), WTFMove(transferredPorts) }; + MessageWithMessagePorts message { messageData.releaseReturnValue(), WTF::move(transferredPorts) }; - MessagePortChannelProvider::fromContext(*protectedScriptExecutionContext()).postMessageToRemote(WTFMove(message), m_remoteIdentifier); + MessagePortChannelProvider::fromContext(*protectedScriptExecutionContext()).postMessageToRemote(WTF::move(message), m_remoteIdentifier); return {}; } @@ -254,7 +254,7 @@ void MessagePort::dispatchMessages() return; auto messagesTakenHandler = [this, protectedThis = Ref { *this }](Vector&& messages, CompletionHandler&& completionCallback) mutable { - auto scopeExit = makeScopeExit(WTFMove(completionCallback)); + auto scopeExit = makeScopeExit(WTF::move(completionCallback)); // LOG(MessagePorts, "MessagePort %s (%p) dispatching %zu messages", m_identifier.logString().utf8().data(), this, messages.size()); @@ -272,7 +272,7 @@ void MessagePort::dispatchMessages() if (Zig::GlobalObject::scriptExecutionStatus(globalObject, globalObject) != ScriptExecutionStatus::Running) return; - auto ports = MessagePort::entanglePorts(*context, WTFMove(message.transferredPorts)); + auto ports = MessagePort::entanglePorts(*context, WTF::move(message.transferredPorts)); if (scope.exception()) [[unlikely]] { // Currently, we assume that the only way we can get here is if we have a termination. RELEASE_ASSERT(vm->hasPendingTerminationException()); @@ -280,18 +280,18 @@ void MessagePort::dispatchMessages() } // Per specification, each MessagePort object has a task source called the port message queue. - // queueTaskKeepingObjectAlive(context, *this, TaskSource::PostedMessageQueue, [this, event = WTFMove(event)] { + // queueTaskKeepingObjectAlive(context, *this, TaskSource::PostedMessageQueue, [this, event = WTF::move(event)] { // dispatchEvent(event.event); // }); - ScriptExecutionContext::postTaskTo(context->identifier(), [protectedThis = Ref { *this }, ports = WTFMove(ports), message = WTFMove(message)](ScriptExecutionContext& context) mutable { - auto event = MessageEvent::create(*context.jsGlobalObject(), message.message.releaseNonNull(), {}, {}, {}, WTFMove(ports)); + ScriptExecutionContext::postTaskTo(context->identifier(), [protectedThis = Ref { *this }, ports = WTF::move(ports), message = WTF::move(message)](ScriptExecutionContext& context) mutable { + auto event = MessageEvent::create(*context.jsGlobalObject(), message.message.releaseNonNull(), {}, {}, {}, WTF::move(ports)); protectedThis->dispatchEvent(event.event); }); } }; - MessagePortChannelProvider::fromContext(*context).takeAllMessagesForPort(m_identifier, WTFMove(messagesTakenHandler)); + MessagePortChannelProvider::fromContext(*context).takeAllMessagesForPort(m_identifier, WTF::move(messagesTakenHandler)); } JSValue MessagePort::tryTakeMessage(JSGlobalObject* lexicalGlobalObject) @@ -305,9 +305,9 @@ JSValue MessagePort::tryTakeMessage(JSGlobalObject* lexicalGlobalObject) if (!messageWithPorts) return jsUndefined(); - auto ports = MessagePort::entanglePorts(*context, WTFMove(messageWithPorts->transferredPorts)); + auto ports = MessagePort::entanglePorts(*context, WTF::move(messageWithPorts->transferredPorts)); auto message = messageWithPorts->message.releaseNonNull(); - return message->deserialize(*lexicalGlobalObject, lexicalGlobalObject, WTFMove(ports), SerializationErrorMode::NonThrowing); + return message->deserialize(*lexicalGlobalObject, lexicalGlobalObject, WTF::move(ports), SerializationErrorMode::NonThrowing); } void MessagePort::dispatchEvent(Event& event) @@ -371,7 +371,7 @@ Vector> MessagePort::entanglePorts(ScriptExecutionContext& c return {}; return WTF::map(transferredPorts, [&](auto& port) -> RefPtr { - return MessagePort::entangle(context, WTFMove(port)); + return MessagePort::entangle(context, WTF::move(port)); }); } @@ -430,7 +430,7 @@ bool MessagePort::addEventListener(const AtomString& eventType, Ref MessagePortChannel::tryTakeMessageForPort auto message = m_pendingMessages[i].first(); m_pendingMessages[i].removeAt(0); - return WTFMove(message); + return WTF::move(message); } } // namespace WebCore diff --git a/src/bun.js/bindings/webcore/MessagePortChannelProviderImpl.cpp b/src/bun.js/bindings/webcore/MessagePortChannelProviderImpl.cpp index 62b9818bbb..4524c4fe1e 100644 --- a/src/bun.js/bindings/webcore/MessagePortChannelProviderImpl.cpp +++ b/src/bun.js/bindings/webcore/MessagePortChannelProviderImpl.cpp @@ -61,19 +61,19 @@ void MessagePortChannelProviderImpl::messagePortClosed(const MessagePortIdentifi void MessagePortChannelProviderImpl::postMessageToRemote(MessageWithMessagePorts&& message, const MessagePortIdentifier& remoteTarget) { - if (m_registry.didPostMessageToRemote(WTFMove(message), remoteTarget)) + if (m_registry.didPostMessageToRemote(WTF::move(message), remoteTarget)) MessagePort::notifyMessageAvailable(remoteTarget); } void MessagePortChannelProviderImpl::takeAllMessagesForPort(const MessagePortIdentifier& port, CompletionHandler&&, CompletionHandler&&)>&& outerCallback) { // It is the responsibility of outerCallback to get itself to the appropriate thread (e.g. WebWorker thread) - auto callback = [outerCallback = WTFMove(outerCallback)](Vector&& messages, CompletionHandler&& messageDeliveryCallback) mutable { + auto callback = [outerCallback = WTF::move(outerCallback)](Vector&& messages, CompletionHandler&& messageDeliveryCallback) mutable { // ASSERT(isMainThread()); - outerCallback(WTFMove(messages), WTFMove(messageDeliveryCallback)); + outerCallback(WTF::move(messages), WTF::move(messageDeliveryCallback)); }; - m_registry.takeAllMessagesForPort(port, WTFMove(callback)); + m_registry.takeAllMessagesForPort(port, WTF::move(callback)); } std::optional MessagePortChannelProviderImpl::tryTakeMessageForPort(const MessagePortIdentifier& port) diff --git a/src/bun.js/bindings/webcore/MessagePortChannelRegistry.cpp b/src/bun.js/bindings/webcore/MessagePortChannelRegistry.cpp index 55f61f75c3..66ed5997cf 100644 --- a/src/bun.js/bindings/webcore/MessagePortChannelRegistry.cpp +++ b/src/bun.js/bindings/webcore/MessagePortChannelRegistry.cpp @@ -135,7 +135,7 @@ bool MessagePortChannelRegistry::didPostMessageToRemote(MessageWithMessagePorts& return false; } - return channel->postMessageToRemote(WTFMove(message), remoteTarget); + return channel->postMessageToRemote(WTF::move(message), remoteTarget); } void MessagePortChannelRegistry::takeAllMessagesForPort(const MessagePortIdentifier& port, CompletionHandler&&, CompletionHandler&&)>&& callback) @@ -149,7 +149,7 @@ void MessagePortChannelRegistry::takeAllMessagesForPort(const MessagePortIdentif return; } - channel->takeAllMessagesForPort(port, WTFMove(callback)); + channel->takeAllMessagesForPort(port, WTF::move(callback)); } std::optional MessagePortChannelRegistry::tryTakeMessageForPort(const MessagePortIdentifier& port) diff --git a/src/bun.js/bindings/webcore/NetworkLoadMetrics.cpp b/src/bun.js/bindings/webcore/NetworkLoadMetrics.cpp index 5eab2ae951..c34988b5ce 100644 --- a/src/bun.js/bindings/webcore/NetworkLoadMetrics.cpp +++ b/src/bun.js/bindings/webcore/NetworkLoadMetrics.cpp @@ -33,15 +33,15 @@ namespace WebCore { NetworkLoadMetrics::NetworkLoadMetrics() = default; NetworkLoadMetrics::NetworkLoadMetrics(MonotonicTime&& redirectStart, MonotonicTime&& fetchStart, MonotonicTime&& domainLookupStart, MonotonicTime&& domainLookupEnd, MonotonicTime&& connectStart, MonotonicTime&& secureConnectionStart, MonotonicTime&& connectEnd, MonotonicTime&& requestStart, MonotonicTime&& responseStart, MonotonicTime&& responseEnd, MonotonicTime&& workerStart, String&& protocol, uint16_t redirectCount, bool complete, bool cellular, bool expensive, bool constrained, bool multipath, bool isReusedConnection, bool failsTAOCheck, bool hasCrossOriginRedirect, PrivacyStance privacyStance, uint64_t responseBodyBytesReceived, uint64_t responseBodyDecodedSize, RefPtr&& additionalNetworkLoadMetricsForWebInspector) - : redirectStart(WTFMove(redirectStart)) - , fetchStart(WTFMove(fetchStart)) - , domainLookupStart(WTFMove(domainLookupStart)) - , domainLookupEnd(WTFMove(domainLookupEnd)) - , connectStart(WTFMove(connectStart)) - , secureConnectionStart(WTFMove(secureConnectionStart)) - , connectEnd(WTFMove(connectEnd)) - , requestStart(WTFMove(requestStart)) - , responseStart(WTFMove(responseStart)) + : redirectStart(WTF::move(redirectStart)) + , fetchStart(WTF::move(fetchStart)) + , domainLookupStart(WTF::move(domainLookupStart)) + , domainLookupEnd(WTF::move(domainLookupEnd)) + , connectStart(WTF::move(connectStart)) + , secureConnectionStart(WTF::move(secureConnectionStart)) + , connectEnd(WTF::move(connectEnd)) + , requestStart(WTF::move(requestStart)) + , responseStart(WTF::move(responseStart)) , responseEnd(responseEnd) , workerStart(workerStart) , protocol(protocol) @@ -57,7 +57,7 @@ NetworkLoadMetrics::NetworkLoadMetrics(MonotonicTime&& redirectStart, MonotonicT , privacyStance(privacyStance) , responseBodyBytesReceived(responseBodyBytesReceived) , responseBodyDecodedSize(responseBodyDecodedSize) - , additionalNetworkLoadMetricsForWebInspector(WTFMove(additionalNetworkLoadMetricsForWebInspector)) + , additionalNetworkLoadMetricsForWebInspector(WTF::move(additionalNetworkLoadMetricsForWebInspector)) { } @@ -169,16 +169,16 @@ NetworkLoadMetrics NetworkLoadMetrics::isolatedCopy() const Ref AdditionalNetworkLoadMetricsForWebInspector::create(NetworkLoadPriority&& priority, String&& remoteAddress, String&& connectionIdentifier, String&& tlsProtocol, String&& tlsCipher, HTTPHeaderMap&& requestHeaders, uint64_t requestHeaderBytesSent, uint64_t responseHeaderBytesReceived, uint64_t requestBodyBytesSent, bool isProxyConnection) { - return adoptRef(*new AdditionalNetworkLoadMetricsForWebInspector(WTFMove(priority), WTFMove(remoteAddress), WTFMove(connectionIdentifier), WTFMove(tlsProtocol), WTFMove(tlsCipher), WTFMove(requestHeaders), requestHeaderBytesSent, responseHeaderBytesReceived, requestBodyBytesSent, isProxyConnection)); + return adoptRef(*new AdditionalNetworkLoadMetricsForWebInspector(WTF::move(priority), WTF::move(remoteAddress), WTF::move(connectionIdentifier), WTF::move(tlsProtocol), WTF::move(tlsCipher), WTF::move(requestHeaders), requestHeaderBytesSent, responseHeaderBytesReceived, requestBodyBytesSent, isProxyConnection)); } AdditionalNetworkLoadMetricsForWebInspector::AdditionalNetworkLoadMetricsForWebInspector(NetworkLoadPriority&& priority, String&& remoteAddress, String&& connectionIdentifier, String&& tlsProtocol, String&& tlsCipher, HTTPHeaderMap&& requestHeaders, uint64_t requestHeaderBytesSent, uint64_t responseHeaderBytesReceived, uint64_t requestBodyBytesSent, bool isProxyConnection) - : priority(WTFMove(priority)) - , remoteAddress(WTFMove(remoteAddress)) - , connectionIdentifier(WTFMove(connectionIdentifier)) - , tlsProtocol(WTFMove(tlsProtocol)) - , tlsCipher(WTFMove(tlsCipher)) - , requestHeaders(WTFMove(requestHeaders)) + : priority(WTF::move(priority)) + , remoteAddress(WTF::move(remoteAddress)) + , connectionIdentifier(WTF::move(connectionIdentifier)) + , tlsProtocol(WTF::move(tlsProtocol)) + , tlsCipher(WTF::move(tlsCipher)) + , requestHeaders(WTF::move(requestHeaders)) , requestHeaderBytesSent(requestHeaderBytesSent) , responseHeaderBytesReceived(responseHeaderBytesReceived) , requestBodyBytesSent(requestBodyBytesSent) diff --git a/src/bun.js/bindings/webcore/Performance.cpp b/src/bun.js/bindings/webcore/Performance.cpp index 5d3a885db2..f525008217 100644 --- a/src/bun.js/bindings/webcore/Performance.cpp +++ b/src/bun.js/bindings/webcore/Performance.cpp @@ -288,10 +288,10 @@ void Performance::addResourceTiming(ResourceTiming&& resourceTiming) { ASSERT(scriptExecutionContext()); - auto entry = PerformanceResourceTiming::create(m_timeOrigin, WTFMove(resourceTiming)); + auto entry = PerformanceResourceTiming::create(m_timeOrigin, WTF::move(resourceTiming)); if (m_waitingForBackupBufferToBeProcessed) { - m_backupResourceTimingBuffer.append(WTFMove(entry)); + m_backupResourceTimingBuffer.append(WTF::move(entry)); return; } @@ -304,14 +304,14 @@ void Performance::addResourceTiming(ResourceTiming&& resourceTiming) if (isResourceTimingBufferFull()) { // ASSERT(!m_resourceTimingBufferFullTimer.isActive()); - m_backupResourceTimingBuffer.append(WTFMove(entry)); + m_backupResourceTimingBuffer.append(WTF::move(entry)); m_waitingForBackupBufferToBeProcessed = true; // m_resourceTimingBufferFullTimer.startOneShot(0_s); return; } queueEntry(entry.get()); - m_resourceTimingBuffer.append(WTFMove(entry)); + m_resourceTimingBuffer.append(WTF::move(entry)); } bool Performance::isResourceTimingBufferFull() const @@ -326,7 +326,7 @@ bool Performance::isResourceTimingBufferFull() const // while (!m_backupResourceTimingBuffer.isEmpty()) { // auto beforeCount = m_backupResourceTimingBuffer.size(); -// auto backupBuffer = WTFMove(m_backupResourceTimingBuffer); +// auto backupBuffer = WTF::move(m_backupResourceTimingBuffer); // ASSERT(m_backupResourceTimingBuffer.isEmpty()); // if (isResourceTimingBufferFull()) { @@ -371,7 +371,7 @@ ExceptionOr> Performance::mark(JSC::JSGlobalObject& globalO if (!m_userTiming) m_userTiming = makeUnique(*this); - auto mark = m_userTiming->mark(globalObject, markName, WTFMove(markOptions)); + auto mark = m_userTiming->mark(globalObject, markName, WTF::move(markOptions)); if (mark.hasException()) return mark.releaseException(); @@ -391,7 +391,7 @@ ExceptionOr> Performance::measure(JSC::JSGlobalObject& g if (!m_userTiming) m_userTiming = makeUnique(*this); - auto measure = m_userTiming->measure(globalObject, measureName, WTFMove(startOrMeasureOptions), endMark); + auto measure = m_userTiming->measure(globalObject, measureName, WTF::move(startOrMeasureOptions), endMark); if (measure.hasException()) return measure.releaseException(); diff --git a/src/bun.js/bindings/webcore/PerformanceMark.cpp b/src/bun.js/bindings/webcore/PerformanceMark.cpp index c61bd847a6..d6530ed809 100644 --- a/src/bun.js/bindings/webcore/PerformanceMark.cpp +++ b/src/bun.js/bindings/webcore/PerformanceMark.cpp @@ -79,7 +79,7 @@ ExceptionOr> PerformanceMark::create(JSC::JSGlobalObject& g PerformanceMark::PerformanceMark(const String& name, double startTime, RefPtr&& serializedDetail) : PerformanceEntry(name, startTime, startTime) - , m_serializedDetail(WTFMove(serializedDetail)) + , m_serializedDetail(WTF::move(serializedDetail)) { } diff --git a/src/bun.js/bindings/webcore/PerformanceMeasure.cpp b/src/bun.js/bindings/webcore/PerformanceMeasure.cpp index 358257de43..9f8fc2e421 100644 --- a/src/bun.js/bindings/webcore/PerformanceMeasure.cpp +++ b/src/bun.js/bindings/webcore/PerformanceMeasure.cpp @@ -41,12 +41,12 @@ size_t PerformanceMeasure::memoryCost() const ExceptionOr> PerformanceMeasure::create(const String& name, double startTime, double endTime, RefPtr&& serializedDetail) { - return adoptRef(*new PerformanceMeasure(name, startTime, endTime, WTFMove(serializedDetail))); + return adoptRef(*new PerformanceMeasure(name, startTime, endTime, WTF::move(serializedDetail))); } PerformanceMeasure::PerformanceMeasure(const String& name, double startTime, double endTime, RefPtr&& serializedDetail) : PerformanceEntry(name, startTime, endTime) - , m_serializedDetail(WTFMove(serializedDetail)) + , m_serializedDetail(WTF::move(serializedDetail)) { } diff --git a/src/bun.js/bindings/webcore/PerformanceObserver.cpp b/src/bun.js/bindings/webcore/PerformanceObserver.cpp index 5efb33e00b..73b2c3e21c 100644 --- a/src/bun.js/bindings/webcore/PerformanceObserver.cpp +++ b/src/bun.js/bindings/webcore/PerformanceObserver.cpp @@ -36,7 +36,7 @@ namespace WebCore { PerformanceObserver::PerformanceObserver(ScriptExecutionContext& scriptExecutionContext, Ref&& callback) - : m_callback(WTFMove(callback)) + : m_callback(WTF::move(callback)) { // if (is(scriptExecutionContext)) { // auto& document = downcast(scriptExecutionContext); @@ -138,7 +138,7 @@ void PerformanceObserver::deliver() return; Vector> entries = std::exchange(m_entriesToDeliver, {}); - auto list = PerformanceObserverEntryList::create(WTFMove(entries)); + auto list = PerformanceObserverEntryList::create(WTF::move(entries)); // InspectorInstrumentation::willFireObserverCallback(*context, "PerformanceObserver"_s); m_callback->handleEvent(*this, list, *this); diff --git a/src/bun.js/bindings/webcore/PerformanceObserver.h b/src/bun.js/bindings/webcore/PerformanceObserver.h index 095d8a5ba9..1049dce4de 100644 --- a/src/bun.js/bindings/webcore/PerformanceObserver.h +++ b/src/bun.js/bindings/webcore/PerformanceObserver.h @@ -48,7 +48,7 @@ public: static Ref create(ScriptExecutionContext& context, Ref&& callback) { - return adoptRef(*new PerformanceObserver(context, WTFMove(callback))); + return adoptRef(*new PerformanceObserver(context, WTF::move(callback))); } static Vector supportedEntryTypes(ScriptExecutionContext&); diff --git a/src/bun.js/bindings/webcore/PerformanceObserverEntryList.cpp b/src/bun.js/bindings/webcore/PerformanceObserverEntryList.cpp index a9bd8f8ccd..e921ca7d18 100644 --- a/src/bun.js/bindings/webcore/PerformanceObserverEntryList.cpp +++ b/src/bun.js/bindings/webcore/PerformanceObserverEntryList.cpp @@ -32,11 +32,11 @@ namespace WebCore { Ref PerformanceObserverEntryList::create(Vector>&& entries) { - return adoptRef(*new PerformanceObserverEntryList(WTFMove(entries))); + return adoptRef(*new PerformanceObserverEntryList(WTF::move(entries))); } PerformanceObserverEntryList::PerformanceObserverEntryList(Vector>&& entries) - : m_entries(WTFMove(entries)) + : m_entries(WTF::move(entries)) { ASSERT(!m_entries.isEmpty()); diff --git a/src/bun.js/bindings/webcore/PerformanceResourceTiming.cpp b/src/bun.js/bindings/webcore/PerformanceResourceTiming.cpp index ecbe7b114b..582e3c018f 100644 --- a/src/bun.js/bindings/webcore/PerformanceResourceTiming.cpp +++ b/src/bun.js/bindings/webcore/PerformanceResourceTiming.cpp @@ -91,13 +91,13 @@ static double entryEndTime(MonotonicTime timeOrigin, const ResourceTiming& resou Ref PerformanceResourceTiming::create(MonotonicTime timeOrigin, ResourceTiming&& resourceTiming) { - return adoptRef(*new PerformanceResourceTiming(timeOrigin, WTFMove(resourceTiming))); + return adoptRef(*new PerformanceResourceTiming(timeOrigin, WTF::move(resourceTiming))); } PerformanceResourceTiming::PerformanceResourceTiming(MonotonicTime timeOrigin, ResourceTiming&& resourceTiming) : PerformanceEntry(resourceTiming.url().string(), entryStartTime(timeOrigin, resourceTiming), entryEndTime(timeOrigin, resourceTiming)) , m_timeOrigin(timeOrigin) - , m_resourceTiming(WTFMove(resourceTiming)) + , m_resourceTiming(WTF::move(resourceTiming)) , m_serverTiming(m_resourceTiming.populateServerTiming()) { } diff --git a/src/bun.js/bindings/webcore/PerformanceServerTiming.cpp b/src/bun.js/bindings/webcore/PerformanceServerTiming.cpp index 484087699e..29e2c4b6c0 100644 --- a/src/bun.js/bindings/webcore/PerformanceServerTiming.cpp +++ b/src/bun.js/bindings/webcore/PerformanceServerTiming.cpp @@ -31,13 +31,13 @@ namespace WebCore { Ref PerformanceServerTiming::create(String&& name, double duration, String&& description) { - return adoptRef(*new PerformanceServerTiming(WTFMove(name), duration, WTFMove(description))); + return adoptRef(*new PerformanceServerTiming(WTF::move(name), duration, WTF::move(description))); } PerformanceServerTiming::PerformanceServerTiming(String&& name, double duration, String&& description) - : m_name(WTFMove(name)) + : m_name(WTF::move(name)) , m_duration(duration) - , m_description(WTFMove(description)) + , m_description(WTF::move(description)) { } diff --git a/src/bun.js/bindings/webcore/PerformanceUserTiming.cpp b/src/bun.js/bindings/webcore/PerformanceUserTiming.cpp index d9d67ebb21..9870e42f39 100644 --- a/src/bun.js/bindings/webcore/PerformanceUserTiming.cpp +++ b/src/bun.js/bindings/webcore/PerformanceUserTiming.cpp @@ -43,7 +43,7 @@ namespace WebCore { using NavigationTimingFunction = unsigned long long (PerformanceTiming::*)() const; -static constexpr std::pair restrictedMarkMappings[] = { +static constexpr std::array, 21> restrictedMarkMappings { { { "connectEnd"_s, &PerformanceTiming::connectEnd }, { "connectStart"_s, &PerformanceTiming::connectStart }, { "domComplete"_s, &PerformanceTiming::domComplete }, @@ -65,7 +65,7 @@ static constexpr std::pair res { "secureConnectionStart"_s, &PerformanceTiming::secureConnectionStart }, { "unloadEventEnd"_s, &PerformanceTiming::unloadEventEnd }, { "unloadEventStart"_s, &PerformanceTiming::unloadEventStart }, -}; +} }; static constexpr SortedArrayMap restrictedMarkFunctions { restrictedMarkMappings }; bool PerformanceUserTiming::isRestrictedMarkName(const String& markName) @@ -125,7 +125,7 @@ ExceptionOr> PerformanceUserTiming::mark(JSC::JSGlobalObjec // InspectorInstrumentation::performanceMark(context.get(), markName, timestamp, nullptr); - auto mark = PerformanceMark::create(globalObject, context, markName, WTFMove(markOptions)); + auto mark = PerformanceMark::create(globalObject, context, markName, WTF::move(markOptions)); if (mark.hasException()) return mark.releaseException(); diff --git a/src/bun.js/bindings/webcore/ReadableStreamDefaultController.cpp b/src/bun.js/bindings/webcore/ReadableStreamDefaultController.cpp index 11e6675ef9..77d99afb6e 100644 --- a/src/bun.js/bindings/webcore/ReadableStreamDefaultController.cpp +++ b/src/bun.js/bindings/webcore/ReadableStreamDefaultController.cpp @@ -143,7 +143,7 @@ bool ReadableStreamDefaultController::enqueue(RefPtr&& buffer) JSC::JSLockHolder lock(vm); auto scope = DECLARE_CATCH_SCOPE(vm); auto length = buffer->byteLength(); - auto value = JSC::JSUint8Array::create(&lexicalGlobalObject, lexicalGlobalObject.typedArrayStructureWithTypedArrayType(), WTFMove(buffer), 0, length); + auto value = JSC::JSUint8Array::create(&lexicalGlobalObject, lexicalGlobalObject.typedArrayStructureWithTypedArrayType(), WTF::move(buffer), 0, length); EXCEPTION_ASSERT(!scope.exception() || vm.hasPendingTerminationException()); RETURN_IF_EXCEPTION(scope, false); diff --git a/src/bun.js/bindings/webcore/ReadableStreamSink.cpp b/src/bun.js/bindings/webcore/ReadableStreamSink.cpp index d79e7d3581..67078d6ded 100644 --- a/src/bun.js/bindings/webcore/ReadableStreamSink.cpp +++ b/src/bun.js/bindings/webcore/ReadableStreamSink.cpp @@ -33,7 +33,7 @@ namespace WebCore { ReadableStreamToSharedBufferSink::ReadableStreamToSharedBufferSink(Callback&& callback) - : m_callback { WTFMove(callback) } + : m_callback { WTF::move(callback) } { } @@ -61,8 +61,8 @@ void ReadableStreamToSharedBufferSink::close() void ReadableStreamToSharedBufferSink::error(String&& message) { - if (auto callback = WTFMove(m_callback)) - callback(Exception { TypeError, WTFMove(message) }); + if (auto callback = WTF::move(m_callback)) + callback(Exception { TypeError, WTF::move(message) }); } } // namespace WebCore diff --git a/src/bun.js/bindings/webcore/ReadableStreamSink.h b/src/bun.js/bindings/webcore/ReadableStreamSink.h index 7db31e38ab..68dfefb001 100644 --- a/src/bun.js/bindings/webcore/ReadableStreamSink.h +++ b/src/bun.js/bindings/webcore/ReadableStreamSink.h @@ -47,7 +47,7 @@ public: class ReadableStreamToSharedBufferSink final : public ReadableStreamSink { public: using Callback = Function*>&&)>; - static Ref create(Callback&& callback) { return adoptRef(*new ReadableStreamToSharedBufferSink(WTFMove(callback))); } + static Ref create(Callback&& callback) { return adoptRef(*new ReadableStreamToSharedBufferSink(WTF::move(callback))); } void pipeFrom(ReadableStream&); void clearCallback() { m_callback = {}; } diff --git a/src/bun.js/bindings/webcore/ReadableStreamSource.cpp b/src/bun.js/bindings/webcore/ReadableStreamSource.cpp index e0537b4188..dfae6d6055 100644 --- a/src/bun.js/bindings/webcore/ReadableStreamSource.cpp +++ b/src/bun.js/bindings/webcore/ReadableStreamSource.cpp @@ -32,8 +32,8 @@ ReadableStreamSource::~ReadableStreamSource() = default; void ReadableStreamSource::start(ReadableStreamDefaultController&& controller, DOMPromiseDeferred&& promise) { ASSERT(!m_promise); - m_promise = makeUnique>(WTFMove(promise)); - m_controller = WTFMove(controller); + m_promise = makeUnique>(WTF::move(promise)); + m_controller = WTF::move(controller); setActive(); doStart(); @@ -44,7 +44,7 @@ void ReadableStreamSource::pull(DOMPromiseDeferred&& promise) ASSERT(!m_promise); ASSERT(m_controller); - m_promise = makeUnique>(WTFMove(promise)); + m_promise = makeUnique>(WTF::move(promise)); setActive(); doPull(); diff --git a/src/bun.js/bindings/webcore/RegisteredEventListener.h b/src/bun.js/bindings/webcore/RegisteredEventListener.h index a52890ef42..54e9487aac 100644 --- a/src/bun.js/bindings/webcore/RegisteredEventListener.h +++ b/src/bun.js/bindings/webcore/RegisteredEventListener.h @@ -46,7 +46,7 @@ public: static Ref create(Ref&& listener, const Options& options) { - return adoptRef(*new RegisteredEventListener(WTFMove(listener), options)); + return adoptRef(*new RegisteredEventListener(WTF::move(listener), options)); } EventListener& callback() const { return m_callback; } @@ -63,7 +63,7 @@ private: , m_isPassive(options.passive) , m_isOnce(options.once) , m_wasRemoved(false) - , m_callback(WTFMove(listener)) + , m_callback(WTF::move(listener)) { } diff --git a/src/bun.js/bindings/webcore/ResourceTiming.cpp b/src/bun.js/bindings/webcore/ResourceTiming.cpp index 1c18ae6e85..f777f8a97f 100644 --- a/src/bun.js/bindings/webcore/ResourceTiming.cpp +++ b/src/bun.js/bindings/webcore/ResourceTiming.cpp @@ -97,11 +97,11 @@ ResourceTiming ResourceTiming::isolatedCopy() const& ResourceTiming ResourceTiming::isolatedCopy() && { return ResourceTiming { - WTFMove(m_url).isolatedCopy(), - WTFMove(m_initiatorType).isolatedCopy(), - // WTFMove(m_resourceLoadTiming).isolatedCopy(), - WTFMove(m_networkLoadMetrics).isolatedCopy(), - crossThreadCopy(WTFMove(m_serverTiming)) + WTF::move(m_url).isolatedCopy(), + WTF::move(m_initiatorType).isolatedCopy(), + // WTF::move(m_resourceLoadTiming).isolatedCopy(), + WTF::move(m_networkLoadMetrics).isolatedCopy(), + crossThreadCopy(WTF::move(m_serverTiming)) }; } diff --git a/src/bun.js/bindings/webcore/ResourceTiming.h b/src/bun.js/bindings/webcore/ResourceTiming.h index 996874cfe8..6abbb03bce 100644 --- a/src/bun.js/bindings/webcore/ResourceTiming.h +++ b/src/bun.js/bindings/webcore/ResourceTiming.h @@ -66,11 +66,11 @@ public: private: ResourceTiming(const URL& url, const String& initiatorType, const NetworkLoadMetrics& networkLoadMetrics); ResourceTiming(URL&& url, String&& initiatorType, NetworkLoadMetrics&& networkLoadMetrics, Vector&& serverTiming) - : m_url(WTFMove(url)) - , m_initiatorType(WTFMove(initiatorType)) + : m_url(WTF::move(url)) + , m_initiatorType(WTF::move(initiatorType)) , m_resourceLoadTiming(ResourceLoadTiming()) - , m_networkLoadMetrics(WTFMove(networkLoadMetrics)) - , m_serverTiming(WTFMove(serverTiming)) + , m_networkLoadMetrics(WTF::move(networkLoadMetrics)) + , m_serverTiming(WTF::move(serverTiming)) { } diff --git a/src/bun.js/bindings/webcore/SerializedScriptValue.cpp b/src/bun.js/bindings/webcore/SerializedScriptValue.cpp index 751a1bac48..0240fbc8c0 100644 --- a/src/bun.js/bindings/webcore/SerializedScriptValue.cpp +++ b/src/bun.js/bindings/webcore/SerializedScriptValue.cpp @@ -1532,7 +1532,7 @@ private: auto index = m_serializedVideoFrames.find(videoFrame.ptr()); if (index == notFound) { index = m_serializedVideoChunks.size(); - m_serializedVideoFrames.append(WTFMove(videoFrame)); + m_serializedVideoFrames.append(WTF::move(videoFrame)); } write(WebCodecsVideoFrameTag); write(static_cast(index)); @@ -1760,7 +1760,7 @@ private: ArrayBufferContents contents; if (arrayBuffer->shareWith(contents)) { write(SharedArrayBufferTag); - m_sharedBuffers.append(WTFMove(contents)); + m_sharedBuffers.append(WTF::move(contents)); write(index); return true; } @@ -1960,7 +1960,7 @@ private: write(TerminatorTag); return true; } - StructuredCloneableSerialize to_write = WTFMove(_cloneable.value()); + StructuredCloneableSerialize to_write = WTF::move(_cloneable.value()); write(to_write.tag); to_write.write(this, m_lexicalGlobalObject); return true; @@ -2878,14 +2878,14 @@ public: // { // if (!buffer.size()) // return std::make_pair(jsNull(), SerializationReturnCode::UnspecifiedError); - // CloneDeserializer deserializer(lexicalGlobalObject, globalObject, messagePorts, arrayBufferContentsArray, buffer, blobURLs, blobFilePaths, sharedBuffers, WTFMove(backingStores) + // CloneDeserializer deserializer(lexicalGlobalObject, globalObject, messagePorts, arrayBufferContentsArray, buffer, blobURLs, blobFilePaths, sharedBuffers, WTF::move(backingStores) // #if ENABLE(OFFSCREEN_CANVAS_IN_WORKERS) // , - // WTFMove(detachedOffscreenCanvases) + // WTF::move(detachedOffscreenCanvases) // #endif // #if ENABLE(WEB_RTC) // , - // WTFMove(detachedRTCDataChannels) + // WTF::move(detachedRTCDataChannels) // #endif // #if ENABLE(WEBASSEMBLY) // , @@ -2893,7 +2893,7 @@ public: // #endif // #if ENABLE(WEB_CODECS) // , - // WTFMove(serializedVideoChunks), WTFMove(serializedVideoFrames) + // WTF::move(serializedVideoChunks), WTF::move(serializedVideoFrames) // #endif // ); // if (!deserializer.isValid()) @@ -2927,11 +2927,11 @@ public: CloneDeserializer deserializer(lexicalGlobalObject, globalObject, messagePorts, arrayBufferContentsArray, std::span { buffer.begin(), buffer.end() }, blobURLs, blobFilePaths, sharedBuffers #if ENABLE(OFFSCREEN_CANVAS_IN_WORKERS) , - WTFMove(detachedOffscreenCanvases) + WTF::move(detachedOffscreenCanvases) #endif #if ENABLE(WEB_RTC) , - WTFMove(detachedRTCDataChannels) + WTF::move(detachedRTCDataChannels) #endif #if ENABLE(WEBASSEMBLY) , @@ -2939,7 +2939,7 @@ public: #endif #if ENABLE(WEB_CODECS) , - WTFMove(serializedVideoChunks), WTFMove(serializedVideoFrames) + WTF::move(serializedVideoChunks), WTF::move(serializedVideoFrames) #endif ); if (!deserializer.isValid()) @@ -2974,7 +2974,7 @@ private: return m_jsString; } const String& string() { return m_string; } - String takeString() { return WTFMove(m_string); } + String takeString() { return WTF::move(m_string); } private: String m_string; @@ -3033,14 +3033,14 @@ private: // , m_messagePorts(messagePorts) // , m_arrayBufferContents(arrayBufferContents) // , m_arrayBuffers(arrayBufferContents ? arrayBufferContents->size() : 0) - // , m_backingStores(WTFMove(backingStores)) + // , m_backingStores(WTF::move(backingStores)) // , m_imageBitmaps(m_backingStores.size()) // #if ENABLE(OFFSCREEN_CANVAS_IN_WORKERS) - // , m_detachedOffscreenCanvases(WTFMove(detachedOffscreenCanvases)) + // , m_detachedOffscreenCanvases(WTF::move(detachedOffscreenCanvases)) // , m_offscreenCanvases(m_detachedOffscreenCanvases.size()) // #endif // #if ENABLE(WEB_RTC) - // , m_detachedRTCDataChannels(WTFMove(detachedRTCDataChannels)) + // , m_detachedRTCDataChannels(WTF::move(detachedRTCDataChannels)) // , m_rtcDataChannels(m_detachedRTCDataChannels.size()) // #endif // #if ENABLE(WEBASSEMBLY) @@ -3048,9 +3048,9 @@ private: // , m_wasmMemoryHandles(wasmMemoryHandles) // #endif // #if ENABLE(WEB_CODECS) - // , m_serializedVideoChunks(WTFMove(serializedVideoChunks)) + // , m_serializedVideoChunks(WTF::move(serializedVideoChunks)) // , m_videoChunks(m_serializedVideoChunks.size()) - // , m_serializedVideoFrames(WTFMove(serializedVideoFrames)) + // , m_serializedVideoFrames(WTF::move(serializedVideoFrames)) // , m_videoFrames(m_serializedVideoFrames.size()) // #endif // { @@ -3087,11 +3087,11 @@ private: , m_arrayBufferContents(arrayBufferContents) , m_arrayBuffers(arrayBufferContents ? arrayBufferContents->size() : 0) #if ENABLE(OFFSCREEN_CANVAS_IN_WORKERS) - , m_detachedOffscreenCanvases(WTFMove(detachedOffscreenCanvases)) + , m_detachedOffscreenCanvases(WTF::move(detachedOffscreenCanvases)) , m_offscreenCanvases(m_detachedOffscreenCanvases.size()) #endif #if ENABLE(WEB_RTC) - , m_detachedRTCDataChannels(WTFMove(detachedRTCDataChannels)) + , m_detachedRTCDataChannels(WTF::move(detachedRTCDataChannels)) , m_rtcDataChannels(m_detachedRTCDataChannels.size()) #endif #if ENABLE(WEBASSEMBLY) @@ -3099,9 +3099,9 @@ private: , m_wasmMemoryHandles(wasmMemoryHandles) #endif #if ENABLE(WEB_CODECS) - , m_serializedVideoChunks(WTFMove(serializedVideoChunks)) + , m_serializedVideoChunks(WTF::move(serializedVideoChunks)) , m_videoChunks(m_serializedVideoChunks.size()) - , m_serializedVideoFrames(WTFMove(serializedVideoFrames)) + , m_serializedVideoFrames(WTF::move(serializedVideoFrames)) , m_videoFrames(m_serializedVideoFrames.size()) #endif { @@ -3140,14 +3140,14 @@ private: // , m_blobURLs(blobURLs) // , m_blobFilePaths(blobFilePaths) // , m_sharedBuffers(sharedBuffers) - // , m_backingStores(WTFMove(backingStores)) + // , m_backingStores(WTF::move(backingStores)) // , m_imageBitmaps(m_backingStores.size()) // #if ENABLE(OFFSCREEN_CANVAS_IN_WORKERS) - // , m_detachedOffscreenCanvases(WTFMove(detachedOffscreenCanvases)) + // , m_detachedOffscreenCanvases(WTF::move(detachedOffscreenCanvases)) // , m_offscreenCanvases(m_detachedOffscreenCanvases.size()) // #endif // #if ENABLE(WEB_RTC) - // , m_detachedRTCDataChannels(WTFMove(detachedRTCDataChannels)) + // , m_detachedRTCDataChannels(WTF::move(detachedRTCDataChannels)) // , m_rtcDataChannels(m_detachedRTCDataChannels.size()) // #endif // #if ENABLE(WEBASSEMBLY) @@ -3155,9 +3155,9 @@ private: // , m_wasmMemoryHandles(wasmMemoryHandles) // #endif // #if ENABLE(WEB_CODECS) - // , m_serializedVideoChunks(WTFMove(serializedVideoChunks)) + // , m_serializedVideoChunks(WTF::move(serializedVideoChunks)) // , m_videoChunks(m_serializedVideoChunks.size()) - // , m_serializedVideoFrames(WTFMove(serializedVideoFrames)) + // , m_serializedVideoFrames(WTF::move(serializedVideoFrames)) // , m_videoFrames(m_serializedVideoFrames.size()) // #endif // { @@ -3197,11 +3197,11 @@ private: , m_blobFilePaths(blobFilePaths) , m_sharedBuffers(sharedBuffers) #if ENABLE(OFFSCREEN_CANVAS_IN_WORKERS) - , m_detachedOffscreenCanvases(WTFMove(detachedOffscreenCanvases)) + , m_detachedOffscreenCanvases(WTF::move(detachedOffscreenCanvases)) , m_offscreenCanvases(m_detachedOffscreenCanvases.size()) #endif #if ENABLE(WEB_RTC) - , m_detachedRTCDataChannels(WTFMove(detachedRTCDataChannels)) + , m_detachedRTCDataChannels(WTF::move(detachedRTCDataChannels)) , m_rtcDataChannels(m_detachedRTCDataChannels.size()) #endif #if ENABLE(WEBASSEMBLY) @@ -3209,9 +3209,9 @@ private: , m_wasmMemoryHandles(wasmMemoryHandles) #endif #if ENABLE(WEB_CODECS) - , m_serializedVideoChunks(WTFMove(serializedVideoChunks)) + , m_serializedVideoChunks(WTF::move(serializedVideoChunks)) , m_videoChunks(m_serializedVideoChunks.size()) - , m_serializedVideoFrames(WTFMove(serializedVideoFrames)) + , m_serializedVideoFrames(WTF::move(serializedVideoFrames)) , m_videoFrames(m_serializedVideoFrames.size()) #endif { @@ -3954,7 +3954,7 @@ private: CryptoAlgorithmIdentifier hash; if (!read(hash)) return false; - result = CryptoKeyHMAC::importRaw(0, hash, WTFMove(keyData), extractable, usages); + result = CryptoKeyHMAC::importRaw(0, hash, WTF::move(keyData), extractable, usages); return true; } @@ -3968,7 +3968,7 @@ private: Vector keyData; if (!read(keyData)) return false; - result = CryptoKeyAES::importRaw(algorithm, WTFMove(keyData), extractable, usages); + result = CryptoKeyAES::importRaw(algorithm, WTF::move(keyData), extractable, usages); return true; } @@ -3999,7 +3999,7 @@ private: if (type == CryptoKeyAsymmetricTypeSubtag::Public) { auto keyData = CryptoKeyRSAComponents::createPublic(modulus, exponent); auto key = CryptoKeyRSA::create(algorithm, hash, isRestrictedToHash, *keyData, extractable, usages); - result = WTFMove(key); + result = WTF::move(key); return true; } @@ -4014,7 +4014,7 @@ private: if (!primeCount) { auto keyData = CryptoKeyRSAComponents::createPrivate(modulus, exponent, privateExponent); auto key = CryptoKeyRSA::create(algorithm, hash, isRestrictedToHash, *keyData, extractable, usages); - result = WTFMove(key); + result = WTF::move(key); return true; } @@ -4046,7 +4046,7 @@ private: auto keyData = CryptoKeyRSAComponents::createPrivateWithAdditionalData(modulus, exponent, privateExponent, firstPrimeInfo, secondPrimeInfo, otherPrimeInfos); auto key = CryptoKeyRSA::create(algorithm, hash, isRestrictedToHash, *keyData, extractable, usages); - result = WTFMove(key); + result = WTF::move(key); return true; } @@ -4069,10 +4069,10 @@ private: switch (type) { case CryptoKeyAsymmetricTypeSubtag::Public: - result = CryptoKeyEC::importRaw(algorithm, curve->string(), WTFMove(keyData), extractable, usages); + result = CryptoKeyEC::importRaw(algorithm, curve->string(), WTF::move(keyData), extractable, usages); break; case CryptoKeyAsymmetricTypeSubtag::Private: - result = CryptoKeyEC::importPkcs8(algorithm, curve->string(), WTFMove(keyData), extractable, usages); + result = CryptoKeyEC::importPkcs8(algorithm, curve->string(), WTF::move(keyData), extractable, usages); break; } @@ -4093,7 +4093,7 @@ private: if (!read(keyData)) return false; - result = CryptoKeyOKP::importRaw(algorithm, namedCurve, WTFMove(keyData), extractable, usages); + result = CryptoKeyOKP::importRaw(algorithm, namedCurve, WTF::move(keyData), extractable, usages); return true; } @@ -4105,7 +4105,7 @@ private: Vector keyData; if (!read(keyData)) return false; - result = CryptoKeyRaw::create(algorithm, WTFMove(keyData), usages); + result = CryptoKeyRaw::create(algorithm, WTF::move(keyData), usages); return true; } @@ -4254,7 +4254,7 @@ private: // return {}; // TransformationMatrix matrix(m11, m12, m21, m22, m41, m42); - // return toJSNewlyCreated(m_lexicalGlobalObject, jsCast(m_globalObject), T::create(WTFMove(matrix), DOMMatrixReadOnly::Is2D::Yes)); + // return toJSNewlyCreated(m_lexicalGlobalObject, jsCast(m_globalObject), T::create(WTF::move(matrix), DOMMatrixReadOnly::Is2D::Yes)); // } else { // double m11; // if (!read(m11)) @@ -4306,7 +4306,7 @@ private: // return {}; // TransformationMatrix matrix(m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44); - // return toJSNewlyCreated(m_lexicalGlobalObject, jsCast(m_globalObject), T::create(WTFMove(matrix), DOMMatrixReadOnly::Is2D::No)); + // return toJSNewlyCreated(m_lexicalGlobalObject, jsCast(m_globalObject), T::create(WTF::move(matrix), DOMMatrixReadOnly::Is2D::No)); // } // } @@ -4373,7 +4373,7 @@ private: // if (!m_imageBitmaps[index]) { // m_backingStores.at(index)->connect(*executionContext(m_lexicalGlobalObject)); - // m_imageBitmaps[index] = ImageBitmap::create(WTFMove(m_backingStores.at(index))); + // m_imageBitmaps[index] = ImageBitmap::create(WTF::move(m_backingStores.at(index))); // } // auto bitmap = m_imageBitmaps[index].get(); @@ -4391,7 +4391,7 @@ private: } if (!m_offscreenCanvases[index]) - m_offscreenCanvases[index] = OffscreenCanvas::create(*executionContext(m_lexicalGlobalObject), WTFMove(m_detachedOffscreenCanvases.at(index))); + m_offscreenCanvases[index] = OffscreenCanvas::create(*executionContext(m_lexicalGlobalObject), WTF::move(m_detachedOffscreenCanvases.at(index))); auto offscreenCanvas = m_offscreenCanvases[index].get(); return getJSValue(offscreenCanvas); @@ -4440,8 +4440,8 @@ private: if (!m_canCreateDOMObject) return constructEmptyObject(m_lexicalGlobalObject, m_globalObject->objectPrototype()); - auto rtcCertificate = RTCCertificate::create(SecurityOrigin::createFromString(origin->string()), expires, WTFMove(fingerprints), certificate->takeString(), keyedMaterial->takeString()); - return toJSNewlyCreated(m_lexicalGlobalObject, jsCast(m_globalObject), WTFMove(rtcCertificate)); + auto rtcCertificate = RTCCertificate::create(SecurityOrigin::createFromString(origin->string()), expires, WTF::move(fingerprints), certificate->takeString(), keyedMaterial->takeString()); + return toJSNewlyCreated(m_lexicalGlobalObject, jsCast(m_globalObject), WTF::move(rtcCertificate)); } JSValue readRTCDataChannel() @@ -4454,8 +4454,8 @@ private: } if (!m_rtcDataChannels[index]) { - auto detachedChannel = WTFMove(m_detachedRTCDataChannels.at(index)); - m_rtcDataChannels[index] = RTCDataChannel::create(*executionContext(m_lexicalGlobalObject), detachedChannel->identifier, WTFMove(detachedChannel->label), WTFMove(detachedChannel->options), detachedChannel->state); + auto detachedChannel = WTF::move(m_detachedRTCDataChannels.at(index)); + m_rtcDataChannels[index] = RTCDataChannel::create(*executionContext(m_lexicalGlobalObject), detachedChannel->identifier, WTF::move(detachedChannel->label), WTF::move(detachedChannel->options), detachedChannel->state); } return getJSValue(m_rtcDataChannels[index].get()); @@ -4487,7 +4487,7 @@ private: } if (!m_videoFrames[index]) - m_videoFrames[index] = WebCodecsVideoFrame::create(*executionContext(m_lexicalGlobalObject), WTFMove(m_serializedVideoFrames.at(index))); + m_videoFrames[index] = WebCodecsVideoFrame::create(*executionContext(m_lexicalGlobalObject), WTF::move(m_serializedVideoFrames.at(index))); return getJSValue(m_videoFrames[index].get()); } @@ -4526,7 +4526,7 @@ private: // buffer->putPixelBuffer(*pixelBuffer, { IntPoint::zero(), logicalSize }); - // auto bitmap = ImageBitmap::create(ImageBitmapBacking(WTFMove(buffer), OptionSet::fromRaw(serializationState))); + // auto bitmap = ImageBitmap::create(ImageBitmapBacking(WTF::move(buffer), OptionSet::fromRaw(serializationState))); // return getJSValue(bitmap); // } @@ -4554,7 +4554,7 @@ private: auto cert_ptr = ncrypto::X509Pointer(cert); auto* domGlobalObject = defaultGlobalObject(m_globalObject); - auto* cert_obj = Bun::JSX509Certificate::create(m_lexicalGlobalObject->vm(), domGlobalObject->m_JSX509CertificateClassStructure.get(domGlobalObject), m_globalObject, WTFMove(cert_ptr)); + auto* cert_obj = Bun::JSX509Certificate::create(m_lexicalGlobalObject->vm(), domGlobalObject->m_JSX509CertificateClassStructure.get(domGlobalObject), m_globalObject, WTF::move(cert_ptr)); m_gcBuffer.appendWithCrashOnOverflow(cert_obj); return cert_obj; @@ -4579,9 +4579,9 @@ private: return JSValue(); } - KeyObject keyObject = KeyObject::create(WTFMove(keyData)); + KeyObject keyObject = KeyObject::create(WTF::move(keyData)); Structure* structure = globalObject->m_JSSecretKeyObjectClassStructure.get(m_globalObject); - return JSSecretKeyObject::create(vm, structure, m_globalObject, WTFMove(keyObject)); + return JSSecretKeyObject::create(vm, structure, m_globalObject, WTF::move(keyObject)); } case CryptoKeyType::Public: case CryptoKeyType::Private: { @@ -4605,7 +4605,7 @@ private: } auto keyObject = KeyObject::create(CryptoKeyType::Public, ncrypto::EVPKeyPointer(pkey)); Structure* structure = globalObject->m_JSPublicKeyObjectClassStructure.get(m_globalObject); - return JSPublicKeyObject::create(vm, structure, m_globalObject, WTFMove(keyObject)); + return JSPublicKeyObject::create(vm, structure, m_globalObject, WTF::move(keyObject)); } EVP_PKEY* pkey = PEM_read_bio_PrivateKey(bio, nullptr, nullptr, nullptr); @@ -4615,7 +4615,7 @@ private: } auto keyObject = KeyObject::create(CryptoKeyType::Private, ncrypto::EVPKeyPointer(pkey)); Structure* structure = globalObject->m_JSPrivateKeyObjectClassStructure.get(m_globalObject); - return JSPrivateKeyObject::create(vm, structure, m_globalObject, WTFMove(keyObject)); + return JSPrivateKeyObject::create(vm, structure, m_globalObject, WTF::move(keyObject)); } } } @@ -4824,7 +4824,7 @@ private: // } // if (!m_canCreateDOMObject) // return jsNull(); - // return getJSValue(FileList::create(WTFMove(files)).get()); + // return getJSValue(FileList::create(WTF::move(files)).get()); // } // case ImageDataTag: { // uint32_t width; @@ -4960,7 +4960,7 @@ private: fail(); return JSValue(); } - return ErrorInstance::create(m_lexicalGlobalObject, WTFMove(message), toErrorType(serializedErrorType), { line, column }, WTFMove(sourceURL), WTFMove(stackString)); + return ErrorInstance::create(m_lexicalGlobalObject, WTF::move(message), toErrorType(serializedErrorType), { line, column }, WTF::move(sourceURL), WTF::move(stackString)); } case ObjectReferenceTag: { auto index = readConstantPoolIndex(m_gcBuffer); @@ -5029,10 +5029,10 @@ private: fail(); return JSValue(); } - memory = Wasm::Memory::create(vm, contents.releaseNonNull(), WTFMove(handler)); + memory = Wasm::Memory::create(contents.releaseNonNull(), WTF::move(handler)); } else { // zero size & max-size. - memory = Wasm::Memory::createZeroSized(vm, JSC::MemorySharingMode::Shared, WTFMove(handler)); + memory = Wasm::Memory::createZeroSized(JSC::MemorySharingMode::Shared, WTF::move(handler)); } result->adopt(memory.releaseNonNull()); @@ -5053,7 +5053,7 @@ private: fail(); return JSValue(); } - JSValue result = JSArrayBuffer::create(m_lexicalGlobalObject->vm(), structure, WTFMove(arrayBuffer)); + JSValue result = JSArrayBuffer::create(m_lexicalGlobalObject->vm(), structure, WTF::move(arrayBuffer)); m_gcBuffer.appendWithCrashOnOverflow(result); return result; } @@ -5070,7 +5070,7 @@ private: fail(); return JSValue(); } - JSValue result = JSArrayBuffer::create(m_lexicalGlobalObject->vm(), structure, WTFMove(arrayBuffer)); + JSValue result = JSArrayBuffer::create(m_lexicalGlobalObject->vm(), structure, WTF::move(arrayBuffer)); m_gcBuffer.appendWithCrashOnOverflow(result); return result; } @@ -5083,7 +5083,7 @@ private: } if (!m_arrayBuffers[index]) - m_arrayBuffers[index] = ArrayBuffer::create(WTFMove(m_arrayBufferContents->at(index))); + m_arrayBuffers[index] = ArrayBuffer::create(WTF::move(m_arrayBufferContents->at(index))); return getJSValue(m_arrayBuffers[index].get()); } @@ -5099,7 +5099,7 @@ private: RELEASE_ASSERT(m_sharedBuffers->at(index)); ArrayBufferContents arrayBufferContents; m_sharedBuffers->at(index).shareWith(arrayBufferContents); - auto buffer = ArrayBuffer::create(WTFMove(arrayBufferContents)); + auto buffer = ArrayBuffer::create(WTF::move(arrayBufferContents)); JSValue result = getJSValue(buffer.get()); m_gcBuffer.appendWithCrashOnOverflow(result); return result; @@ -5474,14 +5474,14 @@ SerializedScriptValue::SerializedScriptValue(Vector&& buffer, std::uniq Vector>&& serializedVideoChunks, Vector&& serializedVideoFrames #endif ) - : m_data(WTFMove(buffer)) - , m_arrayBufferContentsArray(WTFMove(arrayBufferContentsArray)) + : m_data(WTF::move(buffer)) + , m_arrayBufferContentsArray(WTF::move(arrayBufferContentsArray)) #if ENABLE(WEB_RTC) - , m_detachedRTCDataChannels(WTFMove(detachedRTCDataChannels)) + , m_detachedRTCDataChannels(WTF::move(detachedRTCDataChannels)) #endif #if ENABLE(WEB_CODECS) - , m_serializedVideoChunks(WTFMove(serializedVideoChunks)) - , m_serializedVideoFrames(WTFMove(serializedVideoFrames)) + , m_serializedVideoChunks(WTF::move(serializedVideoChunks)) + , m_serializedVideoFrames(WTF::move(serializedVideoFrames)) #endif { m_memoryCost = computeMemoryCost(); @@ -5505,25 +5505,25 @@ SerializedScriptValue::SerializedScriptValue(Vector&& buffer, std::uniq // Vector>&& serializedVideoChunks, Vector&& serializedVideoFrames // #endif // ) -// : m_data(WTFMove(buffer)) -// , m_arrayBufferContentsArray(WTFMove(arrayBufferContentsArray)) -// , m_sharedBufferContentsArray(WTFMove(sharedBufferContentsArray)) -// , m_backingStores(WTFMove(backingStores)) +// : m_data(WTF::move(buffer)) +// , m_arrayBufferContentsArray(WTF::move(arrayBufferContentsArray)) +// , m_sharedBufferContentsArray(WTF::move(sharedBufferContentsArray)) +// , m_backingStores(WTF::move(backingStores)) // #if ENABLE(OFFSCREEN_CANVAS_IN_WORKERS) -// , m_detachedOffscreenCanvases(WTFMove(detachedOffscreenCanvases)) +// , m_detachedOffscreenCanvases(WTF::move(detachedOffscreenCanvases)) // #endif // #if ENABLE(WEB_RTC) -// , m_detachedRTCDataChannels(WTFMove(detachedRTCDataChannels)) +// , m_detachedRTCDataChannels(WTF::move(detachedRTCDataChannels)) // #endif // #if ENABLE(WEBASSEMBLY) -// , m_wasmModulesArray(WTFMove(wasmModulesArray)) -// , m_wasmMemoryHandlesArray(WTFMove(wasmMemoryHandlesArray)) +// , m_wasmModulesArray(WTF::move(wasmModulesArray)) +// , m_wasmMemoryHandlesArray(WTF::move(wasmMemoryHandlesArray)) // #endif // #if ENABLE(WEB_CODECS) -// , m_serializedVideoChunks(WTFMove(serializedVideoChunks)) -// , m_serializedVideoFrames(WTFMove(serializedVideoFrames)) +// , m_serializedVideoChunks(WTF::move(serializedVideoChunks)) +// , m_serializedVideoFrames(WTF::move(serializedVideoFrames)) // #endif -// , m_blobHandles(crossThreadCopy(WTFMove(blobHandles))) +// , m_blobHandles(crossThreadCopy(WTF::move(blobHandles))) // { // m_memoryCost = computeMemoryCost(); // } @@ -5546,29 +5546,29 @@ SerializedScriptValue::SerializedScriptValue(Vector&& buffer, std::uniq Vector>&& serializedVideoChunks, Vector&& serializedVideoFrames #endif ) - : m_data(WTFMove(buffer)) - , m_arrayBufferContentsArray(WTFMove(arrayBufferContentsArray)) - , m_sharedBufferContentsArray(WTFMove(sharedBufferContentsArray)) + : m_data(WTF::move(buffer)) + , m_arrayBufferContentsArray(WTF::move(arrayBufferContentsArray)) + , m_sharedBufferContentsArray(WTF::move(sharedBufferContentsArray)) #if ENABLE(OFFSCREEN_CANVAS_IN_WORKERS) - , m_detachedOffscreenCanvases(WTFMove(detachedOffscreenCanvases)) + , m_detachedOffscreenCanvases(WTF::move(detachedOffscreenCanvases)) #endif #if ENABLE(WEB_RTC) - , m_detachedRTCDataChannels(WTFMove(detachedRTCDataChannels)) + , m_detachedRTCDataChannels(WTF::move(detachedRTCDataChannels)) #endif #if ENABLE(WEBASSEMBLY) - , m_wasmModulesArray(WTFMove(wasmModulesArray)) - , m_wasmMemoryHandlesArray(WTFMove(wasmMemoryHandlesArray)) + , m_wasmModulesArray(WTF::move(wasmModulesArray)) + , m_wasmMemoryHandlesArray(WTF::move(wasmMemoryHandlesArray)) #endif #if ENABLE(WEB_CODECS) - , m_serializedVideoChunks(WTFMove(serializedVideoChunks)) - , m_serializedVideoFrames(WTFMove(serializedVideoFrames)) + , m_serializedVideoChunks(WTF::move(serializedVideoChunks)) + , m_serializedVideoFrames(WTF::move(serializedVideoFrames)) #endif { m_memoryCost = computeMemoryCost(); } SerializedScriptValue::SerializedScriptValue(WTF::FixedVector&& object) - : m_simpleInMemoryPropertyTable(WTFMove(object)) + : m_simpleInMemoryPropertyTable(WTF::move(object)) , m_fastPath(FastPath::SimpleObject) { m_memoryCost = computeMemoryCost(); @@ -5819,12 +5819,12 @@ RefPtr SerializedScriptValue::create(JSC::JSGlobalObject& // ExceptionOr> SerializedScriptValue::create(JSGlobalObject& globalObject, JSValue value, Vector>&& transferList, Vector>& messagePorts, SerializationForStorage forStorage, SerializationContext serializationContext) // { -// return create(globalObject, value, WTFMove(transferList), messagePorts, forStorage, SerializationErrorMode::NonThrowing, serializationContext); +// return create(globalObject, value, WTF::move(transferList), messagePorts, forStorage, SerializationErrorMode::NonThrowing, serializationContext); // } ExceptionOr> SerializedScriptValue::create(JSGlobalObject& globalObject, JSValue value, Vector>&& transferList, Vector>& messagePorts, SerializationForStorage forStorage, SerializationContext serializationContext, SerializationForCrossProcessTransfer forTransfer) { - return create(globalObject, value, WTFMove(transferList), messagePorts, forStorage, SerializationErrorMode::Throwing, serializationContext, forTransfer); + return create(globalObject, value, WTF::move(transferList), messagePorts, forStorage, SerializationErrorMode::Throwing, serializationContext, forTransfer); } // ExceptionOr> SerializedScriptValue::create(JSGlobalObject& lexicalGlobalObject, JSValue value, Vector>&& transferList, SerializationForStorage forStorage, SerializationErrorMode throwExceptions, SerializationContext context) @@ -5911,7 +5911,7 @@ ExceptionOr> SerializedScriptValue::create(JSGlobalOb RETURN_IF_EXCEPTION(scope, Exception { ExistingExceptionError }); if (canUseObjectFastPath) { - return SerializedScriptValue::createObjectFastPath(WTF::FixedVector(WTFMove(properties))); + return SerializedScriptValue::createObjectFastPath(WTF::FixedVector(WTF::move(properties))); } } } @@ -5947,13 +5947,13 @@ ExceptionOr> SerializedScriptValue::create(JSGlobalOb throwVMTypeError(&lexicalGlobalObject, scope, errorMessageForTransfer(arrayBuffer)); RELEASE_AND_RETURN(scope, Exception { ExistingExceptionError }); } - arrayBuffers.append(WTFMove(arrayBuffer)); + arrayBuffers.append(WTF::move(arrayBuffer)); continue; } if (auto port = JSMessagePort::toWrapped(vm, transferable.get())) { if (port->isDetached()) return Exception { DataCloneError, "MessagePort in transfer list is already detached"_s }; - messagePorts.append(WTFMove(port)); + messagePorts.append(WTF::move(port)); continue; } @@ -5963,13 +5963,13 @@ ExceptionOr> SerializedScriptValue::create(JSGlobalOb // if (!imageBitmap->originClean()) // return Exception { DataCloneError }; - // imageBitmaps.append(WTFMove(imageBitmap)); + // imageBitmaps.append(WTF::move(imageBitmap)); // continue; // } #if ENABLE(OFFSCREEN_CANVAS_IN_WORKERS) if (auto offscreenCanvas = JSOffscreenCanvas::toWrapped(vm, transferable.get())) { - offscreenCanvases.append(WTFMove(offscreenCanvas)); + offscreenCanvases.append(WTF::move(offscreenCanvas)); continue; } #endif @@ -6064,7 +6064,7 @@ ExceptionOr> SerializedScriptValue::create(JSGlobalOb RELEASE_AND_RETURN(scope, arrayBufferContentsArray.releaseException()); } - // auto backingStores = ImageBitmap::detachBitmaps(WTFMove(imageBitmaps)); + // auto backingStores = ImageBitmap::detachBitmaps(WTF::move(imageBitmaps)); #if ENABLE(OFFSCREEN_CANVAS_IN_WORKERS) Vector> detachedCanvases; @@ -6085,14 +6085,14 @@ ExceptionOr> SerializedScriptValue::create(JSGlobalOb videoFrame->close(); #endif - // return adoptRef(*new SerializedScriptValue(WTFMove(buffer), WTFMove(blobHandles), arrayBufferContentsArray.releaseReturnValue(), context == SerializationContext::WorkerPostMessage ? WTFMove(sharedBuffers) : nullptr, WTFMove(backingStores) + // return adoptRef(*new SerializedScriptValue(WTF::move(buffer), WTF::move(blobHandles), arrayBufferContentsArray.releaseReturnValue(), context == SerializationContext::WorkerPostMessage ? WTF::move(sharedBuffers) : nullptr, WTF::move(backingStores) // #if ENABLE(OFFSCREEN_CANVAS_IN_WORKERS) // , - // WTFMove(detachedCanvases) + // WTF::move(detachedCanvases) // #endif // #if ENABLE(WEB_RTC) // , - // WTFMove(detachedRTCDataChannels) + // WTF::move(detachedRTCDataChannels) // #endif // #if ENABLE(WEBASSEMBLY) // , @@ -6100,18 +6100,18 @@ ExceptionOr> SerializedScriptValue::create(JSGlobalOb // #endif // #if ENABLE(WEB_CODECS) // , - // WTFMove(serializedVideoChunks), WTFMove(serializedVideoFrameData) + // WTF::move(serializedVideoChunks), WTF::move(serializedVideoFrameData) // #endif // )); scope.releaseAssertNoException(); - return adoptRef(*new SerializedScriptValue(WTFMove(buffer), arrayBufferContentsArray.releaseReturnValue(), context == SerializationContext::WorkerPostMessage ? WTFMove(sharedBuffers) : nullptr + return adoptRef(*new SerializedScriptValue(WTF::move(buffer), arrayBufferContentsArray.releaseReturnValue(), context == SerializationContext::WorkerPostMessage ? WTF::move(sharedBuffers) : nullptr #if ENABLE(OFFSCREEN_CANVAS_IN_WORKERS) , - WTFMove(detachedCanvases) + WTF::move(detachedCanvases) #endif #if ENABLE(WEB_RTC) , - WTFMove(detachedRTCDataChannels) + WTF::move(detachedRTCDataChannels) #endif #if ENABLE(WEBASSEMBLY) , @@ -6119,7 +6119,7 @@ ExceptionOr> SerializedScriptValue::create(JSGlobalOb #endif #if ENABLE(WEB_CODECS) , - WTFMove(serializedVideoChunks), WTFMove(serializedVideoFrameData) + WTF::move(serializedVideoChunks), WTF::move(serializedVideoFrameData) #endif )); } @@ -6129,7 +6129,7 @@ RefPtr SerializedScriptValue::create(StringView string) Vector buffer; if (!CloneSerializer::serialize(string, buffer)) return nullptr; - return adoptRef(*new SerializedScriptValue(WTFMove(buffer))); + return adoptRef(*new SerializedScriptValue(WTF::move(buffer))); } Ref SerializedScriptValue::createStringFastPath(const String& string) @@ -6139,7 +6139,7 @@ Ref SerializedScriptValue::createStringFastPath(const Str Ref SerializedScriptValue::createObjectFastPath(WTF::FixedVector&& object) { - return adoptRef(*new SerializedScriptValue(WTFMove(object))); + return adoptRef(*new SerializedScriptValue(WTF::move(object))); } RefPtr SerializedScriptValue::create(JSContextRef originContext, JSValueRef apiValue, JSValueRef* exception) @@ -6217,7 +6217,7 @@ JSC::JSValue SerializedScriptValue::fromArrayBuffer(JSC::JSGlobalObject& domGlob #endif #if ENABLE(WEB_CODECS) , - WTFMove(m_serializedVideoChunks), WTFMove(m_serializedVideoFrames) + WTF::move(m_serializedVideoChunks), WTF::move(m_serializedVideoFrames) #endif ); @@ -6296,11 +6296,11 @@ JSValue SerializedScriptValue::deserialize(JSGlobalObject& lexicalGlobalObject, DeserializationResult result = CloneDeserializer::deserialize(&lexicalGlobalObject, globalObject, messagePorts #if ENABLE(OFFSCREEN_CANVAS_IN_WORKERS) , - WTFMove(m_detachedOffscreenCanvases) + WTF::move(m_detachedOffscreenCanvases) #endif #if ENABLE(WEB_RTC) , - WTFMove(m_detachedRTCDataChannels) + WTF::move(m_detachedRTCDataChannels) #endif , m_arrayBufferContentsArray.get(), m_data, blobURLs, blobFilePaths, m_sharedBufferContentsArray.get() @@ -6310,7 +6310,7 @@ JSValue SerializedScriptValue::deserialize(JSGlobalObject& lexicalGlobalObject, #endif #if ENABLE(WEB_CODECS) , - WTFMove(m_serializedVideoChunks), WTFMove(m_serializedVideoFrames) + WTF::move(m_serializedVideoChunks), WTF::move(m_serializedVideoFrames) #endif ); if (didFail) @@ -6327,14 +6327,14 @@ JSValue SerializedScriptValue::deserialize(JSGlobalObject& lexicalGlobalObject, } // JSValue SerializedScriptValue::deserialize(JSGlobalObject& lexicalGlobalObject, JSGlobalObject* globalObject, const Vector& blobURLs, const Vector& blobFilePaths, SerializationErrorMode throwExceptions, bool* didFail) // { -// // DeserializationResult result = CloneDeserializer::deserialize(&lexicalGlobalObject, globalObject, messagePorts, WTFMove(m_backingStores) +// // DeserializationResult result = CloneDeserializer::deserialize(&lexicalGlobalObject, globalObject, messagePorts, WTF::move(m_backingStores) // // #if ENABLE(OFFSCREEN_CANVAS_IN_WORKERS) // // , -// // WTFMove(m_detachedOffscreenCanvases) +// // WTF::move(m_detachedOffscreenCanvases) // // #endif // // #if ENABLE(WEB_RTC) // // , -// // WTFMove(m_detachedRTCDataChannels) +// // WTF::move(m_detachedRTCDataChannels) // // #endif // // , // // m_arrayBufferContentsArray.get(), m_data, blobURLs, blobFilePaths, m_sharedBufferContentsArray.get() @@ -6344,17 +6344,17 @@ JSValue SerializedScriptValue::deserialize(JSGlobalObject& lexicalGlobalObject, // // #endif // // #if ENABLE(WEB_CODECS) // // , -// // WTFMove(m_serializedVideoChunks), WTFMove(m_serializedVideoFrames) +// // WTF::move(m_serializedVideoChunks), WTF::move(m_serializedVideoFrames) // // #endif // // ); // DeserializationResult result = CloneDeserializer::deserialize(&lexicalGlobalObject, globalObject // #if ENABLE(OFFSCREEN_CANVAS_IN_WORKERS) // , -// WTFMove(m_detachedOffscreenCanvases) +// WTF::move(m_detachedOffscreenCanvases) // #endif // #if ENABLE(WEB_RTC) // , -// WTFMove(m_detachedRTCDataChannels) +// WTF::move(m_detachedRTCDataChannels) // #endif // , // m_arrayBufferContentsArray.get(), m_data, blobURLs, blobFilePaths, m_sharedBufferContentsArray.get() @@ -6364,7 +6364,7 @@ JSValue SerializedScriptValue::deserialize(JSGlobalObject& lexicalGlobalObject, // #endif // #if ENABLE(WEB_CODECS) // , -// WTFMove(m_serializedVideoChunks), WTFMove(m_serializedVideoFrames) +// WTF::move(m_serializedVideoChunks), WTF::move(m_serializedVideoFrames) // #endif // ); // if (didFail) @@ -6415,7 +6415,7 @@ uint32_t SerializedScriptValue::wireFormatVersion() // ASSERT(isMainThread()); // ASSERT(hasBlobURLs()); -// blobRegistry().writeBlobsToTemporaryFilesForIndexedDB(blobURLs(), [completionHandler = WTFMove(completionHandler), this, protectedThis = Ref { *this }](auto&& blobFilePaths) mutable { +// blobRegistry().writeBlobsToTemporaryFilesForIndexedDB(blobURLs(), [completionHandler = WTF::move(completionHandler), this, protectedThis = Ref { *this }](auto&& blobFilePaths) mutable { // ASSERT(isMainThread()); // if (blobFilePaths.isEmpty()) { diff --git a/src/bun.js/bindings/webcore/SerializedScriptValue.h b/src/bun.js/bindings/webcore/SerializedScriptValue.h index ba434e9c12..9956f06b42 100644 --- a/src/bun.js/bindings/webcore/SerializedScriptValue.h +++ b/src/bun.js/bindings/webcore/SerializedScriptValue.h @@ -156,7 +156,7 @@ public: // IDBValue writeBlobsToDiskForIndexedDBSynchronously(); static Ref createFromWireBytes(Vector&& data) { - return adoptRef(*new SerializedScriptValue(WTFMove(data))); + return adoptRef(*new SerializedScriptValue(WTF::move(data))); } const Vector& wireBytes() const { return m_data; } @@ -322,7 +322,7 @@ RefPtr SerializedScriptValue::decode(Decoder& decoder) static_assert(sizeof(std::span::element_type) == 1); memcpy(buffer, data.data(), data.size_bytes()); JSC::ArrayBufferDestructorFunction destructor = ArrayBuffer::primitiveGigacageDestructor(); - arrayBufferContentsArray->append({ buffer, data.size_bytes(), std::nullopt, WTFMove(destructor) }); + arrayBufferContentsArray->append({ buffer, data.size_bytes(), std::nullopt, WTF::move(destructor) }); } } @@ -337,7 +337,7 @@ RefPtr SerializedScriptValue::decode(Decoder& decoder) decoder >> detachedRTCDataChannel; if (!detachedRTCDataChannel) return nullptr; - detachedRTCDataChannels.append(makeUnique(WTFMove(*detachedRTCDataChannel))); + detachedRTCDataChannels.append(makeUnique(WTF::move(*detachedRTCDataChannel))); } #endif #if ENABLE(WEB_CODECS) @@ -351,24 +351,24 @@ RefPtr SerializedScriptValue::decode(Decoder& decoder) decoder >> videoChunkData; if (!videoChunkData) return nullptr; - serializedVideoChunks.append(WebCodecsEncodedVideoChunkStorage::create(WTFMove(*videoChunkData))); + serializedVideoChunks.append(WebCodecsEncodedVideoChunkStorage::create(WTF::move(*videoChunkData))); } // FIXME: decode video frames Vector serializedVideoFrames; #endif - return adoptRef(*new SerializedScriptValue(WTFMove(data), WTFMove(arrayBufferContentsArray) + return adoptRef(*new SerializedScriptValue(WTF::move(data), WTF::move(arrayBufferContentsArray) #if ENABLE(WEB_RTC) - , - WTFMove(detachedRTCDataChannels) + , + WTF::move(detachedRTCDataChannels) #endif #if ENABLE(WEB_CODECS) , - WTFMove(serializedVideoChunks) + WTF::move(serializedVideoChunks) #endif #if ENABLE(WEB_CODECS) , - WTFMove(serializedVideoFrames) + WTF::move(serializedVideoFrames) #endif )); } diff --git a/src/bun.js/bindings/webcore/ServerTiming.cpp b/src/bun.js/bindings/webcore/ServerTiming.cpp index eac63d8f2d..05662c6934 100644 --- a/src/bun.js/bindings/webcore/ServerTiming.cpp +++ b/src/bun.js/bindings/webcore/ServerTiming.cpp @@ -53,7 +53,7 @@ ServerTiming ServerTiming::isolatedCopy() const& ServerTiming ServerTiming::isolatedCopy() && { - return ServerTiming { WTFMove(name).isolatedCopy(), duration, WTFMove(description).isolatedCopy(), durationSet, descriptionSet }; + return ServerTiming { WTF::move(name).isolatedCopy(), duration, WTF::move(description).isolatedCopy(), durationSet, descriptionSet }; } } // namespace WebCore diff --git a/src/bun.js/bindings/webcore/ServerTiming.h b/src/bun.js/bindings/webcore/ServerTiming.h index dc24c76ca5..292a16202c 100644 --- a/src/bun.js/bindings/webcore/ServerTiming.h +++ b/src/bun.js/bindings/webcore/ServerTiming.h @@ -47,21 +47,21 @@ struct ServerTiming { }; inline ServerTiming::ServerTiming(String&& name) - : name(WTFMove(name)) + : name(WTF::move(name)) { } inline ServerTiming::ServerTiming(String&& name, double duration, String&& description) - : name(WTFMove(name)) + : name(WTF::move(name)) , duration(duration) - , description(WTFMove(description)) + , description(WTF::move(description)) { } inline ServerTiming::ServerTiming(String&& name, double duration, String&& description, bool durationSet, bool descriptionSet) - : name(WTFMove(name)) + : name(WTF::move(name)) , duration(duration) - , description(WTFMove(description)) + , description(WTF::move(description)) , durationSet(durationSet) , descriptionSet(descriptionSet) { diff --git a/src/bun.js/bindings/webcore/ServerTimingParser.cpp b/src/bun.js/bindings/webcore/ServerTimingParser.cpp index 73a0b04b5e..1b2f79bf6b 100644 --- a/src/bun.js/bindings/webcore/ServerTimingParser.cpp +++ b/src/bun.js/bindings/webcore/ServerTimingParser.cpp @@ -49,7 +49,7 @@ Vector parseServerTiming(const String& headerValue) if (name.isNull()) break; - ServerTiming entry(WTFMove(name)); + ServerTiming entry(WTF::move(name)); while (tokenizer.consume(';')) { String parameterName = tokenizer.consumeToken(); @@ -64,7 +64,7 @@ Vector parseServerTiming(const String& headerValue) entry.setParameter(parameterName, value); } - entries.append(WTFMove(entry)); + entries.append(WTF::move(entry)); if (!tokenizer.consume(',')) break; diff --git a/src/bun.js/bindings/webcore/StructuredClone.cpp b/src/bun.js/bindings/webcore/StructuredClone.cpp index 5c85999cc1..ea62c2044f 100644 --- a/src/bun.js/bindings/webcore/StructuredClone.cpp +++ b/src/bun.js/bindings/webcore/StructuredClone.cpp @@ -98,10 +98,10 @@ JSC_DEFINE_HOST_FUNCTION(structuredCloneForStream, (JSGlobalObject * globalObjec auto bufferClone = buffer->slice(0); Structure* structure = bufferView->structure(); -#define CLONE_TYPED_ARRAY(name) \ - do { \ - if (bufferView->inherits()) \ - RELEASE_AND_RETURN(scope, JSValue::encode(JS##name##Array::create(globalObject, structure, WTFMove(bufferClone), bufferView->byteOffset(), bufferView->length()))); \ +#define CLONE_TYPED_ARRAY(name) \ + do { \ + if (bufferView->inherits()) \ + RELEASE_AND_RETURN(scope, JSValue::encode(JS##name##Array::create(globalObject, structure, WTF::move(bufferClone), bufferView->byteOffset(), bufferView->length()))); \ } while (0); FOR_EACH_TYPED_ARRAY_TYPE_EXCLUDING_DATA_VIEW(CLONE_TYPED_ARRAY) @@ -109,7 +109,7 @@ JSC_DEFINE_HOST_FUNCTION(structuredCloneForStream, (JSGlobalObject * globalObjec #undef CLONE_TYPED_ARRAY if (value.inherits()) - RELEASE_AND_RETURN(scope, JSValue::encode(JSDataView::create(globalObject, structure, WTFMove(bufferClone), bufferView->byteOffset(), bufferView->length()))); + RELEASE_AND_RETURN(scope, JSValue::encode(JSDataView::create(globalObject, structure, WTF::move(bufferClone), bufferView->byteOffset(), bufferView->length()))); } throwTypeError(globalObject, scope, "structuredClone not implemented for non-ArrayBuffer / non-ArrayBufferView"_s); @@ -151,7 +151,7 @@ JSC_DEFINE_HOST_FUNCTION(jsFunctionStructuredClone, (JSC::JSGlobalObject * globa } Vector> ports; - ExceptionOr> serialized = SerializedScriptValue::create(*globalObject, value, WTFMove(transferList), ports); + ExceptionOr> serialized = SerializedScriptValue::create(*globalObject, value, WTF::move(transferList), ports); if (serialized.hasException()) { WebCore::propagateException(*globalObject, throwScope, serialized.releaseException()); RELEASE_AND_RETURN(throwScope, {}); @@ -214,7 +214,7 @@ JSC_DEFINE_HOST_FUNCTION(jsFunctionStructuredCloneAdvanced, (JSC::JSGlobalObject } Vector> ports; - ExceptionOr> serialized = SerializedScriptValue::create(*globalObject, value, WTFMove(transferList), ports, forStorage, serializationContext, forTransfer); + ExceptionOr> serialized = SerializedScriptValue::create(*globalObject, value, WTF::move(transferList), ports, forStorage, serializationContext, forTransfer); if (serialized.hasException()) { WebCore::propagateException(*globalObject, throwScope, serialized.releaseException()); RELEASE_AND_RETURN(throwScope, {}); diff --git a/src/bun.js/bindings/webcore/StructuredSerializeOptions.h b/src/bun.js/bindings/webcore/StructuredSerializeOptions.h index c1470f94a2..b1ee67aa62 100644 --- a/src/bun.js/bindings/webcore/StructuredSerializeOptions.h +++ b/src/bun.js/bindings/webcore/StructuredSerializeOptions.h @@ -34,7 +34,7 @@ namespace WebCore { struct StructuredSerializeOptions { StructuredSerializeOptions() = default; StructuredSerializeOptions(Vector>&& transfer) - : transfer(WTFMove(transfer)) + : transfer(WTF::move(transfer)) { } diff --git a/src/bun.js/bindings/webcore/URLPattern.cpp b/src/bun.js/bindings/webcore/URLPattern.cpp index 705ca93cd0..17884dfe8a 100644 --- a/src/bun.js/bindings/webcore/URLPattern.cpp +++ b/src/bun.js/bindings/webcore/URLPattern.cpp @@ -36,7 +36,6 @@ #include "URLPatternResult.h" #include #include -#include #include #include #include @@ -45,8 +44,6 @@ namespace WebCore { using namespace JSC; -WTF_MAKE_TZONE_OR_ISO_ALLOCATED_IMPL(URLPattern); - // https://urlpattern.spec.whatwg.org/#process-a-base-url-string static String processBaseURLString(StringView input, BaseURLStringType type) { @@ -75,7 +72,7 @@ URLPattern::URLPattern() = default; // https://urlpattern.spec.whatwg.org/#process-a-urlpatterninit static ExceptionOr processInit(URLPatternInit&& init, BaseURLStringType type, String&& protocol = {}, String&& username = {}, String&& password = {}, String&& hostname = {}, String&& port = {}, String&& pathname = {}, String&& search = {}, String&& hash = {}) { - URLPatternInit result { WTFMove(protocol), WTFMove(username), WTFMove(password), WTFMove(hostname), WTFMove(port), WTFMove(pathname), WTFMove(search), WTFMove(hash), {} }; + URLPatternInit result { WTF::move(protocol), WTF::move(username), WTF::move(password), WTF::move(hostname), WTF::move(port), WTF::move(pathname), WTF::move(search), WTF::move(hash), {} }; URL baseURL; @@ -218,21 +215,21 @@ ExceptionOr> URLPattern::create(ScriptExecutionContext& context, URLPatternInit init; if (std::holds_alternative(input) && !std::get(input).isNull()) { - auto maybeInit = URLPatternConstructorStringParser(WTFMove(std::get(input))).parse(context); + auto maybeInit = URLPatternConstructorStringParser(WTF::move(std::get(input))).parse(context); if (maybeInit.hasException()) return maybeInit.releaseException(); init = maybeInit.releaseReturnValue(); if (baseURL.isNull() && init.protocol.isEmpty()) return Exception { ExceptionCode::TypeError, "Relative constructor string must have additional baseURL argument."_s }; - init.baseURL = WTFMove(baseURL); + init.baseURL = WTF::move(baseURL); } else if (std::holds_alternative(input)) { if (!baseURL.isNull()) return Exception { ExceptionCode::TypeError, "Constructor with a URLPatternInit should have a null baseURL argument."_s }; init = std::get(input); } - auto maybeProcessedInit = processInit(WTFMove(init), BaseURLStringType::Pattern); + auto maybeProcessedInit = processInit(WTF::move(init), BaseURLStringType::Pattern); if (maybeProcessedInit.hasException()) return maybeProcessedInit.releaseException(); @@ -262,7 +259,7 @@ ExceptionOr> URLPattern::create(ScriptExecutionContext& context, Ref result = adoptRef(*new URLPattern); - auto maybeCompileException = result->compileAllComponents(context, WTFMove(processedInit), options); + auto maybeCompileException = result->compileAllComponents(context, WTF::move(processedInit), options); if (maybeCompileException.hasException()) return maybeCompileException.releaseException(); @@ -275,13 +272,13 @@ ExceptionOr> URLPattern::create(ScriptExecutionContext& context, if (!input) input = URLPatternInit {}; - return create(context, WTFMove(*input), String {}, WTFMove(options)); + return create(context, WTF::move(*input), String {}, WTF::move(options)); } // https://urlpattern.spec.whatwg.org/#build-a-url-pattern-from-a-web-idl-value ExceptionOr> URLPattern::create(ScriptExecutionContext& context, Compatible&& value, const String& baseURL) { - return switchOn(WTFMove(value), [&](RefPtr&& pattern) -> ExceptionOr> { return pattern.releaseNonNull(); }, [&](URLPatternInit&& init) -> ExceptionOr> { return URLPattern::create(context, WTFMove(init), {}, {}); }, [&](String&& string) -> ExceptionOr> { return URLPattern::create(context, WTFMove(string), String { baseURL }, {}); }); + return switchOn(WTF::move(value), [&](RefPtr&& pattern) -> ExceptionOr> { return pattern.releaseNonNull(); }, [&](URLPatternInit&& init) -> ExceptionOr> { return URLPattern::create(context, WTF::move(init), {}, {}); }, [&](String&& string) -> ExceptionOr> { return URLPattern::create(context, WTF::move(string), String { baseURL }, {}); }); } URLPattern::~URLPattern() = default; @@ -292,7 +289,7 @@ ExceptionOr URLPattern::test(ScriptExecutionContext& context, std::optiona if (!input) input = URLPatternInit {}; - auto maybeResult = match(context, WTFMove(*input), WTFMove(baseURL)); + auto maybeResult = match(context, WTF::move(*input), WTF::move(baseURL)); if (maybeResult.hasException()) return maybeResult.releaseException(); @@ -305,7 +302,7 @@ ExceptionOr> URLPattern::exec(ScriptExecutionCon if (!input) input = URLPatternInit {}; - return match(context, WTFMove(*input), WTFMove(baseURL)); + return match(context, WTF::move(*input), WTF::move(baseURL)); } ExceptionOr URLPattern::compileAllComponents(ScriptExecutionContext& context, URLPatternInit&& processedInit, const URLPatternOptions& options) @@ -404,7 +401,7 @@ ExceptionOr> URLPattern::match(ScriptExecutionCo return Exception { ExceptionCode::TypeError, "Base URL string is provided with a URLPatternInit. If URLPatternInit is provided, please use URLPatternInit.baseURL property instead"_s }; URLPatternInit initCopy = value; - auto maybeResult = processInit(WTFMove(initCopy), BaseURLStringType::URL); + auto maybeResult = processInit(WTF::move(initCopy), BaseURLStringType::URL); if (maybeResult.hasException()) return true; @@ -437,42 +434,42 @@ ExceptionOr> URLPattern::match(ScriptExecutionCo auto* globalObject = context.globalObject(); if (!globalObject) return { std::nullopt }; - result.protocol = m_protocolComponent.createComponentMatchResult(globalObject, WTFMove(protocol), protocolExecResult); + result.protocol = m_protocolComponent.createComponentMatchResult(globalObject, WTF::move(protocol), protocolExecResult); auto usernameExecResult = m_usernameComponent.componentExec(context, username); if (usernameExecResult.isNull() || usernameExecResult.isUndefined()) return { std::nullopt }; - result.username = m_usernameComponent.createComponentMatchResult(globalObject, WTFMove(username), usernameExecResult); + result.username = m_usernameComponent.createComponentMatchResult(globalObject, WTF::move(username), usernameExecResult); auto passwordExecResult = m_passwordComponent.componentExec(context, password); if (passwordExecResult.isNull() || passwordExecResult.isUndefined()) return { std::nullopt }; - result.password = m_passwordComponent.createComponentMatchResult(globalObject, WTFMove(password), passwordExecResult); + result.password = m_passwordComponent.createComponentMatchResult(globalObject, WTF::move(password), passwordExecResult); auto hostnameExecResult = m_hostnameComponent.componentExec(context, hostname); if (hostnameExecResult.isNull() || hostnameExecResult.isUndefined()) return { std::nullopt }; - result.hostname = m_hostnameComponent.createComponentMatchResult(globalObject, WTFMove(hostname), hostnameExecResult); + result.hostname = m_hostnameComponent.createComponentMatchResult(globalObject, WTF::move(hostname), hostnameExecResult); auto pathnameExecResult = m_pathnameComponent.componentExec(context, pathname); if (pathnameExecResult.isNull() || pathnameExecResult.isUndefined()) return { std::nullopt }; - result.pathname = m_pathnameComponent.createComponentMatchResult(globalObject, WTFMove(pathname), pathnameExecResult); + result.pathname = m_pathnameComponent.createComponentMatchResult(globalObject, WTF::move(pathname), pathnameExecResult); auto portExecResult = m_portComponent.componentExec(context, port); if (portExecResult.isNull() || portExecResult.isUndefined()) return { std::nullopt }; - result.port = m_portComponent.createComponentMatchResult(globalObject, WTFMove(port), portExecResult); + result.port = m_portComponent.createComponentMatchResult(globalObject, WTF::move(port), portExecResult); auto searchExecResult = m_searchComponent.componentExec(context, search); if (searchExecResult.isNull() || searchExecResult.isUndefined()) return { std::nullopt }; - result.search = m_searchComponent.createComponentMatchResult(globalObject, WTFMove(search), searchExecResult); + result.search = m_searchComponent.createComponentMatchResult(globalObject, WTF::move(search), searchExecResult); auto hashExecResult = m_hashComponent.componentExec(context, hash); if (hashExecResult.isNull() || hashExecResult.isUndefined()) return { std::nullopt }; - result.hash = m_hashComponent.createComponentMatchResult(globalObject, WTFMove(hash), hashExecResult); + result.hash = m_hashComponent.createComponentMatchResult(globalObject, WTF::move(hash), hashExecResult); return { result }; } diff --git a/src/bun.js/bindings/webcore/URLPattern.h b/src/bun.js/bindings/webcore/URLPattern.h index 838eb24596..85d5111a74 100644 --- a/src/bun.js/bindings/webcore/URLPattern.h +++ b/src/bun.js/bindings/webcore/URLPattern.h @@ -49,7 +49,7 @@ class URLPatternComponent; } class URLPattern final : public RefCounted { - WTF_MAKE_TZONE_OR_ISO_ALLOCATED(URLPattern); + WTF_MAKE_TZONE_ALLOCATED(URLPattern); public: using URLPatternInput = Variant; diff --git a/src/bun.js/bindings/webcore/URLPatternComponent.cpp b/src/bun.js/bindings/webcore/URLPatternComponent.cpp index cb2c139aa6..0d7d8458fa 100644 --- a/src/bun.js/bindings/webcore/URLPatternComponent.cpp +++ b/src/bun.js/bindings/webcore/URLPatternComponent.cpp @@ -41,9 +41,9 @@ using namespace JSC; namespace URLPatternUtilities { URLPatternComponent::URLPatternComponent(String&& patternString, JSC::Strong&& regex, Vector&& groupNameList, bool hasRegexpGroupsFromPartsList) - : m_patternString(WTFMove(patternString)) - , m_regularExpression(WTFMove(regex)) - , m_groupNameList(WTFMove(groupNameList)) + : m_patternString(WTF::move(patternString)) + , m_regularExpression(WTF::move(regex)) + , m_groupNameList(WTF::move(groupNameList)) , m_hasRegexGroupsFromPartList(hasRegexpGroupsFromPartsList) { } @@ -72,7 +72,7 @@ ExceptionOr URLPatternComponent::compile(Ref vm, S return part.type == PartType::Regexp; }); - return URLPatternComponent { WTFMove(patternString), JSC::Strong { vm, regularExpression }, WTFMove(nameList), hasRegexGroups }; + return URLPatternComponent { WTF::move(patternString), JSC::Strong { vm, regularExpression }, WTF::move(nameList), hasRegexGroups }; } // https://urlpattern.spec.whatwg.org/#protocol-component-matches-a-special-scheme @@ -136,10 +136,10 @@ URLPatternComponentResult URLPatternComponent::createComponentMatchResult(JSC::J size_t groupIndex = index - 1; String groupName = groupIndex < m_groupNameList.size() ? m_groupNameList[groupIndex] : emptyString(); - groups.append(URLPatternComponentResult::NameMatchPair { WTFMove(groupName), WTFMove(value) }); + groups.append(URLPatternComponentResult::NameMatchPair { WTF::move(groupName), WTF::move(value) }); } - return URLPatternComponentResult { !input.isEmpty() ? WTFMove(input) : emptyString(), WTFMove(groups) }; + return URLPatternComponentResult { !input.isEmpty() ? WTF::move(input) : emptyString(), WTF::move(groups) }; } } diff --git a/src/bun.js/bindings/webcore/URLPatternConstructorStringParser.cpp b/src/bun.js/bindings/webcore/URLPatternConstructorStringParser.cpp index 80d405e820..914b72a450 100644 --- a/src/bun.js/bindings/webcore/URLPatternConstructorStringParser.cpp +++ b/src/bun.js/bindings/webcore/URLPatternConstructorStringParser.cpp @@ -37,7 +37,7 @@ namespace WebCore { using namespace JSC; URLPatternConstructorStringParser::URLPatternConstructorStringParser(String&& input) - : m_input(WTFMove(input)) + : m_input(WTF::move(input)) { } @@ -116,28 +116,28 @@ static inline void setInitComponentFromState(URLPatternInit& init, URLPatternCon { switch (state) { case URLPatternConstructorStringParserState::Protocol: - init.protocol = WTFMove(componentString); + init.protocol = WTF::move(componentString); break; case URLPatternConstructorStringParserState::Username: - init.username = WTFMove(componentString); + init.username = WTF::move(componentString); break; case URLPatternConstructorStringParserState::Password: - init.password = WTFMove(componentString); + init.password = WTF::move(componentString); break; case URLPatternConstructorStringParserState::Hostname: - init.hostname = WTFMove(componentString); + init.hostname = WTF::move(componentString); break; case URLPatternConstructorStringParserState::Port: - init.port = WTFMove(componentString); + init.port = WTF::move(componentString); break; case URLPatternConstructorStringParserState::Pathname: - init.pathname = WTFMove(componentString); + init.pathname = WTF::move(componentString); break; case URLPatternConstructorStringParserState::Search: - init.search = WTFMove(componentString); + init.search = WTF::move(componentString); break; case URLPatternConstructorStringParserState::Hash: - init.hash = WTFMove(componentString); + init.hash = WTF::move(componentString); break; default: break; diff --git a/src/bun.js/bindings/webcore/URLPatternParser.cpp b/src/bun.js/bindings/webcore/URLPatternParser.cpp index 9224932aae..2193dc0396 100644 --- a/src/bun.js/bindings/webcore/URLPatternParser.cpp +++ b/src/bun.js/bindings/webcore/URLPatternParser.cpp @@ -37,7 +37,7 @@ namespace URLPatternUtilities { URLPatternParser::URLPatternParser(EncodingCallbackType type, String&& segmentWildcardRegexp) : m_callbackType(type) - , m_segmentWildcardRegexp(WTFMove(segmentWildcardRegexp)) + , m_segmentWildcardRegexp(WTF::move(segmentWildcardRegexp)) { } @@ -65,7 +65,7 @@ ExceptionOr URLPatternParser::performParse(const URLPatternStringOptions& auto modifierToken = tryToConsumeModifierToken(); - maybeFunctionException = addPart(WTFMove(prefix), nameToken, regexOrWildcardToken, {}, modifierToken); + maybeFunctionException = addPart(WTF::move(prefix), nameToken, regexOrWildcardToken, {}, modifierToken); if (maybeFunctionException.hasException()) return maybeFunctionException.releaseException(); @@ -78,7 +78,7 @@ ExceptionOr URLPatternParser::performParse(const URLPatternStringOptions& fixedToken = tryToConsumeToken(TokenType::EscapedChar); if (!fixedToken.isNull()) { - m_pendingFixedValue.append(WTFMove(fixedToken.value)); + m_pendingFixedValue.append(WTF::move(fixedToken.value)); continue; } @@ -94,7 +94,7 @@ ExceptionOr URLPatternParser::performParse(const URLPatternStringOptions& return maybeCloseError.releaseException(); auto modifierToken = tryToConsumeModifierToken(); - maybeFunctionException = addPart(WTFMove(prefix), nameToken, regexOrWildcardToken, WTFMove(suffix), modifierToken); + maybeFunctionException = addPart(WTF::move(prefix), nameToken, regexOrWildcardToken, WTF::move(suffix), modifierToken); if (maybeFunctionException.hasException()) return maybeFunctionException.releaseException(); @@ -213,7 +213,7 @@ ExceptionOr URLPatternParser::addPart(String&& prefix, const Token& nameTo } if (nameToken.isNull() && regexpOrWildcardToken.isNull() && modifier == Modifier::None) { - m_pendingFixedValue.append(WTFMove(prefix)); + m_pendingFixedValue.append(WTF::move(prefix)); return {}; } @@ -228,7 +228,7 @@ ExceptionOr URLPatternParser::addPart(String&& prefix, const Token& nameTo if (prefix.isEmpty()) return {}; - auto encodedValue = callEncodingCallback(m_callbackType, WTFMove(prefix)); + auto encodedValue = callEncodingCallback(m_callbackType, WTF::move(prefix)); if (encodedValue.hasException()) return encodedValue.releaseException(); @@ -268,15 +268,15 @@ ExceptionOr URLPatternParser::addPart(String&& prefix, const Token& nameTo if (isDuplicateName(name)) return Exception { ExceptionCode::TypeError, "Duplicate name token produced when adding to parser part list."_s }; - auto encodedPrefix = callEncodingCallback(m_callbackType, WTFMove(prefix)); + auto encodedPrefix = callEncodingCallback(m_callbackType, WTF::move(prefix)); if (encodedPrefix.hasException()) return encodedPrefix.releaseException(); - auto encodedSuffix = callEncodingCallback(m_callbackType, WTFMove(suffix)); + auto encodedSuffix = callEncodingCallback(m_callbackType, WTF::move(suffix)); if (encodedSuffix.hasException()) return encodedSuffix.releaseException(); - m_partList.append(Part { type, WTFMove(regexValue), modifier, WTFMove(name), encodedPrefix.releaseReturnValue(), encodedSuffix.releaseReturnValue() }); + m_partList.append(Part { type, WTF::move(regexValue), modifier, WTF::move(name), encodedPrefix.releaseReturnValue(), encodedSuffix.releaseReturnValue() }); return {}; } @@ -424,7 +424,7 @@ std::pair> generateRegexAndNameList(const Vector& p result.append('$'); - return { result.toString(), WTFMove(nameList) }; + return { result.toString(), WTF::move(nameList) }; } // https://urlpattern.spec.whatwg.org/#generate-a-pattern-string diff --git a/src/bun.js/bindings/webcore/URLPatternParser.h b/src/bun.js/bindings/webcore/URLPatternParser.h index 3d942e454c..1f95d0b2e6 100644 --- a/src/bun.js/bindings/webcore/URLPatternParser.h +++ b/src/bun.js/bindings/webcore/URLPatternParser.h @@ -70,7 +70,7 @@ public: URLPatternParser(EncodingCallbackType, String&& segmentWildcardRegexp); ExceptionOr performParse(const URLPatternStringOptions&); - void setTokenList(Vector&& tokenList) { m_tokenList = WTFMove(tokenList); } + void setTokenList(Vector&& tokenList) { m_tokenList = WTF::move(tokenList); } static ExceptionOr> parse(StringView, const URLPatternStringOptions&, EncodingCallbackType); private: diff --git a/src/bun.js/bindings/webcore/URLPatternTokenizer.cpp b/src/bun.js/bindings/webcore/URLPatternTokenizer.cpp index d505f740d0..4c8d87700c 100644 --- a/src/bun.js/bindings/webcore/URLPatternTokenizer.cpp +++ b/src/bun.js/bindings/webcore/URLPatternTokenizer.cpp @@ -266,7 +266,7 @@ ExceptionOr> Tokenizer::tokenize() } addToken(TokenType::End, m_index, m_index); - return WTFMove(m_tokenList); + return WTF::move(m_tokenList); } } // namespace URLPatternUtilities diff --git a/src/bun.js/bindings/webcore/WebSocket.cpp b/src/bun.js/bindings/webcore/WebSocket.cpp index 6ce10f2119..5a85a027b8 100644 --- a/src/bun.js/bindings/webcore/WebSocket.cpp +++ b/src/bun.js/bindings/webcore/WebSocket.cpp @@ -238,7 +238,7 @@ ExceptionOr> WebSocket::create(ScriptExecutionContext& context, c auto socket = adoptRef(*new WebSocket(context)); // socket->suspendIfNeeded(); - auto result = socket->connect(url, protocols, WTFMove(headers)); + auto result = socket->connect(url, protocols, WTF::move(headers)); // auto result = socket->connect(url, protocols); if (result.hasException()) @@ -255,7 +255,7 @@ ExceptionOr> WebSocket::create(ScriptExecutionContext& context, c socket->setRejectUnauthorized(rejectUnauthorized); // socket->suspendIfNeeded(); - auto result = socket->connect(url, protocols, WTFMove(headers)); + auto result = socket->connect(url, protocols, WTF::move(headers)); // auto result = socket->connect(url, protocols); if (result.hasException()) @@ -437,7 +437,7 @@ ExceptionOr WebSocket::connect(const String& url, const Vector& pr Vector headerNames; Vector headerValues; - auto headersOrException = FetchHeaders::create(WTFMove(headersInit)); + auto headersOrException = FetchHeaders::create(WTF::move(headersInit)); if (headersOrException.hasException()) [[unlikely]] { m_state = CLOSED; updateHasPendingActivity(); @@ -479,8 +479,8 @@ ExceptionOr WebSocket::connect(const String& url, const Vector& pr auto eventInit = createErrorEventInit(protectedThis, "Failed to connect"_s, globalObject); auto message = eventInit.message; - protectedThis->dispatchEvent(ErrorEvent::create(eventNames().errorEvent, WTFMove(eventInit), EventIsTrusted::Yes)); - protectedThis->dispatchEvent(CloseEvent::create(false, 1006, WTFMove(message))); + protectedThis->dispatchEvent(ErrorEvent::create(eventNames().errorEvent, WTF::move(eventInit), EventIsTrusted::Yes)); + protectedThis->dispatchEvent(CloseEvent::create(false, 1006, WTF::move(message))); protectedThis->decPendingActivityCount(); }); @@ -493,12 +493,12 @@ ExceptionOr WebSocket::connect(const String& url, const Vector& pr // #if ENABLE(INTELLIGENT_TRACKING_PREVENTION) // auto reportRegistrableDomain = [domain = RegistrableDomain(m_url).isolatedCopy()](auto& context) mutable { // if (auto* frame = downcast(context).frame()) - // frame->loader().client().didLoadFromRegistrableDomain(WTFMove(domain)); + // frame->loader().client().didLoadFromRegistrableDomain(WTF::move(domain)); // }; // if (is(context)) // reportRegistrableDomain(context); // else - // downcast(context).thread().workerLoaderProxy().postTaskToLoader(WTFMove(reportRegistrableDomain)); + // downcast(context).thread().workerLoaderProxy().postTaskToLoader(WTF::move(reportRegistrableDomain)); // #endif // m_pendingActivity = makePendingActivity(*this); @@ -1069,7 +1069,7 @@ void WebSocket::didConnect() void WebSocket::didReceiveMessage(String&& message) { // LOG(Network, "WebSocket %p didReceiveMessage() Text message '%s'", this, message.utf8().data()); - // queueTaskKeepingObjectAlive(*this, TaskSource::WebSocket, [this, message = WTFMove(message)]() mutable { + // queueTaskKeepingObjectAlive(*this, TaskSource::WebSocket, [this, message = WTF::move(message)]() mutable { if (m_state != OPEN) return; @@ -1083,14 +1083,14 @@ void WebSocket::didReceiveMessage(String&& message) if (this->hasEventListeners("message"_s)) { // the main reason for dispatching on a separate tick is to handle when you haven't yet attached an event listener this->incPendingActivityCount(); - dispatchEvent(MessageEvent::create(WTFMove(message), m_url.string())); + dispatchEvent(MessageEvent::create(WTF::move(message), m_url.string())); this->decPendingActivityCount(); return; } if (auto* context = scriptExecutionContext()) { this->incPendingActivityCount(); - context->postTask([this, message_ = WTFMove(message), protectedThis = Ref { *this }](ScriptExecutionContext& context) { + context->postTask([this, message_ = WTF::move(message), protectedThis = Ref { *this }](ScriptExecutionContext& context) { ASSERT(scriptExecutionContext()); protectedThis->dispatchEvent(MessageEvent::create(message_, protectedThis->m_url.string())); protectedThis->decPendingActivityCount(); @@ -1103,7 +1103,7 @@ void WebSocket::didReceiveMessage(String&& message) void WebSocket::didReceiveBinaryData(const AtomString& eventName, const std::span binaryData) { // LOG(Network, "WebSocket %p didReceiveBinaryData() %u byte binary message", this, static_cast(binaryData.size())); - // queueTaskKeepingObjectAlive(*this, TaskSource::WebSocket, [this, binaryData = WTFMove(binaryData)]() mutable { + // queueTaskKeepingObjectAlive(*this, TaskSource::WebSocket, [this, binaryData = WTF::move(binaryData)]() mutable { if (m_state != OPEN) return; @@ -1144,7 +1144,7 @@ void WebSocket::didReceiveBinaryData(const AtomString& eventName, const std::spa if (auto* context = scriptExecutionContext()) { auto arrayBuffer = JSC::ArrayBuffer::create(binaryData); this->incPendingActivityCount(); - context->postTask([this, name = eventName, buffer = WTFMove(arrayBuffer), protectedThis = Ref { *this }](ScriptExecutionContext& context) { + context->postTask([this, name = eventName, buffer = WTF::move(arrayBuffer), protectedThis = Ref { *this }](ScriptExecutionContext& context) { ASSERT(scriptExecutionContext()); protectedThis->dispatchEvent(MessageEvent::create(name, buffer, m_url.string())); protectedThis->decPendingActivityCount(); @@ -1176,7 +1176,7 @@ void WebSocket::didReceiveBinaryData(const AtomString& eventName, const std::spa init.data = buffer; init.origin = this->m_url.string(); - dispatchEvent(MessageEvent::create(eventName, WTFMove(init), EventIsTrusted::Yes)); + dispatchEvent(MessageEvent::create(eventName, WTF::move(init), EventIsTrusted::Yes)); this->decPendingActivityCount(); return; } @@ -1186,7 +1186,7 @@ void WebSocket::didReceiveBinaryData(const AtomString& eventName, const std::spa this->incPendingActivityCount(); - context->postTask([name = eventName, buffer = WTFMove(arrayBuffer), protectedThis = Ref { *this }](ScriptExecutionContext& context) { + context->postTask([name = eventName, buffer = WTF::move(arrayBuffer), protectedThis = Ref { *this }](ScriptExecutionContext& context) { size_t length = buffer->byteLength(); auto* globalObject = context.jsGlobalObject(); auto* subclassStructure = static_cast(globalObject)->JSBufferSubclassStructure(); @@ -1195,7 +1195,7 @@ void WebSocket::didReceiveBinaryData(const AtomString& eventName, const std::spa MessageEvent::Init init; init.data = uint8array; init.origin = protectedThis->m_url.string(); - protectedThis->dispatchEvent(MessageEvent::create(name, WTFMove(init), EventIsTrusted::Yes)); + protectedThis->dispatchEvent(MessageEvent::create(name, WTF::move(init), EventIsTrusted::Yes)); protectedThis->decPendingActivityCount(); }); } @@ -1209,7 +1209,7 @@ void WebSocket::didReceiveBinaryData(const AtomString& eventName, const std::spa void WebSocket::didReceiveClose(CleanStatus wasClean, unsigned short code, WTF::String reason, bool isConnectionError) { // LOG(Network, "WebSocket %p didReceiveErrorMessage()", this); - // queueTaskKeepingObjectAlive(*this, TaskSource::WebSocket, [this, reason = WTFMove(reason)] { + // queueTaskKeepingObjectAlive(*this, TaskSource::WebSocket, [this, reason = WTF::move(reason)] { if (m_state == CLOSED) return; const bool wasConnecting = m_state == CONNECTING; @@ -1218,7 +1218,7 @@ void WebSocket::didReceiveClose(CleanStatus wasClean, unsigned short code, WTF:: this->incPendingActivityCount(); if (wasConnecting && isConnectionError) { auto eventInit = createErrorEventInit(*this, reason, context->jsGlobalObject()); - dispatchEvent(ErrorEvent::create(eventNames().errorEvent, WTFMove(eventInit), EventIsTrusted::Yes)); + dispatchEvent(ErrorEvent::create(eventNames().errorEvent, WTF::move(eventInit), EventIsTrusted::Yes)); } // https://html.spec.whatwg.org/multipage/web-sockets.html#feedback-from-the-protocol:concept-websocket-closed, we should synchronously fire a close event. dispatchEvent(CloseEvent::create(wasClean == CleanStatus::Clean, code, reason)); @@ -1517,13 +1517,13 @@ extern "C" void WebSocket__didAbruptClose(WebCore::WebSocket* webSocket, Bun::We extern "C" void WebSocket__didClose(WebCore::WebSocket* webSocket, uint16_t errorCode, BunString* reason) { WTF::String wtf_reason = reason->transferToWTFString(); - webSocket->didClose(0, errorCode, WTFMove(wtf_reason)); + webSocket->didClose(0, errorCode, WTF::move(wtf_reason)); } extern "C" void WebSocket__didReceiveText(WebCore::WebSocket* webSocket, bool clone, const ZigString* str) { WTF::String wtf_str = clone ? Zig::toStringCopy(*str) : Zig::toString(*str); - webSocket->didReceiveMessage(WTFMove(wtf_str)); + webSocket->didReceiveMessage(WTF::move(wtf_str)); } extern "C" void WebSocket__didReceiveBytes(WebCore::WebSocket* webSocket, const uint8_t* bytes, size_t len, const uint8_t op) { diff --git a/src/bun.js/bindings/webcore/Worker.cpp b/src/bun.js/bindings/webcore/Worker.cpp index 3891d6fba3..8db7b462b3 100644 --- a/src/bun.js/bindings/webcore/Worker.cpp +++ b/src/bun.js/bindings/webcore/Worker.cpp @@ -94,7 +94,7 @@ void Worker::networkStateChanged(bool isOnline) Worker::Worker(ScriptExecutionContext& context, WorkerOptions&& options) : EventTargetWithInlineData() , ContextDestructionObserver(&context) - , m_options(WTFMove(options)) + , m_options(WTF::move(options)) , m_identifier(makeString("worker:"_s, Inspector::IdentifiersFactory::createIdentifier())) , m_clientIdentifier(ScriptExecutionContext::generateIdentifier()) { @@ -149,7 +149,7 @@ bool Worker::updatePtr() ExceptionOr> Worker::create(ScriptExecutionContext& context, const String& urlInit, WorkerOptions&& options) { - auto worker = adoptRef(*new Worker(context, WTFMove(options))); + auto worker = adoptRef(*new Worker(context, WTF::move(options))); WTF::String url = urlInit; if (url.startsWith("file://"_s)) { @@ -237,22 +237,22 @@ ExceptionOr Worker::postMessage(JSC::JSGlobalObject& state, JSC::JSValue m return Exception { InvalidStateError, "Worker has been terminated"_s }; Vector> ports; - auto serialized = SerializedScriptValue::create(state, messageValue, WTFMove(options.transfer), ports, SerializationForStorage::No, SerializationContext::WorkerPostMessage); + auto serialized = SerializedScriptValue::create(state, messageValue, WTF::move(options.transfer), ports, SerializationForStorage::No, SerializationContext::WorkerPostMessage); if (serialized.hasException()) return serialized.releaseException(); - ExceptionOr> disentangledPorts = MessagePort::disentanglePorts(WTFMove(ports)); + ExceptionOr> disentangledPorts = MessagePort::disentanglePorts(WTF::move(ports)); if (disentangledPorts.hasException()) { return disentangledPorts.releaseException(); } MessageWithMessagePorts messageWithMessagePorts { serialized.releaseReturnValue(), disentangledPorts.releaseReturnValue() }; - this->postTaskToWorkerGlobalScope([message = WTFMove(messageWithMessagePorts)](auto& context) mutable { + this->postTaskToWorkerGlobalScope([message = WTF::move(messageWithMessagePorts)](auto& context) mutable { Zig::GlobalObject* globalObject = jsCast(context.jsGlobalObject()); - auto ports = MessagePort::entanglePorts(context, WTFMove(message.transferredPorts)); - auto event = MessageEvent::create(*globalObject, message.message.releaseNonNull(), nullptr, WTFMove(ports)); + auto ports = MessagePort::entanglePorts(context, WTF::move(message.transferredPorts)); + auto event = MessageEvent::create(*globalObject, message.message.releaseNonNull(), nullptr, WTF::move(ports)); globalObject->globalEventScope->dispatchEvent(event.event); }); @@ -336,8 +336,8 @@ void Worker::createRTCRtpScriptTransformer(RTCRtpScriptTransform& transform, Mes if (!scriptExecutionContext()) return; - m_contextProxy.postTaskToWorkerGlobalScope([transform = Ref { transform }, options = WTFMove(options)](auto& context) mutable { - if (auto transformer = downcast(context).createRTCRtpScriptTransformer(WTFMove(options))) + m_contextProxy.postTaskToWorkerGlobalScope([transform = Ref { transform }, options = WTF::move(options)](auto& context) mutable { + if (auto transformer = downcast(context).createRTCRtpScriptTransformer(WTF::move(options))) transform->setTransformer(*transformer); }); } @@ -347,7 +347,7 @@ void Worker::drainEvents() { Locker lock(this->m_pendingTasksMutex); for (auto& task : m_pendingTasks) - postTaskToWorkerGlobalScope(WTFMove(task)); + postTaskToWorkerGlobalScope(WTF::move(task)); m_pendingTasks.clear(); } @@ -386,7 +386,7 @@ void Worker::fireEarlyMessages(Zig::GlobalObject* workerGlobalObject) task(*thisContext); } } else { - thisContext->postTask([tasks = WTFMove(tasks)](auto& ctx) mutable { + thisContext->postTask([tasks = WTF::move(tasks)](auto& ctx) mutable { for (auto& task : tasks) { task(ctx); } @@ -451,11 +451,11 @@ void Worker::postTaskToWorkerGlobalScope(Function { if (!(m_onlineClosingFlags & OnlineFlag)) { Locker lock(this->m_pendingTasksMutex); - this->m_pendingTasks.append(WTFMove(task)); + this->m_pendingTasks.append(WTF::move(task)); return; } - ScriptExecutionContext::postTaskTo(m_clientIdentifier, WTFMove(task)); + ScriptExecutionContext::postTaskTo(m_clientIdentifier, WTF::move(task)); } void Worker::forEachWorker(const Function()>& callback) @@ -565,9 +565,9 @@ JSValue createNodeWorkerThreadsBinding(Zig::GlobalObject* globalObject) if (auto* worker = WebWorker__getParentWorker(globalObject->bunVM())) { auto& options = worker->options(); - auto ports = MessagePort::entanglePorts(*ScriptExecutionContext::getScriptExecutionContext(worker->clientIdentifier()), WTFMove(options.dataMessagePorts)); - RefPtr serialized = WTFMove(options.workerDataAndEnvironmentData); - JSValue deserialized = serialized->deserialize(*globalObject, globalObject, WTFMove(ports)); + auto ports = MessagePort::entanglePorts(*ScriptExecutionContext::getScriptExecutionContext(worker->clientIdentifier()), WTF::move(options.dataMessagePorts)); + RefPtr serialized = WTF::move(options.workerDataAndEnvironmentData); + JSValue deserialized = serialized->deserialize(*globalObject, globalObject, WTF::move(ports)); RETURN_IF_EXCEPTION(scope, {}); // Should always be set to an Array of length 2 in the constructor in JSWorker.cpp auto* pair = jsCast(deserialized); @@ -644,14 +644,14 @@ JSC_DEFINE_HOST_FUNCTION(jsFunctionPostMessage, } Vector> ports; - ExceptionOr> serialized = SerializedScriptValue::create(*globalObject, value, WTFMove(transferList), ports, SerializationForStorage::No, SerializationContext::WorkerPostMessage); + ExceptionOr> serialized = SerializedScriptValue::create(*globalObject, value, WTF::move(transferList), ports, SerializationForStorage::No, SerializationContext::WorkerPostMessage); if (serialized.hasException()) { WebCore::propagateException(*globalObject, scope, serialized.releaseException()); RELEASE_AND_RETURN(scope, {}); } scope.assertNoException(); - ExceptionOr> disentangledPorts = MessagePort::disentanglePorts(WTFMove(ports)); + ExceptionOr> disentangledPorts = MessagePort::disentanglePorts(WTF::move(ports)); if (disentangledPorts.hasException()) { WebCore::propagateException(*globalObject, scope, serialized.releaseException()); RELEASE_AND_RETURN(scope, {}); @@ -663,8 +663,8 @@ JSC_DEFINE_HOST_FUNCTION(jsFunctionPostMessage, ScriptExecutionContext::postTaskTo(context->identifier(), [message = messageWithMessagePorts, protectedThis = Ref { *worker }, ports](ScriptExecutionContext& context) mutable { Zig::GlobalObject* globalObject = jsCast(context.jsGlobalObject()); - auto ports = MessagePort::entanglePorts(context, WTFMove(message.transferredPorts)); - auto event = MessageEvent::create(*globalObject, message.message.releaseNonNull(), nullptr, WTFMove(ports)); + auto ports = MessagePort::entanglePorts(context, WTF::move(message.transferredPorts)); + auto event = MessageEvent::create(*globalObject, message.message.releaseNonNull(), nullptr, WTF::move(ports)); protectedThis->dispatchEvent(event.event); }); diff --git a/src/bun.js/bindings/webcore/WritableStream.cpp b/src/bun.js/bindings/webcore/WritableStream.cpp index 97d56b4761..d0c06376a9 100644 --- a/src/bun.js/bindings/webcore/WritableStream.cpp +++ b/src/bun.js/bindings/webcore/WritableStream.cpp @@ -55,16 +55,16 @@ ExceptionOr> WritableStream::create(JSC::JSGlobalObject& glo ExceptionOr> WritableStream::create(JSDOMGlobalObject& globalObject, Ref&& sink) { - return create(globalObject, toJSNewlyCreated(&globalObject, &globalObject, WTFMove(sink)), JSC::jsUndefined()); + return create(globalObject, toJSNewlyCreated(&globalObject, &globalObject, WTF::move(sink)), JSC::jsUndefined()); } Ref WritableStream::create(Ref&& internalWritableStream) { - return adoptRef(*new WritableStream(WTFMove(internalWritableStream))); + return adoptRef(*new WritableStream(WTF::move(internalWritableStream))); } WritableStream::WritableStream(Ref&& internalWritableStream) - : m_internalWritableStream(WTFMove(internalWritableStream)) + : m_internalWritableStream(WTF::move(internalWritableStream)) { } diff --git a/src/bun.js/bindings/webcore/WritableStreamSink.h b/src/bun.js/bindings/webcore/WritableStreamSink.h index b15e34d91e..2b20494fff 100644 --- a/src/bun.js/bindings/webcore/WritableStreamSink.h +++ b/src/bun.js/bindings/webcore/WritableStreamSink.h @@ -47,7 +47,7 @@ public: class SimpleWritableStreamSink : public WritableStreamSink { public: using WriteCallback = Function(ScriptExecutionContext&, JSC::JSValue)>; - static Ref create(WriteCallback&& writeCallback) { return adoptRef(*new SimpleWritableStreamSink(WTFMove(writeCallback))); } + static Ref create(WriteCallback&& writeCallback) { return adoptRef(*new SimpleWritableStreamSink(WTF::move(writeCallback))); } private: explicit SimpleWritableStreamSink(WriteCallback&&); @@ -60,7 +60,7 @@ private: }; inline SimpleWritableStreamSink::SimpleWritableStreamSink(WriteCallback&& writeCallback) - : m_writeCallback(WTFMove(writeCallback)) + : m_writeCallback(WTF::move(writeCallback)) { } diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithm.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithm.cpp index 318a8e15be..0fd57c8e61 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithm.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithm.cpp @@ -96,9 +96,9 @@ template static void dispatchAlgorithmOperation(WorkQueue& workQueue, ScriptExecutionContext& context, ResultCallbackType&& callback, CryptoAlgorithm::ExceptionCallback&& exceptionCallback, OperationType&& operation) { workQueue.dispatch(context.globalObject(), - [operation = WTFMove(operation), callback = WTFMove(callback), exceptionCallback = WTFMove(exceptionCallback), contextIdentifier = context.identifier()]() mutable { + [operation = WTF::move(operation), callback = WTF::move(callback), exceptionCallback = WTF::move(exceptionCallback), contextIdentifier = context.identifier()]() mutable { auto result = operation(); - ScriptExecutionContext::postTaskTo(contextIdentifier, [result = crossThreadCopy(WTFMove(result)), callback = WTFMove(callback), exceptionCallback = WTFMove(exceptionCallback)](auto& context) mutable { + ScriptExecutionContext::postTaskTo(contextIdentifier, [result = crossThreadCopy(WTF::move(result)), callback = WTF::move(callback), exceptionCallback = WTF::move(exceptionCallback)](auto& context) mutable { if (result.hasException()) { exceptionCallback(result.releaseException().code(), ""_s); return; @@ -110,12 +110,12 @@ static void dispatchAlgorithmOperation(WorkQueue& workQueue, ScriptExecutionCont void CryptoAlgorithm::dispatchOperationInWorkQueue(WorkQueue& workQueue, ScriptExecutionContext& context, VectorCallback&& callback, ExceptionCallback&& exceptionCallback, Function>()>&& operation) { - dispatchAlgorithmOperation(workQueue, context, WTFMove(callback), WTFMove(exceptionCallback), WTFMove(operation)); + dispatchAlgorithmOperation(workQueue, context, WTF::move(callback), WTF::move(exceptionCallback), WTF::move(operation)); } void CryptoAlgorithm::dispatchOperationInWorkQueue(WorkQueue& workQueue, ScriptExecutionContext& context, BoolCallback&& callback, ExceptionCallback&& exceptionCallback, Function()>&& operation) { - dispatchAlgorithmOperation(workQueue, context, WTFMove(callback), WTFMove(exceptionCallback), WTFMove(operation)); + dispatchAlgorithmOperation(workQueue, context, WTF::move(callback), WTF::move(exceptionCallback), WTF::move(operation)); } } diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_CBC.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_CBC.cpp index 585ed77c2f..7611b719a3 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_CBC.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_CBC.cpp @@ -67,8 +67,8 @@ void CryptoAlgorithmAES_CBC::encrypt(const CryptoAlgorithmParameters& parameters return; } - dispatchOperationInWorkQueue(workQueue, context, WTFMove(callback), WTFMove(exceptionCallback), - [parameters = crossThreadCopy(aesParameters), key = WTFMove(key), plainText = WTFMove(plainText)] { + dispatchOperationInWorkQueue(workQueue, context, WTF::move(callback), WTF::move(exceptionCallback), + [parameters = crossThreadCopy(aesParameters), key = WTF::move(key), plainText = WTF::move(plainText)] { return platformEncrypt(parameters, downcast(key.get()), plainText); }); } @@ -83,8 +83,8 @@ void CryptoAlgorithmAES_CBC::decrypt(const CryptoAlgorithmParameters& parameters return; } - dispatchOperationInWorkQueue(workQueue, context, WTFMove(callback), WTFMove(exceptionCallback), - [parameters = crossThreadCopy(aesParameters), key = WTFMove(key), cipherText = WTFMove(cipherText)] { + dispatchOperationInWorkQueue(workQueue, context, WTF::move(callback), WTF::move(exceptionCallback), + [parameters = crossThreadCopy(aesParameters), key = WTF::move(key), cipherText = WTF::move(cipherText)] { return platformDecrypt(parameters, downcast(key.get()), cipherText); }); } @@ -104,7 +104,7 @@ void CryptoAlgorithmAES_CBC::generateKey(const CryptoAlgorithmParameters& parame return; } - callback(WTFMove(result)); + callback(WTF::move(result)); } void CryptoAlgorithmAES_CBC::importKey(CryptoKeyFormat format, KeyData&& data, const CryptoAlgorithmParameters& parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyCallback&& callback, ExceptionCallback&& exceptionCallback) @@ -119,7 +119,7 @@ void CryptoAlgorithmAES_CBC::importKey(CryptoKeyFormat format, KeyData&& data, c RefPtr result; switch (format) { case CryptoKeyFormat::Raw: - result = CryptoKeyAES::importRaw(parameters.identifier, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyAES::importRaw(parameters.identifier, WTF::move(std::get>(data)), extractable, usages); break; case CryptoKeyFormat::Jwk: { auto checkAlgCallback = [](size_t length, const String& alg) -> bool { @@ -133,7 +133,7 @@ void CryptoAlgorithmAES_CBC::importKey(CryptoKeyFormat format, KeyData&& data, c } return false; }; - result = CryptoKeyAES::importJwk(parameters.identifier, WTFMove(std::get(data)), extractable, usages, WTFMove(checkAlgCallback)); + result = CryptoKeyAES::importJwk(parameters.identifier, WTF::move(std::get(data)), extractable, usages, WTF::move(checkAlgCallback)); break; } default: @@ -178,7 +178,7 @@ void CryptoAlgorithmAES_CBC::exportKey(CryptoKeyFormat format, Ref&& default: ASSERT_NOT_REACHED(); } - result = WTFMove(jwk); + result = WTF::move(jwk); break; } default: @@ -186,7 +186,7 @@ void CryptoAlgorithmAES_CBC::exportKey(CryptoKeyFormat format, Ref&& return; } - callback(format, WTFMove(result)); + callback(format, WTF::move(result)); } ExceptionOr CryptoAlgorithmAES_CBC::getKeyLength(const CryptoAlgorithmParameters& parameters) diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_CBCOpenSSL.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_CBCOpenSSL.cpp index b6dd15c01c..793b97da88 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_CBCOpenSSL.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_CBCOpenSSL.cpp @@ -122,7 +122,7 @@ ExceptionOr> CryptoAlgorithmAES_CBC::platformEncrypt(const Crypt auto output = cryptEncrypt(key.key(), parameters.ivVector(), Vector(plainText)); if (!output) return Exception { OperationError }; - return WTFMove(*output); + return WTF::move(*output); } ExceptionOr> CryptoAlgorithmAES_CBC::platformDecrypt(const CryptoAlgorithmAesCbcCfbParams& parameters, const CryptoKeyAES& key, const Vector& cipherText, Padding) @@ -130,7 +130,7 @@ ExceptionOr> CryptoAlgorithmAES_CBC::platformDecrypt(const Crypt auto output = cryptDecrypt(key.key(), parameters.ivVector(), cipherText); if (!output) return Exception { OperationError }; - return WTFMove(*output); + return WTF::move(*output); } } // namespace WebCore diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_CFB.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_CFB.cpp index 34b7afe92b..7d18189bce 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_CFB.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_CFB.cpp @@ -67,8 +67,8 @@ void CryptoAlgorithmAES_CFB::encrypt(const CryptoAlgorithmParameters& parameters return; } - dispatchOperationInWorkQueue(workQueue, context, WTFMove(callback), WTFMove(exceptionCallback), - [parameters = crossThreadCopy(aesParameters), key = WTFMove(key), plainText = WTFMove(plainText)] { + dispatchOperationInWorkQueue(workQueue, context, WTF::move(callback), WTF::move(exceptionCallback), + [parameters = crossThreadCopy(aesParameters), key = WTF::move(key), plainText = WTF::move(plainText)] { return platformEncrypt(parameters, downcast(key.get()), plainText); }); } @@ -83,8 +83,8 @@ void CryptoAlgorithmAES_CFB::decrypt(const CryptoAlgorithmParameters& parameters return; } - dispatchOperationInWorkQueue(workQueue, context, WTFMove(callback), WTFMove(exceptionCallback), - [parameters = crossThreadCopy(aesParameters), key = WTFMove(key), cipherText = WTFMove(cipherText)] { + dispatchOperationInWorkQueue(workQueue, context, WTF::move(callback), WTF::move(exceptionCallback), + [parameters = crossThreadCopy(aesParameters), key = WTF::move(key), cipherText = WTF::move(cipherText)] { return platformDecrypt(parameters, downcast(key.get()), cipherText); }); } @@ -104,7 +104,7 @@ void CryptoAlgorithmAES_CFB::generateKey(const CryptoAlgorithmParameters& parame return; } - callback(WTFMove(result)); + callback(WTF::move(result)); } void CryptoAlgorithmAES_CFB::importKey(CryptoKeyFormat format, KeyData&& data, const CryptoAlgorithmParameters& parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyCallback&& callback, ExceptionCallback&& exceptionCallback) @@ -119,7 +119,7 @@ void CryptoAlgorithmAES_CFB::importKey(CryptoKeyFormat format, KeyData&& data, c RefPtr result; switch (format) { case CryptoKeyFormat::Raw: - result = CryptoKeyAES::importRaw(parameters.identifier, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyAES::importRaw(parameters.identifier, WTF::move(std::get>(data)), extractable, usages); break; case CryptoKeyFormat::Jwk: { auto checkAlgCallback = [](size_t length, const String& alg) -> bool { @@ -133,7 +133,7 @@ void CryptoAlgorithmAES_CFB::importKey(CryptoKeyFormat format, KeyData&& data, c } return false; }; - result = CryptoKeyAES::importJwk(parameters.identifier, WTFMove(std::get(data)), extractable, usages, WTFMove(checkAlgCallback)); + result = CryptoKeyAES::importJwk(parameters.identifier, WTF::move(std::get(data)), extractable, usages, WTF::move(checkAlgCallback)); break; } default: @@ -178,7 +178,7 @@ void CryptoAlgorithmAES_CFB::exportKey(CryptoKeyFormat format, Ref&& default: ASSERT_NOT_REACHED(); } - result = WTFMove(jwk); + result = WTF::move(jwk); break; } default: @@ -186,7 +186,7 @@ void CryptoAlgorithmAES_CFB::exportKey(CryptoKeyFormat format, Ref&& return; } - callback(format, WTFMove(result)); + callback(format, WTF::move(result)); } ExceptionOr CryptoAlgorithmAES_CFB::getKeyLength(const CryptoAlgorithmParameters& parameters) diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_CFBOpenSSL.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_CFBOpenSSL.cpp index 4de16b439c..3cab769697 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_CFBOpenSSL.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_CFBOpenSSL.cpp @@ -89,7 +89,7 @@ ExceptionOr> CryptoAlgorithmAES_CFB::platformEncrypt(const Crypt auto output = cryptEncrypt(key.key(), parameters.ivVector(), Vector(plainText)); if (!output) return Exception { OperationError }; - return WTFMove(*output); + return WTF::move(*output); } ExceptionOr> CryptoAlgorithmAES_CFB::platformDecrypt(const CryptoAlgorithmAesCbcCfbParams& parameters, const CryptoKeyAES& key, const Vector& cipherText) @@ -97,7 +97,7 @@ ExceptionOr> CryptoAlgorithmAES_CFB::platformDecrypt(const Crypt auto output = cryptDecrypt(key.key(), parameters.ivVector(), cipherText); if (!output) return Exception { OperationError }; - return WTFMove(*output); + return WTF::move(*output); } } // namespace WebCore diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_CTR.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_CTR.cpp index 8902fb3c24..5e3d440ad7 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_CTR.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_CTR.cpp @@ -78,8 +78,8 @@ void CryptoAlgorithmAES_CTR::encrypt(const CryptoAlgorithmParameters& parameters return; } - dispatchOperationInWorkQueue(workQueue, context, WTFMove(callback), WTFMove(exceptionCallback), - [parameters = crossThreadCopy(aesParameters), key = WTFMove(key), plainText = WTFMove(plainText)] { + dispatchOperationInWorkQueue(workQueue, context, WTF::move(callback), WTF::move(exceptionCallback), + [parameters = crossThreadCopy(aesParameters), key = WTF::move(key), plainText = WTF::move(plainText)] { return platformEncrypt(parameters, downcast(key.get()), plainText); }); } @@ -92,8 +92,8 @@ void CryptoAlgorithmAES_CTR::decrypt(const CryptoAlgorithmParameters& parameters return; } - dispatchOperationInWorkQueue(workQueue, context, WTFMove(callback), WTFMove(exceptionCallback), - [parameters = crossThreadCopy(aesParameters), key = WTFMove(key), cipherText = WTFMove(cipherText)] { + dispatchOperationInWorkQueue(workQueue, context, WTF::move(callback), WTF::move(exceptionCallback), + [parameters = crossThreadCopy(aesParameters), key = WTF::move(key), cipherText = WTF::move(cipherText)] { return platformDecrypt(parameters, downcast(key.get()), cipherText); }); } @@ -113,7 +113,7 @@ void CryptoAlgorithmAES_CTR::generateKey(const CryptoAlgorithmParameters& parame return; } - callback(WTFMove(result)); + callback(WTF::move(result)); } void CryptoAlgorithmAES_CTR::importKey(CryptoKeyFormat format, KeyData&& data, const CryptoAlgorithmParameters& parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyCallback&& callback, ExceptionCallback&& exceptionCallback) @@ -128,7 +128,7 @@ void CryptoAlgorithmAES_CTR::importKey(CryptoKeyFormat format, KeyData&& data, c RefPtr result; switch (format) { case CryptoKeyFormat::Raw: - result = CryptoKeyAES::importRaw(parameters.identifier, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyAES::importRaw(parameters.identifier, WTF::move(std::get>(data)), extractable, usages); break; case CryptoKeyFormat::Jwk: { auto checkAlgCallback = [](size_t length, const String& alg) -> bool { @@ -142,7 +142,7 @@ void CryptoAlgorithmAES_CTR::importKey(CryptoKeyFormat format, KeyData&& data, c } return false; }; - result = CryptoKeyAES::importJwk(parameters.identifier, WTFMove(std::get(data)), extractable, usages, WTFMove(checkAlgCallback)); + result = CryptoKeyAES::importJwk(parameters.identifier, WTF::move(std::get(data)), extractable, usages, WTF::move(checkAlgCallback)); break; } default: @@ -187,7 +187,7 @@ void CryptoAlgorithmAES_CTR::exportKey(CryptoKeyFormat format, Ref&& default: ASSERT_NOT_REACHED(); } - result = WTFMove(jwk); + result = WTF::move(jwk); break; } default: @@ -195,7 +195,7 @@ void CryptoAlgorithmAES_CTR::exportKey(CryptoKeyFormat format, Ref&& return; } - callback(format, WTFMove(result)); + callback(format, WTF::move(result)); } ExceptionOr CryptoAlgorithmAES_CTR::getKeyLength(const CryptoAlgorithmParameters& parameters) diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_CTROpenSSL.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_CTROpenSSL.cpp index ead077e8f7..fbbebef8d3 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_CTROpenSSL.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_CTROpenSSL.cpp @@ -129,7 +129,7 @@ ExceptionOr> CryptoAlgorithmAES_CTR::platformEncrypt(const Crypt auto output = crypt(1, key.key(), parameters.counterVector(), parameters.length, plainText); if (!output) return Exception { OperationError }; - return WTFMove(*output); + return WTF::move(*output); } ExceptionOr> CryptoAlgorithmAES_CTR::platformDecrypt(const CryptoAlgorithmAesCtrParams& parameters, const CryptoKeyAES& key, const Vector& cipherText) @@ -137,7 +137,7 @@ ExceptionOr> CryptoAlgorithmAES_CTR::platformDecrypt(const Crypt auto output = crypt(0, key.key(), parameters.counterVector(), parameters.length, cipherText); if (!output) return Exception { OperationError }; - return WTFMove(*output); + return WTF::move(*output); } } // namespace WebCore diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_GCM.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_GCM.cpp index af4b982fa7..0340d3bedf 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_GCM.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_GCM.cpp @@ -98,8 +98,8 @@ void CryptoAlgorithmAES_GCM::encrypt(const CryptoAlgorithmParameters& parameters return; } - dispatchOperationInWorkQueue(workQueue, context, WTFMove(callback), WTFMove(exceptionCallback), - [parameters = crossThreadCopy(aesParameters), key = WTFMove(key), plainText = WTFMove(plainText)] { + dispatchOperationInWorkQueue(workQueue, context, WTF::move(callback), WTF::move(exceptionCallback), + [parameters = crossThreadCopy(aesParameters), key = WTF::move(key), plainText = WTF::move(plainText)] { return platformEncrypt(parameters, downcast(key.get()), plainText); }); } @@ -131,8 +131,8 @@ void CryptoAlgorithmAES_GCM::decrypt(const CryptoAlgorithmParameters& parameters } #endif - dispatchOperationInWorkQueue(workQueue, context, WTFMove(callback), WTFMove(exceptionCallback), - [parameters = crossThreadCopy(aesParameters), key = WTFMove(key), cipherText = WTFMove(cipherText)] { + dispatchOperationInWorkQueue(workQueue, context, WTF::move(callback), WTF::move(exceptionCallback), + [parameters = crossThreadCopy(aesParameters), key = WTF::move(key), cipherText = WTF::move(cipherText)] { return platformDecrypt(parameters, downcast(key.get()), cipherText); }); } @@ -152,7 +152,7 @@ void CryptoAlgorithmAES_GCM::generateKey(const CryptoAlgorithmParameters& parame return; } - callback(WTFMove(result)); + callback(WTF::move(result)); } void CryptoAlgorithmAES_GCM::importKey(CryptoKeyFormat format, KeyData&& data, const CryptoAlgorithmParameters& parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyCallback&& callback, ExceptionCallback&& exceptionCallback) @@ -167,7 +167,7 @@ void CryptoAlgorithmAES_GCM::importKey(CryptoKeyFormat format, KeyData&& data, c RefPtr result; switch (format) { case CryptoKeyFormat::Raw: - result = CryptoKeyAES::importRaw(parameters.identifier, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyAES::importRaw(parameters.identifier, WTF::move(std::get>(data)), extractable, usages); break; case CryptoKeyFormat::Jwk: { auto checkAlgCallback = [](size_t length, const String& alg) -> bool { @@ -181,7 +181,7 @@ void CryptoAlgorithmAES_GCM::importKey(CryptoKeyFormat format, KeyData&& data, c } return false; }; - result = CryptoKeyAES::importJwk(parameters.identifier, WTFMove(std::get(data)), extractable, usages, WTFMove(checkAlgCallback)); + result = CryptoKeyAES::importJwk(parameters.identifier, WTF::move(std::get(data)), extractable, usages, WTF::move(checkAlgCallback)); break; } default: @@ -226,7 +226,7 @@ void CryptoAlgorithmAES_GCM::exportKey(CryptoKeyFormat format, Ref&& default: ASSERT_NOT_REACHED(); } - result = WTFMove(jwk); + result = WTF::move(jwk); break; } default: @@ -234,7 +234,7 @@ void CryptoAlgorithmAES_GCM::exportKey(CryptoKeyFormat format, Ref&& return; } - callback(format, WTFMove(result)); + callback(format, WTF::move(result)); } ExceptionOr CryptoAlgorithmAES_GCM::getKeyLength(const CryptoAlgorithmParameters& parameters) diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_GCMOpenSSL.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_GCMOpenSSL.cpp index a077f38fa3..f65f45e505 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_GCMOpenSSL.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_GCMOpenSSL.cpp @@ -171,7 +171,7 @@ ExceptionOr> CryptoAlgorithmAES_GCM::platformEncrypt(const Crypt auto output = cryptEncrypt(key.key(), parameters.ivVector(), plainText, parameters.additionalDataVector(), parameters.tagLength.value_or(0) / 8); if (!output) return Exception { OperationError }; - return WTFMove(*output); + return WTF::move(*output); } ExceptionOr> CryptoAlgorithmAES_GCM::platformDecrypt(const CryptoAlgorithmAesGcmParams& parameters, const CryptoKeyAES& key, const Vector& cipherText) @@ -179,7 +179,7 @@ ExceptionOr> CryptoAlgorithmAES_GCM::platformDecrypt(const Crypt auto output = cryptDecrypt(key.key(), parameters.ivVector(), cipherText, parameters.additionalDataVector(), parameters.tagLength.value_or(0) / 8); if (!output) return Exception { OperationError }; - return WTFMove(*output); + return WTF::move(*output); } } // namespace WebCore diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_KW.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_KW.cpp index c748c89254..ffb2a14ad0 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_KW.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_KW.cpp @@ -68,7 +68,7 @@ void CryptoAlgorithmAES_KW::generateKey(const CryptoAlgorithmParameters& paramet return; } - callback(WTFMove(result)); + callback(WTF::move(result)); } void CryptoAlgorithmAES_KW::importKey(CryptoKeyFormat format, KeyData&& data, const CryptoAlgorithmParameters& parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyCallback&& callback, ExceptionCallback&& exceptionCallback) @@ -83,10 +83,10 @@ void CryptoAlgorithmAES_KW::importKey(CryptoKeyFormat format, KeyData&& data, co RefPtr result; switch (format) { case CryptoKeyFormat::Raw: - result = CryptoKeyAES::importRaw(parameters.identifier, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyAES::importRaw(parameters.identifier, WTF::move(std::get>(data)), extractable, usages); break; case CryptoKeyFormat::Jwk: { - result = CryptoKeyAES::importJwk(parameters.identifier, WTFMove(std::get(data)), extractable, usages, [](size_t length, const String& alg) -> bool { + result = CryptoKeyAES::importJwk(parameters.identifier, WTF::move(std::get(data)), extractable, usages, [](size_t length, const String& alg) -> bool { switch (length) { case CryptoKeyAES::s_length128: return alg.isNull() || alg == ALG128; @@ -141,7 +141,7 @@ void CryptoAlgorithmAES_KW::exportKey(CryptoKeyFormat format, Ref&& k default: ASSERT_NOT_REACHED(); } - result = WTFMove(jwk); + result = WTF::move(jwk); break; } default: @@ -149,7 +149,7 @@ void CryptoAlgorithmAES_KW::exportKey(CryptoKeyFormat format, Ref&& k return; } - callback(format, WTFMove(result)); + callback(format, WTF::move(result)); } void CryptoAlgorithmAES_KW::wrapKey(Ref&& key, Vector&& data, VectorCallback&& callback, ExceptionCallback&& exceptionCallback) @@ -159,7 +159,7 @@ void CryptoAlgorithmAES_KW::wrapKey(Ref&& key, Vector&& data return; } - auto result = platformWrapKey(downcast(key.get()), WTFMove(data)); + auto result = platformWrapKey(downcast(key.get()), WTF::move(data)); if (result.hasException()) { exceptionCallback(result.releaseException().code(), ""_s); return; @@ -170,7 +170,7 @@ void CryptoAlgorithmAES_KW::wrapKey(Ref&& key, Vector&& data void CryptoAlgorithmAES_KW::unwrapKey(Ref&& key, Vector&& data, VectorCallback&& callback, ExceptionCallback&& exceptionCallback) { - auto result = platformUnwrapKey(downcast(key.get()), WTFMove(data)); + auto result = platformUnwrapKey(downcast(key.get()), WTF::move(data)); if (result.hasException()) { exceptionCallback(result.releaseException().code(), ""_s); return; diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_KWOpenSSL.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_KWOpenSSL.cpp index 4ff61e6516..0ac8358ee6 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_KWOpenSSL.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_KWOpenSSL.cpp @@ -70,7 +70,7 @@ ExceptionOr> CryptoAlgorithmAES_KW::platformWrapKey(const Crypto auto output = cryptWrapKey(key.key(), data); if (!output) return Exception { OperationError }; - return WTFMove(*output); + return WTF::move(*output); } ExceptionOr> CryptoAlgorithmAES_KW::platformUnwrapKey(const CryptoKeyAES& key, const Vector& data) @@ -78,7 +78,7 @@ ExceptionOr> CryptoAlgorithmAES_KW::platformUnwrapKey(const Cryp auto output = cryptUnwrapKey(key.key(), data); if (!output) return Exception { OperationError }; - return WTFMove(*output); + return WTF::move(*output); } } // namespace WebCore diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAesGcmParams.h b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAesGcmParams.h index 492cf764ed..99ac397548 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAesGcmParams.h +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAesGcmParams.h @@ -56,7 +56,7 @@ public: if (!m_additionalDataVector.isEmpty() || !additionalData) return m_additionalDataVector; - BufferSource additionalDataBuffer = WTFMove(*additionalData); + BufferSource additionalDataBuffer = WTF::move(*additionalData); additionalData = std::nullopt; if (!additionalDataBuffer.length()) return m_additionalDataVector; diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmECDH.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmECDH.cpp index acb047cc72..7432f8bbae 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmECDH.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmECDH.cpp @@ -63,7 +63,7 @@ void CryptoAlgorithmECDH::generateKey(const CryptoAlgorithmParameters& parameter auto pair = result.releaseReturnValue(); pair.publicKey->setUsagesBitmap(0); pair.privateKey->setUsagesBitmap(pair.privateKey->usagesBitmap() & (CryptoKeyUsageDeriveKey | CryptoKeyUsageDeriveBits)); - callback(WTFMove(pair)); + callback(WTF::move(pair)); } void CryptoAlgorithmECDH::deriveBits(const CryptoAlgorithmParameters& parameters, Ref&& baseKey, size_t length, VectorCallback&& callback, ExceptionCallback&& exceptionCallback, ScriptExecutionContext& context, WorkQueue& workQueue) @@ -90,13 +90,13 @@ void CryptoAlgorithmECDH::deriveBits(const CryptoAlgorithmParameters& parameters return; } - auto unifiedCallback = [callback = WTFMove(callback), exceptionCallback = WTFMove(exceptionCallback)](std::optional>&& derivedKey, size_t length) mutable { + auto unifiedCallback = [callback = WTF::move(callback), exceptionCallback = WTF::move(exceptionCallback)](std::optional>&& derivedKey, size_t length) mutable { if (!derivedKey) { exceptionCallback(OperationError, ""_s); return; } if (!length) { - callback(WTFMove(*derivedKey)); + callback(WTF::move(*derivedKey)); return; } auto lengthInBytes = std::ceil(length / 8.); @@ -105,16 +105,16 @@ void CryptoAlgorithmECDH::deriveBits(const CryptoAlgorithmParameters& parameters return; } (*derivedKey).shrink(lengthInBytes); - callback(WTFMove(*derivedKey)); + callback(WTF::move(*derivedKey)); }; // This is a special case that can't use dispatchOperation() because it bundles // the result validation and callback dispatch into unifiedCallback. workQueue.dispatch(context.globalObject(), - [baseKey = WTFMove(baseKey), publicKey = ecParameters.publicKey, length, unifiedCallback = WTFMove(unifiedCallback), contextIdentifier = context.identifier()]() mutable { + [baseKey = WTF::move(baseKey), publicKey = ecParameters.publicKey, length, unifiedCallback = WTF::move(unifiedCallback), contextIdentifier = context.identifier()]() mutable { auto derivedKey = platformDeriveBits(downcast(baseKey.get()), downcast(*publicKey)); - ScriptExecutionContext::postTaskTo(contextIdentifier, [derivedKey = WTFMove(derivedKey), length, unifiedCallback = WTFMove(unifiedCallback)](auto&) mutable { - unifiedCallback(WTFMove(derivedKey), length); + ScriptExecutionContext::postTaskTo(contextIdentifier, [derivedKey = WTF::move(derivedKey), length, unifiedCallback = WTF::move(unifiedCallback)](auto&) mutable { + unifiedCallback(WTF::move(derivedKey), length); }); }); } @@ -126,7 +126,7 @@ void CryptoAlgorithmECDH::importKey(CryptoKeyFormat format, KeyData&& data, cons RefPtr result; switch (format) { case CryptoKeyFormat::Jwk: { - JsonWebKey key = WTFMove(std::get(data)); + JsonWebKey key = WTF::move(std::get(data)); bool isUsagesAllowed = false; if (!key.d.isNull()) { @@ -145,7 +145,7 @@ void CryptoAlgorithmECDH::importKey(CryptoKeyFormat format, KeyData&& data, cons return; } - result = CryptoKeyEC::importJwk(ecParameters.identifier, ecParameters.namedCurve, WTFMove(key), extractable, usages); + result = CryptoKeyEC::importJwk(ecParameters.identifier, ecParameters.namedCurve, WTF::move(key), extractable, usages); break; } case CryptoKeyFormat::Raw: @@ -153,21 +153,21 @@ void CryptoAlgorithmECDH::importKey(CryptoKeyFormat format, KeyData&& data, cons exceptionCallback(SyntaxError, ""_s); return; } - result = CryptoKeyEC::importRaw(ecParameters.identifier, ecParameters.namedCurve, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyEC::importRaw(ecParameters.identifier, ecParameters.namedCurve, WTF::move(std::get>(data)), extractable, usages); break; case CryptoKeyFormat::Spki: if (usages) { exceptionCallback(SyntaxError, ""_s); return; } - result = CryptoKeyEC::importSpki(ecParameters.identifier, ecParameters.namedCurve, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyEC::importSpki(ecParameters.identifier, ecParameters.namedCurve, WTF::move(std::get>(data)), extractable, usages); break; case CryptoKeyFormat::Pkcs8: if (usages && (usages ^ CryptoKeyUsageDeriveKey) && (usages ^ CryptoKeyUsageDeriveBits) && (usages ^ (CryptoKeyUsageDeriveKey | CryptoKeyUsageDeriveBits))) { exceptionCallback(SyntaxError, ""_s); return; } - result = CryptoKeyEC::importPkcs8(ecParameters.identifier, ecParameters.namedCurve, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyEC::importPkcs8(ecParameters.identifier, ecParameters.namedCurve, WTF::move(std::get>(data)), extractable, usages); break; } if (!result) { @@ -227,7 +227,7 @@ void CryptoAlgorithmECDH::exportKey(CryptoKeyFormat format, Ref&& key } } - callback(format, WTFMove(result)); + callback(format, WTF::move(result)); } } // namespace WebCore diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmECDSA.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmECDSA.cpp index 4744b65003..4fb66d6f30 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmECDSA.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmECDSA.cpp @@ -62,8 +62,8 @@ void CryptoAlgorithmECDSA::sign(const CryptoAlgorithmParameters& parameters, Ref return; } - dispatchOperationInWorkQueue(workQueue, context, WTFMove(callback), WTFMove(exceptionCallback), - [parameters = crossThreadCopy(downcast(parameters)), key = WTFMove(key), data = WTFMove(data)] { + dispatchOperationInWorkQueue(workQueue, context, WTF::move(callback), WTF::move(exceptionCallback), + [parameters = crossThreadCopy(downcast(parameters)), key = WTF::move(key), data = WTF::move(data)] { return platformSign(parameters, downcast(key.get()), data); }); } @@ -75,8 +75,8 @@ void CryptoAlgorithmECDSA::verify(const CryptoAlgorithmParameters& parameters, R return; } - dispatchOperationInWorkQueue(workQueue, context, WTFMove(callback), WTFMove(exceptionCallback), - [parameters = crossThreadCopy(downcast(parameters)), key = WTFMove(key), signature = WTFMove(signature), data = WTFMove(data)] { + dispatchOperationInWorkQueue(workQueue, context, WTF::move(callback), WTF::move(exceptionCallback), + [parameters = crossThreadCopy(downcast(parameters)), key = WTF::move(key), signature = WTF::move(signature), data = WTF::move(data)] { return platformVerify(parameters, downcast(key.get()), signature, data); }); } @@ -99,7 +99,7 @@ void CryptoAlgorithmECDSA::generateKey(const CryptoAlgorithmParameters& paramete auto pair = result.releaseReturnValue(); pair.publicKey->setUsagesBitmap(pair.publicKey->usagesBitmap() & CryptoKeyUsageVerify); pair.privateKey->setUsagesBitmap(pair.privateKey->usagesBitmap() & CryptoKeyUsageSign); - callback(WTFMove(pair)); + callback(WTF::move(pair)); } void CryptoAlgorithmECDSA::importKey(CryptoKeyFormat format, KeyData&& data, const CryptoAlgorithmParameters& parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyCallback&& callback, ExceptionCallback&& exceptionCallback) @@ -110,7 +110,7 @@ void CryptoAlgorithmECDSA::importKey(CryptoKeyFormat format, KeyData&& data, con RefPtr result; switch (format) { case CryptoKeyFormat::Jwk: { - JsonWebKey key = WTFMove(std::get(data)); + JsonWebKey key = WTF::move(std::get(data)); if (usages && ((!key.d.isNull() && (usages ^ CryptoKeyUsageSign)) || (key.d.isNull() && (usages ^ CryptoKeyUsageVerify)))) { exceptionCallback(SyntaxError, ""_s); @@ -133,7 +133,7 @@ void CryptoAlgorithmECDSA::importKey(CryptoKeyFormat format, KeyData&& data, con return; } - result = CryptoKeyEC::importJwk(ecParameters.identifier, ecParameters.namedCurve, WTFMove(key), extractable, usages); + result = CryptoKeyEC::importJwk(ecParameters.identifier, ecParameters.namedCurve, WTF::move(key), extractable, usages); break; } case CryptoKeyFormat::Raw: @@ -141,21 +141,21 @@ void CryptoAlgorithmECDSA::importKey(CryptoKeyFormat format, KeyData&& data, con exceptionCallback(SyntaxError, ""_s); return; } - result = CryptoKeyEC::importRaw(ecParameters.identifier, ecParameters.namedCurve, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyEC::importRaw(ecParameters.identifier, ecParameters.namedCurve, WTF::move(std::get>(data)), extractable, usages); break; case CryptoKeyFormat::Spki: if (usages && (usages ^ CryptoKeyUsageVerify)) { exceptionCallback(SyntaxError, ""_s); return; } - result = CryptoKeyEC::importSpki(ecParameters.identifier, ecParameters.namedCurve, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyEC::importSpki(ecParameters.identifier, ecParameters.namedCurve, WTF::move(std::get>(data)), extractable, usages); break; case CryptoKeyFormat::Pkcs8: if (usages && (usages ^ CryptoKeyUsageSign)) { exceptionCallback(SyntaxError, ""_s); return; } - result = CryptoKeyEC::importPkcs8(ecParameters.identifier, ecParameters.namedCurve, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyEC::importPkcs8(ecParameters.identifier, ecParameters.namedCurve, WTF::move(std::get>(data)), extractable, usages); break; } if (!result) { @@ -215,7 +215,7 @@ void CryptoAlgorithmECDSA::exportKey(CryptoKeyFormat format, Ref&& ke } } - callback(format, WTFMove(result)); + callback(format, WTF::move(result)); } } // namespace WebCore diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmEd25519.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmEd25519.cpp index 826730b818..c113cf7a8e 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmEd25519.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmEd25519.cpp @@ -84,7 +84,7 @@ void CryptoAlgorithmEd25519::generateKey(const CryptoAlgorithmParameters&, bool auto pair = result.releaseReturnValue(); pair.publicKey->setUsagesBitmap(pair.publicKey->usagesBitmap() & CryptoKeyUsageVerify); pair.privateKey->setUsagesBitmap(pair.privateKey->usagesBitmap() & CryptoKeyUsageSign); - callback(WTFMove(pair)); + callback(WTF::move(pair)); } void CryptoAlgorithmEd25519::sign(const CryptoAlgorithmParameters&, Ref&& key, Vector&& data, VectorCallback&& callback, ExceptionCallback&& exceptionCallback, ScriptExecutionContext& context, WorkQueue& workQueue) @@ -93,8 +93,8 @@ void CryptoAlgorithmEd25519::sign(const CryptoAlgorithmParameters&, Ref(key.get()), data); }); } @@ -105,8 +105,8 @@ void CryptoAlgorithmEd25519::verify(const CryptoAlgorithmParameters&, Ref(key.get()), signature, data); }); } @@ -116,7 +116,7 @@ void CryptoAlgorithmEd25519::importKey(CryptoKeyFormat format, KeyData&& data, c RefPtr result; switch (format) { case CryptoKeyFormat::Jwk: { - JsonWebKey key = WTFMove(std::get(data)); + JsonWebKey key = WTF::move(std::get(data)); if (usages && ((!key.d.isNull() && (usages ^ CryptoKeyUsageSign)) || (key.d.isNull() && (usages ^ CryptoKeyUsageVerify)))) { exceptionCallback(SyntaxError, ""_s); return; @@ -125,7 +125,7 @@ void CryptoAlgorithmEd25519::importKey(CryptoKeyFormat format, KeyData&& data, c exceptionCallback(DataError, ""_s); return; } - result = CryptoKeyOKP::importJwk(CryptoAlgorithmIdentifier::Ed25519, CryptoKeyOKP::NamedCurve::Ed25519, WTFMove(key), extractable, usages); + result = CryptoKeyOKP::importJwk(CryptoAlgorithmIdentifier::Ed25519, CryptoKeyOKP::NamedCurve::Ed25519, WTF::move(key), extractable, usages); break; } case CryptoKeyFormat::Raw: @@ -133,21 +133,21 @@ void CryptoAlgorithmEd25519::importKey(CryptoKeyFormat format, KeyData&& data, c exceptionCallback(SyntaxError, ""_s); return; } - result = CryptoKeyOKP::importRaw(CryptoAlgorithmIdentifier::Ed25519, CryptoKeyOKP::NamedCurve::Ed25519, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyOKP::importRaw(CryptoAlgorithmIdentifier::Ed25519, CryptoKeyOKP::NamedCurve::Ed25519, WTF::move(std::get>(data)), extractable, usages); break; case CryptoKeyFormat::Spki: if (usages && (usages ^ CryptoKeyUsageVerify)) { exceptionCallback(SyntaxError, ""_s); return; } - result = CryptoKeyOKP::importSpki(CryptoAlgorithmIdentifier::Ed25519, CryptoKeyOKP::NamedCurve::Ed25519, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyOKP::importSpki(CryptoAlgorithmIdentifier::Ed25519, CryptoKeyOKP::NamedCurve::Ed25519, WTF::move(std::get>(data)), extractable, usages); break; case CryptoKeyFormat::Pkcs8: if (usages && (usages ^ CryptoKeyUsageSign)) { exceptionCallback(SyntaxError, ""_s); return; } - result = CryptoKeyOKP::importPkcs8(CryptoAlgorithmIdentifier::Ed25519, CryptoKeyOKP::NamedCurve::Ed25519, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyOKP::importPkcs8(CryptoAlgorithmIdentifier::Ed25519, CryptoKeyOKP::NamedCurve::Ed25519, WTF::move(std::get>(data)), extractable, usages); break; } if (!result) { @@ -203,7 +203,7 @@ void CryptoAlgorithmEd25519::exportKey(CryptoKeyFormat format, Ref&& break; } } - callback(format, WTFMove(result)); + callback(format, WTF::move(result)); } } // namespace WebCore diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmHKDF.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmHKDF.cpp index a8aafe83e0..bf4bab881e 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmHKDF.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmHKDF.cpp @@ -52,8 +52,8 @@ void CryptoAlgorithmHKDF::deriveBits(const CryptoAlgorithmParameters& parameters return; } - dispatchOperationInWorkQueue(workQueue, context, WTFMove(callback), WTFMove(exceptionCallback), - [parameters = crossThreadCopy(downcast(parameters)), baseKey = WTFMove(baseKey), length] { + dispatchOperationInWorkQueue(workQueue, context, WTF::move(callback), WTF::move(exceptionCallback), + [parameters = crossThreadCopy(downcast(parameters)), baseKey = WTF::move(baseKey), length] { return platformDeriveBits(parameters, downcast(baseKey.get()), length); }); } @@ -73,7 +73,7 @@ void CryptoAlgorithmHKDF::importKey(CryptoKeyFormat format, KeyData&& data, cons return; } - callback(CryptoKeyRaw::create(parameters.identifier, WTFMove(std::get>(data)), usages)); + callback(CryptoKeyRaw::create(parameters.identifier, WTF::move(std::get>(data)), usages)); } ExceptionOr CryptoAlgorithmHKDF::getKeyLength(const CryptoAlgorithmParameters&) diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmHMAC.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmHMAC.cpp index d5226cc6b6..f0c036ac8c 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmHMAC.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmHMAC.cpp @@ -59,16 +59,16 @@ CryptoAlgorithmIdentifier CryptoAlgorithmHMAC::identifier() const void CryptoAlgorithmHMAC::sign(const CryptoAlgorithmParameters&, Ref&& key, Vector&& data, VectorCallback&& callback, ExceptionCallback&& exceptionCallback, ScriptExecutionContext& context, WorkQueue& workQueue) { - dispatchOperationInWorkQueue(workQueue, context, WTFMove(callback), WTFMove(exceptionCallback), - [key = WTFMove(key), data = WTFMove(data)] { + dispatchOperationInWorkQueue(workQueue, context, WTF::move(callback), WTF::move(exceptionCallback), + [key = WTF::move(key), data = WTF::move(data)] { return platformSign(downcast(key.get()), data); }); } void CryptoAlgorithmHMAC::verify(const CryptoAlgorithmParameters&, Ref&& key, Vector&& signature, Vector&& data, BoolCallback&& callback, ExceptionCallback&& exceptionCallback, ScriptExecutionContext& context, WorkQueue& workQueue) { - dispatchOperationInWorkQueue(workQueue, context, WTFMove(callback), WTFMove(exceptionCallback), - [key = WTFMove(key), signature = WTFMove(signature), data = WTFMove(data)] { + dispatchOperationInWorkQueue(workQueue, context, WTF::move(callback), WTF::move(exceptionCallback), + [key = WTF::move(key), signature = WTF::move(signature), data = WTF::move(data)] { return platformVerify(downcast(key.get()), signature, data); }); } @@ -93,7 +93,7 @@ void CryptoAlgorithmHMAC::generateKey(const CryptoAlgorithmParameters& parameter return; } - callback(WTFMove(result)); + callback(WTF::move(result)); } void CryptoAlgorithmHMAC::importKey(CryptoKeyFormat format, KeyData&& data, const CryptoAlgorithmParameters& parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyCallback&& callback, ExceptionCallback&& exceptionCallback) @@ -110,7 +110,7 @@ void CryptoAlgorithmHMAC::importKey(CryptoKeyFormat format, KeyData&& data, cons RefPtr result; switch (format) { case CryptoKeyFormat::Raw: - result = CryptoKeyHMAC::importRaw(hmacParameters.length.value_or(0), hmacParameters.hashIdentifier, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyHMAC::importRaw(hmacParameters.length.value_or(0), hmacParameters.hashIdentifier, WTF::move(std::get>(data)), extractable, usages); break; case CryptoKeyFormat::Jwk: { auto checkAlgCallback = [](CryptoAlgorithmIdentifier hash, const String& alg) -> bool { @@ -130,7 +130,7 @@ void CryptoAlgorithmHMAC::importKey(CryptoKeyFormat format, KeyData&& data, cons } return false; }; - result = CryptoKeyHMAC::importJwk(hmacParameters.length.value_or(0), hmacParameters.hashIdentifier, WTFMove(std::get(data)), extractable, usages, WTFMove(checkAlgCallback)); + result = CryptoKeyHMAC::importJwk(hmacParameters.length.value_or(0), hmacParameters.hashIdentifier, WTF::move(std::get(data)), extractable, usages, WTF::move(checkAlgCallback)); break; } default: @@ -181,7 +181,7 @@ void CryptoAlgorithmHMAC::exportKey(CryptoKeyFormat format, Ref&& key default: ASSERT_NOT_REACHED(); } - result = WTFMove(jwk); + result = WTF::move(jwk); break; } default: @@ -189,7 +189,7 @@ void CryptoAlgorithmHMAC::exportKey(CryptoKeyFormat format, Ref&& key return; } - callback(format, WTFMove(result)); + callback(format, WTF::move(result)); } ExceptionOr CryptoAlgorithmHMAC::getKeyLength(const CryptoAlgorithmParameters& parameters) diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmHMACOpenSSL.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmHMACOpenSSL.cpp index 01d42f82fb..3f2b816092 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmHMACOpenSSL.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmHMACOpenSSL.cpp @@ -69,7 +69,7 @@ ExceptionOr> CryptoAlgorithmHMAC::platformSignWithAlgorithm(cons auto result = calculateSignature(algorithm, key.key(), data.begin(), data.size()); if (!result) return Exception { OperationError }; - return WTFMove(*result); + return WTF::move(*result); } ExceptionOr> CryptoAlgorithmHMAC::platformSign(const CryptoKeyHMAC& key, const Vector& data) @@ -81,7 +81,7 @@ ExceptionOr> CryptoAlgorithmHMAC::platformSign(const CryptoKeyHM auto result = calculateSignature(algorithm, key.key(), data.begin(), data.size()); if (!result) return Exception { OperationError }; - return WTFMove(*result); + return WTF::move(*result); } ExceptionOr CryptoAlgorithmHMAC::platformVerifyWithAlgorithm(const CryptoKeyHMAC& key, CryptoAlgorithmIdentifier algorithmIdentifier, const Vector& signature, const Vector& data) diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmPBKDF2.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmPBKDF2.cpp index 52d9736695..c72a7827ec 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmPBKDF2.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmPBKDF2.cpp @@ -52,8 +52,8 @@ void CryptoAlgorithmPBKDF2::deriveBits(const CryptoAlgorithmParameters& paramete return; } - dispatchOperationInWorkQueue(workQueue, context, WTFMove(callback), WTFMove(exceptionCallback), - [parameters = crossThreadCopy(downcast(parameters)), baseKey = WTFMove(baseKey), length] { + dispatchOperationInWorkQueue(workQueue, context, WTF::move(callback), WTF::move(exceptionCallback), + [parameters = crossThreadCopy(downcast(parameters)), baseKey = WTF::move(baseKey), length] { return platformDeriveBits(parameters, downcast(baseKey.get()), length); }); } @@ -73,7 +73,7 @@ void CryptoAlgorithmPBKDF2::importKey(CryptoKeyFormat format, KeyData&& data, co return; } - callback(CryptoKeyRaw::create(parameters.identifier, WTFMove(std::get>(data)), usages)); + callback(CryptoKeyRaw::create(parameters.identifier, WTF::move(std::get>(data)), usages)); } ExceptionOr CryptoAlgorithmPBKDF2::getKeyLength(const CryptoAlgorithmParameters&) diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp index 691ad5f4e2..50685c399c 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp @@ -54,8 +54,8 @@ void CryptoAlgorithmRSAES_PKCS1_v1_5::encrypt(const CryptoAlgorithmParameters&, return; } - dispatchOperationInWorkQueue(workQueue, context, WTFMove(callback), WTFMove(exceptionCallback), - [key = WTFMove(key), plainText = WTFMove(plainText)] { + dispatchOperationInWorkQueue(workQueue, context, WTF::move(callback), WTF::move(exceptionCallback), + [key = WTF::move(key), plainText = WTF::move(plainText)] { return platformEncrypt(downcast(key.get()), plainText); }); } @@ -67,8 +67,8 @@ void CryptoAlgorithmRSAES_PKCS1_v1_5::decrypt(const CryptoAlgorithmParameters&, return; } - dispatchOperationInWorkQueue(workQueue, context, WTFMove(callback), WTFMove(exceptionCallback), - [key = WTFMove(key), cipherText = WTFMove(cipherText)] { + dispatchOperationInWorkQueue(workQueue, context, WTF::move(callback), WTF::move(exceptionCallback), + [key = WTF::move(key), cipherText = WTF::move(cipherText)] { return platformDecrypt(downcast(key.get()), cipherText); }); } @@ -82,16 +82,16 @@ void CryptoAlgorithmRSAES_PKCS1_v1_5::generateKey(const CryptoAlgorithmParameter return; } - auto keyPairCallback = [capturedCallback = WTFMove(callback)](CryptoKeyPair&& pair) { + auto keyPairCallback = [capturedCallback = WTF::move(callback)](CryptoKeyPair&& pair) { pair.publicKey->setUsagesBitmap(pair.publicKey->usagesBitmap() & CryptoKeyUsageEncrypt); pair.privateKey->setUsagesBitmap(pair.privateKey->usagesBitmap() & CryptoKeyUsageDecrypt); - capturedCallback(WTFMove(pair)); + capturedCallback(WTF::move(pair)); }; - auto failureCallback = [capturedCallback = WTFMove(exceptionCallback)]() { + auto failureCallback = [capturedCallback = WTF::move(exceptionCallback)]() { capturedCallback(OperationError, ""_s); }; // Notice: CryptoAlgorithmIdentifier::SHA_1 is just a placeholder. It should not have any effect. - CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSAES_PKCS1_v1_5, CryptoAlgorithmIdentifier::SHA_1, false, rsaParameters.modulusLength, rsaParameters.publicExponentVector(), extractable, usages, WTFMove(keyPairCallback), WTFMove(failureCallback), &context); + CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSAES_PKCS1_v1_5, CryptoAlgorithmIdentifier::SHA_1, false, rsaParameters.modulusLength, rsaParameters.publicExponentVector(), extractable, usages, WTF::move(keyPairCallback), WTF::move(failureCallback), &context); } void CryptoAlgorithmRSAES_PKCS1_v1_5::importKey(CryptoKeyFormat format, KeyData&& data, const CryptoAlgorithmParameters& parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyCallback&& callback, ExceptionCallback&& exceptionCallback) @@ -99,7 +99,7 @@ void CryptoAlgorithmRSAES_PKCS1_v1_5::importKey(CryptoKeyFormat format, KeyData& RefPtr result; switch (format) { case CryptoKeyFormat::Jwk: { - JsonWebKey key = WTFMove(std::get(data)); + JsonWebKey key = WTF::move(std::get(data)); if (usages && ((!key.d.isNull() && (usages ^ CryptoKeyUsageDecrypt)) || (key.d.isNull() && (usages ^ CryptoKeyUsageEncrypt)))) { exceptionCallback(SyntaxError, ""_s); return; @@ -112,7 +112,7 @@ void CryptoAlgorithmRSAES_PKCS1_v1_5::importKey(CryptoKeyFormat format, KeyData& exceptionCallback(DataError, ""_s); return; } - result = CryptoKeyRSA::importJwk(parameters.identifier, std::nullopt, WTFMove(key), extractable, usages); + result = CryptoKeyRSA::importJwk(parameters.identifier, std::nullopt, WTF::move(key), extractable, usages); break; } case CryptoKeyFormat::Spki: { @@ -120,7 +120,7 @@ void CryptoAlgorithmRSAES_PKCS1_v1_5::importKey(CryptoKeyFormat format, KeyData& exceptionCallback(SyntaxError, ""_s); return; } - result = CryptoKeyRSA::importSpki(parameters.identifier, std::nullopt, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyRSA::importSpki(parameters.identifier, std::nullopt, WTF::move(std::get>(data)), extractable, usages); break; } case CryptoKeyFormat::Pkcs8: { @@ -128,7 +128,7 @@ void CryptoAlgorithmRSAES_PKCS1_v1_5::importKey(CryptoKeyFormat format, KeyData& exceptionCallback(SyntaxError, ""_s); return; } - result = CryptoKeyRSA::importPkcs8(parameters.identifier, std::nullopt, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyRSA::importPkcs8(parameters.identifier, std::nullopt, WTF::move(std::get>(data)), extractable, usages); break; } default: @@ -157,7 +157,7 @@ void CryptoAlgorithmRSAES_PKCS1_v1_5::exportKey(CryptoKeyFormat format, Ref(key.get()), data); }); } @@ -74,8 +74,8 @@ void CryptoAlgorithmRSASSA_PKCS1_v1_5::verify(const CryptoAlgorithmParameters&, return; } - dispatchOperationInWorkQueue(workQueue, context, WTFMove(callback), WTFMove(exceptionCallback), - [key = WTFMove(key), signature = WTFMove(signature), data = WTFMove(data)] { + dispatchOperationInWorkQueue(workQueue, context, WTF::move(callback), WTF::move(exceptionCallback), + [key = WTF::move(key), signature = WTF::move(signature), data = WTF::move(data)] { return platformVerify(downcast(key.get()), signature, data); }); } @@ -89,15 +89,15 @@ void CryptoAlgorithmRSASSA_PKCS1_v1_5::generateKey(const CryptoAlgorithmParamete return; } - auto keyPairCallback = [capturedCallback = WTFMove(callback)](CryptoKeyPair&& pair) { + auto keyPairCallback = [capturedCallback = WTF::move(callback)](CryptoKeyPair&& pair) { pair.publicKey->setUsagesBitmap(pair.publicKey->usagesBitmap() & CryptoKeyUsageVerify); pair.privateKey->setUsagesBitmap(pair.privateKey->usagesBitmap() & CryptoKeyUsageSign); - capturedCallback(WTFMove(pair)); + capturedCallback(WTF::move(pair)); }; - auto failureCallback = [capturedCallback = WTFMove(exceptionCallback)]() { + auto failureCallback = [capturedCallback = WTF::move(exceptionCallback)]() { capturedCallback(OperationError, ""_s); }; - CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSASSA_PKCS1_v1_5, rsaParameters.hashIdentifier, true, rsaParameters.modulusLength, rsaParameters.publicExponentVector(), extractable, usages, WTFMove(keyPairCallback), WTFMove(failureCallback), &context); + CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSASSA_PKCS1_v1_5, rsaParameters.hashIdentifier, true, rsaParameters.modulusLength, rsaParameters.publicExponentVector(), extractable, usages, WTF::move(keyPairCallback), WTF::move(failureCallback), &context); } void CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey(CryptoKeyFormat format, KeyData&& data, const CryptoAlgorithmParameters& parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyCallback&& callback, ExceptionCallback&& exceptionCallback) @@ -109,7 +109,7 @@ void CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey(CryptoKeyFormat format, KeyData RefPtr result; switch (format) { case CryptoKeyFormat::Jwk: { - JsonWebKey key = WTFMove(std::get(data)); + JsonWebKey key = WTF::move(std::get(data)); if (usages && ((!key.d.isNull() && (usages ^ CryptoKeyUsageSign)) || (key.d.isNull() && (usages ^ CryptoKeyUsageVerify)))) { exceptionCallback(SyntaxError, ""_s); @@ -145,7 +145,7 @@ void CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey(CryptoKeyFormat format, KeyData return; } - result = CryptoKeyRSA::importJwk(rsaParameters.identifier, rsaParameters.hashIdentifier, WTFMove(key), extractable, usages); + result = CryptoKeyRSA::importJwk(rsaParameters.identifier, rsaParameters.hashIdentifier, WTF::move(key), extractable, usages); break; } case CryptoKeyFormat::Spki: { @@ -154,7 +154,7 @@ void CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey(CryptoKeyFormat format, KeyData return; } // FIXME: - result = CryptoKeyRSA::importSpki(rsaParameters.identifier, rsaParameters.hashIdentifier, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyRSA::importSpki(rsaParameters.identifier, rsaParameters.hashIdentifier, WTF::move(std::get>(data)), extractable, usages); break; } case CryptoKeyFormat::Pkcs8: { @@ -163,7 +163,7 @@ void CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey(CryptoKeyFormat format, KeyData return; } // FIXME: - result = CryptoKeyRSA::importPkcs8(parameters.identifier, rsaParameters.hashIdentifier, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyRSA::importPkcs8(parameters.identifier, rsaParameters.hashIdentifier, WTF::move(std::get>(data)), extractable, usages); break; } default: @@ -211,7 +211,7 @@ void CryptoAlgorithmRSASSA_PKCS1_v1_5::exportKey(CryptoKeyFormat format, Ref(parameters)), key = WTFMove(key), plainText = WTFMove(plainText)] { + dispatchOperationInWorkQueue(workQueue, context, WTF::move(callback), WTF::move(exceptionCallback), + [parameters = crossThreadCopy(downcast(parameters)), key = WTF::move(key), plainText = WTF::move(plainText)] { return platformEncrypt(parameters, downcast(key.get()), plainText); }); } @@ -76,8 +76,8 @@ void CryptoAlgorithmRSA_OAEP::decrypt(const CryptoAlgorithmParameters& parameter return; } - dispatchOperationInWorkQueue(workQueue, context, WTFMove(callback), WTFMove(exceptionCallback), - [parameters = crossThreadCopy(downcast(parameters)), key = WTFMove(key), cipherText = WTFMove(cipherText)] { + dispatchOperationInWorkQueue(workQueue, context, WTF::move(callback), WTF::move(exceptionCallback), + [parameters = crossThreadCopy(downcast(parameters)), key = WTF::move(key), cipherText = WTF::move(cipherText)] { return platformDecrypt(parameters, downcast(key.get()), cipherText); }); } @@ -91,15 +91,15 @@ void CryptoAlgorithmRSA_OAEP::generateKey(const CryptoAlgorithmParameters& param return; } - auto keyPairCallback = [capturedCallback = WTFMove(callback)](CryptoKeyPair&& pair) { + auto keyPairCallback = [capturedCallback = WTF::move(callback)](CryptoKeyPair&& pair) { pair.publicKey->setUsagesBitmap(pair.publicKey->usagesBitmap() & (CryptoKeyUsageEncrypt | CryptoKeyUsageWrapKey)); pair.privateKey->setUsagesBitmap(pair.privateKey->usagesBitmap() & (CryptoKeyUsageDecrypt | CryptoKeyUsageUnwrapKey)); - capturedCallback(WTFMove(pair)); + capturedCallback(WTF::move(pair)); }; - auto failureCallback = [capturedCallback = WTFMove(exceptionCallback)]() { + auto failureCallback = [capturedCallback = WTF::move(exceptionCallback)]() { capturedCallback(OperationError, ""_s); }; - CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSA_OAEP, rsaParameters.hashIdentifier, true, rsaParameters.modulusLength, rsaParameters.publicExponentVector(), extractable, usages, WTFMove(keyPairCallback), WTFMove(failureCallback), &context); + CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSA_OAEP, rsaParameters.hashIdentifier, true, rsaParameters.modulusLength, rsaParameters.publicExponentVector(), extractable, usages, WTF::move(keyPairCallback), WTF::move(failureCallback), &context); } void CryptoAlgorithmRSA_OAEP::importKey(CryptoKeyFormat format, KeyData&& data, const CryptoAlgorithmParameters& parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyCallback&& callback, ExceptionCallback&& exceptionCallback) @@ -111,7 +111,7 @@ void CryptoAlgorithmRSA_OAEP::importKey(CryptoKeyFormat format, KeyData&& data, RefPtr result; switch (format) { case CryptoKeyFormat::Jwk: { - JsonWebKey key = WTFMove(std::get(data)); + JsonWebKey key = WTF::move(std::get(data)); bool isUsagesAllowed = false; if (!key.d.isNull()) { @@ -159,7 +159,7 @@ void CryptoAlgorithmRSA_OAEP::importKey(CryptoKeyFormat format, KeyData&& data, return; } - result = CryptoKeyRSA::importJwk(rsaParameters.identifier, rsaParameters.hashIdentifier, WTFMove(key), extractable, usages); + result = CryptoKeyRSA::importJwk(rsaParameters.identifier, rsaParameters.hashIdentifier, WTF::move(key), extractable, usages); break; } case CryptoKeyFormat::Spki: { @@ -168,7 +168,7 @@ void CryptoAlgorithmRSA_OAEP::importKey(CryptoKeyFormat format, KeyData&& data, return; } // FIXME: - result = CryptoKeyRSA::importSpki(rsaParameters.identifier, rsaParameters.hashIdentifier, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyRSA::importSpki(rsaParameters.identifier, rsaParameters.hashIdentifier, WTF::move(std::get>(data)), extractable, usages); break; } case CryptoKeyFormat::Pkcs8: { @@ -177,7 +177,7 @@ void CryptoAlgorithmRSA_OAEP::importKey(CryptoKeyFormat format, KeyData&& data, return; } // FIXME: - result = CryptoKeyRSA::importPkcs8(parameters.identifier, rsaParameters.hashIdentifier, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyRSA::importPkcs8(parameters.identifier, rsaParameters.hashIdentifier, WTF::move(std::get>(data)), extractable, usages); break; } default: @@ -225,7 +225,7 @@ void CryptoAlgorithmRSA_OAEP::exportKey(CryptoKeyFormat format, Ref&& default: ASSERT_NOT_REACHED(); } - result = WTFMove(jwk); + result = WTF::move(jwk); break; } case CryptoKeyFormat::Spki: { @@ -253,7 +253,7 @@ void CryptoAlgorithmRSA_OAEP::exportKey(CryptoKeyFormat format, Ref&& return; } - callback(format, WTFMove(result)); + callback(format, WTF::move(result)); } } diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmRSA_PSS.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmRSA_PSS.cpp index 11a851ff4a..d6e585d683 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmRSA_PSS.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmRSA_PSS.cpp @@ -63,8 +63,8 @@ void CryptoAlgorithmRSA_PSS::sign(const CryptoAlgorithmParameters& parameters, R return; } - dispatchOperationInWorkQueue(workQueue, context, WTFMove(callback), WTFMove(exceptionCallback), - [parameters = crossThreadCopy(downcast(parameters)), key = WTFMove(key), data = WTFMove(data)] { + dispatchOperationInWorkQueue(workQueue, context, WTF::move(callback), WTF::move(exceptionCallback), + [parameters = crossThreadCopy(downcast(parameters)), key = WTF::move(key), data = WTF::move(data)] { return platformSign(parameters, downcast(key.get()), data); }); } @@ -76,8 +76,8 @@ void CryptoAlgorithmRSA_PSS::verify(const CryptoAlgorithmParameters& parameters, return; } - dispatchOperationInWorkQueue(workQueue, context, WTFMove(callback), WTFMove(exceptionCallback), - [parameters = crossThreadCopy(downcast(parameters)), key = WTFMove(key), signature = WTFMove(signature), data = WTFMove(data)] { + dispatchOperationInWorkQueue(workQueue, context, WTF::move(callback), WTF::move(exceptionCallback), + [parameters = crossThreadCopy(downcast(parameters)), key = WTF::move(key), signature = WTF::move(signature), data = WTF::move(data)] { return platformVerify(parameters, downcast(key.get()), signature, data); }); } @@ -91,15 +91,15 @@ void CryptoAlgorithmRSA_PSS::generateKey(const CryptoAlgorithmParameters& parame return; } - auto keyPairCallback = [capturedCallback = WTFMove(callback)](CryptoKeyPair&& pair) { + auto keyPairCallback = [capturedCallback = WTF::move(callback)](CryptoKeyPair&& pair) { pair.publicKey->setUsagesBitmap(pair.publicKey->usagesBitmap() & CryptoKeyUsageVerify); pair.privateKey->setUsagesBitmap(pair.privateKey->usagesBitmap() & CryptoKeyUsageSign); - capturedCallback(WTFMove(pair)); + capturedCallback(WTF::move(pair)); }; - auto failureCallback = [capturedCallback = WTFMove(exceptionCallback)]() { + auto failureCallback = [capturedCallback = WTF::move(exceptionCallback)]() { capturedCallback(OperationError, ""_s); }; - CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSA_PSS, rsaParameters.hashIdentifier, true, rsaParameters.modulusLength, rsaParameters.publicExponentVector(), extractable, usages, WTFMove(keyPairCallback), WTFMove(failureCallback), &context); + CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSA_PSS, rsaParameters.hashIdentifier, true, rsaParameters.modulusLength, rsaParameters.publicExponentVector(), extractable, usages, WTF::move(keyPairCallback), WTF::move(failureCallback), &context); } void CryptoAlgorithmRSA_PSS::importKey(CryptoKeyFormat format, KeyData&& data, const CryptoAlgorithmParameters& parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyCallback&& callback, ExceptionCallback&& exceptionCallback) @@ -111,7 +111,7 @@ void CryptoAlgorithmRSA_PSS::importKey(CryptoKeyFormat format, KeyData&& data, c RefPtr result; switch (format) { case CryptoKeyFormat::Jwk: { - JsonWebKey key = WTFMove(std::get(data)); + JsonWebKey key = WTF::move(std::get(data)); if (usages && ((!key.d.isNull() && (usages ^ CryptoKeyUsageSign)) || (key.d.isNull() && (usages ^ CryptoKeyUsageVerify)))) { exceptionCallback(SyntaxError, ""_s); @@ -147,7 +147,7 @@ void CryptoAlgorithmRSA_PSS::importKey(CryptoKeyFormat format, KeyData&& data, c return; } - result = CryptoKeyRSA::importJwk(rsaParameters.identifier, rsaParameters.hashIdentifier, WTFMove(key), extractable, usages); + result = CryptoKeyRSA::importJwk(rsaParameters.identifier, rsaParameters.hashIdentifier, WTF::move(key), extractable, usages); break; } case CryptoKeyFormat::Spki: { @@ -156,7 +156,7 @@ void CryptoAlgorithmRSA_PSS::importKey(CryptoKeyFormat format, KeyData&& data, c return; } // FIXME: - result = CryptoKeyRSA::importSpki(rsaParameters.identifier, rsaParameters.hashIdentifier, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyRSA::importSpki(rsaParameters.identifier, rsaParameters.hashIdentifier, WTF::move(std::get>(data)), extractable, usages); break; } case CryptoKeyFormat::Pkcs8: { @@ -165,7 +165,7 @@ void CryptoAlgorithmRSA_PSS::importKey(CryptoKeyFormat format, KeyData&& data, c return; } // FIXME: - result = CryptoKeyRSA::importPkcs8(parameters.identifier, rsaParameters.hashIdentifier, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyRSA::importPkcs8(parameters.identifier, rsaParameters.hashIdentifier, WTF::move(std::get>(data)), extractable, usages); break; } default: @@ -213,7 +213,7 @@ void CryptoAlgorithmRSA_PSS::exportKey(CryptoKeyFormat format, Ref&& default: ASSERT_NOT_REACHED(); } - result = WTFMove(jwk); + result = WTF::move(jwk); break; } case CryptoKeyFormat::Spki: { @@ -239,7 +239,7 @@ void CryptoAlgorithmRSA_PSS::exportKey(CryptoKeyFormat format, Ref&& return; } - callback(format, WTFMove(result)); + callback(format, WTF::move(result)); } } diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmRsaOaepParams.h b/src/bun.js/bindings/webcrypto/CryptoAlgorithmRsaOaepParams.h index 4b58f7bb67..40874a066f 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmRsaOaepParams.h +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmRsaOaepParams.h @@ -46,7 +46,7 @@ public: if (!m_labelVector.isEmpty() || !label) return m_labelVector; - BufferSource labelBuffer = WTFMove(*label); + BufferSource labelBuffer = WTF::move(*label); label = std::nullopt; if (!labelBuffer.length()) return m_labelVector; diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA1.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA1.cpp index 1332ddafef..16a2400f16 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA1.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA1.cpp @@ -52,19 +52,19 @@ void CryptoAlgorithmSHA1::digest(Vector&& message, VectorCallback&& cal } if (message.size() < 64) { - auto moved = WTFMove(message); + auto moved = WTF::move(message); digest->addBytes(moved.begin(), moved.size()); auto result = digest->computeHash(); - ScriptExecutionContext::postTaskTo(context.identifier(), [callback = WTFMove(callback), result = WTFMove(result)](auto&) { + ScriptExecutionContext::postTaskTo(context.identifier(), [callback = WTF::move(callback), result = WTF::move(result)](auto&) { callback(result); }); return; } - workQueue.dispatch(context.globalObject(), [digest = WTFMove(digest), message = WTFMove(message), callback = WTFMove(callback), contextIdentifier = context.identifier()]() mutable { + workQueue.dispatch(context.globalObject(), [digest = WTF::move(digest), message = WTF::move(message), callback = WTF::move(callback), contextIdentifier = context.identifier()]() mutable { digest->addBytes(message.begin(), message.size()); auto result = digest->computeHash(); - ScriptExecutionContext::postTaskTo(contextIdentifier, [callback = WTFMove(callback), result = WTFMove(result)](auto&) { + ScriptExecutionContext::postTaskTo(contextIdentifier, [callback = WTF::move(callback), result = WTF::move(result)](auto&) { callback(result); }); }); diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA224.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA224.cpp index ae5afb8913..d764c4b5b9 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA224.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA224.cpp @@ -52,19 +52,19 @@ void CryptoAlgorithmSHA224::digest(Vector&& message, VectorCallback&& c } if (message.size() < 64) { - auto moved = WTFMove(message); + auto moved = WTF::move(message); digest->addBytes(moved.begin(), moved.size()); auto result = digest->computeHash(); - ScriptExecutionContext::postTaskTo(context.identifier(), [callback = WTFMove(callback), result = WTFMove(result)](auto&) { + ScriptExecutionContext::postTaskTo(context.identifier(), [callback = WTF::move(callback), result = WTF::move(result)](auto&) { callback(result); }); return; } - workQueue.dispatch(context.globalObject(), [digest = WTFMove(digest), message = WTFMove(message), callback = WTFMove(callback), contextIdentifier = context.identifier()]() mutable { + workQueue.dispatch(context.globalObject(), [digest = WTF::move(digest), message = WTF::move(message), callback = WTF::move(callback), contextIdentifier = context.identifier()]() mutable { digest->addBytes(message.begin(), message.size()); auto result = digest->computeHash(); - ScriptExecutionContext::postTaskTo(contextIdentifier, [callback = WTFMove(callback), result = WTFMove(result)](auto&) { + ScriptExecutionContext::postTaskTo(contextIdentifier, [callback = WTF::move(callback), result = WTF::move(result)](auto&) { callback(result); }); }); diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA256.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA256.cpp index f9bde62144..63e78ef42f 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA256.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA256.cpp @@ -52,19 +52,19 @@ void CryptoAlgorithmSHA256::digest(Vector&& message, VectorCallback&& c } if (message.size() < 64) { - auto moved = WTFMove(message); + auto moved = WTF::move(message); digest->addBytes(moved.begin(), moved.size()); auto result = digest->computeHash(); - ScriptExecutionContext::postTaskTo(context.identifier(), [callback = WTFMove(callback), result = WTFMove(result)](auto&) { + ScriptExecutionContext::postTaskTo(context.identifier(), [callback = WTF::move(callback), result = WTF::move(result)](auto&) { callback(result); }); return; } - workQueue.dispatch(context.globalObject(), [digest = WTFMove(digest), message = WTFMove(message), callback = WTFMove(callback), contextIdentifier = context.identifier()]() mutable { + workQueue.dispatch(context.globalObject(), [digest = WTF::move(digest), message = WTF::move(message), callback = WTF::move(callback), contextIdentifier = context.identifier()]() mutable { digest->addBytes(message.begin(), message.size()); auto result = digest->computeHash(); - ScriptExecutionContext::postTaskTo(contextIdentifier, [callback = WTFMove(callback), result = WTFMove(result)](auto&) { + ScriptExecutionContext::postTaskTo(contextIdentifier, [callback = WTF::move(callback), result = WTF::move(result)](auto&) { callback(result); }); }); diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA384.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA384.cpp index cfd3b6a030..880b178f17 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA384.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA384.cpp @@ -52,19 +52,19 @@ void CryptoAlgorithmSHA384::digest(Vector&& message, VectorCallback&& c } if (message.size() < 64) { - auto moved = WTFMove(message); + auto moved = WTF::move(message); digest->addBytes(moved.begin(), moved.size()); auto result = digest->computeHash(); - ScriptExecutionContext::postTaskTo(context.identifier(), [callback = WTFMove(callback), result = WTFMove(result)](auto&) { + ScriptExecutionContext::postTaskTo(context.identifier(), [callback = WTF::move(callback), result = WTF::move(result)](auto&) { callback(result); }); return; } - workQueue.dispatch(context.globalObject(), [digest = WTFMove(digest), message = WTFMove(message), callback = WTFMove(callback), contextIdentifier = context.identifier()]() mutable { + workQueue.dispatch(context.globalObject(), [digest = WTF::move(digest), message = WTF::move(message), callback = WTF::move(callback), contextIdentifier = context.identifier()]() mutable { digest->addBytes(message.begin(), message.size()); auto result = digest->computeHash(); - ScriptExecutionContext::postTaskTo(contextIdentifier, [callback = WTFMove(callback), result = WTFMove(result)](auto&) { + ScriptExecutionContext::postTaskTo(contextIdentifier, [callback = WTF::move(callback), result = WTF::move(result)](auto&) { callback(result); }); }); diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA512.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA512.cpp index 0d0b231cbc..0adba58b4b 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA512.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA512.cpp @@ -52,19 +52,19 @@ void CryptoAlgorithmSHA512::digest(Vector&& message, VectorCallback&& c } if (message.size() < 64) { - auto moved = WTFMove(message); + auto moved = WTF::move(message); digest->addBytes(moved.begin(), moved.size()); auto result = digest->computeHash(); - ScriptExecutionContext::postTaskTo(context.identifier(), [callback = WTFMove(callback), result = WTFMove(result)](auto&) { + ScriptExecutionContext::postTaskTo(context.identifier(), [callback = WTF::move(callback), result = WTF::move(result)](auto&) { callback(result); }); return; } - workQueue.dispatch(context.globalObject(), [digest = WTFMove(digest), message = WTFMove(message), callback = WTFMove(callback), contextIdentifier = context.identifier()]() mutable { + workQueue.dispatch(context.globalObject(), [digest = WTF::move(digest), message = WTF::move(message), callback = WTF::move(callback), contextIdentifier = context.identifier()]() mutable { digest->addBytes(message.begin(), message.size()); auto result = digest->computeHash(); - ScriptExecutionContext::postTaskTo(contextIdentifier, [callback = WTFMove(callback), result = WTFMove(result)](auto&) { + ScriptExecutionContext::postTaskTo(contextIdentifier, [callback = WTF::move(callback), result = WTF::move(result)](auto&) { callback(result); }); }); diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmX25519.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmX25519.cpp index e954bdeb6d..a4fd7862d3 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmX25519.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmX25519.cpp @@ -56,7 +56,7 @@ void CryptoAlgorithmX25519::generateKey(const CryptoAlgorithmParameters&, bool e auto pair = result.releaseReturnValue(); pair.publicKey->setUsagesBitmap(0); pair.privateKey->setUsagesBitmap(pair.privateKey->usagesBitmap() & (CryptoKeyUsageDeriveKey | CryptoKeyUsageDeriveBits)); - callback(WTFMove(pair)); + callback(WTF::move(pair)); } #if !PLATFORM(COCOA) && !USE(GCRYPT) @@ -97,13 +97,13 @@ void CryptoAlgorithmX25519::deriveBits(const CryptoAlgorithmParameters& paramete return; } - auto unifiedCallback = [callback = WTFMove(callback), exceptionCallback = WTFMove(exceptionCallback)](std::optional>&& derivedKey, std::optional length) mutable { + auto unifiedCallback = [callback = WTF::move(callback), exceptionCallback = WTF::move(exceptionCallback)](std::optional>&& derivedKey, std::optional length) mutable { if (!derivedKey) { exceptionCallback(ExceptionCode::OperationError, ""_s); return; } if (!length) { - callback(WTFMove(*derivedKey)); + callback(WTF::move(*derivedKey)); return; } #if !HAVE(X25519_ZERO_CHECKS) @@ -121,16 +121,16 @@ void CryptoAlgorithmX25519::deriveBits(const CryptoAlgorithmParameters& paramete return; } (*derivedKey).shrink(lengthInBytes); - callback(WTFMove(*derivedKey)); + callback(WTF::move(*derivedKey)); }; // This is a special case that can't use dispatchOperation() because it bundles // the result validation and callback dispatch into unifiedCallback. workQueue.dispatch( context.globalObject(), - [baseKey = WTFMove(baseKey), publicKey = ecParameters.publicKey, length, unifiedCallback = WTFMove(unifiedCallback), contextIdentifier = context.identifier()]() mutable { + [baseKey = WTF::move(baseKey), publicKey = ecParameters.publicKey, length, unifiedCallback = WTF::move(unifiedCallback), contextIdentifier = context.identifier()]() mutable { auto derivedKey = platformDeriveBits(downcast(baseKey.get()), downcast(*publicKey)); - ScriptExecutionContext::postTaskTo(contextIdentifier, [derivedKey = WTFMove(derivedKey), length, unifiedCallback = WTFMove(unifiedCallback)](auto&) mutable { - unifiedCallback(WTFMove(derivedKey), length); + ScriptExecutionContext::postTaskTo(contextIdentifier, [derivedKey = WTF::move(derivedKey), length, unifiedCallback = WTF::move(unifiedCallback)](auto&) mutable { + unifiedCallback(WTF::move(derivedKey), length); }); }); } @@ -140,7 +140,7 @@ void CryptoAlgorithmX25519::importKey(CryptoKeyFormat format, KeyData&& data, co RefPtr result; switch (format) { case CryptoKeyFormat::Jwk: { - JsonWebKey key = WTFMove(std::get(data)); + JsonWebKey key = WTF::move(std::get(data)); bool isUsagesAllowed = false; if (!key.d.isNull()) { @@ -159,7 +159,7 @@ void CryptoAlgorithmX25519::importKey(CryptoKeyFormat format, KeyData&& data, co return; } - result = CryptoKeyOKP::importJwk(CryptoAlgorithmIdentifier::X25519, CryptoKeyOKP::NamedCurve::X25519, WTFMove(key), extractable, usages); + result = CryptoKeyOKP::importJwk(CryptoAlgorithmIdentifier::X25519, CryptoKeyOKP::NamedCurve::X25519, WTF::move(key), extractable, usages); break; } case CryptoKeyFormat::Raw: @@ -167,21 +167,21 @@ void CryptoAlgorithmX25519::importKey(CryptoKeyFormat format, KeyData&& data, co exceptionCallback(ExceptionCode::SyntaxError, ""_s); return; } - result = CryptoKeyOKP::importRaw(CryptoAlgorithmIdentifier::X25519, CryptoKeyOKP::NamedCurve::X25519, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyOKP::importRaw(CryptoAlgorithmIdentifier::X25519, CryptoKeyOKP::NamedCurve::X25519, WTF::move(std::get>(data)), extractable, usages); break; case CryptoKeyFormat::Spki: if (usages) { exceptionCallback(ExceptionCode::SyntaxError, ""_s); return; } - result = CryptoKeyOKP::importSpki(CryptoAlgorithmIdentifier::X25519, CryptoKeyOKP::NamedCurve::X25519, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyOKP::importSpki(CryptoAlgorithmIdentifier::X25519, CryptoKeyOKP::NamedCurve::X25519, WTF::move(std::get>(data)), extractable, usages); break; case CryptoKeyFormat::Pkcs8: if (usages && (usages ^ CryptoKeyUsageDeriveKey) && (usages ^ CryptoKeyUsageDeriveBits) && (usages ^ (CryptoKeyUsageDeriveKey | CryptoKeyUsageDeriveBits))) { exceptionCallback(ExceptionCode::SyntaxError, ""_s); return; } - result = CryptoKeyOKP::importPkcs8(CryptoAlgorithmIdentifier::X25519, CryptoKeyOKP::NamedCurve::X25519, WTFMove(std::get>(data)), extractable, usages); + result = CryptoKeyOKP::importPkcs8(CryptoAlgorithmIdentifier::X25519, CryptoKeyOKP::NamedCurve::X25519, WTF::move(std::get>(data)), extractable, usages); break; } if (!result) { @@ -241,7 +241,7 @@ void CryptoAlgorithmX25519::exportKey(CryptoKeyFormat format, Ref&& k } } - callback(format, WTFMove(result)); + callback(format, WTF::move(result)); } } // namespace WebCore diff --git a/src/bun.js/bindings/webcrypto/CryptoKeyAES.cpp b/src/bun.js/bindings/webcrypto/CryptoKeyAES.cpp index 12a84ebef2..fccffe6219 100644 --- a/src/bun.js/bindings/webcrypto/CryptoKeyAES.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoKeyAES.cpp @@ -52,7 +52,7 @@ CryptoKeyAES::CryptoKeyAES(CryptoAlgorithmIdentifier algorithm, const Vector&& key, bool extractable, CryptoKeyUsageBitmap usage) : CryptoKey(algorithm, CryptoKeyType::Secret, extractable, usage) - , m_key(WTFMove(key)) + , m_key(WTF::move(key)) { ASSERT(isValidAESAlgorithm(algorithm)); } @@ -79,7 +79,7 @@ RefPtr CryptoKeyAES::importRaw(CryptoAlgorithmIdentifier algorithm { if (!lengthIsValid(keyData.size() * 8)) return nullptr; - return adoptRef(new CryptoKeyAES(algorithm, WTFMove(keyData), extractable, usages)); + return adoptRef(new CryptoKeyAES(algorithm, WTF::move(keyData), extractable, usages)); } RefPtr CryptoKeyAES::importJwk(CryptoAlgorithmIdentifier algorithm, JsonWebKey&& keyData, bool extractable, CryptoKeyUsageBitmap usages, CheckAlgCallback&& callback) @@ -100,7 +100,7 @@ RefPtr CryptoKeyAES::importJwk(CryptoAlgorithmIdentifier algorithm if (keyData.ext && !keyData.ext.value() && extractable) return nullptr; - return adoptRef(new CryptoKeyAES(algorithm, WTFMove(*octetSequence), extractable, usages)); + return adoptRef(new CryptoKeyAES(algorithm, WTF::move(*octetSequence), extractable, usages)); } JsonWebKey CryptoKeyAES::exportJwk() const diff --git a/src/bun.js/bindings/webcrypto/CryptoKeyEC.cpp b/src/bun.js/bindings/webcrypto/CryptoKeyEC.cpp index 596e23d8d9..8a48467947 100644 --- a/src/bun.js/bindings/webcrypto/CryptoKeyEC.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoKeyEC.cpp @@ -52,7 +52,7 @@ static std::optional toNamedCurve(const String& curve) CryptoKeyEC::CryptoKeyEC(CryptoAlgorithmIdentifier identifier, NamedCurve curve, CryptoKeyType type, PlatformECKeyContainer&& platformKey, bool extractable, CryptoKeyUsageBitmap usages) : CryptoKey(identifier, type, extractable, usages) - , m_platformKey(WTFMove(platformKey)) + , m_platformKey(WTF::move(platformKey)) , m_curve(curve) { // Only CryptoKeyEC objects for supported curves should be created. @@ -69,7 +69,7 @@ ExceptionOr CryptoKeyEC::generatePair(CryptoAlgorithmIdentifier i if (!result) return Exception { OperationError }; - return WTFMove(*result); + return WTF::move(*result); } RefPtr CryptoKeyEC::importRaw(CryptoAlgorithmIdentifier identifier, const String& curve, Vector&& keyData, bool extractable, CryptoKeyUsageBitmap usages) @@ -78,7 +78,7 @@ RefPtr CryptoKeyEC::importRaw(CryptoAlgorithmIdentifier identifier, if (!namedCurve || !platformSupportedCurve(*namedCurve)) return nullptr; - return platformImportRaw(identifier, *namedCurve, WTFMove(keyData), extractable, usages); + return platformImportRaw(identifier, *namedCurve, WTF::move(keyData), extractable, usages); } RefPtr CryptoKeyEC::importJwk(CryptoAlgorithmIdentifier identifier, const String& curve, JsonWebKey&& keyData, bool extractable, CryptoKeyUsageBitmap usages) @@ -106,14 +106,14 @@ RefPtr CryptoKeyEC::importJwk(CryptoAlgorithmIdentifier identifier, return nullptr; if (keyData.d.isNull()) { // import public key - return platformImportJWKPublic(identifier, *namedCurve, WTFMove(*x), WTFMove(*y), extractable, usages); + return platformImportJWKPublic(identifier, *namedCurve, WTF::move(*x), WTF::move(*y), extractable, usages); } auto d = base64URLDecode(keyData.d); if (!d) return nullptr; // import private key - return platformImportJWKPrivate(identifier, *namedCurve, WTFMove(*x), WTFMove(*y), WTFMove(*d), extractable, usages); + return platformImportJWKPrivate(identifier, *namedCurve, WTF::move(*x), WTF::move(*y), WTF::move(*d), extractable, usages); } RefPtr CryptoKeyEC::importSpki(CryptoAlgorithmIdentifier identifier, const String& curve, Vector&& keyData, bool extractable, CryptoKeyUsageBitmap usages) @@ -122,7 +122,7 @@ RefPtr CryptoKeyEC::importSpki(CryptoAlgorithmIdentifier identifier if (!namedCurve || !platformSupportedCurve(*namedCurve)) return nullptr; - return platformImportSpki(identifier, *namedCurve, WTFMove(keyData), extractable, usages); + return platformImportSpki(identifier, *namedCurve, WTF::move(keyData), extractable, usages); } RefPtr CryptoKeyEC::importPkcs8(CryptoAlgorithmIdentifier identifier, const String& curve, Vector&& keyData, bool extractable, CryptoKeyUsageBitmap usages) @@ -131,7 +131,7 @@ RefPtr CryptoKeyEC::importPkcs8(CryptoAlgorithmIdentifier identifie if (!namedCurve || !platformSupportedCurve(*namedCurve)) return nullptr; - return platformImportPkcs8(identifier, *namedCurve, WTFMove(keyData), extractable, usages); + return platformImportPkcs8(identifier, *namedCurve, WTF::move(keyData), extractable, usages); } ExceptionOr> CryptoKeyEC::exportRaw() const @@ -142,7 +142,7 @@ ExceptionOr> CryptoKeyEC::exportRaw() const auto&& result = platformExportRaw(); if (result.isEmpty()) return Exception { OperationError }; - return WTFMove(result); + return WTF::move(result); } ExceptionOr CryptoKeyEC::exportJwk() const @@ -175,7 +175,7 @@ ExceptionOr> CryptoKeyEC::exportSpki() const auto&& result = platformExportSpki(); if (result.isEmpty()) return Exception { OperationError }; - return WTFMove(result); + return WTF::move(result); } ExceptionOr> CryptoKeyEC::exportPkcs8() const @@ -186,7 +186,7 @@ ExceptionOr> CryptoKeyEC::exportPkcs8() const auto&& result = platformExportPkcs8(); if (result.isEmpty()) return Exception { OperationError }; - return WTFMove(result); + return WTF::move(result); } String CryptoKeyEC::namedCurveString() const diff --git a/src/bun.js/bindings/webcrypto/CryptoKeyEC.h b/src/bun.js/bindings/webcrypto/CryptoKeyEC.h index 8e8f5eb351..f8fb270ae2 100644 --- a/src/bun.js/bindings/webcrypto/CryptoKeyEC.h +++ b/src/bun.js/bindings/webcrypto/CryptoKeyEC.h @@ -70,7 +70,7 @@ public: static Ref create(CryptoAlgorithmIdentifier identifier, NamedCurve curve, CryptoKeyType type, PlatformECKeyContainer&& platformKey, bool extractable, CryptoKeyUsageBitmap usages) { - return adoptRef(*new CryptoKeyEC(identifier, curve, type, WTFMove(platformKey), extractable, usages)); + return adoptRef(*new CryptoKeyEC(identifier, curve, type, WTF::move(platformKey), extractable, usages)); } virtual ~CryptoKeyEC() = default; diff --git a/src/bun.js/bindings/webcrypto/CryptoKeyECOpenSSL.cpp b/src/bun.js/bindings/webcrypto/CryptoKeyECOpenSSL.cpp index 565d98264c..05a597f53f 100644 --- a/src/bun.js/bindings/webcrypto/CryptoKeyECOpenSSL.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoKeyECOpenSSL.cpp @@ -130,9 +130,9 @@ std::optional CryptoKeyEC::platformGeneratePair(CryptoAlgorithmId if (EVP_PKEY_set1_EC_KEY(publicPKey.get(), publicECKey.get()) <= 0) return std::nullopt; - auto publicKey = CryptoKeyEC::create(identifier, curve, CryptoKeyType::Public, WTFMove(publicPKey), true, usages); - auto privateKey = CryptoKeyEC::create(identifier, curve, CryptoKeyType::Private, WTFMove(privatePKey), extractable, usages); - return CryptoKeyPair { WTFMove(publicKey), WTFMove(privateKey) }; + auto publicKey = CryptoKeyEC::create(identifier, curve, CryptoKeyType::Public, WTF::move(publicPKey), true, usages); + auto privateKey = CryptoKeyEC::create(identifier, curve, CryptoKeyType::Private, WTF::move(privatePKey), extractable, usages); + return CryptoKeyPair { WTF::move(publicKey), WTF::move(privateKey) }; } RefPtr CryptoKeyEC::platformImportRaw(CryptoAlgorithmIdentifier identifier, NamedCurve curve, Vector&& keyData, bool extractable, CryptoKeyUsageBitmap usages) @@ -157,7 +157,7 @@ RefPtr CryptoKeyEC::platformImportRaw(CryptoAlgorithmIdentifier ide if (EVP_PKEY_set1_EC_KEY(pkey.get(), key.get()) <= 0) return nullptr; - return create(identifier, curve, CryptoKeyType::Public, WTFMove(pkey), extractable, usages); + return create(identifier, curve, CryptoKeyType::Public, WTF::move(pkey), extractable, usages); } RefPtr CryptoKeyEC::platformImportJWKPublic(CryptoAlgorithmIdentifier identifier, NamedCurve curve, Vector&& x, Vector&& y, bool extractable, CryptoKeyUsageBitmap usages) @@ -183,7 +183,7 @@ RefPtr CryptoKeyEC::platformImportJWKPublic(CryptoAlgorithmIdentifi if (EVP_PKEY_set1_EC_KEY(pkey.get(), key.get()) <= 0) return nullptr; - return create(identifier, curve, CryptoKeyType::Public, WTFMove(pkey), extractable, usages); + return create(identifier, curve, CryptoKeyType::Public, WTF::move(pkey), extractable, usages); } RefPtr CryptoKeyEC::platformImportJWKPrivate(CryptoAlgorithmIdentifier identifier, NamedCurve curve, Vector&& x, Vector&& y, Vector&& d, bool extractable, CryptoKeyUsageBitmap usages) @@ -212,7 +212,7 @@ RefPtr CryptoKeyEC::platformImportJWKPrivate(CryptoAlgorithmIdentif if (EVP_PKEY_set1_EC_KEY(pkey.get(), key.get()) <= 0) return nullptr; - return create(identifier, curve, CryptoKeyType::Private, WTFMove(pkey), extractable, usages); + return create(identifier, curve, CryptoKeyType::Private, WTF::move(pkey), extractable, usages); } static const ASN1_OBJECT* ecPublicKeyIdentifier() @@ -342,7 +342,7 @@ RefPtr CryptoKeyEC::platformImportSpki(CryptoAlgorithmIdentifier id if (EVP_PKEY_set1_EC_KEY(pkey.get(), key.get()) <= 0) return nullptr; - return adoptRef(new CryptoKeyEC(identifier, curve, CryptoKeyType::Public, WTFMove(pkey), extractable, usages)); + return adoptRef(new CryptoKeyEC(identifier, curve, CryptoKeyType::Public, WTF::move(pkey), extractable, usages)); } RefPtr CryptoKeyEC::platformImportPkcs8(CryptoAlgorithmIdentifier identifier, NamedCurve curve, Vector&& keyData, bool extractable, CryptoKeyUsageBitmap usages) @@ -373,7 +373,7 @@ RefPtr CryptoKeyEC::platformImportPkcs8(CryptoAlgorithmIdentifier i EC_KEY_set_asn1_flag(ecKey, OPENSSL_EC_NAMED_CURVE); - return adoptRef(new CryptoKeyEC(identifier, curve, CryptoKeyType::Private, WTFMove(pkey), extractable, usages)); + return adoptRef(new CryptoKeyEC(identifier, curve, CryptoKeyType::Private, WTF::move(pkey), extractable, usages)); } Vector CryptoKeyEC::platformExportRaw() const diff --git a/src/bun.js/bindings/webcrypto/CryptoKeyHMAC.cpp b/src/bun.js/bindings/webcrypto/CryptoKeyHMAC.cpp index 2ffd83a00b..5bde29b77e 100644 --- a/src/bun.js/bindings/webcrypto/CryptoKeyHMAC.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoKeyHMAC.cpp @@ -64,7 +64,7 @@ CryptoKeyHMAC::CryptoKeyHMAC(const Vector& key, CryptoAlgorithmIdentifi CryptoKeyHMAC::CryptoKeyHMAC(Vector&& key, CryptoAlgorithmIdentifier hash, bool extractable, CryptoKeyUsageBitmap usage) : CryptoKey(CryptoAlgorithmIdentifier::HMAC, CryptoKeyType::Secret, extractable, usage) , m_hash(hash) - , m_key(WTFMove(key)) + , m_key(WTF::move(key)) { } @@ -102,7 +102,7 @@ RefPtr CryptoKeyHMAC::importRaw(size_t lengthBits, CryptoAlgorith if (lengthBits && lengthBits != length) return nullptr; - return adoptRef(new CryptoKeyHMAC(WTFMove(keyData), hash, extractable, usages)); + return adoptRef(new CryptoKeyHMAC(WTF::move(keyData), hash, extractable, usages)); } RefPtr CryptoKeyHMAC::importJwk(size_t lengthBits, CryptoAlgorithmIdentifier hash, JsonWebKey&& keyData, bool extractable, CryptoKeyUsageBitmap usages, CheckAlgCallback&& callback) @@ -123,7 +123,7 @@ RefPtr CryptoKeyHMAC::importJwk(size_t lengthBits, CryptoAlgorith if (keyData.ext && !keyData.ext.value() && extractable) return nullptr; - return CryptoKeyHMAC::importRaw(lengthBits, hash, WTFMove(*octetSequence), extractable, usages); + return CryptoKeyHMAC::importRaw(lengthBits, hash, WTF::move(*octetSequence), extractable, usages); } JsonWebKey CryptoKeyHMAC::exportJwk() const diff --git a/src/bun.js/bindings/webcrypto/CryptoKeyOKP.cpp b/src/bun.js/bindings/webcrypto/CryptoKeyOKP.cpp index 5534416fe2..1f5b17a3dc 100644 --- a/src/bun.js/bindings/webcrypto/CryptoKeyOKP.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoKeyOKP.cpp @@ -78,17 +78,17 @@ RefPtr CryptoKeyOKP::create(CryptoAlgorithmIdentifier identifier, // Import format only consists of 32 bytes of private key // Internal format is private key + public key suffix if (platformKey.size() == bytesExpectedExternal) { - auto&& privateKey = ed25519PrivateFromSeed(WTFMove(platformKey)); + auto&& privateKey = ed25519PrivateFromSeed(WTF::move(platformKey)); if (privateKey.size() == 0) return nullptr; - return adoptRef(*new CryptoKeyOKP(identifier, curve, type, WTFMove(privateKey), extractable, usages)); + return adoptRef(*new CryptoKeyOKP(identifier, curve, type, WTF::move(privateKey), extractable, usages)); } return nullptr; } - return adoptRef(*new CryptoKeyOKP(identifier, curve, type, WTFMove(platformKey), extractable, usages)); + return adoptRef(*new CryptoKeyOKP(identifier, curve, type, WTF::move(platformKey), extractable, usages)); } CryptoKeyOKP::CryptoKeyOKP(CryptoAlgorithmIdentifier identifier, NamedCurve curve, CryptoKeyType type, KeyMaterial&& data, bool extractable, CryptoKeyUsageBitmap usages) @@ -108,7 +108,7 @@ ExceptionOr CryptoKeyOKP::generatePair(CryptoAlgorithmIdentifier if (!result) return Exception { OperationError }; - return WTFMove(*result); + return WTF::move(*result); } RefPtr CryptoKeyOKP::importRaw(CryptoAlgorithmIdentifier identifier, NamedCurve namedCurve, Vector&& keyData, bool extractable, CryptoKeyUsageBitmap usages) @@ -116,7 +116,7 @@ RefPtr CryptoKeyOKP::importRaw(CryptoAlgorithmIdentifier identifie if (!isPlatformSupportedCurve(namedCurve)) return nullptr; - return create(identifier, namedCurve, usages & CryptoKeyUsageSign ? CryptoKeyType::Private : CryptoKeyType::Public, WTFMove(keyData), extractable, usages); + return create(identifier, namedCurve, usages & CryptoKeyUsageSign ? CryptoKeyType::Private : CryptoKeyType::Public, WTF::move(keyData), extractable, usages); } RefPtr CryptoKeyOKP::importJwkInternal(CryptoAlgorithmIdentifier identifier, NamedCurve namedCurve, JsonWebKey&& keyData, bool extractable, CryptoKeyUsageBitmap usages, bool onlyPublic) @@ -157,7 +157,7 @@ RefPtr CryptoKeyOKP::importJwkInternal(CryptoAlgorithmIdentifier i auto d = base64URLDecode(keyData.d); if (!d) return nullptr; - return create(identifier, namedCurve, CryptoKeyType::Private, WTFMove(*d), extractable, usages); + return create(identifier, namedCurve, CryptoKeyType::Private, WTF::move(*d), extractable, usages); } } @@ -167,16 +167,16 @@ RefPtr CryptoKeyOKP::importJwkInternal(CryptoAlgorithmIdentifier i auto x = base64URLDecode(keyData.x); if (!x) return nullptr; - return create(identifier, namedCurve, CryptoKeyType::Public, WTFMove(*x), extractable, usages); + return create(identifier, namedCurve, CryptoKeyType::Public, WTF::move(*x), extractable, usages); } RefPtr CryptoKeyOKP::importPublicJwk(CryptoAlgorithmIdentifier identifier, NamedCurve namedCurve, JsonWebKey&& keyData, bool extractable, CryptoKeyUsageBitmap usages) { - return importJwkInternal(identifier, namedCurve, WTFMove(keyData), extractable, usages, true); + return importJwkInternal(identifier, namedCurve, WTF::move(keyData), extractable, usages, true); } RefPtr CryptoKeyOKP::importJwk(CryptoAlgorithmIdentifier identifier, NamedCurve namedCurve, JsonWebKey&& keyData, bool extractable, CryptoKeyUsageBitmap usages) { - return importJwkInternal(identifier, namedCurve, WTFMove(keyData), extractable, usages, false); + return importJwkInternal(identifier, namedCurve, WTF::move(keyData), extractable, usages, false); } ExceptionOr> CryptoKeyOKP::exportRaw() const @@ -187,7 +187,7 @@ ExceptionOr> CryptoKeyOKP::exportRaw() const auto&& result = platformExportRaw(); if (result.isEmpty()) return Exception { OperationError }; - return WTFMove(result); + return WTF::move(result); } ExceptionOr CryptoKeyOKP::exportJwk() const diff --git a/src/bun.js/bindings/webcrypto/CryptoKeyOKPOpenSSL.cpp b/src/bun.js/bindings/webcrypto/CryptoKeyOKPOpenSSL.cpp index 480a42ac96..de29f6f753 100644 --- a/src/bun.js/bindings/webcrypto/CryptoKeyOKPOpenSSL.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoKeyOKPOpenSSL.cpp @@ -56,11 +56,11 @@ std::optional CryptoKeyOKP::platformGeneratePair(CryptoAlgorithmI } bool isPublicKeyExtractable = true; - auto publicKey = CryptoKeyOKP::create(identifier, namedCurve, CryptoKeyType::Public, WTFMove(public_key), isPublicKeyExtractable, usages); + auto publicKey = CryptoKeyOKP::create(identifier, namedCurve, CryptoKeyType::Public, WTF::move(public_key), isPublicKeyExtractable, usages); ASSERT(publicKey); auto privateKey = CryptoKeyOKP::create(identifier, namedCurve, CryptoKeyType::Private, Vector(std::span { private_key.begin(), isEd25519 ? (unsigned int)ED25519_PRIVATE_KEY_LEN : (unsigned int)X25519_PRIVATE_KEY_LEN }), extractable, usages); ASSERT(privateKey); - return CryptoKeyPair { WTFMove(publicKey), WTFMove(privateKey) }; + return CryptoKeyPair { WTF::move(publicKey), WTF::move(privateKey) }; } // Per https://www.ietf.org/rfc/rfc5280.txt @@ -179,7 +179,7 @@ ExceptionOr> CryptoKeyOKP::exportSpki() const ASSERT(result.size() == totalSize); - return WTFMove(result); + return WTF::move(result); } // Per https://www.ietf.org/rfc/rfc5280.txt @@ -288,7 +288,7 @@ ExceptionOr> CryptoKeyOKP::exportPkcs8() const ASSERT(result.size() == totalSize); - return WTFMove(result); + return WTF::move(result); } String CryptoKeyOKP::generateJwkD() const diff --git a/src/bun.js/bindings/webcrypto/CryptoKeyRSA.cpp b/src/bun.js/bindings/webcrypto/CryptoKeyRSA.cpp index 7e2fc56194..9f69d617e9 100644 --- a/src/bun.js/bindings/webcrypto/CryptoKeyRSA.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoKeyRSA.cpp @@ -57,7 +57,7 @@ RefPtr CryptoKeyRSA::importJwk(CryptoAlgorithmIdentifier algorithm return nullptr; if (keyData.d.isNull()) { // import public key - auto publicKeyComponents = CryptoKeyRSAComponents::createPublic(WTFMove(*modulus), WTFMove(*exponent)); + auto publicKeyComponents = CryptoKeyRSAComponents::createPublic(WTF::move(*modulus), WTF::move(*exponent)); // Notice: CryptoAlgorithmIdentifier::SHA_1 is just a placeholder. It should not have any effect if hash is std::nullopt. return CryptoKeyRSA::create(algorithm, hash.value_or(CryptoAlgorithmIdentifier::SHA_1), !!hash, *publicKeyComponents, extractable, usages); } @@ -67,7 +67,7 @@ RefPtr CryptoKeyRSA::importJwk(CryptoAlgorithmIdentifier algorithm if (!privateExponent) return nullptr; if (keyData.p.isNull() && keyData.q.isNull() && keyData.dp.isNull() && keyData.dp.isNull() && keyData.qi.isNull()) { - auto privateKeyComponents = CryptoKeyRSAComponents::createPrivate(WTFMove(*modulus), WTFMove(*exponent), WTFMove(*privateExponent)); + auto privateKeyComponents = CryptoKeyRSAComponents::createPrivate(WTF::move(*modulus), WTF::move(*exponent), WTF::move(*privateExponent)); // Notice: CryptoAlgorithmIdentifier::SHA_1 is just a placeholder. It should not have any effect if hash is std::nullopt. return CryptoKeyRSA::create(algorithm, hash.value_or(CryptoAlgorithmIdentifier::SHA_1), !!hash, *privateKeyComponents, extractable, usages); } @@ -92,16 +92,16 @@ RefPtr CryptoKeyRSA::importJwk(CryptoAlgorithmIdentifier algorithm return nullptr; CryptoKeyRSAComponents::PrimeInfo firstPrimeInfo; - firstPrimeInfo.primeFactor = WTFMove(*firstPrimeFactor); - firstPrimeInfo.factorCRTExponent = WTFMove(*firstFactorCRTExponent); + firstPrimeInfo.primeFactor = WTF::move(*firstPrimeFactor); + firstPrimeInfo.factorCRTExponent = WTF::move(*firstFactorCRTExponent); CryptoKeyRSAComponents::PrimeInfo secondPrimeInfo; - secondPrimeInfo.primeFactor = WTFMove(*secondPrimeFactor); - secondPrimeInfo.factorCRTExponent = WTFMove(*secondFactorCRTExponent); - secondPrimeInfo.factorCRTCoefficient = WTFMove(*secondFactorCRTCoefficient); + secondPrimeInfo.primeFactor = WTF::move(*secondPrimeFactor); + secondPrimeInfo.factorCRTExponent = WTF::move(*secondFactorCRTExponent); + secondPrimeInfo.factorCRTCoefficient = WTF::move(*secondFactorCRTCoefficient); if (!keyData.oth) { - auto privateKeyComponents = CryptoKeyRSAComponents::createPrivateWithAdditionalData(WTFMove(*modulus), WTFMove(*exponent), WTFMove(*privateExponent), WTFMove(firstPrimeInfo), WTFMove(secondPrimeInfo), {}); + auto privateKeyComponents = CryptoKeyRSAComponents::createPrivateWithAdditionalData(WTF::move(*modulus), WTF::move(*exponent), WTF::move(*privateExponent), WTF::move(firstPrimeInfo), WTF::move(secondPrimeInfo), {}); // Notice: CryptoAlgorithmIdentifier::SHA_1 is just a placeholder. It should not have any effect if hash is std::nullopt. return CryptoKeyRSA::create(algorithm, hash.value_or(CryptoAlgorithmIdentifier::SHA_1), !!hash, *privateKeyComponents, extractable, usages); } @@ -119,14 +119,14 @@ RefPtr CryptoKeyRSA::importJwk(CryptoAlgorithmIdentifier algorithm return nullptr; CryptoKeyRSAComponents::PrimeInfo info; - info.primeFactor = WTFMove(*primeFactor); - info.factorCRTExponent = WTFMove(*factorCRTExponent); - info.factorCRTCoefficient = WTFMove(*factorCRTCoefficient); + info.primeFactor = WTF::move(*primeFactor); + info.factorCRTExponent = WTF::move(*factorCRTExponent); + info.factorCRTCoefficient = WTF::move(*factorCRTCoefficient); - otherPrimeInfos.append(WTFMove(info)); + otherPrimeInfos.append(WTF::move(info)); } - auto privateKeyComponents = CryptoKeyRSAComponents::createPrivateWithAdditionalData(WTFMove(*modulus), WTFMove(*exponent), WTFMove(*privateExponent), WTFMove(firstPrimeInfo), WTFMove(secondPrimeInfo), WTFMove(otherPrimeInfos)); + auto privateKeyComponents = CryptoKeyRSAComponents::createPrivateWithAdditionalData(WTF::move(*modulus), WTF::move(*exponent), WTF::move(*privateExponent), WTF::move(firstPrimeInfo), WTF::move(secondPrimeInfo), WTF::move(otherPrimeInfos)); // Notice: CryptoAlgorithmIdentifier::SHA_1 is just a placeholder. It should not have any effect if hash is std::nullopt. return CryptoKeyRSA::create(algorithm, hash.value_or(CryptoAlgorithmIdentifier::SHA_1), !!hash, *privateKeyComponents, extractable, usages); } @@ -168,9 +168,9 @@ JsonWebKey CryptoKeyRSA::exportJwk() const otherInfo.r = Bun::base64URLEncodeToString(info.primeFactor); otherInfo.d = Bun::base64URLEncodeToString(info.factorCRTExponent); otherInfo.t = Bun::base64URLEncodeToString(info.factorCRTCoefficient); - oth.append(WTFMove(otherInfo)); + oth.append(WTF::move(otherInfo)); } - result.oth = WTFMove(oth); + result.oth = WTF::move(oth); return result; } diff --git a/src/bun.js/bindings/webcrypto/CryptoKeyRSA.h b/src/bun.js/bindings/webcrypto/CryptoKeyRSA.h index 70f9cf648a..9c26536cd3 100644 --- a/src/bun.js/bindings/webcrypto/CryptoKeyRSA.h +++ b/src/bun.js/bindings/webcrypto/CryptoKeyRSA.h @@ -69,7 +69,7 @@ class CryptoKeyRSA final : public CryptoKey { public: static Ref create(CryptoAlgorithmIdentifier identifier, CryptoAlgorithmIdentifier hash, bool hasHash, CryptoKeyType type, PlatformRSAKeyContainer&& platformKey, bool extractable, CryptoKeyUsageBitmap usage) { - return adoptRef(*new CryptoKeyRSA(identifier, hash, hasHash, type, WTFMove(platformKey), extractable, usage)); + return adoptRef(*new CryptoKeyRSA(identifier, hash, hasHash, type, WTF::move(platformKey), extractable, usage)); } static RefPtr create(CryptoAlgorithmIdentifier, CryptoAlgorithmIdentifier hash, bool hasHash, const CryptoKeyRSAComponents&, bool extractable, CryptoKeyUsageBitmap); virtual ~CryptoKeyRSA() = default; diff --git a/src/bun.js/bindings/webcrypto/CryptoKeyRSAComponents.cpp b/src/bun.js/bindings/webcrypto/CryptoKeyRSAComponents.cpp index f9b6052cd7..ffd0cf5f76 100644 --- a/src/bun.js/bindings/webcrypto/CryptoKeyRSAComponents.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoKeyRSAComponents.cpp @@ -39,8 +39,8 @@ CryptoKeyRSAComponents::CryptoKeyRSAComponents(const Vector& modulus, c CryptoKeyRSAComponents::CryptoKeyRSAComponents(Vector&& modulus, Vector&& exponent) : m_type(Type::Public) - , m_modulus(WTFMove(modulus)) - , m_exponent(WTFMove(exponent)) + , m_modulus(WTF::move(modulus)) + , m_exponent(WTF::move(exponent)) { } @@ -55,9 +55,9 @@ CryptoKeyRSAComponents::CryptoKeyRSAComponents(const Vector& modulus, c CryptoKeyRSAComponents::CryptoKeyRSAComponents(Vector&& modulus, Vector&& exponent, Vector&& privateExponent) : m_type(Type::Private) - , m_modulus(WTFMove(modulus)) - , m_exponent(WTFMove(exponent)) - , m_privateExponent(WTFMove(privateExponent)) + , m_modulus(WTF::move(modulus)) + , m_exponent(WTF::move(exponent)) + , m_privateExponent(WTF::move(privateExponent)) , m_hasAdditionalPrivateKeyParameters(false) { } @@ -76,13 +76,13 @@ CryptoKeyRSAComponents::CryptoKeyRSAComponents(const Vector& modulus, c CryptoKeyRSAComponents::CryptoKeyRSAComponents(Vector&& modulus, Vector&& exponent, Vector&& privateExponent, PrimeInfo&& firstPrimeInfo, PrimeInfo&& secondPrimeInfo, Vector&& otherPrimeInfos) : m_type(Type::Private) - , m_modulus(WTFMove(modulus)) - , m_exponent(WTFMove(exponent)) - , m_privateExponent(WTFMove(privateExponent)) + , m_modulus(WTF::move(modulus)) + , m_exponent(WTF::move(exponent)) + , m_privateExponent(WTF::move(privateExponent)) , m_hasAdditionalPrivateKeyParameters(true) - , m_firstPrimeInfo(WTFMove(firstPrimeInfo)) - , m_secondPrimeInfo(WTFMove(secondPrimeInfo)) - , m_otherPrimeInfos(WTFMove(otherPrimeInfos)) + , m_firstPrimeInfo(WTF::move(firstPrimeInfo)) + , m_secondPrimeInfo(WTF::move(secondPrimeInfo)) + , m_otherPrimeInfos(WTF::move(otherPrimeInfos)) { } diff --git a/src/bun.js/bindings/webcrypto/CryptoKeyRSAComponents.h b/src/bun.js/bindings/webcrypto/CryptoKeyRSAComponents.h index 26ed55c4e7..c8805cf28e 100644 --- a/src/bun.js/bindings/webcrypto/CryptoKeyRSAComponents.h +++ b/src/bun.js/bindings/webcrypto/CryptoKeyRSAComponents.h @@ -50,7 +50,7 @@ public: } static std::unique_ptr createPublic(Vector&& modulus, Vector&& exponent) { - return std::unique_ptr(new CryptoKeyRSAComponents(WTFMove(modulus), WTFMove(exponent))); + return std::unique_ptr(new CryptoKeyRSAComponents(WTF::move(modulus), WTF::move(exponent))); } static std::unique_ptr createPrivate(const Vector& modulus, const Vector& exponent, const Vector& privateExponent) @@ -59,7 +59,7 @@ public: } static std::unique_ptr createPrivate(Vector&& modulus, Vector&& exponent, Vector&& privateExponent) { - return std::unique_ptr(new CryptoKeyRSAComponents(WTFMove(modulus), WTFMove(exponent), WTFMove(privateExponent))); + return std::unique_ptr(new CryptoKeyRSAComponents(WTF::move(modulus), WTF::move(exponent), WTF::move(privateExponent))); } static std::unique_ptr createPrivateWithAdditionalData(const Vector& modulus, const Vector& exponent, const Vector& privateExponent, const PrimeInfo& firstPrimeInfo, const PrimeInfo& secondPrimeInfo, const Vector& otherPrimeInfos) @@ -68,7 +68,7 @@ public: } static std::unique_ptr createPrivateWithAdditionalData(Vector&& modulus, Vector&& exponent, Vector&& privateExponent, PrimeInfo&& firstPrimeInfo, PrimeInfo&& secondPrimeInfo, Vector&& otherPrimeInfos) { - return std::unique_ptr(new CryptoKeyRSAComponents(WTFMove(modulus), WTFMove(exponent), WTFMove(privateExponent), WTFMove(firstPrimeInfo), WTFMove(secondPrimeInfo), WTFMove(otherPrimeInfos))); + return std::unique_ptr(new CryptoKeyRSAComponents(WTF::move(modulus), WTF::move(exponent), WTF::move(privateExponent), WTF::move(firstPrimeInfo), WTF::move(secondPrimeInfo), WTF::move(otherPrimeInfos))); } virtual ~CryptoKeyRSAComponents(); diff --git a/src/bun.js/bindings/webcrypto/CryptoKeyRSAOpenSSL.cpp b/src/bun.js/bindings/webcrypto/CryptoKeyRSAOpenSSL.cpp index b52f7dc959..7693921410 100644 --- a/src/bun.js/bindings/webcrypto/CryptoKeyRSAOpenSSL.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoKeyRSAOpenSSL.cpp @@ -143,12 +143,12 @@ RefPtr CryptoKeyRSA::create(CryptoAlgorithmIdentifier identifier, if (EVP_PKEY_set1_RSA(pkey.get(), rsa.get()) != 1) return nullptr; - return adoptRef(new CryptoKeyRSA(identifier, hash, hasHash, keyType, WTFMove(pkey), extractable, usages)); + return adoptRef(new CryptoKeyRSA(identifier, hash, hasHash, keyType, WTF::move(pkey), extractable, usages)); } CryptoKeyRSA::CryptoKeyRSA(CryptoAlgorithmIdentifier identifier, CryptoAlgorithmIdentifier hash, bool hasHash, CryptoKeyType type, PlatformRSAKeyContainer&& platformKey, bool extractable, CryptoKeyUsageBitmap usages) : CryptoKey(identifier, type, extractable, usages) - , m_platformKey(WTFMove(platformKey)) + , m_platformKey(WTF::move(platformKey)) , m_restrictedToSpecificHash(hasHash) , m_hash(hash) { @@ -223,9 +223,9 @@ void CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier algorithm, CryptoAlgor return; } - auto publicKey = CryptoKeyRSA::create(algorithm, hash, hasHash, CryptoKeyType::Public, WTFMove(publicPKey), true, usages); - auto privateKey = CryptoKeyRSA::create(algorithm, hash, hasHash, CryptoKeyType::Private, WTFMove(privatePKey), extractable, usages); - callback(CryptoKeyPair { WTFMove(publicKey), WTFMove(privateKey) }); + auto publicKey = CryptoKeyRSA::create(algorithm, hash, hasHash, CryptoKeyType::Public, WTF::move(publicPKey), true, usages); + auto privateKey = CryptoKeyRSA::create(algorithm, hash, hasHash, CryptoKeyType::Private, WTF::move(privatePKey), extractable, usages); + callback(CryptoKeyPair { WTF::move(publicKey), WTF::move(privateKey) }); } RefPtr CryptoKeyRSA::importSpki(CryptoAlgorithmIdentifier identifier, std::optional hash, Vector&& keyData, bool extractable, CryptoKeyUsageBitmap usages) @@ -238,7 +238,7 @@ RefPtr CryptoKeyRSA::importSpki(CryptoAlgorithmIdentifier identifi if (!pkey || EVP_PKEY_id(pkey.get()) != EVP_PKEY_RSA) return nullptr; - return adoptRef(new CryptoKeyRSA(identifier, hash.value_or(CryptoAlgorithmIdentifier::SHA_1), !!hash, CryptoKeyType::Public, WTFMove(pkey), extractable, usages)); + return adoptRef(new CryptoKeyRSA(identifier, hash.value_or(CryptoAlgorithmIdentifier::SHA_1), !!hash, CryptoKeyType::Public, WTF::move(pkey), extractable, usages)); } RefPtr CryptoKeyRSA::importPkcs8(CryptoAlgorithmIdentifier identifier, std::optional hash, Vector&& keyData, bool extractable, CryptoKeyUsageBitmap usages) @@ -255,7 +255,7 @@ RefPtr CryptoKeyRSA::importPkcs8(CryptoAlgorithmIdentifier identif if (!pkey || EVP_PKEY_id(pkey.get()) != EVP_PKEY_RSA) return nullptr; - return adoptRef(new CryptoKeyRSA(identifier, hash.value_or(CryptoAlgorithmIdentifier::SHA_1), !!hash, CryptoKeyType::Private, WTFMove(pkey), extractable, usages)); + return adoptRef(new CryptoKeyRSA(identifier, hash.value_or(CryptoAlgorithmIdentifier::SHA_1), !!hash, CryptoKeyType::Private, WTF::move(pkey), extractable, usages)); } ExceptionOr> CryptoKeyRSA::exportSpki() const @@ -395,7 +395,7 @@ std::unique_ptr CryptoKeyRSA::exportData() const return CryptoKeyRSAComponents::createPrivateWithAdditionalData( convertToBytes(n), convertToBytes(e), convertToBytes(d), - WTFMove(firstPrimeInfo), WTFMove(secondPrimeInfo), Vector {}); + WTF::move(firstPrimeInfo), WTF::move(secondPrimeInfo), Vector {}); } default: ASSERT_NOT_REACHED(); diff --git a/src/bun.js/bindings/webcrypto/CryptoKeyRaw.cpp b/src/bun.js/bindings/webcrypto/CryptoKeyRaw.cpp index c75684189d..405b69942f 100644 --- a/src/bun.js/bindings/webcrypto/CryptoKeyRaw.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoKeyRaw.cpp @@ -34,7 +34,7 @@ namespace WebCore { CryptoKeyRaw::CryptoKeyRaw(CryptoAlgorithmIdentifier identifier, Vector&& keyData, CryptoKeyUsageBitmap usages) : CryptoKey(identifier, CryptoKeyType::Secret, false, usages) - , m_key(WTFMove(keyData)) + , m_key(WTF::move(keyData)) { } diff --git a/src/bun.js/bindings/webcrypto/CryptoKeyRaw.h b/src/bun.js/bindings/webcrypto/CryptoKeyRaw.h index df5b6b831b..bd9d90b4e5 100644 --- a/src/bun.js/bindings/webcrypto/CryptoKeyRaw.h +++ b/src/bun.js/bindings/webcrypto/CryptoKeyRaw.h @@ -35,7 +35,7 @@ class CryptoKeyRaw final : public CryptoKey { public: static Ref create(CryptoAlgorithmIdentifier identifier, Vector&& keyData, CryptoKeyUsageBitmap usages) { - return adoptRef(*new CryptoKeyRaw(identifier, WTFMove(keyData), usages)); + return adoptRef(*new CryptoKeyRaw(identifier, WTF::move(keyData), usages)); } const Vector& key() const { return m_key; } diff --git a/src/bun.js/bindings/webcrypto/JSCryptoKey.cpp b/src/bun.js/bindings/webcrypto/JSCryptoKey.cpp index 200081ab58..92acf8acf3 100644 --- a/src/bun.js/bindings/webcrypto/JSCryptoKey.cpp +++ b/src/bun.js/bindings/webcrypto/JSCryptoKey.cpp @@ -87,11 +87,11 @@ template<> JSString* convertEnumerationToJS(JSGlobalObject& lexicalGlobalObject, template<> std::optional parseEnumeration(JSGlobalObject& lexicalGlobalObject, JSValue value) { auto stringValue = value.toWTFString(&lexicalGlobalObject); - static constexpr std::pair mappings[] = { + static constexpr std::array, 3> mappings { { { "private"_s, CryptoKey::Type::Private }, { "public"_s, CryptoKey::Type::Public }, { "secret"_s, CryptoKey::Type::Secret }, - }; + } }; static constexpr SortedArrayMap enumerationMapping { mappings }; if (auto* enumerationValue = enumerationMapping.tryGet(stringValue); enumerationValue) [[likely]] return *enumerationValue; @@ -184,7 +184,7 @@ void JSCryptoKeyPrototype::finishCreation(VM& vm) const ClassInfo JSCryptoKey::s_info = { "CryptoKey"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSCryptoKey) }; JSCryptoKey::JSCryptoKey(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -338,7 +338,7 @@ void JSCryptoKeyOwner::finalize(JSC::Handle handle, void* context) JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObject, Ref&& impl) { - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, CryptoKey& impl) diff --git a/src/bun.js/bindings/webcrypto/JSCryptoKey.h b/src/bun.js/bindings/webcrypto/JSCryptoKey.h index 2dcf45538f..5a04c06827 100644 --- a/src/bun.js/bindings/webcrypto/JSCryptoKey.h +++ b/src/bun.js/bindings/webcrypto/JSCryptoKey.h @@ -34,7 +34,7 @@ public: using Base = JSDOMWrapper; static JSCryptoKey* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSCryptoKey* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSCryptoKey(structure, *globalObject, WTFMove(impl)); + JSCryptoKey* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSCryptoKey(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcrypto/JSCryptoKeyUsage.cpp b/src/bun.js/bindings/webcrypto/JSCryptoKeyUsage.cpp index 53fc4ff733..f27a254b18 100644 --- a/src/bun.js/bindings/webcrypto/JSCryptoKeyUsage.cpp +++ b/src/bun.js/bindings/webcrypto/JSCryptoKeyUsage.cpp @@ -64,7 +64,7 @@ template<> JSString* convertEnumerationToJS(JSGlobalObject& lexicalGlobalObject, template<> std::optional parseEnumeration(JSGlobalObject& lexicalGlobalObject, JSValue value) { auto stringValue = value.toWTFString(&lexicalGlobalObject); - static constexpr std::pair mappings[] = { + static constexpr std::array, 8> mappings { { { "decrypt"_s, CryptoKeyUsage::Decrypt }, { "deriveBits"_s, CryptoKeyUsage::DeriveBits }, { "deriveKey"_s, CryptoKeyUsage::DeriveKey }, @@ -73,7 +73,7 @@ template<> std::optional parseEnumeration(JSGlob { "unwrapKey"_s, CryptoKeyUsage::UnwrapKey }, { "verify"_s, CryptoKeyUsage::Verify }, { "wrapKey"_s, CryptoKeyUsage::WrapKey }, - }; + } }; static constexpr SortedArrayMap enumerationMapping { mappings }; if (auto* enumerationValue = enumerationMapping.tryGet(stringValue); enumerationValue) [[likely]] return *enumerationValue; diff --git a/src/bun.js/bindings/webcrypto/JSSubtleCrypto.cpp b/src/bun.js/bindings/webcrypto/JSSubtleCrypto.cpp index 549de84fcd..bceabcda93 100644 --- a/src/bun.js/bindings/webcrypto/JSSubtleCrypto.cpp +++ b/src/bun.js/bindings/webcrypto/JSSubtleCrypto.cpp @@ -96,12 +96,12 @@ template<> JSString* convertEnumerationToJS(JSGlobalObject& lexicalGlobalObject, template<> std::optional parseEnumeration(JSGlobalObject& lexicalGlobalObject, JSValue value) { auto stringValue = value.toWTFString(&lexicalGlobalObject); - static constexpr std::pair mappings[] = { + static constexpr std::array, 4> mappings { { { "jwk"_s, SubtleCrypto::KeyFormat::Jwk }, { "pkcs8"_s, SubtleCrypto::KeyFormat::Pkcs8 }, { "raw"_s, SubtleCrypto::KeyFormat::Raw }, { "spki"_s, SubtleCrypto::KeyFormat::Spki }, - }; + } }; static constexpr SortedArrayMap enumerationMapping { mappings }; if (auto* enumerationValue = enumerationMapping.tryGet(stringValue); enumerationValue) [[likely]] return *enumerationValue; @@ -213,7 +213,7 @@ void JSSubtleCryptoPrototype::finishCreation(VM& vm) const ClassInfo JSSubtleCrypto::s_info = { "SubtleCrypto"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSSubtleCrypto) }; JSSubtleCrypto::JSSubtleCrypto(Structure* structure, JSDOMGlobalObject& globalObject, Ref&& impl) - : JSDOMWrapper(structure, globalObject, WTFMove(impl)) + : JSDOMWrapper(structure, globalObject, WTF::move(impl)) { } @@ -276,7 +276,7 @@ static inline JSC::EncodedJSValue jsSubtleCryptoPrototypeFunction_encryptBody(JS EnsureStillAliveScope argument2 = callFrame->uncheckedArgument(2); auto data = convert>(*lexicalGlobalObject, argument2.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { return impl.encrypt(*jsCast(lexicalGlobalObject), WTFMove(algorithm), *key, WTFMove(data), WTFMove(promise)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { return impl.encrypt(*jsCast(lexicalGlobalObject), WTF::move(algorithm), *key, WTF::move(data), WTF::move(promise)); }))); } JSC_DEFINE_HOST_FUNCTION(jsSubtleCryptoPrototypeFunction_encrypt, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -302,7 +302,7 @@ static inline JSC::EncodedJSValue jsSubtleCryptoPrototypeFunction_decryptBody(JS EnsureStillAliveScope argument2 = callFrame->uncheckedArgument(2); auto data = convert>(*lexicalGlobalObject, argument2.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { return impl.decrypt(*jsCast(lexicalGlobalObject), WTFMove(algorithm), *key, WTFMove(data), WTFMove(promise)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { return impl.decrypt(*jsCast(lexicalGlobalObject), WTF::move(algorithm), *key, WTF::move(data), WTF::move(promise)); }))); } JSC_DEFINE_HOST_FUNCTION(jsSubtleCryptoPrototypeFunction_decrypt, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -328,7 +328,7 @@ static inline JSC::EncodedJSValue jsSubtleCryptoPrototypeFunction_signBody(JSC:: EnsureStillAliveScope argument2 = callFrame->uncheckedArgument(2); auto data = convert>(*lexicalGlobalObject, argument2.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { return impl.sign(*jsCast(lexicalGlobalObject), WTFMove(algorithm), *key, WTFMove(data), WTFMove(promise)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { return impl.sign(*jsCast(lexicalGlobalObject), WTF::move(algorithm), *key, WTF::move(data), WTF::move(promise)); }))); } JSC_DEFINE_HOST_FUNCTION(jsSubtleCryptoPrototypeFunction_sign, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -357,7 +357,7 @@ static inline JSC::EncodedJSValue jsSubtleCryptoPrototypeFunction_verifyBody(JSC EnsureStillAliveScope argument3 = callFrame->uncheckedArgument(3); auto data = convert>(*lexicalGlobalObject, argument3.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { return impl.verify(*jsCast(lexicalGlobalObject), WTFMove(algorithm), *key, WTFMove(signature), WTFMove(data), WTFMove(promise)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { return impl.verify(*jsCast(lexicalGlobalObject), WTF::move(algorithm), *key, WTF::move(signature), WTF::move(data), WTF::move(promise)); }))); } JSC_DEFINE_HOST_FUNCTION(jsSubtleCryptoPrototypeFunction_verify, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -383,7 +383,7 @@ static inline JSC::EncodedJSValue jsSubtleCryptoPrototypeFunction_digestBody(JSC throwScope.clearException(); return Bun::ERR::INVALID_ARG_TYPE(throwScope, lexicalGlobalObject, "data"_s, "ArrayBuffer, Buffer, TypedArray, or DataView"_s, argument1.value()); } - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { return impl.digest(*jsCast(lexicalGlobalObject), WTFMove(algorithm), WTFMove(data), WTFMove(promise)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { return impl.digest(*jsCast(lexicalGlobalObject), WTF::move(algorithm), WTF::move(data), WTF::move(promise)); }))); } JSC_DEFINE_HOST_FUNCTION(jsSubtleCryptoPrototypeFunction_digest, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -409,7 +409,7 @@ static inline JSC::EncodedJSValue jsSubtleCryptoPrototypeFunction_generateKeyBod EnsureStillAliveScope argument2 = callFrame->uncheckedArgument(2); auto keyUsages = convert>>(*lexicalGlobalObject, argument2.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { return impl.generateKey(*jsCast(lexicalGlobalObject), WTFMove(algorithm), WTFMove(extractable), WTFMove(keyUsages), WTFMove(promise)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { return impl.generateKey(*jsCast(lexicalGlobalObject), WTF::move(algorithm), WTF::move(extractable), WTF::move(keyUsages), WTF::move(promise)); }))); } JSC_DEFINE_HOST_FUNCTION(jsSubtleCryptoPrototypeFunction_generateKey, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -441,7 +441,7 @@ static inline JSC::EncodedJSValue jsSubtleCryptoPrototypeFunction_deriveKeyBody( EnsureStillAliveScope argument4 = callFrame->uncheckedArgument(4); auto keyUsages = convert>>(*lexicalGlobalObject, argument4.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { return impl.deriveKey(*jsCast(lexicalGlobalObject), WTFMove(algorithm), *baseKey, WTFMove(derivedKeyType), WTFMove(extractable), WTFMove(keyUsages), WTFMove(promise)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { return impl.deriveKey(*jsCast(lexicalGlobalObject), WTF::move(algorithm), *baseKey, WTF::move(derivedKeyType), WTF::move(extractable), WTF::move(keyUsages), WTF::move(promise)); }))); } JSC_DEFINE_HOST_FUNCTION(jsSubtleCryptoPrototypeFunction_deriveKey, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -467,7 +467,7 @@ static inline JSC::EncodedJSValue jsSubtleCryptoPrototypeFunction_deriveBitsBody EnsureStillAliveScope argument2 = callFrame->uncheckedArgument(2); auto length = convert(*lexicalGlobalObject, argument2.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { return impl.deriveBits(*jsCast(lexicalGlobalObject), WTFMove(algorithm), *baseKey, WTFMove(length), WTFMove(promise)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { return impl.deriveBits(*jsCast(lexicalGlobalObject), WTF::move(algorithm), *baseKey, WTF::move(length), WTF::move(promise)); }))); } JSC_DEFINE_HOST_FUNCTION(jsSubtleCryptoPrototypeFunction_deriveBits, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -499,7 +499,7 @@ static inline JSC::EncodedJSValue jsSubtleCryptoPrototypeFunction_importKeyBody( EnsureStillAliveScope argument4 = callFrame->uncheckedArgument(4); auto keyUsages = convert>>(*lexicalGlobalObject, argument4.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { return impl.importKey(*jsCast(lexicalGlobalObject), WTFMove(format), WTFMove(keyData), WTFMove(algorithm), WTFMove(extractable), WTFMove(keyUsages), WTFMove(promise)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { return impl.importKey(*jsCast(lexicalGlobalObject), WTF::move(format), WTF::move(keyData), WTF::move(algorithm), WTF::move(extractable), WTF::move(keyUsages), WTF::move(promise)); }))); } JSC_DEFINE_HOST_FUNCTION(jsSubtleCryptoPrototypeFunction_importKey, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -523,7 +523,7 @@ static inline JSC::EncodedJSValue jsSubtleCryptoPrototypeFunction_exportKeyBody( auto key = convert>(*lexicalGlobalObject, argument1.value(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentTypeError(lexicalGlobalObject, scope, 1, "key"_s, "SubtleCrypto"_s, "exportKey"_s, "CryptoKey"_s); }); RETURN_IF_EXCEPTION(throwScope, {}); RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { - return impl.exportKey(WTFMove(format), *key, WTFMove(promise)); + return impl.exportKey(WTF::move(format), *key, WTF::move(promise)); }))); } @@ -553,7 +553,7 @@ static inline JSC::EncodedJSValue jsSubtleCryptoPrototypeFunction_wrapKeyBody(JS EnsureStillAliveScope argument3 = callFrame->uncheckedArgument(3); auto wrapAlgorithm = convert>(*lexicalGlobalObject, argument3.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { return impl.wrapKey(*jsCast(lexicalGlobalObject), WTFMove(format), *key, *wrappingKey, WTFMove(wrapAlgorithm), WTFMove(promise)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { return impl.wrapKey(*jsCast(lexicalGlobalObject), WTF::move(format), *key, *wrappingKey, WTF::move(wrapAlgorithm), WTF::move(promise)); }))); } JSC_DEFINE_HOST_FUNCTION(jsSubtleCryptoPrototypeFunction_wrapKey, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -591,7 +591,7 @@ static inline JSC::EncodedJSValue jsSubtleCryptoPrototypeFunction_unwrapKeyBody( EnsureStillAliveScope argument6 = callFrame->uncheckedArgument(6); auto keyUsages = convert>>(*lexicalGlobalObject, argument6.value()); RETURN_IF_EXCEPTION(throwScope, {}); - RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { return impl.unwrapKey(*jsCast(lexicalGlobalObject), WTFMove(format), WTFMove(wrappedKey), *unwrappingKey, WTFMove(unwrapAlgorithm), WTFMove(unwrappedKeyAlgorithm), WTFMove(extractable), WTFMove(keyUsages), WTFMove(promise)); }))); + RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS>>(*lexicalGlobalObject, *castedThis->globalObject(), throwScope, [&]() -> decltype(auto) { return impl.unwrapKey(*jsCast(lexicalGlobalObject), WTF::move(format), WTF::move(wrappedKey), *unwrappingKey, WTF::move(unwrapAlgorithm), WTF::move(unwrappedKeyAlgorithm), WTF::move(extractable), WTF::move(keyUsages), WTF::move(promise)); }))); } JSC_DEFINE_HOST_FUNCTION(jsSubtleCryptoPrototypeFunction_unwrapKey, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) @@ -668,7 +668,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject*, JSDOMGlobalObject* globalObj // RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer); #endif } - return createWrapper(globalObject, WTFMove(impl)); + return createWrapper(globalObject, WTF::move(impl)); } JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, SubtleCrypto& impl) diff --git a/src/bun.js/bindings/webcrypto/JSSubtleCrypto.h b/src/bun.js/bindings/webcrypto/JSSubtleCrypto.h index b3a26c8727..f03e52944e 100644 --- a/src/bun.js/bindings/webcrypto/JSSubtleCrypto.h +++ b/src/bun.js/bindings/webcrypto/JSSubtleCrypto.h @@ -34,7 +34,7 @@ public: using Base = JSDOMWrapper; static JSSubtleCrypto* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&& impl) { - JSSubtleCrypto* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSSubtleCrypto(structure, *globalObject, WTFMove(impl)); + JSSubtleCrypto* ptr = new (NotNull, JSC::allocateCell(globalObject->vm())) JSSubtleCrypto(structure, *globalObject, WTF::move(impl)); ptr->finishCreation(globalObject->vm()); return ptr; } diff --git a/src/bun.js/bindings/webcrypto/PhonyWorkQueue.cpp b/src/bun.js/bindings/webcrypto/PhonyWorkQueue.cpp index 325ce6ad02..f465658ecd 100644 --- a/src/bun.js/bindings/webcrypto/PhonyWorkQueue.cpp +++ b/src/bun.js/bindings/webcrypto/PhonyWorkQueue.cpp @@ -15,7 +15,7 @@ extern "C" void ConcurrentCppTask__createAndRun(EventLoopTaskNoContext* task); void PhonyWorkQueue::dispatch(JSC::JSGlobalObject* globalObject, WTF::Function&& function) { - ConcurrentCppTask__createAndRun(new EventLoopTaskNoContext(globalObject, WTFMove(function))); + ConcurrentCppTask__createAndRun(new EventLoopTaskNoContext(globalObject, WTF::move(function))); } } // namespace Bun diff --git a/src/bun.js/bindings/webcrypto/SubtleCrypto.cpp b/src/bun.js/bindings/webcrypto/SubtleCrypto.cpp index 4a233ea064..4ef2591c31 100644 --- a/src/bun.js/bindings/webcrypto/SubtleCrypto.cpp +++ b/src/bun.js/bindings/webcrypto/SubtleCrypto.cpp @@ -611,14 +611,14 @@ void SubtleCrypto::encrypt(JSC::JSGlobalObject& state, AlgorithmIdentifier&& alg { addAuthenticatedEncryptionWarningIfNecessary(key.algorithmIdentifier()); - auto paramsOrException = normalizeCryptoAlgorithmParameters(state, WTFMove(algorithmIdentifier), Operations::Encrypt); + auto paramsOrException = normalizeCryptoAlgorithmParameters(state, WTF::move(algorithmIdentifier), Operations::Encrypt); if (paramsOrException.hasException()) { promise->reject(paramsOrException.releaseException()); return; } auto params = paramsOrException.releaseReturnValue(); - auto data = copyToVector(WTFMove(dataBufferSource)); + auto data = copyToVector(WTF::move(dataBufferSource)); if (params->identifier != key.algorithmIdentifier()) { promise->reject(InvalidAccessError, "CryptoKey doesn't match AlgorithmIdentifier"_s); @@ -633,7 +633,7 @@ void SubtleCrypto::encrypt(JSC::JSGlobalObject& state, AlgorithmIdentifier&& alg auto algorithm = CryptoAlgorithmRegistry::singleton().create(key.algorithmIdentifier()); auto index = promise.ptr(); - m_pendingPromises.add(index, WTFMove(promise)); + m_pendingPromises.add(index, WTF::move(promise)); WeakPtr weakThis { *this }; auto callback = [index, weakThis](const Vector& cipherText) mutable { if (auto promise = getPromise(index, weakThis)) @@ -644,7 +644,7 @@ void SubtleCrypto::encrypt(JSC::JSGlobalObject& state, AlgorithmIdentifier&& alg rejectWithException(promise.releaseNonNull(), ec, msg); }; - algorithm->encrypt(*params, key, WTFMove(data), WTFMove(callback), WTFMove(exceptionCallback), *scriptExecutionContext(), m_workQueue); + algorithm->encrypt(*params, key, WTF::move(data), WTF::move(callback), WTF::move(exceptionCallback), *scriptExecutionContext(), m_workQueue); } void SubtleCrypto::decrypt(JSC::JSGlobalObject& state, AlgorithmIdentifier&& algorithmIdentifier, CryptoKey& key, BufferSource&& dataBufferSource, Ref&& promise) @@ -654,14 +654,14 @@ void SubtleCrypto::decrypt(JSC::JSGlobalObject& state, AlgorithmIdentifier&& alg addAuthenticatedEncryptionWarningIfNecessary(key.algorithmIdentifier()); - auto paramsOrException = normalizeCryptoAlgorithmParameters(state, WTFMove(algorithmIdentifier), Operations::Decrypt); + auto paramsOrException = normalizeCryptoAlgorithmParameters(state, WTF::move(algorithmIdentifier), Operations::Decrypt); if (paramsOrException.hasException()) { promise->reject(paramsOrException.releaseException()); return; } auto params = paramsOrException.releaseReturnValue(); - auto data = copyToVector(WTFMove(dataBufferSource)); + auto data = copyToVector(WTF::move(dataBufferSource)); if (params->identifier != key.algorithmIdentifier()) { promise->reject(InvalidAccessError, "CryptoKey doesn't match AlgorithmIdentifier"_s); @@ -676,7 +676,7 @@ void SubtleCrypto::decrypt(JSC::JSGlobalObject& state, AlgorithmIdentifier&& alg auto algorithm = CryptoAlgorithmRegistry::singleton().create(key.algorithmIdentifier()); auto index = promise.ptr(); - m_pendingPromises.add(index, WTFMove(promise)); + m_pendingPromises.add(index, WTF::move(promise)); WeakPtr weakThis { *this }; auto callback = [index, weakThis](const Vector& plainText) mutable { if (auto promise = getPromise(index, weakThis)) @@ -687,19 +687,19 @@ void SubtleCrypto::decrypt(JSC::JSGlobalObject& state, AlgorithmIdentifier&& alg rejectWithException(promise.releaseNonNull(), ec, msg); }; - algorithm->decrypt(*params, key, WTFMove(data), WTFMove(callback), WTFMove(exceptionCallback), *scriptExecutionContext(), m_workQueue); + algorithm->decrypt(*params, key, WTF::move(data), WTF::move(callback), WTF::move(exceptionCallback), *scriptExecutionContext(), m_workQueue); } void SubtleCrypto::sign(JSC::JSGlobalObject& state, AlgorithmIdentifier&& algorithmIdentifier, CryptoKey& key, BufferSource&& dataBufferSource, Ref&& promise) { - auto paramsOrException = normalizeCryptoAlgorithmParameters(state, WTFMove(algorithmIdentifier), Operations::Sign); + auto paramsOrException = normalizeCryptoAlgorithmParameters(state, WTF::move(algorithmIdentifier), Operations::Sign); if (paramsOrException.hasException()) { promise->reject(paramsOrException.releaseException()); return; } auto params = paramsOrException.releaseReturnValue(); - auto data = copyToVector(WTFMove(dataBufferSource)); + auto data = copyToVector(WTF::move(dataBufferSource)); if (params->identifier != key.algorithmIdentifier()) { promise->reject(InvalidAccessError, "CryptoKey doesn't match AlgorithmIdentifier"_s); @@ -714,7 +714,7 @@ void SubtleCrypto::sign(JSC::JSGlobalObject& state, AlgorithmIdentifier&& algori auto algorithm = CryptoAlgorithmRegistry::singleton().create(key.algorithmIdentifier()); auto index = promise.ptr(); - m_pendingPromises.add(index, WTFMove(promise)); + m_pendingPromises.add(index, WTF::move(promise)); WeakPtr weakThis { *this }; auto callback = [index, weakThis](const Vector& signature) mutable { if (auto promise = getPromise(index, weakThis)) @@ -725,20 +725,20 @@ void SubtleCrypto::sign(JSC::JSGlobalObject& state, AlgorithmIdentifier&& algori rejectWithException(promise.releaseNonNull(), ec, msg); }; - algorithm->sign(*params, key, WTFMove(data), WTFMove(callback), WTFMove(exceptionCallback), *scriptExecutionContext(), m_workQueue); + algorithm->sign(*params, key, WTF::move(data), WTF::move(callback), WTF::move(exceptionCallback), *scriptExecutionContext(), m_workQueue); } void SubtleCrypto::verify(JSC::JSGlobalObject& state, AlgorithmIdentifier&& algorithmIdentifier, CryptoKey& key, BufferSource&& signatureBufferSource, BufferSource&& dataBufferSource, Ref&& promise) { - auto paramsOrException = normalizeCryptoAlgorithmParameters(state, WTFMove(algorithmIdentifier), Operations::Verify); + auto paramsOrException = normalizeCryptoAlgorithmParameters(state, WTF::move(algorithmIdentifier), Operations::Verify); if (paramsOrException.hasException()) { promise->reject(paramsOrException.releaseException()); return; } auto params = paramsOrException.releaseReturnValue(); - auto signature = copyToVector(WTFMove(signatureBufferSource)); - auto data = copyToVector(WTFMove(dataBufferSource)); + auto signature = copyToVector(WTF::move(signatureBufferSource)); + auto data = copyToVector(WTF::move(dataBufferSource)); if (params->identifier != key.algorithmIdentifier()) { promise->reject(InvalidAccessError, "CryptoKey doesn't match AlgorithmIdentifier"_s); @@ -753,7 +753,7 @@ void SubtleCrypto::verify(JSC::JSGlobalObject& state, AlgorithmIdentifier&& algo auto algorithm = CryptoAlgorithmRegistry::singleton().create(key.algorithmIdentifier()); auto index = promise.ptr(); - m_pendingPromises.add(index, WTFMove(promise)); + m_pendingPromises.add(index, WTF::move(promise)); WeakPtr weakThis { *this }; auto callback = [index, weakThis](bool result) mutable { if (auto promise = getPromise(index, weakThis)) @@ -764,26 +764,26 @@ void SubtleCrypto::verify(JSC::JSGlobalObject& state, AlgorithmIdentifier&& algo rejectWithException(promise.releaseNonNull(), ec, msg); }; - algorithm->verify(*params, key, WTFMove(signature), WTFMove(data), WTFMove(callback), WTFMove(exceptionCallback), *scriptExecutionContext(), m_workQueue); + algorithm->verify(*params, key, WTF::move(signature), WTF::move(data), WTF::move(callback), WTF::move(exceptionCallback), *scriptExecutionContext(), m_workQueue); } void SubtleCrypto::digest(JSC::JSGlobalObject& state, AlgorithmIdentifier&& algorithmIdentifier, BufferSource&& dataBufferSource, Ref&& promise) { auto& vm = state.vm(); auto scope = DECLARE_THROW_SCOPE(vm); - auto paramsOrException = normalizeCryptoAlgorithmParameters(state, WTFMove(algorithmIdentifier), Operations::Digest); + auto paramsOrException = normalizeCryptoAlgorithmParameters(state, WTF::move(algorithmIdentifier), Operations::Digest); if (paramsOrException.hasException()) { promise->reject(paramsOrException.releaseException().code(), "Unrecognized algorithm name"_s); return; } auto params = paramsOrException.releaseReturnValue(); - auto data = copyToVector(WTFMove(dataBufferSource)); + auto data = copyToVector(WTF::move(dataBufferSource)); auto algorithm = CryptoAlgorithmRegistry::singleton().create(params->identifier); auto index = promise.ptr(); - m_pendingPromises.add(index, WTFMove(promise)); + m_pendingPromises.add(index, WTF::move(promise)); WeakPtr weakThis { *this }; auto callback = [index, weakThis](const Vector& digest) mutable { if (auto promise = getPromise(index, weakThis)) @@ -794,14 +794,14 @@ void SubtleCrypto::digest(JSC::JSGlobalObject& state, AlgorithmIdentifier&& algo rejectWithException(promise.releaseNonNull(), ec, msg); }; - algorithm->digest(WTFMove(data), WTFMove(callback), WTFMove(exceptionCallback), *scriptExecutionContext(), m_workQueue); + algorithm->digest(WTF::move(data), WTF::move(callback), WTF::move(exceptionCallback), *scriptExecutionContext(), m_workQueue); } void SubtleCrypto::generateKey(JSC::JSGlobalObject& state, AlgorithmIdentifier&& algorithmIdentifier, bool extractable, Vector&& keyUsages, Ref&& promise) { auto& vm = state.vm(); auto scope = DECLARE_THROW_SCOPE(vm); - auto paramsOrException = normalizeCryptoAlgorithmParameters(state, WTFMove(algorithmIdentifier), Operations::GenerateKey); + auto paramsOrException = normalizeCryptoAlgorithmParameters(state, WTF::move(algorithmIdentifier), Operations::GenerateKey); if (paramsOrException.hasException()) { promise->reject(paramsOrException.releaseException()); return; @@ -813,7 +813,7 @@ void SubtleCrypto::generateKey(JSC::JSGlobalObject& state, AlgorithmIdentifier&& auto algorithm = CryptoAlgorithmRegistry::singleton().create(params->identifier); auto index = promise.ptr(); - m_pendingPromises.add(index, WTFMove(promise)); + m_pendingPromises.add(index, WTF::move(promise)); WeakPtr weakThis { *this }; auto callback = [index, weakThis](KeyOrKeyPair&& keyOrKeyPair) mutable { if (auto promise = getPromise(index, weakThis)) { @@ -844,12 +844,12 @@ void SubtleCrypto::generateKey(JSC::JSGlobalObject& state, AlgorithmIdentifier&& // The 26 January 2017 version of the specification suggests we should perform the following task asynchronously // regardless what kind of keys it produces: https://www.w3.org/TR/WebCryptoAPI/#SubtleCrypto-method-generateKey // That's simply not efficient for AES, HMAC and EC keys. Therefore, we perform it as an async task only for RSA keys. - RELEASE_AND_RETURN(scope, algorithm->generateKey(*params, extractable, keyUsagesBitmap, WTFMove(callback), WTFMove(exceptionCallback), *scriptExecutionContext())); + RELEASE_AND_RETURN(scope, algorithm->generateKey(*params, extractable, keyUsagesBitmap, WTF::move(callback), WTF::move(exceptionCallback), *scriptExecutionContext())); } void SubtleCrypto::deriveKey(JSC::JSGlobalObject& state, AlgorithmIdentifier&& algorithmIdentifier, CryptoKey& baseKey, AlgorithmIdentifier&& derivedKeyType, bool extractable, Vector&& keyUsages, Ref&& promise) { - auto paramsOrException = normalizeCryptoAlgorithmParameters(state, WTFMove(algorithmIdentifier), Operations::DeriveBits); + auto paramsOrException = normalizeCryptoAlgorithmParameters(state, WTF::move(algorithmIdentifier), Operations::DeriveBits); if (paramsOrException.hasException()) { promise->reject(paramsOrException.releaseException()); return; @@ -895,9 +895,9 @@ void SubtleCrypto::deriveKey(JSC::JSGlobalObject& state, AlgorithmIdentifier&& a auto algorithm = CryptoAlgorithmRegistry::singleton().create(params->identifier); auto index = promise.ptr(); - m_pendingPromises.add(index, WTFMove(promise)); + m_pendingPromises.add(index, WTF::move(promise)); WeakPtr weakThis { *this }; - auto callback = [index, weakThis, importAlgorithm = WTFMove(importAlgorithm), importParams = crossThreadCopyImportParams(*importParams), extractable, keyUsagesBitmap](const Vector& derivedKey) mutable { + auto callback = [index, weakThis, importAlgorithm = WTF::move(importAlgorithm), importParams = crossThreadCopyImportParams(*importParams), extractable, keyUsagesBitmap](const Vector& derivedKey) mutable { // FIXME: https://bugs.webkit.org/show_bug.cgi?id=169395 KeyData data = derivedKey; auto callback = [index, weakThis](CryptoKey& key) mutable { @@ -914,19 +914,19 @@ void SubtleCrypto::deriveKey(JSC::JSGlobalObject& state, AlgorithmIdentifier&& a rejectWithException(promise.releaseNonNull(), ec, msg); }; - importAlgorithm->importKey(SubtleCrypto::KeyFormat::Raw, WTFMove(data), *importParams, extractable, keyUsagesBitmap, WTFMove(callback), WTFMove(exceptionCallback)); + importAlgorithm->importKey(SubtleCrypto::KeyFormat::Raw, WTF::move(data), *importParams, extractable, keyUsagesBitmap, WTF::move(callback), WTF::move(exceptionCallback)); }; auto exceptionCallback = [index, weakThis](ExceptionCode ec, const String& msg) mutable { if (auto promise = getPromise(index, weakThis)) rejectWithException(promise.releaseNonNull(), ec, msg); }; - algorithm->deriveBits(*params, baseKey, length, WTFMove(callback), WTFMove(exceptionCallback), *scriptExecutionContext(), m_workQueue); + algorithm->deriveBits(*params, baseKey, length, WTF::move(callback), WTF::move(exceptionCallback), *scriptExecutionContext(), m_workQueue); } void SubtleCrypto::deriveBits(JSC::JSGlobalObject& state, AlgorithmIdentifier&& algorithmIdentifier, CryptoKey& baseKey, unsigned length, Ref&& promise) { - auto paramsOrException = normalizeCryptoAlgorithmParameters(state, WTFMove(algorithmIdentifier), Operations::DeriveBits); + auto paramsOrException = normalizeCryptoAlgorithmParameters(state, WTF::move(algorithmIdentifier), Operations::DeriveBits); if (paramsOrException.hasException()) { promise->reject(paramsOrException.releaseException()); return; @@ -946,7 +946,7 @@ void SubtleCrypto::deriveBits(JSC::JSGlobalObject& state, AlgorithmIdentifier&& auto algorithm = CryptoAlgorithmRegistry::singleton().create(params->identifier); auto index = promise.ptr(); - m_pendingPromises.add(index, WTFMove(promise)); + m_pendingPromises.add(index, WTF::move(promise)); WeakPtr weakThis { *this }; auto callback = [index, weakThis](const Vector& derivedKey) mutable { if (auto promise = getPromise(index, weakThis)) @@ -957,21 +957,21 @@ void SubtleCrypto::deriveBits(JSC::JSGlobalObject& state, AlgorithmIdentifier&& rejectWithException(promise.releaseNonNull(), ec, msg); }; - algorithm->deriveBits(*params, baseKey, length, WTFMove(callback), WTFMove(exceptionCallback), *scriptExecutionContext(), m_workQueue); + algorithm->deriveBits(*params, baseKey, length, WTF::move(callback), WTF::move(exceptionCallback), *scriptExecutionContext(), m_workQueue); } void SubtleCrypto::importKey(JSC::JSGlobalObject& state, KeyFormat format, KeyDataVariant&& keyDataVariant, AlgorithmIdentifier&& algorithmIdentifier, bool extractable, Vector&& keyUsages, Ref&& promise) { auto& vm = state.vm(); auto scope = DECLARE_THROW_SCOPE(vm); - auto paramsOrException = normalizeCryptoAlgorithmParameters(state, WTFMove(algorithmIdentifier), Operations::ImportKey); + auto paramsOrException = normalizeCryptoAlgorithmParameters(state, WTF::move(algorithmIdentifier), Operations::ImportKey); if (paramsOrException.hasException()) { promise->reject(paramsOrException.releaseException()); return; } auto params = paramsOrException.releaseReturnValue(); - auto keyDataOrNull = toKeyData(format, WTFMove(keyDataVariant), promise); + auto keyDataOrNull = toKeyData(format, WTF::move(keyDataVariant), promise); if (!keyDataOrNull) { // When toKeyData, it means the promise has been rejected, and we should return. return; @@ -983,7 +983,7 @@ void SubtleCrypto::importKey(JSC::JSGlobalObject& state, KeyFormat format, KeyDa auto algorithm = CryptoAlgorithmRegistry::singleton().create(params->identifier); auto index = promise.ptr(); - m_pendingPromises.add(index, WTFMove(promise)); + m_pendingPromises.add(index, WTF::move(promise)); WeakPtr weakThis { *this }; auto callback = [index, weakThis](CryptoKey& key) mutable { if (auto promise = getPromise(index, weakThis)) { @@ -1002,7 +1002,7 @@ void SubtleCrypto::importKey(JSC::JSGlobalObject& state, KeyFormat format, KeyDa // The 11 December 2014 version of the specification suggests we should perform the following task asynchronously: // https://www.w3.org/TR/WebCryptoAPI/#SubtleCrypto-method-importKey // It is not beneficial for less time consuming operations. Therefore, we perform it synchronously. - RELEASE_AND_RETURN(scope, algorithm->importKey(format, WTFMove(keyData), *params, extractable, keyUsagesBitmap, WTFMove(callback), WTFMove(exceptionCallback))); + RELEASE_AND_RETURN(scope, algorithm->importKey(format, WTF::move(keyData), *params, extractable, keyUsagesBitmap, WTF::move(callback), WTF::move(exceptionCallback))); } void SubtleCrypto::exportKey(KeyFormat format, CryptoKey& key, Ref&& promise) @@ -1020,7 +1020,7 @@ void SubtleCrypto::exportKey(KeyFormat format, CryptoKey& key, Refresolve>(WTFMove(std::get(key))); + promise->resolve>(WTF::move(std::get(key))); return; } ASSERT_NOT_REACHED(); @@ -1047,7 +1047,7 @@ void SubtleCrypto::exportKey(KeyFormat format, CryptoKey& key, RefexportKey(format, key, WTFMove(callback), WTFMove(exceptionCallback)); + algorithm->exportKey(format, key, WTF::move(callback), WTF::move(exceptionCallback)); } void SubtleCrypto::wrapKey(JSC::JSGlobalObject& state, KeyFormat format, CryptoKey& key, CryptoKey& wrappingKey, AlgorithmIdentifier&& wrapAlgorithmIdentifier, Ref&& promise) @@ -1094,9 +1094,9 @@ void SubtleCrypto::wrapKey(JSC::JSGlobalObject& state, KeyFormat format, CryptoK auto context = scriptExecutionContext(); auto index = promise.ptr(); - m_pendingPromises.add(index, WTFMove(promise)); + m_pendingPromises.add(index, WTF::move(promise)); WeakPtr weakThis { *this }; - auto callback = [index, weakThis, wrapAlgorithm, wrappingKey = Ref { wrappingKey }, wrapParams = WTFMove(wrapParams), isEncryption, context, workQueue = m_workQueue](SubtleCrypto::KeyFormat format, KeyData&& key) mutable { + auto callback = [index, weakThis, wrapAlgorithm, wrappingKey = Ref { wrappingKey }, wrapParams = WTF::move(wrapParams), isEncryption, context, workQueue = m_workQueue](SubtleCrypto::KeyFormat format, KeyData&& key) mutable { if (weakThis) { if (auto promise = weakThis->m_pendingPromises.get(index)) { Vector bytes; @@ -1108,7 +1108,7 @@ void SubtleCrypto::wrapKey(JSC::JSGlobalObject& state, KeyFormat format, CryptoK break; case SubtleCrypto::KeyFormat::Jwk: { // FIXME: Converting to JS just to JSON-Stringify seems inefficient. We should find a way to go directly from the struct to JSON. - auto jwk = toJS>(*(promise->globalObject()), *(promise->globalObject()), WTFMove(std::get(key))); + auto jwk = toJS>(*(promise->globalObject()), *(promise->globalObject()), WTF::move(std::get(key))); String jwkString = JSONStringify(promise->globalObject(), jwk, 0); CString jwkUTF8String = jwkString.utf8(StrictConversion); bytes.append(jwkUTF8String.span()); @@ -1128,11 +1128,11 @@ void SubtleCrypto::wrapKey(JSC::JSGlobalObject& state, KeyFormat format, CryptoK // The 11 December 2014 version of the specification suggests we should perform the following task asynchronously: // https://www.w3.org/TR/WebCryptoAPI/#SubtleCrypto-method-wrapKey // It is not beneficial for less time consuming operations. Therefore, we perform it synchronously. - wrapAlgorithm->wrapKey(wrappingKey.get(), WTFMove(bytes), WTFMove(callback), WTFMove(exceptionCallback)); + wrapAlgorithm->wrapKey(wrappingKey.get(), WTF::move(bytes), WTF::move(callback), WTF::move(exceptionCallback)); return; } // The following operation should be performed asynchronously. - wrapAlgorithm->encrypt(*wrapParams, WTFMove(wrappingKey), WTFMove(bytes), WTFMove(callback), WTFMove(exceptionCallback), *context, workQueue); + wrapAlgorithm->encrypt(*wrapParams, WTF::move(wrappingKey), WTF::move(bytes), WTF::move(callback), WTF::move(exceptionCallback), *context, workQueue); } } }; @@ -1142,12 +1142,12 @@ void SubtleCrypto::wrapKey(JSC::JSGlobalObject& state, KeyFormat format, CryptoK }; // The following operation should be performed synchronously. - exportAlgorithm->exportKey(format, key, WTFMove(callback), WTFMove(exceptionCallback)); + exportAlgorithm->exportKey(format, key, WTF::move(callback), WTF::move(exceptionCallback)); } void SubtleCrypto::unwrapKey(JSC::JSGlobalObject& state, KeyFormat format, BufferSource&& wrappedKeyBufferSource, CryptoKey& unwrappingKey, AlgorithmIdentifier&& unwrapAlgorithmIdentifier, AlgorithmIdentifier&& unwrappedKeyAlgorithmIdentifier, bool extractable, Vector&& keyUsages, Ref&& promise) { - auto wrappedKey = copyToVector(WTFMove(wrappedKeyBufferSource)); + auto wrappedKey = copyToVector(WTF::move(wrappedKeyBufferSource)); bool isDecryption = false; @@ -1195,7 +1195,7 @@ void SubtleCrypto::unwrapKey(JSC::JSGlobalObject& state, KeyFormat format, Buffe } auto index = promise.ptr(); - m_pendingPromises.add(index, WTFMove(promise)); + m_pendingPromises.add(index, WTF::move(promise)); WeakPtr weakThis { *this }; auto callback = [index, weakThis, format, importAlgorithm, unwrappedKeyAlgorithm = crossThreadCopyImportParams(*unwrappedKeyAlgorithm), extractable, keyUsagesBitmap](const Vector& bytes) mutable { if (weakThis) { @@ -1243,7 +1243,7 @@ void SubtleCrypto::unwrapKey(JSC::JSGlobalObject& state, KeyFormat format, Buffe }; // The following operation should be performed synchronously. - importAlgorithm->importKey(format, WTFMove(keyData), *unwrappedKeyAlgorithm, extractable, keyUsagesBitmap, WTFMove(callback), WTFMove(exceptionCallback)); + importAlgorithm->importKey(format, WTF::move(keyData), *unwrappedKeyAlgorithm, extractable, keyUsagesBitmap, WTF::move(callback), WTF::move(exceptionCallback)); } } }; @@ -1256,11 +1256,11 @@ void SubtleCrypto::unwrapKey(JSC::JSGlobalObject& state, KeyFormat format, Buffe // The 11 December 2014 version of the specification suggests we should perform the following task asynchronously: // https://www.w3.org/TR/WebCryptoAPI/#SubtleCrypto-method-unwrapKey // It is not beneficial for less time consuming operations. Therefore, we perform it synchronously. - unwrapAlgorithm->unwrapKey(unwrappingKey, WTFMove(wrappedKey), WTFMove(callback), WTFMove(exceptionCallback)); + unwrapAlgorithm->unwrapKey(unwrappingKey, WTF::move(wrappedKey), WTF::move(callback), WTF::move(exceptionCallback)); return; } - unwrapAlgorithm->decrypt(*unwrapParams, unwrappingKey, WTFMove(wrappedKey), WTFMove(callback), WTFMove(exceptionCallback), *scriptExecutionContext(), m_workQueue); + unwrapAlgorithm->decrypt(*unwrapParams, unwrappingKey, WTF::move(wrappedKey), WTF::move(callback), WTF::move(exceptionCallback), *scriptExecutionContext(), m_workQueue); } } diff --git a/src/bun.js/modules/BunJSCModule.h b/src/bun.js/modules/BunJSCModule.h index 5fa2aca13d..a9d4e8b194 100644 --- a/src/bun.js/modules/BunJSCModule.h +++ b/src/bun.js/modules/BunJSCModule.h @@ -751,7 +751,7 @@ JSC_DEFINE_HOST_FUNCTION(functionGenerateHeapSnapshotForDebugging, } scope.releaseAssertNoException(); - return JSValue::encode(JSONParse(globalObject, WTFMove(jsonString))); + return JSValue::encode(JSONParse(globalObject, WTF::move(jsonString))); } JSC_DEFINE_HOST_FUNCTION(functionSerialize, @@ -782,7 +782,7 @@ JSC_DEFINE_HOST_FUNCTION(functionSerialize, Vector> transferList; Vector> dummyPorts; - ExceptionOr> serialized = SerializedScriptValue::create(*globalObject, value, WTFMove(transferList), dummyPorts, SerializationForStorage::Yes); + ExceptionOr> serialized = SerializedScriptValue::create(*globalObject, value, WTF::move(transferList), dummyPorts, SerializationForStorage::Yes); EXCEPTION_ASSERT(serialized.hasException() == !!throwScope.exception()); if (serialized.hasException()) { WebCore::propagateException(*globalObject, throwScope, serialized.releaseException()); @@ -795,16 +795,16 @@ JSC_DEFINE_HOST_FUNCTION(functionSerialize, if (asNodeBuffer) { size_t byteLength = arrayBuffer->byteLength(); auto* subclassStructure = globalObject->JSBufferSubclassStructure(); - JSC::JSUint8Array* uint8Array = JSC::JSUint8Array::create(lexicalGlobalObject, subclassStructure, WTFMove(arrayBuffer), 0, byteLength); + JSC::JSUint8Array* uint8Array = JSC::JSUint8Array::create(lexicalGlobalObject, subclassStructure, WTF::move(arrayBuffer), 0, byteLength); RETURN_IF_EXCEPTION(throwScope, {}); return JSValue::encode(uint8Array); } if (arrayBuffer->isShared()) { - return JSValue::encode(JSArrayBuffer::create(vm, globalObject->arrayBufferStructureWithSharingMode(), WTFMove(arrayBuffer))); + return JSValue::encode(JSArrayBuffer::create(vm, globalObject->arrayBufferStructureWithSharingMode(), WTF::move(arrayBuffer))); } - return JSValue::encode(JSArrayBuffer::create(vm, globalObject->arrayBufferStructure(), WTFMove(arrayBuffer))); + return JSValue::encode(JSArrayBuffer::create(vm, globalObject->arrayBufferStructure(), WTF::move(arrayBuffer))); } JSC_DEFINE_HOST_FUNCTION(functionDeserialize, (JSGlobalObject * globalObject, CallFrame* callFrame)) { diff --git a/src/codegen/bindgen.ts b/src/codegen/bindgen.ts index 0ab0708612..386823736f 100644 --- a/src/codegen/bindgen.ts +++ b/src/codegen/bindgen.ts @@ -754,11 +754,13 @@ function emitConvertEnumFunction(w: CodeWriter, type: TypeImpl) { w.line(); w.line(`template<> std::optional<${name}> parseEnumerationFromString<${name}>(const String& stringValue)`); w.line(`{`); - w.line(` static constexpr std::pair mappings[] = {`); + w.line( + ` static constexpr std::array, ${type.data.length}> mappings { {`, + ); for (const value of type.data) { w.line(` { ${str(value)}_s, ${name}::${pascal(value)} },`); } - w.line(` };`); + w.line(` } };`); w.line(` static constexpr SortedArrayMap enumerationMapping { mappings };`); w.line(` if (auto* enumerationValue = enumerationMapping.tryGet(stringValue); enumerationValue) [[likely]]`); w.line(` return *enumerationValue;`); diff --git a/src/codegen/generate-classes.ts b/src/codegen/generate-classes.ts index ef054fe5b3..929585c976 100644 --- a/src/codegen/generate-classes.ts +++ b/src/codegen/generate-classes.ts @@ -1501,7 +1501,7 @@ function generateClassHeader(typeName, obj: ClassDefinition) { void* m_ctx { nullptr }; ${name}(JSC::VM& vm, JSC::Structure* structure, void* sinkPtr${obj.valuesArray ? ", WTF::FixedVector>&& jsvalueArray_" : ""}) - : Base(vm, structure)${obj.valuesArray ? ", jsvalueArray(WTFMove(jsvalueArray_))" : ""} + : Base(vm, structure)${obj.valuesArray ? ", jsvalueArray(WTF::move(jsvalueArray_))" : ""} { m_ctx = sinkPtr; ${weakInit.trim()} @@ -1521,7 +1521,7 @@ function generateClassHeader(typeName, obj: ClassDefinition) { ${ obj.valuesArray && obj.values && obj.values.length > 0 ? `${name}(JSC::VM& vm, JSC::Structure* structure, void* sinkPtr, WTF::FixedVector>&& jsvalueArray_${obj.values.map(v => `, JSC::JSValue ${v}`).join("")}) - : Base(vm, structure), jsvalueArray(WTFMove(jsvalueArray_))${obj.values.map(v => `\n , m_${v}(${v}, JSC::WriteBarrierEarlyInit)`).join("")} + : Base(vm, structure), jsvalueArray(WTF::move(jsvalueArray_))${obj.values.map(v => `\n , m_${v}(${v}, JSC::WriteBarrierEarlyInit)`).join("")} { m_ctx = sinkPtr; ${weakInit.trim()} @@ -1779,7 +1779,7 @@ ${name}* ${name}::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::St ${ obj.valuesArray ? `${name}* ${name}::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure, void* ctx, WTF::FixedVector>&& jsvalueArray) { - ${name}* ptr = new (NotNull, JSC::allocateCell<${name}>(vm)) ${name}(vm, structure, ctx, WTFMove(jsvalueArray)); + ${name}* ptr = new (NotNull, JSC::allocateCell<${name}>(vm)) ${name}(vm, structure, ctx, WTF::move(jsvalueArray)); ptr->finishCreation(vm); return ptr; }` @@ -1799,7 +1799,7 @@ ${ ${ obj.valuesArray && obj.values && obj.values.length > 0 ? `${name}* ${name}::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure, void* ctx, WTF::FixedVector>&& jsvalueArray${obj.values.map(v => `, JSC::JSValue ${v}`).join("")}) { - ${name}* ptr = new (NotNull, JSC::allocateCell<${name}>(vm)) ${name}(vm, structure, ctx, WTFMove(jsvalueArray)${obj.values.map(v => `, ${v}`).join("")}); + ${name}* ptr = new (NotNull, JSC::allocateCell<${name}>(vm)) ${name}(vm, structure, ctx, WTF::move(jsvalueArray)${obj.values.map(v => `, ${v}`).join("")}); ptr->finishCreation(vm); return ptr; }` @@ -1915,7 +1915,7 @@ ${ for (size_t i = 0; i < args->size(); ++i) { jsvalueArray[i].setWithoutWriteBarrier(args->at(i)); } - ${className(typeName)}* instance = ${className(typeName)}::create(vm, globalObject, structure, ptr, WTFMove(jsvalueArray)); + ${className(typeName)}* instance = ${className(typeName)}::create(vm, globalObject, structure, ptr, WTF::move(jsvalueArray)); ${ obj.estimatedSize ? ` @@ -1956,7 +1956,7 @@ ${ for (size_t i = 0; i < args->size(); ++i) { jsvalueArray[i].setWithoutWriteBarrier(args->at(i)); } - ${className(typeName)}* instance = ${className(typeName)}::create(vm, globalObject, structure, ptr, WTFMove(jsvalueArray)${obj.values.map(v => `, JSC::JSValue::decode(${v})`).join("")}); + ${className(typeName)}* instance = ${className(typeName)}::create(vm, globalObject, structure, ptr, WTF::move(jsvalueArray)${obj.values.map(v => `, JSC::JSValue::decode(${v})`).join("")}); ${ obj.estimatedSize ? ` diff --git a/src/vm/SigintWatcher.h b/src/vm/SigintWatcher.h index dbdf33c1c4..6cb033fb49 100644 --- a/src/vm/SigintWatcher.h +++ b/src/vm/SigintWatcher.h @@ -54,7 +54,7 @@ public: GlobalObjectHolder(const GlobalObjectHolder&) = delete; GlobalObjectHolder(GlobalObjectHolder&& other) : m_globalObject(std::exchange(other.m_globalObject, nullptr)) - , m_receivers(WTFMove(other.m_receivers)) + , m_receivers(WTF::move(other.m_receivers)) { } @@ -62,7 +62,7 @@ public: GlobalObjectHolder& operator=(GlobalObjectHolder&& other) { m_globalObject = std::exchange(other.m_globalObject, nullptr); - m_receivers = WTFMove(other.m_receivers); + m_receivers = WTF::move(other.m_receivers); return *this; } From 28fd495b395a4fc3b869c4207b2494e6a5e7001c Mon Sep 17 00:00:00 2001 From: Jarred Sumner Date: Thu, 25 Dec 2025 17:43:43 -0800 Subject: [PATCH 198/212] Deflake test/js/bun/resolve/load-same-js-file-a-lot.test.ts --- .gitignore | 1 + .../bun/resolve/load-same-js-file-a-lot.test.ts | 15 +++++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 4b95245f9c..528cf0fa5f 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ .ninja_deps .ninja_log .npm +.npmrc .npm.gz .parcel-cache .swcrc diff --git a/test/js/bun/resolve/load-same-js-file-a-lot.test.ts b/test/js/bun/resolve/load-same-js-file-a-lot.test.ts index cea9a08290..2fbd4699b6 100644 --- a/test/js/bun/resolve/load-same-js-file-a-lot.test.ts +++ b/test/js/bun/resolve/load-same-js-file-a-lot.test.ts @@ -1,8 +1,11 @@ import { expect, test } from "bun:test"; -import { isDebug } from "harness"; +import { isASAN, isDebug } from "harness"; + +const asanIsSlowMultiplier = isASAN ? 0.2 : 1; +const count = Math.floor(10000 * asanIsSlowMultiplier); test( - "load the same file 10,000 times", + `load the same file ${count} times`, async () => { const meta = { url: import.meta.url.toLocaleLowerCase().replace(".test.ts", ".js"), @@ -14,7 +17,7 @@ test( }; const prev = Bun.unsafe.gcAggressionLevel(); Bun.unsafe.gcAggressionLevel(0); - for (let i = 0; i < 10000; i++) { + for (let i = 0; i < count; i++) { const { default: { url, dir, file, path, dirname, filename }, } = await import("./load-same-js-file-a-lot.js?i=" + i); @@ -28,13 +31,13 @@ test( Bun.gc(true); Bun.unsafe.gcAggressionLevel(prev); }, - isDebug ? 20_000 : 5000, + isDebug || isASAN ? 20_000 : 5000, ); -test("load the same empty JS file 10,000 times", async () => { +test(`load the same empty JS file ${count} times`, async () => { const prev = Bun.unsafe.gcAggressionLevel(); Bun.unsafe.gcAggressionLevel(0); - for (let i = 0; i < 10000; i++) { + for (let i = 0; i < count; i++) { const { default: obj } = await import("./load-same-empty-js-file-a-lot.js?i=" + i); expect(obj).toEqual({}); } From 5715b54614cbdb885ab42584d401c300cdff9519 Mon Sep 17 00:00:00 2001 From: Nico Cevallos Date: Fri, 26 Dec 2025 04:49:23 -0300 Subject: [PATCH 199/212] add test for dependency order when a package's name is larger than 8 characters + fix (#25697) ### What does this PR do? - Add test that is broken before the changes in the code and fix previous test making script in dependency takes a bit of time to be executed. Without the `setTimeout` in the tests, due race conditions it always success. I tried adding a test combining both tests, with dependencies `dep0` and `larger-than-8-char`, but if the timeout is the same it success. - Fix for the use case added, by using the correct buffer for `Dependency.name` otherwise it gets garbage when package name is larger than 8 characters. This should fix #12203 ### How did you verify your code works? Undo the changes in the code to verify the new test fails and check it again after adding the changes in the code. --- src/cli/filter_run.zig | 7 ++--- src/js/node/assert.ts | 7 +++-- src/resolver/package_json.zig | 2 +- test/cli/run/filter-workspace.test.ts | 43 ++++++++++++++++++++++++++- 4 files changed, 49 insertions(+), 10 deletions(-) diff --git a/src/cli/filter_run.zig b/src/cli/filter_run.zig index 334432a281..1a4fee2d1f 100644 --- a/src/cli/filter_run.zig +++ b/src/cli/filter_run.zig @@ -584,13 +584,10 @@ pub fn runScriptsWithFilter(ctx: Command.Context) !noreturn { } // compute dependencies (TODO: maybe we should do this only in a workspace?) for (state.handles) |*handle| { + const source_buf = handle.config.deps.source_buf; var iter = handle.config.deps.map.iterator(); while (iter.next()) |entry| { - var sfa = std.heap.stackFallback(256, ctx.allocator); - const alloc = sfa.get(); - const buf = try alloc.alloc(u8, entry.key_ptr.len()); - defer alloc.free(buf); - const name = entry.key_ptr.slice(buf); + const name = entry.key_ptr.slice(source_buf); // is it a workspace dependency? if (map.get(name)) |pkgs| { for (pkgs.items) |dep| { diff --git a/src/js/node/assert.ts b/src/js/node/assert.ts index 454b2b3b0d..0507b5c620 100644 --- a/src/js/node/assert.ts +++ b/src/js/node/assert.ts @@ -828,9 +828,10 @@ function rejects( error: nodeAssert.AssertPredicate, message?: string | Error, ): Promise; -assert.rejects = async function rejects(promiseFn: () => Promise, ...args: any[]): Promise { - expectsError(rejects, await waitForActual(promiseFn), ...args); -}; +async function rejects(block: (() => Promise) | Promise, ...args: any[]): Promise { + expectsError(rejects, await waitForActual(block), ...args); +} +assert.rejects = rejects; /** * Asserts that the function `fn` does not throw an error. diff --git a/src/resolver/package_json.zig b/src/resolver/package_json.zig index 1ccf7529ca..380ceb4fbf 100644 --- a/src/resolver/package_json.zig +++ b/src/resolver/package_json.zig @@ -1031,7 +1031,7 @@ pub const PackageJSON = struct { const name_prop = prop.key orelse continue; const name_str = name_prop.asString(allocator) orelse continue; const name_hash = String.Builder.stringHash(name_str); - const name = String.init(name_str, name_str); + const name = String.init(package_json.dependencies.source_buf, name_str); const version_value = prop.value orelse continue; const version_str = version_value.asString(allocator) orelse continue; const sliced_str = Semver.SlicedString.init(version_str, version_str); diff --git a/test/cli/run/filter-workspace.test.ts b/test/cli/run/filter-workspace.test.ts index 8a6b064a77..42bd082cf7 100644 --- a/test/cli/run/filter-workspace.test.ts +++ b/test/cli/run/filter-workspace.test.ts @@ -275,7 +275,10 @@ describe("bun", () => { test("respect dependency order", () => { const dir = tempDirWithFiles("testworkspace", { dep0: { - "index.js": "Bun.write('out.txt', 'success')", + "index.js": [ + "await new Promise((resolve) => setTimeout(resolve, 100))", + "Bun.write('out.txt', 'success')", + ].join(";"), "package.json": JSON.stringify({ name: "dep0", scripts: { @@ -305,6 +308,44 @@ describe("bun", () => { }); }); + test("respect dependency order when dependency name is larger than 8 characters", () => { + const largeNamePkgName = "larger-than-8-char"; + const fileContent = `${largeNamePkgName} - ${new Date().getTime()}`; + const largeNamePkg = { + "index.js": [ + "await new Promise((resolve) => setTimeout(resolve, 100))", + `Bun.write('out.txt', '${fileContent}')`, + ].join(";"), + "package.json": JSON.stringify({ + name: largeNamePkgName, + scripts: { + script: `${bunExe()} run index.js`, + }, + }), + }; + const dir = tempDirWithFiles("testworkspace", { + main: { + "index.js": `console.log(await Bun.file("../${largeNamePkgName}/out.txt").text())`, + "package.json": JSON.stringify({ + name: "main", + dependencies: { + [largeNamePkgName]: "*", + }, + scripts: { + script: `${bunExe()} run index.js`, + }, + }), + }, + [largeNamePkgName]: largeNamePkg, + }); + runInCwdSuccess({ + cwd: dir, + pattern: "*", + target_pattern: [new RegExp(fileContent)], + command: ["script"], + }); + }); + test("ignore dependency order on cycle, preserving pre and post script order", () => { const dir = tempDirWithFiles("testworkspace", { dep0: { From 81b4a40fbdcce6d5ac08ca68c179c854b2393286 Mon Sep 17 00:00:00 2001 From: robobun Date: Fri, 26 Dec 2025 20:24:27 -0800 Subject: [PATCH 200/212] [publish images] Remove sccache, use ccache only (#25682) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Remove sccache support entirely, use ccache only - Missing ccache no longer fails the build (just skips caching) - Remove S3 distributed cache support ## Changes - Remove `cmake/tools/SetupSccache.cmake` and S3 distributed cache support - Simplify `CMakeLists.txt` to only use ccache - Update `SetupCcache.cmake` to not fail when ccache is missing - Replace sccache with ccache in bootstrap scripts (sh, ps1) - Update `.buildkite/Dockerfile` to install ccache instead of sccache - Update `flake.nix` and `shell.nix` to use ccache - Update documentation (CONTRIBUTING.md, contributing.mdx, building-windows.mdx) - Remove `scripts/build-cache/` directory (was only for sccache S3 access) ## Test plan - [x] Build completes successfully with `bun bd` šŸ¤– Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Bot Co-authored-by: Claude --- .buildkite/Dockerfile | 17 +- CMakeLists.txt | 10 +- CONTRIBUTING.md | 47 ++---- cmake/tools/SetupCcache.cmake | 6 - cmake/tools/SetupSccache.cmake | 123 -------------- docs/project/building-windows.mdx | 2 +- docs/project/contributing.mdx | 49 ++---- flake.nix | 2 +- scripts/bootstrap.ps1 | 6 +- scripts/bootstrap.sh | 55 +++---- scripts/build-cache/bun.lock | 249 ----------------------------- scripts/build-cache/have-access.ts | 82 ---------- scripts/build-cache/package.json | 6 - scripts/build.mjs | 4 +- shell.nix | 2 +- 15 files changed, 66 insertions(+), 594 deletions(-) delete mode 100644 cmake/tools/SetupSccache.cmake delete mode 100644 scripts/build-cache/bun.lock delete mode 100644 scripts/build-cache/have-access.ts delete mode 100644 scripts/build-cache/package.json diff --git a/.buildkite/Dockerfile b/.buildkite/Dockerfile index 033aec633d..2b5f944834 100644 --- a/.buildkite/Dockerfile +++ b/.buildkite/Dockerfile @@ -26,7 +26,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ wget curl git python3 python3-pip ninja-build \ software-properties-common apt-transport-https \ ca-certificates gnupg lsb-release unzip \ - libxml2-dev ruby ruby-dev bison gawk perl make golang \ + libxml2-dev ruby ruby-dev bison gawk perl make golang ccache \ && add-apt-repository ppa:ubuntu-toolchain-r/test \ && apt-get update \ && apt-get install -y gcc-13 g++-13 libgcc-13-dev libstdc++-13-dev \ @@ -35,7 +35,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ && wget https://apt.llvm.org/llvm.sh \ && chmod +x llvm.sh \ && ./llvm.sh ${LLVM_VERSION} all \ - && rm llvm.sh + && rm llvm.sh \ + && rm -rf /var/lib/apt/lists/* RUN --mount=type=tmpfs,target=/tmp \ @@ -48,14 +49,6 @@ RUN --mount=type=tmpfs,target=/tmp \ wget -O /tmp/cmake.sh "$cmake_url" && \ sh /tmp/cmake.sh --skip-license --prefix=/usr -RUN --mount=type=tmpfs,target=/tmp \ - sccache_version="0.12.0" && \ - arch=$(uname -m) && \ - sccache_url="https://github.com/mozilla/sccache/releases/download/v${sccache_version}/sccache-v${sccache_version}-${arch}-unknown-linux-musl.tar.gz" && \ - wget -O /tmp/sccache.tar.gz "$sccache_url" && \ - tar -xzf /tmp/sccache.tar.gz -C /tmp && \ - install -m755 /tmp/sccache-v${sccache_version}-${arch}-unknown-linux-musl/sccache /usr/local/bin - RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 130 \ --slave /usr/bin/g++ g++ /usr/bin/g++-13 \ --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-13 \ @@ -134,9 +127,7 @@ RUN ARCH=$(if [ "$TARGETARCH" = "arm64" ]; then echo "arm64"; else echo "amd64"; RUN mkdir -p /var/cache/buildkite-agent /var/log/buildkite-agent /var/run/buildkite-agent /etc/buildkite-agent /var/lib/buildkite-agent/cache/bun # The following is necessary to configure buildkite to use a stable -# checkout directory. sccache hashes absolute paths into its cache keys, -# so if buildkite uses a different checkout path each time (which it does -# by default), sccache will be useless. +# checkout directory for ccache to be effective. RUN mkdir -p -m 755 /var/lib/buildkite-agent/hooks && \ cat <<'EOF' > /var/lib/buildkite-agent/hooks/environment #!/bin/sh diff --git a/CMakeLists.txt b/CMakeLists.txt index 8fe9a83f3f..f30ad577c1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,15 +47,7 @@ include(SetupEsbuild) include(SetupZig) include(SetupRust) -find_program(SCCACHE_PROGRAM sccache) -if(SCCACHE_PROGRAM AND NOT DEFINED ENV{NO_SCCACHE}) - include(SetupSccache) -else() - find_program(CCACHE_PROGRAM ccache) - if(CCACHE_PROGRAM) - include(SetupCcache) - endif() -endif() +include(SetupCcache) # Generate dependency versions header include(GenerateDependencyVersions) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 192ce5ad63..750eb17a62 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -23,7 +23,7 @@ Using your system's package manager, install Bun's dependencies: {% codetabs group="os" %} ```bash#macOS (Homebrew) -$ brew install automake cmake coreutils gnu-sed go icu4c libiconv libtool ninja pkg-config rust ruby sccache +$ brew install automake ccache cmake coreutils gnu-sed go icu4c libiconv libtool ninja pkg-config rust ruby ``` ```bash#Ubuntu/Debian @@ -65,43 +65,28 @@ $ brew install bun {% /codetabs %} -### Optional: Install `sccache` +### Optional: Install `ccache` -sccache is used to cache compilation artifacts, significantly speeding up builds. It must be installed with S3 support: +ccache is used to cache compilation artifacts, significantly speeding up builds: ```bash # For macOS -$ brew install sccache +$ brew install ccache -# For Linux. Note that the version in your package manager may not have S3 support. -$ cargo install sccache --features=s3 +# For Ubuntu/Debian +$ sudo apt install ccache + +# For Arch +$ sudo pacman -S ccache + +# For Fedora +$ sudo dnf install ccache + +# For openSUSE +$ sudo zypper install ccache ``` -This will install `sccache` with S3 support. Our build scripts will automatically detect and use `sccache` with our shared S3 cache. **Note**: Not all versions of `sccache` are compiled with S3 support, hence we recommend installing it via `cargo`. - -#### Registering AWS Credentials for `sccache` (Core Developers Only) - -Core developers have write access to the shared S3 cache. To enable write access, you must log in with AWS credentials. The easiest way to do this is to use the [`aws` CLI](https://aws.amazon.com/cli/) and invoke [`aws configure` to provide your AWS security info](https://docs.aws.amazon.com/cli/latest/reference/configure/). - -The `cmake` scripts should automatically detect your AWS credentials from the environment or the `~/.aws/credentials` file. - -

    - Logging in to the `aws` CLI - - 1. Install the AWS CLI by following [the official guide](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). - 2. Log in to your AWS account console. A team member should provide you with your credentials. - 3. Click your name in the top right > Security credentials. - 4. Scroll to "Access keys" and create a new access key. - 5. Run `aws configure` in your terminal and provide the access key ID and secret access key when prompted. -
    - -
    - Common Issues You May Encounter - - - To confirm that the cache is being used, you can use the `sccache --show-stats` command right after a build. This will expose very useful statistics, including cache hits/misses. - - If you have multiple AWS profiles configured, ensure that the correct profile is set in the `AWS_PROFILE` environment variable. - - `sccache` follows a server-client model. If you run into weird issues where `sccache` refuses to use S3, even though you have AWS credentials configured, try killing any running `sccache` servers with `sccache --stop-server` and then re-running the build. -
    +Our build scripts will automatically detect and use `ccache` if available. You can check cache statistics with `ccache --show-stats`. ## Install LLVM diff --git a/cmake/tools/SetupCcache.cmake b/cmake/tools/SetupCcache.cmake index fc1e64aa96..3e1982ca70 100644 --- a/cmake/tools/SetupCcache.cmake +++ b/cmake/tools/SetupCcache.cmake @@ -5,18 +5,12 @@ if(NOT ENABLE_CCACHE OR CACHE_STRATEGY STREQUAL "none") return() endif() -if (CI AND NOT APPLE) - setenv(CCACHE_DISABLE 1) - return() -endif() find_command( VARIABLE CCACHE_PROGRAM COMMAND ccache - REQUIRED - ${CI} ) if(NOT CCACHE_PROGRAM) diff --git a/cmake/tools/SetupSccache.cmake b/cmake/tools/SetupSccache.cmake deleted file mode 100644 index cb4b5aa750..0000000000 --- a/cmake/tools/SetupSccache.cmake +++ /dev/null @@ -1,123 +0,0 @@ -# Setup sccache as the C and C++ compiler launcher to speed up builds by caching -if(CACHE_STRATEGY STREQUAL "none") - return() -endif() - -set(SCCACHE_SHARED_CACHE_REGION "us-west-1") -set(SCCACHE_SHARED_CACHE_BUCKET "bun-build-sccache-store") - -# Function to check if the system AWS credentials have access to the sccache S3 bucket. -function(check_aws_credentials OUT_VAR) - # Install dependencies first - execute_process( - COMMAND ${BUN_EXECUTABLE} install --frozen-lockfile - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/scripts/build-cache - RESULT_VARIABLE INSTALL_EXIT_CODE - OUTPUT_VARIABLE INSTALL_OUTPUT - ERROR_VARIABLE INSTALL_ERROR - ) - - if(NOT INSTALL_EXIT_CODE EQUAL 0) - message(FATAL_ERROR "Failed to install dependencies in scripts/build-cache\n" - "Exit code: ${INSTALL_EXIT_CODE}\n" - "Output: ${INSTALL_OUTPUT}\n" - "Error: ${INSTALL_ERROR}") - endif() - - # Check AWS credentials - execute_process( - COMMAND - ${BUN_EXECUTABLE} - run - have-access.ts - --bucket ${SCCACHE_SHARED_CACHE_BUCKET} - --region ${SCCACHE_SHARED_CACHE_REGION} - WORKING_DIRECTORY - ${CMAKE_SOURCE_DIR}/scripts/build-cache - RESULT_VARIABLE HAVE_ACCESS_EXIT_CODE - ) - - if(HAVE_ACCESS_EXIT_CODE EQUAL 0) - set(HAS_CREDENTIALS TRUE) - else() - set(HAS_CREDENTIALS FALSE) - endif() - - set(${OUT_VAR} ${HAS_CREDENTIALS} PARENT_SCOPE) -endfunction() - -# Configure sccache to use the local cache only. -function(sccache_configure_local_filesystem) - unsetenv(SCCACHE_BUCKET) - unsetenv(SCCACHE_REGION) - setenv(SCCACHE_DIR "${CACHE_PATH}/sccache") -endfunction() - -# Configure sccache to use the distributed cache (S3 + local). -function(sccache_configure_distributed) - setenv(SCCACHE_BUCKET "${SCCACHE_SHARED_CACHE_BUCKET}") - setenv(SCCACHE_REGION "${SCCACHE_SHARED_CACHE_REGION}") - setenv(SCCACHE_DIR "${CACHE_PATH}/sccache") -endfunction() - -function(sccache_configure_environment_ci) - if(CACHE_STRATEGY STREQUAL "auto" OR CACHE_STRATEGY STREQUAL "distributed") - check_aws_credentials(HAS_AWS_CREDENTIALS) - if(HAS_AWS_CREDENTIALS) - sccache_configure_distributed() - message(NOTICE "sccache: Using distributed cache strategy.") - else() - message(FATAL_ERROR "CI CACHE_STRATEGY is set to '${CACHE_STRATEGY}', but no valid AWS " - "credentials were found. Note that 'auto' requires AWS credentials to access the shared " - "cache in CI.") - endif() - elseif(CACHE_STRATEGY STREQUAL "local") - # We disallow this because we want our CI runs to always used the shared cache to accelerate - # builds. - # none, distributed and auto are all okay. - # - # If local is configured, it's as good as "none", so this is probably user error. - message(FATAL_ERROR "CI CACHE_STRATEGY is set to 'local', which is not allowed.") - endif() -endfunction() - -function(sccache_configure_environment_developer) - # Local environments can use any strategy they like. S3 is set up in such a way so as to clean - # itself from old entries automatically. - if (CACHE_STRATEGY STREQUAL "auto" OR CACHE_STRATEGY STREQUAL "local") - # In the local environment, we prioritize using the local cache. This is because sccache takes - # into consideration the whole absolute path of the files being compiled, and it's very - # unlikely users will have the same absolute paths on their local machines. - sccache_configure_local_filesystem() - message(NOTICE "sccache: Using local cache strategy.") - elseif(CACHE_STRATEGY STREQUAL "distributed") - check_aws_credentials(HAS_AWS_CREDENTIALS) - if(HAS_AWS_CREDENTIALS) - sccache_configure_distributed() - message(NOTICE "sccache: Using distributed cache strategy.") - else() - message(FATAL_ERROR "CACHE_STRATEGY is set to 'distributed', but no valid AWS credentials " - "were found.") - endif() - endif() -endfunction() - -find_command(VARIABLE SCCACHE_PROGRAM COMMAND sccache REQUIRED ${CI}) -if(NOT SCCACHE_PROGRAM) - message(WARNING "sccache not found. Your builds will be slower.") - return() -endif() - -set(SCCACHE_ARGS CMAKE_C_COMPILER_LAUNCHER CMAKE_CXX_COMPILER_LAUNCHER) -foreach(arg ${SCCACHE_ARGS}) - setx(${arg} ${SCCACHE_PROGRAM}) - list(APPEND CMAKE_ARGS -D${arg}=${${arg}}) -endforeach() - -setenv(SCCACHE_LOG "info") - -if (CI) - sccache_configure_environment_ci() -else() - sccache_configure_environment_developer() -endif() diff --git a/docs/project/building-windows.mdx b/docs/project/building-windows.mdx index 9a4a3ab2d7..a5541ac6cc 100644 --- a/docs/project/building-windows.mdx +++ b/docs/project/building-windows.mdx @@ -49,7 +49,7 @@ After Visual Studio, you need the following: ```ps1 Scoop > irm https://get.scoop.sh | iex -> scoop install nodejs-lts go rust nasm ruby perl sccache +> scoop install nodejs-lts go rust nasm ruby perl ccache # scoop seems to be buggy if you install llvm and the rest at the same time > scoop install llvm@19.1.7 ``` diff --git a/docs/project/contributing.mdx b/docs/project/contributing.mdx index b645b005f1..fdc18baca8 100644 --- a/docs/project/contributing.mdx +++ b/docs/project/contributing.mdx @@ -28,7 +28,7 @@ Using your system's package manager, install Bun's dependencies: ```bash macOS (Homebrew) -$ brew install automake cmake coreutils gnu-sed go icu4c libiconv libtool ninja pkg-config rust ruby sccache +$ brew install automake ccache cmake coreutils gnu-sed go icu4c libiconv libtool ninja pkg-config rust ruby ``` ```bash Ubuntu/Debian @@ -70,45 +70,28 @@ $ brew install bun -### Optional: Install `sccache` +### Optional: Install `ccache` -sccache is used to cache compilation artifacts, significantly speeding up builds. It must be installed with S3 support: +ccache is used to cache compilation artifacts, significantly speeding up builds: ```bash # For macOS -$ brew install sccache +$ brew install ccache -# For Linux. Note that the version in your package manager may not have S3 support. -$ cargo install sccache --features=s3 +# For Ubuntu/Debian +$ sudo apt install ccache + +# For Arch +$ sudo pacman -S ccache + +# For Fedora +$ sudo dnf install ccache + +# For openSUSE +$ sudo zypper install ccache ``` -This will install `sccache` with S3 support. Our build scripts will automatically detect and use `sccache` with our shared S3 cache. **Note**: Not all versions of `sccache` are compiled with S3 support, hence we recommend installing it via `cargo`. - -#### Registering AWS Credentials for `sccache` (Core Developers Only) - -Core developers have write access to the shared S3 cache. To enable write access, you must log in with AWS credentials. The easiest way to do this is to use the [`aws` CLI](https://aws.amazon.com/cli/) and invoke [`aws configure` to provide your AWS security info](https://docs.aws.amazon.com/cli/latest/reference/configure/). - -The `cmake` scripts should automatically detect your AWS credentials from the environment or the `~/.aws/credentials` file. - -
    - Logging in to the `aws` CLI - - 1. Install the AWS CLI by following [the official guide](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). - 2. Log in to your AWS account console. A team member should provide you with your credentials. - 3. Click your name in the top right > Security credentials. - 4. Scroll to "Access keys" and create a new access key. - 5. Run `aws configure` in your terminal and provide the access key ID and secret access key when prompted. - -
    - -
    - Common Issues You May Encounter - - - To confirm that the cache is being used, you can use the `sccache --show-stats` command right after a build. This will expose very useful statistics, including cache hits/misses. - - If you have multiple AWS profiles configured, ensure that the correct profile is set in the `AWS_PROFILE` environment variable. - - `sccache` follows a server-client model. If you run into weird issues where `sccache` refuses to use S3, even though you have AWS credentials configured, try killing any running `sccache` servers with `sccache --stop-server` and then re-running the build. - -
    +Our build scripts will automatically detect and use `ccache` if available. You can check cache statistics with `ccache --show-stats`. ## Install LLVM diff --git a/flake.nix b/flake.nix index 43e12b391e..3fb9401268 100644 --- a/flake.nix +++ b/flake.nix @@ -40,7 +40,7 @@ pkgs.cmake # Expected: 3.30+ on nixos-unstable as of 2025-10 pkgs.ninja pkgs.pkg-config - pkgs.sccache + pkgs.ccache # Compilers and toolchain - version pinned to LLVM 19 clang diff --git a/scripts/bootstrap.ps1 b/scripts/bootstrap.ps1 index 5164112d74..b4fba56480 100755 --- a/scripts/bootstrap.ps1 +++ b/scripts/bootstrap.ps1 @@ -313,7 +313,7 @@ function Install-Build-Essentials { strawberryperl ` mingw Install-Rust - Install-Sccache + Install-Ccache # Needed to remap stack traces Install-PdbAddr2line Install-Llvm @@ -376,8 +376,8 @@ function Install-Rust { Add-To-Path "$rustPath\cargo\bin" } -function Install-Sccache { - Install-Package sccache -Version "0.12.0" +function Install-Ccache { + Install-Package ccache } function Install-PdbAddr2line { diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh index c7be133651..5deb20a7c7 100755 --- a/scripts/bootstrap.sh +++ b/scripts/bootstrap.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Version: 25 +# Version: 26 # A script that installs the dependencies needed to build and test Bun. # This should work on macOS and Linux with a POSIX shell. @@ -1086,7 +1086,7 @@ install_build_essentials() { install_osxcross install_gcc install_rust - install_sccache + install_ccache install_docker } @@ -1206,35 +1206,24 @@ install_gcc() { execute_sudo ln -sf $(which llvm-symbolizer-$llvm_v) /usr/bin/llvm-symbolizer } -install_sccache() { - if [ "$os" != "linux" ]; then - error "Unsupported platform: $os" - fi - - # Alright, look, this function is cobbled together but it's only as cobbled - # together as this whole script is. - # - # For some reason, move_to_bin doesn't work here due to permissions so I'm - # avoiding that function. It's also wrong with permissions and so on. - # - # Unfortunately, we cannot use install_packages since many package managers - # don't compile `sccache` with S3 support. - local opts=$- - set -ef - - local sccache_http - sccache_http="https://github.com/mozilla/sccache/releases/download/v0.12.0/sccache-v0.12.0-$(uname -m)-unknown-linux-musl.tar.gz" - - local file - file=$(download_file "$sccache_http") - - local tmpdir - tmpdir=$(mktemp -d) - - execute tar -xzf "$file" -C "$tmpdir" - execute_sudo install -m755 "$tmpdir/sccache-v0.12.0-$(uname -m)-unknown-linux-musl/sccache" "/usr/local/bin" - - set +ef -"$opts" +install_ccache() { + case "$pm" in + apt) + install_packages ccache + ;; + brew) + install_packages ccache + ;; + apk) + install_packages ccache + ;; + dnf|yum) + install_packages ccache + ;; + zypper) + install_packages ccache + ;; + esac } install_rust() { @@ -1457,9 +1446,7 @@ create_buildkite_user() { done # The following is necessary to configure buildkite to use a stable - # checkout directory. sccache hashes absolute paths into its cache keys, - # so if buildkite uses a different checkout path each time (which it does - # by default), sccache will be useless. + # checkout directory for ccache to be effective. local opts=$- set -ef diff --git a/scripts/build-cache/bun.lock b/scripts/build-cache/bun.lock deleted file mode 100644 index b822c81483..0000000000 --- a/scripts/build-cache/bun.lock +++ /dev/null @@ -1,249 +0,0 @@ -{ - "lockfileVersion": 1, - "configVersion": 1, - "workspaces": { - "": { - "dependencies": { - "@aws-sdk/client-s3": "^3.928.0", - "@aws-sdk/property-provider": "^3.374.0", - }, - }, - }, - "packages": { - "@aws-crypto/crc32": ["@aws-crypto/crc32@5.2.0", "", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg=="], - - "@aws-crypto/crc32c": ["@aws-crypto/crc32c@5.2.0", "", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag=="], - - "@aws-crypto/sha1-browser": ["@aws-crypto/sha1-browser@5.2.0", "", { "dependencies": { "@aws-crypto/supports-web-crypto": "^5.2.0", "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-locate-window": "^3.0.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg=="], - - "@aws-crypto/sha256-browser": ["@aws-crypto/sha256-browser@5.2.0", "", { "dependencies": { "@aws-crypto/sha256-js": "^5.2.0", "@aws-crypto/supports-web-crypto": "^5.2.0", "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-locate-window": "^3.0.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw=="], - - "@aws-crypto/sha256-js": ["@aws-crypto/sha256-js@5.2.0", "", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA=="], - - "@aws-crypto/supports-web-crypto": ["@aws-crypto/supports-web-crypto@5.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg=="], - - "@aws-crypto/util": ["@aws-crypto/util@5.2.0", "", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="], - - "@aws-sdk/client-s3": ["@aws-sdk/client-s3@3.928.0", "", { "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.928.0", "@aws-sdk/credential-provider-node": "3.928.0", "@aws-sdk/middleware-bucket-endpoint": "3.922.0", "@aws-sdk/middleware-expect-continue": "3.922.0", "@aws-sdk/middleware-flexible-checksums": "3.928.0", "@aws-sdk/middleware-host-header": "3.922.0", "@aws-sdk/middleware-location-constraint": "3.922.0", "@aws-sdk/middleware-logger": "3.922.0", "@aws-sdk/middleware-recursion-detection": "3.922.0", "@aws-sdk/middleware-sdk-s3": "3.928.0", "@aws-sdk/middleware-ssec": "3.922.0", "@aws-sdk/middleware-user-agent": "3.928.0", "@aws-sdk/region-config-resolver": "3.925.0", "@aws-sdk/signature-v4-multi-region": "3.928.0", "@aws-sdk/types": "3.922.0", "@aws-sdk/util-endpoints": "3.922.0", "@aws-sdk/util-user-agent-browser": "3.922.0", "@aws-sdk/util-user-agent-node": "3.928.0", "@aws-sdk/xml-builder": "3.921.0", "@smithy/config-resolver": "^4.4.2", "@smithy/core": "^3.17.2", "@smithy/eventstream-serde-browser": "^4.2.4", "@smithy/eventstream-serde-config-resolver": "^4.3.4", "@smithy/eventstream-serde-node": "^4.2.4", "@smithy/fetch-http-handler": "^5.3.5", "@smithy/hash-blob-browser": "^4.2.5", "@smithy/hash-node": "^4.2.4", "@smithy/hash-stream-node": "^4.2.4", "@smithy/invalid-dependency": "^4.2.4", "@smithy/md5-js": "^4.2.4", "@smithy/middleware-content-length": "^4.2.4", "@smithy/middleware-endpoint": "^4.3.6", "@smithy/middleware-retry": "^4.4.6", "@smithy/middleware-serde": "^4.2.4", "@smithy/middleware-stack": "^4.2.4", "@smithy/node-config-provider": "^4.3.4", "@smithy/node-http-handler": "^4.4.4", "@smithy/protocol-http": "^5.3.4", "@smithy/smithy-client": "^4.9.2", "@smithy/types": "^4.8.1", "@smithy/url-parser": "^4.2.4", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", "@smithy/util-defaults-mode-browser": "^4.3.5", "@smithy/util-defaults-mode-node": "^4.2.8", "@smithy/util-endpoints": "^3.2.4", "@smithy/util-middleware": "^4.2.4", "@smithy/util-retry": "^4.2.4", "@smithy/util-stream": "^4.5.5", "@smithy/util-utf8": "^4.2.0", "@smithy/util-waiter": "^4.2.4", "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" } }, "sha512-lXhhmcBjYa+ea0kRs00aq3WUwiXggwJkLwcMzOOsbW3CVYQaNpT7hztkfn2S6Qna7ETzd8M5+XZP+BmQRVE0Sg=="], - - "@aws-sdk/client-sso": ["@aws-sdk/client-sso@3.928.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.928.0", "@aws-sdk/middleware-host-header": "3.922.0", "@aws-sdk/middleware-logger": "3.922.0", "@aws-sdk/middleware-recursion-detection": "3.922.0", "@aws-sdk/middleware-user-agent": "3.928.0", "@aws-sdk/region-config-resolver": "3.925.0", "@aws-sdk/types": "3.922.0", "@aws-sdk/util-endpoints": "3.922.0", "@aws-sdk/util-user-agent-browser": "3.922.0", "@aws-sdk/util-user-agent-node": "3.928.0", "@smithy/config-resolver": "^4.4.2", "@smithy/core": "^3.17.2", "@smithy/fetch-http-handler": "^5.3.5", "@smithy/hash-node": "^4.2.4", "@smithy/invalid-dependency": "^4.2.4", "@smithy/middleware-content-length": "^4.2.4", "@smithy/middleware-endpoint": "^4.3.6", "@smithy/middleware-retry": "^4.4.6", "@smithy/middleware-serde": "^4.2.4", "@smithy/middleware-stack": "^4.2.4", "@smithy/node-config-provider": "^4.3.4", "@smithy/node-http-handler": "^4.4.4", "@smithy/protocol-http": "^5.3.4", "@smithy/smithy-client": "^4.9.2", "@smithy/types": "^4.8.1", "@smithy/url-parser": "^4.2.4", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", "@smithy/util-defaults-mode-browser": "^4.3.5", "@smithy/util-defaults-mode-node": "^4.2.8", "@smithy/util-endpoints": "^3.2.4", "@smithy/util-middleware": "^4.2.4", "@smithy/util-retry": "^4.2.4", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Efenb8zV2fJJDXmp2NE4xj8Ymhp4gVJCkQ6ixhdrpfQXgd2PODO7a20C2+BhFM6aGmN3m6XWYJ64ZyhXF4pAyQ=="], - - "@aws-sdk/core": ["@aws-sdk/core@3.928.0", "", { "dependencies": { "@aws-sdk/types": "3.922.0", "@aws-sdk/xml-builder": "3.921.0", "@smithy/core": "^3.17.2", "@smithy/node-config-provider": "^4.3.4", "@smithy/property-provider": "^4.2.4", "@smithy/protocol-http": "^5.3.4", "@smithy/signature-v4": "^5.3.4", "@smithy/smithy-client": "^4.9.2", "@smithy/types": "^4.8.1", "@smithy/util-base64": "^4.3.0", "@smithy/util-middleware": "^4.2.4", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-e28J2uKjy2uub4u41dNnmzAu0AN3FGB+LRcLN2Qnwl9Oq3kIcByl5sM8ZD+vWpNG+SFUrUasBCq8cMnHxwXZ4w=="], - - "@aws-sdk/credential-provider-env": ["@aws-sdk/credential-provider-env@3.928.0", "", { "dependencies": { "@aws-sdk/core": "3.928.0", "@aws-sdk/types": "3.922.0", "@smithy/property-provider": "^4.2.4", "@smithy/types": "^4.8.1", "tslib": "^2.6.2" } }, "sha512-tB8F9Ti0/NFyFVQX8UQtgRik88evtHpyT6WfXOB4bAY6lEnEHA0ubJZmk9y+aUeoE+OsGLx70dC3JUsiiCPJkQ=="], - - "@aws-sdk/credential-provider-http": ["@aws-sdk/credential-provider-http@3.928.0", "", { "dependencies": { "@aws-sdk/core": "3.928.0", "@aws-sdk/types": "3.922.0", "@smithy/fetch-http-handler": "^5.3.5", "@smithy/node-http-handler": "^4.4.4", "@smithy/property-provider": "^4.2.4", "@smithy/protocol-http": "^5.3.4", "@smithy/smithy-client": "^4.9.2", "@smithy/types": "^4.8.1", "@smithy/util-stream": "^4.5.5", "tslib": "^2.6.2" } }, "sha512-67ynC/8UW9Y8Gn1ZZtC3OgcQDGWrJelHmkbgpmmxYUrzVhp+NINtz3wiTzrrBFhPH/8Uy6BxvhMfXhn0ptcMEQ=="], - - "@aws-sdk/credential-provider-ini": ["@aws-sdk/credential-provider-ini@3.928.0", "", { "dependencies": { "@aws-sdk/core": "3.928.0", "@aws-sdk/credential-provider-env": "3.928.0", "@aws-sdk/credential-provider-http": "3.928.0", "@aws-sdk/credential-provider-process": "3.928.0", "@aws-sdk/credential-provider-sso": "3.928.0", "@aws-sdk/credential-provider-web-identity": "3.928.0", "@aws-sdk/nested-clients": "3.928.0", "@aws-sdk/types": "3.922.0", "@smithy/credential-provider-imds": "^4.2.4", "@smithy/property-provider": "^4.2.4", "@smithy/shared-ini-file-loader": "^4.3.4", "@smithy/types": "^4.8.1", "tslib": "^2.6.2" } }, "sha512-WVWYyj+jox6mhKYp11mu8x1B6Xa2sLbXFHAv5K3Jg8CHvXYpePgTcYlCljq3d4XHC4Jl4nCcsdMtBahSpU9bAA=="], - - "@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.928.0", "", { "dependencies": { "@aws-sdk/credential-provider-env": "3.928.0", "@aws-sdk/credential-provider-http": "3.928.0", "@aws-sdk/credential-provider-ini": "3.928.0", "@aws-sdk/credential-provider-process": "3.928.0", "@aws-sdk/credential-provider-sso": "3.928.0", "@aws-sdk/credential-provider-web-identity": "3.928.0", "@aws-sdk/types": "3.922.0", "@smithy/credential-provider-imds": "^4.2.4", "@smithy/property-provider": "^4.2.4", "@smithy/shared-ini-file-loader": "^4.3.4", "@smithy/types": "^4.8.1", "tslib": "^2.6.2" } }, "sha512-SdXVjxZOIXefIR/NJx+lyXOrn4m0ScTAU2JXpLsFCkW2Cafo6vTqHUghyO8vak/XQ8PpPqpLXVpGbAYFuIPW6Q=="], - - "@aws-sdk/credential-provider-process": ["@aws-sdk/credential-provider-process@3.928.0", "", { "dependencies": { "@aws-sdk/core": "3.928.0", "@aws-sdk/types": "3.922.0", "@smithy/property-provider": "^4.2.4", "@smithy/shared-ini-file-loader": "^4.3.4", "@smithy/types": "^4.8.1", "tslib": "^2.6.2" } }, "sha512-XL0juran8yhqwn0mreV+NJeHJOkcRBaExsvVn9fXWW37A4gLh4esSJxM2KbSNh0t+/Bk3ehBI5sL9xad+yRDuw=="], - - "@aws-sdk/credential-provider-sso": ["@aws-sdk/credential-provider-sso@3.928.0", "", { "dependencies": { "@aws-sdk/client-sso": "3.928.0", "@aws-sdk/core": "3.928.0", "@aws-sdk/token-providers": "3.928.0", "@aws-sdk/types": "3.922.0", "@smithy/property-provider": "^4.2.4", "@smithy/shared-ini-file-loader": "^4.3.4", "@smithy/types": "^4.8.1", "tslib": "^2.6.2" } }, "sha512-md/y+ePDsO1zqPJrsOyPs4ciKmdpqLL7B0dln1NhqZPnKIS5IBfTqZJ5tJ9eTezqc7Tn4Dbg6HiuemcGvZTeFA=="], - - "@aws-sdk/credential-provider-web-identity": ["@aws-sdk/credential-provider-web-identity@3.928.0", "", { "dependencies": { "@aws-sdk/core": "3.928.0", "@aws-sdk/nested-clients": "3.928.0", "@aws-sdk/types": "3.922.0", "@smithy/property-provider": "^4.2.4", "@smithy/shared-ini-file-loader": "^4.3.4", "@smithy/types": "^4.8.1", "tslib": "^2.6.2" } }, "sha512-rd97nLY5e/nGOr73ZfsXD+H44iZ9wyGZTKt/2QkiBN3hot/idhgT9+XHsWhRi+o/dThQbpL8RkpAnpF+0ZGthw=="], - - "@aws-sdk/middleware-bucket-endpoint": ["@aws-sdk/middleware-bucket-endpoint@3.922.0", "", { "dependencies": { "@aws-sdk/types": "3.922.0", "@aws-sdk/util-arn-parser": "3.893.0", "@smithy/node-config-provider": "^4.3.4", "@smithy/protocol-http": "^5.3.4", "@smithy/types": "^4.8.1", "@smithy/util-config-provider": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Dpr2YeOaLFqt3q1hocwBesynE3x8/dXZqXZRuzSX/9/VQcwYBFChHAm4mTAl4zuvArtDbLrwzWSxmOWYZGtq5w=="], - - "@aws-sdk/middleware-expect-continue": ["@aws-sdk/middleware-expect-continue@3.922.0", "", { "dependencies": { "@aws-sdk/types": "3.922.0", "@smithy/protocol-http": "^5.3.4", "@smithy/types": "^4.8.1", "tslib": "^2.6.2" } }, "sha512-xmnLWMtmHJHJBupSWMUEW1gyxuRIeQ1Ov2xa8Tqq77fPr4Ft2AluEwiDMaZIMHoAvpxWKEEt9Si59Li7GIA+bQ=="], - - "@aws-sdk/middleware-flexible-checksums": ["@aws-sdk/middleware-flexible-checksums@3.928.0", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@aws-crypto/crc32c": "5.2.0", "@aws-crypto/util": "5.2.0", "@aws-sdk/core": "3.928.0", "@aws-sdk/types": "3.922.0", "@smithy/is-array-buffer": "^4.2.0", "@smithy/node-config-provider": "^4.3.4", "@smithy/protocol-http": "^5.3.4", "@smithy/types": "^4.8.1", "@smithy/util-middleware": "^4.2.4", "@smithy/util-stream": "^4.5.5", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-9+aCRt7teItSIMbnGvOY+FhtJnW2ZBUbfD+ug29a/ZbobDfTwmtrmtgEIWdXryFaRbT03HHfaJ3a++lTw4osuw=="], - - "@aws-sdk/middleware-host-header": ["@aws-sdk/middleware-host-header@3.922.0", "", { "dependencies": { "@aws-sdk/types": "3.922.0", "@smithy/protocol-http": "^5.3.4", "@smithy/types": "^4.8.1", "tslib": "^2.6.2" } }, "sha512-HPquFgBnq/KqKRVkiuCt97PmWbKtxQ5iUNLEc6FIviqOoZTmaYG3EDsIbuFBz9C4RHJU4FKLmHL2bL3FEId6AA=="], - - "@aws-sdk/middleware-location-constraint": ["@aws-sdk/middleware-location-constraint@3.922.0", "", { "dependencies": { "@aws-sdk/types": "3.922.0", "@smithy/types": "^4.8.1", "tslib": "^2.6.2" } }, "sha512-T4iqd7WQ2DDjCH/0s50mnhdoX+IJns83ZE+3zj9IDlpU0N2aq8R91IG890qTfYkUEdP9yRm0xir/CNed+v6Dew=="], - - "@aws-sdk/middleware-logger": ["@aws-sdk/middleware-logger@3.922.0", "", { "dependencies": { "@aws-sdk/types": "3.922.0", "@smithy/types": "^4.8.1", "tslib": "^2.6.2" } }, "sha512-AkvYO6b80FBm5/kk2E636zNNcNgjztNNUxpqVx+huyGn9ZqGTzS4kLqW2hO6CBe5APzVtPCtiQsXL24nzuOlAg=="], - - "@aws-sdk/middleware-recursion-detection": ["@aws-sdk/middleware-recursion-detection@3.922.0", "", { "dependencies": { "@aws-sdk/types": "3.922.0", "@aws/lambda-invoke-store": "^0.1.1", "@smithy/protocol-http": "^5.3.4", "@smithy/types": "^4.8.1", "tslib": "^2.6.2" } }, "sha512-TtSCEDonV/9R0VhVlCpxZbp/9sxQvTTRKzIf8LxW3uXpby6Wl8IxEciBJlxmSkoqxh542WRcko7NYODlvL/gDA=="], - - "@aws-sdk/middleware-sdk-s3": ["@aws-sdk/middleware-sdk-s3@3.928.0", "", { "dependencies": { "@aws-sdk/core": "3.928.0", "@aws-sdk/types": "3.922.0", "@aws-sdk/util-arn-parser": "3.893.0", "@smithy/core": "^3.17.2", "@smithy/node-config-provider": "^4.3.4", "@smithy/protocol-http": "^5.3.4", "@smithy/signature-v4": "^5.3.4", "@smithy/smithy-client": "^4.9.2", "@smithy/types": "^4.8.1", "@smithy/util-config-provider": "^4.2.0", "@smithy/util-middleware": "^4.2.4", "@smithy/util-stream": "^4.5.5", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-LTkjS6cpJ2PEtsottTKq7JxZV0oH+QJ12P/dGNPZL4URayjEMBVR/dp4zh835X/FPXzijga3sdotlIKzuFy9FA=="], - - "@aws-sdk/middleware-ssec": ["@aws-sdk/middleware-ssec@3.922.0", "", { "dependencies": { "@aws-sdk/types": "3.922.0", "@smithy/types": "^4.8.1", "tslib": "^2.6.2" } }, "sha512-eHvSJZTSRJO+/tjjGD6ocnPc8q9o3m26+qbwQTu/4V6yOJQ1q+xkDZNqwJQphL+CodYaQ7uljp8g1Ji/AN3D9w=="], - - "@aws-sdk/middleware-user-agent": ["@aws-sdk/middleware-user-agent@3.928.0", "", { "dependencies": { "@aws-sdk/core": "3.928.0", "@aws-sdk/types": "3.922.0", "@aws-sdk/util-endpoints": "3.922.0", "@smithy/core": "^3.17.2", "@smithy/protocol-http": "^5.3.4", "@smithy/types": "^4.8.1", "tslib": "^2.6.2" } }, "sha512-ESvcfLx5PtpdUM3ptCwb80toBTd3y5I4w5jaeOPHihiZr7jkRLE/nsaCKzlqscPs6UQ8xI0maav04JUiTskcHw=="], - - "@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.928.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.928.0", "@aws-sdk/middleware-host-header": "3.922.0", "@aws-sdk/middleware-logger": "3.922.0", "@aws-sdk/middleware-recursion-detection": "3.922.0", "@aws-sdk/middleware-user-agent": "3.928.0", "@aws-sdk/region-config-resolver": "3.925.0", "@aws-sdk/types": "3.922.0", "@aws-sdk/util-endpoints": "3.922.0", "@aws-sdk/util-user-agent-browser": "3.922.0", "@aws-sdk/util-user-agent-node": "3.928.0", "@smithy/config-resolver": "^4.4.2", "@smithy/core": "^3.17.2", "@smithy/fetch-http-handler": "^5.3.5", "@smithy/hash-node": "^4.2.4", "@smithy/invalid-dependency": "^4.2.4", "@smithy/middleware-content-length": "^4.2.4", "@smithy/middleware-endpoint": "^4.3.6", "@smithy/middleware-retry": "^4.4.6", "@smithy/middleware-serde": "^4.2.4", "@smithy/middleware-stack": "^4.2.4", "@smithy/node-config-provider": "^4.3.4", "@smithy/node-http-handler": "^4.4.4", "@smithy/protocol-http": "^5.3.4", "@smithy/smithy-client": "^4.9.2", "@smithy/types": "^4.8.1", "@smithy/url-parser": "^4.2.4", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", "@smithy/util-defaults-mode-browser": "^4.3.5", "@smithy/util-defaults-mode-node": "^4.2.8", "@smithy/util-endpoints": "^3.2.4", "@smithy/util-middleware": "^4.2.4", "@smithy/util-retry": "^4.2.4", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kXzfJkq2cD65KAHDe4hZCsnxcGGEWD5pjHqcZplwG4VFMa/iVn/mWrUY9QdadD2GBpXFNQbgOiKG3U2NkKu+4Q=="], - - "@aws-sdk/property-provider": ["@aws-sdk/property-provider@3.374.0", "", { "dependencies": { "@smithy/property-provider": "^1.0.1", "tslib": "^2.5.0" } }, "sha512-UvsRnRtLD3g0tPMuiILJiGT9PIg4tgU3coRO4s+bAuT29mUiuViDAQB8DYPgaOtqA4qNFiWose+AMCpdxlOhRA=="], - - "@aws-sdk/region-config-resolver": ["@aws-sdk/region-config-resolver@3.925.0", "", { "dependencies": { "@aws-sdk/types": "3.922.0", "@smithy/config-resolver": "^4.4.2", "@smithy/node-config-provider": "^4.3.4", "@smithy/types": "^4.8.1", "tslib": "^2.6.2" } }, "sha512-FOthcdF9oDb1pfQBRCfWPZhJZT5wqpvdAS5aJzB1WDZ+6EuaAhLzLH/fW1slDunIqq1PSQGG3uSnVglVVOvPHQ=="], - - "@aws-sdk/signature-v4-multi-region": ["@aws-sdk/signature-v4-multi-region@3.928.0", "", { "dependencies": { "@aws-sdk/middleware-sdk-s3": "3.928.0", "@aws-sdk/types": "3.922.0", "@smithy/protocol-http": "^5.3.4", "@smithy/signature-v4": "^5.3.4", "@smithy/types": "^4.8.1", "tslib": "^2.6.2" } }, "sha512-1+Ic8+MyqQy+OE6QDoQKVCIcSZO+ETmLLLpVS5yu0fihBU85B5HHU7iaKX1qX7lEaGPMpSN/mbHW0VpyQ0Xqaw=="], - - "@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.928.0", "", { "dependencies": { "@aws-sdk/core": "3.928.0", "@aws-sdk/nested-clients": "3.928.0", "@aws-sdk/types": "3.922.0", "@smithy/property-provider": "^4.2.4", "@smithy/shared-ini-file-loader": "^4.3.4", "@smithy/types": "^4.8.1", "tslib": "^2.6.2" } }, "sha512-533NpTdUJNDi98zBwRp4ZpZoqULrAVfc0YgIy+8AZHzk0v7N+v59O0d2Du3YO6zN4VU8HU8766DgKiyEag6Dzg=="], - - "@aws-sdk/types": ["@aws-sdk/types@3.922.0", "", { "dependencies": { "@smithy/types": "^4.8.1", "tslib": "^2.6.2" } }, "sha512-eLA6XjVobAUAMivvM7DBL79mnHyrm+32TkXNWZua5mnxF+6kQCfblKKJvxMZLGosO53/Ex46ogim8IY5Nbqv2w=="], - - "@aws-sdk/util-arn-parser": ["@aws-sdk/util-arn-parser@3.893.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-u8H4f2Zsi19DGnwj5FSZzDMhytYF/bCh37vAtBsn3cNDL3YG578X5oc+wSX54pM3tOxS+NY7tvOAo52SW7koUA=="], - - "@aws-sdk/util-endpoints": ["@aws-sdk/util-endpoints@3.922.0", "", { "dependencies": { "@aws-sdk/types": "3.922.0", "@smithy/types": "^4.8.1", "@smithy/url-parser": "^4.2.4", "@smithy/util-endpoints": "^3.2.4", "tslib": "^2.6.2" } }, "sha512-4ZdQCSuNMY8HMlR1YN4MRDdXuKd+uQTeKIr5/pIM+g3TjInZoj8imvXudjcrFGA63UF3t92YVTkBq88mg58RXQ=="], - - "@aws-sdk/util-locate-window": ["@aws-sdk/util-locate-window@3.893.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg=="], - - "@aws-sdk/util-user-agent-browser": ["@aws-sdk/util-user-agent-browser@3.922.0", "", { "dependencies": { "@aws-sdk/types": "3.922.0", "@smithy/types": "^4.8.1", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-qOJAERZ3Plj1st7M4Q5henl5FRpE30uLm6L9edZqZXGR6c7ry9jzexWamWVpQ4H4xVAVmiO9dIEBAfbq4mduOA=="], - - "@aws-sdk/util-user-agent-node": ["@aws-sdk/util-user-agent-node@3.928.0", "", { "dependencies": { "@aws-sdk/middleware-user-agent": "3.928.0", "@aws-sdk/types": "3.922.0", "@smithy/node-config-provider": "^4.3.4", "@smithy/types": "^4.8.1", "tslib": "^2.6.2" }, "peerDependencies": { "aws-crt": ">=1.0.0" }, "optionalPeers": ["aws-crt"] }, "sha512-s0jP67nQLLWVWfBtqTkZUkSWK5e6OI+rs+wFya2h9VLyWBFir17XSDI891s8HZKIVCEl8eBrup+hhywm4nsIAA=="], - - "@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.921.0", "", { "dependencies": { "@smithy/types": "^4.8.1", "fast-xml-parser": "5.2.5", "tslib": "^2.6.2" } }, "sha512-LVHg0jgjyicKKvpNIEMXIMr1EBViESxcPkqfOlT+X1FkmUMTNZEEVF18tOJg4m4hV5vxtkWcqtr4IEeWa1C41Q=="], - - "@aws/lambda-invoke-store": ["@aws/lambda-invoke-store@0.1.1", "", {}, "sha512-RcLam17LdlbSOSp9VxmUu1eI6Mwxp+OwhD2QhiSNmNCzoDb0EeUXTD2n/WbcnrAYMGlmf05th6QYq23VqvJqpA=="], - - "@smithy/abort-controller": ["@smithy/abort-controller@4.2.5", "", { "dependencies": { "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA=="], - - "@smithy/chunked-blob-reader": ["@smithy/chunked-blob-reader@5.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA=="], - - "@smithy/chunked-blob-reader-native": ["@smithy/chunked-blob-reader-native@4.2.1", "", { "dependencies": { "@smithy/util-base64": "^4.3.0", "tslib": "^2.6.2" } }, "sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ=="], - - "@smithy/config-resolver": ["@smithy/config-resolver@4.4.3", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.5", "@smithy/types": "^4.9.0", "@smithy/util-config-provider": "^4.2.0", "@smithy/util-endpoints": "^3.2.5", "@smithy/util-middleware": "^4.2.5", "tslib": "^2.6.2" } }, "sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw=="], - - "@smithy/core": ["@smithy/core@3.18.0", "", { "dependencies": { "@smithy/middleware-serde": "^4.2.5", "@smithy/protocol-http": "^5.3.5", "@smithy/types": "^4.9.0", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-middleware": "^4.2.5", "@smithy/util-stream": "^4.5.6", "@smithy/util-utf8": "^4.2.0", "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" } }, "sha512-vGSDXOJFZgOPTatSI1ly7Gwyy/d/R9zh2TO3y0JZ0uut5qQ88p9IaWaZYIWSSqtdekNM4CGok/JppxbAff4KcQ=="], - - "@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.2.5", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.5", "@smithy/property-provider": "^4.2.5", "@smithy/types": "^4.9.0", "@smithy/url-parser": "^4.2.5", "tslib": "^2.6.2" } }, "sha512-BZwotjoZWn9+36nimwm/OLIcVe+KYRwzMjfhd4QT7QxPm9WY0HiOV8t/Wlh+HVUif0SBVV7ksq8//hPaBC/okQ=="], - - "@smithy/eventstream-codec": ["@smithy/eventstream-codec@4.2.5", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^4.9.0", "@smithy/util-hex-encoding": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Ogt4Zi9hEbIP17oQMd68qYOHUzmH47UkK7q7Gl55iIm9oKt27MUGrC5JfpMroeHjdkOliOA4Qt3NQ1xMq/nrlA=="], - - "@smithy/eventstream-serde-browser": ["@smithy/eventstream-serde-browser@4.2.5", "", { "dependencies": { "@smithy/eventstream-serde-universal": "^4.2.5", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-HohfmCQZjppVnKX2PnXlf47CW3j92Ki6T/vkAT2DhBR47e89pen3s4fIa7otGTtrVxmj7q+IhH0RnC5kpR8wtw=="], - - "@smithy/eventstream-serde-config-resolver": ["@smithy/eventstream-serde-config-resolver@4.3.5", "", { "dependencies": { "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-ibjQjM7wEXtECiT6my1xfiMH9IcEczMOS6xiCQXoUIYSj5b1CpBbJ3VYbdwDy8Vcg5JHN7eFpOCGk8nyZAltNQ=="], - - "@smithy/eventstream-serde-node": ["@smithy/eventstream-serde-node@4.2.5", "", { "dependencies": { "@smithy/eventstream-serde-universal": "^4.2.5", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-+elOuaYx6F2H6x1/5BQP5ugv12nfJl66GhxON8+dWVUEDJ9jah/A0tayVdkLRP0AeSac0inYkDz5qBFKfVp2Gg=="], - - "@smithy/eventstream-serde-universal": ["@smithy/eventstream-serde-universal@4.2.5", "", { "dependencies": { "@smithy/eventstream-codec": "^4.2.5", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-G9WSqbST45bmIFaeNuP/EnC19Rhp54CcVdX9PDL1zyEB514WsDVXhlyihKlGXnRycmHNmVv88Bvvt4EYxWef/Q=="], - - "@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.3.6", "", { "dependencies": { "@smithy/protocol-http": "^5.3.5", "@smithy/querystring-builder": "^4.2.5", "@smithy/types": "^4.9.0", "@smithy/util-base64": "^4.3.0", "tslib": "^2.6.2" } }, "sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg=="], - - "@smithy/hash-blob-browser": ["@smithy/hash-blob-browser@4.2.6", "", { "dependencies": { "@smithy/chunked-blob-reader": "^5.2.0", "@smithy/chunked-blob-reader-native": "^4.2.1", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-8P//tA8DVPk+3XURk2rwcKgYwFvwGwmJH/wJqQiSKwXZtf/LiZK+hbUZmPj/9KzM+OVSwe4o85KTp5x9DUZTjw=="], - - "@smithy/hash-node": ["@smithy/hash-node@4.2.5", "", { "dependencies": { "@smithy/types": "^4.9.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-DpYX914YOfA3UDT9CN1BM787PcHfWRBB43fFGCYrZFUH0Jv+5t8yYl+Pd5PW4+QzoGEDvn5d5QIO4j2HyYZQSA=="], - - "@smithy/hash-stream-node": ["@smithy/hash-stream-node@4.2.5", "", { "dependencies": { "@smithy/types": "^4.9.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-6+do24VnEyvWcGdHXomlpd0m8bfZePpUKBy7m311n+JuRwug8J4dCanJdTymx//8mi0nlkflZBvJe+dEO/O12Q=="], - - "@smithy/invalid-dependency": ["@smithy/invalid-dependency@4.2.5", "", { "dependencies": { "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-2L2erASEro1WC5nV+plwIMxrTXpvpfzl4e+Nre6vBVRR2HKeGGcvpJyyL3/PpiSg+cJG2KpTmZmq934Olb6e5A=="], - - "@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ=="], - - "@smithy/md5-js": ["@smithy/md5-js@4.2.5", "", { "dependencies": { "@smithy/types": "^4.9.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Bt6jpSTMWfjCtC0s79gZ/WZ1w90grfmopVOWqkI2ovhjpD5Q2XRXuecIPB9689L2+cCySMbaXDhBPU56FKNDNg=="], - - "@smithy/middleware-content-length": ["@smithy/middleware-content-length@4.2.5", "", { "dependencies": { "@smithy/protocol-http": "^5.3.5", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A=="], - - "@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.3.7", "", { "dependencies": { "@smithy/core": "^3.18.0", "@smithy/middleware-serde": "^4.2.5", "@smithy/node-config-provider": "^4.3.5", "@smithy/shared-ini-file-loader": "^4.4.0", "@smithy/types": "^4.9.0", "@smithy/url-parser": "^4.2.5", "@smithy/util-middleware": "^4.2.5", "tslib": "^2.6.2" } }, "sha512-i8Mi8OuY6Yi82Foe3iu7/yhBj1HBRoOQwBSsUNYglJTNSFaWYTNM2NauBBs/7pq2sqkLRqeUXA3Ogi2utzpUlQ=="], - - "@smithy/middleware-retry": ["@smithy/middleware-retry@4.4.7", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.5", "@smithy/protocol-http": "^5.3.5", "@smithy/service-error-classification": "^4.2.5", "@smithy/smithy-client": "^4.9.3", "@smithy/types": "^4.9.0", "@smithy/util-middleware": "^4.2.5", "@smithy/util-retry": "^4.2.5", "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" } }, "sha512-E7Vc6WHCHlzDRTx1W0jZ6J1L6ziEV0PIWcUdmfL4y+c8r7WYr6I+LkQudaD8Nfb7C5c4P3SQ972OmXHtv6m/OA=="], - - "@smithy/middleware-serde": ["@smithy/middleware-serde@4.2.5", "", { "dependencies": { "@smithy/protocol-http": "^5.3.5", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-La1ldWTJTZ5NqQyPqnCNeH9B+zjFhrNoQIL1jTh4zuqXRlmXhxYHhMtI1/92OlnoAtp6JoN7kzuwhWoXrBwPqg=="], - - "@smithy/middleware-stack": ["@smithy/middleware-stack@4.2.5", "", { "dependencies": { "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-bYrutc+neOyWxtZdbB2USbQttZN0mXaOyYLIsaTbJhFsfpXyGWUxJpEuO1rJ8IIJm2qH4+xJT0mxUSsEDTYwdQ=="], - - "@smithy/node-config-provider": ["@smithy/node-config-provider@4.3.5", "", { "dependencies": { "@smithy/property-provider": "^4.2.5", "@smithy/shared-ini-file-loader": "^4.4.0", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg=="], - - "@smithy/node-http-handler": ["@smithy/node-http-handler@4.4.5", "", { "dependencies": { "@smithy/abort-controller": "^4.2.5", "@smithy/protocol-http": "^5.3.5", "@smithy/querystring-builder": "^4.2.5", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw=="], - - "@smithy/property-provider": ["@smithy/property-provider@1.2.0", "", { "dependencies": { "@smithy/types": "^1.2.0", "tslib": "^2.5.0" } }, "sha512-qlJd9gT751i4T0t/hJAyNGfESfi08Fek8QiLcysoKPgR05qHhG0OYhlaCJHhpXy4ECW0lHyjvFM1smrCLIXVfw=="], - - "@smithy/protocol-http": ["@smithy/protocol-http@5.3.5", "", { "dependencies": { "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ=="], - - "@smithy/querystring-builder": ["@smithy/querystring-builder@4.2.5", "", { "dependencies": { "@smithy/types": "^4.9.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg=="], - - "@smithy/querystring-parser": ["@smithy/querystring-parser@4.2.5", "", { "dependencies": { "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ=="], - - "@smithy/service-error-classification": ["@smithy/service-error-classification@4.2.5", "", { "dependencies": { "@smithy/types": "^4.9.0" } }, "sha512-8fEvK+WPE3wUAcDvqDQG1Vk3ANLR8Px979te96m84CbKAjBVf25rPYSzb4xU4hlTyho7VhOGnh5i62D/JVF0JQ=="], - - "@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.4.0", "", { "dependencies": { "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-5WmZ5+kJgJDjwXXIzr1vDTG+RhF9wzSODQBfkrQ2VVkYALKGvZX1lgVSxEkgicSAFnFhPj5rudJV0zoinqS0bA=="], - - "@smithy/signature-v4": ["@smithy/signature-v4@5.3.5", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "@smithy/protocol-http": "^5.3.5", "@smithy/types": "^4.9.0", "@smithy/util-hex-encoding": "^4.2.0", "@smithy/util-middleware": "^4.2.5", "@smithy/util-uri-escape": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w=="], - - "@smithy/smithy-client": ["@smithy/smithy-client@4.9.3", "", { "dependencies": { "@smithy/core": "^3.18.0", "@smithy/middleware-endpoint": "^4.3.7", "@smithy/middleware-stack": "^4.2.5", "@smithy/protocol-http": "^5.3.5", "@smithy/types": "^4.9.0", "@smithy/util-stream": "^4.5.6", "tslib": "^2.6.2" } }, "sha512-8tlueuTgV5n7inQCkhyptrB3jo2AO80uGrps/XTYZivv5MFQKKBj3CIWIGMI2fRY5LEduIiazOhAWdFknY1O9w=="], - - "@smithy/types": ["@smithy/types@4.9.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA=="], - - "@smithy/url-parser": ["@smithy/url-parser@4.2.5", "", { "dependencies": { "@smithy/querystring-parser": "^4.2.5", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ=="], - - "@smithy/util-base64": ["@smithy/util-base64@4.3.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ=="], - - "@smithy/util-body-length-browser": ["@smithy/util-body-length-browser@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg=="], - - "@smithy/util-body-length-node": ["@smithy/util-body-length-node@4.2.1", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA=="], - - "@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - - "@smithy/util-config-provider": ["@smithy/util-config-provider@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q=="], - - "@smithy/util-defaults-mode-browser": ["@smithy/util-defaults-mode-browser@4.3.6", "", { "dependencies": { "@smithy/property-provider": "^4.2.5", "@smithy/smithy-client": "^4.9.3", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-kbpuXbEf2YQ9zEE6eeVnUCQWO0e1BjMnKrXL8rfXgiWA0m8/E0leU4oSNzxP04WfCmW8vjEqaDeXWxwE4tpOjQ=="], - - "@smithy/util-defaults-mode-node": ["@smithy/util-defaults-mode-node@4.2.9", "", { "dependencies": { "@smithy/config-resolver": "^4.4.3", "@smithy/credential-provider-imds": "^4.2.5", "@smithy/node-config-provider": "^4.3.5", "@smithy/property-provider": "^4.2.5", "@smithy/smithy-client": "^4.9.3", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-dgyribrVWN5qE5usYJ0m5M93mVM3L3TyBPZWe1Xl6uZlH2gzfQx3dz+ZCdW93lWqdedJRkOecnvbnoEEXRZ5VQ=="], - - "@smithy/util-endpoints": ["@smithy/util-endpoints@3.2.5", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.5", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-3O63AAWu2cSNQZp+ayl9I3NapW1p1rR5mlVHcF6hAB1dPZUQFfRPYtplWX/3xrzWthPGj5FqB12taJJCfH6s8A=="], - - "@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw=="], - - "@smithy/util-middleware": ["@smithy/util-middleware@4.2.5", "", { "dependencies": { "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-6Y3+rvBF7+PZOc40ybeZMcGln6xJGVeY60E7jy9Mv5iKpMJpHgRE6dKy9ScsVxvfAYuEX4Q9a65DQX90KaQ3bA=="], - - "@smithy/util-retry": ["@smithy/util-retry@4.2.5", "", { "dependencies": { "@smithy/service-error-classification": "^4.2.5", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-GBj3+EZBbN4NAqJ/7pAhsXdfzdlznOh8PydUijy6FpNIMnHPSMO2/rP4HKu+UFeikJxShERk528oy7GT79YiJg=="], - - "@smithy/util-stream": ["@smithy/util-stream@4.5.6", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.3.6", "@smithy/node-http-handler": "^4.4.5", "@smithy/types": "^4.9.0", "@smithy/util-base64": "^4.3.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-hex-encoding": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ=="], - - "@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], - - "@smithy/util-utf8": ["@smithy/util-utf8@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw=="], - - "@smithy/util-waiter": ["@smithy/util-waiter@4.2.5", "", { "dependencies": { "@smithy/abort-controller": "^4.2.5", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-Dbun99A3InifQdIrsXZ+QLcC0PGBPAdrl4cj1mTgJvyc9N2zf7QSxg8TBkzsCmGJdE3TLbO9ycwpY0EkWahQ/g=="], - - "@smithy/uuid": ["@smithy/uuid@1.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw=="], - - "bowser": ["bowser@2.12.1", "", {}, "sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw=="], - - "fast-xml-parser": ["fast-xml-parser@5.2.5", "", { "dependencies": { "strnum": "^2.1.0" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ=="], - - "strnum": ["strnum@2.1.1", "", {}, "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw=="], - - "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "@aws-crypto/sha1-browser/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], - - "@aws-crypto/sha256-browser/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], - - "@aws-crypto/util/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], - - "@aws-sdk/core/@smithy/property-provider": ["@smithy/property-provider@4.2.5", "", { "dependencies": { "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg=="], - - "@aws-sdk/credential-provider-env/@smithy/property-provider": ["@smithy/property-provider@4.2.5", "", { "dependencies": { "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg=="], - - "@aws-sdk/credential-provider-http/@smithy/property-provider": ["@smithy/property-provider@4.2.5", "", { "dependencies": { "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg=="], - - "@aws-sdk/credential-provider-ini/@smithy/property-provider": ["@smithy/property-provider@4.2.5", "", { "dependencies": { "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg=="], - - "@aws-sdk/credential-provider-node/@smithy/property-provider": ["@smithy/property-provider@4.2.5", "", { "dependencies": { "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg=="], - - "@aws-sdk/credential-provider-process/@smithy/property-provider": ["@smithy/property-provider@4.2.5", "", { "dependencies": { "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg=="], - - "@aws-sdk/credential-provider-sso/@smithy/property-provider": ["@smithy/property-provider@4.2.5", "", { "dependencies": { "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg=="], - - "@aws-sdk/credential-provider-web-identity/@smithy/property-provider": ["@smithy/property-provider@4.2.5", "", { "dependencies": { "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg=="], - - "@aws-sdk/token-providers/@smithy/property-provider": ["@smithy/property-provider@4.2.5", "", { "dependencies": { "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg=="], - - "@smithy/credential-provider-imds/@smithy/property-provider": ["@smithy/property-provider@4.2.5", "", { "dependencies": { "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg=="], - - "@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.2.5", "", { "dependencies": { "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg=="], - - "@smithy/property-provider/@smithy/types": ["@smithy/types@1.2.0", "", { "dependencies": { "tslib": "^2.5.0" } }, "sha512-z1r00TvBqF3dh4aHhya7nz1HhvCg4TRmw51fjMrh5do3h+ngSstt/yKlNbHeb9QxJmFbmN8KEVSWgb1bRvfEoA=="], - - "@smithy/util-defaults-mode-browser/@smithy/property-provider": ["@smithy/property-provider@4.2.5", "", { "dependencies": { "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg=="], - - "@smithy/util-defaults-mode-node/@smithy/property-provider": ["@smithy/property-provider@4.2.5", "", { "dependencies": { "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg=="], - - "@aws-crypto/sha1-browser/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@2.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="], - - "@aws-crypto/sha256-browser/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@2.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="], - - "@aws-crypto/util/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@2.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="], - - "@aws-crypto/sha1-browser/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@2.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="], - - "@aws-crypto/sha256-browser/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@2.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="], - - "@aws-crypto/util/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@2.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="], - } -} diff --git a/scripts/build-cache/have-access.ts b/scripts/build-cache/have-access.ts deleted file mode 100644 index e3a28b9ccb..0000000000 --- a/scripts/build-cache/have-access.ts +++ /dev/null @@ -1,82 +0,0 @@ -/** - * Test whether the current user has access to the Bun build-cache. - * - * Exits with code 0 if access is available, or 1 otherwise. - */ -import { HeadBucketCommand, S3Client } from "@aws-sdk/client-s3"; -import { CredentialsProviderError } from "@aws-sdk/property-provider"; - -class CacheConfig { - #bucket: string; - #region: string; - - get bucket(): string { - return this.#bucket; - } - - get region(): string { - return this.#region; - } - - static fromArgv(): CacheConfig { - const cacheConfig = new CacheConfig(); - - const exitWithHelp = (reason: string) => { - console.error(`Error: ${reason}\n`); - console.error("Usage: have-access --bucket --region "); - process.exit(1); - }; - - for (let i = 2; i < process.argv.length; i++) { - switch (process.argv[i]) { - case "-b": - case "--bucket": - cacheConfig.#bucket = process.argv[++i]; - break; - case "-r": - case "--region": - cacheConfig.#region = process.argv[++i]; - break; - default: - exitWithHelp(`Unknown argument: ${process.argv[i]}`); - } - } - - if (!cacheConfig.#bucket) { - exitWithHelp("Missing required argument: --bucket"); - } - - if (!cacheConfig.#region) { - exitWithHelp("Missing required argument: --region"); - } - - return cacheConfig; - } -} - -/** - * Test whether the current user has access to the Bun build-cache. - */ -async function currentUserHasAccess(cacheConfig: CacheConfig): Promise { - const s3Client = new S3Client({ region: cacheConfig.region }); - - try { - await s3Client.send(new HeadBucketCommand({ Bucket: cacheConfig.bucket })); - return true; - } catch (error) { - if ( - error.name === "NotFound" || - error.$metadata?.httpStatusCode === 404 || - error.name === "Forbidden" || - error.$metadata?.httpStatusCode === 403 || - error instanceof CredentialsProviderError - ) { - return false; - } - - throw error; - } -} - -const ok = await currentUserHasAccess(CacheConfig.fromArgv()); -process.exit(ok ? 0 : 1); diff --git a/scripts/build-cache/package.json b/scripts/build-cache/package.json deleted file mode 100644 index 79e2d130a1..0000000000 --- a/scripts/build-cache/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "dependencies": { - "@aws-sdk/client-s3": "^3.928.0", - "@aws-sdk/property-provider": "^3.374.0" - } -} diff --git a/scripts/build.mjs b/scripts/build.mjs index 2607b11a73..34ce12247c 100755 --- a/scripts/build.mjs +++ b/scripts/build.mjs @@ -108,8 +108,8 @@ async function build(args) { await startGroup("CMake Build", () => spawn("cmake", buildArgs, { env })); if (ciCppBuild) { - await startGroup("sccache stats", () => { - spawn("sccache", ["--show-stats"], { env }); + await startGroup("ccache stats", () => { + spawn("ccache", ["--show-stats"], { env }); }); } diff --git a/shell.nix b/shell.nix index 22c4315dec..571c66d176 100644 --- a/shell.nix +++ b/shell.nix @@ -17,7 +17,7 @@ pkgs.mkShell rec { cargo go python3 - sccache + ccache pkg-config gnumake libtool From d0bd1b121f2d5e6c4de8cbeaabdb394343f5a9eb Mon Sep 17 00:00:00 2001 From: Dylan Conway Date: Fri, 26 Dec 2025 21:48:19 -0800 Subject: [PATCH 201/212] Fix DCE producing invalid syntax for empty objects in spreads (#25710) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Fixes dead code elimination producing invalid syntax like `{ ...a, x: }` when simplifying empty objects in spread contexts - The issue was that `simplifyUnusedExpr` and `joinAllWithCommaCallback` could return `E.Missing` instead of `null` to indicate "no side effects" - Added checks to return `null` when the result is `E.Missing` Fixes #25609 ## Test plan - [x] Added regression test that fails on v1.3.5 and passes with fix - [x] `bun bd test test/regression/issue/25609.test.ts` passes šŸ¤– Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude --- src/ast/Expr.zig | 9 ++++++++- src/ast/SideEffects.zig | 4 ++++ test/regression/issue/25609.test.ts | 28 ++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 test/regression/issue/25609.test.ts diff --git a/src/ast/Expr.zig b/src/ast/Expr.zig index 8b3052a0d9..aa9f7eb5b5 100644 --- a/src/ast/Expr.zig +++ b/src/ast/Expr.zig @@ -617,7 +617,7 @@ pub fn joinAllWithCommaCallback(all: []Expr, comptime Context: type, ctx: Contex return callback(ctx, all[0]); }, 2 => { - return Expr.joinWithComma( + const result = Expr.joinWithComma( callback(ctx, all[0]) orelse Expr{ .data = .{ .e_missing = .{} }, .loc = all[0].loc, @@ -628,6 +628,10 @@ pub fn joinAllWithCommaCallback(all: []Expr, comptime Context: type, ctx: Contex }, allocator, ); + if (result.isMissing()) { + return null; + } + return result; }, else => { var i: usize = 1; @@ -643,6 +647,9 @@ pub fn joinAllWithCommaCallback(all: []Expr, comptime Context: type, ctx: Contex }, allocator); } + if (expr.isMissing()) { + return null; + } return expr; }, } diff --git a/src/ast/SideEffects.zig b/src/ast/SideEffects.zig index 37d64a0294..44c25896da 100644 --- a/src/ast/SideEffects.zig +++ b/src/ast/SideEffects.zig @@ -315,6 +315,10 @@ pub const SideEffects = enum(u1) { ); } + if (result.isMissing()) { + return null; + } + return result; }, .e_array => { diff --git a/test/regression/issue/25609.test.ts b/test/regression/issue/25609.test.ts new file mode 100644 index 0000000000..5e647d6b37 --- /dev/null +++ b/test/regression/issue/25609.test.ts @@ -0,0 +1,28 @@ +import { expect, test } from "bun:test"; +import { bunEnv, bunExe, tempDir } from "harness"; + +// https://github.com/oven-sh/bun/issues/25609 +test("empty object in spread with DCE does not produce invalid syntax", async () => { + using dir = tempDir("25609", { + "chunk.js": `module.exports=()=>{var a,b=({...a,x:{}},0)};`, + "index.js": `require('./chunk.js');`, + }); + + // This should not throw a syntax error when requiring the module + await using proc = Bun.spawn({ + cmd: [bunExe(), "index.js"], + cwd: String(dir), + env: bunEnv, + stdout: "pipe", + stderr: "pipe", + }); + + const [stdout, stderr, exitCode] = await Promise.all([ + new Response(proc.stdout).text(), + new Response(proc.stderr).text(), + proc.exited, + ]); + + expect(stderr).toBe(""); + expect(exitCode).toBe(0); +}); From 92f105dbe1f1b9c0432b8cdc57990ea584c92df9 Mon Sep 17 00:00:00 2001 From: SUZUKI Sosuke Date: Sat, 27 Dec 2025 14:49:00 +0900 Subject: [PATCH 202/212] Add microbench for `String#includes` (#25699) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit note: This is due to constant folding by the JIT. For `String#includes` on dynamic strings, the performance improvement is not this significant. **before:** ``` $ bun ./bench/snippets/string-includes.mjs cpu: Apple M4 Max runtime: bun 1.3.5 (arm64-darwin) benchmark time (avg) (min … max) p75 p99 p999 ----------------------------------------------------------------------------- ----------------------------- String.includes - short, hit (middle) 82.24 ns/iter (14.95 ns … 881 ns) 84.98 ns 470 ns 791 ns String.includes - short, hit (start) 37.44 ns/iter (8.46 ns … 774 ns) 26.08 ns 379 ns 598 ns String.includes - short, hit (end) 97.27 ns/iter (16.93 ns … 823 ns) 107 ns 537 ns 801 ns String.includes - short, miss 102 ns/iter (0 ps … 1'598 µs) 42 ns 125 ns 167 ns String.includes - long, hit (middle) 16.01 ns/iter (14.34 ns … 115 ns) 16.03 ns 20.1 ns 53.1 ns String.includes - long, miss 945 ns/iter (935 ns … 972 ns) 948 ns 960 ns 972 ns String.includes - with position 9.83 ns/iter (8.44 ns … 58.45 ns) 9.83 ns 12.31 ns 15.69 ns ``` **after:** ``` $ ./build/release/bun bench/snippets/string-includes.mjs cpu: Apple M4 Max runtime: bun 1.3.6 (arm64-darwin) benchmark time (avg) (min … max) p75 p99 p999 ----------------------------------------------------------------------------- ----------------------------- String.includes - short, hit (middle) 243 ps/iter (203 ps … 10.13 ns) 244 ps 325 ps 509 ps ! String.includes - short, hit (start) 374 ps/iter (244 ps … 19.78 ns) 387 ps 488 ps 691 ps String.includes - short, hit (end) 708 ps/iter (407 ps … 18.03 ns) 651 ps 2.62 ns 2.69 ns String.includes - short, miss 1.49 ns/iter (407 ps … 27.93 ns) 2.87 ns 3.09 ns 3.78 ns String.includes - long, hit (middle) 3.28 ns/iter (3.05 ns … 118 ns) 3.15 ns 8.75 ns 16.07 ns String.includes - long, miss 7.28 ns/iter (3.44 ns … 698 ns) 9.34 ns 42.85 ns 240 ns String.includes - with position 7.97 ns/iter (3.7 ns … 602 ns) 9.68 ns 52.19 ns 286 ns ``` --- bench/snippets/string-includes.mjs | 34 ++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 bench/snippets/string-includes.mjs diff --git a/bench/snippets/string-includes.mjs b/bench/snippets/string-includes.mjs new file mode 100644 index 0000000000..daf912ecf1 --- /dev/null +++ b/bench/snippets/string-includes.mjs @@ -0,0 +1,34 @@ +import { bench, run } from "../runner.mjs"; + +const shortStr = "The quick brown fox jumps over the lazy dog"; +const longStr = shortStr.repeat(100); + +bench("String.includes - short, hit (middle)", () => { + return shortStr.includes("jumps"); +}); + +bench("String.includes - short, hit (start)", () => { + return shortStr.includes("The"); +}); + +bench("String.includes - short, hit (end)", () => { + return shortStr.includes("dog"); +}); + +bench("String.includes - short, miss", () => { + return shortStr.includes("cat"); +}); + +bench("String.includes - long, hit (middle)", () => { + return longStr.includes("jumps"); +}); + +bench("String.includes - long, miss", () => { + return longStr.includes("cat"); +}); + +bench("String.includes - with position", () => { + return shortStr.includes("fox", 10); +}); + +await run(); From b51e993bc2585f7e53d76cae13dde390596522e0 Mon Sep 17 00:00:00 2001 From: robobun Date: Fri, 26 Dec 2025 23:39:37 -0800 Subject: [PATCH 203/212] fix: reject null bytes in spawn args, env, and shell arguments (#25698) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Reject null bytes in command-line arguments passed to `Bun.spawn` and `Bun.spawnSync` - Reject null bytes in environment variable keys and values - Reject null bytes in shell (`$`) template literal arguments This prevents null byte injection attacks (CWE-158) where null bytes in strings could cause unintended truncation when passed to the OS, potentially allowing attackers to bypass file extension validation or create files with unexpected names. ## Test plan - [x] Added tests in `test/js/bun/spawn/null-byte-injection.test.ts` - [x] Tests pass with debug build: `bun bd test test/js/bun/spawn/null-byte-injection.test.ts` - [x] Tests fail with system Bun (confirming the fix works) šŸ¤– Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Bot Co-authored-by: Claude Co-authored-by: Jarred Sumner --- src/bun.js/api/bun/js_bun_spawn_bindings.zig | 25 +++- src/shell/shell.zig | 17 +++ test/js/bun/spawn/null-byte-injection.test.ts | 125 ++++++++++++++++++ 3 files changed, 166 insertions(+), 1 deletion(-) create mode 100644 test/js/bun/spawn/null-byte-injection.test.ts diff --git a/src/bun.js/api/bun/js_bun_spawn_bindings.zig b/src/bun.js/api/bun/js_bun_spawn_bindings.zig index 7010c9f7e2..45c33a5a19 100644 --- a/src/bun.js/api/bun/js_bun_spawn_bindings.zig +++ b/src/bun.js/api/bun/js_bun_spawn_bindings.zig @@ -6,6 +6,11 @@ fn getArgv0(globalThis: *jsc.JSGlobalObject, PATH: []const u8, cwd: []const u8, } { var arg0 = try first_cmd.toSliceOrNullWithAllocator(globalThis, allocator); defer arg0.deinit(); + + // Check for null bytes in command (security: prevent null byte injection) + if (strings.indexOfChar(arg0.slice(), 0) != null) { + return globalThis.ERR(.INVALID_ARG_VALUE, "The argument 'args[0]' must be a string without null bytes. Received {f}", .{bun.fmt.quote(arg0.slice())}).throw(); + } // Heap allocate it to ensure we don't run out of stack space. const path_buf: *bun.PathBuffer = try bun.default_allocator.create(bun.PathBuffer); defer bun.default_allocator.destroy(path_buf); @@ -63,11 +68,18 @@ fn getArgv(globalThis: *jsc.JSGlobalObject, args: JSValue, PATH: []const u8, cwd argv0.* = argv0_result.argv0.ptr; argv.appendAssumeCapacity(argv0_result.arg0.ptr); + var arg_index: usize = 1; while (try cmds_array.next()) |value| { const arg = try value.toBunString(globalThis); defer arg.deref(); + // Check for null bytes in argument (security: prevent null byte injection) + if (arg.indexOfAsciiChar(0) != null) { + return globalThis.ERR(.INVALID_ARG_VALUE, "The argument 'args[{d}]' must be a string without null bytes. Received \"{f}\"", .{ arg_index, arg.toZigString() }).throw(); + } + argv.appendAssumeCapacity(try arg.toOwnedSliceZ(allocator)); + arg_index += 1; } if (argv.items.len == 0) { @@ -1063,7 +1075,18 @@ pub fn appendEnvpFromJS(globalThis: *jsc.JSGlobalObject, object: *jsc.JSObject, var value = object_iter.value; if (value.isUndefined()) continue; - const line = try std.fmt.allocPrintSentinel(envp.allocator, "{f}={f}", .{ key, try value.getZigString(globalThis) }, 0); + const value_bunstr = try value.toBunString(globalThis); + defer value_bunstr.deref(); + + // Check for null bytes in env key and value (security: prevent null byte injection) + if (key.indexOfAsciiChar(0) != null) { + return globalThis.ERR(.INVALID_ARG_VALUE, "The property 'options.env['{f}']' must be a string without null bytes. Received \"{f}\"", .{ key.toZigString(), key.toZigString() }).throw(); + } + if (value_bunstr.indexOfAsciiChar(0) != null) { + return globalThis.ERR(.INVALID_ARG_VALUE, "The property 'options.env['{f}']' must be a string without null bytes. Received \"{f}\"", .{ key.toZigString(), value_bunstr.toZigString() }).throw(); + } + + const line = try std.fmt.allocPrintSentinel(envp.allocator, "{f}={f}", .{ key, value_bunstr.toZigString() }, 0); if (key.eqlComptime("PATH")) { PATH.* = bun.asByteSlice(line["PATH=".len..]); diff --git a/src/shell/shell.zig b/src/shell/shell.zig index 8243f63bb6..92bf54c9cb 100644 --- a/src/shell/shell.zig +++ b/src/shell/shell.zig @@ -3918,6 +3918,12 @@ pub fn handleTemplateValue( if (store.data == .file) { if (store.data.file.pathlike == .path) { const path = store.data.file.pathlike.path.slice(); + + // Check for null bytes in path (security: prevent null byte injection) + if (bun.strings.indexOfChar(path, 0) != null) { + return globalThis.ERR(.INVALID_ARG_VALUE, "The shell argument must be a string without null bytes. Received {f}", .{bun.fmt.quote(path)}).throw(); + } + if (!try builder.appendUTF8(path, true)) { return globalThis.throw("Shell script string contains invalid UTF-16", .{}); } @@ -3983,6 +3989,12 @@ pub fn handleTemplateValue( if (try template_value.getOwnTruthy(globalThis, "raw")) |maybe_str| { const bunstr = try maybe_str.toBunString(globalThis); defer bunstr.deref(); + + // Check for null bytes in shell argument (security: prevent null byte injection) + if (bunstr.indexOfAsciiChar(0) != null) { + return globalThis.ERR(.INVALID_ARG_VALUE, "The shell argument must be a string without null bytes. Received \"{f}\"", .{bunstr.toZigString()}).throw(); + } + if (!try builder.appendBunStr(bunstr, false)) { return globalThis.throw("Shell script string contains invalid UTF-16", .{}); } @@ -4032,6 +4044,11 @@ pub const ShellSrcBuilder = struct { const bunstr = try jsval.toBunString(this.globalThis); defer bunstr.deref(); + // Check for null bytes in shell argument (security: prevent null byte injection) + if (bunstr.indexOfAsciiChar(0) != null) { + return this.globalThis.ERR(.INVALID_ARG_VALUE, "The shell argument must be a string without null bytes. Received \"{f}\"", .{bunstr.toZigString()}).throw(); + } + return try this.appendBunStr(bunstr, allow_escape); } diff --git a/test/js/bun/spawn/null-byte-injection.test.ts b/test/js/bun/spawn/null-byte-injection.test.ts new file mode 100644 index 0000000000..e5a58ac92a --- /dev/null +++ b/test/js/bun/spawn/null-byte-injection.test.ts @@ -0,0 +1,125 @@ +import { $ } from "bun"; +import { describe, expect, test } from "bun:test"; + +describe("null byte injection protection", () => { + describe("Bun.spawn", () => { + test("throws error when command contains null byte", async () => { + const command = "echo\0evil"; + expect(() => { + Bun.spawn([command]); + }).toThrow(/must be a string without null bytes/); + }); + + test("throws error when argument contains null byte", async () => { + const arg = "x.html\0.txt"; + expect(() => { + Bun.spawn(["echo", arg]); + }).toThrow(/must be a string without null bytes/); + }); + + test("throws error with ERR_INVALID_ARG_VALUE code for args with null byte", async () => { + const arg = "test\0value"; + try { + Bun.spawn(["echo", arg]); + expect.unreachable(); + } catch (e: any) { + expect(e.code).toBe("ERR_INVALID_ARG_VALUE"); + expect(e.message).toMatch(/args\[1\]/); + expect(e.message).toMatch(/must be a string without null bytes/); + } + }); + + test("throws error for null byte in env key", async () => { + expect(() => { + Bun.spawn(["echo", "hello"], { + env: { + "MY\0VAR": "value", + }, + }); + }).toThrow(/must be a string without null bytes/); + }); + + test("throws error for null byte in env value", async () => { + expect(() => { + Bun.spawn(["echo", "hello"], { + env: { + MY_VAR: "val\0ue", + }, + }); + }).toThrow(/must be a string without null bytes/); + }); + + test("works normally with valid arguments", async () => { + await using proc = Bun.spawn(["echo", "hello"], { stdout: "pipe" }); + const stdout = await new Response(proc.stdout).text(); + expect(stdout.trim()).toBe("hello"); + expect(await proc.exited).toBe(0); + }); + + test("works with spread process.env", async () => { + await using proc = Bun.spawn(["echo", "hello"], { + env: { ...process.env }, + stdout: "pipe", + }); + const stdout = await new Response(proc.stdout).text(); + expect(stdout.trim()).toBe("hello"); + expect(await proc.exited).toBe(0); + }); + }); + + describe("Bun.spawnSync", () => { + test("throws error when command contains null byte", () => { + const command = "echo\0evil"; + expect(() => { + Bun.spawnSync([command]); + }).toThrow(/must be a string without null bytes/); + }); + + test("throws error when argument contains null byte", () => { + const arg = "x.html\0.txt"; + expect(() => { + Bun.spawnSync(["echo", arg]); + }).toThrow(/must be a string without null bytes/); + }); + + test("works normally with valid arguments", () => { + const result = Bun.spawnSync(["echo", "hello"]); + expect(result.stdout.toString().trim()).toBe("hello"); + expect(result.exitCode).toBe(0); + }); + }); + + describe("Shell ($)", () => { + test("throws error when interpolated string contains null byte", () => { + const name = "x.html\0.txt"; + expect(() => $`echo ${name}`).toThrow(/must be a string without null bytes/); + }); + + test("throws error with ERR_INVALID_ARG_VALUE code for shell args with null byte", () => { + const arg = "test\0value"; + try { + $`echo ${arg}`; + expect.unreachable(); + } catch (e: any) { + expect(e.code).toBe("ERR_INVALID_ARG_VALUE"); + expect(e.message).toMatch(/must be a string without null bytes/); + } + }); + + test("throws error when array element contains null byte", () => { + const args = ["valid", "x\0y", "also valid"]; + expect(() => $`echo ${args}`).toThrow(/must be a string without null bytes/); + }); + + test("throws error when object with raw property contains null byte", () => { + const raw = { raw: "test\0value" }; + expect(() => $`echo ${raw}`).toThrow(/must be a string without null bytes/); + }); + + test("works normally with valid arguments", async () => { + const name = "hello.txt"; + const result = await $`echo ${name}`.text(); + expect(result.trim()).toBe("hello.txt"); + }); + }); +}); From d3a5f2eef2afcc1a2a8384443339080f8b3bac93 Mon Sep 17 00:00:00 2001 From: Oleksandr Herasymov Date: Sat, 27 Dec 2025 09:41:10 +0200 Subject: [PATCH 204/212] perf: speed up Bun.hash.crc32 by switching to zlib CRC32 (#25692) ## What does this PR do? Switch `Bun.hash.crc32` to use `zlib`'s CRC32 implementation. Bun already links `zlib`, which provides highly optimized, hardware-accelerated CRC32. Because `zlib.crc32` takes a 32-bit length, chunk large inputs to avoid truncation/regressions on buffers >4GB. Note: This was tried before (PR #12164 by Jarred), which switched CRC32 to zlib for speed. This proposal keeps that approach and adds explicit chunking to avoid the >4GB length pitfall. **Problem:** `Bun.hash.crc32` is a significant outlier in microbenchmarks compared to other hash functions (about 21x slower than `zlib.crc32` in a 1MB test on M1). **Root cause:** `Bun.hash.crc32` uses Zig's `std.hash.Crc32` implementation, which is software-only and does not leverage hardware acceleration (e.g., `PCLMULQDQ` on x86 or `CRC32` instructions on ARM). **Implementation:** https://github.com/oven-sh/bun/blob/main/src/bun.js/api/HashObject.zig ```zig pub const crc32 = hashWrap(struct { pub fn hash(seed: u32, bytes: []const u8) u32 { // zlib takes a 32-bit length, so chunk large inputs to avoid truncation. var crc: u64 = seed; var offset: usize = 0; while (offset < bytes.len) { const remaining = bytes.len - offset; const max_len: usize = std.math.maxInt(u32); const chunk_len: u32 = if (remaining > max_len) @intCast(max_len) else @intCast(remaining); crc = bun.zlib.crc32(crc, bytes.ptr + offset, chunk_len); offset += chunk_len; } return @intCast(crc); } }); ``` ### How did you verify your code works? **Benchmark (1MB payload):** - **Before:** Bun 1.3.5 `Bun.hash.crc32` = 2,644,444 ns/op vs `zlib.crc32` = 124,324 ns/op (~21x slower) - **After (local bun-debug):** `Bun.hash.crc32` = 360,591 ns/op vs `zlib.crc32` = 359,069 ns/op (~1.0x), results match ## Test environment - **Machine:** MacBook Pro 13" (M1, 2020) - **OS:** macOS 15.7.3 - **Baseline Bun:** 1.3.5 - **After Bun:** local `bun-debug` (build/debug) --- src/bun.js/api/HashObject.zig | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/bun.js/api/HashObject.zig b/src/bun.js/api/HashObject.zig index 05256cf581..92b3f6da4e 100644 --- a/src/bun.js/api/HashObject.zig +++ b/src/bun.js/api/HashObject.zig @@ -2,7 +2,22 @@ const HashObject = @This(); pub const wyhash = hashWrap(std.hash.Wyhash); pub const adler32 = hashWrap(std.hash.Adler32); -pub const crc32 = hashWrap(std.hash.Crc32); +/// Use hardware-accelerated CRC32 from zlib +pub const crc32 = hashWrap(struct { + pub fn hash(seed: u32, bytes: []const u8) u32 { + // zlib takes a 32-bit length, so chunk large inputs to avoid truncation. + var crc: u64 = seed; + var offset: usize = 0; + while (offset < bytes.len) { + const remaining = bytes.len - offset; + const max_len: usize = std.math.maxInt(u32); + const chunk_len: u32 = if (remaining > max_len) @intCast(max_len) else @intCast(remaining); + crc = bun.zlib.crc32(crc, bytes.ptr + offset, chunk_len); + offset += chunk_len; + } + return @intCast(crc); + } +}); pub const cityHash32 = hashWrap(std.hash.CityHash32); pub const cityHash64 = hashWrap(std.hash.CityHash64); pub const xxHash32 = hashWrap(struct { From 01de0ecbd97117cc05afaad2066f06d8ff77d7f5 Mon Sep 17 00:00:00 2001 From: SUZUKI Sosuke Date: Sat, 27 Dec 2025 17:05:57 +0900 Subject: [PATCH 205/212] Add simple benchmark for Array.of (#25711) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **before:** ``` $ bun bench/snippets/array-of.js cpu: Apple M4 Max runtime: bun 1.3.5 (arm64-darwin) benchmark time (avg) (min … max) p75 p99 p999 ----------------------------------------------------------------------------- ----------------------------- int: Array.of(1,2,3,4,5) 9.19 ns/iter (8.1 ns … 108 ns) 9.28 ns 13.63 ns 69.44 ns int: Array.of(100 elements) 1'055 ns/iter (94.58 ns … 1'216 ns) 1'108 ns 1'209 ns 1'216 ns double: Array.of(1.1,2.2,3.3,4.4,5.5) 10.34 ns/iter (8.81 ns … 102 ns) 10.17 ns 17.19 ns 73.51 ns double: Array.of(100 elements) 1'073 ns/iter (124 ns … 1'215 ns) 1'136 ns 1'204 ns 1'215 ns object: Array.of(obj x5) 19.19 ns/iter (16.58 ns … 122 ns) 19.06 ns 77.6 ns 85.75 ns object: Array.of(100 elements) 1'340 ns/iter (294 ns … 1'568 ns) 1'465 ns 1'537 ns 1'568 ns ``` **after:** ``` $ ./build/release/bun bench/snippets/array-of.js cpu: Apple M4 Max runtime: bun 1.3.6 (arm64-darwin) benchmark time (avg) (min … max) p75 p99 p999 ----------------------------------------------------------------------------- ----------------------------- int: Array.of(1,2,3,4,5) 2.68 ns/iter (2.14 ns … 92.96 ns) 2.52 ns 3.95 ns 59.73 ns int: Array.of(100 elements) 23.69 ns/iter (18.88 ns … 155 ns) 20.91 ns 83.82 ns 96.66 ns double: Array.of(1.1,2.2,3.3,4.4,5.5) 3.62 ns/iter (2.97 ns … 75.44 ns) 3.46 ns 5.05 ns 65.82 ns double: Array.of(100 elements) 26.96 ns/iter (20.14 ns … 156 ns) 24.45 ns 87.75 ns 96.88 ns object: Array.of(obj x5) 11.82 ns/iter (9.6 ns … 87.38 ns) 11.23 ns 68.99 ns 77.09 ns object: Array.of(100 elements) 236 ns/iter (206 ns … 420 ns) 273 ns 325 ns 386 ns ``` --- bench/snippets/array-of.js | 335 +++++++++++++++++++++++++++++++++++++ 1 file changed, 335 insertions(+) create mode 100644 bench/snippets/array-of.js diff --git a/bench/snippets/array-of.js b/bench/snippets/array-of.js new file mode 100644 index 0000000000..51e0a47bd5 --- /dev/null +++ b/bench/snippets/array-of.js @@ -0,0 +1,335 @@ +import { bench, run } from "../runner.mjs"; + +let sink; + +// Integers +bench("int: Array.of(1,2,3,4,5)", () => { + sink = Array.of(1, 2, 3, 4, 5); +}); + +bench("int: Array.of(100 elements)", () => { + sink = Array.of( + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + ); +}); + +// Doubles +bench("double: Array.of(1.1,2.2,3.3,4.4,5.5)", () => { + sink = Array.of(1.1, 2.2, 3.3, 4.4, 5.5); +}); + +bench("double: Array.of(100 elements)", () => { + sink = Array.of( + 0.1, + 1.1, + 2.1, + 3.1, + 4.1, + 5.1, + 6.1, + 7.1, + 8.1, + 9.1, + 10.1, + 11.1, + 12.1, + 13.1, + 14.1, + 15.1, + 16.1, + 17.1, + 18.1, + 19.1, + 20.1, + 21.1, + 22.1, + 23.1, + 24.1, + 25.1, + 26.1, + 27.1, + 28.1, + 29.1, + 30.1, + 31.1, + 32.1, + 33.1, + 34.1, + 35.1, + 36.1, + 37.1, + 38.1, + 39.1, + 40.1, + 41.1, + 42.1, + 43.1, + 44.1, + 45.1, + 46.1, + 47.1, + 48.1, + 49.1, + 50.1, + 51.1, + 52.1, + 53.1, + 54.1, + 55.1, + 56.1, + 57.1, + 58.1, + 59.1, + 60.1, + 61.1, + 62.1, + 63.1, + 64.1, + 65.1, + 66.1, + 67.1, + 68.1, + 69.1, + 70.1, + 71.1, + 72.1, + 73.1, + 74.1, + 75.1, + 76.1, + 77.1, + 78.1, + 79.1, + 80.1, + 81.1, + 82.1, + 83.1, + 84.1, + 85.1, + 86.1, + 87.1, + 88.1, + 89.1, + 90.1, + 91.1, + 92.1, + 93.1, + 94.1, + 95.1, + 96.1, + 97.1, + 98.1, + 99.1, + ); +}); + +// Objects +bench("object: Array.of(obj x5)", () => { + sink = Array.of({ a: 1 }, { a: 2 }, { a: 3 }, { a: 4 }, { a: 5 }); +}); + +bench("object: Array.of(100 elements)", () => { + sink = Array.of( + { a: 0 }, + { a: 1 }, + { a: 2 }, + { a: 3 }, + { a: 4 }, + { a: 5 }, + { a: 6 }, + { a: 7 }, + { a: 8 }, + { a: 9 }, + { a: 10 }, + { a: 11 }, + { a: 12 }, + { a: 13 }, + { a: 14 }, + { a: 15 }, + { a: 16 }, + { a: 17 }, + { a: 18 }, + { a: 19 }, + { a: 20 }, + { a: 21 }, + { a: 22 }, + { a: 23 }, + { a: 24 }, + { a: 25 }, + { a: 26 }, + { a: 27 }, + { a: 28 }, + { a: 29 }, + { a: 30 }, + { a: 31 }, + { a: 32 }, + { a: 33 }, + { a: 34 }, + { a: 35 }, + { a: 36 }, + { a: 37 }, + { a: 38 }, + { a: 39 }, + { a: 40 }, + { a: 41 }, + { a: 42 }, + { a: 43 }, + { a: 44 }, + { a: 45 }, + { a: 46 }, + { a: 47 }, + { a: 48 }, + { a: 49 }, + { a: 50 }, + { a: 51 }, + { a: 52 }, + { a: 53 }, + { a: 54 }, + { a: 55 }, + { a: 56 }, + { a: 57 }, + { a: 58 }, + { a: 59 }, + { a: 60 }, + { a: 61 }, + { a: 62 }, + { a: 63 }, + { a: 64 }, + { a: 65 }, + { a: 66 }, + { a: 67 }, + { a: 68 }, + { a: 69 }, + { a: 70 }, + { a: 71 }, + { a: 72 }, + { a: 73 }, + { a: 74 }, + { a: 75 }, + { a: 76 }, + { a: 77 }, + { a: 78 }, + { a: 79 }, + { a: 80 }, + { a: 81 }, + { a: 82 }, + { a: 83 }, + { a: 84 }, + { a: 85 }, + { a: 86 }, + { a: 87 }, + { a: 88 }, + { a: 89 }, + { a: 90 }, + { a: 91 }, + { a: 92 }, + { a: 93 }, + { a: 94 }, + { a: 95 }, + { a: 96 }, + { a: 97 }, + { a: 98 }, + { a: 99 }, + ); +}); + +await run(); From 1d7cb4bbad84434f760937ad1acbc8fd4cb4f690 Mon Sep 17 00:00:00 2001 From: robobun Date: Sat, 27 Dec 2025 15:01:28 -0800 Subject: [PATCH 206/212] perf(Response.json): use JSC's FastStringifier by passing undefined for space (#25717) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Fix performance regression where `Response.json()` was 2-3x slower than `JSON.stringify() + new Response()` - Root cause: The existing code called `JSC::JSONStringify` with `indent=0`, which internally passes `jsNumber(0)` as the space parameter. This bypasses WebKit's FastStringifier optimization. - Fix: Add a new `jsonStringifyFast` binding that passes `jsUndefined()` for the space parameter, triggering JSC's FastStringifier (SIMD-optimized) code path. ## Root Cause Analysis In WebKit's `JSONObject.cpp`, the `stringify()` function has this logic: ```cpp static NEVER_INLINE String stringify(JSGlobalObject& globalObject, JSValue value, JSValue replacer, JSValue space) { // ... if (String result = FastStringifier::stringify(globalObject, value, replacer, space, failureReason); !result.isNull()) return result; // Falls back to slow Stringifier... } ``` And `FastStringifier::stringify()` checks: ```cpp if (!space.isUndefined()) { logOutcome("space"_s); return { }; // Bail out to slow path } ``` So when we called `JSONStringify(globalObject, value, (unsigned)0)`, it converted to `jsNumber(0)` which is NOT `undefined`, causing FastStringifier to bail out. ## Performance Results ### Before (3.5x slower than manual approach) ``` Response.json(): 2415ms JSON.stringify() + Response(): 689ms Ratio: 3.50x ``` ### After (parity with manual approach) ``` Response.json(): ~700ms JSON.stringify() + Response(): ~700ms Ratio: ~1.09x ``` ## Test plan - [x] Existing `Response.json()` tests pass (`test/regression/issue/21257.test.ts`) - [x] Response tests pass (`test/js/web/fetch/response.test.ts`) - [x] Manual verification that output is correct for various JSON inputs Fixes #25693 šŸ¤– Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Bot Co-authored-by: Claude Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Sosuke Suzuki --- bench/snippets/response-json.mjs | 34 +++++++++++++++++++++++++++++--- src/bun.js/bindings/JSValue.zig | 9 +++++++++ src/bun.js/bindings/bindings.cpp | 16 +++++++++++++++ src/bun.js/bindings/headers.h | 1 + src/bun.js/webcore/Response.zig | 10 +++++----- 5 files changed, 62 insertions(+), 8 deletions(-) diff --git a/bench/snippets/response-json.mjs b/bench/snippets/response-json.mjs index 2cd20523b6..28cad6e6c7 100644 --- a/bench/snippets/response-json.mjs +++ b/bench/snippets/response-json.mjs @@ -112,12 +112,40 @@ const obj = { }, }; -bench("Response.json(obj)", async () => { +const smallObj = { id: 1, name: "test" }; + +const arrayObj = { + items: Array.from({ length: 100 }, (_, i) => ({ id: i, value: `item-${i}` })), +}; + +bench("Response.json(obj)", () => { return Response.json(obj); }); -bench("Response.json(obj).json()", async () => { - return await Response.json(obj).json(); +bench("new Response(JSON.stringify(obj))", () => { + return new Response(JSON.stringify(obj), { + headers: { "Content-Type": "application/json" }, + }); +}); + +bench("Response.json(smallObj)", () => { + return Response.json(smallObj); +}); + +bench("new Response(JSON.stringify(smallObj))", () => { + return new Response(JSON.stringify(smallObj), { + headers: { "Content-Type": "application/json" }, + }); +}); + +bench("Response.json(arrayObj)", () => { + return Response.json(arrayObj); +}); + +bench("new Response(JSON.stringify(arrayObj))", () => { + return new Response(JSON.stringify(arrayObj), { + headers: { "Content-Type": "application/json" }, + }); }); await run(); diff --git a/src/bun.js/bindings/JSValue.zig b/src/bun.js/bindings/JSValue.zig index fe8b178dc1..8d911d6ecc 100644 --- a/src/bun.js/bindings/JSValue.zig +++ b/src/bun.js/bindings/JSValue.zig @@ -1202,6 +1202,15 @@ pub const JSValue = enum(i64) { return bun.jsc.fromJSHostCallGeneric(globalThis, @src(), JSC__JSValue__jsonStringify, .{ this, globalThis, indent, out }); } + extern fn JSC__JSValue__jsonStringifyFast(this: JSValue, globalThis: *JSGlobalObject, out: *bun.String) void; + + /// Fast version of JSON.stringify that uses JSC's FastStringifier optimization. + /// When space is undefined (as opposed to 0), JSC uses a highly optimized SIMD-based + /// serialization path. This is significantly faster for most common use cases. + pub fn jsonStringifyFast(this: JSValue, globalThis: *JSGlobalObject, out: *bun.String) bun.JSError!void { + return bun.jsc.fromJSHostCallGeneric(globalThis, @src(), JSC__JSValue__jsonStringifyFast, .{ this, globalThis, out }); + } + /// Call `toString()` on the JSValue and clone the result. pub fn toSliceOrNull(this: JSValue, globalThis: *JSGlobalObject) bun.JSError!ZigString.Slice { const str = try bun.String.fromJS(this, globalThis); diff --git a/src/bun.js/bindings/bindings.cpp b/src/bun.js/bindings/bindings.cpp index ebaecfbe4d..3a4130c983 100644 --- a/src/bun.js/bindings/bindings.cpp +++ b/src/bun.js/bindings/bindings.cpp @@ -2552,6 +2552,22 @@ void JSC__JSValue__jsonStringify(JSC::EncodedJSValue JSValue0, JSC::JSGlobalObje RETURN_IF_EXCEPTION(scope, ); *arg3 = Bun::toStringRef(str); } + +// Fast version of JSON.stringify that uses JSC's FastStringifier optimization. +// When space is undefined, JSC uses FastStringifier which is significantly faster +// than the general Stringifier used when space is a number (even 0). +void JSC__JSValue__jsonStringifyFast(JSC::EncodedJSValue JSValue0, JSC::JSGlobalObject* arg1, + BunString* arg3) +{ + ASSERT_NO_PENDING_EXCEPTION(arg1); + auto& vm = JSC::getVM(arg1); + auto scope = DECLARE_THROW_SCOPE(vm); + JSC::JSValue value = JSC::JSValue::decode(JSValue0); + // Passing jsUndefined() for space triggers JSC's FastStringifier optimization + WTF::String str = JSC::JSONStringify(arg1, value, JSC::jsUndefined()); + RETURN_IF_EXCEPTION(scope, ); + *arg3 = Bun::toStringRef(str); +} unsigned char JSC__JSValue__jsType(JSC::EncodedJSValue JSValue0) { JSC::JSValue jsValue = JSC::JSValue::decode(JSValue0); diff --git a/src/bun.js/bindings/headers.h b/src/bun.js/bindings/headers.h index 06e1a7f96a..895bb4f078 100644 --- a/src/bun.js/bindings/headers.h +++ b/src/bun.js/bindings/headers.h @@ -265,6 +265,7 @@ CPP_DECL JSC::EncodedJSValue JSC__JSValue__jsNumberFromDouble(double arg0); CPP_DECL JSC::EncodedJSValue JSC__JSValue__jsNumberFromInt64(int64_t arg0); CPP_DECL JSC::EncodedJSValue JSC__JSValue__jsNumberFromU16(uint16_t arg0); CPP_DECL void JSC__JSValue__jsonStringify(JSC::EncodedJSValue JSValue0, JSC::JSGlobalObject* arg1, uint32_t arg2, BunString* arg3); +CPP_DECL void JSC__JSValue__jsonStringifyFast(JSC::EncodedJSValue JSValue0, JSC::JSGlobalObject* arg1, BunString* arg3); CPP_DECL JSC::EncodedJSValue JSC__JSValue__jsTDZValue(); CPP_DECL unsigned char JSC__JSValue__jsType(JSC::EncodedJSValue JSValue0); CPP_DECL JSC::EncodedJSValue JSC__JSValue__keys(JSC::JSGlobalObject* arg0, JSC::EncodedJSValue arg1); diff --git a/src/bun.js/webcore/Response.zig b/src/bun.js/webcore/Response.zig index b02967ccb6..4c43c933bc 100644 --- a/src/bun.js/webcore/Response.zig +++ b/src/bun.js/webcore/Response.zig @@ -529,10 +529,12 @@ pub fn constructJSON( const err = globalThis.createTypeErrorInstance("Do not know how to serialize a BigInt", .{}); return globalThis.throwValue(err); } + var str = bun.String.empty; - // calling JSON.stringify on an empty string adds extra quotes - // so this is correct - try json_value.jsonStringify(globalThis, 0, &str); + // Use jsonStringifyFast which passes undefined for the space parameter, + // triggering JSC's FastStringifier optimization. This is significantly faster + // than jsonStringify which passes 0 for space and uses the slower Stringifier. + try json_value.jsonStringifyFast(globalThis, &str); if (globalThis.hasException()) { return .zero; @@ -896,8 +898,6 @@ inline fn emptyWithStatus(_: *jsc.JSGlobalObject, status: u16) Response { /// https://developer.mozilla.org/en-US/docs/Web/API/Headers // TODO: move to http.zig. this has nothing to do with jsc or WebCore -const string = []const u8; - const std = @import("std"); const Method = @import("../../http/Method.zig").Method; From 603bbd18a0096d7781bb7203e8b48f6f4c4bb50c Mon Sep 17 00:00:00 2001 From: SUZUKI Sosuke Date: Sun, 28 Dec 2025 08:02:11 +0900 Subject: [PATCH 207/212] Enable `CHECK_REF_COUNTED_LIFECYCLE` in WebKit (#25705) ### What does this PR do? Enables `CHECK_REF_COUNTED_LIFECYCLE` in WebKit ( https://github.com/oven-sh/WebKit/pull/121 ) See also https://github.com/WebKit/WebKit/commit/a978fae61986c0d3056e523f6552f28fc7b19b9f #### `CHECK_REF_COUNTED_LIFECYCLE`? A compile-time macro that enables lifecycle validation for reference-counted objects in debug builds. **Definition** ```cpp #if ASSERT_ENABLED || ENABLE(SECURITY_ASSERTIONS) #define CHECK_REF_COUNTED_LIFECYCLE 1 #else #define CHECK_REF_COUNTED_LIFECYCLE 0 #endif ``` **Purpose** Detects three categories of bugs: 1. Missing adoption - Objects stored in RefPtr without using adoptRef() 2. Ref during destruction - ref() called while destructor is running (causes dangling pointers) 3. Thread safety violations - Unsafe ref/deref across threads **Implementation** When enabled, RefCountDebugger adds two tracking flags: - m_deletionHasBegun - Set when destructor starts - m_adoptionIsRequired - Cleared when adoptRef() is called These flags are checked on every ref()/deref() call, with assertions failing on violations. **Motivation** Refactored debug code into a separate RefCountDebugger class to: - Improve readability of core refcount logic - Eliminate duplicate code across RefCounted, ThreadSafeRefCounted, etc. - Simplify adding new refcount classes **Overhead** Zero in release builds - the flags and checks are compiled out entirely. ### How did you verify your code works? --------- Co-authored-by: Claude Opus 4.5 --- cmake/tools/SetupWebKit.cmake | 2 +- src/bun.js/bindings/Serialization.cpp | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/cmake/tools/SetupWebKit.cmake b/cmake/tools/SetupWebKit.cmake index 85bac91e7b..6e2ce7d677 100644 --- a/cmake/tools/SetupWebKit.cmake +++ b/cmake/tools/SetupWebKit.cmake @@ -2,7 +2,7 @@ option(WEBKIT_VERSION "The version of WebKit to use") option(WEBKIT_LOCAL "If a local version of WebKit should be used instead of downloading") if(NOT WEBKIT_VERSION) - set(WEBKIT_VERSION 2317e1413969bff5e86d240f9f50aa2120776414) + set(WEBKIT_VERSION 863778130931e0081a688f48e8479b8ee61b9507) endif() string(SUBSTRING ${WEBKIT_VERSION} 0 16 WEBKIT_VERSION_PREFIX) diff --git a/src/bun.js/bindings/Serialization.cpp b/src/bun.js/bindings/Serialization.cpp index 5385e153db..caaec599f8 100644 --- a/src/bun.js/bindings/Serialization.cpp +++ b/src/bun.js/bindings/Serialization.cpp @@ -54,7 +54,9 @@ extern "C" SerializedValueSlice Bun__serializeJSValue(JSGlobalObject* globalObje extern "C" void Bun__SerializedScriptSlice__free(SerializedScriptValue* value) { - delete value; + // Use deref() instead of delete to properly handle CHECK_REF_COUNTED_LIFECYCLE. + // The value was leaked via leakRef() which leaves refcount at 1, so deref() will delete it. + value->deref(); } extern "C" EncodedJSValue Bun__JSValue__deserialize(JSGlobalObject* globalObject, const uint8_t* bytes, size_t size) From 7b49654db6eccce43ecc1490b552a47c4fdac7f8 Mon Sep 17 00:00:00 2001 From: Alex Miller Date: Sat, 27 Dec 2025 16:58:36 -0800 Subject: [PATCH 208/212] fix(io): Prevent data corruption in `Bun.write` for files >2GB (#25720) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #8254 Fixes a data corruption bug in `Bun.write()` where files larger than 2GB would have chunks skipped resulting in corrupted output with missing data. The `doWriteLoop` had an issue where it would essentially end up offsetting twice every 2GB chunks: - it first sliced the buffer by `total_written`: ```remain = remain[@min(this.total_written, remain.len)..]``` - it would then increment `bytes_blob.offset`: `this.bytes_blob.offset += @truncate(wrote)` but because `sharedView()` already uses the blob offset `slice_ = slice_[this.offset..]` it would end up doubling the offset. In a local reproduction writing a 16GB file with each 2GB chunk filled with incrementing values `[1, 2, 3, 4, 5, 6, 7, 8]`, the buggy version produced: `[1, 3, 5, 7, …]`, skipping every other chunk. The fix is to simply remove the redundant manual offset and rely only on `total_written` to track write progress. --- src/bun.js/webcore/blob/write_file.zig | 1 - test/regression/issue/8254.test.ts | 40 ++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 test/regression/issue/8254.test.ts diff --git a/src/bun.js/webcore/blob/write_file.zig b/src/bun.js/webcore/blob/write_file.zig index f2c942c07b..0e39ba0c78 100644 --- a/src/bun.js/webcore/blob/write_file.zig +++ b/src/bun.js/webcore/blob/write_file.zig @@ -301,7 +301,6 @@ pub const WriteFile = struct { if (remain.len > 0 and this.errno == null) { var wrote: usize = 0; const continue_writing = this.doWrite(remain, &wrote); - this.bytes_blob.offset += @truncate(wrote); if (!continue_writing) { // Stop writing, we errored if (this.errno != null) { diff --git a/test/regression/issue/8254.test.ts b/test/regression/issue/8254.test.ts new file mode 100644 index 0000000000..76a9195ade --- /dev/null +++ b/test/regression/issue/8254.test.ts @@ -0,0 +1,40 @@ +// https://github.com/oven-sh/bun/issues/8254 +// Bun.write() should correctly write files larger than 2GB without data corruption + +import { expect, test } from "bun:test"; +import { tempDir } from "harness"; +import { join } from "path"; + +test("Bun.write() should write past 2GB boundary without corruption", async () => { + using tmpbase = tempDir("issue-8254", {}); + + const TWO_GB = 2 ** 31; + const CHUNK_SIZE = 1024 * 1024; // 1MB + // Force a second write iteration by crossing the 2GB boundary + const NUM_CHUNKS = Math.floor(TWO_GB / CHUNK_SIZE) + 1; + const path = join(tmpbase, "large-file.bin"); + + const chunks: Uint8Array[] = []; + for (let i = 0; i < NUM_CHUNKS; i++) { + const chunk = new Uint8Array(CHUNK_SIZE); + chunk.fill(i % 256); + chunks.push(chunk); + } + + const blob = new Blob(chunks); + const written = await Bun.write(path, blob); + + expect(written).toBeGreaterThan(TWO_GB); + + const file = Bun.file(path); + + // Check bytes just before and after 2GB boundary + const positions = [TWO_GB - 1, TWO_GB, TWO_GB + 1]; + + for (const pos of positions) { + const buf = new Uint8Array(await file.slice(pos, pos + 1).arrayBuffer()); + + const expected = Math.floor(pos / CHUNK_SIZE) % 256; + expect(buf[0]).toBe(expected); + } +}); From 6b5de25d8a26207b5ee83efb65170beed31d936e Mon Sep 17 00:00:00 2001 From: robobun Date: Sat, 27 Dec 2025 17:25:52 -0800 Subject: [PATCH 209/212] feat(shell): add $.trace for analyzing shell commands without execution (#25667) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Adds `Bun.$.trace` for tracing shell commands without executing them. ```js const result = $.trace`cat /tmp/file.txt > output.txt`; // { operations: [...], cwd: "...", success: true, error: null } ``` ## Test plan - [x] `bun bd test test/js/bun/shell/trace.test.ts` šŸ¤– Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Bot Co-authored-by: Claude Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Jarred Sumner --- src/bun.js/api/BunObject.zig | 2 + src/bun.js/bindings/BunObject+exports.h | 1 + src/bun.js/bindings/BunObject.cpp | 2 + src/js/builtins/shell.ts | 54 +- src/shell/TraceInterpreter.zig | 1252 +++++++++++++++++++++++ src/shell/braces.zig | 62 ++ src/shell/shell.zig | 1 + test/js/bun/shell/trace.test.ts | 417 ++++++++ 8 files changed, 1790 insertions(+), 1 deletion(-) create mode 100644 src/shell/TraceInterpreter.zig create mode 100644 test/js/bun/shell/trace.test.ts diff --git a/src/bun.js/api/BunObject.zig b/src/bun.js/api/BunObject.zig index 1ed2b9e244..831c4c5008 100644 --- a/src/bun.js/api/BunObject.zig +++ b/src/bun.js/api/BunObject.zig @@ -16,6 +16,7 @@ pub const BunObject = struct { pub const connect = toJSCallback(host_fn.wrapStaticMethod(api.Listener, "connect", false)); pub const createParsedShellScript = toJSCallback(bun.shell.ParsedShellScript.createParsedShellScript); pub const createShellInterpreter = toJSCallback(bun.shell.Interpreter.createShellInterpreter); + pub const traceShellScript = toJSCallback(bun.shell.TraceInterpreter.traceShellScript); pub const deflateSync = toJSCallback(JSZlib.deflateSync); pub const file = toJSCallback(WebCore.Blob.constructBunFile); pub const gunzipSync = toJSCallback(JSZlib.gunzipSync); @@ -154,6 +155,7 @@ pub const BunObject = struct { @export(&BunObject.connect, .{ .name = callbackName("connect") }); @export(&BunObject.createParsedShellScript, .{ .name = callbackName("createParsedShellScript") }); @export(&BunObject.createShellInterpreter, .{ .name = callbackName("createShellInterpreter") }); + @export(&BunObject.traceShellScript, .{ .name = callbackName("traceShellScript") }); @export(&BunObject.deflateSync, .{ .name = callbackName("deflateSync") }); @export(&BunObject.file, .{ .name = callbackName("file") }); @export(&BunObject.gunzipSync, .{ .name = callbackName("gunzipSync") }); diff --git a/src/bun.js/bindings/BunObject+exports.h b/src/bun.js/bindings/BunObject+exports.h index d92b41c0cd..b4481f7e47 100644 --- a/src/bun.js/bindings/BunObject+exports.h +++ b/src/bun.js/bindings/BunObject+exports.h @@ -69,6 +69,7 @@ macro(spawn) \ macro(spawnSync) \ macro(stringWidth) \ + macro(traceShellScript) \ macro(udpSocket) \ macro(which) \ macro(write) \ diff --git a/src/bun.js/bindings/BunObject.cpp b/src/bun.js/bindings/BunObject.cpp index 6296b0599f..c94784cf96 100644 --- a/src/bun.js/bindings/BunObject.cpp +++ b/src/bun.js/bindings/BunObject.cpp @@ -354,12 +354,14 @@ static JSValue constructBunShell(VM& vm, JSObject* bunObject) auto* globalObject = jsCast(bunObject->globalObject()); JSFunction* createParsedShellScript = JSFunction::create(vm, bunObject->globalObject(), 2, "createParsedShellScript"_s, BunObject_callback_createParsedShellScript, ImplementationVisibility::Private, NoIntrinsic); JSFunction* createShellInterpreterFunction = JSFunction::create(vm, bunObject->globalObject(), 1, "createShellInterpreter"_s, BunObject_callback_createShellInterpreter, ImplementationVisibility::Private, NoIntrinsic); + JSFunction* traceShellScriptFunction = JSFunction::create(vm, bunObject->globalObject(), 1, "traceShellScript"_s, BunObject_callback_traceShellScript, ImplementationVisibility::Private, NoIntrinsic); JSC::JSFunction* createShellFn = JSC::JSFunction::create(vm, globalObject, shellCreateBunShellTemplateFunctionCodeGenerator(vm), globalObject); auto scope = DECLARE_THROW_SCOPE(vm); auto args = JSC::MarkedArgumentBuffer(); args.append(createShellInterpreterFunction); args.append(createParsedShellScript); + args.append(traceShellScriptFunction); JSC::JSValue shell = JSC::call(globalObject, createShellFn, args, "BunShell"_s); RETURN_IF_EXCEPTION(scope, {}); diff --git a/src/js/builtins/shell.ts b/src/js/builtins/shell.ts index 40f3e7d3a0..142eecccc2 100644 --- a/src/js/builtins/shell.ts +++ b/src/js/builtins/shell.ts @@ -1,4 +1,35 @@ -export function createBunShellTemplateFunction(createShellInterpreter_, createParsedShellScript_) { +// Note: ShellTraceFlags interface documents the permission flag values returned +// by $.trace operations. These are intentionally not exported as runtime values +// to keep the trace API simple - users compare against numeric constants directly. +// The values mirror standard Unix open(2) and access(2) flags. + +interface ShellTraceOperation { + /** Permission flags (octal integer, can be combined with |) */ + flags: number; + /** Working directory at time of operation */ + cwd: string; + /** Absolute path that would be accessed (for file/execute operations) */ + path?: string; + /** Command name (for execute operations) */ + command?: string; + /** Accumulated environment variables at this point in execution */ + env?: Record; + /** Which standard stream is being redirected: "stdin", "stdout", or "stderr" */ + stream?: "stdin" | "stdout" | "stderr"; + /** Command arguments for external commands (excluding command name) */ + args?: string[]; + /** True if operation contains non-statically-analyzable values (command substitution, $1, etc.) */ + dynamic?: true; +} + +interface ShellTraceResult { + operations: ShellTraceOperation[]; + cwd: string; + success: boolean; + error: string | null; +} + +export function createBunShellTemplateFunction(createShellInterpreter_, createParsedShellScript_, traceShellScript_) { const createShellInterpreter = createShellInterpreter_ as ( resolve: (code: number, stdout: Buffer, stderr: Buffer) => void, reject: (code: number, stdout: Buffer, stderr: Buffer) => void, @@ -8,6 +39,7 @@ export function createBunShellTemplateFunction(createShellInterpreter_, createPa raw: string, args: string[], ) => $ZigGeneratedClasses.ParsedShellScript; + const traceShellScript = traceShellScript_ as (args: $ZigGeneratedClasses.ParsedShellScript) => ShellTraceResult; function lazyBufferToHumanReadableString(this: Buffer) { return this.toString(); @@ -348,6 +380,22 @@ export function createBunShellTemplateFunction(createShellInterpreter_, createPa BunShell[envSymbol] = defaultEnv; BunShell[throwsSymbol] = true; + // Trace function - analyzes shell script without running it + function trace(first, ...rest): ShellTraceResult { + if (first?.raw === undefined) + throw new Error("Please use '$.trace' as a tagged template function: $.trace`cmd arg1 arg2`"); + const parsed_shell_script = createParsedShellScript(first.raw, rest); + + const cwd = BunShell[cwdSymbol]; + const env = BunShell[envSymbol]; + + // cwd must be set before env or else it will be injected into env as "PWD=/" + if (cwd) parsed_shell_script.setCwd(cwd); + if (env) parsed_shell_script.setEnv(env); + + return traceShellScript(parsed_shell_script); + } + Object.defineProperties(BunShell, { Shell: { value: Shell, @@ -361,6 +409,10 @@ export function createBunShellTemplateFunction(createShellInterpreter_, createPa value: ShellError, enumerable: true, }, + trace: { + value: trace, + enumerable: true, + }, }); return BunShell; diff --git a/src/shell/TraceInterpreter.zig b/src/shell/TraceInterpreter.zig new file mode 100644 index 0000000000..275144a4a7 --- /dev/null +++ b/src/shell/TraceInterpreter.zig @@ -0,0 +1,1252 @@ +//! The trace interpreter simulates shell execution without actually running commands. +//! It walks the AST and collects information about what permissions would be needed +//! and what file paths would be accessed. +//! +//! This is used for a permission system where users can inspect what a shell command +//! would do before actually executing it. + +/// Unix-style permission flags using standard octal values +/// These mirror the constants used by open(2), chmod(2), and access(2) +pub const Permission = struct { + /// Standard Unix permission bits (octal) + pub const O_RDONLY: u32 = 0o0; // Read only + pub const O_WRONLY: u32 = 0o1; // Write only + pub const O_RDWR: u32 = 0o2; // Read and write + pub const O_CREAT: u32 = 0o100; // Create file if it doesn't exist + pub const O_EXCL: u32 = 0o200; // Fail if file exists (with O_CREAT) + pub const O_TRUNC: u32 = 0o1000; // Truncate file to zero length + pub const O_APPEND: u32 = 0o2000; // Append to file + + /// Extended operation flags (using higher bits to avoid conflicts) + pub const X_OK: u32 = 0o100000; // Execute permission / run command + pub const DELETE: u32 = 0o200000; // Delete file or directory + pub const MKDIR: u32 = 0o400000; // Create directory + pub const CHDIR: u32 = 0o1000000; // Change directory + pub const ENV: u32 = 0o2000000; // Modify environment + + /// Convenience combinations + pub const READ: u32 = O_RDONLY; + pub const WRITE: u32 = O_WRONLY; + pub const READ_WRITE: u32 = O_RDWR; + pub const CREATE: u32 = O_CREAT | O_WRONLY; + pub const CREATE_TRUNC: u32 = O_CREAT | O_TRUNC | O_WRONLY; + pub const APPEND: u32 = O_APPEND | O_WRONLY; + pub const EXECUTE: u32 = X_OK; +}; + +/// Standard stream identifiers for redirections +pub const Stream = enum(u8) { + none = 0, + stdin = 1, + stdout = 2, + stderr = 3, + + pub fn toJS(this: Stream, globalThis: *JSGlobalObject) JSValue { + return if (this == .none) .null else bun.String.static(@tagName(this)).toJS(globalThis); + } +}; + +/// A snapshot of environment variables at a point in execution +pub const EnvSnapshot = struct { + /// Map of variable name -> value + vars: bun.StringHashMapUnmanaged([]const u8), + /// Allocator used for this snapshot + allocator: Allocator, + + pub fn init(allocator: Allocator) EnvSnapshot { + return .{ + .vars = .{}, + .allocator = allocator, + }; + } + + pub fn clone(this: *const EnvSnapshot, allocator: Allocator) EnvSnapshot { + var new_vars: bun.StringHashMapUnmanaged([]const u8) = .{}; + var iter = this.vars.iterator(); + while (iter.next()) |entry| { + const key_copy = allocator.dupe(u8, entry.key_ptr.*) catch continue; + const val_copy = allocator.dupe(u8, entry.value_ptr.*) catch { + allocator.free(key_copy); + continue; + }; + new_vars.put(allocator, key_copy, val_copy) catch { + allocator.free(key_copy); + allocator.free(val_copy); + continue; + }; + } + return .{ + .vars = new_vars, + .allocator = allocator, + }; + } + + pub fn deinit(this: *EnvSnapshot) void { + var iter = this.vars.iterator(); + while (iter.next()) |entry| { + this.allocator.free(entry.key_ptr.*); + this.allocator.free(entry.value_ptr.*); + } + this.vars.deinit(this.allocator); + } + + pub fn toJS(this: *const EnvSnapshot, globalThis: *JSGlobalObject) JSValue { + var obj = jsc.JSValue.createEmptyObject(globalThis, @intCast(this.vars.count())); + var iter = this.vars.iterator(); + while (iter.next()) |entry| { + obj.put( + globalThis, + bun.String.init(entry.key_ptr.*), + bun.String.init(entry.value_ptr.*).toJS(globalThis), + ); + } + return obj; + } +}; + +/// Represents a single traced operation +pub const TracedOperation = struct { + /// The permission flags required (octal, like open/chmod) + flags: u32, + /// Absolute path that would be accessed (null for non-path operations) + path: ?[]const u8, + /// The command name (for execute operations) + command: ?[]const u8, + /// Working directory at time of operation + cwd: []const u8, + /// Snapshot of environment variables at this point + env: EnvSnapshot, + /// Which standard stream is being redirected (if any) + stream: Stream, + /// Command arguments (for execute operations, excluding the command name itself) + args: ?[]const []const u8, + /// Whether this operation contains dynamic/non-statically-analyzable values + dynamic: bool, + + pub fn deinit(this: *TracedOperation, allocator: Allocator) void { + if (this.path) |p| allocator.free(p); + if (this.command) |c| allocator.free(c); + allocator.free(this.cwd); + this.env.deinit(); + if (this.args) |args| { + for (args) |arg| allocator.free(arg); + allocator.free(args); + } + } + + pub fn toJS(this: *const TracedOperation, globalThis: *JSGlobalObject) bun.JSError!JSValue { + var obj = jsc.JSValue.createEmptyObject(globalThis, 6); + + // Return flags as integer (octal value) + obj.put( + globalThis, + bun.String.static("flags"), + jsc.JSValue.jsNumber(@as(i32, @intCast(this.flags))), + ); + + // cwd is always present + obj.put( + globalThis, + bun.String.static("cwd"), + bun.String.init(this.cwd).toJS(globalThis), + ); + + // Only set optional properties if they have values (otherwise undefined) + if (this.path) |p| { + obj.put( + globalThis, + bun.String.static("path"), + bun.String.init(p).toJS(globalThis), + ); + } + + if (this.command) |c| { + obj.put( + globalThis, + bun.String.static("command"), + bun.String.init(c).toJS(globalThis), + ); + } + + // Environment snapshot - only include if there are env vars + if (this.env.vars.count() > 0) { + obj.put( + globalThis, + bun.String.static("env"), + this.env.toJS(globalThis), + ); + } + + // Stream redirection (stdin, stdout, stderr) - only set if not none + if (this.stream != .none) { + obj.put( + globalThis, + bun.String.static("stream"), + this.stream.toJS(globalThis), + ); + } + + // Command arguments (for execute operations) + if (this.args) |args| { + const arr = try jsc.JSValue.createEmptyArray(globalThis, args.len); + for (args, 0..) |arg, i| { + try arr.putIndex(globalThis, @intCast(i), bun.String.init(arg).toJS(globalThis)); + } + obj.put(globalThis, bun.String.static("args"), arr); + } + + // Dynamic flag - only set if true + if (this.dynamic) { + obj.put( + globalThis, + bun.String.static("dynamic"), + .true, + ); + } + + return obj; + } +}; + +/// Result of tracing a shell script +pub const TraceResult = struct { + /// All traced operations + operations: std.array_list.Managed(TracedOperation), + /// The working directory + cwd: []const u8, + /// Whether tracing was successful + success: bool, + /// Error message if tracing failed + error_message: ?[]const u8, + /// Allocator used for this result + allocator: Allocator, + + pub fn init(allocator: Allocator, cwd: []const u8) TraceResult { + return .{ + .operations = std.array_list.Managed(TracedOperation).init(allocator), + .cwd = bun.handleOom(allocator.dupe(u8, cwd)), + .success = true, + .error_message = null, + .allocator = allocator, + }; + } + + pub fn deinit(this: *TraceResult) void { + for (this.operations.items) |*op| { + op.deinit(this.allocator); + } + this.operations.deinit(); + this.allocator.free(this.cwd); + if (this.error_message) |msg| { + this.allocator.free(msg); + } + } + + pub fn addOperation(this: *TraceResult, op: TracedOperation) void { + bun.handleOom(this.operations.append(op)); + } + + pub fn setError(this: *TraceResult, msg: []const u8) void { + this.success = false; + this.error_message = bun.handleOom(this.allocator.dupe(u8, msg)); + } + + pub fn toJS(this: *const TraceResult, globalThis: *JSGlobalObject) bun.JSError!JSValue { + var result_obj = jsc.JSValue.createEmptyObject(globalThis, 4); + + // Create operations array + const ops_array = try jsc.JSValue.createEmptyArray(globalThis, this.operations.items.len); + for (this.operations.items, 0..) |*op, i| { + const op_js = try op.toJS(globalThis); + try ops_array.putIndex(globalThis, @intCast(i), op_js); + } + result_obj.put(globalThis, bun.String.static("operations"), ops_array); + + // Add cwd + result_obj.put( + globalThis, + bun.String.static("cwd"), + bun.String.init(this.cwd).toJS(globalThis), + ); + + // Add success + result_obj.put( + globalThis, + bun.String.static("success"), + jsc.JSValue.jsBoolean(this.success), + ); + + // Add error if present + if (this.error_message) |msg| { + result_obj.put( + globalThis, + bun.String.static("error"), + bun.String.init(msg).toJS(globalThis), + ); + } else { + result_obj.put(globalThis, bun.String.static("error"), .null); + } + + return result_obj; + } +}; + +/// TraceContext holds state during trace interpretation. +/// Note: The allocator is stored because it's needed throughout traversal for allocating +/// strings, paths, etc. The result is a pointer because it's created before the context +/// and operations are added to it during traversal. +pub const TraceContext = struct { + /// Allocator used for all allocations during tracing + allocator: Allocator, + /// Output: traced operations are added here during traversal + result: *TraceResult, + /// Current working directory during trace (unmanaged, uses this.allocator) + cwd: std.ArrayListUnmanaged(u8), + /// Shell environment for variable expansion + shell_env: EnvMap, + /// Exported environment (for subprocess) - borrowed pointer, not owned (do not deinit) + export_env: ?*EnvMap, + /// Whether export_env is owned by us (should be freed on deinit) + owns_export_env: bool, + /// Accumulated traced environment variables (snapshot for each operation) + traced_env: bun.StringHashMapUnmanaged([]const u8), + /// Whether the current operation has dynamic (non-statically-analyzable) values + current_dynamic: bool, + /// JS objects from template literal interpolation, indexed by position + jsobjs: []JSValue, + globalThis: *JSGlobalObject, + + pub fn init( + allocator: Allocator, + result: *TraceResult, + cwd: []const u8, + export_env: ?*EnvMap, + jsobjs: []JSValue, + globalThis: *JSGlobalObject, + ) TraceContext { + var ctx = TraceContext{ + .allocator = allocator, + .result = result, + .cwd = .{}, + .shell_env = EnvMap.init(allocator), + .export_env = export_env, + .owns_export_env = false, // We borrow it, don't own it + .traced_env = .{}, + .current_dynamic = false, + .jsobjs = jsobjs, + .globalThis = globalThis, + }; + bun.handleOom(ctx.cwd.appendSlice(allocator, cwd)); + return ctx; + } + + pub fn deinit(this: *TraceContext) void { + this.cwd.deinit(this.allocator); + this.shell_env.deinit(); + // export_env is borrowed, not owned - never free it + // Free traced_env + var iter = this.traced_env.iterator(); + while (iter.next()) |entry| { + this.allocator.free(entry.key_ptr.*); + this.allocator.free(entry.value_ptr.*); + } + this.traced_env.deinit(this.allocator); + } + + /// Set an environment variable in the traced env + pub fn setTracedEnv(this: *TraceContext, name: []const u8, value: []const u8) void { + // If key already exists, free the old value + if (this.traced_env.get(name)) |old_val| { + this.allocator.free(old_val); + // Update in place + const key = this.traced_env.getKey(name).?; + this.traced_env.put(this.allocator, key, this.allocator.dupe(u8, value) catch return) catch return; + } else { + // New key + const key_copy = this.allocator.dupe(u8, name) catch return; + const val_copy = this.allocator.dupe(u8, value) catch { + this.allocator.free(key_copy); + return; + }; + this.traced_env.put(this.allocator, key_copy, val_copy) catch { + this.allocator.free(key_copy); + this.allocator.free(val_copy); + return; + }; + } + } + + /// Create a snapshot of the current traced environment + pub fn snapshotEnv(this: *TraceContext) EnvSnapshot { + var snapshot = EnvSnapshot.init(this.allocator); + var iter = this.traced_env.iterator(); + while (iter.next()) |entry| { + const key_copy = this.allocator.dupe(u8, entry.key_ptr.*) catch continue; + const val_copy = this.allocator.dupe(u8, entry.value_ptr.*) catch { + this.allocator.free(key_copy); + continue; + }; + snapshot.vars.put(this.allocator, key_copy, val_copy) catch { + this.allocator.free(key_copy); + this.allocator.free(val_copy); + continue; + }; + } + return snapshot; + } + + pub fn cwdSlice(this: *const TraceContext) []const u8 { + return this.cwd.items; + } + + pub fn resolvePath(this: *TraceContext, path: []const u8) []const u8 { + if (ResolvePath.Platform.auto.isAbsolute(path)) { + return bun.handleOom(this.allocator.dupe(u8, path)); + } + // Join with cwd + const parts: []const []const u8 = &.{ this.cwdSlice(), path }; + const joined = ResolvePath.joinZ(parts, .auto); + return bun.handleOom(this.allocator.dupe(u8, joined[0..joined.len])); + } + + pub fn addOperation(this: *TraceContext, flags: u32, path: ?[]const u8, command: ?[]const u8) void { + this.addOperationFull(flags, path, command, .none, null); + } + + pub fn addOperationWithStream(this: *TraceContext, flags: u32, path: ?[]const u8, command: ?[]const u8, stream: Stream) void { + this.addOperationFull(flags, path, command, stream, null); + } + + pub fn addOperationWithArgs(this: *TraceContext, flags: u32, path: ?[]const u8, command: ?[]const u8, args: ?[]const []const u8) void { + this.addOperationFull(flags, path, command, .none, args); + } + + pub fn addOperationFull(this: *TraceContext, flags: u32, path: ?[]const u8, command: ?[]const u8, stream: Stream, args: ?[]const []const u8) void { + const resolved_path = if (path) |p| this.resolvePath(p) else null; + + // Duplicate args array + const duped_args: ?[]const []const u8 = if (args) |a| blk: { + const arr = this.allocator.alloc([]const u8, a.len) catch break :blk null; + for (a, 0..) |arg, i| { + arr[i] = this.allocator.dupe(u8, arg) catch { + // Free already allocated + for (arr[0..i]) |prev| this.allocator.free(prev); + this.allocator.free(arr); + break :blk null; + }; + } + break :blk arr; + } else null; + + // Snapshot the current environment + const env_snapshot = this.snapshotEnv(); + + // Capture dynamic flag and reset it + const is_dynamic = this.current_dynamic; + this.current_dynamic = false; + + this.result.addOperation(.{ + .flags = flags, + .path = resolved_path, + .command = if (command) |c| bun.handleOom(this.allocator.dupe(u8, c)) else null, + .cwd = bun.handleOom(this.allocator.dupe(u8, this.cwdSlice())), + .env = env_snapshot, + .stream = stream, + .args = duped_args, + .dynamic = is_dynamic, + }); + } + + pub fn getVar(this: *TraceContext, name: []const u8) ?[]const u8 { + const key = EnvStr.initSlice(name); + if (this.shell_env.get(key)) |v| { + return v.slice(); + } + if (this.export_env) |env| { + if (env.get(key)) |v| { + return v.slice(); + } + } + return null; + } + + pub fn changeCwd(this: *TraceContext, new_cwd: []const u8) void { + // Just update the context's cwd - don't add an operation + // (the caller is responsible for adding the CHDIR operation if needed) + if (ResolvePath.Platform.auto.isAbsolute(new_cwd)) { + this.cwd.clearRetainingCapacity(); + bun.handleOom(this.cwd.appendSlice(this.allocator, new_cwd)); + } else { + // Join with current cwd and normalize (handles .. and .) + const parts: []const []const u8 = &.{ this.cwdSlice(), new_cwd }; + const joined = ResolvePath.joinZ(parts, .auto); + this.cwd.clearRetainingCapacity(); + bun.handleOom(this.cwd.appendSlice(this.allocator, joined[0..joined.len])); + } + } +}; + +// ============================================================================= +// AST Walking Functions +// ============================================================================= + +pub fn traceScript(ctx: *TraceContext, script: *const ast.Script) void { + for (script.stmts) |*stmt| { + traceStmt(ctx, stmt); + } +} + +fn traceStmt(ctx: *TraceContext, stmt: *const ast.Stmt) void { + // Stmt is a struct with exprs field, not a union + for (stmt.exprs) |*expr| { + traceExpr(ctx, expr); + } +} + +fn traceExpr(ctx: *TraceContext, expr: *const ast.Expr) void { + switch (expr.*) { + .cmd => |cmd| traceCmd(ctx, cmd), + .assign => |assigns| { + for (assigns) |*assign| { + traceAssign(ctx, assign); + } + }, + .binary => |binary| traceBinary(ctx, binary), + .pipeline => |pipeline| tracePipeline(ctx, pipeline), + .subshell => |subshell| traceSubshell(ctx, &subshell.script), + .@"if" => |if_clause| traceIfClause(ctx, if_clause), + .condexpr => |condexpr| traceCondExpr(ctx, condexpr), + .async => |async_expr| traceExpr(ctx, async_expr), + } +} + +fn traceSubshell(ctx: *TraceContext, script: *const ast.Script) void { + // Save current cwd - subshell changes shouldn't affect parent + const saved_cwd = bun.handleOom(ctx.allocator.dupe(u8, ctx.cwdSlice())); + defer ctx.allocator.free(saved_cwd); + + traceScript(ctx, script); + + // Restore cwd after subshell + ctx.cwd.clearRetainingCapacity(); + bun.handleOom(ctx.cwd.appendSlice(ctx.allocator, saved_cwd)); +} + +fn traceAssign(ctx: *TraceContext, assign: *const ast.Assign) void { + // Expand the value + const value = expandAtom(ctx, &assign.value); + defer ctx.allocator.free(value); + + // Set the env var in traced env + ctx.setTracedEnv(assign.label, value); + + // Add an ENV operation (the env snapshot will include this new var) + ctx.addOperation(Permission.ENV, null, null); +} + +fn traceBinary(ctx: *TraceContext, binary: *const ast.Binary) void { + traceExpr(ctx, &binary.left); + traceExpr(ctx, &binary.right); +} + +fn tracePipeline(ctx: *TraceContext, pipeline: *const ast.Pipeline) void { + for (pipeline.items) |*item| { + tracePipelineItem(ctx, item); + } +} + +fn tracePipelineItem(ctx: *TraceContext, item: *const ast.PipelineItem) void { + switch (item.*) { + .cmd => |cmd| traceCmd(ctx, cmd), + .assigns => |assigns| { + for (assigns) |*assign| { + traceAssign(ctx, assign); + } + }, + .subshell => |subshell| traceSubshell(ctx, &subshell.script), + .@"if" => |if_clause| traceIfClause(ctx, if_clause), + .condexpr => |condexpr| traceCondExpr(ctx, condexpr), + } +} + +fn traceIfClause(ctx: *TraceContext, if_clause: *const ast.If) void { + // Trace the condition statements + for (if_clause.cond.slice()) |*stmt| { + traceStmt(ctx, stmt); + } + // Trace the then branch statements + for (if_clause.then.slice()) |*stmt| { + traceStmt(ctx, stmt); + } + // Trace the else parts + // else_parts is a SmolList of SmolList(Stmt, 1) + // Length 0 = no else, length 1 = just else, length 2n = elif/then pairs, length 2n+1 = elif/then pairs + else + for (if_clause.else_parts.slice()) |*part| { + for (part.slice()) |*stmt| { + traceStmt(ctx, stmt); + } + } +} + +fn traceCondExpr(ctx: *TraceContext, cond: *const ast.CondExpr) void { + const op = cond.op; + // File test operators (single argument) + const is_file_test = op == .@"-e" or op == .@"-f" or op == .@"-d" or + op == .@"-r" or op == .@"-w" or op == .@"-x" or + op == .@"-s" or op == .@"-L" or op == .@"-h" or + op == .@"-b" or op == .@"-c" or op == .@"-g" or + op == .@"-k" or op == .@"-p" or op == .@"-u" or + op == .@"-O" or op == .@"-G" or op == .@"-S" or + op == .@"-a" or op == .@"-N"; + + // File comparison operators (two arguments) + const is_file_comparison = op == .@"-ef" or op == .@"-nt" or op == .@"-ot"; + + if (is_file_test or is_file_comparison) { + // Expand all arguments and add read operations for file paths + for (cond.args.slice()) |*arg| { + const path = expandAtom(ctx, arg); + if (path.len > 0) { + ctx.addOperation(Permission.READ, path, null); + } + ctx.allocator.free(path); + } + } +} + +/// Information about a command's redirections +const RedirectInfo = struct { + /// Path for stdin redirection (if any) + stdin_path: ?[]const u8 = null, + /// Path for stdout redirection (if any) + stdout_path: ?[]const u8 = null, + /// Flags for stdout redirection + stdout_flags: u32 = 0, + /// Path for stderr redirection (if any) + stderr_path: ?[]const u8 = null, + /// Flags for stderr redirection + stderr_flags: u32 = 0, +}; + +fn traceCmd(ctx: *TraceContext, cmd: *const ast.Cmd) void { + // First, trace any assignments + for (cmd.assigns) |*assign| { + traceAssign(ctx, assign); + } + + // Expand the command name and arguments + if (cmd.name_and_args.len == 0) { + return; + } + + const cmd_name = expandAtom(ctx, &cmd.name_and_args[0]); + defer ctx.allocator.free(cmd_name); + + if (cmd_name.len == 0) { + return; + } + + // Get redirection info first + const redir = getRedirectInfo(ctx, cmd); + defer { + if (redir.stdin_path) |p| ctx.allocator.free(p); + if (redir.stdout_path) |p| ctx.allocator.free(p); + if (redir.stderr_path) |p| ctx.allocator.free(p); + } + + // Check for known commands (builtins) and map them to permissions + // Use stringToEnum directly to recognize all known commands, even if they're + // disabled as builtins on this platform (e.g., cat/cp on POSIX) + if (std.meta.stringToEnum(Interpreter.Builtin.Kind, cmd_name)) |builtin_kind| { + traceBuiltin(ctx, builtin_kind, cmd, &redir); + } else { + // External command - needs execute permission + traceExternalCommand(ctx, cmd_name, cmd, &redir); + } +} + +/// Expand command arguments and extract file paths (skipping flags). +/// Returns a list of expanded file paths. Caller owns the returned memory. +/// Handles brace expansion ({a,b}.txt) and glob expansion (*.txt). +fn extractFileArgs(ctx: *TraceContext, cmd: *const ast.Cmd) std.array_list.Managed([]const u8) { + var file_args = std.array_list.Managed([]const u8).init(ctx.allocator); + + for (cmd.name_and_args[1..]) |*arg| { + var expanded_list = expandAtomMultiple(ctx, arg); + defer expanded_list.deinit(); + + for (expanded_list.items) |expanded| { + if (expanded.len > 0 and expanded[0] != '-') { + // Keep this path - transfer ownership + bun.handleOom(file_args.append(expanded)); + } else { + ctx.allocator.free(expanded); + } + } + } + + // Expand glob patterns (e.g., *.txt -> file1.txt, file2.txt) + expandGlobs(ctx, &file_args); + + return file_args; +} + +/// Free a list of file args +fn freeFileArgs(ctx: *TraceContext, file_args: *std.array_list.Managed([]const u8)) void { + for (file_args.items) |path| { + ctx.allocator.free(path); + } + file_args.deinit(); +} + +/// Add redirections as operations with stream info +fn traceRedirections(ctx: *TraceContext, redir: *const RedirectInfo) void { + if (redir.stdin_path) |stdin| { + ctx.addOperationWithStream(Permission.READ, stdin, null, .stdin); + } + if (redir.stdout_path) |out| { + ctx.addOperationWithStream(redir.stdout_flags, out, null, .stdout); + } + if (redir.stderr_path) |err_path| { + ctx.addOperationWithStream(redir.stderr_flags, err_path, null, .stderr); + } +} + +fn traceBuiltin(ctx: *TraceContext, kind: Interpreter.Builtin.Kind, cmd: *const ast.Cmd, redir: *const RedirectInfo) void { + // Builtins run in-process, so they don't need EXECUTE permission on a binary. + // We only trace the file operations they perform. + + switch (kind) { + .cat => { + // cat reads files and writes to stdout (or redirect) + var file_args = extractFileArgs(ctx, cmd); + defer freeFileArgs(ctx, &file_args); + + for (file_args.items) |path| { + ctx.addOperation(Permission.READ, path, null); + } + traceRedirections(ctx, redir); + }, + .touch => { + // touch creates/modifies files + var file_args = extractFileArgs(ctx, cmd); + defer freeFileArgs(ctx, &file_args); + + for (file_args.items) |path| { + ctx.addOperation(Permission.CREATE, path, null); + } + }, + .mkdir => { + // mkdir creates directories + var file_args = extractFileArgs(ctx, cmd); + defer freeFileArgs(ctx, &file_args); + + for (file_args.items) |path| { + ctx.addOperation(Permission.MKDIR, path, null); + } + }, + .rm => { + // rm deletes files/directories + var file_args = extractFileArgs(ctx, cmd); + defer freeFileArgs(ctx, &file_args); + + for (file_args.items) |path| { + ctx.addOperation(Permission.DELETE, path, null); + } + }, + .mv => { + // mv moves files (read+delete source, create dest) + // Handles: mv src dest OR mv src1 src2 ... dest_dir/ + var file_args = extractFileArgs(ctx, cmd); + defer freeFileArgs(ctx, &file_args); + + if (file_args.items.len >= 2) { + const dest = file_args.items[file_args.items.len - 1]; + // All but the last arg are sources + for (file_args.items[0 .. file_args.items.len - 1]) |src| { + ctx.addOperation(Permission.READ | Permission.DELETE, src, null); + } + ctx.addOperation(Permission.CREATE, dest, null); + } else if (file_args.items.len == 1) { + // Just one arg - read it (mv will fail but we trace the access) + ctx.addOperation(Permission.READ | Permission.DELETE, file_args.items[0], null); + } + }, + .cp => { + // cp copies files (read source, create dest) + // Handles: cp src dest OR cp src1 src2 ... dest_dir/ + var file_args = extractFileArgs(ctx, cmd); + defer freeFileArgs(ctx, &file_args); + + if (file_args.items.len >= 2) { + const dest = file_args.items[file_args.items.len - 1]; + // All but the last arg are sources + for (file_args.items[0 .. file_args.items.len - 1]) |src| { + ctx.addOperation(Permission.READ, src, null); + } + ctx.addOperation(Permission.CREATE, dest, null); + } else if (file_args.items.len == 1) { + // Just one arg - read it (cp will fail but we trace the access) + ctx.addOperation(Permission.READ, file_args.items[0], null); + } + }, + .ls => { + // ls reads directory contents and writes to stdout (or redirect) + var file_args = extractFileArgs(ctx, cmd); + defer freeFileArgs(ctx, &file_args); + + if (file_args.items.len == 0) { + // ls with no args reads current directory + ctx.addOperation(Permission.READ, ".", null); + } else { + for (file_args.items) |path| { + ctx.addOperation(Permission.READ, path, null); + } + } + traceRedirections(ctx, redir); + }, + .cd => { + // cd changes directory - takes first non-flag arg + var file_args = extractFileArgs(ctx, cmd); + defer freeFileArgs(ctx, &file_args); + + if (file_args.items.len >= 1) { + ctx.addOperation(Permission.CHDIR, file_args.items[0], null); + // Actually update the context's cwd for subsequent commands + ctx.changeCwd(file_args.items[0]); + } + }, + .@"export" => { + // export sets environment variables + // Parse arguments like FOO=bar or just FOO + var file_args = extractFileArgs(ctx, cmd); + defer freeFileArgs(ctx, &file_args); + + for (file_args.items) |arg| { + // Look for = sign + if (std.mem.indexOfScalar(u8, arg, '=')) |eq_idx| { + const name = arg[0..eq_idx]; + const value = arg[eq_idx + 1 ..]; + ctx.setTracedEnv(name, value); + } else { + // Just exporting existing var - set to empty if not already set + if (ctx.traced_env.get(arg) == null) { + ctx.setTracedEnv(arg, ""); + } + } + } + // Add ENV operation after setting all vars + if (file_args.items.len > 0) { + ctx.addOperation(Permission.ENV, null, null); + } + }, + .echo, .pwd, .which, .yes, .seq, .dirname, .basename => { + // These only write to stdout (or redirect) - no file reads + traceRedirections(ctx, redir); + }, + .exit, .true, .false => { + // These don't access any files + }, + } +} + +fn traceExternalCommand(ctx: *TraceContext, cmd_name: []const u8, cmd: *const ast.Cmd, redir: *const RedirectInfo) void { + // Resolve the command path using which + // Get PATH from environment + const path_env = ctx.getVar("PATH") orelse "/usr/bin:/bin"; + var path_buf: bun.PathBuffer = undefined; + const resolved = which(&path_buf, path_env, ctx.cwdSlice(), cmd_name); + + // Collect arguments (skip the command name itself) + var args_list = std.array_list.Managed([]const u8).init(ctx.allocator); + defer args_list.deinit(); + + if (cmd.name_and_args.len > 1) { + for (cmd.name_and_args[1..]) |*arg| { + const expanded = expandAtom(ctx, arg); + args_list.append(expanded) catch {}; + } + } + + const args: ?[]const []const u8 = if (args_list.items.len > 0) args_list.items else null; + + // Record the command execution with args + if (resolved) |exe_path| { + ctx.addOperationWithArgs(Permission.EXECUTE, exe_path, cmd_name, args); + } else { + // Command not found, but still record the execute attempt + ctx.addOperationWithArgs(Permission.EXECUTE, null, cmd_name, args); + } + + // Free the expanded args (they were duped in addOperationWithArgs) + for (args_list.items) |arg| { + ctx.allocator.free(arg); + } + + // Handle stdin redirection + if (redir.stdin_path) |stdin| { + ctx.addOperationWithStream(Permission.READ, stdin, null, .stdin); + } + + // Handle stdout redirection + if (redir.stdout_path) |out| { + ctx.addOperationWithStream(redir.stdout_flags, out, null, .stdout); + } + + // Handle stderr redirection + if (redir.stderr_path) |err_path| { + ctx.addOperationWithStream(redir.stderr_flags, err_path, null, .stderr); + } +} + +fn getRedirectInfo(ctx: *TraceContext, cmd: *const ast.Cmd) RedirectInfo { + var info = RedirectInfo{}; + + if (cmd.redirect_file) |redirect| { + switch (redirect) { + .atom => |*atom| { + const path = expandAtom(ctx, atom); + if (path.len > 0) { + if (cmd.redirect.stdin) { + info.stdin_path = path; + } else { + const flags = if (cmd.redirect.append) Permission.APPEND else Permission.CREATE_TRUNC; + // Handle stdout and stderr separately + if (cmd.redirect.stdout and cmd.redirect.stderr) { + // &> or similar - both go to same file + info.stdout_path = path; + info.stdout_flags = flags; + // Also set stderr to same path (duplicate the path) + info.stderr_path = bun.handleOom(ctx.allocator.dupe(u8, path)); + info.stderr_flags = flags; + } else if (cmd.redirect.stdout) { + info.stdout_path = path; + info.stdout_flags = flags; + } else if (cmd.redirect.stderr) { + info.stderr_path = path; + info.stderr_flags = flags; + } else { + ctx.allocator.free(path); + } + } + } else { + ctx.allocator.free(path); + } + }, + .jsbuf => { + // JS buffer redirections don't involve file paths + }, + } + } + + return info; +} + +// ============================================================================= +// Expansion (simplified for tracing) +// ============================================================================= + +/// Expand an atom, potentially returning multiple strings due to brace expansion. +/// Returns a list of expanded strings. Caller owns the memory. +fn expandAtomMultiple(ctx: *TraceContext, atom: *const ast.Atom) std.array_list.Managed([]const u8) { + var result = std.array_list.Managed(u8).init(ctx.allocator); + var has_braces = false; + + switch (atom.*) { + .simple => |*simple| { + if (simple.* == .brace_begin) has_braces = true; + expandSimple(ctx, simple, &result); + }, + .compound => |compound| { + for (compound.atoms) |*simple| { + if (simple.* == .brace_begin) has_braces = true; + expandSimple(ctx, simple, &result); + } + }, + } + + const expanded_str = result.toOwnedSlice() catch ""; + + // If there are braces, expand them + if (has_braces and expanded_str.len > 0) { + const expanded = expandBraces(ctx, expanded_str); + ctx.allocator.free(expanded_str); + return expanded; + } + + // No braces - return single result + var out = std.array_list.Managed([]const u8).init(ctx.allocator); + if (expanded_str.len > 0) { + bun.handleOom(out.append(expanded_str)); + } else { + ctx.allocator.free(expanded_str); + } + return out; +} + +/// Expand brace patterns like {a,b,c} into multiple strings +fn expandBraces(ctx: *TraceContext, input: []const u8) std.array_list.Managed([]const u8) { + // Use the shared brace expansion helper + const unmanaged = Braces.expandBracesAlloc(input, ctx.allocator); + return .{ .items = unmanaged.items, .capacity = unmanaged.capacity, .allocator = ctx.allocator }; +} + +/// Expand glob patterns like *.txt into matching file paths +fn expandGlobs(ctx: *TraceContext, patterns: *std.array_list.Managed([]const u8)) void { + var i: usize = 0; + while (i < patterns.items.len) { + const pattern = patterns.items[i]; + + // Check if this pattern contains glob syntax + if (!bun.glob.detectGlobSyntax(pattern)) { + i += 1; + continue; + } + + // This pattern has glob syntax - expand it + var arena = std.heap.ArenaAllocator.init(ctx.allocator); + defer arena.deinit(); + + var walker: GlobWalker = .{}; + const init_result = walker.initWithCwd( + &arena, + pattern, + ctx.cwdSlice(), + false, // dot + true, // absolute (return absolute paths) + false, // follow_symlinks + false, // error_on_broken_symlinks + false, // only_files (include directories too) + ) catch { + i += 1; + continue; + }; + + switch (init_result) { + .err => { + i += 1; + continue; + }, + .result => {}, + } + + var iter: GlobWalker.Iterator = .{ .walker = &walker }; + const iter_init = iter.init() catch { + i += 1; + continue; + }; + switch (iter_init) { + .err => { + i += 1; + continue; + }, + .result => {}, + } + + // Collect all matched paths + var matched_paths = std.array_list.Managed([]const u8).init(ctx.allocator); + while (true) { + const next_result = iter.next() catch break; + switch (next_result) { + .err => break, + .result => |maybe_path| { + if (maybe_path) |path| { + // Dupe the path since it's owned by the arena + const duped = ctx.allocator.dupe(u8, path) catch break; + matched_paths.append(duped) catch { + ctx.allocator.free(duped); + break; + }; + } else { + // No more matches + break; + } + }, + } + } + + // If we found matches, replace the pattern with matched paths + if (matched_paths.items.len > 0) { + // Free the original pattern + ctx.allocator.free(pattern); + + // Remove the pattern from the list + _ = patterns.orderedRemove(i); + + // Insert all matched paths at position i + for (matched_paths.items) |matched_path| { + patterns.insert(i, matched_path) catch { + ctx.allocator.free(matched_path); + continue; + }; + i += 1; + } + matched_paths.deinit(); + } else { + // No matches - keep original pattern + matched_paths.deinit(); + i += 1; + } + } +} + +/// Expand an atom to a single string (for backward compatibility). +/// For brace expansions, only returns the first result. +fn expandAtom(ctx: *TraceContext, atom: *const ast.Atom) []const u8 { + var results = expandAtomMultiple(ctx, atom); + defer { + // Free all but the first + if (results.items.len > 1) { + for (results.items[1..]) |s| { + ctx.allocator.free(s); + } + } + results.deinit(); + } + + if (results.items.len > 0) { + return results.items[0]; + } + return bun.handleOom(ctx.allocator.dupe(u8, "")); +} + +fn expandSimple(ctx: *TraceContext, simple: *const ast.SimpleAtom, out: *std.array_list.Managed(u8)) void { + switch (simple.*) { + .Text => |text| { + bun.handleOom(out.appendSlice(text)); + }, + .Var => |varname| { + if (ctx.getVar(varname)) |val| { + bun.handleOom(out.appendSlice(val)); + } + }, + .VarArgv => { + // Special variables like $1, $@, etc. depend on runtime args + ctx.current_dynamic = true; + }, + .cmd_subst => { + // Command substitutions can't be statically analyzed + // Mark as dynamic and skip the actual substitution + ctx.current_dynamic = true; + }, + .asterisk => { + // Glob pattern - output as literal for tracing + bun.handleOom(out.appendSlice("*")); + }, + .double_asterisk => { + // Glob pattern - output as literal for tracing + bun.handleOom(out.appendSlice("**")); + }, + .brace_begin => { + bun.handleOom(out.appendSlice("{")); + }, + .brace_end => { + bun.handleOom(out.appendSlice("}")); + }, + .comma => { + bun.handleOom(out.appendSlice(",")); + }, + .tilde => { + // Expand tilde to home directory + if (ctx.getVar("HOME")) |home| { + bun.handleOom(out.appendSlice(home)); + } else { + bun.handleOom(out.appendSlice("~")); + } + }, + } +} + +// ============================================================================= +// Public API +// ============================================================================= + +/// Trace a shell script and return the trace result +pub fn trace( + allocator: Allocator, + shargs: *ShellArgs, + jsobjs: []JSValue, + export_env: ?*EnvMap, + cwd: ?[]const u8, + globalThis: *JSGlobalObject, +) TraceResult { + // Get current working directory + var cwd_buf: bun.PathBuffer = undefined; + const current_cwd = cwd orelse brk: { + const result = bun.sys.getcwdZ(&cwd_buf); + switch (result) { + .result => |c| break :brk c[0..c.len], + .err => break :brk "/", + } + }; + + var result = TraceResult.init(allocator, current_cwd); + var ctx = TraceContext.init(allocator, &result, current_cwd, export_env, jsobjs, globalThis); + defer ctx.deinit(); + + traceScript(&ctx, &shargs.script_ast); + + return result; +} + +/// JavaScript-callable function to trace a shell script +pub fn traceShellScript(globalThis: *JSGlobalObject, callframe: *jsc.CallFrame) bun.JSError!JSValue { + const allocator = bun.default_allocator; + const parsed_shell_script_js = callframe.argumentsAsArray(1)[0]; + if (parsed_shell_script_js.isUndefined()) { + return globalThis.throw("trace: expected a ParsedShellScript", .{}); + } + + const parsed_shell_script = jsc.Codegen.JSParsedShellScript.fromJS(parsed_shell_script_js) orelse { + return globalThis.throw("trace: expected a ParsedShellScript", .{}); + }; + + if (parsed_shell_script.args == null) { + return globalThis.throw("trace: shell args is null", .{}); + } + + const shargs = parsed_shell_script.args.?; + const jsobjs = parsed_shell_script.jsobjs.items; + + // Get cwd from parsed script if set + var cwd_utf8: ?bun.ZigString.Slice = null; + defer if (cwd_utf8) |*utf8| utf8.deinit(); + + const cwd_slice: ?[]const u8 = if (parsed_shell_script.cwd) |c| blk: { + cwd_utf8 = c.toUTF8(bun.default_allocator); + break :blk cwd_utf8.?.slice(); + } else null; + + var result = trace( + allocator, + shargs, + jsobjs, + if (parsed_shell_script.export_env != null) &parsed_shell_script.export_env.? else null, + cwd_slice, + globalThis, + ); + defer result.deinit(); + + return result.toJS(globalThis); +} + +const std = @import("std"); +const Allocator = std.mem.Allocator; + +const bun = @import("bun"); +const ResolvePath = bun.path; +const which = bun.which; +const GlobWalker = bun.glob.BunGlobWalker; + +const jsc = bun.jsc; +const JSGlobalObject = jsc.JSGlobalObject; +const JSValue = jsc.JSValue; + +const shell = bun.shell; +const EnvMap = shell.EnvMap; +const EnvStr = shell.EnvStr; +const Interpreter = shell.Interpreter; +const ast = shell.AST; + +const Braces = shell.interpret.Braces; +const ShellArgs = shell.interpret.ShellArgs; diff --git a/src/shell/braces.zig b/src/shell/braces.zig index 3f9ef5cf6c..832adab71a 100644 --- a/src/shell/braces.zig +++ b/src/shell/braces.zig @@ -723,6 +723,68 @@ test Lexer { } } +/// High-level helper that expands brace patterns in a string. +/// Returns a list of expanded strings. Caller owns the returned memory. +/// On error or if no expansion is needed, returns the input as a single-element list. +pub fn expandBracesAlloc(input: []const u8, allocator: Allocator) std.ArrayListUnmanaged([]const u8) { + var out: std.ArrayListUnmanaged([]const u8) = .{}; + + // Use arena for temporary tokenization + var arena = std.heap.ArenaAllocator.init(allocator); + defer arena.deinit(); + const arena_alloc = arena.allocator(); + + // Tokenize - use appropriate lexer based on content + const lexer_output = if (bun.strings.isAllASCII(input)) + Lexer.tokenize(arena_alloc, input) catch { + out.append(allocator, allocator.dupe(u8, input) catch return out) catch {}; + return out; + } + else + NewLexer(.wtf8).tokenize(arena_alloc, input) catch { + out.append(allocator, allocator.dupe(u8, input) catch return out) catch {}; + return out; + }; + + const expansion_count = calculateExpandedAmount(lexer_output.tokens.items[0..]); + if (expansion_count == 0) { + out.append(allocator, allocator.dupe(u8, input) catch return out) catch {}; + return out; + } + + // Allocate expanded strings + const expanded_strings = arena_alloc.alloc(std.array_list.Managed(u8), expansion_count) catch { + out.append(allocator, allocator.dupe(u8, input) catch return out) catch {}; + return out; + }; + + for (0..expansion_count) |i| { + expanded_strings[i] = std.array_list.Managed(u8).init(allocator); + } + + // Perform brace expansion + expand( + arena_alloc, + lexer_output.tokens.items[0..], + expanded_strings, + lexer_output.contains_nested, + ) catch { + for (expanded_strings) |*s| s.deinit(); + out.append(allocator, allocator.dupe(u8, input) catch return out) catch {}; + return out; + }; + + // Collect results + for (expanded_strings) |*s| { + const slice = s.toOwnedSlice() catch ""; + if (slice.len > 0) { + out.append(allocator, slice) catch {}; + } + } + + return out; +} + const SmolStr = @import("../string.zig").SmolStr; const Encoding = @import("./shell.zig").StringEncoding; diff --git a/src/shell/shell.zig b/src/shell/shell.zig index 92bf54c9cb..83e7209485 100644 --- a/src/shell/shell.zig +++ b/src/shell/shell.zig @@ -2,6 +2,7 @@ pub const interpret = @import("./interpreter.zig"); pub const subproc = @import("./subproc.zig"); pub const AllocScope = @import("./AllocScope.zig"); +pub const TraceInterpreter = @import("./TraceInterpreter.zig"); pub const EnvMap = interpret.EnvMap; pub const EnvStr = interpret.EnvStr; diff --git a/test/js/bun/shell/trace.test.ts b/test/js/bun/shell/trace.test.ts new file mode 100644 index 0000000000..41808088be --- /dev/null +++ b/test/js/bun/shell/trace.test.ts @@ -0,0 +1,417 @@ +import { $ } from "bun"; +import { describe, expect, test } from "bun:test"; +import { tempDir } from "harness"; + +// Normalize path separators for cross-platform tests +const normalizePath = (p: string) => p.replaceAll("\\", "/"); + +// Permission flags (octal) - mirrors the Zig constants +const Permission = { + O_RDONLY: 0o0, + O_WRONLY: 0o1, + O_RDWR: 0o2, + O_CREAT: 0o100, + O_EXCL: 0o200, + O_TRUNC: 0o1000, + O_APPEND: 0o2000, + X_OK: 0o100000, + DELETE: 0o200000, + MKDIR: 0o400000, + CHDIR: 0o1000000, + ENV: 0o2000000, +} as const; + +// Convenience combinations +const READ = Permission.O_RDONLY; +const WRITE = Permission.O_WRONLY; +const CREATE = Permission.O_CREAT | Permission.O_WRONLY; +const CREATE_TRUNC = Permission.O_CREAT | Permission.O_TRUNC | Permission.O_WRONLY; +const APPEND = Permission.O_APPEND | Permission.O_WRONLY; +const EXECUTE = Permission.X_OK; + +describe("Bun.$.trace", () => { + test("returns trace result object", () => { + const result = $.trace`echo hello`; + expect(result).toHaveProperty("operations"); + expect(result).toHaveProperty("cwd"); + expect(result).toHaveProperty("success"); + expect(result).toHaveProperty("error"); + expect(result.success).toBe(true); + expect(result.error).toBeNull(); + expect(Array.isArray(result.operations)).toBe(true); + }); + + test("traces echo command (builtin, no file access)", () => { + const result = $.trace`echo hello world`; + expect(result.success).toBe(true); + + // echo is a builtin that runs in-process - no file access, no operations + // It just writes to stdout (terminal) which doesn't require any permissions + expect(result.operations.length).toBe(0); + }); + + test("traces cat command with file read", () => { + const result = $.trace`cat /tmp/test.txt`; + expect(result.success).toBe(true); + + // cat is a builtin - it reads files but runs in-process (no EXECUTE) + const readOps = result.operations.filter(op => op.flags === READ && op.path?.endsWith("test.txt")); + expect(readOps.length).toBe(1); + expect(normalizePath(readOps[0].path!)).toBe("/tmp/test.txt"); + }); + + test("traces rm command with delete permission", () => { + const result = $.trace`rm /tmp/to-delete.txt`; + expect(result.success).toBe(true); + + // Should have delete for the file + const deleteOps = result.operations.filter(op => op.flags === Permission.DELETE); + expect(deleteOps.length).toBe(1); + expect(normalizePath(deleteOps[0].path!)).toBe("/tmp/to-delete.txt"); + }); + + test("traces mkdir command", () => { + const result = $.trace`mkdir /tmp/newdir`; + expect(result.success).toBe(true); + + // Should have mkdir permission + const mkdirOps = result.operations.filter(op => op.flags === Permission.MKDIR); + expect(mkdirOps.length).toBe(1); + expect(normalizePath(mkdirOps[0].path!)).toBe("/tmp/newdir"); + }); + + test("traces touch command with create permission", () => { + const result = $.trace`touch /tmp/newfile.txt`; + expect(result.success).toBe(true); + + // Should have create permission + const createOps = result.operations.filter(op => op.flags === CREATE); + expect(createOps.length).toBe(1); + expect(normalizePath(createOps[0].path!)).toBe("/tmp/newfile.txt"); + }); + + test("traces cp command with read and write", () => { + const result = $.trace`cp /tmp/src.txt /tmp/dst.txt`; + expect(result.success).toBe(true); + + // Should have read for source + const readOps = result.operations.filter(op => op.flags === READ && op.path?.endsWith("src.txt")); + expect(readOps.length).toBe(1); + + // Should have create for destination + const writeOps = result.operations.filter(op => op.flags === CREATE && op.path?.endsWith("dst.txt")); + expect(writeOps.length).toBe(1); + }); + + test("traces mv command with read, delete, and write", () => { + const result = $.trace`mv /tmp/old.txt /tmp/new.txt`; + expect(result.success).toBe(true); + + // Should have read+delete for source (combined in one operation) + const srcOps = result.operations.filter( + op => op.flags === (READ | Permission.DELETE) && op.path?.endsWith("old.txt"), + ); + expect(srcOps.length).toBe(1); + + // Should have create for destination + const dstOps = result.operations.filter(op => op.flags === CREATE && op.path?.endsWith("new.txt")); + expect(dstOps.length).toBe(1); + }); + + test("traces cd command with chdir permission", () => { + const result = $.trace`cd /tmp`; + expect(result.success).toBe(true); + + const chdirOps = result.operations.filter(op => op.flags === Permission.CHDIR); + expect(chdirOps.length).toBe(1); + expect(normalizePath(chdirOps[0].path!)).toBe("/tmp"); + }); + + test("traces environment variable assignments with accumulated env", () => { + const result = $.trace`FOO=1 BAR=2 echo test`; + expect(result.success).toBe(true); + + const envOps = result.operations.filter(op => op.flags === Permission.ENV); + expect(envOps.length).toBe(2); + // First op has FOO + expect(envOps[0].env).toEqual({ FOO: "1" }); + // Second op has both FOO and BAR + expect(envOps[1].env?.FOO).toBe("1"); + expect(envOps[1].env?.BAR).toBe("2"); + }); + + test("traces export with env values", () => { + const result = $.trace`export FOO=hello BAR=world`; + expect(result.success).toBe(true); + + const envOps = result.operations.filter(op => op.flags === Permission.ENV); + expect(envOps.length).toBe(1); + expect(envOps[0].env?.FOO).toBe("hello"); + expect(envOps[0].env?.BAR).toBe("world"); + }); + + test("traces output redirection combined with command", () => { + const result = $.trace`echo hello > /tmp/output.txt`; + expect(result.success).toBe(true); + + // echo is a builtin - redirect creates the output file (CREATE_TRUNC, no EXECUTE) + const redirectOps = result.operations.filter(op => op.flags === CREATE_TRUNC && op.path?.endsWith("output.txt")); + expect(redirectOps.length).toBe(1); + }); + + test("traces append redirection combined with command", () => { + const result = $.trace`echo hello >> /tmp/append.txt`; + expect(result.success).toBe(true); + + // echo is a builtin - append redirect opens file for appending (no EXECUTE) + const appendOps = result.operations.filter(op => op.flags === APPEND && op.path?.endsWith("append.txt")); + expect(appendOps.length).toBe(1); + }); + + test("traces input redirection with read and stdin stream", () => { + const result = $.trace`cat < /tmp/input.txt`; + expect(result.success).toBe(true); + + // Should have read for input file with stdin stream marker + const stdinOps = result.operations.filter( + op => op.flags === READ && op.path?.endsWith("input.txt") && op.stream === "stdin", + ); + expect(stdinOps.length).toBe(1); + }); + + test("traces stderr redirection with stream marker", () => { + const result = $.trace`cat /nonexistent 2> /tmp/err.txt`; + expect(result.success).toBe(true); + + // Should have stderr stream for error redirect + const stderrOps = result.operations.filter(op => op.stream === "stderr" && op.path?.endsWith("err.txt")); + expect(stderrOps.length).toBe(1); + expect(stderrOps[0].flags).toBe(CREATE_TRUNC); + }); + + test("stdout redirect has stream marker", () => { + const result = $.trace`echo hello > /tmp/out.txt`; + expect(result.success).toBe(true); + + const stdoutOps = result.operations.filter(op => op.stream === "stdout"); + expect(stdoutOps.length).toBe(1); + expect(normalizePath(stdoutOps[0].path!)).toBe("/tmp/out.txt"); + }); + + test("traces export command with env permission", () => { + const result = $.trace`export FOO=bar`; + expect(result.success).toBe(true); + + const envOps = result.operations.filter(op => op.flags === Permission.ENV); + expect(envOps.length).toBeGreaterThan(0); + }); + + test("traces variable assignment with env permission", () => { + const result = $.trace`FOO=bar echo $FOO`; + expect(result.success).toBe(true); + + const envOps = result.operations.filter(op => op.flags === Permission.ENV); + expect(envOps.length).toBeGreaterThan(0); + }); + + test("traces pipeline", () => { + const result = $.trace`cat /tmp/file.txt | grep pattern`; + expect(result.success).toBe(true); + + // cat is a builtin - reads file (no EXECUTE, no command field) + const readOps = result.operations.filter(op => op.flags === READ && op.path?.endsWith("file.txt")); + expect(readOps.length).toBe(1); + + // grep is external, should have execute permission and command field + const grepOps = result.operations.filter(op => op.command === "grep" && (op.flags & EXECUTE) !== 0); + expect(grepOps.length).toBe(1); + }); + + test("traces ls with directory read", () => { + const result = $.trace`ls /tmp`; + expect(result.success).toBe(true); + + const readOps = result.operations.filter(op => op.flags === READ && normalizePath(op.path || "") === "/tmp"); + expect(readOps.length).toBe(1); + }); + + test("traces ls without args (current dir)", () => { + const result = $.trace`ls`; + expect(result.success).toBe(true); + + // Should read current directory (.) + const readOps = result.operations.filter(op => op.flags === READ); + expect(readOps.length).toBe(1); + }); + + test("includes cwd in result", () => { + const result = $.trace`echo test`; + expect(result.cwd).toBeTruthy(); + expect(typeof result.cwd).toBe("string"); + }); + + test("includes cwd in each operation", () => { + const result = $.trace`cat /tmp/test.txt`; + for (const op of result.operations) { + expect(op.cwd).toBeTruthy(); + expect(typeof op.cwd).toBe("string"); + } + }); + + test("handles template literal interpolation", () => { + const filename = "test.txt"; + const result = $.trace`cat /tmp/${filename}`; + expect(result.success).toBe(true); + + const readOps = result.operations.filter(op => op.flags === READ && op.path?.endsWith("test.txt")); + expect(readOps.length).toBe(1); + }); + + test("does not actually execute commands", () => { + // This would fail if it actually ran, since the file doesn't exist + const result = $.trace`cat /nonexistent/path/that/does/not/exist.txt`; + expect(result.success).toBe(true); + expect(result.operations.length).toBeGreaterThan(0); + }); + + test("external command resolves path when available", () => { + // Use a cross-platform external command + const cmd = process.platform === "win32" ? "cmd" : "/bin/ls"; + const result = $.trace`${cmd} --version`; + expect(result.success).toBe(true); + + const execOps = result.operations.filter(op => op.flags === EXECUTE); + expect(execOps.length).toBeGreaterThan(0); + // Command name should be captured + expect(execOps[0].command).toBe(cmd); + }); + + test("external commands include args array", () => { + const result = $.trace`grep -r 'pattern' src/`; + expect(result.success).toBe(true); + + const execOps = result.operations.filter(op => op.flags === EXECUTE); + expect(execOps.length).toBe(1); + expect(execOps[0].command).toBe("grep"); + expect(execOps[0].args).toEqual(["-r", "pattern", "src/"]); + }); + + test("pipeline commands each have their own args", () => { + const result = $.trace`git diff HEAD^ -- src/ | head -100`; + expect(result.success).toBe(true); + + const execOps = result.operations.filter(op => op.flags === EXECUTE); + expect(execOps.length).toBe(2); + + expect(execOps[0].command).toBe("git"); + expect(execOps[0].args).toEqual(["diff", "HEAD^", "--", "src/"]); + + expect(execOps[1].command).toBe("head"); + expect(execOps[1].args).toEqual(["-100"]); + }); + + test("builtins do not have args (tracked as file operations)", () => { + const result = $.trace`cat file1.txt file2.txt`; + expect(result.success).toBe(true); + + // Builtins track files, not args + const readOps = result.operations.filter(op => op.flags === READ); + expect(readOps.length).toBe(2); + expect(readOps[0].args).toBeUndefined(); + expect(readOps[1].args).toBeUndefined(); + }); + + test("traces && (and) operator", () => { + const result = $.trace`cat /tmp/a.txt && cat /tmp/b.txt`; + expect(result.success).toBe(true); + + // Both commands should be traced + const readOps = result.operations.filter(op => op.flags === READ); + expect(readOps.length).toBe(2); + expect(normalizePath(readOps[0].path!)).toBe("/tmp/a.txt"); + expect(normalizePath(readOps[1].path!)).toBe("/tmp/b.txt"); + }); + + test("traces || (or) operator", () => { + const result = $.trace`cat /tmp/a.txt || cat /tmp/b.txt`; + expect(result.success).toBe(true); + + // Both commands should be traced + const readOps = result.operations.filter(op => op.flags === READ); + expect(readOps.length).toBe(2); + }); + + test("traces subshell with cwd isolation", () => { + const result = $.trace`(cd /tmp && ls) && ls`; + expect(result.success).toBe(true); + + // Should have: CHDIR /tmp, READ /tmp (inside subshell), READ . (outside subshell) + const chdirOps = result.operations.filter(op => op.flags === Permission.CHDIR); + expect(chdirOps.length).toBe(1); + expect(normalizePath(chdirOps[0].path!)).toBe("/tmp"); + + const readOps = result.operations.filter(op => op.flags === READ); + expect(readOps.length).toBe(2); + // First ls inside subshell should see /tmp + expect(normalizePath(readOps[0].cwd!)).toBe("/tmp"); + // Second ls outside subshell should see original cwd (subshell cwd is restored) + expect(normalizePath(readOps[1].cwd!)).not.toBe("/tmp"); + }); + + test("cd updates cwd for subsequent commands", () => { + const result = $.trace`cd /tmp && ls`; + expect(result.success).toBe(true); + + const readOps = result.operations.filter(op => op.flags === READ); + expect(readOps.length).toBe(1); + expect(normalizePath(readOps[0].cwd!)).toBe("/tmp"); + expect(normalizePath(readOps[0].path!)).toBe("/tmp"); // ls reads cwd + }); + + test("expands brace patterns", () => { + const result = $.trace`cat /tmp/{a,b,c}.txt`; + expect(result.success).toBe(true); + + const readOps = result.operations.filter(op => op.flags === READ); + expect(readOps.length).toBe(3); + expect(normalizePath(readOps[0].path!)).toBe("/tmp/a.txt"); + expect(normalizePath(readOps[1].path!)).toBe("/tmp/b.txt"); + expect(normalizePath(readOps[2].path!)).toBe("/tmp/c.txt"); + }); + + test("expands tilde to home directory", () => { + const result = $.trace`cat ~/.config/test.txt`; + expect(result.success).toBe(true); + + const readOps = result.operations.filter(op => op.flags === READ); + expect(readOps.length).toBe(1); + expect(readOps[0].path).not.toContain("~"); + // Home directory path varies by platform + if (process.platform === "win32") { + // Windows uses USERPROFILE which expands to something like C:\Users\username + expect(readOps[0].path).toMatch(/\.config[/\\]test\.txt$/); + } else { + expect(readOps[0].path).toContain(".config/test.txt"); + } + }); + + test("expands glob patterns to matching files", () => { + // Create test files for glob expansion using tempDir helper + const { join } = require("path"); + using dir = tempDir("trace-glob-test", { + "a.txt": "", + "b.txt": "", + "c.txt": "", + }); + const testDir = String(dir); + + const result = $.trace`cat ${testDir}/*.txt`; + expect(result.success).toBe(true); + + const readOps = result.operations.filter(op => op.flags === READ); + expect(readOps.length).toBe(3); + const paths = readOps.map(op => normalizePath(op.path!)).sort(); + const expected = [join(testDir, "a.txt"), join(testDir, "b.txt"), join(testDir, "c.txt")].map(normalizePath); + expect(paths).toEqual(expected); + }); +}); From 37fc8e99f7eefffac72188fe7fd4a533cc2cba19 Mon Sep 17 00:00:00 2001 From: robobun Date: Sun, 28 Dec 2025 17:58:24 -0800 Subject: [PATCH 210/212] Harden WebSocket client decompression (#25724) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Add maximum decompressed message size limit to WebSocket client deflate handling - Add test coverage for decompression limits ## Test plan - Run `bun test test/js/web/websocket/websocket-permessage-deflate-edge-cases.test.ts` šŸ¤– Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Bot Co-authored-by: Claude --- src/http/websocket_client.zig | 1 + .../websocket_client/WebSocketDeflate.zig | 14 +- ...cket-permessage-deflate-edge-cases.test.ts | 135 +++++++++++++++++- 3 files changed, 148 insertions(+), 2 deletions(-) diff --git a/src/http/websocket_client.zig b/src/http/websocket_client.zig index 5845156238..45e19a3a38 100644 --- a/src/http/websocket_client.zig +++ b/src/http/websocket_client.zig @@ -234,6 +234,7 @@ pub fn NewWebSocketClient(comptime ssl: bool) type { deflate.decompress(data_, &decompressed) catch |err| { const error_code = switch (err) { error.InflateFailed => ErrorCode.invalid_compressed_data, + error.TooLarge => ErrorCode.message_too_big, error.OutOfMemory => ErrorCode.failed_to_allocate_memory, }; this.terminate(error_code); diff --git a/src/http/websocket_client/WebSocketDeflate.zig b/src/http/websocket_client/WebSocketDeflate.zig index d6f5acef89..935721589a 100644 --- a/src/http/websocket_client/WebSocketDeflate.zig +++ b/src/http/websocket_client/WebSocketDeflate.zig @@ -76,6 +76,9 @@ const Z_DEFAULT_MEM_LEVEL = 8; // Buffer size for compression/decompression operations const COMPRESSION_BUFFER_SIZE = 4096; +// Maximum decompressed message size (128 MB) +const MAX_DECOMPRESSED_SIZE: usize = 128 * 1024 * 1024; + // DEFLATE trailer bytes added by Z_SYNC_FLUSH const DEFLATE_TRAILER = [_]u8{ 0x00, 0x00, 0xff, 0xff }; @@ -136,13 +139,17 @@ fn canUseLibDeflate(len: usize) bool { return len < RareData.stack_buffer_size; } -pub fn decompress(self: *PerMessageDeflate, in_buf: []const u8, out: *std.array_list.Managed(u8)) error{ InflateFailed, OutOfMemory }!void { +pub fn decompress(self: *PerMessageDeflate, in_buf: []const u8, out: *std.array_list.Managed(u8)) error{ InflateFailed, OutOfMemory, TooLarge }!void { + const initial_len = out.items.len; // First we try with libdeflate, which is both faster and doesn't need the trailing deflate bytes if (canUseLibDeflate(in_buf.len)) { const result = self.rare_data.decompressor().deflate(in_buf, out.unusedCapacitySlice()); if (result.status == .success) { out.items.len += result.written; + if (out.items.len - initial_len > MAX_DECOMPRESSED_SIZE) { + return error.TooLarge; + } return; } } @@ -163,6 +170,11 @@ pub fn decompress(self: *PerMessageDeflate, in_buf: []const u8, out: *std.array_ const res = zlib.inflate(&self.decompress_stream, zlib.FlushValue.NoFlush); out.items.len += out.unusedCapacitySlice().len - self.decompress_stream.avail_out; + // Check for decompression bomb + if (out.items.len - initial_len > MAX_DECOMPRESSED_SIZE) { + return error.TooLarge; + } + if (res == .StreamEnd) { break; } diff --git a/test/js/web/websocket/websocket-permessage-deflate-edge-cases.test.ts b/test/js/web/websocket/websocket-permessage-deflate-edge-cases.test.ts index 934f2f0e3b..37a718e034 100644 --- a/test/js/web/websocket/websocket-permessage-deflate-edge-cases.test.ts +++ b/test/js/web/websocket/websocket-permessage-deflate-edge-cases.test.ts @@ -1,5 +1,8 @@ import { serve } from "bun"; -import { expect, test } from "bun:test"; +import { expect, setDefaultTimeout, test } from "bun:test"; + +// The decompression bomb test needs extra time to compress 150MB of test data +setDefaultTimeout(30_000); // Test compressed continuation frames test("WebSocket client handles compressed continuation frames correctly", async () => { @@ -198,3 +201,133 @@ test("WebSocket client handles compression errors gracefully", async () => { client.close(); server.stop(); }); + +// Test that decompression is limited to prevent decompression bombs +test("WebSocket client rejects decompression bombs", async () => { + const net = await import("net"); + const zlib = await import("zlib"); + const crypto = await import("crypto"); + + // Create a raw TCP server that speaks WebSocket protocol + const tcpServer = net.createServer(); + + const serverReady = new Promise(resolve => { + tcpServer.listen(0, () => { + const addr = tcpServer.address(); + resolve(typeof addr === "object" && addr ? addr.port : 0); + }); + }); + + const port = await serverReady; + + tcpServer.on("connection", socket => { + let buffer = Buffer.alloc(0); + + socket.on("data", data => { + buffer = Buffer.concat([buffer, data]); + + // Look for end of HTTP headers + const headerEnd = buffer.indexOf("\r\n\r\n"); + if (headerEnd === -1) return; + + const headers = buffer.slice(0, headerEnd).toString(); + + // Extract Sec-WebSocket-Key + const keyMatch = headers.match(/Sec-WebSocket-Key: ([A-Za-z0-9+/=]+)/i); + if (!keyMatch) { + socket.end(); + return; + } + + const key = keyMatch[1]; + const acceptKey = crypto + .createHash("sha1") + .update(key + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11") + .digest("base64"); + + // Send WebSocket upgrade response with permessage-deflate + socket.write( + "HTTP/1.1 101 Switching Protocols\r\n" + + "Upgrade: websocket\r\n" + + "Connection: Upgrade\r\n" + + `Sec-WebSocket-Accept: ${acceptKey}\r\n` + + "Sec-WebSocket-Extensions: permessage-deflate; server_no_context_takeover; client_no_context_takeover\r\n" + + "\r\n", + ); + + // Create a decompression bomb: 150MB of zeros (exceeds the 128MB limit) + const uncompressedSize = 150 * 1024 * 1024; + const payload = Buffer.alloc(uncompressedSize, 0); + + // Compress with raw deflate (no header, no trailing bytes that permessage-deflate removes) + const compressed = zlib.deflateRawSync(payload, { level: 9 }); + + // Build WebSocket frame (binary, FIN=1, RSV1=1 for compression) + // Frame format: FIN(1) RSV1(1) RSV2(0) RSV3(0) Opcode(4) Mask(1) PayloadLen(7) [ExtendedLen] [MaskKey] Payload + const frameHeader: number[] = []; + + // First byte: FIN=1, RSV1=1 (compressed), RSV2=0, RSV3=0, Opcode=2 (binary) + frameHeader.push(0b11000010); + + // Second byte: Mask=0 (server to client), payload length + if (compressed.length < 126) { + frameHeader.push(compressed.length); + } else if (compressed.length < 65536) { + frameHeader.push(126); + frameHeader.push((compressed.length >> 8) & 0xff); + frameHeader.push(compressed.length & 0xff); + } else { + frameHeader.push(127); + // 64-bit length (we only need lower 32 bits for this test) + frameHeader.push(0, 0, 0, 0); + frameHeader.push((compressed.length >> 24) & 0xff); + frameHeader.push((compressed.length >> 16) & 0xff); + frameHeader.push((compressed.length >> 8) & 0xff); + frameHeader.push(compressed.length & 0xff); + } + + const frame = Buffer.concat([Buffer.from(frameHeader), compressed]); + socket.write(frame); + }); + }); + + let client: WebSocket | null = null; + let messageReceived = false; + + try { + // Connect with Bun's WebSocket client + client = new WebSocket(`ws://localhost:${port}`); + + const result = await new Promise<{ code: number; reason: string }>(resolve => { + client!.onopen = () => { + // Connection opened, waiting for the bomb to be sent + }; + + client!.onmessage = () => { + // Should NOT receive the message - it should be rejected + messageReceived = true; + }; + + client!.onerror = () => { + // Error is expected + }; + + client!.onclose = event => { + resolve({ + code: messageReceived ? -1 : event.code, + reason: messageReceived ? "Message was received but should have been rejected" : event.reason, + }); + }; + }); + + // The connection should be closed with code 1009 (Message Too Big) + expect(result.code).toBe(1009); + expect(result.reason).toBe("Message too big"); + } finally { + // Ensure cleanup happens even on test failure/timeout + if (client && client.readyState !== WebSocket.CLOSED) { + client.close(); + } + await new Promise(resolve => tcpServer.close(() => resolve())); + } +}); From d04b86d34ff229b2a833635c3df2db23991413dc Mon Sep 17 00:00:00 2001 From: robobun Date: Sun, 28 Dec 2025 18:01:07 -0800 Subject: [PATCH 211/212] perf: use jsonStringifyFast for faster JSON serialization (#25733) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Apply the same optimization technique from PR #25717 (Response.json) to other APIs that use JSON.stringify internally: - **IPC message serialization** (`ipc.zig`) - used for inter-process communication - **console.log with %j format** (`ConsoleObject.zig`) - commonly used for debugging - **PostgreSQL JSON/JSONB types** (`PostgresRequest.zig`) - database operations - **MySQL JSON type** (`MySQLTypes.zig`) - database operations - **Jest %j/%o format specifiers** (`jest.zig`) - test output formatting - **Transpiler tsconfig/macros** (`JSTranspiler.zig`) - build configuration ### Root Cause When calling `JSONStringify(globalObject, value, 0)`, the space parameter `0` becomes `jsNumber(0)`, which is NOT `undefined`. This causes JSC's FastStringifier (SIMD-optimized) to bail out: ```cpp // In WebKit's JSONObject.cpp FastStringifier::stringify() if (!space.isUndefined()) { logOutcome("space"_s); return { }; // Bail out to slow path } ``` Using `jsonStringifyFast` which passes `jsUndefined()` triggers the fast path. ### Expected Performance Improvement Based on PR #25717 results, these changes should provide ~3x speedup for JSON serialization in the affected APIs. ## Test plan - [x] Debug build compiles successfully - [x] Basic functionality verified (IPC, console.log %j, Response.json) - [x] Existing tests pass šŸ¤– Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Bot Co-authored-by: Claude --- src/bun.js/ConsoleObject.zig | 4 ++-- src/bun.js/api/JSTranspiler.zig | 6 ++++-- src/bun.js/ipc.zig | 4 +++- src/bun.js/test/jest.zig | 3 ++- src/sql/mysql/MySQLTypes.zig | 3 ++- src/sql/postgres/PostgresRequest.zig | 3 ++- 6 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/bun.js/ConsoleObject.zig b/src/bun.js/ConsoleObject.zig index f9d540ed11..491689ecc4 100644 --- a/src/bun.js/ConsoleObject.zig +++ b/src/bun.js/ConsoleObject.zig @@ -1629,11 +1629,11 @@ pub const Formatter = struct { }, .j => { - // JSON.stringify the value + // JSON.stringify the value using FastStringifier for SIMD optimization var str = bun.String.empty; defer str.deref(); - try next_value.jsonStringify(global, 0, &str); + try next_value.jsonStringifyFast(global, &str); this.addForNewLine(str.length()); writer.print("{f}", .{str}); }, diff --git a/src/bun.js/api/JSTranspiler.zig b/src/bun.js/api/JSTranspiler.zig index 86814d6dee..2524468d1a 100644 --- a/src/bun.js/api/JSTranspiler.zig +++ b/src/bun.js/api/JSTranspiler.zig @@ -165,7 +165,8 @@ pub const Config = struct { } if (!kind.isStringLike()) { - try tsconfig.jsonStringify(globalThis, 0, &out); + // Use jsonStringifyFast for SIMD-optimized serialization + try tsconfig.jsonStringifyFast(globalThis, &out); } else { out = try tsconfig.toBunString(globalThis); } @@ -204,7 +205,8 @@ pub const Config = struct { defer out.deref(); // TODO: write a converter between JSC types and Bun AST types if (is_object) { - try macros.jsonStringify(globalThis, 0, &out); + // Use jsonStringifyFast for SIMD-optimized serialization + try macros.jsonStringifyFast(globalThis, &out); } else { out = try macros.toBunString(globalThis); } diff --git a/src/bun.js/ipc.zig b/src/bun.js/ipc.zig index 5ac9975619..fa00ec05a5 100644 --- a/src/bun.js/ipc.zig +++ b/src/bun.js/ipc.zig @@ -229,7 +229,9 @@ const json = struct { pub fn serialize(writer: *bun.io.StreamBuffer, global: *jsc.JSGlobalObject, value: JSValue, is_internal: IsInternal) !usize { var out: bun.String = undefined; - try value.jsonStringify(global, 0, &out); + // Use jsonStringifyFast which passes undefined for the space parameter, + // triggering JSC's SIMD-optimized FastStringifier code path. + try value.jsonStringifyFast(global, &out); defer out.deref(); if (out.tag == .Dead) return IPCSerializationError.SerializationFailed; diff --git a/src/bun.js/test/jest.zig b/src/bun.js/test/jest.zig index cb913c812d..1acacb9994 100644 --- a/src/bun.js/test/jest.zig +++ b/src/bun.js/test/jest.zig @@ -430,7 +430,8 @@ pub fn formatLabel(globalThis: *JSGlobalObject, label: string, function_args: [] 'j', 'o' => { var str = bun.String.empty; defer str.deref(); - try current_arg.jsonStringify(globalThis, 0, &str); + // Use jsonStringifyFast for SIMD-optimized serialization + try current_arg.jsonStringifyFast(globalThis, &str); const owned_slice = bun.handleOom(str.toOwnedSlice(allocator)); defer allocator.free(owned_slice); bun.handleOom(list.appendSlice(owned_slice)); diff --git a/src/sql/mysql/MySQLTypes.zig b/src/sql/mysql/MySQLTypes.zig index 0280718592..a4efe2fdba 100644 --- a/src/sql/mysql/MySQLTypes.zig +++ b/src/sql/mysql/MySQLTypes.zig @@ -486,7 +486,8 @@ pub const Value = union(enum) { .MYSQL_TYPE_JSON => { var str: bun.String = bun.String.empty; - try value.jsonStringify(globalObject, 0, &str); + // Use jsonStringifyFast for SIMD-optimized serialization + try value.jsonStringifyFast(globalObject, &str); defer str.deref(); return Value{ .string = str.toUTF8(bun.default_allocator) }; }, diff --git a/src/sql/postgres/PostgresRequest.zig b/src/sql/postgres/PostgresRequest.zig index 775ab536c9..c06bc28c19 100644 --- a/src/sql/postgres/PostgresRequest.zig +++ b/src/sql/postgres/PostgresRequest.zig @@ -101,7 +101,8 @@ pub fn writeBind( .jsonb, .json => { var str = bun.String.empty; defer str.deref(); - try value.jsonStringify(globalObject, 0, &str); + // Use jsonStringifyFast for SIMD-optimized serialization + try value.jsonStringifyFast(globalObject, &str); const slice = str.toUTF8WithoutRef(bun.default_allocator); defer slice.deinit(); const l = try writer.length(); From 538be1399c8f3e3cbe4ef340051d15dd0b8974e3 Mon Sep 17 00:00:00 2001 From: "Tommy D. Rossi" Date: Mon, 29 Dec 2025 07:07:47 +0100 Subject: [PATCH 212/212] feat(bundler): expose reactFastRefresh option in Bun.build API (#25731) Fixes #25716 Adds support for a `reactFastRefresh: boolean` option in the `Bun.build` JavaScript API, matching the existing `--react-fast-refresh` CLI flag. ```ts const result = await Bun.build({ reactFastRefresh: true, entrypoints: ["src/App.tsx"], }); ``` When enabled, the bundler adds React Fast Refresh transform code (`$RefreshReg$`, `$RefreshSig$`) to the output. --- packages/bun-types/bun.d.ts | 10 ++++++ src/bun.js/api/JSBundler.zig | 5 +++ src/bundler/bundle_v2.zig | 1 + test/regression/issue/25716.test.ts | 49 +++++++++++++++++++++++++++++ 4 files changed, 65 insertions(+) create mode 100644 test/regression/issue/25716.test.ts diff --git a/packages/bun-types/bun.d.ts b/packages/bun-types/bun.d.ts index e0135432b0..44a32429d5 100644 --- a/packages/bun-types/bun.d.ts +++ b/packages/bun-types/bun.d.ts @@ -1942,6 +1942,16 @@ declare module "bun" { development?: boolean; }; + /** + * Enable React Fast Refresh transform. + * + * This adds the necessary code transformations for React Fast Refresh (hot module + * replacement for React components), but does not emit hot-module code itself. + * + * @default false + */ + reactFastRefresh?: boolean; + outdir?: string; } diff --git a/src/bun.js/api/JSBundler.zig b/src/bun.js/api/JSBundler.zig index 6e77655062..1a948f78b3 100644 --- a/src/bun.js/api/JSBundler.zig +++ b/src/bun.js/api/JSBundler.zig @@ -7,6 +7,7 @@ pub const JSBundler = struct { target: Target = Target.browser, entry_points: bun.StringSet = bun.StringSet.init(bun.default_allocator), hot: bool = false, + react_fast_refresh: bool = false, define: bun.StringMap = bun.StringMap.init(bun.default_allocator, false), loaders: ?api.LoaderMap = null, dir: OwnedString = OwnedString.initEmpty(bun.default_allocator), @@ -341,6 +342,10 @@ pub const JSBundler = struct { } } + if (try config.getBooleanLoose(globalThis, "reactFastRefresh")) |react_fast_refresh| { + this.react_fast_refresh = react_fast_refresh; + } + var has_out_dir = false; if (try config.getOptional(globalThis, "outdir", ZigString.Slice)) |slice| { defer slice.deinit(); diff --git a/src/bundler/bundle_v2.zig b/src/bundler/bundle_v2.zig index a52515b465..af6199fe68 100644 --- a/src/bundler/bundle_v2.zig +++ b/src/bundler/bundle_v2.zig @@ -1904,6 +1904,7 @@ pub const BundleV2 = struct { transpiler.options.css_chunking = config.css_chunking; transpiler.options.banner = config.banner.slice(); transpiler.options.footer = config.footer.slice(); + transpiler.options.react_fast_refresh = config.react_fast_refresh; if (transpiler.options.compile) { // Emitting DCE annotations is nonsensical in --compile. diff --git a/test/regression/issue/25716.test.ts b/test/regression/issue/25716.test.ts new file mode 100644 index 0000000000..a21331f268 --- /dev/null +++ b/test/regression/issue/25716.test.ts @@ -0,0 +1,49 @@ +// https://github.com/oven-sh/bun/issues/25716 +// Expose `--react-fast-refresh` option in `Bun.build` JS API +import { expect, test } from "bun:test"; +import { tempDirWithFiles } from "harness"; +import { join } from "path"; + +test("Bun.build reactFastRefresh option enables React Fast Refresh transform", async () => { + const dir = tempDirWithFiles("react-fast-refresh-test", { + "component.tsx": ` + import { useState } from "react"; + + export function Counter() { + const [count, setCount] = useState(0); + return ; + } + + export default function App() { + return
    ; + } + `, + }); + + // With reactFastRefresh: true, output should contain $RefreshReg$ and $RefreshSig$ + const buildEnabled = await Bun.build({ + entrypoints: [join(dir, "component.tsx")], + reactFastRefresh: true, + target: "browser", + external: ["react"], + }); + + expect(buildEnabled.success).toBe(true); + expect(buildEnabled.outputs).toHaveLength(1); + + const outputEnabled = await buildEnabled.outputs[0].text(); + expect(outputEnabled).toContain("$RefreshReg$"); + expect(outputEnabled).toContain("$RefreshSig$"); + + // Without reactFastRefresh (default), output should NOT contain refresh calls + const buildDisabled = await Bun.build({ + entrypoints: [join(dir, "component.tsx")], + target: "browser", + external: ["react"], + }); + + expect(buildDisabled.success).toBe(true); + const outputDisabled = await buildDisabled.outputs[0].text(); + expect(outputDisabled).not.toContain("$RefreshReg$"); + expect(outputDisabled).not.toContain("$RefreshSig$"); +});
  • I#3YCZG6hOWs5v<%NZymW)s|PdzAc~zA6QKl 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 z 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]Iu24}6m^XmWJ6#OMc4jpTMX6%3buYa%PCTNo9 zX={QP8U4Q>pfE1&7-TpyFwLk0sAE{vkD>(dmx#Iu$z@J@ALGf8bvUwbap!%O^ z1+N0%DPXbh^dA{ufn5J(+W#^wFzSDq7V;7Q)wKUtXxa~ROOBmd?%x`e{B8;SpQ@t9 K0T^r<_?ijC literal 0 HcmV?d00001 diff --git a/docs/images/templates/bun-tanstack-start.png b/docs/images/templates/bun-tanstack-start.png new file mode 100644 index 0000000000000000000000000000000000000000..a2c4c5f327c168bb439489d12dde6ea738933d4a GIT binary patch literal 836134 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 z z`oc+5?CO>w-ZrWmDf+C&ViPVfIy*b{T{qRwy=o*R&%E^*W*9=)$32bPfaUSU!5ZLu zJHyOyGPLtB)+(P{#F+*1AtAM8wM)_~`(Yxvym|n~Y z<%6hZ{V@*kt4prl5$bwo?t!^dSC>q}k`6+Qg+*xaXZCKUF(Mz%iM!g+RA6XiVfFD# z(MG81-({#LxV11o`@G8pu8_i18TZbSQ zlu3VtBsbWc#!;md*E##2w4vF~CSku&91l)Sl)W*xIwJqsuvRvRk@$7*(&*JB_cCZn zfN@x?>ItwdG~Z8b~jkFT?TfJcN!_+w24sh zpKUKgmyrEC#7*X8aSCV;B+bh!lmd6|lO2wp4PAa$5*pk(k6_Z!%$V+{yn;ZK(O zpZi&aQOto08E-&)chiB!jt56AP2;ka%aewN4a-^Ah?-b&oqTO;V9zfSyQ~C`B)5(C zD3cA^Ob^lIrk1Y?CFje|qt^DU*3EN#Xs7Wm{!;kMEJnb0HGbyW-@A∨BCwjhBsT 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 {f@-92ofhrD<$!9=-icUv0bR@Y3X8h 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 )R@CdoR6l)o3EfzT412Ozjwx{`;0Nht% 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