API Reference

All exports from @duskmoon-dev/code-engine, organized by category. → Try in Playground

Exports

Root (1)

Import Exports
@duskmoon-dev/code-engine Barrel re-export of core modules

Core (11)

Import Exports
@duskmoon-dev/code-engine/state EditorState, StateField, Transaction, Text, ChangeSet
@duskmoon-dev/code-engine/view EditorView, Decoration, ViewPlugin, keymap
@duskmoon-dev/code-engine/language Language, LanguageSupport, syntaxTree, foldable
@duskmoon-dev/code-engine/commands Standard editing commands and default keymap
@duskmoon-dev/code-engine/search Search / replace panel and query API
@duskmoon-dev/code-engine/autocomplete Completion framework and snippets
@duskmoon-dev/code-engine/lint Inline diagnostics / linter framework
@duskmoon-dev/code-engine/collab Operational-transform collaborative editing
@duskmoon-dev/code-engine/merge Two-panel unified diff merge view
@duskmoon-dev/code-engine/lsp Language Server Protocol client utilities
@duskmoon-dev/code-engine/language-data Language descriptions registry

Parser (3)

Import Exports
@duskmoon-dev/code-engine/parser/common Lezer Tree, SyntaxNode, NodeType interfaces
@duskmoon-dev/code-engine/parser/lr LRParser, Stack, parseMixed
@duskmoon-dev/code-engine/parser/highlight tags, styleTags, classHighlighter

Languages (29)

Import Exports
@duskmoon-dev/code-engine/lang/javascript javascript(), javascriptLanguage, tsxLanguage Try →
@duskmoon-dev/code-engine/lang/python python(), pythonLanguage Try →
@duskmoon-dev/code-engine/lang/html html(), htmlLanguage Try →
@duskmoon-dev/code-engine/lang/css css(), cssLanguage Try →
@duskmoon-dev/code-engine/lang/json json(), jsonLanguage Try →
@duskmoon-dev/code-engine/lang/markdown markdown(), markdownLanguage Try →
@duskmoon-dev/code-engine/lang/xml xml(), xmlLanguage Try →
@duskmoon-dev/code-engine/lang/sql sql(), MySQL, PostgreSQL, SQLite dialects Try →
@duskmoon-dev/code-engine/lang/rust rust(), rustLanguage Try →
@duskmoon-dev/code-engine/lang/go go(), goLanguage Try →
@duskmoon-dev/code-engine/lang/java java(), javaLanguage Try →
@duskmoon-dev/code-engine/lang/cpp cpp(), cppLanguage Try →
@duskmoon-dev/code-engine/lang/php php(), phpLanguage Try →
@duskmoon-dev/code-engine/lang/sass sass(), sassLanguage Try →
@duskmoon-dev/code-engine/lang/less less(), lessLanguage Try →
@duskmoon-dev/code-engine/lang/yaml yaml(), yamlLanguage Try →
@duskmoon-dev/code-engine/lang/angular angular(), angularLanguage Try →
@duskmoon-dev/code-engine/lang/vue vue(), vueLanguage Try →
@duskmoon-dev/code-engine/lang/liquid liquid(), liquidLanguage Try →
@duskmoon-dev/code-engine/lang/wast wast(), wastLanguage Try →
@duskmoon-dev/code-engine/lang/jinja jinja(), jinjaLanguage Try →
@duskmoon-dev/code-engine/lang/elixir elixir(), elixirLanguage Try →
@duskmoon-dev/code-engine/lang/erlang erlang(), erlangLanguage Try →
@duskmoon-dev/code-engine/lang/heex heex(), heexLanguage — HEEx Phoenix template syntax Try →
@duskmoon-dev/code-engine/lang/zig zig(), zigLanguage Try →
@duskmoon-dev/code-engine/lang/caddyfile caddyfile(), caddyfileLanguage Try →
@duskmoon-dev/code-engine/lang/dart dart(), dartLanguage Try →
@duskmoon-dev/code-engine/lang/lezer lezer(), lezerLanguage Try →
@duskmoon-dev/code-engine/lang/legacy/* StreamLanguage.define() based legacy modes Uses StreamLanguage.define(mode) instead of native Lezer parsers. Import the mode and wrap it: StreamLanguage.define(yourMode).

Themes (4)

Import Exports
@duskmoon-dev/code-engine/theme/one-dark oneDark — Atom One Dark theme extension
@duskmoon-dev/code-engine/theme/duskmoon duskMoon() — DuskMoon CSS-var-based theme
@duskmoon-dev/code-engine/theme/sunshine sunshine — Light theme from @duskmoon-dev/core sunshine palette
@duskmoon-dev/code-engine/theme/moonlight moonlight — Dark theme from @duskmoon-dev/core moonlight palette

Keymaps (2)

Import Exports
@duskmoon-dev/code-engine/keymaps/vim vim() — Vim modal editing keymap
@duskmoon-dev/code-engine/keymaps/emacs emacs() — Emacs keybindings

Setup (1)

Import Exports
@duskmoon-dev/code-engine/setup basicSetup, minimalSetup extension arrays

Changelog

Changelog

Unreleased

Playground

  • Interactive playground: Full CodeMirror editor at /playground with 23 language modes (including TypeScript via JSX pack), two themes, and 8+ extension toggles
  • URL state sharing: Editor configuration and code serialized to URL hash; copy-link button with 8KB size guard
  • localStorage persistence: All settings (language, theme, font size, tab size, extensions, keymaps) survive page refresh
  • API reference docs: /docs with all 43 subpath exports categorized, filterable, with per-row copy-import buttons and Try-in-Playground links for each language
  • Changelog rendering: /docs renders CHANGELOG.md at build time with section ID anchors for deep linking
  • OG / social metadata: OpenGraph image, JSON-LD structured data, canonical URLs, Twitter card
  • Accessibility: Skip-link, lang="en", aria-label on all interactive controls, role="region" on scrollable tables, tabindex for keyboard navigation, prefers-reduced-motion CSS, a:focus-visible outline for keyboard navigation
  • Language-pack code splitting: Each language loaded on demand; popular languages prefetched on idle; initial URL hash language loaded first
  • Editor UX: Status bar (line/col/selection), font-size controls, fullscreen, word wrap, read-only, whitespace, folding, active line, bracket matching, vim/emacs keymaps, download, reset

Tests

  • 3580+ tests across 54 test files (up from 2900+ / 51)
  • Playground source-validation and build-output test suites
  • Behavioral tests for insertBracket and deleteBracketPair
  • Behavioral tests for selectNextOccurrence (word expansion, multi-cursor add, wrap-around)
  • Behavioral tests for history module: addMapping, eqSelectionShape, undo/redo selection
  • Behavioral tests for completeAnyWord: dedup, ignoreAt, large docs with tree structure

0.1.0 (2026-03-19)

Initial release — deep fork of CodeMirror 6 + Lezer ecosystem.

Features

  • Monolith package: 44 upstream repos collapsed into @duskmoon-dev/code-engine
  • Zero runtime dependencies: all external code vendored (style-mod, crelt, w3c-keyname, find-cluster-break)
  • 42 subpath exports: tree-shakeable imports for state, view, language, commands, search, autocomplete, lint, collab, merge, lsp, language-data, parser/common, parser/lr, parser/highlight, 22 language packs, themes, and setup
  • 22 language packs: JavaScript/TypeScript/JSX, Python, HTML, CSS, JSON, Markdown, XML, SQL, Rust, Go, Java, C++, PHP, Sass, Less, YAML, Angular, Vue, Liquid, Wast, Jinja, Lezer
  • Legacy stream modes: Elixir, Ruby, Erlang, Dart, Swift, Kotlin, Lua, Shell, Dockerfile, TOML, Nginx, Nix, Haskell, and more
  • DuskMoonUI theme: Built-in theme reading CSS custom properties (var(--color-), var(--syntax-))
  • One Dark theme: Ported from @codemirror/theme-one-dark
  • Bun-first build: 280 output files in ~5s with code splitting and source maps
  • Pre-compiled parsers: All Lezer grammar tables pre-compiled (no runtime @lezer/generator)

Infrastructure

  • GitHub Actions CI (typecheck, test, build)
  • 2900+ tests across 51 test files (v0.1.0 baseline)
  • Export verification script (84 paths verified)
  • Upstream tracking in UPSTREAM.md (52 modules with commit SHAs)
  • Interactive playground and API reference at duskmoon-dev.github.io/code-engine
↑ Top