@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
package/dist/block.cjs ADDED
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.splitImageToBlocks = splitImageToBlocks;
4
+ exports.blocksToImageBuffer = blocksToImageBuffer;
5
+ exports.imageFileToBlocks = imageFileToBlocks;
6
+ exports.blocksToPngImage = blocksToPngImage;
7
+ exports.extractImageBufferFromPng = extractImageBufferFromPng;
8
+ exports.createPngFromImageBuffer = createPngFromImageBuffer;
9
+ exports.blocksPerImage = blocksPerImage;
10
+ const core_1 = require("@pixzle/core");
11
+ const jimp_1 = require("jimp");
12
+ /**
13
+ * Format error message consistently
14
+ * @param operation Description of the operation that failed
15
+ * @param error The error that occurred
16
+ * @returns Formatted error message
17
+ */
18
+ function formatErrorMessage(operation, error) {
19
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
20
+ return `${operation}: ${errorMessage}`;
21
+ }
22
+ /**
23
+ * Create a Jimp image from raw RGBA image buffer
24
+ * @param imageBuffer Raw RGBA image buffer
25
+ * @param width Image width in pixels
26
+ * @param height Image height in pixels
27
+ * @returns Jimp image instance
28
+ */
29
+ function createJimpFromImageBuffer(imageBuffer, width, height) {
30
+ return new jimp_1.Jimp({
31
+ data: imageBuffer,
32
+ width,
33
+ height,
34
+ });
35
+ }
36
+ /**
37
+ * Split an RGBA image buffer into an array of blocks (Node.js Buffer wrapper)
38
+ * @param buffer Source image buffer (RGBA format)
39
+ * @param width Image width in pixels
40
+ * @param height Image height in pixels
41
+ * @param blockSize Block size in pixels
42
+ * @returns Array of block buffers
43
+ */
44
+ function splitImageToBlocks(buffer, width, height, blockSize) {
45
+ const blocks = (0, core_1.splitImageToBlocks)(buffer, width, height, blockSize);
46
+ return blocks.map((block) => Buffer.from(block));
47
+ }
48
+ /**
49
+ * Reconstruct an RGBA image buffer from an array of blocks (Node.js Buffer wrapper)
50
+ * @param blocks Array of block buffers
51
+ * @param width Target image width in pixels
52
+ * @param height Target image height in pixels
53
+ * @param blockSize Block size in pixels
54
+ * @returns Reconstructed image buffer
55
+ */
56
+ function blocksToImageBuffer(blocks, width, height, blockSize) {
57
+ const uint8Blocks = blocks.map((block) => new Uint8Array(block));
58
+ const imageBuffer = (0, core_1.blocksToImageBuffer)(uint8Blocks, width, height, blockSize);
59
+ return Buffer.from(imageBuffer);
60
+ }
61
+ /**
62
+ * Load an image from file or buffer and split into blocks
63
+ * @param input Path to the image file or Buffer containing image data
64
+ * @param blockSize Block size in pixels
65
+ * @returns Promise resolving to block data and image metadata
66
+ */
67
+ async function imageFileToBlocks(input, blockSize) {
68
+ try {
69
+ // Load and process image with Jimp (automatically converts to RGBA)
70
+ const image = await jimp_1.Jimp.read(input);
71
+ const { width, height } = image.bitmap;
72
+ const channels = core_1.RGBA_CHANNELS;
73
+ const imageBuffer = image.bitmap.data;
74
+ // Split image into blocks
75
+ const blocks = splitImageToBlocks(imageBuffer, width, height, blockSize);
76
+ const blockCounts = (0, core_1.calculateBlockCounts)(width, height, blockSize);
77
+ return {
78
+ blocks,
79
+ width,
80
+ height,
81
+ channels,
82
+ blockCountX: blockCounts.blockCountX,
83
+ blockCountY: blockCounts.blockCountY,
84
+ };
85
+ }
86
+ catch (error) {
87
+ throw new Error(`${formatErrorMessage("Failed to process image file", error)}. The manifest file may not match the image data.`);
88
+ }
89
+ }
90
+ /**
91
+ * Reconstruct a PNG image from blocks
92
+ * @param blocks Array of block buffers
93
+ * @param width Target image width in pixels
94
+ * @param height Target image height in pixels
95
+ * @param blockSize Block size in pixels
96
+ * @returns Promise resolving to PNG buffer
97
+ */
98
+ async function blocksToPngImage(blocks, width, height, blockSize) {
99
+ try {
100
+ const imageBuffer = blocksToImageBuffer(blocks, width, height, blockSize);
101
+ return await createPngFromImageBuffer(imageBuffer, width, height);
102
+ }
103
+ catch (error) {
104
+ throw new Error(formatErrorMessage("Failed to reconstruct PNG image from blocks", error));
105
+ }
106
+ }
107
+ /**
108
+ * Extract raw RGBA image buffer from a PNG buffer using Jimp
109
+ * @param pngBuffer PNG image buffer
110
+ * @returns Promise resolving to image buffer and image dimensions
111
+ */
112
+ async function extractImageBufferFromPng(pngBuffer) {
113
+ try {
114
+ const image = await jimp_1.Jimp.read(pngBuffer);
115
+ const { width, height } = image.bitmap;
116
+ const imageBuffer = Buffer.from(image.bitmap.data);
117
+ return { imageBuffer, width, height };
118
+ }
119
+ catch (error) {
120
+ throw new Error(formatErrorMessage("Failed to extract image buffer from PNG", error));
121
+ }
122
+ }
123
+ /**
124
+ * Create a PNG buffer from raw RGBA image buffer using Jimp
125
+ * @param imageBuffer Raw RGBA image buffer
126
+ * @param width Image width in pixels
127
+ * @param height Image height in pixels
128
+ * @returns Promise resolving to PNG buffer
129
+ */
130
+ async function createPngFromImageBuffer(imageBuffer, width, height) {
131
+ try {
132
+ const image = createJimpFromImageBuffer(imageBuffer, width, height);
133
+ return await image.getBuffer(jimp_1.JimpMime.png);
134
+ }
135
+ catch (error) {
136
+ throw new Error(formatErrorMessage("Failed to create PNG from image buffer", error));
137
+ }
138
+ }
139
+ /**
140
+ * Apply a function to blocks per image
141
+ * @param allBlocks - All blocks to process
142
+ * @param fragmentBlocksCount - Number of blocks per fragment
143
+ * @param seed - Seed for the processing function
144
+ * @param processFunc - Function to apply to blocks (shuffle or unshuffle)
145
+ * @returns Processed blocks
146
+ */
147
+ function blocksPerImage(allBlocks, fragmentBlocksCount, seed, processFunc) {
148
+ const processedBlocks = [];
149
+ let offset = 0;
150
+ for (const blockCount of fragmentBlocksCount) {
151
+ const imageBlocks = allBlocks.slice(offset, offset + blockCount);
152
+ const processed = processFunc(imageBlocks, seed);
153
+ processedBlocks.push(...processed);
154
+ offset += blockCount;
155
+ }
156
+ return processedBlocks;
157
+ }
158
+ //# sourceMappingURL=block.js.map
@@ -0,0 +1,71 @@
1
+ interface ImageFileToBlocksResult {
2
+ blocks: Buffer[];
3
+ width: number;
4
+ height: number;
5
+ channels: number;
6
+ blockCountX: number;
7
+ blockCountY: number;
8
+ }
9
+ /**
10
+ * Split an RGBA image buffer into an array of blocks (Node.js Buffer wrapper)
11
+ * @param buffer Source image buffer (RGBA format)
12
+ * @param width Image width in pixels
13
+ * @param height Image height in pixels
14
+ * @param blockSize Block size in pixels
15
+ * @returns Array of block buffers
16
+ */
17
+ export declare function splitImageToBlocks(buffer: Buffer, width: number, height: number, blockSize: number): Buffer[];
18
+ /**
19
+ * Reconstruct an RGBA image buffer from an array of blocks (Node.js Buffer wrapper)
20
+ * @param blocks Array of block buffers
21
+ * @param width Target image width in pixels
22
+ * @param height Target image height in pixels
23
+ * @param blockSize Block size in pixels
24
+ * @returns Reconstructed image buffer
25
+ */
26
+ export declare function blocksToImageBuffer(blocks: Buffer[], width: number, height: number, blockSize: number): Buffer;
27
+ /**
28
+ * Load an image from file or buffer and split into blocks
29
+ * @param input Path to the image file or Buffer containing image data
30
+ * @param blockSize Block size in pixels
31
+ * @returns Promise resolving to block data and image metadata
32
+ */
33
+ export declare function imageFileToBlocks(input: string | Buffer, blockSize: number): Promise<ImageFileToBlocksResult>;
34
+ /**
35
+ * Reconstruct a PNG image from blocks
36
+ * @param blocks Array of block buffers
37
+ * @param width Target image width in pixels
38
+ * @param height Target image height in pixels
39
+ * @param blockSize Block size in pixels
40
+ * @returns Promise resolving to PNG buffer
41
+ */
42
+ export declare function blocksToPngImage(blocks: Buffer[], width: number, height: number, blockSize: number): Promise<Buffer>;
43
+ /**
44
+ * Extract raw RGBA image buffer from a PNG buffer using Jimp
45
+ * @param pngBuffer PNG image buffer
46
+ * @returns Promise resolving to image buffer and image dimensions
47
+ */
48
+ export declare function extractImageBufferFromPng(pngBuffer: Buffer): Promise<{
49
+ imageBuffer: Buffer;
50
+ width: number;
51
+ height: number;
52
+ }>;
53
+ /**
54
+ * Create a PNG buffer from raw RGBA image buffer using Jimp
55
+ * @param imageBuffer Raw RGBA image buffer
56
+ * @param width Image width in pixels
57
+ * @param height Image height in pixels
58
+ * @returns Promise resolving to PNG buffer
59
+ */
60
+ export declare function createPngFromImageBuffer(imageBuffer: Buffer, width: number, height: number): Promise<Buffer>;
61
+ /**
62
+ * Apply a function to blocks per image
63
+ * @param allBlocks - All blocks to process
64
+ * @param fragmentBlocksCount - Number of blocks per fragment
65
+ * @param seed - Seed for the processing function
66
+ * @param processFunc - Function to apply to blocks (shuffle or unshuffle)
67
+ * @returns Processed blocks
68
+ */
69
+ export declare function blocksPerImage(allBlocks: Buffer[], fragmentBlocksCount: number[], seed: number | string, processFunc: (blocks: Buffer[], seed: number | string) => Buffer[]): Buffer[];
70
+ export {};
71
+ //# sourceMappingURL=block.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../src/block.ts"],"names":[],"mappings":"AAQA,UAAU,uBAAuB;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAgCD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,MAAM,EAAE,CAGV;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,MAAM,CASR;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,uBAAuB,CAAC,CAyBlC;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CASjB;AAED;;;;GAIG;AACH,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAYjE;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CASjB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EAAE,EACnB,mBAAmB,EAAE,MAAM,EAAE,EAC7B,IAAI,EAAE,MAAM,GAAG,MAAM,EACrB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,EAAE,GACjE,MAAM,EAAE,CAYV"}
package/dist/block.js CHANGED
@@ -1,5 +1,14 @@
1
- import { RGBA_CHANNELS, calculateBlockCounts, blocksToImageBuffer as coreBlocksToImageBuffer, splitImageToBlocks as coreSplitImageToBlocks, } from "@pixzle/core";
2
- import { Jimp, JimpMime } from "jimp";
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.splitImageToBlocks = splitImageToBlocks;
4
+ exports.blocksToImageBuffer = blocksToImageBuffer;
5
+ exports.imageFileToBlocks = imageFileToBlocks;
6
+ exports.blocksToPngImage = blocksToPngImage;
7
+ exports.extractImageBufferFromPng = extractImageBufferFromPng;
8
+ exports.createPngFromImageBuffer = createPngFromImageBuffer;
9
+ exports.blocksPerImage = blocksPerImage;
10
+ const core_1 = require("@pixzle/core");
11
+ const jimp_1 = require("jimp");
3
12
  /**
4
13
  * Format error message consistently
5
14
  * @param operation Description of the operation that failed
@@ -18,7 +27,7 @@ function formatErrorMessage(operation, error) {
18
27
  * @returns Jimp image instance
19
28
  */
20
29
  function createJimpFromImageBuffer(imageBuffer, width, height) {
21
- return new Jimp({
30
+ return new jimp_1.Jimp({
22
31
  data: imageBuffer,
23
32
  width,
24
33
  height,
@@ -32,8 +41,8 @@ function createJimpFromImageBuffer(imageBuffer, width, height) {
32
41
  * @param blockSize Block size in pixels
33
42
  * @returns Array of block buffers
34
43
  */
35
- export function splitImageToBlocks(buffer, width, height, blockSize) {
36
- const blocks = coreSplitImageToBlocks(buffer, width, height, blockSize);
44
+ function splitImageToBlocks(buffer, width, height, blockSize) {
45
+ const blocks = (0, core_1.splitImageToBlocks)(buffer, width, height, blockSize);
37
46
  return blocks.map((block) => Buffer.from(block));
38
47
  }
39
48
  /**
@@ -44,9 +53,9 @@ export function splitImageToBlocks(buffer, width, height, blockSize) {
44
53
  * @param blockSize Block size in pixels
45
54
  * @returns Reconstructed image buffer
46
55
  */
47
- export function blocksToImageBuffer(blocks, width, height, blockSize) {
56
+ function blocksToImageBuffer(blocks, width, height, blockSize) {
48
57
  const uint8Blocks = blocks.map((block) => new Uint8Array(block));
49
- const imageBuffer = coreBlocksToImageBuffer(uint8Blocks, width, height, blockSize);
58
+ const imageBuffer = (0, core_1.blocksToImageBuffer)(uint8Blocks, width, height, blockSize);
50
59
  return Buffer.from(imageBuffer);
51
60
  }
52
61
  /**
@@ -55,16 +64,16 @@ export function blocksToImageBuffer(blocks, width, height, blockSize) {
55
64
  * @param blockSize Block size in pixels
56
65
  * @returns Promise resolving to block data and image metadata
57
66
  */
58
- export async function imageFileToBlocks(input, blockSize) {
67
+ async function imageFileToBlocks(input, blockSize) {
59
68
  try {
60
69
  // Load and process image with Jimp (automatically converts to RGBA)
61
- const image = await Jimp.read(input);
70
+ const image = await jimp_1.Jimp.read(input);
62
71
  const { width, height } = image.bitmap;
63
- const channels = RGBA_CHANNELS;
72
+ const channels = core_1.RGBA_CHANNELS;
64
73
  const imageBuffer = image.bitmap.data;
65
74
  // Split image into blocks
66
75
  const blocks = splitImageToBlocks(imageBuffer, width, height, blockSize);
67
- const blockCounts = calculateBlockCounts(width, height, blockSize);
76
+ const blockCounts = (0, core_1.calculateBlockCounts)(width, height, blockSize);
68
77
  return {
69
78
  blocks,
70
79
  width,
@@ -86,7 +95,7 @@ export async function imageFileToBlocks(input, blockSize) {
86
95
  * @param blockSize Block size in pixels
87
96
  * @returns Promise resolving to PNG buffer
88
97
  */
89
- export async function blocksToPngImage(blocks, width, height, blockSize) {
98
+ async function blocksToPngImage(blocks, width, height, blockSize) {
90
99
  try {
91
100
  const imageBuffer = blocksToImageBuffer(blocks, width, height, blockSize);
92
101
  return await createPngFromImageBuffer(imageBuffer, width, height);
@@ -100,9 +109,9 @@ export async function blocksToPngImage(blocks, width, height, blockSize) {
100
109
  * @param pngBuffer PNG image buffer
101
110
  * @returns Promise resolving to image buffer and image dimensions
102
111
  */
103
- export async function extractImageBufferFromPng(pngBuffer) {
112
+ async function extractImageBufferFromPng(pngBuffer) {
104
113
  try {
105
- const image = await Jimp.read(pngBuffer);
114
+ const image = await jimp_1.Jimp.read(pngBuffer);
106
115
  const { width, height } = image.bitmap;
107
116
  const imageBuffer = Buffer.from(image.bitmap.data);
108
117
  return { imageBuffer, width, height };
@@ -118,10 +127,10 @@ export async function extractImageBufferFromPng(pngBuffer) {
118
127
  * @param height Image height in pixels
119
128
  * @returns Promise resolving to PNG buffer
120
129
  */
121
- export async function createPngFromImageBuffer(imageBuffer, width, height) {
130
+ async function createPngFromImageBuffer(imageBuffer, width, height) {
122
131
  try {
123
132
  const image = createJimpFromImageBuffer(imageBuffer, width, height);
124
- return await image.getBuffer(JimpMime.png);
133
+ return await image.getBuffer(jimp_1.JimpMime.png);
125
134
  }
126
135
  catch (error) {
127
136
  throw new Error(formatErrorMessage("Failed to create PNG from image buffer", error));
@@ -135,7 +144,7 @@ export async function createPngFromImageBuffer(imageBuffer, width, height) {
135
144
  * @param processFunc - Function to apply to blocks (shuffle or unshuffle)
136
145
  * @returns Processed blocks
137
146
  */
138
- export function blocksPerImage(allBlocks, fragmentBlocksCount, seed, processFunc) {
147
+ function blocksPerImage(allBlocks, fragmentBlocksCount, seed, processFunc) {
139
148
  const processedBlocks = [];
140
149
  let offset = 0;
141
150
  for (const blockCount of fragmentBlocksCount) {
package/dist/block.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"block.js","sourceRoot":"","sources":["../src/block.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"block.js","sourceRoot":"","sources":["../src/block.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ interface ImageFileToBlocksResult {
2
+ blocks: Buffer[];
3
+ width: number;
4
+ height: number;
5
+ channels: number;
6
+ blockCountX: number;
7
+ blockCountY: number;
8
+ }
9
+ /**
10
+ * Split an RGBA image buffer into an array of blocks (Node.js Buffer wrapper)
11
+ * @param buffer Source image buffer (RGBA format)
12
+ * @param width Image width in pixels
13
+ * @param height Image height in pixels
14
+ * @param blockSize Block size in pixels
15
+ * @returns Array of block buffers
16
+ */
17
+ export declare function splitImageToBlocks(buffer: Buffer, width: number, height: number, blockSize: number): Buffer[];
18
+ /**
19
+ * Reconstruct an RGBA image buffer from an array of blocks (Node.js Buffer wrapper)
20
+ * @param blocks Array of block buffers
21
+ * @param width Target image width in pixels
22
+ * @param height Target image height in pixels
23
+ * @param blockSize Block size in pixels
24
+ * @returns Reconstructed image buffer
25
+ */
26
+ export declare function blocksToImageBuffer(blocks: Buffer[], width: number, height: number, blockSize: number): Buffer;
27
+ /**
28
+ * Load an image from file or buffer and split into blocks
29
+ * @param input Path to the image file or Buffer containing image data
30
+ * @param blockSize Block size in pixels
31
+ * @returns Promise resolving to block data and image metadata
32
+ */
33
+ export declare function imageFileToBlocks(input: string | Buffer, blockSize: number): Promise<ImageFileToBlocksResult>;
34
+ /**
35
+ * Reconstruct a PNG image from blocks
36
+ * @param blocks Array of block buffers
37
+ * @param width Target image width in pixels
38
+ * @param height Target image height in pixels
39
+ * @param blockSize Block size in pixels
40
+ * @returns Promise resolving to PNG buffer
41
+ */
42
+ export declare function blocksToPngImage(blocks: Buffer[], width: number, height: number, blockSize: number): Promise<Buffer>;
43
+ /**
44
+ * Extract raw RGBA image buffer from a PNG buffer using Jimp
45
+ * @param pngBuffer PNG image buffer
46
+ * @returns Promise resolving to image buffer and image dimensions
47
+ */
48
+ export declare function extractImageBufferFromPng(pngBuffer: Buffer): Promise<{
49
+ imageBuffer: Buffer;
50
+ width: number;
51
+ height: number;
52
+ }>;
53
+ /**
54
+ * Create a PNG buffer from raw RGBA image buffer using Jimp
55
+ * @param imageBuffer Raw RGBA image buffer
56
+ * @param width Image width in pixels
57
+ * @param height Image height in pixels
58
+ * @returns Promise resolving to PNG buffer
59
+ */
60
+ export declare function createPngFromImageBuffer(imageBuffer: Buffer, width: number, height: number): Promise<Buffer>;
61
+ /**
62
+ * Apply a function to blocks per image
63
+ * @param allBlocks - All blocks to process
64
+ * @param fragmentBlocksCount - Number of blocks per fragment
65
+ * @param seed - Seed for the processing function
66
+ * @param processFunc - Function to apply to blocks (shuffle or unshuffle)
67
+ * @returns Processed blocks
68
+ */
69
+ export declare function blocksPerImage(allBlocks: Buffer[], fragmentBlocksCount: number[], seed: number | string, processFunc: (blocks: Buffer[], seed: number | string) => Buffer[]): Buffer[];
70
+ export {};
71
+ //# sourceMappingURL=block.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../src/block.ts"],"names":[],"mappings":"AAQA,UAAU,uBAAuB;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAgCD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,MAAM,EAAE,CAGV;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,MAAM,CASR;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,uBAAuB,CAAC,CAyBlC;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CASjB;AAED;;;;GAIG;AACH,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAYjE;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CASjB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EAAE,EACnB,mBAAmB,EAAE,MAAM,EAAE,EAC7B,IAAI,EAAE,MAAM,GAAG,MAAM,EACrB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,EAAE,GACjE,MAAM,EAAE,CAYV"}
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.splitImageToBlocks = splitImageToBlocks;
4
+ exports.blocksToImageBuffer = blocksToImageBuffer;
5
+ exports.imageFileToBlocks = imageFileToBlocks;
6
+ exports.blocksToPngImage = blocksToPngImage;
7
+ exports.extractImageBufferFromPng = extractImageBufferFromPng;
8
+ exports.createPngFromImageBuffer = createPngFromImageBuffer;
9
+ exports.blocksPerImage = blocksPerImage;
10
+ const core_1 = require("@pixzle/core");
11
+ const jimp_1 = require("jimp");
12
+ /**
13
+ * Format error message consistently
14
+ * @param operation Description of the operation that failed
15
+ * @param error The error that occurred
16
+ * @returns Formatted error message
17
+ */
18
+ function formatErrorMessage(operation, error) {
19
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
20
+ return `${operation}: ${errorMessage}`;
21
+ }
22
+ /**
23
+ * Create a Jimp image from raw RGBA image buffer
24
+ * @param imageBuffer Raw RGBA image buffer
25
+ * @param width Image width in pixels
26
+ * @param height Image height in pixels
27
+ * @returns Jimp image instance
28
+ */
29
+ function createJimpFromImageBuffer(imageBuffer, width, height) {
30
+ return new jimp_1.Jimp({
31
+ data: imageBuffer,
32
+ width,
33
+ height,
34
+ });
35
+ }
36
+ /**
37
+ * Split an RGBA image buffer into an array of blocks (Node.js Buffer wrapper)
38
+ * @param buffer Source image buffer (RGBA format)
39
+ * @param width Image width in pixels
40
+ * @param height Image height in pixels
41
+ * @param blockSize Block size in pixels
42
+ * @returns Array of block buffers
43
+ */
44
+ function splitImageToBlocks(buffer, width, height, blockSize) {
45
+ const blocks = (0, core_1.splitImageToBlocks)(buffer, width, height, blockSize);
46
+ return blocks.map((block) => Buffer.from(block));
47
+ }
48
+ /**
49
+ * Reconstruct an RGBA image buffer from an array of blocks (Node.js Buffer wrapper)
50
+ * @param blocks Array of block buffers
51
+ * @param width Target image width in pixels
52
+ * @param height Target image height in pixels
53
+ * @param blockSize Block size in pixels
54
+ * @returns Reconstructed image buffer
55
+ */
56
+ function blocksToImageBuffer(blocks, width, height, blockSize) {
57
+ const uint8Blocks = blocks.map((block) => new Uint8Array(block));
58
+ const imageBuffer = (0, core_1.blocksToImageBuffer)(uint8Blocks, width, height, blockSize);
59
+ return Buffer.from(imageBuffer);
60
+ }
61
+ /**
62
+ * Load an image from file or buffer and split into blocks
63
+ * @param input Path to the image file or Buffer containing image data
64
+ * @param blockSize Block size in pixels
65
+ * @returns Promise resolving to block data and image metadata
66
+ */
67
+ async function imageFileToBlocks(input, blockSize) {
68
+ try {
69
+ // Load and process image with Jimp (automatically converts to RGBA)
70
+ const image = await jimp_1.Jimp.read(input);
71
+ const { width, height } = image.bitmap;
72
+ const channels = core_1.RGBA_CHANNELS;
73
+ const imageBuffer = image.bitmap.data;
74
+ // Split image into blocks
75
+ const blocks = splitImageToBlocks(imageBuffer, width, height, blockSize);
76
+ const blockCounts = (0, core_1.calculateBlockCounts)(width, height, blockSize);
77
+ return {
78
+ blocks,
79
+ width,
80
+ height,
81
+ channels,
82
+ blockCountX: blockCounts.blockCountX,
83
+ blockCountY: blockCounts.blockCountY,
84
+ };
85
+ }
86
+ catch (error) {
87
+ throw new Error(`${formatErrorMessage("Failed to process image file", error)}. The manifest file may not match the image data.`);
88
+ }
89
+ }
90
+ /**
91
+ * Reconstruct a PNG image from blocks
92
+ * @param blocks Array of block buffers
93
+ * @param width Target image width in pixels
94
+ * @param height Target image height in pixels
95
+ * @param blockSize Block size in pixels
96
+ * @returns Promise resolving to PNG buffer
97
+ */
98
+ async function blocksToPngImage(blocks, width, height, blockSize) {
99
+ try {
100
+ const imageBuffer = blocksToImageBuffer(blocks, width, height, blockSize);
101
+ return await createPngFromImageBuffer(imageBuffer, width, height);
102
+ }
103
+ catch (error) {
104
+ throw new Error(formatErrorMessage("Failed to reconstruct PNG image from blocks", error));
105
+ }
106
+ }
107
+ /**
108
+ * Extract raw RGBA image buffer from a PNG buffer using Jimp
109
+ * @param pngBuffer PNG image buffer
110
+ * @returns Promise resolving to image buffer and image dimensions
111
+ */
112
+ async function extractImageBufferFromPng(pngBuffer) {
113
+ try {
114
+ const image = await jimp_1.Jimp.read(pngBuffer);
115
+ const { width, height } = image.bitmap;
116
+ const imageBuffer = Buffer.from(image.bitmap.data);
117
+ return { imageBuffer, width, height };
118
+ }
119
+ catch (error) {
120
+ throw new Error(formatErrorMessage("Failed to extract image buffer from PNG", error));
121
+ }
122
+ }
123
+ /**
124
+ * Create a PNG buffer from raw RGBA image buffer using Jimp
125
+ * @param imageBuffer Raw RGBA image buffer
126
+ * @param width Image width in pixels
127
+ * @param height Image height in pixels
128
+ * @returns Promise resolving to PNG buffer
129
+ */
130
+ async function createPngFromImageBuffer(imageBuffer, width, height) {
131
+ try {
132
+ const image = createJimpFromImageBuffer(imageBuffer, width, height);
133
+ return await image.getBuffer(jimp_1.JimpMime.png);
134
+ }
135
+ catch (error) {
136
+ throw new Error(formatErrorMessage("Failed to create PNG from image buffer", error));
137
+ }
138
+ }
139
+ /**
140
+ * Apply a function to blocks per image
141
+ * @param allBlocks - All blocks to process
142
+ * @param fragmentBlocksCount - Number of blocks per fragment
143
+ * @param seed - Seed for the processing function
144
+ * @param processFunc - Function to apply to blocks (shuffle or unshuffle)
145
+ * @returns Processed blocks
146
+ */
147
+ function blocksPerImage(allBlocks, fragmentBlocksCount, seed, processFunc) {
148
+ const processedBlocks = [];
149
+ let offset = 0;
150
+ for (const blockCount of fragmentBlocksCount) {
151
+ const imageBlocks = allBlocks.slice(offset, offset + blockCount);
152
+ const processed = processFunc(imageBlocks, seed);
153
+ processedBlocks.push(...processed);
154
+ offset += blockCount;
155
+ }
156
+ return processedBlocks;
157
+ }
158
+ //# sourceMappingURL=block.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block.js","sourceRoot":"","sources":["../../src/block.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const VERSION: string;
2
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,QAAU,CAAC"}
@@ -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,oDAA4C;AAE/B,QAAA,OAAO,GAAG,sBAAO,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Create a directory
3
+ * @param dir Directory path
4
+ * @param recursive Create parent directories if they don't exist
5
+ */
6
+ export declare function createDir(dir: string, recursive?: boolean): Promise<void>;
7
+ /**
8
+ * Write a file
9
+ * @param dir Directory path
10
+ * @param filename Filename
11
+ * @param data Data to write
12
+ * @returns Path to the file
13
+ */
14
+ export declare function writeFile(dir: string, filename: string, data: string | Buffer): Promise<string>;
15
+ /**
16
+ * Read a JSON file and return its content
17
+ * @param filePath Path to the JSON file
18
+ * @returns Content of the JSON file
19
+ */
20
+ export declare function readJsonFile<T>(filePath: string): Promise<T>;
21
+ /**
22
+ * Read a file and return its content
23
+ * @param filePath Path to the file
24
+ * @returns Content of the file
25
+ */
26
+ export declare function readFileBuffer(filePath: string): Promise<Buffer>;
27
+ /**
28
+ * Get the filename without the extension
29
+ * @param filePath Path to the file
30
+ * @returns Filename without the extension
31
+ */
32
+ export declare function fileNameWithoutExtension(filePath: string): string;
33
+ //# sourceMappingURL=file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../src/file.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,UAAQ,iBAE7D;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GAAG,MAAM,mBAKtB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAElE;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEjE"}