File size: 4,247 Bytes
01fcadf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import { fileURLToPath } from "node:url";
import node from "@astrojs/node";
import svelte from "@astrojs/svelte";
import tailwind from "@astrojs/tailwind";
import { baremuxPath } from "@mercuryworkshop/bare-mux/node";
import { epoxyPath } from "@mercuryworkshop/epoxy-transport";
import { libcurlPath } from "@mercuryworkshop/libcurl-transport";
import playformCompress from "@playform/compress";
import { uvPath } from "@titaniumnetwork-dev/ultraviolet";
import icon from "astro-icon";
import { defineConfig, envField } from "astro/config";
import { viteStaticCopy } from "vite-plugin-static-copy";
import { version } from "./package.json";
import { parsedDoc } from "./server/config.js";
const workerwarePath = fileURLToPath(new URL("./workerware/src", import.meta.url));

export default defineConfig({
    experimental: {
        env: {
            schema: {
                VERSION: envField.string({
                    context: "client",
                    access: "public",
                    optional: true,
                    default: version
                }),
                MARKETPLACE_ENABLED: envField.boolean({
                    context: "client",
                    access: "public",
                    optional: true,
                    default: parsedDoc.marketplace.enabled
                })
            }
        }
    },
    integrations: [
        tailwind(),
        icon(),
        svelte(),
        playformCompress({
            CSS: false,
            HTML: true,
            Image: true,
            JavaScript: true,
            SVG: true
        })
    ],
    vite: {
        plugins: [
            viteStaticCopy({
                targets: [
                    {
                        src: `${uvPath}/**/*`.replace(/\\/g, "/"),
                        dest: "uv",
                        overwrite: false
                    },
                    {
                        src: `${epoxyPath}/**/*`.replace(/\\/g, "/"),
                        dest: "epoxy",
                        overwrite: false
                    },
                    {
                        src: `${libcurlPath}/**/*`.replace(/\\/g, "/"),
                        dest: "libcurl",
                        overwrite: false
                    },
                    {
                        src: `${baremuxPath}/**/*`.replace(/\\/g, "/"),
                        dest: "baremux",
                        overwrite: false
                    },
                    {
                        src: `${workerwarePath}/**/*`.replace(/\\/g, "/"),
                        dest: "workerware",
                        overwrite: false
                    }
                ]
            })
        ],
        server: {
            proxy: {
                "/api/catalog-stats": {
                    target: "http://localhost:8080/api/catalog-stats",
                    changeOrigin: true,
                    rewrite: (path) => path.replace(/^\/api\/catalog-stats/, "")
                },
                "/api/catalog-assets": {
                    target: "http://localhost:8080/api/catalog-assets",
                    changeOrigin: true,
                    rewrite: (path) => path.replace(/^\/api\/catalog-assets/, "")
                },
                "/api/packages": {
                    target: "http://localhost:8080/api/packages",
                    changeOrigin: true,
                    rewrite: (path) => path.replace(/^\/api\/packages/, "")
                },
                "/packages": {
                    target: "http://localhost:8080",
                    changeOrigin: true
                },
                "/wisp/": {
                    target: "ws://localhost:8080/wisp/",
                    changeOrigin: true,
                    ws: true,
                    rewrite: (path) => path.replace(/^\/wisp\//, "")
                },
                "/styles": {
                    target: "http://localhost:8080",
                    changeOrigin: true
                }
            }
        }
    },
    output: "server",
    adapter: node({
        mode: "middleware"
    })
});