[Rollup] Main migration

pull/48/head
Oj18 3 years ago
parent 3c0c97d73e
commit 4b233c6466

@ -2,7 +2,7 @@
rm -rf dist
npx parcel build src/index.js
npx rollup -c
# Replace <hash> in file with hash of the built file
hash="$(sha512sum dist/index.js | cut -d" " -f1)"

3528
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -5,7 +5,7 @@
"main": "index.js",
"scripts": {
"build": "bash ./building/build.sh",
"dev": "parcel src/index.js"
"dev": "rollup -cw"
},
"repository": {
"type": "git",
@ -16,13 +16,16 @@
"discord"
],
"author": "GooseMod",
"license": "GPL-3.0",
"license": "MIT",
"bugs": {
"url": "https://github.com/GooseMod/GooseMod/issues"
},
"homepage": "https://github.com/GooseMod/GooseMod#readme",
"devDependencies": {
"parcel-bundler": "^1.12.4"
"rollup": "^2.55.1",
"rollup-plugin-local-resolve": "^1.0.7",
"rollup-plugin-serve": "^1.1.0",
"rollup-plugin-terser": "^7.0.2"
},
"type": "module"
}

@ -0,0 +1,35 @@
import localResolve from 'rollup-plugin-local-resolve';
import { terser } from 'rollup-plugin-terser';
import serve from 'rollup-plugin-serve';
const prod = !process.env.ROLLUP_WATCH;
export default {
input: './src/index.js',
output: {
file: './dist/index.js',
format: 'iife',
name: 'goosemod',
sourcemap: false,
freeze: false /* do not freeze exports */
},
plugins: [
localResolve(),
prod && terser(),
!prod && serve({
contentBase: 'dist',
port: 1234,
headers: {
'Access-Control-Allow-Origin': '*',
}
})
],
// fix rollup jank
inlineDynamicImports: true
};

@ -35,6 +35,8 @@ import * as GMBadges from './gmBadges';
import Storage from './storage';
import ProfileStoreInit from './gmProfileStore';
const scopeSetterFncs = [
setThisScope1,
Settings.setThisScope,
@ -251,8 +253,9 @@ const init = async function () {
this.storage.set('goosemodOOTB', true);
}
require('./gmProfileStore').default();
ProfileStoreInit();
};
window.goosemod = {};
init.bind(window.goosemod)();
init.bind(window.goosemod)();

@ -23,7 +23,9 @@ export const importModule = async (f, disabled = false) => {
const modulesKey = !disabled ? 'modules' : 'disabledModules';
goosemodScope[modulesKey][field] = Object.assign(eval(f.data), f.metadata); // Set goosemodScope.modules.<module_name> to the return value of the module (an object containing handlers)
const eval2 = eval;
goosemodScope[modulesKey][field] = Object.assign(eval2(`const goosemodScope=goosemod;` + f.data), f.metadata); // Set goosemodScope.modules.<module_name> to the return value of the module (an object containing handlers)
if (disabled) return;

@ -11,8 +11,8 @@ export const done = (thing) => {
todo.splice(todo.indexOf(thing), 1);
};
export const themes = () => {
const ModulesPreview = require('./modulesPreview').default;
export const themes = async () => {
const ModulesPreview = await import('./modulesPreview').default;
const { React } = goosemod.webpackModules.common;
@ -66,8 +66,8 @@ export const themes = () => {
});
};
export const plugins = () => {
const ModulesPreview = require('./modulesPreview').default;
export const plugins = async () => {
const ModulesPreview = await import('./modulesPreview').default();
const { React } = goosemod.webpackModules.common;
@ -121,8 +121,8 @@ export const plugins = () => {
});
};
export const store = () => {
const ModulesPreview = require('./modulesPreview').default;
export const store = async () => {
const ModulesPreview = await import('./modulesPreview').default;
const { React } = goosemod.webpackModules.common;
@ -176,8 +176,8 @@ export const store = () => {
});
};
export const settings = () => {
const ModulesPreview = require('./modulesPreview').default;
export const settings = async () => {
const ModulesPreview = await import('./modulesPreview').default;
const { React } = goosemod.webpackModules.common;
@ -246,8 +246,8 @@ export const settings = () => {
});
};
export const community = () => {
const ModulesPreview = require('./modulesPreview').default;
export const community = async () => {
const ModulesPreview = await import('./modulesPreview').default;
const { React } = goosemod.webpackModules.common;
@ -303,8 +303,8 @@ export const community = () => {
});
};
export const start = () => {
const ModulesPreview = require('./modulesPreview').default;
export const start = async () => {
const ModulesPreview = await import('./modulesPreview').default;
const { React } = goosemod.webpackModules.common;

@ -1,3 +1,4 @@
export default () => {
const { React } = goosemod.webpackModules.common;
const DiscoverStaticGuildCard = goosemod.webpackModules.findByDisplayName('DiscoverStaticGuildCard');
@ -11,7 +12,7 @@ const baseImages = (m) => m.images?.map((x) => {
return x;
});
export default class ModulesPreview extends React.PureComponent {
return class ModulesPreview extends React.PureComponent {
render() {
setTimeout(() => {
try {
@ -82,4 +83,5 @@ export default class ModulesPreview extends React.PureComponent {
})
);
}
}
}
};

@ -1,5 +1,6 @@
import openReposModal from './repos';
export default () => {
const { React } = goosemod.webpackModules.common;
const HomeMiscClasses = goosemod.webpackModules.findByProps('headerBarContainer', 'pageContent');
@ -32,7 +33,7 @@ const tabsSelected = {
};
export default class Header extends React.PureComponent {
return class Header extends React.PureComponent {
constructor(props) {
super(props);
}
@ -114,4 +115,5 @@ export default class Header extends React.PureComponent {
) : ''
);
}
}
}
};

@ -1,4 +1,4 @@
export default (goosemodScope) => {
export default async (goosemodScope) => {
const { React, ReactDOM } = goosemodScope.webpackModules.common;
const ConnectedPrivateChannelsList = goosemodScope.webpackModules.find((x) => x.default && x.default.displayName === 'ConnectedPrivateChannelsList');
@ -29,7 +29,7 @@ export default (goosemodScope) => {
})
};
const Header = require('./header').default;
const Header = await import('./header').default();
const LoadingPopout = goosemodScope.webpackModules.findByDisplayName('LoadingPopout');

@ -19,7 +19,7 @@ let goosemodScope = {};
export const setThisScope = async (scope) => {
goosemodScope = scope;
Items = getItems();
Items = await getItems();
};

@ -1,9 +1,10 @@
export default () => {
const { React } = goosemod.webpackModules.common;
const Button = goosemod.webpackModules.findByProps('Sizes', 'Colors', 'Looks', 'DropdownSizes');
export default class Divider extends React.PureComponent {
return class Button extends React.PureComponent {
render() {
return React.createElement(Button, {
color: Button.Colors.BRAND,
@ -17,4 +18,5 @@ export default class Divider extends React.PureComponent {
this.props.text
);
}
}
}
};

@ -1,3 +1,4 @@
export default () => {
const { React } = goosemod.webpackModules.common;
const Button = goosemod.webpackModules.findByProps('Sizes', 'Colors', 'Looks', 'DropdownSizes');
@ -15,7 +16,7 @@ const SmallMediaCarousel = goosemod.webpackModules.findByDisplayName('SmallMedia
const Discord = goosemod.webpackModules.findByDisplayName('Discord');
export default class Card extends React.PureComponent {
return class Card extends React.PureComponent {
render() {
if (this.props.checked !== this.props.isToggled()) {
this.props.checked = this.props.isToggled();
@ -160,4 +161,5 @@ export default class Card extends React.PureComponent {
)
);
}
}
}
};

@ -1,6 +1,7 @@
export default () => {
const { React } = goosemod.webpackModules.common;
export default class Custom extends React.PureComponent {
return class Custom extends React.PureComponent {
render() {
return React.createElement('div', {
ref: (ref) => {
@ -9,4 +10,5 @@ export default class Custom extends React.PureComponent {
}
});
}
}
}
};

@ -1,12 +1,14 @@
export default () => {
const { React } = goosemod.webpackModules.common;
const FormDivider = goosemod.webpackModules.findByDisplayName('FormDivider');
const SettingsFormClasses = goosemod.webpackModules.findByProps('dividerDefault', 'titleDefault');
export default class Divider extends React.PureComponent {
return class Divider extends React.PureComponent {
render() {
return React.createElement(FormDivider, {
className: SettingsFormClasses.dividerDefault
});
}
}
}
};

@ -1,3 +1,4 @@
export default () => {
const { React } = goosemod.webpackModules.common;
const SelectTempWrapper = goosemod.webpackModules.findByDisplayName('SelectTempWrapper');
@ -7,7 +8,7 @@ const FormText = goosemod.webpackModules.findByDisplayName('FormText');
const FormTextClasses = goosemod.webpackModules.findByProps('formText', 'placeholder');
export default class DropdownIndividual extends React.PureComponent {
return class DropdownIndividual extends React.PureComponent {
render() {
if (typeof this.props.options === 'function') {
this.props.options = this.props.options();
@ -44,4 +45,5 @@ export default class DropdownIndividual extends React.PureComponent {
})
)
}
}
}
};

@ -1,3 +1,4 @@
export default () => {
const { React } = goosemod.webpackModules.common;
const FormTitle = goosemod.webpackModules.findByDisplayName('FormTitle');
@ -8,7 +9,7 @@ const Tooltip = goosemod.webpackModules.findByDisplayName('Tooltip');
const Science = goosemod.webpackModules.findByDisplayName('Science');
export default class Header extends React.PureComponent {
return class Header extends React.PureComponent {
constructor(props) {
if (props.experimental) {
props.text = [
@ -85,4 +86,5 @@ export default class Header extends React.PureComponent {
})
);
}
}
}
};

@ -1,17 +1,17 @@
export default () => ({
divider: require('./divider').default,
header: require('./header').default,
toggle: require('./toggle').default,
text: require('./text').default,
'text-and-button': require('./text-and-button').default,
'text-and-color': require('./text-and-color').default,
button: require('./button').default,
search: require('./search').default,
'dropdown-individual': require('./dropdown-individual').default,
'store-header': require('./store-header').default,
card: require('./card').default,
'store-category': require('./store-category').default,
custom: require('./custom').default,
'text-input': require('./text-input').default,
subtext: require('./subtext').default
export default async () => ({
divider: (await import('./divider')).default(),
header: (await import('./header')).default(),
toggle: (await import('./toggle')).default(),
text: (await import('./text')).default(),
'text-and-button': (await import('./text-and-button')).default(),
'text-and-color': (await import('./text-and-color')).default(),
button: (await import('./button')).default(),
search: (await import('./search')).default(),
'dropdown-individual': (await import('./dropdown-individual')).default(),
'store-header': (await import('./store-header')).default(),
card: (await import('./card')).default(),
'store-category': (await import('./store-category')).default(),
custom: (await import('./custom')).default(),
'text-input': (await import('./text-input')).default(),
subtext: (await import('./subtext')).default()
});

@ -1,8 +1,9 @@
export default () => {
const { React } = goosemod.webpackModules.common;
const SearchBar = goosemod.webpackModules.findByDisplayName('SearchBar');
export default class Search extends React.PureComponent {
return class Search extends React.PureComponent {
render() {
if (!this.props.text) {
this.props.text = '';
@ -36,4 +37,5 @@ export default class Search extends React.PureComponent {
}
})
}
}
}
};

@ -1,11 +1,15 @@
import _StoreHeader from './store-header';
import _Card from './card';
export default () => {
const { React } = goosemod.webpackModules.common;
import StoreHeader from './store-header';
import Card from './card';
const StoreHeader = _StoreHeader();
const Card = _Card();
const ScrollerClasses = goosemod.webpackModules.findByProps('auto', 'scrollerBase');
export default class StoreCategory extends React.PureComponent {
return class StoreCategory extends React.PureComponent {
render() {
if (!this.props.cards) {
this.props.cards = goosemod.settings.items.find((x) => x[1] === this.props.itemName)[2].filter((x) => x.type === 'card').sort(this.props.sort).slice(0, 10).map((x) => React.createElement(Card, x));
@ -25,4 +29,5 @@ export default class StoreCategory extends React.PureComponent {
),
);
}
}
}
};

@ -1,10 +1,11 @@
export default () => {
const { React } = goosemod.webpackModules.common;
const Text = goosemod.webpackModules.findByDisplayName('Text');
const HeaderClasses = goosemod.webpackModules.findByProps('pageHeader');
export default class StoreHeader extends React.PureComponent {
return class StoreHeader extends React.PureComponent {
render() {
return React.createElement('div', {
className: [HeaderClasses.headerContainer, 'gm-store-header'].join(' ')
@ -16,4 +17,5 @@ export default class StoreHeader extends React.PureComponent {
}, this.props.text)
);
}
}
}
};

@ -1,3 +1,4 @@
export default () => {
const { React } = goosemod.webpackModules.common;
const FormText = goosemod.webpackModules.findByDisplayName('FormText');
@ -5,7 +6,7 @@ const Markdown = goosemod.webpackModules.findByDisplayName('Markdown');
const Margins = goosemod.webpackModules.findByProps('marginTop20', 'marginBottom20');
export default class Subtext extends React.PureComponent {
return class Subtext extends React.PureComponent {
render() {
return React.createElement(FormText, {
type: 'description',
@ -16,4 +17,5 @@ export default class Subtext extends React.PureComponent {
}, this.props.text || '')
);
}
}
}
};

@ -1,6 +1,9 @@
import _Divider from './divider';
export default () => {
const { React } = goosemod.webpackModules.common;
import Divider from './divider';
const Divider = _Divider();
const Button = goosemod.webpackModules.findByProps('Sizes', 'Colors', 'Looks', 'DropdownSizes');
@ -15,7 +18,7 @@ const Margins = goosemod.webpackModules.findByProps('marginTop20', 'marginBottom
const FormClasses = goosemod.webpackModules.findByProps('title', 'dividerDefault');
const FormTextClasses = goosemod.webpackModules.findByProps('formText', 'placeholder');
export default class TextAndButton extends React.PureComponent {
return class TextAndButton extends React.PureComponent {
render() {
return React.createElement(FormItem, {
className: [Flex.Direction.VERTICAL, Flex.Justify.START, Flex.Align.STRETCH, Flex.Wrap.NO_WRAP, Margins.marginBottom20].join(' '),
@ -64,4 +67,5 @@ export default class TextAndButton extends React.PureComponent {
React.createElement(Divider)
);
}
}
}
};

@ -1,7 +1,9 @@
const { React, constants: { DEFAULT_ROLE_COLOR, ROLE_COLORS } } = goosemod.webpackModules.common;
import _Divider from './divider';
import Divider from './divider';
export default () => {
const { React, constants: { DEFAULT_ROLE_COLOR, ROLE_COLORS } } = goosemod.webpackModules.common;
const Divider = _Divider();
const FormItem = goosemod.webpackModules.findByDisplayName('FormItem');
const FormTitle = goosemod.webpackModules.findByDisplayName('FormTitle');
@ -22,7 +24,7 @@ const hexStringToColor = (hex) => {
return parseInt(hex.slice(1), 16);
};
export default class TextAndColor extends React.PureComponent {
return class TextAndColor extends React.PureComponent {
constructor(props) {
props.default = hexStringToColor((props.initialValue || (() => {}))()) || 0;
props.value = props.default;
@ -69,4 +71,5 @@ export default class TextAndColor extends React.PureComponent {
React.createElement(Divider)
);
}
}
}
};

@ -1,6 +1,9 @@
import _Divider from './divider';
export default () => {
const { React } = goosemod.webpackModules.common;
import Divider from './divider';
const Divider = _Divider;
const FormItem = goosemod.webpackModules.findByDisplayName('FormItem');
const FormText = goosemod.webpackModules.findByDisplayName('FormText');
@ -11,7 +14,7 @@ const Margins = goosemod.webpackModules.findByProps('marginTop20', 'marginBottom
const FormClasses = goosemod.webpackModules.findByProps('formText', 'description');
export default class TextInputGM extends React.PureComponent {
return class TextInputGM extends React.PureComponent {
render() {
return React.createElement(FormItem, {
title: this.props.text,
@ -32,4 +35,5 @@ export default class TextInputGM extends React.PureComponent {
React.createElement(Divider)
);
}
}
}
};

@ -1,6 +1,8 @@
const { React } = goosemod.webpackModules.common;
import _Divider from './divider';
import Divider from './divider';
export default () => {
const Divider = _Divider();
const { React } = goosemod.webpackModules.common;
const FormItem = goosemod.webpackModules.findByDisplayName('FormItem');
const FormText = goosemod.webpackModules.findByDisplayName('FormText');
@ -12,7 +14,7 @@ const FormClasses = goosemod.webpackModules.findByProps('title', 'dividerDefault
const FormTextClasses = goosemod.webpackModules.findByProps('formText', 'placeholder');
export default class Text extends React.PureComponent {
return class Text extends React.PureComponent {
render() {
return React.createElement(FormItem, {
className: [Flex.Direction.VERTICAL, Flex.Justify.START, Flex.Align.STRETCH, Flex.Wrap.NO_WRAP, Margins.marginBottom20].join(' '),
@ -47,4 +49,5 @@ export default class Text extends React.PureComponent {
React.createElement(Divider)
);
}
}
}
};

@ -1,3 +1,4 @@
export default () => {
const { React } = goosemod.webpackModules.common;
const SwitchItem = goosemod.webpackModules.findByDisplayName('SwitchItem');
@ -9,7 +10,7 @@ const Science = goosemod.webpackModules.findByDisplayName('Science');
const Alert = goosemod.webpackModules.findByDisplayName('InfoFilled');
export default class Toggle extends React.Component {
return class Toggle extends React.Component {
constructor(props) {
const originalHandler = props.onToggle;
props.onChange = (e) => {
@ -94,4 +95,5 @@ export default class Toggle extends React.Component {
onChange: this.props.onChange
}, this.props.text);
}
}
}
};
Loading…
Cancel
Save