chemicaljs 2.2.0 → 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.js ADDED
@@ -0,0 +1,407 @@
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";
10
+ import {
11
+ readFileSync,
12
+ cpSync,
13
+ writeFileSync,
14
+ copyFileSync,
15
+ existsSync,
16
+ mkdirSync,
17
+ rmSync,
18
+ readdirSync
19
+ } from "node:fs";
20
+ import { createServer } from "node:http";
21
+ import express from "express";
22
+ import { server as wisp, logging } from "@mercuryworkshop/wisp-js/server";
23
+ import { baremuxPath } from "@mercuryworkshop/bare-mux/node";
24
+ import { libcurlPath } from "@mercuryworkshop/libcurl-transport";
25
+ import { epoxyPath } from "@mercuryworkshop/epoxy-transport";
26
+ import { uvPath } from "@titaniumnetwork-dev/ultraviolet";
27
+ import { scramjetPath } from "@mercuryworkshop/scramjet";
28
+ import createRammerhead from "rammerhead/src/server/index.js";
29
+ logging.set_level(logging.ERROR);
30
+ var ChemicalServer = class {
31
+ constructor(options) {
32
+ if (options) {
33
+ if (typeof options !== "object" || Array.isArray(options)) {
34
+ options = {};
35
+ console.error("Error: ChemicalServer options invalid.");
36
+ }
37
+ } else {
38
+ options = {};
39
+ }
40
+ if (options.uv === void 0) {
41
+ options.uv = true;
42
+ }
43
+ if (options.scramjet === void 0) {
44
+ options.scramjet = true;
45
+ }
46
+ if (options.rammerhead === void 0) {
47
+ options.rammerhead = true;
48
+ }
49
+ if (options.demoMode === void 0) {
50
+ options.demoMode = false;
51
+ }
52
+ this.options = options;
53
+ this.server = createServer();
54
+ this.app = express();
55
+ this.app.serveChemical = this.serveChemical;
56
+ return [this.app, this.listen];
57
+ }
58
+ serveChemical = () => {
59
+ const rh = createRammerhead();
60
+ const rammerheadScopes = [
61
+ "/rammerhead.js",
62
+ "/hammerhead.js",
63
+ "/transport-worker.js",
64
+ "/task.js",
65
+ "/iframe-task.js",
66
+ "/worker-hammerhead.js",
67
+ "/messaging",
68
+ "/sessionexists",
69
+ "/deletesession",
70
+ "/newsession",
71
+ "/editsession",
72
+ "/needpassword",
73
+ "/syncLocalStorage",
74
+ "/api/shuffleDict"
75
+ ];
76
+ const rammerheadSession = /^\/[a-z0-9]{32}/;
77
+ const shouldRouteRh = (req) => {
78
+ const url = new URL(req.url, "http://0.0.0.0");
79
+ return rammerheadScopes.includes(url.pathname) || rammerheadSession.test(url.pathname);
80
+ };
81
+ const routeRhRequest = (req, res) => {
82
+ rh.emit("request", req, res);
83
+ };
84
+ const routeRhUpgrade = (req, socket, head) => {
85
+ rh.emit("upgrade", req, socket, head);
86
+ };
87
+ this.app.get("/chemical.js", async (req, res) => {
88
+ let chemicalMain = await readFileSync(
89
+ resolve(__dirname, "../client/chemical.js"),
90
+ "utf8"
91
+ );
92
+ if (this.options.default) {
93
+ if (["uv", "rammerhead", "scramjet"].includes(this.options.default)) {
94
+ chemicalMain = `const defaultService = "${this.options.default}";
95
+
96
+ ` + chemicalMain;
97
+ } else {
98
+ chemicalMain = `const defaultService = "uv";
99
+
100
+ ` + chemicalMain;
101
+ console.error("Error: Chemical default option invalid.");
102
+ }
103
+ } else {
104
+ chemicalMain = `const defaultService = "uv";
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;
112
+ chemicalMain = "(async () => {\n" + chemicalMain + "\n})();";
113
+ res.type("application/javascript");
114
+ return res.send(chemicalMain);
115
+ });
116
+ this.app.get("/chemical.sw.js", async (req, res) => {
117
+ let chemicalSW = await readFileSync(
118
+ resolve(__dirname, "../client/chemical.sw.js"),
119
+ "utf8"
120
+ );
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;
124
+ res.type("application/javascript");
125
+ return res.send(chemicalSW);
126
+ });
127
+ this.app.use(express.static(resolve(__dirname, "../client")));
128
+ this.app.use("/baremux/", express.static(baremuxPath));
129
+ this.app.use("/libcurl/", express.static(libcurlPath));
130
+ this.app.use("/epoxy/", express.static(epoxyPath));
131
+ if (this.options.uv) {
132
+ this.app.use("/uv/", express.static(resolve(__dirname, "config/uv")));
133
+ this.app.use("/uv/", express.static(uvPath));
134
+ }
135
+ if (this.options.scramjet) {
136
+ this.app.use("/scramjet/", express.static(scramjetPath));
137
+ }
138
+ this.server.on("request", (req, res) => {
139
+ if (this.options.rammerhead && shouldRouteRh(req)) {
140
+ routeRhRequest(req, res);
141
+ } else {
142
+ this.app(req, res);
143
+ }
144
+ });
145
+ this.server.on("upgrade", (req, socket, head) => {
146
+ if (req.url && req.url.endsWith("/wisp/")) {
147
+ if (this.options.wispOptions) {
148
+ for (let option in this.options.wispOptions) {
149
+ wisp.options[option] = this.options.wispOptions[option];
150
+ }
151
+ }
152
+ wisp.routeRequest(req, socket, head);
153
+ } else if (this.options.rammerhead && shouldRouteRh(req)) {
154
+ routeRhUpgrade(req, socket, head);
155
+ } else {
156
+ socket.end();
157
+ }
158
+ });
159
+ };
160
+ listen = (port, callback) => {
161
+ this.server.listen(port, callback);
162
+ };
163
+ };
164
+ var ChemicalVitePlugin = (options) => ({
165
+ name: "chemical-vite-plugin",
166
+ configureServer(server) {
167
+ if (options) {
168
+ if (typeof options !== "object" || Array.isArray(options)) {
169
+ options = {};
170
+ console.error("Error: ChemicalServer options invalid.");
171
+ }
172
+ } else {
173
+ options = {};
174
+ }
175
+ if (options.uv === void 0) {
176
+ options.uv = true;
177
+ }
178
+ if (options.scramjet === void 0) {
179
+ options.scramjet = true;
180
+ }
181
+ if (options.rammerhead === void 0) {
182
+ options.rammerhead = true;
183
+ }
184
+ if (options.demoMode === void 0) {
185
+ options.demoMode = false;
186
+ }
187
+ const rh = createRammerhead();
188
+ const rammerheadScopes = [
189
+ "/rammerhead.js",
190
+ "/hammerhead.js",
191
+ "/transport-worker.js",
192
+ "/task.js",
193
+ "/iframe-task.js",
194
+ "/worker-hammerhead.js",
195
+ "/messaging",
196
+ "/sessionexists",
197
+ "/deletesession",
198
+ "/newsession",
199
+ "/editsession",
200
+ "/needpassword",
201
+ "/syncLocalStorage",
202
+ "/api/shuffleDict"
203
+ ];
204
+ const rammerheadSession = /^\/[a-z0-9]{32}/;
205
+ const shouldRouteRh = (req) => {
206
+ const url = new URL(req.url, "http://0.0.0.0");
207
+ return rammerheadScopes.includes(url.pathname) || rammerheadSession.test(url.pathname);
208
+ };
209
+ const routeRhRequest = (req, res) => {
210
+ rh.emit("request", req, res);
211
+ };
212
+ const routeRhUpgrade = (req, socket, head) => {
213
+ rh.emit("upgrade", req, socket, head);
214
+ };
215
+ const app = express();
216
+ app.get("/chemical.js", async function(req, res) {
217
+ let chemicalMain = await readFileSync(
218
+ resolve(__dirname, "../client/chemical.js"),
219
+ "utf8"
220
+ );
221
+ if (options.default) {
222
+ if (["uv", "rammerhead", "scramjet"].includes(options.default)) {
223
+ chemicalMain = `const defaultService = "${options.default}";
224
+
225
+ ` + chemicalMain;
226
+ } else {
227
+ chemicalMain = `const defaultService = "uv";
228
+
229
+ ` + chemicalMain;
230
+ console.error("Error: Chemical default option invalid.");
231
+ }
232
+ } else {
233
+ chemicalMain = `const defaultService = "uv";
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;
241
+ chemicalMain = "(async () => {\n" + chemicalMain + "\n})();";
242
+ res.type("application/javascript");
243
+ return res.send(chemicalMain);
244
+ });
245
+ app.get("/chemical.sw.js", async function(req, res) {
246
+ let chemicalSW = await readFileSync(
247
+ resolve(__dirname, "../client/chemical.sw.js"),
248
+ "utf8"
249
+ );
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;
253
+ res.type("application/javascript");
254
+ return res.send(chemicalSW);
255
+ });
256
+ app.use(express.static(resolve(__dirname, "../client")));
257
+ app.use("/baremux/", express.static(baremuxPath));
258
+ app.use("/libcurl/", express.static(libcurlPath));
259
+ app.use("/epoxy/", express.static(epoxyPath));
260
+ if (options.uv) {
261
+ app.use("/uv/", express.static(resolve(__dirname, "config/uv")));
262
+ app.use("/uv/", express.static(uvPath));
263
+ }
264
+ if (options.scramjet) {
265
+ app.use("/scramjet/", express.static(scramjetPath));
266
+ }
267
+ server.middlewares.use(app);
268
+ server.middlewares.use((req, res, next) => {
269
+ if (options.rammerhead && shouldRouteRh(req)) {
270
+ routeRhRequest(req, res);
271
+ } else {
272
+ next();
273
+ }
274
+ });
275
+ const upgraders = server.httpServer?.listeners("upgrade");
276
+ for (const upgrader of upgraders) {
277
+ server?.httpServer?.off("upgrade", upgrader);
278
+ }
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);
294
+ }
295
+ }
296
+ }
297
+ );
298
+ }
299
+ });
300
+ var ChemicalBuild = class {
301
+ constructor(options) {
302
+ if (options) {
303
+ if (typeof options !== "object" || Array.isArray(options)) {
304
+ options = {};
305
+ console.error("Error: ChemicalBuild options invalid.");
306
+ }
307
+ } else {
308
+ options = {};
309
+ }
310
+ if (options.path === void 0) {
311
+ options.path = "dist";
312
+ }
313
+ if (options.path.startsWith("/")) {
314
+ options.path = options.path.substring(1);
315
+ }
316
+ if (options.path.endsWith("/")) {
317
+ options.path = options.path.slice(0, -1);
318
+ }
319
+ if (options.uv === void 0) {
320
+ options.uv = true;
321
+ }
322
+ if (options.scramjet === void 0) {
323
+ options.scramjet = true;
324
+ }
325
+ if (options.rammerhead === void 0) {
326
+ options.rammerhead = true;
327
+ }
328
+ if (options.demoMode === void 0) {
329
+ options.demoMode = false;
330
+ }
331
+ this.options = options;
332
+ }
333
+ async write(deletePath = false) {
334
+ if (!existsSync(resolve(this.options.path || ""))) {
335
+ mkdirSync(resolve(this.options.path || ""), { recursive: true });
336
+ } else {
337
+ if (deletePath) {
338
+ readdirSync(resolve(this.options.path || "")).forEach(
339
+ (file) => rmSync(resolve(this.options.path || "", file), { recursive: true })
340
+ );
341
+ }
342
+ }
343
+ let chemicalMain = await readFileSync(
344
+ resolve(__dirname, "../client/chemical.js"),
345
+ "utf8"
346
+ );
347
+ if (this.options.default) {
348
+ if (["uv", "rammerhead", "scramjet"].includes(this.options.default)) {
349
+ chemicalMain = `const defaultService = "${this.options.default}";
350
+
351
+ ` + chemicalMain;
352
+ } else {
353
+ chemicalMain = `const defaultService = "uv";
354
+
355
+ ` + chemicalMain;
356
+ console.error("Error: Chemical default option invalid.");
357
+ }
358
+ } else {
359
+ chemicalMain = `const defaultService = "uv";
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;
367
+ chemicalMain = "(async () => {\n" + chemicalMain + "\n})();";
368
+ writeFileSync(resolve(this.options.path || "", "chemical.js"), chemicalMain);
369
+ let chemicalSW = await readFileSync(
370
+ resolve(__dirname, "../client/chemical.sw.js"),
371
+ "utf8"
372
+ );
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);
377
+ if (this.options.demoMode) {
378
+ copyFileSync(
379
+ resolve(__dirname, "client/chemical.demo.html"),
380
+ resolve(this.options.path || "", "chemical.demo.html")
381
+ );
382
+ }
383
+ cpSync(baremuxPath, resolve(this.options.path || "", "baremux"), {
384
+ recursive: true
385
+ });
386
+ cpSync(libcurlPath, resolve(this.options.path || "", "libcurl"), {
387
+ recursive: true
388
+ });
389
+ cpSync(epoxyPath, resolve(this.options.path || "", "epoxy"), { recursive: true });
390
+ cpSync(libcurlPath, resolve(this.options.path || "", "libcurl"), {
391
+ recursive: true
392
+ });
393
+ if (this.options.uv) {
394
+ cpSync(uvPath, resolve(this.options.path || "", "uv"), { recursive: true });
395
+ copyFileSync(
396
+ resolve(__dirname, "config/uv/uv.config.js"),
397
+ resolve(this.options.path || "", "uv/uv.config.js")
398
+ );
399
+ }
400
+ }
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":[]}
package/package.json CHANGED
@@ -1,30 +1,52 @@
1
1
  {
2
2
  "name": "chemicaljs",
3
- "version": "2.2.0",
3
+ "version": "2.4.0",
4
4
  "description": "Easily create your own web proxy with no experience required.",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ "import": {
11
+ "types": "./dist/index.d.ts",
12
+ "default": "./dist/index.js"
13
+ },
14
+ "require": {
15
+ "types": "./dist/index.d.cts",
16
+ "default": "./dist/index.cjs"
17
+ }
18
+ },
19
+ "files": [
20
+ "dist"
21
+ ],
5
22
  "repository": {
6
23
  "type": "git",
7
24
  "url": "git+https://github.com/chemicaljs/chemical.git"
8
25
  },
9
- "main": "index.js",
10
- "type": "module",
11
26
  "author": "Nebelung",
12
27
  "license": "AGPL-3.0-only",
13
28
  "scripts": {
14
- "update": "npx npm-check-updates -u && npm i"
29
+ "update": "npx npm-check-updates -u && npm i",
30
+ "build": "tsup",
31
+ "publish": "npm run build && npm publish --access public"
15
32
  },
16
33
  "dependencies": {
17
34
  "@mercuryworkshop/bare-mux": "^2.1.6",
18
- "@mercuryworkshop/epoxy-transport": "^2.1.25",
19
- "@mercuryworkshop/libcurl-transport": "^1.3.12",
20
- "@mercuryworkshop/scramjet": "^1.0.2",
21
- "@mercuryworkshop/wisp-js": "^0.3.2",
35
+ "@mercuryworkshop/epoxy-transport": "^2.1.26",
36
+ "@mercuryworkshop/libcurl-transport": "^1.3.14",
37
+ "@mercuryworkshop/scramjet": "https://github.com/chemicaljs/chemical/raw/main/scramjet.tgz",
38
+ "@mercuryworkshop/wisp-js": "^0.3.3",
22
39
  "@titaniumnetwork-dev/ultraviolet": "^3.2.10",
23
40
  "express": "^4.21.1",
24
- "meteorproxy": "^1.0.6-patch.1",
25
- "rammerhead": "https://github.com/chemicaljs/chemical/raw/main/rammerhead.tgz"
41
+ "rammerhead": "https://github.com/chemicaljs/chemical/raw/main/rammerhead.tgz",
42
+ "tsc": "^2.0.4",
43
+ "typescript": "^5.6.3",
44
+ "vite": "^5.4.11"
26
45
  },
27
46
  "engines": {
28
47
  "node": ">=20.11.0"
48
+ },
49
+ "devDependencies": {
50
+ "tsup": "^8.3.5"
29
51
  }
30
52
  }