tagged-error
Generate Effect TaggedError types for error handling. Use when adding new error types or improving error handling.
Installation
Suivez les instructions du dépôt pour votre agent. Consultez les fichiers et dépendances avant l’installation.
Voir la source ↗GuidesInstructions
Tagged Error Generator
Generate Effect Data.TaggedError types following project conventions.
Error Location
packages/wowlab-core/src/internal/errors/Errors.ts
Basic Error Template
import * as Data from "effect/Data";
export class MyError extends Data.TaggedError("MyError")<{
readonly message: string;
readonly cause?: unknown;
}> {}
Error with Context
import * as Branded from "../schemas/Branded.js";
import * as Entities from "../entities/index.js";
export class SpellNotFound extends Data.TaggedError("SpellNotFound")<{
readonly unitId: Branded.UnitID;
readonly spellId: number;
}> {}
export class CastFailed extends Data.TaggedError("CastFailed")<{
readonly reason: string;
readonly spell: Entities.Spell.Spell;
readonly caster?: Entities.Unit.Unit;
}> {}
Error Union Types
Group related errors:
export type RotationError =
| NoChargesAvailable
| SpellNotFound
| SpellOnCooldown
| UnitNotFound;
export type CombatLogError = QueueEmpty | HandlerError | EventValidationError;
Naming Conventions
- Error class:
{Thing}{Problem}- e.g.,SpellNotFound,CastFailed - Tag: Same as class name
- Include relevant context in payload (IDs, entities, messages)
Usage in Effects
import * as Errors from "@wowlab/core/Errors";
// Failing with error
yield *
Effect.fail(
new Errors.SpellNotFound({
unitId,
spellId,
}),
);
// In function signature
const cast = (
spellId: number,
): Effect.Effect<CastResult, Errors.SpellNotFound | Errors.SpellOnCooldown> =>
Effect.gen(function* () {
// ...
});
Instructions
- Identify what can fail
- Design payload with useful context
- Create error class with TaggedError
- Add to union type if applicable
- Update function signatures to include error
Exemples
Consultez les exemples du dépôt source.
Voir la source ↗Historique source
- Date d’indexation
- 2026-01-20
- Mise à jour de l’index
- 2026-01-30
- Branch
- main
Les dates concernent ce répertoire. Consultez le dépôt pour l’historique du code.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!