Compare commits
98 Commits
Author | SHA1 | Date |
---|---|---|
JeanOUINA | 39fc7f2893 | |
Aiden | dc3e90125f | |
smartfridge | 8ab6645d2c | |
Seth Falco | c746a6da1a | |
Seth Falco | b2ffdc088c | |
Seth Falco | aee1584dbf | |
smartfridge | 2d4f4aae41 | |
JeanOUINA | 3c4c7de386 | |
JeanOUINA | c4b8a0e03a | |
smartfridge | ab207632c1 | |
smartfridge | 2a68e23cb1 | |
smartfridge | ae8c0d5057 | |
smartfridge | 47bfd2f279 | |
smartfridge | 241ef227d5 | |
smartfridge | 29c84c8d62 | |
smartfridge | 9484cc93da | |
GermanBread | 9b5c6d3404 | |
smartfridge | f3d728ee94 | |
smartfridge | abb6aa200f | |
smartfridge | 2bd69b87f6 | |
smartfridge | 596eaec377 | |
smartfridge | 32c8bb4349 | |
smartfridge | e77736b60a | |
smartfridge | f2963f63c6 | |
smartfridge | 799790d883 | |
smartfridge | e0aa930989 | |
smartfridge | c3afe9e275 | |
smartfridge | c6bc14a1d7 | |
smartfridge | 8d7bcfd360 | |
smartfridge | 00cd1482a4 | |
smartfridge | 807f0e9003 | |
Phorcys | 0fd8bc047a | |
smartfridge | f4165abb77 | |
smartfridge | fd0a8e70c4 | |
smartfridge | ad7edf74fa | |
smartfridge | f38c008d08 | |
smartfridge | f913227278 | |
JeanOUINA | dde7969281 | |
smartfridge | a016df59ca | |
JeanOUINA | e442cc12d4 | |
T•Ø•R•Ü•S | 11aad62169 | |
JeanOUINA | 17044e4a6d | |
radiden | bf55c1f586 | |
JeanOUINA | b0ee318ebc | |
GermanBread | ad88cee4ef | |
JeanOUINA | 7a007f353d | |
GermanBread | de58a38d72 | |
GermanBread | fb5031fe21 | |
GermanBread | c702b50953 | |
GermanBread | 52f16d89a6 | |
GermanBread | 68ebd08205 | |
smartfridge | 2b383f3c3c | |
smartfridge | 2fd574ad3a | |
smartfridge | 7505dca0a5 | |
smartfridge | 7f68bd891a | |
smartfridge | 7b6091b23d | |
smartfridge | 41edb9d34b | |
smartfridge | 4e892d5750 | |
JeanOUINA | f150671a83 | |
JeanOUINA | ee4e1a5ba5 | |
JeanOUINA | 0367814ebe | |
JeanOUINA | 0bd5d289d4 | |
smartfridge | db148799bf | |
JeanOUINA | 81bbd98ce1 | |
pryme-svg | 28f36377a4 | |
pryme-svg | c288113a2d | |
pryme-svg | f00adbde43 | |
JeanOUINA | 33bcb72dec | |
GermanBread | 3a07a9e447 | |
GermanBread | 7876ff7c36 | |
JeanOUINA | dc8c0e1115 | |
GermanBread | 12e846d3c5 | |
JeanOUINA | 1b61e57a05 | |
JeanOUINA | 55192f0704 | |
GermanBread | f559f18f2c | |
GermanBread | 9fc40d8fdc | |
GermanBread | df88426a50 | |
GermanBread | ce8eaceaf0 | |
GermanBread | 1b049fe5fc | |
JeanOUINA | d56e032e8f | |
GermanBread | f9e53c302c | |
GermanBread | a1e60f1fb4 | |
GermanBread | cc20787b56 | |
GermanBread | 1adf5937eb | |
JeanOUINA | 7303d84f25 | |
JeanOUINA | 0d12af06ae | |
sitiom | c799c1bca2 | |
JeanOUINA | 0436ac7cad | |
GermanBread | ff01ee4d8f | |
JeanOUINA | 11ad151da2 | |
GermanBread | b91abe1034 | |
JeanOUINA | 49118eaac0 | |
steanne | 0156020cf4 | |
steanne | 48168b5fea | |
Not Thomiz | 6bd9c0a767 | |
Not Thomiz | c10c2991ab | |
Jean Ouina | 09c8fd3964 | |
Jean Ouina | cd3a8d6117 |
|
@ -0,0 +1,23 @@
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
||||||
|
end_of_line = lf
|
||||||
|
charset = utf-8
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
insert_final_newline = true
|
||||||
|
curly_bracket_next_line = false
|
||||||
|
spaces_around_operators = true
|
||||||
|
|
||||||
|
[*.{js,ts}]
|
||||||
|
quote_type = double
|
||||||
|
|
||||||
|
[*.{markdown,md}]
|
||||||
|
trim_trailing_whitespace = false
|
||||||
|
|
||||||
|
[*.tsv]
|
||||||
|
indent_style = tab
|
||||||
|
|
||||||
|
[*.yml]
|
||||||
|
indent_size = 2
|
|
@ -0,0 +1,32 @@
|
||||||
|
name: Build/release
|
||||||
|
|
||||||
|
on: push
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
release:
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [macos-latest, ubuntu-latest, windows-latest]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Check out Git repository
|
||||||
|
uses: actions/checkout@v1
|
||||||
|
|
||||||
|
- name: Install Node.js, NPM and Yarn
|
||||||
|
uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: 12
|
||||||
|
- run: npm run devInstall
|
||||||
|
- run: npm run compile
|
||||||
|
- name: Build/release Electron app
|
||||||
|
uses: samuelmeuli/action-electron-builder@v1
|
||||||
|
with:
|
||||||
|
# GitHub token, automatically provided to the action
|
||||||
|
# (No need to define this secret in the repo settings)
|
||||||
|
github_token: ${{ secrets.github_token }}
|
||||||
|
|
||||||
|
# If the commit is tagged with a version (e.g. "v1.0.0"),
|
||||||
|
# release the app after building
|
||||||
|
release: ${{ startsWith(github.ref, 'refs/tags/v') }}
|
|
@ -13,39 +13,6 @@ Lightcord does not own the code at https://github.com/rauenzi/BetterDiscordApp.
|
||||||
|
|
||||||
BandagedBD (Bandaged BetterDiscord) is a fork of the original [BetterDiscord](https://github.com/Jiiks/BetterDiscordApp) by Jiiks. This has a number of improvements over the original. The original version has been unmaintained hence this fork existing. There have been attempts to rewrite the original that I have been and will continue to be involved in, but in the meantime I will continue to maintain and improve BBD.
|
BandagedBD (Bandaged BetterDiscord) is a fork of the original [BetterDiscord](https://github.com/Jiiks/BetterDiscordApp) by Jiiks. This has a number of improvements over the original. The original version has been unmaintained hence this fork existing. There have been attempts to rewrite the original that I have been and will continue to be involved in, but in the meantime I will continue to maintain and improve BBD.
|
||||||
|
|
||||||
# Installation
|
|
||||||
|
|
||||||
## Auto Installers
|
|
||||||
|
|
||||||
### Windows
|
|
||||||
Grab the `exe` file from [here](https://github.com/rauenzi/BetterDiscordApp/releases/latest/download/BandagedBD_Windows.exe).
|
|
||||||
|
|
||||||
### macOS/OS X
|
|
||||||
Grab the `zip` file from [here](https://github.com/rauenzi/BetterDiscordApp/releases/latest/download/BandagedBD_Mac.zip).
|
|
||||||
|
|
||||||
### Linux
|
|
||||||
See this [gist](https://gist.github.com/ObserverOfTime/d7e60eb9aa7fe837545c8cb77cf31172).
|
|
||||||
|
|
||||||
## Manual Installation
|
|
||||||
|
|
||||||
### Windows
|
|
||||||
1. Download and extract this: https://github.com/rauenzi/BetterDiscordApp/archive/injector.zip
|
|
||||||
2. Rename `BetterDiscordApp-injector` to `app`.
|
|
||||||
3. Go to `%localappdata%\Discord\`, and locate the directory with the largest version number (e.g. `app-0.0.307`).
|
|
||||||
4. Within `app-0.0.307` navigate to `resources`.
|
|
||||||
5. If an `app` folder already exists inside `resources`, delete it.
|
|
||||||
6. Move the `app` folder (the one you downloaded and renamed) inside of `resources`.
|
|
||||||
7. Fully quit Discord and restart it.
|
|
||||||
|
|
||||||
### macOS/OS X
|
|
||||||
1. Download and extract this: https://github.com/rauenzi/BetterDiscordApp/archive/injector.zip
|
|
||||||
2. Rename `BetterDiscordApp-injector` to `app`.
|
|
||||||
3. Go to `/Applications/`, right click `Discord.app` and select `Show Package Contents`.
|
|
||||||
4. Within `Discord.app` navigate to `Contents` -> `Resources`.
|
|
||||||
5. If an `app` folder already exists inside `Resources`, delete it.
|
|
||||||
6. Move the `app` folder (the one you downloaded and renamed) inside of `Resources`.
|
|
||||||
7. Fully quit Discord and restart it.
|
|
||||||
|
|
||||||
# FAQ
|
# FAQ
|
||||||
|
|
||||||
### What is this?
|
### What is this?
|
||||||
|
@ -60,109 +27,3 @@ In our support servers we have channels with lists of official plugins and theme
|
||||||
There are two: [The main server](https://discord.gg/0Tmfo5ZbORCRqbAd), and [the backup](https://discord.gg/2HScm8j).
|
There are two: [The main server](https://discord.gg/0Tmfo5ZbORCRqbAd), and [the backup](https://discord.gg/2HScm8j).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Supporters
|
|
||||||
These people have all subscribed to the `True Supporter` tier on Patreon to support BandagedBD.
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<tr>
|
|
||||||
<td align="center">
|
|
||||||
<img src="https://cdn.discordapp.com/avatars/196098063092154368/90f1a7202955dac7a6c685cca3181ab1.webp" width="100px;" alt="Kraken"/><br />
|
|
||||||
<strong>Kraken</strong><br />
|
|
||||||
</td>
|
|
||||||
<td align="center">
|
|
||||||
<img src="https://cdn.discordapp.com/attachments/585514483699417089/585552300354043915/34959069_500_500.jpg" width="100px;" alt="SPHHAX"/><br />
|
|
||||||
<a href="http://sphh.ax/" target="_blank" rel="noreferrer noopener"><strong>SPHHAX</strong></a><br />
|
|
||||||
</td>
|
|
||||||
<td align="center">
|
|
||||||
<img src="https://cdn.discordapp.com/attachments/622954403262889995/622957122765848587/5364774.jpg" width="100px;" alt="DefCon42"/><br />
|
|
||||||
<a href="https://twitter.com/def_con42" target="_blank" rel="noreferrer noopener"><strong>DefCon42</strong></a><br />
|
|
||||||
</td>
|
|
||||||
<td align="center">
|
|
||||||
<img src="https://cdn.discordapp.com/avatars/629231564261425163/a_36cc7d2940b4ffb8a660b1076ab2087f.webp" width="100px;" alt="Justxn"/><br />
|
|
||||||
<strong>Justxn</strong><br />
|
|
||||||
</td>
|
|
||||||
<td align="center">
|
|
||||||
<img src="https://cdn.discordapp.com/attachments/682750073448169513/682763113296429087/definitely_not_the_dick_police.png" width="100px;" alt="monkey"/><br />
|
|
||||||
<a href="https://heartunderbla.de" target="_blank" rel="noreferrer noopener"><strong>monkey</strong></a><br />
|
|
||||||
</td>
|
|
||||||
<td align="center">
|
|
||||||
<img src="https://avatars3.githubusercontent.com/u/20338746?s=460&u=d9ebab4f6f0f5221390bca1eaf8f191acd275afe&v=4" width="100px;" alt="Gibbu"/><br />
|
|
||||||
<a href="https://github.com/Gibbu" target="_blank" rel="noreferrer noopener"><strong>Gibbu</strong></a>
|
|
||||||
</td>
|
|
||||||
<td align="center">
|
|
||||||
<img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/25717114/c100599e58174499b44b4307c26f9312/1.jpeg" width="100px;" alt="Orekieh"/><br />
|
|
||||||
<strong>Orekieh</strong>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
|
|
||||||
# Bandagers
|
|
||||||
These people have all subscribed to the `Bandager` tier on Patreon to support BandagedBD.
|
|
||||||
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<tr>
|
|
||||||
<td align="center">
|
|
||||||
<img src="https://cdn.discordapp.com/avatars/332199319169925120/4709f8f0c9cb7ababd85459bf71848b9.png" width="50px;" alt="William JCM"/><br />
|
|
||||||
<a href="https://github.com/williamjcm" target="_blank" rel="noreferrer noopener"><strong>William JCM</strong></a>
|
|
||||||
</td>
|
|
||||||
<td align="center">
|
|
||||||
<img src="https://avatars0.githubusercontent.com/u/24623601" width="50px;" alt="NFLD99"/><br />
|
|
||||||
<a href="https://github.com/NFLD99" target="_blank" rel="noreferrer noopener"><strong>NFLD99</strong></a>
|
|
||||||
</td>
|
|
||||||
<td align="center">
|
|
||||||
<img src="https://i.postimg.cc/5NVxqMnb/Cute-Squid-Circle.png" width="50px;" alt="Tenuit"/><br />
|
|
||||||
<strong>Tenuit</strong>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
# Donors
|
|
||||||
These people have either donated or subscribed to the most basic patron tier to support BandagedBD.
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<tr>
|
|
||||||
<td align="center">
|
|
||||||
<img src="https://cdn.discordapp.com/avatars/284122164582416385/ebaa1b63191ce70e48ae24f32f452773.webp" width="25px;" /><br />
|
|
||||||
<strong>aetheryx</strong>
|
|
||||||
</td>
|
|
||||||
<td align="center">
|
|
||||||
<img src="https://cdn.discordapp.com/avatars/216782345779281921/d4b651b606f108cd2f96a19af68f942f.png" width="25px;" /><br />
|
|
||||||
<strong>JBeauDee</strong>
|
|
||||||
</td>
|
|
||||||
<td align="center">
|
|
||||||
<img src="https://cdn.discordapp.com/avatars/261673576216789004/31d590fb92329e270a6225a13d500c1d.png" width="25px;" /><br />
|
|
||||||
<strong>vantiss</strong>
|
|
||||||
</td>
|
|
||||||
<td align="center">
|
|
||||||
<img src="https://cdn.discordapp.com/avatars/122204411962327043/7f44a9b036b9e2691f4e81d9e34a78b4.webp" width="25px;" /><br />
|
|
||||||
<strong>xstefen</strong>
|
|
||||||
</td>
|
|
||||||
<td align="center">
|
|
||||||
<img src="https://cdn.discordapp.com/avatars/219400174869413888/7c88015869990ba97b614b1ac784f8e8.png" width="25px;" /><br />
|
|
||||||
<strong>『Sorey』</strong>
|
|
||||||
</td>
|
|
||||||
<td align="center">
|
|
||||||
<img src="https://cdn.discordapp.com/avatars/95263213842608128/5024b83e1bff3096d7fc93e8de09d582.gif" width="25px;" /><br />
|
|
||||||
<strong>LiVeR</strong>
|
|
||||||
</td>
|
|
||||||
<td align="center">
|
|
||||||
<img src="https://cdn.discordapp.com/avatars/144458450192171008/13a3e66d73d216974504b8aad257b7b4.png" width="25px;" /><br />
|
|
||||||
<strong>SweetLilyCake</strong>
|
|
||||||
</td>
|
|
||||||
<td align="center">
|
|
||||||
<img src="https://cdn.discordapp.com/avatars/398951709336010793/eb6f63eb2f3a5102fb900e60d1a26cdc.png" width="25px;" /><br />
|
|
||||||
<strong>GameKuchen</strong>
|
|
||||||
</td>
|
|
||||||
<td align="center">
|
|
||||||
<img src="https://i.imgur.com/qrWcKfH.png" width="25px;" /><br />
|
|
||||||
<strong>Lozo</strong>
|
|
||||||
</td>
|
|
||||||
<td align="center">
|
|
||||||
<img src="https://media.discordapp.net/attachments/575576868166828032/692136786893340752/pfp.gif" width="25px;" /><br />
|
|
||||||
<strong>Akira</strong>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -3,17 +3,19 @@ export const currentDiscordVersion = (window.DiscordNative && window.DiscordNati
|
||||||
export const minSupportedVersion = "0.3.0";
|
export const minSupportedVersion = "0.3.0";
|
||||||
export const bbdVersion = "0.3.5";
|
export const bbdVersion = "0.3.5";
|
||||||
export const bbdChangelog = {
|
export const bbdChangelog = {
|
||||||
description: "Big things are coming.",
|
description: "Security updates and more!",
|
||||||
changes: [
|
changes: [
|
||||||
{
|
{
|
||||||
title: "Bug Fixes",
|
title: "Bug Fixes & More.",
|
||||||
type: "fixed",
|
type: "fixed",
|
||||||
items: [
|
items: [
|
||||||
"Some fixes related to showing modals in the `BdApi`.",
|
"Updated various dependencies.",
|
||||||
"Fixed the open folder buttons for plugins and themes"
|
"Added badges to new devs.",
|
||||||
]
|
"Change BandageBD naming inside Lightcord to LightcordBD",
|
||||||
}
|
"New release system that allows us to spend more time on actually developing rather than compiling packages ;)",
|
||||||
]
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
export const settings = {
|
export const settings = {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
export default () => {
|
export default () => {
|
||||||
const v2Loader = document.createElement("div");
|
const v2Loader = document.createElement("div");
|
||||||
v2Loader.className = "bd-loaderv2";
|
v2Loader.className = "bd-loaderv2";
|
||||||
v2Loader.title = "BandagedBD is loading...";
|
v2Loader.title = "LightcordBD is loading...";
|
||||||
document.body.appendChild(v2Loader);
|
document.body.appendChild(v2Loader);
|
||||||
};
|
};
|
|
@ -1,4 +1,12 @@
|
||||||
import {pluginCookie, themeCookie, bdplugins, bdthemes, settingsCookie, settings} from "../0globals";
|
import {
|
||||||
|
pluginCookie,
|
||||||
|
themeCookie,
|
||||||
|
bdplugins,
|
||||||
|
bdthemes,
|
||||||
|
settingsCookie,
|
||||||
|
settings,
|
||||||
|
bdEmotes,
|
||||||
|
} from "../0globals";
|
||||||
import mainCore from "./core";
|
import mainCore from "./core";
|
||||||
import Utils from "./utils";
|
import Utils from "./utils";
|
||||||
import BDV2 from "./v2";
|
import BDV2 from "./v2";
|
||||||
|
@ -9,67 +17,96 @@ import settingsPanel from "./settingsPanel";
|
||||||
import DOM from "./domtools";
|
import DOM from "./domtools";
|
||||||
|
|
||||||
const BdApi = {
|
const BdApi = {
|
||||||
get React() { return BDV2.React; },
|
get React() {
|
||||||
get ReactDOM() { return BDV2.ReactDom; },
|
return BDV2.React;
|
||||||
get ReactComponent() {return BDV2.ReactComponent;},
|
},
|
||||||
get WindowConfigFile() {return Utils.WindowConfigFile;},
|
get ReactDOM() {
|
||||||
get settings() {return settings;},
|
return BDV2.ReactDom;
|
||||||
get emotes() {return null}, // deprecated, deleted all emotes from betterdiscord.
|
},
|
||||||
get screenWidth() { return Math.max(document.documentElement.clientWidth, window.innerWidth || 0); },
|
get ReactComponent() {
|
||||||
get screenHeight() { return Math.max(document.documentElement.clientHeight, window.innerHeight || 0); }
|
return BDV2.ReactComponent;
|
||||||
|
},
|
||||||
|
get WindowConfigFile() {
|
||||||
|
return Utils.WindowConfigFile;
|
||||||
|
},
|
||||||
|
get settings() {
|
||||||
|
return settings;
|
||||||
|
},
|
||||||
|
get emotes() {
|
||||||
|
return bdEmotes;
|
||||||
|
},
|
||||||
|
get screenWidth() {
|
||||||
|
return Math.max(
|
||||||
|
document.documentElement.clientWidth,
|
||||||
|
window.innerWidth || 0
|
||||||
|
);
|
||||||
|
},
|
||||||
|
get screenHeight() {
|
||||||
|
return Math.max(
|
||||||
|
document.documentElement.clientHeight,
|
||||||
|
window.innerHeight || 0
|
||||||
|
);
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
BdApi.getAllWindowPreferences = function() {
|
BdApi.getAllWindowPreferences = function () {
|
||||||
return Utils.getAllWindowPreferences();
|
return Utils.getAllWindowPreferences();
|
||||||
};
|
};
|
||||||
|
|
||||||
BdApi.getWindowPreference = function(key) {
|
BdApi.getWindowPreference = function (key) {
|
||||||
return Utils.getWindowPreference(key);
|
return Utils.getWindowPreference(key);
|
||||||
};
|
};
|
||||||
|
|
||||||
BdApi.setWindowPreference = function(key, value) {
|
BdApi.setWindowPreference = function (key, value) {
|
||||||
return Utils.setWindowPreference(key, value);
|
return Utils.setWindowPreference(key, value);
|
||||||
};
|
};
|
||||||
|
|
||||||
//Inject CSS to document head
|
//Inject CSS to document head
|
||||||
//id = id of element
|
//id = id of element
|
||||||
//css = custom css
|
//css = custom css
|
||||||
BdApi.injectCSS = function (id, css) {
|
BdApi.injectCSS = function (id, css) {
|
||||||
DOM.addStyle(DOM.escapeID(id), css);
|
DOM.addStyle(DOM.escapeID(id), css);
|
||||||
};
|
};
|
||||||
|
|
||||||
//Clear css/remove any element
|
//Clear css/remove any element
|
||||||
//id = id of element
|
//id = id of element
|
||||||
BdApi.clearCSS = function (id) {
|
BdApi.clearCSS = function (id) {
|
||||||
DOM.removeStyle(DOM.escapeID(id));
|
DOM.removeStyle(DOM.escapeID(id));
|
||||||
};
|
};
|
||||||
|
|
||||||
//Inject CSS to document head
|
//Inject CSS to document head
|
||||||
//id = id of element
|
//id = id of element
|
||||||
//css = custom css
|
//css = custom css
|
||||||
BdApi.linkJS = function (id, url) {
|
BdApi.linkJS = function (id, url) {
|
||||||
DOM.addScript(DOM.escapeID(id), url);
|
DOM.addScript(DOM.escapeID(id), url);
|
||||||
};
|
};
|
||||||
|
|
||||||
//Clear css/remove any element
|
//Clear css/remove any element
|
||||||
//id = id of element
|
//id = id of element
|
||||||
BdApi.unlinkJS = function (id) {
|
BdApi.unlinkJS = function (id) {
|
||||||
DOM.removeScript(DOM.escapeID(id));
|
DOM.removeScript(DOM.escapeID(id));
|
||||||
};
|
};
|
||||||
|
|
||||||
//Get another plugin
|
//Get another plugin
|
||||||
//name = name of plugin
|
//name = name of plugin
|
||||||
BdApi.getPlugin = function (name) {
|
BdApi.getPlugin = function (name) {
|
||||||
if (bdplugins.hasOwnProperty(name)) {
|
Utils.warn(
|
||||||
return bdplugins[name].plugin;
|
"Deprecation Notice",
|
||||||
}
|
`BdApi.getPlugin() will be removed in future versions. Please use the BdApi.Plugins API`
|
||||||
return null;
|
);
|
||||||
|
if (bdplugins.hasOwnProperty(name)) {
|
||||||
|
return bdplugins[name].plugin;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
};
|
};
|
||||||
|
|
||||||
//Get BetterDiscord Core
|
//Get BetterDiscord Core
|
||||||
BdApi.getCore = function () {
|
BdApi.getCore = function () {
|
||||||
Utils.warn("Deprecation Notice", `BdApi.getCore() will be removed in future versions.`);
|
Utils.warn(
|
||||||
return mainCore;
|
"Deprecation Notice",
|
||||||
|
`BdApi.getCore() will be removed in future versions.`
|
||||||
|
);
|
||||||
|
return mainCore;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -78,7 +115,7 @@ BdApi.getCore = function () {
|
||||||
* @param {string} content - a string of text to display in the modal
|
* @param {string} content - a string of text to display in the modal
|
||||||
*/
|
*/
|
||||||
BdApi.alert = function (title, content) {
|
BdApi.alert = function (title, content) {
|
||||||
return Utils.showConfirmationModal(title, content, {cancelText: null});
|
return Utils.showConfirmationModal(title, content, { cancelText: null });
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -95,160 +132,169 @@ BdApi.alert = function (title, content) {
|
||||||
* @returns {string} - the key used for this modal
|
* @returns {string} - the key used for this modal
|
||||||
*/
|
*/
|
||||||
BdApi.showConfirmationModal = function (title, content, options = {}) {
|
BdApi.showConfirmationModal = function (title, content, options = {}) {
|
||||||
return Utils.showConfirmationModal(title, content, options);
|
return Utils.showConfirmationModal(title, content, options);
|
||||||
};
|
};
|
||||||
|
|
||||||
//Show toast alert
|
//Show toast alert
|
||||||
BdApi.showToast = function(content, options = {}) {
|
BdApi.showToast = function (content, options = {}) {
|
||||||
Utils.showToast(content, options);
|
Utils.showToast(content, options);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Finds module
|
// Finds module
|
||||||
BdApi.findModule = function(filter) {
|
BdApi.findModule = function (filter) {
|
||||||
return BDV2.WebpackModules.find(filter);
|
return BDV2.WebpackModules.find(filter);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Finds module
|
// Finds module
|
||||||
BdApi.findAllModules = function(filter) {
|
BdApi.findAllModules = function (filter) {
|
||||||
return BDV2.WebpackModules.findAll(filter);
|
return BDV2.WebpackModules.findAll(filter);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Finds module
|
// Finds module
|
||||||
BdApi.findModuleByProps = function(...props) {
|
BdApi.findModuleByProps = function (...props) {
|
||||||
return BDV2.WebpackModules.findByUniqueProperties(props);
|
return BDV2.WebpackModules.findByUniqueProperties(props);
|
||||||
};
|
};
|
||||||
|
|
||||||
BdApi.findModuleByPrototypes = function(...protos) {
|
BdApi.findModuleByPrototypes = function (...protos) {
|
||||||
return BDV2.WebpackModules.findByPrototypes(protos);
|
return BDV2.WebpackModules.findByPrototypes(protos);
|
||||||
};
|
};
|
||||||
|
|
||||||
BdApi.findModuleByDisplayName = function(name) {
|
BdApi.findModuleByDisplayName = function (name) {
|
||||||
return BDV2.WebpackModules.findByDisplayName(name);
|
return BDV2.WebpackModules.findByDisplayName(name);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Gets react instance
|
// Gets react instance
|
||||||
BdApi.getInternalInstance = function(node) {
|
BdApi.getInternalInstance = function (node) {
|
||||||
if (!(node instanceof window.jQuery) && !(node instanceof Element)) return undefined;
|
if (!(node instanceof window.jQuery) && !(node instanceof Element))
|
||||||
if (node instanceof jQuery) node = node[0];
|
return undefined;
|
||||||
return BDV2.getInternalInstance(node);
|
if (node instanceof jQuery) node = node[0];
|
||||||
|
return BDV2.getInternalInstance(node);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Gets data
|
// Gets data
|
||||||
BdApi.loadData = function(pluginName, key) {
|
BdApi.loadData = function (pluginName, key) {
|
||||||
return DataStore.getPluginData(pluginName, key);
|
return DataStore.getPluginData(pluginName, key);
|
||||||
};
|
};
|
||||||
|
|
||||||
BdApi.getData = BdApi.loadData;
|
BdApi.getData = BdApi.loadData;
|
||||||
|
|
||||||
// Sets data
|
// Sets data
|
||||||
BdApi.saveData = function(pluginName, key, data) {
|
BdApi.saveData = function (pluginName, key, data) {
|
||||||
return DataStore.setPluginData(pluginName, key, data);
|
return DataStore.setPluginData(pluginName, key, data);
|
||||||
};
|
};
|
||||||
|
|
||||||
BdApi.setData = BdApi.saveData;
|
BdApi.setData = BdApi.saveData;
|
||||||
|
|
||||||
// Deletes data
|
// Deletes data
|
||||||
BdApi.deleteData = function(pluginName, key) {
|
BdApi.deleteData = function (pluginName, key) {
|
||||||
return DataStore.deletePluginData(pluginName, key);
|
return DataStore.deletePluginData(pluginName, key);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Patches other functions
|
// Patches other functions
|
||||||
BdApi.monkeyPatch = function(what, methodName, options) {
|
BdApi.monkeyPatch = function (what, methodName, options) {
|
||||||
return Utils.monkeyPatch(what, methodName, options);
|
return Utils.monkeyPatch(what, methodName, options);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Event when element is removed
|
// Event when element is removed
|
||||||
BdApi.onRemoved = function(node, callback) {
|
BdApi.onRemoved = function (node, callback) {
|
||||||
return Utils.onRemoved(node, callback);
|
return Utils.onRemoved(node, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Wraps function in try..catch
|
// Wraps function in try..catch
|
||||||
BdApi.suppressErrors = function(method, message) {
|
BdApi.suppressErrors = function (method, message) {
|
||||||
return Utils.suppressErrors(method, message);
|
return Utils.suppressErrors(method, message);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Tests for valid JSON
|
// Tests for valid JSON
|
||||||
BdApi.testJSON = function(data) {
|
BdApi.testJSON = function (data) {
|
||||||
return Utils.testJSON(data);
|
return Utils.testJSON(data);
|
||||||
};
|
};
|
||||||
|
|
||||||
BdApi.isPluginEnabled = function(name) {
|
BdApi.isPluginEnabled = function (name) {
|
||||||
return !!pluginCookie[name];
|
Utils.warn(
|
||||||
|
"Deprecation Notice",
|
||||||
|
`BdApi.isPluginEnabled() will be removed in future versions. Please use the BdApi.Plugins API`
|
||||||
|
);
|
||||||
|
return !!pluginCookie[name];
|
||||||
};
|
};
|
||||||
|
|
||||||
BdApi.isThemeEnabled = function(name) {
|
BdApi.isThemeEnabled = function (name) {
|
||||||
return !!themeCookie[name];
|
Utils.warn(
|
||||||
|
"Deprecation Notice",
|
||||||
|
`BdApi.isThemeEnabled() will be removed in future versions. Please use the BdApi.Themes API`
|
||||||
|
);
|
||||||
|
return !!themeCookie[name];
|
||||||
};
|
};
|
||||||
|
|
||||||
BdApi.isSettingEnabled = function(id) {
|
BdApi.isSettingEnabled = function (id) {
|
||||||
return !!settingsCookie[id];
|
return !!settingsCookie[id];
|
||||||
};
|
};
|
||||||
|
|
||||||
BdApi.enableSetting = function(id) {
|
BdApi.enableSetting = function (id) {
|
||||||
return settingsPanel.onChange(id, true);
|
return settingsPanel.onChange(id, true);
|
||||||
};
|
};
|
||||||
|
|
||||||
BdApi.disableSetting = function(id) {
|
BdApi.disableSetting = function (id) {
|
||||||
return settingsPanel.onChange(id, false);
|
return settingsPanel.onChange(id, false);
|
||||||
};
|
};
|
||||||
|
|
||||||
BdApi.toggleSetting = function(id) {
|
BdApi.toggleSetting = function (id) {
|
||||||
return settingsPanel.onChange(id, !settingsCookie[id]);
|
return settingsPanel.onChange(id, !settingsCookie[id]);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Gets data
|
// Gets data
|
||||||
BdApi.getBDData = function(key) {
|
BdApi.getBDData = function (key) {
|
||||||
return DataStore.getBDData(key);
|
return DataStore.getBDData(key);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Sets data
|
// Sets data
|
||||||
BdApi.setBDData = function(key, data) {
|
BdApi.setBDData = function (key, data) {
|
||||||
return DataStore.setBDData(key, data);
|
return DataStore.setBDData(key, data);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const makeAddonAPI = (cookie, list, manager) =>
|
||||||
|
new (class AddonAPI {
|
||||||
const makeAddonAPI = (cookie, list, manager) => new class AddonAPI {
|
get folder() {
|
||||||
|
return manager.folder;
|
||||||
get folder() {return manager.folder;}
|
}
|
||||||
|
|
||||||
isEnabled(name) {
|
isEnabled(name) {
|
||||||
return !!cookie[name];
|
return !!cookie[name];
|
||||||
}
|
}
|
||||||
|
|
||||||
enable(name) {
|
enable(name) {
|
||||||
return manager.enable(name);
|
return manager.enable(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
disable(name) {
|
disable(name) {
|
||||||
return manager.disable(name);
|
return manager.disable(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
toggle(name) {
|
toggle(name) {
|
||||||
if (cookie[name]) this.disable(name);
|
if (cookie[name]) this.disable(name);
|
||||||
else this.enable(name);
|
else this.enable(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
reload(name) {
|
reload(name) {
|
||||||
return manager.reload(name);
|
return manager.reload(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
get(name) {
|
get(name) {
|
||||||
if (list.hasOwnProperty(name)) {
|
if (list.hasOwnProperty(name)) {
|
||||||
if (list[name].plugin) return list[name].plugin;
|
if (list[name].plugin) return list[name].plugin;
|
||||||
return list[name];
|
return list[name];
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
getAll() {
|
getAll() {
|
||||||
return Object.keys(list).map(k => this.get(k)).filter(a => a);
|
return Object.keys(list)
|
||||||
|
.map((k) => this.get(k))
|
||||||
|
.filter((a) => a);
|
||||||
}
|
}
|
||||||
};
|
})();
|
||||||
|
|
||||||
BdApi.Plugins = makeAddonAPI(pluginCookie, bdplugins, pluginModule);
|
BdApi.Plugins = makeAddonAPI(pluginCookie, bdplugins, pluginModule);
|
||||||
BdApi.Themes = makeAddonAPI(themeCookie, bdthemes, themeModule);
|
BdApi.Themes = makeAddonAPI(themeCookie, bdthemes, themeModule);
|
||||||
|
|
||||||
export default BdApi;
|
export default BdApi;
|
||||||
|
|
||||||
window.Lightcord.BetterDiscord.BdApi = BdApi
|
|
|
@ -1,350 +1,477 @@
|
||||||
import {bdConfig, bdplugins, bdthemes, settingsCookie} from "../0globals";
|
import { bdConfig, bdplugins, bdthemes, settingsCookie } from "../0globals";
|
||||||
import pluginModule from "./pluginModule";
|
import pluginModule from "./pluginModule";
|
||||||
import themeModule from "./themeModule";
|
import themeModule from "./themeModule";
|
||||||
import Utils from "./utils";
|
import Utils from "./utils";
|
||||||
import dataStore from "./dataStore";
|
import dataStore from "./dataStore";
|
||||||
import { encryptSettingsCache, decryptSettingsCache, processFile } from "./pluginCertifier";
|
import {
|
||||||
import * as electron from "electron"
|
encryptSettingsCache,
|
||||||
|
decryptSettingsCache,
|
||||||
|
processFile,
|
||||||
|
} from "./pluginCertifier";
|
||||||
|
import * as electron from "electron";
|
||||||
|
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
const fs = require("fs");
|
const fs = require("fs");
|
||||||
const Module = require("module").Module;
|
const Module = require("module").Module;
|
||||||
Module.globalPaths.push(path.resolve(electron.ipcRenderer.sendSync("LIGHTCORD_GET_APP_PATH"), "node_modules"));
|
Module.globalPaths.push(
|
||||||
|
path.resolve(
|
||||||
|
electron.ipcRenderer.sendSync("LIGHTCORD_GET_APP_PATH"),
|
||||||
|
"node_modules"
|
||||||
|
)
|
||||||
|
);
|
||||||
class MetaError extends Error {
|
class MetaError extends Error {
|
||||||
constructor(message) {
|
constructor(message) {
|
||||||
super(message);
|
super(message);
|
||||||
this.name = "MetaError";
|
this.name = "MetaError";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const originalJSRequire = Module._extensions[".js"];
|
const originalJSRequire = Module._extensions[".js"];
|
||||||
const originalCSSRequire = Module._extensions[".css"] ? Module._extensions[".css"] : () => {return null;};
|
const originalCSSRequire = Module._extensions[".css"]
|
||||||
|
? Module._extensions[".css"]
|
||||||
|
: () => {
|
||||||
|
return null;
|
||||||
|
};
|
||||||
const splitRegex = /[^\S\r\n]*?(?:\r\n|\n)[^\S\r\n]*?\*[^\S\r\n]?/;
|
const splitRegex = /[^\S\r\n]*?(?:\r\n|\n)[^\S\r\n]*?\*[^\S\r\n]?/;
|
||||||
const escapedAtRegex = /^\\@/;
|
const escapedAtRegex = /^\\@/;
|
||||||
|
|
||||||
export let addonCache = {}
|
export let addonCache = {};
|
||||||
|
|
||||||
let hasPatched = false
|
let hasPatched = false;
|
||||||
export default new class ContentManager {
|
export default new (class ContentManager {
|
||||||
|
constructor() {
|
||||||
|
this.timeCache = {};
|
||||||
|
this.watchers = {};
|
||||||
|
}
|
||||||
|
|
||||||
constructor() {
|
patchExtensions() {
|
||||||
this.timeCache = {};
|
if (hasPatched) return;
|
||||||
this.watchers = {};
|
hasPatched = true;
|
||||||
|
Module._extensions[".js"] = this.getContentRequire("plugin");
|
||||||
|
Module._extensions[".css"] = this.getContentRequire("theme");
|
||||||
|
}
|
||||||
|
|
||||||
|
get pluginsFolder() {
|
||||||
|
return (
|
||||||
|
this._pluginsFolder ||
|
||||||
|
(this._pluginsFolder = fs.realpathSync(
|
||||||
|
path.resolve(bdConfig.dataPath + "plugins/")
|
||||||
|
))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
get themesFolder() {
|
||||||
|
return (
|
||||||
|
this._themesFolder ||
|
||||||
|
(this._themesFolder = fs.realpathSync(
|
||||||
|
path.resolve(bdConfig.dataPath + "themes/")
|
||||||
|
))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
loadAddonCertifierCache() {
|
||||||
|
if (
|
||||||
|
typeof dataStore.getSettingGroup("PluginCertifierHashes") !== "string"
|
||||||
|
) {
|
||||||
|
dataStore.setSettingGroup(
|
||||||
|
"PluginCertifierHashes",
|
||||||
|
encryptSettingsCache("{}")
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
addonCache = JSON.parse(
|
||||||
|
decryptSettingsCache(
|
||||||
|
dataStore.getSettingGroup("PluginCertifierHashes")
|
||||||
|
)
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
dataStore.setSettingGroup(
|
||||||
|
"PluginCertifierHashes",
|
||||||
|
encryptSettingsCache("{}")
|
||||||
|
);
|
||||||
|
addonCache = {};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Object.keys(addonCache).forEach((key) => {
|
||||||
|
let value = addonCache[key];
|
||||||
|
if (!value || typeof value !== "object" || Array.isArray(value))
|
||||||
|
return delete addonCache[key];
|
||||||
|
|
||||||
patchExtensions(){
|
let props = [
|
||||||
if(hasPatched)return
|
{
|
||||||
hasPatched = true
|
key: "timestamp",
|
||||||
Module._extensions[".js"] = this.getContentRequire("plugin");
|
type: "number",
|
||||||
Module._extensions[".css"] = this.getContentRequire("theme");
|
},
|
||||||
}
|
{
|
||||||
|
key: "result",
|
||||||
get pluginsFolder() {return this._pluginsFolder || (this._pluginsFolder = fs.realpathSync(path.resolve(bdConfig.dataPath + "plugins/")));}
|
type: "object",
|
||||||
get themesFolder() {return this._themesFolder || (this._themesFolder = fs.realpathSync(path.resolve(bdConfig.dataPath + "themes/")));}
|
},
|
||||||
|
{
|
||||||
loadAddonCertifierCache(){
|
key: "hash",
|
||||||
if(typeof dataStore.getSettingGroup("PluginCertifierHashes") !== "string"){
|
type: "string",
|
||||||
dataStore.setSettingGroup("PluginCertifierHashes", encryptSettingsCache("{}"))
|
},
|
||||||
}else{
|
];
|
||||||
try{
|
for (let prop of props) {
|
||||||
addonCache = JSON.parse(decryptSettingsCache(dataStore.getSettingGroup("PluginCertifierHashes")))
|
if (!(prop.key in value) || typeof value[prop.key] !== prop.type) {
|
||||||
}catch(e){
|
delete addonCache[key];
|
||||||
dataStore.setSettingGroup("PluginCertifierHashes", encryptSettingsCache("{}"))
|
return;
|
||||||
addonCache = {}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Object.keys(addonCache)
|
}
|
||||||
.forEach(key => {
|
if (value.hash !== key) {
|
||||||
let value = addonCache[key]
|
delete addonCache[key];
|
||||||
if(!value || typeof value !== "object" || Array.isArray(value))return delete addonCache[key]
|
return;
|
||||||
|
}
|
||||||
|
if (value.result.suspect) {
|
||||||
|
// refetch from remote to be sure you're up to date.
|
||||||
|
delete addonCache[key];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.saveAddonCache();
|
||||||
|
}
|
||||||
|
|
||||||
let props = [{
|
saveAddonCache() {
|
||||||
key: "timestamp",
|
dataStore.setSettingGroup(
|
||||||
type: "number"
|
"PluginCertifierHashes",
|
||||||
}, {
|
encryptSettingsCache(JSON.stringify(addonCache))
|
||||||
key: "result",
|
);
|
||||||
type: "object"
|
}
|
||||||
}, {
|
|
||||||
key: "hash",
|
|
||||||
type: "string"
|
|
||||||
}]
|
|
||||||
for(let prop of props){
|
|
||||||
if(!(prop.key in value) || typeof value[prop.key] !== prop.type){
|
|
||||||
delete addonCache[key]
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(value.hash !== key){
|
|
||||||
delete addonCache[key]
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if(value.result.suspect){ // refetch from remote to be sure you're up to date.
|
|
||||||
delete addonCache[key]
|
|
||||||
return
|
|
||||||
}
|
|
||||||
})
|
|
||||||
this.saveAddonCache()
|
|
||||||
}
|
|
||||||
|
|
||||||
saveAddonCache(){
|
resetAddonCache() {
|
||||||
dataStore.setSettingGroup("PluginCertifierHashes", encryptSettingsCache(JSON.stringify(addonCache)))
|
Object.keys(addonCache).forEach((key) => {
|
||||||
}
|
delete addonCache[key];
|
||||||
|
});
|
||||||
|
console.log(addonCache);
|
||||||
|
this.saveAddonCache();
|
||||||
|
}
|
||||||
|
|
||||||
resetAddonCache(){
|
watchContent(contentType) {
|
||||||
Object.keys(addonCache).forEach(key => {
|
if (this.watchers[contentType]) return;
|
||||||
delete addonCache[key]
|
const isPlugin = contentType === "plugin";
|
||||||
})
|
const baseFolder = isPlugin ? this.pluginsFolder : this.themesFolder;
|
||||||
console.log(addonCache)
|
const fileEnding = isPlugin ? ".plugin.js" : ".theme.css";
|
||||||
this.saveAddonCache()
|
this.watchers[contentType] = fs.watch(
|
||||||
}
|
baseFolder,
|
||||||
|
{ persistent: false },
|
||||||
watchContent(contentType) {
|
async (eventType, filename) => {
|
||||||
if (this.watchers[contentType]) return;
|
if (!eventType || !filename || !filename.endsWith(fileEnding)) return;
|
||||||
const isPlugin = contentType === "plugin";
|
await new Promise((r) => setTimeout(r, 50));
|
||||||
const baseFolder = isPlugin ? this.pluginsFolder : this.themesFolder;
|
|
||||||
const fileEnding = isPlugin ? ".plugin.js" : ".theme.css";
|
|
||||||
this.watchers[contentType] = fs.watch(baseFolder, {persistent: false}, async (eventType, filename) => {
|
|
||||||
if (!eventType || !filename || !filename.endsWith(fileEnding)) return;
|
|
||||||
await new Promise(r => setTimeout(r, 50));
|
|
||||||
try {fs.statSync(path.resolve(baseFolder, filename));}
|
|
||||||
catch (err) {
|
|
||||||
if (err.code !== "ENOENT") return;
|
|
||||||
delete this.timeCache[filename];
|
|
||||||
if (isPlugin) return pluginModule.unloadPlugin(filename);
|
|
||||||
return themeModule.unloadTheme(filename);
|
|
||||||
}
|
|
||||||
if (!fs.statSync(path.resolve(baseFolder, filename)).isFile()) return;
|
|
||||||
const stats = fs.statSync(path.resolve(baseFolder, filename));
|
|
||||||
if (!stats || !stats.mtime || !stats.mtime.getTime()) return;
|
|
||||||
if (typeof(stats.mtime.getTime()) !== "number") return;
|
|
||||||
if (this.timeCache[filename] == stats.mtime.getTime()) return;
|
|
||||||
this.timeCache[filename] = stats.mtime.getTime();
|
|
||||||
if (eventType == "rename") {
|
|
||||||
if (isPlugin) await pluginModule.loadPlugin(filename);
|
|
||||||
else await themeModule.loadTheme(filename);
|
|
||||||
}
|
|
||||||
if (eventType == "change") {
|
|
||||||
if (isPlugin) await pluginModule.reloadPlugin(filename);
|
|
||||||
else await themeModule.reloadTheme(filename);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
unwatchContent(contentType) {
|
|
||||||
if (!this.watchers[contentType]) return;
|
|
||||||
this.watchers[contentType].close();
|
|
||||||
delete this.watchers[contentType];
|
|
||||||
}
|
|
||||||
|
|
||||||
extractMeta(content) {
|
|
||||||
const firstLine = content.split("\n")[0];
|
|
||||||
const hasOldMeta = firstLine.includes("//META");
|
|
||||||
if (hasOldMeta) return this.parseOldMeta(content);
|
|
||||||
const hasNewMeta = firstLine.includes("/**");
|
|
||||||
if (hasNewMeta) return this.parseNewMeta(content);
|
|
||||||
throw new MetaError("META was not found.");
|
|
||||||
}
|
|
||||||
|
|
||||||
parseOldMeta(content) {
|
|
||||||
const meta = content.split("\n")[0];
|
|
||||||
const rawMeta = meta.substring(meta.lastIndexOf("//META") + 6, meta.lastIndexOf("*//"));
|
|
||||||
if (meta.indexOf("META") < 0) throw new MetaError("META was not found.");
|
|
||||||
const parsed = Utils.testJSON(rawMeta);
|
|
||||||
if (!parsed) throw new MetaError("META could not be parsed.");
|
|
||||||
if (!parsed.name) throw new MetaError("META missing name data.");
|
|
||||||
parsed.format = "json";
|
|
||||||
return parsed;
|
|
||||||
}
|
|
||||||
|
|
||||||
parseNewMeta(content) {
|
|
||||||
const block = content.split("/**", 2)[1].split("*/", 1)[0];
|
|
||||||
const out = {};
|
|
||||||
let field = "";
|
|
||||||
let accum = "";
|
|
||||||
for (const line of block.split(splitRegex)) {
|
|
||||||
if (line.length === 0) continue;
|
|
||||||
if (line.charAt(0) === "@" && line.charAt(1) !== " ") {
|
|
||||||
out[field] = accum;
|
|
||||||
const l = line.indexOf(" ");
|
|
||||||
field = line.substr(1, l - 1);
|
|
||||||
accum = line.substr(l + 1);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
accum += " " + line.replace("\\n", "\n").replace(escapedAtRegex, "@");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
out[field] = accum.trim();
|
|
||||||
delete out[""];
|
|
||||||
out.format = "jsdoc";
|
|
||||||
return out;
|
|
||||||
}
|
|
||||||
|
|
||||||
getContentRequire(type) {
|
|
||||||
const isPlugin = type === "plugin";
|
|
||||||
const self = this;
|
|
||||||
const originalRequire = isPlugin ? originalJSRequire : originalCSSRequire;
|
|
||||||
return function(module, filename) {
|
|
||||||
const baseFolder = isPlugin ? self.pluginsFolder : self.themesFolder;
|
|
||||||
const possiblePath = path.resolve(baseFolder, path.basename(filename));
|
|
||||||
if (!fs.existsSync(possiblePath) || filename !== fs.realpathSync(possiblePath)) return Reflect.apply(originalRequire, this, arguments);
|
|
||||||
let content = fs.readFileSync(filename, "utf8");
|
|
||||||
content = Utils.stripBOM(content);
|
|
||||||
|
|
||||||
const stats = fs.statSync(filename);
|
|
||||||
const meta = self.extractMeta(content);
|
|
||||||
meta.filename = path.basename(filename);
|
|
||||||
meta.added = stats.atimeMs;
|
|
||||||
meta.modified = stats.mtimeMs;
|
|
||||||
meta.size = stats.size;
|
|
||||||
if (!isPlugin) {
|
|
||||||
meta.css = content;
|
|
||||||
if (meta.format == "json") meta.css = meta.css.split("\n").slice(1).join("\n");
|
|
||||||
content = `module.exports = ${JSON.stringify(meta)};`;
|
|
||||||
}
|
|
||||||
if (isPlugin) {
|
|
||||||
module._compile(content, module.filename);
|
|
||||||
const didExport = !Utils.isEmpty(module.exports);
|
|
||||||
if (didExport) {
|
|
||||||
meta.type = module.exports;
|
|
||||||
module.exports = meta;
|
|
||||||
content = "";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Utils.warn("Module Not Exported", `${meta.name}, please start setting module.exports`);
|
|
||||||
content += `\nmodule.exports = ${JSON.stringify(meta)};\nmodule.exports.type = ${meta.exports || meta.name};`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
module._compile(content, filename);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
makePlaceholderPlugin(data) {
|
|
||||||
return {plugin: {
|
|
||||||
start: () => {},
|
|
||||||
getName: () => {return data.name || data.filename;},
|
|
||||||
getAuthor: () => {return "???";},
|
|
||||||
getDescription: () => {return data.message ? data.message : "This plugin was unable to be loaded. Check the author's page for updates.";},
|
|
||||||
getVersion: () => {return "???";}
|
|
||||||
},
|
|
||||||
name: data.name || data.filename,
|
|
||||||
filename: data.filename,
|
|
||||||
source: data.source ? data.source : "",
|
|
||||||
website: data.website ? data.website : ""
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
async loadContent(filename, type) {
|
|
||||||
if (typeof(filename) === "undefined" || typeof(type) === "undefined") return;
|
|
||||||
const isPlugin = type === "plugin";
|
|
||||||
const baseFolder = isPlugin ? this.pluginsFolder : this.themesFolder;
|
|
||||||
|
|
||||||
if(settingsCookie["fork-ps-6"]){
|
|
||||||
let result = await new Promise(resolve => {
|
|
||||||
processFile(path.resolve(baseFolder, filename), (result) => {
|
|
||||||
console.log(result)
|
|
||||||
resolve(result)
|
|
||||||
}, (hash) => {
|
|
||||||
resolve({
|
|
||||||
suspect: false,
|
|
||||||
hash: hash,
|
|
||||||
filename: filename,
|
|
||||||
name: filename
|
|
||||||
})
|
|
||||||
}, true)
|
|
||||||
})
|
|
||||||
if(result){
|
|
||||||
addonCache[result.hash] = {
|
|
||||||
timestamp: Date.now(),
|
|
||||||
hash: result.hash,
|
|
||||||
result: result
|
|
||||||
}
|
|
||||||
this.saveAddonCache()
|
|
||||||
if(result.suspect){
|
|
||||||
return {
|
|
||||||
name: filename,
|
|
||||||
file: filename,
|
|
||||||
message: "This plugin might be dangerous ("+result.harm+").",
|
|
||||||
error: new Error("This plugin might be dangerous ("+result.harm+").")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
try {__non_webpack_require__(path.resolve(baseFolder, filename));}
|
|
||||||
catch (error) {return {name: filename, file: filename, message: "Could not be compiled.", error: {message: error.message, stack: error.stack}};}
|
|
||||||
const content = __non_webpack_require__(path.resolve(baseFolder, filename));
|
|
||||||
if(!content.name)return {name: filename, file: filename, message: "Cannot escape the ID.", error: new Error("Cannot read property 'replace' of undefined")}
|
|
||||||
content.id = Utils.escapeID(content.name);
|
|
||||||
//if(!id)return {name: filename, file: filename, message: "Invalid ID", error: new Error("Please fix the name of "+filename+". BetterDiscord can't escape an ID.")}
|
|
||||||
if (isPlugin) {
|
|
||||||
if (!content.type) return;
|
|
||||||
try {
|
|
||||||
content.plugin = new content.type();
|
|
||||||
delete bdplugins[content.plugin.getName()];
|
|
||||||
bdplugins[content.plugin.getName()] = content;
|
|
||||||
}
|
|
||||||
catch (error) {return {name: filename, file: filename, message: "Could not be constructed.", error: {message: error.message, stack: error.stack}};}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
delete bdthemes[content.name];
|
|
||||||
bdthemes[content.name] = content;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
unloadContent(filename, type) {
|
|
||||||
if (typeof(filename) === "undefined" || typeof(type) === "undefined") return;
|
|
||||||
const isPlugin = type === "plugin";
|
|
||||||
const baseFolder = isPlugin ? this.pluginsFolder : this.themesFolder;
|
|
||||||
try {
|
try {
|
||||||
delete __non_webpack_require__.cache[__non_webpack_require__.resolve(path.resolve(baseFolder, filename))];
|
fs.statSync(path.resolve(baseFolder, filename));
|
||||||
|
} catch (err) {
|
||||||
|
if (err.code !== "ENOENT") return;
|
||||||
|
delete this.timeCache[filename];
|
||||||
|
if (isPlugin) return pluginModule.unloadPlugin(filename);
|
||||||
|
return themeModule.unloadTheme(filename);
|
||||||
}
|
}
|
||||||
catch (err) {return {name: filename, file: filename, message: "Could not be unloaded.", error: {message: err.message, stack: err.stack}};}
|
if (!fs.statSync(path.resolve(baseFolder, filename)).isFile()) return;
|
||||||
}
|
const stats = fs.statSync(path.resolve(baseFolder, filename));
|
||||||
|
if (!stats || !stats.mtime || !stats.mtime.getTime()) return;
|
||||||
isLoaded(filename, type) {
|
if (typeof stats.mtime.getTime() !== "number") return;
|
||||||
const isPlugin = type === "plugin";
|
if (this.timeCache[filename] == stats.mtime.getTime()) return;
|
||||||
const baseFolder = isPlugin ? this.pluginsFolder : this.themesFolder;
|
this.timeCache[filename] = stats.mtime.getTime();
|
||||||
try {__non_webpack_require__.cache[__non_webpack_require__.resolve(path.resolve(baseFolder, filename))];}
|
if (eventType == "rename") {
|
||||||
catch (err) {return false;}
|
if (isPlugin) await pluginModule.loadPlugin(filename);
|
||||||
return true;
|
else await themeModule.loadTheme(filename);
|
||||||
}
|
|
||||||
|
|
||||||
async reloadContent(filename, type) {
|
|
||||||
const cantUnload = this.unloadContent(filename, type);
|
|
||||||
if (cantUnload) return cantUnload;
|
|
||||||
return await this.loadContent(filename, type);
|
|
||||||
}
|
|
||||||
|
|
||||||
loadNewContent(type) {
|
|
||||||
const isPlugin = type === "plugin";
|
|
||||||
const fileEnding = isPlugin ? ".plugin.js" : ".theme.css";
|
|
||||||
const basedir = isPlugin ? this.pluginsFolder : this.themesFolder;
|
|
||||||
const files = fs.readdirSync(basedir);
|
|
||||||
const contentList = Object.values(isPlugin ? bdplugins : bdthemes);
|
|
||||||
const removed = contentList.filter(t => !files.includes(t.filename)).map(c => isPlugin ? c.plugin.getName() : c.name);
|
|
||||||
const added = files.filter(f => !contentList.find(t => t.filename == f) && f.endsWith(fileEnding) && fs.statSync(path.resolve(basedir, f)).isFile());
|
|
||||||
return {added, removed};
|
|
||||||
}
|
|
||||||
|
|
||||||
async loadAllContent(type) {
|
|
||||||
this.patchExtensions()
|
|
||||||
const isPlugin = type === "plugin";
|
|
||||||
const fileEnding = isPlugin ? ".plugin.js" : ".theme.css";
|
|
||||||
const basedir = isPlugin ? this.pluginsFolder : this.themesFolder;
|
|
||||||
const errors = [];
|
|
||||||
const files = fs.readdirSync(basedir);
|
|
||||||
|
|
||||||
for (const filename of files) {
|
|
||||||
if (!fs.statSync(path.resolve(basedir, filename)).isFile() || !filename.endsWith(fileEnding)) continue;
|
|
||||||
const error = await this.loadContent(filename, type);
|
|
||||||
if (error) errors.push(error);
|
|
||||||
}
|
}
|
||||||
|
if (eventType == "change") {
|
||||||
|
if (isPlugin) await pluginModule.reloadPlugin(filename);
|
||||||
|
else await themeModule.reloadTheme(filename);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return errors;
|
unwatchContent(contentType) {
|
||||||
|
if (!this.watchers[contentType]) return;
|
||||||
|
this.watchers[contentType].close();
|
||||||
|
delete this.watchers[contentType];
|
||||||
|
}
|
||||||
|
|
||||||
|
extractMeta(content) {
|
||||||
|
const firstLine = content.split("\n")[0];
|
||||||
|
const hasOldMeta = firstLine.includes("//META");
|
||||||
|
if (hasOldMeta) return this.parseOldMeta(content);
|
||||||
|
const hasNewMeta = firstLine.includes("/**");
|
||||||
|
if (hasNewMeta) return this.parseNewMeta(content);
|
||||||
|
throw new MetaError("META was not found.");
|
||||||
|
}
|
||||||
|
|
||||||
|
parseOldMeta(content) {
|
||||||
|
const meta = content.split("\n")[0];
|
||||||
|
const rawMeta = meta.substring(
|
||||||
|
meta.lastIndexOf("//META") + 6,
|
||||||
|
meta.lastIndexOf("*//")
|
||||||
|
);
|
||||||
|
if (meta.indexOf("META") < 0) throw new MetaError("META was not found.");
|
||||||
|
const parsed = Utils.testJSON(rawMeta);
|
||||||
|
if (!parsed) throw new MetaError("META could not be parsed.");
|
||||||
|
if (!parsed.name) throw new MetaError("META missing name data.");
|
||||||
|
parsed.format = "json";
|
||||||
|
return parsed;
|
||||||
|
}
|
||||||
|
|
||||||
|
parseNewMeta(content) {
|
||||||
|
const block = content.split("/**", 2)[1].split("*/", 1)[0];
|
||||||
|
const out = {};
|
||||||
|
let field = "";
|
||||||
|
let accum = "";
|
||||||
|
for (const line of block.split(splitRegex)) {
|
||||||
|
if (line.length === 0) continue;
|
||||||
|
if (line.charAt(0) === "@" && line.charAt(1) !== " ") {
|
||||||
|
out[field] = accum;
|
||||||
|
const l = line.indexOf(" ");
|
||||||
|
field = line.substr(1, l - 1);
|
||||||
|
accum = line.substr(l + 1);
|
||||||
|
} else {
|
||||||
|
accum += " " + line.replace("\\n", "\n").replace(escapedAtRegex, "@");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
out[field] = accum.trim();
|
||||||
|
delete out[""];
|
||||||
|
out.format = "jsdoc";
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
getContentRequire(type) {
|
||||||
|
const isPlugin = type === "plugin";
|
||||||
|
const self = this;
|
||||||
|
const originalRequire = isPlugin ? originalJSRequire : originalCSSRequire;
|
||||||
|
return function (module, filename) {
|
||||||
|
const baseFolder = isPlugin ? self.pluginsFolder : self.themesFolder;
|
||||||
|
const possiblePath = path.resolve(baseFolder, path.basename(filename));
|
||||||
|
if (
|
||||||
|
!fs.existsSync(possiblePath) ||
|
||||||
|
filename !== fs.realpathSync(possiblePath)
|
||||||
|
)
|
||||||
|
return Reflect.apply(originalRequire, this, arguments);
|
||||||
|
let content = fs.readFileSync(filename, "utf8");
|
||||||
|
content = Utils.stripBOM(content);
|
||||||
|
|
||||||
|
const stats = fs.statSync(filename);
|
||||||
|
const meta = self.extractMeta(content);
|
||||||
|
meta.filename = path.basename(filename);
|
||||||
|
meta.added = stats.atimeMs;
|
||||||
|
meta.modified = stats.mtimeMs;
|
||||||
|
meta.size = stats.size;
|
||||||
|
if (!isPlugin) {
|
||||||
|
meta.css = content;
|
||||||
|
if (meta.format == "json")
|
||||||
|
meta.css = meta.css.split("\n").slice(1).join("\n");
|
||||||
|
content = `module.exports = ${JSON.stringify(meta)};`;
|
||||||
|
}
|
||||||
|
if (isPlugin) {
|
||||||
|
module._compile(content, module.filename);
|
||||||
|
const didExport = !Utils.isEmpty(module.exports);
|
||||||
|
if (didExport) {
|
||||||
|
meta.type = module.exports;
|
||||||
|
module.exports = meta;
|
||||||
|
content = "";
|
||||||
|
} else {
|
||||||
|
Utils.warn(
|
||||||
|
"Module Not Exported",
|
||||||
|
`${meta.name}, please start setting module.exports`
|
||||||
|
);
|
||||||
|
content += `\nmodule.exports = ${JSON.stringify(
|
||||||
|
meta
|
||||||
|
)};\nmodule.exports.type = ${meta.exports || meta.name};`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
module._compile(content, filename);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
makePlaceholderPlugin(data) {
|
||||||
|
return {
|
||||||
|
plugin: {
|
||||||
|
start: () => {},
|
||||||
|
getName: () => {
|
||||||
|
return data.name || data.filename;
|
||||||
|
},
|
||||||
|
getAuthor: () => {
|
||||||
|
return "???";
|
||||||
|
},
|
||||||
|
getDescription: () => {
|
||||||
|
return data.message
|
||||||
|
? data.message
|
||||||
|
: "This plugin was unable to be loaded. Check the author's page for updates.";
|
||||||
|
},
|
||||||
|
getVersion: () => {
|
||||||
|
return "???";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
name: data.name || data.filename,
|
||||||
|
filename: data.filename,
|
||||||
|
source: data.source ? data.source : "",
|
||||||
|
website: data.website ? data.website : "",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
async loadContent(filename, type) {
|
||||||
|
if (typeof filename === "undefined" || typeof type === "undefined") return;
|
||||||
|
const isPlugin = type === "plugin";
|
||||||
|
const baseFolder = isPlugin ? this.pluginsFolder : this.themesFolder;
|
||||||
|
|
||||||
|
if (settingsCookie["fork-ps-6"]) {
|
||||||
|
let result = await new Promise((resolve) => {
|
||||||
|
processFile(
|
||||||
|
path.resolve(baseFolder, filename),
|
||||||
|
(result) => {
|
||||||
|
console.log(result);
|
||||||
|
resolve(result);
|
||||||
|
},
|
||||||
|
(hash) => {
|
||||||
|
resolve({
|
||||||
|
suspect: false,
|
||||||
|
hash: hash,
|
||||||
|
filename: filename,
|
||||||
|
name: filename,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
true
|
||||||
|
);
|
||||||
|
});
|
||||||
|
if (result) {
|
||||||
|
addonCache[result.hash] = {
|
||||||
|
timestamp: Date.now(),
|
||||||
|
hash: result.hash,
|
||||||
|
result: result,
|
||||||
|
};
|
||||||
|
this.saveAddonCache();
|
||||||
|
if (result.suspect) {
|
||||||
|
return {
|
||||||
|
name: filename,
|
||||||
|
file: filename,
|
||||||
|
message: "This plugin might be dangerous (" + result.harm + ").",
|
||||||
|
error: new Error(
|
||||||
|
"This plugin might be dangerous (" + result.harm + ")."
|
||||||
|
),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
loadPlugins() {return this.loadAllContent("plugin");}
|
try {
|
||||||
loadThemes() {return this.loadAllContent("theme");}
|
__non_webpack_require__(path.resolve(baseFolder, filename));
|
||||||
};
|
} catch (error) {
|
||||||
|
return {
|
||||||
|
name: filename,
|
||||||
|
file: filename,
|
||||||
|
message: "Could not be compiled.",
|
||||||
|
error: { message: error.message, stack: error.stack },
|
||||||
|
};
|
||||||
|
}
|
||||||
|
const content = __non_webpack_require__(path.resolve(baseFolder, filename));
|
||||||
|
if (!content.name)
|
||||||
|
return {
|
||||||
|
name: filename,
|
||||||
|
file: filename,
|
||||||
|
message: "Cannot escape the ID.",
|
||||||
|
error: new Error("Cannot read property 'replace' of undefined"),
|
||||||
|
};
|
||||||
|
content.id = Utils.escapeID(content.name);
|
||||||
|
//if(!id)return {name: filename, file: filename, message: "Invalid ID", error: new Error("Please fix the name of "+filename+". BetterDiscord can't escape an ID.")}
|
||||||
|
if (isPlugin) {
|
||||||
|
if (!content.type) return;
|
||||||
|
try {
|
||||||
|
content.plugin = new content.type();
|
||||||
|
delete bdplugins[content.plugin.getName()];
|
||||||
|
bdplugins[content.plugin.getName()] = content;
|
||||||
|
} catch (error) {
|
||||||
|
return {
|
||||||
|
name: filename,
|
||||||
|
file: filename,
|
||||||
|
message: "Could not be constructed.",
|
||||||
|
error: { message: error.message, stack: error.stack },
|
||||||
|
};
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
delete bdthemes[content.name];
|
||||||
|
bdthemes[content.name] = content;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
unloadContent(filename, type) {
|
||||||
|
if (typeof filename === "undefined" || typeof type === "undefined") return;
|
||||||
|
const isPlugin = type === "plugin";
|
||||||
|
const baseFolder = isPlugin ? this.pluginsFolder : this.themesFolder;
|
||||||
|
try {
|
||||||
|
delete __non_webpack_require__.cache[
|
||||||
|
__non_webpack_require__.resolve(path.resolve(baseFolder, filename))
|
||||||
|
];
|
||||||
|
} catch (err) {
|
||||||
|
return {
|
||||||
|
name: filename,
|
||||||
|
file: filename,
|
||||||
|
message: "Could not be unloaded.",
|
||||||
|
error: { message: err.message, stack: err.stack },
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
isLoaded(filename, type) {
|
||||||
|
const isPlugin = type === "plugin";
|
||||||
|
const baseFolder = isPlugin ? this.pluginsFolder : this.themesFolder;
|
||||||
|
try {
|
||||||
|
__non_webpack_require__.cache[
|
||||||
|
__non_webpack_require__.resolve(path.resolve(baseFolder, filename))
|
||||||
|
];
|
||||||
|
} catch (err) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
async reloadContent(filename, type) {
|
||||||
|
const cantUnload = this.unloadContent(filename, type);
|
||||||
|
if (cantUnload) return cantUnload;
|
||||||
|
return await this.loadContent(filename, type);
|
||||||
|
}
|
||||||
|
|
||||||
|
loadNewContent(type) {
|
||||||
|
const isPlugin = type === "plugin";
|
||||||
|
const fileEnding = isPlugin ? ".plugin.js" : ".theme.css";
|
||||||
|
const basedir = isPlugin ? this.pluginsFolder : this.themesFolder;
|
||||||
|
const files = fs.readdirSync(basedir);
|
||||||
|
const contentList = Object.values(isPlugin ? bdplugins : bdthemes);
|
||||||
|
const removed = contentList
|
||||||
|
.filter((t) => !files.includes(t.filename))
|
||||||
|
.map((c) => (isPlugin ? c.plugin.getName() : c.name));
|
||||||
|
const added = files.filter(
|
||||||
|
(f) =>
|
||||||
|
!contentList.find((t) => t.filename == f) &&
|
||||||
|
f.endsWith(fileEnding) &&
|
||||||
|
fs.statSync(path.resolve(basedir, f)).isFile()
|
||||||
|
);
|
||||||
|
return { added, removed };
|
||||||
|
}
|
||||||
|
|
||||||
|
async loadAllContent(type) {
|
||||||
|
this.patchExtensions();
|
||||||
|
const isPlugin = type === "plugin";
|
||||||
|
const fileEnding = isPlugin ? ".plugin.js" : ".theme.css";
|
||||||
|
const basedir = isPlugin ? this.pluginsFolder : this.themesFolder;
|
||||||
|
const errors = [];
|
||||||
|
const files = fs.readdirSync(basedir);
|
||||||
|
|
||||||
|
for (const filename of files) {
|
||||||
|
if (
|
||||||
|
!fs.statSync(path.resolve(basedir, filename)).isFile() ||
|
||||||
|
!filename.endsWith(fileEnding)
|
||||||
|
)
|
||||||
|
continue;
|
||||||
|
const error = await this.loadContent(filename, type);
|
||||||
|
if (error) errors.push(error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return errors;
|
||||||
|
}
|
||||||
|
|
||||||
|
loadPlugins() {
|
||||||
|
return this.loadAllContent("plugin");
|
||||||
|
}
|
||||||
|
loadThemes() {
|
||||||
|
return this.loadAllContent("theme");
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Don't expose contentManager - could be dangerous for now
|
* Don't expose contentManager - could be dangerous for now
|
||||||
|
|
|
@ -54,12 +54,12 @@ Core.prototype.init = async function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (window.ED) {
|
if (window.ED) {
|
||||||
Utils.alert("Not Supported", "BandagedBD does not work with EnhancedDiscord. Please uninstall one of them.");
|
Utils.alert("Not Supported", "LightcordBD does not work with EnhancedDiscord. Please uninstall one of them.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (window.WebSocket && window.WebSocket.name && window.WebSocket.name.includes("Patched")) {
|
if (window.WebSocket && window.WebSocket.name && window.WebSocket.name.includes("Patched")) {
|
||||||
Utils.alert("Not Supported", "BandagedBD does not work with Powercord. Please uninstall one of them.");
|
Utils.alert("Not Supported", "LightcordBD does not work with Powercord. Please uninstall one of them.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,7 +175,7 @@ Core.prototype.patchAttributes = async function() {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
} else if (props.user.id === "696481194443014174" || props.user.id === "696003456611385396"){ // Not Thomiz: Lightcord Developer, Phorcys: Lightcord Developer
|
} else if (props.user.id === "696481194443014174" || props.user.id === "363022107753578496"|| props.user.id === "424639027606585356"){ // Not Thomiz: Lightcord Developer, Phorcys: Lightcord Developer, smartfridge: Lightcord Dev
|
||||||
children.push(
|
children.push(
|
||||||
BDV2.React.createElement(TooltipWrap, {color: "black", side: "top", text: "Lightcord Developer"},
|
BDV2.React.createElement(TooltipWrap, {color: "black", side: "top", text: "Lightcord Developer"},
|
||||||
BDV2.React.createElement(Anchor, {className: "bd-chat-badge", href: "https://github.com/Lightcord/Lightcord", title: "Lightcord", target: "_blank"},
|
BDV2.React.createElement(Anchor, {className: "bd-chat-badge", href: "https://github.com/Lightcord/Lightcord", title: "Lightcord", target: "_blank"},
|
||||||
|
@ -485,22 +485,52 @@ Core.prototype.patchMessageHeader = function() {
|
||||||
if (!children || !author || !author.id)return
|
if (!children || !author || !author.id)return
|
||||||
// if (header && header.className) header.className += " "
|
// if (header && header.className) header.className += " "
|
||||||
if (!Array.isArray(children)) return;
|
if (!Array.isArray(children)) return;
|
||||||
if (author.id === "249746236008169473") { // Rauenzi: BandagedBD Developer
|
if (author.id === "249746236008169473") {
|
||||||
children.push(
|
// Rauenzi: BandagedBD Developer
|
||||||
BDV2.React.createElement(TooltipWrap, {color: "black", side: "top", text: "BandagedBD Developer"},
|
children.push(
|
||||||
BDV2.React.createElement(Anchor, {className: "bd-chat-badge", href: "https://github.com/rauenzi/BetterDiscordApp", title: "BandagedBD", target: "_blank"},
|
BDV2.React.createElement(
|
||||||
BDV2.React.createElement(BDLogo, {size: "16px", className: "bd-logo"})
|
TooltipWrap,
|
||||||
)
|
{ color: "black", side: "top", text: "BandagedBD Developer" },
|
||||||
)
|
BDV2.React.createElement(
|
||||||
);
|
Anchor,
|
||||||
} else if (author.id === "696481194443014174" || author.id === "696003456611385396"){ // Not Thomiz: Lightcord Developer, Phorcys: Lightcord Developer
|
{
|
||||||
children.push(
|
className: "bd-chat-badge",
|
||||||
BDV2.React.createElement(TooltipWrap, {color: "black", side: "top", text: "Lightcord Developer"},
|
href: "https://github.com/rauenzi/BetterDiscordApp",
|
||||||
BDV2.React.createElement(Anchor, {className: "bd-chat-badge", href: "https://github.com/Lightcord/Lightcord", title: "Lightcord", target: "_blank"},
|
title: "BandagedBD",
|
||||||
BDV2.React.createElement(LightcordLogo, {size: "16px", className: "bd-logo"})
|
target: "_blank",
|
||||||
)
|
},
|
||||||
)
|
BDV2.React.createElement(BDLogo, {
|
||||||
);
|
size: "16px",
|
||||||
|
className: "bd-logo",
|
||||||
|
})
|
||||||
|
)
|
||||||
|
)
|
||||||
|
); //(props.user.id === "696481194443014174" || props.user.id === "363022107753578496"|| props.user.id === "424639027606585356"){ // Not Thomiz: Lightcord Developer, Phorcys: Lightcord Developer, smartfridge: Lightcord Dev
|
||||||
|
} else if (
|
||||||
|
author.id === "696481194443014174" ||
|
||||||
|
author.id === "363022107753578496" ||
|
||||||
|
author.id === "424639027606585356"
|
||||||
|
) {
|
||||||
|
// Not Thomiz: Lightcord Developer, Phorcys: Lightcord Developer
|
||||||
|
children.push(
|
||||||
|
BDV2.React.createElement(
|
||||||
|
TooltipWrap,
|
||||||
|
{ color: "black", side: "top", text: "Lightcord Developer" },
|
||||||
|
BDV2.React.createElement(
|
||||||
|
Anchor,
|
||||||
|
{
|
||||||
|
className: "bd-chat-badge",
|
||||||
|
href: "https://github.com/Lightcord/Lightcord",
|
||||||
|
title: "Lightcord",
|
||||||
|
target: "_blank",
|
||||||
|
},
|
||||||
|
BDV2.React.createElement(LightcordLogo, {
|
||||||
|
size: "16px",
|
||||||
|
className: "bd-logo",
|
||||||
|
})
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
const id = uuidv4()
|
const id = uuidv4()
|
||||||
children.push(
|
children.push(
|
||||||
|
|
|
@ -95,7 +95,11 @@ export default new class DevMode {
|
||||||
}
|
}
|
||||||
const cmWrap = cm.parentElement
|
const cmWrap = cm.parentElement
|
||||||
|
|
||||||
const scroller = cm.childNodes[0].childNodes[0]
|
if ([...cm.childNodes[0].childNodes].length > 1) {
|
||||||
|
var scroller = cm.childNodes[0].childNodes[1]
|
||||||
|
} else {
|
||||||
|
var scroller = cm.childNodes[0].childNodes[0]
|
||||||
|
}
|
||||||
const cmg = DOM.createElement(`<div role="group"></div>`);
|
const cmg = DOM.createElement(`<div role="group"></div>`);
|
||||||
/**
|
/**
|
||||||
* @type {HTMLElement}
|
* @type {HTMLElement}
|
||||||
|
|
|
@ -17,11 +17,12 @@ let emojiSearch = BDModules.get(e => e.default && e.default.getDisambiguatedEmoj
|
||||||
const appSettings = Lightcord.Api.settings
|
const appSettings = Lightcord.Api.settings
|
||||||
|
|
||||||
export default new class EmojiModule {
|
export default new class EmojiModule {
|
||||||
constructor(){
|
|
||||||
this.init().catch(err => Utils.err("EmojiModule", "An error occured", err)) // better logging
|
constructor() {
|
||||||
|
this.init().catch(err => Utils.err("EmojiModule", "An error occured", err))
|
||||||
}
|
}
|
||||||
|
|
||||||
async init(){
|
async init() {
|
||||||
/** Emoji AutoComplete */
|
/** Emoji AutoComplete */
|
||||||
if(!AutocompleteModule)AutocompleteModule = await window.Lightcord.Api.ensureExported(e => e.default && e.default.displayName === "Autocomplete")
|
if(!AutocompleteModule)AutocompleteModule = await window.Lightcord.Api.ensureExported(e => e.default && e.default.displayName === "Autocomplete")
|
||||||
if(!AutoCompletionTemplates)AutoCompletionTemplates = await window.Lightcord.Api.ensureExported(e => e.getAutocompleteOptions)
|
if(!AutoCompletionTemplates)AutoCompletionTemplates = await window.Lightcord.Api.ensureExported(e => e.getAutocompleteOptions)
|
||||||
|
@ -38,7 +39,7 @@ export default new class EmojiModule {
|
||||||
}
|
}
|
||||||
|
|
||||||
if(AutocompleteModule && AutoCompletionTemplates && EmojiModuleQuery && Messages && guildModule && emojiSearch){
|
if(AutocompleteModule && AutoCompletionTemplates && EmojiModuleQuery && Messages && guildModule && emojiSearch){
|
||||||
console.log(`Patching getAutocompleteOptions of AutoCompletionTemplates`, AutoCompletionTemplates)
|
Utils.log("EmojiModule", `Patching getAutocompleteOptions of AutoCompletionTemplates`, AutoCompletionTemplates)
|
||||||
const getAutocompleteOptions = AutoCompletionTemplates.getAutocompleteOptions
|
const getAutocompleteOptions = AutoCompletionTemplates.getAutocompleteOptions
|
||||||
AutoCompletionTemplates.getAutocompleteOptions = function(e, t, n, r, a){
|
AutoCompletionTemplates.getAutocompleteOptions = function(e, t, n, r, a){
|
||||||
const value = getAutocompleteOptions.call(this, ...arguments)
|
const value = getAutocompleteOptions.call(this, ...arguments)
|
||||||
|
@ -81,14 +82,14 @@ export default new class EmojiModule {
|
||||||
}
|
}
|
||||||
return value
|
return value
|
||||||
}
|
}
|
||||||
}else{
|
} else {
|
||||||
console.error(new Error("Couldn't start autocompletion of Lightcord's emojis."))
|
Utils.err("EmojiModule", "Couldn't start auto-completion of Lightcord's emojis.")
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Emoji display */
|
/** Emoji display */
|
||||||
while (!BDV2.MessageComponent) await new Promise(resolve => setTimeout(resolve, 100));
|
while (!BDV2.MessageComponent) await new Promise(resolve => setTimeout(resolve, 100));
|
||||||
|
|
||||||
if (!this.cancelEmojiRender){ // TODO: Proper emoji formatting / rendering
|
if (!this.cancelEmojiRender) { // TODO: Proper emoji formatting / rendering
|
||||||
this.cancelEmoteRender = Utils.monkeyPatch(BDV2.MessageComponent, "default", {before: (data) => {
|
this.cancelEmoteRender = Utils.monkeyPatch(BDV2.MessageComponent, "default", {before: (data) => {
|
||||||
const message = Utils.getNestedProp(data.methodArguments[0], "childrenMessageContent.props.message")
|
const message = Utils.getNestedProp(data.methodArguments[0], "childrenMessageContent.props.message")
|
||||||
if(!message)return
|
if(!message)return
|
||||||
|
@ -106,11 +107,11 @@ export default new class EmojiModule {
|
||||||
let emojis = []
|
let emojis = []
|
||||||
|
|
||||||
const newContent = []
|
const newContent = []
|
||||||
for(let node of content){
|
for(let node of content) {
|
||||||
if (typeof(node) !== "string") {
|
if (typeof(node) !== "string") {
|
||||||
newContent.push(node)
|
newContent.push(node)
|
||||||
continue
|
continue
|
||||||
};
|
}
|
||||||
let parsed;
|
let parsed;
|
||||||
let hasParsed = false
|
let hasParsed = false
|
||||||
|
|
||||||
|
|
|
@ -79,6 +79,7 @@ export function checkViruses(hash, data, resultCallback, removeCallback, filenam
|
||||||
const scrpt = removeComment === 1 ? no_comments : data
|
const scrpt = removeComment === 1 ? no_comments : data
|
||||||
if(test.exec(scrpt)){
|
if(test.exec(scrpt)){
|
||||||
isHarmful = threats[type]
|
isHarmful = threats[type]
|
||||||
|
Utils.showToast(`${hashToUrl[hash].split("/").pop()} failed at test`, test, ". Marked as", threats[type])
|
||||||
console.log(`${hashToUrl[hash].split("/").pop()} failed at test`, test, ". Marked as", threats[type])
|
console.log(`${hashToUrl[hash].split("/").pop()} failed at test`, test, ". Marked as", threats[type])
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
@ -93,7 +94,7 @@ export function checkViruses(hash, data, resultCallback, removeCallback, filenam
|
||||||
hash: hash,
|
hash: hash,
|
||||||
filename
|
filename
|
||||||
}
|
}
|
||||||
|
Utils.showToast(`Found potentially dangerous ${cache[hash].type.toLowerCase()}: ${cache[hash].name}`)
|
||||||
console.log(`Found potentially dangerous ${cache[hash].type.toLowerCase()}: ${cache[hash].name}`)
|
console.log(`Found potentially dangerous ${cache[hash].type.toLowerCase()}: ${cache[hash].name}`)
|
||||||
|
|
||||||
resultCallback(cache[hash])
|
resultCallback(cache[hash])
|
||||||
|
|
|
@ -1,58 +1,87 @@
|
||||||
import {settingsCookie} from "../0globals";
|
import { settingsCookie } from "../0globals";
|
||||||
import BDV2 from "./v2";
|
import BDV2 from "./v2";
|
||||||
import webpackModules from "./webpackModules";
|
import webpackModules from "./webpackModules";
|
||||||
import Utils from "./utils";
|
import Utils from "./utils";
|
||||||
import DOM from "./domtools";
|
import DOM from "./domtools";
|
||||||
|
|
||||||
import V2C_PublicServers from "../ui/publicservers/publicServers";
|
import V2C_PublicServers from "../ui/publicservers/publicServers";
|
||||||
import Layers from "./Layers";
|
import Layer from "../ui/publicservers/layer";
|
||||||
|
|
||||||
export default new class V2_PublicServers {
|
export default new (class V2_PublicServers {
|
||||||
|
constructor() {
|
||||||
|
this._appendButton = this._appendButton.bind(this);
|
||||||
|
}
|
||||||
|
|
||||||
constructor() {
|
get component() {
|
||||||
this._appendButton = this._appendButton.bind(this);
|
return BDV2.react.createElement(
|
||||||
window.Lightcord.BetterDiscord.V2_PublicServers = this
|
Layer,
|
||||||
|
{ rootId: "pubslayerroot", id: "pubslayer" },
|
||||||
|
BDV2.react.createElement(V2C_PublicServers, { rootId: "pubslayerroot" })
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
get root() {
|
||||||
|
const _root = document.getElementById("pubslayerroot");
|
||||||
|
if (!_root) {
|
||||||
|
if (!this.injectRoot()) return null;
|
||||||
|
return this.root;
|
||||||
}
|
}
|
||||||
|
return _root;
|
||||||
|
}
|
||||||
|
|
||||||
render() {
|
injectRoot() {
|
||||||
Layers.createLayer((close) => {
|
const layers = DOM.query(".layers, .layers-3iHuyZ");
|
||||||
return BDV2.react.createElement(V2C_PublicServers, {rootId: "pubslayerroot", close})
|
if (!layers) return false;
|
||||||
})
|
layers.append(DOM.createElement("<div id='pubslayerroot'>"));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const root = this.root;
|
||||||
|
if (!root) {
|
||||||
|
console.log("FAILED TO LOCATE ROOT: .layers");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
BDV2.reactDom.render(this.component, root);
|
||||||
|
}
|
||||||
|
|
||||||
get button() {
|
get button() {
|
||||||
const btn = DOM.createElement(`<div id="bd-pub-li" class="${BDV2.guildClasses.listItem}">`);
|
const btn = DOM.createElement(
|
||||||
if (!settingsCookie["bda-gs-1"]) btn.style.display = "none";
|
`<div id="bd-pub-li" class="${BDV2.guildClasses.listItem}">`
|
||||||
const label = DOM.createElement(`<div id="bd-pub-button" class="${"wrapper-25eVIn " + BDV2.guildClasses.circleButtonMask}">public</div>`);
|
);
|
||||||
label.addEventListener("click", () => {this.render();});
|
if (!settingsCookie["bda-gs-1"]) btn.style.display = "none";
|
||||||
btn.append(label);
|
const label = DOM.createElement(
|
||||||
return btn;
|
`<div id="bd-pub-button" class="${
|
||||||
}
|
"wrapper-25eVIn " + BDV2.guildClasses.circleButtonMask
|
||||||
|
}">public</div>`
|
||||||
|
);
|
||||||
|
label.addEventListener("click", () => {
|
||||||
|
this.render();
|
||||||
|
});
|
||||||
|
btn.append(label);
|
||||||
|
return btn;
|
||||||
|
}
|
||||||
|
|
||||||
_appendButton() {
|
_appendButton() {
|
||||||
let [
|
/*if (DOM.query("#bd-pub-li")) return;
|
||||||
classNametutorialContainer
|
const wrapper = BDV2.guildClasses.wrapper.split(" ")[0];
|
||||||
] = [
|
const guilds = DOM.query(`.${wrapper} .scroller-2TZvBN >:first-child`);
|
||||||
Utils.removeDa(BDModules.get(e => e.downloadProgress && e.tutorialContainer)[0].tutorialContainer)
|
if (guilds) DOM.after(guilds, this.button);*/
|
||||||
]
|
}
|
||||||
if (DOM.query("#bd-pub-li")) return;
|
|
||||||
const guilds = DOM.query(`div.${classNametutorialContainer} > div`);
|
|
||||||
DOM.after(guilds, this.button);
|
|
||||||
}
|
|
||||||
|
|
||||||
addButton() {
|
addButton() {
|
||||||
if (this.guildPatch) return;
|
/*if (this.guildPatch) return;
|
||||||
const GuildList = webpackModules.find(m => m.default && m.default.displayName == "NavigableGuilds");
|
const GuildList = webpackModules.find(m => m.default && m.default.displayName == "NavigableGuilds");
|
||||||
const GuildListOld = webpackModules.findByDisplayName("Guilds");
|
const GuildListOld = webpackModules.findByDisplayName("Guilds");
|
||||||
if (!GuildList && !GuildListOld) Utils.warn("PublicServer", "Can't find GuildList component");
|
if (!GuildList && !GuildListOld) Utils.warn("PublicServer", "Can't find GuildList component");
|
||||||
this.guildPatch = Utils.monkeyPatch(GuildList ? GuildList : GuildListOld.prototype, GuildList ? "default" : "render", {after: this._appendButton});
|
this.guildPatch = Utils.monkeyPatch(GuildList ? GuildList : GuildListOld.prototype, GuildList ? "default" : "render", {after: this._appendButton});
|
||||||
this._appendButton();
|
this._appendButton();*/
|
||||||
}
|
}
|
||||||
|
|
||||||
removeButton() {
|
removeButton() {
|
||||||
this.guildPatch();
|
/*this.guildPatch();
|
||||||
delete this.guildPatch;
|
delete this.guildPatch;
|
||||||
const button = DOM.query("#bd-pub-li");
|
const button = DOM.query("#bd-pub-li");
|
||||||
if (button) button.remove();
|
if (button) button.remove();*/
|
||||||
}
|
}
|
||||||
};
|
})();
|
||||||
|
|
|
@ -45,7 +45,7 @@ class BDSidebarHeader extends React.PureComponent {
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
let rendered = new sidebarComponents.Header({
|
let rendered = new sidebarComponents.Header({
|
||||||
children: React.createElement("span", null, "Bandaged BD", changelogButton),
|
children: React.createElement("span", null, "Lightcord BD", changelogButton),
|
||||||
className: "ui-tab-bar-header"
|
className: "ui-tab-bar-header"
|
||||||
})
|
})
|
||||||
return rendered
|
return rendered
|
||||||
|
|
|
@ -54,15 +54,15 @@ export default class Utils {
|
||||||
}
|
}
|
||||||
|
|
||||||
static log(moduleName, message) {
|
static log(moduleName, message) {
|
||||||
console.log(`%c[BandagedBD]%c [${moduleName}]%c ${message}`, "color: #3a71c1; font-weight: 700;", "color: #3a71c1;", "");
|
console.log(`%c[LightcordBD]%c [${moduleName}]%c ${message}`, "color: #3a71c1; font-weight: 700;", "color: #3a71c1;", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
static warn(moduleName, message) {
|
static warn(moduleName, message) {
|
||||||
console.warn(`%c[BandagedBD]%c [${moduleName}]%c ${message}`, "color: #E8A400; font-weight: 700;", "color: #E8A400;", "");
|
console.warn(`%c[LightcordBD]%c [${moduleName}]%c ${message}`, "color: #E8A400; font-weight: 700;", "color: #E8A400;", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
static err(moduleName, message, error) {
|
static err(moduleName, message, error) {
|
||||||
console.log(`%c[BandagedBD]%c [${moduleName}]%c ${message}`, "color: red; font-weight: 700;", "color: red;", "");
|
console.log(`%c[LightcordBD]%c [${moduleName}]%c ${message}`, "color: red; font-weight: 700;", "color: red;", "");
|
||||||
if (error) {
|
if (error) {
|
||||||
console.groupCollapsed("%cError: " + error.message, "color: red;");
|
console.groupCollapsed("%cError: " + error.message, "color: red;");
|
||||||
console.error(error.stack);
|
console.error(error.stack);
|
||||||
|
@ -231,7 +231,7 @@ export default class Utils {
|
||||||
let headerModule = BDModules.get(e => e.header && e.responsiveWidthMobile && e.hideOnFullscreen)[0]
|
let headerModule = BDModules.get(e => e.header && e.responsiveWidthMobile && e.hideOnFullscreen)[0]
|
||||||
let footer2Module = BDModules.get(e => e.header && e.responsiveWidthMobile && e.focusLock)[0]
|
let footer2Module = BDModules.get(e => e.header && e.responsiveWidthMobile && e.focusLock)[0]
|
||||||
const modal = DOM.createElement(`<div class="bd-modal-wrapper theme-dark">
|
const modal = DOM.createElement(`<div class="bd-modal-wrapper theme-dark">
|
||||||
<div class="bd-backdrop ${BDModules.get(e => e.backdrop && e.backdropWithLayer)[0].backdrop}"></div>
|
<div class="bd-backdrop ${BDModules.get(e => e.backdrop && e.withLayer)[0].backdrop}"></div>
|
||||||
<div class="bd-modal ${modalModule.modal}">
|
<div class="bd-modal ${modalModule.modal}">
|
||||||
<div class="bd-modal-inner ${modalModule.inner}">
|
<div class="bd-modal-inner ${modalModule.inner}">
|
||||||
<div class="header ${headerModule.header}">
|
<div class="header ${headerModule.header}">
|
||||||
|
@ -389,12 +389,12 @@ export default class Utils {
|
||||||
if (!Changelog || !ModalStack || !ChangelogClasses || !TextElement || !FlexChild || !Titles || !MarkdownParser) return;
|
if (!Changelog || !ModalStack || !ChangelogClasses || !TextElement || !FlexChild || !Titles || !MarkdownParser) return;
|
||||||
|
|
||||||
const {
|
const {
|
||||||
image = "https://repository-images.githubusercontent.com/105473537/957b5480-7c26-11e9-8401-50fa820cbae5",
|
image = "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fh5vmruyXU1A%2Fmaxresdefault.jpg&f=1&nofb=1",
|
||||||
description = "",
|
description = "",
|
||||||
changes = [],
|
changes = [],
|
||||||
title = "BandagedBD",
|
title = "Lightcord",
|
||||||
subtitle = `v${bbdVersion}`,
|
subtitle = `v${bbdVersion}`,
|
||||||
footer
|
footer,
|
||||||
} = options;
|
} = options;
|
||||||
const ce = BDV2.React.createElement;
|
const ce = BDV2.React.createElement;
|
||||||
const changelogItems = [ce("img", {src: image})];
|
const changelogItems = [ce("img", {src: image})];
|
||||||
|
|
|
@ -1,167 +1,270 @@
|
||||||
import {settings} from "../0globals";
|
import { settings } from "../0globals";
|
||||||
import themeModule from "./themeModule";
|
|
||||||
|
|
||||||
export default new class V2 {
|
export default new (class V2 {
|
||||||
|
constructor() {
|
||||||
|
this.editorDetached = false;
|
||||||
|
this.WebpackModules = (() => {
|
||||||
|
const req = webpackJsonp.push([
|
||||||
|
[],
|
||||||
|
{ __extra_id__: (module, exports, req) => (module.exports = req) },
|
||||||
|
[["__extra_id__"]],
|
||||||
|
]);
|
||||||
|
delete req.m.__extra_id__;
|
||||||
|
delete req.c.__extra_id__;
|
||||||
|
|
||||||
constructor() {
|
const shouldProtect = (theModule) => {
|
||||||
this.editorDetached = false;
|
if (
|
||||||
this.WebpackModules = (() => {
|
theModule.remove &&
|
||||||
const req = webpackJsonp.push([[], {__extra_id__: (module, exports, req) => module.exports = req}, [["__extra_id__"]]]);
|
theModule.set &&
|
||||||
delete req.m.__extra_id__;
|
theModule.clear &&
|
||||||
delete req.c.__extra_id__;
|
theModule.get &&
|
||||||
|
!theModule.sort
|
||||||
|
)
|
||||||
|
return true;
|
||||||
|
if (theModule.getToken || theModule.getEmail || theModule.showToken)
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
const shouldProtect = theModule => {
|
const protect = (theModule) => {
|
||||||
if (theModule.remove && theModule.set && theModule.clear && theModule.get && !theModule.sort) return true;
|
if (
|
||||||
if (theModule.getToken || theModule.getEmail || theModule.showToken) return true;
|
theModule.remove &&
|
||||||
return false;
|
theModule.set &&
|
||||||
};
|
theModule.clear &&
|
||||||
|
theModule.get &&
|
||||||
|
!theModule.sort
|
||||||
|
)
|
||||||
|
return null;
|
||||||
|
if (!theModule.getToken && !theModule.getEmail && !theModule.showToken)
|
||||||
|
return theModule;
|
||||||
|
const proxy = new Proxy(theModule, {
|
||||||
|
getOwnPropertyDescriptor: function (obj, prop) {
|
||||||
|
if (
|
||||||
|
prop === "getToken" ||
|
||||||
|
prop === "getEmail" ||
|
||||||
|
prop === "showToken"
|
||||||
|
)
|
||||||
|
return undefined;
|
||||||
|
return Object.getOwnPropertyDescriptor(obj, prop);
|
||||||
|
},
|
||||||
|
get: function (obj, func) {
|
||||||
|
if (func == "getToken")
|
||||||
|
return () =>
|
||||||
|
"mfa.XCnbKzo0CLIqdJzBnL0D8PfDruqkJNHjwHXtr39UU3F8hHx43jojISyi5jdjO52e9_e9MjmafZFFpc-seOMa";
|
||||||
|
if (func == "getEmail") return () => "puppet11112@gmail.com";
|
||||||
|
if (func == "showToken") return () => true;
|
||||||
|
// if (func == "__proto__") return proxy;
|
||||||
|
return obj[func];
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return proxy;
|
||||||
|
};
|
||||||
|
|
||||||
const protect = (theModule, isDefault) => {
|
const find = (filter) => {
|
||||||
let mod = !isDefault ? theModule.default : theModule
|
for (const i in req.c) {
|
||||||
if(!mod)return theModule
|
if (req.c.hasOwnProperty(i)) {
|
||||||
if (mod.remove && mod.set && mod.clear && mod.get && !mod.sort) return null;
|
const m = req.c[i].exports;
|
||||||
if (!mod.getToken && !mod.getEmail && !mod.showToken)return theModule
|
if (m && m.__esModule && m.default && filter(m.default))
|
||||||
|
return protect(m.default);
|
||||||
|
if (m && filter(m)) return protect(m);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// console.warn("Cannot find loaded module in cache");
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
|
||||||
const proxy = new Proxy(mod, {
|
const findAll = (filter) => {
|
||||||
getOwnPropertyDescriptor: function(obj, prop) {
|
const modules = [];
|
||||||
if (prop === "getToken" || prop === "getEmail" || prop === "showToken") return undefined;
|
for (const i in req.c) {
|
||||||
return Object.getOwnPropertyDescriptor(obj, prop);
|
if (req.c.hasOwnProperty(i)) {
|
||||||
},
|
const m = req.c[i].exports;
|
||||||
get: function(obj, func) {
|
if (m && m.__esModule && m.default && filter(m.default))
|
||||||
if (func == "getToken" && obj.getToken) return () => "mfa.XCnbKzo0CLIqdJzBnL0D8PfDruqkJNHjwHXtr39UU3F8hHx43jojISyi5jdjO52e9_e9MjmafZFFpc-seOMa";
|
modules.push(protect(m.default));
|
||||||
if (func == "getEmail" && obj.getEmail) return () => "puppet11112@gmail.com";
|
else if (m && filter(m)) modules.push(protect(m));
|
||||||
if (func == "showToken" && obj.showToken) return () => true;
|
}
|
||||||
if (func == "__proto__" && obj.__proto__) return proxy;
|
}
|
||||||
|
return modules;
|
||||||
|
};
|
||||||
|
|
||||||
return obj[func];
|
const findByUniqueProperties = (propNames) =>
|
||||||
}
|
find((module) => propNames.every((prop) => module[prop] !== undefined));
|
||||||
});
|
const findByPrototypes = (protoNames) =>
|
||||||
|
find(
|
||||||
|
(module) =>
|
||||||
|
module.prototype &&
|
||||||
|
protoNames.every(
|
||||||
|
(protoProp) => module.prototype[protoProp] !== undefined
|
||||||
|
)
|
||||||
|
);
|
||||||
|
const findByDisplayName = (displayName) =>
|
||||||
|
find((module) => module.displayName === displayName);
|
||||||
|
|
||||||
if(!isDefault){
|
return {
|
||||||
return Object.assign({}, theModule, {default: proxy})
|
find,
|
||||||
}
|
findAll,
|
||||||
|
findByUniqueProperties,
|
||||||
|
findByPrototypes,
|
||||||
|
findByDisplayName,
|
||||||
|
};
|
||||||
|
})();
|
||||||
|
|
||||||
return proxy;
|
this.internal = {
|
||||||
};
|
react: this.WebpackModules.findByUniqueProperties([
|
||||||
|
"Component",
|
||||||
|
"PureComponent",
|
||||||
|
"Children",
|
||||||
|
"createElement",
|
||||||
|
"cloneElement",
|
||||||
|
]),
|
||||||
|
reactDom: this.WebpackModules.findByUniqueProperties(["findDOMNode"]),
|
||||||
|
};
|
||||||
|
this.getInternalInstance = (e) =>
|
||||||
|
e[Object.keys(e).find((k) => k.startsWith("__reactInternalInstance"))];
|
||||||
|
}
|
||||||
|
|
||||||
const find = (filter) => {
|
initialize() {}
|
||||||
for (const i in req.c) {
|
|
||||||
if (req.c.hasOwnProperty(i)) {
|
|
||||||
const m = req.c[i].exports;
|
|
||||||
if (m && m.__esModule && m.default && filter(m.default)) return protect(m.default, true);
|
|
||||||
if (m && filter(m)) return protect(m, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// console.warn("Cannot find loaded module in cache");
|
|
||||||
return null;
|
|
||||||
};
|
|
||||||
|
|
||||||
const findAll = (filter) => {
|
joinBD1() {
|
||||||
const modules = [];
|
this.InviteActions.acceptInviteAndTransitionToInviteChannel("7eFff2A");
|
||||||
for (const i in req.c) {
|
}
|
||||||
if (req.c.hasOwnProperty(i)) {
|
leaveBD1() {
|
||||||
const m = req.c[i].exports;
|
this.GuildActions.leaveGuild("705908350218666117");
|
||||||
if (m && m.__esModule && m.default && filter(m.default)) modules.push(protect(m.default, true));
|
}
|
||||||
else if (m && filter(m)) modules.push(protect(m, false));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return modules;
|
|
||||||
};
|
|
||||||
|
|
||||||
const findByUniqueProperties = (propNames) => find(module => propNames.every(prop => module[prop] !== undefined));
|
joinBD2() {
|
||||||
const findByPrototypes = (protoNames) => find(module => module.prototype && protoNames.every(protoProp => module.prototype[protoProp] !== undefined));
|
this.InviteActions.acceptInviteAndTransitionToInviteChannel("7eFff2A");
|
||||||
const findByDisplayName = (displayName) => find(module => module.displayName === displayName);
|
}
|
||||||
|
leaveBD2() {
|
||||||
|
this.GuildActions.leaveGuild("705908350218666117");
|
||||||
|
}
|
||||||
|
|
||||||
return {find, findAll, findByUniqueProperties, findByPrototypes, findByDisplayName};
|
get react() {
|
||||||
})();
|
return this.internal.react;
|
||||||
|
}
|
||||||
|
get React() {
|
||||||
|
return this.internal.react;
|
||||||
|
}
|
||||||
|
get reactDom() {
|
||||||
|
return this.internal.reactDom;
|
||||||
|
}
|
||||||
|
get ReactDom() {
|
||||||
|
return this.internal.reactDom;
|
||||||
|
}
|
||||||
|
get reactComponent() {
|
||||||
|
return this.internal.react.Component;
|
||||||
|
}
|
||||||
|
get ReactComponent() {
|
||||||
|
return this.internal.react.Component;
|
||||||
|
}
|
||||||
|
|
||||||
this.internal = {
|
get anchorClasses() {
|
||||||
react: this.WebpackModules.findByUniqueProperties(["Component", "PureComponent", "Children", "createElement", "cloneElement"]),
|
return (
|
||||||
reactDom: this.WebpackModules.findByUniqueProperties(["findDOMNode"])
|
this.WebpackModules.findByUniqueProperties([
|
||||||
};
|
"anchorUnderlineOnHover",
|
||||||
this.getInternalInstance = e => e[Object.keys(e).find(k => k.startsWith("__reactInternalInstance"))];
|
]) || {
|
||||||
window.Lightcord.BetterDiscord.V2 = this
|
anchor: "anchor-3Z-8Bb",
|
||||||
}
|
anchorUnderlineOnHover: "anchorUnderlineOnHover-2ESHQB",
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
get slateEditorClasses() {
|
||||||
|
return this.WebpackModules.findByUniqueProperties(["slateTextArea"]);
|
||||||
|
}
|
||||||
|
get messageClasses() {
|
||||||
|
return this.WebpackModules.findByUniqueProperties([
|
||||||
|
"message",
|
||||||
|
"containerCozy",
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
get guildClasses() {
|
||||||
|
const guildsWrapper = this.WebpackModules.findByUniqueProperties([
|
||||||
|
"wrapper",
|
||||||
|
"unreadMentionsBar",
|
||||||
|
]);
|
||||||
|
const guilds = this.WebpackModules.findByUniqueProperties([
|
||||||
|
"guildsError",
|
||||||
|
"selected",
|
||||||
|
]);
|
||||||
|
const pill = this.WebpackModules.findByUniqueProperties(["blobContainer"]);
|
||||||
|
return Object.assign({}, guildsWrapper, guilds, pill);
|
||||||
|
}
|
||||||
|
|
||||||
initialize() {
|
get MessageContentComponent() {
|
||||||
|
return this.WebpackModules.find(
|
||||||
|
(m) => m.defaultProps && m.defaultProps.hasOwnProperty("disableButtons")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
get MessageComponent() {
|
||||||
|
return this.WebpackModules.find(
|
||||||
|
(m) =>
|
||||||
|
m.default && m.default.toString().search("childrenRepliedMessage") > -1
|
||||||
|
);
|
||||||
|
}
|
||||||
|
get TimeFormatter() {
|
||||||
|
return this.WebpackModules.findByUniqueProperties(["dateFormat"]);
|
||||||
|
}
|
||||||
|
get TooltipWrapper() {
|
||||||
|
return this.WebpackModules.findByDisplayName("Tooltip");
|
||||||
|
}
|
||||||
|
get NativeModule() {
|
||||||
|
return this.WebpackModules.findByUniqueProperties(["setBadge"]);
|
||||||
|
}
|
||||||
|
get InviteActions() {
|
||||||
|
return this.WebpackModules.findByUniqueProperties(["acceptInvite"]);
|
||||||
|
}
|
||||||
|
get GuildActions() {
|
||||||
|
return this.WebpackModules.findByUniqueProperties(["leaveGuild"]);
|
||||||
|
}
|
||||||
|
get Tooltips() {
|
||||||
|
return this.WebpackModules.find(
|
||||||
|
(m) =>
|
||||||
|
m.hide &&
|
||||||
|
m.show &&
|
||||||
|
!m.search &&
|
||||||
|
!m.submit &&
|
||||||
|
!m.search &&
|
||||||
|
!m.activateRagingDemon &&
|
||||||
|
!m.dismiss
|
||||||
|
);
|
||||||
|
}
|
||||||
|
get KeyGenerator() {
|
||||||
|
return this.WebpackModules.find(
|
||||||
|
(m) => m.toString && /"binary"/.test(m.toString())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
get LayerStack() {
|
||||||
|
return this.WebpackModules.findByUniqueProperties(["popLayer"]);
|
||||||
|
}
|
||||||
|
get UserStore() {
|
||||||
|
return this.WebpackModules.findByUniqueProperties(["getCurrentUser"]);
|
||||||
|
}
|
||||||
|
get ChannelStore() {
|
||||||
|
return this.WebpackModules.findByUniqueProperties(["getChannel"]);
|
||||||
|
}
|
||||||
|
get ChannelActions() {
|
||||||
|
return this.WebpackModules.findByUniqueProperties(["openPrivateChannel"]);
|
||||||
|
}
|
||||||
|
get PrivateChannelActions() {
|
||||||
|
return this.WebpackModules.findByUniqueProperties(["selectPrivateChannel"]);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
openDM(userId) {
|
||||||
|
const selfId = this.UserStore.getCurrentUser().id;
|
||||||
|
if (selfId == userId) return;
|
||||||
|
const privateChannelId = this.ChannelStore.getDMFromUserId(userId);
|
||||||
|
if (privateChannelId)
|
||||||
|
return this.PrivateChannelActions.selectPrivateChannel(privateChannelId);
|
||||||
|
this.ChannelActions.openPrivateChannel(selfId, userId);
|
||||||
|
}
|
||||||
|
|
||||||
joinBD1() {this.InviteActions.acceptInviteAndTransitionToInviteChannel("0Tmfo5ZbORCRqbAd");}
|
parseSettings(cat) {
|
||||||
leaveBD1() {this.GuildActions.leaveGuild("86004744966914048");}
|
return Object.keys(settings).reduce((arr, key) => {
|
||||||
|
const setting = settings[key];
|
||||||
joinBD2() {this.InviteActions.acceptInviteAndTransitionToInviteChannel("2HScm8j");}
|
if (setting.cat === cat && setting.implemented && !setting.hidden) {
|
||||||
leaveBD2() {this.GuildActions.leaveGuild("280806472928198656");}
|
setting.text = key;
|
||||||
|
arr.push(setting);
|
||||||
joinLC() {this.InviteActions.acceptInviteAndTransitionToInviteChannel("7eFff2A");}
|
}
|
||||||
leaveLC() {this.GuildActions.leaveGuild("705908350218666117");}
|
return arr;
|
||||||
|
}, []);
|
||||||
/**
|
}
|
||||||
* @type {typeof React}
|
})();
|
||||||
*/
|
|
||||||
get react() {return this.internal.react;}
|
|
||||||
/**
|
|
||||||
* @type {typeof React}
|
|
||||||
*/
|
|
||||||
get React() {return this.internal.react;}
|
|
||||||
/**
|
|
||||||
* @type {typeof import("react-dom")}
|
|
||||||
*/
|
|
||||||
get reactDom() {return this.internal.reactDom;}
|
|
||||||
/**
|
|
||||||
* @type {typeof import("react-dom")}
|
|
||||||
*/
|
|
||||||
get ReactDom() {return this.internal.reactDom;}
|
|
||||||
/**
|
|
||||||
* @type {typeof React.Component}
|
|
||||||
*/
|
|
||||||
get reactComponent() {return this.internal.react.Component;}
|
|
||||||
/**
|
|
||||||
* @type {typeof React.Component}
|
|
||||||
*/
|
|
||||||
get ReactComponent() {return this.internal.react.Component;}
|
|
||||||
|
|
||||||
get anchorClasses() {return this.WebpackModules.findByUniqueProperties(["anchorUnderlineOnHover"]) || {anchor: "anchor-3Z-8Bb", anchorUnderlineOnHover: "anchorUnderlineOnHover-2ESHQB"};}
|
|
||||||
get slateEditorClasses() {return this.WebpackModules.findByUniqueProperties(["slateTextArea"]);}
|
|
||||||
get messageClasses() {return this.WebpackModules.findByUniqueProperties(["message", "containerCozy"]);}
|
|
||||||
get guildClasses() {
|
|
||||||
const guildsWrapper = BDModules.get(e => e.wrapper && e.unreadMentionsBar)[0];
|
|
||||||
const guilds = BDModules.get(e => e.guildsError && e.selected)[0]
|
|
||||||
const pill = BDModules.get(e => e.blobContainer)[0]
|
|
||||||
return Object.assign({}, guildsWrapper, guilds, pill);
|
|
||||||
}
|
|
||||||
|
|
||||||
get MessageContentComponent() {return this.WebpackModules.find(m => m.defaultProps && m.defaultProps.hasOwnProperty("disableButtons"));}
|
|
||||||
get MessageComponent() {return this.WebpackModules.find(m => m.default && m.default.displayName && m.default.displayName == "Message");}
|
|
||||||
get TimeFormatter() {return this.WebpackModules.findByUniqueProperties(["dateFormat"]);}
|
|
||||||
get TooltipWrapper() {return this.WebpackModules.findByDisplayName("Tooltip");}
|
|
||||||
get NativeModule() {return this.WebpackModules.findByUniqueProperties(["setBadge"]);}
|
|
||||||
get InviteActions() {return this.WebpackModules.findByUniqueProperties(["acceptInvite"]);}
|
|
||||||
get GuildActions() {return this.WebpackModules.findByUniqueProperties(["leaveGuild"]);}
|
|
||||||
get Tooltips() {return this.WebpackModules.find(m => m.hide && m.show && !m.search && !m.submit && !m.search && !m.activateRagingDemon && !m.dismiss);}
|
|
||||||
get KeyGenerator() {return this.WebpackModules.find(m => m.toString && /"binary"/.test(m.toString()));}
|
|
||||||
get LayerStack() {return this.WebpackModules.findByUniqueProperties(["popLayer"]);}
|
|
||||||
get UserStore() {return this.WebpackModules.findByUniqueProperties(["getCurrentUser"]);}
|
|
||||||
get ChannelStore() {return this.WebpackModules.findByUniqueProperties(["getChannel"]);}
|
|
||||||
get ChannelActions() {return this.WebpackModules.findByUniqueProperties(["openPrivateChannel"]);}
|
|
||||||
get PrivateChannelActions() {return this.WebpackModules.findByUniqueProperties(["selectPrivateChannel"]);}
|
|
||||||
|
|
||||||
openDM(userId) {
|
|
||||||
const selfId = this.UserStore.getCurrentUser().id;
|
|
||||||
if (selfId == userId) return;
|
|
||||||
const privateChannelId = this.ChannelStore.getDMFromUserId(userId);
|
|
||||||
if (privateChannelId) return this.PrivateChannelActions.selectPrivateChannel(privateChannelId);
|
|
||||||
this.ChannelActions.openPrivateChannel(selfId, userId);
|
|
||||||
}
|
|
||||||
|
|
||||||
parseSettings(cat) {
|
|
||||||
return Object.keys(settings).reduce((arr, key) => {
|
|
||||||
const setting = settings[key];
|
|
||||||
if (setting.cat === cat && setting.implemented && !setting.hidden) {
|
|
||||||
setting.text = key;
|
|
||||||
arr.push(setting);
|
|
||||||
} return arr;
|
|
||||||
}, []);
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -66,24 +66,12 @@ export default class V2C_AccountInfos extends React.Component {
|
||||||
*/
|
*/
|
||||||
const createdAt = user.createdAt
|
const createdAt = user.createdAt
|
||||||
|
|
||||||
let avatarURL = user.avatarURL
|
|
||||||
if(user.avatar && user.avatar.startsWith("a_")){
|
|
||||||
avatarURL = user.getAvatarURL("gif")
|
|
||||||
}
|
|
||||||
|
|
||||||
if(avatarURL.startsWith("/")){
|
|
||||||
avatarURL = "https://discord.com"+avatarURL
|
|
||||||
}
|
|
||||||
if(avatarURL.endsWith("?size=128")){
|
|
||||||
avatarURL = avatarURL.replace("?size=128", "?size=4096")
|
|
||||||
}
|
|
||||||
|
|
||||||
return `+ Username: ${user.username}
|
return `+ Username: ${user.username}
|
||||||
+ Discriminator: ${user.discriminator}
|
+ Discriminator: ${user.discriminator}
|
||||||
+ Tag: ${user.tag}
|
+ Tag: ${user.tag}
|
||||||
+ ID: ${user.id}
|
+ ID: ${user.id}
|
||||||
+ Avatar: ${user.avatar}
|
+ Avatar: ${user.avatar}
|
||||||
+ Avatar URL: ${avatarURL}
|
|
||||||
+ Creation Date: ${(createdAt.getDate()).toString().padStart(2, "0")}/${(createdAt.getMonth()+1).toString().padStart(2, "0")}/${(createdAt.getFullYear()).toString().padStart(2, "0")} ${createdAt.getHours().toString().padStart(2, "0")}h ${createdAt.getMinutes().toString().padStart(2, "0")}min ${createdAt.getSeconds()}s
|
+ Creation Date: ${(createdAt.getDate()).toString().padStart(2, "0")}/${(createdAt.getMonth()+1).toString().padStart(2, "0")}/${(createdAt.getFullYear()).toString().padStart(2, "0")} ${createdAt.getHours().toString().padStart(2, "0")}h ${createdAt.getMinutes().toString().padStart(2, "0")}min ${createdAt.getSeconds()}s
|
||||||
+ Flags: ${user.flags}
|
+ Flags: ${user.flags}
|
||||||
+ Has Nitro: ${user.hasPremiumSubscription ? "Yes" : "No"}
|
+ Has Nitro: ${user.hasPremiumSubscription ? "Yes" : "No"}
|
||||||
|
|
|
@ -97,7 +97,7 @@ export default class V2C_PluginCard extends BDV2.reactComponent {
|
||||||
let settingPanel
|
let settingPanel
|
||||||
if(typeof this.settingsPanel === "object"){
|
if(typeof this.settingsPanel === "object"){
|
||||||
if(this.settingsPanel instanceof Node){
|
if(this.settingsPanel instanceof Node){
|
||||||
settingPanel = BVD2.react.createElement("div", {id: `plugin-settings-${this.name}`, className: "plugin-settings", ref: (elem) => {
|
settingPanel = BDV2.react.createElement("div", {id: `plugin-settings-${this.name}`, className: "plugin-settings", ref: (elem) => {
|
||||||
elem.appendChild(this.settingsPanel)
|
elem.appendChild(this.settingsPanel)
|
||||||
}})
|
}})
|
||||||
}else{
|
}else{
|
||||||
|
@ -105,7 +105,7 @@ export default class V2C_PluginCard extends BDV2.reactComponent {
|
||||||
this.settingsPanel)
|
this.settingsPanel)
|
||||||
}
|
}
|
||||||
}else if(typeof this.settingsPanel === "string"){
|
}else if(typeof this.settingsPanel === "string"){
|
||||||
settingPanel = BVD2.react.createElement("div", {id: `plugin-settings-${this.name}`, className: "plugin-settings", dangerouslySetInnerHTML: {__html: this.settingsPanel}})
|
settingPanel = BDV2.react.createElement("div", {id: `plugin-settings-${this.name}`, className: "plugin-settings", dangerouslySetInnerHTML: {__html: this.settingsPanel}})
|
||||||
}
|
}
|
||||||
return BDV2.react.createElement("div", {className: "bd-card bd-addon-card settings-open ui-switch-item", ref: "cardNode"},
|
return BDV2.react.createElement("div", {className: "bd-card bd-addon-card settings-open ui-switch-item", ref: "cardNode"},
|
||||||
BDV2.react.createElement("div", {style: {"float": "right", "cursor": "pointer"}, onClick: () => {
|
BDV2.react.createElement("div", {style: {"float": "right", "cursor": "pointer"}, onClick: () => {
|
||||||
|
|
|
@ -0,0 +1,87 @@
|
||||||
|
import {settingsCookie} from "../0globals";
|
||||||
|
import quickEmoteMenu from "../modules/quickEmoteMenu";
|
||||||
|
import BDV2 from "../modules/v2";
|
||||||
|
|
||||||
|
export default class BDEmote extends BDV2.reactComponent {
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
|
||||||
|
const isFav = quickEmoteMenu && quickEmoteMenu.favoriteEmotes && quickEmoteMenu.favoriteEmotes[this.label] ? true : false;
|
||||||
|
this.state = {
|
||||||
|
shouldAnimate: !this.animateOnHover,
|
||||||
|
isFavorite: isFav
|
||||||
|
};
|
||||||
|
|
||||||
|
this.onMouseEnter = this.onMouseEnter.bind(this);
|
||||||
|
this.onMouseLeave = this.onMouseLeave.bind(this);
|
||||||
|
this.onClick = this.onClick.bind(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
get animateOnHover() {
|
||||||
|
return settingsCookie["fork-es-2"];
|
||||||
|
}
|
||||||
|
|
||||||
|
get label() {
|
||||||
|
return this.props.modifier ? `${this.props.name}:${this.props.modifier}` : this.props.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
get modifierClass() {
|
||||||
|
return this.props.modifier ? ` emote${this.props.modifier}` : "";
|
||||||
|
}
|
||||||
|
|
||||||
|
onMouseEnter() {
|
||||||
|
if (!this.state.shouldAnimate && this.animateOnHover) this.setState({shouldAnimate: true});
|
||||||
|
if (!this.state.isFavorite && quickEmoteMenu.favoriteEmotes[this.label]) this.setState({isFavorite: true});
|
||||||
|
else if (this.state.isFavorite && !quickEmoteMenu.favoriteEmotes[this.label]) this.setState({isFavorite: false});
|
||||||
|
}
|
||||||
|
|
||||||
|
onMouseLeave() {
|
||||||
|
if (this.state.shouldAnimate && this.animateOnHover) this.setState({shouldAnimate: false});
|
||||||
|
}
|
||||||
|
|
||||||
|
onClick(e) {
|
||||||
|
if (this.props.onClick) this.props.onClick(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return BDV2.react.createElement(BDV2.TooltipWrapper, {
|
||||||
|
color: "black",
|
||||||
|
position: "top",
|
||||||
|
text: this.label,
|
||||||
|
delay: 750
|
||||||
|
},
|
||||||
|
(childProps) => {
|
||||||
|
return BDV2.react.createElement("div", Object.assign({
|
||||||
|
className: "emotewrapper" + (this.props.jumboable ? " jumboable" : ""),
|
||||||
|
onMouseEnter: this.onMouseEnter,
|
||||||
|
onMouseLeave: this.onMouseLeave,
|
||||||
|
onClick: this.onClick
|
||||||
|
}, childProps),
|
||||||
|
BDV2.react.createElement("img", {
|
||||||
|
draggable: false,
|
||||||
|
className: "emote" + this.modifierClass + (this.props.jumboable ? " jumboable" : "") + (!this.state.shouldAnimate ? " stop-animation" : ""),
|
||||||
|
dataModifier: this.props.modifier,
|
||||||
|
alt: this.label,
|
||||||
|
src: this.props.url
|
||||||
|
}),
|
||||||
|
BDV2.react.createElement("input", {
|
||||||
|
className: "fav" + (this.state.isFavorite ? " active" : ""),
|
||||||
|
title: "Favorite!",
|
||||||
|
type: "button",
|
||||||
|
onClick: (e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
if (this.state.isFavorite) {
|
||||||
|
delete quickEmoteMenu.favoriteEmotes[this.label];
|
||||||
|
quickEmoteMenu.updateFavorites();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
quickEmoteMenu.favorite(this.label, this.props.url);
|
||||||
|
}
|
||||||
|
this.setState({isFavorite: !this.state.isFavorite});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,89 @@
|
||||||
|
import BDV2 from "../../modules/v2";
|
||||||
|
import DOM from "../../modules/domtools";
|
||||||
|
|
||||||
|
export default class V2C_Layer extends BDV2.reactComponent {
|
||||||
|
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
this.keyupListener = this.keyupListener.bind(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
keyupListener(e) {
|
||||||
|
if (e.which === 27) {
|
||||||
|
BDV2.reactDom.unmountComponentAtNode(this.refs.root.parentNode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
componentDidMount() {
|
||||||
|
window.addEventListener("keyup", this.keyupListener);
|
||||||
|
|
||||||
|
const thisNode = DOM.query(`#${this.props.id}`);
|
||||||
|
DOM.animate({
|
||||||
|
duration: 200,
|
||||||
|
update: function(progress) {
|
||||||
|
thisNode.style.transform = `scale(${1.1 - 0.1 * progress}) translateZ(0px)`;
|
||||||
|
thisNode.style.opacity = progress;
|
||||||
|
if (progress == 1) {
|
||||||
|
setImmediate(() => {
|
||||||
|
thisNode.style.transform = "";
|
||||||
|
thisNode.style.opacity = "";
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
componentWillUnmount() {
|
||||||
|
window.removeEventListener("keyup", this.keyupListener);
|
||||||
|
|
||||||
|
const thisNode = DOM.query(`#${this.props.id}`);
|
||||||
|
DOM.animate({
|
||||||
|
duration: 200,
|
||||||
|
update: function(progress) {
|
||||||
|
thisNode.style.transform = `scale(${1.1 - 0.1 * (1 - progress)}) translateZ(0px)`;
|
||||||
|
thisNode.style.opacity = 1 - progress;
|
||||||
|
if (progress == 1) {
|
||||||
|
setImmediate(() => {
|
||||||
|
thisNode.remove();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const layer = DOM.query(".publicServersOpen");
|
||||||
|
layer.classList.remove("publicServersOpen");
|
||||||
|
DOM.animate({
|
||||||
|
duration: 200,
|
||||||
|
update: function(progress) {
|
||||||
|
layer.style.transform = `scale(${0.07 * progress + 0.93}) translateZ(0px)`;
|
||||||
|
layer.style.opacity = progress;
|
||||||
|
if (progress == 1) {
|
||||||
|
setImmediate(() => {
|
||||||
|
layer.style.transform = "";
|
||||||
|
layer.style.opacity = "";
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
componentWillMount() {
|
||||||
|
const layer = DOM.query("[class*=\"layer-\"]");
|
||||||
|
layer.classList.add("publicServersOpen");
|
||||||
|
DOM.animate({
|
||||||
|
duration: 200,
|
||||||
|
update: function(progress) {
|
||||||
|
layer.style.transform = `scale(${0.07 * (1 - progress) + 0.93}) translateZ(0px)`;
|
||||||
|
layer.style.opacity = 1 - progress;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return BDV2.react.createElement(
|
||||||
|
"div",
|
||||||
|
{className: "layer bd-layer layer-3QrUeG", id: this.props.id, ref: "root", style: {opacity: 0, transform: "scale(1.1) translateZ(0px)"}},
|
||||||
|
this.props.children
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
import BDV2 from "../../modules/v2";
|
||||||
|
|
||||||
|
import Scroller from "../scroller";
|
||||||
|
|
||||||
|
export default class V2C_SidebarView extends BDV2.reactComponent {
|
||||||
|
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const {sidebar, content, tools} = this.props.children;
|
||||||
|
return BDV2.react.createElement(
|
||||||
|
"div",
|
||||||
|
{className: "standardSidebarView-3F1I7i ui-standard-sidebar-view"},
|
||||||
|
BDV2.react.createElement(
|
||||||
|
"div",
|
||||||
|
{className: "sidebarRegion-VFTUkN sidebar-region"},
|
||||||
|
BDV2.react.createElement(Scroller, {key: "sidebarScroller", ref: "sidebarScroller", sidebar: true, fade: sidebar.fade || true, dark: sidebar.dark || true}, sidebar.component)
|
||||||
|
),
|
||||||
|
BDV2.react.createElement("div", {className: "contentRegion-3nDuYy content-region"},
|
||||||
|
BDV2.react.createElement("div", {className: "contentTransitionWrap-3hqOEW content-transition-wrap"},
|
||||||
|
BDV2.react.createElement("div", {className: "scroller-2FKFPG firefoxFixScrollFlex-cnI2ix contentRegionScroller-26nc1e content-region-scroller scroller", ref: "contentScroller"},
|
||||||
|
|
||||||
|
BDV2.react.createElement("div", {className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"}, content.component),
|
||||||
|
tools.component
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
import {settingsCookie} from "../0globals";
|
||||||
|
import BDV2 from "../modules/v2";
|
||||||
|
|
||||||
|
import SettingsTitle from "./settingsTitle";
|
||||||
|
import Switch from "./switch";
|
||||||
|
|
||||||
|
export default class V2C_SettingsGroup extends BDV2.reactComponent {
|
||||||
|
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const {title, settings, button} = this.props;
|
||||||
|
const buttonComponent = button ? BDV2.react.createElement("button", {key: "title-button", className: "bd-pfbtn", onClick: button.onClick}, button.title) : null;
|
||||||
|
return [BDV2.react.createElement(SettingsTitle, {text: title}),
|
||||||
|
buttonComponent,
|
||||||
|
settings.map(setting => {
|
||||||
|
return BDV2.react.createElement(Switch, {id: setting.id, key: setting.id, data: setting, checked: settingsCookie[setting.id], onChange: (id, checked) => {
|
||||||
|
this.props.onChange(id, checked);
|
||||||
|
}});
|
||||||
|
})];
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,77 @@
|
||||||
|
import BDV2 from "../modules/v2";
|
||||||
|
|
||||||
|
import TabBarSeparator from "./tabBarSeparator";
|
||||||
|
import TabBarHeader from "./tabBarHeader";
|
||||||
|
import TabBarItem from "./tabBarItem";
|
||||||
|
|
||||||
|
export default class V2C_SideBar extends BDV2.reactComponent {
|
||||||
|
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
const si = document.querySelector("[class*=side-] > [class*=selected]");
|
||||||
|
if (si) this.scn = si.className;
|
||||||
|
const ns = document.querySelector("[class*=side-] > [class*='item-']:not([class*=selected])");
|
||||||
|
if (ns) this.nscn = ns.className;
|
||||||
|
const tabs = document.querySelectorAll("[class*='side-'] > [class*='item-']");
|
||||||
|
for (const element of tabs) {
|
||||||
|
element.addEventListener("click", () => {
|
||||||
|
this.setState({
|
||||||
|
selected: null
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setInitialState();
|
||||||
|
this.onClick = this.onClick.bind(this);
|
||||||
|
this.setSelected = this.setSelected.bind(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
setInitialState() {
|
||||||
|
const self = this;
|
||||||
|
self.state = {
|
||||||
|
selected: null,
|
||||||
|
items: self.props.items
|
||||||
|
};
|
||||||
|
|
||||||
|
const initialSelection = self.props.items.find(item => {
|
||||||
|
return item.selected;
|
||||||
|
});
|
||||||
|
if (initialSelection) {
|
||||||
|
self.state.selected = initialSelection.id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const self = this;
|
||||||
|
const {headerText} = self.props;
|
||||||
|
const {items, selected} = self.state;
|
||||||
|
return BDV2.react.createElement(
|
||||||
|
"div",
|
||||||
|
null,
|
||||||
|
BDV2.react.createElement(TabBarSeparator, null),
|
||||||
|
BDV2.react.createElement(TabBarHeader, {text: headerText, button: this.props.headerButton}),
|
||||||
|
items.map(item => {
|
||||||
|
const {id, text} = item;
|
||||||
|
return BDV2.react.createElement(TabBarItem, {key: id, selected: selected === id, text: text, id: id, onClick: self.onClick});
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
setSelected(e) {
|
||||||
|
e.target.className = this.scn;
|
||||||
|
}
|
||||||
|
|
||||||
|
onClick(id) {
|
||||||
|
const si = document.querySelector("[class*=side] > [class*=selected]");
|
||||||
|
if (si) {
|
||||||
|
si.removeEventListener("click", this.setSelected);
|
||||||
|
si.addEventListener("click", this.setSelected);
|
||||||
|
si.className = this.nscn;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setState({selected: null});
|
||||||
|
this.setState({selected: id});
|
||||||
|
|
||||||
|
if (this.props.onClick) this.props.onClick(id);
|
||||||
|
}
|
||||||
|
}
|
|
@ -66,10 +66,10 @@ module.exports = {
|
||||||
optimization: {
|
optimization: {
|
||||||
minimizer: [
|
minimizer: [
|
||||||
new TerserPlugin({
|
new TerserPlugin({
|
||||||
|
sourceMap: true,
|
||||||
terserOptions: {
|
terserOptions: {
|
||||||
compress: {drop_debugger:false}
|
compress: {drop_debugger:false}
|
||||||
},
|
},
|
||||||
sourceMap: true
|
|
||||||
})
|
})
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,373 @@
|
||||||
{
|
{
|
||||||
"name": "discord.js-lightcord",
|
"name": "discord.js-lightcord",
|
||||||
"version": "11.6.4",
|
"version": "11.6.4",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"name": "discord.js-lightcord",
|
||||||
|
"version": "11.6.4",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"@discordjs/collection": "0.1.5"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"ts-loader": "^7.0.5",
|
||||||
|
"typescript": "^3.9.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@discordjs/collection": {
|
||||||
|
"version": "0.1.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.1.5.tgz",
|
||||||
|
"integrity": "sha512-CU1q0UXQUpFNzNB7gufgoisDHP7n+T3tkqTsp3MNUkVJ5+hS3BCvME8uCXAUFlz+6T2FbTCu75A+yQ7HMKqRKw=="
|
||||||
|
},
|
||||||
|
"node_modules/ansi-styles": {
|
||||||
|
"version": "3.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
||||||
|
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"color-convert": "^1.9.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/big.js": {
|
||||||
|
"version": "5.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
|
||||||
|
"integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/braces": {
|
||||||
|
"version": "3.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
|
||||||
|
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"fill-range": "^7.0.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/chalk": {
|
||||||
|
"version": "2.4.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
||||||
|
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"ansi-styles": "^3.2.1",
|
||||||
|
"escape-string-regexp": "^1.0.5",
|
||||||
|
"supports-color": "^5.3.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/color-convert": {
|
||||||
|
"version": "1.9.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
||||||
|
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"color-name": "1.1.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/color-name": {
|
||||||
|
"version": "1.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
||||||
|
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/core-util-is": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
||||||
|
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/emojis-list": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/enhanced-resolve": {
|
||||||
|
"version": "4.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.2.0.tgz",
|
||||||
|
"integrity": "sha512-S7eiFb/erugyd1rLb6mQ3Vuq+EXHv5cpCkNqqIkYkBgN2QdFnyCZzFBleqwGEx4lgNGYij81BWnCrFNK7vxvjQ==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"graceful-fs": "^4.1.2",
|
||||||
|
"memory-fs": "^0.5.0",
|
||||||
|
"tapable": "^1.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.9.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/errno": {
|
||||||
|
"version": "0.1.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
|
||||||
|
"integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"prr": "~1.0.1"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"errno": "cli.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/escape-string-regexp": {
|
||||||
|
"version": "1.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||||
|
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.8.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/fill-range": {
|
||||||
|
"version": "7.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||||
|
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"to-regex-range": "^5.0.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/graceful-fs": {
|
||||||
|
"version": "4.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
|
||||||
|
"integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/has-flag": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
||||||
|
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/inherits": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||||
|
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/is-number": {
|
||||||
|
"version": "7.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
||||||
|
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.12.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/isarray": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/json5": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"minimist": "^1.2.0"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"json5": "lib/cli.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/loader-utils": {
|
||||||
|
"version": "1.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
|
||||||
|
"integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"big.js": "^5.2.2",
|
||||||
|
"emojis-list": "^3.0.0",
|
||||||
|
"json5": "^1.0.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/memory-fs": {
|
||||||
|
"version": "0.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
|
||||||
|
"integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"errno": "^0.1.3",
|
||||||
|
"readable-stream": "^2.0.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4.3.0 <5.0.0 || >=5.10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/micromatch": {
|
||||||
|
"version": "4.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
|
||||||
|
"integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"braces": "^3.0.1",
|
||||||
|
"picomatch": "^2.0.5"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/minimist": {
|
||||||
|
"version": "1.2.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
||||||
|
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/picomatch": {
|
||||||
|
"version": "2.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
|
||||||
|
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/process-nextick-args": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/prr": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
|
||||||
|
"integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/readable-stream": {
|
||||||
|
"version": "2.3.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
|
||||||
|
"integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"core-util-is": "~1.0.0",
|
||||||
|
"inherits": "~2.0.3",
|
||||||
|
"isarray": "~1.0.0",
|
||||||
|
"process-nextick-args": "~2.0.0",
|
||||||
|
"safe-buffer": "~5.1.1",
|
||||||
|
"string_decoder": "~1.1.1",
|
||||||
|
"util-deprecate": "~1.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/safe-buffer": {
|
||||||
|
"version": "5.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
||||||
|
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/semver": {
|
||||||
|
"version": "6.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
||||||
|
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
||||||
|
"dev": true,
|
||||||
|
"bin": {
|
||||||
|
"semver": "bin/semver.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/string_decoder": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"safe-buffer": "~5.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/supports-color": {
|
||||||
|
"version": "5.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
||||||
|
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"has-flag": "^3.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/tapable": {
|
||||||
|
"version": "1.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
|
||||||
|
"integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/to-regex-range": {
|
||||||
|
"version": "5.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||||
|
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"is-number": "^7.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/ts-loader": {
|
||||||
|
"version": "7.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-7.0.5.tgz",
|
||||||
|
"integrity": "sha512-zXypEIT6k3oTc+OZNx/cqElrsbBtYqDknf48OZos0NQ3RTt045fBIU8RRSu+suObBzYB355aIPGOe/3kj9h7Ig==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"chalk": "^2.3.0",
|
||||||
|
"enhanced-resolve": "^4.0.0",
|
||||||
|
"loader-utils": "^1.0.2",
|
||||||
|
"micromatch": "^4.0.0",
|
||||||
|
"semver": "^6.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/typescript": {
|
||||||
|
"version": "3.9.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.5.tgz",
|
||||||
|
"integrity": "sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ==",
|
||||||
|
"dev": true,
|
||||||
|
"bin": {
|
||||||
|
"tsc": "bin/tsc",
|
||||||
|
"tsserver": "bin/tsserver"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/util-deprecate": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||||
|
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@discordjs/collection": {
|
"@discordjs/collection": {
|
||||||
"version": "0.1.5",
|
"version": "0.1.5",
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
"@discordjs/collection": "0.1.5"
|
"@discordjs/collection": "0.1.5"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"typescript": "^3.9.5",
|
"ts-loader": "^7.0.5",
|
||||||
"ts-loader": "^7.0.5"
|
"typescript": "^3.9.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,7 +92,7 @@ export default class Permissions extends BitField {
|
||||||
* - `MANAGE_WEBHOOKS`
|
* - `MANAGE_WEBHOOKS`
|
||||||
* - `MANAGE_EMOJIS`
|
* - `MANAGE_EMOJIS`
|
||||||
* @type {Object}
|
* @type {Object}
|
||||||
* @see {@link https://discordapp.com/developers/docs/topics/permissions}
|
* @see {@link https://discord.com/developers/docs/topics/permissions}
|
||||||
*/
|
*/
|
||||||
static FLAGS:{
|
static FLAGS:{
|
||||||
CREATE_INSTANT_INVITE: number,
|
CREATE_INSTANT_INVITE: number,
|
||||||
|
|
319
LULI.sh
319
LULI.sh
|
@ -1,319 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
# Original script by https://github.com/GermanBread
|
|
||||||
# Lightcord unified Linux installer by Germanbread
|
|
||||||
|
|
||||||
# Some variables
|
|
||||||
ALLOW_NIXOS='false'
|
|
||||||
|
|
||||||
GLOBAL_INSTALL_DIR='/opt'
|
|
||||||
LOCAL_INSTALL_DIR="$HOME/.lightcord"
|
|
||||||
|
|
||||||
# URL for downloads
|
|
||||||
ICON='https://raw.githubusercontent.com/Lightcord/Lightcord/master/discord.png'
|
|
||||||
LC_APPIMAGE='https://lightcord.org/api/gh/releases/Lightcord/Lightcord/dev/lightcord-linux-x86_64.AppImage'
|
|
||||||
LC='https://lightcord.org/api/v1/gh/releases/Lightcord/Lightcord/dev/lightcord-linux-x64.zip'
|
|
||||||
# Fallback URL
|
|
||||||
ALT_LC_APPIMAGE='https://github.com/Lightcord/Lightcord/releases/latest/download/Lightcord-linux-x86_64.AppImage'
|
|
||||||
ALT_LC='https://github.com/Lightcord/Lightcord/releases/latest/download/lightcord-linux-x64.zip'
|
|
||||||
|
|
||||||
# Some helper funtions
|
|
||||||
function Info {
|
|
||||||
tput setaf 8
|
|
||||||
tput bold
|
|
||||||
printf "==> "
|
|
||||||
tput setaf 15
|
|
||||||
printf "$1\n"
|
|
||||||
tput sgr0
|
|
||||||
}
|
|
||||||
function SubInfo {
|
|
||||||
tput setaf 8
|
|
||||||
printf "> "
|
|
||||||
printf "$1\n"
|
|
||||||
tput sgr0
|
|
||||||
}
|
|
||||||
function Warning {
|
|
||||||
tput setaf 3
|
|
||||||
tput bold
|
|
||||||
printf "==> "
|
|
||||||
tput setaf 11
|
|
||||||
printf "$1\n"
|
|
||||||
tput sgr0
|
|
||||||
}
|
|
||||||
function Error {
|
|
||||||
tput setaf 1
|
|
||||||
tput bold
|
|
||||||
printf "==> "
|
|
||||||
tput setaf 9
|
|
||||||
printf "$1\n"
|
|
||||||
tput sgr0
|
|
||||||
}
|
|
||||||
|
|
||||||
if [[ $TERM == dumb ]]; then
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$(whoami)" == "root" ]]; then
|
|
||||||
Error "Don't run this script as root"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check if unzip is installed
|
|
||||||
if [ ! -e /usr/bin/unzip ]; then
|
|
||||||
Warning "Unzip does not seem to be installed!\n\tThis script depends on this package.\n\tInstall unzip and restart this script.\n\tPress enter if you believe that this is a false-positive."
|
|
||||||
read
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat << "logo_end"
|
|
||||||
_ _ _ _ _
|
|
||||||
| | (_)__ _| |_| |_ __ ___ _ _ __| |
|
|
||||||
| |__| / _` | ' \ _/ _/ _ \ '_/ _` |
|
|
||||||
|____|_\__, |_||_\__\__\___/_| \__,_|
|
|
||||||
|___/
|
|
||||||
Unified Linux Installer and Updater
|
|
||||||
|
|
||||||
logo_end
|
|
||||||
|
|
||||||
# First, we need to figure out what kind of install the user wants (AppImage or System-wide?)
|
|
||||||
printf "Please select\n"
|
|
||||||
printf "1: Install Lightcord for all users\n"
|
|
||||||
printf "2: Install Lightcord only for you (Appimage install)\n"
|
|
||||||
printf "\n"
|
|
||||||
|
|
||||||
#Repeat only if the user hasn't entered an integer...
|
|
||||||
while ! [[ $method =~ ^[0-9]+$ ]];
|
|
||||||
do
|
|
||||||
read method;
|
|
||||||
# If the entered value was not an integer, prompt the user again
|
|
||||||
if ! [[ $method =~ ^[0-9]+$ ]]; then
|
|
||||||
sleep 1
|
|
||||||
printf "$(tput setaf 9)Please try again$(tput sgr0)\n"
|
|
||||||
printf "1: Install Lightcord for all users\n"
|
|
||||||
printf "2: Install Lightcord only for you (Appimage install)\n"
|
|
||||||
printf "\n"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [[ $method == 1 ]]; then
|
|
||||||
Warning "Warning:\n\tBlindly running software as root is a massive security issue.\n\tIf you don't fully trust the software you're running DON'T RUN IT AS ROOT.\n\tIf you know exactly what you are doing, continue.\n\tOtherwise restart this script and choose the second option."
|
|
||||||
if [ -d "/nix" ] && [ $ALLOW_NIXOS == 'false' ]; then
|
|
||||||
Error "Error:\n\tUsing the global install option on NixOS is not supported due to the way this distribution handles software not present in the repositories.\n\tUse the AppImage install method instead.\n\tIf you still plan on installing Lightcord this way, change the \"ALLOW_NIXOS\" variable in this script to any value other than \"false\".\n\tYou should also modify the installation path variables if you want LC to not be wiped by NixOS."
|
|
||||||
exit;
|
|
||||||
fi # We want to prevent NixOS users from installing LC this way because:
|
|
||||||
# A) NixOS is very "special" i.e. it blocks LC from running
|
|
||||||
# B) /opt gets cleared upon boot
|
|
||||||
Info "Please enter your password to proceed"
|
|
||||||
sudo -K
|
|
||||||
if [[ "$(sudo whoami)" != "root" ]]; then
|
|
||||||
Error "Authentication failed"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
Info "Authentication complete"
|
|
||||||
fi
|
|
||||||
|
|
||||||
case $method in
|
|
||||||
1)
|
|
||||||
#Standard installer
|
|
||||||
tput setaf 208
|
|
||||||
tput sgr0
|
|
||||||
printf "Please select\n"
|
|
||||||
printf "1: Install Lightcord\n"
|
|
||||||
printf "2: Uninstall Lightcord\n"
|
|
||||||
printf "3: Update Lightcord\n"
|
|
||||||
printf "\n"
|
|
||||||
|
|
||||||
#Repeat only if the user hasn't entered an integer...
|
|
||||||
while ! [[ $selection =~ ^[0-9]+$ ]];
|
|
||||||
do
|
|
||||||
read selection;
|
|
||||||
# If the entered value was not an integer, prompt the user again
|
|
||||||
if ! [[ $selection =~ ^[0-9]+$ ]]; then
|
|
||||||
sleep 1;
|
|
||||||
printf "$(tput setaf 9)Please try again$(tput sgr0)\n";
|
|
||||||
printf "1: Install Lightcord\n";
|
|
||||||
printf "2: Uninstall Lightcord\n";
|
|
||||||
printf "3: Update Lightcord\n"
|
|
||||||
printf "\n";
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
case $selection in
|
|
||||||
1) # Install LC
|
|
||||||
Info "Installing Lightcord"
|
|
||||||
SubInfo "Preparing"
|
|
||||||
rm -rf Lightcord.*;
|
|
||||||
rm -rf Lightcord;
|
|
||||||
rm -rf lightcord-linux-x64.*;
|
|
||||||
SubInfo "Downloading Lightcord"
|
|
||||||
wget -qO lightcord-linux-x64.zip $LC;
|
|
||||||
if [ ! $? ]; then
|
|
||||||
SubInfo "Trying alternate URL"
|
|
||||||
wget -qO lightcord-linux-x64.zip $ALT_LC;
|
|
||||||
fi
|
|
||||||
unzip -qq lightcord-linux-x64.zip -d Lightcord;
|
|
||||||
cd Lightcord;
|
|
||||||
chmod +x ./lightcord;
|
|
||||||
cd ..;
|
|
||||||
sudo mv Lightcord/ $GLOBAL_INSTALL_DIR;
|
|
||||||
SubInfo "Downloading Lightcord icon"
|
|
||||||
wget -qO lightcord.png $ICON;
|
|
||||||
sudo mkdir -p /usr/share/pixmaps;
|
|
||||||
sudo mv lightcord.png /usr/share/pixmaps;
|
|
||||||
SubInfo "Creating Desktop entry"
|
|
||||||
echo -e "[Desktop Entry]\nName=Lightcord\nComment[fr_FR]=Un client Discord simple et personalisable\nComment=A simple - customizable - Discord Client\nExec=$GLOBAL_INSTALL_DIR/Lightcord/lightcord\nIcon=lightcord\nTerminal=false\nType=Application\nCategories=Network;InstantMessaging;P2P;" > Lightcord.desktop
|
|
||||||
sudo mv Lightcord.desktop /usr/share/applications/Lightcord.desktop
|
|
||||||
sudo chmod +x /usr/share/applications/Lightcord.desktop;
|
|
||||||
SubInfo "Cleaning up"
|
|
||||||
rm -rf Lightcord.*;
|
|
||||||
rm -rf Lightcord;
|
|
||||||
rm -rf lightcord-linux-x64.*;
|
|
||||||
;;
|
|
||||||
|
|
||||||
2) # Uninstall LC
|
|
||||||
Info "Uninstalling Lightcord"
|
|
||||||
SubInfo "Deleting Lightcord folder"
|
|
||||||
sudo rm -r $GLOBAL_INSTALL_DIR/Lightcord;
|
|
||||||
SubInfo "Deleting Lightcord icon"
|
|
||||||
sudo rm /usr/share/pixmaps/lightcord.png;
|
|
||||||
SubInfo "Deleting Desktop entry"
|
|
||||||
sudo rm /usr/share/applications/Lightcord.desktop;
|
|
||||||
sudo rm -f /home/*/.local/share/applications/Lightcord.desktop;
|
|
||||||
;;
|
|
||||||
|
|
||||||
3) # Update LC
|
|
||||||
Info 'Updating Lightcord'
|
|
||||||
SubInfo "Preparing"
|
|
||||||
rm -rf Lightcord.*;
|
|
||||||
rm -rf Lightcord;
|
|
||||||
rm -rf lightcord-linux-x64.*;
|
|
||||||
SubInfo "Deleting Lightcord"
|
|
||||||
sudo rm -r $GLOBAL_INSTALL_DIR/Lightcord;
|
|
||||||
SubInfo "Downloading Lightcord"
|
|
||||||
wget -qO lightcord-linux-x64.zip $LC;
|
|
||||||
if [ ! $? ]; then
|
|
||||||
SubInfo "Trying alternate URL"
|
|
||||||
wget -qO lightcord-linux-x64.zip $ALT_LC;
|
|
||||||
fi
|
|
||||||
unzip -qq lightcord-linux-x64.zip -d Lightcord;
|
|
||||||
cd Lightcord;
|
|
||||||
chmod +x ./lightcord;
|
|
||||||
cd ..;
|
|
||||||
sudo mv Lightcord/ $GLOBAL_INSTALL_DIR;
|
|
||||||
SubInfo "Cleaning up"
|
|
||||||
rm -rf Lightcord.*;
|
|
||||||
rm -rf Lightcord;
|
|
||||||
rm -rf lightcord-linux-x64.*;
|
|
||||||
;;
|
|
||||||
|
|
||||||
*) # Do nothing
|
|
||||||
Error 'Aborting install'
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
|
|
||||||
2)
|
|
||||||
# Appimage installer
|
|
||||||
if [[ $TERM == dumb ]]; then
|
|
||||||
exit;
|
|
||||||
fi
|
|
||||||
|
|
||||||
tput setaf 208
|
|
||||||
tput sgr0
|
|
||||||
|
|
||||||
|
|
||||||
printf "Please select\n";
|
|
||||||
printf "1: Install Lightcord\n";
|
|
||||||
printf "2: Uninstall Lightcord\n";
|
|
||||||
printf "3: Update Lightcord\n"
|
|
||||||
printf "\n";
|
|
||||||
|
|
||||||
while ! [[ $selection =~ ^[0-9]+$ ]];
|
|
||||||
do
|
|
||||||
read selection;
|
|
||||||
# If the entered value was not an integer, prompt the user again
|
|
||||||
if ! [[ $selection =~ ^[0-9]+$ ]]; then
|
|
||||||
sleep 1;
|
|
||||||
printf "$(tput setaf 9)Please try again$(tput sgr0)\n";
|
|
||||||
printf "1: Install Lightcord\n";
|
|
||||||
printf "2: Uninstall Lightcord\n";
|
|
||||||
printf "3: Update Lightcord\n"
|
|
||||||
printf "\n";
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
|
|
||||||
case $selection in
|
|
||||||
1) # Install LC
|
|
||||||
Info 'Installing Lightcord'
|
|
||||||
SubInfo "Downloading Lightcord"
|
|
||||||
wget -qO lightcord.AppImage $LC_APPIMAGE;
|
|
||||||
if [ ! $? ]; then
|
|
||||||
SubInfo "Trying alternate URL"
|
|
||||||
wget -qO lightcord.AppImage $ALT_LC_APPIMAGE;
|
|
||||||
fi
|
|
||||||
SubInfo "Downloading Lightcord icon"
|
|
||||||
wget -qO lightcord.png $ICON;
|
|
||||||
mkdir -p $LOCAL_INSTALL_DIR;
|
|
||||||
mv lightcord.AppImage $LOCAL_INSTALL_DIR;
|
|
||||||
chmod +x $LOCAL_INSTALL_DIR/lightcord.AppImage ;
|
|
||||||
mkdir -p ~/.local/share/icons/hicolor/512x512/apps
|
|
||||||
mv lightcord.png ~/.local/share/icons/hicolor/512x512/apps;
|
|
||||||
SubInfo "Creating local desktop entry"
|
|
||||||
echo -e "[Desktop Entry]\nName=Lightcord\nComment[fr_FR]=Un client Discord simple et personalisable\nComment=A simple - customizable - Discord Client\nExec=$LOCAL_INSTALL_DIR/lightcord.AppImage\nIcon=lightcord\nTerminal=false\nType=Application\nCategories=Network;InstantMessaging;P2P;" >> ~/.local/share/applications/lightcord.desktop;
|
|
||||||
SubInfo "Cleaning up"
|
|
||||||
;;
|
|
||||||
|
|
||||||
2) # Uninstall LC
|
|
||||||
Info 'Uninstalling Lightcord'
|
|
||||||
SubInfo "Deleting Lightcord folder"
|
|
||||||
rm -r $LOCAL_INSTALL_DIR;
|
|
||||||
SubInfo "Deleting Lightcord icon"
|
|
||||||
rm ~/.local/share/icons/hicolor/512x512/apps/lightcord.png;
|
|
||||||
SubInfo "Deleting desktop entry"
|
|
||||||
rm ~/.local/share/applications/lightcord.desktop;
|
|
||||||
;;
|
|
||||||
|
|
||||||
3) # Update LC
|
|
||||||
Info 'Updating Lightcord'
|
|
||||||
SubInfo "Deleting Lightcord"
|
|
||||||
rm $LOCAL_INSTALL_DIR/lightcord.AppImage;
|
|
||||||
SubInfo "Downloading Lightcord"
|
|
||||||
wget -qO lightcord.AppImage $LC_APPIMAGE;
|
|
||||||
if [ ! $? ]; then
|
|
||||||
SubInfo "Trying alternate URL"
|
|
||||||
wget -qO lightcord.AppImage $ALT_LC_APPIMAGE;
|
|
||||||
fi
|
|
||||||
mkdir -p $LOCAL_INSTALL_DIR;
|
|
||||||
mv lightcord.AppImage $LOCAL_INSTALL_DIR;
|
|
||||||
chmod +x $LOCAL_INSTALL_DIR/lightcord.AppImage;
|
|
||||||
SubInfo "Cleaning up"
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
Error 'Aborting install'
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
Error 'Aborting install'
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
printf "Do you want to keep the install script? [y/N] "; # Ask if the script should delete itself
|
|
||||||
read a;
|
|
||||||
|
|
||||||
case $a in
|
|
||||||
y)
|
|
||||||
Info "Kept install script"
|
|
||||||
exit;
|
|
||||||
;;
|
|
||||||
Y)
|
|
||||||
Info "Kept install script"
|
|
||||||
exit;
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Remove the script
|
|
||||||
rm LULI.sh;
|
|
||||||
Info "Removed install script"
|
|
||||||
exit;
|
|
|
@ -2,6 +2,7 @@
|
||||||
Name=Lightcord
|
Name=Lightcord
|
||||||
StartupWMClass=lightcord
|
StartupWMClass=lightcord
|
||||||
Comment[fr_FR]=Un client Discord simple et personalisable
|
Comment[fr_FR]=Un client Discord simple et personalisable
|
||||||
|
Comment[no]=En enkel - tilpassbar - Discord klient
|
||||||
Comment=A simple - customizable - Discord Client
|
Comment=A simple - customizable - Discord Client
|
||||||
Exec=/opt/Lightcord/Lightcord
|
Exec=/opt/Lightcord/Lightcord
|
||||||
Icon=lightcord
|
Icon=lightcord
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
132
README.md
132
README.md
|
@ -4,83 +4,26 @@
|
||||||
[![HitCount](http://hits.dwyl.com/Lightcord/Lightcord.svg)](http://hits.dwyl.com/Lightcord/Lightcord)
|
[![HitCount](http://hits.dwyl.com/Lightcord/Lightcord.svg)](http://hits.dwyl.com/Lightcord/Lightcord)
|
||||||
<br />
|
<br />
|
||||||
[![PayPal](https://img.shields.io/badge/donate-PayPal-blue?logo=PayPal&style=flat-square)](https://paypal.me/jenwina)
|
[![PayPal](https://img.shields.io/badge/donate-PayPal-blue?logo=PayPal&style=flat-square)](https://paypal.me/jenwina)
|
||||||
[![BTC](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/phorcysed/cryptodonate/master/badges/bitcoin.json&style=flat-square)](https://unixkeys.github.io/cryptodonate/btc.html?address=14hL2fPS2ASoe8Hcif87EqCS5AGHrepGKp¬e=https://github.com/phorcysed)
|
[![BTC](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/papycochon/cryptodonate/master/badges/bitcoin.json&style=flat-square)](https://papycochon.github.io/cryptodonate/btc.html?address=14hL2fPS2ASoe8Hcif87EqCS5AGHrepGKp¬e=https://github.com/Lightcord/Lightcord)
|
||||||
[![CDN](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/phorcysed/cryptodonate/master/badges/cdn.json&style=flat-square)](https://unixkeys.github.io/cryptodonate/cdn.html?address=CbdW3pR4HBWJ6wyc1JeNXP4L2fh8QiL85v¬e=https://github.com/phorcysed)
|
[![CDN](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/papycochon/cryptodonate/master/badges/cdn.json&style=flat-square)](https://papycochon.github.io/cryptodonate/cdn.html?address=CbdW3pR4HBWJ6wyc1JeNXP4L2fh8QiL85v¬e=https://github.com/Lightcord/Lightcord)
|
||||||
[![BCH](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/phorcysed/cryptodonate/master/badges/bitcoincash.json&style=flat-square)](https://unixkeys.github.io/cryptodonate/bch.html?address=qzqwhfyvkl324fue86r55q656nftfmxkhsn6qugenq¬e=https://github.com/phorcysed)
|
[![BCH](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/papycochon/cryptodonate/master/badges/bitcoincash.json&style=flat-square)](https://papycochon.github.io/cryptodonate/bch.html?address=qzqwhfyvkl324fue86r55q656nftfmxkhsn6qugenq¬e=https://github.com/Lightcord/Lightcord)
|
||||||
[![XMR](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/phorcysed/cryptodonate/master/badges/monero.json&style=flat-square)](https://unixkeys.github.io/cryptodonate/xmr.html?address=42pGf1KHHpqaifJd3TtWSdcTmhGVwFp24cGxDoqaYLQJ6rH4pM7KqtUdTpoyxHScDTSJpPA2Bnv19b1bs2uPXgSMH2KYkwj¬e=https://github.com/phorcysed)
|
[![XMR](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/papycochon/cryptodonate/master/badges/monero.json&style=flat-square)](https://papycochon.github.io/cryptodonate/xmr.html?address=42pGf1KHHpqaifJd3TtWSdcTmhGVwFp24cGxDoqaYLQJ6rH4pM7KqtUdTpoyxHScDTSJpPA2Bnv19b1bs2uPXgSMH2KYkwj¬e=https://github.com/Lightcord/Lightcord)
|
||||||
[![ETH](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/phorcysed/cryptodonate/master/badges/ethereum.json&style=flat-square)](https://unixkeys.github.io/cryptodonate/eth.html?address=0xEFE45F22Ee844bf2Ba0E4d853FA0bC8c028fAfFe¬e=https://github.com/phorcysed)
|
[![ETH](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/papycochon/cryptodonate/master/badges/ethereum.json&style=flat-square)](https://papycochon.github.io/cryptodonate/eth.html?address=0xEFE45F22Ee844bf2Ba0E4d853FA0bC8c028fAfFe¬e=https://github.com/Lightcord/Lightcord)
|
||||||
[![LTC](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/phorcysed/cryptodonate/master/badges/litecoin.json&style=flat-square)](https://unixkeys.github.io/cryptodonate/ltc.html?address=LNTmfMjHJgTHaB7rj8ZuWWuU1XkP2YeGCA¬e=https://github.com/phorcysed)
|
[![LTC](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/papycochob/cryptodonate/master/badges/litecoin.json&style=flat-square)](https://papycochon.github.io/cryptodonate/ltc.html?address=LNTmfMjHJgTHaB7rj8ZuWWuU1XkP2YeGCA¬e=https://github.com/Lightcord/Lightcord)
|
||||||
---
|
|
||||||
# Lightcord
|
# Lightcord has been abandoned and no longer receives support or updates!
|
||||||
A simple and customizable Discord client
|
|
||||||
|
# About
|
||||||
|
|
||||||
## What's This?
|
|
||||||
[Lightcord](https://lightcord.org) is a simple and customizable client for Discord.
|
[Lightcord](https://lightcord.org) is a simple and customizable client for Discord.
|
||||||
It includes [BandagedBD](https://github.com/rauenzi/BetterDiscordApp), [Glasstron](https://github.com/AryToNeX/Glasstron) and a [discord.js-like api](https://github.com/Lightcord/Lightcord/tree/master/DiscordJS).
|
It includes [BandagedBD](https://github.com/rauenzi/BetterDiscordApp), [Glasstron](https://github.com/AryToNeX/Glasstron) and a [discord.js-like api](https://github.com/Lightcord/Lightcord/tree/master/DiscordJS).
|
||||||
|
|
||||||
## Information
|
# Features
|
||||||
Lightcord doesn't just *patch* Discord with it's content. If it did, discord updates could easily break it. That's why Lightcord is a standalone Discord client. Just grab the latest release and launch!
|
|
||||||
|
|
||||||
## Installing
|
* **Standalone client** - Lightcord is built to be standalone i.e. it will not break on Discord updates!
|
||||||
You can download a release from the [releases tab](https://github.com/Lightcord/Lightcord/releases).
|
|
||||||
|
|
||||||
## Running From Source
|
|
||||||
Prequeresites: [Node.js](https://nodejs.org/en/) and NPM
|
|
||||||
To run from source, follow these instructions:
|
|
||||||
```sh
|
|
||||||
git clone https://github.com/Lightcord/Lightcord
|
|
||||||
cd Lightcord
|
|
||||||
npm run devInstall
|
|
||||||
npm test
|
|
||||||
```
|
|
||||||
*You will have to do that everytime you pull/clone*
|
|
||||||
<br/>
|
|
||||||
Lightcord will then launch. If you see the Lightcord icon, you're good to go!
|
|
||||||
![icon](https://github.com/Lightcord/Lightcord/blob/master/imagery/68747470733a2f2f692e696d6775722e636f6d2f72486e73504e4f2e706e67.png?raw=true)
|
|
||||||
<br />
|
|
||||||
Anytime you want to launch, just run:
|
|
||||||
```sh
|
|
||||||
npm run run
|
|
||||||
```
|
|
||||||
|
|
||||||
*You can install on GNU/Linux with our install script or the AUR*
|
|
||||||
|
|
||||||
## AUR (Unofficial)
|
|
||||||
You need to install the `base-devel` and `git` packages first
|
|
||||||
|
|
||||||
**For compilation** https://aur.archlinux.org/packages/lightcord-git/
|
|
||||||
|
|
||||||
`git clone https://aur.archlinux.org/lightcord-git.git && cd lightcord-git && makepkg -si`
|
|
||||||
|
|
||||||
**For precomiled binaries** https://aur.archlinux.org/packages/lightcord-bin/
|
|
||||||
|
|
||||||
`git clone https://aur.archlinux.org/lightcord-bin.git && cd lightcord-bin && makepkg -si`
|
|
||||||
|
|
||||||
**For AppImage**
|
|
||||||
|
|
||||||
`git clone https://aur.archlinux.org/lightcord-appimage.git && cd lightcord-appimage && makepkg -si`
|
|
||||||
|
|
||||||
An AUR helper such as `yay` can also be used
|
|
||||||
|
|
||||||
## Other Linux Distributions
|
|
||||||
You can also install it with our *express install script*, which will automatically do the following:
|
|
||||||
- Download the latest Lightcord stable release from the official dev server.
|
|
||||||
- Extract the file, and rename it to a more conventional ¨Lightcord¨ folder.
|
|
||||||
- Install the Lightcord files in /opt/.
|
|
||||||
- Add execution rights to the Lightcord executable to allow launching.
|
|
||||||
- Download an appropriate .desktop file and install it in /usr/share/applications.
|
|
||||||
- Add execution rights to the .desktop file to allow launching.
|
|
||||||
- Download the Lightcord icon in the .svg format and install it in /usr/share/pixmaps.
|
|
||||||
|
|
||||||
## Express Install Script
|
|
||||||
|
|
||||||
- This script requires the `unzip` package to be installed. Use your package manager of choice to install it.
|
|
||||||
- To install, paste `wget -N https://raw.githubusercontent.com/Lightcord/Lightcord/master/LULI.sh && bash LULI.sh` in terminal and press enter. The installer will guide you through the rest.
|
|
||||||
|
|
||||||
## Features
|
|
||||||
* **BetterDiscord built in** - Use almost any BetterDiscord plugin or theme!
|
* **BetterDiscord built in** - Use almost any BetterDiscord plugin or theme!
|
||||||
* **Easy custom rich presence** - Our method of doing this ensures you won't get banned!
|
* **Easy custom rich presence** - Our method of doing this ensures you won't get banned!
|
||||||
* **Made for Privacy** - Lightcord automatically blocks discords trackers and blurs your email, keeping your data safe!
|
* **Made for Privacy** - Lightcord automatically blocks Discord's trackers and blurs your email, keeping your data safe!
|
||||||
* **Free Emotes** - Send any emote to other Lightcord users!
|
* **Free Emotes** - Send any emote to other Lightcord users!
|
||||||
* **Token Login** - (user/bot) [Make **server** calls with bots]
|
* **Token Login** - (user/bot) [Make **server** calls with bots]
|
||||||
* **AdBlock** - Automatically block bots and ads in your DMs!
|
* **AdBlock** - Automatically block bots and ads in your DMs!
|
||||||
|
@ -90,14 +33,47 @@ You can also install it with our *express install script*, which will automatica
|
||||||
* **HypeSquad Housing** - Easily change your HypeSquad house, no test required!
|
* **HypeSquad Housing** - Easily change your HypeSquad house, no test required!
|
||||||
* **Badges** - Important people like the developers have special badges to make sure you know who is who!
|
* **Badges** - Important people like the developers have special badges to make sure you know who is who!
|
||||||
|
|
||||||
### Planned Features
|
## Planned Features
|
||||||
* **Username History** - Keep track of your past usernames!
|
|
||||||
* **New Plugin Directory** - Easily install or edit themes and plugins!
|
|
||||||
|
|
||||||
## BetterDiscord
|
Lightcord is no longer updated
|
||||||
A modified version of Bandaged Better Discord comes preinstalled, making theming and adding plugins easy.
|
|
||||||
|
|
||||||
## Plugins & Themes
|
# Installing
|
||||||
Plugins and themes are not in the standard BetterDiscord folder. They have been moved because BetterDiscord only supports the stable, PTB, and canary releases of Discord. Using the same directory could cause problems with settings.
|
|
||||||
|
|
||||||
They are located in `%AppData%/Lightcord_BD`. This is the main folder for BetterDiscord.
|
## Windows
|
||||||
|
|
||||||
|
You can install Lightcord with [scoop](https://github.com/lukesampson/scoop).
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
scoop bucket add extras
|
||||||
|
scoop install lightcord
|
||||||
|
```
|
||||||
|
|
||||||
|
Alternatively, download the installer from the [releases tab](https://github.com/Lightcord/Lightcord/releases).
|
||||||
|
|
||||||
|
## Linux (and ChromeOS)
|
||||||
|
|
||||||
|
[This part has moved!](https://github.com/Lightcord/lc-installer-linux)
|
||||||
|
|
||||||
|
# Running From Source
|
||||||
|
|
||||||
|
Prerequisites: [Node.js](https://nodejs.org/en/) and NPM
|
||||||
|
To run from source, follow these instructions:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/Lightcord/Lightcord
|
||||||
|
cd Lightcord
|
||||||
|
npm run devInstall
|
||||||
|
npm test
|
||||||
|
```
|
||||||
|
|
||||||
|
*You will have to do that every time you pull/clone*
|
||||||
|
|
||||||
|
Lightcord will then launch. If you see the Lightcord icon, you're good to go!
|
||||||
|
|
||||||
|
![icon](https://github.com/Lightcord/Lightcord/blob/master/imagery/68747470733a2f2f692e696d6775722e636f6d2f72486e73504e4f2e706e67.png?raw=true)
|
||||||
|
|
||||||
|
Any time you want to launch, just run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm start
|
||||||
|
```
|
||||||
|
|
|
@ -35,9 +35,9 @@ linux:
|
||||||
- target: zip
|
- target: zip
|
||||||
arch:
|
arch:
|
||||||
- x64
|
- x64
|
||||||
# - target: AppImage
|
- target: AppImage
|
||||||
# arch:
|
arch:
|
||||||
# - x64
|
- x64
|
||||||
icon: discord.png
|
icon: discord.png
|
||||||
files:
|
files:
|
||||||
- "**/*"
|
- "**/*"
|
||||||
|
@ -50,7 +50,7 @@ linux:
|
||||||
- "**/*_linux.node"
|
- "**/*_linux.node"
|
||||||
- "**/*.so.4"
|
- "**/*.so.4"
|
||||||
mac:
|
mac:
|
||||||
artifactName: ${name}-darwin-${arch}.${ext}
|
artifactName: ${name}-darwin-x64.${ext}
|
||||||
target:
|
target:
|
||||||
- target: zip
|
- target: zip
|
||||||
arch:
|
arch:
|
||||||
|
|
|
@ -471,7 +471,6 @@ function launchMainAppWindow(isVisible) {
|
||||||
mainWindow = new BrowserWindow(mainWindowOptions);
|
mainWindow = new BrowserWindow(mainWindowOptions);
|
||||||
mainWindowId = mainWindow.id;
|
mainWindowId = mainWindow.id;
|
||||||
global.mainWindowId = mainWindowId;
|
global.mainWindowId = mainWindowId;
|
||||||
mainWindow.webContents.openDevTools()
|
|
||||||
|
|
||||||
if(useGlasstron)setDefaultBlur()
|
if(useGlasstron)setDefaultBlur()
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,920 @@
|
||||||
{
|
{
|
||||||
"name": "discord_desktop_core",
|
"name": "discord_desktop_core",
|
||||||
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"lockfileVersion": 1,
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"name": "discord_desktop_core",
|
||||||
|
"dependencies": {
|
||||||
|
"chrome-tabs": "^5.4.0",
|
||||||
|
"invariant": "2.2.4",
|
||||||
|
"localstorage-polyfill": "git+https://github.com/JeanOUINA/localstorage-polyfill.git",
|
||||||
|
"lodash": "^4.17.21",
|
||||||
|
"mkdirp": "^1.0.4",
|
||||||
|
"promise.allsettled": "^1.0.0",
|
||||||
|
"request": "2.88.0",
|
||||||
|
"rimraf": "^2.6.3",
|
||||||
|
"safe-buffer": "^5.2.1",
|
||||||
|
"yauzl": "^2.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/ajv": {
|
||||||
|
"version": "6.12.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
|
||||||
|
"integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"fast-deep-equal": "^3.1.1",
|
||||||
|
"fast-json-stable-stringify": "^2.0.0",
|
||||||
|
"json-schema-traverse": "^0.4.1",
|
||||||
|
"uri-js": "^4.2.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/asn1": {
|
||||||
|
"version": "0.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
|
||||||
|
"integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
|
||||||
|
"dependencies": {
|
||||||
|
"safer-buffer": "~2.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/assert-plus": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/asynckit": {
|
||||||
|
"version": "0.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
||||||
|
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
|
||||||
|
},
|
||||||
|
"node_modules/aws-sign2": {
|
||||||
|
"version": "0.7.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
|
||||||
|
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
|
||||||
|
"engines": {
|
||||||
|
"node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/aws4": {
|
||||||
|
"version": "1.8.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
|
||||||
|
"integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
|
||||||
|
},
|
||||||
|
"node_modules/balanced-match": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
|
||||||
|
},
|
||||||
|
"node_modules/bcrypt-pbkdf": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
|
||||||
|
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
|
||||||
|
"dependencies": {
|
||||||
|
"tweetnacl": "^0.14.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/brace-expansion": {
|
||||||
|
"version": "1.1.11",
|
||||||
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||||
|
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||||
|
"dependencies": {
|
||||||
|
"balanced-match": "^1.0.0",
|
||||||
|
"concat-map": "0.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/buffer-crc32": {
|
||||||
|
"version": "0.2.13",
|
||||||
|
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
|
||||||
|
"integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
|
||||||
|
"engines": {
|
||||||
|
"node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/caseless": {
|
||||||
|
"version": "0.12.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
|
||||||
|
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
|
||||||
|
},
|
||||||
|
"node_modules/chrome-tabs": {
|
||||||
|
"version": "5.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/chrome-tabs/-/chrome-tabs-5.4.0.tgz",
|
||||||
|
"integrity": "sha512-o2uzqwMleD0plpO4jghgkwIYGY/493/0DT+t8lvaGqGYUOstaKzYnkN/46Iv8LhPpR3S388TRQd7BveeOK8ECg==",
|
||||||
|
"dependencies": {
|
||||||
|
"draggabilly": "2.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/combined-stream": {
|
||||||
|
"version": "1.0.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
|
||||||
|
"integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
|
||||||
|
"dependencies": {
|
||||||
|
"delayed-stream": "~1.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/concat-map": {
|
||||||
|
"version": "0.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||||
|
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
|
||||||
|
},
|
||||||
|
"node_modules/core-util-is": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
||||||
|
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
|
||||||
|
},
|
||||||
|
"node_modules/dashdash": {
|
||||||
|
"version": "1.14.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
|
||||||
|
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
|
||||||
|
"dependencies": {
|
||||||
|
"assert-plus": "^1.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/define-properties": {
|
||||||
|
"version": "1.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
|
||||||
|
"integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"object-keys": "^1.0.12"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/delayed-stream": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/draggabilly": {
|
||||||
|
"version": "2.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/draggabilly/-/draggabilly-2.2.0.tgz",
|
||||||
|
"integrity": "sha512-SygXstYyzRgLcb7VGr03QYC7166wgoaUfBoA9y+hiI7Swkyct4NNFDrEmO6T4Sz35qo71j0QAmuTagUGcwxWbg==",
|
||||||
|
"dependencies": {
|
||||||
|
"get-size": "^2.0.2",
|
||||||
|
"unidragger": "^2.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/ecc-jsbn": {
|
||||||
|
"version": "0.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
|
||||||
|
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
|
||||||
|
"dependencies": {
|
||||||
|
"jsbn": "~0.1.0",
|
||||||
|
"safer-buffer": "^2.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/es-abstract": {
|
||||||
|
"version": "1.15.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz",
|
||||||
|
"integrity": "sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"es-to-primitive": "^1.2.0",
|
||||||
|
"function-bind": "^1.1.1",
|
||||||
|
"has": "^1.0.3",
|
||||||
|
"has-symbols": "^1.0.0",
|
||||||
|
"is-callable": "^1.1.4",
|
||||||
|
"is-regex": "^1.0.4",
|
||||||
|
"object-inspect": "^1.6.0",
|
||||||
|
"object-keys": "^1.1.1",
|
||||||
|
"string.prototype.trimleft": "^2.1.0",
|
||||||
|
"string.prototype.trimright": "^2.1.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/es-to-primitive": {
|
||||||
|
"version": "1.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
|
||||||
|
"integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
|
||||||
|
"dependencies": {
|
||||||
|
"is-callable": "^1.1.4",
|
||||||
|
"is-date-object": "^1.0.1",
|
||||||
|
"is-symbol": "^1.0.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/ev-emitter": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q=="
|
||||||
|
},
|
||||||
|
"node_modules/extend": {
|
||||||
|
"version": "3.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
|
||||||
|
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
|
||||||
|
},
|
||||||
|
"node_modules/extsprintf": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
|
||||||
|
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
|
||||||
|
"engines": [
|
||||||
|
"node >=0.6.0"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/fast-deep-equal": {
|
||||||
|
"version": "3.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
|
||||||
|
"integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA=="
|
||||||
|
},
|
||||||
|
"node_modules/fast-json-stable-stringify": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
|
||||||
|
},
|
||||||
|
"node_modules/fd-slicer": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
|
||||||
|
"integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
|
||||||
|
"dependencies": {
|
||||||
|
"pend": "~1.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/forever-agent": {
|
||||||
|
"version": "0.6.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
|
||||||
|
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
|
||||||
|
"engines": {
|
||||||
|
"node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/form-data": {
|
||||||
|
"version": "2.3.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
|
||||||
|
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"asynckit": "^0.4.0",
|
||||||
|
"combined-stream": "^1.0.6",
|
||||||
|
"mime-types": "^2.1.12"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/fs.realpath": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
|
||||||
|
},
|
||||||
|
"node_modules/function-bind": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
|
||||||
|
},
|
||||||
|
"node_modules/get-size": {
|
||||||
|
"version": "2.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/get-size/-/get-size-2.0.3.tgz",
|
||||||
|
"integrity": "sha512-lXNzT/h/dTjTxRbm9BXb+SGxxzkm97h/PCIKtlN/CBCxxmkkIVV21udumMS93MuVTDX583gqc94v3RjuHmI+2Q=="
|
||||||
|
},
|
||||||
|
"node_modules/getpass": {
|
||||||
|
"version": "0.1.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
|
||||||
|
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
|
||||||
|
"dependencies": {
|
||||||
|
"assert-plus": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/glob": {
|
||||||
|
"version": "7.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
|
||||||
|
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"fs.realpath": "^1.0.0",
|
||||||
|
"inflight": "^1.0.4",
|
||||||
|
"inherits": "2",
|
||||||
|
"minimatch": "^3.0.4",
|
||||||
|
"once": "^1.3.0",
|
||||||
|
"path-is-absolute": "^1.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/har-schema": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
|
||||||
|
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/har-validator": {
|
||||||
|
"version": "5.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
|
||||||
|
"integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
|
||||||
|
"dependencies": {
|
||||||
|
"ajv": "^6.5.5",
|
||||||
|
"har-schema": "^2.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/has": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
||||||
|
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
|
||||||
|
"dependencies": {
|
||||||
|
"function-bind": "^1.1.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/has-symbols": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/http-signature": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
|
||||||
|
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
|
||||||
|
"dependencies": {
|
||||||
|
"assert-plus": "^1.0.0",
|
||||||
|
"jsprim": "^1.2.2",
|
||||||
|
"sshpk": "^1.7.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.8",
|
||||||
|
"npm": ">=1.3.7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/inflight": {
|
||||||
|
"version": "1.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||||
|
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
||||||
|
"dependencies": {
|
||||||
|
"once": "^1.3.0",
|
||||||
|
"wrappy": "1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/inherits": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||||
|
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||||
|
},
|
||||||
|
"node_modules/invariant": {
|
||||||
|
"version": "2.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
|
||||||
|
"integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
|
||||||
|
"dependencies": {
|
||||||
|
"loose-envify": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/is-callable": {
|
||||||
|
"version": "1.1.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
|
||||||
|
"integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/is-date-object": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/is-regex": {
|
||||||
|
"version": "1.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
|
||||||
|
"integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"has": "^1.0.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/is-symbol": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
|
||||||
|
"integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"has-symbols": "^1.0.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/is-typedarray": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
|
||||||
|
},
|
||||||
|
"node_modules/isstream": {
|
||||||
|
"version": "0.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
|
||||||
|
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
|
||||||
|
},
|
||||||
|
"node_modules/js-tokens": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
|
||||||
|
},
|
||||||
|
"node_modules/jsbn": {
|
||||||
|
"version": "0.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
|
||||||
|
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
|
||||||
|
},
|
||||||
|
"node_modules/json-schema": {
|
||||||
|
"version": "0.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
|
||||||
|
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
|
||||||
|
},
|
||||||
|
"node_modules/json-schema-traverse": {
|
||||||
|
"version": "0.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
|
||||||
|
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
|
||||||
|
},
|
||||||
|
"node_modules/json-stringify-safe": {
|
||||||
|
"version": "5.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
|
||||||
|
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
|
||||||
|
},
|
||||||
|
"node_modules/jsprim": {
|
||||||
|
"version": "1.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
|
||||||
|
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
|
||||||
|
"engines": [
|
||||||
|
"node >=0.6.0"
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"assert-plus": "1.0.0",
|
||||||
|
"extsprintf": "1.3.0",
|
||||||
|
"json-schema": "0.2.3",
|
||||||
|
"verror": "1.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/localstorage-polyfill": {
|
||||||
|
"resolved": "git+ssh://git@github.com/JeanOUINA/localstorage-polyfill.git#2c29b8a919c19a9b8e3170fdb3fbf91364bdc14a",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/lodash": {
|
||||||
|
"version": "4.17.21",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
||||||
|
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
||||||
|
},
|
||||||
|
"node_modules/loose-envify": {
|
||||||
|
"version": "1.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
|
||||||
|
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
|
||||||
|
"dependencies": {
|
||||||
|
"js-tokens": "^3.0.0 || ^4.0.0"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"loose-envify": "cli.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/mime-db": {
|
||||||
|
"version": "1.37.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
|
||||||
|
"integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/mime-types": {
|
||||||
|
"version": "2.1.21",
|
||||||
|
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz",
|
||||||
|
"integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
|
||||||
|
"dependencies": {
|
||||||
|
"mime-db": "~1.37.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/minimatch": {
|
||||||
|
"version": "3.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||||
|
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||||
|
"dependencies": {
|
||||||
|
"brace-expansion": "^1.1.7"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/mkdirp": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
|
||||||
|
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
|
||||||
|
"bin": {
|
||||||
|
"mkdirp": "bin/cmd.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/oauth-sign": {
|
||||||
|
"version": "0.9.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
|
||||||
|
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
|
||||||
|
"engines": {
|
||||||
|
"node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/object-inspect": {
|
||||||
|
"version": "1.7.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz",
|
||||||
|
"integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw=="
|
||||||
|
},
|
||||||
|
"node_modules/object-keys": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/object.assign": {
|
||||||
|
"version": "4.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
|
||||||
|
"integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
|
||||||
|
"dependencies": {
|
||||||
|
"define-properties": "^1.1.2",
|
||||||
|
"function-bind": "^1.1.1",
|
||||||
|
"has-symbols": "^1.0.0",
|
||||||
|
"object-keys": "^1.0.11"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/once": {
|
||||||
|
"version": "1.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||||
|
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||||
|
"dependencies": {
|
||||||
|
"wrappy": "1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/path-is-absolute": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||||
|
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/pend": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
|
||||||
|
"integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA="
|
||||||
|
},
|
||||||
|
"node_modules/performance-now": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
|
||||||
|
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
|
||||||
|
},
|
||||||
|
"node_modules/promise.allsettled": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-3ST7RS7TY3TYLOIe+OACZFvcWVe1osbgz2x07nTb446pa3t4GUZWidMDzQ4zf9jC2l6mRa1/3X81icFYbi+D/g==",
|
||||||
|
"dependencies": {
|
||||||
|
"define-properties": "^1.1.3",
|
||||||
|
"es-abstract": "^1.13.0",
|
||||||
|
"function-bind": "^1.1.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/psl": {
|
||||||
|
"version": "1.8.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
|
||||||
|
"integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
|
||||||
|
},
|
||||||
|
"node_modules/punycode": {
|
||||||
|
"version": "2.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
|
||||||
|
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/qs": {
|
||||||
|
"version": "6.5.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
|
||||||
|
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/request": {
|
||||||
|
"version": "2.88.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
|
||||||
|
"integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
|
||||||
|
"dependencies": {
|
||||||
|
"aws-sign2": "~0.7.0",
|
||||||
|
"aws4": "^1.8.0",
|
||||||
|
"caseless": "~0.12.0",
|
||||||
|
"combined-stream": "~1.0.6",
|
||||||
|
"extend": "~3.0.2",
|
||||||
|
"forever-agent": "~0.6.1",
|
||||||
|
"form-data": "~2.3.2",
|
||||||
|
"har-validator": "~5.1.0",
|
||||||
|
"http-signature": "~1.2.0",
|
||||||
|
"is-typedarray": "~1.0.0",
|
||||||
|
"isstream": "~0.1.2",
|
||||||
|
"json-stringify-safe": "~5.0.1",
|
||||||
|
"mime-types": "~2.1.19",
|
||||||
|
"oauth-sign": "~0.9.0",
|
||||||
|
"performance-now": "^2.1.0",
|
||||||
|
"qs": "~6.5.2",
|
||||||
|
"safe-buffer": "^5.1.2",
|
||||||
|
"tough-cookie": "~2.4.3",
|
||||||
|
"tunnel-agent": "^0.6.0",
|
||||||
|
"uuid": "^3.3.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/rimraf": {
|
||||||
|
"version": "2.6.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
|
||||||
|
"integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
|
||||||
|
"dependencies": {
|
||||||
|
"glob": "^7.1.3"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"rimraf": "bin.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/safe-buffer": {
|
||||||
|
"version": "5.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
||||||
|
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
|
||||||
|
},
|
||||||
|
"node_modules/safer-buffer": {
|
||||||
|
"version": "2.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||||
|
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
||||||
|
},
|
||||||
|
"node_modules/sshpk": {
|
||||||
|
"version": "1.16.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
|
||||||
|
"integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
|
||||||
|
"dependencies": {
|
||||||
|
"asn1": "~0.2.3",
|
||||||
|
"assert-plus": "^1.0.0",
|
||||||
|
"bcrypt-pbkdf": "^1.0.0",
|
||||||
|
"dashdash": "^1.12.0",
|
||||||
|
"ecc-jsbn": "~0.1.1",
|
||||||
|
"getpass": "^0.1.1",
|
||||||
|
"jsbn": "~0.1.0",
|
||||||
|
"safer-buffer": "^2.0.2",
|
||||||
|
"tweetnacl": "~0.14.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/string.prototype.trimend": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==",
|
||||||
|
"dependencies": {
|
||||||
|
"define-properties": "^1.1.3",
|
||||||
|
"es-abstract": "^1.17.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/string.prototype.trimend/node_modules/es-abstract": {
|
||||||
|
"version": "1.17.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz",
|
||||||
|
"integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==",
|
||||||
|
"dependencies": {
|
||||||
|
"es-to-primitive": "^1.2.1",
|
||||||
|
"function-bind": "^1.1.1",
|
||||||
|
"has": "^1.0.3",
|
||||||
|
"has-symbols": "^1.0.1",
|
||||||
|
"is-callable": "^1.1.5",
|
||||||
|
"is-regex": "^1.0.5",
|
||||||
|
"object-inspect": "^1.7.0",
|
||||||
|
"object-keys": "^1.1.1",
|
||||||
|
"object.assign": "^4.1.0",
|
||||||
|
"string.prototype.trimleft": "^2.1.1",
|
||||||
|
"string.prototype.trimright": "^2.1.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/string.prototype.trimleft": {
|
||||||
|
"version": "2.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz",
|
||||||
|
"integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==",
|
||||||
|
"dependencies": {
|
||||||
|
"define-properties": "^1.1.3",
|
||||||
|
"es-abstract": "^1.17.5",
|
||||||
|
"string.prototype.trimstart": "^1.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/string.prototype.trimleft/node_modules/es-abstract": {
|
||||||
|
"version": "1.17.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz",
|
||||||
|
"integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==",
|
||||||
|
"dependencies": {
|
||||||
|
"es-to-primitive": "^1.2.1",
|
||||||
|
"function-bind": "^1.1.1",
|
||||||
|
"has": "^1.0.3",
|
||||||
|
"has-symbols": "^1.0.1",
|
||||||
|
"is-callable": "^1.1.5",
|
||||||
|
"is-regex": "^1.0.5",
|
||||||
|
"object-inspect": "^1.7.0",
|
||||||
|
"object-keys": "^1.1.1",
|
||||||
|
"object.assign": "^4.1.0",
|
||||||
|
"string.prototype.trimleft": "^2.1.1",
|
||||||
|
"string.prototype.trimright": "^2.1.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/string.prototype.trimright": {
|
||||||
|
"version": "2.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz",
|
||||||
|
"integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==",
|
||||||
|
"dependencies": {
|
||||||
|
"define-properties": "^1.1.3",
|
||||||
|
"es-abstract": "^1.17.5",
|
||||||
|
"string.prototype.trimend": "^1.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/string.prototype.trimright/node_modules/es-abstract": {
|
||||||
|
"version": "1.17.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz",
|
||||||
|
"integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==",
|
||||||
|
"dependencies": {
|
||||||
|
"es-to-primitive": "^1.2.1",
|
||||||
|
"function-bind": "^1.1.1",
|
||||||
|
"has": "^1.0.3",
|
||||||
|
"has-symbols": "^1.0.1",
|
||||||
|
"is-callable": "^1.1.5",
|
||||||
|
"is-regex": "^1.0.5",
|
||||||
|
"object-inspect": "^1.7.0",
|
||||||
|
"object-keys": "^1.1.1",
|
||||||
|
"object.assign": "^4.1.0",
|
||||||
|
"string.prototype.trimleft": "^2.1.1",
|
||||||
|
"string.prototype.trimright": "^2.1.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/string.prototype.trimstart": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==",
|
||||||
|
"dependencies": {
|
||||||
|
"define-properties": "^1.1.3",
|
||||||
|
"es-abstract": "^1.17.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/string.prototype.trimstart/node_modules/es-abstract": {
|
||||||
|
"version": "1.17.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz",
|
||||||
|
"integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==",
|
||||||
|
"dependencies": {
|
||||||
|
"es-to-primitive": "^1.2.1",
|
||||||
|
"function-bind": "^1.1.1",
|
||||||
|
"has": "^1.0.3",
|
||||||
|
"has-symbols": "^1.0.1",
|
||||||
|
"is-callable": "^1.1.5",
|
||||||
|
"is-regex": "^1.0.5",
|
||||||
|
"object-inspect": "^1.7.0",
|
||||||
|
"object-keys": "^1.1.1",
|
||||||
|
"object.assign": "^4.1.0",
|
||||||
|
"string.prototype.trimleft": "^2.1.1",
|
||||||
|
"string.prototype.trimright": "^2.1.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/tough-cookie": {
|
||||||
|
"version": "2.4.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
|
||||||
|
"integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"psl": "^1.1.24",
|
||||||
|
"punycode": "^1.4.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/tough-cookie/node_modules/punycode": {
|
||||||
|
"version": "1.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
|
||||||
|
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
|
||||||
|
},
|
||||||
|
"node_modules/tunnel-agent": {
|
||||||
|
"version": "0.6.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
|
||||||
|
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
|
||||||
|
"dependencies": {
|
||||||
|
"safe-buffer": "^5.0.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/tweetnacl": {
|
||||||
|
"version": "0.14.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
|
||||||
|
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
|
||||||
|
},
|
||||||
|
"node_modules/unidragger": {
|
||||||
|
"version": "2.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/unidragger/-/unidragger-2.3.1.tgz",
|
||||||
|
"integrity": "sha512-u+IgG7AG0MXJTKcdzAIYxCm+W5FcnA9M28203Awl6jIcE3/+9OtEyUX4Wv64y7XNKEVRKPot52IV4V6x7FlF5Q==",
|
||||||
|
"dependencies": {
|
||||||
|
"unipointer": "^2.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/unipointer": {
|
||||||
|
"version": "2.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/unipointer/-/unipointer-2.3.0.tgz",
|
||||||
|
"integrity": "sha512-m85sAoELCZhogI1owtJV3Dva7GxkHk2lI7A0otw3o0OwCuC/Q9gi7ehddigEYIAYbhkqNdri+dU1QQkrcBvirQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"ev-emitter": "^1.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/uri-js": {
|
||||||
|
"version": "4.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
|
||||||
|
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"punycode": "^2.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/uuid": {
|
||||||
|
"version": "3.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
|
||||||
|
"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
|
||||||
|
"bin": {
|
||||||
|
"uuid": "bin/uuid"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/verror": {
|
||||||
|
"version": "1.10.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
|
||||||
|
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
|
||||||
|
"engines": [
|
||||||
|
"node >=0.6.0"
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"assert-plus": "^1.0.0",
|
||||||
|
"core-util-is": "1.0.2",
|
||||||
|
"extsprintf": "^1.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/wrappy": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||||
|
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
|
||||||
|
},
|
||||||
|
"node_modules/yauzl": {
|
||||||
|
"version": "2.10.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
|
||||||
|
"integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
|
||||||
|
"dependencies": {
|
||||||
|
"buffer-crc32": "~0.2.3",
|
||||||
|
"fd-slicer": "~1.1.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ajv": {
|
"ajv": {
|
||||||
"version": "6.12.2",
|
"version": "6.12.2",
|
||||||
|
@ -382,13 +1295,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"localstorage-polyfill": {
|
"localstorage-polyfill": {
|
||||||
"version": "git+https://github.com/JeanOUINA/localstorage-polyfill.git#2c29b8a919c19a9b8e3170fdb3fbf91364bdc14a",
|
"version": "git+ssh://git@github.com/JeanOUINA/localstorage-polyfill.git#2c29b8a919c19a9b8e3170fdb3fbf91364bdc14a",
|
||||||
"from": "git+https://github.com/JeanOUINA/localstorage-polyfill.git"
|
"from": "localstorage-polyfill@git+https://github.com/JeanOUINA/localstorage-polyfill.git"
|
||||||
},
|
},
|
||||||
"lodash": {
|
"lodash": {
|
||||||
"version": "4.17.19",
|
"version": "4.17.21",
|
||||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
|
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
||||||
"integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ=="
|
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
||||||
},
|
},
|
||||||
"loose-envify": {
|
"loose-envify": {
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
"chrome-tabs": "^5.4.0",
|
"chrome-tabs": "^5.4.0",
|
||||||
"invariant": "2.2.4",
|
"invariant": "2.2.4",
|
||||||
"localstorage-polyfill": "git+https://github.com/JeanOUINA/localstorage-polyfill.git",
|
"localstorage-polyfill": "git+https://github.com/JeanOUINA/localstorage-polyfill.git",
|
||||||
"lodash": "4.17.19",
|
"lodash": "^4.17.21",
|
||||||
"mkdirp": "^1.0.4",
|
"mkdirp": "^1.0.4",
|
||||||
"promise.allsettled": "^1.0.0",
|
"promise.allsettled": "^1.0.0",
|
||||||
"request": "2.88.0",
|
"request": "2.88.0",
|
||||||
|
|
|
@ -1,13 +1,44 @@
|
||||||
{
|
{
|
||||||
"name": "discord_rpc",
|
"name": "discord_rpc",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"ws": "^7.2.3"
|
||||||
|
},
|
||||||
|
"devDependencies": {}
|
||||||
|
},
|
||||||
|
"node_modules/ws": {
|
||||||
|
"version": "7.5.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.1.tgz",
|
||||||
|
"integrity": "sha512-2c6faOUH/nhoQN6abwMloF7Iyl0ZS2E9HGtsiLrWn0zOOMWlhtDmdf/uihDt6jnuCxgtwGBNy6Onsoy2s2O2Ow==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8.3.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"bufferutil": "^4.0.1",
|
||||||
|
"utf-8-validate": "^5.0.2"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"bufferutil": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"utf-8-validate": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ws": {
|
"ws": {
|
||||||
"version": "7.2.3",
|
"version": "7.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/ws/-/ws-7.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.1.tgz",
|
||||||
"integrity": "sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ=="
|
"integrity": "sha512-2c6faOUH/nhoQN6abwMloF7Iyl0ZS2E9HGtsiLrWn0zOOMWlhtDmdf/uihDt6jnuCxgtwGBNy6Onsoy2s2O2Ow==",
|
||||||
|
"requires": {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,362 @@
|
||||||
|
{
|
||||||
|
"name": "discord_spellcheck",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"lockfileVersion": 2,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"any-promise": "^1.3.0",
|
||||||
|
"balanced-match": "^1.0.0",
|
||||||
|
"brace-expansion": "^1.1.11",
|
||||||
|
"cld": "^2.7.0",
|
||||||
|
"concat-map": "0.0.1",
|
||||||
|
"event-kit": "^2.5.3",
|
||||||
|
"fs.realpath": "^1.0.0",
|
||||||
|
"glob": "^5.0.15",
|
||||||
|
"inflight": "^1.0.6",
|
||||||
|
"inherits": "^2.0.4",
|
||||||
|
"keyboard-layout": "^2.0.17",
|
||||||
|
"minimatch": "^3.0.4",
|
||||||
|
"nan": "^2.14.2",
|
||||||
|
"node-addon-api": "^1.7.2",
|
||||||
|
"once": "^1.4.0",
|
||||||
|
"path-is-absolute": "^1.0.1",
|
||||||
|
"rimraf": "^2.7.1",
|
||||||
|
"spellchecker": "^3.7.1",
|
||||||
|
"underscore": "^1.12.0",
|
||||||
|
"wrappy": "^1.0.2"
|
||||||
|
},
|
||||||
|
"devDependencies": {}
|
||||||
|
},
|
||||||
|
"node_modules/any-promise": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
|
||||||
|
"integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8="
|
||||||
|
},
|
||||||
|
"node_modules/balanced-match": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
|
||||||
|
},
|
||||||
|
"node_modules/brace-expansion": {
|
||||||
|
"version": "1.1.11",
|
||||||
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||||
|
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||||
|
"dependencies": {
|
||||||
|
"balanced-match": "^1.0.0",
|
||||||
|
"concat-map": "0.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/cld": {
|
||||||
|
"version": "2.7.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/cld/-/cld-2.7.0.tgz",
|
||||||
|
"integrity": "sha512-rM20jIISRqMYfZAlowCA4DwLLegJXqfCFdVb1vtS+RG7yKHn4FrYdFfUx2WGbmaqOQV/w4MRIszh43FH78/oRA==",
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"dependencies": {
|
||||||
|
"glob": "^5.0.10",
|
||||||
|
"node-addon-api": "*",
|
||||||
|
"rimraf": "^2.4.0",
|
||||||
|
"underscore": "^1.6.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/concat-map": {
|
||||||
|
"version": "0.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||||
|
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
|
||||||
|
},
|
||||||
|
"node_modules/event-kit": {
|
||||||
|
"version": "2.5.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/event-kit/-/event-kit-2.5.3.tgz",
|
||||||
|
"integrity": "sha512-b7Qi1JNzY4BfAYfnIRanLk0DOD1gdkWHT4GISIn8Q2tAf3LpU8SP2CMwWaq40imYoKWbtN4ZhbSRxvsnikooZQ=="
|
||||||
|
},
|
||||||
|
"node_modules/fs.realpath": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
|
||||||
|
},
|
||||||
|
"node_modules/glob": {
|
||||||
|
"version": "5.0.15",
|
||||||
|
"resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
|
||||||
|
"integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
|
||||||
|
"dependencies": {
|
||||||
|
"inflight": "^1.0.4",
|
||||||
|
"inherits": "2",
|
||||||
|
"minimatch": "2 || 3",
|
||||||
|
"once": "^1.3.0",
|
||||||
|
"path-is-absolute": "^1.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/inflight": {
|
||||||
|
"version": "1.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||||
|
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
||||||
|
"dependencies": {
|
||||||
|
"once": "^1.3.0",
|
||||||
|
"wrappy": "1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/inherits": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||||
|
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||||
|
},
|
||||||
|
"node_modules/keyboard-layout": {
|
||||||
|
"version": "2.0.17",
|
||||||
|
"resolved": "https://registry.npmjs.org/keyboard-layout/-/keyboard-layout-2.0.17.tgz",
|
||||||
|
"integrity": "sha512-W9LL+1e8CS9fi0s8ZHINDN1HZ6QpYjE4yLi4+faed7ozppNOAxINjv5w16zG9tJv8Jp5LJrCfO5PZ9aV1m5d4g==",
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"dependencies": {
|
||||||
|
"event-kit": "^2.0.0",
|
||||||
|
"nan": "^2.13.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/minimatch": {
|
||||||
|
"version": "3.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||||
|
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||||
|
"dependencies": {
|
||||||
|
"brace-expansion": "^1.1.7"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/nan": {
|
||||||
|
"version": "2.14.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz",
|
||||||
|
"integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ=="
|
||||||
|
},
|
||||||
|
"node_modules/node-addon-api": {
|
||||||
|
"version": "1.7.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz",
|
||||||
|
"integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg=="
|
||||||
|
},
|
||||||
|
"node_modules/once": {
|
||||||
|
"version": "1.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||||
|
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||||
|
"dependencies": {
|
||||||
|
"wrappy": "1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/path-is-absolute": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||||
|
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/rimraf": {
|
||||||
|
"version": "2.7.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
|
||||||
|
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
|
||||||
|
"dependencies": {
|
||||||
|
"glob": "^7.1.3"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"rimraf": "bin.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/rimraf/node_modules/glob": {
|
||||||
|
"version": "7.1.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
|
||||||
|
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
|
||||||
|
"dependencies": {
|
||||||
|
"fs.realpath": "^1.0.0",
|
||||||
|
"inflight": "^1.0.4",
|
||||||
|
"inherits": "2",
|
||||||
|
"minimatch": "^3.0.4",
|
||||||
|
"once": "^1.3.0",
|
||||||
|
"path-is-absolute": "^1.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/spellchecker": {
|
||||||
|
"version": "3.7.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/spellchecker/-/spellchecker-3.7.1.tgz",
|
||||||
|
"integrity": "sha512-j36QRZrekxPXy58fo2B/Le3GzHryLv9Zq2Hqz907+JmUBCP35tJlwwhCo4n1lwisBDK40IFHqEHPUe5gwUkpwA==",
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"dependencies": {
|
||||||
|
"any-promise": "^1.3.0",
|
||||||
|
"nan": "^2.14.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/underscore": {
|
||||||
|
"version": "1.13.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz",
|
||||||
|
"integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g=="
|
||||||
|
},
|
||||||
|
"node_modules/wrappy": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||||
|
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"any-promise": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
|
||||||
|
"integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8="
|
||||||
|
},
|
||||||
|
"balanced-match": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
|
||||||
|
},
|
||||||
|
"brace-expansion": {
|
||||||
|
"version": "1.1.11",
|
||||||
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||||
|
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||||
|
"requires": {
|
||||||
|
"balanced-match": "^1.0.0",
|
||||||
|
"concat-map": "0.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cld": {
|
||||||
|
"version": "2.7.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/cld/-/cld-2.7.0.tgz",
|
||||||
|
"integrity": "sha512-rM20jIISRqMYfZAlowCA4DwLLegJXqfCFdVb1vtS+RG7yKHn4FrYdFfUx2WGbmaqOQV/w4MRIszh43FH78/oRA==",
|
||||||
|
"requires": {
|
||||||
|
"glob": "^5.0.10",
|
||||||
|
"node-addon-api": "*",
|
||||||
|
"rimraf": "^2.4.0",
|
||||||
|
"underscore": "^1.6.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"concat-map": {
|
||||||
|
"version": "0.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||||
|
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
|
||||||
|
},
|
||||||
|
"event-kit": {
|
||||||
|
"version": "2.5.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/event-kit/-/event-kit-2.5.3.tgz",
|
||||||
|
"integrity": "sha512-b7Qi1JNzY4BfAYfnIRanLk0DOD1gdkWHT4GISIn8Q2tAf3LpU8SP2CMwWaq40imYoKWbtN4ZhbSRxvsnikooZQ=="
|
||||||
|
},
|
||||||
|
"fs.realpath": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
|
||||||
|
},
|
||||||
|
"glob": {
|
||||||
|
"version": "5.0.15",
|
||||||
|
"resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
|
||||||
|
"integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
|
||||||
|
"requires": {
|
||||||
|
"inflight": "^1.0.4",
|
||||||
|
"inherits": "2",
|
||||||
|
"minimatch": "2 || 3",
|
||||||
|
"once": "^1.3.0",
|
||||||
|
"path-is-absolute": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"inflight": {
|
||||||
|
"version": "1.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||||
|
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
||||||
|
"requires": {
|
||||||
|
"once": "^1.3.0",
|
||||||
|
"wrappy": "1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"inherits": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||||
|
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||||
|
},
|
||||||
|
"keyboard-layout": {
|
||||||
|
"version": "2.0.17",
|
||||||
|
"resolved": "https://registry.npmjs.org/keyboard-layout/-/keyboard-layout-2.0.17.tgz",
|
||||||
|
"integrity": "sha512-W9LL+1e8CS9fi0s8ZHINDN1HZ6QpYjE4yLi4+faed7ozppNOAxINjv5w16zG9tJv8Jp5LJrCfO5PZ9aV1m5d4g==",
|
||||||
|
"requires": {
|
||||||
|
"event-kit": "^2.0.0",
|
||||||
|
"nan": "^2.13.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"minimatch": {
|
||||||
|
"version": "3.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||||
|
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||||
|
"requires": {
|
||||||
|
"brace-expansion": "^1.1.7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nan": {
|
||||||
|
"version": "2.14.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz",
|
||||||
|
"integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ=="
|
||||||
|
},
|
||||||
|
"node-addon-api": {
|
||||||
|
"version": "1.7.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz",
|
||||||
|
"integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg=="
|
||||||
|
},
|
||||||
|
"once": {
|
||||||
|
"version": "1.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||||
|
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||||
|
"requires": {
|
||||||
|
"wrappy": "1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"path-is-absolute": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||||
|
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
|
||||||
|
},
|
||||||
|
"rimraf": {
|
||||||
|
"version": "2.7.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
|
||||||
|
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
|
||||||
|
"requires": {
|
||||||
|
"glob": "^7.1.3"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"glob": {
|
||||||
|
"version": "7.1.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
|
||||||
|
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
|
||||||
|
"requires": {
|
||||||
|
"fs.realpath": "^1.0.0",
|
||||||
|
"inflight": "^1.0.4",
|
||||||
|
"inherits": "2",
|
||||||
|
"minimatch": "^3.0.4",
|
||||||
|
"once": "^1.3.0",
|
||||||
|
"path-is-absolute": "^1.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"spellchecker": {
|
||||||
|
"version": "3.7.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/spellchecker/-/spellchecker-3.7.1.tgz",
|
||||||
|
"integrity": "sha512-j36QRZrekxPXy58fo2B/Le3GzHryLv9Zq2Hqz907+JmUBCP35tJlwwhCo4n1lwisBDK40IFHqEHPUe5gwUkpwA==",
|
||||||
|
"requires": {
|
||||||
|
"any-promise": "^1.3.0",
|
||||||
|
"nan": "^2.14.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"underscore": {
|
||||||
|
"version": "1.13.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz",
|
||||||
|
"integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g=="
|
||||||
|
},
|
||||||
|
"wrappy": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||||
|
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
{
|
||||||
|
"name": "discord_spellcheck",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "index.js",
|
||||||
|
"dependencies": {
|
||||||
|
"any-promise": "^1.3.0",
|
||||||
|
"balanced-match": "^1.0.0",
|
||||||
|
"brace-expansion": "^1.1.11",
|
||||||
|
"cld": "^2.7.0",
|
||||||
|
"concat-map": "0.0.1",
|
||||||
|
"event-kit": "^2.5.3",
|
||||||
|
"fs.realpath": "^1.0.0",
|
||||||
|
"glob": "^5.0.15",
|
||||||
|
"inflight": "^1.0.6",
|
||||||
|
"inherits": "^2.0.4",
|
||||||
|
"keyboard-layout": "^2.0.17",
|
||||||
|
"minimatch": "^3.0.4",
|
||||||
|
"nan": "^2.14.2",
|
||||||
|
"node-addon-api": "^1.7.2",
|
||||||
|
"once": "^1.4.0",
|
||||||
|
"path-is-absolute": "^1.0.1",
|
||||||
|
"rimraf": "^2.7.1",
|
||||||
|
"spellchecker": "^3.7.1",
|
||||||
|
"underscore": "^1.12.0",
|
||||||
|
"wrappy": "^1.0.2"
|
||||||
|
},
|
||||||
|
"devDependencies": {},
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC"
|
||||||
|
}
|
|
@ -0,0 +1,932 @@
|
||||||
|
{
|
||||||
|
"name": "discord_utils",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"lockfileVersion": 2,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"asynckit": "^0.4.0",
|
||||||
|
"combined-stream": "^1.0.8",
|
||||||
|
"component-emitter": "^1.3.0",
|
||||||
|
"cookiejar": "^2.1.2",
|
||||||
|
"cross-spawn": "^6.0.5",
|
||||||
|
"debug": "^4.3.1",
|
||||||
|
"delayed-stream": "^1.0.0",
|
||||||
|
"end-of-stream": "^1.4.4",
|
||||||
|
"execa": "^2.1.0",
|
||||||
|
"fast-safe-stringify": "^2.0.7",
|
||||||
|
"form-data": "^2.5.1",
|
||||||
|
"formidable": "^1.2.2",
|
||||||
|
"get-stream": "^5.2.0",
|
||||||
|
"inherits": "^2.0.4",
|
||||||
|
"is-stream": "^2.0.0",
|
||||||
|
"isexe": "^2.0.0",
|
||||||
|
"merge-stream": "^2.0.0",
|
||||||
|
"methods": "^1.1.2",
|
||||||
|
"mime": "^2.5.2",
|
||||||
|
"mime-db": "^1.46.0",
|
||||||
|
"mime-types": "^2.1.29",
|
||||||
|
"ms": "^2.1.3",
|
||||||
|
"nice-try": "^1.0.5",
|
||||||
|
"npm-run-path": "^3.1.0",
|
||||||
|
"once": "^1.4.0",
|
||||||
|
"p-finally": "^2.0.1",
|
||||||
|
"path-key": "^2.0.1",
|
||||||
|
"pump": "^3.0.0",
|
||||||
|
"qs": "^6.9.6",
|
||||||
|
"readable-stream": "^3.6.0",
|
||||||
|
"safe-buffer": "^5.2.1",
|
||||||
|
"semver": "^6.3.0",
|
||||||
|
"shebang-command": "^1.2.0",
|
||||||
|
"shebang-regex": "^1.0.0",
|
||||||
|
"signal-exit": "^3.0.3",
|
||||||
|
"string_decoder": "^1.3.0",
|
||||||
|
"strip-final-newline": "^2.0.0",
|
||||||
|
"superagent": "^5.3.1",
|
||||||
|
"util-deprecate": "^1.0.2",
|
||||||
|
"which": "^1.3.1",
|
||||||
|
"wrappy": "^1.0.2"
|
||||||
|
},
|
||||||
|
"devDependencies": {}
|
||||||
|
},
|
||||||
|
"node_modules/asynckit": {
|
||||||
|
"version": "0.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
||||||
|
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
|
||||||
|
},
|
||||||
|
"node_modules/combined-stream": {
|
||||||
|
"version": "1.0.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
||||||
|
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
|
||||||
|
"dependencies": {
|
||||||
|
"delayed-stream": "~1.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/component-emitter": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
|
||||||
|
"integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
|
||||||
|
},
|
||||||
|
"node_modules/cookiejar": {
|
||||||
|
"version": "2.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz",
|
||||||
|
"integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA=="
|
||||||
|
},
|
||||||
|
"node_modules/cross-spawn": {
|
||||||
|
"version": "6.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
|
||||||
|
"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"nice-try": "^1.0.4",
|
||||||
|
"path-key": "^2.0.1",
|
||||||
|
"semver": "^5.5.0",
|
||||||
|
"shebang-command": "^1.2.0",
|
||||||
|
"which": "^1.2.9"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4.8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/cross-spawn/node_modules/semver": {
|
||||||
|
"version": "5.7.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
|
||||||
|
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
|
||||||
|
"bin": {
|
||||||
|
"semver": "bin/semver"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/debug": {
|
||||||
|
"version": "4.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
|
||||||
|
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"ms": "2.1.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/debug/node_modules/ms": {
|
||||||
|
"version": "2.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||||
|
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||||
|
},
|
||||||
|
"node_modules/delayed-stream": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/end-of-stream": {
|
||||||
|
"version": "1.4.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
|
||||||
|
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
|
||||||
|
"dependencies": {
|
||||||
|
"once": "^1.4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/execa": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/execa/-/execa-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw==",
|
||||||
|
"dependencies": {
|
||||||
|
"cross-spawn": "^7.0.0",
|
||||||
|
"get-stream": "^5.0.0",
|
||||||
|
"is-stream": "^2.0.0",
|
||||||
|
"merge-stream": "^2.0.0",
|
||||||
|
"npm-run-path": "^3.0.0",
|
||||||
|
"onetime": "^5.1.0",
|
||||||
|
"p-finally": "^2.0.0",
|
||||||
|
"signal-exit": "^3.0.2",
|
||||||
|
"strip-final-newline": "^2.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^8.12.0 || >=9.7.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/execa/node_modules/cross-spawn": {
|
||||||
|
"version": "7.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
||||||
|
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
|
||||||
|
"dependencies": {
|
||||||
|
"path-key": "^3.1.0",
|
||||||
|
"shebang-command": "^2.0.0",
|
||||||
|
"which": "^2.0.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/execa/node_modules/path-key": {
|
||||||
|
"version": "3.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
||||||
|
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/execa/node_modules/shebang-command": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
|
||||||
|
"dependencies": {
|
||||||
|
"shebang-regex": "^3.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/execa/node_modules/shebang-regex": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/execa/node_modules/which": {
|
||||||
|
"version": "2.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
||||||
|
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
|
||||||
|
"dependencies": {
|
||||||
|
"isexe": "^2.0.0"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"node-which": "bin/node-which"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/fast-safe-stringify": {
|
||||||
|
"version": "2.0.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
|
||||||
|
"integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
|
||||||
|
},
|
||||||
|
"node_modules/form-data": {
|
||||||
|
"version": "2.5.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
|
||||||
|
"integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
|
||||||
|
"dependencies": {
|
||||||
|
"asynckit": "^0.4.0",
|
||||||
|
"combined-stream": "^1.0.6",
|
||||||
|
"mime-types": "^2.1.12"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/formidable": {
|
||||||
|
"version": "1.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz",
|
||||||
|
"integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q=="
|
||||||
|
},
|
||||||
|
"node_modules/get-stream": {
|
||||||
|
"version": "5.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
|
||||||
|
"integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
|
||||||
|
"dependencies": {
|
||||||
|
"pump": "^3.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/inherits": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||||
|
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||||
|
},
|
||||||
|
"node_modules/is-stream": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/isexe": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
||||||
|
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
|
||||||
|
},
|
||||||
|
"node_modules/lru-cache": {
|
||||||
|
"version": "6.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
||||||
|
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
||||||
|
"dependencies": {
|
||||||
|
"yallist": "^4.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/merge-stream": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
|
||||||
|
},
|
||||||
|
"node_modules/methods": {
|
||||||
|
"version": "1.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
|
||||||
|
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/mime": {
|
||||||
|
"version": "2.5.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz",
|
||||||
|
"integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==",
|
||||||
|
"bin": {
|
||||||
|
"mime": "cli.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/mime-db": {
|
||||||
|
"version": "1.46.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz",
|
||||||
|
"integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/mime-types": {
|
||||||
|
"version": "2.1.29",
|
||||||
|
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz",
|
||||||
|
"integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"mime-db": "1.46.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/mimic-fn": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/ms": {
|
||||||
|
"version": "2.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
||||||
|
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
|
||||||
|
},
|
||||||
|
"node_modules/nice-try": {
|
||||||
|
"version": "1.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
|
||||||
|
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
|
||||||
|
},
|
||||||
|
"node_modules/npm-run-path": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz",
|
||||||
|
"integrity": "sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==",
|
||||||
|
"dependencies": {
|
||||||
|
"path-key": "^3.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/npm-run-path/node_modules/path-key": {
|
||||||
|
"version": "3.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
||||||
|
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/once": {
|
||||||
|
"version": "1.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||||
|
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||||
|
"dependencies": {
|
||||||
|
"wrappy": "1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/onetime": {
|
||||||
|
"version": "5.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
|
||||||
|
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
|
||||||
|
"dependencies": {
|
||||||
|
"mimic-fn": "^2.1.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/p-finally": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/path-key": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
|
||||||
|
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/pump": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
|
||||||
|
"dependencies": {
|
||||||
|
"end-of-stream": "^1.1.0",
|
||||||
|
"once": "^1.3.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/qs": {
|
||||||
|
"version": "6.9.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz",
|
||||||
|
"integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/readable-stream": {
|
||||||
|
"version": "3.6.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
|
||||||
|
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
|
||||||
|
"dependencies": {
|
||||||
|
"inherits": "^2.0.3",
|
||||||
|
"string_decoder": "^1.1.1",
|
||||||
|
"util-deprecate": "^1.0.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/safe-buffer": {
|
||||||
|
"version": "5.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
||||||
|
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
|
||||||
|
},
|
||||||
|
"node_modules/semver": {
|
||||||
|
"version": "6.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
||||||
|
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
||||||
|
"bin": {
|
||||||
|
"semver": "bin/semver.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/shebang-command": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
|
||||||
|
"integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
|
||||||
|
"dependencies": {
|
||||||
|
"shebang-regex": "^1.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/shebang-regex": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/signal-exit": {
|
||||||
|
"version": "3.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
|
||||||
|
"integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
|
||||||
|
},
|
||||||
|
"node_modules/string_decoder": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
|
||||||
|
"integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
|
||||||
|
"dependencies": {
|
||||||
|
"safe-buffer": "~5.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/strip-final-newline": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/superagent": {
|
||||||
|
"version": "5.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/superagent/-/superagent-5.3.1.tgz",
|
||||||
|
"integrity": "sha512-wjJ/MoTid2/RuGCOFtlacyGNxN9QLMgcpYLDQlWFIhhdJ93kNscFonGvrpAHSCVjRVj++DGCglocF7Aej1KHvQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"component-emitter": "^1.3.0",
|
||||||
|
"cookiejar": "^2.1.2",
|
||||||
|
"debug": "^4.1.1",
|
||||||
|
"fast-safe-stringify": "^2.0.7",
|
||||||
|
"form-data": "^3.0.0",
|
||||||
|
"formidable": "^1.2.2",
|
||||||
|
"methods": "^1.1.2",
|
||||||
|
"mime": "^2.4.6",
|
||||||
|
"qs": "^6.9.4",
|
||||||
|
"readable-stream": "^3.6.0",
|
||||||
|
"semver": "^7.3.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 7.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/superagent/node_modules/form-data": {
|
||||||
|
"version": "3.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
|
||||||
|
"integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
|
||||||
|
"dependencies": {
|
||||||
|
"asynckit": "^0.4.0",
|
||||||
|
"combined-stream": "^1.0.8",
|
||||||
|
"mime-types": "^2.1.12"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/superagent/node_modules/semver": {
|
||||||
|
"version": "7.3.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
|
||||||
|
"integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
|
||||||
|
"dependencies": {
|
||||||
|
"lru-cache": "^6.0.0"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"semver": "bin/semver.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/util-deprecate": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||||
|
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
|
||||||
|
},
|
||||||
|
"node_modules/which": {
|
||||||
|
"version": "1.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
|
||||||
|
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"isexe": "^2.0.0"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"which": "bin/which"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/wrappy": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||||
|
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
|
||||||
|
},
|
||||||
|
"node_modules/yallist": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"asynckit": {
|
||||||
|
"version": "0.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
||||||
|
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
|
||||||
|
},
|
||||||
|
"combined-stream": {
|
||||||
|
"version": "1.0.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
||||||
|
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
|
||||||
|
"requires": {
|
||||||
|
"delayed-stream": "~1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"component-emitter": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
|
||||||
|
"integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
|
||||||
|
},
|
||||||
|
"cookiejar": {
|
||||||
|
"version": "2.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz",
|
||||||
|
"integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA=="
|
||||||
|
},
|
||||||
|
"cross-spawn": {
|
||||||
|
"version": "6.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
|
||||||
|
"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
|
||||||
|
"requires": {
|
||||||
|
"nice-try": "^1.0.4",
|
||||||
|
"path-key": "^2.0.1",
|
||||||
|
"semver": "^5.5.0",
|
||||||
|
"shebang-command": "^1.2.0",
|
||||||
|
"which": "^1.2.9"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"semver": {
|
||||||
|
"version": "5.7.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
|
||||||
|
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"debug": {
|
||||||
|
"version": "4.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
|
||||||
|
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
|
||||||
|
"requires": {
|
||||||
|
"ms": "2.1.2"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"ms": {
|
||||||
|
"version": "2.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||||
|
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"delayed-stream": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
|
||||||
|
},
|
||||||
|
"end-of-stream": {
|
||||||
|
"version": "1.4.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
|
||||||
|
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
|
||||||
|
"requires": {
|
||||||
|
"once": "^1.4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"execa": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/execa/-/execa-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw==",
|
||||||
|
"requires": {
|
||||||
|
"cross-spawn": "^7.0.0",
|
||||||
|
"get-stream": "^5.0.0",
|
||||||
|
"is-stream": "^2.0.0",
|
||||||
|
"merge-stream": "^2.0.0",
|
||||||
|
"npm-run-path": "^3.0.0",
|
||||||
|
"onetime": "^5.1.0",
|
||||||
|
"p-finally": "^2.0.0",
|
||||||
|
"signal-exit": "^3.0.2",
|
||||||
|
"strip-final-newline": "^2.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"cross-spawn": {
|
||||||
|
"version": "7.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
||||||
|
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
|
||||||
|
"requires": {
|
||||||
|
"path-key": "^3.1.0",
|
||||||
|
"shebang-command": "^2.0.0",
|
||||||
|
"which": "^2.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"path-key": {
|
||||||
|
"version": "3.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
||||||
|
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
|
||||||
|
},
|
||||||
|
"shebang-command": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
|
||||||
|
"requires": {
|
||||||
|
"shebang-regex": "^3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"shebang-regex": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
|
||||||
|
},
|
||||||
|
"which": {
|
||||||
|
"version": "2.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
||||||
|
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
|
||||||
|
"requires": {
|
||||||
|
"isexe": "^2.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"fast-safe-stringify": {
|
||||||
|
"version": "2.0.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
|
||||||
|
"integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
|
||||||
|
},
|
||||||
|
"form-data": {
|
||||||
|
"version": "2.5.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
|
||||||
|
"integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
|
||||||
|
"requires": {
|
||||||
|
"asynckit": "^0.4.0",
|
||||||
|
"combined-stream": "^1.0.6",
|
||||||
|
"mime-types": "^2.1.12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"formidable": {
|
||||||
|
"version": "1.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz",
|
||||||
|
"integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q=="
|
||||||
|
},
|
||||||
|
"get-stream": {
|
||||||
|
"version": "5.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
|
||||||
|
"integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
|
||||||
|
"requires": {
|
||||||
|
"pump": "^3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"inherits": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||||
|
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||||
|
},
|
||||||
|
"is-stream": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw=="
|
||||||
|
},
|
||||||
|
"isexe": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
||||||
|
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
|
||||||
|
},
|
||||||
|
"lru-cache": {
|
||||||
|
"version": "6.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
||||||
|
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
||||||
|
"requires": {
|
||||||
|
"yallist": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"merge-stream": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
|
||||||
|
},
|
||||||
|
"methods": {
|
||||||
|
"version": "1.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
|
||||||
|
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
|
||||||
|
},
|
||||||
|
"mime": {
|
||||||
|
"version": "2.5.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz",
|
||||||
|
"integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg=="
|
||||||
|
},
|
||||||
|
"mime-db": {
|
||||||
|
"version": "1.46.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz",
|
||||||
|
"integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ=="
|
||||||
|
},
|
||||||
|
"mime-types": {
|
||||||
|
"version": "2.1.29",
|
||||||
|
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz",
|
||||||
|
"integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==",
|
||||||
|
"requires": {
|
||||||
|
"mime-db": "1.46.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mimic-fn": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
|
||||||
|
},
|
||||||
|
"ms": {
|
||||||
|
"version": "2.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
||||||
|
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
|
||||||
|
},
|
||||||
|
"nice-try": {
|
||||||
|
"version": "1.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
|
||||||
|
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
|
||||||
|
},
|
||||||
|
"npm-run-path": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz",
|
||||||
|
"integrity": "sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==",
|
||||||
|
"requires": {
|
||||||
|
"path-key": "^3.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"path-key": {
|
||||||
|
"version": "3.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
||||||
|
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"once": {
|
||||||
|
"version": "1.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||||
|
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||||
|
"requires": {
|
||||||
|
"wrappy": "1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"onetime": {
|
||||||
|
"version": "5.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
|
||||||
|
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
|
||||||
|
"requires": {
|
||||||
|
"mimic-fn": "^2.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"p-finally": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw=="
|
||||||
|
},
|
||||||
|
"path-key": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
|
||||||
|
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
|
||||||
|
},
|
||||||
|
"pump": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
|
||||||
|
"requires": {
|
||||||
|
"end-of-stream": "^1.1.0",
|
||||||
|
"once": "^1.3.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"qs": {
|
||||||
|
"version": "6.9.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz",
|
||||||
|
"integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ=="
|
||||||
|
},
|
||||||
|
"readable-stream": {
|
||||||
|
"version": "3.6.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
|
||||||
|
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
|
||||||
|
"requires": {
|
||||||
|
"inherits": "^2.0.3",
|
||||||
|
"string_decoder": "^1.1.1",
|
||||||
|
"util-deprecate": "^1.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"safe-buffer": {
|
||||||
|
"version": "5.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
||||||
|
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
|
||||||
|
},
|
||||||
|
"semver": {
|
||||||
|
"version": "6.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
||||||
|
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
|
||||||
|
},
|
||||||
|
"shebang-command": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
|
||||||
|
"integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
|
||||||
|
"requires": {
|
||||||
|
"shebang-regex": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"shebang-regex": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
|
||||||
|
},
|
||||||
|
"signal-exit": {
|
||||||
|
"version": "3.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
|
||||||
|
"integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
|
||||||
|
},
|
||||||
|
"string_decoder": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
|
||||||
|
"integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
|
||||||
|
"requires": {
|
||||||
|
"safe-buffer": "~5.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"strip-final-newline": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="
|
||||||
|
},
|
||||||
|
"superagent": {
|
||||||
|
"version": "5.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/superagent/-/superagent-5.3.1.tgz",
|
||||||
|
"integrity": "sha512-wjJ/MoTid2/RuGCOFtlacyGNxN9QLMgcpYLDQlWFIhhdJ93kNscFonGvrpAHSCVjRVj++DGCglocF7Aej1KHvQ==",
|
||||||
|
"requires": {
|
||||||
|
"component-emitter": "^1.3.0",
|
||||||
|
"cookiejar": "^2.1.2",
|
||||||
|
"debug": "^4.1.1",
|
||||||
|
"fast-safe-stringify": "^2.0.7",
|
||||||
|
"form-data": "^3.0.0",
|
||||||
|
"formidable": "^1.2.2",
|
||||||
|
"methods": "^1.1.2",
|
||||||
|
"mime": "^2.4.6",
|
||||||
|
"qs": "^6.9.4",
|
||||||
|
"readable-stream": "^3.6.0",
|
||||||
|
"semver": "^7.3.2"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"form-data": {
|
||||||
|
"version": "3.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
|
||||||
|
"integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
|
||||||
|
"requires": {
|
||||||
|
"asynckit": "^0.4.0",
|
||||||
|
"combined-stream": "^1.0.8",
|
||||||
|
"mime-types": "^2.1.12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"semver": {
|
||||||
|
"version": "7.3.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
|
||||||
|
"integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
|
||||||
|
"requires": {
|
||||||
|
"lru-cache": "^6.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"util-deprecate": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||||
|
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
|
||||||
|
},
|
||||||
|
"which": {
|
||||||
|
"version": "1.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
|
||||||
|
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
|
||||||
|
"requires": {
|
||||||
|
"isexe": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"wrappy": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||||
|
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
|
||||||
|
},
|
||||||
|
"yallist": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
{
|
||||||
|
"name": "discord_utils",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "index.js",
|
||||||
|
"dependencies": {
|
||||||
|
"asynckit": "^0.4.0",
|
||||||
|
"combined-stream": "^1.0.8",
|
||||||
|
"component-emitter": "^1.3.0",
|
||||||
|
"cookiejar": "^2.1.2",
|
||||||
|
"cross-spawn": "^6.0.5",
|
||||||
|
"debug": "^4.3.1",
|
||||||
|
"delayed-stream": "^1.0.0",
|
||||||
|
"end-of-stream": "^1.4.4",
|
||||||
|
"execa": "^2.1.0",
|
||||||
|
"fast-safe-stringify": "^2.0.7",
|
||||||
|
"form-data": "^2.5.1",
|
||||||
|
"formidable": "^1.2.2",
|
||||||
|
"get-stream": "^5.2.0",
|
||||||
|
"inherits": "^2.0.4",
|
||||||
|
"is-stream": "^2.0.0",
|
||||||
|
"isexe": "^2.0.0",
|
||||||
|
"merge-stream": "^2.0.0",
|
||||||
|
"methods": "^1.1.2",
|
||||||
|
"mime": "^2.5.2",
|
||||||
|
"mime-db": "^1.46.0",
|
||||||
|
"mime-types": "^2.1.29",
|
||||||
|
"ms": "^2.1.3",
|
||||||
|
"nice-try": "^1.0.5",
|
||||||
|
"npm-run-path": "^3.1.0",
|
||||||
|
"once": "^1.4.0",
|
||||||
|
"p-finally": "^2.0.1",
|
||||||
|
"path-key": "^2.0.1",
|
||||||
|
"pump": "^3.0.0",
|
||||||
|
"qs": "^6.9.6",
|
||||||
|
"readable-stream": "^3.6.0",
|
||||||
|
"safe-buffer": "^5.2.1",
|
||||||
|
"semver": "^6.3.0",
|
||||||
|
"shebang-command": "^1.2.0",
|
||||||
|
"shebang-regex": "^1.0.0",
|
||||||
|
"signal-exit": "^3.0.3",
|
||||||
|
"string_decoder": "^1.3.0",
|
||||||
|
"strip-final-newline": "^2.0.0",
|
||||||
|
"superagent": "^5.3.1",
|
||||||
|
"util-deprecate": "^1.0.2",
|
||||||
|
"which": "^1.3.1",
|
||||||
|
"wrappy": "^1.0.2"
|
||||||
|
},
|
||||||
|
"devDependencies": {},
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC"
|
||||||
|
}
|
|
@ -0,0 +1,282 @@
|
||||||
|
{
|
||||||
|
"name": "discord_voice",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"lockfileVersion": 2,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"yargs": "^16.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/ansi-regex": {
|
||||||
|
"version": "5.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
|
||||||
|
"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/ansi-styles": {
|
||||||
|
"version": "4.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||||
|
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||||
|
"dependencies": {
|
||||||
|
"color-convert": "^2.0.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/cliui": {
|
||||||
|
"version": "7.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
|
||||||
|
"integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"string-width": "^4.2.0",
|
||||||
|
"strip-ansi": "^6.0.0",
|
||||||
|
"wrap-ansi": "^7.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/color-convert": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"color-name": "~1.1.4"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=7.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/color-name": {
|
||||||
|
"version": "1.1.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||||
|
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
||||||
|
},
|
||||||
|
"node_modules/emoji-regex": {
|
||||||
|
"version": "8.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||||
|
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
|
||||||
|
},
|
||||||
|
"node_modules/escalade": {
|
||||||
|
"version": "3.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
|
||||||
|
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/get-caller-file": {
|
||||||
|
"version": "2.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
|
||||||
|
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
|
||||||
|
"engines": {
|
||||||
|
"node": "6.* || 8.* || >= 10.*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/is-fullwidth-code-point": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/require-directory": {
|
||||||
|
"version": "2.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
|
||||||
|
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/string-width": {
|
||||||
|
"version": "4.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
|
||||||
|
"integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
|
||||||
|
"dependencies": {
|
||||||
|
"emoji-regex": "^8.0.0",
|
||||||
|
"is-fullwidth-code-point": "^3.0.0",
|
||||||
|
"strip-ansi": "^6.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/strip-ansi": {
|
||||||
|
"version": "6.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
|
||||||
|
"integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
|
||||||
|
"dependencies": {
|
||||||
|
"ansi-regex": "^5.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/wrap-ansi": {
|
||||||
|
"version": "7.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
|
||||||
|
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
|
||||||
|
"dependencies": {
|
||||||
|
"ansi-styles": "^4.0.0",
|
||||||
|
"string-width": "^4.1.0",
|
||||||
|
"strip-ansi": "^6.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/y18n": {
|
||||||
|
"version": "5.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz",
|
||||||
|
"integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/yargs": {
|
||||||
|
"version": "16.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
|
||||||
|
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
|
||||||
|
"dependencies": {
|
||||||
|
"cliui": "^7.0.2",
|
||||||
|
"escalade": "^3.1.1",
|
||||||
|
"get-caller-file": "^2.0.5",
|
||||||
|
"require-directory": "^2.1.1",
|
||||||
|
"string-width": "^4.2.0",
|
||||||
|
"y18n": "^5.0.5",
|
||||||
|
"yargs-parser": "^20.2.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/yargs-parser": {
|
||||||
|
"version": "20.2.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.6.tgz",
|
||||||
|
"integrity": "sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"ansi-regex": {
|
||||||
|
"version": "5.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
|
||||||
|
"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
|
||||||
|
},
|
||||||
|
"ansi-styles": {
|
||||||
|
"version": "4.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||||
|
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||||
|
"requires": {
|
||||||
|
"color-convert": "^2.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cliui": {
|
||||||
|
"version": "7.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
|
||||||
|
"integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
|
||||||
|
"requires": {
|
||||||
|
"string-width": "^4.2.0",
|
||||||
|
"strip-ansi": "^6.0.0",
|
||||||
|
"wrap-ansi": "^7.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"color-convert": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||||
|
"requires": {
|
||||||
|
"color-name": "~1.1.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"color-name": {
|
||||||
|
"version": "1.1.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||||
|
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
||||||
|
},
|
||||||
|
"emoji-regex": {
|
||||||
|
"version": "8.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||||
|
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
|
||||||
|
},
|
||||||
|
"escalade": {
|
||||||
|
"version": "3.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
|
||||||
|
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
|
||||||
|
},
|
||||||
|
"get-caller-file": {
|
||||||
|
"version": "2.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
|
||||||
|
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
|
||||||
|
},
|
||||||
|
"is-fullwidth-code-point": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
|
||||||
|
},
|
||||||
|
"require-directory": {
|
||||||
|
"version": "2.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
|
||||||
|
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
|
||||||
|
},
|
||||||
|
"string-width": {
|
||||||
|
"version": "4.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
|
||||||
|
"integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
|
||||||
|
"requires": {
|
||||||
|
"emoji-regex": "^8.0.0",
|
||||||
|
"is-fullwidth-code-point": "^3.0.0",
|
||||||
|
"strip-ansi": "^6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"strip-ansi": {
|
||||||
|
"version": "6.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
|
||||||
|
"integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
|
||||||
|
"requires": {
|
||||||
|
"ansi-regex": "^5.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"wrap-ansi": {
|
||||||
|
"version": "7.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
|
||||||
|
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
|
||||||
|
"requires": {
|
||||||
|
"ansi-styles": "^4.0.0",
|
||||||
|
"string-width": "^4.1.0",
|
||||||
|
"strip-ansi": "^6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"y18n": {
|
||||||
|
"version": "5.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz",
|
||||||
|
"integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg=="
|
||||||
|
},
|
||||||
|
"yargs": {
|
||||||
|
"version": "16.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
|
||||||
|
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
|
||||||
|
"requires": {
|
||||||
|
"cliui": "^7.0.2",
|
||||||
|
"escalade": "^3.1.1",
|
||||||
|
"get-caller-file": "^2.0.5",
|
||||||
|
"require-directory": "^2.1.1",
|
||||||
|
"string-width": "^4.2.0",
|
||||||
|
"y18n": "^5.0.5",
|
||||||
|
"yargs-parser": "^20.2.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"yargs-parser": {
|
||||||
|
"version": "20.2.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.6.tgz",
|
||||||
|
"integrity": "sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
"name": "discord_voice",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"yargs": "^16.2.0"
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "lightcord",
|
"name": "lightcord",
|
||||||
"version": "0.1.5",
|
"version": "0.1.9",
|
||||||
"description": "A simple - customizable - Discord Client.",
|
"description": "A simple - customizable - Discord Client.",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -24,7 +24,6 @@
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"auto-launch": "^5.0.5",
|
"auto-launch": "^5.0.5",
|
||||||
"custom-electron-titlebar": "^3.2.2-hotfix62",
|
|
||||||
"glasstron": "0.0.4",
|
"glasstron": "0.0.4",
|
||||||
"mkdirp": "^1.0.4",
|
"mkdirp": "^1.0.4",
|
||||||
"node-fetch": "^2.6.0",
|
"node-fetch": "^2.6.0",
|
||||||
|
@ -44,9 +43,8 @@
|
||||||
"@types/uuid": "^8.0.0",
|
"@types/uuid": "^8.0.0",
|
||||||
"@types/yauzl": "^2.9.1",
|
"@types/yauzl": "^2.9.1",
|
||||||
"asar": "^3.0.3",
|
"asar": "^3.0.3",
|
||||||
"cross-spawn": "^7.0.3",
|
|
||||||
"dotenv": "^8.2.0",
|
"dotenv": "^8.2.0",
|
||||||
"electron": "^9.3.1",
|
"electron": "^9.4.4",
|
||||||
"electron-builder": "^22.8.0",
|
"electron-builder": "^22.8.0",
|
||||||
"fast-glob": "^3.2.4",
|
"fast-glob": "^3.2.4",
|
||||||
"fs-extra": "^9.0.1",
|
"fs-extra": "^9.0.1",
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
const spawn = require("cross-spawn")
|
const child_process = require("child_process")
|
||||||
const path = require("path")
|
const path = require("path")
|
||||||
const { existsSync, promises: fsPromises, createWriteStream } = require("fs")
|
const { existsSync, promises: fsPromises, createWriteStream } = require("fs")
|
||||||
const yazl = require("yazl")
|
const yazl = require("yazl")
|
||||||
|
@ -121,7 +121,8 @@ switch(process.platform){
|
||||||
|
|
||||||
function awaitExec(command, args = []){
|
function awaitExec(command, args = []){
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const child = spawn.spawn(command, args, {
|
if(process.platform === "win32")command += ".cmd"
|
||||||
|
const child = child_process.spawn(command, args, {
|
||||||
env: process.env,
|
env: process.env,
|
||||||
cwd: process.cwd(),
|
cwd: process.cwd(),
|
||||||
stdio: "inherit"
|
stdio: "inherit"
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
const spawn = require("cross-spawn")
|
|
||||||
const { mkdirSync, existsSync } = require("fs")
|
const { mkdirSync, existsSync } = require("fs")
|
||||||
const { join, resolve } = require("path")
|
const { join, resolve } = require("path")
|
||||||
|
const child_process = require("child_process")
|
||||||
|
|
||||||
|
const spawn = (...args) => {
|
||||||
|
if(process.platform === "win32")args[0] += ".cmd"
|
||||||
|
return child_process.spawn(...args)
|
||||||
|
}
|
||||||
|
|
||||||
const PROJECT_DIR = resolve(__dirname, "..");
|
const PROJECT_DIR = resolve(__dirname, "..");
|
||||||
/** Main Project */
|
/** Main Project */
|
||||||
|
|
|
@ -3,14 +3,12 @@ const { join } = require("path")
|
||||||
const PROJECT_DIRNAME=join(__dirname, "..")
|
const PROJECT_DIRNAME=join(__dirname, "..")
|
||||||
const child_process = require("child_process")
|
const child_process = require("child_process")
|
||||||
|
|
||||||
let env = process.env
|
|
||||||
|
|
||||||
function spawnProcess(cmd, ...args) {
|
function spawnProcess(cmd, ...args) {
|
||||||
const postfix = cmd === "node" ? ".exe" : ".cmd"
|
const postfix = cmd === "node" ? ".exe" : ".cmd"
|
||||||
cmd = process.platform === "win32" ? cmd + postfix : cmd
|
cmd = process.platform === "win32" ? cmd + postfix : cmd
|
||||||
let result = child_process.spawnSync(cmd, args, {
|
let result = child_process.spawnSync(cmd, args, {
|
||||||
cwd: PROJECT_DIRNAME,
|
cwd: PROJECT_DIRNAME,
|
||||||
env: env,
|
env: process.env,
|
||||||
stdio: "inherit"
|
stdio: "inherit"
|
||||||
})
|
})
|
||||||
if (result.error){
|
if (result.error){
|
||||||
|
@ -21,18 +19,12 @@ function spawnProcess(cmd, ...args) {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
let result;
|
|
||||||
spawnProcess("npm", "rm", "electron")
|
spawnProcess("npm", "rm", "electron")
|
||||||
spawnProcess("npm", "i")
|
spawnProcess("npm", "i")
|
||||||
if (process.platform === "win32"){
|
const arch = process.platform === "win32" ? "ia32" : "x64"
|
||||||
result = spawnProcess("npm", "i", "--save-dev", "--arch=ia32", "electron@9.3.1")
|
spawnProcess("npm", "i", "--save-dev", "--arch="+arch, "electron@9")
|
||||||
} else {
|
|
||||||
result = spawnProcess("npm", "i", "--save-dev", "--arch=x64", "electron@9.3.1")
|
|
||||||
}
|
|
||||||
|
|
||||||
let runString = "`npm test`"
|
spawnProcess("node", join(PROJECT_DIRNAME, "scripts", "installSubModules.js"))
|
||||||
|
|
||||||
spawnProcess("node", join(PROJECT_DIRNAME,"scripts", "installSubModules.js"))
|
|
||||||
|
|
||||||
|
|
||||||
console.log("Everything is installed. You should be able to do "+runString+" to compile everything and launch.")
|
console.log("Everything is installed. You should be able to do `npm test` to compile everything and launch.")
|
|
@ -1,14 +1,15 @@
|
||||||
import { getCommitID } from "./common/git"
|
import { getCommitID } from "./common/git"
|
||||||
const pak = require("../package.json")
|
const pak = require("../package.json")
|
||||||
|
|
||||||
export const releaseChannel:"stable"|"canary"|"ptb"|"development" = "stable"
|
type branch = "stable"|"canary"|"ptb"|"development";
|
||||||
export let version
|
|
||||||
if(process.platform === "darwin")
|
const buildTargets = {
|
||||||
version = "0.0.259"
|
"darwin":"0.0.259",
|
||||||
else if(process.platform === "linux")
|
"linux":"0.0.12",
|
||||||
version = "0.0.12"
|
}
|
||||||
else
|
|
||||||
version = "0.0.308"
|
export const releaseChannel:branch = "stable"
|
||||||
|
export let version = buildTargets[process.platform] || "0.0.308"
|
||||||
export const commit = getCommitID()
|
export const commit = getCommitID()
|
||||||
export default {
|
export default {
|
||||||
releaseChannel,
|
releaseChannel,
|
||||||
|
|
Loading…
Reference in New Issue