Matia Docusaurus — Architecture
Recent Changes
- DEV-49004 / sources-list meta refactor: ETL
docs/connectors-meta/etl/*is generated fromsources-list.jsononly (slug =toKebabCase(sourceName)). Docs-tree scan remains foroverview.tsgeneration only. - Explorer catalog overview loader:
loadConnectorPageOverviewFromDirreads pageoverview.jsonand merges ETL meta from disk (nooverview.tsimport in Node). Throws when a docs leaf matchessources-list.jsonbut the expectedconnectors-meta/etl/{metaKebabName}/overview.jsonis missing. - ETL
overview.tsscaffold-once: Phase 2 writesoverview.tsonly when the file is missing; existing modules are left untouched (static boilerplate for MDX). - sources-list meta refactor (task 03):
writeEtlConnectorPageOverviewArtifactsacceptsmetaKebabName(decoupled from docs folder slug); runner Phase 2 scans ETL docs leaves and writes onlyoverview.tswith meta import path frommetaKebabName. - DEV-49004: Added per-stream
supportsReimporttoConnectorStream, passthrough to generatedschema-streams.json, and UI indicators in Available Streams (parenthetical) and Schema Table (badge).
Shared Layer (src/shared/, src/entities/)
Entities Layer (src/entities/connector/model/)
ConnectorStream— optionalsupportsReimport?: booleanindicates the stream supports re-import in Matia product data.
export interface ConnectorStream {
streamName: string;
supportedSyncModes: string[];
supportsReimport?: boolean;
// ...
}
Features Layer (src/static-pages/)
Connectors — Available Streams (src/static-pages/connectors/available-streams/)
AvailableStreamItem— appends(Supports Re-import)after sync-mode parenthetical whensupportsReimport === true.
Connectors — Schema Table (src/static-pages/connectors/schema-table/)
StreamCardHeader— rendersSupports Re-importbadge (same styling as sync-mode badges) for parent streams withsupportsReimport === true.schema-streams-utils.ts— exportsSTREAM_REIMPORT_LABELandformatAvailableStreamReimportSuffix.
Generate Scripts (src/app/generate-connectors-script/)
ETL connector meta generation (pnpm gen:connectors-meta)
- Phase 1 (sources-driven): For each entry in
src/app/connectors-source/sources-list.json, writeoverview.json,features.json, andschema-streams.json(when streams non-empty) todocs/connectors-meta/etl/{toKebabCase(sourceName)}/. - Phase 2 (docs-driven): Scan
docs/connectors/for ETL connector leaves; scaffoldoverview.tsonly when missing (static merge module for MDX — not overwritten on later runs). - No docs validation: Orphan meta dirs and missing docs pages are acceptable; build fails on bad MDX import paths.
- Helpers:
getEtlMetaEntriesFromSourcesList,generateEtlConnectorsMetainsrc/app/generate-connectors-script/runner/.
Explorer catalog overview lookup
loadConnectorPageOverviewFromDir(connectorDir, leafName, etlMetaEntries)— merges pageoverview.jsonwith ETL meta read fromdocs/connectors-meta/etl/{metaKebabName}/overview.json.- Doc-only connectors (no
sources-listentry): returns pageoverview.jsononly. - Missing meta: throws with path hint and
pnpm gen:connectors-metaremediation (no silent fallback).
Schema streams generation
- Input:
src/app/connectors-source/sources-list.jsonstream objects (includessupportsReimport). - Output:
docs/connectors-meta/etl/{connector}/schema-streams.jsonviapnpm gen:connectors-meta. - Passthrough:
generateConnectorsMetawritessource.streamswithout stripping optional fields.