@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.
Files changed (242) hide show
  1. package/LICENSE +661 -0
  2. package/dist/config/deps.d.ts +14 -0
  3. package/dist/config/deps.d.ts.map +1 -0
  4. package/dist/config/deps.js +2 -0
  5. package/dist/config/deps.js.map +1 -0
  6. package/dist/index.d.ts +27 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +28 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/routes/authenticated.d.ts +4 -0
  11. package/dist/routes/authenticated.d.ts.map +1 -0
  12. package/dist/routes/authenticated.js +130 -0
  13. package/dist/routes/authenticated.js.map +1 -0
  14. package/dist/routes/download-folder.d.ts +4 -0
  15. package/dist/routes/download-folder.d.ts.map +1 -0
  16. package/dist/routes/download-folder.js +101 -0
  17. package/dist/routes/download-folder.js.map +1 -0
  18. package/dist/routes/download-zip.d.ts +15 -0
  19. package/dist/routes/download-zip.d.ts.map +1 -0
  20. package/dist/routes/download-zip.js +147 -0
  21. package/dist/routes/download-zip.js.map +1 -0
  22. package/dist/routes/download.d.ts +4 -0
  23. package/dist/routes/download.d.ts.map +1 -0
  24. package/dist/routes/download.js +83 -0
  25. package/dist/routes/download.js.map +1 -0
  26. package/dist/routes/invalidate.d.ts +4 -0
  27. package/dist/routes/invalidate.d.ts.map +1 -0
  28. package/dist/routes/invalidate.js +114 -0
  29. package/dist/routes/invalidate.js.map +1 -0
  30. package/dist/routes/queue-events.d.ts +4 -0
  31. package/dist/routes/queue-events.d.ts.map +1 -0
  32. package/dist/routes/queue-events.js +125 -0
  33. package/dist/routes/queue-events.js.map +1 -0
  34. package/dist/routes/queue.d.ts +4 -0
  35. package/dist/routes/queue.d.ts.map +1 -0
  36. package/dist/routes/queue.js +130 -0
  37. package/dist/routes/queue.js.map +1 -0
  38. package/dist/routes/storage.d.ts +4 -0
  39. package/dist/routes/storage.d.ts.map +1 -0
  40. package/dist/routes/storage.js +694 -0
  41. package/dist/routes/storage.js.map +1 -0
  42. package/dist/routes/transform-helpers.d.ts +62 -0
  43. package/dist/routes/transform-helpers.d.ts.map +1 -0
  44. package/dist/routes/transform-helpers.js +372 -0
  45. package/dist/routes/transform-helpers.js.map +1 -0
  46. package/dist/routes/transform.d.ts +4 -0
  47. package/dist/routes/transform.d.ts.map +1 -0
  48. package/dist/routes/transform.js +65 -0
  49. package/dist/routes/transform.js.map +1 -0
  50. package/dist/routes/video-status.d.ts +4 -0
  51. package/dist/routes/video-status.d.ts.map +1 -0
  52. package/dist/routes/video-status.js +208 -0
  53. package/dist/routes/video-status.js.map +1 -0
  54. package/dist/services/transform.service.d.ts +71 -0
  55. package/dist/services/transform.service.d.ts.map +1 -0
  56. package/dist/services/transform.service.js +362 -0
  57. package/dist/services/transform.service.js.map +1 -0
  58. package/dist/types.d.ts +82 -0
  59. package/dist/types.d.ts.map +1 -0
  60. package/dist/types.js +2 -0
  61. package/dist/types.js.map +1 -0
  62. package/dist/utils/asset-deletion.d.ts +16 -0
  63. package/dist/utils/asset-deletion.d.ts.map +1 -0
  64. package/dist/utils/asset-deletion.js +131 -0
  65. package/dist/utils/asset-deletion.js.map +1 -0
  66. package/dist/utils/cache.d.ts +44 -0
  67. package/dist/utils/cache.d.ts.map +1 -0
  68. package/dist/utils/cache.js +248 -0
  69. package/dist/utils/cache.js.map +1 -0
  70. package/dist/utils/get-unique-file-path.d.ts +8 -0
  71. package/dist/utils/get-unique-file-path.d.ts.map +1 -0
  72. package/dist/utils/get-unique-file-path.js +26 -0
  73. package/dist/utils/get-unique-file-path.js.map +1 -0
  74. package/dist/utils/image/aspect-ratio.d.ts +7 -0
  75. package/dist/utils/image/aspect-ratio.d.ts.map +1 -0
  76. package/dist/utils/image/aspect-ratio.js +40 -0
  77. package/dist/utils/image/aspect-ratio.js.map +1 -0
  78. package/dist/utils/image/background.d.ts +6 -0
  79. package/dist/utils/image/background.d.ts.map +1 -0
  80. package/dist/utils/image/background.js +22 -0
  81. package/dist/utils/image/background.js.map +1 -0
  82. package/dist/utils/image/compression.d.ts +44 -0
  83. package/dist/utils/image/compression.d.ts.map +1 -0
  84. package/dist/utils/image/compression.js +345 -0
  85. package/dist/utils/image/compression.js.map +1 -0
  86. package/dist/utils/image/gravity.d.ts +6 -0
  87. package/dist/utils/image/gravity.d.ts.map +1 -0
  88. package/dist/utils/image/gravity.js +24 -0
  89. package/dist/utils/image/gravity.js.map +1 -0
  90. package/dist/utils/image/index.d.ts +8 -0
  91. package/dist/utils/image/index.d.ts.map +1 -0
  92. package/dist/utils/image/index.js +77 -0
  93. package/dist/utils/image/index.js.map +1 -0
  94. package/dist/utils/image/param-registry.d.ts +63 -0
  95. package/dist/utils/image/param-registry.d.ts.map +1 -0
  96. package/dist/utils/image/param-registry.js +196 -0
  97. package/dist/utils/image/param-registry.js.map +1 -0
  98. package/dist/utils/image/quality.d.ts +8 -0
  99. package/dist/utils/image/quality.d.ts.map +1 -0
  100. package/dist/utils/image/quality.js +9 -0
  101. package/dist/utils/image/quality.js.map +1 -0
  102. package/dist/utils/image/resize.d.ts +7 -0
  103. package/dist/utils/image/resize.d.ts.map +1 -0
  104. package/dist/utils/image/resize.js +62 -0
  105. package/dist/utils/image/resize.js.map +1 -0
  106. package/dist/utils/image/rotation.d.ts +6 -0
  107. package/dist/utils/image/rotation.d.ts.map +1 -0
  108. package/dist/utils/image/rotation.js +20 -0
  109. package/dist/utils/image/rotation.js.map +1 -0
  110. package/dist/utils/image/round-corners.d.ts +12 -0
  111. package/dist/utils/image/round-corners.d.ts.map +1 -0
  112. package/dist/utils/image/round-corners.js +102 -0
  113. package/dist/utils/image/round-corners.js.map +1 -0
  114. package/dist/utils/image/types.d.ts +2 -0
  115. package/dist/utils/image/types.d.ts.map +1 -0
  116. package/dist/utils/image/types.js +2 -0
  117. package/dist/utils/image/types.js.map +1 -0
  118. package/dist/utils/logger.d.ts +21 -0
  119. package/dist/utils/logger.d.ts.map +1 -0
  120. package/dist/utils/logger.js +82 -0
  121. package/dist/utils/logger.js.map +1 -0
  122. package/dist/utils/parser.d.ts +8 -0
  123. package/dist/utils/parser.d.ts.map +1 -0
  124. package/dist/utils/parser.js +226 -0
  125. package/dist/utils/parser.js.map +1 -0
  126. package/dist/utils/signature.d.ts +35 -0
  127. package/dist/utils/signature.d.ts.map +1 -0
  128. package/dist/utils/signature.js +100 -0
  129. package/dist/utils/signature.js.map +1 -0
  130. package/dist/utils/storage/cache.d.ts +41 -0
  131. package/dist/utils/storage/cache.d.ts.map +1 -0
  132. package/dist/utils/storage/cache.js +90 -0
  133. package/dist/utils/storage/cache.js.map +1 -0
  134. package/dist/utils/storage/cloud-storage.d.ts +188 -0
  135. package/dist/utils/storage/cloud-storage.d.ts.map +1 -0
  136. package/dist/utils/storage/cloud-storage.js +514 -0
  137. package/dist/utils/storage/cloud-storage.js.map +1 -0
  138. package/dist/utils/storage/factory.d.ts +10 -0
  139. package/dist/utils/storage/factory.d.ts.map +1 -0
  140. package/dist/utils/storage/factory.js +17 -0
  141. package/dist/utils/storage/factory.js.map +1 -0
  142. package/dist/utils/storage/index.d.ts +7 -0
  143. package/dist/utils/storage/index.d.ts.map +1 -0
  144. package/dist/utils/storage/index.js +8 -0
  145. package/dist/utils/storage/index.js.map +1 -0
  146. package/dist/utils/storage/key-generator.d.ts +11 -0
  147. package/dist/utils/storage/key-generator.d.ts.map +1 -0
  148. package/dist/utils/storage/key-generator.js +23 -0
  149. package/dist/utils/storage/key-generator.js.map +1 -0
  150. package/dist/utils/storage/listing-cache.d.ts +14 -0
  151. package/dist/utils/storage/listing-cache.d.ts.map +1 -0
  152. package/dist/utils/storage/listing-cache.js +29 -0
  153. package/dist/utils/storage/listing-cache.js.map +1 -0
  154. package/dist/utils/storage/s3-client.d.ts +97 -0
  155. package/dist/utils/storage/s3-client.d.ts.map +1 -0
  156. package/dist/utils/storage/s3-client.js +297 -0
  157. package/dist/utils/storage/s3-client.js.map +1 -0
  158. package/dist/utils/storage/stats-tracker.d.ts +45 -0
  159. package/dist/utils/storage/stats-tracker.d.ts.map +1 -0
  160. package/dist/utils/storage/stats-tracker.js +97 -0
  161. package/dist/utils/storage/stats-tracker.js.map +1 -0
  162. package/dist/utils/storage/types.d.ts +2 -0
  163. package/dist/utils/storage/types.d.ts.map +1 -0
  164. package/dist/utils/storage/types.js +2 -0
  165. package/dist/utils/storage/types.js.map +1 -0
  166. package/dist/utils/storage-level.d.ts +66 -0
  167. package/dist/utils/storage-level.d.ts.map +1 -0
  168. package/dist/utils/storage-level.js +106 -0
  169. package/dist/utils/storage-level.js.map +1 -0
  170. package/dist/utils/storage-tree.d.ts +30 -0
  171. package/dist/utils/storage-tree.d.ts.map +1 -0
  172. package/dist/utils/storage-tree.js +81 -0
  173. package/dist/utils/storage-tree.js.map +1 -0
  174. package/dist/utils/upload-signature.d.ts +25 -0
  175. package/dist/utils/upload-signature.d.ts.map +1 -0
  176. package/dist/utils/upload-signature.js +56 -0
  177. package/dist/utils/upload-signature.js.map +1 -0
  178. package/dist/utils/video/auto-downscale.d.ts +12 -0
  179. package/dist/utils/video/auto-downscale.d.ts.map +1 -0
  180. package/dist/utils/video/auto-downscale.js +29 -0
  181. package/dist/utils/video/auto-downscale.js.map +1 -0
  182. package/dist/utils/video/command-builder.d.ts +22 -0
  183. package/dist/utils/video/command-builder.d.ts.map +1 -0
  184. package/dist/utils/video/command-builder.js +79 -0
  185. package/dist/utils/video/command-builder.js.map +1 -0
  186. package/dist/utils/video/config.d.ts +51 -0
  187. package/dist/utils/video/config.d.ts.map +1 -0
  188. package/dist/utils/video/config.js +170 -0
  189. package/dist/utils/video/config.js.map +1 -0
  190. package/dist/utils/video/format.d.ts +22 -0
  191. package/dist/utils/video/format.d.ts.map +1 -0
  192. package/dist/utils/video/format.js +64 -0
  193. package/dist/utils/video/format.js.map +1 -0
  194. package/dist/utils/video/index.d.ts +25 -0
  195. package/dist/utils/video/index.d.ts.map +1 -0
  196. package/dist/utils/video/index.js +104 -0
  197. package/dist/utils/video/index.js.map +1 -0
  198. package/dist/utils/video/param-registry.d.ts +64 -0
  199. package/dist/utils/video/param-registry.d.ts.map +1 -0
  200. package/dist/utils/video/param-registry.js +201 -0
  201. package/dist/utils/video/param-registry.js.map +1 -0
  202. package/dist/utils/video/quality.d.ts +12 -0
  203. package/dist/utils/video/quality.d.ts.map +1 -0
  204. package/dist/utils/video/quality.js +45 -0
  205. package/dist/utils/video/quality.js.map +1 -0
  206. package/dist/utils/video/queue-store.d.ts +51 -0
  207. package/dist/utils/video/queue-store.d.ts.map +1 -0
  208. package/dist/utils/video/queue-store.js +2 -0
  209. package/dist/utils/video/queue-store.js.map +1 -0
  210. package/dist/utils/video/resize.d.ts +7 -0
  211. package/dist/utils/video/resize.d.ts.map +1 -0
  212. package/dist/utils/video/resize.js +40 -0
  213. package/dist/utils/video/resize.js.map +1 -0
  214. package/dist/utils/video/sqlite-video-job-store.d.ts +29 -0
  215. package/dist/utils/video/sqlite-video-job-store.d.ts.map +1 -0
  216. package/dist/utils/video/sqlite-video-job-store.js +320 -0
  217. package/dist/utils/video/sqlite-video-job-store.js.map +1 -0
  218. package/dist/utils/video/thumbnail.d.ts +7 -0
  219. package/dist/utils/video/thumbnail.d.ts.map +1 -0
  220. package/dist/utils/video/thumbnail.js +22 -0
  221. package/dist/utils/video/thumbnail.js.map +1 -0
  222. package/dist/utils/video/trim.d.ts +7 -0
  223. package/dist/utils/video/trim.d.ts.map +1 -0
  224. package/dist/utils/video/trim.js +36 -0
  225. package/dist/utils/video/trim.js.map +1 -0
  226. package/dist/utils/video/types.d.ts +19 -0
  227. package/dist/utils/video/types.d.ts.map +1 -0
  228. package/dist/utils/video/types.js +2 -0
  229. package/dist/utils/video/types.js.map +1 -0
  230. package/dist/utils/video/video-info.d.ts +25 -0
  231. package/dist/utils/video/video-info.d.ts.map +1 -0
  232. package/dist/utils/video/video-info.js +58 -0
  233. package/dist/utils/video/video-info.js.map +1 -0
  234. package/dist/utils/video/video-worker.d.ts +52 -0
  235. package/dist/utils/video/video-worker.d.ts.map +1 -0
  236. package/dist/utils/video/video-worker.js +192 -0
  237. package/dist/utils/video/video-worker.js.map +1 -0
  238. package/dist/utils/video-job-queue.d.ts +62 -0
  239. package/dist/utils/video-job-queue.d.ts.map +1 -0
  240. package/dist/utils/video-job-queue.js +122 -0
  241. package/dist/utils/video-job-queue.js.map +1 -0
  242. 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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"}
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -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