chemicaljs 2.4.1 → 2.5.1

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.
@@ -223,7 +223,7 @@ async function encodeService(url, service) {
223
223
  );
224
224
  }
225
225
  break;
226
- case "rammerhead":
226
+ case "rh":
227
227
  if (rammerheadEnabled) {
228
228
  return window.location.origin + (await rammerheadEncode(url));
229
229
  }
@@ -287,7 +287,7 @@ window.chemical.decode = async function (url, config) {
287
287
  return __uv$config.decodeUrl(url.split(__uv$config.prefix)[1]);
288
288
  }
289
289
  break;
290
- case "rammerhead":
290
+ case "rh":
291
291
  if (rammerheadEnabled) {
292
292
  return await rammerheadEncode(
293
293
  url.split(window.location.origin)[1],
@@ -437,8 +437,8 @@ function setupFetch() {
437
437
 
438
438
  await loadScript("/baremux/index.js");
439
439
  if (uvEnabled) {
440
- await loadScript("/uv/uv.bundle.js");
441
- await loadScript("/uv/uv.config.js");
440
+ await loadScript(`/${uvRandomPath}/${uvRandomPath}.bundle.js`);
441
+ await loadScript(`/${uvRandomPath}/${uvRandomPath}.config.js`);
442
442
  }
443
443
  if (scramjetEnabled) {
444
444
  await loadScript("/scramjet/scramjet.shared.js");
@@ -448,8 +448,8 @@ if (scramjetEnabled) {
448
448
  files: {
449
449
  wasm: "/scramjet/scramjet.wasm.js",
450
450
  worker: "/scramjet/scramjet.worker.js",
451
- client: "/scramjetetscramjet.client.js",
452
- shared: "/scramjetetscramjet.shared.js",
451
+ client: "/scramjet/scramjet.client.js",
452
+ shared: "/scramjet/scramjet.shared.js",
453
453
  sync: "/scramjet/scramjet.sync.js",
454
454
  },
455
455
  });
@@ -1,7 +1,7 @@
1
1
  if (uvEnabled) {
2
- importScripts("/uv/uv.bundle.js");
3
- importScripts("/uv/uv.config.js");
4
- importScripts(__uv$config.sw || "/uv/uv.sw.js");
2
+ importScripts(`/${uvRandomPath}/${uvRandomPath}.bundle.js`);
3
+ importScripts(`/${uvRandomPath}/${uvRandomPath}.config.js`);
4
+ importScripts(__uv$config.sw || `/${uvRandomPath}/${uvRandomPath}.sw.js`);
5
5
  }
6
6
  if (scramjetEnabled) {
7
7
  importScripts("/scramjet/scramjet.wasm.js");
package/dist/index.cjs CHANGED
@@ -35,7 +35,13 @@ __export(src_exports, {
35
35
  ChemicalVitePlugin: () => ChemicalVitePlugin
36
36
  });
37
37
  module.exports = __toCommonJS(src_exports);
38
- var import_node_path = require("path");
38
+
39
+ // node_modules/tsup/assets/cjs_shims.js
40
+ var getImportMetaUrl = () => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.src || new URL("main.js", document.baseURI).href;
41
+ var importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
42
+
43
+ // src/index.ts
44
+ var import_node_path2 = require("path");
39
45
  var import_node_fs = require("fs");
40
46
  var import_node_http = require("http");
41
47
  var import_express = __toESM(require("express"), 1);
@@ -43,12 +49,22 @@ var import_server = require("@mercuryworkshop/wisp-js/server");
43
49
  var import_node = require("@mercuryworkshop/bare-mux/node");
44
50
  var import_libcurl_transport = require("@mercuryworkshop/libcurl-transport");
45
51
  var import_epoxy_transport = require("@mercuryworkshop/epoxy-transport");
46
- var import_ultraviolet = require("@titaniumnetwork-dev/ultraviolet");
52
+
53
+ // ultraviolet/index.js
54
+ var import_node_path = require("path");
55
+ var import_node_url = require("url");
56
+ var __dirname2 = (0, import_node_path.dirname)((0, import_node_url.fileURLToPath)(importMetaUrl));
57
+ var uvPath = (0, import_node_path.resolve)(__dirname2, "../ultraviolet/dist/");
58
+
59
+ // ultraviolet/path.js
60
+ var uvRandomPath = "PGtWY2ZzjT";
61
+
62
+ // src/index.ts
47
63
  var import_scramjet = require("@mercuryworkshop/scramjet");
48
64
  var import_server2 = __toESM(require("rammerhead/src/server/index.js"), 1);
49
65
  import_server.logging.set_level(import_server.logging.ERROR);
50
66
  var ChemicalServer = class {
51
- constructor(options) {
67
+ constructor(options = {}) {
52
68
  if (options) {
53
69
  if (typeof options !== "object" || Array.isArray(options)) {
54
70
  options = {};
@@ -63,8 +79,8 @@ var ChemicalServer = class {
63
79
  if (options.scramjet === void 0) {
64
80
  options.scramjet = true;
65
81
  }
66
- if (options.rammerhead === void 0) {
67
- options.rammerhead = true;
82
+ if (options.rh === void 0) {
83
+ options.rh = true;
68
84
  }
69
85
  if (options.demoMode === void 0) {
70
86
  options.demoMode = false;
@@ -73,7 +89,9 @@ var ChemicalServer = class {
73
89
  this.server = (0, import_node_http.createServer)();
74
90
  this.app = (0, import_express.default)();
75
91
  this.app.serveChemical = this.serveChemical;
76
- return [this.app, this.listen];
92
+ }
93
+ [Symbol.iterator]() {
94
+ return [this.app, this.listen][Symbol.iterator]();
77
95
  }
78
96
  serveChemical = () => {
79
97
  const rh = (0, import_server2.default)();
@@ -106,11 +124,11 @@ var ChemicalServer = class {
106
124
  };
107
125
  this.app.get("/chemical.js", async (req, res) => {
108
126
  let chemicalMain = await (0, import_node_fs.readFileSync)(
109
- (0, import_node_path.resolve)(__dirname, "../client/chemical.js"),
127
+ (0, import_node_path2.resolve)(__dirname, "../client/chemical.js"),
110
128
  "utf8"
111
129
  );
112
130
  if (this.options.default) {
113
- if (["uv", "rammerhead", "scramjet"].includes(this.options.default)) {
131
+ if (["uv", "rh", "scramjet"].includes(this.options.default)) {
114
132
  chemicalMain = `const defaultService = "${this.options.default}";
115
133
 
116
134
  ` + chemicalMain;
@@ -127,36 +145,39 @@ var ChemicalServer = class {
127
145
  }
128
146
  chemicalMain = "const uvEnabled = " + String(this.options.uv) + ";\n" + chemicalMain;
129
147
  chemicalMain = "const scramjetEnabled = " + String(this.options.scramjet) + ";\n" + chemicalMain;
130
- chemicalMain = "const rammerheadEnabled = " + String(this.options.rammerhead) + ";\n" + chemicalMain;
148
+ chemicalMain = "const rammerheadEnabled = " + String(this.options.rh) + ";\n" + chemicalMain;
131
149
  chemicalMain = "const demoMode = " + String(this.options.demoMode) + ";\n" + chemicalMain;
150
+ chemicalMain = `const uvRandomPath = "${String(uvRandomPath)}";
151
+ ` + chemicalMain;
132
152
  chemicalMain = "(async () => {\n" + chemicalMain + "\n})();";
133
153
  res.type("application/javascript");
134
154
  return res.send(chemicalMain);
135
155
  });
136
156
  this.app.get("/chemical.sw.js", async (req, res) => {
137
157
  let chemicalSW = await (0, import_node_fs.readFileSync)(
138
- (0, import_node_path.resolve)(__dirname, "../client/chemical.sw.js"),
158
+ (0, import_node_path2.resolve)(__dirname, "../client/chemical.sw.js"),
139
159
  "utf8"
140
160
  );
141
161
  chemicalSW = "const uvEnabled = " + String(this.options.uv) + ";\n" + chemicalSW;
142
162
  chemicalSW = "const scramjetEnabled = " + String(this.options.scramjet) + ";\n" + chemicalSW;
143
- chemicalSW = "const rammerheadEnabled = " + String(this.options.rammerhead) + ";\n" + chemicalSW;
163
+ chemicalSW = "const rammerheadEnabled = " + String(this.options.rh) + ";\n" + chemicalSW;
164
+ chemicalSW = `const uvRandomPath = "${String(uvRandomPath)}";
165
+ ` + chemicalSW;
144
166
  res.type("application/javascript");
145
167
  return res.send(chemicalSW);
146
168
  });
147
- this.app.use(import_express.default.static((0, import_node_path.resolve)(__dirname, "../client")));
169
+ this.app.use(import_express.default.static((0, import_node_path2.resolve)(__dirname, "../client")));
148
170
  this.app.use("/baremux/", import_express.default.static(import_node.baremuxPath));
149
171
  this.app.use("/libcurl/", import_express.default.static(import_libcurl_transport.libcurlPath));
150
172
  this.app.use("/epoxy/", import_express.default.static(import_epoxy_transport.epoxyPath));
151
173
  if (this.options.uv) {
152
- this.app.use("/uv/", import_express.default.static((0, import_node_path.resolve)(__dirname, "config/uv")));
153
- this.app.use("/uv/", import_express.default.static(import_ultraviolet.uvPath));
174
+ this.app.use(`/${uvRandomPath}/`, import_express.default.static(uvPath));
154
175
  }
155
176
  if (this.options.scramjet) {
156
177
  this.app.use("/scramjet/", import_express.default.static(import_scramjet.scramjetPath));
157
178
  }
158
179
  this.server.on("request", (req, res) => {
159
- if (this.options.rammerhead && shouldRouteRh(req)) {
180
+ if (this.options.rh && shouldRouteRh(req)) {
160
181
  routeRhRequest(req, res);
161
182
  } else {
162
183
  this.app(req, res);
@@ -170,7 +191,7 @@ var ChemicalServer = class {
170
191
  }
171
192
  }
172
193
  import_server.server.routeRequest(req, socket, head);
173
- } else if (this.options.rammerhead && shouldRouteRh(req)) {
194
+ } else if (this.options.rh && shouldRouteRh(req)) {
174
195
  routeRhUpgrade(req, socket, head);
175
196
  } else {
176
197
  socket.end();
@@ -198,8 +219,8 @@ var ChemicalVitePlugin = (options) => ({
198
219
  if (options.scramjet === void 0) {
199
220
  options.scramjet = true;
200
221
  }
201
- if (options.rammerhead === void 0) {
202
- options.rammerhead = true;
222
+ if (options.rh === void 0) {
223
+ options.rh = true;
203
224
  }
204
225
  if (options.demoMode === void 0) {
205
226
  options.demoMode = false;
@@ -235,11 +256,11 @@ var ChemicalVitePlugin = (options) => ({
235
256
  const app = (0, import_express.default)();
236
257
  app.get("/chemical.js", async function(req, res) {
237
258
  let chemicalMain = await (0, import_node_fs.readFileSync)(
238
- (0, import_node_path.resolve)(__dirname, "../client/chemical.js"),
259
+ (0, import_node_path2.resolve)(__dirname, "../client/chemical.js"),
239
260
  "utf8"
240
261
  );
241
262
  if (options.default) {
242
- if (["uv", "rammerhead", "scramjet"].includes(options.default)) {
263
+ if (["uv", "rh", "scramjet"].includes(options.default)) {
243
264
  chemicalMain = `const defaultService = "${options.default}";
244
265
 
245
266
  ` + chemicalMain;
@@ -256,37 +277,40 @@ var ChemicalVitePlugin = (options) => ({
256
277
  }
257
278
  chemicalMain = "const uvEnabled = " + String(options.uv) + ";\n" + chemicalMain;
258
279
  chemicalMain = "const scramjetEnabled = " + String(options.scramjet) + ";\n" + chemicalMain;
259
- chemicalMain = "const rammerheadEnabled = " + String(options.rammerhead) + ";\n" + chemicalMain;
280
+ chemicalMain = "const rammerheadEnabled = " + String(options.rh) + ";\n" + chemicalMain;
260
281
  chemicalMain = "const demoMode = " + String(options.demoMode) + ";\n" + chemicalMain;
282
+ chemicalMain = `const uvRandomPath = "${String(uvRandomPath)}";
283
+ ` + chemicalMain;
261
284
  chemicalMain = "(async () => {\n" + chemicalMain + "\n})();";
262
285
  res.type("application/javascript");
263
286
  return res.send(chemicalMain);
264
287
  });
265
288
  app.get("/chemical.sw.js", async function(req, res) {
266
289
  let chemicalSW = await (0, import_node_fs.readFileSync)(
267
- (0, import_node_path.resolve)(__dirname, "../client/chemical.sw.js"),
290
+ (0, import_node_path2.resolve)(__dirname, "../client/chemical.sw.js"),
268
291
  "utf8"
269
292
  );
270
293
  chemicalSW = "const uvEnabled = " + String(options.uv) + ";\n" + chemicalSW;
271
294
  chemicalSW = "const scramjetEnabled = " + String(options.scramjet) + ";\n" + chemicalSW;
272
- chemicalSW = "const rammerheadEnabled = " + String(options.rammerhead) + ";\n" + chemicalSW;
295
+ chemicalSW = "const rammerheadEnabled = " + String(options.rh) + ";\n" + chemicalSW;
296
+ chemicalSW = `const uvRandomPath = "${String(uvRandomPath)}";
297
+ ` + chemicalSW;
273
298
  res.type("application/javascript");
274
299
  return res.send(chemicalSW);
275
300
  });
276
- app.use(import_express.default.static((0, import_node_path.resolve)(__dirname, "../client")));
301
+ app.use(import_express.default.static((0, import_node_path2.resolve)(__dirname, "../client")));
277
302
  app.use("/baremux/", import_express.default.static(import_node.baremuxPath));
278
303
  app.use("/libcurl/", import_express.default.static(import_libcurl_transport.libcurlPath));
279
304
  app.use("/epoxy/", import_express.default.static(import_epoxy_transport.epoxyPath));
280
305
  if (options.uv) {
281
- app.use("/uv/", import_express.default.static((0, import_node_path.resolve)(__dirname, "config/uv")));
282
- app.use("/uv/", import_express.default.static(import_ultraviolet.uvPath));
306
+ app.use(`/${uvRandomPath}/`, import_express.default.static(uvPath));
283
307
  }
284
308
  if (options.scramjet) {
285
309
  app.use("/scramjet/", import_express.default.static(import_scramjet.scramjetPath));
286
310
  }
287
311
  server.middlewares.use(app);
288
312
  server.middlewares.use((req, res, next) => {
289
- if (options.rammerhead && shouldRouteRh(req)) {
313
+ if (options.rh && shouldRouteRh(req)) {
290
314
  routeRhRequest(req, res);
291
315
  } else {
292
316
  next();
@@ -306,7 +330,7 @@ var ChemicalVitePlugin = (options) => ({
306
330
  }
307
331
  }
308
332
  import_server.server.routeRequest(req, socket, head);
309
- } else if (options.rammerhead && shouldRouteRh(req)) {
333
+ } else if (options.rh && shouldRouteRh(req)) {
310
334
  routeRhUpgrade(req, socket, head);
311
335
  } else {
312
336
  for (const upgrader of upgraders) {
@@ -342,8 +366,8 @@ var ChemicalBuild = class {
342
366
  if (options.scramjet === void 0) {
343
367
  options.scramjet = true;
344
368
  }
345
- if (options.rammerhead === void 0) {
346
- options.rammerhead = true;
369
+ if (options.rh === void 0) {
370
+ options.rh = true;
347
371
  }
348
372
  if (options.demoMode === void 0) {
349
373
  options.demoMode = false;
@@ -351,21 +375,21 @@ var ChemicalBuild = class {
351
375
  this.options = options;
352
376
  }
353
377
  async write(deletePath = false) {
354
- if (!(0, import_node_fs.existsSync)((0, import_node_path.resolve)(this.options.path || ""))) {
355
- (0, import_node_fs.mkdirSync)((0, import_node_path.resolve)(this.options.path || ""), { recursive: true });
378
+ if (!(0, import_node_fs.existsSync)((0, import_node_path2.resolve)(this.options.path || ""))) {
379
+ (0, import_node_fs.mkdirSync)((0, import_node_path2.resolve)(this.options.path || ""), { recursive: true });
356
380
  } else {
357
381
  if (deletePath) {
358
- (0, import_node_fs.readdirSync)((0, import_node_path.resolve)(this.options.path || "")).forEach(
359
- (file) => (0, import_node_fs.rmSync)((0, import_node_path.resolve)(this.options.path || "", file), { recursive: true })
382
+ (0, import_node_fs.readdirSync)((0, import_node_path2.resolve)(this.options.path || "")).forEach(
383
+ (file) => (0, import_node_fs.rmSync)((0, import_node_path2.resolve)(this.options.path || "", file), { recursive: true })
360
384
  );
361
385
  }
362
386
  }
363
387
  let chemicalMain = await (0, import_node_fs.readFileSync)(
364
- (0, import_node_path.resolve)(__dirname, "../client/chemical.js"),
388
+ (0, import_node_path2.resolve)(__dirname, "../client/chemical.js"),
365
389
  "utf8"
366
390
  );
367
391
  if (this.options.default) {
368
- if (["uv", "rammerhead", "scramjet"].includes(this.options.default)) {
392
+ if (["uv", "rh", "scramjet"].includes(this.options.default)) {
369
393
  chemicalMain = `const defaultService = "${this.options.default}";
370
394
 
371
395
  ` + chemicalMain;
@@ -382,40 +406,50 @@ var ChemicalBuild = class {
382
406
  }
383
407
  chemicalMain = "const uvEnabled = " + String(this.options.uv) + ";\n" + chemicalMain;
384
408
  chemicalMain = "const scramjetEnabled = " + String(this.options.scramjet) + ";\n" + chemicalMain;
385
- chemicalMain = "const rammerheadEnabled = " + String(this.options.rammerhead) + ";\n" + chemicalMain;
409
+ chemicalMain = "const rammerheadEnabled = " + String(this.options.rh) + ";\n" + chemicalMain;
386
410
  chemicalMain = "const demoMode = " + String(this.options.demoMode) + ";\n" + chemicalMain;
411
+ chemicalMain = `const uvRandomPath = "${String(uvRandomPath)}";
412
+ ` + chemicalMain;
387
413
  chemicalMain = "(async () => {\n" + chemicalMain + "\n})();";
388
- (0, import_node_fs.writeFileSync)((0, import_node_path.resolve)(this.options.path || "", "chemical.js"), chemicalMain);
414
+ (0, import_node_fs.writeFileSync)(
415
+ (0, import_node_path2.resolve)(this.options.path || "", "chemical.js"),
416
+ chemicalMain
417
+ );
389
418
  let chemicalSW = await (0, import_node_fs.readFileSync)(
390
- (0, import_node_path.resolve)(__dirname, "../client/chemical.sw.js"),
419
+ (0, import_node_path2.resolve)(__dirname, "../client/chemical.sw.js"),
391
420
  "utf8"
392
421
  );
393
422
  chemicalSW = "const uvEnabled = " + String(this.options.uv) + ";\n" + chemicalSW;
394
423
  chemicalSW = "const scramjetEnabled = " + String(this.options.scramjet) + ";\n" + chemicalSW;
395
- chemicalSW = "const rammerheadEnabled = " + String(this.options.rammerhead) + ";\n" + chemicalSW;
396
- (0, import_node_fs.writeFileSync)((0, import_node_path.resolve)(this.options.path || "", "chemical.sw.js"), chemicalSW);
424
+ chemicalSW = "const rammerheadEnabled = " + String(this.options.rh) + ";\n" + chemicalSW;
425
+ chemicalSW = `const uvRandomPath = "${String(uvRandomPath)}";
426
+ ` + chemicalSW;
427
+ (0, import_node_fs.writeFileSync)(
428
+ (0, import_node_path2.resolve)(this.options.path || "", "chemical.sw.js"),
429
+ chemicalSW
430
+ );
397
431
  if (this.options.demoMode) {
398
432
  (0, import_node_fs.copyFileSync)(
399
- (0, import_node_path.resolve)(__dirname, "client/chemical.demo.html"),
400
- (0, import_node_path.resolve)(this.options.path || "", "chemical.demo.html")
433
+ (0, import_node_path2.resolve)(__dirname, "client/chemical.demo.html"),
434
+ (0, import_node_path2.resolve)(this.options.path || "", "chemical.demo.html")
401
435
  );
402
436
  }
403
- (0, import_node_fs.cpSync)(import_node.baremuxPath, (0, import_node_path.resolve)(this.options.path || "", "baremux"), {
437
+ (0, import_node_fs.cpSync)(import_node.baremuxPath, (0, import_node_path2.resolve)(this.options.path || "", "baremux"), {
438
+ recursive: true
439
+ });
440
+ (0, import_node_fs.cpSync)(import_libcurl_transport.libcurlPath, (0, import_node_path2.resolve)(this.options.path || "", "libcurl"), {
404
441
  recursive: true
405
442
  });
406
- (0, import_node_fs.cpSync)(import_libcurl_transport.libcurlPath, (0, import_node_path.resolve)(this.options.path || "", "libcurl"), {
443
+ (0, import_node_fs.cpSync)(import_epoxy_transport.epoxyPath, (0, import_node_path2.resolve)(this.options.path || "", "epoxy"), {
407
444
  recursive: true
408
445
  });
409
- (0, import_node_fs.cpSync)(import_epoxy_transport.epoxyPath, (0, import_node_path.resolve)(this.options.path || "", "epoxy"), { recursive: true });
410
- (0, import_node_fs.cpSync)(import_libcurl_transport.libcurlPath, (0, import_node_path.resolve)(this.options.path || "", "libcurl"), {
446
+ (0, import_node_fs.cpSync)(import_libcurl_transport.libcurlPath, (0, import_node_path2.resolve)(this.options.path || "", "libcurl"), {
411
447
  recursive: true
412
448
  });
413
449
  if (this.options.uv) {
414
- (0, import_node_fs.cpSync)(import_ultraviolet.uvPath, (0, import_node_path.resolve)(this.options.path || "", "uv"), { recursive: true });
415
- (0, import_node_fs.copyFileSync)(
416
- (0, import_node_path.resolve)(__dirname, "config/uv/uv.config.js"),
417
- (0, import_node_path.resolve)(this.options.path || "", "uv/uv.config.js")
418
- );
450
+ (0, import_node_fs.cpSync)(uvPath, (0, import_node_path2.resolve)(this.options.path || "", uvRandomPath), {
451
+ recursive: true
452
+ });
419
453
  }
420
454
  }
421
455
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["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":["import_server","express","createRammerhead","wisp"]}
1
+ {"version":3,"sources":["../src/index.ts","../node_modules/tsup/assets/cjs_shims.js","../ultraviolet/index.js","../ultraviolet/path.js"],"sourcesContent":["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 \"../ultraviolet/index.js\";\nimport { uvRandomPath } from \"../ultraviolet/path.js\";\nimport { scramjetPath } from \"@mercuryworkshop/scramjet\";\nimport createRammerhead, {\n RammerheadProxy,\n} 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 rh?: 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.rh === undefined) {\n options.rh = 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 [Symbol.iterator](): Iterator<application | Function> {\n return [this.app, this.listen][Symbol.iterator]();\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\", \"rh\", \"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.rh) +\n \";\\n\" +\n chemicalMain;\n chemicalMain =\n \"const demoMode = \" +\n String(this.options.demoMode) +\n \";\\n\" +\n chemicalMain;\n chemicalMain =\n `const uvRandomPath = \"${String(uvRandomPath)}\";\\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.rh) +\n \";\\n\" +\n chemicalSW;\n chemicalSW =\n `const uvRandomPath = \"${String(uvRandomPath)}\";\\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(`/${uvRandomPath}/`, 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.rh && 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.rh && 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.rh === undefined) {\n options.rh = 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\", \"rh\", \"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.rh) +\n \";\\n\" +\n chemicalMain;\n chemicalMain =\n \"const demoMode = \" + String(options.demoMode) + \";\\n\" + chemicalMain;\n chemicalMain =\n `const uvRandomPath = \"${String(uvRandomPath)}\";\\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.rh) +\n \";\\n\" +\n chemicalSW;\n chemicalSW =\n `const uvRandomPath = \"${String(uvRandomPath)}\";\\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(`/${uvRandomPath}/`, 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.rh && shouldRouteRh(req)) {\n routeRhRequest(req, res);\n } else {\n next();\n }\n });\n\n const upgraders = server.httpServer?.listeners(\"upgrade\") as ((\n ...args: any[]\n ) => 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.rh && 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.rh === undefined) {\n options.rh = 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\", \"rh\", \"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.rh) +\n \";\\n\" +\n chemicalMain;\n chemicalMain =\n \"const demoMode = \" +\n String(this.options.demoMode) +\n \";\\n\" +\n chemicalMain;\n chemicalMain =\n `const uvRandomPath = \"${String(uvRandomPath)}\";\\n` + chemicalMain;\n\n chemicalMain = \"(async () => {\\n\" + chemicalMain + \"\\n})();\";\n\n writeFileSync(\n resolve(this.options.path || \"\", \"chemical.js\"),\n chemicalMain\n );\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.rh) +\n \";\\n\" +\n chemicalSW;\n chemicalSW =\n `const uvRandomPath = \"${String(uvRandomPath)}\";\\n` + chemicalSW;\n\n writeFileSync(\n resolve(this.options.path || \"\", \"chemical.sw.js\"),\n chemicalSW\n );\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\"), {\n recursive: true,\n });\n cpSync(libcurlPath, resolve(this.options.path || \"\", \"libcurl\"), {\n recursive: true,\n });\n if (this.options.uv) {\n cpSync(uvPath, resolve(this.options.path || \"\", uvRandomPath), {\n recursive: true,\n });\n }\n }\n}\n\nexport { ChemicalServer, ChemicalBuild, ChemicalVitePlugin };\n","// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () =>\n typeof document === 'undefined'\n ? new URL(`file:${__filename}`).href\n : (document.currentScript && document.currentScript.src) ||\n new URL('main.js', document.baseURI).href\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n","import { resolve, dirname } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nconst uvPath = resolve(__dirname, \"../ultraviolet/dist/\");\n\nexport { uvPath };\n","const uvRandomPath = \"PGtWY2ZzjT\";\n\nexport { uvRandomPath };"],"mappings":"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","names":["import_node_path","__dirname","import_server","express","createRammerhead","wisp"]}
package/dist/index.d.cts CHANGED
@@ -24,7 +24,7 @@ interface WispOptions {
24
24
  interface Options {
25
25
  uv?: boolean;
26
26
  scramjet?: boolean;
27
- rammerhead?: boolean;
27
+ rh?: boolean;
28
28
  demoMode?: boolean;
29
29
  default?: string;
30
30
  wispOptions?: WispOptions;
@@ -38,7 +38,8 @@ interface ChemicalServer {
38
38
  app: application;
39
39
  }
40
40
  declare class ChemicalServer {
41
- constructor(options: Options);
41
+ constructor(options?: Options);
42
+ [Symbol.iterator](): Iterator<application | Function>;
42
43
  serveChemical: () => void;
43
44
  listen: (port: number, callback: () => void) => void;
44
45
  }
package/dist/index.d.ts CHANGED
@@ -24,7 +24,7 @@ interface WispOptions {
24
24
  interface Options {
25
25
  uv?: boolean;
26
26
  scramjet?: boolean;
27
- rammerhead?: boolean;
27
+ rh?: boolean;
28
28
  demoMode?: boolean;
29
29
  default?: string;
30
30
  wispOptions?: WispOptions;
@@ -38,7 +38,8 @@ interface ChemicalServer {
38
38
  app: application;
39
39
  }
40
40
  declare class ChemicalServer {
41
- constructor(options: Options);
41
+ constructor(options?: Options);
42
+ [Symbol.iterator](): Iterator<application | Function>;
42
43
  serveChemical: () => void;
43
44
  listen: (port: number, callback: () => void) => void;
44
45
  }