ecs-persistence: export the Matching type of spawn's match option

Ouverte Adaptée aux débutants
#255 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
72/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
Active
Stack technique
typescript
Domaine
data

Piste de recherche

L'export manque dans le point d'entrée du paquet index.ts d'ecs-persistence ; Matching est défini dans src/match/match.ts, donc ajoute export type { Matching } à cet endroit et vérifie qu'un consommateur peut l'importer. La seconde partie demande que l'erreur pour un index nommant un composant non couvert indique les noms du composant et de l'index ; repère où l'option match de spawn lève l'erreur « names a component the snapshot's trait doesn't cover ». C'est terminé lorsque le type est importable et que le message d'erreur nomme à la fois le composant et l'index.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Summary

@adobe/ecs-persistence's spawn takes match?: readonly Matching[], but Matching isn't exported from the package, so an application that forwards a match argument (a restore function that takes the indexes to match by) has to spell the type out as Index<{ readonly unique: true }>, which is what Matching is defined as in src/match/match.ts.

Where this came from (mecs)

loadTab(world, bytes, match?) and restoreTab(world, match?) pass the indexes through to spawn({ world, snapshot, match, update: true, entities: false }) (the #249 feature, which works well: the camera is made at startup and the saved place and look update it by name). I wanted the parameter typed readonly Matching[], imported from @adobe/ecs-persistence, so that the application's types follow the package's if its definition changes; it isn't exported, so I wrote readonly Index<{ readonly unique: true }>[] instead.

What I need

export type { Matching } from "./match/match.js" in ecs-persistence's index.ts.

A related gap in the same feature

match fails for an index whose key, with or not names a component the snapshot's trait doesn't cover. In mecs the natural index of a camera by name, Index.create({ key: [cameraName], unique: true, components: { with: CameraView } }), where CameraView includes View.target, View.projection and others that aren't part of the saved state, had to be reduced to with: [cameraName]. That is fine here (the failure is clear: "…names a component the snapshot's trait doesn't cover"), but the error could say which component and which index, since the usual fix is narrowing the index's with.

Langage dominant
TypeScript
Étoiles
12
Forks
8
Merge moyen
11 h 36 min
PR mergées (30 j)
21

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de adobe/data

Toutes les issues de adobe/data

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.