UNPKG

sd-parsers

Version:

A library to read metadata from images created by Stable Diffusion

67 lines 2.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FooocusParser = void 0; const parser_1 = require("./parser"); const data_1 = require("../data"); const exceptions_1 = require("../exceptions"); const SAMPLER_PARAMS = ['guidance_scale', 'cfg_scale', 'scheduler', 'seed', 'sharpness', 'steps']; const REPLACEMENT_RULES = [['guidance_scale', 'cfg_scale']]; /** * Parser for images generated by Fooocus */ class FooocusParser extends parser_1.Parser { constructor() { super(...arguments); this.generator = data_1.Generators.FOOOCUS; } async parse(_parameters) { let parameters; try { if (!_parameters.hasOwnProperty('parameters')) { throw new Error('parameters field is missing'); } if (typeof _parameters.parameters === 'string') { parameters = JSON.parse(_parameters.parameters); } else if (typeof _parameters.parameters === 'object' && _parameters.parameters !== null) { throw new Error('parameters field is missing'); } else { throw new Error('parameters field is missing'); } } catch (error) { throw new exceptions_1.ParserError(`Error decoding parameter data: ${error}`); } try { const model = (parameters.base_model || parameters.base_model_hash) ? (0, data_1.createModel)({ name: parameters.base_model, hash: parameters.base_model_hash }) : undefined; delete parameters.base_model; delete parameters.base_model_hash; const samplerParams = Object.fromEntries((0, parser_1.popKeys)(SAMPLER_PARAMS, parameters)); const normalizedParams = this.normalizeParameters(samplerParams, REPLACEMENT_RULES); const samplerName = parameters.sampler || 'unknown'; delete parameters.sampler; const prompt = parameters.prompt; delete parameters.prompt; const negativePrompt = parameters.negative_prompt; delete parameters.negative_prompt; const prompts = prompt ? [(0, data_1.createPrompt)(prompt)] : []; const negativePrompts = negativePrompt ? [(0, data_1.createPrompt)(negativePrompt)] : []; const sampler = (0, data_1.createSampler)(samplerName, normalizedParams, { model, prompts, negativePrompts }); return (0, data_1.createPromptInfo)(this.generator, [sampler], parameters, _parameters); } catch (error) { throw new exceptions_1.ParserError(`Error reading parameter value: ${error}`); } } } exports.FooocusParser = FooocusParser; //# sourceMappingURL=fooocus.js.map