@emberkit/edge
v0.2.4
Published
Edge runtime adapter for EmberKit
Maintainers
Readme
@emberkit/edge
Edge runtime adapters for EmberKit — deploy to Cloudflare Workers, Deno Deploy, and other edge platforms.
Install
npm install @emberkit/edge
# or
pnpm add @emberkit/edgeCloudflare Workers
import { createCloudflareAdapter } from '@emberkit/edge';
const adapter = createCloudflareAdapter();
export default {
fetch(request, env, ctx) {
return adapter.fetch(request, env, ctx);
},
};Deno Deploy
import { createDenoAdapter } from '@emberkit/edge';
const adapter = createDenoAdapter();
Deno.serve((request) => adapter.fetch(request));Edge Adapter
import { createEdgeAdapter } from '@emberkit/edge';
const adapter = createEdgeAdapter({
runtime: 'cloudflare',
streaming: true,
staticGeneration: true,
});
const response = await adapter.render(context, async () => {
return '<h1>Hello from the edge</h1>';
});Utilities
Bundle Analysis
import { analyzeBundle } from '@emberkit/edge';
const stats = analyzeBundle(code);
console.log(stats.size); // bytes
console.log(stats.warnings); // array of warning strings
console.log(stats.errors); // array of error stringsStatic Pages
import { StaticPage } from '@emberkit/edge';
const page = new StaticPage('<html>...</html>');
page.addStyle('/styles/main.css');
page.addScript('/app.js');
console.log(page.toHTML());Cache Headers
import { createCacheHeaders } from '@emberkit/edge';
const headers = createCacheHeaders({
edge: 3600,
browser: 'public, max-age=300',
staleWhileRevalidate: 86400,
});Environment Detection
import { isEdgeEnvironment } from '@emberkit/edge';
if (isEdgeEnvironment()) {
// Running on Cloudflare Workers, Deno, or Bun
}Bundle Size Limits
| Level | Size | Description | |-------|------|-------------| | Warning | 1KB | Bundle approaching limit | | Maximum | 8KB | Hard limit for edge runtime |
License
Apache-2.0
