@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.
- package/README.md +86 -2
- package/aseprite/new-font.lua +31 -0
- package/bin/debuff.js +3 -0
- package/client.d.ts +3 -0
- package/dist/agent-link.d.ts +28 -0
- package/dist/agent-link.d.ts.map +1 -0
- package/dist/agent-link.js +122 -0
- package/dist/agent-link.js.map +1 -0
- package/dist/assets/aseprite.d.ts +29 -0
- package/dist/assets/aseprite.d.ts.map +1 -0
- package/dist/assets/aseprite.js +107 -0
- package/dist/assets/aseprite.js.map +1 -0
- package/dist/assets/atlas.d.ts +58 -0
- package/dist/assets/atlas.d.ts.map +1 -0
- package/dist/assets/atlas.js +164 -0
- package/dist/assets/atlas.js.map +1 -0
- package/dist/assets/builtin.d.ts +5 -0
- package/dist/assets/builtin.d.ts.map +1 -0
- package/dist/assets/builtin.js +47 -0
- package/dist/assets/builtin.js.map +1 -0
- package/dist/assets/command.d.ts +4 -0
- package/dist/assets/command.d.ts.map +1 -0
- package/dist/assets/command.js +35 -0
- package/dist/assets/command.js.map +1 -0
- package/dist/assets/compile.d.ts +29 -0
- package/dist/assets/compile.d.ts.map +1 -0
- package/dist/assets/compile.js +209 -0
- package/dist/assets/compile.js.map +1 -0
- package/dist/assets/index.d.ts +6 -0
- package/dist/assets/index.d.ts.map +1 -0
- package/dist/assets/index.js +6 -0
- package/dist/assets/index.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +257 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +24 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +53 -0
- package/dist/config.js.map +1 -0
- package/dist/fuzz.d.ts +43 -0
- package/dist/fuzz.d.ts.map +1 -0
- package/dist/fuzz.js +229 -0
- package/dist/fuzz.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/inspect.d.ts +35 -0
- package/dist/inspect.d.ts.map +1 -0
- package/dist/inspect.js +37 -0
- package/dist/inspect.js.map +1 -0
- package/dist/plugin.d.ts +146 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +2 -0
- package/dist/plugin.js.map +1 -0
- package/dist/report.d.ts +26 -0
- package/dist/report.d.ts.map +1 -0
- package/dist/report.js +80 -0
- package/dist/report.js.map +1 -0
- package/dist/scenario/browser.d.ts +12 -0
- package/dist/scenario/browser.d.ts.map +1 -0
- package/dist/scenario/browser.js +59 -0
- package/dist/scenario/browser.js.map +1 -0
- package/dist/scenario/index.d.ts +5 -0
- package/dist/scenario/index.d.ts.map +1 -0
- package/dist/scenario/index.js +4 -0
- package/dist/scenario/index.js.map +1 -0
- package/dist/scenario/run.d.ts +14 -0
- package/dist/scenario/run.d.ts.map +1 -0
- package/dist/scenario/run.js +255 -0
- package/dist/scenario/run.js.map +1 -0
- package/dist/scenario/schema.d.ts +8 -0
- package/dist/scenario/schema.d.ts.map +1 -0
- package/dist/scenario/schema.js +23 -0
- package/dist/scenario/schema.js.map +1 -0
- package/dist/scenario/types.d.ts +103 -0
- package/dist/scenario/types.d.ts.map +1 -0
- package/dist/scenario/types.js +2 -0
- package/dist/scenario/types.js.map +1 -0
- package/dist/vite-plugin.d.ts +18 -0
- package/dist/vite-plugin.d.ts.map +1 -0
- package/dist/vite-plugin.js +122 -0
- package/dist/vite-plugin.js.map +1 -0
- package/dist/vite.d.ts +13 -0
- package/dist/vite.d.ts.map +1 -0
- package/dist/vite.js +25 -0
- package/dist/vite.js.map +1 -0
- package/package.json +71 -4
- 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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|