chemicaljs 2.3.1 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +428 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +57 -0
- package/dist/index.d.ts +57 -0
- package/{index.js → dist/index.js} +132 -226
- package/dist/index.js.map +1 -0
- package/package.json +30 -7
- package/client/chemical.components.js +0 -214
- package/client/chemical.demo.html +0 -43
- package/client/chemical.js +0 -465
- package/client/chemical.sw.js +0 -43
- package/config/uv/uv.config.js +0 -10
- package/rammerhead.tgz +0 -0
- package/scramjet/dist/scramjet.client.js +0 -16
- package/scramjet/dist/scramjet.client.js.map +0 -1
- package/scramjet/dist/scramjet.controller.js +0 -11
- package/scramjet/dist/scramjet.controller.js.map +0 -1
- package/scramjet/dist/scramjet.shared.js +0 -38
- package/scramjet/dist/scramjet.shared.js.map +0 -1
- package/scramjet/dist/scramjet.sync.js +0 -2
- package/scramjet/dist/scramjet.sync.js.map +0 -1
- package/scramjet/dist/scramjet.wasm.js +0 -4
- package/scramjet/dist/scramjet.worker.js +0 -148
- package/scramjet/dist/scramjet.worker.js.map +0 -1
- package/scramjet/index.js +0 -8
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
// node_modules/tsup/assets/esm_shims.js
|
|
2
|
+
import { fileURLToPath } from "url";
|
|
3
|
+
import path from "path";
|
|
4
|
+
var getFilename = () => fileURLToPath(import.meta.url);
|
|
5
|
+
var getDirname = () => path.dirname(getFilename());
|
|
6
|
+
var __dirname = /* @__PURE__ */ getDirname();
|
|
7
|
+
|
|
8
|
+
// src/index.ts
|
|
9
|
+
import { resolve } from "node:path";
|
|
2
10
|
import {
|
|
3
11
|
readFileSync,
|
|
4
12
|
cpSync,
|
|
@@ -7,23 +15,19 @@ import {
|
|
|
7
15
|
existsSync,
|
|
8
16
|
mkdirSync,
|
|
9
17
|
rmSync,
|
|
10
|
-
readdirSync
|
|
18
|
+
readdirSync
|
|
11
19
|
} from "node:fs";
|
|
12
20
|
import { createServer } from "node:http";
|
|
13
|
-
import { fileURLToPath } from "node:url";
|
|
14
21
|
import express from "express";
|
|
15
22
|
import { server as wisp, logging } from "@mercuryworkshop/wisp-js/server";
|
|
16
23
|
import { baremuxPath } from "@mercuryworkshop/bare-mux/node";
|
|
17
24
|
import { libcurlPath } from "@mercuryworkshop/libcurl-transport";
|
|
18
25
|
import { epoxyPath } from "@mercuryworkshop/epoxy-transport";
|
|
19
26
|
import { uvPath } from "@titaniumnetwork-dev/ultraviolet";
|
|
20
|
-
import { scramjetPath } from "
|
|
27
|
+
import { scramjetPath } from "@mercuryworkshop/scramjet";
|
|
21
28
|
import createRammerhead from "rammerhead/src/server/index.js";
|
|
22
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
23
|
-
|
|
24
29
|
logging.set_level(logging.ERROR);
|
|
25
|
-
|
|
26
|
-
class ChemicalServer {
|
|
30
|
+
var ChemicalServer = class {
|
|
27
31
|
constructor(options) {
|
|
28
32
|
if (options) {
|
|
29
33
|
if (typeof options !== "object" || Array.isArray(options)) {
|
|
@@ -33,28 +37,22 @@ class ChemicalServer {
|
|
|
33
37
|
} else {
|
|
34
38
|
options = {};
|
|
35
39
|
}
|
|
36
|
-
|
|
37
|
-
if (options.uv === undefined) {
|
|
40
|
+
if (options.uv === void 0) {
|
|
38
41
|
options.uv = true;
|
|
39
42
|
}
|
|
40
|
-
|
|
41
|
-
if (options.scramjet === undefined) {
|
|
43
|
+
if (options.scramjet === void 0) {
|
|
42
44
|
options.scramjet = true;
|
|
43
45
|
}
|
|
44
|
-
|
|
45
|
-
if (options.rammerhead === undefined) {
|
|
46
|
+
if (options.rammerhead === void 0) {
|
|
46
47
|
options.rammerhead = true;
|
|
47
48
|
}
|
|
48
|
-
|
|
49
|
-
if (options.demoMode === undefined) {
|
|
49
|
+
if (options.demoMode === void 0) {
|
|
50
50
|
options.demoMode = false;
|
|
51
51
|
}
|
|
52
|
-
|
|
53
52
|
this.options = options;
|
|
54
53
|
this.server = createServer();
|
|
55
54
|
this.app = express();
|
|
56
55
|
this.app.serveChemical = this.serveChemical;
|
|
57
|
-
|
|
58
56
|
return [this.app, this.listen];
|
|
59
57
|
}
|
|
60
58
|
serveChemical = () => {
|
|
@@ -73,15 +71,12 @@ class ChemicalServer {
|
|
|
73
71
|
"/editsession",
|
|
74
72
|
"/needpassword",
|
|
75
73
|
"/syncLocalStorage",
|
|
76
|
-
"/api/shuffleDict"
|
|
74
|
+
"/api/shuffleDict"
|
|
77
75
|
];
|
|
78
76
|
const rammerheadSession = /^\/[a-z0-9]{32}/;
|
|
79
77
|
const shouldRouteRh = (req) => {
|
|
80
78
|
const url = new URL(req.url, "http://0.0.0.0");
|
|
81
|
-
return (
|
|
82
|
-
rammerheadScopes.includes(url.pathname) ||
|
|
83
|
-
rammerheadSession.test(url.pathname)
|
|
84
|
-
);
|
|
79
|
+
return rammerheadScopes.includes(url.pathname) || rammerheadSession.test(url.pathname);
|
|
85
80
|
};
|
|
86
81
|
const routeRhRequest = (req, res) => {
|
|
87
82
|
rh.emit("request", req, res);
|
|
@@ -89,72 +84,47 @@ class ChemicalServer {
|
|
|
89
84
|
const routeRhUpgrade = (req, socket, head) => {
|
|
90
85
|
rh.emit("upgrade", req, socket, head);
|
|
91
86
|
};
|
|
92
|
-
|
|
93
87
|
this.app.get("/chemical.js", async (req, res) => {
|
|
94
88
|
let chemicalMain = await readFileSync(
|
|
95
|
-
resolve(__dirname, "client/chemical.js"),
|
|
89
|
+
resolve(__dirname, "../client/chemical.js"),
|
|
96
90
|
"utf8"
|
|
97
91
|
);
|
|
98
|
-
|
|
99
92
|
if (this.options.default) {
|
|
100
93
|
if (["uv", "rammerhead", "scramjet"].includes(this.options.default)) {
|
|
101
|
-
chemicalMain =
|
|
102
|
-
|
|
103
|
-
|
|
94
|
+
chemicalMain = `const defaultService = "${this.options.default}";
|
|
95
|
+
|
|
96
|
+
` + chemicalMain;
|
|
104
97
|
} else {
|
|
105
|
-
chemicalMain = `const defaultService = "uv"
|
|
98
|
+
chemicalMain = `const defaultService = "uv";
|
|
99
|
+
|
|
100
|
+
` + chemicalMain;
|
|
106
101
|
console.error("Error: Chemical default option invalid.");
|
|
107
102
|
}
|
|
108
103
|
} else {
|
|
109
|
-
chemicalMain = `const defaultService = "uv"
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
chemicalMain =
|
|
113
|
-
"const uvEnabled = " + String(this.options.uv) + ";\n" + chemicalMain;
|
|
114
|
-
chemicalMain =
|
|
115
|
-
"const scramjetEnabled = " +
|
|
116
|
-
String(this.options.scramjet) +
|
|
117
|
-
";\n" +
|
|
118
|
-
chemicalMain;
|
|
119
|
-
chemicalMain =
|
|
120
|
-
"const rammerheadEnabled = " +
|
|
121
|
-
String(this.options.rammerhead) +
|
|
122
|
-
";\n" +
|
|
123
|
-
chemicalMain;
|
|
124
|
-
chemicalMain =
|
|
125
|
-
"const demoMode = " +
|
|
126
|
-
String(this.options.demoMode) +
|
|
127
|
-
";\n" +
|
|
128
|
-
chemicalMain;
|
|
104
|
+
chemicalMain = `const defaultService = "uv";
|
|
129
105
|
|
|
106
|
+
` + chemicalMain;
|
|
107
|
+
}
|
|
108
|
+
chemicalMain = "const uvEnabled = " + String(this.options.uv) + ";\n" + chemicalMain;
|
|
109
|
+
chemicalMain = "const scramjetEnabled = " + String(this.options.scramjet) + ";\n" + chemicalMain;
|
|
110
|
+
chemicalMain = "const rammerheadEnabled = " + String(this.options.rammerhead) + ";\n" + chemicalMain;
|
|
111
|
+
chemicalMain = "const demoMode = " + String(this.options.demoMode) + ";\n" + chemicalMain;
|
|
130
112
|
chemicalMain = "(async () => {\n" + chemicalMain + "\n})();";
|
|
131
|
-
|
|
132
113
|
res.type("application/javascript");
|
|
133
114
|
return res.send(chemicalMain);
|
|
134
115
|
});
|
|
135
116
|
this.app.get("/chemical.sw.js", async (req, res) => {
|
|
136
117
|
let chemicalSW = await readFileSync(
|
|
137
|
-
resolve(__dirname, "client/chemical.sw.js"),
|
|
118
|
+
resolve(__dirname, "../client/chemical.sw.js"),
|
|
138
119
|
"utf8"
|
|
139
120
|
);
|
|
140
|
-
|
|
141
|
-
chemicalSW =
|
|
142
|
-
|
|
143
|
-
chemicalSW =
|
|
144
|
-
"const scramjetEnabled = " +
|
|
145
|
-
String(this.options.scramjet) +
|
|
146
|
-
";\n" +
|
|
147
|
-
chemicalSW;
|
|
148
|
-
chemicalSW =
|
|
149
|
-
"const rammerheadEnabled = " +
|
|
150
|
-
String(this.options.rammerhead) +
|
|
151
|
-
";\n" +
|
|
152
|
-
chemicalSW;
|
|
153
|
-
|
|
121
|
+
chemicalSW = "const uvEnabled = " + String(this.options.uv) + ";\n" + chemicalSW;
|
|
122
|
+
chemicalSW = "const scramjetEnabled = " + String(this.options.scramjet) + ";\n" + chemicalSW;
|
|
123
|
+
chemicalSW = "const rammerheadEnabled = " + String(this.options.rammerhead) + ";\n" + chemicalSW;
|
|
154
124
|
res.type("application/javascript");
|
|
155
125
|
return res.send(chemicalSW);
|
|
156
126
|
});
|
|
157
|
-
this.app.use(express.static(resolve(__dirname, "client")));
|
|
127
|
+
this.app.use(express.static(resolve(__dirname, "../client")));
|
|
158
128
|
this.app.use("/baremux/", express.static(baremuxPath));
|
|
159
129
|
this.app.use("/libcurl/", express.static(libcurlPath));
|
|
160
130
|
this.app.use("/epoxy/", express.static(epoxyPath));
|
|
@@ -190,9 +160,8 @@ class ChemicalServer {
|
|
|
190
160
|
listen = (port, callback) => {
|
|
191
161
|
this.server.listen(port, callback);
|
|
192
162
|
};
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
const ChemicalVitePlugin = (options) => ({
|
|
163
|
+
};
|
|
164
|
+
var ChemicalVitePlugin = (options) => ({
|
|
196
165
|
name: "chemical-vite-plugin",
|
|
197
166
|
configureServer(server) {
|
|
198
167
|
if (options) {
|
|
@@ -203,23 +172,18 @@ const ChemicalVitePlugin = (options) => ({
|
|
|
203
172
|
} else {
|
|
204
173
|
options = {};
|
|
205
174
|
}
|
|
206
|
-
|
|
207
|
-
if (options.uv === undefined) {
|
|
175
|
+
if (options.uv === void 0) {
|
|
208
176
|
options.uv = true;
|
|
209
177
|
}
|
|
210
|
-
|
|
211
|
-
if (options.scramjet === undefined) {
|
|
178
|
+
if (options.scramjet === void 0) {
|
|
212
179
|
options.scramjet = true;
|
|
213
180
|
}
|
|
214
|
-
|
|
215
|
-
if (options.rammerhead === undefined) {
|
|
181
|
+
if (options.rammerhead === void 0) {
|
|
216
182
|
options.rammerhead = true;
|
|
217
183
|
}
|
|
218
|
-
|
|
219
|
-
if (options.demoMode === undefined) {
|
|
184
|
+
if (options.demoMode === void 0) {
|
|
220
185
|
options.demoMode = false;
|
|
221
186
|
}
|
|
222
|
-
|
|
223
187
|
const rh = createRammerhead();
|
|
224
188
|
const rammerheadScopes = [
|
|
225
189
|
"/rammerhead.js",
|
|
@@ -235,15 +199,12 @@ const ChemicalVitePlugin = (options) => ({
|
|
|
235
199
|
"/editsession",
|
|
236
200
|
"/needpassword",
|
|
237
201
|
"/syncLocalStorage",
|
|
238
|
-
"/api/shuffleDict"
|
|
202
|
+
"/api/shuffleDict"
|
|
239
203
|
];
|
|
240
204
|
const rammerheadSession = /^\/[a-z0-9]{32}/;
|
|
241
205
|
const shouldRouteRh = (req) => {
|
|
242
206
|
const url = new URL(req.url, "http://0.0.0.0");
|
|
243
|
-
return (
|
|
244
|
-
rammerheadScopes.includes(url.pathname) ||
|
|
245
|
-
rammerheadSession.test(url.pathname)
|
|
246
|
-
);
|
|
207
|
+
return rammerheadScopes.includes(url.pathname) || rammerheadSession.test(url.pathname);
|
|
247
208
|
};
|
|
248
209
|
const routeRhRequest = (req, res) => {
|
|
249
210
|
rh.emit("request", req, res);
|
|
@@ -251,69 +212,48 @@ const ChemicalVitePlugin = (options) => ({
|
|
|
251
212
|
const routeRhUpgrade = (req, socket, head) => {
|
|
252
213
|
rh.emit("upgrade", req, socket, head);
|
|
253
214
|
};
|
|
254
|
-
|
|
255
215
|
const app = express();
|
|
256
|
-
app.get("/chemical.js", async function
|
|
216
|
+
app.get("/chemical.js", async function(req, res) {
|
|
257
217
|
let chemicalMain = await readFileSync(
|
|
258
|
-
resolve(__dirname, "client/chemical.js"),
|
|
218
|
+
resolve(__dirname, "../client/chemical.js"),
|
|
259
219
|
"utf8"
|
|
260
220
|
);
|
|
261
|
-
|
|
262
221
|
if (options.default) {
|
|
263
222
|
if (["uv", "rammerhead", "scramjet"].includes(options.default)) {
|
|
264
|
-
chemicalMain =
|
|
265
|
-
|
|
223
|
+
chemicalMain = `const defaultService = "${options.default}";
|
|
224
|
+
|
|
225
|
+
` + chemicalMain;
|
|
266
226
|
} else {
|
|
267
|
-
chemicalMain = `const defaultService = "uv"
|
|
227
|
+
chemicalMain = `const defaultService = "uv";
|
|
228
|
+
|
|
229
|
+
` + chemicalMain;
|
|
268
230
|
console.error("Error: Chemical default option invalid.");
|
|
269
231
|
}
|
|
270
232
|
} else {
|
|
271
|
-
chemicalMain = `const defaultService = "uv"
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
chemicalMain =
|
|
275
|
-
"const uvEnabled = " + String(options.uv) + ";\n" + chemicalMain;
|
|
276
|
-
chemicalMain =
|
|
277
|
-
"const scramjetEnabled = " +
|
|
278
|
-
String(options.scramjet) +
|
|
279
|
-
";\n" +
|
|
280
|
-
chemicalMain;
|
|
281
|
-
chemicalMain =
|
|
282
|
-
"const rammerheadEnabled = " +
|
|
283
|
-
String(options.rammerhead) +
|
|
284
|
-
";\n" +
|
|
285
|
-
chemicalMain;
|
|
286
|
-
chemicalMain =
|
|
287
|
-
"const demoMode = " + String(options.demoMode) + ";\n" + chemicalMain;
|
|
233
|
+
chemicalMain = `const defaultService = "uv";
|
|
288
234
|
|
|
235
|
+
` + chemicalMain;
|
|
236
|
+
}
|
|
237
|
+
chemicalMain = "const uvEnabled = " + String(options.uv) + ";\n" + chemicalMain;
|
|
238
|
+
chemicalMain = "const scramjetEnabled = " + String(options.scramjet) + ";\n" + chemicalMain;
|
|
239
|
+
chemicalMain = "const rammerheadEnabled = " + String(options.rammerhead) + ";\n" + chemicalMain;
|
|
240
|
+
chemicalMain = "const demoMode = " + String(options.demoMode) + ";\n" + chemicalMain;
|
|
289
241
|
chemicalMain = "(async () => {\n" + chemicalMain + "\n})();";
|
|
290
|
-
|
|
291
242
|
res.type("application/javascript");
|
|
292
243
|
return res.send(chemicalMain);
|
|
293
244
|
});
|
|
294
|
-
app.get("/chemical.sw.js", async function
|
|
245
|
+
app.get("/chemical.sw.js", async function(req, res) {
|
|
295
246
|
let chemicalSW = await readFileSync(
|
|
296
|
-
resolve(__dirname, "client/chemical.sw.js"),
|
|
247
|
+
resolve(__dirname, "../client/chemical.sw.js"),
|
|
297
248
|
"utf8"
|
|
298
249
|
);
|
|
299
|
-
|
|
300
|
-
chemicalSW =
|
|
301
|
-
|
|
302
|
-
chemicalSW =
|
|
303
|
-
"const scramjetEnabled = " +
|
|
304
|
-
String(options.scramjet) +
|
|
305
|
-
";\n" +
|
|
306
|
-
chemicalSW;
|
|
307
|
-
chemicalSW =
|
|
308
|
-
"const rammerheadEnabled = " +
|
|
309
|
-
String(options.rammerhead) +
|
|
310
|
-
";\n" +
|
|
311
|
-
chemicalSW;
|
|
312
|
-
|
|
250
|
+
chemicalSW = "const uvEnabled = " + String(options.uv) + ";\n" + chemicalSW;
|
|
251
|
+
chemicalSW = "const scramjetEnabled = " + String(options.scramjet) + ";\n" + chemicalSW;
|
|
252
|
+
chemicalSW = "const rammerheadEnabled = " + String(options.rammerhead) + ";\n" + chemicalSW;
|
|
313
253
|
res.type("application/javascript");
|
|
314
254
|
return res.send(chemicalSW);
|
|
315
255
|
});
|
|
316
|
-
app.use(express.static(resolve(__dirname, "client")));
|
|
256
|
+
app.use(express.static(resolve(__dirname, "../client")));
|
|
317
257
|
app.use("/baremux/", express.static(baremuxPath));
|
|
318
258
|
app.use("/libcurl/", express.static(libcurlPath));
|
|
319
259
|
app.use("/epoxy/", express.static(epoxyPath));
|
|
@@ -325,7 +265,6 @@ const ChemicalVitePlugin = (options) => ({
|
|
|
325
265
|
app.use("/scramjet/", express.static(scramjetPath));
|
|
326
266
|
}
|
|
327
267
|
server.middlewares.use(app);
|
|
328
|
-
|
|
329
268
|
server.middlewares.use((req, res, next) => {
|
|
330
269
|
if (options.rammerhead && shouldRouteRh(req)) {
|
|
331
270
|
routeRhRequest(req, res);
|
|
@@ -333,33 +272,32 @@ const ChemicalVitePlugin = (options) => ({
|
|
|
333
272
|
next();
|
|
334
273
|
}
|
|
335
274
|
});
|
|
336
|
-
|
|
337
|
-
const upgraders = server.httpServer.listeners("upgrade");
|
|
338
|
-
|
|
275
|
+
const upgraders = server.httpServer?.listeners("upgrade");
|
|
339
276
|
for (const upgrader of upgraders) {
|
|
340
|
-
server
|
|
277
|
+
server?.httpServer?.off("upgrade", upgrader);
|
|
341
278
|
}
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
if (
|
|
346
|
-
|
|
347
|
-
|
|
279
|
+
server?.httpServer?.on(
|
|
280
|
+
"upgrade",
|
|
281
|
+
(req, socket, head) => {
|
|
282
|
+
if (req.url && req.url.endsWith("/wisp/")) {
|
|
283
|
+
if (options.wispOptions) {
|
|
284
|
+
for (let option in options.wispOptions) {
|
|
285
|
+
wisp.options[option] = options.wispOptions[option];
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
wisp.routeRequest(req, socket, head);
|
|
289
|
+
} else if (options.rammerhead && shouldRouteRh(req)) {
|
|
290
|
+
routeRhUpgrade(req, socket, head);
|
|
291
|
+
} else {
|
|
292
|
+
for (const upgrader of upgraders) {
|
|
293
|
+
upgrader(req, socket, head);
|
|
348
294
|
}
|
|
349
|
-
}
|
|
350
|
-
wisp.routeRequest(req, socket, head);
|
|
351
|
-
} else if (options.rammerhead && shouldRouteRh(req)) {
|
|
352
|
-
routeRhUpgrade(req, socket, head);
|
|
353
|
-
} else {
|
|
354
|
-
for (const upgrader of upgraders) {
|
|
355
|
-
upgrader(req, socket, head);
|
|
356
295
|
}
|
|
357
296
|
}
|
|
358
|
-
|
|
359
|
-
}
|
|
297
|
+
);
|
|
298
|
+
}
|
|
360
299
|
});
|
|
361
|
-
|
|
362
|
-
class ChemicalBuild {
|
|
300
|
+
var ChemicalBuild = class {
|
|
363
301
|
constructor(options) {
|
|
364
302
|
if (options) {
|
|
365
303
|
if (typeof options !== "object" || Array.isArray(options)) {
|
|
@@ -369,133 +307,101 @@ class ChemicalBuild {
|
|
|
369
307
|
} else {
|
|
370
308
|
options = {};
|
|
371
309
|
}
|
|
372
|
-
|
|
373
|
-
if (options.path === undefined) {
|
|
310
|
+
if (options.path === void 0) {
|
|
374
311
|
options.path = "dist";
|
|
375
312
|
}
|
|
376
|
-
|
|
377
313
|
if (options.path.startsWith("/")) {
|
|
378
314
|
options.path = options.path.substring(1);
|
|
379
315
|
}
|
|
380
|
-
|
|
381
316
|
if (options.path.endsWith("/")) {
|
|
382
317
|
options.path = options.path.slice(0, -1);
|
|
383
318
|
}
|
|
384
|
-
|
|
385
|
-
if (options.uv === undefined) {
|
|
319
|
+
if (options.uv === void 0) {
|
|
386
320
|
options.uv = true;
|
|
387
321
|
}
|
|
388
|
-
|
|
389
|
-
if (options.scramjet === undefined) {
|
|
322
|
+
if (options.scramjet === void 0) {
|
|
390
323
|
options.scramjet = true;
|
|
391
324
|
}
|
|
392
|
-
|
|
393
|
-
if (options.rammerhead === undefined) {
|
|
325
|
+
if (options.rammerhead === void 0) {
|
|
394
326
|
options.rammerhead = true;
|
|
395
327
|
}
|
|
396
|
-
|
|
397
|
-
if (options.demoMode === undefined) {
|
|
328
|
+
if (options.demoMode === void 0) {
|
|
398
329
|
options.demoMode = false;
|
|
399
330
|
}
|
|
400
|
-
|
|
401
331
|
this.options = options;
|
|
402
332
|
}
|
|
403
333
|
async write(deletePath = false) {
|
|
404
|
-
if (!existsSync(resolve(this.options.path))) {
|
|
405
|
-
mkdirSync(resolve(this.options.path), { recursive: true });
|
|
334
|
+
if (!existsSync(resolve(this.options.path || ""))) {
|
|
335
|
+
mkdirSync(resolve(this.options.path || ""), { recursive: true });
|
|
406
336
|
} else {
|
|
407
337
|
if (deletePath) {
|
|
408
|
-
readdirSync(resolve(this.options.path)).forEach(
|
|
409
|
-
rmSync(resolve(this.options.path, file), { recursive: true })
|
|
338
|
+
readdirSync(resolve(this.options.path || "")).forEach(
|
|
339
|
+
(file) => rmSync(resolve(this.options.path || "", file), { recursive: true })
|
|
410
340
|
);
|
|
411
341
|
}
|
|
412
342
|
}
|
|
413
|
-
|
|
414
343
|
let chemicalMain = await readFileSync(
|
|
415
|
-
resolve(__dirname, "client/chemical.js"),
|
|
344
|
+
resolve(__dirname, "../client/chemical.js"),
|
|
416
345
|
"utf8"
|
|
417
346
|
);
|
|
418
|
-
|
|
419
347
|
if (this.options.default) {
|
|
420
348
|
if (["uv", "rammerhead", "scramjet"].includes(this.options.default)) {
|
|
421
|
-
chemicalMain =
|
|
422
|
-
|
|
423
|
-
|
|
349
|
+
chemicalMain = `const defaultService = "${this.options.default}";
|
|
350
|
+
|
|
351
|
+
` + chemicalMain;
|
|
424
352
|
} else {
|
|
425
|
-
chemicalMain = `const defaultService = "uv"
|
|
353
|
+
chemicalMain = `const defaultService = "uv";
|
|
354
|
+
|
|
355
|
+
` + chemicalMain;
|
|
426
356
|
console.error("Error: Chemical default option invalid.");
|
|
427
357
|
}
|
|
428
358
|
} else {
|
|
429
|
-
chemicalMain = `const defaultService = "uv"
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
chemicalMain =
|
|
433
|
-
"const uvEnabled = " + String(this.options.uv) + ";\n" + chemicalMain;
|
|
434
|
-
chemicalMain =
|
|
435
|
-
"const scramjetEnabled = " +
|
|
436
|
-
String(this.options.scramjet) +
|
|
437
|
-
";\n" +
|
|
438
|
-
chemicalMain;
|
|
439
|
-
chemicalMain =
|
|
440
|
-
"const rammerheadEnabled = " +
|
|
441
|
-
String(this.options.rammerhead) +
|
|
442
|
-
";\n" +
|
|
443
|
-
chemicalMain;
|
|
444
|
-
chemicalMain =
|
|
445
|
-
"const demoMode = " +
|
|
446
|
-
String(this.options.demoMode) +
|
|
447
|
-
";\n" +
|
|
448
|
-
chemicalMain;
|
|
359
|
+
chemicalMain = `const defaultService = "uv";
|
|
449
360
|
|
|
361
|
+
` + chemicalMain;
|
|
362
|
+
}
|
|
363
|
+
chemicalMain = "const uvEnabled = " + String(this.options.uv) + ";\n" + chemicalMain;
|
|
364
|
+
chemicalMain = "const scramjetEnabled = " + String(this.options.scramjet) + ";\n" + chemicalMain;
|
|
365
|
+
chemicalMain = "const rammerheadEnabled = " + String(this.options.rammerhead) + ";\n" + chemicalMain;
|
|
366
|
+
chemicalMain = "const demoMode = " + String(this.options.demoMode) + ";\n" + chemicalMain;
|
|
450
367
|
chemicalMain = "(async () => {\n" + chemicalMain + "\n})();";
|
|
451
|
-
|
|
452
|
-
writeFileSync(resolve(this.options.path, "chemical.js"), chemicalMain);
|
|
453
|
-
|
|
368
|
+
writeFileSync(resolve(this.options.path || "", "chemical.js"), chemicalMain);
|
|
454
369
|
let chemicalSW = await readFileSync(
|
|
455
|
-
resolve(__dirname, "client/chemical.sw.js"),
|
|
370
|
+
resolve(__dirname, "../client/chemical.sw.js"),
|
|
456
371
|
"utf8"
|
|
457
372
|
);
|
|
458
|
-
|
|
459
|
-
chemicalSW =
|
|
460
|
-
|
|
461
|
-
chemicalSW
|
|
462
|
-
"const scramjetEnabled = " +
|
|
463
|
-
String(this.options.scramjet) +
|
|
464
|
-
";\n" +
|
|
465
|
-
chemicalSW;
|
|
466
|
-
chemicalSW =
|
|
467
|
-
"const rammerheadEnabled = " +
|
|
468
|
-
String(this.options.rammerhead) +
|
|
469
|
-
";\n" +
|
|
470
|
-
chemicalSW;
|
|
471
|
-
|
|
472
|
-
writeFileSync(resolve(this.options.path, "chemical.sw.js"), chemicalSW);
|
|
473
|
-
|
|
373
|
+
chemicalSW = "const uvEnabled = " + String(this.options.uv) + ";\n" + chemicalSW;
|
|
374
|
+
chemicalSW = "const scramjetEnabled = " + String(this.options.scramjet) + ";\n" + chemicalSW;
|
|
375
|
+
chemicalSW = "const rammerheadEnabled = " + String(this.options.rammerhead) + ";\n" + chemicalSW;
|
|
376
|
+
writeFileSync(resolve(this.options.path || "", "chemical.sw.js"), chemicalSW);
|
|
474
377
|
if (this.options.demoMode) {
|
|
475
378
|
copyFileSync(
|
|
476
379
|
resolve(__dirname, "client/chemical.demo.html"),
|
|
477
|
-
resolve(this.options.path, "chemical.demo.html")
|
|
380
|
+
resolve(this.options.path || "", "chemical.demo.html")
|
|
478
381
|
);
|
|
479
382
|
}
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
recursive: true,
|
|
383
|
+
cpSync(baremuxPath, resolve(this.options.path || "", "baremux"), {
|
|
384
|
+
recursive: true
|
|
483
385
|
});
|
|
484
|
-
cpSync(libcurlPath, resolve(this.options.path, "libcurl"), {
|
|
485
|
-
recursive: true
|
|
386
|
+
cpSync(libcurlPath, resolve(this.options.path || "", "libcurl"), {
|
|
387
|
+
recursive: true
|
|
486
388
|
});
|
|
487
|
-
cpSync(epoxyPath, resolve(this.options.path, "epoxy"), { recursive: true });
|
|
488
|
-
cpSync(libcurlPath, resolve(this.options.path, "libcurl"), {
|
|
489
|
-
recursive: true
|
|
389
|
+
cpSync(epoxyPath, resolve(this.options.path || "", "epoxy"), { recursive: true });
|
|
390
|
+
cpSync(libcurlPath, resolve(this.options.path || "", "libcurl"), {
|
|
391
|
+
recursive: true
|
|
490
392
|
});
|
|
491
393
|
if (this.options.uv) {
|
|
492
|
-
cpSync(uvPath, resolve(this.options.path, "uv"), { recursive: true });
|
|
394
|
+
cpSync(uvPath, resolve(this.options.path || "", "uv"), { recursive: true });
|
|
493
395
|
copyFileSync(
|
|
494
396
|
resolve(__dirname, "config/uv/uv.config.js"),
|
|
495
|
-
resolve(this.options.path, "uv/uv.config.js")
|
|
397
|
+
resolve(this.options.path || "", "uv/uv.config.js")
|
|
496
398
|
);
|
|
497
399
|
}
|
|
498
400
|
}
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
|
|
401
|
+
};
|
|
402
|
+
export {
|
|
403
|
+
ChemicalBuild,
|
|
404
|
+
ChemicalServer,
|
|
405
|
+
ChemicalVitePlugin
|
|
406
|
+
};
|
|
407
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../node_modules/tsup/assets/esm_shims.js","../src/index.ts"],"sourcesContent":["// Shim globals in esm bundle\nimport { fileURLToPath } from 'url'\nimport path from 'path'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n","import { resolve } from \"node:path\";\nimport {\n readFileSync,\n cpSync,\n writeFileSync,\n copyFileSync,\n existsSync,\n mkdirSync,\n rmSync,\n readdirSync,\n} from \"node:fs\";\nimport { createServer, Server } from \"node:http\";\nimport { Socket } from \"node:net\";\nimport express, { Request, Response, application, Next } from \"express\";\n//@ts-ignore\nimport { server as wisp, logging } from \"@mercuryworkshop/wisp-js/server\";\n//@ts-ignore\nimport { baremuxPath } from \"@mercuryworkshop/bare-mux/node\";\nimport { libcurlPath } from \"@mercuryworkshop/libcurl-transport\";\nimport { epoxyPath } from \"@mercuryworkshop/epoxy-transport\";\nimport { uvPath } from \"@titaniumnetwork-dev/ultraviolet\";\nimport { scramjetPath } from \"@mercuryworkshop/scramjet\";\nimport createRammerhead, { RammerheadProxy } from \"rammerhead/src/server/index.js\";\nimport { ViteDevServer } from \"vite\";\n\nlogging.set_level(logging.ERROR);\n\ninterface WispOptions {\n hostname_blacklist?: Array<RegExp>;\n hostname_whitelist?: Array<RegExp>;\n port_blacklist?: (number | Array<number>)[];\n port_whitelist?: (number | Array<number>)[];\n allow_direct_ip?: boolean;\n allow_private_ips?: boolean;\n allow_loopback_ips?: boolean;\n stream_limit_per_host?: number;\n stream_limit_total?: number;\n allow_udp_streams?: boolean;\n allow_tcp_streams?: boolean;\n dns_ttl?: number;\n dns_method?: \"lookup\" | \"resolve\";\n dns_servers?: Array<string>;\n dns_result_order?: \"ipv4first\" | \"ipv6first\" | \"verbatim\";\n parse_real_ip?: boolean;\n parse_real_ip_from?: Array<string>;\n}\n\ninterface Options {\n uv?: boolean;\n scramjet?: boolean;\n rammerhead?: boolean;\n demoMode?: boolean;\n default?: string;\n wispOptions?: WispOptions;\n}\n\ninterface BuildOptions extends Options {\n path?: string;\n}\n\ninterface ChemicalServer {\n options: Options;\n server: Server;\n app: application;\n}\n\ninterface ChemicalBuild {\n options: BuildOptions;\n}\n\nclass ChemicalServer {\n constructor(options: Options) {\n if (options) {\n if (typeof options !== \"object\" || Array.isArray(options)) {\n options = {};\n console.error(\"Error: ChemicalServer options invalid.\");\n }\n } else {\n options = {};\n }\n\n if (options.uv === undefined) {\n options.uv = true;\n }\n\n if (options.scramjet === undefined) {\n options.scramjet = true;\n }\n\n if (options.rammerhead === undefined) {\n options.rammerhead = true;\n }\n\n if (options.demoMode === undefined) {\n options.demoMode = false;\n }\n\n this.options = options;\n this.server = createServer();\n this.app = express();\n this.app.serveChemical = this.serveChemical;\n\n return [this.app, this.listen] as any;\n }\n serveChemical = () => {\n const rh: RammerheadProxy = createRammerhead();\n const rammerheadScopes: Array<string> = [\n \"/rammerhead.js\",\n \"/hammerhead.js\",\n \"/transport-worker.js\",\n \"/task.js\",\n \"/iframe-task.js\",\n \"/worker-hammerhead.js\",\n \"/messaging\",\n \"/sessionexists\",\n \"/deletesession\",\n \"/newsession\",\n \"/editsession\",\n \"/needpassword\",\n \"/syncLocalStorage\",\n \"/api/shuffleDict\",\n ];\n const rammerheadSession: RegExp = /^\\/[a-z0-9]{32}/;\n const shouldRouteRh = (req: Request): boolean => {\n const url = new URL(req.url, \"http://0.0.0.0\");\n return (\n rammerheadScopes.includes(url.pathname) ||\n rammerheadSession.test(url.pathname)\n );\n };\n const routeRhRequest = (req: Request, res: Response) => {\n rh.emit(\"request\", req, res);\n };\n const routeRhUpgrade = (req: Request, socket: Socket, head: Buffer) => {\n rh.emit(\"upgrade\", req, socket, head);\n };\n\n this.app.get(\"/chemical.js\", async (req: Request, res: Response) => {\n let chemicalMain = await readFileSync(\n resolve(__dirname, \"../client/chemical.js\"),\n \"utf8\"\n );\n\n if (this.options.default) {\n if ([\"uv\", \"rammerhead\", \"scramjet\"].includes(this.options.default)) {\n chemicalMain =\n `const defaultService = \"${this.options.default}\";\\n\\n` +\n chemicalMain;\n } else {\n chemicalMain = `const defaultService = \"uv\";\\n\\n` + chemicalMain;\n console.error(\"Error: Chemical default option invalid.\");\n }\n } else {\n chemicalMain = `const defaultService = \"uv\";\\n\\n` + chemicalMain;\n }\n\n chemicalMain =\n \"const uvEnabled = \" + String(this.options.uv) + \";\\n\" + chemicalMain;\n chemicalMain =\n \"const scramjetEnabled = \" +\n String(this.options.scramjet) +\n \";\\n\" +\n chemicalMain;\n chemicalMain =\n \"const rammerheadEnabled = \" +\n String(this.options.rammerhead) +\n \";\\n\" +\n chemicalMain;\n chemicalMain =\n \"const demoMode = \" +\n String(this.options.demoMode) +\n \";\\n\" +\n chemicalMain;\n\n chemicalMain = \"(async () => {\\n\" + chemicalMain + \"\\n})();\";\n\n res.type(\"application/javascript\");\n return res.send(chemicalMain);\n });\n this.app.get(\"/chemical.sw.js\", async (req: Request, res: Response) => {\n let chemicalSW = await readFileSync(\n resolve(__dirname, \"../client/chemical.sw.js\"),\n \"utf8\"\n );\n\n chemicalSW =\n \"const uvEnabled = \" + String(this.options.uv) + \";\\n\" + chemicalSW;\n chemicalSW =\n \"const scramjetEnabled = \" +\n String(this.options.scramjet) +\n \";\\n\" +\n chemicalSW;\n chemicalSW =\n \"const rammerheadEnabled = \" +\n String(this.options.rammerhead) +\n \";\\n\" +\n chemicalSW;\n\n res.type(\"application/javascript\");\n return res.send(chemicalSW);\n });\n this.app.use(express.static(resolve(__dirname, \"../client\")));\n this.app.use(\"/baremux/\", express.static(baremuxPath));\n this.app.use(\"/libcurl/\", express.static(libcurlPath));\n this.app.use(\"/epoxy/\", express.static(epoxyPath));\n if (this.options.uv) {\n this.app.use(\"/uv/\", express.static(resolve(__dirname, \"config/uv\")));\n this.app.use(\"/uv/\", express.static(uvPath));\n }\n if (this.options.scramjet) {\n this.app.use(\"/scramjet/\", express.static(scramjetPath));\n }\n this.server.on(\"request\", (req: Request, res: Response) => {\n if (this.options.rammerhead && shouldRouteRh(req)) {\n routeRhRequest(req, res);\n } else {\n this.app(req, res);\n }\n });\n this.server.on(\"upgrade\", (req: Request, socket: Socket, head: Buffer) => {\n if (req.url && req.url.endsWith(\"/wisp/\")) {\n if (this.options.wispOptions) {\n for (let option in this.options.wispOptions) {\n //@ts-ignore\n wisp.options[option] = this.options.wispOptions[option];\n }\n }\n wisp.routeRequest(req, socket, head);\n } else if (this.options.rammerhead && shouldRouteRh(req)) {\n routeRhUpgrade(req, socket, head);\n } else {\n socket.end();\n }\n });\n };\n listen = (port: number, callback: () => void) => {\n this.server.listen(port, callback);\n };\n}\n\nconst ChemicalVitePlugin = (options: Options) => ({\n name: \"chemical-vite-plugin\",\n configureServer(server: ViteDevServer) {\n if (options) {\n if (typeof options !== \"object\" || Array.isArray(options)) {\n options = {};\n console.error(\"Error: ChemicalServer options invalid.\");\n }\n } else {\n options = {};\n }\n\n if (options.uv === undefined) {\n options.uv = true;\n }\n\n if (options.scramjet === undefined) {\n options.scramjet = true;\n }\n\n if (options.rammerhead === undefined) {\n options.rammerhead = true;\n }\n\n if (options.demoMode === undefined) {\n options.demoMode = false;\n }\n\n const rh: RammerheadProxy = createRammerhead();\n const rammerheadScopes: Array<string> = [\n \"/rammerhead.js\",\n \"/hammerhead.js\",\n \"/transport-worker.js\",\n \"/task.js\",\n \"/iframe-task.js\",\n \"/worker-hammerhead.js\",\n \"/messaging\",\n \"/sessionexists\",\n \"/deletesession\",\n \"/newsession\",\n \"/editsession\",\n \"/needpassword\",\n \"/syncLocalStorage\",\n \"/api/shuffleDict\",\n ];\n const rammerheadSession: RegExp = /^\\/[a-z0-9]{32}/;\n const shouldRouteRh = (req: Request): boolean => {\n const url: URL = new URL(req.url, \"http://0.0.0.0\");\n return (\n rammerheadScopes.includes(url.pathname) ||\n rammerheadSession.test(url.pathname)\n );\n };\n const routeRhRequest = (req: Request, res: Response) => {\n rh.emit(\"request\", req, res);\n };\n const routeRhUpgrade = (req: Request, socket: Socket, head: Buffer) => {\n rh.emit(\"upgrade\", req, socket, head);\n };\n\n const app: application = express();\n app.get(\"/chemical.js\", async function (req: Request, res: Response) {\n let chemicalMain: string = await readFileSync(\n resolve(__dirname, \"../client/chemical.js\"),\n \"utf8\"\n );\n\n if (options.default) {\n if ([\"uv\", \"rammerhead\", \"scramjet\"].includes(options.default)) {\n chemicalMain =\n `const defaultService = \"${options.default}\";\\n\\n` + chemicalMain;\n } else {\n chemicalMain = `const defaultService = \"uv\";\\n\\n` + chemicalMain;\n console.error(\"Error: Chemical default option invalid.\");\n }\n } else {\n chemicalMain = `const defaultService = \"uv\";\\n\\n` + chemicalMain;\n }\n\n chemicalMain =\n \"const uvEnabled = \" + String(options.uv) + \";\\n\" + chemicalMain;\n chemicalMain =\n \"const scramjetEnabled = \" +\n String(options.scramjet) +\n \";\\n\" +\n chemicalMain;\n chemicalMain =\n \"const rammerheadEnabled = \" +\n String(options.rammerhead) +\n \";\\n\" +\n chemicalMain;\n chemicalMain =\n \"const demoMode = \" + String(options.demoMode) + \";\\n\" + chemicalMain;\n\n chemicalMain = \"(async () => {\\n\" + chemicalMain + \"\\n})();\";\n\n res.type(\"application/javascript\");\n return res.send(chemicalMain);\n });\n app.get(\"/chemical.sw.js\", async function (req: Request, res: Response) {\n let chemicalSW: string = await readFileSync(\n resolve(__dirname, \"../client/chemical.sw.js\"),\n \"utf8\"\n );\n\n chemicalSW =\n \"const uvEnabled = \" + String(options.uv) + \";\\n\" + chemicalSW;\n chemicalSW =\n \"const scramjetEnabled = \" +\n String(options.scramjet) +\n \";\\n\" +\n chemicalSW;\n chemicalSW =\n \"const rammerheadEnabled = \" +\n String(options.rammerhead) +\n \";\\n\" +\n chemicalSW;\n\n res.type(\"application/javascript\");\n return res.send(chemicalSW);\n });\n app.use(express.static(resolve(__dirname, \"../client\")));\n app.use(\"/baremux/\", express.static(baremuxPath));\n app.use(\"/libcurl/\", express.static(libcurlPath));\n app.use(\"/epoxy/\", express.static(epoxyPath));\n if (options.uv) {\n app.use(\"/uv/\", express.static(resolve(__dirname, \"config/uv\")));\n app.use(\"/uv/\", express.static(uvPath));\n }\n if (options.scramjet) {\n app.use(\"/scramjet/\", express.static(scramjetPath));\n }\n server.middlewares.use(app);\n\n server.middlewares.use((req: Request, res: Request, next: Next) => {\n if (options.rammerhead && shouldRouteRh(req)) {\n routeRhRequest(req, res);\n } else {\n next();\n }\n });\n\n const upgraders = server.httpServer?.listeners(\"upgrade\") as ((...args: any[]) => void)[];\n\n for (const upgrader of upgraders) {\n server?.httpServer?.off(\"upgrade\", upgrader);\n }\n\n server?.httpServer?.on(\n \"upgrade\",\n (req: Request, socket: Socket, head: Buffer) => {\n if (req.url && req.url.endsWith(\"/wisp/\")) {\n if (options.wispOptions) {\n for (let option in options.wispOptions) {\n //@ts-ignore\n wisp.options[option] = options.wispOptions[option];\n }\n }\n wisp.routeRequest(req, socket, head);\n } else if (options.rammerhead && shouldRouteRh(req)) {\n routeRhUpgrade(req, socket, head);\n } else {\n for (const upgrader of upgraders) {\n upgrader(req, socket, head);\n }\n }\n }\n );\n },\n});\n\nclass ChemicalBuild {\n constructor(options: BuildOptions) {\n if (options) {\n if (typeof options !== \"object\" || Array.isArray(options)) {\n options = {};\n console.error(\"Error: ChemicalBuild options invalid.\");\n }\n } else {\n options = {};\n }\n\n if (options.path === undefined) {\n options.path = \"dist\";\n }\n\n if (options.path.startsWith(\"/\")) {\n options.path = options.path.substring(1);\n }\n\n if (options.path.endsWith(\"/\")) {\n options.path = options.path.slice(0, -1);\n }\n\n if (options.uv === undefined) {\n options.uv = true;\n }\n\n if (options.scramjet === undefined) {\n options.scramjet = true;\n }\n\n if (options.rammerhead === undefined) {\n options.rammerhead = true;\n }\n\n if (options.demoMode === undefined) {\n options.demoMode = false;\n }\n\n this.options = options;\n }\n async write(deletePath: boolean = false) {\n if (!existsSync(resolve(this.options.path || \"\"))) {\n mkdirSync(resolve(this.options.path || \"\"), { recursive: true });\n } else {\n if (deletePath) {\n readdirSync(resolve(this.options.path || \"\")).forEach((file) =>\n rmSync(resolve(this.options.path || \"\", file), { recursive: true })\n );\n }\n }\n\n let chemicalMain: string = await readFileSync(\n resolve(__dirname, \"../client/chemical.js\"),\n \"utf8\"\n );\n\n if (this.options.default) {\n if ([\"uv\", \"rammerhead\", \"scramjet\"].includes(this.options.default)) {\n chemicalMain =\n `const defaultService = \"${this.options.default}\";\\n\\n` +\n chemicalMain;\n } else {\n chemicalMain = `const defaultService = \"uv\";\\n\\n` + chemicalMain;\n console.error(\"Error: Chemical default option invalid.\");\n }\n } else {\n chemicalMain = `const defaultService = \"uv\";\\n\\n` + chemicalMain;\n }\n\n chemicalMain =\n \"const uvEnabled = \" + String(this.options.uv) + \";\\n\" + chemicalMain;\n chemicalMain =\n \"const scramjetEnabled = \" +\n String(this.options.scramjet) +\n \";\\n\" +\n chemicalMain;\n chemicalMain =\n \"const rammerheadEnabled = \" +\n String(this.options.rammerhead) +\n \";\\n\" +\n chemicalMain;\n chemicalMain =\n \"const demoMode = \" +\n String(this.options.demoMode) +\n \";\\n\" +\n chemicalMain;\n\n chemicalMain = \"(async () => {\\n\" + chemicalMain + \"\\n})();\";\n\n writeFileSync(resolve(this.options.path || \"\", \"chemical.js\"), chemicalMain);\n\n let chemicalSW: string = await readFileSync(\n resolve(__dirname, \"../client/chemical.sw.js\"),\n \"utf8\"\n );\n\n chemicalSW =\n \"const uvEnabled = \" + String(this.options.uv) + \";\\n\" + chemicalSW;\n chemicalSW =\n \"const scramjetEnabled = \" +\n String(this.options.scramjet) +\n \";\\n\" +\n chemicalSW;\n chemicalSW =\n \"const rammerheadEnabled = \" +\n String(this.options.rammerhead) +\n \";\\n\" +\n chemicalSW;\n\n writeFileSync(resolve(this.options.path || \"\", \"chemical.sw.js\"), chemicalSW);\n\n if (this.options.demoMode) {\n copyFileSync(\n resolve(__dirname, \"client/chemical.demo.html\"),\n resolve(this.options.path || \"\", \"chemical.demo.html\")\n );\n }\n\n cpSync(baremuxPath, resolve(this.options.path || \"\", \"baremux\"), {\n recursive: true,\n });\n cpSync(libcurlPath, resolve(this.options.path || \"\", \"libcurl\"), {\n recursive: true,\n });\n cpSync(epoxyPath, resolve(this.options.path || \"\", \"epoxy\"), { recursive: true });\n cpSync(libcurlPath, resolve(this.options.path || \"\", \"libcurl\"), {\n recursive: true,\n });\n if (this.options.uv) {\n cpSync(uvPath, resolve(this.options.path || \"\", \"uv\"), { recursive: true });\n copyFileSync(\n resolve(__dirname, \"config/uv/uv.config.js\"),\n resolve(this.options.path || \"\", \"uv/uv.config.js\")\n );\n }\n }\n}\n\nexport { ChemicalServer, ChemicalBuild, ChemicalVitePlugin };\n"],"mappings":"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","names":[]}
|