@pixzle/node 0.0.13 → 0.0.15
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.
- package/dist/cjs/block.d.ts +71 -0
- package/dist/cjs/block.d.ts.map +1 -0
- package/dist/cjs/block.js +158 -0
- package/dist/cjs/block.js.map +1 -0
- package/dist/cjs/constants.d.ts +2 -0
- package/dist/cjs/constants.d.ts.map +1 -0
- package/dist/cjs/constants.js +6 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/file.d.ts +33 -0
- package/dist/cjs/file.d.ts.map +1 -0
- package/dist/cjs/file.js +57 -0
- package/dist/cjs/file.js.map +1 -0
- package/dist/cjs/fragmenter.d.ts +14 -0
- package/dist/cjs/fragmenter.d.ts.map +1 -0
- package/dist/cjs/fragmenter.js +95 -0
- package/dist/cjs/fragmenter.js.map +1 -0
- package/dist/cjs/index.d.ts +12 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +59 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/restorer.d.ts +10 -0
- package/dist/cjs/restorer.d.ts.map +1 -0
- package/dist/cjs/restorer.js +54 -0
- package/dist/cjs/restorer.js.map +1 -0
- package/dist/cjs/utils.d.ts +6 -0
- package/dist/cjs/utils.d.ts.map +1 -0
- package/dist/cjs/utils.js +15 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/esm/block.d.ts +71 -0
- package/dist/esm/block.d.ts.map +1 -0
- package/dist/esm/block.js +149 -0
- package/dist/esm/block.js.map +1 -0
- package/dist/esm/constants.d.ts +2 -0
- package/dist/esm/constants.d.ts.map +1 -0
- package/dist/esm/constants.js +3 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/file.d.ts +33 -0
- package/dist/esm/file.d.ts.map +1 -0
- package/dist/esm/file.js +47 -0
- package/dist/esm/file.js.map +1 -0
- package/dist/esm/fragmenter.d.ts +14 -0
- package/dist/esm/fragmenter.d.ts.map +1 -0
- package/dist/esm/fragmenter.js +91 -0
- package/dist/esm/fragmenter.js.map +1 -0
- package/dist/esm/index.d.ts +12 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +55 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +53 -0
- package/dist/esm/restorer.d.ts +10 -0
- package/dist/esm/restorer.d.ts.map +1 -0
- package/dist/esm/restorer.js +50 -0
- package/dist/esm/restorer.js.map +1 -0
- package/dist/esm/utils.d.ts +6 -0
- package/dist/esm/utils.d.ts.map +1 -0
- package/dist/esm/utils.js +9 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/package.json +54 -0
- package/package.json +21 -5
|
@@ -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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
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 {
|
|
6
|
+
async restoreImages(fragments, manifest) {
|
|
7
|
+
const { blocks, blockCountsPerImage } = await this._prepareData(fragments, manifest);
|
|
8
|
+
const restored = manifest.config.crossImageShuffle
|
|
9
|
+
? unshuffle(blocks, manifest.config.seed)
|
|
10
|
+
: blocksPerImage(blocks, blockCountsPerImage, manifest.config.seed, unshuffle);
|
|
11
|
+
return await this._reconstructImages(restored, manifest);
|
|
12
|
+
}
|
|
13
|
+
async _reconstructImages(blocks, manifest) {
|
|
14
|
+
const blockCountsPerImage = calculateBlockCountsPerImage(manifest.images);
|
|
15
|
+
return await Promise.all(manifest.images.map(async (imageInfo, index) => {
|
|
16
|
+
const { start, end } = calculateBlockRange(blockCountsPerImage, index);
|
|
17
|
+
const imageBlocks = blocks.slice(start, end);
|
|
18
|
+
return await this._createImage(imageBlocks, manifest.config.blockSize, imageInfo);
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
21
|
+
async _prepareData(fragments, manifest) {
|
|
22
|
+
const totalBlocks = calculateTotalBlocks(manifest.images);
|
|
23
|
+
const blockCountsForCrossImages = calculateBlockCountsForCrossImages(totalBlocks, fragments.length);
|
|
24
|
+
// Calculate actual block counts per image for per-image unshuffle
|
|
25
|
+
const blockCountsPerImage = calculateBlockCountsPerImage(manifest.images);
|
|
26
|
+
// Use blockCountsPerImage when crossImageShuffle is false
|
|
27
|
+
const blockCounts = manifest.config.crossImageShuffle
|
|
28
|
+
? blockCountsForCrossImages
|
|
29
|
+
: blockCountsPerImage;
|
|
30
|
+
const blocks = await this._readBlocks(fragments, manifest, blockCounts);
|
|
31
|
+
return { blocks, blockCountsPerImage };
|
|
32
|
+
}
|
|
33
|
+
// Extract an array of blocks (Buffer) from a fragment image
|
|
34
|
+
async _readBlocksFromFragment(fragment, manifest, expectedCount) {
|
|
35
|
+
const buffer = Buffer.isBuffer(fragment)
|
|
36
|
+
? fragment
|
|
37
|
+
: await readFileBuffer(fragment);
|
|
38
|
+
const { blocks } = await imageFileToBlocks(buffer, manifest.config.blockSize);
|
|
39
|
+
return blocks.slice(0, expectedCount);
|
|
40
|
+
}
|
|
41
|
+
async _readBlocks(fragments, manifest, blockCounts) {
|
|
42
|
+
const blockGroups = await Promise.all(fragments.map((fragment, i) => this._readBlocksFromFragment(fragment, manifest, blockCounts[i])));
|
|
43
|
+
return blockGroups.flat();
|
|
44
|
+
}
|
|
45
|
+
async _createImage(blocks, blockSize, imageInfo) {
|
|
46
|
+
const { w, h } = imageInfo;
|
|
47
|
+
return await blocksToPngImage(blocks, w, h, blockSize);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=restorer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restorer.js","sourceRoot":"","sources":["../../src/restorer.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pixzle/node",
|
|
3
|
+
"version": "0.0.14",
|
|
4
|
+
"description": "Node.js implementation of image fragmentation and restoration",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/cjs/index.js",
|
|
7
|
+
"module": "dist/esm/index.js",
|
|
8
|
+
"types": "dist/esm/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": {
|
|
12
|
+
"types": "./dist/esm/index.d.ts",
|
|
13
|
+
"default": "./dist/esm/index.js"
|
|
14
|
+
},
|
|
15
|
+
"require": {
|
|
16
|
+
"types": "./dist/cjs/index.d.ts",
|
|
17
|
+
"default": "./dist/cjs/index.js"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"dist"
|
|
23
|
+
],
|
|
24
|
+
"scripts": {
|
|
25
|
+
"build": "pnpm run build:copy && pnpm run build:esm && pnpm run build:cjs",
|
|
26
|
+
"build:copy": "cp package.json dist/",
|
|
27
|
+
"build:esm": "tsc -p tsconfig.build.json --outDir dist/esm --module ESNext --moduleResolution bundler",
|
|
28
|
+
"build:cjs": "tsc -p tsconfig.build.json --outDir dist/cjs --module CommonJS --moduleResolution node && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json",
|
|
29
|
+
"build:check": "tsc -p tsconfig.build.json --noEmit",
|
|
30
|
+
"test": "vitest"
|
|
31
|
+
},
|
|
32
|
+
"keywords": [],
|
|
33
|
+
"author": "tuki0918",
|
|
34
|
+
"repository": {
|
|
35
|
+
"type": "git",
|
|
36
|
+
"url": "https://github.com/tuki0918/pixzle.git",
|
|
37
|
+
"directory": "packages/node"
|
|
38
|
+
},
|
|
39
|
+
"license": "MIT",
|
|
40
|
+
"publishConfig": {
|
|
41
|
+
"access": "public"
|
|
42
|
+
},
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"@pixzle/core": "workspace:*",
|
|
45
|
+
"@tuki0918/seeded-shuffle": "^1.0.0",
|
|
46
|
+
"jimp": "^1.6.0"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@types/node": "^22.10.2",
|
|
50
|
+
"@types/pngjs": "^6.0.5",
|
|
51
|
+
"typescript": "^5.7.2",
|
|
52
|
+
"vitest": "^3.1.4"
|
|
53
|
+
}
|
|
54
|
+
}
|
package/package.json
CHANGED
|
@@ -1,9 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pixzle/node",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.15",
|
|
4
4
|
"description": "Node.js implementation of image fragmentation and restoration",
|
|
5
|
-
"
|
|
6
|
-
"
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/cjs/index.js",
|
|
7
|
+
"module": "dist/esm/index.js",
|
|
8
|
+
"types": "dist/esm/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": {
|
|
12
|
+
"types": "./dist/esm/index.d.ts",
|
|
13
|
+
"default": "./dist/esm/index.js"
|
|
14
|
+
},
|
|
15
|
+
"require": {
|
|
16
|
+
"types": "./dist/cjs/index.d.ts",
|
|
17
|
+
"default": "./dist/cjs/index.js"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
},
|
|
7
21
|
"files": [
|
|
8
22
|
"dist"
|
|
9
23
|
],
|
|
@@ -21,7 +35,7 @@
|
|
|
21
35
|
"dependencies": {
|
|
22
36
|
"@tuki0918/seeded-shuffle": "^1.0.0",
|
|
23
37
|
"jimp": "^1.6.0",
|
|
24
|
-
"@pixzle/core": "0.0.
|
|
38
|
+
"@pixzle/core": "0.0.15"
|
|
25
39
|
},
|
|
26
40
|
"devDependencies": {
|
|
27
41
|
"@types/node": "^22.10.2",
|
|
@@ -30,7 +44,9 @@
|
|
|
30
44
|
"vitest": "^3.1.4"
|
|
31
45
|
},
|
|
32
46
|
"scripts": {
|
|
33
|
-
"build": "
|
|
47
|
+
"build": "pnpm run build:esm && pnpm run build:cjs",
|
|
48
|
+
"build:esm": "tsc -p tsconfig.build.json --outDir dist/esm --module ES2022 --moduleResolution bundler",
|
|
49
|
+
"build:cjs": "tsc -p tsconfig.build.json --outDir dist/cjs --module CommonJS --moduleResolution node && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json",
|
|
34
50
|
"build:check": "tsc -p tsconfig.build.json --noEmit",
|
|
35
51
|
"test": "vitest"
|
|
36
52
|
}
|