@debuffjp/cli 0.0.0-stage → 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.
Files changed (90) hide show
  1. package/README.md +86 -2
  2. package/aseprite/new-font.lua +31 -0
  3. package/bin/debuff.js +3 -0
  4. package/client.d.ts +3 -0
  5. package/dist/agent-link.d.ts +28 -0
  6. package/dist/agent-link.d.ts.map +1 -0
  7. package/dist/agent-link.js +122 -0
  8. package/dist/agent-link.js.map +1 -0
  9. package/dist/assets/aseprite.d.ts +29 -0
  10. package/dist/assets/aseprite.d.ts.map +1 -0
  11. package/dist/assets/aseprite.js +107 -0
  12. package/dist/assets/aseprite.js.map +1 -0
  13. package/dist/assets/atlas.d.ts +58 -0
  14. package/dist/assets/atlas.d.ts.map +1 -0
  15. package/dist/assets/atlas.js +164 -0
  16. package/dist/assets/atlas.js.map +1 -0
  17. package/dist/assets/builtin.d.ts +5 -0
  18. package/dist/assets/builtin.d.ts.map +1 -0
  19. package/dist/assets/builtin.js +47 -0
  20. package/dist/assets/builtin.js.map +1 -0
  21. package/dist/assets/command.d.ts +4 -0
  22. package/dist/assets/command.d.ts.map +1 -0
  23. package/dist/assets/command.js +35 -0
  24. package/dist/assets/command.js.map +1 -0
  25. package/dist/assets/compile.d.ts +29 -0
  26. package/dist/assets/compile.d.ts.map +1 -0
  27. package/dist/assets/compile.js +209 -0
  28. package/dist/assets/compile.js.map +1 -0
  29. package/dist/assets/index.d.ts +6 -0
  30. package/dist/assets/index.d.ts.map +1 -0
  31. package/dist/assets/index.js +6 -0
  32. package/dist/assets/index.js.map +1 -0
  33. package/dist/cli.d.ts +3 -0
  34. package/dist/cli.d.ts.map +1 -0
  35. package/dist/cli.js +257 -0
  36. package/dist/cli.js.map +1 -0
  37. package/dist/config.d.ts +24 -0
  38. package/dist/config.d.ts.map +1 -0
  39. package/dist/config.js +53 -0
  40. package/dist/config.js.map +1 -0
  41. package/dist/fuzz.d.ts +43 -0
  42. package/dist/fuzz.d.ts.map +1 -0
  43. package/dist/fuzz.js +229 -0
  44. package/dist/fuzz.js.map +1 -0
  45. package/dist/index.d.ts +12 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +11 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/inspect.d.ts +35 -0
  50. package/dist/inspect.d.ts.map +1 -0
  51. package/dist/inspect.js +37 -0
  52. package/dist/inspect.js.map +1 -0
  53. package/dist/plugin.d.ts +146 -0
  54. package/dist/plugin.d.ts.map +1 -0
  55. package/dist/plugin.js +2 -0
  56. package/dist/plugin.js.map +1 -0
  57. package/dist/report.d.ts +26 -0
  58. package/dist/report.d.ts.map +1 -0
  59. package/dist/report.js +80 -0
  60. package/dist/report.js.map +1 -0
  61. package/dist/scenario/browser.d.ts +12 -0
  62. package/dist/scenario/browser.d.ts.map +1 -0
  63. package/dist/scenario/browser.js +59 -0
  64. package/dist/scenario/browser.js.map +1 -0
  65. package/dist/scenario/index.d.ts +5 -0
  66. package/dist/scenario/index.d.ts.map +1 -0
  67. package/dist/scenario/index.js +4 -0
  68. package/dist/scenario/index.js.map +1 -0
  69. package/dist/scenario/run.d.ts +14 -0
  70. package/dist/scenario/run.d.ts.map +1 -0
  71. package/dist/scenario/run.js +255 -0
  72. package/dist/scenario/run.js.map +1 -0
  73. package/dist/scenario/schema.d.ts +8 -0
  74. package/dist/scenario/schema.d.ts.map +1 -0
  75. package/dist/scenario/schema.js +23 -0
  76. package/dist/scenario/schema.js.map +1 -0
  77. package/dist/scenario/types.d.ts +103 -0
  78. package/dist/scenario/types.d.ts.map +1 -0
  79. package/dist/scenario/types.js +2 -0
  80. package/dist/scenario/types.js.map +1 -0
  81. package/dist/vite-plugin.d.ts +18 -0
  82. package/dist/vite-plugin.d.ts.map +1 -0
  83. package/dist/vite-plugin.js +122 -0
  84. package/dist/vite-plugin.js.map +1 -0
  85. package/dist/vite.d.ts +13 -0
  86. package/dist/vite.d.ts.map +1 -0
  87. package/dist/vite.js +25 -0
  88. package/dist/vite.js.map +1 -0
  89. package/package.json +71 -4
  90. package/schema/scenario.schema.json +120 -0
@@ -0,0 +1,164 @@
1
+ import { convertIndexedToRgb, decode, encode } from "fast-png";
2
+ /**
3
+ * MaxRects bin packing (best-short-side-fit). Inputs are sorted largest-first; anything that doesn't
4
+ * fit opens a new bin. Bins are cropped to their used area (rounded up to a multiple of 4).
5
+ * Throws if a single item can't fit in an empty bin.
6
+ */
7
+ export function packRects(sizes, maxSize, gap) {
8
+ const order = sizes
9
+ .map((_, i) => i)
10
+ .sort((a, b) => Math.max(sizes[b]?.w ?? 0, sizes[b]?.h ?? 0) - Math.max(sizes[a]?.w ?? 0, sizes[a]?.h ?? 0));
11
+ const bins = [];
12
+ for (const index of order) {
13
+ const size = sizes[index];
14
+ if (!size)
15
+ continue;
16
+ const w = size.w + gap;
17
+ const h = size.h + gap;
18
+ if (w > maxSize || h > maxSize)
19
+ throw new Error(`An image of ${size.w}×${size.h} can't fit a ${maxSize}px atlas`);
20
+ let placed = false;
21
+ for (const bin of bins) {
22
+ const spot = findSpot(bin.free, w, h);
23
+ if (!spot)
24
+ continue;
25
+ place(bin, index, spot, w, h);
26
+ placed = true;
27
+ break;
28
+ }
29
+ if (!placed) {
30
+ const bin = { free: [{ x: 0, y: 0, w: maxSize, h: maxSize }], items: new Map(), usedW: 0, usedH: 0 };
31
+ const spot = findSpot(bin.free, w, h);
32
+ if (!spot)
33
+ throw new Error("unreachable: empty bin rejected an item that fits");
34
+ place(bin, index, spot, w, h);
35
+ bins.push(bin);
36
+ }
37
+ }
38
+ const up4 = (n) => Math.ceil(n / 4) * 4;
39
+ return bins.map((b) => ({ width: Math.min(maxSize, up4(b.usedW)), height: Math.min(maxSize, up4(b.usedH)), items: b.items }));
40
+ }
41
+ function findSpot(free, w, h) {
42
+ let best;
43
+ let bestShort = Number.POSITIVE_INFINITY;
44
+ let bestLong = Number.POSITIVE_INFINITY;
45
+ for (const f of free) {
46
+ if (w > f.w || h > f.h)
47
+ continue;
48
+ const short = Math.min(f.w - w, f.h - h);
49
+ const long = Math.max(f.w - w, f.h - h);
50
+ if (short < bestShort || (short === bestShort && long < bestLong)) {
51
+ best = f;
52
+ bestShort = short;
53
+ bestLong = long;
54
+ }
55
+ }
56
+ return best;
57
+ }
58
+ function place(bin, index, spot, w, h) {
59
+ const used = { x: spot.x, y: spot.y, w, h };
60
+ bin.items.set(index, { x: spot.x, y: spot.y });
61
+ bin.usedW = Math.max(bin.usedW, spot.x + w);
62
+ bin.usedH = Math.max(bin.usedH, spot.y + h);
63
+ // Split every free rect the placement overlaps, then drop rects contained in others.
64
+ const next = [];
65
+ for (const f of bin.free) {
66
+ if (used.x >= f.x + f.w || used.x + used.w <= f.x || used.y >= f.y + f.h || used.y + used.h <= f.y) {
67
+ next.push(f);
68
+ continue;
69
+ }
70
+ if (used.x > f.x)
71
+ next.push({ x: f.x, y: f.y, w: used.x - f.x, h: f.h });
72
+ if (used.x + used.w < f.x + f.w)
73
+ next.push({ x: used.x + used.w, y: f.y, w: f.x + f.w - used.x - used.w, h: f.h });
74
+ if (used.y > f.y)
75
+ next.push({ x: f.x, y: f.y, w: f.w, h: used.y - f.y });
76
+ if (used.y + used.h < f.y + f.h)
77
+ next.push({ x: f.x, y: used.y + used.h, w: f.w, h: f.y + f.h - used.y - used.h });
78
+ }
79
+ bin.free = next.filter((a, i) => !next.some((b, j) => i !== j && contains(b, a) && (!contains(a, b) || j < i)));
80
+ }
81
+ const contains = (outer, inner) => inner.x >= outer.x && inner.y >= outer.y && inner.x + inner.w <= outer.x + outer.w && inner.y + inner.h <= outer.y + outer.h;
82
+ /** Decode any PNG (palette, grey, RGB, 16-bit…) to 8-bit RGBA. */
83
+ export function decodePng(bytes) {
84
+ const png = decode(bytes);
85
+ const { width, height } = png;
86
+ const out = new Uint8Array(width * height * 4);
87
+ if (png.palette) {
88
+ const rgb = convertIndexedToRgb(png);
89
+ const ch = png.palette[0]?.length ?? 3;
90
+ for (let i = 0; i < width * height; i++) {
91
+ out[i * 4] = rgb[i * ch] ?? 0;
92
+ out[i * 4 + 1] = rgb[i * ch + 1] ?? 0;
93
+ out[i * 4 + 2] = rgb[i * ch + 2] ?? 0;
94
+ out[i * 4 + 3] = ch === 4 ? (rgb[i * ch + 3] ?? 255) : 255;
95
+ }
96
+ return { width, height, data: out };
97
+ }
98
+ const ch = png.channels;
99
+ const shift = png.depth === 16 ? 8 : 0;
100
+ const src = png.data;
101
+ for (let i = 0; i < width * height; i++) {
102
+ const v = (k) => (src[i * ch + k] ?? 0) >> shift;
103
+ if (ch === 1 || ch === 2) {
104
+ const g = v(0);
105
+ out.set([g, g, g, ch === 2 ? v(1) : 255], i * 4);
106
+ }
107
+ else {
108
+ out.set([v(0), v(1), v(2), ch === 4 ? v(3) : 255], i * 4);
109
+ }
110
+ }
111
+ return { width, height, data: out };
112
+ }
113
+ /** Copy `img` into `atlas` at (x, y), extruding its edge pixels `extrude` px outward. */
114
+ export function blit(atlas, img, x, y, extrude) {
115
+ const aw = atlas.width;
116
+ for (let dy = -extrude; dy < img.height + extrude; dy++) {
117
+ const ty = y + dy;
118
+ if (ty < 0 || ty >= atlas.height)
119
+ continue;
120
+ const sy = Math.min(img.height - 1, Math.max(0, dy));
121
+ for (let dx = -extrude; dx < img.width + extrude; dx++) {
122
+ const tx = x + dx;
123
+ if (tx < 0 || tx >= aw)
124
+ continue;
125
+ const sx = Math.min(img.width - 1, Math.max(0, dx));
126
+ const s = (sy * img.width + sx) * 4;
127
+ const t = (ty * aw + tx) * 4;
128
+ atlas.data[t] = img.data[s] ?? 0;
129
+ atlas.data[t + 1] = img.data[s + 1] ?? 0;
130
+ atlas.data[t + 2] = img.data[s + 2] ?? 0;
131
+ atlas.data[t + 3] = img.data[s + 3] ?? 0;
132
+ }
133
+ }
134
+ }
135
+ /** Pack PNGs into as few atlases as fit `maxSize`. */
136
+ export function buildAtlases(inputs, options = {}) {
137
+ const maxSize = options.maxSize ?? 2048;
138
+ const padding = options.padding ?? 2;
139
+ const extrude = Math.min(options.extrude ?? 1, Math.floor(padding / 2));
140
+ const images = inputs.map((i) => decodePng(i.png));
141
+ // Reserve padding on every side: items are offset by `padding` so extrusion has room at the edges.
142
+ const bins = packRects(images.map((img) => ({ w: img.width + padding, h: img.height + padding })), maxSize, 0);
143
+ return bins.map((bin) => {
144
+ const atlas = { width: bin.width, height: bin.height, data: new Uint8Array(bin.width * bin.height * 4) };
145
+ const rects = new Map();
146
+ for (const [index, at] of bin.items) {
147
+ const img = images[index];
148
+ const input = inputs[index];
149
+ if (!img || !input)
150
+ continue;
151
+ const x = at.x + Math.ceil(padding / 2);
152
+ const y = at.y + Math.ceil(padding / 2);
153
+ blit(atlas, img, x, y, extrude);
154
+ rects.set(input.id, { x, y, w: img.width, h: img.height });
155
+ }
156
+ return {
157
+ png: encode({ width: atlas.width, height: atlas.height, data: atlas.data, channels: 4, depth: 8 }),
158
+ width: atlas.width,
159
+ height: atlas.height,
160
+ rects,
161
+ };
162
+ });
163
+ }
164
+ //# sourceMappingURL=atlas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atlas.js","sourceRoot":"","sources":["../../src/assets/atlas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { FunctionImporter } from "../plugin.js";
2
+ export declare const BUILTIN_EXTENSIONS: string[];
3
+ /** Images, JSON, audio and text, served as-is. */
4
+ export declare const builtinImporter: FunctionImporter;
5
+ //# sourceMappingURL=builtin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtin.d.ts","sourceRoot":"","sources":["../../src/assets/builtin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,gBAAgB,EAA4B,MAAM,cAAc,CAAC;AAyB1F,eAAO,MAAM,kBAAkB,UAAqB,CAAC;AAErD,kDAAkD;AAClD,eAAO,MAAM,eAAe,EAAE,gBAoB7B,CAAC"}
@@ -0,0 +1,47 @@
1
+ const TYPES = {
2
+ ".png": "image",
3
+ ".jpg": "image",
4
+ ".jpeg": "image",
5
+ ".webp": "image",
6
+ ".avif": "image",
7
+ ".gif": "image",
8
+ ".json": "json",
9
+ // Tiled maps/tilesets and LDtk projects are JSON (load with @debuffjp/tilemap).
10
+ ".tmj": "json",
11
+ ".tsj": "json",
12
+ ".ldtk": "json",
13
+ ".ogg": "audio",
14
+ ".opus": "audio",
15
+ ".mp3": "audio",
16
+ ".wav": "audio",
17
+ ".m4a": "audio",
18
+ ".txt": "text",
19
+ };
20
+ /** `hero@16x24.png` declares a 16×24 grid and the id "hero". Explicit by design: we never guess frame sizes. */
21
+ const GRID = /@(\d+)x(\d+)$/;
22
+ export const BUILTIN_EXTENSIONS = Object.keys(TYPES);
23
+ /** Images, JSON, audio and text, served as-is. */
24
+ export const builtinImporter = {
25
+ name: "debuff:builtin",
26
+ extensions: BUILTIN_EXTENSIONS,
27
+ import(file) {
28
+ const type = TYPES[file.ext];
29
+ if (!type)
30
+ return { assets: {}, warnings: [`Skipped ${file.rel}: unsupported extension "${file.ext}"`] };
31
+ let id = file.id;
32
+ const grid = GRID.exec(id);
33
+ if (grid)
34
+ id = id.slice(0, grid.index);
35
+ return {
36
+ assets: {
37
+ [id]: {
38
+ type,
39
+ src: `assets/${file.rel}`,
40
+ ...(file.group ? { group: file.group } : {}),
41
+ ...(grid ? { grid: { frameWidth: Number(grid[1]), frameHeight: Number(grid[2]) } } : {}),
42
+ },
43
+ },
44
+ };
45
+ },
46
+ };
47
+ //# sourceMappingURL=builtin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtin.js","sourceRoot":"","sources":["../../src/assets/builtin.ts"],"names":[],"mappings":"AAEA,MAAM,KAAK,GAA8B;IACvC,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,MAAM;IACf,gFAAgF;IAChF,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,MAAM;CACf,CAAC;AAEF,gHAAgH;AAChH,MAAM,IAAI,GAAG,eAAe,CAAC;AAE7B,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAErD,kDAAkD;AAClD,MAAM,CAAC,MAAM,eAAe,GAAqB;IAC/C,IAAI,EAAE,gBAAgB;IACtB,UAAU,EAAE,kBAAkB;IAC9B,MAAM,CAAC,IAAgB;QACrB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,WAAW,IAAI,CAAC,GAAG,4BAA4B,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;QACzG,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,IAAI;YAAE,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO;YACL,MAAM,EAAE;gBACN,CAAC,EAAE,CAAC,EAAE;oBACJ,IAAI;oBACJ,GAAG,EAAE,UAAU,IAAI,CAAC,GAAG,EAAE;oBACzB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACzF;aACF;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { CommandImporter, ImportResult, SourceFile } from "../plugin.js";
2
+ /** Run a command importer: SourceFile JSON on stdin, ImportResult JSON on stdout. */
3
+ export declare function runCommandImporter(importer: CommandImporter, file: SourceFile, cwd: string): Promise<ImportResult>;
4
+ //# sourceMappingURL=command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/assets/command.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI9E,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA4BlH"}
@@ -0,0 +1,35 @@
1
+ import { spawn } from "node:child_process";
2
+ const TIMEOUT_MS = 60_000;
3
+ /** Run a command importer: SourceFile JSON on stdin, ImportResult JSON on stdout. */
4
+ export function runCommandImporter(importer, file, cwd) {
5
+ const [cmd, ...args] = importer.command;
6
+ return new Promise((resolve, reject) => {
7
+ const child = spawn(cmd, args, { cwd, stdio: ["pipe", "pipe", "pipe"], shell: process.platform === "win32" });
8
+ const out = [];
9
+ const err = [];
10
+ const timer = setTimeout(() => {
11
+ child.kill();
12
+ reject(new Error(`importer "${importer.name}" timed out after ${TIMEOUT_MS / 1000}s on ${file.rel}`));
13
+ }, TIMEOUT_MS);
14
+ child.stdout.on("data", (d) => out.push(d));
15
+ child.stderr.on("data", (d) => err.push(d));
16
+ child.on("error", (e) => {
17
+ clearTimeout(timer);
18
+ reject(new Error(`importer "${importer.name}" could not start \`${cmd}\`: ${e.message}`));
19
+ });
20
+ child.on("close", (code) => {
21
+ clearTimeout(timer);
22
+ const stderr = Buffer.concat(err).toString("utf8").trim();
23
+ if (code !== 0)
24
+ return reject(new Error(`importer "${importer.name}" exited ${code} on ${file.rel}${stderr ? `: ${stderr}` : ""}`));
25
+ try {
26
+ resolve(JSON.parse(Buffer.concat(out).toString("utf8")));
27
+ }
28
+ catch {
29
+ reject(new Error(`importer "${importer.name}" printed invalid JSON for ${file.rel}`));
30
+ }
31
+ });
32
+ child.stdin.end(JSON.stringify(file));
33
+ });
34
+ }
35
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/assets/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG3C,MAAM,UAAU,GAAG,MAAM,CAAC;AAE1B,qFAAqF;AACrF,MAAM,UAAU,kBAAkB,CAAC,QAAyB,EAAE,IAAgB,EAAE,GAAW;IACzF,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC;IACxC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC,CAAC;QAC9G,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,KAAK,CAAC,IAAI,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa,QAAQ,CAAC,IAAI,qBAAqB,UAAU,GAAG,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACxG,CAAC,EAAE,UAAU,CAAC,CAAC;QACf,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACtB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa,QAAQ,CAAC,IAAI,uBAAuB,GAAG,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC5F,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1D,IAAI,IAAI,KAAK,CAAC;gBAAE,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa,QAAQ,CAAC,IAAI,YAAY,IAAI,OAAO,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACpI,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAiB,CAAC,CAAC;YAC3E,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa,QAAQ,CAAC,IAAI,8BAA8B,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACxF,CAAC;QACH,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { CompiledEntry, ToolingPlugin } from "../plugin.js";
2
+ import { type AtlasOptions } from "./atlas.js";
3
+ export interface CompiledManifest {
4
+ version: 1;
5
+ assets: Record<string, CompiledEntry>;
6
+ }
7
+ export interface CompileResult {
8
+ manifest: CompiledManifest;
9
+ /** Generated files keyed by path relative to `assets/`. */
10
+ outputs: Map<string, Buffer>;
11
+ warnings: string[];
12
+ /** Which importer produced each asset id. */
13
+ importedBy: Record<string, string>;
14
+ }
15
+ export interface CompileOptions {
16
+ plugins?: ToolingPlugin[];
17
+ /** Cache import results by content hash under `.debuff/cache/assets`. Default true. */
18
+ cache?: boolean;
19
+ /** Pack PNG images into atlases per preload group. Default on; `false` disables. */
20
+ atlas?: AtlasOptions | false;
21
+ }
22
+ /**
23
+ * Turn `assets/` into a manifest plus generated files, entirely in memory.
24
+ * Source files are never modified; nothing is written into the source tree.
25
+ */
26
+ export declare function compileAssets(root: string, options?: CompileOptions): Promise<CompileResult>;
27
+ /** Asset ids never referenced as a string literal in `src/`. Heuristic: reports, never deletes. */
28
+ export declare function findUnused(root: string, manifest: CompiledManifest): string[];
29
+ //# sourceMappingURL=compile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/assets/compile.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAiB,aAAa,EAA2C,aAAa,EAAE,MAAM,cAAc,CAAC;AACzH,OAAO,EAAE,KAAK,YAAY,EAAgB,MAAM,YAAY,CAAC;AAI7D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,2DAA2D;IAC3D,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AA2BD,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,uFAAuF;IACvF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oFAAoF;IACpF,KAAK,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CA2EtG;AA+BD,mGAAmG;AACnG,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAW7E"}
@@ -0,0 +1,209 @@
1
+ import { createHash } from "node:crypto";
2
+ import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
3
+ import { join, relative, sep } from "node:path";
4
+ import { buildAtlases } from "./atlas.js";
5
+ import { builtinImporter } from "./builtin.js";
6
+ import { runCommandImporter } from "./command.js";
7
+ const IGNORED = (rel) => rel === "manifest.json" || rel.endsWith(".license") || rel.split("/").some((p) => p.startsWith("."));
8
+ function walk(dir) {
9
+ if (!existsSync(dir))
10
+ return [];
11
+ return readdirSync(dir).flatMap((name) => {
12
+ const path = join(dir, name);
13
+ return statSync(path).isDirectory() ? walk(path) : [path];
14
+ });
15
+ }
16
+ const sha = (data) => createHash("sha256").update(data).digest("hex");
17
+ /** The importer claiming `rel`: the longest matching suffix wins, plugins before built-ins on ties. */
18
+ function pick(rel, importers) {
19
+ const lower = rel.toLowerCase();
20
+ let best;
21
+ for (const importer of importers) {
22
+ for (const ext of importer.extensions) {
23
+ const e = ext.toLowerCase();
24
+ if (lower.endsWith(e) && (!best || e.length > best.ext.length))
25
+ best = { importer, ext: e };
26
+ }
27
+ }
28
+ return best;
29
+ }
30
+ /**
31
+ * Turn `assets/` into a manifest plus generated files, entirely in memory.
32
+ * Source files are never modified; nothing is written into the source tree.
33
+ */
34
+ export async function compileAssets(root, options = {}) {
35
+ const dir = join(root, "assets");
36
+ const importers = [...(options.plugins ?? []).flatMap((p) => p.assets ?? []), builtinImporter];
37
+ const cacheDir = join(root, ".debuff", "cache", "assets");
38
+ const useCache = options.cache ?? true;
39
+ const files = walk(dir)
40
+ .map((path) => ({ path, rel: relative(dir, path).split(sep).join("/") }))
41
+ .filter((f) => !IGNORED(f.rel))
42
+ .sort((a, b) => (a.rel < b.rel ? -1 : 1));
43
+ const warnings = [];
44
+ const assets = {};
45
+ const outputs = new Map();
46
+ const importedBy = {};
47
+ const consumed = new Set();
48
+ const results = [];
49
+ // Plugin importers run first so they can consume files (e.g. a sheet's PNG) before built-ins see them.
50
+ const ordered = files
51
+ .map((f) => ({ ...f, match: pick(f.rel, importers) }))
52
+ .sort((a, b) => Number(a.match?.importer === builtinImporter) - Number(b.match?.importer === builtinImporter));
53
+ for (const { path, rel, match } of ordered) {
54
+ if (consumed.has(rel))
55
+ continue;
56
+ if (!match) {
57
+ warnings.push(`Skipped ${rel}: no importer for this file type`);
58
+ continue;
59
+ }
60
+ const parts = rel.split("/");
61
+ const group = parts.length > 1 ? parts[0] : undefined;
62
+ const base = (parts.at(-1) ?? rel).slice(0, -match.ext.length);
63
+ const file = { path, rel, id: (group ? `${group}/` : "") + base, ext: match.ext, ...(group ? { group } : {}) };
64
+ let result;
65
+ try {
66
+ result = await runImporter(match.importer, file, root, useCache ? cacheDir : undefined);
67
+ }
68
+ catch (err) {
69
+ warnings.push(`${rel}: ${err instanceof Error ? err.message : String(err)}`);
70
+ continue;
71
+ }
72
+ for (const c of result.consumes ?? [])
73
+ consumed.add(c);
74
+ results.push({ file, importer: match.importer, result });
75
+ }
76
+ for (const { file, importer, result } of results) {
77
+ warnings.push(...(result.warnings ?? []).map((w) => (w.includes(file.rel) ? w : `${file.rel}: ${w}`)));
78
+ for (const out of result.outputs ?? [])
79
+ outputs.set(out.path, toBuffer(out));
80
+ for (const [id, entry] of Object.entries(result.assets)) {
81
+ if (assets[id]) {
82
+ warnings.push(`Duplicate asset id "${id}" from ${file.rel} (${importer.name}); keeping ${assets[id].src}`);
83
+ continue;
84
+ }
85
+ const bytes = bytesOf(entry.src, dir, outputs);
86
+ if (!bytes) {
87
+ warnings.push(`${importer.name}: asset "${id}" points at ${entry.src}, which is neither a source file nor a generated output`);
88
+ continue;
89
+ }
90
+ assets[id] = { ...entry, bytes: bytes.length, hash: sha(bytes).slice(0, 12) };
91
+ importedBy[id] = importer.name;
92
+ }
93
+ }
94
+ if (options.atlas !== false)
95
+ packAtlases(dir, assets, importedBy, outputs, options.atlas ?? {}, useCache ? join(root, ".debuff", "cache", "atlas") : undefined, warnings);
96
+ const sorted = Object.fromEntries(Object.entries(assets).sort(([a], [b]) => (a < b ? -1 : 1)));
97
+ return { manifest: { version: 1, assets: sorted }, outputs, warnings, importedBy };
98
+ }
99
+ function toBuffer(out) {
100
+ return Buffer.from(out.contents, out.encoding === "base64" ? "base64" : "utf8");
101
+ }
102
+ function bytesOf(src, dir, outputs) {
103
+ const rel = src.replace(/^assets\//, "");
104
+ const generated = outputs.get(rel);
105
+ if (generated)
106
+ return generated;
107
+ const onDisk = join(dir, rel);
108
+ return existsSync(onDisk) ? readFileSync(onDisk) : undefined;
109
+ }
110
+ async function runImporter(importer, file, root, cacheDir) {
111
+ // The built-in importer only reads the path, so caching it would cost more than it saves.
112
+ const cacheable = cacheDir && importer !== builtinImporter;
113
+ const key = cacheable ? sha(`${importer.name}\0${JSON.stringify(file)}\0${sha(readFileSync(file.path))}`) : "";
114
+ const cacheFile = cacheable ? join(cacheDir, `${key}.json`) : "";
115
+ if (cacheable && existsSync(cacheFile))
116
+ return JSON.parse(readFileSync(cacheFile, "utf8"));
117
+ const result = "command" in importer ? await runCommandImporter(importer, file, root) : await importer.import(file);
118
+ if (!result || typeof result !== "object" || typeof result.assets !== "object") {
119
+ throw new Error(`importer "${importer.name}" returned an invalid result (expected { assets: {...} })`);
120
+ }
121
+ if (cacheable && cacheDir) {
122
+ mkdirSync(cacheDir, { recursive: true });
123
+ writeFileSync(cacheFile, JSON.stringify(result));
124
+ }
125
+ return result;
126
+ }
127
+ /** Asset ids never referenced as a string literal in `src/`. Heuristic: reports, never deletes. */
128
+ export function findUnused(root, manifest) {
129
+ const source = walk(join(root, "src"))
130
+ .filter((f) => /\.(ts|js|tsx|jsx|json)$/.test(f))
131
+ .map((f) => readFileSync(f, "utf8"))
132
+ .join("\n");
133
+ const quoted = (s) => source.includes(`"${s}"`) || source.includes(`'${s}'`) || source.includes(`\`${s}\``);
134
+ return Object.keys(manifest.assets).filter((id) => {
135
+ const group = manifest.assets[id]?.group;
136
+ // Loading a whole group counts as using its members.
137
+ return !quoted(id) && !(group && quoted(group));
138
+ });
139
+ }
140
+ /**
141
+ * Pack the PNGs the built-in importer produced into one or more atlases per preload group.
142
+ * Lossless: pixels are copied exactly, entries gain a `rect` into the atlas, and sources are untouched.
143
+ * Images larger than half the atlas size (backgrounds, splash screens) stay standalone.
144
+ */
145
+ function packAtlases(dir, assets, importedBy, outputs, options, cacheDir, warnings) {
146
+ const maxSize = options.maxSize ?? 2048;
147
+ const excluded = (id) => (options.exclude ?? []).some((e) => (e.endsWith("/") ? id.startsWith(e) : id === e));
148
+ const groups = new Map();
149
+ for (const [id, entry] of Object.entries(assets)) {
150
+ if (entry.type !== "image" || importedBy[id] !== builtinImporter.name || !entry.src.toLowerCase().endsWith(".png") || excluded(id))
151
+ continue;
152
+ const png = readFileSync(join(dir, entry.src.slice("assets/".length)));
153
+ if (png.length < 24 || png.readUInt32BE(0) !== 0x89504e47) {
154
+ warnings.push(`${entry.src}: not a valid PNG, left out of atlases`);
155
+ continue;
156
+ }
157
+ // PNG header: width and height are big-endian u32 at byte 16 and 20.
158
+ const w = png.readUInt32BE(16);
159
+ const h = png.readUInt32BE(20);
160
+ if (w > maxSize / 2 || h > maxSize / 2)
161
+ continue;
162
+ const group = entry.group ?? "default";
163
+ groups.set(group, [...(groups.get(group) ?? []), { id, png }]);
164
+ }
165
+ for (const [group, inputs] of groups) {
166
+ if (inputs.length < 2)
167
+ continue; // a one-image atlas saves nothing
168
+ inputs.sort((a, b) => (a.id < b.id ? -1 : 1));
169
+ const key = sha(JSON.stringify({ options, maxSize, inputs: inputs.map((i) => [i.id, assets[i.id]?.hash]) }));
170
+ const cached = cacheDir ? readAtlasCache(cacheDir, key) : undefined;
171
+ let atlases;
172
+ try {
173
+ atlases = cached ?? buildAtlases(inputs, { ...options, maxSize });
174
+ }
175
+ catch (err) {
176
+ // A corrupt image must never break the pipeline: the group simply stays unpacked.
177
+ warnings.push(`atlas "${group}" skipped: ${err instanceof Error ? err.message : String(err)}`);
178
+ continue;
179
+ }
180
+ if (!cached && cacheDir)
181
+ writeAtlasCache(cacheDir, key, atlases);
182
+ atlases.forEach((atlas, i) => {
183
+ const path = `_atlas/${group.replaceAll("/", "-")}-${i}.png`;
184
+ const png = Buffer.from(atlas.png);
185
+ outputs.set(path, png);
186
+ const hash = sha(png).slice(0, 12);
187
+ for (const [id, rect] of atlas.rects) {
188
+ const entry = assets[id];
189
+ if (!entry)
190
+ continue;
191
+ assets[id] = { ...entry, src: `assets/${path}`, rect, hash };
192
+ }
193
+ });
194
+ }
195
+ }
196
+ function readAtlasCache(cacheDir, key) {
197
+ const meta = join(cacheDir, `${key}.json`);
198
+ if (!existsSync(meta))
199
+ return undefined;
200
+ const entries = JSON.parse(readFileSync(meta, "utf8"));
201
+ return entries.map((e, i) => ({ ...e, png: readFileSync(join(cacheDir, `${key}-${i}.png`)), rects: new Map(e.rects) }));
202
+ }
203
+ function writeAtlasCache(cacheDir, key, atlases) {
204
+ mkdirSync(cacheDir, { recursive: true });
205
+ for (const [i, a] of atlases.entries())
206
+ writeFileSync(join(cacheDir, `${key}-${i}.png`), a.png);
207
+ writeFileSync(join(cacheDir, `${key}.json`), JSON.stringify(atlases.map((a) => ({ width: a.width, height: a.height, rects: [...a.rects] }))));
208
+ }
209
+ //# sourceMappingURL=compile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/assets/compile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { type AsepriteOptions, aseprite, asepriteImporter, findAseprite } from "./aseprite.js";
2
+ export { type AtlasOptions, buildAtlases, decodePng, packRects } from "./atlas.js";
3
+ export { BUILTIN_EXTENSIONS, builtinImporter } from "./builtin.js";
4
+ export { runCommandImporter } from "./command.js";
5
+ export { type CompiledManifest, type CompileOptions, type CompileResult, compileAssets, findUnused } from "./compile.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC/F,OAAO,EAAE,KAAK,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { aseprite, asepriteImporter, findAseprite } from "./aseprite.js";
2
+ export { buildAtlases, decodePng, packRects } from "./atlas.js";
3
+ export { BUILTIN_EXTENSIONS, builtinImporter } from "./builtin.js";
4
+ export { runCommandImporter } from "./command.js";
5
+ export { compileAssets, findUnused } from "./compile.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC/F,OAAO,EAAqB,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAkE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}