Qué depende de un archivo
GET https://seerepo.com/api/v1/repos/:repo/impact
Dice qué depende de un archivo, o de uno de sus exports, antes de que lo toques. En JavaScript y TypeScript sigue lo que el código de verdad nombra: un archivo que importa otro y solo usa otra cosa de él no cuenta. En otros lenguajes va por imports enteros, y lo dice.
Los tipos no se siguen: un archivo que solo usa un tipo de otro no sale aquí. Cuando rompes un tipo ya te avisa el compilador.
Petición
| Parámetro | Dónde | Descripción |
|---|---|---|
repo |
ruta | El id del repo, o dueño/nombre con %2F. |
path |
consulta | El archivo, desde la raíz del repo. |
name |
consulta | Opcional. Uno de sus exports. |
to |
consulta | Opcional. Otro archivo: un camino más corto desde él hasta este. |
curl "https://seerepo.com/api/v1/repos/6ad79fd8e89233277ded17c9/impact?path=lib/env.ts" \
-H "Authorization: Bearer $SEEREPO_KEY"
Respuesta
| Campo | Tipo | Descripción |
|---|---|---|
data.how |
string | symbols, por lo que de verdad se nombra, o files, por imports enteros. |
data.direct.total |
number | Los archivos que lo nombran ellos mismos. |
data.direct.files[] |
string | Hasta 30 de ellos. |
data.direct.names |
object | Qué exportaciones nombra cada uno de esos archivos, por archivo. Vacío cuando el lenguaje no tiene símbolos que seguir. |
data.reach.total |
number | Todos los archivos que dependen de él, directo o a través de otros. |
data.reach.modules[] |
object | Dónde viven: path, name y files, los de más primero. |
data.pages.total |
number | Las páginas a las que llega, la suya si es una. |
data.pages.routes[] |
object | Hasta 30: route y path. |
data.processes[] |
string | Los procesos a los que llega: web, worker. |
data.route |
array|null | Solo con to: los archivos desde ahí hasta este, o null si no hay camino. |
data.everyRequest.pages |
number | Solo en lo que el framework corre antes de cada página que le toca, como el middleware de Next: cuántas páginas tiene el repo. |
data.tests.total, data.tests.files[] |
number, string | Las pruebas que lo nombran, importándolo o simulándolo, y las cinco primeras. No están en direct ni en reach. |
Ejemplo
{
"status": "success",
"data": {
"path": "lib/env.ts",
"how": "symbols",
"direct": { "total": 2, "files": ["lib/mail.ts", "worker/index.ts"] },
"reach": { "total": 5, "modules": [{ "path": "/account", "name": "Cuenta", "files": 3 }] },
"pages": { "total": 1, "routes": [{ "route": "/settings", "path": "app/settings/page.tsx" }] },
"processes": ["web", "worker"]
}
}
Errores
| Estado | Código | Cuándo |
|---|---|---|
| 400 | bad_path |
No se dio ningún archivo. |
| 402 | plan_required |
El repo pasa de su tope y solo enseña su primer nivel. |
| 404 | unknown_file |
SeeRepo no leyó ese archivo como parte del producto. Eso no significa que nadie lo use. |
| 404 | unknown_language |
SeeRepo no sigue los imports de ese lenguaje. Eso no significa que nada dependa de él. |
| 404 | unknown_export |
El archivo no exporta ese nombre. El mensaje dice cuáles sí. |
| 404 | not_read_yet |
SeeRepo lo lee en el próximo push del repo. |