@pixzle/node 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 (93) hide show
  1. package/dist/block.cjs +158 -0
  2. package/dist/block.d.cts +71 -0
  3. package/dist/block.d.ts.map +1 -0
  4. package/dist/block.js +26 -17
  5. package/dist/block.js.map +1 -1
  6. package/dist/cjs/block.d.ts +71 -0
  7. package/dist/cjs/block.d.ts.map +1 -0
  8. package/dist/cjs/block.js +158 -0
  9. package/dist/cjs/block.js.map +1 -0
  10. package/dist/cjs/constants.d.ts +2 -0
  11. package/dist/cjs/constants.d.ts.map +1 -0
  12. package/dist/cjs/constants.js +6 -0
  13. package/dist/cjs/constants.js.map +1 -0
  14. package/dist/cjs/file.d.ts +33 -0
  15. package/dist/cjs/file.d.ts.map +1 -0
  16. package/dist/cjs/file.js +57 -0
  17. package/dist/cjs/file.js.map +1 -0
  18. package/dist/cjs/fragmenter.d.ts +14 -0
  19. package/dist/cjs/fragmenter.d.ts.map +1 -0
  20. package/dist/cjs/fragmenter.js +95 -0
  21. package/dist/cjs/fragmenter.js.map +1 -0
  22. package/dist/cjs/index.d.ts +12 -0
  23. package/dist/cjs/index.d.ts.map +1 -0
  24. package/dist/cjs/index.js +59 -0
  25. package/dist/cjs/index.js.map +1 -0
  26. package/dist/cjs/package.json +1 -0
  27. package/dist/cjs/restorer.d.ts +10 -0
  28. package/dist/cjs/restorer.d.ts.map +1 -0
  29. package/dist/cjs/restorer.js +54 -0
  30. package/dist/cjs/restorer.js.map +1 -0
  31. package/dist/cjs/utils.d.ts +6 -0
  32. package/dist/cjs/utils.d.ts.map +1 -0
  33. package/dist/cjs/utils.js +15 -0
  34. package/dist/cjs/utils.js.map +1 -0
  35. package/dist/constants.cjs +6 -0
  36. package/dist/constants.d.cts +2 -0
  37. package/dist/constants.d.ts.map +1 -0
  38. package/dist/constants.js +5 -2
  39. package/dist/constants.js.map +1 -1
  40. package/dist/esm/block.d.ts +71 -0
  41. package/dist/esm/block.d.ts.map +1 -0
  42. package/dist/esm/block.js +149 -0
  43. package/dist/esm/block.js.map +1 -0
  44. package/dist/esm/constants.d.ts +2 -0
  45. package/dist/esm/constants.d.ts.map +1 -0
  46. package/dist/esm/constants.js +3 -0
  47. package/dist/esm/constants.js.map +1 -0
  48. package/dist/esm/file.d.ts +33 -0
  49. package/dist/esm/file.d.ts.map +1 -0
  50. package/dist/esm/file.js +47 -0
  51. package/dist/esm/file.js.map +1 -0
  52. package/dist/esm/fragmenter.d.ts +14 -0
  53. package/dist/esm/fragmenter.d.ts.map +1 -0
  54. package/dist/esm/fragmenter.js +91 -0
  55. package/dist/esm/fragmenter.js.map +1 -0
  56. package/dist/esm/index.d.ts +12 -0
  57. package/dist/esm/index.d.ts.map +1 -0
  58. package/dist/esm/index.js +55 -0
  59. package/dist/esm/index.js.map +1 -0
  60. package/dist/esm/restorer.d.ts +10 -0
  61. package/dist/esm/restorer.d.ts.map +1 -0
  62. package/dist/esm/restorer.js +50 -0
  63. package/dist/esm/restorer.js.map +1 -0
  64. package/dist/esm/utils.d.ts +6 -0
  65. package/dist/esm/utils.d.ts.map +1 -0
  66. package/dist/esm/utils.js +9 -0
  67. package/dist/esm/utils.js.map +1 -0
  68. package/dist/file.cjs +57 -0
  69. package/dist/file.d.cts +33 -0
  70. package/dist/file.d.ts.map +1 -0
  71. package/dist/file.js +23 -13
  72. package/dist/file.js.map +1 -1
  73. package/dist/fragmenter.cjs +95 -0
  74. package/dist/fragmenter.d.cts +14 -0
  75. package/dist/fragmenter.d.ts.map +1 -0
  76. package/dist/fragmenter.js +28 -24
  77. package/dist/fragmenter.js.map +1 -1
  78. package/dist/index.cjs +59 -0
  79. package/dist/index.d.cts +12 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +22 -18
  82. package/dist/index.js.map +1 -1
  83. package/dist/restorer.cjs +54 -0
  84. package/dist/restorer.d.cts +10 -0
  85. package/dist/restorer.d.ts.map +1 -0
  86. package/dist/restorer.js +19 -15
  87. package/dist/restorer.js.map +1 -1
  88. package/dist/utils.cjs +15 -0
  89. package/dist/utils.d.cts +6 -0
  90. package/dist/utils.d.ts.map +1 -0
  91. package/dist/utils.js +9 -3
  92. package/dist/utils.js.map +1 -1
  93. package/package.json +2 -2
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ImageFragmenter = void 0;
4
+ const core_1 = require("@pixzle/core");
5
+ const seeded_shuffle_1 = require("@tuki0918/seeded-shuffle");
6
+ const block_1 = require("./block");
7
+ const constants_1 = require("./constants");
8
+ const file_1 = require("./file");
9
+ const utils_1 = require("./utils");
10
+ class ImageFragmenter {
11
+ config;
12
+ constructor(config) {
13
+ this.config = this._initializeConfig(config);
14
+ }
15
+ _initializeConfig(config) {
16
+ return {
17
+ blockSize: config.blockSize ?? core_1.DEFAULT_FRAGMENTATION_CONFIG.BLOCK_SIZE,
18
+ prefix: config.prefix ?? core_1.DEFAULT_FRAGMENTATION_CONFIG.PREFIX,
19
+ seed: config.seed || seeded_shuffle_1.SeededRandom.generateSeed(),
20
+ preserveName: config.preserveName ?? core_1.DEFAULT_FRAGMENTATION_CONFIG.PRESERVE_NAME,
21
+ crossImageShuffle: config.crossImageShuffle ??
22
+ core_1.DEFAULT_FRAGMENTATION_CONFIG.CROSS_IMAGE_SHUFFLE,
23
+ };
24
+ }
25
+ async fragmentImages(paths) {
26
+ const { manifest, blocks, blockCountsForCrossImages, blockCountsPerImage } = await this._prepareData(paths);
27
+ const shuffled = this.config.crossImageShuffle
28
+ ? (0, seeded_shuffle_1.shuffle)(blocks, manifest.config.seed)
29
+ : (0, block_1.blocksPerImage)(blocks, blockCountsPerImage, manifest.config.seed, seeded_shuffle_1.shuffle);
30
+ const blockCounts = this.config.crossImageShuffle
31
+ ? blockCountsForCrossImages
32
+ : blockCountsPerImage;
33
+ const fragmentedImages = await this._createImages(shuffled, blockCounts, manifest);
34
+ return {
35
+ manifest,
36
+ fragmentedImages,
37
+ };
38
+ }
39
+ async _createImages(blocks, blockCounts, manifest) {
40
+ return await Promise.all(manifest.images.map(async (_, index) => {
41
+ const { start, end } = (0, core_1.calculateBlockRange)(blockCounts, index);
42
+ const imageBlocks = blocks.slice(start, end);
43
+ return await this._createImage(imageBlocks, manifest.config.blockSize);
44
+ }));
45
+ }
46
+ _createManifest(manifestId, imageInfos) {
47
+ return {
48
+ id: manifestId,
49
+ version: constants_1.VERSION,
50
+ timestamp: new Date().toISOString(),
51
+ config: this.config,
52
+ images: imageInfos,
53
+ };
54
+ }
55
+ async _prepareData(paths) {
56
+ const manifestId = (0, utils_1.generateManifestId)();
57
+ const { imageInfos, blocks } = await this._processImages(paths);
58
+ (0, core_1.validateFileNames)(imageInfos, this.config.preserveName);
59
+ const manifest = this._createManifest(manifestId, imageInfos);
60
+ const blockCountsForCrossImages = (0, core_1.calculateBlockCountsForCrossImages)(blocks.length, paths.length);
61
+ // Calculate actual block counts per image for per-image shuffle
62
+ const blockCountsPerImage = (0, core_1.calculateBlockCountsPerImage)(imageInfos);
63
+ return { manifest, blocks, blockCountsForCrossImages, blockCountsPerImage };
64
+ }
65
+ async _processImages(paths) {
66
+ const results = await Promise.all(paths.map((path) => this._processImage(path)));
67
+ const imageInfos = results.map((r) => r.imageInfo);
68
+ const blocks = results.flatMap((r) => r.blocks);
69
+ return { imageInfos, blocks };
70
+ }
71
+ async _processImage(path) {
72
+ const buffer = await (0, file_1.readFileBuffer)(path);
73
+ const { blocks, width, height, blockCountX, blockCountY } = await (0, block_1.imageFileToBlocks)(buffer, this.config.blockSize);
74
+ const imageInfo = {
75
+ w: width,
76
+ h: height,
77
+ c: 4, // Always use 4 channels (RGBA) for generated PNG
78
+ x: blockCountX,
79
+ y: blockCountY,
80
+ name: this.config.preserveName
81
+ ? (0, core_1.encodeFileName)((0, file_1.fileNameWithoutExtension)(path))
82
+ : undefined,
83
+ };
84
+ return { imageInfo, blocks };
85
+ }
86
+ async _createImage(blocks, blockSize) {
87
+ const blockCount = blocks.length;
88
+ const blocksPerRow = Math.ceil(Math.sqrt(blockCount));
89
+ const imageWidth = blocksPerRow * blockSize;
90
+ const imageHeight = Math.ceil(blockCount / blocksPerRow) * blockSize;
91
+ return await (0, block_1.blocksToPngImage)(blocks, imageWidth, imageHeight, blockSize);
92
+ }
93
+ }
94
+ exports.ImageFragmenter = ImageFragmenter;
95
+ //# sourceMappingURL=fragmenter.js.map
@@ -0,0 +1,14 @@
1
+ import { type FragmentationConfig, type FragmentationResult } from "@pixzle/core";
2
+ export declare class ImageFragmenter {
3
+ private config;
4
+ constructor(config: FragmentationConfig);
5
+ private _initializeConfig;
6
+ fragmentImages(paths: string[]): Promise<FragmentationResult>;
7
+ private _createImages;
8
+ private _createManifest;
9
+ private _prepareData;
10
+ private _processImages;
11
+ private _processImage;
12
+ private _createImage;
13
+ }
14
+ //# sourceMappingURL=fragmenter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fragmenter.d.ts","sourceRoot":"","sources":["../src/fragmenter.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EAQzB,MAAM,cAAc,CAAC;AAOtB,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAgC;gBAElC,MAAM,EAAE,mBAAmB;IAIvC,OAAO,CAAC,iBAAiB;IAenB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;YA6BrD,aAAa;IAc3B,OAAO,CAAC,eAAe;YAaT,YAAY;YAyBZ,cAAc;YAcd,aAAa;YAuBb,YAAY;CAW3B"}
@@ -1,29 +1,32 @@
1
- import { DEFAULT_FRAGMENTATION_CONFIG, calculateBlockCountsForCrossImages, calculateBlockCountsPerImage, calculateBlockRange, encodeFileName, validateFileNames, } from "@pixzle/core";
2
- import { SeededRandom, shuffle } from "@tuki0918/seeded-shuffle";
3
- import { blocksPerImage, blocksToPngImage, imageFileToBlocks } from "./block";
4
- import { VERSION } from "./constants";
5
- import { fileNameWithoutExtension, readFileBuffer } from "./file";
6
- import { generateManifestId } from "./utils";
7
- export class ImageFragmenter {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ImageFragmenter = void 0;
4
+ const core_1 = require("@pixzle/core");
5
+ const seeded_shuffle_1 = require("@tuki0918/seeded-shuffle");
6
+ const block_1 = require("./block");
7
+ const constants_1 = require("./constants");
8
+ const file_1 = require("./file");
9
+ const utils_1 = require("./utils");
10
+ class ImageFragmenter {
8
11
  config;
9
12
  constructor(config) {
10
13
  this.config = this._initializeConfig(config);
11
14
  }
12
15
  _initializeConfig(config) {
13
16
  return {
14
- blockSize: config.blockSize ?? DEFAULT_FRAGMENTATION_CONFIG.BLOCK_SIZE,
15
- prefix: config.prefix ?? DEFAULT_FRAGMENTATION_CONFIG.PREFIX,
16
- seed: config.seed || SeededRandom.generateSeed(),
17
- preserveName: config.preserveName ?? DEFAULT_FRAGMENTATION_CONFIG.PRESERVE_NAME,
17
+ blockSize: config.blockSize ?? core_1.DEFAULT_FRAGMENTATION_CONFIG.BLOCK_SIZE,
18
+ prefix: config.prefix ?? core_1.DEFAULT_FRAGMENTATION_CONFIG.PREFIX,
19
+ seed: config.seed || seeded_shuffle_1.SeededRandom.generateSeed(),
20
+ preserveName: config.preserveName ?? core_1.DEFAULT_FRAGMENTATION_CONFIG.PRESERVE_NAME,
18
21
  crossImageShuffle: config.crossImageShuffle ??
19
- DEFAULT_FRAGMENTATION_CONFIG.CROSS_IMAGE_SHUFFLE,
22
+ core_1.DEFAULT_FRAGMENTATION_CONFIG.CROSS_IMAGE_SHUFFLE,
20
23
  };
21
24
  }
22
25
  async fragmentImages(paths) {
23
26
  const { manifest, blocks, blockCountsForCrossImages, blockCountsPerImage } = await this._prepareData(paths);
24
27
  const shuffled = this.config.crossImageShuffle
25
- ? shuffle(blocks, manifest.config.seed)
26
- : blocksPerImage(blocks, blockCountsPerImage, manifest.config.seed, shuffle);
28
+ ? (0, seeded_shuffle_1.shuffle)(blocks, manifest.config.seed)
29
+ : (0, block_1.blocksPerImage)(blocks, blockCountsPerImage, manifest.config.seed, seeded_shuffle_1.shuffle);
27
30
  const blockCounts = this.config.crossImageShuffle
28
31
  ? blockCountsForCrossImages
29
32
  : blockCountsPerImage;
@@ -35,7 +38,7 @@ export class ImageFragmenter {
35
38
  }
36
39
  async _createImages(blocks, blockCounts, manifest) {
37
40
  return await Promise.all(manifest.images.map(async (_, index) => {
38
- const { start, end } = calculateBlockRange(blockCounts, index);
41
+ const { start, end } = (0, core_1.calculateBlockRange)(blockCounts, index);
39
42
  const imageBlocks = blocks.slice(start, end);
40
43
  return await this._createImage(imageBlocks, manifest.config.blockSize);
41
44
  }));
@@ -43,20 +46,20 @@ export class ImageFragmenter {
43
46
  _createManifest(manifestId, imageInfos) {
44
47
  return {
45
48
  id: manifestId,
46
- version: VERSION,
49
+ version: constants_1.VERSION,
47
50
  timestamp: new Date().toISOString(),
48
51
  config: this.config,
49
52
  images: imageInfos,
50
53
  };
51
54
  }
52
55
  async _prepareData(paths) {
53
- const manifestId = generateManifestId();
56
+ const manifestId = (0, utils_1.generateManifestId)();
54
57
  const { imageInfos, blocks } = await this._processImages(paths);
55
- validateFileNames(imageInfos, this.config.preserveName);
58
+ (0, core_1.validateFileNames)(imageInfos, this.config.preserveName);
56
59
  const manifest = this._createManifest(manifestId, imageInfos);
57
- const blockCountsForCrossImages = calculateBlockCountsForCrossImages(blocks.length, paths.length);
60
+ const blockCountsForCrossImages = (0, core_1.calculateBlockCountsForCrossImages)(blocks.length, paths.length);
58
61
  // Calculate actual block counts per image for per-image shuffle
59
- const blockCountsPerImage = calculateBlockCountsPerImage(imageInfos);
62
+ const blockCountsPerImage = (0, core_1.calculateBlockCountsPerImage)(imageInfos);
60
63
  return { manifest, blocks, blockCountsForCrossImages, blockCountsPerImage };
61
64
  }
62
65
  async _processImages(paths) {
@@ -66,8 +69,8 @@ export class ImageFragmenter {
66
69
  return { imageInfos, blocks };
67
70
  }
68
71
  async _processImage(path) {
69
- const buffer = await readFileBuffer(path);
70
- const { blocks, width, height, blockCountX, blockCountY } = await imageFileToBlocks(buffer, this.config.blockSize);
72
+ const buffer = await (0, file_1.readFileBuffer)(path);
73
+ const { blocks, width, height, blockCountX, blockCountY } = await (0, block_1.imageFileToBlocks)(buffer, this.config.blockSize);
71
74
  const imageInfo = {
72
75
  w: width,
73
76
  h: height,
@@ -75,7 +78,7 @@ export class ImageFragmenter {
75
78
  x: blockCountX,
76
79
  y: blockCountY,
77
80
  name: this.config.preserveName
78
- ? encodeFileName(fileNameWithoutExtension(path))
81
+ ? (0, core_1.encodeFileName)((0, file_1.fileNameWithoutExtension)(path))
79
82
  : undefined,
80
83
  };
81
84
  return { imageInfo, blocks };
@@ -85,7 +88,8 @@ export class ImageFragmenter {
85
88
  const blocksPerRow = Math.ceil(Math.sqrt(blockCount));
86
89
  const imageWidth = blocksPerRow * blockSize;
87
90
  const imageHeight = Math.ceil(blockCount / blocksPerRow) * blockSize;
88
- return await blocksToPngImage(blocks, imageWidth, imageHeight, blockSize);
91
+ return await (0, block_1.blocksToPngImage)(blocks, imageWidth, imageHeight, blockSize);
89
92
  }
90
93
  }
94
+ exports.ImageFragmenter = ImageFragmenter;
91
95
  //# sourceMappingURL=fragmenter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fragmenter.js","sourceRoot":"","sources":["../src/fragmenter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAK5B,kCAAkC,EAClC,4BAA4B,EAC5B,mBAAmB,EACnB,cAAc,EACd,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,OAAO,eAAe;IAClB,MAAM,CAAgC;IAE9C,YAAY,MAA2B;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAEO,iBAAiB,CACvB,MAA2B;QAE3B,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,4BAA4B,CAAC,UAAU;YACtE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,4BAA4B,CAAC,MAAM;YAC5D,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,YAAY,CAAC,YAAY,EAAE;YAChD,YAAY,EACV,MAAM,CAAC,YAAY,IAAI,4BAA4B,CAAC,aAAa;YACnE,iBAAiB,EACf,MAAM,CAAC,iBAAiB;gBACxB,4BAA4B,CAAC,mBAAmB;SACnD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAAe;QAClC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,GACxE,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAEjC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB;YAC5C,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;YACvC,CAAC,CAAC,cAAc,CACZ,MAAM,EACN,mBAAmB,EACnB,QAAQ,CAAC,MAAM,CAAC,IAAI,EACpB,OAAO,CACR,CAAC;QAEN,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB;YAC/C,CAAC,CAAC,yBAAyB;YAC3B,CAAC,CAAC,mBAAmB,CAAC;QAExB,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,aAAa,CAC/C,QAAQ,EACR,WAAW,EACX,QAAQ,CACT,CAAC;QAEF,OAAO;YACL,QAAQ;YACR,gBAAgB;SACjB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,MAAgB,EAChB,WAAqB,EACrB,QAAsB;QAEtB,OAAO,MAAM,OAAO,CAAC,GAAG,CACtB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE;YACrC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,mBAAmB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAC/D,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC7C,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACzE,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,eAAe,CACrB,UAAkB,EAClB,UAAuB;QAEvB,OAAO;YACL,EAAE,EAAE,UAAU;YACd,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,UAAU;SACnB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,KAAe;QAMxC,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;QAExC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAEhE,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAExD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAE9D,MAAM,yBAAyB,GAAG,kCAAkC,CAClE,MAAM,CAAC,MAAM,EACb,KAAK,CAAC,MAAM,CACb,CAAC;QAEF,gEAAgE;QAChE,MAAM,mBAAmB,GAAG,4BAA4B,CAAC,UAAU,CAAC,CAAC;QAErE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,CAAC;IAC9E,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,KAAe;QAI1C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAC9C,CAAC;QAEF,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,IAAY;QAItC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QAE1C,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GACvD,MAAM,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEzD,MAAM,SAAS,GAAc;YAC3B,CAAC,EAAE,KAAK;YACR,CAAC,EAAE,MAAM;YACT,CAAC,EAAE,CAAC,EAAE,iDAAiD;YACvD,CAAC,EAAE,WAAW;YACd,CAAC,EAAE,WAAW;YACd,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;gBAC5B,CAAC,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;gBAChD,CAAC,CAAC,SAAS;SACd,CAAC;QAEF,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,MAAgB,EAChB,SAAiB;QAEjB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;QACjC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,YAAY,GAAG,SAAS,CAAC;QAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,GAAG,SAAS,CAAC;QAErE,OAAO,MAAM,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IAC5E,CAAC;CACF"}
1
+ {"version":3,"file":"fragmenter.js","sourceRoot":"","sources":["../src/fragmenter.ts"],"names":[],"mappings":"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"}
package/dist/index.cjs ADDED
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ImageRestorer = exports.ImageFragmenter = void 0;
4
+ const core_1 = require("@pixzle/core");
5
+ const file_1 = require("./file");
6
+ const fragmenter_1 = require("./fragmenter");
7
+ Object.defineProperty(exports, "ImageFragmenter", { enumerable: true, get: function () { return fragmenter_1.ImageFragmenter; } });
8
+ const restorer_1 = require("./restorer");
9
+ Object.defineProperty(exports, "ImageRestorer", { enumerable: true, get: function () { return restorer_1.ImageRestorer; } });
10
+ async function shuffle(options) {
11
+ const { imagePaths, config, outputDir } = validateShuffleOptions(options);
12
+ const fragmenter = new fragmenter_1.ImageFragmenter(config ?? {});
13
+ const { manifest, fragmentedImages } = await fragmenter.fragmentImages(imagePaths);
14
+ await (0, file_1.createDir)(outputDir, true);
15
+ await (0, file_1.writeFile)(outputDir, core_1.MANIFEST_FILE_NAME, JSON.stringify(manifest, null, 2));
16
+ await Promise.all(fragmentedImages.map((img, i) => {
17
+ const filename = (0, core_1.generateFragmentFileName)(manifest, i);
18
+ return (0, file_1.writeFile)(outputDir, filename, img);
19
+ }));
20
+ }
21
+ async function restore(options) {
22
+ const { imagePaths, manifestPath, outputDir } = validateRestoreOptions(options);
23
+ const manifest = await (0, file_1.readJsonFile)(manifestPath);
24
+ (0, core_1.validateFragmentImageCount)(imagePaths, manifest);
25
+ const restorer = new restorer_1.ImageRestorer();
26
+ const restoredImages = await restorer.restoreImages(imagePaths, manifest);
27
+ await (0, file_1.createDir)(outputDir, true);
28
+ const imageInfos = manifest.images;
29
+ await Promise.all(restoredImages.map((img, i) => {
30
+ const filename = (0, core_1.generateRestoredOriginalFileName)(imageInfos[i]) ??
31
+ (0, core_1.generateRestoredFileName)(manifest, i);
32
+ return (0, file_1.writeFile)(outputDir, filename, img);
33
+ }));
34
+ }
35
+ const pixzle = {
36
+ shuffle,
37
+ restore,
38
+ };
39
+ exports.default = pixzle;
40
+ function validateCommonOptions(options, context) {
41
+ if (!options)
42
+ throw new Error(`[${context}] Options object is required.`);
43
+ const { imagePaths, outputDir } = options;
44
+ if (!imagePaths || !Array.isArray(imagePaths) || imagePaths.length === 0)
45
+ throw new Error(`[${context}] imagePaths must be a non-empty array.`);
46
+ if (!outputDir || typeof outputDir !== "string")
47
+ throw new Error(`[${context}] outputDir is required and must be a string.`);
48
+ return options;
49
+ }
50
+ function validateShuffleOptions(options) {
51
+ return validateCommonOptions(options, "shuffle");
52
+ }
53
+ function validateRestoreOptions(options) {
54
+ const { manifestPath } = options;
55
+ if (!manifestPath || typeof manifestPath !== "string")
56
+ throw new Error("[restore] manifestPath is required and must be a string.");
57
+ return validateCommonOptions(options, "restore");
58
+ }
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,12 @@
1
+ import { type FragmentationConfig, type ManifestData, type RestoreOptions, type ShuffleOptions } from "@pixzle/core";
2
+ import { ImageFragmenter } from "./fragmenter";
3
+ import { ImageRestorer } from "./restorer";
4
+ export { ImageFragmenter, ImageRestorer, type FragmentationConfig, type ManifestData, };
5
+ declare function shuffle(options: ShuffleOptions): Promise<void>;
6
+ declare function restore(options: RestoreOptions): Promise<void>;
7
+ declare const pixzle: {
8
+ shuffle: typeof shuffle;
9
+ restore: typeof restore;
10
+ };
11
+ export default pixzle;
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EAExB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,cAAc,EAKpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EACL,eAAe,EACf,aAAa,EACb,KAAK,mBAAmB,EACxB,KAAK,YAAY,GAClB,CAAC;AAEF,iBAAe,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB7D;AAED,iBAAe,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB7D;AAED,QAAA,MAAM,MAAM;;;CAGX,CAAC;AAEF,eAAe,MAAM,CAAC"}
package/dist/index.js CHANGED
@@ -1,38 +1,42 @@
1
- import { MANIFEST_FILE_NAME, generateFragmentFileName, generateRestoredFileName, generateRestoredOriginalFileName, validateFragmentImageCount, } from "@pixzle/core";
2
- import { createDir, readJsonFile, writeFile } from "./file";
3
- import { ImageFragmenter } from "./fragmenter";
4
- import { ImageRestorer } from "./restorer";
5
- export { ImageFragmenter, ImageRestorer, };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ImageRestorer = exports.ImageFragmenter = void 0;
4
+ const core_1 = require("@pixzle/core");
5
+ const file_1 = require("./file");
6
+ const fragmenter_1 = require("./fragmenter");
7
+ Object.defineProperty(exports, "ImageFragmenter", { enumerable: true, get: function () { return fragmenter_1.ImageFragmenter; } });
8
+ const restorer_1 = require("./restorer");
9
+ Object.defineProperty(exports, "ImageRestorer", { enumerable: true, get: function () { return restorer_1.ImageRestorer; } });
6
10
  async function shuffle(options) {
7
11
  const { imagePaths, config, outputDir } = validateShuffleOptions(options);
8
- const fragmenter = new ImageFragmenter(config ?? {});
12
+ const fragmenter = new fragmenter_1.ImageFragmenter(config ?? {});
9
13
  const { manifest, fragmentedImages } = await fragmenter.fragmentImages(imagePaths);
10
- await createDir(outputDir, true);
11
- await writeFile(outputDir, MANIFEST_FILE_NAME, JSON.stringify(manifest, null, 2));
14
+ await (0, file_1.createDir)(outputDir, true);
15
+ await (0, file_1.writeFile)(outputDir, core_1.MANIFEST_FILE_NAME, JSON.stringify(manifest, null, 2));
12
16
  await Promise.all(fragmentedImages.map((img, i) => {
13
- const filename = generateFragmentFileName(manifest, i);
14
- return writeFile(outputDir, filename, img);
17
+ const filename = (0, core_1.generateFragmentFileName)(manifest, i);
18
+ return (0, file_1.writeFile)(outputDir, filename, img);
15
19
  }));
16
20
  }
17
21
  async function restore(options) {
18
22
  const { imagePaths, manifestPath, outputDir } = validateRestoreOptions(options);
19
- const manifest = await readJsonFile(manifestPath);
20
- validateFragmentImageCount(imagePaths, manifest);
21
- const restorer = new ImageRestorer();
23
+ const manifest = await (0, file_1.readJsonFile)(manifestPath);
24
+ (0, core_1.validateFragmentImageCount)(imagePaths, manifest);
25
+ const restorer = new restorer_1.ImageRestorer();
22
26
  const restoredImages = await restorer.restoreImages(imagePaths, manifest);
23
- await createDir(outputDir, true);
27
+ await (0, file_1.createDir)(outputDir, true);
24
28
  const imageInfos = manifest.images;
25
29
  await Promise.all(restoredImages.map((img, i) => {
26
- const filename = generateRestoredOriginalFileName(imageInfos[i]) ??
27
- generateRestoredFileName(manifest, i);
28
- return writeFile(outputDir, filename, img);
30
+ const filename = (0, core_1.generateRestoredOriginalFileName)(imageInfos[i]) ??
31
+ (0, core_1.generateRestoredFileName)(manifest, i);
32
+ return (0, file_1.writeFile)(outputDir, filename, img);
29
33
  }));
30
34
  }
31
35
  const pixzle = {
32
36
  shuffle,
33
37
  restore,
34
38
  };
35
- export default pixzle;
39
+ exports.default = pixzle;
36
40
  function validateCommonOptions(options, context) {
37
41
  if (!options)
38
42
  throw new Error(`[${context}] Options object is required.`);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ImageRestorer = void 0;
4
+ const core_1 = require("@pixzle/core");
5
+ const seeded_shuffle_1 = require("@tuki0918/seeded-shuffle");
6
+ const block_1 = require("./block");
7
+ const file_1 = require("./file");
8
+ class ImageRestorer {
9
+ async restoreImages(fragments, manifest) {
10
+ const { blocks, blockCountsPerImage } = await this._prepareData(fragments, manifest);
11
+ const restored = manifest.config.crossImageShuffle
12
+ ? (0, seeded_shuffle_1.unshuffle)(blocks, manifest.config.seed)
13
+ : (0, block_1.blocksPerImage)(blocks, blockCountsPerImage, manifest.config.seed, seeded_shuffle_1.unshuffle);
14
+ return await this._reconstructImages(restored, manifest);
15
+ }
16
+ async _reconstructImages(blocks, manifest) {
17
+ const blockCountsPerImage = (0, core_1.calculateBlockCountsPerImage)(manifest.images);
18
+ return await Promise.all(manifest.images.map(async (imageInfo, index) => {
19
+ const { start, end } = (0, core_1.calculateBlockRange)(blockCountsPerImage, index);
20
+ const imageBlocks = blocks.slice(start, end);
21
+ return await this._createImage(imageBlocks, manifest.config.blockSize, imageInfo);
22
+ }));
23
+ }
24
+ async _prepareData(fragments, manifest) {
25
+ const totalBlocks = (0, core_1.calculateTotalBlocks)(manifest.images);
26
+ const blockCountsForCrossImages = (0, core_1.calculateBlockCountsForCrossImages)(totalBlocks, fragments.length);
27
+ // Calculate actual block counts per image for per-image unshuffle
28
+ const blockCountsPerImage = (0, core_1.calculateBlockCountsPerImage)(manifest.images);
29
+ // Use blockCountsPerImage when crossImageShuffle is false
30
+ const blockCounts = manifest.config.crossImageShuffle
31
+ ? blockCountsForCrossImages
32
+ : blockCountsPerImage;
33
+ const blocks = await this._readBlocks(fragments, manifest, blockCounts);
34
+ return { blocks, blockCountsPerImage };
35
+ }
36
+ // Extract an array of blocks (Buffer) from a fragment image
37
+ async _readBlocksFromFragment(fragment, manifest, expectedCount) {
38
+ const buffer = Buffer.isBuffer(fragment)
39
+ ? fragment
40
+ : await (0, file_1.readFileBuffer)(fragment);
41
+ const { blocks } = await (0, block_1.imageFileToBlocks)(buffer, manifest.config.blockSize);
42
+ return blocks.slice(0, expectedCount);
43
+ }
44
+ async _readBlocks(fragments, manifest, blockCounts) {
45
+ const blockGroups = await Promise.all(fragments.map((fragment, i) => this._readBlocksFromFragment(fragment, manifest, blockCounts[i])));
46
+ return blockGroups.flat();
47
+ }
48
+ async _createImage(blocks, blockSize, imageInfo) {
49
+ const { w, h } = imageInfo;
50
+ return await (0, block_1.blocksToPngImage)(blocks, w, h, blockSize);
51
+ }
52
+ }
53
+ exports.ImageRestorer = ImageRestorer;
54
+ //# sourceMappingURL=restorer.js.map
@@ -0,0 +1,10 @@
1
+ import { type ManifestData } from "@pixzle/core";
2
+ export declare class ImageRestorer {
3
+ restoreImages(fragments: (string | Buffer)[], manifest: ManifestData): Promise<Buffer[]>;
4
+ private _reconstructImages;
5
+ private _prepareData;
6
+ private _readBlocksFromFragment;
7
+ private _readBlocks;
8
+ private _createImage;
9
+ }
10
+ //# sourceMappingURL=restorer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restorer.d.ts","sourceRoot":"","sources":["../src/restorer.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EAKlB,MAAM,cAAc,CAAC;AAKtB,qBAAa,aAAa;IAClB,aAAa,CACjB,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAC9B,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,MAAM,EAAE,CAAC;YAkBN,kBAAkB;YAkBlB,YAAY;YA2BZ,uBAAuB;YAgBvB,WAAW;YAaX,YAAY;CAQ3B"}
package/dist/restorer.js CHANGED
@@ -1,28 +1,31 @@
1
- import { calculateBlockCountsForCrossImages, calculateBlockCountsPerImage, calculateBlockRange, calculateTotalBlocks, } from "@pixzle/core";
2
- import { unshuffle } from "@tuki0918/seeded-shuffle";
3
- import { blocksPerImage, blocksToPngImage, imageFileToBlocks } from "./block";
4
- import { readFileBuffer } from "./file";
5
- export class ImageRestorer {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ImageRestorer = void 0;
4
+ const core_1 = require("@pixzle/core");
5
+ const seeded_shuffle_1 = require("@tuki0918/seeded-shuffle");
6
+ const block_1 = require("./block");
7
+ const file_1 = require("./file");
8
+ class ImageRestorer {
6
9
  async restoreImages(fragments, manifest) {
7
10
  const { blocks, blockCountsPerImage } = await this._prepareData(fragments, manifest);
8
11
  const restored = manifest.config.crossImageShuffle
9
- ? unshuffle(blocks, manifest.config.seed)
10
- : blocksPerImage(blocks, blockCountsPerImage, manifest.config.seed, unshuffle);
12
+ ? (0, seeded_shuffle_1.unshuffle)(blocks, manifest.config.seed)
13
+ : (0, block_1.blocksPerImage)(blocks, blockCountsPerImage, manifest.config.seed, seeded_shuffle_1.unshuffle);
11
14
  return await this._reconstructImages(restored, manifest);
12
15
  }
13
16
  async _reconstructImages(blocks, manifest) {
14
- const blockCountsPerImage = calculateBlockCountsPerImage(manifest.images);
17
+ const blockCountsPerImage = (0, core_1.calculateBlockCountsPerImage)(manifest.images);
15
18
  return await Promise.all(manifest.images.map(async (imageInfo, index) => {
16
- const { start, end } = calculateBlockRange(blockCountsPerImage, index);
19
+ const { start, end } = (0, core_1.calculateBlockRange)(blockCountsPerImage, index);
17
20
  const imageBlocks = blocks.slice(start, end);
18
21
  return await this._createImage(imageBlocks, manifest.config.blockSize, imageInfo);
19
22
  }));
20
23
  }
21
24
  async _prepareData(fragments, manifest) {
22
- const totalBlocks = calculateTotalBlocks(manifest.images);
23
- const blockCountsForCrossImages = calculateBlockCountsForCrossImages(totalBlocks, fragments.length);
25
+ const totalBlocks = (0, core_1.calculateTotalBlocks)(manifest.images);
26
+ const blockCountsForCrossImages = (0, core_1.calculateBlockCountsForCrossImages)(totalBlocks, fragments.length);
24
27
  // Calculate actual block counts per image for per-image unshuffle
25
- const blockCountsPerImage = calculateBlockCountsPerImage(manifest.images);
28
+ const blockCountsPerImage = (0, core_1.calculateBlockCountsPerImage)(manifest.images);
26
29
  // Use blockCountsPerImage when crossImageShuffle is false
27
30
  const blockCounts = manifest.config.crossImageShuffle
28
31
  ? blockCountsForCrossImages
@@ -34,8 +37,8 @@ export class ImageRestorer {
34
37
  async _readBlocksFromFragment(fragment, manifest, expectedCount) {
35
38
  const buffer = Buffer.isBuffer(fragment)
36
39
  ? fragment
37
- : await readFileBuffer(fragment);
38
- const { blocks } = await imageFileToBlocks(buffer, manifest.config.blockSize);
40
+ : await (0, file_1.readFileBuffer)(fragment);
41
+ const { blocks } = await (0, block_1.imageFileToBlocks)(buffer, manifest.config.blockSize);
39
42
  return blocks.slice(0, expectedCount);
40
43
  }
41
44
  async _readBlocks(fragments, manifest, blockCounts) {
@@ -44,7 +47,8 @@ export class ImageRestorer {
44
47
  }
45
48
  async _createImage(blocks, blockSize, imageInfo) {
46
49
  const { w, h } = imageInfo;
47
- return await blocksToPngImage(blocks, w, h, blockSize);
50
+ return await (0, block_1.blocksToPngImage)(blocks, w, h, blockSize);
48
51
  }
49
52
  }
53
+ exports.ImageRestorer = ImageRestorer;
50
54
  //# sourceMappingURL=restorer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"restorer.js","sourceRoot":"","sources":["../src/restorer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"restorer.js","sourceRoot":"","sources":["../src/restorer.ts"],"names":[],"mappings":"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"}
package/dist/utils.cjs ADDED
@@ -0,0 +1,15 @@
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.generateManifestId = generateManifestId;
7
+ const node_crypto_1 = __importDefault(require("node:crypto"));
8
+ /**
9
+ * Generate a unique manifest ID
10
+ * @returns A UUID string
11
+ */
12
+ function generateManifestId() {
13
+ return node_crypto_1.default.randomUUID();
14
+ }
15
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Generate a unique manifest ID
3
+ * @returns A UUID string
4
+ */
5
+ export declare function generateManifestId(): string;
6
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C"}
package/dist/utils.js CHANGED
@@ -1,9 +1,15 @@
1
- import crypto from "node:crypto";
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.generateManifestId = generateManifestId;
7
+ const node_crypto_1 = __importDefault(require("node:crypto"));
2
8
  /**
3
9
  * Generate a unique manifest ID
4
10
  * @returns A UUID string
5
11
  */
6
- export function generateManifestId() {
7
- return crypto.randomUUID();
12
+ function generateManifestId() {
13
+ return node_crypto_1.default.randomUUID();
8
14
  }
9
15
  //# sourceMappingURL=utils.js.map
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;AAMA,gDAEC;AARD,8DAAiC;AAEjC;;;GAGG;AACH,SAAgB,kBAAkB;IAChC,OAAO,qBAAM,CAAC,UAAU,EAAE,CAAC;AAC7B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pixzle/node",
3
- "version": "0.0.18",
3
+ "version": "0.0.20",
4
4
  "description": "Node.js implementation of image fragmentation and restoration",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -21,7 +21,7 @@
21
21
  "dependencies": {
22
22
  "@tuki0918/seeded-shuffle": "^1.0.0",
23
23
  "jimp": "^1.6.0",
24
- "@pixzle/core": "0.0.18"
24
+ "@pixzle/core": "0.0.20"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/node": "^22.10.2",