diff options
| author | cashmere <cashmere@autistici.org> | 2026-07-27 01:21:20 +0200 |
|---|---|---|
| committer | cashmere <cashmere@autistici.org> | 2026-07-27 01:21:20 +0200 |
| commit | 30a36e45686db503fded68e4da5d4c465a06f978 (patch) | |
| tree | 2dbe5e2aaef543155b021f5f4c504fad77b40648 /apps/web/src/project/transfer/index.ts | |
| parent | d55d2583a71ae35fa8d0d1bfbec975e67e66aafa (diff) | |
| download | opencut-30a36e45686db503fded68e4da5d4c465a06f978.tar.gz | |
feat: single-file project import/export (.ocp)
fflate zip container: project.json (serialized project incl. schema
version) + media files with a manifest. Export gathers all project
media (missing blobs warn, never abort) after save-flush; import
validates everything before any write, migrates older archives through
the storage migration registry, remaps media ids, and creates a new
project with rollback on failure. Entry points: projects page
import/export, editor header menu, export-project-archive action.
29 tests incl. full round-trip.
Diffstat (limited to 'apps/web/src/project/transfer/index.ts')
| -rw-r--r-- | apps/web/src/project/transfer/index.ts | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/apps/web/src/project/transfer/index.ts b/apps/web/src/project/transfer/index.ts new file mode 100644 index 00000000..81d97a6a --- /dev/null +++ b/apps/web/src/project/transfer/index.ts @@ -0,0 +1,16 @@ +export { + PROJECT_ARCHIVE_EXTENSION, + ProjectArchiveError, +} from "./container"; +export type { + ArchivedMediaEntry, + ArchivedMediaMetadata, +} from "./container"; +export { + exportProjectArchive, + importProjectArchive, +} from "./archive"; +export type { + ExportProjectArchiveResult, + ImportProjectArchiveResult, +} from "./archive"; |
