| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import { defineConfig } from "vite"
- import solidPlugin from "vite-plugin-solid"
- import { iconsSpritesheet } from "vite-plugin-icons-spritesheet"
- import fs from "fs"
- export default defineConfig({
- plugins: [
- solidPlugin(),
- providerIconsPlugin(),
- iconsSpritesheet([
- {
- withTypes: true,
- inputDir: "src/assets/icons/file-types",
- outputDir: "src/components/file-icons",
- formatter: "prettier",
- },
- {
- withTypes: true,
- inputDir: "src/assets/icons/provider",
- outputDir: "src/components/provider-icons",
- formatter: "prettier",
- iconNameTransformer: (iconName) => iconName,
- },
- ]),
- ],
- server: { port: 3001 },
- build: {
- target: "esnext",
- },
- worker: {
- format: "es",
- },
- })
- function providerIconsPlugin() {
- return {
- name: "provider-icons-plugin",
- configureServer() {
- fetchProviderIcons()
- },
- buildStart() {
- fetchProviderIcons()
- },
- }
- }
- async function fetchProviderIcons() {
- const url = process.env.OPENCODE_MODELS_URL || "https://models.dev"
- const providers = await fetch(`${url}/api.json`)
- .then((res) => res.json())
- .then((json) => Object.keys(json))
- await Promise.all(
- providers.map((provider) =>
- fetch(`${url}/logos/${provider}.svg`)
- .then((res) => res.text())
- .then((svg) => fs.writeFileSync(`./src/assets/icons/provider/${provider}.svg`, svg)),
- ),
- )
- }
|