horde.js
TypeScript icon, indicating that this package has built-in type declarations

1.0.4 • Public • Published

horde.js

JS/TS Wrapper for the Stable Horde API. With internal caching and typings. Suitable for Server and Client applications.

Usage

  import {HordeClient, samplers, postProcessors, type GenerationInputStable, type PostProcessors} from 'horde.js'
  const hordeClient = new HordeClient(
    PUBLIC_HORDE_CLIENT_NAME,
    PUBLIC_HORDE_CLIENT_VERSION,
    PUBLIC_HORDE_CLIENT_CONTACT
  )
  const token = $page.data.user.hordeKey || "0000000000"
    let genReq: GenerationInputStable = {
    prompt: "",
    models: ["stable_diffusion"],
    nsfw: false,
    trusted_workers: false,
    slow_workers: true,
    censor_nsfw: true,
    workers: [],
    worker_blacklist: false,
    source_image: "",
    source_processing: "img2img",
    source_mask: "",
    r2: true,
    shared: true,
    replacement_filter: false,
    dry_run: false,
    params: {
      sampler_name: "k_euler_a",
      cfg_scale: 7.5,
      denoising_strength: 0.75,
      seed: "",
      height: 512,
      width: 512,
      seed_variation: 1,
      post_processing: ["GFPGAN"],
      karras: false,
      tiling: false,
      hires_fix: false,
      clip_skip: 1,
      // control_type: "normal",
      // image_is_control: false,
      // return_control_map: false,
      facefixer_strength: 0.5,
      loras: [],
      tis: [],
      special: {},
      steps: 30,
      n: 1
    }
  }
  async function submitReq() {
    genReq.prompt = `${prompt} ${negativePrompt !== "" ? ` ### ${negativePrompt}` : ""}`
    if (!genReq.params) {
      genReq.params = {}
    }
    console.log("ran on token", token, genReq)
    const res = await hordeClient.asyncImageGen(token, genReq, (e) => {
      console.log(e)
    },  (e) => {
      console.log(e)
      e.generations.forEach((gen) => {
        // where update images is a function that loads images into the dom
        updateImages([...activeImages, gen.img])
      })
    }, (e) => {
      console.log(e)
    }, (e) => {
      console.log(e)
    })
    console.log(res)
  }

Conception

This wrapper was made for my diffusion project... available at https://github.com/ghorde/diffusion

Tried to use the wrapper already available, but failed.

Contribution Guidelines

Please use JSDoc and TypeScript to their maximum, document everything well and keep name schemes consistent.

Package Sidebar

Install

npm i horde.js

Weekly Downloads

3

Version

1.0.4

License

MIT

Unpacked Size

47.7 kB

Total Files

8

Last publish

Collaborators

  • toomuchham