human2ai 0.1.6 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +1 -1
- package/README.md +1 -1
- package/dist/cli/main.js +74 -3
- package/dist/cli/main.js.map +1 -1
- package/dist/database/draft-version-errors.d.ts +6 -0
- package/dist/database/draft-version-errors.js +11 -0
- package/dist/database/draft-version-errors.js.map +1 -1
- package/dist/database/draft-version-store.js +17 -2
- package/dist/database/draft-version-store.js.map +1 -1
- package/dist/database/image-asset-repository.d.ts +5 -0
- package/dist/database/image-asset-repository.js +22 -4
- package/dist/database/image-asset-repository.js.map +1 -1
- package/dist/database/migrate.js +2 -0
- package/dist/database/migrate.js.map +1 -1
- package/dist/database/project-session-repository.d.ts +12 -1
- package/dist/database/project-session-repository.js +48 -11
- package/dist/database/project-session-repository.js.map +1 -1
- package/dist/database/session-preview-validation.js +37 -4
- package/dist/database/session-preview-validation.js.map +1 -1
- package/dist/database/session-storage-repository.d.ts +35 -0
- package/dist/database/session-storage-repository.js +281 -0
- package/dist/database/session-storage-repository.js.map +1 -0
- package/dist/database/ui-sketch-png-split-repository.d.ts +13 -0
- package/dist/database/ui-sketch-png-split-repository.js +123 -0
- package/dist/database/ui-sketch-png-split-repository.js.map +1 -0
- package/dist/database/workspace-settings-repository.d.ts +10 -0
- package/dist/database/workspace-settings-repository.js +30 -0
- package/dist/database/workspace-settings-repository.js.map +1 -0
- package/dist/domain/composition/clipboard.d.ts +3 -0
- package/dist/domain/composition/clipboard.js +30 -0
- package/dist/domain/composition/clipboard.js.map +1 -0
- package/dist/domain/composition/index.d.ts +1 -0
- package/dist/domain/composition/index.js +1 -0
- package/dist/domain/composition/index.js.map +1 -1
- package/dist/domain/session/canvas-edit-history.d.ts +2 -0
- package/dist/domain/session/canvas-edit-history.js +4 -0
- package/dist/domain/session/canvas-edit-history.js.map +1 -1
- package/dist/domain/session/capabilities.js +14 -0
- package/dist/domain/session/capabilities.js.map +1 -1
- package/dist/domain/session/storage.d.ts +22 -0
- package/dist/domain/session/storage.js +10 -0
- package/dist/domain/session/storage.js.map +1 -0
- package/dist/domain/session/types.d.ts +4 -0
- package/dist/domain/ui-sketch/clipboard.d.ts +2 -0
- package/dist/domain/ui-sketch/clipboard.js +21 -1
- package/dist/domain/ui-sketch/clipboard.js.map +1 -1
- package/dist/domain/ui-sketch/draft.js +22 -0
- package/dist/domain/ui-sketch/draft.js.map +1 -1
- package/dist/domain/ui-sketch/index.d.ts +1 -1
- package/dist/domain/ui-sketch/index.js +1 -1
- package/dist/domain/ui-sketch/index.js.map +1 -1
- package/dist/domain/ui-sketch/png-canvas.d.ts +25 -0
- package/dist/domain/ui-sketch/png-canvas.js +78 -0
- package/dist/domain/ui-sketch/png-canvas.js.map +1 -0
- package/dist/domain/ui-sketch/png-split-regions.d.ts +7 -0
- package/dist/domain/ui-sketch/png-split-regions.js +40 -0
- package/dist/domain/ui-sketch/png-split-regions.js.map +1 -0
- package/dist/domain/ui-sketch/png-split.d.ts +49 -0
- package/dist/domain/ui-sketch/png-split.js +39 -0
- package/dist/domain/ui-sketch/png-split.js.map +1 -0
- package/dist/domain/ui-sketch/transparent-png.d.ts +50 -0
- package/dist/domain/ui-sketch/transparent-png.js +178 -0
- package/dist/domain/ui-sketch/transparent-png.js.map +1 -0
- package/dist/domain/ui-sketch/types.d.ts +2 -0
- package/dist/server/app.d.ts +7 -1
- package/dist/server/app.js +21 -0
- package/dist/server/app.js.map +1 -1
- package/dist/server/routes/draft-version-routes.js +12 -3
- package/dist/server/routes/draft-version-routes.js.map +1 -1
- package/dist/server/routes/project-sessions.js +14 -0
- package/dist/server/routes/project-sessions.js.map +1 -1
- package/dist/server/routes/storage-protection.d.ts +3 -0
- package/dist/server/routes/storage-protection.js +29 -0
- package/dist/server/routes/storage-protection.js.map +1 -0
- package/dist/server/routes/ui-sketch-png-splits.d.ts +4 -0
- package/dist/server/routes/ui-sketch-png-splits.js +42 -0
- package/dist/server/routes/ui-sketch-png-splits.js.map +1 -0
- package/dist/server/routes/workspace-settings.d.ts +3 -0
- package/dist/server/routes/workspace-settings.js +25 -0
- package/dist/server/routes/workspace-settings.js.map +1 -0
- package/dist/server/runtime.js +8 -1
- package/dist/server/runtime.js.map +1 -1
- package/dist/server/session-preview-service.js +7 -4
- package/dist/server/session-preview-service.js.map +1 -1
- package/dist/server/storage-maintenance-service.d.ts +6 -0
- package/dist/server/storage-maintenance-service.js +65 -0
- package/dist/server/storage-maintenance-service.js.map +1 -0
- package/locales/en/common.json +68 -4
- package/migrations/0012_ui_sketch_png_splits.sql +6 -0
- package/migrations/0013_storage_retention.sql +43 -0
- package/migrations/0014_workspace_settings_and_trash.sql +11 -0
- package/package.json +1 -1
- package/schemas/ui-sketch-draft.schema.json +173 -0
- package/skills/human2ai/SKILL.md +8 -2
- package/skills/human2ai/references/ui-extraction-prompt.txt +41 -0
- package/skills/human2ai/references/ui-extraction.md +38 -0
- package/skills/human2ai/references/ui-layout.md +22 -0
- package/web/out/404/index.html +1 -1
- package/web/out/404.html +1 -1
- package/web/out/__next.__PAGE__.txt +8 -8
- package/web/out/__next._full.txt +8 -8
- package/web/out/__next._tree.txt +4 -4
- package/web/out/_next/static/chunks/327-3dba8bbcb4bcb1fc.js +1 -0
- package/web/out/_next/static/chunks/868-6a413fc8c52cf6df.js +1 -0
- package/web/out/_next/static/chunks/{164-d8dd2b053f27bf62.js → 989-6d7aa6a22a75f7de.js} +61 -61
- package/web/out/_next/static/chunks/app/_not-found/{page-742cf440bebb3b9b.js → page-fddf8e0980e10cc5.js} +1 -1
- package/web/out/_next/static/chunks/app/composition/page-f810843a0f114d13.js +1 -0
- package/web/out/_next/static/chunks/app/layout-9c5f0b5667b84400.js +1 -0
- package/web/out/_next/static/chunks/app/{page-9b8bd42a93c9242c.js → page-29cacabbd1c90b6f.js} +1 -1
- package/web/out/_next/static/chunks/app/spatial/page-014875456f84d8fa.js +1 -0
- package/web/out/_next/static/chunks/app/styles/page-1077a7decb9be158.js +1 -0
- package/web/out/_next/static/chunks/app/ui-sketch/page-ea382541f80cad0d.js +1 -0
- package/web/out/_next/static/chunks/{main-app-5419a575f3ff4496.js → main-app-9985b291e50ea69b.js} +1 -1
- package/web/out/_next/static/chunks/next/dist/client/components/builtin/global-error-1193cefa6c9c6179.js +1 -0
- package/web/out/_next/static/chunks/{webpack-e781b4e158568ba0.js → webpack-cfe3662bbaa8d6ce.js} +1 -1
- package/web/out/_next/static/css/04c7fcbfa9004e04.css +1 -0
- package/web/out/_next/static/css/15abfc5e59099f48.css +1 -0
- package/web/out/_next/static/css/{210db1811016f805.css → 5062b0bcc3118ed8.css} +1 -1
- package/web/out/_next/static/css/57ecc433cb654a57.css +1 -0
- package/web/out/_next/static/css/7a62016f8918890b.css +5 -0
- package/web/out/_not-found/__next._full.txt +7 -7
- package/web/out/_not-found/__next._not-found.__PAGE__.txt +7 -7
- package/web/out/_not-found/__next._tree.txt +4 -4
- package/web/out/_not-found/index.html +1 -1
- package/web/out/_not-found/index.txt +7 -7
- package/web/out/composition/__next._full.txt +9 -9
- package/web/out/composition/__next._tree.txt +5 -5
- package/web/out/composition/__next.composition.__PAGE__.txt +9 -9
- package/web/out/composition/index.html +1 -1
- package/web/out/composition/index.txt +9 -9
- package/web/out/index.html +1 -1
- package/web/out/index.txt +8 -8
- package/web/out/spatial/__next._full.txt +8 -8
- package/web/out/spatial/__next._tree.txt +4 -4
- package/web/out/spatial/__next.spatial.__PAGE__.txt +8 -8
- package/web/out/spatial/index.html +1 -1
- package/web/out/spatial/index.txt +8 -8
- package/web/out/styles/__next._full.txt +8 -8
- package/web/out/styles/__next._tree.txt +4 -4
- package/web/out/styles/__next.styles.__PAGE__.txt +8 -8
- package/web/out/styles/index.html +1 -1
- package/web/out/styles/index.txt +8 -8
- package/web/out/ui-sketch/__next._full.txt +9 -9
- package/web/out/ui-sketch/__next._tree.txt +5 -5
- package/web/out/ui-sketch/__next.ui-sketch.__PAGE__.txt +9 -9
- package/web/out/ui-sketch/index.html +1 -1
- package/web/out/ui-sketch/index.txt +9 -9
- package/web/out/_next/static/chunks/348-6baeec6b3dbf02ab.js +0 -1
- package/web/out/_next/static/chunks/app/composition/page-8d037a4b99bb5546.js +0 -1
- package/web/out/_next/static/chunks/app/layout-ca2f61a5a618caea.js +0 -1
- package/web/out/_next/static/chunks/app/spatial/page-1d16089ca24b2eb8.js +0 -1
- package/web/out/_next/static/chunks/app/styles/page-e4d3c95957349351.js +0 -1
- package/web/out/_next/static/chunks/app/ui-sketch/page-23e5c3b12d99082c.js +0 -1
- package/web/out/_next/static/chunks/next/dist/client/components/builtin/global-error-15f5118ed5e001a8.js +0 -1
- package/web/out/_next/static/css/2160a6bbf2cb551c.css +0 -1
- package/web/out/_next/static/css/28a4978acacc40b0.css +0 -1
- package/web/out/_next/static/css/2a0db06638359895.css +0 -1
- package/web/out/_next/static/css/4b1f9941c214d619.css +0 -5
- /package/web/out/_next/static/{MtSBeMOcAQHxKAV1fmedM → SiEWNIZfGL4sShRQt9h5W}/_buildManifest.js +0 -0
- /package/web/out/_next/static/{MtSBeMOcAQHxKAV1fmedM → SiEWNIZfGL4sShRQt9h5W}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draft-version-store.js","sourceRoot":"","sources":["../../src/database/draft-version-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAUzC,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"draft-version-store.js","sourceRoot":"","sources":["../../src/database/draft-version-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { DatabaseConnection } from "./migrate.ts";
|
|
2
|
+
import type { SessionPreviewReference } from "../domain/session/preview.ts";
|
|
2
3
|
export { MAX_IMAGE_ASSET_BYTES } from "./image-input.ts";
|
|
3
4
|
export interface ImageAsset {
|
|
4
5
|
id: string;
|
|
@@ -23,10 +24,14 @@ export declare class ImageAssetNotFoundError extends Error {
|
|
|
23
24
|
export declare class ImageAssetRepository {
|
|
24
25
|
private readonly database;
|
|
25
26
|
private readonly root;
|
|
27
|
+
private readonly protections;
|
|
28
|
+
isProtected(id: string): boolean;
|
|
29
|
+
withProtection<T>(ids: string[], operation: () => Promise<T>): Promise<T>;
|
|
26
30
|
constructor(database: DatabaseConnection, artifactsDirectory: string);
|
|
27
31
|
create(sessionId: string, input: {
|
|
28
32
|
filename: string;
|
|
29
33
|
data: Buffer;
|
|
34
|
+
previewReference?: SessionPreviewReference;
|
|
30
35
|
}): Promise<ImageAsset>;
|
|
31
36
|
get(sessionId: string, assetId: string): {
|
|
32
37
|
asset: ImageAsset;
|
|
@@ -21,6 +21,24 @@ export class ImageAssetNotFoundError extends Error {
|
|
|
21
21
|
export class ImageAssetRepository {
|
|
22
22
|
database;
|
|
23
23
|
root;
|
|
24
|
+
protections = new Map();
|
|
25
|
+
isProtected(id) { return this.protections.has(id); }
|
|
26
|
+
async withProtection(ids, operation) {
|
|
27
|
+
for (const id of new Set(ids))
|
|
28
|
+
this.protections.set(id, (this.protections.get(id) ?? 0) + 1);
|
|
29
|
+
try {
|
|
30
|
+
return await operation();
|
|
31
|
+
}
|
|
32
|
+
finally {
|
|
33
|
+
for (const id of new Set(ids)) {
|
|
34
|
+
const remaining = this.protections.get(id) - 1;
|
|
35
|
+
if (remaining)
|
|
36
|
+
this.protections.set(id, remaining);
|
|
37
|
+
else
|
|
38
|
+
this.protections.delete(id);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
24
42
|
constructor(database, artifactsDirectory) {
|
|
25
43
|
this.database = database;
|
|
26
44
|
this.root = resolve(artifactsDirectory);
|
|
@@ -46,8 +64,8 @@ export class ImageAssetRepository {
|
|
|
46
64
|
try {
|
|
47
65
|
this.database.prepare(`INSERT INTO image_assets
|
|
48
66
|
(id, session_id, relative_path, original_filename, mime_type,
|
|
49
|
-
byte_size, width, height, sha256, created_at)
|
|
50
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(id, sessionId, relativePath, originalFilename, mimeType, input.data.byteLength, width, height, sha256, createdAt);
|
|
67
|
+
byte_size, width, height, sha256, created_at, preview_reference_json)
|
|
68
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(id, sessionId, relativePath, originalFilename, mimeType, input.data.byteLength, width, height, sha256, createdAt, input.previewReference ? JSON.stringify(input.previewReference) : null);
|
|
51
69
|
}
|
|
52
70
|
catch (error) {
|
|
53
71
|
await unlink(filePath).catch(() => undefined);
|
|
@@ -60,7 +78,7 @@ export class ImageAssetRepository {
|
|
|
60
78
|
const row = this.database.prepare(`SELECT id, session_id, relative_path, original_filename, mime_type,
|
|
61
79
|
byte_size, width, height, sha256, created_at
|
|
62
80
|
FROM image_assets
|
|
63
|
-
WHERE session_id = ? AND id =
|
|
81
|
+
WHERE session_id = ? AND id = ? AND deleting = 0`).get(sessionId, assetId);
|
|
64
82
|
if (!row)
|
|
65
83
|
throw new ImageAssetNotFoundError(sessionId, assetId);
|
|
66
84
|
const filePath = this.filePath(row.relative_path);
|
|
@@ -69,7 +87,7 @@ export class ImageAssetRepository {
|
|
|
69
87
|
return { asset: mapImageAsset(row), filePath };
|
|
70
88
|
}
|
|
71
89
|
assertSession(sessionId) {
|
|
72
|
-
const row = this.database.prepare("SELECT id FROM sessions WHERE id = ?").get(sessionId);
|
|
90
|
+
const row = this.database.prepare("SELECT id FROM sessions WHERE id = ? AND deleted_at IS NULL").get(sessionId);
|
|
73
91
|
if (!row)
|
|
74
92
|
throw new SessionNotFoundError(sessionId);
|
|
75
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-asset-repository.js","sourceRoot":"","sources":["../../src/database/image-asset-repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"image-asset-repository.js","sourceRoot":"","sources":["../../src/database/image-asset-repository.ts"],"names":[],"mappings":"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"}
|
package/dist/database/migrate.js
CHANGED
|
@@ -5,6 +5,8 @@ const migrationFilePattern = /^\d{4}_[a-z0-9][a-z0-9_-]*\.sql$/;
|
|
|
5
5
|
export function openDatabase(databasePath, migrationsDirectory) {
|
|
6
6
|
const database = new Database(databasePath);
|
|
7
7
|
try {
|
|
8
|
+
if (database.pragma("page_count", { simple: true }) === 0)
|
|
9
|
+
database.pragma("auto_vacuum = INCREMENTAL");
|
|
8
10
|
database.pragma("foreign_keys = ON");
|
|
9
11
|
database.pragma("synchronous = FULL");
|
|
10
12
|
database.pragma("busy_timeout = 5000");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/database/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAItC,MAAM,oBAAoB,GAAG,kCAAkC,CAAC;AAEhE,MAAM,UAAU,YAAY,CAC1B,YAAoB,EACpB,mBAA2B;IAE3B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC;IAE5C,IAAI,CAAC;QACH,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACrC,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACtC,QAAQ,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACvC,eAAe,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QAC/C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,QAA4B,EAC5B,mBAA2B;IAE3B,QAAQ,CAAC,IAAI,CAAC;;;;;GAKb,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,QAAQ;SACL,OAAO,CAAuB,oCAAoC,CAAC;SACnE,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAC3B,CAAC;IACF,MAAM,OAAO,GAAG,WAAW,CAAC,mBAAmB,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SACtE,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC1E,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;SAC1B,IAAI,EAAE;SACN,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CACtC,gEAAgE,CACjE,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;QAClE,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE;YACxB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnB,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACtD,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/database/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAItC,MAAM,oBAAoB,GAAG,kCAAkC,CAAC;AAEhE,MAAM,UAAU,YAAY,CAC1B,YAAoB,EACpB,mBAA2B;IAE3B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC;IAE5C,IAAI,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC;YAAE,QAAQ,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;QACxG,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACrC,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACtC,QAAQ,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACvC,eAAe,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QAC/C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,QAA4B,EAC5B,mBAA2B;IAE3B,QAAQ,CAAC,IAAI,CAAC;;;;;GAKb,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,QAAQ;SACL,OAAO,CAAuB,oCAAoC,CAAC;SACnE,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAC3B,CAAC;IACF,MAAM,OAAO,GAAG,WAAW,CAAC,mBAAmB,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SACtE,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC1E,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;SAC1B,IAAI,EAAE;SACN,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CACtC,gEAAgE,CACjE,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;QAClE,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE;YACxB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnB,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACtD,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type Project, type Session, type SessionGroup, type SessionType } from "../domain/session/index.ts";
|
|
2
|
+
import type { TrashSession } from "../domain/session/types.ts";
|
|
2
3
|
import type { DatabaseConnection } from "./migrate.ts";
|
|
3
4
|
export declare class ProjectNotFoundError extends Error {
|
|
4
5
|
readonly projectId: string;
|
|
@@ -40,7 +41,8 @@ export declare class SessionGroupNameConflictError extends Error {
|
|
|
40
41
|
}
|
|
41
42
|
export declare class ProjectSessionRepository {
|
|
42
43
|
private readonly database;
|
|
43
|
-
|
|
44
|
+
private readonly now;
|
|
45
|
+
constructor(database: DatabaseConnection, now?: () => number);
|
|
44
46
|
listSessionGroups(): SessionGroup[];
|
|
45
47
|
private getSessionGroup;
|
|
46
48
|
private sessionGroupName;
|
|
@@ -90,6 +92,15 @@ export declare class ProjectSessionRepository {
|
|
|
90
92
|
deleteSession(sessionId: string, input: {
|
|
91
93
|
expectedRevision: number;
|
|
92
94
|
}): void;
|
|
95
|
+
listTrashSessions(): TrashSession[];
|
|
96
|
+
restoreSession(sessionId: string, input: {
|
|
97
|
+
expectedRevision: number;
|
|
98
|
+
}): Session;
|
|
99
|
+
purgeExpiredTrash(cutoff: string): number;
|
|
100
|
+
deleteTrashSession(sessionId: string, input: {
|
|
101
|
+
expectedRevision: number;
|
|
102
|
+
}): void;
|
|
103
|
+
clearTrash(): void;
|
|
93
104
|
private selectSessions;
|
|
94
105
|
private assertProjectNameAvailable;
|
|
95
106
|
}
|
|
@@ -57,12 +57,15 @@ export class SessionGroupNameConflictError extends Error {
|
|
|
57
57
|
}
|
|
58
58
|
export class ProjectSessionRepository {
|
|
59
59
|
database;
|
|
60
|
-
|
|
60
|
+
now;
|
|
61
|
+
constructor(database, now = Date.now) {
|
|
61
62
|
this.database = database;
|
|
63
|
+
this.now = now;
|
|
62
64
|
}
|
|
63
65
|
listSessionGroups() {
|
|
64
66
|
const groups = this.database.prepare("SELECT id, project_id AS projectId, name, revision FROM session_groups ORDER BY rowid").all();
|
|
65
|
-
const members = this.database.prepare(
|
|
67
|
+
const members = this.database.prepare(`SELECT member.session_id AS sessionId, member.group_id AS groupId FROM session_group_members member
|
|
68
|
+
JOIN sessions session ON session.id = member.session_id WHERE session.deleted_at IS NULL ORDER BY member.session_id`).all();
|
|
66
69
|
const byGroup = new Map();
|
|
67
70
|
for (const member of members) {
|
|
68
71
|
const ids = byGroup.get(member.groupId) ?? [];
|
|
@@ -75,7 +78,8 @@ export class ProjectSessionRepository {
|
|
|
75
78
|
const group = this.database.prepare("SELECT id, project_id AS projectId, name, revision FROM session_groups WHERE id = ?").get(groupId);
|
|
76
79
|
if (!group)
|
|
77
80
|
throw new SessionGroupNotFoundError(groupId);
|
|
78
|
-
const members = this.database.prepare(
|
|
81
|
+
const members = this.database.prepare(`SELECT member.session_id AS id FROM session_group_members member JOIN sessions session ON session.id = member.session_id
|
|
82
|
+
WHERE member.group_id = ? AND session.deleted_at IS NULL ORDER BY member.session_id`).all(groupId);
|
|
79
83
|
return { ...group, sessionIds: members.map(member => member.id) };
|
|
80
84
|
}
|
|
81
85
|
sessionGroupName(projectId, value, excludedId = "") {
|
|
@@ -139,7 +143,7 @@ export class ProjectSessionRepository {
|
|
|
139
143
|
p.updated_at,
|
|
140
144
|
count(s.id) AS session_count
|
|
141
145
|
FROM projects p
|
|
142
|
-
LEFT JOIN sessions s ON s.project_id = p.id
|
|
146
|
+
LEFT JOIN sessions s ON s.project_id = p.id AND s.deleted_at IS NULL
|
|
143
147
|
GROUP BY p.id
|
|
144
148
|
ORDER BY p.updated_at DESC, p.id
|
|
145
149
|
`)
|
|
@@ -158,7 +162,7 @@ export class ProjectSessionRepository {
|
|
|
158
162
|
p.updated_at,
|
|
159
163
|
count(s.id) AS session_count
|
|
160
164
|
FROM projects p
|
|
161
|
-
LEFT JOIN sessions s ON s.project_id = p.id
|
|
165
|
+
LEFT JOIN sessions s ON s.project_id = p.id AND s.deleted_at IS NULL
|
|
162
166
|
WHERE p.id = ?
|
|
163
167
|
GROUP BY p.id
|
|
164
168
|
`)
|
|
@@ -204,7 +208,7 @@ export class ProjectSessionRepository {
|
|
|
204
208
|
this.database
|
|
205
209
|
.prepare(`DELETE FROM projects
|
|
206
210
|
WHERE id = ? AND revision = ?
|
|
207
|
-
AND NOT EXISTS (SELECT 1 FROM sessions WHERE project_id = ?)`)
|
|
211
|
+
AND NOT EXISTS (SELECT 1 FROM sessions WHERE project_id = ? AND deleted_at IS NULL)`)
|
|
208
212
|
.run(projectId, input.expectedRevision, projectId);
|
|
209
213
|
}
|
|
210
214
|
listSessions() {
|
|
@@ -219,7 +223,7 @@ export class ProjectSessionRepository {
|
|
|
219
223
|
}
|
|
220
224
|
getSession(sessionId) {
|
|
221
225
|
const row = this.database
|
|
222
|
-
.prepare(`${SESSION_SELECT} WHERE id =
|
|
226
|
+
.prepare(`${SESSION_SELECT} WHERE id = ? AND deleted_at IS NULL`)
|
|
223
227
|
.get(sessionId);
|
|
224
228
|
if (!row)
|
|
225
229
|
throw new SessionNotFoundError(sessionId);
|
|
@@ -293,12 +297,44 @@ export class ProjectSessionRepository {
|
|
|
293
297
|
const session = this.getSession(sessionId);
|
|
294
298
|
assertRevision(input.expectedRevision, session.revision);
|
|
295
299
|
this.database
|
|
296
|
-
.prepare("
|
|
297
|
-
.run(sessionId, input.expectedRevision);
|
|
300
|
+
.prepare("UPDATE sessions SET deleted_at = ?, updated_at = ?, revision = revision + 1 WHERE id = ? AND revision = ?")
|
|
301
|
+
.run(new Date(this.now()).toISOString(), new Date(this.now()).toISOString(), sessionId, input.expectedRevision);
|
|
302
|
+
}
|
|
303
|
+
listTrashSessions() {
|
|
304
|
+
return this.database.prepare(`${SESSION_SELECT} WHERE deleted_at IS NOT NULL ORDER BY deleted_at DESC, id`)
|
|
305
|
+
.all().map(row => ({ ...mapSession(row), deletedAt: row.deleted_at }));
|
|
306
|
+
}
|
|
307
|
+
restoreSession(sessionId, input) {
|
|
308
|
+
return this.database.transaction(() => {
|
|
309
|
+
const row = this.database.prepare(`${SESSION_SELECT} WHERE id = ? AND deleted_at IS NOT NULL`).get(sessionId);
|
|
310
|
+
if (!row)
|
|
311
|
+
throw new SessionNotFoundError(sessionId);
|
|
312
|
+
assertRevision(input.expectedRevision, row.revision);
|
|
313
|
+
this.database.prepare("UPDATE sessions SET deleted_at = NULL, revision = revision + 1, updated_at = ? WHERE id = ?")
|
|
314
|
+
.run(new Date(this.now()).toISOString(), sessionId);
|
|
315
|
+
// Trash suspends image collection; restoring restarts the unused-image grace period.
|
|
316
|
+
this.database.prepare("UPDATE image_assets SET unreferenced_since = NULL WHERE session_id = ?").run(sessionId);
|
|
317
|
+
return this.getSession(sessionId);
|
|
318
|
+
})();
|
|
319
|
+
}
|
|
320
|
+
purgeExpiredTrash(cutoff) {
|
|
321
|
+
return this.database.prepare("DELETE FROM sessions WHERE deleted_at IS NOT NULL AND deleted_at <= ?").run(cutoff).changes;
|
|
322
|
+
}
|
|
323
|
+
deleteTrashSession(sessionId, input) {
|
|
324
|
+
this.database.transaction(() => {
|
|
325
|
+
const row = this.database.prepare(`${SESSION_SELECT} WHERE id = ? AND deleted_at IS NOT NULL`).get(sessionId);
|
|
326
|
+
if (!row)
|
|
327
|
+
throw new SessionNotFoundError(sessionId);
|
|
328
|
+
assertRevision(input.expectedRevision, row.revision);
|
|
329
|
+
this.database.prepare("DELETE FROM sessions WHERE id = ? AND deleted_at IS NOT NULL").run(sessionId);
|
|
330
|
+
})();
|
|
331
|
+
}
|
|
332
|
+
clearTrash() {
|
|
333
|
+
this.database.prepare("DELETE FROM sessions WHERE deleted_at IS NOT NULL").run();
|
|
298
334
|
}
|
|
299
335
|
selectSessions(where, parameters) {
|
|
300
336
|
const rows = this.database
|
|
301
|
-
.prepare(`${SESSION_SELECT} ${where} ORDER BY updated_at DESC, id`)
|
|
337
|
+
.prepare(`${SESSION_SELECT} ${where ? `${where} AND` : "WHERE"} deleted_at IS NULL ORDER BY updated_at DESC, id`)
|
|
302
338
|
.all(...parameters);
|
|
303
339
|
return rows.map(mapSession);
|
|
304
340
|
}
|
|
@@ -324,7 +360,8 @@ const SESSION_SELECT = `
|
|
|
324
360
|
lifecycle_stage,
|
|
325
361
|
revision,
|
|
326
362
|
created_at,
|
|
327
|
-
updated_at
|
|
363
|
+
updated_at,
|
|
364
|
+
deleted_at
|
|
328
365
|
FROM sessions
|
|
329
366
|
`;
|
|
330
367
|
function mapProject(row) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-session-repository.js","sourceRoot":"","sources":["../../src/database/project-session-repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EACL,aAAa,GAMd,MAAM,4BAA4B,CAAC;AAyBpC,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAGxB;IAFZ,IAAI,GAAG,mBAAmB,CAAC;IAEpC,YAAqB,SAAiB;QACpC,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;QADtB,cAAS,GAAT,SAAS,CAAQ;IAEtC,CAAC;CACF;AAED,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IAG5B;IAFZ,IAAI,GAAG,uBAAuB,CAAC;IAExC,YAAqB,IAAY;QAC/B,KAAK,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC;QAD3B,SAAI,GAAJ,IAAI,CAAQ;IAEjC,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAIlC;IACA;IAJF,IAAI,GAAG,mBAAmB,CAAC;IAEpC,YACW,SAAiB,EACjB,YAAoB;QAE7B,KAAK,CAAC,oBAAoB,YAAY,gBAAgB,SAAS,EAAE,CAAC,CAAC;QAH1D,cAAS,GAAT,SAAS,CAAQ;QACjB,iBAAY,GAAZ,YAAY,CAAQ;IAG/B,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAGxB;IAFZ,IAAI,GAAG,mBAAmB,CAAC;IAEpC,YAAqB,SAAiB;QACpC,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;QADtB,cAAS,GAAT,SAAS,CAAQ;IAEtC,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAInC;IACA;IAJF,IAAI,GAAG,mBAAmB,CAAC;IAEpC,YACW,gBAAwB,EACxB,cAAsB;QAE/B,KAAK,CAAC,qBAAqB,gBAAgB,cAAc,cAAc,EAAE,CAAC,CAAC;QAHlE,qBAAgB,GAAhB,gBAAgB,CAAQ;QACxB,mBAAc,GAAd,cAAc,CAAQ;IAGjC,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,IAAI,GAAG,gBAAgB,CAAC;CAClC;AAED,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IACzC,IAAI,GAAG,yBAAyB,CAAC;IAC1C,YAAY,OAAe,IAAI,KAAK,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;CAC/E;AAED,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IAC7C,IAAI,GAAG,6BAA6B,CAAC;IAC9C,YAAY,IAAY,IAAI,KAAK,CAAC,sCAAsC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;CACnF;AAED,MAAM,OAAO,wBAAwB;IACN;IAA7B,YAA6B,QAA4B;QAA5B,aAAQ,GAAR,QAAQ,CAAoB;IAAG,CAAC;IAE7D,iBAAiB;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAClC,uFAAuF,CACxF,CAAC,GAAG,EAAE,CAAC;QACR,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CACnC,oGAAoG,CACrG,CAAC,GAAG,EAAE,CAAC;QACR,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC5C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC9C,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACtF,CAAC;IAEO,eAAe,CAAC,OAAe;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CACjC,qFAAqF,CACtF,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CACnC,2FAA2F,CAC5F,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACf,OAAO,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;IACpE,CAAC;IAEO,gBAAgB,CAAC,SAAiB,EAAE,KAAa,EAAE,UAAU,GAAG,EAAE;QACxE,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG;YAAE,MAAM,IAAI,kBAAkB,CAAC,gCAAgC,CAAC,CAAC;QACtF,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,6EAA6E,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;YAC1I,MAAM,IAAI,6BAA6B,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB,CAAC,SAAiB,EAAE,KAAuB;QAC3D,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE;YACpC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1D,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oEAAoE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YACrH,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAClC,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,kBAAkB,CAAC,OAAe,EAAE,KAAiD;QACnF,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC5C,cAAc,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACzE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,0EAA0E,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACrH,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,kBAAkB,CAAC,OAAe,EAAE,KAAmC;QACrE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE;YAC7B,cAAc,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC/E,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChF,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,eAAe,CAAC,SAAiB,EAAE,SAAiB,EAAE,OAAsB;QAC1E,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE;YAC7B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC3C,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,EAAE,CAAC;gBACnH,MAAM,IAAI,kBAAkB,CAAC,mDAAmD,CAAC,CAAC;YACpF,CAAC;YACD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,wDAAwD,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACjG,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;6EAC+C,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACjG,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,YAAY;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ;aACvB,OAAO,CAAiB;;;;;;;;;;;;;OAaxB,CAAC;aACD,GAAG,EAAE,CAAC;QACT,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ;aACtB,OAAO,CAAuB;;;;;;;;;;;;;OAa9B,CAAC;aACD,GAAG,CAAC,SAAS,CAAC,CAAC;QAClB,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC;QACpD,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,aAAa,CAAC,KAAoD;QAChE,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QACtD,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,QAAQ;aACV,OAAO,CACN;;mCAE2B,CAC5B;aACA,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,aAAa,CACX,SAAiB,EACjB,KAIC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,cAAc,CAAC,KAAK,CAAC,gBAAgB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,IAAI,GACR,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QACrF,IAAI,IAAI,KAAK,OAAO,CAAC,IAAI;YAAE,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC5E,MAAM,WAAW,GACf,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC1F,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,QAAQ;aACV,OAAO,CACN;;uCAE+B,CAChC;aACA,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED,aAAa,CACX,SAAiB,EACjB,KAAmC;QAEnC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,cAAc,CAAC,KAAK,CAAC,gBAAgB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,OAAO,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,CAAC,QAAQ;aACV,OAAO,CACN;;wEAEgE,CACjE;aACA,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,sBAAsB;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,mBAAmB,CAAC,SAAiB;QACnC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ;aACtB,OAAO,CAAuB,GAAG,cAAc,eAAe,CAAC;aAC/D,GAAG,CAAC,SAAS,CAAC,CAAC;QAClB,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC;QACpD,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,aAAa,CAAC,KAKb;QACC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,kBAAkB,CAAC,6BAA6B,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC;QAC1C,IAAI,SAAS;YAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAErC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE;YAC7B,IAAI,CAAC,QAAQ;iBACV,OAAO,CACN;;iDAEuC,CACxC;iBACA,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAC1D,IAAI,KAAK,CAAC,WAAW,KAAK,mBAAmB,EAAE,CAAC;gBAC9C,IAAI,CAAC,QAAQ;qBACV,OAAO,CAAC,0DAA0D,CAAC;qBACnE,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,CAAC;iBAAM,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC3C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxF,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnF,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAChC,IAAI,CAAC,SAAS;oBAAE,MAAM,IAAI,kBAAkB,CAAC,mDAAmD,CAAC,CAAC;gBAClG,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACrD,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,WAAW,CACT,SAAiB,EACjB,KAA6D;QAE7D,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,cAAc,CAAC,KAAK,CAAC,gBAAgB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,KAAK,CAAC,SAAS;YAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;YAAE,OAAO,OAAO,CAAC;QAE1D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,QAAQ;aACV,OAAO,CACN;;uCAE+B,CAChC;aACA,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED,aAAa,CACX,SAAiB,EACjB,KAAkD;QAElD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,cAAc,CAAC,KAAK,CAAC,gBAAgB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QACzD,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK;YAAE,OAAO,OAAO,CAAC;QAE5C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,QAAQ;aACV,OAAO,CACN;;uCAE+B,CAChC;aACA,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED,aAAa,CACX,SAAiB,EACjB,KAAmC;QAEnC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,cAAc,CAAC,KAAK,CAAC,gBAAgB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ;aACV,OAAO,CAAC,oDAAoD,CAAC;aAC7D,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IAEO,cAAc,CAAC,KAAa,EAAE,UAAoB;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ;aACvB,OAAO,CAAuB,GAAG,cAAc,IAAI,KAAK,+BAA+B,CAAC;aACxF,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAEO,0BAA0B,CAAC,IAAY,EAAE,iBAA0B;QACzE,MAAM,QAAQ,GAAG,iBAAiB;YAChC,CAAC,CAAC,IAAI,CAAC,QAAQ;iBACV,OAAO,CACN,4DAA4D,CAC7D;iBACA,GAAG,CAAC,IAAI,EAAE,iBAAiB,CAAC;YACjC,CAAC,CAAC,IAAI,CAAC,QAAQ;iBACV,OAAO,CACN,gDAAgD,CACjD;iBACA,GAAG,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,QAAQ;YAAE,MAAM,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;CACF;AAED,MAAM,cAAc,GAAG;;;;;;;;;;;;CAYtB,CAAC;AAEF,SAAS,UAAU,CAAC,GAAe;IACjC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,YAAY,EAAE,GAAG,CAAC,aAAa;QAC/B,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,GAAe;IACjC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,cAAc,EAAE,GAAG,CAAC,eAAe;QACnC,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,KAAa;IAChD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,kBAAkB,CAAC,GAAG,KAAK,kBAAkB,CAAC,CAAC;IACvE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,YAAY,CAAC,KAAgC;IACpD,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,OAAO,IAAI,IAAI,CAAC;AACzB,CAAC;AAED,SAAS,cAAc,CAAC,gBAAwB,EAAE,cAAsB;IACtE,IAAI,gBAAgB,KAAK,cAAc,EAAE,CAAC;QACxC,MAAM,IAAI,qBAAqB,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;IACpE,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"project-session-repository.js","sourceRoot":"","sources":["../../src/database/project-session-repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,16 +8,46 @@ export function validateSessionPreviewReferences(database, ownerId, draft, previ
|
|
|
8
8
|
continue;
|
|
9
9
|
if (ref.sessionId === ownerId)
|
|
10
10
|
throw new InvalidRecordError("A session preview cannot reference its own session.");
|
|
11
|
-
|
|
11
|
+
const asset = image.assetId && database.prepare("SELECT preview_reference_json, sha256 FROM image_assets WHERE id = ? AND session_id = ? AND deleting = 0").get(image.assetId, ownerId);
|
|
12
|
+
if (!asset) {
|
|
12
13
|
throw new InvalidRecordError("Session previews require an image owned by the destination session.");
|
|
13
14
|
}
|
|
14
|
-
const
|
|
15
|
+
const remember = (reference = JSON.stringify(ref)) => {
|
|
16
|
+
database.prepare("UPDATE image_assets SET preview_reference_json = ? WHERE id = ? AND session_id = ?")
|
|
17
|
+
.run(reference, image.assetId, ownerId);
|
|
18
|
+
asset.preview_reference_json = reference;
|
|
19
|
+
};
|
|
20
|
+
if (!asset.preview_reference_json && owner.project_id) {
|
|
21
|
+
// Cross-session paste uploads the same immutable bytes. Inherit only an exact,
|
|
22
|
+
// verified snapshot from a session that still belongs to this project.
|
|
23
|
+
const copied = database.prepare(`SELECT candidate.preview_reference_json
|
|
24
|
+
FROM image_assets candidate JOIN sessions session ON session.id = candidate.session_id
|
|
25
|
+
WHERE candidate.sha256 = ? AND session.project_id = ? AND candidate.deleting = 0 AND candidate.preview_reference_json IS NOT NULL`)
|
|
26
|
+
.all(asset.sha256, owner.project_id).find(candidate => {
|
|
27
|
+
const reference = JSON.parse(candidate.preview_reference_json);
|
|
28
|
+
return previewSourceKey(reference) === previewSourceKey(ref) && reference.renderedRevision === ref.renderedRevision;
|
|
29
|
+
});
|
|
30
|
+
if (copied) {
|
|
31
|
+
remember(copied.preview_reference_json);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (asset.preview_reference_json) {
|
|
35
|
+
const retained = JSON.parse(asset.preview_reference_json);
|
|
36
|
+
if (previewSourceKey(retained) !== previewSourceKey(ref) || retained.renderedRevision !== ref.renderedRevision) {
|
|
37
|
+
throw new InvalidRecordError("The preview reference does not match its image snapshot.");
|
|
38
|
+
}
|
|
39
|
+
// Verified immutable snapshot bytes do not depend on the source's retention window.
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
const source = database.prepare("SELECT project_id, session_type FROM sessions WHERE id = ? AND deleted_at IS NULL").get(ref.sessionId);
|
|
15
43
|
if (!source || !owner.project_id || owner.project_id !== source.project_id || source.session_type !== ref.sessionType) {
|
|
16
44
|
// Retain or restore only an exact destination-owned historical snapshot.
|
|
17
45
|
// This also covers local undo submitted through the normal save endpoint.
|
|
18
46
|
if (previous?.images.some(before => before.assetId === image.assetId && before.previewReference
|
|
19
|
-
&& previewSourceKey(before.previewReference) === previewSourceKey(ref) && before.previewReference.renderedRevision === ref.renderedRevision))
|
|
47
|
+
&& previewSourceKey(before.previewReference) === previewSourceKey(ref) && before.previewReference.renderedRevision === ref.renderedRevision)) {
|
|
48
|
+
remember();
|
|
20
49
|
continue;
|
|
50
|
+
}
|
|
21
51
|
const retained = database.prepare(`SELECT 1 FROM ui_sketch_draft_versions v, json_each(v.draft_json, '$.images') image
|
|
22
52
|
WHERE v.session_id = ? AND json_extract(image.value, '$.assetId') = ?
|
|
23
53
|
AND json_extract(image.value, '$.previewReference.sessionId') = ?
|
|
@@ -25,8 +55,10 @@ export function validateSessionPreviewReferences(database, ownerId, draft, previ
|
|
|
25
55
|
AND json_extract(image.value, '$.previewReference.renderedRevision') = ?
|
|
26
56
|
AND coalesce(json_extract(image.value, '$.previewReference.stateId'), json_extract(image.value, '$.previewReference.cameraId')) = ? LIMIT 1`)
|
|
27
57
|
.get(ownerId, image.assetId, ref.sessionId, ref.sessionType, ref.renderedRevision, ref.sessionType === "spatial" ? ref.cameraId : ref.stateId);
|
|
28
|
-
if (retained)
|
|
58
|
+
if (retained) {
|
|
59
|
+
remember();
|
|
29
60
|
continue;
|
|
61
|
+
}
|
|
30
62
|
throw new InvalidRecordError("Session previews require another session of the specified type in the same project.");
|
|
31
63
|
}
|
|
32
64
|
const table = ref.sessionType === "spatial" ? "spatial_draft_versions" : ref.sessionType === "ui-layout" ? "ui_sketch_draft_versions" : "composition_draft_versions";
|
|
@@ -39,6 +71,7 @@ export function validateSessionPreviewReferences(database, ownerId, draft, previ
|
|
|
39
71
|
: content.states?.map((s) => s.id) ?? ["state-1"];
|
|
40
72
|
if (!ids.includes(ref.sessionType === "spatial" ? ref.cameraId : ref.stateId))
|
|
41
73
|
throw new InvalidRecordError("The selected preview output does not exist.");
|
|
74
|
+
remember();
|
|
42
75
|
}
|
|
43
76
|
}
|
|
44
77
|
//# sourceMappingURL=session-preview-validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-preview-validation.js","sourceRoot":"","sources":["../../src/database/session-preview-validation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,MAAM,UAAU,gCAAgC,CAAC,QAA4B,EAAE,OAAe,EAAE,KAAoB,EAAE,QAAwB;IAC5I,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAA0C,8CAA8C,CAAC,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;IACtI,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,KAAK,CAAC,gBAAgB,CAAC;QACnC,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,IAAI,GAAG,CAAC,SAAS,KAAK,OAAO;YAAE,MAAM,IAAI,kBAAkB,CAAC,qDAAqD,CAAC,CAAC;QACnH,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"session-preview-validation.js","sourceRoot":"","sources":["../../src/database/session-preview-validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { DatabaseConnection } from "./migrate.ts";
|
|
2
|
+
import { type ImageAssetRepository } from "./image-asset-repository.ts";
|
|
3
|
+
import { type StorageProtection } from "../domain/session/storage.ts";
|
|
4
|
+
import type { SessionType } from "../domain/session/types.ts";
|
|
5
|
+
declare const tables: {
|
|
6
|
+
readonly "image-composition": "composition_draft_versions";
|
|
7
|
+
readonly "ui-layout": "ui_sketch_draft_versions";
|
|
8
|
+
readonly spatial: "spatial_draft_versions";
|
|
9
|
+
};
|
|
10
|
+
export type DraftVersionTable = typeof tables[SessionType];
|
|
11
|
+
/** Called inside the save transaction so the latest revision is never removed. */
|
|
12
|
+
export declare function pruneDraftVersions(database: DatabaseConnection, table: DraftVersionTable, sessionId: string, now?: number): number;
|
|
13
|
+
export interface StorageCollectionResult {
|
|
14
|
+
versionsDeleted: number;
|
|
15
|
+
imagesDeleted: number;
|
|
16
|
+
bytesFreed: number;
|
|
17
|
+
failedFiles: string[];
|
|
18
|
+
}
|
|
19
|
+
export declare class SessionStorageRepository {
|
|
20
|
+
private readonly database;
|
|
21
|
+
private readonly assets;
|
|
22
|
+
private readonly now;
|
|
23
|
+
private readonly root;
|
|
24
|
+
constructor(database: DatabaseConnection, assets: ImageAssetRepository, artifactsDirectory: string, now?: () => number);
|
|
25
|
+
protect(sessionId: string, clientId: string, protection: StorageProtection): void;
|
|
26
|
+
release(sessionId: string, clientId: string): void;
|
|
27
|
+
private table;
|
|
28
|
+
private usedAssets;
|
|
29
|
+
collect(sessionId?: string): Promise<StorageCollectionResult>;
|
|
30
|
+
private collectOrphanFiles;
|
|
31
|
+
private managedFiles;
|
|
32
|
+
/** Only called while editing is idle. Convert older databases once, then reclaim small batches. */
|
|
33
|
+
compact(): void;
|
|
34
|
+
}
|
|
35
|
+
export {};
|