Add the guarded JamesDSP audio controller

This commit is contained in:
Jonathan Sykes
2026-10-09 20:00:49 +08:00
parent aca50c1690
commit 27b32ff0c9
9 changed files with 404 additions and 11 deletions

View File

@@ -12,7 +12,9 @@ test('JamesDSP runtime files live only in a lazy background group', () => {
assert.equal(group.contract, 1);
assert.equal(group.eager, false);
assert.equal(group.background, true);
assert.deepEqual(group.dependencies, ['feature:eq-core', 'feature:vocal-reducer']);
assert.deepEqual(group.files, [
'/vendor/jamesdsp/jamesdsp-feature.js',
'/vendor/jamesdsp/jamesdsp-node.mjs',
'/vendor/jamesdsp/params.mjs',
'/vendor/jamesdsp/worklet.mjs',
@@ -33,6 +35,9 @@ test('JamesDSP resolves every module dependency through the page build manifest'
assert.match(node, /workletURL\.hash=new URLSearchParams/);
assert.match(worklet, /new URLSearchParams\(new URL\(import\.meta\.url\)\.hash\.slice\(1\)\)/);
assert.match(worklet, /await import\(engineURL\)/);
const feature = readFileSync(join(root, 'vendor/jamesdsp/jamesdsp-feature.js'), 'utf8');
assert.match(feature, /Lazy\.url\('\/vendor\/jamesdsp\/jamesdsp-node\.mjs'\)/);
assert.match(feature, /Lazy\.url\('\/vendor\/jamesdsp\/dsp\/jamesdsp\.wasm'\)/);
});
test('v1 wrapper rejects text effects and omits them from portable presets', () => {