4.2 KiB
Error Codes
(no submodules)
Purpose
This module centralises every error code, metadata description, and severity level that the @suaveplan/audio-sprite-packer package can emit. By defining codes through the @suaveplan/error registry, consumers can rely on stable string identifiers instead of brittle message matching when handling failures. The module also exports a concrete AudioSpriteError class so that all sprite-packer exceptions share a single, recognisable type.
Features
- Typed error codes —
AUDIO_SPRITE_CODESprovides strongly-typed constants such asUNSUPPORTED_FORMATandCLIP_NOT_FOUND. - Per-code metadata —
AUDIO_SPRITE_ERROR_METADATAmaps every code to a human-readable description and a severity of"warning"or"error". - Dedicated exception class —
AudioSpriteErrorextendsSuaveplanErrorand carries theAudioSpriteErrorCodediscriminator. - Idempotent registration —
registerAudioSpriteErrorCodesmay be called repeatedly without side effects because the metadata record is frozen at module load time.
Usage: Basic Example
import { AudioSpriteError, AUDIO_SPRITE_CODES } from "@suaveplan/audio-sprite-packer";
function unpackClip(sprite: AudioSprite, name: string) {
const packer = createAudioSpritePacker({ adapter: new MyAdapter() });
try {
return packer.unpack(sprite, name);
} catch (err) {
if (err instanceof AudioSpriteError && err.code === AUDIO_SPRITE_CODES.CLIP_NOT_FOUND) {
console.warn(`Clip "${name}" missing from sprite`);
return null;
}
throw err;
}
}
Usage: Advanced Example
import {
AudioSpriteError,
AUDIO_SPRITE_CODES,
AUDIO_SPRITE_ERROR_METADATA,
} from "@suaveplan/audio-sprite-packer";
function handleSpriteError(err: unknown) {
if (err instanceof AudioSpriteError) {
const meta = AUDIO_SPRITE_ERROR_METADATA[err.code];
console.error(`[${meta.severity}] ${meta.description}`);
if (err.code === AUDIO_SPRITE_CODES.ABORTED) {
// Warning-level; safe to retry.
return "aborted";
}
throw err;
}
}
API Reference
AUDIO_SPRITE_CODES
A frozen record of error-code constants created via defineCodes("AUDIO_SPRITE", [...]).
UNSUPPORTED_FORMATDECODE_FAILEDENCODE_FAILEDCLIP_NOT_FOUNDINVALID_OPTIONSEMPTY_INPUTINVALID_MANIFESTABORTED
AudioSpriteErrorCode
type AudioSpriteErrorCode = (typeof AUDIO_SPRITE_CODES)[keyof typeof AUDIO_SPRITE_CODES];
The union of all values contained in AUDIO_SPRITE_CODES.
AudioSpriteErrorMetadata
interface AudioSpriteErrorMetadata {
readonly description: string;
readonly severity: "warning" | "error";
}
Describes the human-readable explanation and severity for a single error code.
AUDIO_SPRITE_ERROR_METADATA
const AUDIO_SPRITE_ERROR_METADATA: Readonly<Record<AudioSpriteErrorCode, AudioSpriteErrorMetadata>>
Frozen lookup table that maps every AudioSpriteErrorCode to its metadata. Useful for localising or logging errors without parsing exception messages.
AudioSpriteError
class AudioSpriteError extends SuaveplanError<AudioSpriteErrorCode> {}
The exception type thrown by @suaveplan/audio-sprite-packer. Its code property is constrained to AudioSpriteErrorCode, allowing consumers to branch on specific failure modes. The constructor is public (widened from the protected SuaveplanError base constructor).
Throws:
- This class is thrown, not caught internally.
registerAudioSpriteErrorCodes(): void
An idempotent hook that exists for compatibility with the @suaveplan/error registration lifecycle. The metadata is already frozen and exported, so the function body is empty. It is invoked automatically at module load time.
Implementation Notes
- The module depends on
@suaveplan/errorfordefineCodesand the baseSuaveplanErrorclass. AUDIO_SPRITE_ERROR_METADATAis frozen withObject.freezeso that downstream code cannot accidentally mutate severity or descriptions at runtime.registerAudioSpriteErrorCodesis called immediately after definition, ensuring the codes are available as soon as the module is imported.