@adaptive-ds/assets-optimizer 0.4.0 → 0.5.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.
@@ -0,0 +1,9 @@
1
+ ## [0.5.0] - 2026-04-19
2
+
3
+ ### 🐛 Bug Fixes
4
+
5
+ - Is empty dir/remote checks
6
+
7
+ ### 🚜 Refactor
8
+
9
+ - *(process)* Use simple complete remote paths, defined and passed by clients
@@ -1,9 +1,9 @@
1
1
  import type { AssetsOptimizeOptions } from "../AssetsOptimizeOptions.js";
2
2
  export interface ProcessAssetsOptions extends AssetsOptimizeOptions {
3
- remoteSource: string;
4
- remoteDestination: string;
5
- remoteSourcePrefix?: string;
6
- remoteDestinationPrefix?: string;
3
+ sourceImagesRemotePath: string;
4
+ sourceVideosRemotePath: string;
5
+ destImagesRemotePath: string;
6
+ destVideosRemotePath: string;
7
7
  cwd?: string;
8
8
  resync?: boolean;
9
9
  processImages?: boolean;
@@ -15,10 +15,6 @@ export interface ProcessAssetsOptions extends AssetsOptimizeOptions {
15
15
  imageListOutputPath?: string;
16
16
  videoListOutputPath?: string;
17
17
  assetsOptimizeLocallyFn?: () => Promise<void>;
18
- sourceImagesFolder?: string;
19
- sourceVideosFolder?: string;
20
- destImagesFolder?: string;
21
- destVideosFolder?: string;
22
18
  imageCacheControl?: string;
23
19
  videoCacheControl?: string;
24
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ProcessAssetsOptions.d.ts","sourceRoot":"","sources":["../../src/process/ProcessAssetsOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAExE,MAAM,WAAW,oBAAqB,SAAQ,qBAAqB;IACjE,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,uBAAuB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7C,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B"}
1
+ {"version":3,"file":"ProcessAssetsOptions.d.ts","sourceRoot":"","sources":["../../src/process/ProcessAssetsOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAExE,MAAM,WAAW,oBAAqB,SAAQ,qBAAqB;IACjE,sBAAsB,EAAE,MAAM,CAAA;IAC9B,sBAAsB,EAAE,MAAM,CAAA;IAC9B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,uBAAuB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"processAssets.d.ts","sourceRoot":"","sources":["../../src/process/processAssets.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAGrE,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwFhF"}
1
+ {"version":3,"file":"processAssets.d.ts","sourceRoot":"","sources":["../../src/process/processAssets.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAGrE,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFhF"}
@@ -3,20 +3,16 @@ import { bisync } from "../rclone/bisync.js";
3
3
  import { runRclone } from "../rclone/runRclone.js";
4
4
  import { shouldBisync } from "./utils/shouldBisync.js";
5
5
  export async function processAssets(options) {
6
- const { remoteSource, remoteDestination, cwd = process.cwd(), resync = false, processImages = true, processVideos = true, imageOriginalsDir = "./images", imageOptimizedDir = "./public/images", videoOriginalsDir = "./videos", videoOptimizedDir = "./public/videos", imageListOutputPath = "./src/app/assets/imageList.ts", videoListOutputPath = "./src/app/assets/videoList.ts", assetsOptimizeLocallyFn, sourceImagesFolder = "Bilder", sourceVideosFolder = "Videos", destImagesFolder = "images/optimized", destVideosFolder = "videos/optimized", imageCacheControl = "Cache-Control:public, max-age=31536000, immutable", videoCacheControl = "Cache-Control:public, max-age=259200, immutable", logLevel, ...assetsOptimizeOptions } = options;
6
+ const { sourceImagesRemotePath, sourceVideosRemotePath, destImagesRemotePath, destVideosRemotePath, cwd = process.cwd(), resync = false, processImages = true, processVideos = true, imageOriginalsDir = "./images", imageOptimizedDir = "./public/images", videoOriginalsDir = "./videos", videoOptimizedDir = "./public/videos", imageListOutputPath = "./src/app/assets/imageList.ts", videoListOutputPath = "./src/app/assets/videoList.ts", assetsOptimizeLocallyFn, imageCacheControl = "Cache-Control:public, max-age=31536000, immutable", videoCacheControl = "Cache-Control:public, max-age=259200, immutable", logLevel, ...assetsOptimizeOptions } = options;
7
7
  if (!processImages && !processVideos) {
8
8
  if ((logLevel ?? 3) >= 2)
9
9
  console.log("Nothing to process (both images and videos disabled)");
10
10
  return;
11
11
  }
12
- const remoteSourcePrefix = options.remoteSourcePrefix ? `${options.remoteSourcePrefix}/` : "";
13
- const remoteDestinationPrefix = options.remoteDestinationPrefix ? `${options.remoteDestinationPrefix}/` : "";
14
- const resolvedRemoteSource = remoteSource.startsWith(":") ? remoteSource : `${remoteSource}`;
15
- const resolvedRemoteDestination = remoteDestination.startsWith(":") ? remoteDestination : `${remoteDestination}`;
16
- const sourceImages = `${resolvedRemoteSource}${remoteSourcePrefix}${sourceImagesFolder}`;
17
- const sourceVideos = `${resolvedRemoteSource}${remoteSourcePrefix}${sourceVideosFolder}`;
18
- const destImages = `${resolvedRemoteDestination}${remoteDestinationPrefix}${destImagesFolder}`;
19
- const destVideos = `${resolvedRemoteDestination}${remoteDestinationPrefix}${destVideosFolder}`;
12
+ const sourceImages = sourceImagesRemotePath;
13
+ const sourceVideos = sourceVideosRemotePath;
14
+ const destImages = destImagesRemotePath;
15
+ const destVideos = destVideosRemotePath;
20
16
  const syncImages = processImages ? await shouldBisync(imageOriginalsDir, sourceImages) : false;
21
17
  const syncVideos = processVideos ? await shouldBisync(videoOriginalsDir, sourceVideos) : false;
22
18
  if (!syncImages && !syncVideos) {
@@ -1,8 +1,8 @@
1
- import fs from "node:fs/promises";
1
+ import { walkFiles } from "./walkFiles.js";
2
2
  export async function isLocalDirEmpty(dir) {
3
3
  try {
4
- const entries = await fs.readdir(dir, { withFileTypes: true });
5
- return entries.filter((e) => e.isFile()).length === 0;
4
+ const files = await walkFiles(dir);
5
+ return files.length === 0;
6
6
  }
7
7
  catch {
8
8
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"isRemoteEmpty.d.ts","sourceRoot":"","sources":["../../src/shared/isRemoteEmpty.ts"],"names":[],"mappings":"AAEA,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUpE"}
1
+ {"version":3,"file":"isRemoteEmpty.d.ts","sourceRoot":"","sources":["../../src/shared/isRemoteEmpty.ts"],"names":[],"mappings":"AAEA,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBpE"}
@@ -6,7 +6,15 @@ export async function isRemoteEmpty(remote) {
6
6
  stderr: "pipe",
7
7
  });
8
8
  const output = await new Response(proc.stdout).text();
9
- await proc.exited;
10
- const result = JSON.parse(output);
11
- return result.count === 0;
9
+ const exitCode = await proc.exited;
10
+ if (exitCode !== 0) {
11
+ return true;
12
+ }
13
+ try {
14
+ const result = JSON.parse(output);
15
+ return result.count === 0;
16
+ }
17
+ catch {
18
+ return true;
19
+ }
12
20
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaptive-ds/assets-optimizer",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "main": "./dist/index.js",
5
5
  "dependencies": {
6
6
  "image-size": "^2.0.2",