A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://vercel.com/docs/functions/runtimes/edge below:

Edge Runtime

To convert your Vercel Function to use the Edge runtime, add the following code to your function:

export const runtime = 'edge'; // 'nodejs' is the default
 
export function GET(request: Request) {
  return new Response(`I am an Vercel Function!`, {
    status: 200,
  });
}

If you're not using a framework, you must either add "type": "module" to your package.json or change your JavaScript Functions' file extensions from .js to .mjs

By default Edge Functions execute in the region closest to the incoming request. You can set one or more preferred regions using the route segment config preferredRegion or specify a regions key within a config object to set one or more regions for you functions to execute in

If your function depends on a data source, you may want it to be close to that source for fast responses.

To configure which region (or multiple regions) you want your function to execute in, pass the ID of your preferred region(s) in the following way:

The preferredRegion option can be used to specify a single region using a string value, or multiple regions using a string array. See the Next.js documentation for more information.

export const runtime = 'edge'; // 'nodejs' is the default
// execute this function on iad1 or hnd1, based on the connecting client location
export const preferredRegion = ['iad1', 'hnd1'];
export const dynamic = 'force-dynamic'; // no caching
 
export function GET(request: Request) {
  return new Response(
    `I am an Vercel Function! (executed on ${process.env.VERCEL_REGION})`,
    {
      status: 200,
    },
  );
}

During regional outage, Vercel has automatic failover to the next closest region to maintain uptime. This is applicable for both global and regionally specified Edge Functions. See the outage resiliency docs for more information.

If you're not using a framework, you must either add "type": "module" to your package.json or change your JavaScript Functions' file extensions from .js to .mjs

In the event of regional downtime, Vercel will automatically reroute traffic to the next closest Edge Network region on all plans. For more information on which regions Vercel routes traffic to, see Outage Resiliency.

You can't configure a maximum duration for functions using the Edge runtime. They can run indefinitely provided they send an initial response within 25 seconds.

You can only configure concurrency for functions using the Node.js runtime. Edge Functions cannot be configured.

The Edge runtime is built on top of the V8 engine, allowing it to run in isolated execution environments that don't require a container or virtual machine.

The Edge runtime provides a subset of Web APIs such as fetch, Request, and Response.

The following tables list the APIs that are available in the Edge runtime.

API Description fetch Fetches a resource Request Represents an HTTP request Response Represents an HTTP response Headers Represents HTTP headers FormData Represents form data File Represents a file Blob Represents a blob URLSearchParams Represents URL search parameters Blob Represents a blob Event Represents an event EventTarget Represents an object that can handle events PromiseRejectEvent Represents an event that is sent to the global scope of a script when a JavaScript Promise is rejected API Description TextEncoder Encodes a string into a Uint8Array TextDecoder Decodes a Uint8Array into a string atob Decodes a base-64 encoded string btoa Encodes a string in base-64 API Description crypto Provides access to the cryptographic functionality of the platform SubtleCrypto Provides access to common cryptographic primitives, like hashing, signing, encryption or decryption CryptoKey Represents a cryptographic key API Description AbortController Allows you to abort one or more DOM requests as and when desired AbortSignal Represents a signal object that allows you to communicate with a DOM request (such as a Fetch request) and abort it if required DOMException Represents an error that occurs in the DOM structuredClone Creates a deep copy of a value URLPattern Represents a URL pattern Array Represents an array of values ArrayBuffer Represents a generic, fixed-length raw binary data buffer Atomics Provides atomic operations as static methods BigInt Represents a whole number with arbitrary precision BigInt64Array Represents a typed array of 64-bit signed integers BigUint64Array Represents a typed array of 64-bit unsigned integers Boolean Represents a logical entity and can have two values: true and false clearInterval Cancels a timed, repeating action which was previously established by a call to setInterval() clearTimeout Cancels a timed, repeating action which was previously established by a call to setTimeout() console Provides access to the browser's debugging console DataView Represents a generic view of an ArrayBuffer Date Represents a single moment in time in a platform-independent format decodeURI Decodes a Uniform Resource Identifier (URI) previously created by encodeURI or by a similar routine decodeURIComponent Decodes a Uniform Resource Identifier (URI) component previously created by encodeURIComponent or by a similar routine encodeURI Encodes a Uniform Resource Identifier (URI) by replacing each instance of certain characters by one, two, three, or four escape sequences representing the UTF-8 encoding of the character encodeURIComponent Encodes a Uniform Resource Identifier (URI) component by replacing each instance of certain characters by one, two, three, or four escape sequences representing the UTF-8 encoding of the character Error Represents an error when trying to execute a statement or accessing a property EvalError Represents an error that occurs regarding the global function eval() Float32Array Represents a typed array of 32-bit floating point numbers Float64Array Represents a typed array of 64-bit floating point numbers Function Represents a function Infinity Represents the mathematical Infinity value Int8Array Represents a typed array of 8-bit signed integers Int16Array Represents a typed array of 16-bit signed integers Int32Array Represents a typed array of 32-bit signed integers Intl Provides access to internationalization and localization functionality isFinite Determines whether a value is a finite number isNaN Determines whether a value is NaN or not JSON Provides functionality to convert JavaScript values to and from the JSON format Map Represents a collection of values, where each value may occur only once Math Provides access to mathematical functions and constants Number Represents a numeric value Object Represents the object that is the base of all JavaScript objects parseFloat Parses a string argument and returns a floating point number parseInt Parses a string argument and returns an integer of the specified radix Promise Represents the eventual completion (or failure) of an asynchronous operation, and its resulting value Proxy Represents an object that is used to define custom behavior for fundamental operations (e.g. property lookup, assignment, enumeration, function invocation, etc) RangeError Represents an error when a value is not in the set or range of allowed values ReferenceError Represents an error when a non-existent variable is referenced Reflect Provides methods for interceptable JavaScript operations RegExp Represents a regular expression, allowing you to match combinations of characters Set Represents a collection of values, where each value may occur only once setInterval Repeatedly calls a function, with a fixed time delay between each call setTimeout Calls a function or evaluates an expression after a specified number of milliseconds SharedArrayBuffer Represents a generic, fixed-length raw binary data buffer String Represents a sequence of characters Symbol Represents a unique and immutable data type that is used as the key of an object property SyntaxError Represents an error when trying to interpret syntactically invalid code TypeError Represents an error when a value is not of the expected type Uint8Array Represents a typed array of 8-bit unsigned integers Uint8ClampedArray Represents a typed array of 8-bit unsigned integers clamped to 0-255 Uint32Array Represents a typed array of 32-bit unsigned integers URIError Represents an error when a global URI handling function was used in a wrong way URL Represents an object providing static methods used for creating object URLs URLSearchParams Represents a collection of key/value pairs WeakMap Represents a collection of key/value pairs in which the keys are weakly referenced WeakSet Represents a collection of objects in which each object may occur only once WebAssembly Provides access to WebAssembly

You can check if your function is running on the Edge runtime by checking the global globalThis.EdgeRuntime property. This can be helpful if you need to validate that your function is running on the Edge runtime in tests, or if you need to use a different API depending on the runtime.

if (typeof EdgeRuntime !== 'string') {
  // dead-code elimination is enabled for the code inside this block
}

The following modules can be imported with and without the node: prefix when using the import statement:

Module Description async_hooks Manage asynchronous resources lifecycles with AsyncLocalStorage. Supports the WinterCG subset of APIs events Facilitate event-driven programming with custom event emitters and listeners. This API is fully supported buffer Efficiently manipulate binary data using fixed-size, raw memory allocations with Buffer. Every primitive compatible with Uint8Array accepts Buffer too assert Provide a set of assertion functions for verifying invariants in your code util Offer various utility functions where we include promisify/callbackify and types

Also, Buffer is globally exposed to maximize compatibility with existing Node.js modules.

The Edge runtime has some restrictions including:

The following JavaScript language features are disabled, and will not work:

While WebAssembly.instantiate is supported in Edge Runtime, it requires the Wasm source code to be provided using the import statement. This means you cannot use a buffer or byte array to dynamically compile the module at runtime.

You can use process.env to access Environment Variables.

Middleware with the edge runtime configured is neither a Node.js nor browser application, which means it doesn't have access to all browser and Node.js APIs. Currently, our runtime offers a subset of browser APIs and some Node.js APIs and we plan to implement more functionality in the future.

In summary:

Dynamic code execution is not available in Middleware with the edge runtime configured for security reasons. For example, the following APIs cannot be used:

You need to make sure libraries used in your Middleware with the edge runtime configured don't rely on dynamic code execution because it leads to a runtime error.

Middleware with the edge runtime configured must begin sending a response within 25 seconds.

You may continue streaming a response beyond that time and you can continue with asynchronous workloads in the background, after returning the response.

Plan Limit (after gzip compression) Hobby 1 MB Pro 2 MB Enterprise 4 MB

The maximum size for an Vercel Function using the Edge runtime includes your JavaScript code, imported libraries and files (such as fonts), and all files bundled in the function.

If you reach the limit, make sure the code you are importing in your function is used and is not too heavy. You can use a package size checker tool like bundle to check the size of a package and search for a smaller alternative.

Environment Variables can be accessed through the process.env object. Since JavaScript objects have methods to allow some operations on them, there are limitations on the names of Environment Variables to avoid having ambiguous code.

The following names will be ignored as Environment Variables to avoid overriding the process.env object prototype:

Therefore, your code will always be able to use them with their expected behavior:

// returns `true`, if `process.env.MY_VALUE` is used anywhere & defined in the Vercel dashboard
process.env.hasOwnProperty('MY_VALUE');

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4