mirror of
https://github.com/MercuryWorkshop/scramjet.git
synced 2025-05-13 22:40:01 -04:00
fix imports
This commit is contained in:
parent
82a95e71b0
commit
20caf32b5b
17 changed files with 46 additions and 40 deletions
|
@ -6,6 +6,8 @@ import { fileURLToPath } from "url";
|
||||||
const __dirname = fileURLToPath(new URL(".", import.meta.url));
|
const __dirname = fileURLToPath(new URL(".", import.meta.url));
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
|
// change to production when needed
|
||||||
|
mode: "development",
|
||||||
entry: {
|
entry: {
|
||||||
shared: join(__dirname, "src/shared/index.ts"),
|
shared: join(__dirname, "src/shared/index.ts"),
|
||||||
worker: join(__dirname, "src/worker/index.ts"),
|
worker: join(__dirname, "src/worker/index.ts"),
|
||||||
|
@ -35,7 +37,9 @@ export default defineConfig({
|
||||||
},
|
},
|
||||||
output: {
|
output: {
|
||||||
filename: "scramjet.[name].js",
|
filename: "scramjet.[name].js",
|
||||||
path: join(__dirname, "dist")
|
path: join(__dirname, "dist"),
|
||||||
|
iife: true,
|
||||||
|
clean: true
|
||||||
},
|
},
|
||||||
plugins: [
|
plugins: [
|
||||||
// new RsdoctorRspackPlugin({
|
// new RsdoctorRspackPlugin({
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { encodeUrl } from "./index";
|
import { encodeUrl } from "./shared";
|
||||||
|
|
||||||
navigator.sendBeacon = new Proxy(navigator.sendBeacon, {
|
navigator.sendBeacon = new Proxy(navigator.sendBeacon, {
|
||||||
apply(target, thisArg, argArray) {
|
apply(target, thisArg, argArray) {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { rewriteCss } from "./index";
|
import { rewriteCss } from "./shared";
|
||||||
|
|
||||||
const cssProperties = ["background", "background-image", "mask", "mask-image", "list-style", "list-style-image", "border-image", "border-image-source", "cursor"];
|
const cssProperties = ["background", "background-image", "mask", "mask-image", "list-style", "list-style-image", "border-image", "border-image-source", "cursor"];
|
||||||
const jsProperties = ["background", "backgroundImage", "mask", "maskImage", "listStyle", "listStyleImage", "borderImage", "borderImageSource", "cursor"];
|
const jsProperties = ["background", "backgroundImage", "mask", "maskImage", "listStyle", "listStyleImage", "borderImage", "borderImageSource", "cursor"];
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { encodeUrl, rewriteCss, rewriteHtml, rewriteJs, rewriteSrcset } from "./index";
|
import { encodeUrl, rewriteCss, rewriteHtml, rewriteJs, rewriteSrcset } from "./shared";
|
||||||
|
|
||||||
const attrObject = {
|
const attrObject = {
|
||||||
"nonce": [HTMLElement],
|
"nonce": [HTMLElement],
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
import { encodeUrl } from "./index";
|
import { encodeUrl } from "./shared";
|
||||||
|
|
||||||
window.history.pushState = new Proxy(window.history.pushState, {
|
window.history.pushState = new Proxy(window.history.pushState, {
|
||||||
apply(target, thisArg, argArray) {
|
apply(target, thisArg, argArray) {
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import "./scope.ts";
|
||||||
import "./window.ts";
|
import "./window.ts";
|
||||||
import "./event.ts";
|
import "./event.ts";
|
||||||
import "./native/eval.ts";
|
import "./native/eval.ts";
|
||||||
|
@ -11,23 +12,9 @@ import "./storage.ts";
|
||||||
import "./css.ts";
|
import "./css.ts";
|
||||||
import "./history.ts"
|
import "./history.ts"
|
||||||
import "./worker.ts";
|
import "./worker.ts";
|
||||||
import "./scope.ts";
|
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
interface Window {
|
interface Window {
|
||||||
$s: any;
|
$s: any;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const {
|
|
||||||
encodeUrl,
|
|
||||||
decodeUrl,
|
|
||||||
rewriteHeaders,
|
|
||||||
rewriteHtml,
|
|
||||||
rewriteSrcset,
|
|
||||||
rewriteJs,
|
|
||||||
rewriteCss,
|
|
||||||
rewriteWorkers,
|
|
||||||
isScramjetFile,
|
|
||||||
BareClient
|
|
||||||
} = self.$scramjet.bundle;
|
|
|
@ -1,5 +1,5 @@
|
||||||
// @ts-nocheck
|
// @ts-nocheck
|
||||||
import { encodeUrl, decodeUrl } from "./index";
|
import { encodeUrl, decodeUrl } from "./shared";
|
||||||
|
|
||||||
function createLocation() {
|
function createLocation() {
|
||||||
const loc = new URL(decodeUrl(location.href));
|
const loc = new URL(decodeUrl(location.href));
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { rewriteJs } from "../index";
|
import { rewriteJs } from "../shared";
|
||||||
|
|
||||||
const FunctionProxy = new Proxy(Function, {
|
const FunctionProxy = new Proxy(Function, {
|
||||||
construct(target, argArray) {
|
construct(target, argArray) {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// ts throws an error if you dont do window.fetch
|
// ts throws an error if you dont do window.fetch
|
||||||
|
|
||||||
import { encodeUrl, rewriteHeaders } from "../index";
|
import { encodeUrl, rewriteHeaders } from "../shared";
|
||||||
|
|
||||||
window.fetch = new Proxy(window.fetch, {
|
window.fetch = new Proxy(window.fetch, {
|
||||||
apply(target, thisArg, argArray) {
|
apply(target, thisArg, argArray) {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { BareClient } from "../index";
|
import { BareClient } from "../shared";
|
||||||
const client = new BareClient();
|
const client = new BareClient();
|
||||||
|
|
||||||
WebSocket = new Proxy(WebSocket, {
|
WebSocket = new Proxy(WebSocket, {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { encodeUrl, rewriteHeaders } from "../index";
|
import { encodeUrl, rewriteHeaders } from "../shared";
|
||||||
|
|
||||||
XMLHttpRequest.prototype.open = new Proxy(XMLHttpRequest.prototype.open, {
|
XMLHttpRequest.prototype.open = new Proxy(XMLHttpRequest.prototype.open, {
|
||||||
apply(target, thisArg, argArray) {
|
apply(target, thisArg, argArray) {
|
||||||
|
|
12
src/client/shared.ts
Normal file
12
src/client/shared.ts
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
export const {
|
||||||
|
encodeUrl,
|
||||||
|
decodeUrl,
|
||||||
|
rewriteHeaders,
|
||||||
|
rewriteHtml,
|
||||||
|
rewriteSrcset,
|
||||||
|
rewriteJs,
|
||||||
|
rewriteCss,
|
||||||
|
rewriteWorkers,
|
||||||
|
isScramjetFile,
|
||||||
|
BareClient
|
||||||
|
} = self.$scramjet.shared;
|
|
@ -1,4 +1,4 @@
|
||||||
import { rewriteHtml, rewriteJs, encodeUrl } from "./index";
|
import { rewriteHtml, rewriteJs, encodeUrl } from "./shared";
|
||||||
|
|
||||||
// @ts-expect-error
|
// @ts-expect-error
|
||||||
trustedTypes.createPolicy = new Proxy(trustedTypes.createPolicy, {
|
trustedTypes.createPolicy = new Proxy(trustedTypes.createPolicy, {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { encodeUrl } from "./index";
|
import { encodeUrl } from "./shared";
|
||||||
|
|
||||||
Worker = new Proxy(Worker, {
|
Worker = new Proxy(Worker, {
|
||||||
construct(target, argArray) {
|
construct(target, argArray) {
|
||||||
|
@ -20,12 +20,15 @@ Worklet.prototype.addModule = new Proxy(Worklet.prototype.addModule, {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
window.importScripts = new Proxy(window.importScripts, {
|
|
||||||
apply(target, thisArg, argArray) {
|
|
||||||
for (const i in argArray) {
|
|
||||||
argArray[i] = encodeUrl(argArray[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Reflect.apply(target, thisArg, argArray);
|
// broken
|
||||||
},
|
|
||||||
});
|
// window.importScripts = new Proxy(window.importScripts, {
|
||||||
|
// apply(target, thisArg, argArray) {
|
||||||
|
// for (const i in argArray) {
|
||||||
|
// argArray[i] = encodeUrl(argArray[i]);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return Reflect.apply(target, thisArg, argArray);
|
||||||
|
// },
|
||||||
|
// });
|
|
@ -11,7 +11,7 @@ if (!self.$scramjet) {
|
||||||
//@ts-expect-error really dumb workaround
|
//@ts-expect-error really dumb workaround
|
||||||
self.$scramjet = {}
|
self.$scramjet = {}
|
||||||
}
|
}
|
||||||
self.$scramjet.bundle = {
|
self.$scramjet.shared = {
|
||||||
encodeUrl,
|
encodeUrl,
|
||||||
decodeUrl,
|
decodeUrl,
|
||||||
rewriteCss,
|
rewriteCss,
|
||||||
|
|
2
src/types.d.ts
vendored
2
src/types.d.ts
vendored
|
@ -11,7 +11,7 @@ import { BareClient } from "@mercuryworkshop/bare-mux";
|
||||||
declare global {
|
declare global {
|
||||||
interface Window {
|
interface Window {
|
||||||
$scramjet: {
|
$scramjet: {
|
||||||
bundle: {
|
shared: {
|
||||||
encodeUrl: typeof encodeUrl,
|
encodeUrl: typeof encodeUrl,
|
||||||
decodeUrl: typeof decodeUrl,
|
decodeUrl: typeof decodeUrl,
|
||||||
rewriteCss: typeof rewriteCss,
|
rewriteCss: typeof rewriteCss,
|
||||||
|
|
|
@ -7,10 +7,10 @@ declare global {
|
||||||
}
|
}
|
||||||
|
|
||||||
self.ScramjetServiceWorker = class ScramjetServiceWorker {
|
self.ScramjetServiceWorker = class ScramjetServiceWorker {
|
||||||
client: typeof self.$scramjet.bundle.BareClient.prototype;
|
client: typeof self.$scramjet.shared.BareClient.prototype;
|
||||||
config: typeof self.$scramjet.config;
|
config: typeof self.$scramjet.config;
|
||||||
constructor(config = self.$scramjet.config) {
|
constructor(config = self.$scramjet.config) {
|
||||||
this.client = new self.$scramjet.bundle.BareClient();
|
this.client = new self.$scramjet.shared.BareClient();
|
||||||
if (!config.prefix) config.prefix = "/scramjet/";
|
if (!config.prefix) config.prefix = "/scramjet/";
|
||||||
this.config = config;
|
this.config = config;
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@ self.ScramjetServiceWorker = class ScramjetServiceWorker {
|
||||||
|
|
||||||
async fetch({ request }: FetchEvent) {
|
async fetch({ request }: FetchEvent) {
|
||||||
const urlParam = new URLSearchParams(new URL(request.url).search);
|
const urlParam = new URLSearchParams(new URL(request.url).search);
|
||||||
const { encodeUrl, decodeUrl, rewriteHeaders, rewriteHtml, rewriteJs, rewriteCss, rewriteWorkers } = self.$scramjet.bundle;
|
const { encodeUrl, decodeUrl, rewriteHeaders, rewriteHtml, rewriteJs, rewriteCss, rewriteWorkers } = self.$scramjet.shared;
|
||||||
|
|
||||||
if (urlParam.has("url")) {
|
if (urlParam.has("url")) {
|
||||||
return Response.redirect(encodeUrl(urlParam.get("url"), new URL(urlParam.get("url"))))
|
return Response.redirect(encodeUrl(urlParam.get("url"), new URL(urlParam.get("url"))))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue