Skip to content

Commit 2257ca2

Browse files
committed
make storage versioning per-project + few other refactors
1 parent 490fc17 commit 2257ca2

File tree

17 files changed

+297
-536
lines changed

17 files changed

+297
-536
lines changed

.cursor/rules/codebase-index.mdc

Lines changed: 142 additions & 139 deletions
Original file line numberDiff line numberDiff line change
@@ -454,115 +454,115 @@ rate-limit.ts
454454
scenes.ts
455455
export function getMainScene({ scenes }: { scenes: TScene[] }): TScene | null
456456
export function ensureMainScene({ scenes }: { scenes: TScene[] }): TScene[]
457-
export function buildDefaultScene({
458-
name,
459-
isMain,
460-
}: {
461-
name: string;
462-
isMain: boolean;
457+
export function buildDefaultScene({
458+
name,
459+
isMain,
460+
}: {
461+
name: string;
462+
isMain: boolean;
463463
}): TScene
464-
export function canDeleteScene({ scene }: { scene: TScene }): {
465-
canDelete: boolean;
466-
reason?: string;
467-
}
468-
export function getFallbackSceneAfterDelete({
469-
scenes,
470-
deletedSceneId,
471-
currentSceneId,
472-
}: {
473-
scenes: TScene[];
474-
deletedSceneId: string;
475-
currentSceneId: string | null;
464+
export function canDeleteScene({ scene }: { scene: TScene }): {
465+
canDelete: boolean;
466+
reason?: string;
467+
}
468+
export function getFallbackSceneAfterDelete({
469+
scenes,
470+
deletedSceneId,
471+
currentSceneId,
472+
}: {
473+
scenes: TScene[];
474+
deletedSceneId: string;
475+
currentSceneId: string | null;
476476
}): TScene | null
477-
export function findCurrentScene({
478-
scenes,
479-
currentSceneId,
480-
}: {
481-
scenes: TScene[];
482-
currentSceneId: string;
477+
export function findCurrentScene({
478+
scenes,
479+
currentSceneId,
480+
}: {
481+
scenes: TScene[];
482+
currentSceneId: string;
483483
}): TScene | null
484-
export function getProjectDurationFromScenes({
485-
scenes,
486-
}: {
487-
scenes: TScene[];
484+
export function getProjectDurationFromScenes({
485+
scenes,
486+
}: {
487+
scenes: TScene[];
488488
}): number
489-
export function updateSceneInArray({
490-
scenes,
491-
sceneId,
492-
updates,
493-
}: {
494-
scenes: TScene[];
495-
sceneId: string;
496-
updates: Partial<TScene>;
489+
export function updateSceneInArray({
490+
scenes,
491+
sceneId,
492+
updates,
493+
}: {
494+
scenes: TScene[];
495+
sceneId: string;
496+
updates: Partial<TScene>;
497497
}): TScene[]
498498

499499
time.ts
500-
export function roundToFrame({
501-
time,
502-
fps,
503-
}: {
504-
time: number;
505-
fps: number;
500+
export function roundToFrame({
501+
time,
502+
fps,
503+
}: {
504+
time: number;
505+
fps: number;
506506
}): number
507-
export function formatTimeCode({
508-
timeInSeconds,
509-
format = "HH:MM:SS:CS",
510-
fps,
511-
}: {
512-
timeInSeconds: number;
513-
format?: TTimeCode;
514-
fps?: number;
507+
export function formatTimeCode({
508+
timeInSeconds,
509+
format = "HH:MM:SS:CS",
510+
fps,
511+
}: {
512+
timeInSeconds: number;
513+
format?: TTimeCode;
514+
fps?: number;
515515
}): string
516-
export function parseTimeCode({
517-
timeCode,
518-
format = "HH:MM:SS:CS",
519-
fps,
520-
}: {
521-
timeCode: string;
522-
format?: TTimeCode;
523-
fps: number;
516+
export function parseTimeCode({
517+
timeCode,
518+
format = "HH:MM:SS:CS",
519+
fps,
520+
}: {
521+
timeCode: string;
522+
format?: TTimeCode;
523+
fps: number;
524524
}): number | null
525-
export function guessTimeCodeFormat({
526-
timeCode,
527-
}: {
528-
timeCode: string;
525+
export function guessTimeCodeFormat({
526+
timeCode,
527+
}: {
528+
timeCode: string;
529529
}): TTimeCode | null
530-
export function timeToFrame({
531-
time,
532-
fps,
533-
}: {
534-
time: number;
535-
fps: number;
530+
export function timeToFrame({
531+
time,
532+
fps,
533+
}: {
534+
time: number;
535+
fps: number;
536536
}): number
537-
export function frameToTime({
538-
frame,
539-
fps,
540-
}: {
541-
frame: number;
542-
fps: number;
537+
export function frameToTime({
538+
frame,
539+
fps,
540+
}: {
541+
frame: number;
542+
fps: number;
543543
}): number
544-
export function snapTimeToFrame({
545-
time,
546-
fps,
547-
}: {
548-
time: number;
549-
fps: number;
544+
export function snapTimeToFrame({
545+
time,
546+
fps,
547+
}: {
548+
time: number;
549+
fps: number;
550550
}): number
551-
export function getSnappedSeekTime({
552-
rawTime,
553-
duration,
554-
fps,
555-
}: {
556-
rawTime: number;
557-
duration: number;
558-
fps: number;
551+
export function getSnappedSeekTime({
552+
rawTime,
553+
duration,
554+
fps,
555+
}: {
556+
rawTime: number;
557+
duration: number;
558+
fps: number;
559559
}): number
560-
export function getLastFrameTime({
561-
duration,
562-
fps,
563-
}: {
564-
duration: number;
565-
fps: number;
560+
export function getLastFrameTime({
561+
duration,
562+
fps,
563+
}: {
564+
duration: number;
565+
fps: number;
566566
}): number
567567

568568
## apps/web/src/lib/actions
@@ -689,28 +689,27 @@ parser.ts
689689
## apps/web/src/lib/media
690690

691691
audio.ts
692-
export type CollectedAudioElement = Omit<
693-
AudioElement,
694-
"type" | "mediaId" | "volume" | "id" | "name" | "sourceType" | "sourceUrl"
695-
...
692+
export type CollectedAudioElement = Omit<
693+
AudioElement,
694+
"type" | "mediaId" | "volume" | "id" | "name" | "sourceType" | "sourceUrl...
696695
export function createAudioContext(): AudioContext
697696
export interface DecodedAudio {
698697
samples: Float32Array
699698
sampleRate: number
700699
}
701-
export function decodeAudioToFloat32({
702-
audioBlob,
703-
}: {
704-
audioBlob: Blob;
700+
export function decodeAudioToFloat32({
701+
audioBlob,
702+
}: {
703+
audioBlob: Blob;
705704
}): Promise<DecodedAudio>
706-
export function collectAudioElements({
707-
tracks,
708-
mediaAssets,
709-
audioContext,
710-
}: {
711-
tracks: TimelineTrack[];
712-
mediaAssets: MediaAsset[];
713-
audioContext: AudioContext;
705+
export function collectAudioElements({
706+
tracks,
707+
mediaAssets,
708+
audioContext,
709+
}: {
710+
tracks: TimelineTrack[];
711+
mediaAssets: MediaAsset[];
712+
audioContext: AudioContext;
714713
}): Promise<CollectedAudioElement[]>
715714
export interface AudioClipSource {
716715
id: string
@@ -722,32 +721,32 @@ audio.ts
722721
trimEnd: number
723722
muted: boolean
724723
}
725-
export function collectAudioMixSources({
726-
tracks,
727-
mediaAssets,
728-
}: {
729-
tracks: TimelineTrack[];
730-
mediaAssets: MediaAsset[];
724+
export function collectAudioMixSources({
725+
tracks,
726+
mediaAssets,
727+
}: {
728+
tracks: TimelineTrack[];
729+
mediaAssets: MediaAsset[];
731730
}): Promise<AudioMixSource[]>
732-
export function collectAudioClips({
733-
tracks,
734-
mediaAssets,
735-
}: {
736-
tracks: TimelineTrack[];
737-
mediaAssets: MediaAsset[];
731+
export function collectAudioClips({
732+
tracks,
733+
mediaAssets,
734+
}: {
735+
tracks: TimelineTrack[];
736+
mediaAssets: MediaAsset[];
738737
}): Promise<AudioClipSource[]>
739-
export function createTimelineAudioBuffer({
740-
tracks,
741-
mediaAssets,
742-
duration,
743-
sampleRate = 44100,
744-
audioContext,
745-
}: {
746-
tracks: TimelineTrack[];
747-
mediaAssets: MediaAsset[];
748-
duration: number;
749-
sampleRate?: number;
750-
audioContext?: AudioContext;
738+
export function createTimelineAudioBuffer({
739+
tracks,
740+
mediaAssets,
741+
duration,
742+
sampleRate = 44100,
743+
audioContext,
744+
}: {
745+
tracks: TimelineTrack[];
746+
mediaAssets: MediaAsset[];
747+
duration: number;
748+
sampleRate?: number;
749+
audioContext?: AudioContext;
751750
}): Promise<AudioBuffer | null>
752751

753752
media-utils.ts
@@ -977,10 +976,10 @@ element-utils.ts
977976
}): { trackId: string; elementId: string }[]
978977

979978
index.ts
980-
export function calculateTotalDuration({
981-
tracks,
982-
}: {
983-
tracks: TimelineTrack[];
979+
export function calculateTotalDuration({
980+
tracks,
981+
}: {
982+
tracks: TimelineTrack[];
984983
}): number
985984

986985
ruler-utils.ts
@@ -1220,6 +1219,11 @@ indexeddb-adapter.ts
12201219
async getAll(): Promise<T[]>
12211220
async clear(): Promise<void>
12221221
}
1222+
export function deleteDatabase({
1223+
dbName,
1224+
}: {
1225+
dbName: string;
1226+
}): Promise<void>
12231227

12241228
opfs-adapter.ts
12251229
export class OPFSAdapter implements StorageAdapter<File> {
@@ -1256,7 +1260,6 @@ types.ts
12561260
fps?: number
12571261
ephemeral?: boolean
12581262
thumbnailUrl?: string
1259-
sourceStickerIconName?: string
12601263
}
12611264
export type SerializedScene = Omit<TScene, "createdAt" | "updatedAt"> & {
12621265
createdAt: string;

0 commit comments

Comments
 (0)