import test from 'node:test' import assert from 'node:assert/strict' import { readFileSync } from 'node:fs' import ts from 'typescript' const source = readFileSync(new URL('../server/utils/fluxReference.ts', import.meta.url), 'utf8') const code = ts.transpileModule(source, { compilerOptions: { module: ts.ModuleKind.CommonJS } }).outputText const api = {} new Function('exports', code)(api) const template = JSON.parse(readFileSync(new URL('../server/assets/klein_v2_generate.json', import.meta.url), 'utf8')) test('Flux reference conditions a new image without initializing its latent or changing output dimensions', () => { const graph = structuredClone(template) graph['14'].inputs.width = 1344 graph['14'].inputs.height = 768 const sampler = structuredClone(graph['19']) api.addFluxGenerationReference(graph, 'reference.png') assert.deepEqual(graph['19'], sampler) assert.equal(graph['14'].class_type, 'EmptyFlux2LatentImage') assert.equal(graph['14'].inputs.width, 1344) assert.equal(graph['14'].inputs.height, 768) assert.equal(graph['reference:load'].inputs.image, 'reference.png') assert.deepEqual(graph['18'].inputs.positive, ['reference:positive', 0]) assert.deepEqual(graph['reference:positive'].inputs.conditioning, ['9', 0]) assert.deepEqual(graph['reference:negative'].inputs.conditioning, ['10', 0]) assert.deepEqual(graph['reference:encode'].inputs.pixels, ['reference:scale', 0]) }) test('Flux generation without a reference retains the text-only graph', () => { const graph = structuredClone(template) api.addFluxGenerationReference(graph, '') assert.deepEqual(graph, template) })