ba-memorial-lobby-wallpaper-toolkit 0.3.0 → 0.4.0
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/asset-preparation.d.ts +20 -0
- package/dist/asset-preparation.d.ts.map +1 -0
- package/dist/asset-preparation.js +58 -0
- package/dist/asset-preparation.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare function sha256(bytes: Uint8Array): string;
|
|
2
|
+
export interface VerifiedCopyOptions {
|
|
3
|
+
source: string;
|
|
4
|
+
target: string;
|
|
5
|
+
expectedHash?: string;
|
|
6
|
+
checksums?: ReadonlyMap<string, string>;
|
|
7
|
+
checksumKey?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function parseChecksumManifest(content: string, source?: string): Map<string, string>;
|
|
10
|
+
export declare function copyVerifiedFile(options: VerifiedCopyOptions): Promise<Buffer>;
|
|
11
|
+
export interface UpscaledPngOptions {
|
|
12
|
+
source: string;
|
|
13
|
+
original: string;
|
|
14
|
+
target: string;
|
|
15
|
+
scale: number;
|
|
16
|
+
}
|
|
17
|
+
export declare function copyValidatedUpscaledPng(options: UpscaledPngOptions): Promise<void>;
|
|
18
|
+
export declare function writeScaledAtlasFile(source: string, target: string, scale: number): Promise<void>;
|
|
19
|
+
export declare function copyRuntimeFile(source: string, target: string, stripSourceMap?: boolean): Promise<void>;
|
|
20
|
+
//# sourceMappingURL=asset-preparation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-preparation.d.ts","sourceRoot":"","sources":["../src/asset-preparation.ts"],"names":[],"mappings":"AAIA,wBAAgB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEhD;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAsB,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxG;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CASpF;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CASzF;AAED,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIvG;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAK3G"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { copyFile, mkdir, readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
export function sha256(bytes) {
|
|
5
|
+
return createHash("sha256").update(bytes).digest("hex");
|
|
6
|
+
}
|
|
7
|
+
export function parseChecksumManifest(content, source = "checksum manifest") {
|
|
8
|
+
const manifest = new Map();
|
|
9
|
+
for (const line of content.trim().split(/\r?\n/).filter(Boolean)) {
|
|
10
|
+
const match = /^([a-f0-9]{64})\s{2}(.+)$/.exec(line);
|
|
11
|
+
if (!match)
|
|
12
|
+
throw new Error(`Invalid checksum line in ${source}: ${line}`);
|
|
13
|
+
manifest.set(match[2].replace(/\//g, path.sep), match[1]);
|
|
14
|
+
}
|
|
15
|
+
return manifest;
|
|
16
|
+
}
|
|
17
|
+
export async function copyVerifiedFile(options) {
|
|
18
|
+
const bytes = await readFile(options.source);
|
|
19
|
+
const expectedHash = options.expectedHash ?? (options.checksumKey ? options.checksums?.get(options.checksumKey) : undefined);
|
|
20
|
+
if (!expectedHash)
|
|
21
|
+
throw new Error(`No pinned checksum for ${options.checksumKey ?? options.source}`);
|
|
22
|
+
const actualHash = sha256(bytes);
|
|
23
|
+
if (actualHash !== expectedHash)
|
|
24
|
+
throw new Error(`${options.checksumKey ?? options.source} failed SHA-256 verification: ${actualHash}`);
|
|
25
|
+
await mkdir(path.dirname(options.target), { recursive: true });
|
|
26
|
+
await copyFile(options.source, options.target);
|
|
27
|
+
return bytes;
|
|
28
|
+
}
|
|
29
|
+
export async function copyValidatedUpscaledPng(options) {
|
|
30
|
+
const [upscaled, original] = await Promise.all([readFile(options.source), readFile(options.original)]);
|
|
31
|
+
const dimensions = pngDimensions(upscaled, options.source);
|
|
32
|
+
const originalDimensions = pngDimensions(original, options.original);
|
|
33
|
+
if (dimensions.width !== originalDimensions.width * options.scale || dimensions.height !== originalDimensions.height * options.scale || dimensions.colorType !== 6) {
|
|
34
|
+
throw new Error(`${options.source} is not a ${options.scale}x RGBA upscale of ${options.original}: ${dimensions.width}x${dimensions.height}, color type ${dimensions.colorType}`);
|
|
35
|
+
}
|
|
36
|
+
await mkdir(path.dirname(options.target), { recursive: true });
|
|
37
|
+
await copyFile(options.source, options.target);
|
|
38
|
+
}
|
|
39
|
+
export async function writeScaledAtlasFile(source, target, scale) {
|
|
40
|
+
const atlasText = await readFile(source, "utf8");
|
|
41
|
+
await mkdir(path.dirname(target), { recursive: true });
|
|
42
|
+
await writeFile(target, scaleAtlas(atlasText, scale), "utf8");
|
|
43
|
+
}
|
|
44
|
+
export async function copyRuntimeFile(source, target, stripSourceMap = false) {
|
|
45
|
+
const bytes = await readFile(source);
|
|
46
|
+
const content = stripSourceMap ? bytes.toString("utf8").replace(/^\/\/# sourceMappingURL=.*\r?\n?/gm, "") : bytes;
|
|
47
|
+
await mkdir(path.dirname(target), { recursive: true });
|
|
48
|
+
await writeFile(target, content);
|
|
49
|
+
}
|
|
50
|
+
function pngDimensions(bytes, source) {
|
|
51
|
+
if (bytes.subarray(1, 4).toString("ascii") !== "PNG")
|
|
52
|
+
throw new Error(`Invalid PNG file: ${source}`);
|
|
53
|
+
return { width: bytes.readUInt32BE(16), height: bytes.readUInt32BE(20), colorType: bytes[25] };
|
|
54
|
+
}
|
|
55
|
+
function scaleAtlas(atlasText, scale) {
|
|
56
|
+
return atlasText.replace(/^(\s*)(size|xy|orig|offset):\s*(\d+),\s*(\d+)\s*$/gm, (_, indent, key, first, second) => `${indent}${key}: ${Number(first) * scale}, ${Number(second) * scale}`);
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=asset-preparation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-preparation.js","sourceRoot":"","sources":["../src/asset-preparation.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC"}
|