b3a7f98e5a
CI / E2E Cloudflare (4/8) (push) Failing after 0s
CI / E2E Cloudflare (8/8) (push) Failing after 1s
CI / Lint (push) Failing after 1s
Auto Extract / Extract (push) Failing after 4s
CI / Version Check (push) Failing after 9s
CI / Integration Tests (push) Failing after 1s
CI / E2E tests (1/8) (push) Failing after 1s
CI / E2E tests (2/8) (push) Failing after 2s
CI / E2E tests (3/8) (push) Failing after 2s
CI / Browser Tests (push) Failing after 1s
CI / E2E tests (5/8) (push) Failing after 1s
CI / E2E Cloudflare (2/8) (push) Failing after 2s
CI / Typecheck (push) Failing after 1s
CI / Changeset Validation (push) Failing after 2s
CI / E2E Cloudflare (5/8) (push) Failing after 1s
CI / E2E Cloudflare (6/8) (push) Failing after 1s
CI / E2E Cloudflare (7/8) (push) Failing after 1s
CodeQL / Analyze (javascript-typescript) (push) Failing after 1s
Format / Format (push) Failing after 0s
CodeQL / Analyze (actions) (push) Failing after 4s
CI / E2E tests (4/8) (push) Failing after 1s
CI / E2E tests (6/8) (push) Failing after 1s
CI / E2E tests (7/8) (push) Failing after 2s
CI / E2E tests (8/8) (push) Failing after 1s
CI / E2E Cloudflare (1/8) (push) Failing after 1s
CI / E2E Cloudflare (3/8) (push) Failing after 2s
Preview Releases / Publish Preview (push) Failing after 0s
zizmor / Run zizmor (push) Failing after 1s
Release / Release (push) Failing after 2s
CI / Smoke Tests (push) Failing after 5m36s
CI / Tests (push) Failing after 6m36s
Release / Sync Templates (push) Has been skipped
CI / E2E Tests (push) Has been cancelled
1.8 KiB
1.8 KiB
EmDash Plugins Demo
This demo showcases EmDash's plugin system with plugins that demonstrate the hook architecture.
Plugins Included
1. Audit Log Plugin (@emdash-cms/plugin-audit-log)
Tracks all content changes for compliance.
- Hooks:
content:beforeSave(priority 1) - captures "before" statecontent:afterSave(priority 200) - logs final statecontent:beforeDelete(priority 200) - logs deletionsmedia:afterUpload(priority 200) - logs uploads
- Features:
- Create/update/delete tracking
- Before/after state comparison
- Admin history page
2. Webhook Notifier Plugin (@emdash-cms/plugin-webhook-notifier)
Posts JSON payloads to external webhook URLs on content/media events.
- Hooks:
content:afterSave,content:afterDelete,media:afterUpload(priority 210) - Features:
- Retry with exponential backoff
- Admin-configurable settings (URL, secret token)
- SSRF protection
- Delivery tracking
3. Embeds Plugin (@emdash-cms/plugin-embeds)
Provides Portable Text block types for embedding external content.
- Features:
- YouTube, Vimeo, Twitter/X, Bluesky, Mastodon embeds
- Link previews (Open Graph)
- GitHub Gist embeds
4. API Test Plugin (@emdash-cms/plugin-api-test)
Exercises all v2 plugin APIs for testing.
- Features:
- Routes for each plugin API (kv, storage, content, media, http)
- Combined
test/allroute
Running the Demo
# Install dependencies
pnpm install
# Seed sample content
pnpm seed
# Start development server
pnpm dev
# Open browser
open http://localhost:4321
Testing Plugin Hooks
- Open the admin at
http://localhost:4321/_emdash/admin - Create a new post with a title like "Hello World! Testing Plugins"
- Watch the console output to see hooks executing:
[audit-log] + create content/posts/post-xxx