mcpField
E
edgeone-makers-edge-functions

edgeone-makers-edge-functions

github.com/tencentedgeoneDevelopment1.8k253 installsUpdated 3w ago
Repository

About edgeone-makers-edge-functions

A skill for writing Edge Functions for Makers using a V8-based JavaScript runtime. It documents routing, context APIs, KV prerequisites, supported Web APIs, and runtime limits.

Key features

  1. 01V8 runtime guidance
  2. 02HTTP method handlers and dynamic routes
  3. 03EventContext API reference
  4. 04KV storage setup guidance
  5. 05Supported APIs and runtime limits

Use cases

  1. 01Writing an Edge Function API endpoint
  2. 02Handling dynamic URL parameters
  3. 03Using KV storage from an edge function

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/tencentedgeone/edgeone-makers-tools --skill edgeone-makers-edge-functions

After installing, type/edgeone-makers-edge-functionsin Claude Code to confirm it loaded.

Details

From the project README

Edge Functions

V8-based lightweight functions running at the edge. Ideal for simple APIs, KV storage access, and ultra-low latency responses.

Runtime: V8 (like Cloudflare Workers) — NOT Node.js. Do NOT use Node.js built-ins or npm packages.

⚠️ Response.json() is NOT available in this V8 runtime. Always use new Response(JSON.stringify(data), { headers: { 'Content-Type': 'application/json' } }) instead.

Basic function

File: edge-functions/api/hello.js

export default function onRequest(context) {
  return new Response('Hello from Edge Functions!');
}

Access: GET /api/hello

HTTP method handlers

// edge-functions/api/users.js

// Handle all methods
export function onRequest(context) {
  return new Response('Any method');
}

// Or use specific method handlers:
export function onRequestGet(context) {
  return new Response(JSON.stringify({ users: [] }), {
    headers: { 'Content-Type': 'application/json' },
  });
}

export async function onRequestPost(context) {
  const body = await context.request.json();
  return new Response(JSON.stringify({ created: true }), {
    status: 201,
    headers: { 'Content-Type': 'application/json' },
  });
}

EventContext object

export function onRequest(context) {
  const {
    request,    // Standard Request object
    params,     // Dynamic route params, e.g. { id: "123" }
    env,        // Environment variables from Makers console
    waitUntil,  // Extend function lifetime for async tasks
  } = context;

  // GEO info available via:
  const geo = context.request.eo;
  // geo.geo.countryName, geo.geo.cityName, geo.geo.latitude, etc.

  return new Response('OK');
}

Dynamic routes

// edge-functions/api/users/[id].js
// Matches: /api/users/123, /api/users/abc

export function onRequestGet(context) {
  const userId = context.params.id;
  return new Response(JSON.stringify({ userId }), {
    headers: { 'Content-Type': 'application/json' },
  });
}
// edge-functions/api/[[default]].js
// Catches all unmatched routes under /api/

export function onRequest(context) {
  return new Response('Catch-all route', { status: 404 });
}

KV Storage (Edge Functions only)

Cross-reference: if your code uses context.store or KV APIs, also read ../makers-storage/SKILL.md.

⚠️ Prerequisites: You must enable KV Storage in the EdgeOne Makers console, create a namespace, and bind it to your project before using KV. See ../makers-storage/references/kv.md for full setup instructions.

The KV namespace is a global variable (name is set when binding in the console) — it is NOT on context.env.

// edge-functions/api/counter.js

export async function onRequest(context) {
  // ⚠️ my_kv is a GLOBAL variable (name set when binding namespace in console)
  // Do NOT use context.env.KV ❌
  
  // Read
  const count = await my_kv.get('page_views') || '0';
  const newCount = parseInt(count) + 1;

  // Write
  await my_kv.put('page_views', String(newCount));

  return new Response(JSON.stringify({ views: newCount }), {
    headers: { 'Content-Type': 'application/json' },
  });
}

For full KV Storage API reference and usage guide, see: ../makers-storage/references/kv.md.

Supported Runtime APIs

Edge Functions run on V8 and support these Web Standard APIs:

  • Fetch API — fetch() for outbound HTTP requests
  • Cache API — caches.open(), cache.match(), cache.put()
  • Headers / Request / Response — standard Web API objects
  • Streams — ReadableStream, WritableStream, TransformStream
  • Web Crypto — crypto.subtle for encryption/signing
  • Encoding — TextEncoder, TextDecoder
  • URL / URLSearchParams — URL parsing

⚠️ NOT available: Node.js built-ins (fs, path, http, crypto from Node), require(), npm packages.

Limits

ResourceLimit
Code package size5 MB
Request body1 MB
CPU time per invocation200 ms
LanguageJavaScript (ES2023+) only

Comments

Markdown supported