ba-memorial-lobby-wallpaper-toolkit 0.1.0 → 0.2.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/index.d.ts CHANGED
@@ -1,5 +1,8 @@
1
1
  export * from "./checksums.js";
2
2
  export * from "./distribution-validation.js";
3
+ export * from "./model-assets.js";
4
+ export * from "./model-assets.js";
3
5
  export * from "./offline-package.js";
6
+ export * from "./template-initialization.js";
4
7
  export * from "./vite/index.js";
5
8
  //# sourceMappingURL=index.d.ts.map
@@ -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,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
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,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,8 @@
1
1
  export * from "./checksums.js";
2
2
  export * from "./distribution-validation.js";
3
+ export * from "./model-assets.js";
4
+ export * from "./model-assets.js";
3
5
  export * from "./offline-package.js";
6
+ export * from "./template-initialization.js";
4
7
  export * from "./vite/index.js";
5
8
  //# sourceMappingURL=index.js.map
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,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
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,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,29 @@
1
+ export declare const MODEL_TIER_SCALES: {
2
+ readonly "4k": 2;
3
+ readonly "8k": 4;
4
+ };
5
+ export interface WallpaperModelDefinition {
6
+ binary: string;
7
+ atlases: Readonly<Record<string, string>>;
8
+ }
9
+ export interface GenerateModelTextureOptions {
10
+ projectRoot: string;
11
+ model: WallpaperModelDefinition;
12
+ executablePath?: string;
13
+ modelPath?: string;
14
+ sourceDirectory?: string;
15
+ outputDirectory?: string;
16
+ tierScales?: Readonly<Record<string, number>>;
17
+ }
18
+ export declare function atlasPages(atlasText: string, source?: string): string[];
19
+ export declare function scaleAtlas(atlasText: string, scale: number): string;
20
+ export declare function pngDimensions(bytes: Buffer, source?: string): {
21
+ width: number;
22
+ height: number;
23
+ colorType: number;
24
+ };
25
+ export declare function generateModelTextures(options: GenerateModelTextureOptions): Promise<{
26
+ pages: string[];
27
+ tiers: string[];
28
+ }>;
29
+ //# sourceMappingURL=model-assets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-assets.d.ts","sourceRoot":"","sources":["../src/model-assets.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,iBAAiB;aAAK,IAAI,EAAE,CAAC;aAAE,IAAI,EAAE,CAAC;CAAW,CAAC;AAC/D,MAAM,WAAW,wBAAwB;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAAE;AACxG,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,wBAAwB,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC/C;AACD,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,SAAU,GAAG,MAAM,EAAE,CAUxE;AACD,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnE;AACD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,SAAQ,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAGjH;AAQD,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAoB/H"}
@@ -0,0 +1,57 @@
1
+ import { spawn } from "node:child_process";
2
+ import { mkdir, readFile } from "node:fs/promises";
3
+ import path from "node:path";
4
+ export const MODEL_TIER_SCALES = { "4k": 2, "8k": 4 };
5
+ export function atlasPages(atlasText, source = "atlas") {
6
+ const pages = [];
7
+ const lines = atlasText.split(/\r?\n/);
8
+ for (let index = 0; index < lines.length; index += 1) {
9
+ const line = lines[index].trim();
10
+ if (!line || line.includes(":"))
11
+ continue;
12
+ if ((lines[index + 1]?.trim() ?? "").startsWith("size:"))
13
+ pages.push(line);
14
+ }
15
+ if (pages.length === 0)
16
+ throw new Error(`No texture pages found in ${source}`);
17
+ return pages;
18
+ }
19
+ export function scaleAtlas(atlasText, scale) {
20
+ 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}`);
21
+ }
22
+ export function pngDimensions(bytes, source = "PNG") {
23
+ if (bytes.subarray(1, 4).toString("ascii") !== "PNG")
24
+ throw new Error(`Invalid PNG file: ${source}`);
25
+ return { width: bytes.readUInt32BE(16), height: bytes.readUInt32BE(20), colorType: bytes[25] };
26
+ }
27
+ function run(executablePath, arguments_) {
28
+ return new Promise((resolve, reject) => {
29
+ const child = spawn(executablePath, arguments_, { stdio: "inherit" });
30
+ child.once("error", reject);
31
+ child.once("exit", (code) => code === 0 ? resolve() : reject(new Error(`Real-CUGAN exited with code ${code}`)));
32
+ });
33
+ }
34
+ export async function generateModelTextures(options) {
35
+ const projectRoot = path.resolve(options.projectRoot);
36
+ const toolDirectory = path.join(projectRoot, ".cache", "realcugan", "tool", "realcugan-ncnn-vulkan-20220728-windows");
37
+ const executablePath = options.executablePath ?? process.env.REALCUGAN_PATH ?? path.join(toolDirectory, "realcugan-ncnn-vulkan.exe");
38
+ const modelPath = options.modelPath ?? process.env.REALCUGAN_MODEL_PATH ?? path.join(toolDirectory, "models-se");
39
+ const sourceDirectory = options.sourceDirectory ?? path.join(projectRoot, "local-assets", "original", "model");
40
+ const outputDirectory = options.outputDirectory ?? path.join(projectRoot, "generated-assets");
41
+ const tierScales = options.tierScales ?? MODEL_TIER_SCALES;
42
+ const baseName = path.posix.basename(options.model.binary).replace(/\.(skel|json)$/, "");
43
+ const atlasPath = path.join(sourceDirectory, `${baseName}.atlas`);
44
+ const pages = atlasPages(await readFile(atlasPath, "utf8"), atlasPath);
45
+ const tiers = [];
46
+ for (const [tier, scale] of Object.entries(tierScales)) {
47
+ if (!Object.prototype.hasOwnProperty.call(options.model.atlases, tier))
48
+ continue;
49
+ tiers.push(tier);
50
+ const tierOutputDirectory = path.join(outputDirectory, `model-${tier}`);
51
+ await mkdir(tierOutputDirectory, { recursive: true });
52
+ for (const page of pages)
53
+ await run(executablePath, ["-i", path.join(sourceDirectory, page), "-o", path.join(tierOutputDirectory, page), "-s", String(scale), "-n", "-1", "-m", modelPath]);
54
+ }
55
+ return { pages, tiers };
56
+ }
57
+ //# sourceMappingURL=model-assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-assets.js","sourceRoot":"","sources":["../src/model-assets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export interface TemplateReplacement {
2
+ path: string;
3
+ search: string;
4
+ replace: string;
5
+ expectedCount?: number;
6
+ }
7
+ export interface InitializeTemplateOptions {
8
+ templateDirectory: string;
9
+ targetDirectory: string;
10
+ replacements?: TemplateReplacement[];
11
+ resourceInventory?: unknown;
12
+ }
13
+ export interface InitializeTemplateResult {
14
+ copiedFiles: string[];
15
+ replacedFiles: string[];
16
+ resourceInventoryPath: string | null;
17
+ }
18
+ export declare function initializeTemplate(options: InitializeTemplateOptions): Promise<InitializeTemplateResult>;
19
+ //# sourceMappingURL=template-initialization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-initialization.d.ts","sourceRoot":"","sources":["../src/template-initialization.ts"],"names":[],"mappings":"AA8BA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,yBAAyB;IACxC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACrC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAgC9G"}
@@ -0,0 +1,66 @@
1
+ import { access, mkdir, readdir, readFile, writeFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { execFile, execFileSync } from "node:child_process";
4
+ import { promisify } from "node:util";
5
+ const execFileAsync = promisify(execFile);
6
+ async function exists(target) {
7
+ try {
8
+ await access(target);
9
+ return true;
10
+ }
11
+ catch {
12
+ return false;
13
+ }
14
+ }
15
+ async function trackedFiles(templateDirectory) {
16
+ const { stdout } = await execFileAsync("git", ["-C", templateDirectory, "ls-files", "-z"], { encoding: "utf8", windowsHide: true });
17
+ return stdout.split("\0").filter(Boolean).sort();
18
+ }
19
+ async function copyTrackedFile(templateDirectory, relative, target) {
20
+ await mkdir(path.dirname(target), { recursive: true });
21
+ const content = execFileSync("git", ["-C", templateDirectory, "show", `HEAD:${relative}`], { windowsHide: true });
22
+ await writeFile(target, content);
23
+ }
24
+ async function ensureEmptyTarget(targetDirectory) {
25
+ if (!await exists(targetDirectory))
26
+ return;
27
+ const entries = await readdir(targetDirectory, { withFileTypes: true });
28
+ const unexpected = entries.filter((entry) => entry.name !== ".git");
29
+ if (unexpected.length > 0)
30
+ throw new Error("template_initialization_target_not_empty");
31
+ if (!await exists(path.join(targetDirectory, ".git")))
32
+ throw new Error("template_initialization_target_not_git_repository");
33
+ }
34
+ export async function initializeTemplate(options) {
35
+ const templateDirectory = path.resolve(options.templateDirectory);
36
+ const targetDirectory = path.resolve(options.targetDirectory);
37
+ const files = await trackedFiles(templateDirectory);
38
+ if (files.length === 0)
39
+ throw new Error("template_initialization_source_not_git_managed");
40
+ await ensureEmptyTarget(targetDirectory);
41
+ await mkdir(targetDirectory, { recursive: true });
42
+ for (const relative of files) {
43
+ await copyTrackedFile(templateDirectory, relative, path.join(targetDirectory, relative));
44
+ }
45
+ const replacements = options.replacements ?? [];
46
+ const replacedFiles = new Set();
47
+ for (const replacement of replacements) {
48
+ const target = path.join(targetDirectory, replacement.path);
49
+ const current = await readFile(target, "utf8");
50
+ const count = current.split(replacement.search).length - 1;
51
+ const expectedCount = replacement.expectedCount ?? 1;
52
+ if (count !== expectedCount)
53
+ throw new Error(`template_initialization_replacement_count:${replacement.path}:${count}:${expectedCount}`);
54
+ await writeFile(target, current.split(replacement.search).join(replacement.replace), "utf8");
55
+ replacedFiles.add(replacement.path);
56
+ }
57
+ let resourceInventoryPath = null;
58
+ if (options.resourceInventory !== undefined) {
59
+ resourceInventoryPath = "research/RESOURCE-INVENTORY.json";
60
+ const target = path.join(targetDirectory, resourceInventoryPath);
61
+ await mkdir(path.dirname(target), { recursive: true });
62
+ await writeFile(target, `${JSON.stringify(options.resourceInventory, null, 2)}\n`, "utf8");
63
+ }
64
+ return { copiedFiles: files, replacedFiles: [...replacedFiles].sort(), resourceInventoryPath };
65
+ }
66
+ //# sourceMappingURL=template-initialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-initialization.js","sourceRoot":"","sources":["../src/template-initialization.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export { createMemorialLobbyVitePlugins } from "./plugins.js";
2
2
  export type { MemorialLobbyVitePluginOptions } from "./plugins.js";
3
+ export * from "./project-config.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vite/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAC9D,YAAY,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vite/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAC9D,YAAY,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AACnE,cAAc,qBAAqB,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export { createMemorialLobbyVitePlugins } from "./plugins.js";
2
+ export * from "./project-config.js";
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vite/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vite/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAE9D,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function loadWallpaperConfig(projectRoot: string): Promise<{
2
+ config: Record<string, unknown>;
3
+ close: () => Promise<void>;
4
+ }>;
5
+ //# sourceMappingURL=project-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../../src/vite/project-config.ts"],"names":[],"mappings":"AAEA,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAMvI"}
@@ -0,0 +1,13 @@
1
+ import { createServer } from "vite";
2
+ export async function loadWallpaperConfig(projectRoot) {
3
+ const server = await createServer({ root: projectRoot, appType: "custom", logLevel: "silent", server: { middlewareMode: true } });
4
+ try {
5
+ const config = await server.ssrLoadModule("/src/config.ts");
6
+ return { config, close: async () => server.close() };
7
+ }
8
+ catch (error) {
9
+ await server.close();
10
+ throw error;
11
+ }
12
+ }
13
+ //# sourceMappingURL=project-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-config.js","sourceRoot":"","sources":["../../src/vite/project-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,WAAmB;IAC3D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAClI,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAA4B,CAAC;QACvF,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAAC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QAAC,MAAM,KAAK,CAAC;IAAC,CAAC;AACxD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ba-memorial-lobby-wallpaper-toolkit",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist",