First-party extensions
Four extensions ship with Jx, and they are deliberately unprivileged: each is wired through the same manifest, admission blocks, and capability roles available to any third-party package. That makes them two things at once — the batteries most projects start with, and the reference implementations to crib from when you build your own. This page maps what each one contributes; follow the links for the mechanics.
| Package | Sections | Formats | Server mounts | Connector providers |
|---|---|---|---|---|
@jxsuite/parser |
content |
Markdown, CSV | — | — |
@jxsuite/connector |
connections
,
data |
— | /_jx/data
(order 20) |
D1, Supabase, Sqlite |
@jxsuite/auth |
auth |
— | /_jx/auth
(order 10) |
— |
@jxsuite/search |
search |
— | — | — |
@jxsuite/parser — content and Markdown
The content layer, and the model format extension .
Section :
content— file-based content collections, owned by theContentclass (referenceable, so collections join the relationships vocabulary). ItsprojectDataandresolvePathscapabilities load collections into_project.contentand expand$pathsfor pages discovery.Formats :
Markdown(.md, admitted to pages, components, and content; anexportTargetwith parse, serialize, discover, and load capabilities) andCsv(.csv, content-only,remote: trueso sources may behttp(s)URLs).Classes :
MarkdownCollection,ContentCollection,ContentEntry— glob-and-query state prototypes over content files.Schemas : the only first-party package shipping a
documentfragment as well as aprojectone — its content-source shapes join both composed schemas .Studio settings : the Content Types section, a
layout: "map"master-detail with theschema-buildercontrol for frontmatter fields.
User-level docs: Content collections and Jx Markdown .
@jxsuite/connector — connections and data tables
The data layer, and the reference for both the connector block and a server mount .
Sections :
connections(named database connections; identifiers and env-var names only) anddata(dynamic tables: column schema, id strategy, indexes, permissions,ownerField;referenceable).Providers :
D1,Supabase, andSqliteclasses, each with the four connector capabilities (dialect,deploySchema,bindings,testConnection) over a shared Kysely bridge.Mount :
/_jx/data(order 20) — the canonical table wire contract, fail-closed againstctx.auth.Classes :
TableQuery,TableEntry,TableInsert,TableUpdate,TableDelete— state prototypes that lower to coreRequest/Functiondefs in compiled sites.Studio settings : Connections and Data Tables sections (
layout: "map"), with thesecretcontrol for connection URLs and theschema-builderfor table fields; Test Connection and Push Schema ride the connector capabilities.
User-level docs: Databases , Connections , Data tables , Data grid .
@jxsuite/auth — sessions and permissions
Better Auth behind the connector's tables, and the reference for mount cooperation through the shared context.
Section :
auth— sign-in methods, redirects, roles, and the connection its system tables (user,session,account,verification) live on.Mount :
/_jx/auth(order 10) — Better Auth's routes, publishingctx.auth = { getSession, authorize }for the data mount to authorize against. Without it, table rules beyondpublic/nonedeny.Push contribution : a section-owner
deploySchemacapability contributes the system-table migration tojx db pushaskind: "auth"steps ( Server mounts ).Classes :
Session(the live session,nullwhen signed out — and alwaysnulloutside browsers, so static pages render signed-out) andAuthActions(signInEmail,signUpEmail,signInSocial,signOuthandlers to wire onto forms). Both default to client timing via$studio.stateDefaults.Studio settings : the Authentication section (
layout: "form"), with thesecretcontrol forsecretEnv— the signing secret itself never touchesproject.json( Security and secrets ).
User-level docs: Auth and secrets .
@jxsuite/search — build-time site search
Headless full-text search, and the reference for the
emit
capability
.
Section :
search— which content collections to index, per-collection fields/boosts, and the output path.projectDatanormalizes it into_project.search.Emit : builds
/search-index.jsonat build time from the loaded content collections — page-level documents plus per-heading section documents with#anchordeep links (heading ids come from the parser).Classes :
Search— reactive query results in page state, lowered to a coreFunctioncomputed that lazy-loads the bundled MiniSearch client. Defaults to client timing via$studio.stateDefaults.Client :
@jxsuite/search/client, a headless browser module (preload/queryplus$srcstate conventions) bundled into/assets/by the site build; sites author their own search UI over it.Studio settings : the Site Search section (
layout: "form").
User-level docs: Site search .
How they depend on each other
Auth depends on the connector (its dialect seam and permission types); search reads what the parser loads but depends only on core; all of them may depend on core packages; core packages never depend on any of them. That direction is CI-enforced, and it is what guarantees the claim these pages keep making: anything the first-party extensions do, yours can do too.
Related
The anatomy of an extension — manifests, admission blocks, and the registry.
Connectors and Server mounts — the machinery connector and auth are built on.
Tutorial: a TOML format extension and Tutorial: a guestbook extension — build your own alongside these references.