@yali-engine/cli 0.0.0-stage → 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/bin/yali.mjs +12 -0
- package/dist/budgets.d.ts +25 -0
- package/dist/budgets.js +27 -0
- package/dist/budgets.js.map +1 -0
- package/dist/cdp.d.ts +25 -0
- package/dist/cdp.js +106 -0
- package/dist/cdp.js.map +1 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.js +83 -0
- package/dist/cli.js.map +1 -0
- package/dist/cmd-bench.d.ts +17 -0
- package/dist/cmd-bench.js +74 -0
- package/dist/cmd-bench.js.map +1 -0
- package/dist/cmd-build.d.ts +13 -0
- package/dist/cmd-build.js +40 -0
- package/dist/cmd-build.js.map +1 -0
- package/dist/cmd-convert.d.ts +27 -0
- package/dist/cmd-convert.js +456 -0
- package/dist/cmd-convert.js.map +1 -0
- package/dist/cmd-create.d.ts +8 -0
- package/dist/cmd-create.js +248 -0
- package/dist/cmd-create.js.map +1 -0
- package/dist/cmd-dev.d.ts +9 -0
- package/dist/cmd-dev.js +24 -0
- package/dist/cmd-dev.js.map +1 -0
- package/dist/cmd-game.d.ts +24 -0
- package/dist/cmd-game.js +127 -0
- package/dist/cmd-game.js.map +1 -0
- package/dist/cmd-headless.d.ts +15 -0
- package/dist/cmd-headless.js +59 -0
- package/dist/cmd-headless.js.map +1 -0
- package/dist/cmd-inspect.d.ts +13 -0
- package/dist/cmd-inspect.js +64 -0
- package/dist/cmd-inspect.js.map +1 -0
- package/dist/cmd-test.d.ts +9 -0
- package/dist/cmd-test.js +68 -0
- package/dist/cmd-test.js.map +1 -0
- package/dist/collision.d.ts +31 -0
- package/dist/collision.js +471 -0
- package/dist/collision.js.map +1 -0
- package/dist/commands.d.ts +18 -0
- package/dist/commands.js +105 -0
- package/dist/commands.js.map +1 -0
- package/dist/encoder.d.ts +63 -0
- package/dist/encoder.js +119 -0
- package/dist/encoder.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +1 -0
- package/dist/main.js +9 -0
- package/dist/main.js.map +1 -0
- package/dist/native-encoder.d.ts +39 -0
- package/dist/native-encoder.js +142 -0
- package/dist/native-encoder.js.map +1 -0
- package/dist/output.d.ts +28 -0
- package/dist/output.js +27 -0
- package/dist/output.js.map +1 -0
- package/dist/png.d.ts +26 -0
- package/dist/png.js +134 -0
- package/dist/png.js.map +1 -0
- package/dist/project.d.ts +15 -0
- package/dist/project.js +35 -0
- package/dist/project.js.map +1 -0
- package/dist/size.d.ts +47 -0
- package/dist/size.js +100 -0
- package/dist/size.js.map +1 -0
- package/package.json +43 -3
- package/vendor/ENCODER-BUILD.json +33 -0
- package/vendor/LICENSE-basis_universal +201 -0
- package/vendor/LICENSE-zstd +30 -0
- package/vendor/NOTICE +33 -0
- package/vendor/basis_encoder.mjs +2 -0
- package/vendor/basis_encoder.wasm +0 -0
- package/README.md +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collision.js","sourceRoot":"","sources":["../src/collision.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** One option of a command, as the manifest (`yali help --json`) describes it. */
|
|
2
|
+
export interface OptionSpec {
|
|
3
|
+
readonly name: string;
|
|
4
|
+
readonly type: 'string' | 'boolean';
|
|
5
|
+
readonly description: string;
|
|
6
|
+
readonly default?: string | boolean;
|
|
7
|
+
}
|
|
8
|
+
/** One command, as the manifest describes it. */
|
|
9
|
+
export interface CommandSpec {
|
|
10
|
+
readonly name: string;
|
|
11
|
+
readonly summary: string;
|
|
12
|
+
readonly usage: string;
|
|
13
|
+
readonly options: readonly OptionSpec[];
|
|
14
|
+
}
|
|
15
|
+
/** Every command. `cli.ts` dispatches on these names; `help --json` prints this list. */
|
|
16
|
+
export declare const COMMANDS: readonly CommandSpec[];
|
|
17
|
+
/** Global flags every command takes. */
|
|
18
|
+
export declare const GLOBAL_OPTIONS: readonly OptionSpec[];
|
package/dist/commands.js
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
const root = { name: 'root', type: 'string', description: 'Project directory (default: the current directory).' };
|
|
2
|
+
const cdpPort = { name: 'cdp-port', type: 'string', description: 'CDP port of a Chrome started with --remote-debugging-port (default: $CDP_PORT or 9224).' };
|
|
3
|
+
const probe = { name: 'probe', type: 'string', description: 'Page global with profile()/quality() (default __yali).', default: '__yali' };
|
|
4
|
+
/** Every command. `cli.ts` dispatches on these names; `help --json` prints this list. */
|
|
5
|
+
export const COMMANDS = [
|
|
6
|
+
{
|
|
7
|
+
name: 'create',
|
|
8
|
+
summary: 'Scaffold a new Yali project (App + render + assets, a smoke test, yali.config.ts).',
|
|
9
|
+
usage: 'yali create <dir> [--port 5180]',
|
|
10
|
+
options: [{ name: 'port', type: 'string', description: 'Dev port written to yali.config.ts (default: none, Vite picks).' }],
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
name: 'dev',
|
|
14
|
+
summary: 'Start the dev server through @yali-engine/vite (port, threads headers, rebuild steps, asset hot reload).',
|
|
15
|
+
usage: 'yali dev [--root dir]',
|
|
16
|
+
options: [root],
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: 'build',
|
|
20
|
+
summary: 'Production build, then a brotli size report checked against budgets.json (exit 3 when over budget).',
|
|
21
|
+
usage: 'yali build [--root dir] [--report]',
|
|
22
|
+
options: [root, { name: 'report', type: 'boolean', description: 'Report the sizes without failing on a budget (a demo page; the engine is gated on its reference page, ADR-0106).' }],
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: 'bench',
|
|
26
|
+
summary: 'Open the running app in a CDP browser, let it run, and report the profiler snapshot against the frame budget.',
|
|
27
|
+
usage: 'yali bench [--url http://localhost:3150/] [--query n=100000] [--seconds 6] [--out bench.json]',
|
|
28
|
+
options: [
|
|
29
|
+
root,
|
|
30
|
+
{ name: 'url', type: 'string', description: 'Page to measure (default: http://localhost:<port from yali.config>/).' },
|
|
31
|
+
{ name: 'query', type: 'string', description: 'Query string appended to the URL (n=100000&threads=8).' },
|
|
32
|
+
{ name: 'seconds', type: 'string', description: 'How long the page runs before the snapshot.', default: '6' },
|
|
33
|
+
{ name: 'out', type: 'string', description: 'Also write the result JSON to this file.' },
|
|
34
|
+
cdpPort,
|
|
35
|
+
probe,
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'headless',
|
|
40
|
+
summary: 'Run the headless entry (yali.config `headless`) for N fixed frames with a seed, optionally replaying an input recording; report the world hash and render checksum.',
|
|
41
|
+
usage: 'yali headless [--frames 240] [--seed 1] [--query n=2000] [--recording rec.json] [--expect <hash>]',
|
|
42
|
+
options: [
|
|
43
|
+
root,
|
|
44
|
+
{ name: 'frames', type: 'string', description: 'Fixed frames to run (1/60 s each).', default: '240' },
|
|
45
|
+
{ name: 'seed', type: 'string', description: 'The app rng seed.', default: '1' },
|
|
46
|
+
{ name: 'query', type: 'string', description: 'Options for the entry, as a query string (n=2000&size=2).' },
|
|
47
|
+
{ name: 'recording', type: 'string', description: 'An input recording (JSON from input.stop_recording) to replay.' },
|
|
48
|
+
{ name: 'expect', type: 'string', description: 'Fail (HASH_MISMATCH) unless the world hash equals this.' },
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: 'test',
|
|
53
|
+
summary: 'Run the project tests (node:test, TypeScript stripped) and summarise them.',
|
|
54
|
+
usage: 'yali test [--root dir] [files…]',
|
|
55
|
+
options: [root],
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: 'inspect',
|
|
59
|
+
summary: 'Report config, build-step staleness and budgets; with --live, also the running app (lifecycle, profile, quality, frame graph).',
|
|
60
|
+
usage: 'yali inspect [--root dir] [--live] [--url …]',
|
|
61
|
+
options: [
|
|
62
|
+
root,
|
|
63
|
+
{ name: 'live', type: 'boolean', description: 'Also read the running app over CDP.' },
|
|
64
|
+
{ name: 'url', type: 'string', description: 'Page for --live (default: http://localhost:<port>/).' },
|
|
65
|
+
cdpPort,
|
|
66
|
+
probe,
|
|
67
|
+
],
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: 'game',
|
|
71
|
+
summary: 'Build a game crate (Rust systems, ADR-0077) with the core into one module: game.wasm, or game.threads.wasm with --threads. With --json, progress and cargo diagnostics stream to stderr as NDJSON.',
|
|
72
|
+
usage: 'yali game --crate <dir> --out <dir> [--threads] [--dev] [--features anim,physics]',
|
|
73
|
+
options: [
|
|
74
|
+
{ name: 'crate', type: 'string', description: 'The game crate (the directory with its Cargo.toml).' },
|
|
75
|
+
{ name: 'out', type: 'string', description: 'Where game.wasm / game.threads.wasm go.' },
|
|
76
|
+
{ name: 'threads', type: 'boolean', description: 'The shared-memory build (wasm32-wasip1-threads).' },
|
|
77
|
+
{ name: 'dev', type: 'boolean', description: 'Skip wasm-opt (the dev server\x27s rebuild).' },
|
|
78
|
+
{ name: 'features', type: 'string', description: 'Runtime plugins compiled into the module (ADR-0082): anim, physics, comma-separated; the output is named after them (game.physics.wasm).' },
|
|
79
|
+
],
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: 'convert',
|
|
83
|
+
summary: 'A glTF/GLB as Yali loads it fastest: LODs and meshopt meshes in a GLB, textures as GPU-native KTX2 variants beside it (BC7, ASTC, ETC2, RGBA8). With --json, progress streams to stderr.',
|
|
84
|
+
usage: 'yali convert <model.glb|.gltf> <out.glb> [--max-size 2048] [--rdo 1] [--collision] [--clusters [--stream] [--page-kb 64]] [--cluster-min 4096] [--encoder auto|wasm|native]',
|
|
85
|
+
options: [
|
|
86
|
+
{ name: 'max-size', type: 'string', description: 'The largest texture side, a power of two (default 2048).' },
|
|
87
|
+
{ name: 'rdo', type: 'string', description: 'UASTC rate-distortion optimisation: a quality scalar, higher is smaller after brotli (default 1, as Basis; 0 is off and ~14x faster to encode).' },
|
|
88
|
+
{ name: 'encoder', type: 'string', description: 'The texture encoder (ADR-0097): auto (default) uses a native basisu 1.60 (YALI_BASISU, the @yali-engine/basisu-<platform>-<arch> package, or PATH) when found, else WASM; wasm never looks; native fails without one. Any native failure falls back to WASM with a warning.' },
|
|
89
|
+
{ name: 'clusters', type: 'boolean', description: 'Store the cluster LOD hierarchy of each big primitive in the GLB (YALI_clusters, ADR-0121): meshlets({ lod: true }) then loads it instead of building it on load.' },
|
|
90
|
+
{ name: 'stream', type: 'boolean', description: 'With --clusters: cut each hierarchy into streaming pages (YALI_cluster_pages, ADR-0134). The primitive becomes its coarsest levels; the rest goes in <name>.pages.bin, fetched by HTTP Range as the view needs it.' },
|
|
91
|
+
{ name: 'page-kb', type: 'string', description: 'With --stream: the most GPU memory a page holds, in KB (default 64).' },
|
|
92
|
+
{ name: 'cluster-min', type: 'string', description: 'The fewest triangles a primitive needs for --clusters (default 4096, as meshlets()).' },
|
|
93
|
+
{ name: 'collision', type: 'boolean', description: 'Also write the level\'s collision beside the GLB (<name>.collision.bin, ADR-0090): mesh nodes become static triangle meshes; UCX_* / *-convcol nodes convex pieces (an approximate decomposition); *_heightfield nodes heightfields; UNC_* / *-nocol nothing.' },
|
|
94
|
+
],
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
name: 'help',
|
|
98
|
+
summary: 'This list. With --json, the machine-readable manifest of every command and option.',
|
|
99
|
+
usage: 'yali help [--json]',
|
|
100
|
+
options: [],
|
|
101
|
+
},
|
|
102
|
+
];
|
|
103
|
+
/** Global flags every command takes. */
|
|
104
|
+
export const GLOBAL_OPTIONS = [{ name: 'json', type: 'boolean', description: 'Print exactly one JSON envelope { ok, command, result | error } on stdout.' }];
|
|
105
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/** A source image: encoded PNG / JPEG bytes, or raw RGBA8 pixels. */
|
|
2
|
+
export type EncoderImage = {
|
|
3
|
+
readonly kind: 'png' | 'jpeg';
|
|
4
|
+
readonly bytes: Uint8Array;
|
|
5
|
+
} | {
|
|
6
|
+
readonly kind: 'rgba8';
|
|
7
|
+
readonly width: number;
|
|
8
|
+
readonly height: number;
|
|
9
|
+
readonly data: Uint8Array;
|
|
10
|
+
};
|
|
11
|
+
/** How to encode one texture. The full mip chain is always generated (Yali's loader requires it). */
|
|
12
|
+
export interface EncodeSettings {
|
|
13
|
+
/** `uastc`: high quality, transcodes to BC7 / ASTC / ETC2 near-losslessly; `etc1s`: smallest. */
|
|
14
|
+
readonly mode: 'uastc' | 'etc1s';
|
|
15
|
+
/** A colour texture (base colour, emissive): sRGB-aware mips and an sRGB KTX2 descriptor. */
|
|
16
|
+
readonly srgb: boolean;
|
|
17
|
+
/** UASTC pack level 0 (fastest) .. 4 (default 1); ETC1S quality 1 .. 255 (default 128). */
|
|
18
|
+
readonly level?: number;
|
|
19
|
+
/**
|
|
20
|
+
* UASTC only: rate-distortion optimisation, the quality scalar (0 or absent: off; Basis's
|
|
21
|
+
* default is 1). Trades a little quality for output that LZ / brotli compresses far better,
|
|
22
|
+
* which carries over to the BC7 / ASTC / ETC2 transcoded from it.
|
|
23
|
+
*/
|
|
24
|
+
readonly rdo?: number;
|
|
25
|
+
}
|
|
26
|
+
export interface EncoderCapabilities {
|
|
27
|
+
readonly modes: readonly EncodeSettings['mode'][];
|
|
28
|
+
readonly inputs: readonly EncoderImage['kind'][];
|
|
29
|
+
/** Threads one encode uses. */
|
|
30
|
+
readonly threads: number;
|
|
31
|
+
}
|
|
32
|
+
export interface EncoderVersion {
|
|
33
|
+
readonly backend: 'wasm' | 'native';
|
|
34
|
+
/** The Basis Universal version every backend is pinned to. */
|
|
35
|
+
readonly basis: '1.60';
|
|
36
|
+
/** What identifies this backend's build (the WASM module's SHA-256). */
|
|
37
|
+
readonly build: string;
|
|
38
|
+
}
|
|
39
|
+
/** A texture encoder backend: KTX2 out, whichever implementation is behind it. */
|
|
40
|
+
export interface TextureEncoder {
|
|
41
|
+
capabilities(): EncoderCapabilities;
|
|
42
|
+
version(): EncoderVersion;
|
|
43
|
+
/** Encodes one image to a KTX2 file. Calls queue: one encode at a time uses every thread. */
|
|
44
|
+
encode(image: EncoderImage, settings: EncodeSettings): Promise<Uint8Array>;
|
|
45
|
+
}
|
|
46
|
+
/** The Basis encoder built to WASM with pthreads: the default backend, no install needed. */
|
|
47
|
+
export declare class WasmEncoder implements TextureEncoder {
|
|
48
|
+
#private;
|
|
49
|
+
private constructor();
|
|
50
|
+
/** Starts the module and its thread pool (`threads` defaults to the machine's parallelism). */
|
|
51
|
+
static create(options?: {
|
|
52
|
+
threads?: number;
|
|
53
|
+
}): Promise<WasmEncoder>;
|
|
54
|
+
capabilities(): EncoderCapabilities;
|
|
55
|
+
version(): EncoderVersion;
|
|
56
|
+
/** Decodes a PNG or JPEG to RGBA8 (Node has no image decoder; `yali convert` uses this). */
|
|
57
|
+
decode(bytes: Uint8Array): Promise<{
|
|
58
|
+
rgba: Uint8Array;
|
|
59
|
+
w: number;
|
|
60
|
+
h: number;
|
|
61
|
+
}>;
|
|
62
|
+
encode(image: EncoderImage, settings: EncodeSettings): Promise<Uint8Array>;
|
|
63
|
+
}
|
package/dist/encoder.js
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
2
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
3
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
4
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
return path;
|
|
8
|
+
};
|
|
9
|
+
// The texture encoder of `yali convert`: one interface, so the backend (this WASM build of Basis
|
|
10
|
+
// Universal v1.60, or later a native one) is chosen at run time and the rest of the converter
|
|
11
|
+
// does not care. Every backend is pinned to the same Basis version and settings.
|
|
12
|
+
//
|
|
13
|
+
// The WASM backend (vendor/basis_encoder.*, scripts/build-encoder.mjs) runs Basis's own job pool
|
|
14
|
+
// on Emscripten pthreads, so one texture's blocks are split across the cores. Its output does
|
|
15
|
+
// not depend on the thread count. Builds from different compilers are not byte-identical
|
|
16
|
+
// (Emscripten's clang against wasi-sdk's: 40-58 dB apart on the DamagedHelmet's maps), so a
|
|
17
|
+
// native backend is compared within a tolerance, not byte for byte.
|
|
18
|
+
import { availableParallelism } from 'node:os';
|
|
19
|
+
import { readFileSync } from 'node:fs';
|
|
20
|
+
import { YaliError } from '@yali-engine/core';
|
|
21
|
+
const KIND = { rgba8: 0, png: 1, jpeg: 2 };
|
|
22
|
+
/** The Basis encoder built to WASM with pthreads: the default backend, no install needed. */
|
|
23
|
+
export class WasmEncoder {
|
|
24
|
+
#m;
|
|
25
|
+
#threads;
|
|
26
|
+
#build;
|
|
27
|
+
#queue = Promise.resolve();
|
|
28
|
+
/** Set when the module aborted: its memory is undefined after that, so it takes no more work. */
|
|
29
|
+
#aborted = null;
|
|
30
|
+
constructor(m, threads, build) {
|
|
31
|
+
this.#m = m;
|
|
32
|
+
this.#threads = threads;
|
|
33
|
+
this.#build = build;
|
|
34
|
+
}
|
|
35
|
+
/** Starts the module and its thread pool (`threads` defaults to the machine's parallelism). */
|
|
36
|
+
static async create(options = {}) {
|
|
37
|
+
const threads = Math.max(1, Math.floor(options.threads ?? availableParallelism()));
|
|
38
|
+
const vendor = new URL('../vendor/', import.meta.url);
|
|
39
|
+
const build = JSON.parse(readFileSync(new URL('ENCODER-BUILD.json', vendor), 'utf8')).sha256;
|
|
40
|
+
const { default: createBasisEncoder } = (await import(__rewriteRelativeImportExtension(new URL('basis_encoder.mjs', vendor).href)));
|
|
41
|
+
const m = await createBasisEncoder({ threads });
|
|
42
|
+
if (m._ye_init(threads) !== 0)
|
|
43
|
+
throw new YaliError('ENCODER_INIT', 'The Basis encoder failed to initialise.', 'This is a bug; report it with the platform and Node version.');
|
|
44
|
+
return new WasmEncoder(m, threads, build);
|
|
45
|
+
}
|
|
46
|
+
capabilities() {
|
|
47
|
+
return { modes: ['uastc', 'etc1s'], inputs: ['png', 'jpeg', 'rgba8'], threads: this.#threads };
|
|
48
|
+
}
|
|
49
|
+
version() {
|
|
50
|
+
return { backend: 'wasm', basis: '1.60', build: this.#build };
|
|
51
|
+
}
|
|
52
|
+
/** Decodes a PNG or JPEG to RGBA8 (Node has no image decoder; `yali convert` uses this). */
|
|
53
|
+
decode(bytes) {
|
|
54
|
+
const run = this.#queue.then(() => {
|
|
55
|
+
if (this.#aborted)
|
|
56
|
+
throw new YaliError('ENCODER_ABORTED', `The encoder aborted earlier (${this.#aborted}).`, 'Create a new WasmEncoder.');
|
|
57
|
+
const kind = bytes[0] === 0x89 && bytes[1] === 0x50 ? 1 : bytes[0] === 0xff && bytes[1] === 0xd8 ? 2 : 0;
|
|
58
|
+
if (!kind)
|
|
59
|
+
throw new YaliError('BAD_IMAGE', 'The image is neither PNG nor JPEG.', 'Re-export it as PNG or JPEG (WebP and others are not read).');
|
|
60
|
+
const m = this.#m;
|
|
61
|
+
const p = m._ye_alloc(bytes.length);
|
|
62
|
+
try {
|
|
63
|
+
m.HEAPU8.set(bytes, p);
|
|
64
|
+
if (m._ye_decode(p, bytes.length, kind) !== 0)
|
|
65
|
+
throw new YaliError('BAD_IMAGE', 'The image did not decode.', 'Re-export it as an 8-bit PNG or a baseline JPEG.');
|
|
66
|
+
return { rgba: m.HEAPU8.slice(m._ye_out(), m._ye_out() + m._ye_out_len()), w: m._ye_out_w(), h: m._ye_out_h() };
|
|
67
|
+
}
|
|
68
|
+
finally {
|
|
69
|
+
m._ye_free(p);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
this.#queue = run.catch(() => undefined);
|
|
73
|
+
return run;
|
|
74
|
+
}
|
|
75
|
+
encode(image, settings) {
|
|
76
|
+
const run = this.#queue.then(() => this.#encodeNow(image, settings));
|
|
77
|
+
this.#queue = run.catch(() => undefined);
|
|
78
|
+
return run;
|
|
79
|
+
}
|
|
80
|
+
#encodeNow(image, s) {
|
|
81
|
+
if (this.#aborted)
|
|
82
|
+
throw new YaliError('ENCODER_ABORTED', `The encoder aborted earlier (${this.#aborted}).`, 'Create a new WasmEncoder.');
|
|
83
|
+
const m = this.#m;
|
|
84
|
+
const bytes = image.kind === 'rgba8' ? image.data : image.bytes;
|
|
85
|
+
// The decoders are not hardened against every malformed file: check the signature first.
|
|
86
|
+
const signature = image.kind === 'png' ? [0x89, 0x50, 0x4e, 0x47] : image.kind === 'jpeg' ? [0xff, 0xd8, 0xff] : [];
|
|
87
|
+
if (signature.some((b, i) => bytes[i] !== b))
|
|
88
|
+
throw new YaliError('BAD_IMAGE', `The bytes are not a ${image.kind.toUpperCase()} file.`, 'Pass the file as it is on disk (PNG or JPEG).');
|
|
89
|
+
if (image.kind === 'rgba8' && bytes.length !== image.width * image.height * 4) {
|
|
90
|
+
throw new YaliError('BAD_IMAGE', `RGBA8 data is ${bytes.length} bytes, expected ${image.width} × ${image.height} × 4.`, 'Pass width × height × 4 bytes.');
|
|
91
|
+
}
|
|
92
|
+
const level = s.level ?? (s.mode === 'uastc' ? 1 : 128);
|
|
93
|
+
const p = m._ye_alloc(bytes.length);
|
|
94
|
+
try {
|
|
95
|
+
m.HEAPU8.set(bytes, p);
|
|
96
|
+
const w = image.kind === 'rgba8' ? image.width : 0;
|
|
97
|
+
const h = image.kind === 'rgba8' ? image.height : 0;
|
|
98
|
+
let rc;
|
|
99
|
+
try {
|
|
100
|
+
rc = m._ye_encode(p, bytes.length, KIND[image.kind], w, h, s.srgb ? 1 : 0, 1, s.mode === 'uastc' ? 0 : 1, level, s.mode === 'uastc' ? (s.rdo ?? 0) : 0);
|
|
101
|
+
}
|
|
102
|
+
catch (err) {
|
|
103
|
+
this.#aborted = err instanceof Error ? err.message : String(err);
|
|
104
|
+
throw new YaliError('ENCODE_FAILED', `The encoder aborted: ${this.#aborted}`, 'Check the image; report it with the file if it opens elsewhere.');
|
|
105
|
+
}
|
|
106
|
+
if (rc === 999)
|
|
107
|
+
throw new YaliError('BAD_IMAGE', `The ${image.kind.toUpperCase()} image did not decode.`, 'Re-export it as an 8-bit PNG or a baseline JPEG.');
|
|
108
|
+
if (rc !== 0)
|
|
109
|
+
throw new YaliError('ENCODE_FAILED', `Basis refused the encode (code ${rc}).`, 'Check the settings (level range) and the image size; report it if they are valid.');
|
|
110
|
+
// HEAPU8 may be a new view after memory growth: read it after the call.
|
|
111
|
+
return m.HEAPU8.slice(m._ye_out(), m._ye_out() + m._ye_out_len());
|
|
112
|
+
}
|
|
113
|
+
finally {
|
|
114
|
+
if (!this.#aborted)
|
|
115
|
+
m._ye_free(p);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=encoder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoder.js","sourceRoot":"","sources":["../src/encoder.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@yali-engine/cli`: the `yali` command, also usable as a library (`runCli`).
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* import { runCli } from '@yali-engine/cli';
|
|
6
|
+
* const { outcome } = await runCli(['inspect', '--json']);
|
|
7
|
+
* console.log(outcome.envelope); // { ok: true, command: 'inspect', result: { … } }
|
|
8
|
+
*/
|
|
9
|
+
export { runCli } from './cli.ts';
|
|
10
|
+
export { COMMANDS, type CommandSpec, GLOBAL_OPTIONS, type OptionSpec } from './commands.ts';
|
|
11
|
+
export { type Envelope, type Outcome } from './output.ts';
|
|
12
|
+
export { type SizeReport, sizeReport } from './size.ts';
|
|
13
|
+
export { DEFAULT_BUDGETS, loadBudgets } from './budgets.ts';
|
|
14
|
+
export { type CdpPage, openPage } from './cdp.ts';
|
|
15
|
+
export { cdpPort, loadProject, pageUrl, type Project } from './project.ts';
|
|
16
|
+
export { decodePng, diffPixels, encodePng, type Image, type PixelDiff } from './png.ts';
|
|
17
|
+
export { type EncodeSettings, type EncoderCapabilities, type EncoderImage, type EncoderVersion, type TextureEncoder, WasmEncoder } from './encoder.ts';
|
|
18
|
+
export { type EncoderChoice, NativeEncoder, type NativeProbe, platformPackage, probeNative, selectEncoder } from './native-encoder.ts';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@yali-engine/cli`: the `yali` command, also usable as a library (`runCli`).
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* import { runCli } from '@yali-engine/cli';
|
|
6
|
+
* const { outcome } = await runCli(['inspect', '--json']);
|
|
7
|
+
* console.log(outcome.envelope); // { ok: true, command: 'inspect', result: { … } }
|
|
8
|
+
*/
|
|
9
|
+
export { runCli } from "./cli.js";
|
|
10
|
+
export { COMMANDS, GLOBAL_OPTIONS } from "./commands.js";
|
|
11
|
+
export {} from "./output.js";
|
|
12
|
+
export { sizeReport } from "./size.js";
|
|
13
|
+
export { DEFAULT_BUDGETS, loadBudgets } from "./budgets.js";
|
|
14
|
+
export { openPage } from "./cdp.js";
|
|
15
|
+
export { cdpPort, loadProject, pageUrl } from "./project.js";
|
|
16
|
+
export { decodePng, diffPixels, encodePng } from "./png.js";
|
|
17
|
+
export { WasmEncoder } from "./encoder.js";
|
|
18
|
+
export { NativeEncoder, platformPackage, probeNative, selectEncoder } from "./native-encoder.js";
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAoB,cAAc,EAAmB,MAAM,eAAe,CAAC;AAC5F,OAAO,EAA+B,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAmB,UAAU,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAgB,QAAQ,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAgB,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAA8B,MAAM,UAAU,CAAC;AACxF,OAAO,EAA8G,WAAW,EAAE,MAAM,cAAc,CAAC;AACvJ,OAAO,EAAsB,aAAa,EAAoB,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/main.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/main.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// The `yali` command's entry point (DESIGN.md §19), run by bin/yali.mjs under
|
|
2
|
+
// --experimental-strip-types. Nothing imports this file: the library entry is cli.ts.
|
|
3
|
+
import { runCli } from "./cli.js";
|
|
4
|
+
import { print } from "./output.js";
|
|
5
|
+
const { outcome, json, keepAlive } = await runCli(process.argv.slice(2));
|
|
6
|
+
const code = print(outcome, json);
|
|
7
|
+
if (!keepAlive || code !== 0)
|
|
8
|
+
process.exit(code);
|
|
9
|
+
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,sFAAsF;AACtF,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAClC,IAAI,CAAC,SAAS,IAAI,IAAI,KAAK,CAAC;IAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type EncoderCapabilities, type EncoderImage, type EncoderVersion, type EncodeSettings, type TextureEncoder, WasmEncoder } from './encoder.ts';
|
|
2
|
+
/** Where a native `basisu` was found, and why it is (or is not) used. */
|
|
3
|
+
export interface NativeProbe {
|
|
4
|
+
readonly path: string | null;
|
|
5
|
+
readonly version: string | null;
|
|
6
|
+
/** `env` (YALI_BASISU), `npm` (an optional `@yali-engine/basisu-<platform>-<arch>` package), `path` (on PATH). */
|
|
7
|
+
readonly source: 'env' | 'npm' | 'path' | null;
|
|
8
|
+
readonly reason: string;
|
|
9
|
+
}
|
|
10
|
+
/** The platform package that would carry a prebuilt basisu for this machine. */
|
|
11
|
+
export declare function platformPackage(platform?: NodeJS.Platform, arch?: NodeJS.Architecture): string;
|
|
12
|
+
/**
|
|
13
|
+
* Finds a native basisu, in ADR-0078's order: `YALI_BASISU` (a path), the optional platform
|
|
14
|
+
* package, `basisu` on PATH. Only v1.60 is used (the pinned version); `toktx` is not, since it
|
|
15
|
+
* carries an older Basis.
|
|
16
|
+
*/
|
|
17
|
+
export declare function probeNative(env?: NodeJS.ProcessEnv): Promise<NativeProbe>;
|
|
18
|
+
/** Basis's own command-line encoder as a `TextureEncoder`. */
|
|
19
|
+
export declare class NativeEncoder implements TextureEncoder {
|
|
20
|
+
#private;
|
|
21
|
+
readonly path: string;
|
|
22
|
+
constructor(path: string, version: string);
|
|
23
|
+
capabilities(): EncoderCapabilities;
|
|
24
|
+
version(): EncoderVersion;
|
|
25
|
+
/** The command line for `settings` (exported for the tests: the flags mirror basis-encoder.cpp). */
|
|
26
|
+
static args(input: string, output: string, s: EncodeSettings): string[];
|
|
27
|
+
encode(image: EncoderImage, settings: EncodeSettings): Promise<Uint8Array>;
|
|
28
|
+
}
|
|
29
|
+
/** `--encoder`: which backend `yali convert` uses. */
|
|
30
|
+
export type EncoderChoice = 'auto' | 'wasm' | 'native';
|
|
31
|
+
/**
|
|
32
|
+
* The encoder for `choice`, and one line saying which and why: `auto` takes a native basisu 1.60
|
|
33
|
+
* if one is found, else WASM; `native` fails without one; `wasm` never looks.
|
|
34
|
+
*/
|
|
35
|
+
export declare function selectEncoder(choice: EncoderChoice, env?: NodeJS.ProcessEnv): Promise<{
|
|
36
|
+
encoder: TextureEncoder;
|
|
37
|
+
wasm: WasmEncoder;
|
|
38
|
+
line: string;
|
|
39
|
+
}>;
|