@openinary/core 1.1.0
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/LICENSE +661 -0
- package/dist/config/deps.d.ts +14 -0
- package/dist/config/deps.d.ts.map +1 -0
- package/dist/config/deps.js +2 -0
- package/dist/config/deps.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/routes/authenticated.d.ts +4 -0
- package/dist/routes/authenticated.d.ts.map +1 -0
- package/dist/routes/authenticated.js +130 -0
- package/dist/routes/authenticated.js.map +1 -0
- package/dist/routes/download-folder.d.ts +4 -0
- package/dist/routes/download-folder.d.ts.map +1 -0
- package/dist/routes/download-folder.js +101 -0
- package/dist/routes/download-folder.js.map +1 -0
- package/dist/routes/download-zip.d.ts +15 -0
- package/dist/routes/download-zip.d.ts.map +1 -0
- package/dist/routes/download-zip.js +147 -0
- package/dist/routes/download-zip.js.map +1 -0
- package/dist/routes/download.d.ts +4 -0
- package/dist/routes/download.d.ts.map +1 -0
- package/dist/routes/download.js +83 -0
- package/dist/routes/download.js.map +1 -0
- package/dist/routes/invalidate.d.ts +4 -0
- package/dist/routes/invalidate.d.ts.map +1 -0
- package/dist/routes/invalidate.js +114 -0
- package/dist/routes/invalidate.js.map +1 -0
- package/dist/routes/queue-events.d.ts +4 -0
- package/dist/routes/queue-events.d.ts.map +1 -0
- package/dist/routes/queue-events.js +125 -0
- package/dist/routes/queue-events.js.map +1 -0
- package/dist/routes/queue.d.ts +4 -0
- package/dist/routes/queue.d.ts.map +1 -0
- package/dist/routes/queue.js +130 -0
- package/dist/routes/queue.js.map +1 -0
- package/dist/routes/storage.d.ts +4 -0
- package/dist/routes/storage.d.ts.map +1 -0
- package/dist/routes/storage.js +694 -0
- package/dist/routes/storage.js.map +1 -0
- package/dist/routes/transform-helpers.d.ts +62 -0
- package/dist/routes/transform-helpers.d.ts.map +1 -0
- package/dist/routes/transform-helpers.js +372 -0
- package/dist/routes/transform-helpers.js.map +1 -0
- package/dist/routes/transform.d.ts +4 -0
- package/dist/routes/transform.d.ts.map +1 -0
- package/dist/routes/transform.js +65 -0
- package/dist/routes/transform.js.map +1 -0
- package/dist/routes/video-status.d.ts +4 -0
- package/dist/routes/video-status.d.ts.map +1 -0
- package/dist/routes/video-status.js +208 -0
- package/dist/routes/video-status.js.map +1 -0
- package/dist/services/transform.service.d.ts +71 -0
- package/dist/services/transform.service.d.ts.map +1 -0
- package/dist/services/transform.service.js +362 -0
- package/dist/services/transform.service.js.map +1 -0
- package/dist/types.d.ts +82 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/asset-deletion.d.ts +16 -0
- package/dist/utils/asset-deletion.d.ts.map +1 -0
- package/dist/utils/asset-deletion.js +131 -0
- package/dist/utils/asset-deletion.js.map +1 -0
- package/dist/utils/cache.d.ts +44 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +248 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/get-unique-file-path.d.ts +8 -0
- package/dist/utils/get-unique-file-path.d.ts.map +1 -0
- package/dist/utils/get-unique-file-path.js +26 -0
- package/dist/utils/get-unique-file-path.js.map +1 -0
- package/dist/utils/image/aspect-ratio.d.ts +7 -0
- package/dist/utils/image/aspect-ratio.d.ts.map +1 -0
- package/dist/utils/image/aspect-ratio.js +40 -0
- package/dist/utils/image/aspect-ratio.js.map +1 -0
- package/dist/utils/image/background.d.ts +6 -0
- package/dist/utils/image/background.d.ts.map +1 -0
- package/dist/utils/image/background.js +22 -0
- package/dist/utils/image/background.js.map +1 -0
- package/dist/utils/image/compression.d.ts +44 -0
- package/dist/utils/image/compression.d.ts.map +1 -0
- package/dist/utils/image/compression.js +345 -0
- package/dist/utils/image/compression.js.map +1 -0
- package/dist/utils/image/gravity.d.ts +6 -0
- package/dist/utils/image/gravity.d.ts.map +1 -0
- package/dist/utils/image/gravity.js +24 -0
- package/dist/utils/image/gravity.js.map +1 -0
- package/dist/utils/image/index.d.ts +8 -0
- package/dist/utils/image/index.d.ts.map +1 -0
- package/dist/utils/image/index.js +77 -0
- package/dist/utils/image/index.js.map +1 -0
- package/dist/utils/image/param-registry.d.ts +63 -0
- package/dist/utils/image/param-registry.d.ts.map +1 -0
- package/dist/utils/image/param-registry.js +196 -0
- package/dist/utils/image/param-registry.js.map +1 -0
- package/dist/utils/image/quality.d.ts +8 -0
- package/dist/utils/image/quality.d.ts.map +1 -0
- package/dist/utils/image/quality.js +9 -0
- package/dist/utils/image/quality.js.map +1 -0
- package/dist/utils/image/resize.d.ts +7 -0
- package/dist/utils/image/resize.d.ts.map +1 -0
- package/dist/utils/image/resize.js +62 -0
- package/dist/utils/image/resize.js.map +1 -0
- package/dist/utils/image/rotation.d.ts +6 -0
- package/dist/utils/image/rotation.d.ts.map +1 -0
- package/dist/utils/image/rotation.js +20 -0
- package/dist/utils/image/rotation.js.map +1 -0
- package/dist/utils/image/round-corners.d.ts +12 -0
- package/dist/utils/image/round-corners.d.ts.map +1 -0
- package/dist/utils/image/round-corners.js +102 -0
- package/dist/utils/image/round-corners.js.map +1 -0
- package/dist/utils/image/types.d.ts +2 -0
- package/dist/utils/image/types.d.ts.map +1 -0
- package/dist/utils/image/types.js +2 -0
- package/dist/utils/image/types.js.map +1 -0
- package/dist/utils/logger.d.ts +21 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +82 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/parser.d.ts +8 -0
- package/dist/utils/parser.d.ts.map +1 -0
- package/dist/utils/parser.js +226 -0
- package/dist/utils/parser.js.map +1 -0
- package/dist/utils/signature.d.ts +35 -0
- package/dist/utils/signature.d.ts.map +1 -0
- package/dist/utils/signature.js +100 -0
- package/dist/utils/signature.js.map +1 -0
- package/dist/utils/storage/cache.d.ts +41 -0
- package/dist/utils/storage/cache.d.ts.map +1 -0
- package/dist/utils/storage/cache.js +90 -0
- package/dist/utils/storage/cache.js.map +1 -0
- package/dist/utils/storage/cloud-storage.d.ts +188 -0
- package/dist/utils/storage/cloud-storage.d.ts.map +1 -0
- package/dist/utils/storage/cloud-storage.js +514 -0
- package/dist/utils/storage/cloud-storage.js.map +1 -0
- package/dist/utils/storage/factory.d.ts +10 -0
- package/dist/utils/storage/factory.d.ts.map +1 -0
- package/dist/utils/storage/factory.js +17 -0
- package/dist/utils/storage/factory.js.map +1 -0
- package/dist/utils/storage/index.d.ts +7 -0
- package/dist/utils/storage/index.d.ts.map +1 -0
- package/dist/utils/storage/index.js +8 -0
- package/dist/utils/storage/index.js.map +1 -0
- package/dist/utils/storage/key-generator.d.ts +11 -0
- package/dist/utils/storage/key-generator.d.ts.map +1 -0
- package/dist/utils/storage/key-generator.js +23 -0
- package/dist/utils/storage/key-generator.js.map +1 -0
- package/dist/utils/storage/listing-cache.d.ts +14 -0
- package/dist/utils/storage/listing-cache.d.ts.map +1 -0
- package/dist/utils/storage/listing-cache.js +29 -0
- package/dist/utils/storage/listing-cache.js.map +1 -0
- package/dist/utils/storage/s3-client.d.ts +97 -0
- package/dist/utils/storage/s3-client.d.ts.map +1 -0
- package/dist/utils/storage/s3-client.js +297 -0
- package/dist/utils/storage/s3-client.js.map +1 -0
- package/dist/utils/storage/stats-tracker.d.ts +45 -0
- package/dist/utils/storage/stats-tracker.d.ts.map +1 -0
- package/dist/utils/storage/stats-tracker.js +97 -0
- package/dist/utils/storage/stats-tracker.js.map +1 -0
- package/dist/utils/storage/types.d.ts +2 -0
- package/dist/utils/storage/types.d.ts.map +1 -0
- package/dist/utils/storage/types.js +2 -0
- package/dist/utils/storage/types.js.map +1 -0
- package/dist/utils/storage-level.d.ts +66 -0
- package/dist/utils/storage-level.d.ts.map +1 -0
- package/dist/utils/storage-level.js +106 -0
- package/dist/utils/storage-level.js.map +1 -0
- package/dist/utils/storage-tree.d.ts +30 -0
- package/dist/utils/storage-tree.d.ts.map +1 -0
- package/dist/utils/storage-tree.js +81 -0
- package/dist/utils/storage-tree.js.map +1 -0
- package/dist/utils/upload-signature.d.ts +25 -0
- package/dist/utils/upload-signature.d.ts.map +1 -0
- package/dist/utils/upload-signature.js +56 -0
- package/dist/utils/upload-signature.js.map +1 -0
- package/dist/utils/video/auto-downscale.d.ts +12 -0
- package/dist/utils/video/auto-downscale.d.ts.map +1 -0
- package/dist/utils/video/auto-downscale.js +29 -0
- package/dist/utils/video/auto-downscale.js.map +1 -0
- package/dist/utils/video/command-builder.d.ts +22 -0
- package/dist/utils/video/command-builder.d.ts.map +1 -0
- package/dist/utils/video/command-builder.js +79 -0
- package/dist/utils/video/command-builder.js.map +1 -0
- package/dist/utils/video/config.d.ts +51 -0
- package/dist/utils/video/config.d.ts.map +1 -0
- package/dist/utils/video/config.js +170 -0
- package/dist/utils/video/config.js.map +1 -0
- package/dist/utils/video/format.d.ts +22 -0
- package/dist/utils/video/format.d.ts.map +1 -0
- package/dist/utils/video/format.js +64 -0
- package/dist/utils/video/format.js.map +1 -0
- package/dist/utils/video/index.d.ts +25 -0
- package/dist/utils/video/index.d.ts.map +1 -0
- package/dist/utils/video/index.js +104 -0
- package/dist/utils/video/index.js.map +1 -0
- package/dist/utils/video/param-registry.d.ts +64 -0
- package/dist/utils/video/param-registry.d.ts.map +1 -0
- package/dist/utils/video/param-registry.js +201 -0
- package/dist/utils/video/param-registry.js.map +1 -0
- package/dist/utils/video/quality.d.ts +12 -0
- package/dist/utils/video/quality.d.ts.map +1 -0
- package/dist/utils/video/quality.js +45 -0
- package/dist/utils/video/quality.js.map +1 -0
- package/dist/utils/video/queue-store.d.ts +51 -0
- package/dist/utils/video/queue-store.d.ts.map +1 -0
- package/dist/utils/video/queue-store.js +2 -0
- package/dist/utils/video/queue-store.js.map +1 -0
- package/dist/utils/video/resize.d.ts +7 -0
- package/dist/utils/video/resize.d.ts.map +1 -0
- package/dist/utils/video/resize.js +40 -0
- package/dist/utils/video/resize.js.map +1 -0
- package/dist/utils/video/sqlite-video-job-store.d.ts +29 -0
- package/dist/utils/video/sqlite-video-job-store.d.ts.map +1 -0
- package/dist/utils/video/sqlite-video-job-store.js +320 -0
- package/dist/utils/video/sqlite-video-job-store.js.map +1 -0
- package/dist/utils/video/thumbnail.d.ts +7 -0
- package/dist/utils/video/thumbnail.d.ts.map +1 -0
- package/dist/utils/video/thumbnail.js +22 -0
- package/dist/utils/video/thumbnail.js.map +1 -0
- package/dist/utils/video/trim.d.ts +7 -0
- package/dist/utils/video/trim.d.ts.map +1 -0
- package/dist/utils/video/trim.js +36 -0
- package/dist/utils/video/trim.js.map +1 -0
- package/dist/utils/video/types.d.ts +19 -0
- package/dist/utils/video/types.d.ts.map +1 -0
- package/dist/utils/video/types.js +2 -0
- package/dist/utils/video/types.js.map +1 -0
- package/dist/utils/video/video-info.d.ts +25 -0
- package/dist/utils/video/video-info.d.ts.map +1 -0
- package/dist/utils/video/video-info.js +58 -0
- package/dist/utils/video/video-info.js.map +1 -0
- package/dist/utils/video/video-worker.d.ts +52 -0
- package/dist/utils/video/video-worker.d.ts.map +1 -0
- package/dist/utils/video/video-worker.js +192 -0
- package/dist/utils/video/video-worker.js.map +1 -0
- package/dist/utils/video-job-queue.d.ts +62 -0
- package/dist/utils/video-job-queue.d.ts.map +1 -0
- package/dist/utils/video-job-queue.js +122 -0
- package/dist/utils/video-job-queue.js.map +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.service.js","sourceRoot":"","sources":["../../src/services/transform.service.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
export type CropMode = "fill" | "fit" | "scale" | "crop" | "pad";
|
|
2
|
+
export type GravityMode = "center" | "north" | "south" | "east" | "west" | "face" | "auto";
|
|
3
|
+
export type ImageFormat = "avif" | "webp" | "jpeg" | "jpg" | "png";
|
|
4
|
+
export type VideoFormat = "mp4" | "mov" | "webm";
|
|
5
|
+
export interface BackgroundColor {
|
|
6
|
+
r: number;
|
|
7
|
+
g: number;
|
|
8
|
+
b: number;
|
|
9
|
+
alpha: number;
|
|
10
|
+
}
|
|
11
|
+
export interface TransformParams {
|
|
12
|
+
aspect?: string;
|
|
13
|
+
resize?: string;
|
|
14
|
+
width?: string;
|
|
15
|
+
height?: string;
|
|
16
|
+
crop?: CropMode;
|
|
17
|
+
gravity?: GravityMode;
|
|
18
|
+
rotate?: string | number;
|
|
19
|
+
background?: string;
|
|
20
|
+
quality?: string | number;
|
|
21
|
+
format?: ImageFormat;
|
|
22
|
+
radius?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface VideoTransformParams {
|
|
25
|
+
format?: VideoFormat | ImageFormat;
|
|
26
|
+
startOffset?: number;
|
|
27
|
+
endOffset?: number;
|
|
28
|
+
resize?: string;
|
|
29
|
+
width?: string | number;
|
|
30
|
+
height?: string | number;
|
|
31
|
+
crop?: CropMode;
|
|
32
|
+
gravity?: GravityMode;
|
|
33
|
+
quality?: number;
|
|
34
|
+
thumbnail?: boolean;
|
|
35
|
+
thumbnailTime?: number;
|
|
36
|
+
}
|
|
37
|
+
export interface StorageConfig {
|
|
38
|
+
provider?: string;
|
|
39
|
+
region: string;
|
|
40
|
+
accessKeyId: string;
|
|
41
|
+
secretAccessKey: string;
|
|
42
|
+
bucketName: string;
|
|
43
|
+
endpoint?: string;
|
|
44
|
+
publicUrl?: string;
|
|
45
|
+
}
|
|
46
|
+
/** HTTP client tuning for the storage backend. All fields optional; timeouts of 0/undefined mean "disabled". */
|
|
47
|
+
export interface StorageClientOptions {
|
|
48
|
+
maxSockets?: number;
|
|
49
|
+
connectionTimeout?: number;
|
|
50
|
+
requestTimeout?: number;
|
|
51
|
+
socketTimeout?: number;
|
|
52
|
+
}
|
|
53
|
+
export interface CacheEntry {
|
|
54
|
+
exists: boolean;
|
|
55
|
+
timestamp: number;
|
|
56
|
+
etag?: string;
|
|
57
|
+
}
|
|
58
|
+
export interface CacheStats {
|
|
59
|
+
requests: Map<string, {
|
|
60
|
+
count: number;
|
|
61
|
+
lastAccess: number;
|
|
62
|
+
totalSize: number;
|
|
63
|
+
}>;
|
|
64
|
+
totalCacheSize: number;
|
|
65
|
+
maxCacheSize: number;
|
|
66
|
+
}
|
|
67
|
+
export interface ImageAnalysis {
|
|
68
|
+
hasText: boolean;
|
|
69
|
+
hasSharpEdges: boolean;
|
|
70
|
+
isPhotographic: boolean;
|
|
71
|
+
dominantColors: number;
|
|
72
|
+
complexity: number;
|
|
73
|
+
}
|
|
74
|
+
export interface OptimizationResult {
|
|
75
|
+
buffer: Buffer;
|
|
76
|
+
format: string;
|
|
77
|
+
originalSize: number;
|
|
78
|
+
optimizedSize: number;
|
|
79
|
+
savings: number;
|
|
80
|
+
compressionRatio: number;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { CloudStorage } from "./storage/cloud-storage";
|
|
2
|
+
import type { VideoJobStore } from "./video/queue-store";
|
|
3
|
+
export interface DeleteAssetResult {
|
|
4
|
+
success: boolean;
|
|
5
|
+
originalFileDeleted: boolean;
|
|
6
|
+
jobsDeleted: number;
|
|
7
|
+
localCacheFilesDeleted: number;
|
|
8
|
+
cloudCacheFilesDeleted: number;
|
|
9
|
+
errors: string[];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Deletes an asset and all its related cached files and jobs
|
|
13
|
+
* This is the central function for complete asset deletion
|
|
14
|
+
*/
|
|
15
|
+
export declare function deleteAssetCompletely(filePath: string, storage: CloudStorage | null, jobStore: VideoJobStore): Promise<DeleteAssetResult>;
|
|
16
|
+
//# sourceMappingURL=asset-deletion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-deletion.d.ts","sourceRoot":"","sources":["../../src/utils/asset-deletion.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,YAAY,GAAG,IAAI,EAC5B,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC,iBAAiB,CAAC,CA8J5B"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import logger, { serializeError } from "./logger.js";
|
|
4
|
+
import { deleteCachedFiles } from "./cache.js";
|
|
5
|
+
/**
|
|
6
|
+
* Deletes an asset and all its related cached files and jobs
|
|
7
|
+
* This is the central function for complete asset deletion
|
|
8
|
+
*/
|
|
9
|
+
export async function deleteAssetCompletely(filePath, storage, jobStore) {
|
|
10
|
+
const result = {
|
|
11
|
+
success: false,
|
|
12
|
+
originalFileDeleted: false,
|
|
13
|
+
jobsDeleted: 0,
|
|
14
|
+
localCacheFilesDeleted: 0,
|
|
15
|
+
cloudCacheFilesDeleted: 0,
|
|
16
|
+
errors: [],
|
|
17
|
+
};
|
|
18
|
+
logger.info({ filePath }, "Starting complete asset deletion");
|
|
19
|
+
try {
|
|
20
|
+
// Step 1: Verify that the file exists
|
|
21
|
+
let fileExists = false;
|
|
22
|
+
if (storage) {
|
|
23
|
+
fileExists = await storage.existsOriginal(filePath);
|
|
24
|
+
if (!fileExists) {
|
|
25
|
+
const isFolder = await storage.folderExists(filePath);
|
|
26
|
+
if (isFolder) {
|
|
27
|
+
const deleted = await storage.deleteFolder(filePath);
|
|
28
|
+
logger.info({ filePath, deleted }, "Deleted cloud folder");
|
|
29
|
+
result.originalFileDeleted = true;
|
|
30
|
+
result.success = true;
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
const localPath = path.join(".", "public", filePath);
|
|
37
|
+
fileExists = fs.existsSync(localPath);
|
|
38
|
+
}
|
|
39
|
+
if (!fileExists) {
|
|
40
|
+
const error = "File not found";
|
|
41
|
+
result.errors.push(error);
|
|
42
|
+
logger.warn({ filePath }, error);
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
// Step 2: Delete all video jobs associated with this file
|
|
46
|
+
try {
|
|
47
|
+
result.jobsDeleted = jobStore.deleteJobsByFilePath(filePath);
|
|
48
|
+
logger.debug({ filePath, count: result.jobsDeleted }, "Deleted video jobs");
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
const errorMsg = `Failed to delete jobs: ${error instanceof Error ? error.message : "Unknown error"}`;
|
|
52
|
+
result.errors.push(errorMsg);
|
|
53
|
+
logger.error({ error: serializeError(error), filePath }, "Failed to delete video jobs");
|
|
54
|
+
}
|
|
55
|
+
// Step 3: Delete local cache files
|
|
56
|
+
try {
|
|
57
|
+
result.localCacheFilesDeleted = await deleteCachedFiles(filePath);
|
|
58
|
+
logger.debug({ filePath, count: result.localCacheFilesDeleted }, "Deleted local cache files");
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
const errorMsg = `Failed to delete local cache: ${error instanceof Error ? error.message : "Unknown error"}`;
|
|
62
|
+
result.errors.push(errorMsg);
|
|
63
|
+
logger.error({ error: serializeError(error), filePath }, "Failed to delete local cache files");
|
|
64
|
+
}
|
|
65
|
+
// Step 4: Delete original file and cloud cache (if using cloud storage)
|
|
66
|
+
if (storage) {
|
|
67
|
+
try {
|
|
68
|
+
// Delete cloud cached transformations
|
|
69
|
+
result.cloudCacheFilesDeleted =
|
|
70
|
+
await storage.deleteAllCachedTransformations(filePath);
|
|
71
|
+
logger.debug({ filePath, count: result.cloudCacheFilesDeleted }, "Deleted cloud cache files");
|
|
72
|
+
// Delete the original file from cloud storage
|
|
73
|
+
await storage.deleteOriginal(filePath);
|
|
74
|
+
result.originalFileDeleted = true;
|
|
75
|
+
logger.debug({ filePath }, "Deleted original file from cloud storage");
|
|
76
|
+
// Invalidate in-memory cache entries
|
|
77
|
+
storage.invalidateAllCacheEntries(filePath);
|
|
78
|
+
logger.debug({ filePath }, "Invalidated memory cache entries");
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
const errorMsg = `Failed to delete from cloud storage: ${error instanceof Error ? error.message : "Unknown error"}`;
|
|
82
|
+
result.errors.push(errorMsg);
|
|
83
|
+
logger.error({ error: serializeError(error), filePath }, "Failed to delete from cloud storage");
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
// Delete from local storage
|
|
88
|
+
try {
|
|
89
|
+
const localPath = path.join(".", "public", filePath);
|
|
90
|
+
const stats = fs.statSync(localPath);
|
|
91
|
+
if (stats.isDirectory()) {
|
|
92
|
+
const folderContents = fs.readdirSync(localPath, {
|
|
93
|
+
withFileTypes: true,
|
|
94
|
+
recursive: false,
|
|
95
|
+
});
|
|
96
|
+
for (const content of folderContents) {
|
|
97
|
+
const contentPath = path.join(localPath, content.name);
|
|
98
|
+
await deleteAssetCompletely(contentPath, storage, jobStore);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
fs.rmSync(localPath, { force: false, recursive: true });
|
|
102
|
+
result.originalFileDeleted = true;
|
|
103
|
+
logger.debug({ filePath }, "Deleted original file from local storage");
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
const errorMsg = `Failed to delete from local storage: ${error instanceof Error ? error.message : "Unknown error"}`;
|
|
107
|
+
result.errors.push(errorMsg);
|
|
108
|
+
logger.error({ error: serializeError(error), filePath }, "Failed to delete from local storage");
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// Determine overall success
|
|
112
|
+
result.success = result.originalFileDeleted && result.errors.length === 0;
|
|
113
|
+
logger.info({
|
|
114
|
+
filePath,
|
|
115
|
+
success: result.success,
|
|
116
|
+
originalFileDeleted: result.originalFileDeleted,
|
|
117
|
+
jobsDeleted: result.jobsDeleted,
|
|
118
|
+
localCacheFilesDeleted: result.localCacheFilesDeleted,
|
|
119
|
+
cloudCacheFilesDeleted: result.cloudCacheFilesDeleted,
|
|
120
|
+
errorCount: result.errors.length,
|
|
121
|
+
}, "Completed asset deletion");
|
|
122
|
+
return result;
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
const errorMsg = `Unexpected error during deletion: ${error instanceof Error ? error.message : "Unknown error"}`;
|
|
126
|
+
result.errors.push(errorMsg);
|
|
127
|
+
logger.error({ error: serializeError(error), filePath }, "Unexpected error during asset deletion");
|
|
128
|
+
return result;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=asset-deletion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-deletion.js","sourceRoot":"","sources":["../../src/utils/asset-deletion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export declare class SmartCache {
|
|
2
|
+
private static stats;
|
|
3
|
+
static trackRequest(filePath: string, fileSize: number): Promise<void>;
|
|
4
|
+
static shouldKeepLocal(filePath: string, _fileSize: number): Promise<boolean>;
|
|
5
|
+
static shouldCleanupCache(): Promise<boolean>;
|
|
6
|
+
static performCleanup(): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Generate cache path for a given request path
|
|
10
|
+
*/
|
|
11
|
+
export declare function getCachePath(requestPath: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Check if a file exists in cache
|
|
14
|
+
*/
|
|
15
|
+
export declare function existsInCache(cachePath: string): Promise<boolean>;
|
|
16
|
+
/**
|
|
17
|
+
* Save buffer to cache
|
|
18
|
+
*/
|
|
19
|
+
export declare function saveToCache(cachePath: string, buffer: Buffer): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Read buffer from cache
|
|
22
|
+
*/
|
|
23
|
+
export declare function readFromCache(cachePath: string): Promise<Buffer>;
|
|
24
|
+
/**
|
|
25
|
+
* Initialize cache directory
|
|
26
|
+
*/
|
|
27
|
+
export declare function initializeCache(): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Delete all cached files related to an original file path
|
|
30
|
+
* This scans the cache directory and removes files that contain the original path in their name
|
|
31
|
+
*/
|
|
32
|
+
export declare function deleteCachedFiles(originalPath: string): Promise<number>;
|
|
33
|
+
/**
|
|
34
|
+
* Gets aggregate stats for the local cache directory
|
|
35
|
+
*/
|
|
36
|
+
export declare function getCacheSize(): Promise<{
|
|
37
|
+
size: number;
|
|
38
|
+
fileCount: number;
|
|
39
|
+
}>;
|
|
40
|
+
/**
|
|
41
|
+
* Deletes all files in the local cache directory
|
|
42
|
+
*/
|
|
43
|
+
export declare function clearAllCache(): Promise<number>;
|
|
44
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"AASA,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAIlB;WAEW,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;WAe/D,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;WAStE,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;WAItC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CA4B7C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAQxD;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOvE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBlF;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOtE;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CASrD;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkD7E;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CA4BjF;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CA+BrD"}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { promises as fs } from 'fs';
|
|
2
|
+
import { join, dirname } from 'path';
|
|
3
|
+
import { existsSync } from 'fs';
|
|
4
|
+
import logger, { serializeError } from './logger.js';
|
|
5
|
+
// Cache directory
|
|
6
|
+
const CACHE_DIR = './cache';
|
|
7
|
+
export class SmartCache {
|
|
8
|
+
static stats = {
|
|
9
|
+
requests: new Map(),
|
|
10
|
+
totalCacheSize: 0,
|
|
11
|
+
maxCacheSize: 1024 * 1024 * 1024 // 1GB default
|
|
12
|
+
};
|
|
13
|
+
static async trackRequest(filePath, fileSize) {
|
|
14
|
+
const existing = this.stats.requests.get(filePath);
|
|
15
|
+
if (existing) {
|
|
16
|
+
existing.count++;
|
|
17
|
+
existing.lastAccess = Date.now();
|
|
18
|
+
existing.totalSize = fileSize;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
this.stats.requests.set(filePath, {
|
|
22
|
+
count: 1,
|
|
23
|
+
lastAccess: Date.now(),
|
|
24
|
+
totalSize: fileSize
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
static async shouldKeepLocal(filePath, _fileSize) {
|
|
29
|
+
const stats = this.stats.requests.get(filePath);
|
|
30
|
+
if (!stats)
|
|
31
|
+
return false;
|
|
32
|
+
// Keep if accessed more than once in the last hour
|
|
33
|
+
const oneHourAgo = Date.now() - (60 * 60 * 1000);
|
|
34
|
+
return stats.count > 1 && stats.lastAccess > oneHourAgo;
|
|
35
|
+
}
|
|
36
|
+
static async shouldCleanupCache() {
|
|
37
|
+
return this.stats.totalCacheSize > this.stats.maxCacheSize * 0.8;
|
|
38
|
+
}
|
|
39
|
+
static async performCleanup() {
|
|
40
|
+
logger.info('Performing cache cleanup...');
|
|
41
|
+
// Get all cache entries sorted by last access time
|
|
42
|
+
const entries = Array.from(this.stats.requests.entries())
|
|
43
|
+
.sort((a, b) => a[1].lastAccess - b[1].lastAccess);
|
|
44
|
+
// Remove oldest 20% of entries
|
|
45
|
+
const toRemove = entries.slice(0, Math.floor(entries.length * 0.2));
|
|
46
|
+
for (const [filePath] of toRemove) {
|
|
47
|
+
const cachePath = getCachePath(filePath);
|
|
48
|
+
try {
|
|
49
|
+
if (existsSync(cachePath)) {
|
|
50
|
+
await fs.unlink(cachePath);
|
|
51
|
+
const stats = this.stats.requests.get(filePath);
|
|
52
|
+
if (stats) {
|
|
53
|
+
this.stats.totalCacheSize -= stats.totalSize;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
this.stats.requests.delete(filePath);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
logger.warn({ error: serializeError(error), cachePath }, 'Failed to cleanup cache file');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
logger.info({ removedCount: toRemove.length }, 'Cache cleanup completed');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Generate cache path for a given request path
|
|
67
|
+
*/
|
|
68
|
+
export function getCachePath(requestPath) {
|
|
69
|
+
// Create a safe filename from the request path
|
|
70
|
+
const safePath = requestPath
|
|
71
|
+
.replace(/[^a-zA-Z0-9.-]/g, '_')
|
|
72
|
+
.replace(/_+/g, '_')
|
|
73
|
+
.replace(/^_|_$/g, '');
|
|
74
|
+
return join(CACHE_DIR, safePath);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Check if a file exists in cache
|
|
78
|
+
*/
|
|
79
|
+
export async function existsInCache(cachePath) {
|
|
80
|
+
try {
|
|
81
|
+
await fs.access(cachePath);
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Save buffer to cache
|
|
90
|
+
*/
|
|
91
|
+
export async function saveToCache(cachePath, buffer) {
|
|
92
|
+
try {
|
|
93
|
+
// Ensure cache directory exists
|
|
94
|
+
const cacheDir = dirname(cachePath);
|
|
95
|
+
if (!existsSync(cacheDir)) {
|
|
96
|
+
await fs.mkdir(cacheDir, { recursive: true });
|
|
97
|
+
}
|
|
98
|
+
await fs.writeFile(cachePath, buffer);
|
|
99
|
+
// Update cache size tracking
|
|
100
|
+
SmartCache['stats'].totalCacheSize += buffer.length;
|
|
101
|
+
logger.debug({ cachePath, size: buffer.length }, 'Saved to cache');
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
logger.warn({ error: serializeError(error), cachePath }, 'Failed to save to cache');
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Read buffer from cache
|
|
109
|
+
*/
|
|
110
|
+
export async function readFromCache(cachePath) {
|
|
111
|
+
try {
|
|
112
|
+
return await fs.readFile(cachePath);
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
logger.warn({ error: serializeError(error), cachePath }, 'Failed to read from cache');
|
|
116
|
+
throw error;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Initialize cache directory
|
|
121
|
+
*/
|
|
122
|
+
export async function initializeCache() {
|
|
123
|
+
try {
|
|
124
|
+
if (!existsSync(CACHE_DIR)) {
|
|
125
|
+
await fs.mkdir(CACHE_DIR, { recursive: true });
|
|
126
|
+
logger.info({ cacheDir: CACHE_DIR }, 'Created cache directory');
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
logger.warn({ error: serializeError(error), cacheDir: CACHE_DIR }, 'Failed to initialize cache directory');
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Delete all cached files related to an original file path
|
|
135
|
+
* This scans the cache directory and removes files that contain the original path in their name
|
|
136
|
+
*/
|
|
137
|
+
export async function deleteCachedFiles(originalPath) {
|
|
138
|
+
try {
|
|
139
|
+
if (!existsSync(CACHE_DIR)) {
|
|
140
|
+
logger.debug({ originalPath }, 'Cache directory does not exist');
|
|
141
|
+
return 0;
|
|
142
|
+
}
|
|
143
|
+
const files = await fs.readdir(CACHE_DIR);
|
|
144
|
+
let deletedCount = 0;
|
|
145
|
+
// Create a safe pattern to match files related to this original path
|
|
146
|
+
// The cache path is generated from the request path which includes the original file
|
|
147
|
+
const pathSegments = originalPath.split('/');
|
|
148
|
+
const fileName = pathSegments[pathSegments.length - 1];
|
|
149
|
+
const fileNameWithoutExt = fileName.split('.')[0];
|
|
150
|
+
for (const file of files) {
|
|
151
|
+
const filePath = join(CACHE_DIR, file);
|
|
152
|
+
try {
|
|
153
|
+
const stats = await fs.stat(filePath);
|
|
154
|
+
if (stats.isFile()) {
|
|
155
|
+
// Check if this file is related to our original path
|
|
156
|
+
// Cache files contain the original filename in their name
|
|
157
|
+
if (file.includes(fileNameWithoutExt) || file.includes(originalPath.replace(/[^a-zA-Z0-9.-]/g, '_'))) {
|
|
158
|
+
await fs.unlink(filePath);
|
|
159
|
+
// Update cache stats
|
|
160
|
+
const cachedStats = SmartCache['stats'].requests.get(originalPath);
|
|
161
|
+
if (cachedStats) {
|
|
162
|
+
SmartCache['stats'].totalCacheSize -= cachedStats.totalSize;
|
|
163
|
+
SmartCache['stats'].requests.delete(originalPath);
|
|
164
|
+
}
|
|
165
|
+
deletedCount++;
|
|
166
|
+
logger.debug({ file, originalPath }, 'Deleted cache file');
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
logger.warn({ error: serializeError(error), file }, 'Failed to delete cache file');
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
logger.info({ originalPath, deletedCount }, 'Deleted local cache files');
|
|
175
|
+
return deletedCount;
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
logger.error({ error: serializeError(error), originalPath }, 'Failed to delete cached files');
|
|
179
|
+
return 0;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Gets aggregate stats for the local cache directory
|
|
184
|
+
*/
|
|
185
|
+
export async function getCacheSize() {
|
|
186
|
+
try {
|
|
187
|
+
if (!existsSync(CACHE_DIR)) {
|
|
188
|
+
return { size: 0, fileCount: 0 };
|
|
189
|
+
}
|
|
190
|
+
const files = await fs.readdir(CACHE_DIR);
|
|
191
|
+
let size = 0;
|
|
192
|
+
let fileCount = 0;
|
|
193
|
+
for (const file of files) {
|
|
194
|
+
const filePath = join(CACHE_DIR, file);
|
|
195
|
+
try {
|
|
196
|
+
const stats = await fs.stat(filePath);
|
|
197
|
+
if (stats.isFile()) {
|
|
198
|
+
size += stats.size;
|
|
199
|
+
fileCount++;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
logger.warn({ error: serializeError(error), file }, 'Failed to stat cache file');
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return { size, fileCount };
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
logger.error({ error: serializeError(error) }, 'Failed to compute cache size');
|
|
210
|
+
return { size: 0, fileCount: 0 };
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Deletes all files in the local cache directory
|
|
215
|
+
*/
|
|
216
|
+
export async function clearAllCache() {
|
|
217
|
+
try {
|
|
218
|
+
if (!existsSync(CACHE_DIR)) {
|
|
219
|
+
return 0;
|
|
220
|
+
}
|
|
221
|
+
const files = await fs.readdir(CACHE_DIR);
|
|
222
|
+
let deletedCount = 0;
|
|
223
|
+
for (const file of files) {
|
|
224
|
+
const filePath = join(CACHE_DIR, file);
|
|
225
|
+
try {
|
|
226
|
+
const stats = await fs.stat(filePath);
|
|
227
|
+
if (stats.isFile()) {
|
|
228
|
+
await fs.unlink(filePath);
|
|
229
|
+
deletedCount++;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
catch (error) {
|
|
233
|
+
logger.warn({ error: serializeError(error), file }, 'Failed to delete cache file');
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
SmartCache['stats'].requests.clear();
|
|
237
|
+
SmartCache['stats'].totalCacheSize = 0;
|
|
238
|
+
logger.info({ deletedCount }, 'Cleared all local cache files');
|
|
239
|
+
return deletedCount;
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
logger.error({ error: serializeError(error) }, 'Failed to clear cache');
|
|
243
|
+
return 0;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
// Initialize cache on module load
|
|
247
|
+
initializeCache();
|
|
248
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates a unique file path by appending suffixes (1), (2), (3), ...
|
|
3
|
+
* when a given path already exists.
|
|
4
|
+
*
|
|
5
|
+
* A "duplicate" is defined as the same full path (folders + filename).
|
|
6
|
+
*/
|
|
7
|
+
export declare function getUniqueFilePath(originalPath: string, exists: (filePath: string) => Promise<boolean>, maxAttempts?: number): Promise<string>;
|
|
8
|
+
//# sourceMappingURL=get-unique-file-path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-unique-file-path.d.ts","sourceRoot":"","sources":["../../src/utils/get-unique-file-path.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAC9C,WAAW,GAAE,MAAY,GACxB,OAAO,CAAC,MAAM,CAAC,CAwBjB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
/**
|
|
3
|
+
* Generates a unique file path by appending suffixes (1), (2), (3), ...
|
|
4
|
+
* when a given path already exists.
|
|
5
|
+
*
|
|
6
|
+
* A "duplicate" is defined as the same full path (folders + filename).
|
|
7
|
+
*/
|
|
8
|
+
export async function getUniqueFilePath(originalPath, exists, maxAttempts = 100) {
|
|
9
|
+
// Start by checking the original path
|
|
10
|
+
if (!(await exists(originalPath))) {
|
|
11
|
+
return originalPath;
|
|
12
|
+
}
|
|
13
|
+
const dir = path.posix.dirname(originalPath);
|
|
14
|
+
const baseName = path.posix.basename(originalPath);
|
|
15
|
+
const ext = path.posix.extname(baseName);
|
|
16
|
+
const nameWithoutExt = ext ? baseName.slice(0, -ext.length) : baseName;
|
|
17
|
+
for (let i = 1; i <= maxAttempts; i++) {
|
|
18
|
+
const candidateName = `${nameWithoutExt} (${i})${ext}`;
|
|
19
|
+
const candidatePath = dir === "." ? candidateName : `${dir}/${candidateName}`;
|
|
20
|
+
if (!(await exists(candidatePath))) {
|
|
21
|
+
return candidatePath;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
throw new Error(`Unable to generate unique file path after ${maxAttempts} attempts for ${originalPath}`);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=get-unique-file-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-unique-file-path.js","sourceRoot":"","sources":["../../src/utils/get-unique-file-path.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,YAAoB,EACpB,MAA8C,EAC9C,cAAsB,GAAG;IAEzB,sCAAsC;IACtC,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QAClC,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,cAAc,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAEvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,aAAa,GAAG,GAAG,cAAc,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;QACvD,MAAM,aAAa,GACjB,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,aAAa,EAAE,CAAC;QAE1D,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;YACnC,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,6CAA6C,WAAW,iBAAiB,YAAY,EAAE,CACxF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import sharp from 'sharp';
|
|
2
|
+
import { GravityMode } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Apply aspect ratio transformation to an image
|
|
5
|
+
*/
|
|
6
|
+
export declare const applyAspectRatio: (image: sharp.Sharp, aspectParam: string, gravity?: GravityMode) => Promise<sharp.Sharp>;
|
|
7
|
+
//# sourceMappingURL=aspect-ratio.d.ts.map
|