this repo has no description

Use lazy system

Changed files
+47 -49
packages
core
src
core-extensions
src
moonbase
webpackModules
types
web-preload
+1 -1
packages/core-extensions/src/moonbase/index.tsx
···
{ id: "react" },
{ id: "discord/components/common/index" },
{ ext: "moonbase", id: "stores" },
+
{ id: "discord/modules/guild_settings/IntegrationCard.css" },
"Masks.PANEL_BUTTON",
-
"renderArtisanalHack(){",
'"Missing channel in Channel.openChannelContextMenu"',
".forumOrHome]:"
]
+3 -16
packages/core-extensions/src/moonbase/webpackModules/ui/extensions/card.tsx
···
import { useStateFromStores } from "@moonlight-mod/wp/discord/packages/flux";
import Flex from "@moonlight-mod/wp/discord/uikit/Flex";
import MarkupUtils from "@moonlight-mod/wp/discord/modules/markup/MarkupUtils";
+
import IntegrationCard from "@moonlight-mod/wp/discord/modules/guild_settings/IntegrationCard.css";
import ExtensionInfo from "./info";
import Settings from "./settings";
···
"headerContentWrapper"
)[0].exports;
-
const CardClasses: Record<string, string> = {};
-
spacepack
-
.lazyLoad(
-
"renderArtisanalHack",
-
/\[(?:.\.e\("\d+?"\),?)+\][^}]+?webpackId:\d+,name:"ChannelSettings"/,
-
/webpackId:(\d+),name:"ChannelSettings"/
-
)
-
.then(() =>
-
Object.assign(
-
CardClasses,
-
spacepack.findByExports("card", "cardHeader", "inModal")[0].exports
-
)
-
);
-
export default function ExtensionCard({ uniqueId }: { uniqueId: number }) {
const [tab, setTab] = React.useState(ExtensionPage.Info);
const [restartNeeded, setRestartNeeded] = React.useState(false);
···
const description = ext.manifest?.meta?.description;
return (
-
<Card editable={true} className={CardClasses.card}>
-
<div className={CardClasses.cardHeader}>
+
<Card editable={true} className={IntegrationCard.card}>
+
<div className={IntegrationCard.cardHeader}>
<Flex direction={Flex.Direction.VERTICAL}>
<Flex direction={Flex.Direction.HORIZONTAL}>
<Text variant="text-md/semibold">
+1 -2
packages/core-extensions/src/moonbase/webpackModules/ui/extensions/settings.tsx
···
import { useStateFromStores } from "@moonlight-mod/wp/discord/packages/flux";
import Flex from "@moonlight-mod/wp/discord/uikit/Flex";
-
import Margins from "@moonlight-mod/wp/discord/styles/shared/Margins.css";
-
type SettingsProps = {
ext: MoonbaseExtension;
name: string;
···
type SettingsComponent = React.ComponentType<SettingsProps>;
import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores";
+
const Margins = spacepack.require("discord/styles/shared/Margins.css");
function useConfigEntry<T>(uniqueId: number, name: string) {
return useStateFromStores(
+1 -1
packages/core-extensions/src/moonbase/webpackModules/ui/index.tsx
···
} from "@moonlight-mod/wp/discord/components/common/index";
import { useStateFromStores } from "@moonlight-mod/wp/discord/packages/flux";
import { UserSettingsModalStore } from "@moonlight-mod/wp/common_stores";
-
import Margins from "@moonlight-mod/wp/discord/styles/shared/Margins.css";
import ExtensionsPage from "./extensions";
import ConfigPage from "./config";
···
"setSection",
"clearSubsection"
)[0].exports.Z;
+
const Margins = spacepack.require("discord/styles/shared/Margins.css");
export const pages: {
id: string;
+19 -1
packages/core/src/patch.ts
···
IdentifiedWebpackModule,
WebpackJsonp,
WebpackJsonpEntry,
-
WebpackModuleFunc
+
WebpackModuleFunc,
+
WebpackRequireType
} from "@moonlight-mod/types";
import Logger from "./util/logger";
import calculateDependencies, { Dependency } from "./util/dependency";
···
// Can't be Set because we need splice
const patches: IdentifiedPatch[] = [];
let webpackModules: Set<IdentifiedWebpackModule> = new Set();
+
let webpackRequire: WebpackRequireType | null = null;
const moduleLoadSubscriptions: Map<string, ((moduleId: string) => void)[]> =
new Map();
···
inject = true;
}
+
if (webpackRequire != null) {
+
for (const id of moonlight.moonmap.getLazyModules()) {
+
webpackRequire.e(id);
+
}
+
}
+
if (inject) {
logger.debug("Injecting modules:", modules, entrypoints);
window.webpackChunkdiscord_app.push([
···
moonlight.lunast.setModuleSourceGetter(moduleSourceGetter);
moonlight.moonmap.setModuleSourceGetter(moduleSourceGetter);
+
+
const wpRequireFetcher: WebpackModuleFunc = (module, exports, require) => {
+
webpackRequire = require;
+
};
+
wpRequireFetcher.__moonlight = true;
+
webpackModules.add({
+
id: "moonlight",
+
entrypoint: true,
+
run: wpRequireFetcher
+
});
let realWebpackJsonp: WebpackJsonp | null = null;
Object.defineProperty(window, "webpackChunkdiscord_app", {
+4 -4
packages/types/package.json
···
"./*": "./src/*.ts"
},
"dependencies": {
+
"@moonlight-mod/lunast": "^1.0.0",
+
"@moonlight-mod/mappings": "github:moonlight-mod/mappings",
+
"@moonlight-mod/moonmap": "^1.0.2",
"@types/react": "^18.3.10",
"csstype": "^3.1.2",
-
"standalone-electron-types": "^1.0.0",
-
"@moonlight-mod/lunast": "^1.0.0",
-
"@moonlight-mod/moonmap": "^1.0.0",
-
"@moonlight-mod/mappings": "github:moonlight-mod/mappings"
+
"standalone-electron-types": "^1.0.0"
}
}
+2 -8
packages/types/src/mappings.d.ts
···
export = _;
}
-
declare module "@moonlight-mod/wp/react" {
-
import { MappedModules } from "@moonlight-mod/mappings";
-
const _: MappedModules.react;
-
export = _;
-
}
-
declare module "@moonlight-mod/wp/discord/uikit/Flex" {
import { MappedModules } from "@moonlight-mod/mappings";
const _: MappedModules["discord/uikit/Flex"];
export = _;
}
-
declare module "@moonlight-mod/wp/discord/styles/shared/Margins.css" {
+
declare module "@moonlight-mod/wp/react" {
import { MappedModules } from "@moonlight-mod/mappings";
-
const _: MappedModules["discord/styles/shared/Margins.css"];
+
const _: MappedModules["react"];
export = _;
}
+3 -3
packages/web-preload/package.json
···
"private": true,
"dependencies": {
"@moonlight-mod/core": "workspace:*",
-
"@moonlight-mod/types": "workspace:*",
"@moonlight-mod/lunast": "^1.0.0",
-
"@moonlight-mod/moonmap": "^1.0.0",
-
"@moonlight-mod/mappings": "github:moonlight-mod/mappings"
+
"@moonlight-mod/mappings": "github:moonlight-mod/mappings",
+
"@moonlight-mod/moonmap": "^1.0.2",
+
"@moonlight-mod/types": "workspace:*"
}
}
+13 -13
pnpm-lock.yaml
···
version: 1.0.0
'@moonlight-mod/mappings':
specifier: github:moonlight-mod/mappings
-
version: https://codeload.github.com/moonlight-mod/mappings/tar.gz/da935616b5a7efa9555fb49bce1ec4f0a0f8f921(@moonlight-mod/lunast@1.0.0)(@moonlight-mod/moonmap@1.0.1)
+
version: https://codeload.github.com/moonlight-mod/mappings/tar.gz/f49ed20e7ea87a022113550aaa2959d070a5e506(@moonlight-mod/lunast@1.0.0)(@moonlight-mod/moonmap@1.0.2)
'@moonlight-mod/moonmap':
-
specifier: ^1.0.0
-
version: 1.0.1
+
specifier: ^1.0.2
+
version: 1.0.2
'@types/react':
specifier: ^18.3.10
version: 18.3.10
···
version: 1.0.0
'@moonlight-mod/mappings':
specifier: github:moonlight-mod/mappings
-
version: https://codeload.github.com/moonlight-mod/mappings/tar.gz/da935616b5a7efa9555fb49bce1ec4f0a0f8f921(@moonlight-mod/lunast@1.0.0)(@moonlight-mod/moonmap@1.0.1)
+
version: https://codeload.github.com/moonlight-mod/mappings/tar.gz/f49ed20e7ea87a022113550aaa2959d070a5e506(@moonlight-mod/lunast@1.0.0)(@moonlight-mod/moonmap@1.0.2)
'@moonlight-mod/moonmap':
-
specifier: ^1.0.0
-
version: 1.0.1
+
specifier: ^1.0.2
+
version: 1.0.2
'@moonlight-mod/types':
specifier: workspace:*
version: link:../types
···
'@moonlight-mod/lunast@1.0.0':
resolution: {integrity: sha512-kJgf41K12i6/2LbXK97CNO+pNO7ADGh9N4bCQcOPwosocKMcwKHDEZUgPqeihNshY3c3AEW1LiyXjlsl24PdDw==}
-
'@moonlight-mod/mappings@https://codeload.github.com/moonlight-mod/mappings/tar.gz/da935616b5a7efa9555fb49bce1ec4f0a0f8f921':
-
resolution: {tarball: https://codeload.github.com/moonlight-mod/mappings/tar.gz/da935616b5a7efa9555fb49bce1ec4f0a0f8f921}
+
'@moonlight-mod/mappings@https://codeload.github.com/moonlight-mod/mappings/tar.gz/f49ed20e7ea87a022113550aaa2959d070a5e506':
+
resolution: {tarball: https://codeload.github.com/moonlight-mod/mappings/tar.gz/f49ed20e7ea87a022113550aaa2959d070a5e506}
version: 1.0.0
peerDependencies:
'@moonlight-mod/lunast': ^1.0.0
'@moonlight-mod/moonmap': ^1.0.0
-
'@moonlight-mod/moonmap@1.0.1':
-
resolution: {integrity: sha512-8pPUn6ShQSGZWKGnrP4A0ngQMldE9RaIxTJ9/XwawGosk72zTKYhjfkfqe/pJS25WXIv79CaMn4TPRRG0LNeOA==}
+
'@moonlight-mod/moonmap@1.0.2':
+
resolution: {integrity: sha512-dqMFwk8o0duRfvBNYo6EwalEUWWR3bNF5V2N04ogHp4gYON6/5+XOUrTlQ9BFBDj9anZwGgVwGqnxV42Qs9pPw==}
'@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
···
estree-toolkit: 1.7.8
meriyah: 6.0.1
-
'@moonlight-mod/mappings@https://codeload.github.com/moonlight-mod/mappings/tar.gz/da935616b5a7efa9555fb49bce1ec4f0a0f8f921(@moonlight-mod/lunast@1.0.0)(@moonlight-mod/moonmap@1.0.1)':
+
'@moonlight-mod/mappings@https://codeload.github.com/moonlight-mod/mappings/tar.gz/f49ed20e7ea87a022113550aaa2959d070a5e506(@moonlight-mod/lunast@1.0.0)(@moonlight-mod/moonmap@1.0.2)':
dependencies:
'@moonlight-mod/lunast': 1.0.0
-
'@moonlight-mod/moonmap': 1.0.1
+
'@moonlight-mod/moonmap': 1.0.2
'@types/flux': 3.1.14
'@types/react': 18.3.10
csstype: 3.1.3
-
'@moonlight-mod/moonmap@1.0.1': {}
+
'@moonlight-mod/moonmap@1.0.2': {}
'@nodelib/fs.scandir@2.1.5':
dependencies: