332 lines
11 KiB
Markdown
332 lines
11 KiB
Markdown
# Graph Report - ESPDocs (2026-08-26)
|
|
|
|
## Corpus Check
|
|
- 76 files · ~706,036 words
|
|
- Verdict: corpus is large enough that graph structure adds value.
|
|
|
|
## Summary
|
|
- 908 nodes · 1593 edges · 105 communities (74 shown, 31 thin omitted)
|
|
- Extraction: 99% EXTRACTED · 1% INFERRED · 0% AMBIGUOUS · INFERRED: 21 edges (avg confidence: 0.54)
|
|
- Token cost: 0 input · 0 output
|
|
|
|
## Graph Freshness
|
|
- Built from commit: `e347a95d`
|
|
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
|
- Run `graphify update .` after code changes (no API cost).
|
|
|
|
## Community Hubs (Navigation)
|
|
- paged.polyfill.js
|
|
- Layout
|
|
- AtPage
|
|
- Page
|
|
- .push
|
|
- dependencies
|
|
- .replace
|
|
- .indexOf
|
|
- Sheet
|
|
- peek
|
|
- Breaks
|
|
- Queue
|
|
- allocateCursor
|
|
- ESPDocs - Documentação ESP32 em Português
|
|
- isNameStart
|
|
- Diretrizes de tema: claro e escuro
|
|
- internalMatch
|
|
- Previewer
|
|
- auditar-temas.mjs
|
|
- layout.jsx
|
|
- buildGroupMatchGraph
|
|
- getCharCode
|
|
- PinRestrictions.jsx
|
|
- eslint.config.mjs
|
|
- compilerOptions
|
|
- requireKeys
|
|
- outOfRange
|
|
- testNode
|
|
- page.jsx
|
|
- page.jsx
|
|
- esp-matter.c
|
|
- seo.js
|
|
- consumeB$1
|
|
- processStructure
|
|
- generate$2
|
|
- getVendorPrefix
|
|
- layout.jsx
|
|
- layout.jsx
|
|
- layout.jsx
|
|
- layout.jsx
|
|
- page.jsx
|
|
- esp-nn.c
|
|
- matchSyntax
|
|
- consumeNumber$5
|
|
- strcmp
|
|
- readSequence
|
|
- patchAtrules
|
|
- CLAUDE.md
|
|
- next.config.mjs
|
|
- postcss.config.mjs
|
|
- consumeDeclaration
|
|
- consumeRaw$4
|
|
- createParseContext
|
|
- dumpAtruleMapSyntax
|
|
- isProtoString
|
|
- getWalkersFromStructure
|
|
- isDelim
|
|
- isSelectorValid
|
|
- OverflowContentError
|
|
- RenderResult
|
|
- UndisplayedFilter
|
|
- esp-zigbee.c
|
|
- Hook
|
|
- write_cb
|
|
- ContentParser
|
|
- componentRegistryData.js
|
|
- esp-now.c
|
|
- Following
|
|
- diagnosticoData.js
|
|
- eqStr
|
|
- Lists
|
|
- layout.jsx
|
|
- layout.jsx
|
|
- layout.jsx
|
|
- layout.jsx
|
|
- glossarioData.js
|
|
- consumeRaw$4
|
|
- dumpAtruleMapSyntax
|
|
- requireValidateSymbol
|
|
|
|
## God Nodes (most connected - your core abstractions)
|
|
1. `AtPage` - 39 edges
|
|
2. `walk()` - 27 edges
|
|
3. `Layout` - 21 edges
|
|
4. `Page` - 18 edges
|
|
5. `Footnotes` - 18 edges
|
|
6. `Chunker` - 17 edges
|
|
7. `Counters` - 17 edges
|
|
8. `Sheet` - 16 edges
|
|
9. `createItem()` - 14 edges
|
|
10. `join()` - 14 edges
|
|
|
|
## Surprising Connections (you probably didn't know these)
|
|
- `ComponentRegistryPage()` --references--> `COMPONENTES_REGISTRY` [EXTRACTED]
|
|
app/componentes/page.jsx → lib/componentRegistryData.js
|
|
|
|
## Import Cycles
|
|
- None detected.
|
|
|
|
## Communities (105 total, 31 thin omitted)
|
|
|
|
### Community 0 - "paged.polyfill.js"
|
|
Cohesion: 0.02
|
|
Nodes (23): consumeDeclaration(), consumeRawDeclaration(), NOTE: The order of the mappings is NOT guaranteed., TODO: should consume block content as Raw?, TODO: fall back to mutation observer?, TODO: not sure we should support this hack, TODO: check value is an ident, TODO: produce a node with Delim node type (+15 more)
|
|
|
|
### Community 1 - "Layout"
|
|
Cohesion: 0.06
|
|
Nodes (25): breakInsideAvoidParentNode(), BreakToken, cloneNode(), findElement(), findRef(), Footnotes, getBoundingClientRect(), getClientRects() (+17 more)
|
|
|
|
### Community 2 - "AtPage"
|
|
Cohesion: 0.05
|
|
Nodes (11): append(), AtPage, createItem(), CSSValueToString(), PageCounterIncrement, PositionFixed, PrintMedia, ScriptsFilter (+3 more)
|
|
|
|
### Community 3 - "Page"
|
|
Cohesion: 0.09
|
|
Nodes (8): ConnectionsDiagram(), FILTER_CATEGORIES, type_colors, Chunker, dump(), forEachToken(), Page, requirePolyfill()
|
|
|
|
### Community 4 - ".push"
|
|
Cohesion: 0.11
|
|
Nodes (14): collectWarning(), computeSourceURL(), Counters, createNodeStructureChecker(), isAbsolute(), join(), normalize(), number() (+6 more)
|
|
|
|
### Community 5 - "dependencies"
|
|
Cohesion: 0.05
|
|
Nodes (39): eslint, eslint-config-next, @eslint/eslintrc, googleapis, lucide-react, next, next-themes, dependencies (+31 more)
|
|
|
|
### Community 6 - ".replace"
|
|
Cohesion: 0.16
|
|
Nodes (9): attr(), child(), cleanPseudoContent(), defer(), NthOfType, parseSourceMapInput(), querySelectorEscape(), TargetCounters (+1 more)
|
|
|
|
### Community 7 - ".indexOf"
|
|
Cohesion: 0.07
|
|
Nodes (13): ArraySet$1(), compareByGeneratedPositionsInflated(), func(), generatedPositionAfter(), getArg(), MappingList$1(), regroupTerms(), relative() (+5 more)
|
|
|
|
### Community 9 - "peek"
|
|
Cohesion: 0.22
|
|
Nodes (18): charCode(), customPropertyName(), idSelector(), maybeMultiplied(), maybeToken(), parse$2(), peek(), readGroup() (+10 more)
|
|
|
|
### Community 10 - "Breaks"
|
|
Cohesion: 0.09
|
|
Nodes (16): Breaks, CommentsFilter, displayedElementAfter(), displayedElementBefore(), elementAfter(), elementBefore(), filterTree(), getNodeWithNamedPage() (+8 more)
|
|
|
|
### Community 11 - "Queue"
|
|
Cohesion: 0.15
|
|
Nodes (7): Queue, requireEs6Symbol(), requireIsArguments(), requireIsFunction(), requireIsImplemented(), requireIsString(), requireShim$1()
|
|
|
|
### Community 12 - "allocateCursor"
|
|
Cohesion: 0.21
|
|
Nodes (9): allocateCursor(), appendOrAssign(), appendOrAssignOrNull(), copy(), createTypeIterator(), deepAssign(), isObject$2(), mix$1() (+1 more)
|
|
|
|
### Community 13 - "ESPDocs - Documentação ESP32 em Português"
|
|
Cohesion: 0.13
|
|
Nodes (14): 👤 Autor, Configuração do Marketplace (Opcional), 🤝 Contribuindo, 🚀 Deploy on Vercel, ⚠️ Disclaimer, ESPDocs - Documentação ESP32 em Português, 📁 Estrutura do Projeto, Executar em Desenvolvimento (+6 more)
|
|
|
|
### Community 14 - "isNameStart"
|
|
Cohesion: 0.15
|
|
Nodes (13): isDigit$5(), isHexDigit$4(), isIdentifierStart$2(), isLetter(), isLowercaseLetter(), isName$2(), isNameStart(), isNewline$1() (+5 more)
|
|
|
|
### Community 15 - "Diretrizes de tema: claro e escuro"
|
|
Cohesion: 0.17
|
|
Nodes (11): 1. Só existem os tons declarados, 2. A regra da simetria, 3. Pares canônicos por papel, 4.1. Botão nunca inverte preto ↔ branco, 4.2. Painel de destaque acompanha o tema, 4.3. Separação de superfície no tema claro, 4. Exceção: superfícies escuras nos dois temas, 5. Cor de série vem do dado, não da classe (+3 more)
|
|
|
|
### Community 16 - "internalMatch"
|
|
Cohesion: 0.20
|
|
Nodes (11): areStringsEqualCaseInsensitive(), buildLoc(), fromLoc(), internalMatch(), isCommaContextEnd(), isCommaContextStart(), isContextEdgeDelim(), locateMismatch() (+3 more)
|
|
|
|
### Community 17 - "Previewer"
|
|
Cohesion: 0.16
|
|
Nodes (6): Handlers, Previewer, createIco(), run(), svgContent, svgPath
|
|
|
|
### Community 18 - "auditar-temas.mjs"
|
|
Cohesion: 0.48
|
|
Nodes (6): arquivos(), contraste(), coresFixasInline(), ESCALA, luminancia(), main()
|
|
|
|
### Community 19 - "layout.jsx"
|
|
Cohesion: 0.33
|
|
Nodes (4): inter, metadata, outfit, viewport
|
|
|
|
### Community 20 - "buildGroupMatchGraph"
|
|
Cohesion: 0.53
|
|
Nodes (6): buildGroupMatchGraph(), buildMatchGraph$1(), buildMultiplierMatchGraph(), createCondition(), isEnumCapatible(), isFunctionType()
|
|
|
|
### Community 21 - "getCharCode"
|
|
Cohesion: 0.53
|
|
Nodes (6): consumeBadUrlRemnants$1(), consumeEscaped$1(), consumeName$1(), getCharCode(), getNewlineLength$1(), tokenize$3()
|
|
|
|
### Community 23 - "PinRestrictions.jsx"
|
|
Cohesion: 0.60
|
|
Nodes (4): derivarGrupos(), GRUPOS, PinRestrictions(), rotuloDoPino()
|
|
|
|
### Community 24 - "eslint.config.mjs"
|
|
Cohesion: 0.40
|
|
Nodes (4): compat, __dirname, eslintConfig, __filename
|
|
|
|
### Community 25 - "compilerOptions"
|
|
Cohesion: 0.40
|
|
Nodes (4): compilerOptions, paths, @/*, ./*
|
|
|
|
### Community 26 - "requireKeys"
|
|
Cohesion: 0.40
|
|
Nodes (5): assign(), requireIsImplemented$1(), requireKeys(), requireShim$4(), requireShim$5()
|
|
|
|
### Community 27 - "outOfRange"
|
|
Cohesion: 0.40
|
|
Nodes (5): dimension(), integer(), isPostfixIeHack(), outOfRange(), percentage()
|
|
|
|
### Community 28 - "testNode"
|
|
Cohesion: 0.40
|
|
Nodes (4): isKeyword(), isProperty(), isType(), testNode()
|
|
|
|
### Community 29 - "page.jsx"
|
|
Cohesion: 0.67
|
|
Nodes (3): categoryIcons, Comparacao(), valorDe()
|
|
|
|
### Community 31 - "page.jsx"
|
|
Cohesion: 0.50
|
|
Nodes (4): getOptionIcon(), iconMap, PRESETS, Seletor()
|
|
|
|
### Community 34 - "consumeB$1"
|
|
Cohesion: 0.50
|
|
Nodes (4): checkInteger$1(), consumeB$1(), isDelim$1(), skipSC()
|
|
|
|
### Community 36 - "generate$2"
|
|
Cohesion: 0.50
|
|
Nodes (4): generate$2(), generateMultiplier(), generateSequence(), generateTypeOpts()
|
|
|
|
### Community 37 - "getVendorPrefix"
|
|
Cohesion: 0.67
|
|
Nodes (4): getKeywordDescriptor(), getPropertyDescriptor(), getVendorPrefix(), isCustomProperty$1()
|
|
|
|
### Community 49 - "matchSyntax"
|
|
Cohesion: 0.67
|
|
Nodes (3): buildMatchResult(), matchSyntax(), valueHasVar()
|
|
|
|
### Community 50 - "consumeNumber$5"
|
|
Cohesion: 0.67
|
|
Nodes (3): cmpChar$5(), consumeNumber$5(), findDecimalNumberEnd()
|
|
|
|
### Community 51 - "strcmp"
|
|
Cohesion: 0.67
|
|
Nodes (3): compareByGeneratedPositionsDeflated(), compareByOriginalPositions(), strcmp()
|
|
|
|
### Community 52 - "readSequence"
|
|
Cohesion: 0.67
|
|
Nodes (3): consumeRaw(), parentheses(), readSequence()
|
|
|
|
### Community 53 - "patchAtrules"
|
|
Cohesion: 0.67
|
|
Nodes (3): patchAtrules(), patchDictionary(), unpackSyntaxes()
|
|
|
|
### Community 69 - "consumeDeclaration"
|
|
Cohesion: 0.17
|
|
Nodes (4): CodeExample(), Polisher, request(), startsWith()
|
|
|
|
### Community 70 - "consumeRaw$4"
|
|
Cohesion: 0.49
|
|
Nodes (13): auditarContrasteEClasses(), auditarImagens(), auditarLinksEInteracoes(), auditarPerformanceConfigs(), auditarRotasInternas(), aviso(), buscarArquivos(), CORES (+5 more)
|
|
|
|
### Community 72 - "dumpAtruleMapSyntax"
|
|
Cohesion: 0.33
|
|
Nodes (5): pastaModulo, raiz, saida, servidor, TIPOS
|
|
|
|
### Community 82 - "UndisplayedFilter"
|
|
Cohesion: 0.28
|
|
Nodes (3): calculateSpecificity(), cleanSelector(), UndisplayedFilter
|
|
|
|
### Community 83 - "esp-zigbee.c"
|
|
Cohesion: 0.25
|
|
Nodes (5): esp_zb_app_signal_msg_t, esp_zb_zcl_set_attr_value_message_t, esp_err_t, esp_zb_app_signal_handler(), zb_attribute_handler()
|
|
|
|
### Community 84 - "Hook"
|
|
Cohesion: 0.25
|
|
Nodes (3): Handler, Hook, invokeForType()
|
|
|
|
### Community 85 - "write_cb"
|
|
Cohesion: 0.29
|
|
Nodes (5): esp_rmaker_device_t, esp_rmaker_param_val_t, esp_rmaker_write_ctx_t, esp_err_t, write_cb()
|
|
|
|
### Community 87 - "componentRegistryData.js"
|
|
Cohesion: 0.33
|
|
Nodes (4): ComponentRegistryPage(), CATEGORIAS_COMPONENTES, COMPONENTES_REGISTRY, GUIA_COMPONENT_MANAGER
|
|
|
|
### Community 88 - "esp-now.c"
|
|
Cohesion: 0.40
|
|
Nodes (4): esp_now_recv_info_t, esp_now_send_status_t, on_data_recv(), on_data_sent()
|
|
|
|
### Community 90 - "diagnosticoData.js"
|
|
Cohesion: 0.40
|
|
Nodes (4): categoriasDiagnostico, errosCatalogo, regrasDecodificadorLog, sintomasRapidos
|
|
|
|
### Community 91 - "eqStr"
|
|
Cohesion: 0.50
|
|
Nodes (5): calc(), consumeFunction(), customIdent(), eqStr(), eqStrAny()
|
|
|
|
## Knowledge Gaps
|
|
- **94 isolated node(s):** `metadata`, `metadata`, `faqs`, `categoryIcons`, `metadata` (+89 more)
|
|
These have ≤1 connection - possible missing edges or undocumented components.
|
|
- **31 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
|
|
|
## Suggested Questions
|
|
_Questions this graph is uniquely positioned to answer:_
|
|
|
|
- **Why does `AtPage` connect `AtPage` to `paged.polyfill.js`, `consumeDeclaration`, `.indexOf`?**
|
|
_High betweenness centrality (0.037) - this node is a cross-community bridge._
|
|
- **Why does `Page` connect `Page` to `paged.polyfill.js`, `.replace`?**
|
|
_High betweenness centrality (0.025) - this node is a cross-community bridge._
|
|
- **Why does `Chunker` connect `Page` to `paged.polyfill.js`, `consumeDeclaration`?**
|
|
_High betweenness centrality (0.019) - this node is a cross-community bridge._
|
|
- **What connects `metadata`, `metadata`, `faqs` to the rest of the system?**
|
|
_94 weakly-connected nodes found - possible documentation gaps or missing edges._
|
|
- **Should `paged.polyfill.js` be split into smaller, more focused modules?**
|
|
_Cohesion score 0.02247191011235955 - nodes in this community are weakly interconnected._
|
|
- **Should `Layout` be split into smaller, more focused modules?**
|
|
_Cohesion score 0.05608322026232474 - nodes in this community are weakly interconnected._
|
|
- **Should `AtPage` be split into smaller, more focused modules?**
|
|
_Cohesion score 0.05238095238095238 - nodes in this community are weakly interconnected._ |