@pixzle/core 0.0.24 → 0.0.25

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 (80) hide show
  1. package/dist/validators.js.map +1 -1
  2. package/package.json +1 -1
  3. package/dist/block-operations.cjs +0 -146
  4. package/dist/block-operations.d.cts +0 -56
  5. package/dist/block-operations.d.ts.map +0 -1
  6. package/dist/block-utils.cjs +0 -86
  7. package/dist/block-utils.d.cts +0 -47
  8. package/dist/block-utils.d.ts.map +0 -1
  9. package/dist/cjs/block-operations.d.ts +0 -56
  10. package/dist/cjs/block-operations.d.ts.map +0 -1
  11. package/dist/cjs/block-operations.js +0 -146
  12. package/dist/cjs/block-operations.js.map +0 -1
  13. package/dist/cjs/block-utils.d.ts +0 -47
  14. package/dist/cjs/block-utils.d.ts.map +0 -1
  15. package/dist/cjs/block-utils.js +0 -86
  16. package/dist/cjs/block-utils.js.map +0 -1
  17. package/dist/cjs/constants.d.ts +0 -8
  18. package/dist/cjs/constants.d.ts.map +0 -1
  19. package/dist/cjs/constants.js +0 -11
  20. package/dist/cjs/constants.js.map +0 -1
  21. package/dist/cjs/helpers.d.ts +0 -45
  22. package/dist/cjs/helpers.d.ts.map +0 -1
  23. package/dist/cjs/helpers.js +0 -101
  24. package/dist/cjs/helpers.js.map +0 -1
  25. package/dist/cjs/index.d.ts +0 -8
  26. package/dist/cjs/index.d.ts.map +0 -1
  27. package/dist/cjs/index.js +0 -27
  28. package/dist/cjs/index.js.map +0 -1
  29. package/dist/cjs/package.json +0 -1
  30. package/dist/cjs/types.d.ts +0 -65
  31. package/dist/cjs/types.d.ts.map +0 -1
  32. package/dist/cjs/types.js +0 -3
  33. package/dist/cjs/types.js.map +0 -1
  34. package/dist/cjs/validators.d.ts +0 -16
  35. package/dist/cjs/validators.d.ts.map +0 -1
  36. package/dist/cjs/validators.js +0 -48
  37. package/dist/cjs/validators.js.map +0 -1
  38. package/dist/constants.cjs +0 -11
  39. package/dist/constants.d.cts +0 -8
  40. package/dist/constants.d.ts.map +0 -1
  41. package/dist/esm/block-operations.d.ts +0 -56
  42. package/dist/esm/block-operations.d.ts.map +0 -1
  43. package/dist/esm/block-operations.js +0 -140
  44. package/dist/esm/block-operations.js.map +0 -1
  45. package/dist/esm/block-utils.d.ts +0 -47
  46. package/dist/esm/block-utils.d.ts.map +0 -1
  47. package/dist/esm/block-utils.js +0 -78
  48. package/dist/esm/block-utils.js.map +0 -1
  49. package/dist/esm/constants.d.ts +0 -8
  50. package/dist/esm/constants.d.ts.map +0 -1
  51. package/dist/esm/constants.js +0 -8
  52. package/dist/esm/constants.js.map +0 -1
  53. package/dist/esm/helpers.d.ts +0 -45
  54. package/dist/esm/helpers.d.ts.map +0 -1
  55. package/dist/esm/helpers.js +0 -93
  56. package/dist/esm/helpers.js.map +0 -1
  57. package/dist/esm/index.d.ts +0 -8
  58. package/dist/esm/index.d.ts.map +0 -1
  59. package/dist/esm/index.js +0 -9
  60. package/dist/esm/index.js.map +0 -1
  61. package/dist/esm/types.d.ts +0 -65
  62. package/dist/esm/types.d.ts.map +0 -1
  63. package/dist/esm/types.js +0 -2
  64. package/dist/esm/types.js.map +0 -1
  65. package/dist/esm/validators.d.ts +0 -16
  66. package/dist/esm/validators.d.ts.map +0 -1
  67. package/dist/esm/validators.js +0 -44
  68. package/dist/esm/validators.js.map +0 -1
  69. package/dist/helpers.cjs +0 -101
  70. package/dist/helpers.d.cts +0 -45
  71. package/dist/helpers.d.ts.map +0 -1
  72. package/dist/index.cjs +0 -27
  73. package/dist/index.d.cts +0 -8
  74. package/dist/index.d.ts.map +0 -1
  75. package/dist/types.cjs +0 -3
  76. package/dist/types.d.cts +0 -65
  77. package/dist/types.d.ts.map +0 -1
  78. package/dist/validators.cjs +0 -48
  79. package/dist/validators.d.cts +0 -16
  80. package/dist/validators.d.ts.map +0 -1
@@ -1,140 +0,0 @@
1
- import { RGBA_CHANNELS, calculateBlockCounts, } from "./block-utils";
2
- /**
3
- * Extract a block from an image buffer
4
- * @param buffer Source image buffer (RGBA format)
5
- * @param imageWidth Image width in pixels
6
- * @param imageHeight Image height in pixels (optional, defaults to calculated height)
7
- * @param startX Block top-left X coordinate
8
- * @param startY Block top-left Y coordinate
9
- * @param blockSize Maximum block size
10
- * @returns Block buffer containing pixel data
11
- */
12
- export function extractBlock(buffer, imageWidth, imageHeight, startX, startY, blockSize) {
13
- // Calculate actual block dimensions considering image boundaries
14
- const blockWidth = Math.min(blockSize, imageWidth - startX);
15
- const blockHeight = imageHeight !== undefined
16
- ? Math.min(blockSize, imageHeight - startY)
17
- : blockSize;
18
- const blockData = [];
19
- // Extract pixel data row by row
20
- for (let y = 0; y < blockHeight; y++) {
21
- for (let x = 0; x < blockWidth; x++) {
22
- const pixelX = startX + x;
23
- const pixelY = startY + y;
24
- const pixelIndex = (pixelY * imageWidth + pixelX) * RGBA_CHANNELS;
25
- // Copy RGBA channels
26
- for (let channel = 0; channel < RGBA_CHANNELS; channel++) {
27
- blockData.push(buffer[pixelIndex + channel] || 0);
28
- }
29
- }
30
- }
31
- return new Uint8Array(blockData);
32
- }
33
- /**
34
- * Place block data at the specified position in the target image buffer
35
- * @param targetBuffer Target image buffer to place the block into
36
- * @param blockData Block data to place
37
- * @param targetWidth Target image width in pixels
38
- * @param destX Destination X coordinate
39
- * @param destY Destination Y coordinate
40
- * @param blockSize Standard block size
41
- * @param blockWidth Actual block width (optional, defaults to blockSize)
42
- * @param blockHeight Actual block height (optional, defaults to blockSize)
43
- */
44
- export function placeBlock(targetBuffer, blockData, targetWidth, destX, destY, blockSize, blockWidth, blockHeight) {
45
- const actualWidth = blockWidth ?? blockSize;
46
- const actualHeight = blockHeight ?? blockSize;
47
- // Place pixels row by row
48
- for (let y = 0; y < actualHeight; y++) {
49
- for (let x = 0; x < actualWidth; x++) {
50
- const sourceIndex = (y * actualWidth + x) * RGBA_CHANNELS;
51
- const targetIndex = ((destY + y) * targetWidth + (destX + x)) * RGBA_CHANNELS;
52
- // Ensure we don't write beyond buffer bounds
53
- if (targetIndex + RGBA_CHANNELS <= targetBuffer.length) {
54
- // Copy RGBA channels
55
- for (let channel = 0; channel < RGBA_CHANNELS; channel++) {
56
- targetBuffer[targetIndex + channel] =
57
- blockData[sourceIndex + channel];
58
- }
59
- }
60
- }
61
- }
62
- }
63
- /**
64
- * Calculate actual block dimensions at edge positions
65
- * @param position Block position (x or y)
66
- * @param blockSize Standard block size
67
- * @param imageSize Image dimension (width or height)
68
- * @param blockCount Total block count in that dimension
69
- * @returns Actual block dimension
70
- */
71
- function calculateActualBlockSize(position, blockSize, imageSize, blockCount) {
72
- const isEdgeBlock = position === blockCount - 1;
73
- return isEdgeBlock ? imageSize - position * blockSize : blockSize;
74
- }
75
- /**
76
- * Calculate block dimensions considering edge cases
77
- * @param position Block position
78
- * @param blockSize Standard block size
79
- * @param imageWidth Image width
80
- * @param imageHeight Image height
81
- * @param blockCounts Block counts
82
- * @returns Block dimensions
83
- */
84
- function calculateBlockDimensions(position, blockSize, imageWidth, imageHeight, blockCounts) {
85
- return {
86
- width: calculateActualBlockSize(position.x, blockSize, imageWidth, blockCounts.blockCountX),
87
- height: calculateActualBlockSize(position.y, blockSize, imageHeight, blockCounts.blockCountY),
88
- };
89
- }
90
- /**
91
- * Split an RGBA image buffer into an array of blocks
92
- * @param buffer Source image buffer (RGBA format)
93
- * @param width Image width in pixels
94
- * @param height Image height in pixels
95
- * @param blockSize Block size in pixels
96
- * @returns Array of block buffers
97
- */
98
- export function splitImageToBlocks(buffer, width, height, blockSize) {
99
- const blocks = [];
100
- const blockCounts = calculateBlockCounts(width, height, blockSize);
101
- // Process blocks row by row, left to right
102
- for (let blockY = 0; blockY < blockCounts.blockCountY; blockY++) {
103
- for (let blockX = 0; blockX < blockCounts.blockCountX; blockX++) {
104
- const startX = blockX * blockSize;
105
- const startY = blockY * blockSize;
106
- const block = extractBlock(buffer, width, height, startX, startY, blockSize);
107
- blocks.push(block);
108
- }
109
- }
110
- return blocks;
111
- }
112
- /**
113
- * Reconstruct an RGBA image buffer from an array of blocks
114
- * @param blocks Array of block buffers
115
- * @param width Target image width in pixels
116
- * @param height Target image height in pixels
117
- * @param blockSize Block size in pixels
118
- * @returns Reconstructed image buffer
119
- */
120
- export function blocksToImageBuffer(blocks, width, height, blockSize) {
121
- const imageBuffer = new Uint8Array(width * height * RGBA_CHANNELS);
122
- const blockCounts = calculateBlockCounts(width, height, blockSize);
123
- let blockIndex = 0;
124
- // Place blocks row by row, left to right
125
- for (let blockY = 0; blockY < blockCounts.blockCountY; blockY++) {
126
- for (let blockX = 0; blockX < blockCounts.blockCountX; blockX++) {
127
- if (blockIndex >= blocks.length) {
128
- break;
129
- }
130
- const position = { x: blockX, y: blockY };
131
- const dimensions = calculateBlockDimensions(position, blockSize, width, height, blockCounts);
132
- const destX = blockX * blockSize;
133
- const destY = blockY * blockSize;
134
- placeBlock(imageBuffer, blocks[blockIndex], width, destX, destY, blockSize, dimensions.width, dimensions.height);
135
- blockIndex++;
136
- }
137
- }
138
- return imageBuffer;
139
- }
140
- //# sourceMappingURL=block-operations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"block-operations.js","sourceRoot":"","sources":["../../src/block-operations.ts"],"names":[],"mappings":"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"}
@@ -1,47 +0,0 @@
1
- import type { ImageInfo } from "./types";
2
- /**
3
- * Number of channels in RGBA format
4
- */
5
- export declare const RGBA_CHANNELS = 4;
6
- export interface BlockCounts {
7
- blockCountX: number;
8
- blockCountY: number;
9
- }
10
- /**
11
- * Calculate block counts for width and height
12
- * @param width Image width
13
- * @param height Image height
14
- * @param blockSize Block size
15
- * @returns Object with blockCountX and blockCountY
16
- */
17
- export declare function calculateBlockCounts(width: number, height: number, blockSize: number): BlockCounts;
18
- /**
19
- * Calculate the range of blocks for a specific image index
20
- * @param blockCounts Array of block counts per image
21
- * @param targetIndex Target image index
22
- * @returns Object with start and end indices
23
- */
24
- export declare function calculateBlockRange(blockCounts: number[], targetIndex: number): {
25
- start: number;
26
- end: number;
27
- };
28
- /**
29
- * Calculate how many blocks each fragment should contain for cross-image shuffling
30
- * @param totalBlocks Total number of blocks to distribute
31
- * @param fragmentCount Number of fragments to create
32
- * @returns Array of block counts for each fragment
33
- */
34
- export declare function calculateBlockCountsForCrossImages(totalBlocks: number, fragmentCount: number): number[];
35
- /**
36
- * Calculate block counts for each image
37
- * @param images Array of ImageInfo objects
38
- * @returns Array of block counts per image (x * y)
39
- */
40
- export declare function calculateBlockCountsPerImage(images: ImageInfo[]): number[];
41
- /**
42
- * Calculate total number of blocks from images
43
- * @param images Array of ImageInfo objects
44
- * @returns Total block count
45
- */
46
- export declare function calculateTotalBlocks(images: ImageInfo[]): number;
47
- //# sourceMappingURL=block-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"block-utils.d.ts","sourceRoot":"","sources":["../../src/block-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,WAAW,CAKb;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EAAE,EACrB,WAAW,EAAE,MAAM,GAClB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAOhC;AAED;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAChD,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,GACpB,MAAM,EAAE,CAgCV;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAE1E;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAEhE"}
@@ -1,78 +0,0 @@
1
- /**
2
- * Number of channels in RGBA format
3
- */
4
- export const RGBA_CHANNELS = 4;
5
- /**
6
- * Calculate block counts for width and height
7
- * @param width Image width
8
- * @param height Image height
9
- * @param blockSize Block size
10
- * @returns Object with blockCountX and blockCountY
11
- */
12
- export function calculateBlockCounts(width, height, blockSize) {
13
- return {
14
- blockCountX: Math.ceil(width / blockSize),
15
- blockCountY: Math.ceil(height / blockSize),
16
- };
17
- }
18
- /**
19
- * Calculate the range of blocks for a specific image index
20
- * @param blockCounts Array of block counts per image
21
- * @param targetIndex Target image index
22
- * @returns Object with start and end indices
23
- */
24
- export function calculateBlockRange(blockCounts, targetIndex) {
25
- const start = blockCounts
26
- .slice(0, targetIndex)
27
- .reduce((sum, count) => sum + count, 0);
28
- const end = start + blockCounts[targetIndex];
29
- return { start, end };
30
- }
31
- /**
32
- * Calculate how many blocks each fragment should contain for cross-image shuffling
33
- * @param totalBlocks Total number of blocks to distribute
34
- * @param fragmentCount Number of fragments to create
35
- * @returns Array of block counts for each fragment
36
- */
37
- export function calculateBlockCountsForCrossImages(totalBlocks, fragmentCount) {
38
- if (fragmentCount <= 0) {
39
- throw new Error("Fragment count must be greater than 0");
40
- }
41
- if (totalBlocks <= 0) {
42
- return new Array(fragmentCount).fill(0);
43
- }
44
- const baseBlocksPerFragment = Math.ceil(totalBlocks / fragmentCount);
45
- const fragmentBlockCounts = [];
46
- let remainingBlocks = totalBlocks;
47
- // Distribute blocks, ensuring no fragment gets more blocks than available
48
- for (let i = 0; i < fragmentCount; i++) {
49
- const blocksForThisFragment = Math.min(baseBlocksPerFragment, remainingBlocks);
50
- fragmentBlockCounts.push(blocksForThisFragment);
51
- remainingBlocks -= blocksForThisFragment;
52
- // If no blocks remain, fill remaining fragments with 0
53
- if (remainingBlocks <= 0) {
54
- for (let j = i + 1; j < fragmentCount; j++) {
55
- fragmentBlockCounts.push(0);
56
- }
57
- break;
58
- }
59
- }
60
- return fragmentBlockCounts;
61
- }
62
- /**
63
- * Calculate block counts for each image
64
- * @param images Array of ImageInfo objects
65
- * @returns Array of block counts per image (x * y)
66
- */
67
- export function calculateBlockCountsPerImage(images) {
68
- return images.map((info) => info.x * info.y);
69
- }
70
- /**
71
- * Calculate total number of blocks from images
72
- * @param images Array of ImageInfo objects
73
- * @returns Total block count
74
- */
75
- export function calculateTotalBlocks(images) {
76
- return images.reduce((total, image) => total + image.x * image.y, 0);
77
- }
78
- //# sourceMappingURL=block-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"block-utils.js","sourceRoot":"","sources":["../../src/block-utils.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAO/B;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAa,EACb,MAAc,EACd,SAAiB;IAEjB,OAAO;QACL,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACzC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,WAAqB,EACrB,WAAmB;IAEnB,MAAM,KAAK,GAAG,WAAW;SACtB,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC;SACrB,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IAE7C,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACxB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kCAAkC,CAChD,WAAmB,EACnB,aAAqB;IAErB,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,CAAC;IACrE,MAAM,mBAAmB,GAAa,EAAE,CAAC;IACzC,IAAI,eAAe,GAAG,WAAW,CAAC;IAElC,0EAA0E;IAC1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,CACpC,qBAAqB,EACrB,eAAe,CAChB,CAAC;QACF,mBAAmB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAChD,eAAe,IAAI,qBAAqB,CAAC;QAEzC,uDAAuD;QACvD,IAAI,eAAe,IAAI,CAAC,EAAE,CAAC;YACzB,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,CAAC;YACD,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAAC,MAAmB;IAC9D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAmB;IACtD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvE,CAAC"}
@@ -1,8 +0,0 @@
1
- export declare const MANIFEST_FILE_NAME = "manifest.json";
2
- export declare const DEFAULT_FRAGMENTATION_CONFIG: {
3
- BLOCK_SIZE: number;
4
- PREFIX: string;
5
- PRESERVE_NAME: boolean;
6
- CROSS_IMAGE_SHUFFLE: boolean;
7
- };
8
- //# sourceMappingURL=constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAElD,eAAO,MAAM,4BAA4B;;;;;CAKxC,CAAC"}
@@ -1,8 +0,0 @@
1
- export const MANIFEST_FILE_NAME = "manifest.json";
2
- export const DEFAULT_FRAGMENTATION_CONFIG = {
3
- BLOCK_SIZE: 2,
4
- PREFIX: "img",
5
- PRESERVE_NAME: false,
6
- CROSS_IMAGE_SHUFFLE: false,
7
- };
8
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAElD,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,UAAU,EAAE,CAAC;IACb,MAAM,EAAE,KAAK;IACb,aAAa,EAAE,KAAK;IACpB,mBAAmB,EAAE,KAAK;CAC3B,CAAC"}
@@ -1,45 +0,0 @@
1
- import type { ManifestData } from "./types";
2
- /**
3
- * Encode file name to base64 for safe storage (cross-platform)
4
- * @param name - Original file name
5
- * @returns Base64 encoded file name
6
- */
7
- export declare function encodeFileName(name: string): string;
8
- /**
9
- * Decode file name from base64 (cross-platform)
10
- * @param encodedName - Base64 encoded file name
11
- * @returns Decoded original file name
12
- */
13
- export declare function decodeFileName(encodedName: string): string;
14
- /**
15
- * Generate a file name with prefix, 1-based zero-padded index, and extension
16
- * @param manifest - Manifest data
17
- * @param index - Index number (0-based, but output is 1-based)
18
- * @param options - Options for the file name
19
- * @param options.isFragmented - Whether the fragment is fragmented
20
- * @returns File name (e.g., img_1.png.enc)
21
- */
22
- export declare function generateFileName(manifest: ManifestData, index: number, options?: {
23
- isFragmented: boolean;
24
- }): string;
25
- /**
26
- * Generate a fragment file name
27
- * @param manifest - Manifest data
28
- * @param index - Index number (0-based, but output is 1-based)
29
- * @returns Fragment file name (e.g., img_1_fragmented.png)
30
- */
31
- export declare function generateFragmentFileName(manifest: ManifestData, index: number): string;
32
- /**
33
- * Generate a restored file name
34
- * @param manifest - Manifest data
35
- * @param index - Index number (0-based, but output is 1-based)
36
- * @returns Restored file name (e.g., img_1.png)
37
- */
38
- export declare function generateRestoredFileName(manifest: ManifestData, index: number): string;
39
- /**
40
- * Generate a restored original file name
41
- * @param imageInfo - Image information
42
- * @returns Restored original file name
43
- */
44
- export declare function generateRestoredOriginalFileName(imageInfo: ManifestData["images"][number]): string | undefined;
45
- //# sourceMappingURL=helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYnD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAQ1D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IACP,YAAY,EAAE,OAAO,CAAC;CAGvB,GACA,MAAM,CASR;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,MAAM,GACZ,MAAM,CAIR;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,MAAM,GACZ,MAAM,CAIR;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GACxC,MAAM,GAAG,SAAS,CAWpB"}
@@ -1,93 +0,0 @@
1
- /**
2
- * Encode file name to base64 for safe storage (cross-platform)
3
- * @param name - Original file name
4
- * @returns Base64 encoded file name
5
- */
6
- export function encodeFileName(name) {
7
- // Use TextEncoder for UTF-8 encoding (available in both browser and Node.js)
8
- const encoder = new TextEncoder();
9
- const bytes = encoder.encode(name);
10
- // Convert bytes to binary string for btoa (cross-platform)
11
- // Use loop to avoid stack overflow with large arrays
12
- let binaryString = "";
13
- for (let i = 0; i < bytes.length; i++) {
14
- const byte = bytes[i];
15
- binaryString += String.fromCharCode(byte);
16
- }
17
- return btoa(binaryString);
18
- }
19
- /**
20
- * Decode file name from base64 (cross-platform)
21
- * @param encodedName - Base64 encoded file name
22
- * @returns Decoded original file name
23
- */
24
- export function decodeFileName(encodedName) {
25
- // Use atob for base64 decoding (cross-platform)
26
- const binaryString = atob(encodedName);
27
- // Convert binary string to bytes
28
- const bytes = Uint8Array.from(binaryString, (c) => c.charCodeAt(0));
29
- // Use TextDecoder for UTF-8 decoding (available in both browser and Node.js)
30
- const decoder = new TextDecoder();
31
- return decoder.decode(bytes);
32
- }
33
- /**
34
- * Generate a file name with prefix, 1-based zero-padded index, and extension
35
- * @param manifest - Manifest data
36
- * @param index - Index number (0-based, but output is 1-based)
37
- * @param options - Options for the file name
38
- * @param options.isFragmented - Whether the fragment is fragmented
39
- * @returns File name (e.g., img_1.png.enc)
40
- */
41
- export function generateFileName(manifest, index, options = {
42
- isFragmented: false,
43
- }) {
44
- const prefix = manifest.config.prefix;
45
- const totalLength = manifest.images.length;
46
- const extension = "png";
47
- const numDigits = String(totalLength).length;
48
- const paddedIndex = String(index + 1).padStart(numDigits, "0");
49
- const filenameSuffix = options.isFragmented ? "_fragmented" : "";
50
- const filename = `${prefix}_${paddedIndex}${filenameSuffix}`;
51
- return `${filename}.${extension}`;
52
- }
53
- /**
54
- * Generate a fragment file name
55
- * @param manifest - Manifest data
56
- * @param index - Index number (0-based, but output is 1-based)
57
- * @returns Fragment file name (e.g., img_1_fragmented.png)
58
- */
59
- export function generateFragmentFileName(manifest, index) {
60
- return generateFileName(manifest, index, {
61
- isFragmented: true,
62
- });
63
- }
64
- /**
65
- * Generate a restored file name
66
- * @param manifest - Manifest data
67
- * @param index - Index number (0-based, but output is 1-based)
68
- * @returns Restored file name (e.g., img_1.png)
69
- */
70
- export function generateRestoredFileName(manifest, index) {
71
- return generateFileName(manifest, index, {
72
- isFragmented: false,
73
- });
74
- }
75
- /**
76
- * Generate a restored original file name
77
- * @param imageInfo - Image information
78
- * @returns Restored original file name
79
- */
80
- export function generateRestoredOriginalFileName(imageInfo) {
81
- if (!imageInfo.name) {
82
- return undefined;
83
- }
84
- try {
85
- const decodedName = decodeFileName(imageInfo.name);
86
- return decodedName ? `${decodedName}.png` : undefined;
87
- }
88
- catch {
89
- // Fallback: if decoding fails, treat as already decoded (backward compatibility)
90
- return `${imageInfo.name}.png`;
91
- }
92
- }
93
- //# sourceMappingURL=helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- export * from "./types";
2
- export * from "./constants";
3
- export * from "./helpers";
4
- export * from "./block-utils";
5
- export * from "./block-operations";
6
- export * from "./validators";
7
- export { DEFAULT_FRAGMENTATION_CONFIG } from "./constants";
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAG7B,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC"}
package/dist/esm/index.js DELETED
@@ -1,9 +0,0 @@
1
- export * from "./types";
2
- export * from "./constants";
3
- export * from "./helpers";
4
- export * from "./block-utils";
5
- export * from "./block-operations";
6
- export * from "./validators";
7
- // Re-export constants with old name for backward compatibility
8
- export { DEFAULT_FRAGMENTATION_CONFIG } from "./constants";
9
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAE7B,+DAA+D;AAC/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC"}
@@ -1,65 +0,0 @@
1
- export interface ShuffleOptions {
2
- /** Image paths (e.g., ["image1.png", "image2.png"]) */
3
- imagePaths: string[];
4
- /** Fragmentation config */
5
- config?: FragmentationConfig;
6
- /** Output directory (e.g., "./output/fragments") */
7
- outputDir: string;
8
- }
9
- export interface RestoreOptions {
10
- /** Image paths (e.g., ["fragment1.png", "fragment2.png"]) */
11
- imagePaths: string[];
12
- /** Manifest path (e.g., "./output/fragments/manifest.json") */
13
- manifestPath: string;
14
- /** Output directory (e.g., "./output/restored") */
15
- outputDir: string;
16
- }
17
- export interface FragmentationConfig {
18
- /** Pixel block size (e.g., 10x10 to 10) */
19
- blockSize?: number;
20
- /** Prefix for fragment files (optional, default: "fragment") */
21
- prefix?: string;
22
- /** Random seed (auto-generated if not specified) */
23
- seed?: number | string;
24
- /** Preserve original file name (optional, default: false) */
25
- preserveName?: boolean;
26
- /** Shuffle blocks across all images instead of within each image independently (optional, default: false) */
27
- crossImageShuffle?: boolean;
28
- }
29
- /**
30
- * Information about the image before fragmentation.
31
- * This includes dimensions, channels, and block counts.
32
- */
33
- export interface ImageInfo {
34
- /** Width */
35
- w: number;
36
- /** Height */
37
- h: number;
38
- /** Number of channels */
39
- c: number;
40
- /** Number of blocks X */
41
- x: number;
42
- /** Number of blocks Y */
43
- y: number;
44
- /** Original file name in base64 encoding (optional) */
45
- name?: string;
46
- }
47
- export interface ManifestData {
48
- /** UUID */
49
- id: string;
50
- /** Version */
51
- version: string;
52
- /** Timestamp */
53
- timestamp: string;
54
- /** Config */
55
- config: Required<FragmentationConfig>;
56
- /** Image information */
57
- images: ImageInfo[];
58
- }
59
- export interface FragmentationResult {
60
- /** Manifest data */
61
- manifest: ManifestData;
62
- /** Fragmented images */
63
- fragmentedImages: Buffer[];
64
- }
65
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,uDAAuD;IACvD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,6DAA6D;IAC7D,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,+DAA+D;IAC/D,YAAY,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,6GAA6G;IAC7G,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,YAAY;IACZ,CAAC,EAAE,MAAM,CAAC;IACV,aAAa;IACb,CAAC,EAAE,MAAM,CAAC;IACV,yBAAyB;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,yBAAyB;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,yBAAyB;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW;IACX,EAAE,EAAE,MAAM,CAAC;IACX,cAAc;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa;IACb,MAAM,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IACtC,wBAAwB;IACxB,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,oBAAoB;IACpB,QAAQ,EAAE,YAAY,CAAC;IACvB,wBAAwB;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B"}
package/dist/esm/types.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -1,16 +0,0 @@
1
- import type { ImageInfo, ManifestData } from "./types";
2
- /**
3
- * Validates that the number of fragment images matches the number of images in the manifest
4
- * @param fragmentImages - Array of fragment images (file paths or buffers)
5
- * @param manifest - The manifest data containing image information
6
- * @throws {Error} When the counts don't match
7
- */
8
- export declare function validateFragmentImageCount(fragmentImages: (string | Buffer)[], manifest: ManifestData): void;
9
- /**
10
- * Validates that there are no duplicate file names in the image infos
11
- * @param imageInfos - Array of image information objects
12
- * @param preserveName - Whether name preservation is enabled
13
- * @throws {Error} When duplicate file names are detected
14
- */
15
- export declare function validateFileNames(imageInfos: ImageInfo[], preserveName: boolean): void;
16
- //# sourceMappingURL=validators.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/validators.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvD;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,cAAc,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EACnC,QAAQ,EAAE,YAAY,GACrB,IAAI,CASN;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,SAAS,EAAE,EACvB,YAAY,EAAE,OAAO,GACpB,IAAI,CAuBN"}
@@ -1,44 +0,0 @@
1
- import { decodeFileName } from "./helpers";
2
- /**
3
- * Validates that the number of fragment images matches the number of images in the manifest
4
- * @param fragmentImages - Array of fragment images (file paths or buffers)
5
- * @param manifest - The manifest data containing image information
6
- * @throws {Error} When the counts don't match
7
- */
8
- export function validateFragmentImageCount(fragmentImages, manifest) {
9
- const manifestImageCount = manifest.images.length;
10
- const fragmentImageCount = fragmentImages.length;
11
- if (manifestImageCount !== fragmentImageCount) {
12
- throw new Error(`Fragment image count mismatch: expected ${manifestImageCount} but got ${fragmentImageCount}`);
13
- }
14
- }
15
- /**
16
- * Validates that there are no duplicate file names in the image infos
17
- * @param imageInfos - Array of image information objects
18
- * @param preserveName - Whether name preservation is enabled
19
- * @throws {Error} When duplicate file names are detected
20
- */
21
- export function validateFileNames(imageInfos, preserveName) {
22
- if (!preserveName || imageInfos.length <= 1) {
23
- return;
24
- }
25
- const nameSet = new Set();
26
- for (const info of imageInfos) {
27
- if (info.name !== undefined) {
28
- // Decode base64 to get original name for comparison
29
- let decodedName;
30
- try {
31
- decodedName = decodeFileName(info.name);
32
- }
33
- catch {
34
- // If decoding fails, treat as already decoded (backward compatibility)
35
- decodedName = info.name;
36
- }
37
- if (nameSet.has(decodedName)) {
38
- throw new Error(`Duplicate file name detected: ${decodedName}`);
39
- }
40
- nameSet.add(decodedName);
41
- }
42
- }
43
- }
44
- //# sourceMappingURL=validators.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/validators.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG3C;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CACxC,cAAmC,EACnC,QAAsB;IAEtB,MAAM,kBAAkB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IAClD,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAAC;IAEjD,IAAI,kBAAkB,KAAK,kBAAkB,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,2CAA2C,kBAAkB,YAAY,kBAAkB,EAAE,CAC9F,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAAuB,EACvB,YAAqB;IAErB,IAAI,CAAC,YAAY,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,oDAAoD;YACpD,IAAI,WAAmB,CAAC;YACxB,IAAI,CAAC;gBACH,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC;YAAC,MAAM,CAAC;gBACP,uEAAuE;gBACvE,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;YAC1B,CAAC;YACD,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,iCAAiC,WAAW,EAAE,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;AACH,CAAC"}