eslint rule suggestion: report an Index that the system's own query already covers
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- eslint, typescript
- Ambito
- tooling
Direzione di ricerca
Start by reading the existing ESLint plugin and rule entry points; the issue notes that the plugin already sees system declarations and lookups. Check related issues #233 and #234 for context, then add tests for the listed report and non-report cases. Done means the rule reports only qualifying indexes at Index.create and leaves the specified legitimate indexes alone.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
Suggestion for the planned ESLint rule: report an Index that a plain query already covers. An index is kept up to date on every structural change and costs memory, so defining one for something a system can read with components: { with, not } is waste, and it is easy to write by habit.
Case
A system that despawns every entity carrying a tag was written with an index:
const transients = Index.create({ key: [], components: { with: [frameTransient] } });
export const endFrame = System.create({ lookup: { transients: { index: transients } } }, ({ commands, lookup }) => {
const all = lookup.transients();
for (let i = 0; i < all.length; i++) commands.despawn(all.at(i).entity);
});
A row system reads the same entities with nothing to maintain:
export const endFrame = System.create({ components: { with: [frameTransient] } }, (row, { commands }) => {
commands.despawn(row.entity);
});
Rule
Report an index when all of these hold:
- it has
key: []and is notunique, - exactly one system uses it, through a lookup,
- the index's
with(andnot) is covered by that system's owncomponentsdeclaration, so the system already matches those entities, - the body only iterates the lookup's rows (
for (i < rows.length) rows.at(i)), with no keyed access.
Message: "this index is replaceable by the system's own components query; make it a row system" (or the equivalent for per-run systems), pointing at the Index.create.
What it must not report
An all-rows index (key: []) is legitimate when:
- several systems read it,
- a per-run system needs the whole set before it acts (for example, "is there any request for X?" across all rows), which a row system, called once per row, can't express,
- it is read from a system whose own declaration doesn't match those entities (a different archetype).
An index with a key (a keyed or unique lookup) is never reported.
Notes
- It could also be a compiler warning, since the plugin already sees every system's declaration and lookups, but a lint rule fits better: the first check is a style judgment and the fix depends on the body.
- Related: https://github.com/adobe/data/issues/234 (the widened-access fallback) and https://github.com/adobe/data/issues/233 (describing inferred access), both about making what the build infers visible.
- Lingua principale
- TypeScript
- Stelle
- 12
- Fork
- 8
- Merge medio
- 11h 2m
- PR unite (30g)
- 23
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di adobe/data
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
ecs: let kernels issue commands through helpers (component lists, symbol-keyed values, void helpers)Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 15/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 30/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 8/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 22/100
I maintainer di solito rispondono entro 1 giorno
Issue simili
-
ci-cd desktop size:low telemetry-improvement telemetry-round-1
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
vfarcic/dot-agent-deck#2079 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno
-
Broken links in the docsAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 83/100
I maintainer di solito rispondono entro 1 giorno
-
status:in-linear
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
n8n-io/n8n#43006 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
🔊 a11y
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
betagouv/mon-entreprise#4726 ·
I maintainer di solito rispondono entro 9 giorni