Compare commits

..

4 commits

Author SHA1 Message Date
48028193cc prod build client 2023-08-04 20:47:16 -07:00
bbd62ac898 pruning dependencies 2023-08-04 19:33:18 -07:00
d89f89d035 clean up imports 2023-08-04 19:26:41 -07:00
c87582c030 pre prod 2023-08-04 19:16:56 -07:00
27 changed files with 453 additions and 5439 deletions

View file

@ -3,8 +3,6 @@ const { merge } = require('webpack-merge')
const path = require( 'path' );
const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin');
const ReactRefreshTypeScript = require('react-refresh-typescript');
const common = require('./webpack.common.js')

View file

@ -6,7 +6,7 @@ const common = require('./webpack.common.js')
module.exports = merge(common, {
mode: 'production',
devtool: false,
devtool: 'source-map',
module: {
rules: [
{
@ -35,4 +35,5 @@ module.exports = merge(common, {
maxEntrypointSize: 512000,
maxAssetSize: 512000,
},
plugins: [new MiniCssExtractPlugin()]
})

View file

@ -2,28 +2,22 @@
"name": "@chatbridge/client",
"version": "0.1.0",
"private": true,
"repository": "https://git.jon-e.net/jonny/chatbridge",
"author": "sneakers-the-rat <j@nny.fyi>",
"license": "AGPL-3.0",
"dependencies": {
"@emotion/react": "^11.11.1",
"@emotion/styled": "^11.11.0",
"@mui/base": "^5.0.0-beta.8",
"@mui/icons-material": "^5.14.1",
"@mui/material": "^5.14.2",
"@types/node": "^16.18.39",
"@types/react": "^18.2.16",
"@types/react-dom": "^18.2.7",
"file-loader": "^6.2.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-scripts": "5.0.1",
"sass": "^1.64.1",
"typescript": "^4.9.5",
"web-vitals": "^2.1.4"
"typescript": "^4.9.5"
},
"scripts": {
"start": "NODE_ENV=development webpack serve -c ./config/webpack.dev.js --mode development",
"build": "NODE_ENV=production webpack --config ./config/webpack.prod.js",
"test": "react-scripts test",
"eject": "react-scripts eject"
"build": "NODE_ENV=production webpack --config ./config/webpack.prod.js"
},
"eslintConfig": {
"extends": [
@ -33,10 +27,15 @@
},
"devDependencies": {
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.10",
"@types/node": "^16.18.39",
"@types/react": "^18.2.16",
"@types/react-dom": "^18.2.7",
"css-loader": "^6.8.1",
"css-minimizer-webpack-plugin": "^5.0.1",
"file-loader": "^6.2.0",
"html-webpack-plugin": "^5.5.3",
"mini-css-extract-plugin": "^2.7.6",
"react-refresh": "^0.14.0",
"react-refresh-typescript": "^2.0.9",
"sass-loader": "^13.3.2",
"style-loader": "^3.3.3",
"ts-loader": "^9.4.4",

View file

@ -2,42 +2,16 @@
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="Web site created using create-react-app"
/>
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
<!--
manifest.json provides metadata used when your web app is installed on a
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
-->
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<!--
Notice the use of %PUBLIC_URL% in the tags above.
It will be replaced with the URL of the `public` folder during the build.
Only files inside the `public` folder can be referenced from the HTML.
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
<title>ChatBridge</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<!--
This HTML file is a template.
If you open it directly in the browser, you will see an empty page.
You can add webfonts, meta tags, or analytics to this file.
The build step will place the bundled scripts into the <body> tag.
To begin the development, run `npm start` or `yarn start`.
To create a production bundle, use `npm run build` or `yarn build`.
-->
</body>
</html>

View file

@ -1,25 +1,8 @@
{
"short_name": "React App",
"name": "Create React App Sample",
"icons": [
{
"src": "favicon.ico",
"sizes": "64x64 32x32 24x24 16x16",
"type": "image/x-icon"
},
{
"src": "logo192.png",
"type": "image/png",
"sizes": "192x192"
},
{
"src": "logo512.png",
"type": "image/png",
"sizes": "512x512"
}
],
"short_name": "ChatBridge",
"name": "ChatBridge: Bridge ur chatz",
"start_url": ".",
"display": "standalone",
"theme_color": "#000000",
"background_color": "#ffffff"
"theme_color": "#FFFFFF",
"background_color": "#1C1B22"
}

View file

@ -1,8 +1,7 @@
import React from 'react';
import logo from './logo.svg';
import { createTheme, ThemeProvider } from '@mui/material/styles';
import { yellow} from "@mui/material/colors";
import './sass/index.scss';
import { yellow } from "@mui/material/colors";
const theme = createTheme({
palette:{
@ -28,4 +27,4 @@ function App() {
);
}
export default App;
export default App;

View file

@ -1,5 +1,4 @@
import React from 'react';
import {useState, useEffect} from "react";
import Table from '@mui/material/Table';
import TableBody from '@mui/material/TableBody';
@ -7,7 +6,6 @@ import TableCell from '@mui/material/TableCell';
import TableRow from "@mui/material/TableRow";
import TableContainer from '@mui/material/TableContainer';
import TableHead from '@mui/material/TableHead';
import Typography from "@mui/material/Typography";
import GroupRow from "./groupRow";
@ -45,4 +43,4 @@ export default function GroupPanel({
</TableContainer>
</div>
)
}
}

View file

@ -1,6 +1,4 @@
import TableCell from '@mui/material/TableCell';
import TableContainer from '@mui/material/TableContainer';
import TableHead from '@mui/material/TableHead';
import TableRow from '@mui/material/TableRow';
import DeleteForeverIcon from '@mui/icons-material/DeleteForever';
import IconButton from "@mui/material/IconButton"
@ -46,4 +44,4 @@ export default function GroupRow(
</TableRow>
)
}
}

View file

@ -1,9 +1,10 @@
import Grid from "@mui/material/Grid";
import {useState} from "react";
import TextField from "@mui/material/TextField";
import Button from "@mui/material/Button";
import {setBridgeLabel} from "../../api/bridge";
import {useState} from "react";
export const JoinBridge = ({

View file

@ -1,15 +1,17 @@
import {useEffect, useState} from "react";
import FormControl from "@mui/material/FormControl";
import InputLabel from "@mui/material/InputLabel";
import Select from "@mui/material/Select";
import MenuItem from "@mui/material/MenuItem";
import Button from "@mui/material/Button";
import {stepCompleteType} from "./joinForm";
import {stepCompleteType} from "./joinForm";
import {getSlackChannels, joinSlackChannel} from "../../api/slack";
import {useEffect, useState} from "react";
import {getDiscordChannels} from "../../api/discord";
import {channelsType} from "../../types/channel";
import {bridgeType} from "../../types/bridge";
import {getDiscordChannels} from "../../api/discord";
export interface JoinChannelProps {

View file

@ -1,12 +1,13 @@
import {useState, useEffect} from "react";
import Button from '@mui/material/Button';
import {Group} from "../../types/group";
import {JoinStep} from './joinStep';
import {JoinLogin} from "./joinLogin";
import {useState, useEffect} from "react";
import Button from '@mui/material/Button';
import {createChannel} from "../../api/channel";
import {JoinBridge} from "./joinBridge";
import JoinChannel from "./joinChannel";
import {createChannel} from "../../api/channel";
import {Group} from "../../types/group";
import {bridgeType} from "../../types/bridge";
export interface JoinFormProps {

View file

@ -1,10 +1,12 @@
import React, {useState} from 'react';
import {Group} from '../../types/group'
import {groupInvite} from '../../api/groups'
import TextField from "@mui/material/TextField";
import Button from "@mui/material/Button";
import {groupInvite} from '../../api/groups'
import {Group} from '../../types/group'
export interface JoinGroupProps {
group: Group;
setGroup: React.Dispatch<React.SetStateAction<Group>>

View file

@ -1,8 +1,8 @@
/*
Select which platform you're joining from!
*/
import React, {useEffect, useState} from 'react';
import InputLabel from '@mui/material/InputLabel';
import MenuItem from '@mui/material/MenuItem';
import FormControl from '@mui/material/FormControl';

View file

@ -1,4 +1,5 @@
import * as React from 'react';
import Accordion from '@mui/material/Accordion';
import AccordionDetails from '@mui/material/AccordionDetails';
import AccordionSummary from '@mui/material/AccordionSummary';
@ -6,7 +7,6 @@ import Typography from '@mui/material/Typography';
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
import RadioButtonUncheckedIcon from '@mui/icons-material/RadioButtonUnchecked';
import TaskAltIcon from '@mui/icons-material/TaskAlt';
import {useState} from "react";
export interface JoinStepProps {
children: any;
@ -57,4 +57,4 @@ export function JoinStep(
</Accordion>
)
}
}

View file

@ -1,7 +1,6 @@
import * as React from 'react';
import Tab from '@mui/material/Tab';
import TabsList from '@mui/base/TabsList';
import Tabs from '@mui/material/Tabs';
import Box from "@mui/material/Box";
import { styled } from '@mui/material/styles';

View file

@ -1,13 +1,10 @@
import React from 'react';
import {useState, useEffect} from "react";
import TextField from '@mui/material/TextField';
import Button from '@mui/material/Button';
import {JoinForm} from "../join/joinForm";
import {JoinGroup} from '../join/joinGroup';
import {Group} from "../../types/group";
import {groupInvite} from "../../api/groups";
export default function JoinPanel(){
const [group, setGroup] = useState<Group>(undefined);

View file

@ -1,5 +1,6 @@
import React from 'react';
import {useState, useEffect} from "react";
import TextField from '@mui/material/TextField';
import Button from '@mui/material/Button';
@ -142,4 +143,4 @@ export default function ManagePanel(){
}
</div>
)
}
}

View file

@ -1,7 +1,9 @@
import {useEffect, useRef, useState} from "react";
import Button from "@mui/material/Button";
import {getDiscordInstallURL} from "../../api/discord";
import {getBridgeByStateToken} from "../../api/bridge";
import Button from "@mui/material/Button";
export const DiscordLogin = ({
@ -53,4 +55,4 @@ export const DiscordLogin = ({
{installLink === undefined ? 'Waiting for Install Link...' : 'Add to Discord'}
</Button>
)
}
}

View file

@ -1,5 +1,7 @@
import React, {useEffect, useRef, useState} from 'react'
import Button from "@mui/material/Button";
import {getSlackInstallURL} from "../../api/slack";
import {getBridgeByStateToken} from "../../api/bridge";

View file

@ -1,6 +1,5 @@
import * as React from 'react';
import PropTypes from 'prop-types';
import Typography from '@mui/material/Typography';
import Box from '@mui/material/Box';
export default function TabPanel(props) {
@ -27,4 +26,4 @@ TabPanel.propTypes = {
children: PropTypes.node,
index: PropTypes.number.isRequired,
value: PropTypes.number.isRequired,
};
};

View file

@ -1,8 +1,9 @@
import React from 'react';
import ReactDOM from 'react-dom/client';
import './sass/index.scss';
import App from './App';
import './sass/index.scss';
const root = ReactDOM.createRoot(
document.getElementById('root') as HTMLElement
);

View file

@ -1,38 +0,0 @@
.App {
text-align: center;
}
.App-logo {
height: 40vmin;
pointer-events: none;
}
@media (prefers-reduced-motion: no-preference) {
.App-logo {
animation: App-logo-spin infinite 20s linear;
}
}
.App-header {
background-color: #282c34;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: calc(10px + 2vmin);
color: white;
}
.App-link {
color: #61dafb;
}
@keyframes App-logo-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}

View file

@ -1,13 +0,0 @@
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
code {
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
monospace;
}

View file

@ -8,7 +8,10 @@
"scripts": {
"start:client": "npm run start --prefix client",
"start:server": "npm run start --prefix server",
"start": "concurrently -k -n \"CLIENT,SERVER\" -c \"bgBlue.bold,bgRed.bold\" \"npm run start:client\" \"npm run start:server\""
"start": "concurrently -k -n \"CLIENT,SERVER\" -c \"bgBlue.bold,bgRed.bold\" \"npm run start:client\" \"npm run start:server\"",
"build:client": "npm run build --prefix client",
"build:server": "npm run build --prefix server",
"build": "npm run build:client; npm run build:server"
},
"dependencies": {},
"devDependencies": {

View file

@ -3,16 +3,14 @@
"version": "1.0.0",
"description": "bridging a bunch of chats together",
"main": "index.js",
"repository": "https://git.jon-e.net/jonny/ucla-chat",
"author": "sneakers-the-rat <JLSaunders987@gmail.com>",
"repository": "https://git.jon-e.net/jonny/chatbridge",
"author": "sneakers-the-rat <j@nny.fyi>",
"license": "AGPL-3.0",
"private": true,
"scripts": {
"start": "NODE_ENV=development ts-node-dev --respawn --transpile-only --exit-child src/app.ts",
"build": "../node_modules/.bin/tsc -p .",
"typeorm": "../node_modules/.bin/typeorm-ts-node-commonjs",
"migrate": "rm -rf build && yarn build && yarn ../node_modules/.bin/typeorm migration:generate ./src/migrations/added-user-entity -d ./src/utils/data-source.ts",
"db:push": "rm -rf build && yarn build && yarn ../node_modules/.bin/typeorm migration:run -d src/utils/data-source.ts",
"importData": "npx ts-node-dev --transpile-only --exit-child src/data/seeder.ts",
"test": "jest"
},
@ -29,8 +27,6 @@
"jsonwebtoken": "^9.0.1",
"pg": "^8.11.1",
"pm2": "^5.3.0",
"pug": "^3.0.2",
"redis": "^4.6.7",
"reflect-metadata": "^0.1.13",
"slugify": "^1.6.6",
"typeorm": "^0.3.17",
@ -45,7 +41,6 @@
"@types/cors": "^2.8.13",
"@types/express": "^4.17.17",
"@types/jest": "^29.5.3",
"@types/jsonwebtoken": "^9.0.2",
"@types/node": "^20.4.2",
"@types/pug": "^2.0.6",
"@types/winston": "^2.4.4",

View file

@ -10,7 +10,7 @@
"strictPropertyInitialization": false,
"strictNullChecks": false,
"skipLibCheck": true,
"outDir": "./build",
"outDir": "./dist",
"rootDir": ".",
},

5676
yarn.lock

File diff suppressed because it is too large Load diff