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
/playgroundwith 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:
/docswith all 43 subpath exports categorized, filterable, with per-row copy-import buttons and Try-in-Playground links for each language - Changelog rendering:
/docsrendersCHANGELOG.mdat 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-labelon all interactive controls,role="region"on scrollable tables,tabindexfor keyboard navigation,prefers-reduced-motionCSS,a:focus-visibleoutline 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
insertBracketanddeleteBracketPair - Behavioral tests for
selectNextOccurrence(word expansion, multi-cursor add, wrap-around) - Behavioral tests for
historymodule: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