Files
wehub-resource-sync 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
chore: import upstream snapshot with attribution
2026-07-13 12:23:53 +08:00
..

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" state
    • content:afterSave (priority 200) - logs final state
    • content:beforeDelete (priority 200) - logs deletions
    • media: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/all route

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

  1. Open the admin at http://localhost:4321/_emdash/admin
  2. Create a new post with a title like "Hello World! Testing Plugins"
  3. Watch the console output to see hooks executing:
    • [audit-log] + create content/posts/post-xxx