Skip to content

Commit

Permalink
Convert mostly everything to new webpack modules structure
Browse files Browse the repository at this point in the history
  • Loading branch information
NotNite committed Dec 6, 2023
1 parent c234e2c commit d2506d7
Show file tree
Hide file tree
Showing 22 changed files with 447 additions and 471 deletions.
13 changes: 0 additions & 13 deletions packages/core-extensions/src/common/flux.ts

This file was deleted.

16 changes: 0 additions & 16 deletions packages/core-extensions/src/common/fluxDispatcher.ts

This file was deleted.

12 changes: 0 additions & 12 deletions packages/core-extensions/src/common/http.ts

This file was deleted.

38 changes: 27 additions & 11 deletions packages/core-extensions/src/common/index.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
import { ExtensionWebExports } from "@moonlight-mod/types";

import { react } from "./react";
import { flux } from "./flux";
import { stores } from "./stores";
import { http } from "./http";
import { fluxDispatcher } from "./fluxDispatcher";

export const webpackModules: ExtensionWebExports["webpackModules"] = {
components: {
dependencies: [
Expand All @@ -15,9 +9,31 @@ export const webpackModules: ExtensionWebExports["webpackModules"] = {
]
},

react,
flux,
stores,
http,
fluxDispatcher
flux: {
dependencies: [
{ ext: "spacepack", id: "spacepack" },
"useStateFromStores:function"
]
},

fluxDispatcher: {
dependencies: [
{ ext: "spacepack", id: "spacepack" },
"isDispatching",
"dispatch"
]
},

react: {
dependencies: [
{ ext: "spacepack", id: "spacepack" },
"__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED",
/\.?version(?:=|:)/,
/\.?createElement(?:=|:)/
]
},

stores: {
dependencies: [{ ext: "common", id: "flux" }]
}
};
15 changes: 0 additions & 15 deletions packages/core-extensions/src/common/react.ts

This file was deleted.

30 changes: 0 additions & 30 deletions packages/core-extensions/src/common/stores.ts

This file was deleted.

5 changes: 5 additions & 0 deletions packages/core-extensions/src/common/webpackModules/flux.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import spacepack from "@moonlight-mod/wp/spacepack_spacepack";

module.exports = spacepack.findByCode(
["useStateFromStores", ":function"].join("")
)[0].exports;
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import spacepack from "@moonlight-mod/wp/spacepack_spacepack";

module.exports = spacepack.findByExports(
"isDispatching",
"dispatch"
)[0].exports.default;
7 changes: 7 additions & 0 deletions packages/core-extensions/src/common/webpackModules/react.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import spacepack from "@moonlight-mod/wp/spacepack_spacepack";

module.exports = spacepack.findByCode(
"__SECRET_INTERNALS_DO_NOT_USE" + "_OR_YOU_WILL_BE_FIRED",
/\.?version(?:=|:)/,
/\.?createElement(?:=|:)/
)[0].exports;
23 changes: 23 additions & 0 deletions packages/core-extensions/src/common/webpackModules/stores.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import Flux from "@moonlight-mod/wp/common_flux";

module.exports = new Proxy(
{},
{
get: function (target, key, receiver) {
const allStores = Flux.Store.getAll();

let targetStore;
for (const store of allStores) {
const name = store.getName();
if (name.length === 1) continue; // filter out unnamed stores

if (name === key) {
targetStore = store;
break;
}
}

return targetStore;
}
}
);
41 changes: 3 additions & 38 deletions packages/core-extensions/src/disableSentry/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ export const patches: Patch[] = [
replace: {
type: PatchReplaceType.Normal,
match: /default:function\(\){return .}/,
replacement: 'default:function(){return require("disableSentry_stub")()}'
replacement:
'default:function(){return require("disableSentry_stub").proxy()}'
}
},
{
Expand Down Expand Up @@ -38,41 +39,5 @@ export const patches: Patch[] = [
];

export const webpackModules: ExtensionWebExports["webpackModules"] = {
stub: {
run: function (module, exports, require) {
const logger = moonlight.getLogger("disableSentry");

const keys = [
"setUser",
"clearUser",
"setTags",
"setExtra",
"captureException",
"captureCrash",
"captureMessage",
"addBreadcrumb"
];

module.exports = () =>
new Proxy(
{},
{
get(target, prop, receiver) {
if (prop === "profiledRootComponent") {
return (arg: any) => arg;
} else if (prop === "crash") {
return () => {
throw Error("crash");
};
} else if (keys.includes(prop.toString())) {
return (...args: any[]) =>
logger.debug(`Sentry calling "${prop.toString()}":`, ...args);
} else {
return undefined;
}
}
}
);
}
}
stub: {}
};
33 changes: 33 additions & 0 deletions packages/core-extensions/src/disableSentry/webpackModules/stub.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
const logger = moonlight.getLogger("disableSentry");

const keys = [
"setUser",
"clearUser",
"setTags",
"setExtra",
"captureException",
"captureCrash",
"captureMessage",
"addBreadcrumb"
];

export const proxy = () =>
new Proxy(
{},
{
get(target, prop, receiver) {
if (prop === "profiledRootComponent") {
return (arg: any) => arg;
} else if (prop === "crash") {
return () => {
throw Error("crash");
};
} else if (keys.includes(prop.toString())) {
return (...args: any[]) =>
logger.debug(`Sentry calling "${prop.toString()}":`, ...args);
} else {
return undefined;
}
}
}
);
12 changes: 3 additions & 9 deletions packages/core-extensions/src/moonbase/index.tsx
Original file line number Diff line number Diff line change
@@ -1,17 +1,13 @@
import { ExtensionWebExports } from "@moonlight-mod/types";
import ui from "./ui";
import { stores } from "./stores";
import { DownloadIconSVG, TrashIconSVG } from "./types";

export const webpackModules: ExtensionWebExports["webpackModules"] = {
stores: {
dependencies: [
{ ext: "common", id: "flux" },
{ ext: "common", id: "fluxDispatcher" }
],
run: (module, exports, require) => {
module.exports = stores(require);
}
]
},

moonbase: {
Expand All @@ -26,13 +22,11 @@ export const webpackModules: ExtensionWebExports["webpackModules"] = {
],
entrypoint: true,
run: (module, exports, require) => {
const settings = require("settings_settings");
const settings = require("settings_settings").Settings;
const React = require("common_react");
const spacepack = require("spacepack_spacepack").spacepack;
const { MoonbaseSettingsStore } =
require("moonbase_stores") as ReturnType<
(typeof import("./stores"))["stores"]
>;
require("moonbase_stores") as typeof import("./webpackModules/stores");

settings.addSection("Moonbase", "Moonbase", ui(require), null, -2, {
stores: [MoonbaseSettingsStore],
Expand Down
Loading

0 comments on commit d2506d7

Please sign in to comment.