@pixzle/cli 0.0.18 → 0.0.20

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 (46) hide show
  1. package/dist/cli.d.ts.map +1 -0
  2. package/dist/cli.js +10 -7
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/restore.d.ts.map +1 -0
  5. package/dist/commands/restore.js +37 -20
  6. package/dist/commands/restore.js.map +1 -1
  7. package/dist/commands/shuffle.d.ts.map +1 -0
  8. package/dist/commands/shuffle.js +47 -30
  9. package/dist/commands/shuffle.js.map +1 -1
  10. package/dist/constants.d.ts +1 -0
  11. package/dist/constants.js +6 -0
  12. package/dist/constants.js.map +1 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +8 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/package.json +42 -0
  17. package/dist/src/cli.d.ts +2 -0
  18. package/dist/src/cli.js +27 -0
  19. package/dist/src/cli.js.map +1 -0
  20. package/dist/src/commands/restore.d.ts +6 -0
  21. package/dist/src/commands/restore.js +45 -0
  22. package/dist/src/commands/restore.js.map +1 -0
  23. package/dist/src/commands/shuffle.d.ts +6 -0
  24. package/dist/src/commands/shuffle.js +71 -0
  25. package/dist/src/commands/shuffle.js.map +1 -0
  26. package/dist/src/constants.d.ts +1 -0
  27. package/dist/src/constants.js +6 -0
  28. package/dist/src/constants.js.map +1 -0
  29. package/dist/src/index.d.mts +3 -0
  30. package/dist/src/index.d.ts +3 -0
  31. package/dist/src/index.js +10 -0
  32. package/dist/src/index.js.map +1 -0
  33. package/dist/src/index.mjs +4 -0
  34. package/dist/src/index.mjs.map +1 -0
  35. package/dist/src/types.d.ts +12 -0
  36. package/dist/src/types.js +3 -0
  37. package/dist/src/types.js.map +1 -0
  38. package/dist/src/validators.d.ts +18 -0
  39. package/dist/src/validators.js +61 -0
  40. package/dist/src/validators.js.map +1 -0
  41. package/dist/types.d.ts.map +1 -0
  42. package/dist/types.js +2 -1
  43. package/dist/validators.d.ts.map +1 -0
  44. package/dist/validators.js +19 -14
  45. package/dist/validators.js.map +1 -1
  46. package/package.json +4 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js CHANGED
@@ -1,15 +1,18 @@
1
1
  #!/usr/bin/env node
2
- import { Command } from "commander";
3
- import { registerRestoreCommand } from "./commands/restore";
4
- import { registerShuffleCommand } from "./commands/shuffle";
5
- const program = new Command();
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const commander_1 = require("commander");
5
+ const restore_1 = require("./commands/restore");
6
+ const shuffle_1 = require("./commands/shuffle");
7
+ const constants_1 = require("./constants");
8
+ const program = new commander_1.Command();
6
9
  program
7
10
  .name("pixzle")
8
11
  .description("CLI tool for image fragmentation and restoration")
9
- .version("0.8.1");
12
+ .version(constants_1.VERSION);
10
13
  // Register commands
11
- registerShuffleCommand(program);
12
- registerRestoreCommand(program);
14
+ (0, shuffle_1.registerShuffleCommand)(program);
15
+ (0, restore_1.registerRestoreCommand)(program);
13
16
  // Error handling
14
17
  program.on("command:*", () => {
15
18
  console.error("Invalid command. See --help for available commands.");
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,kDAAkD,CAAC;KAC/D,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,oBAAoB;AACpB,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAEhC,iBAAiB;AACjB,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;IAC3B,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,kBAAkB;AAClB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,mCAAmC;AACnC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;IAC7B,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,gDAA4D;AAC5D,gDAA4D;AAC5D,2CAAsC;AAEtC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,kDAAkD,CAAC;KAC/D,OAAO,CAAC,mBAAO,CAAC,CAAC;AAEpB,oBAAoB;AACpB,IAAA,gCAAsB,EAAC,OAAO,CAAC,CAAC;AAChC,IAAA,gCAAsB,EAAC,OAAO,CAAC,CAAC;AAEhC,iBAAiB;AACjB,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;IAC3B,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,kBAAkB;AAClB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,mCAAmC;AACnC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;IAC7B,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../../src/commands/restore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAQ7D"}
@@ -1,10 +1,25 @@
1
- import Pixzle from "@pixzle/node";
2
- import { validateImagePaths, validateManifestPath, validateOutputDirectory, } from "../validators";
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.registerRestoreCommand = registerRestoreCommand;
16
+ const node_1 = __importDefault(require("@pixzle/node"));
17
+ const validators_1 = require("../validators");
3
18
  /**
4
19
  * Configures and registers the restore command
5
20
  * @param program Commander program instance
6
21
  */
7
- export function registerRestoreCommand(program) {
22
+ function registerRestoreCommand(program) {
8
23
  program
9
24
  .command("restore")
10
25
  .description("Restore fragmented images")
@@ -18,22 +33,24 @@ export function registerRestoreCommand(program) {
18
33
  * @param fragments Array of fragment file paths
19
34
  * @param options Command options
20
35
  */
21
- async function handleRestoreCommand(fragments, options) {
22
- try {
23
- console.log("🔀 Starting image restoration...");
24
- const imagePaths = validateImagePaths(fragments);
25
- const manifestPath = validateManifestPath(options.manifest);
26
- const outputDir = validateOutputDirectory(options.output);
27
- await Pixzle.restore({
28
- imagePaths,
29
- manifestPath,
30
- outputDir,
31
- });
32
- console.log(`✅ Images restored successfully to: ${outputDir}`);
33
- }
34
- catch (error) {
35
- console.error(`❌ Restoration failed: ${error instanceof Error ? error.message : String(error)}`);
36
- process.exit(1);
37
- }
36
+ function handleRestoreCommand(fragments, options) {
37
+ return __awaiter(this, void 0, void 0, function* () {
38
+ try {
39
+ console.log("🔀 Starting image restoration...");
40
+ const imagePaths = (0, validators_1.validateImagePaths)(fragments);
41
+ const manifestPath = (0, validators_1.validateManifestPath)(options.manifest);
42
+ const outputDir = (0, validators_1.validateOutputDirectory)(options.output);
43
+ yield node_1.default.restore({
44
+ imagePaths,
45
+ manifestPath,
46
+ outputDir,
47
+ });
48
+ console.log(`✅ Images restored successfully to: ${outputDir}`);
49
+ }
50
+ catch (error) {
51
+ console.error(`❌ Restoration failed: ${error instanceof Error ? error.message : String(error)}`);
52
+ process.exit(1);
53
+ }
54
+ });
38
55
  }
39
56
  //# sourceMappingURL=restore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"restore.js","sourceRoot":"","sources":["../../src/commands/restore.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,cAAc,CAAC;AAGlC,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,eAAe,CAAC;AAEvB;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,2BAA2B,CAAC;SACxC,QAAQ,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;SACjD,cAAc,CAAC,uBAAuB,EAAE,oBAAoB,CAAC;SAC7D,cAAc,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;SACxD,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,oBAAoB,CACjC,SAAmB,EACnB,OAAuB;IAEvB,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAEhD,MAAM,UAAU,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE1D,MAAM,MAAM,CAAC,OAAO,CAAC;YACnB,UAAU;YACV,YAAY;YACZ,SAAS;SACV,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,sCAAsC,SAAS,EAAE,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAClF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"restore.js","sourceRoot":"","sources":["../../src/commands/restore.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAaA,wDAQC;AArBD,wDAAkC;AAGlC,8CAIuB;AAEvB;;;GAGG;AACH,SAAgB,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,2BAA2B,CAAC;SACxC,QAAQ,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;SACjD,cAAc,CAAC,uBAAuB,EAAE,oBAAoB,CAAC;SAC7D,cAAc,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;SACxD,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,SAAe,oBAAoB,CACjC,SAAmB,EACnB,OAAuB;;QAEvB,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YAEhD,MAAM,UAAU,GAAG,IAAA,+BAAkB,EAAC,SAAS,CAAC,CAAC;YACjD,MAAM,YAAY,GAAG,IAAA,iCAAoB,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC5D,MAAM,SAAS,GAAG,IAAA,oCAAuB,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAE1D,MAAM,cAAM,CAAC,OAAO,CAAC;gBACnB,UAAU;gBACV,YAAY;gBACZ,SAAS;aACV,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,sCAAsC,SAAS,EAAE,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAClF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shuffle.d.ts","sourceRoot":"","sources":["../../src/commands/shuffle.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2B7D"}
@@ -1,10 +1,25 @@
1
- import Pixzle from "@pixzle/node";
2
- import { validateImagePaths, validateOutputDirectory } from "../validators";
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.registerShuffleCommand = registerShuffleCommand;
16
+ const node_1 = __importDefault(require("@pixzle/node"));
17
+ const validators_1 = require("../validators");
3
18
  /**
4
19
  * Configures and registers the shuffle command
5
20
  * @param program Commander program instance
6
21
  */
7
- export function registerShuffleCommand(program) {
22
+ function registerShuffleCommand(program) {
8
23
  program
9
24
  .command("shuffle")
10
25
  .description("Fragment images")
@@ -34,32 +49,34 @@ export function registerShuffleCommand(program) {
34
49
  * @param images Array of image file paths
35
50
  * @param options Command options
36
51
  */
37
- async function handleShuffleCommand(images, options) {
38
- try {
39
- console.log("🔀 Starting image fragmentation...");
40
- const imagePaths = validateImagePaths(images);
41
- const outputDir = validateOutputDirectory(options.output);
42
- const config = {};
43
- if (options.blockSize !== undefined)
44
- config.blockSize = options.blockSize;
45
- if (options.prefix !== undefined)
46
- config.prefix = options.prefix;
47
- if (options.seed !== undefined)
48
- config.seed = options.seed;
49
- if (options.preserveName)
50
- config.preserveName = true;
51
- if (options.crossImageShuffle)
52
- config.crossImageShuffle = true;
53
- await Pixzle.shuffle({
54
- imagePaths,
55
- outputDir,
56
- config: Object.keys(config).length > 0 ? config : undefined,
57
- });
58
- console.log(`✅ Images fragmented successfully to: ${outputDir}`);
59
- }
60
- catch (error) {
61
- console.error(`❌ Fragmentation failed: ${error instanceof Error ? error.message : String(error)}`);
62
- process.exit(1);
63
- }
52
+ function handleShuffleCommand(images, options) {
53
+ return __awaiter(this, void 0, void 0, function* () {
54
+ try {
55
+ console.log("🔀 Starting image fragmentation...");
56
+ const imagePaths = (0, validators_1.validateImagePaths)(images);
57
+ const outputDir = (0, validators_1.validateOutputDirectory)(options.output);
58
+ const config = {};
59
+ if (options.blockSize !== undefined)
60
+ config.blockSize = options.blockSize;
61
+ if (options.prefix !== undefined)
62
+ config.prefix = options.prefix;
63
+ if (options.seed !== undefined)
64
+ config.seed = options.seed;
65
+ if (options.preserveName)
66
+ config.preserveName = true;
67
+ if (options.crossImageShuffle)
68
+ config.crossImageShuffle = true;
69
+ yield node_1.default.shuffle({
70
+ imagePaths,
71
+ outputDir,
72
+ config: Object.keys(config).length > 0 ? config : undefined,
73
+ });
74
+ console.log(`✅ Images fragmented successfully to: ${outputDir}`);
75
+ }
76
+ catch (error) {
77
+ console.error(`❌ Fragmentation failed: ${error instanceof Error ? error.message : String(error)}`);
78
+ process.exit(1);
79
+ }
80
+ });
64
81
  }
65
82
  //# sourceMappingURL=shuffle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shuffle.js","sourceRoot":"","sources":["../../src/commands/shuffle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shuffle.js","sourceRoot":"","sources":["../../src/commands/shuffle.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAUA,wDA2BC;AApCD,wDAAkC;AAGlC,8CAA4E;AAE5E;;;GAGG;AACH,SAAgB,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,iBAAiB,CAAC;SAC9B,QAAQ,CAAC,aAAa,EAAE,wBAAwB,CAAC;SACjD,cAAc,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;SACxD,MAAM,CAAC,yBAAyB,EAAE,kBAAkB,EAAE,CAAC,KAAa,EAAE,EAAE;QACvE,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;SACD,MAAM,CAAC,uBAAuB,EAAE,2BAA2B,CAAC;SAC5D,MAAM,CAAC,mBAAmB,EAAE,aAAa,EAAE,CAAC,KAAa,EAAE,EAAE;QAC5D,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;SACD,MAAM,CAAC,iBAAiB,EAAE,8BAA8B,CAAC;SACzD,MAAM,CACL,uBAAuB,EACvB,6EAA6E,CAC9E;SACA,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,SAAe,oBAAoB,CACjC,MAAgB,EAChB,OAAuB;;QAEvB,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAElD,MAAM,UAAU,GAAG,IAAA,+BAAkB,EAAC,MAAM,CAAC,CAAC;YAC9C,MAAM,SAAS,GAAG,IAAA,oCAAuB,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAE1D,MAAM,MAAM,GAAwB,EAAE,CAAC;YACvC,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;gBAAE,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YAC1E,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;gBAAE,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YACjE,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;gBAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YAC3D,IAAI,OAAO,CAAC,YAAY;gBAAE,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;YACrD,IAAI,OAAO,CAAC,iBAAiB;gBAAE,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAE/D,MAAM,cAAM,CAAC,OAAO,CAAC;gBACnB,UAAU;gBACV,SAAS;gBACT,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;aAC5D,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,wCAAwC,SAAS,EAAE,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACpF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;CAAA"}
@@ -0,0 +1 @@
1
+ export declare const VERSION: any;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VERSION = void 0;
4
+ const package_json_1 = require("../package.json");
5
+ exports.VERSION = package_json_1.version;
6
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA,kDAA0C;AAE7B,QAAA,OAAO,GAAG,sBAAO,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,10 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Pixzle = void 0;
1
7
  // Export CLI functionality for programmatic usage if needed
2
- export { default as Pixzle } from "@pixzle/node";
8
+ var node_1 = require("@pixzle/node");
9
+ Object.defineProperty(exports, "Pixzle", { enumerable: true, get: function () { return __importDefault(node_1).default; } });
3
10
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA4D;AAC5D,qCAAiD;AAAxC,+GAAA,OAAO,OAAU"}
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "@pixzle/cli",
3
+ "version": "0.0.1",
4
+ "description": "CLI implementation of image fragmentation and restoration (RESERVED)",
5
+ "type": "commonjs",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "bin": {
9
+ "pixzle": "./dist/cli.js"
10
+ },
11
+ "files": [
12
+ "dist"
13
+ ],
14
+ "scripts": {
15
+ "build": "tsc -p tsconfig.build.json",
16
+ "build:check": "tsc -p tsconfig.build.json --noEmit",
17
+ "test": "vitest",
18
+ "dev": "tsx src/cli.ts"
19
+ },
20
+ "keywords": [],
21
+ "author": "tuki0918",
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "https://github.com/tuki0918/pixzle.git",
25
+ "directory": "packages/cli"
26
+ },
27
+ "license": "MIT",
28
+ "publishConfig": {
29
+ "access": "public"
30
+ },
31
+ "dependencies": {
32
+ "@pixzle/core": "workspace:*",
33
+ "@pixzle/node": "workspace:*",
34
+ "commander": "^12.1.0"
35
+ },
36
+ "devDependencies": {
37
+ "@types/node": "^22.10.1",
38
+ "tsx": "^4.20.5",
39
+ "typescript": "^5.7.2",
40
+ "vitest": "^3.1.4"
41
+ }
42
+ }
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const commander_1 = require("commander");
5
+ const restore_1 = require("./commands/restore");
6
+ const shuffle_1 = require("./commands/shuffle");
7
+ const constants_1 = require("./constants");
8
+ const program = new commander_1.Command();
9
+ program
10
+ .name("pixzle")
11
+ .description("CLI tool for image fragmentation and restoration")
12
+ .version(constants_1.VERSION);
13
+ // Register commands
14
+ (0, shuffle_1.registerShuffleCommand)(program);
15
+ (0, restore_1.registerRestoreCommand)(program);
16
+ // Error handling
17
+ program.on("command:*", () => {
18
+ console.error("Invalid command. See --help for available commands.");
19
+ process.exit(1);
20
+ });
21
+ // Parse arguments
22
+ program.parse(process.argv);
23
+ // Show help if no command provided
24
+ if (process.argv.length <= 2) {
25
+ program.help();
26
+ }
27
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,gDAA4D;AAC5D,gDAA4D;AAC5D,2CAAsC;AAEtC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,kDAAkD,CAAC;KAC/D,OAAO,CAAC,mBAAO,CAAC,CAAC;AAEpB,oBAAoB;AACpB,IAAA,gCAAsB,EAAC,OAAO,CAAC,CAAC;AAChC,IAAA,gCAAsB,EAAC,OAAO,CAAC,CAAC;AAEhC,iBAAiB;AACjB,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;IAC3B,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,kBAAkB;AAClB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,mCAAmC;AACnC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;IAC7B,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Command } from "commander";
2
+ /**
3
+ * Configures and registers the restore command
4
+ * @param program Commander program instance
5
+ */
6
+ export declare function registerRestoreCommand(program: Command): void;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.registerRestoreCommand = registerRestoreCommand;
7
+ const node_1 = __importDefault(require("@pixzle/node"));
8
+ const validators_1 = require("../validators");
9
+ /**
10
+ * Configures and registers the restore command
11
+ * @param program Commander program instance
12
+ */
13
+ function registerRestoreCommand(program) {
14
+ program
15
+ .command("restore")
16
+ .description("Restore fragmented images")
17
+ .argument("<fragments...>", "Fragment file paths")
18
+ .requiredOption("-m, --manifest <path>", "Manifest file path")
19
+ .requiredOption("-o, --output <dir>", "Output directory")
20
+ .action(handleRestoreCommand);
21
+ }
22
+ /**
23
+ * Handles the restore command execution
24
+ * @param fragments Array of fragment file paths
25
+ * @param options Command options
26
+ */
27
+ async function handleRestoreCommand(fragments, options) {
28
+ try {
29
+ console.log("🔀 Starting image restoration...");
30
+ const imagePaths = (0, validators_1.validateImagePaths)(fragments);
31
+ const manifestPath = (0, validators_1.validateManifestPath)(options.manifest);
32
+ const outputDir = (0, validators_1.validateOutputDirectory)(options.output);
33
+ await node_1.default.restore({
34
+ imagePaths,
35
+ manifestPath,
36
+ outputDir,
37
+ });
38
+ console.log(`✅ Images restored successfully to: ${outputDir}`);
39
+ }
40
+ catch (error) {
41
+ console.error(`❌ Restoration failed: ${error instanceof Error ? error.message : String(error)}`);
42
+ process.exit(1);
43
+ }
44
+ }
45
+ //# sourceMappingURL=restore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restore.js","sourceRoot":"","sources":["../../../src/commands/restore.ts"],"names":[],"mappings":";;;;;AAaA,wDAQC;AArBD,wDAAkC;AAGlC,8CAIuB;AAEvB;;;GAGG;AACH,SAAgB,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,2BAA2B,CAAC;SACxC,QAAQ,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;SACjD,cAAc,CAAC,uBAAuB,EAAE,oBAAoB,CAAC;SAC7D,cAAc,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;SACxD,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,oBAAoB,CACjC,SAAmB,EACnB,OAAuB;IAEvB,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAEhD,MAAM,UAAU,GAAG,IAAA,+BAAkB,EAAC,SAAS,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,IAAA,iCAAoB,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,IAAA,oCAAuB,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE1D,MAAM,cAAM,CAAC,OAAO,CAAC;YACnB,UAAU;YACV,YAAY;YACZ,SAAS;SACV,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,sCAAsC,SAAS,EAAE,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAClF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Command } from "commander";
2
+ /**
3
+ * Configures and registers the shuffle command
4
+ * @param program Commander program instance
5
+ */
6
+ export declare function registerShuffleCommand(program: Command): void;
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.registerShuffleCommand = registerShuffleCommand;
7
+ const node_1 = __importDefault(require("@pixzle/node"));
8
+ const validators_1 = require("../validators");
9
+ /**
10
+ * Configures and registers the shuffle command
11
+ * @param program Commander program instance
12
+ */
13
+ function registerShuffleCommand(program) {
14
+ program
15
+ .command("shuffle")
16
+ .description("Fragment images")
17
+ .argument("<images...>", "Input image file paths")
18
+ .requiredOption("-o, --output <dir>", "Output directory")
19
+ .option("-b, --block-size <size>", "Pixel block size", (value) => {
20
+ const num = Number.parseInt(value, 10);
21
+ if (Number.isNaN(num) || num <= 0) {
22
+ throw new Error("Block size must be a positive integer");
23
+ }
24
+ return num;
25
+ })
26
+ .option("-p, --prefix <prefix>", "Prefix for fragment files")
27
+ .option("-s, --seed <seed>", "Random seed", (value) => {
28
+ const num = Number.parseInt(value, 10);
29
+ if (Number.isNaN(num)) {
30
+ throw new Error("Seed must be an integer");
31
+ }
32
+ return num;
33
+ })
34
+ .option("--preserve-name", "Preserve original file names")
35
+ .option("--cross-image-shuffle", "Shuffle blocks across all images instead of within each image independently")
36
+ .action(handleShuffleCommand);
37
+ }
38
+ /**
39
+ * Handles the shuffle command execution
40
+ * @param images Array of image file paths
41
+ * @param options Command options
42
+ */
43
+ async function handleShuffleCommand(images, options) {
44
+ try {
45
+ console.log("🔀 Starting image fragmentation...");
46
+ const imagePaths = (0, validators_1.validateImagePaths)(images);
47
+ const outputDir = (0, validators_1.validateOutputDirectory)(options.output);
48
+ const config = {};
49
+ if (options.blockSize !== undefined)
50
+ config.blockSize = options.blockSize;
51
+ if (options.prefix !== undefined)
52
+ config.prefix = options.prefix;
53
+ if (options.seed !== undefined)
54
+ config.seed = options.seed;
55
+ if (options.preserveName)
56
+ config.preserveName = true;
57
+ if (options.crossImageShuffle)
58
+ config.crossImageShuffle = true;
59
+ await node_1.default.shuffle({
60
+ imagePaths,
61
+ outputDir,
62
+ config: Object.keys(config).length > 0 ? config : undefined,
63
+ });
64
+ console.log(`✅ Images fragmented successfully to: ${outputDir}`);
65
+ }
66
+ catch (error) {
67
+ console.error(`❌ Fragmentation failed: ${error instanceof Error ? error.message : String(error)}`);
68
+ process.exit(1);
69
+ }
70
+ }
71
+ //# sourceMappingURL=shuffle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shuffle.js","sourceRoot":"","sources":["../../../src/commands/shuffle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const VERSION: string;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VERSION = void 0;
4
+ const package_json_1 = require("../package.json");
5
+ exports.VERSION = package_json_1.version;
6
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAAA,kDAA0C;AAE7B,QAAA,OAAO,GAAG,sBAAO,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { default as Pixzle } from "@pixzle/node";
2
+ export type { FragmentationConfig } from "@pixzle/core";
3
+ export type { RestoreOptions, ShuffleOptions } from "./types";
@@ -0,0 +1,3 @@
1
+ export { default as Pixzle } from "@pixzle/node";
2
+ export type { FragmentationConfig } from "@pixzle/core";
3
+ export type { RestoreOptions, ShuffleOptions } from "./types";
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Pixzle = void 0;
7
+ // Export CLI functionality for programmatic usage if needed
8
+ var node_1 = require("@pixzle/node");
9
+ Object.defineProperty(exports, "Pixzle", { enumerable: true, get: function () { return __importDefault(node_1).default; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA4D;AAC5D,qCAAiD;AAAxC,+GAAA,OAAO,OAAU"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // Export CLI functionality for programmatic usage if needed
3
+ export { default as Pixzle } from "@pixzle/node";
4
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/index.mts"],"names":[],"mappings":";AAAA,4DAA4D;AAC5D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,12 @@
1
+ export interface ShuffleOptions {
2
+ output: string;
3
+ blockSize?: number;
4
+ prefix?: string;
5
+ seed?: number;
6
+ preserveName?: boolean;
7
+ crossImageShuffle?: boolean;
8
+ }
9
+ export interface RestoreOptions {
10
+ manifest: string;
11
+ output: string;
12
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Validates an array of image file paths
3
+ * @param paths Array of file paths to validate
4
+ * @returns Array of resolved absolute paths
5
+ */
6
+ export declare function validateImagePaths(paths: string[]): string[];
7
+ /**
8
+ * Validates output directory path
9
+ * @param outputPath Output directory path
10
+ * @returns Resolved absolute path
11
+ */
12
+ export declare function validateOutputDirectory(outputPath: string): string;
13
+ /**
14
+ * Validates manifest file path
15
+ * @param manifestPath Path to manifest file
16
+ * @returns Resolved absolute path
17
+ */
18
+ export declare function validateManifestPath(manifestPath: string): string;
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateImagePaths = validateImagePaths;
4
+ exports.validateOutputDirectory = validateOutputDirectory;
5
+ exports.validateManifestPath = validateManifestPath;
6
+ const node_fs_1 = require("node:fs");
7
+ const node_path_1 = require("node:path");
8
+ /**
9
+ * Validates an array of image file paths
10
+ * @param paths Array of file paths to validate
11
+ * @returns Array of resolved absolute paths
12
+ */
13
+ function validateImagePaths(paths) {
14
+ const resolvedPaths = [];
15
+ for (const path of paths) {
16
+ const resolvedPath = (0, node_path_1.resolve)(path);
17
+ if (!(0, node_fs_1.existsSync)(resolvedPath)) {
18
+ console.error(`Error: File not found: ${path}`);
19
+ process.exit(1);
20
+ }
21
+ if (!(0, node_fs_1.lstatSync)(resolvedPath).isFile()) {
22
+ console.error(`Error: Not a file: ${path}`);
23
+ process.exit(1);
24
+ }
25
+ resolvedPaths.push(resolvedPath);
26
+ }
27
+ return resolvedPaths;
28
+ }
29
+ /**
30
+ * Validates output directory path
31
+ * @param outputPath Output directory path
32
+ * @returns Resolved absolute path
33
+ */
34
+ function validateOutputDirectory(outputPath) {
35
+ const resolvedPath = (0, node_path_1.resolve)(outputPath);
36
+ // Create parent directory if it doesn't exist
37
+ const parentDir = (0, node_path_1.dirname)(resolvedPath);
38
+ if (!(0, node_fs_1.existsSync)(parentDir)) {
39
+ console.error(`Error: Parent directory does not exist: ${parentDir}`);
40
+ process.exit(1);
41
+ }
42
+ return resolvedPath;
43
+ }
44
+ /**
45
+ * Validates manifest file path
46
+ * @param manifestPath Path to manifest file
47
+ * @returns Resolved absolute path
48
+ */
49
+ function validateManifestPath(manifestPath) {
50
+ const resolvedPath = (0, node_path_1.resolve)(manifestPath);
51
+ if (!(0, node_fs_1.existsSync)(resolvedPath)) {
52
+ console.error(`Error: Manifest file not found: ${manifestPath}`);
53
+ process.exit(1);
54
+ }
55
+ if (!(0, node_fs_1.lstatSync)(resolvedPath).isFile()) {
56
+ console.error(`Error: Manifest path is not a file: ${manifestPath}`);
57
+ process.exit(1);
58
+ }
59
+ return resolvedPath;
60
+ }
61
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/validators.ts"],"names":[],"mappings":";;AAQA,gDAoBC;AAOD,0DAWC;AAOD,oDAcC;AAnED,qCAAgD;AAChD,yCAA6C;AAE7C;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,KAAe;IAChD,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,YAAY,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,CAAC;QAEnC,IAAI,CAAC,IAAA,oBAAU,EAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,IAAA,mBAAS,EAAC,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,UAAkB;IACxD,MAAM,YAAY,GAAG,IAAA,mBAAO,EAAC,UAAU,CAAC,CAAC;IAEzC,8CAA8C;IAC9C,MAAM,SAAS,GAAG,IAAA,mBAAO,EAAC,YAAY,CAAC,CAAC;IACxC,IAAI,CAAC,IAAA,oBAAU,EAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,2CAA2C,SAAS,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,YAAoB;IACvD,MAAM,YAAY,GAAG,IAAA,mBAAO,EAAC,YAAY,CAAC,CAAC;IAE3C,IAAI,CAAC,IAAA,oBAAU,EAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,mCAAmC,YAAY,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,IAAA,mBAAS,EAAC,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,uCAAuC,YAAY,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB"}
package/dist/types.js CHANGED
@@ -1,2 +1,3 @@
1
- export {};
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
2
3
  //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAoB5D;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAWlE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAcjE"}
@@ -1,19 +1,24 @@
1
- import { existsSync, lstatSync } from "node:fs";
2
- import { dirname, resolve } from "node:path";
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateImagePaths = validateImagePaths;
4
+ exports.validateOutputDirectory = validateOutputDirectory;
5
+ exports.validateManifestPath = validateManifestPath;
6
+ const node_fs_1 = require("node:fs");
7
+ const node_path_1 = require("node:path");
3
8
  /**
4
9
  * Validates an array of image file paths
5
10
  * @param paths Array of file paths to validate
6
11
  * @returns Array of resolved absolute paths
7
12
  */
8
- export function validateImagePaths(paths) {
13
+ function validateImagePaths(paths) {
9
14
  const resolvedPaths = [];
10
15
  for (const path of paths) {
11
- const resolvedPath = resolve(path);
12
- if (!existsSync(resolvedPath)) {
16
+ const resolvedPath = (0, node_path_1.resolve)(path);
17
+ if (!(0, node_fs_1.existsSync)(resolvedPath)) {
13
18
  console.error(`Error: File not found: ${path}`);
14
19
  process.exit(1);
15
20
  }
16
- if (!lstatSync(resolvedPath).isFile()) {
21
+ if (!(0, node_fs_1.lstatSync)(resolvedPath).isFile()) {
17
22
  console.error(`Error: Not a file: ${path}`);
18
23
  process.exit(1);
19
24
  }
@@ -26,11 +31,11 @@ export function validateImagePaths(paths) {
26
31
  * @param outputPath Output directory path
27
32
  * @returns Resolved absolute path
28
33
  */
29
- export function validateOutputDirectory(outputPath) {
30
- const resolvedPath = resolve(outputPath);
34
+ function validateOutputDirectory(outputPath) {
35
+ const resolvedPath = (0, node_path_1.resolve)(outputPath);
31
36
  // Create parent directory if it doesn't exist
32
- const parentDir = dirname(resolvedPath);
33
- if (!existsSync(parentDir)) {
37
+ const parentDir = (0, node_path_1.dirname)(resolvedPath);
38
+ if (!(0, node_fs_1.existsSync)(parentDir)) {
34
39
  console.error(`Error: Parent directory does not exist: ${parentDir}`);
35
40
  process.exit(1);
36
41
  }
@@ -41,13 +46,13 @@ export function validateOutputDirectory(outputPath) {
41
46
  * @param manifestPath Path to manifest file
42
47
  * @returns Resolved absolute path
43
48
  */
44
- export function validateManifestPath(manifestPath) {
45
- const resolvedPath = resolve(manifestPath);
46
- if (!existsSync(resolvedPath)) {
49
+ function validateManifestPath(manifestPath) {
50
+ const resolvedPath = (0, node_path_1.resolve)(manifestPath);
51
+ if (!(0, node_fs_1.existsSync)(resolvedPath)) {
47
52
  console.error(`Error: Manifest file not found: ${manifestPath}`);
48
53
  process.exit(1);
49
54
  }
50
- if (!lstatSync(resolvedPath).isFile()) {
55
+ if (!(0, node_fs_1.lstatSync)(resolvedPath).isFile()) {
51
56
  console.error(`Error: Manifest path is not a file: ${manifestPath}`);
52
57
  process.exit(1);
53
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7C;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAe;IAChD,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,UAAkB;IACxD,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEzC,8CAA8C;IAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACxC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,2CAA2C,SAAS,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,YAAoB;IACvD,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAE3C,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,mCAAmC,YAAY,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,uCAAuC,YAAY,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":";;AAQA,gDAoBC;AAOD,0DAWC;AAOD,oDAcC;AAnED,qCAAgD;AAChD,yCAA6C;AAE7C;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,KAAe;IAChD,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,YAAY,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,CAAC;QAEnC,IAAI,CAAC,IAAA,oBAAU,EAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,IAAA,mBAAS,EAAC,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,UAAkB;IACxD,MAAM,YAAY,GAAG,IAAA,mBAAO,EAAC,UAAU,CAAC,CAAC;IAEzC,8CAA8C;IAC9C,MAAM,SAAS,GAAG,IAAA,mBAAO,EAAC,YAAY,CAAC,CAAC;IACxC,IAAI,CAAC,IAAA,oBAAU,EAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,2CAA2C,SAAS,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,YAAoB;IACvD,MAAM,YAAY,GAAG,IAAA,mBAAO,EAAC,YAAY,CAAC,CAAC;IAE3C,IAAI,CAAC,IAAA,oBAAU,EAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,mCAAmC,YAAY,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,IAAA,mBAAS,EAAC,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,uCAAuC,YAAY,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@pixzle/cli",
3
- "version": "0.0.18",
3
+ "version": "0.0.20",
4
4
  "description": "CLI implementation of image fragmentation and restoration (RESERVED)",
5
+ "type": "commonjs",
5
6
  "main": "dist/index.js",
6
7
  "types": "dist/index.d.ts",
7
8
  "bin": {
@@ -23,8 +24,8 @@
23
24
  },
24
25
  "dependencies": {
25
26
  "commander": "^12.1.0",
26
- "@pixzle/core": "0.0.18",
27
- "@pixzle/node": "0.0.18"
27
+ "@pixzle/core": "0.0.20",
28
+ "@pixzle/node": "0.0.20"
28
29
  },
29
30
  "devDependencies": {
30
31
  "@types/node": "^22.10.1",