UNPKG

venice-dev-tools

Version:

unOfficial SDK for the Venice AI API

160 lines (156 loc) 5.35 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var index_exports = {}; __export(index_exports, { VeniceWeb: () => VeniceWeb, default: () => index_default }); module.exports = __toCommonJS(index_exports); // src/venice-web.ts var import_core = require("@venice-dev-tools/core"); var VeniceWeb = class extends import_core.VeniceAI { /** * Create a new Web Venice AI client. * * @param config - Configuration options for the client. */ constructor(config = {}) { if (!config.apiKey && typeof localStorage !== "undefined") { config.apiKey = localStorage.getItem("venice_api_key") || void 0; } super(config); } /** * Save the API key to local storage. * * @param apiKey - The API key to save. * @param rememberMe - Whether to remember the API key (store in localStorage). */ saveApiKey(apiKey, rememberMe = true) { this.setApiKey(apiKey); if (rememberMe && typeof localStorage !== "undefined") { localStorage.setItem("venice_api_key", apiKey); } else if (typeof sessionStorage !== "undefined") { sessionStorage.setItem("venice_api_key", apiKey); } } /** * Clear the stored API key. */ clearApiKey() { if (typeof localStorage !== "undefined") { localStorage.removeItem("venice_api_key"); } if (typeof sessionStorage !== "undefined") { sessionStorage.removeItem("venice_api_key"); } } /** * Check if an API key is stored. * * @returns Whether an API key is stored. */ hasStoredApiKey() { return typeof localStorage !== "undefined" && localStorage.getItem("venice_api_key") !== null || typeof sessionStorage !== "undefined" && sessionStorage.getItem("venice_api_key") !== null; } /** * Generate an image and get it as a blob URL. * * @param options - The image generation options. * @returns The image blob URL and generation response. */ async generateImageAsUrl(options) { const response = await this.images.generate(options); if (response.data && response.data.url) { if (response.data.response_format === "url") { return { url: response.data.url, response }; } const base64Data = response.data.url; const blob = this.base64ToBlob(base64Data); const url = URL.createObjectURL(blob); return { url, response }; } throw new Error("No images were generated"); } /** * Convert a base64 string to a Blob. * * @param base64Data - The base64 image data (can include or exclude data URI prefix). * @param mimeType - The MIME type of the image. * @returns The Blob object. */ base64ToBlob(base64Data, mimeType = "image/png") { const base64 = base64Data.includes("base64,") ? base64Data.split("base64,")[1] : base64Data; const byteString = atob(base64); const arrayBuffer = new ArrayBuffer(byteString.length); const uint8Array = new Uint8Array(arrayBuffer); for (let i = 0; i < byteString.length; i++) { uint8Array[i] = byteString.charCodeAt(i); } return new Blob([uint8Array], { type: mimeType }); } /** * Download a generated image. * * @param base64Data - The base64 image data. * @param fileName - The name for the downloaded file. */ downloadImage(base64Data, fileName = "venice-image.png") { const blob = this.base64ToBlob(base64Data); const url = URL.createObjectURL(blob); const link = document.createElement("a"); link.href = url; link.download = fileName; link.style.display = "none"; document.body.appendChild(link); link.click(); setTimeout(() => { document.body.removeChild(link); URL.revokeObjectURL(url); }, 100); } /** * Read a local file as a base64 string. * * @param file - The file to read. * @returns A promise resolving to the base64 string. */ async readFileAsBase64(file) { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.onload = () => { resolve(reader.result); }; reader.onerror = () => { reject(new Error("Failed to read file")); }; reader.readAsDataURL(file); }); } }; // src/index.ts __reExport(index_exports, require("@venice-dev-tools/core"), module.exports); var index_default = VeniceWeb; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { VeniceWeb, ...require("@venice-dev-tools/core") });