Implement AST-based dependency extraction in FormulaVisitor.calculateDependencies (markdown-template)
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- typescript
Línea de trabajo
Start by reading packages/markdown-template/src/FormulaVisitor.ts and trace how calculateDependencies is called from templatemarkutil.ts and how dependencies is serialized and read back. The issue leaves the runtime parser and which identifiers count unresolved, so first settle those decisions in the discussion before implementing. Done means extracting the agreed dependencies from formula TypeScript while respecting the agreed handling of bindings and parse failures.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
FormulaVisitor.calculateDependencies(tsCode) in packages/markdown-template/src/FormulaVisitor.ts is a stub (// TODO!!) that always returns []. It's invoked during TemplateMark typing (templatemarkutil.ts → templateMarkTypingGen), which sets dependencies on every FormulaDefinition / ConditionalDefinition, and the value is serialized through markdown-html (ToHtmlStringVisitor.ts writes the dependencies attribute, rules.ts reads it back). Today that attribute is always an empty array.
Continuing the working discussion with @mttrbrts
Current state / safety
Traced consumers of the field across the org:
markdown-transform: only written (HTML attr), read back (rules.ts), or stripped (markdown-cicero/ToCommonMarkVisitor.tsdeletes it).template-engine: onlyTemplateMarkInterpreter.tsdoesdelete context.dependencies.
No code branches on the values, so implementing real extraction is self-contained with no regression surface — it only populates a field that is currently always empty.
Proposed approach
Extract root identifiers from the formula's TypeScript source (the param is named tsCode) via the AST rather than regex:
- Collect root identifiers that reference template variables / model, excluding locally-bound names, function params, and built-ins.
- Handle optional chaining (
a?.b?.c→ roota). - Return
[]on parse failure or unrecognized constructs (note: this changes the currentcatch, which throws — flagging so it's an explicit decision).
Open questions to scope before implementation
- Runtime parser:
typescriptis currently a devDependency of markdown-template. Preference for promoting the TS compiler API to a runtime dep vs. a lighter parser (e.g.@typescript-eslint/typescript-estree)? - Dependency definition: which identifier classes count — model/variable refs only, and are locally-declared bindings and function params always excluded?
- Cross-formula references: Devanshi noted formulas lack stable user-facing names, so these look out-of-scope for v1 — agreed to defer?
I can't make the Wednesday call, so opening this for async discussion per your
suggestion. Once (1) the runtime parser and (2) the dependency-definition
question are settled here, I'll scope the PR to those decisions.
- Lenguaje dominante
- TypeScript
- Estrellas
- 86
- Forks
- 69
- Merge medio
- 6 min
- PR fusionados (30 d)
- 3
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de accordproject/markdown-transform
-
@accordproject/markdown-it-template has a Nerq Trust Score of 68.0/100 — verified badge availableAbiertoStale
Dificultad 1/5 Menos de una hora Aptitud para principiantes 20/100
accordproject/markdown-transform#664 · 1 comentario ·
-
Stale
Dificultad 3/5 1-2 días Aptitud para principiantes 48/100
accordproject/markdown-transform#582 · 2 comentarios ·
-
Rename CiceroMark to AgreementMarkQuizá libre de nuevo @anablaz la tomó hace 980 días y no hay ningún pull request abierto. AbiertoStale
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
accordproject/markdown-transform#536 · 4 comentarios ·
-
Variable Name ConflictsAbiertoDifficulty: Challenging maintainer-engaged Priority: High ⚠️ Type: Bug 🐛
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
accordproject/markdown-transform#371 · 3 comentarios ·
-
Help Wanted 🆘 maintainer-engaged Type: Discussion 🗣 Type: Feature Request 🛍️ Type: Need Investigation 🔬
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
accordproject/markdown-transform#368 · 7 comentarios ·
Todos los issues de accordproject/markdown-transform
Issues similares
-
Mend: dependency security vulnerability
Dificultad 1/5 1-3 horas Aptitud para principiantes 65/100
fdm-monster/fdm-monster#5563 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
be-BOP-io-SA/be-BOP#2849 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 79/100
Los mantenedores suelen responder en 1 día
-
1️⃣ phase/under-investigation flaky/confirmed flaky/needs-decision type/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
growilabs/growi#12246 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
🐛 The Rulekeeper - An index run that gives up on the lock ends SucceededPosiblemente ocupada @github-actions la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
SSWConsulting/SSW.Rules#2809 · 1 comentario ·
Los mantenedores suelen responder en 1 día