Refactoring round one: HttpFontStore/HttpSoundStore/HttpTextureStore collapse into a generic HttpFileStore over a FileStore contract; fontImport/soundImport/textureImport share assetImport with an ImportKind per sort; ImagePicker/FontPicker/SoundPicker sit on FilePicker and describe only their row. The group/comment drag logic leaves GraphCanvas for annotationDrag.ts (with its own unit test), declaredRows.ts replaces the duplicated row build in particles.ts and shaders.ts, and dead code in font/sound/compile/emission/transform/actions is gone. README: asset list, check count 958, the two-job CI, the Scenes wiki page. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
10 lines
385 B
TypeScript
10 lines
385 B
TypeScript
import type { FileStore, StoredFile, UploadedFile } from './FileStore';
|
|
|
|
/**
|
|
* Stored in `data/sounds/` as `{sha256}.{mp3|ogg|wav|m4a}`, never re-encoded. How long a sound
|
|
* plays is nowhere in here, because only a decoder knows that.
|
|
*/
|
|
export type UploadedSound = UploadedFile;
|
|
export type StoredSound = StoredFile;
|
|
export type SoundStore = FileStore<UploadedSound, StoredSound>;
|