diff --git a/.eslintrc.js b/.eslintrc.js
index 4e6567d..f73a8b9 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -1,5 +1,6 @@
module.exports = {
env: {
+ browser: true,
commonjs: true,
es6: true,
node: true
diff --git a/.gitignore b/.gitignore
index ee644ce..3086016 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,20 +1,4 @@
-# node modules
-node_modules/
-package-lock.json
-yarn.lock
-
-# vscode
-.vscode/
-
-# Old Datas
-ServerData/
-UserData/
-
-# Stream Data
-stream/*.mp3
-
-# Bot Config
+node_modules
config.json
-
-# Lavalink logs
-lavalink/logs/
\ No newline at end of file
+/lavalink/logs
+.DS_Store
diff --git a/Client/index.js b/Client/index.js
deleted file mode 100644
index 8941cf7..0000000
--- a/Client/index.js
+++ /dev/null
@@ -1,38 +0,0 @@
-/** electron */
-const electron = require('electron')
-const app = electron.app
-let mainWindow
-
-/** version */
-const version = require('../package.json').version
-
-/** Name */
-const name = require('./package.json').name
-
-app.on('ready', () => {
- if (!mainWindow) createMainWindow()
-})
-
-app.on('activate', () => {
- if (!mainWindow) createMainWindow()
-})
-
-app.on('window-all-closed', () => {
- if (process.platform !== 'darwin') app.quit()
-})
-
-function createMainWindow () {
- mainWindow = new electron.BrowserWindow({
- title: name + ' v' + version,
- width: 800,
- height: 600,
- icon: 'https://repository-images.githubusercontent.com/189825448/b441c500-8e39-11e9-99bb-2958359f548d',
- webPreferences: {
- nodeIntegration: true
- },
- autoHideMenuBar: true
- }).on('close', () => {
- mainWindow = null
- })
- mainWindow.loadFile('./src/index.html')
-}
diff --git a/Client/package.json b/Client/package.json
deleted file mode 100644
index 0612142..0000000
--- a/Client/package.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "name": "SeoaBot Client",
- "version": "0.1.0",
- "description": "SeoaBot Dashboard",
- "main": "index.js",
- "scripts": {
- "test": "electron ."
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/seoaapp/SeoaBot.git"
- },
- "author": "Seoa Bot Develoment Team",
- "license": "GPL-3.0-or-later",
- "bugs": {
- "url": "https://github.com/seoaapp/SeoaBot/issues"
- },
- "homepage": "https://github.com/seoaapp/SeoaBot#readme",
- "dependencies": {
- "electron": "^6.0.1"
- }
-}
diff --git a/Client/src/index.html b/Client/src/index.html
deleted file mode 100644
index 9a27d23..0000000
--- a/Client/src/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index f288702..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,674 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc.
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-
-Also add information on how to contact you by electronic and paper mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- Copyright (C)
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-.
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-.
diff --git a/QuizData/Standard.md b/QuizData/Standard.md
deleted file mode 100644
index 46fc477..0000000
--- a/QuizData/Standard.md
+++ /dev/null
@@ -1,40 +0,0 @@
-Quizs.json의 표준 표기법
-===========================
-
-## 예시
-```json
-{
- "language": "c",
- "question": "C언어에서 세미콜론(;)은 의무가 아닙니다.\n즉, 사람의 스타일에 따라 적을수도, 안 적을수도 있습니다.",
- "explanation": "의무입니다, C언어 컴파일러(빌더)는 세미콜론으로 문장과 문장을 나눕니다.\n세미콜론을 사용하지 않을경우, 컴파일러가 컴파일(빌드)을 수행하지 못합니다.",
- "answer": false,
- "point": 1
-}
-```
-
-----------------------------------------------------------------------------------
-
-## 정의
-| 변수이름 | 설명 | 자료형 |
-| ----------- | ------------------------ | ----------- |
-| language | 이 문제와 관련된 언어 | String |
-| question | 문제 | String |
-| explanation | 이 문제의 풀이 | String |
-| answer | 정답 여/부 | **Boolean** |
-| point | 정답일경우 가져갈 포인트 | **Number** |
-
-----------------------------------------------------------------------------------
-
-## 서술 표준
-1. 모든 문제는 o 혹은 x으로 대답할 수 있어야 하며, 정답이 명확해야 한다
-2. 모든 문제는 평어체로 표기하되, 풀이는 경어체로 표기한다
-3. 모든 문장의 끝에는 문장의 끝을 알리는 온점이 표기하여야 한다
-4. 모든 풀이는 맨 앞에 "~입니다, ~가 아닙니다"와 같은 정답 여부를 표기하여야 한다
-
-----------------------------------------------------------------------------------
-
-## 기술적 표준
-1. 모든 문제들은 배열(Array)에 감싸져 있어야 한다
-2. 모든 변수는 지정된 자료형에 맞아야 한다
-3. 통일을 위해 language중 파이썬은 버전의 따라 `py2`와 `py3`로 나누어야 하며, C#은 `c#`으로 표기하고, C++은 `c++`로 표기하며 자바스크립트는 `js`로 표기한다
-4. question, explanation은 `enter`가 있으면 안되므로 `\n`을 사용해야 한다
diff --git a/appveyor.yml b/appveyor.yml
deleted file mode 100644
index cdaffa3..0000000
--- a/appveyor.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-environment:
- nodejs_version: "8"
-
-install:
- - npm install
-
-test_script:
- - node --version
- - npm --version
- - npm test
-
-build: off
-
-on_success:
- - ps: Invoke-RestMethod https://raw.githubusercontent.com/seoaapp/appveyor-discord-webhook/master/send.ps1 -o send.ps1
- - ps: ./send.ps1 success $env:WEBHOOK_URL
-on_failure:
- - ps: Invoke-RestMethod https://raw.githubusercontent.com/seoaapp/appveyor-discord-webhook/master/send.ps1 -o send.ps1
- - ps: ./send.ps1 failure $env:WEBHOOK_URL
diff --git a/classes/index.js b/classes/index.js
deleted file mode 100644
index e8f2952..0000000
--- a/classes/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports.bot = require('./seoa')
-module.exports.m = require('./music_native')
-module.exports.lm = require('./music_lavalink')
-module.exports.s = require('./search')
\ No newline at end of file
diff --git a/classes/music_lavalink.js b/classes/music_lavalink.js
deleted file mode 100644
index 51ee3d6..0000000
--- a/classes/music_lavalink.js
+++ /dev/null
@@ -1,154 +0,0 @@
-const fetch = require('node-fetch')
-const { URLSearchParams } = require('url')
-
-const events = require('events')
-const stableMode = false
-
-module.exports = class MusicServers extends events.EventEmitter {
- constructor (seoa) {
- super()
- this.servers = new Map()
- this.seoa = seoa
- }
-
- new (gID, channel) {
- this.servers.set(gID, new Server(gID, this.seoa))
- let here = this._(gID)
- this.emit(`${gID}_add`, here)
- if (channel) here._(channel)
- return here
- }
-
- _ (gID, channel) {
- let res = this.servers.get(gID)
- if (!res) {
- this.new(gID, channel)
- return this._(gID)
- }
- return res
- }
-
- set (gID, c, channel) {
- if (!c || c.name !== 'Server') return
- this.servers.set(gID, c)
- if (channel) this._(gID).join(channel)
- }
-}
-
-class Server extends events.EventEmitter {
- constructor (gID, seoa) {
- super()
- this.gID = gID
- this.player = null
- this.player = null
- this.skipSafe = false
- this.volume = 50
- this.repeat = false
- this.random = false // un used variable
- this.playing = false
- this.currentSong = null
- this.songs = []
- this.stableMode = stableMode // Read-only
- this.seoa = seoa
- }
-
- async _ (channel) {
- if (!channel) return this.emit('notChannel')
- this.player = this.seoa.player.join(
- {
- guild: this.gID,
- channel: channel.id,
- host: this.seoa.player.nodes.first().host
- },
- { selfdeaf: false, selfmute: false }
- )
- }
-
- handler (gID) {
- return new Promise(async (resolve, reject) => {
- try {
- let result = await this.seoa.player.get(gID)
- resolve(result)
- } catch (e) {
- reject(e)
- }
- })
- }
-
- seek (sec) {
- this.player.seek(sec * 1000 + this.player.state.position)
- }
-
- start () {
- if (!this.player) return
- if (!this.playing) this.play(this.songs.shift())
- }
-
- play (song) {
- if (!this.player || !song) return
- if (this.repeat) this.songs.push(song)
- this.emit('playing', song)
- this.playing = true
- this.currentSong = song
- this.player.play(this.currentSong.track)
- this.player.volume(this.volume)
-
- this.player.on('end', dat => {
- this.playing = false
- if (this.skipSafe) {
- this.skipSafe = false
- return this.stop()
- } else if (dat.reason === 'REPLACED') return
-
- if (this.songs.length > 0) this.play(this.songs.shift())
- else this.stop()
- })
- }
-
- pause () {
- if (this.player) this.player[this.player.paused ? 'resume' : 'pause']()
- }
-
- skip () {
- if (this.player) this.player.end()
- }
-
- stop (cb) {
- if (this.player) {
- this.seoa.player.leave(this.gID)
- delete this.player
- }
-
- if (cb) cb()
- }
-
- setVolume (vol) {
- this.emit('changeVol', this.volume, vol)
- this.volume = vol
- if (this.player) this.player.volume(vol)
- }
-
- add (song, isMyList) {
- if (!isMyList) this.emit('addSong', song)
- this.songs.push(song)
- }
-
- getSongs (query) {
- const node = this.seoa.player.nodes.first()
- const params = new URLSearchParams()
- params.append('identifier', query)
- return fetch(
- `http://${node.host}:${node.port}/loadtracks?${params.toString()}`,
- { headers: { Authorization: node.password } }
- )
- .then(res => res.json())
- .then(data => data.tracks)
- .catch(console.error)
- }
-
- mylist (lID) {
- /* let myList = mylist[lID]
- this.emit('myList', myList)
- if (myList) myList.forEach(v => { this.add(v, true) }) */
- }
-}
diff --git a/classes/music_native.js b/classes/music_native.js
deleted file mode 100644
index 694df22..0000000
--- a/classes/music_native.js
+++ /dev/null
@@ -1,179 +0,0 @@
-const ytdl = require('ytdl-core')
-const fs = require('fs')
-const events = require('events')
-const stableMode = false
-
-let mylist = {}
-module.exports = class MusicServers extends events.EventEmitter {
- constructor () {
- super()
- this.servers = new Map()
- }
-
- new (gID, channel) {
- this.servers.set(gID, new Server(gID))
- let here = this._(gID)
- this.emit(`${gID}_add`, here)
- if (channel) here._(channel)
- return here
- }
-
- _ (gID, channel) {
- let res = this.servers.get(gID)
- if (!res) {
- this.new(gID, channel)
- return this._(gID)
- }
- return res
- }
-
- set (gID, c, channel) {
- if (!c || c.name !== 'Server') return
- this.servers.set(gID, c)
- if (channel) this._(gID).join(channel)
- }
-}
-
-class Server extends events.EventEmitter {
- constructor (gID) {
- super()
- this.gID = gID
- this.conn = null
- this.dispatcher = null
- this.skipSafe = false
- this.volume = 1
- this.repeat = false
- this.random = false // un used variable
- this.playing = false
- this.currentSong = null
- this.songs = []
- this.stableMode = stableMode // Read-only
- }
-
- async _ (channel) {
- if (!channel) return this.emit('notChannel')
- if (this.conn) return this.emit('alreadyJoined')
- this.conn = await channel.join()
- }
-
- start () {
- if (!this.conn) return
- if (!this.playing) this.play(this.songs.shift())
- }
-
- play (song) {
- if (!this.conn || !song) return
- if (this.repeat) this.songs.push(song)
- this.emit('playing', song)
- this.playing = true
- this.skipSafe = false
- this.currentSong = song
- this.dispatcher = stableMode
- ? this.conn.playFile(song.path)
- : this.conn.playStream(
- ytdl(song.url, { filter: 'audioonly', quality: 'highestaudio' })
- )
- this.dispatcher.setVolume(this.volume)
-
- this.dispatcher.on('error', err => {
- this.emit('error', err)
- this.songs = [this.currentSong].concat(this.songs)
- this.skip()
- })
-
- this.dispatcher.on('end', () => {
- this.playing = false
- if (this.skipSafe) {
- this.skipSafe = false
- return this.stop()
- }
-
- if (this.songs.length > 0) this.play(this.songs.shift())
- else this.stop()
- })
- }
-
- pause () {
- if (this.dispatcher) { this.dispatcher[this.dispatcher.paused ? 'resume' : 'pause']() }
- }
-
- fix (channel) {
- if (!channel) return
- if (this.currentSong) this.songs = [this.currentSong].concat(this.songs)
- this.playing = false
- this.leave()
- this._(channel)
- this.start()
- }
-
- skip () {
- if (this.dispatcher) this.dispatcher.end()
- }
-
- stop (cb) {
- if (this.dispatcher) {
- this.skipSafe = true
- this.dispatcher.end()
- delete this.dispatcher
- }
-
- if (cb) cb()
- }
-
- setVolume (vol) {
- this.emit('changeVol', this.volume, vol)
- this.volume = vol
- if (this.dispatcher) this.dispatcher.setVolume(vol)
- }
-
- add (url, isMyList) {
- const song = new Song(url)
- if (!isMyList) this.emit('addSong', song)
- this.songs.push(song)
- }
-
- leave () {
- if (this.conn) this.disconnect()
- }
-
- disconnect () {
- if (!this.conn) return
- this.skipSafe = true
- this.conn.disconnect()
- delete this.conn
- }
-
- mylist (lID) {
- let myList = mylist[lID]
- this.emit('myList', myList)
- if (myList) {
- myList.forEach(v => {
- this.add(v, true)
- })
- }
- }
-}
-
-class Song {
- constructor (url) {
- this.url = url
- this.title = null
- this.length = null
- this.vID = null
- this.thumbnail = null
- this.path = null
- ytdl.getInfo(url).then(inf => {
- this.title = inf.title
- this.length = inf.length_seconds
- this.vID = inf.video_id
- this.thumbnail = inf.thumbnail_url
- if (!stableMode) return
- this.path = `./stream/${this.vID}.mp3`
- if (!fs.existsSync(this.path)) {
- ytdl(url, { filter: 'audioonly', quality: 'highestaudio' }).pipe(
- fs.createWriteStream(this.path)
- )
- }
- })
- }
-}
diff --git a/classes/search.js b/classes/search.js
deleted file mode 100644
index b867a69..0000000
--- a/classes/search.js
+++ /dev/null
@@ -1,82 +0,0 @@
-const request = require('request')
-
-const apiUrl = 'https://www.googleapis.com/youtube/v3/search'
-const method = 'GET'
-
-module.exports = class YoutubeSearcher {
- constructor (key) {
- this.apiKey = key
- this.part = 'id'
- this.params = {}
- this.allowParams = [
- 'channelId',
- 'channelType',
- 'eventType',
- 'onBehalfOfContentOwner',
- 'order',
- 'pageToken',
- 'publishedAfter',
- 'publishedBefore',
- 'regionCode',
- 'safeSearch',
- 'topicId',
- 'type',
- 'videoCaption',
- 'videoCategoryId',
- 'videoDefinition',
- 'videoDimension',
- 'videoDuration',
- 'videoEmbeddable',
- 'videoLicense',
- 'videoSyndicated',
- 'videoType'
- ]
- this.allowParts = ['id', 'snippet']
- }
-
- addParam (t, v) {
- if (!t || !this.allowParams.includes(t)) return
- this.params[t] = v
- return this
- }
-
- setPart (v) {
- if (!v || !this.allowParts.includes(v)) return
- this.part = v
- return this
- }
-
- _ (q, c, cb) {
- if (cb) return this.search(q, c, cb)
- else return this.promiseSearch(q, c)
- }
-
- search (q, c, cb, pRes, pRej) {
- this.params['q'] = q
- this.params['key'] = this.apiKey
- this.params['part'] = this.part
- this.params['maxResults'] = c || 5
- let temp = new URL(apiUrl)
-
- Object.keys(this.params).forEach(k => {
- temp.searchParams.append(k, this.params[k])
- })
-
- request(temp.href, { method: method, timeout: 1000 }, (err, res) => {
- res = JSON.parse(res.body)
- pRej && pRes
- ? err
- ? pRej(err)
- : pRes(res)
- : cb
- ? cb(err, res)
- : console.log('자네 "_" 메서드를 사용하지 않겠나?')
- })
- }
-
- promiseSearch (q, c) {
- return new Promise((resolve, reject) => {
- this.search(q, c, null, resolve, reject)
- })
- }
-}
diff --git a/classes/seoa.js b/classes/seoa.js
deleted file mode 100644
index e9aea79..0000000
--- a/classes/seoa.js
+++ /dev/null
@@ -1,34 +0,0 @@
-const Discord = require('discord.js')
-const LMusic = require('./music_lavalink')
-const Music = require('./music_native')
-const { PlayerManager } = require('discord.js-lavalink')
-
-module.exports = class Seoa extends Discord.Client {
- constructor (config, db) {
- super()
- this.settings = config
- this.db = db || null
- this.m = new Music()
- this.lm = new LMusic(this)
- this.commands = new Discord.Collection()
- this.player
-
- this.on('guildCreate', guild => {
- if (this.db) return this.db.update('serverdata', { owner: guild.ownerID }, { id: guild.id })
- })
-
- this.on('guildDelete', guild => {
- if (this.db) return this.db.update('serverdata', { owner: guild.ownerID }, { id: guild.id })
- })
-
- this.login(config.token)
- }
-
- ready () {
- if (this.player) return
- this.player = new PlayerManager(this, this.settings.nodes, {
- user: this.user.id,
- shards: 0
- }, { selfdeaf: false, selfmute: false })
- }
-}
\ No newline at end of file
diff --git a/commands/dev.js b/commands/dev.js
deleted file mode 100644
index 5b5b4fa..0000000
--- a/commands/dev.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * @name Seoa:Dev
- * @description Developer evaluation command
- */
-
-/** Message */
-const i18n = require('i18n')
-
-exports.run = async (seoa, msg, query) => {
- let server = await seoa.db.select('serverdata', { id: msg.guild.id })
- server = server[0]
- if (seoa.settings.owners.includes(msg.author.id)) {
- try {
- // eslint-disable-next-line
- eval(query.args.join(' '))
- } catch (error) {
- msg.channel.send(error)
- }
- } else {
- msg.channel.send(
- i18n.__({ phrase: '403', locale: server.lang })
- )
- }
-}
-
-exports.callSign = ['dev', 'eval']
\ No newline at end of file
diff --git a/commands/help.js b/commands/help.js
deleted file mode 100644
index d91d2eb..0000000
--- a/commands/help.js
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * @name Seoa:helps
- * @description Help Command
- */
-
-const commands = require('./')
-const locale = {
- en: require('../locales/en.json'),
- kor: require('../locales/kor.json'),
- pt: require('../locales/pt.json')
-}
-
-exports.run = async (seoa, msg) => {
- let server = await seoa.db.select('serverdata', { id: msg.guild.id })
- server = server[0]
- const help = {
- fields: [
- {
- name: locale[server.lang].CommandBook,
- value: locale[server.lang].Prefix + ' >'
- }
- ],
- description: locale[server.lang].BETAMSG
- }
-
- let keys = Object.keys(commands)
- for (k of keys) {
- if (commands[k].helps) help.fields.push({
- name: commands[k].helps.description,
- value: '> ' + commands[k].helps.uses,
- inline: true
- })
-
- if (keys.length === keys.indexOf(k) + 1) {
- msg.channel.send(locale[server.lang].DMSEND)
- msg.author.send({ embed: help })
- }
- }
-}
-
-exports.callSign = ['help', 'Help', '도움', '도움말']
-exports.helps = {
- description: '도움말을 보여줍니다',
- uses: 'help'
-}
diff --git a/commands/index.js b/commands/index.js
deleted file mode 100644
index c87a5d9..0000000
--- a/commands/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/** Default */
-module.exports.help = require('./help')
-module.exports.invite = require('./invite')
-module.exports.ping = require('./ping')
-
-/** Quiz */
-module.exports.leaderboard = require('./leaderboard')
-module.exports.point = require('./point')
-module.exports.quiz = require('./quiz')
-
-/** Music */
-module.exports.lm = require('./m_lavalink')
-module.exports.m = require('./m_native')
-
-/** Owner */
-module.exports.notice = require('./notice')
-module.exports.dev = require('./dev')
-
-/** Admin */
-module.exports.settings = require('./settings')
\ No newline at end of file
diff --git a/commands/invite.js b/commands/invite.js
deleted file mode 100644
index 80a5f53..0000000
--- a/commands/invite.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * @name Seoa:Invite
- * @description Bot Invite Command
- */
-
-/** Message */
-const i18n = require('i18n')
-
-exports.run = async (seoa, msg) => {
- let server = await seoa.db.select('serverdata', { id: msg.guild.id })
- server = server[0]
- const invite = {
- description: i18n.__({
- phrase: 'Invite',
- locale: server.lang
- })
- }
- msg.channel.send({ embed: invite }).then((err) => console.log(err))
-}
-
-exports.callSign = ['invite', '봇초대링크', '초대링크', 'Invite']
-exports.helps = {
- description: '초대링크를 줍니다',
- uses: 'invite'
-}
diff --git a/commands/join.js b/commands/join.js
deleted file mode 100644
index d4b8927..0000000
--- a/commands/join.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * @name Seoa:Join
- * @description Voice Join
- */
-
-exports.run = (seoa, msg) => {
- let channel = msg.member.voiceChannel
- let here = seoa.m._(msg.guild.id)
- if (channel) here.join(channel)
- else return
-}
-
-exports.callSign = ['들어와', 'join', '들어오기']
-exports.helps = {
- description: '보이스 채널에 들어옵니다',
- uses: 'join'
-}
diff --git a/commands/leaderboard.js b/commands/leaderboard.js
deleted file mode 100644
index 7b80e09..0000000
--- a/commands/leaderboard.js
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * @name Seoa:settings
- * @description settings Command
- * @Thank https://stackoverflow.com/questions/37817334/javascript-bubble-sort
- */
-
-// i18n (locale)
-const i18n = require('i18n')
-i18n.configure({
- directory: './locales'
-})
-
-function bubble (arr) {
- var len = arr.length
- for (var i = 0; i < len; i++) {
- for (var j = 0; j < len - i - 1; j++) {
- if (arr[j].quizPoint < arr[j + 1].quizPoint) {
- const temp = arr[j]
- arr[j] = arr[j + 1]
- arr[j + 1] = temp
- }
- }
- }
- return arr
-}
-
-exports.run = async (seoa, msg, query) => {
- let server = await seoa.db.select('serverdata', { id: msg.guild.id })
- server = server[0]
- const users = await seoa.db.select('userdata')
- let arr = []
-
- for (const user in users) arr.push(user)
- arr = bubble(arr).slice(0, parseInt(query.args[1]) || 20)
-
- let temp =
- '```fix\n' +
- i18n.__({
- phrase: 'LeaderBoardMsg',
- locale: server.lang
- }) +
- '\n'
- arr.forEach((leader, th) => {
- temp += i18n.__(
- {
- phrase: 'LeaderBoardMsg1',
- locale: server.lang
- },
- th + 1,
- seoa.users.find(u => u.id === leader.id).username,
- leader.quizPoint
- )
- })
- temp += '```'
- msg.channel.send(temp)
-}
-
-exports.callSign = ['leader', 'leaderboard', '리더보드', '리더', '보드']
-exports.helps = {
- description: '리더보드를 보여줍니다',
- uses: 'leaderboard'
-}
diff --git a/commands/leave.js b/commands/leave.js
deleted file mode 100644
index 980f15d..0000000
--- a/commands/leave.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * @name Seoa:Leave
- * @description Voice Leave
- */
-
-/** Message */
-const i18n = require('i18n')
-
-exports.run = async (seoa, msg, settings) => {
- let server = await seoa.db.select('serverdata', { id: msg.guild.id })
- server = server[0]
- if (msg.guild.voiceConnection) {
- // TODO: LEAVE 에러 고치기
- msg.member.voiceChannel.leave()
- msg.channel.send(
- i18n.__({ phrase: 'Leave', locale: server.lang })
- )
- }
-}
-
-exports.callSign = ['나가기', 'leave']
-exports.helps = {
- description: '음성 채널을 나갑니다',
- uses: 'leave'
-}
diff --git a/commands/m_lavalink.js b/commands/m_lavalink.js
deleted file mode 100644
index ca1d425..0000000
--- a/commands/m_lavalink.js
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * @name Seoa:Music
- * @description Music
- */
-
-exports.run = async (seoa, msg, query) => {
- if (!seoa.settings.owners.includes(msg.author.id)) return
- /** 이벤트 중복 등록 방지 */
- seoa.ready()
- if (!seoa.lm.servers.hasOwnProperty(msg.guild.id)) {
- seoa.lm.once(`${msg.guild.id}_add`, _here => {
- _here.on('playing', song => {
- msg.reply(JSON.stringify(song))
- })
-
- _here.on('alreadyJoined', () => {
- msg.reply('이미 접속했대')
- })
-
- _here.on('notChannel', () => {
- msg.reply('니 채널에 없대')
- })
-
- _here.on('addSong', song => {
- msg.reply(JSON.stringify(song))
- })
-
- _here.on('changeVol', (bef, aft) => {
- msg.reply(`${bef}% => ${aft}%`)
- })
- })
- }
-
- let here = seoa.lm._(msg.guild.id, msg.member.voiceChannel)
- switch (query.args[0]) {
- case 'join':
- here._(msg.member.voiceChannel)
- break
- case 'leave':
- here.leave()
- break
- case 'search':
- if (!query.args[1]) return
- here.getSongs(`ytsearch: ${query.args.splice(1).join(' ')}`).then(song => {
- if (song[0]) here.add(song[0])
- })
- here.start()
- break
- case 'play':
- here.start()
- break
- case 'vol':
- if (Number(query.args[1])) here.setVolume(Number(query.args[1]))
- break
- case 'seek':
- if (Number(query.args[1])) here.seek(Number(query.args[1]))
- break
- case 'stop':
- here.stop()
- break
- case 'skip':
- here.skip()
- break
- case 'mylist':
- if (query.args[1]) here.mylist(query.args[1])
- break
- default:
- msg.reply('join, leave, url [URL], play, vol [PERCENTAGE], stop, skip')
- }
-}
-
-exports.callSign = ['lm']
-exports.helps = {
- description: '음악과 관련된 명령어 입니다. (사용 불가)',
- uses: 'lm'
-}
diff --git a/commands/m_native.js b/commands/m_native.js
deleted file mode 100644
index 143b60d..0000000
--- a/commands/m_native.js
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * @name Seoa:Music
- * @description Music
- */
-
-exports.run = (seoa, msg, query) => {
- /** 이벤트 중복 등록 방지 */
- if (!seoa.m.servers.has(msg.guild.id)) {
- seoa.m.once(`${msg.guild.id}_add`, _here => {
- _here.on('playing', song => {
- msg.reply(JSON.stringify(song))
- })
-
- _here.on('alreadyJoined', () => {
- msg.reply('이미 접속했대')
- })
-
- _here.on('notChannel', () => {
- msg.reply('니 채널에 없대')
- })
-
- _here.on('addSong', song => {
- msg.reply(JSON.stringify(song))
- })
-
- _here.on('changeVol', (bef, aft) => {
- msg.reply(`${bef * 100}% => ${aft * 100}%`)
- })
- })
- }
-
- let here = seoa.m._(msg.guild.id, msg.member.voiceChannel)
- switch (query.args[0]) {
- case 'join':
- here._(msg.member.voiceChannel)
- break
- case 'leave':
- here.leave()
- break
- case 'url':
- if (!query.args[1]) return
- here.add(query.args[1])
- here.start()
- break
- case 'play':
- here.start()
- break
- case 'vol':
- if (query.args[1] && Number(query.args[1])) here.setVolume(Number(query.args[1]) / 100)
- break
- case 'stop':
- here.stop()
- break
- case 'skip':
- here.skip()
- break
- case 'fix':
- here.fix(msg.member.voiceChannel)
- break
- case 'mylist':
- if (query.args[1]) here.mylist(query.args[1])
- break
- default:
- msg.reply('join, leave, url [URL], play, vol [PERCENTAGE], stop, skip')
- }
-}
-
-exports.callSign = ['m']
-exports.helps = {
- description: '음악과 관련된 명령어 입니다.',
- uses: 'm'
-}
diff --git a/commands/notice.js b/commands/notice.js
deleted file mode 100644
index 110d773..0000000
--- a/commands/notice.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * @name Seoa:Notice
- * @description Notice Command
- */
-
-const i18n = require('i18n')
-
-exports.run = async (seoa, msg, query) => {
- let server = await seoa.db.select('serverdata', { id: msg.guild.id })
- server = server[0]
- if (seoa.settings.owners.includes(msg.author.id)) {
- seoa.guilds.forEach((guild) => {
- if (seoa.settings.servers[guild.id].channelnoticeid === '') {
- // 서버장에게 전송
- // guild.owner.send('<@' + guild.ownerID + '> 공지 채널 설정이 되지 않았습니다!\n> 서버장에게 공지를 전송합니다.\n\n' + query.args[0].toLowerCase())
- } else {
- /* 설정된 채널로 보내기 */
- if (guild.channels.get(seoa.settings.servers[guild.id].channelnoticeid)) {
- guild.channels
- .get(seoa.settings.servers[guild.id].channelnoticeid)
- .send(query.message.slice(query.command.length + 1))
- }
- // console.log(guild.channels.get(seoa.settings.servers[guild.id].channelnoticeid))
- }
- })
- } else {
- msg.reply(
- i18n.__({ phrase: '404', locale: server.lang })
- )
- }
-}
-
-exports.callSign = ['notice', '공지']
diff --git a/commands/ping.js b/commands/ping.js
deleted file mode 100644
index cdc92bf..0000000
--- a/commands/ping.js
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * @name Seoa:Ping
- * @description Seoa's ping command
- */
-
-/** Message */
-const i18n = require('i18n')
-const { RichEmbed } = require('discord.js')
-
-exports.run = async (seoa, msg) => {
- let pp = await msg.channel.send('Calculating...')
- let msgp = i18n.__({
- phrase: 'msgping',
- locale: seoa.settings.servers[msg.guild.id].lang
- })
-
- let p = i18n.__({
- phrase: 'ping',
- locale: seoa.settings.servers[msg.guild.id].lang
- })
-
- let api = i18n.__({
- phrase: 'APIPING',
- locale: seoa.settings.servers[msg.guild.id].lang
- })
-
- let pingembed = new RichEmbed()
- .setTitle(p)
- .setColor('RANDOM')
- .setDescription(`${msgp} ${pp.createdTimestamp - msg.createdTimestamp}ms\n${api} ${Math.round(seoa.ping)}ms`)
- .setFooter(msg.author.username, msg.author.avatarURL)
- .setTimestamp()
-
- pp.edit(pingembed)
-}
-
-exports.callSign = ['ping', '핑', '퐁', 'pong', 'pn']
-exports.helps = {
- description: '봇의 핑을 보여줍니다.',
- uses: 'ping'
-}
diff --git a/commands/play.js b/commands/play.js
deleted file mode 100644
index 9682085..0000000
--- a/commands/play.js
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * @name Seoa:Play
- * @description Music Player by YouTube & Spotify & SoundCloud & Music File & Others
- */
-
-const i18n = require('i18n')
-
-const ytdl = require('ytdl-core')
-
-exports.run = async (seoa, msg) => {
- let server = await seoa.db.select('serverdata', { id: msg.guild.id })
- server = server[0]
- const targetUrl = msg.content.split(' ')[1]
- try {
- if (
- msg.content.includes('youtube.com') ||
- msg.content.includes('youtu.be')
- ) {
- if (msg.member.voiceChannel) {
- if (!msg.guild.voiceConnection) {
- msg.member.voiceChannel.join()
- }
- msg.guild.voiceConnection.playStream(
- ytdl(targetUrl, { audioonly: true }),
- { volume: 0.5 }
- )
- } else {
- msg.channel.send(
- i18n.__({
- phrase: 'NOTJOIN',
- locale: server.lang
- })
- )
- }
- } else if (msg.content.includes('soundcloud')) {
- } else if (msg.content.includes('spotify')) {
- } else if (msg.content.includes('')) {
- if (msg.member.voiceChannel) {
- if (!msg.guild.voiceConnection) {
- msg.member.voiceChannel.join()
- }
- msg.guild.voiceConnection.playStream(
- msg.attachments.map((v) => v.url),
- { audioonly: true },
- { volume: 0.5 }
- )
- } else {
- msg.channel.send(
- i18n.__({
- phrase: 'NOTJOIN',
- locale: server.lang
- })
- )
- }
- }
- } catch (e) {
- // console.log(URLSearchParams(e))
- msg.channel.send(
- i18n.__({
- phrase: 'NOTURL',
- locale: server.lang
- })
- )
- }
-}
-
-exports.callSign = ['플렝', '노래', '시작', 'play']
-exports.helps = {
- description: '노래를 재생해드릴께요~',
- uses: 'play'
-}
diff --git a/commands/point.js b/commands/point.js
deleted file mode 100644
index a7ac288..0000000
--- a/commands/point.js
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- * @name Seoa:helps
- * @description Help Command
- */
-exports.run = () => {}
-exports.callSign = ['quiz point', '퀴즈 포인트']
-exports.helps = {
- description: '퀴즈 포인트를 볼 수 있습니다.',
- uses: 'quiz point'
-}
diff --git a/commands/quiz.js b/commands/quiz.js
deleted file mode 100644
index f6c7618..0000000
--- a/commands/quiz.js
+++ /dev/null
@@ -1,209 +0,0 @@
-/**
- * @name Seoa:Quiz
- * @description Quiz command
- */
-
-const QuizData = require('../QuizData/quizs.json')
-const discord = require('discord.js')
-
-const i18n = require('i18n')
-
-exports.run = async (seoa, msg) => {
- let server = await seoa.db.select('serverdata', { id: msg.guild.id })
- server = server[0]
- let user = await seoa.db.select('userdata', { id: msg.author.id })
- user = user[0]
- const msgArray = msg.content.split(' ')
- const filter = (reaction, user) =>
- (reaction.emoji.name === '⭕' || reaction.emoji.name === '❌') &&
- user.id === msg.author.id
-
- let quizNum
- if (msg.content.includes('point') || msg.content.includes('포인트')) {
- msg.channel.send(
- i18n.__(
- { phrase: 'PointMsg', locale: server.lang },
- user.quizPoint
- )
- )
- } else {
- if (!msgArray[1]) {
- quizNum = Math.floor(Math.random() * QuizData.length)
- /** } else {
- if (msgArray[1] < QuizData.length) {
- quizNum = Math.floor(msgArray[1])
- } else if ((QuizData.filter(quiz => quiz.language === msgArray[1])).length > 0) {
- const quizsFiltered = QuizData.filter(quiz => quiz.language === msgArray[1])
- quizNum = QuizData.indexOf(quizsFiltered[Math.floor(Math.random() * (quizsFiltered.length - 1))])
- } else {
- const quizNumberNotExist = new discord.RichEmbed()
- .setColor(0xff0000)
- .addField('퀴즈 No. ' + msgArray[1] + '(을)를 찾을 수 없습니다.', '퀴즈는 No. ' + (QuizData.length - 1) + '까지만 등록되어 있습니다.')
- return msg.channel.send(quizNumberNotExist)
- }
- } */
- const quizEmbed = new discord.RichEmbed()
- .setColor('#0000ff')
- .setAuthor(
- i18n.__(
- { phrase: 'QUIZ2', locale: server.lang },
- msg.author.username
- ),
- msg.author.displayAvatarURL
- )
- .setTitle('Quiz No.' + quizNum)
- .addField(
- 'Q. ' +
- QuizData[quizNum].question.replace(
- '{username}',
- msg.author.username
- ),
- i18n.__({
- phrase: 'min',
- locale: server.lang
- })
- )
- if (QuizData[quizNum].image) {
- quizEmbed.setImage(QuizData[quizNum].image)
- }
- msg.channel.send(quizEmbed).then((th) => {
- if (Math.floor(Math.random() * 1)) {
- th.react('⭕')
- setTimeout(() => {
- th.react('❌')
- }, 1000)
- } else {
- th.react('❌')
- setTimeout(() => {
- th.react('⭕')
- }, 1000)
- }
- th.awaitReactions(filter, {
- time: 60000,
- max: 1
- }).then((collected) => {
- if (!collected.array()[0]) {
- const quizFailByLate = new discord.RichEmbed()
- .setColor('#808080')
- .setDescription(
- i18n.__({
- phrase: 'QUIZMSG1',
- locale: server.lang
- })
- )
- .setAuthor(
- i18n.__(
- {
- phrase: 'Over',
- locale: server.lang
- },
- msg.author.username
- ),
- msg.author.displayAvatarURL
- )
- .setTitle('Quiz No.' + quizNum)
- .addField(
- 'Q. ' +
- QuizData[quizNum].question.replace(
- '{username}',
- msg.author.username
- ),
- '**A.** ' + QuizData[quizNum].explanation
- )
- if (QuizData[quizNum].image) {
- quizFailByLate.setImage(QuizData[quizNum].image)
- }
- th.edit(quizFailByLate)
- user.quizPoint--
- seoa.db.update('userdata', { quizPoint: user.quizPoint }, { id: msg.author.id })
- } else {
- let Quizanswer
- if (QuizData[quizNum].answer === true) {
- Quizanswer = '⭕'
- } else if (QuizData[quizNum].answer === false) {
- Quizanswer = '❌'
- }
-
- // 맞았을 경우
- if (collected.array()[0].emoji.name === Quizanswer) {
- const quizCorrectEmbed = new discord.RichEmbed()
- .setColor('#00ff00')
- .setDescription(
- i18n.__({
- phrase: 'IS',
- locale: server.lang
- })
- )
- .setAuthor(
- i18n.__(
- {
- phrase: 'SUS',
- locale: server.lang
- },
- msg.author.username
- ),
- msg.author.displayAvatarURL
- )
- .setTitle('Quiz No.' + quizNum)
- .addField(
- 'Q. ' +
- QuizData[quizNum].question.replace(
- '{username}',
- msg.author.username
- ),
- '**A.** ' + QuizData[quizNum].explanation
- )
- if (QuizData[quizNum].image) {
- quizCorrectEmbed.setImage(QuizData[quizNum].image)
- }
- th.edit(quizCorrectEmbed)
- user.quizPoint++
- seoa.db.update('userdata', { quizPoint: user.quizPoint }, { id: msg.author.id })
- } else {
- // 틀렸을 경우
- const quizNotCorrectEmbed = new discord.RichEmbed()
- .setColor('#ff0000')
- .setDescription(
- i18n.__({
- phrase: 'PR',
- locale: server.lang
- })
- )
- .setAuthor(
- i18n.__(
- {
- phrase: 'NOTCORRECT',
- locale: server.lang
- },
- msg.author.username
- ),
- msg.author.displayAvatarURL
- )
- .setTitle('Quiz No.' + quizNum)
- .addField(
- 'Q. ' +
- QuizData[quizNum].question.replace(
- '{username}',
- msg.author.username
- ),
- '**A.** ' + QuizData[quizNum].explanation
- )
- if (QuizData[quizNum].image) {
- quizNotCorrectEmbed.setImage(QuizData[quizNum].image)
- }
- th.edit(quizNotCorrectEmbed)
- user.quizPoint--
- seoa.db.update('userdata', { quizPoint: user.quizPoint }, { id: msg.author.id })
- }
- }
- })
- })
- }
- }
-}
-
-exports.callSign = ['quiz', 'Quiz', '퀴즈']
-exports.helps = {
- description: '프로그래밍에 대한 퀴즈를 풀 수 있습니다.',
- uses: 'quiz'
-}
diff --git a/commands/search.js b/commands/search.js
deleted file mode 100644
index 170548c..0000000
--- a/commands/search.js
+++ /dev/null
@@ -1,102 +0,0 @@
-/**
- * @name Seoa:search
- * @description YouTube Search Command
- */
-
-const ytSearch = require('yt-search')
-const randomHexColor = require('random-hex-color')
-
-const i18n = require('i18n')
-
-exports.run = async (seoa, msg) => {
- /** Message Filter for .awaitMessages() */
- let server = await seoa.db.select('serverdata', { id: msg.guild.id })
- server = server[0]
- const filter = (m) => m.author.id === msg.author.id
-
- msg.channel
- .send(
- i18n.__({
- phrase: 'YOUTUBEDEVMSG',
- locale: server.lang
- })
- )
- .then((m) => {
- msg.channel
- .awaitMessages(filter, {
- max: 1,
- time: 60000
- })
- .then((collect) => {
- if (!collect.first()) {
- m.edit(
- i18n.__({
- phrase: 'Corrent',
- locale: server.lang
- })
- )
- m.delete(2000)
- } else {
- ytSearch(collect.first().content, (err, res) => {
- if (err) m.channel.send(err)
-
- const embed = {
- color: parseInt(randomHexColor().substring(1), 16),
- title:
- "'" +
- i18n.__(
- {
- phrase: 'search',
- locale: server.lang
- },
- collect.first().content.slice(0, 200)
- ),
- fields: []
- }
- res.videos.slice(0, 10).forEach((video, index) => {
- embed.fields.push({
- name: index + 1 + '. ' + video.title,
- value: i18n.__(
- {
- phrase: 'view',
- locale: server.lang
- },
- video.url,
- video.duration,
- video.ago,
- video.views
- )
- })
- })
- m.edit({ embed })
- msg.channel
- .awaitMessages(filter, {
- max: 1,
- time: 60000
- })
- .then((collect2) => {
- if (!collect2.first()) {
- m.edit(
- i18n.__({
- phrase: 'Corrent',
- locale: server.lang
- })
- )
- m.delete(2000)
- } else {
- if (collect2) {
- // None
- }
- }
- })
- })
- }
- })
- })
-}
-
-exports.callSign = ['search', '검색']
-exports.helps = {
- description: 'YouTube에서 검색합니다',
- uses: 'search'
-}
diff --git a/commands/settings.js b/commands/settings.js
deleted file mode 100644
index 74ece91..0000000
--- a/commands/settings.js
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * @name Seoa:settings
- * @description settings Command
- */
-
-const i18n = require('i18n')
-
-exports.run = async (seoa, msg, query) => {
- let server = await seoa.db.select('serverdata', { id: msg.guild.id })
- server = server[0]
- if (msg.member.hasPermission('ADMINISTRATOR')) {
- if (query.args[0]) {
- if (['lang', '언어'].includes(query.args[0].toLowerCase())) {
- if (
- !(
- query.args[1] === 'kor' ||
- query.args[1] === 'en' ||
- query.args[1] === 'pt'
- )
- ) {
- seoa.db.update('serverdata', { lang: server.en }, { id: msg.guild.id })
- msg.channel.send(
- i18n.__({
- phrase: 'ENMSG',
- locale: server.lang
- })
- )
- } else {
- seoa.db.update('serverdata', { lang: query.args[1] }, { id: msg.guild.id })
- msg.channel.send(
- i18n.__(
- { phrase: 'Lang', locale: server.lang },
- query.args[1]
- )
- )
- }
- } else if (['channel', '채널'].includes(query.args[0].toLowerCase())) {
- seoa.db.update('serverdata', { channelnoticeid: msg.mentions.channels.firstKey() }, { id: msg.guild.id })
- msg.channel.send(
- i18n.__({ phrase: 'su', locale: server.lang })
- )
- }
- } else {
- msg.channel.send(
- i18n.__({ phrase: 'ch', locale: server.lang })
- )
- }
- } else {
- msg.channel.send(
- i18n.__({ phrase: 'MISS', locale: server.lang })
- )
- }
-}
-
-exports.callSign = ['settings', 'setting', '설정']
-exports.helps = {
- description: '서버 설정을 합니다.',
- uses: 'settings'
-}
diff --git a/config.example.json b/config.example.json
deleted file mode 100644
index e90450a..0000000
--- a/config.example.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "token": "",
- "prefix": ">",
- "commands": "./commands",
- "activity": "Awesome Musics & Quizs | >help",
- "owners": ["527746745073926145", "309230935377707011", "403025222921486338",
- "487912605273423883", "526958314647453706", "119550317003014144",
- "393674169243402240", "420919892636598272"],
-
- "nodes": [
- { "host": "localhost", "port": 2333, "password": "youshallnotpass" }
- ]
-}
\ No newline at end of file
diff --git a/config.inc.json b/config.inc.json
new file mode 100644
index 0000000..e24ae94
--- /dev/null
+++ b/config.inc.json
@@ -0,0 +1,37 @@
+{
+ "prefix": ">",
+ "token": "",
+ "activity": "<[prefix]>help",
+ "owners": [""],
+ "debug": false,
+
+ "path": {
+ "library": "./lib",
+ "classes": "<[path.library]>/classes",
+ "commandsOrigin": "<[path.library]>/commands",
+ "events": "<[path.library]>/events",
+ "languages": "<[path.library]>/languages"
+ }, "localPolicy": {
+ "music": {
+ "volumeLimit": true
+ }
+ }, "mysql": {
+ "enable": false,
+ "host": "localhost",
+ "port": 3306,
+ "user": "root",
+ "pass": "password",
+ "database": "seoa",
+ "charset": "utf8mb4"
+ }, "api": {
+ "youtube": {
+ "enable": false,
+ "clientID": ""
+ }
+ }, "music": {
+ "useNative": true,
+ "lavalinkNodes": [
+ { "host": "localhost", "port": 2333, "password": "seoabot" }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/index.js b/index.js
new file mode 100644
index 0000000..88fa3a6
--- /dev/null
+++ b/index.js
@@ -0,0 +1,4 @@
+const Seoa = require('./seoa')
+const config = require('./config')
+// eslint-disable-next-line no-new
+new Seoa(config)
diff --git a/lavalink/Lavalink.jar b/lavalink/Lavalink.jar
index 8369bb4..ab8ca36 100644
Binary files a/lavalink/Lavalink.jar and b/lavalink/Lavalink.jar differ
diff --git a/lib/classes/getinf.js b/lib/classes/getinf.js
new file mode 100644
index 0000000..85a6549
--- /dev/null
+++ b/lib/classes/getinf.js
@@ -0,0 +1,101 @@
+/**
+ * GetInfos
+ * @class GetInfos
+ * @author UnderC
+ */
+class GetInfos {
+ /**
+ * @param {DB} db umysql 모듈로 만들어진 DB 커넥션
+ * @param {String} userTable user 정보가 들어있는 테이블 이름
+ * @param {String} serverTable guild 정보가 들어있는 테이블 이름
+ * @param {String} myListTable 마이리스트 정보가 들어있는 테이블 이름
+ * @param {String} customTable 커스텀 커맨드 정보가 들어있는 테이블 이름
+ */
+ constructor (db, userTable, serverTable, myListTable, customTable) {
+ if (!db) throw new Error()
+ this.db = db
+ this.u = userTable
+ this.s = serverTable
+ this.m = myListTable
+ this.c = customTable
+ }
+
+ /**
+ * @param {String} table 테이블 이름
+ * @param {Object} a 찾으려는 데이터
+ * @param {Object} b 찾지 못하면 삽입할 데이터
+ * @param {Boolean} assignBoth a와 b를 병합해서 삽입할 지 여부
+ * @param {Array[Boolean]} COS Call On Self (해당 클래스에서 호출 여부)
+ */
+ async getIns (table, a, b, assignBoth, COS = [false, false]) {
+ const dat = await this.db.select(table, a)
+ if (!dat) throw new Error()
+ else if (!dat[0]) {
+ this.db.insert(table, b ? (assignBoth ? a.assign(b) : b) : a)
+ return this.getIns(table, a, null, null, [true, false])
+ }
+
+ return COS[0] ? dat[0] : [(COS[1] || !!dat[0]), dat[0]]
+ }
+
+ /**
+ * @param {String} u 찾으려는 user의 아이디
+ * @returns {Object} user의 정보
+ */
+ getUser (u) {
+ return this.getIns(this.u, { id: u.id }, null, false, [true, false])
+ }
+
+ /**
+ * @param {String} s 찾으려는 guild의 아이디
+ * @returns {Object} guild의 정보
+ */
+ getGuild (s) {
+ return this.getIns(this.s, { id: s.id }, { owner: s.ownerID }, true, [true, false])
+ }
+
+ /**
+ * @param {String} n 찾으려는 마이리스트 이름
+ * @returns {MyList} 마이리스트 정보
+ */
+ async getMyList (n) {
+ const temp = await this.db.select(this.m, { name: n })
+ return temp[0] ? new MyList({ db: this.db, table: this.m }, temp[0]) : false
+ }
+}
+
+class MyList {
+ constructor (db, m) {
+ if (!m) throw new Error()
+ this.db = db.db
+ this.table = db.table
+ this.id = m.id
+ this.name = m.name
+ this.list = JSON.parse(m.list.split('\'').join('"'))
+ this.author = m.author
+ }
+
+ add (id) {
+ if (!id || (typeof id) !== 'string') return false
+ this.list.push(id)
+ return this.update()
+ }
+
+ update () {
+ this.db.update(this.table, { list: JSON.stringify(this.list).split('"').join('\'') }, { id: this.id })
+ return this
+ }
+
+ del (id) {
+ if (!id) return
+ const index = (typeof id) === 'number'
+ ? (this.list.length <= id ? false : id)
+ : ((typeof id) === 'string' ? this.list.indexOf(id) : false)
+ if ((typeof index) === 'number' && index >= 0) this.list.splice(index, 1)
+ else return false
+ return this.update()
+ }
+}
+
+module.exports = GetInfos
+module.exports.MyList = MyList
diff --git a/lib/classes/index.js b/lib/classes/index.js
new file mode 100644
index 0000000..fe62fdb
--- /dev/null
+++ b/lib/classes/index.js
@@ -0,0 +1,3 @@
+/** Reload 편의성을 위해 Key 값과 파일 이름을 동일하게 맞춰주세요 */
+module.exports.Search = require('./search')
+module.exports.GetInf = require('./GetInf')
diff --git a/lib/classes/search.js b/lib/classes/search.js
new file mode 100644
index 0000000..b09e8ed
--- /dev/null
+++ b/lib/classes/search.js
@@ -0,0 +1,112 @@
+const ytsr = require('ytsr')
+
+/**
+ * YoutubeSearcher
+ * @class YoutubeSearcher
+ */
+class YoutubeSearcher {
+ addParam () {
+ return this
+ }
+
+ setPart () {
+ return this
+ }
+
+ /**
+ * @param {String} q 유튜브에 검색할 검색어
+ * @param {Number} c 검색할 갯수
+ * @param {?Function} cb 콜백
+ * @returns {Promise | undefined} 검색 결과 Promise 또는 없음 (콜백이 없는 경우 Promise로 반환)
+ */
+ _ (q, c, cb) {
+ if (cb) return this.search(q, c, cb)
+ else return this.promiseSearch(q, c)
+ }
+
+ makeModel (temp) {
+ const res = []
+ temp.items.forEach(item => {
+ /*
+ this.url = inf.info.uri
+ this.title = inf.info.title
+ this.author = inf.info.author
+ this.length = inf.info.length / 1000
+ this.vID = inf.info.identifier
+ this.track = inf.track
+ ytdl.getBasicInfo(this.url).then(inf => {
+ this.thumbnail = inf.player_response.videoDetails.thumbnail.thumbnails[3].url
+ })
+ */
+ const durations = item.duration.split(':').map(v => Number(v))
+ const duration = (durations[0] * 60 + durations[1]) * 1000
+ const videoID = item.link.replace('https://www.youtube.com/watch?v=', '')
+ res.push({
+ id: { videoId: videoID },
+ info: {
+ uri: item.link,
+ title: item.title,
+ duration: duration,
+ vID: videoID,
+ player_response: {
+ videoDetails: {
+ thumbnail: {
+ thumbnails: [null, null, null, {
+ url: item.thumbnail
+ }]
+ }
+ }
+ }
+ }
+ })
+ })
+ console.log(temp)
+ console.log(res)
+ return { items: res }
+ }
+
+ errHandler (err, pRej) {
+ if (err) {
+ if (!pRej) throw err
+ pRej(err)
+ }
+ }
+
+ /**
+ * @param {String} q 유튜브에 검색할 검색어
+ * @param {Number} c 검색할 갯수
+ * @param {?Function} cb 콜백
+ * @param {?Function} pRes Promise Resolve Function
+ * @param {?Function} pRej Promise Reject Function
+ * @returns {undefined} 콜백 또는 Promise Function를 통하여 검색 결과가 리턴됩니다.
+ */
+ search (q, c, cb, pRes, pRej) {
+ ytsr.getFilters(q, (err, filters) => {
+ this.errHandler(err, pRej)
+ const filter = filters.get('Type').find(o => o.name === 'Video')
+ ytsr.getFilters(filter.ref, (err, filters) => {
+ this.errHandler(err, pRej)
+ ytsr(null, { limit: c, nextpageRef: filter.ref }, (err, res) => {
+ this.errHandler(err, pRej)
+ cb ? cb(this.makeModel(res))
+ : pRes
+ ? pRes(this.makeModel(res))
+ : this.errHandler(new Error())
+ })
+ })
+ })
+ }
+
+ /**
+ * @param {String} q 유튜브에 검색할 검색어
+ * @param {Number} c 검색할 갯수
+ * @returns {Promise} 검색 결과
+ */
+ promiseSearch (q, c) {
+ return new Promise((resolve, reject) => {
+ this.search(q, c, null, resolve, reject)
+ })
+ }
+}
+
+module.exports = YoutubeSearcher
diff --git a/lib/commands/blacklist.js b/lib/commands/blacklist.js
new file mode 100644
index 0000000..d974456
--- /dev/null
+++ b/lib/commands/blacklist.js
@@ -0,0 +1,23 @@
+const Model = require('./model')
+const addAlias = ['add', 'create', 'push', '추가', 'assign', 'assignment', '등록']
+const delAlias = ['del', 'remove', 'delete', '삭제', '제거']
+module.exports = class extends Model {
+ constructor () {
+ super(['blacklist', 'black', '블랙리스트', '블랙'], 'blacklist', 'blacklist')
+ }
+
+ run (msg, args, p) {
+ const embed = new p.Embed()
+ const targets = msg.mentions.members
+ let type = -1
+ if (addAlias.includes(args[1])) type = 1
+ else if (delAlias.includes(args[1])) type = 0
+
+ if (type === -1) return
+ targets.forEach(t => {
+ p.db.update('userdata', { isBlacklist: type }, { id: t.id })
+ })
+ embed.addField('블랙리스트 업데이트', `${targets.size}명의 유저를 블랙리스트에 ${type === 1 ? '추가' : '제거'}했어요.`)
+ return { type: 'msg', aft: embed }
+ }
+}
diff --git a/lib/commands/eval.js b/lib/commands/eval.js
new file mode 100644
index 0000000..0acac39
--- /dev/null
+++ b/lib/commands/eval.js
@@ -0,0 +1,11 @@
+const Model = require('./model')
+module.exports = class extends Model {
+ constructor () {
+ super(['eval', 'dev'], 'eval', 'eval')
+ }
+
+ run (msg, args, p) {
+ // eslint-disable-next-line no-eval
+ eval(args.splice(1)).join(' ')
+ }
+}
diff --git a/lib/commands/example.js b/lib/commands/example.js
new file mode 100644
index 0000000..3edca77
--- /dev/null
+++ b/lib/commands/example.js
@@ -0,0 +1,11 @@
+const Model = require('./model')
+module.exports = class extends Model {
+ constructor () {
+ super(['example'], 'example', 'example')
+ }
+
+ run (msg, args, p) {
+ const embed = new p.Embed().setColor('RANDOM')
+ return { type: 'msg', aft: embed } // or msg.channel.send(embed)
+ }
+}
diff --git a/lib/commands/help.js b/lib/commands/help.js
new file mode 100644
index 0000000..ffff921
--- /dev/null
+++ b/lib/commands/help.js
@@ -0,0 +1,22 @@
+const Model = require('./model')
+const unique = require('uuniquets')
+module.exports = class extends Model {
+ constructor () {
+ super(['help', '도움', '도움말'], 'help', 'help')
+ }
+
+ run (msg, args, p) {
+ const prefix = p.client.config.prefix
+ const commands = unique([...p.client.commands.values()])
+ const embed = new p.Embed().setTitle(p.lang.get('CommandBook'))
+ .setDescription(p.lang.get('Prefix', [prefix]))
+
+ for (const c of commands) {
+ if (c.ownOnly ? !p.client.is(1, msg.member) : !p.client.is(2, msg.member, c.perm)) continue
+ const uses = prefix + c.alias.join(`, ${prefix}`)
+ embed.addField(p.lang.get(`cmd_${c.key}_desc`), uses, true)
+ }
+
+ return { type: 'msg', aft: embed, target: msg.author }
+ }
+}
diff --git a/lib/commands/index.js b/lib/commands/index.js
new file mode 100644
index 0000000..a37230f
--- /dev/null
+++ b/lib/commands/index.js
@@ -0,0 +1,13 @@
+/** Reload 편의성을 위해 Key 값과 파일 이름을 동일하게 맞춰주세요 */
+module.exports.ping = require('./ping')
+module.exports.invite = require('./invite')
+module.exports.mylist = require('./mylist')
+module.exports.music = require('./music')
+module.exports.reload = require('./reload')
+module.exports.logout = require('./logout')
+module.exports.help = require('./help')
+module.exports.info = require('./info')
+module.exports.leaderboard = require('./leaderboard')
+module.exports.quiz = require('./quiz')
+module.exports.setting = require('./setting')
+module.exports.blacklist = require('./blacklist')
diff --git a/lib/commands/info.js b/lib/commands/info.js
new file mode 100644
index 0000000..afe1583
--- /dev/null
+++ b/lib/commands/info.js
@@ -0,0 +1,26 @@
+const Model = require('./model')
+const conv = require('utimets')
+module.exports = class extends Model {
+ constructor () {
+ super(['botinfo', '봇정보'], 'botinfo', 'botinfo')
+ }
+
+ run (msg, args, p) {
+ const u = conv(p.client.uptime / 1000)
+ const _ = new Date(p.client.user.createdAt)
+ const U = conv((new Date() - _.getTime()) / 1000)
+ const embed = new p.Embed().setColor('RANDOM')
+ .setTitle(p.lang.get('Info', [p.client.user.username]))
+ .setDescription(p.lang.get('From', [msg.author.username]))
+ .setThumbnail(p.client.user.avatarURL)
+ .addField('\u200B', '\u200B', true)
+ .addField(p.lang.get('Name&Tag', [p.client.user.username]), p.client.user.tag, true)
+ .addField(p.lang.get('CommandSize', [p.client.user.username]), Object.keys(p.client.commandsOrigin).length, true)
+ .addField(p.lang.get('UsersSize', [p.client.user.username]), p.client.users.size, true)
+ .addField(p.lang.get('ChannelsSize', [p.client.user.username]), p.client.channels.size, true)
+ .addField(p.lang.get('ServersSize', [p.client.user.username]), p.client.guilds.size, true)
+ .addField(p.lang.get('BotDay', [p.client.user.username]), `${_}\n${p.lang.get('Time', [U[0], U[1], U[2], Math.floor(U[3])])}`, true)
+ .addField(p.lang.get('UpdataDay', [p.client.user.username]), p.lang.get('Time', [u[0], u[1], u[2], Math.floor(u[3])]))
+ return { type: 'msg', aft: embed }
+ }
+}
diff --git a/lib/commands/invite.js b/lib/commands/invite.js
new file mode 100644
index 0000000..50eac3e
--- /dev/null
+++ b/lib/commands/invite.js
@@ -0,0 +1,12 @@
+const Model = require('./model')
+module.exports = class extends Model {
+ constructor () {
+ super(['invite', '초대링크', '봇초대링크'], 'invite', 'invite')
+ }
+
+ run (msg, args, p) {
+ const embed = new p.Embed().setColor('RANDOM')
+ embed.setDescription(p.lang.get('Invite'))
+ return { type: 'msg', aft: embed }
+ }
+}
diff --git a/lib/commands/leaderboard.js b/lib/commands/leaderboard.js
new file mode 100644
index 0000000..1ffe5b9
--- /dev/null
+++ b/lib/commands/leaderboard.js
@@ -0,0 +1,16 @@
+const Model = require('./model')
+module.exports = class extends Model {
+ constructor () {
+ super(['leader', 'leaderboard', '리더보드', '리더', '보드'], 'leaderboard', 'leaderboard')
+ }
+
+ async run (msg, args, p) {
+ let res = `\`\`\`fix\n${p.lang.get('LeaderBoardMsg')}`
+ const usrs = await p.client.db.select('userdata', null, 'order by quizPoint desc limit 10')
+ usrs.forEach((_u, i) => {
+ const u = p.client.users.find(U => U.id === _u.id)
+ res += p.lang.get('LeaderBoardMsg1', [i + 1, u ? u.username : `UNKNOWN(${_u.id})`, _u.quizPoint])
+ })
+ return { type: 'msg', aft: `${res}\`\`\`` }
+ }
+}
diff --git a/lib/commands/logout.js b/lib/commands/logout.js
new file mode 100644
index 0000000..7f267f4
--- /dev/null
+++ b/lib/commands/logout.js
@@ -0,0 +1,11 @@
+const Model = require('./model')
+module.exports = class extends Model {
+ constructor () {
+ super(['logout', '로그아웃'], 'logout', 'logout', 0, true)
+ }
+
+ run (msg, args, p) {
+ p.client.destroy()
+ process.exit(0)
+ }
+}
diff --git a/lib/commands/model.js b/lib/commands/model.js
new file mode 100644
index 0000000..8c27b46
--- /dev/null
+++ b/lib/commands/model.js
@@ -0,0 +1,31 @@
+/**
+ * CommandModel
+ * @class CommandModel
+ */
+class CommandModel {
+ /**
+ * @param {Array} alias 명령어 호출 방법 목록
+ * @param {String} name 명령어 이름
+ * @param {String} commandKey lang파일에서 도움말을 불러올때 쓰는 키 이름
+ * @param {String | Number} perm 디스코드 권한
+ * @param {Boolean} ownOnly 봇 소유자 전용 여부
+ */
+ constructor (alias, name, commandKey, perm, ownOnly) {
+ this.alias = alias
+ this.name = name
+ this.key = commandKey
+ this.perm = perm || 0
+ this.ownOnly = ownOnly || false
+ }
+
+ /**
+ * @param {Message} msg 디스코드 메시지
+ * @param {Array} args 명령어 인수
+ * @param {Object} p 디스코드 봇 구성요소
+ */
+ run (msg, args, p) {
+ return { type: 'err', aft: `Not overrided in ${this.name} <= run[Method]` }
+ }
+}
+
+module.exports = CommandModel
diff --git a/lib/commands/music.js b/lib/commands/music.js
new file mode 100644
index 0000000..6948423
--- /dev/null
+++ b/lib/commands/music.js
@@ -0,0 +1,104 @@
+const Model = require('./model')
+const conv = require('utimets')
+
+module.exports = class extends Model {
+ constructor () {
+ super(['m', 'music', '뮤직', '음악'], 'music', 'music')
+ }
+
+ async run (msg, args, p) {
+ args.splice(0, 1)
+ const embed = new p.Embed()
+ const policy = p.client.config.localPolicy.music
+ const here = msg.client.m._(msg.guild.id, msg.member.voiceChannel)
+ if (args[0] === 'join') here._(msg.member.voiceChannel)
+ else if (args[0] === 'leave') here.leave()
+ else if (args[0] === 'url') {
+ if (!args[1] || !p.client.config.music.useNative) return
+ here.add(args[1])
+ here.start()
+ } else if (args[0] === 'play') here.start()
+ else if (args[0] === 'vol') {
+ const vol = Number(args[1])
+ if (vol >= 0) {
+ if (policy.volumeLimit ? vol <= 200 : true) here.setVolume(p.client.config.music.useNative ? vol / 100 : vol)
+ else msg.channel.send('200% 를 넘는 볼륨으로 설정 할 수 없습니다.')
+ } else if (args[1]) msg.channel.send('0% 미만의 볼륨으로 설정 할 수 없습니다.')
+ } else if (args[0] === 'stop') here.stop()
+ else if (args[0] === 'skip') here.skip()
+ else if (args[0] === 'pause') here.pause()
+ else if (args[0] === 'clear') here.clear()
+ else if (args[0] === 'repeat') here.repeat ? here.repeat = false : here.repeat = true
+ else if (args[0] === 'random') here.random ? here.random = false : here.random = true
+ else if (args[0] === 'now') {
+ if (here.playing) {
+ const time = p.client.config.music.useNative ? here.dispatcher.time : here.player.state.position
+ const u = conv(here.currentSong.length - Math.floor(time / 1000))
+ embed.addField(':musical_note: **지금 재생중**', `**제목** | ${here.currentSong.title}\n**길이** | ${u[1]}시간 ${u[2]}분 ${u[3]}초 남음`)
+ .setThumbnail(here.currentSong.thumbnail)
+ } else embed.setDescription('재생중인 음악이 없습니다!')
+ } else if (args[0] === 'list') {
+ let res = ''
+ for (const i in here.songs) res += `[${i}] **제목** | ${here.songs[i].title}\n`
+ embed.setTitle(':clipboard: **대기열**').setDescription(res)
+ } else if (args[0] === 'search') {
+ if (!p.search || !args[1]) return
+ embed.setDescription('검색 중입니다 잠시만 기다려 주십시오')
+ const query = args.splice(1).join(' ')
+ if (p.client.config.music.useNative) p.search._(query, 5).then(res => { here.add(res.items[0].id.videoId) })
+ else here.getSongs(`ytsearch: ${query}`).then(res => here.add(res[0]))
+ } else if (args[0] === 'fix') here.fix(msg.member.voiceChannel)
+ else if (args[0] === 'stable') here.stableMode = true
+ else if (args[0] === 'unstable') here.stableMode = false
+ else if (args[0] === 'mylist') {
+ const mylist = await p.db.select('mylist', { name: args[1] })
+ here.mylist(mylist[0])
+ } else {
+ const desc = '**[] Optinal, <> Required**\n(p)m \n(p)m \n(p)m \n(p)m search \n(p)m url \n(p)m vol \n(p)m mylist '
+ embed.setDescription(desc)
+ }
+ return { type: 'msg', aft: embed }
+ }
+
+ handler (msg, p) {
+ if (!p.client.m.eventNames().includes(`${msg.guild.id}_add`)) {
+ p.client.m.once(`${msg.guild.id}_add`, _here => {
+ _here.on('playing', song => {
+ const u = conv(song.length)
+ const embed = new p.Embed()
+ embed.addField(':cd: **재생중!**', `**제목** | ${song.title}\n**길이** | ${u[1]}시간 ${u[2]}분 ${u[3]}초`)
+ .setThumbnail(song.thumbnail)
+ msg.channel.send(embed)
+ })
+
+ _here.on('alreadyJoined', () => {
+ msg.channel.send('이미 접속했대. 만약 오류라면 ``>>>m fix``를 사용해주라9! (찡긋)')
+ })
+
+ _here.on('notChannel', () => {
+ msg.channel.send('니 채널에 없대')
+ })
+
+ _here.on('addSong', song => {
+ const embed = new p.Embed()
+ embed.addField(':inbox_tray: **대기열 추가됨!**', `${song.title} (이)가 대기열에 추가되었습니다.`)
+ .setThumbnail(song.thumbnail)
+ msg.channel.send(embed)
+ })
+
+ _here.on('myList', m => {
+ const embed = new p.Embed()
+ embed.addField(':inbox_tray: **대기열 추가됨!**', `<@${m.author}>(이)가 만든 ${m.name} 플레이리스트\n${m.list.length}개의 항목이 대기열에 추가되었습니다.`)
+ msg.channel.send(embed)
+ })
+
+ _here.on('changeVol', (bef, aft) => {
+ const embed = new p.Embed()
+ const multifly = p.client.config.music.useNative ? 100 : 1
+ embed.addField(':loud_sound: **볼륨 변경됨!**', `볼륨이 ${bef * multifly}% 에서 ${aft * multifly}% (으)로 변경되었습니다.`)
+ msg.channel.send(embed)
+ })
+ })
+ }
+ }
+}
diff --git a/lib/commands/mylist.js b/lib/commands/mylist.js
new file mode 100644
index 0000000..338eb29
--- /dev/null
+++ b/lib/commands/mylist.js
@@ -0,0 +1,40 @@
+const Model = require('./model')
+const ytdl = require('ytdl-core')
+const { song } = require('umusicts')
+
+module.exports = class extends Model {
+ constructor () {
+ super(['mylist', '재생목록', '마이리스트'], 'mylist', 'mylist')
+ }
+
+ async run (msg, args, p) {
+ const embed = new p.Embed()
+ if (args[1] && args[2]) {
+ const myList = await p.gi.getMyList(args[2])
+ if (args[1] === 'create') {
+ if (myList) return embed.setDescription('이미 존재하는 재생목록입니다.')
+ p.db.insert('mylist', { name: args[2], author: msg.author.id, list: JSON.stringify([]) })
+ embed.setDescription(`성공적으로 '${args[2]}'를 생성하였습니다!`)
+ } else if (args[1] === 'add') {
+ if (!myList) embed.setDescription('재생목록이 존재하지 않습니다.')
+ else if (!args[3]) embed.setDescription('query를 입력해 주세요.')
+ else {
+ const query = args.splice(3).join(' ').split(':')
+ if (query.length !== 2) return
+ if (query[0] === 'u') {
+ myList.add(query[1])
+ embed.setDescription(query[1])
+ } else if (query[0] === 's') {
+ const res = await p.search._(query[1], 5)
+ const inf = await ytdl.getInfo(res.items[0].id.videoId)
+ // eslint-disable-next-line new-cap
+ const temp = new song(inf)
+ myList.add(temp.url)
+ embed.setDescription(temp.url)
+ }
+ }
+ }
+ } else embed.setDescription('잘못된 사용법')
+ return { type: 'msg', aft: embed }
+ }
+}
diff --git a/lib/commands/ping.js b/lib/commands/ping.js
new file mode 100644
index 0000000..e102917
--- /dev/null
+++ b/lib/commands/ping.js
@@ -0,0 +1,13 @@
+const Model = require('./model')
+module.exports = class extends Model {
+ constructor () {
+ super(['ping', 'pong'], 'ping', 'ping')
+ }
+
+ run (msg, args, p) {
+ const embed = new p.Embed().setColor('RANDOM')
+ const ping = Math.abs(new Date() - msg.createdTimestamp)
+ embed.addField('Pong!', p.lang.get('ping', [ping, p.client.ping]))
+ msg.channel.send(embed)
+ }
+}
diff --git a/lib/commands/quiz.js b/lib/commands/quiz.js
new file mode 100644
index 0000000..4ebdbd3
--- /dev/null
+++ b/lib/commands/quiz.js
@@ -0,0 +1,48 @@
+const Model = require('./model')
+const quizs = require('./quizData')
+const pointAlias = ['point', '포인트', '점수']
+const reactFilter = ['❌', '⭕']
+module.exports = class extends Model {
+ constructor () {
+ super(['quiz', '퀴즈'], 'quiz', 'quiz')
+ }
+
+ run (msg, args, p) {
+ const embed = new p.Embed().setColor(0x0000ff)
+ const f = (r, u) => (reactFilter.includes(r.emoji.name) && u.id === msg.author.id)
+ if (pointAlias.includes(args[1])) {
+ return { type: 'msg', aft: p.lang.get('PointMsg', [p.u.quizPoint]) }
+ } else {
+ const qN = Math.floor(Math.random() * quizs.length)
+ const q = quizs[qN]
+ embed.setAuthor(p.lang.get('QUIZ2', [msg.author.username]), msg.author.displayAvatarURL)
+ .setTitle(`Quiz No. ${qN}`)
+ .addField(`Q. ${q.question.replace('{username}', msg.author.username)}`, p.lang.get('min'))
+ .setImage(q.image)
+ msg.channel.send(embed).then(_m => {
+ reactFilter.forEach(r => _m.react(r))
+ _m.awaitReactions(f, { time: 60000, max: 1 }).then(c => {
+ const C = c.array()[0]._emoji.name
+ const gap = Number(Number(q.answer) === reactFilter.indexOf(C)) || -1
+ if (!C) {
+ embed.setColor(0x808080)
+ .setDescription(p.lang.get('QUIZMSG1'))
+ .setAuthor(p.lang.get('Over', [msg.author.username]), msg.author.displayAvatarURL)
+ } else {
+ if (gap === 1) {
+ embed.setColor(0x00ff00)
+ .setDescription(p.lang.get('IS'))
+ .setAuthor(p.lang.get('SUS', [msg.author.username]), msg.author.displayAvatarURL)
+ } else if (gap === -1) {
+ embed.setColor(0xff0000)
+ .setDescription(p.lang.get('PR'))
+ .setAuthor(p.lang.get('NOTCORRECT', [msg.author.username]), msg.author.displayAvatarURL)
+ }
+ }
+ _m.edit(embed.addField(`Q. ${q.question.replace('{username}', msg.author.username)}`, `**A.** ${q.explanation}`))
+ p.db.update('userdata', { quizPoint: p.u.quizPoint + gap }, { id: p.u.id })
+ })
+ })
+ }
+ }
+}
diff --git a/QuizData/quizs.json b/lib/commands/quizData.json
similarity index 88%
rename from QuizData/quizs.json
rename to lib/commands/quizData.json
index 614bd2e..a70bccc 100644
--- a/QuizData/quizs.json
+++ b/lib/commands/quizData.json
@@ -64,7 +64,7 @@
},
{
"language": "js",
- "question": "JavaScript에서 ```js\nvar a = '30'\na += true\na += 1 + 2\nconsole.log(a)```를 했을때, 출력은```\n> 34```이다.",
+ "question": "JavaScript에서 ```js\nvar a = \"30\"\na += true\na += 1 + 2\nconsole.log(a)```를 했을때, 출력은```\n> 34```이다.",
"explanation": "\"30true3\"으로 출력됩니다, 이유는 다음과 같습니다.```diff\n+ a가 30이라는 *문자열*입니다.\n+ *문자열*에 *참/거짓*을 넣으려 할때, JS는 *참/거짓*을 *문자열*로 바꿔 맨뒤에 놓습니다.\n+ *문자열*에 *숫자*를 넣으려고 할때, JS는 *숫자*를 문자열으로 바꿔 맨뒤에 놓습니다.\n```",
"answer": false,
"point": 2
@@ -76,6 +76,7 @@
"answer": true,
"point": 2
},
+
{
"language": "html",
"question": "html에서 줄바꿈을 하려고 하면
을 입력해야 한다.",
@@ -154,5 +155,19 @@
"answer": true,
"explanation": "맞습니다, 아희는 한글로 된 언어이기 때문에 당연히 한글로 작성합니다.",
"point": 2
+ },
+ {
+ "language": "js",
+ "question": "const, let와 var은 모두 \"똑같은 기능\"을 가진 선언문이다.",
+ "answer": false,
+ "explanation": "모두 다른 기능입니다. const는 똑같은 이름을 가진 선언문이 있다면 오류를 뜨게 해 겹쳐서는 안 될 모듈을 불러오는데 적합하며, let는 해당 scope(e.g: if(...) { let y = null }, 여기서 scope는 {}) 안에서만 효력을 가지며 var은 선언이 scope 밖으로 hoist(위에 고정)되어 여러개의 var과 조건문의 결합으로 정보를 조작할수 있는 선언문입니다.",
+ "point": 1
+ },
+ {
+ "language": "py3",
+ "question": "다음 python3 코드에서 random 값이 3이라면 'Yee'가 출력되는가?",
+ "answer": true,
+ "explanation": "맞습니다, 파이썬의 리스트에서는 1번부터 시작하는 것이 아니라 0번부터 시작합니다\n이 문제에서는 3개가 주어졌으니, 0.Yay 1.Noo 2.IDK가 되므로 3은 정해지지 않았습니다\n그래서 me의 3번째를 얻어오는 mee는 None이 될 수 밖에 없고, 최종적으로 Yee를 출력하게 됩니다.",
+ "point": 2
}
-]
+]
\ No newline at end of file
diff --git a/lib/commands/reload.js b/lib/commands/reload.js
new file mode 100644
index 0000000..47a65b5
--- /dev/null
+++ b/lib/commands/reload.js
@@ -0,0 +1,13 @@
+const Model = require('./model')
+module.exports = class extends Model {
+ constructor () {
+ super(['reload', '리로드'], 'reload', 'reload', 0, true)
+ }
+
+ run (msg, args, p) {
+ const embed = new p.Embed()
+ p.client.load()
+ embed.setDescription(`${p.client.commands.size}개의 명령어\n${Object.keys(p.client.events).length}개의 이벤트\n${Object.keys(p.client.classes).length}개의 클래스 로드가 완료되었습니다.`)
+ return { type: 'msg', aft: embed }
+ }
+}
diff --git a/lib/commands/setting.js b/lib/commands/setting.js
new file mode 100644
index 0000000..39b97bb
--- /dev/null
+++ b/lib/commands/setting.js
@@ -0,0 +1,26 @@
+const Model = require('./model')
+const allowLangs = ['ko', 'en']
+module.exports = class extends Model {
+ constructor () {
+ super(['set', 'setting', '설정', 'settings'], 'setting', 'setting')
+ }
+
+ run (msg, args, p) {
+ const embed = new p.Embed()
+ if (args[1] === 'prefix') {
+ if (msg.member.hasPermission(8) || !args[2]) return
+ const before = p.g.prefix
+ p.db.update('serverData', { prefix: args[2] }, { id: msg.guild.id })
+ embed.addField('Prefix 변경', `Prefix가 ${before}에서 ${args[2]}로 변경되었습니다!`)
+ } else if (args[1] === 'lang') {
+ if (!allowLangs.includes(args[2])) {
+ embed.addField('언어 변경', `지원하는 언어가 아닙니다.\n\`\`${allowLangs.join(', ')}\`\` 만 지원합니다.`)
+ } else {
+ const before = p.u.lang
+ p.db.update('serverData', { prefix: args[2] }, { id: msg.author.id })
+ embed.addField('언어 변경', `언어가 ${before}에서 ${args[2]}로 변경되었습니다!`)
+ }
+ }
+ return { type: 'msg', aft: embed }
+ }
+}
diff --git a/lib/events/index.js b/lib/events/index.js
new file mode 100644
index 0000000..88eb6fb
--- /dev/null
+++ b/lib/events/index.js
@@ -0,0 +1,3 @@
+/** Reload 편의성을 위해 Key 값과 파일 이름을 동일하게 맞춰주세요 */
+module.exports.message = require('./message')
+module.exports.ready = require('./ready')
diff --git a/lib/events/message.js b/lib/events/message.js
new file mode 100644
index 0000000..a165e6f
--- /dev/null
+++ b/lib/events/message.js
@@ -0,0 +1,43 @@
+const Model = require('./model')
+const { RichEmbed } = require('discord.js')
+module.exports = class extends Model {
+ constructor (client) {
+ super(client, 'message')
+ }
+
+ async run (msg) {
+ if (msg.author.bot || !msg.guild) return
+ const u = await this.gi.getUser(msg.author)
+ const g = await this.gi.getGuild(msg.guild)
+ const prefix = this.config.debug ? this.config.prefix : g.prefix
+ if (!msg.content.startsWith(prefix) || u.isBlacklist === 1) return
+ const args = msg.content.substring(prefix.length).split(' ')
+ const cmd = this.commands.get(args[0])
+ if (!cmd) return
+
+ const handler = (result) => {
+ if (!result || !result.type) return
+ if (result.type === 'edit') result.bef.edit(result.aft)
+ else if (result.type === 'msg') (result.target || msg.channel).send(result.aft)
+ else if (result.type === 'del') result.bef.delete()
+ }
+
+ /**
+ * u: 유저 정보
+ * g: 길드 정보
+ * gi: 유저&길드&마이리스트 정보 로드 모듈
+ * lang: 언어 모듈
+ * search: 유튜브 검색 모듈
+ */
+ const lang = this.langs.get(u.lang)
+ const embed = new RichEmbed()
+ const pak = { client: this, Embed: RichEmbed, lang: lang, u: u, g: g, gi: this.gi, db: this.db, search: this.search }
+ if (cmd.ownOnly && !this.is(1, msg.member)) msg.channel.send(embed.setDescription(lang.get('403')))
+ else if (!cmd.ownOnly && !this.is(2, msg.member, cmd.perm)) msg.channel.send(embed.setDescription(lang.get('402')))
+ else {
+ if (cmd.handler) cmd.handler(msg, pak)
+ const temp = cmd.run(msg, args, pak)
+ if (temp) temp.then ? temp.then(result => handler(result)) : handler(temp)
+ }
+ }
+}
diff --git a/lib/events/model.js b/lib/events/model.js
new file mode 100644
index 0000000..24bbd8c
--- /dev/null
+++ b/lib/events/model.js
@@ -0,0 +1,21 @@
+/**
+ * EventModel
+ * @class EventModel
+ */
+class EventModel {
+ /**
+ * @param {Client} client 디스코드 봇 클라이언트
+ * @param {String} eventName 이벤트 이름
+ */
+ constructor (client, eventName) {
+ this.client = client
+ this.eventName = eventName
+ client.on(eventName, this.run)
+ }
+
+ run () {
+ throw new SyntaxError(`Not overrided in ${this.eventName} <= run[Method]`)
+ }
+}
+
+module.exports = EventModel
diff --git a/lib/events/ready.js b/lib/events/ready.js
new file mode 100644
index 0000000..d2c4857
--- /dev/null
+++ b/lib/events/ready.js
@@ -0,0 +1,13 @@
+const Model = require('./model')
+const { PlayerManager } = require('discord.js-lavalink')
+module.exports = class extends Model {
+ constructor (client) {
+ super(client, 'ready')
+ }
+
+ run () {
+ console.info(this.user.username + ' is now Online!')
+ this.user.setActivity(this.config.activity, { type: 'PLAYING' })
+ if (!this.config.music.useNative) this.player = new PlayerManager(this, this.config.music.lavalinkNodes, { user: this.user.id, shards: 0 })
+ }
+}
diff --git a/lib/languages/en.json b/lib/languages/en.json
new file mode 100644
index 0000000..efb410a
--- /dev/null
+++ b/lib/languages/en.json
@@ -0,0 +1,66 @@
+{
+ "repository": "https://github.com/ttakkku/SeoaBot",
+ "inviteLink": "https://discordapp.com/oauth2/authorize?client_id=569453314551578644&permissions=8&scope=bot",
+ "402": "Sorry, but that command is **only** for Guild Manager.",
+ "403": "Sorry, but that command is **only** for SeoaBot Developers.",
+ "404": "Sorry, but that command is **only** for SeoaBot Staffs.",
+ "CommandNotFound": "Sorry, but I couldn't find that command on CMD_LIST.txt. Try >help!",
+ "BotNotDM": "You can't use <[0]> on Direct Message.",
+ "Info": "Information of <[0]>",
+ "From": "Requested by <[0]>",
+ "Name&Tag": "<[0]>'s DiscordTag",
+ "ID": "<[0]>'s Client ID",
+ "CommandSize": "Commands",
+ "UsersSize": "Users",
+ "ChannelsSize": "Channels",
+ "ServersSize": "Servers",
+ "BotDay": "<[0]>'s Account Birthday",
+ "UpdataDay": "<[0]>'s Last Update",
+ "UpTime": "Time of <[0]> is online [ Uptime ]",
+ "APIPING": "Delay [ API Ping ]",
+ "Time": "<[0]> day(s) <[1]> hour(s) <[2]> minute(s) <[3]> second(s)",
+ "DMSEND": "Sent CommandBook to your Direct Message!",
+ "BETAMSG": "This bot is BETA and Highly Unstable. Please report bugs on [issues](<[repository]>/issues).\n**[Invite Bot!](<[inviteLink]>)**\n**[Support Server](https://discord.gg/ZyJuBUJ)**",
+ "CommandBook": "Seoa CommandBook",
+ "Prefix": "Prefix: <[0]>",
+ "Invite": "**[Invite Bot!](<[inviteLink]>)**",
+ "quizTitle": "Code Quiz",
+ "LeaderBoardMsg": "SeoaBot <[quizTitle]> LeaderBoard",
+ "LeaderBoardMsg1": "Rank <[0]>: <[1]> (<[2]> Point)\n",
+ "Leave": "Left voice channel.",
+ "NOTJOIN": "I'm not in voice channel. Try >join!",
+ "NOTURL": "That's unsupported URL format. double check and try again.",
+ "QUIZMSG1": "[Request to add <[quizTitle]>!](<[repository]>/issues/new/choose)",
+ "PointMsg": "You have **<[0]>** Point.",
+ "QUIZ2": "<[0]> is solving <[quizTitle]>...",
+ "ENMSG": "Set language to `en` cause that language is unsupported.",
+ "Lang": "Set language to `<[0]>`.",
+ "su": "Successfully changed!",
+ "ch": "Please select one of `channel, lang`",
+ "MISS": "You aren't staff of this server. Ask Staffs to change settings!",
+ "min": "Time limit : **1 minute**",
+ "Over": "<[0]> - Time Over!",
+ "IS": "[Report Error of <[quizTitle]>!](<[repository]>/issues/new/choose)",
+ "PR": "[<[quizTitle]> Support!](<[repository]>/issues/new/choose)",
+ "SUS": "<[0]> - Correct Answer!",
+ "NOTCORRECT": "<[0]> - Wrong Answer!",
+ "YOUTUBEDEVMSG": "Please type what you want to search on YouTube in 1 minute. **[Highly Unstable]**",
+ "Corrent": "Okay, canceled.",
+ "search": "YouTube Results of <[0]>",
+ "view": "[Watch](http://youtube.com<[0]>) / length: <[1]> / Uploaded at <[2]> / Played <[3]> times",
+ "ping": "Seoa's Ping: <[0]>ms\nMessage ping: <[1]>ms",
+
+ "cmd_help_desc": "도움이 필요하신가요?",
+ "cmd_invite_desc": "저를 초대해줘요!",
+ "cmd_music_desc": "음악 관련된 명령어들이 대거로 나옵니다!",
+ "cmd_mylist_desc": "나만의 재생목록",
+ "cmd_ping_desc": "핑퐁 (따꾸)!",
+ "cmd_reload_desc": "명령어 리로드하는 명령어입니다.",
+ "cmd_botinfo_desc": "봇의 정보는 다 알려줍니다(봇 토큰 뺴고요)",
+ "cmd_leaderboard_desc": "리더보드를 보여줍니다",
+ "cmd_logout_desc": "봇이 로그아웃 됩니다!",
+ "cmd_quiz_desc": "프로그래밍 언어 퀴즈가 나옵니다!",
+ "cmd_blacklist_desc":"깜방 갑니다~",
+ "cmd_setting_desc": "서버 세팅하는 명령어입니다.",
+ "cmd_eval_desc": "(일반 유저들은 쉇) 여긴 서아봇 개발자들만 쓸 수 있는 명령어라구요!"
+}
\ No newline at end of file
diff --git a/lib/languages/index.js b/lib/languages/index.js
new file mode 100644
index 0000000..d2834f4
--- /dev/null
+++ b/lib/languages/index.js
@@ -0,0 +1,2 @@
+module.exports.ko = require('./ko')
+module.exports.en = require('./en')
diff --git a/lib/languages/ko.json b/lib/languages/ko.json
new file mode 100644
index 0000000..c86b650
--- /dev/null
+++ b/lib/languages/ko.json
@@ -0,0 +1,66 @@
+{
+ "repository": "https://github.com/seoaapp/SeoaBot",
+ "inviteLink": "https://discordapp.com/oauth2/authorize?client_id=569453314551578644&permissions=8&scope=bot",
+ "402": "당신은 서버 관리자가 아닙니다!",
+ "403": "어디서 감히 개발자도 아닌게 까불어!",
+ "404": "당신은 봇 소유자 (운영자)가 아닙니다!",
+ "CommandNotFound": "아 저런! 그건 없는 명령이에요",
+ "BotNotDM": "<[0]>는 DM에서 사용하실 수 없어요!",
+ "Info": "<[0]>의 정보!",
+ "From": "<[0]>가 요청함",
+ "Name&Tag": "<[0]>의 DiscordTag",
+ "ID": "<[0]>의 클라이언트 ID",
+ "CommandSize": "등록된 명령어 수",
+ "UsersSize": "등록된 유저 수",
+ "ChannelsSize": "총 채널 수",
+ "ServersSize": "총 서버 수",
+ "BotDay": "<[0]>의 계정 생성 날짜",
+ "UpdataDay": "<[0]>의 마지막 업데이트 날짜",
+ "UpTime": "<[0]>의 업타임",
+ "APIPING": "API 핑 ( 지연시간 )",
+ "Time": "<[0]>일 <[1]>시간 <[2]>분 <[3]>초",
+ "DMSEND": "DM(PM)으로 도움말을 보냈습니다!",
+ "BETAMSG": "이 봇은 베타입니다. 불안정하니 버그가 발생할경우 [이슈](<[repository]>/issues)에 알려주세요 \n **[봇 초대링크!](<[inviteLink]>)** \n **[봇 서포트 주소](https://discord.gg/ZyJuBUJ)**",
+ "CommandBook": "Seoa CommandBook\n[Support Server](https://discord.gg/BHS5pw3)",
+ "Prefix": "접두사: <[0]>",
+ "Invite": "**[봇 초대링크!](<[inviteLink]>)**",
+ "quizTitle": "Code Quiz",
+ "LeaderBoardMsg": "SeoaBot <[quizTitle]> LeaderBoard",
+ "LeaderBoardMsg1": "<[0]>등: <[1]> (<[2]>점)\n",
+ "Leave": "음성 채널을 떠났습니다!",
+ "NOTJOIN": "삐빅! 음성채널에 들어와 있지 않습니다!",
+ "NOTURL": "삐빅! 지원하지 않는 URL입니다.",
+ "QUIZMSG1": "[<[quizTitle]> 추가 요청하러 가기!](<[repository]>/issues/new/choose)",
+ "PointMsg": "**<[0]>** 포인트 입니다.",
+ "QUIZ2": "<[0]>님이 <[quizTitle]>를 푸는 중입니다...",
+ "ENMSG": "해당 언어는 정의되어 있지 않아 `en`으로 설정되었습니다.",
+ "Lang": "<[0]>으로 설정되었습니다.",
+ "su": "성공!",
+ "ch": "`채널, 언어` 중에서 하나를 골라주세요",
+ "MISS": "당신은 권한이 없어서 설정을 못 합니다",
+ "min": "제한시간은 **1분**입니다.",
+ "Over": "<[0]>님 - 타임 오버입니다!",
+ "IS": "[<[quizTitle]> 오류 제보하러 가기!](<[repository]>/issues/new/choose)",
+ "PR": "[<[quizTitle]> 문의하러 가기!](<[repository]>/issues/new/choose)",
+ "SUS": "<[0]>님 - 정답입니다!",
+ "NOTCORRECT": "<[0]>님 - 오답입니다!",
+ "YOUTUBEDEVMSG": "YouTube에서 검색할 검색어를 입력해 주세요 (제한시간 1분) **[Dev]**",
+ "Corrent": "1분이 지나 취소되었습니다",
+ "search": "<[0]>'의 검색 결과",
+ "view": "[보기](http://youtube.com/?v=<[0]>) / 길이: <[1]> / 게시일: <[2]> / <[3]>번 재생됨",
+ "ping": "Seoa의 핑: <[0]>ms\nSeoa의 메세지 핑: <[1]>ms",
+
+ "cmd_help_desc": "도움이 필요하신가요?",
+ "cmd_invite_desc": "저를 초대해줘요!",
+ "cmd_music_desc": "음악 관련된 명령어들이 대거로 나옵니다!",
+ "cmd_mylist_desc": "나만의 재생목록",
+ "cmd_ping_desc": "핑퐁 (따꾸)!",
+ "cmd_reload_desc": "명령어 리로드하는 명령어입니다.",
+ "cmd_botinfo_desc": "봇의 정보는 다 알려줍니다(봇 토큰 뺴고요)",
+ "cmd_leaderboard_desc": "리더보드를 보여줍니다",
+ "cmd_logout_desc": "봇이 로그아웃 됩니다!",
+ "cmd_quiz_desc": "프로그래밍 언어 퀴즈가 나옵니다!",
+ "cmd_blacklist_desc":"깜방 갑니다~",
+ "cmd_setting_desc": "서버 세팅하는 명령어입니다.",
+ "cmd_eval_desc": "(일반 유저들은 쉇) 여긴 서아봇 개발자들만 쓸 수 있는 명령어라구요!"
+}
\ No newline at end of file
diff --git a/locales/en.json b/locales/en.json
deleted file mode 100644
index 1e28780..0000000
--- a/locales/en.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "403": "Sorry, but that command is **only** for SeoaBot Developers.",
- "404": "Sorry, but that command is **only** for SeoaBot Staffs.",
- "CommandNotFound": "Sorry, but I couldn't find that command on CMD_LIST.txt. Try >help!",
- "BotNotDM": "You can't use %s on Direct Message.",
- "Info": "Information of %s",
- "From": "Requested by %s",
- "Name&Tag": "%s's DiscordTag",
- "ID": "%s's Client ID",
- "CommandSize": "Commands",
- "UsersSize": "Users",
- "ChannelsSize": "Channels",
- "ServersSize": "Servers",
- "BotDay": "%s's Account Birthday",
- "UpdataDay": "%s's Last Update",
- "UpTime": "Time of %s is online [ Uptime ]",
- "APIPING": "Delay [ API Ping ]",
- "Time": "%s day(s) %s hour(s) %s minute(s) %s second(s)",
- "DMSEND": "Sent CommandBook to your Direct Message!",
- "BETAMSG": "This bot is BETA and Highly Unstable. Please report bugs on [issues](https://github.com/ttakkku/SeoaBot/issues).\n**[Invite Bot!](https://discordapp.com/oauth2/authorize?client_id=569453314551578644&permissions=8&scope=bot)**\n**[Support Server](https://discord.gg/QJfeKYr)**",
- "CommandBook": "Seoa CommandBook",
- "Prefix": "Prefix:",
- "Invite": "**[Invite Bot!](https://discordapp.com/oauth2/authorize?client_id=569453314551578644&permissions=8&scope=bot)**",
- "LeaderBoardMsg": "SeoaBot Code Quiz LeaderBoard",
- "LeaderBoardMsg1": "Rank %s: %s (%s Point)\n",
- "Leave": "Left voice channel.",
- "NOTJOIN": "I'm not in voice channel. Try >join!",
- "NOTURL": "That's unsupported URL format. double check and try again.",
- "QUIZMSG1": "[Request to add Code Quiz!](https://github.com/seoaapp/SeoaBot/issues/new/choose)",
- "PointMsg": "You have **%s** Point.",
- "QUIZ2": "%s is solving Code Quiz...",
- "ENMSG": "Set language to `en` cause that language is unsupported.",
- "Lang": "Set language to `%s`.",
- "su": "Successfully changed!",
- "ch": "Please select one of `channel, lang`",
- "MISS": "You aren't staff of this server. Ask Staffs to change settings!",
- "min": "Time limit : **1 minute**",
- "Over": "%s - Time Over!",
- "IS": "[Report Error of Code Quiz!](https://github.com/seoaapp/SeoaBot/issues/new/choose)",
- "PR": "[Code Quiz Support!](https://github.com/seoaapp/SeoaBot/issues/new/choose)",
- "SUS": "%s - Correct Answer!",
- "NOTCORRECT": "%s - Wrong Answer!",
- "YOUTUBEDEVMSG": "Please type what you want to search on YouTube in 1 minute. **[Highly Unstable]**",
- "Corrent": "Okay, canceled.",
- "search": "YouTube Results of %s",
- "view": "[Watch](http://youtube.com%s) / length: %s / Uploaded at %s / Played %s times",
- "ping": "Seoa's Ping:",
- "msgping": "Message ping:"
-}
diff --git a/locales/kor.json b/locales/kor.json
deleted file mode 100644
index fd51252..0000000
--- a/locales/kor.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "403": "어디서 감히 개발자도 아닌게 까불어!",
- "404": "당신은 봇 소유자 (운영자)가 아닙니다!",
- "CommandNotFound": "아 저런! 그건 없는 명령이에요",
- "BotNotDM": "%s는 DM에서 사용하실 수 없어요!",
- "Info": "%s의 정보!",
- "From": "%s가 요청함",
- "Name&Tag": "%s의 DiscordTag",
- "ID": "%s의 클라이언트 ID",
- "CommandSize": "등록된 명령어 수",
- "UsersSize": "등록된 유저 수",
- "ChannelsSize": "총 채널 수",
- "ServersSize": "총 서버 수",
- "BotDay": "%s의 계정 생성 날짜",
- "UpdataDay": "%s의 마지막 업데이트 날짜",
- "UpTime": "%s의 업타임",
- "APIPING": "API 핑 ( 지연시간 )",
- "Time": "%s일 %s시간 %s분 %s초",
- "DMSEND": "DM(PM)으로 도움말을 보냈습니다!",
- "BETAMSG": "이 봇은 베타입니다. 불안정하니 버그가 발생할경우 [이슈](https://github.com/ttakkku/SeoaBot/issues)에 알려주세요 \n **[봇 초대링크!](https://discordapp.com/oauth2/authorize?client_id=569453314551578644&permissions=8&scope=bot)** \n **[봇 서포트 주소](https://discord.gg/QJfeKYr)**",
- "CommandBook": "Seoa CommandBook",
- "Prefix": "Prefix:",
- "Invite": "**[봇 초대링크!](https://discordapp.com/oauth2/authorize?client_id=569453314551578644&permissions=8&scope=bot)**",
- "LeaderBoardMsg": "SeoaBot Code Quiz LeaderBoard",
- "LeaderBoardMsg1": "%s등: %s (%s점)\n",
- "Leave": "음성 채널을 떠났습니다!",
- "NOTJOIN": "삐빅! 음성채널에 들어와 있지 않습니다!",
- "NOTURL": "삐빅! 지원하지 않는 URL입니다.",
- "QUIZMSG1": "[Code Quiz 추가 요청하러 가기!](https://github.com/seoaapp/SeoaBot/issues/new/choose)",
- "PointMsg": "**%s** 포인트 입니다.",
- "QUIZ2": "%s님이 Code Quiz를 푸는 중입니다...",
- "ENMSG": "해당 언어는 정의되어 있지 않아 `en`으로 설정되었습니다.",
- "Lang": "%s으로 설정되었습니다.",
- "su": "성공!",
- "ch": "`채널, 언어` 중에서 하나를 골라주세요",
- "MISS": "당신은 권한이 없어서 설정을 못 합니다",
- "min": "제한시간은 **1분**입니다.",
- "Over": "%s님 - 타임 오버입니다!",
- "IS": "[Code Quiz 오류 제보하러 가기!](https://github.com/seoaapp/SeoaBot/issues/new/choose)",
- "PR": "[Code Quiz 문의하러 가기!](https://github.com/seoaapp/SeoaBot/issues/new/choose)",
- "SUS": "%s님 - 정답입니다!",
- "NOTCORRECT": "%s님 - 오답입니다!",
- "YOUTUBEDEVMSG": "YouTube에서 검색할 검색어를 입력해 주세요 (제한시간 1분) **[Dev]**",
- "Corrent": "1분이 지나 취소되었습니다",
- "search": "%s'의 검색 결과",
- "view": "[보기](http://youtube.com%s) / 길이: %s / 게시일: %s / %s번 재생됨",
- "ping": "Seoa의 핑:",
- "msgping": "Seoa의 메세지 핑:"
-}
diff --git a/locales/pt.json b/locales/pt.json
deleted file mode 100644
index 4fcbba4..0000000
--- a/locales/pt.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "403": "Se você não é programador, pra que está resolvendo isso? kk",
- "404": "Você não tem permissão de desenvolvedor.",
- "CommandNotFound": "Ops, esse comando não existe!",
- "BotNotDM": "O %s não pode ser usado nos DM(PV)",
- "Info": "Informações de %s:",
- "From": "Pedido por %s",
- "Name&Tag": "DiscordTag de %s",
- "ID": "ID de cliente do %s",
- "CommandSize": "Quantidade de comandos registrados:",
- "UsersSize": "Quantidade de usuários:",
- "ChannelsSize": "Quantidade de canais:",
- "ServersSize": "Quantidade de servidores:",
- "BotDay": "Data de criação do %s:",
- "UpdataDay": "Data de último update do %s:",
- "UpTime": "Tempo Online de %s:",
- "APIPING": "Ping do WebSocket(API):",
- "Time": "%s dia(s) e %s hora(s) e %s minuto(s) e %s segundo(s)",
- "DMSEND": "Mandei a página de ajuda para o seu DM(PV)",
- "BETAMSG": "Como esse bot é beta, se houver algum erro dirija-se para [Bugs&Erros](https://github.com/ttakkku/SeoaBot/issues) por favor \n **[Link do bot](https://discordapp.com/oauth2/authorize?client_id=569453314551578644&permissions=8&scope=bot)** \n **[Suporte](https://discord.gg/QJfeKYr)**",
- "CommandBook": "Página de ajuda do Seoa",
- "Prefix": "Prefixo:",
- "Invite": "**[Link do bot](https://discordapp.com/oauth2/authorize?client_id=569453314551578644&permissions=8&scope=bot)**",
- "LeaderBoardMsg": "Placar de Code Quiz de Seoa",
- "LeaderBoardMsg1": "%sº lugar: %s (%s pontos)\n",
- "Leave": "sai do canal de voz",
- "NOTJOIN": "Ops, entre no canal de voz primeiro por favor!",
- "NOTURL": "Ops, esse link não é suportado por mim...",
- "QUIZMSG1": "[Pedir para adicionar mais Code Quiz](https://github.com/seoaapp/SeoaBot/issues/new/choose)",
- "PointMsg": "**%s** pontos",
- "QUIZ2": "O %s está resolvendo o Code Quiz...",
- "ENMSG": "Não encontrei os dados sobre esse idioma em mim e defini como `en`.",
- "Lang": "Foi configurado como %s.",
- "su": "Sucesso!",
- "ch": "Escolha um dos `channel, lang`.",
- "MISS": "Você não tem permissão para isso!",
- "min": "O limite de tempo é **1** minuto",
- "Over": "%s, acabou o tempo!",
- "IS": "[Reportar erro do Code Quiz](https://github.com/seoaapp/SeoaBot/issues/new/choose)",
- "PR": "[Perguntar sobre o Code Quiz](https://github.com/seoaapp/SeoaBot/issues/new/choose)",
- "SUS": "O %s acertou!",
- "NOTCORRECT": "O %s errou!",
- "YOUTUBEDEVMSG": "Escreva qualquer coisa para pesquisar no YouTube (Limite de tempo: 1 minuto) **[Dev]**",
- "Corrent": "Passou do limite de tempo e foi cancelado.",
- "search": "Resultado de pesquisa do %s.",
- "view": "[Ver](http://youtube.com%s) / Duração: %s / Data de Lançamento: %s / Visualizações: %s",
- "ping": "Ping do Seoa:",
- "msgping": "Ping de mensagem:"
-}
diff --git a/migration.js b/migration.js
deleted file mode 100644
index d282368..0000000
--- a/migration.js
+++ /dev/null
@@ -1,24 +0,0 @@
-const Umysql = require('umysql')
-console.log('SEOABOT JSON TO MYSQL MIGRATION TOOL')
-console.log('CONNECTING TO MYSQL SERVER')
-const db = new Umysql(process.env.host, process.env.user, process.env.pass, 'seoa')
-
-console.log('LOADING OLD JSON DATA')
-const users = require('./UserData/users.json')
-const servers = require('./ServerData/servers.json')
-const owners = require('./ServerData/owners.json')
-const sIDs = Object.keys(servers)
-const uIDs = Object.keys(users)
-
-console.log('OLD DATA WRITING TO MYSQL SERVER')
-console.log('ServerData/servers.json & ServerData/owners.json')
-sIDs.forEach(sID => {
- db.insert('serverdata', { id: sID, lang: servers[sID].lang, owner: owners[sID] })
-})
-
-console.log('UserData/users.json')
-uIDs.forEach(uID => {
- db.insert('userdata', { id: uID, quizPoint: users[uID].quizPoint })
-})
-
-console.log('MIGRATION ENDED')
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..3555d6d
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,2040 @@
+{
+ "name": "seoabot",
+ "version": "2.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
+ "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.0.0"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz",
+ "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "acorn": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz",
+ "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==",
+ "dev": true
+ },
+ "acorn-jsx": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.2.tgz",
+ "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==",
+ "dev": true
+ },
+ "ajv": {
+ "version": "6.10.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
+ "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
+ "requires": {
+ "fast-deep-equal": "^2.0.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ansi-escapes": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
+ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "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,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "array-includes": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz",
+ "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "es-abstract": "^1.7.0"
+ }
+ },
+ "asn1": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+ "requires": {
+ "safer-buffer": "~2.1.0"
+ }
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ },
+ "astral-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
+ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+ "dev": true
+ },
+ "async-limiter": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
+ "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+ },
+ "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="
+ },
+ "aws4": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
+ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+ "requires": {
+ "tweetnacl": "^0.14.3"
+ },
+ "dependencies": {
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
+ }
+ }
+ },
+ "bignumber.js": {
+ "version": "7.2.1",
+ "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz",
+ "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ=="
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
+ },
+ "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,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+ "dev": true
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^2.0.0"
+ }
+ },
+ "cli-width": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
+ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
+ "dev": true
+ },
+ "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,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "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"
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "contains-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
+ "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
+ "dev": true
+ },
+ "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="
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "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==",
+ "dev": true
+ }
+ }
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "dev": true
+ },
+ "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==",
+ "dev": true,
+ "requires": {
+ "object-keys": "^1.0.12"
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
+ },
+ "discord.js": {
+ "version": "11.5.1",
+ "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-11.5.1.tgz",
+ "integrity": "sha512-tGhV5xaZXE3Z+4uXJb3hYM6gQ1NmnSxp9PClcsSAYFVRzH6AJH74040mO3afPDMWEAlj8XsoPXXTJHTxesqcGw==",
+ "requires": {
+ "long": "^4.0.0",
+ "prism-media": "^0.0.3",
+ "snekfetch": "^3.6.4",
+ "tweetnacl": "^1.0.0",
+ "ws": "^6.0.0"
+ }
+ },
+ "discord.js-lavalink": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/discord.js-lavalink/-/discord.js-lavalink-2.2.3.tgz",
+ "integrity": "sha512-HR7LJ8EhJ3iVeRmfjBOdvBA5/eO25ncbnZOn12x0Sj/JVFd0h5ClGi6w4giWPrnw8fDvCVxKl7+c0Y/6tLgBDQ==",
+ "requires": {
+ "ws": "^6.1.4"
+ }
+ },
+ "doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "ecc-jsbn": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+ "requires": {
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "es-abstract": {
+ "version": "1.14.2",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.14.2.tgz",
+ "integrity": "sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg==",
+ "dev": true,
+ "requires": {
+ "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.0.0",
+ "string.prototype.trimright": "^2.0.0"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
+ "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "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
+ },
+ "eslint": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.3.0.tgz",
+ "integrity": "sha512-ZvZTKaqDue+N8Y9g0kp6UPZtS4FSY3qARxBs7p4f0H0iof381XHduqVerFWtK8DPtKmemqbqCFENWSQgPR/Gow==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "ajv": "^6.10.0",
+ "chalk": "^2.1.0",
+ "cross-spawn": "^6.0.5",
+ "debug": "^4.0.1",
+ "doctrine": "^3.0.0",
+ "eslint-scope": "^5.0.0",
+ "eslint-utils": "^1.4.2",
+ "eslint-visitor-keys": "^1.1.0",
+ "espree": "^6.1.1",
+ "esquery": "^1.0.1",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^5.0.1",
+ "functional-red-black-tree": "^1.0.1",
+ "glob-parent": "^5.0.0",
+ "globals": "^11.7.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "inquirer": "^6.4.1",
+ "is-glob": "^4.0.0",
+ "js-yaml": "^3.13.1",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.3.0",
+ "lodash": "^4.17.14",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^0.5.1",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.8.2",
+ "progress": "^2.0.0",
+ "regexpp": "^2.0.1",
+ "semver": "^6.1.2",
+ "strip-ansi": "^5.2.0",
+ "strip-json-comments": "^3.0.1",
+ "table": "^5.2.3",
+ "text-table": "^0.2.0",
+ "v8-compile-cache": "^2.0.3"
+ }
+ },
+ "eslint-config-standard": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.0.tgz",
+ "integrity": "sha512-EF6XkrrGVbvv8hL/kYa/m6vnvmUT+K82pJJc4JJVMM6+Qgqh0pnwprSxdduDLB9p/7bIxD+YV5O0wfb8lmcPbA==",
+ "dev": true
+ },
+ "eslint-import-resolver-node": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz",
+ "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.6.9",
+ "resolve": "^1.5.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "eslint-module-utils": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz",
+ "integrity": "sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.6.8",
+ "pkg-dir": "^2.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-es": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-2.0.0.tgz",
+ "integrity": "sha512-f6fceVtg27BR02EYnBhgWLFQfK6bN4Ll0nQFrBHOlCsAyxeZkn0NHns5O0YZOPrV1B3ramd6cgFwaoFLcSkwEQ==",
+ "dev": true,
+ "requires": {
+ "eslint-utils": "^1.4.2",
+ "regexpp": "^3.0.0"
+ },
+ "dependencies": {
+ "regexpp": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz",
+ "integrity": "sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-import": {
+ "version": "2.18.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz",
+ "integrity": "sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.0.3",
+ "contains-path": "^0.1.0",
+ "debug": "^2.6.9",
+ "doctrine": "1.5.0",
+ "eslint-import-resolver-node": "^0.3.2",
+ "eslint-module-utils": "^2.4.0",
+ "has": "^1.0.3",
+ "minimatch": "^3.0.4",
+ "object.values": "^1.1.0",
+ "read-pkg-up": "^2.0.0",
+ "resolve": "^1.11.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "doctrine": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
+ "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "isarray": "^1.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-node": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-10.0.0.tgz",
+ "integrity": "sha512-1CSyM/QCjs6PXaT18+zuAXsjXGIGo5Rw630rSKwokSs2jrYURQc4R5JZpoanNCqwNmepg+0eZ9L7YiRUJb8jiQ==",
+ "dev": true,
+ "requires": {
+ "eslint-plugin-es": "^2.0.0",
+ "eslint-utils": "^1.4.2",
+ "ignore": "^5.1.1",
+ "minimatch": "^3.0.4",
+ "resolve": "^1.10.1",
+ "semver": "^6.1.0"
+ },
+ "dependencies": {
+ "ignore": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz",
+ "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-promise": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz",
+ "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==",
+ "dev": true
+ },
+ "eslint-plugin-standard": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz",
+ "integrity": "sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==",
+ "dev": true
+ },
+ "eslint-scope": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
+ "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "eslint-utils": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz",
+ "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==",
+ "dev": true,
+ "requires": {
+ "eslint-visitor-keys": "^1.0.0"
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
+ "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
+ "dev": true
+ },
+ "espree": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.1.tgz",
+ "integrity": "sha512-EYbr8XZUhWbYCqQRW0duU5LxzL5bETN6AjKBGy1302qqzPaCH10QbRg3Wvco79Z8x9WbiE8HYB4e75xl6qUYvQ==",
+ "dev": true,
+ "requires": {
+ "acorn": "^7.0.0",
+ "acorn-jsx": "^5.0.2",
+ "eslint-visitor-keys": "^1.1.0"
+ }
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ },
+ "esquery": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
+ "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.0.0"
+ }
+ },
+ "esrecurse": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.1.0"
+ }
+ },
+ "estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true
+ },
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ },
+ "external-editor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
+ "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+ "dev": true,
+ "requires": {
+ "chardet": "^0.7.0",
+ "iconv-lite": "^0.4.24",
+ "tmp": "^0.0.33"
+ }
+ },
+ "extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
+ },
+ "fast-deep-equal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "figures": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ }
+ },
+ "file-entry-cache": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
+ "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
+ "dev": true,
+ "requires": {
+ "flat-cache": "^2.0.1"
+ }
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "flat-cache": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
+ "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+ "dev": true,
+ "requires": {
+ "flatted": "^2.0.0",
+ "rimraf": "2.6.3",
+ "write": "1.0.3"
+ }
+ },
+ "flatted": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
+ "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
+ "dev": true
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
+ },
+ "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==",
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "dev": true
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
+ "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
+ "dev": true,
+ "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"
+ }
+ },
+ "glob-parent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz",
+ "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true
+ },
+ "graceful-fs": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz",
+ "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==",
+ "dev": true
+ },
+ "har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
+ },
+ "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==",
+ "requires": {
+ "ajv": "^6.5.5",
+ "har-schema": "^2.0.0"
+ }
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "has-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
+ "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
+ "dev": true
+ },
+ "hosted-git-info": {
+ "version": "2.8.4",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.4.tgz",
+ "integrity": "sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ==",
+ "dev": true
+ },
+ "html-entities": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz",
+ "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8="
+ },
+ "http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
+ "import-fresh": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz",
+ "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==",
+ "dev": true,
+ "requires": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ }
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "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=="
+ },
+ "inquirer": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
+ "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^3.2.0",
+ "chalk": "^2.4.2",
+ "cli-cursor": "^2.1.0",
+ "cli-width": "^2.0.0",
+ "external-editor": "^3.0.3",
+ "figures": "^2.0.0",
+ "lodash": "^4.17.12",
+ "mute-stream": "0.0.7",
+ "run-async": "^2.2.0",
+ "rxjs": "^6.4.0",
+ "string-width": "^2.1.0",
+ "strip-ansi": "^5.1.0",
+ "through": "^2.3.6"
+ }
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ },
+ "is-callable": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
+ "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
+ "dev": true
+ },
+ "is-date-object": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
+ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
+ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
+ "dev": true
+ },
+ "is-regex": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
+ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.1"
+ }
+ },
+ "is-symbol": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
+ "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.0"
+ }
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
+ "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
+ },
+ "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=="
+ },
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+ "dev": true
+ },
+ "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="
+ },
+ "jsprim": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ }
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ }
+ },
+ "load-json-file": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.19",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
+ "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==",
+ "dev": true
+ },
+ "long": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
+ "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
+ },
+ "m3u8stream": {
+ "version": "0.6.4",
+ "resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.6.4.tgz",
+ "integrity": "sha512-9WLF1VAtbVij03HWJKbVZ8L0orsoZiP53UljR5EwaDrozQFMsTGRDPe3PbzWV73He8a+j5H/hWZNoI2VkUSsiw==",
+ "requires": {
+ "miniget": "^1.6.1",
+ "sax": "^1.2.4"
+ }
+ },
+ "mime-db": {
+ "version": "1.40.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
+ "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA=="
+ },
+ "mime-types": {
+ "version": "2.1.24",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
+ "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
+ "requires": {
+ "mime-db": "1.40.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "dev": true
+ },
+ "miniget": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/miniget/-/miniget-1.6.1.tgz",
+ "integrity": "sha512-I5oBwZmcaOuJrjQn7lpS29HM+aAZDbzKbX5ouxVyhFYdg6fA6YKOTwOCgzZQwlHuMek3FlCxz6eNrd4pOXbwOA=="
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "mute-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
+ "dev": true
+ },
+ "mysql": {
+ "version": "2.17.1",
+ "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.17.1.tgz",
+ "integrity": "sha512-7vMqHQ673SAk5C8fOzTG2LpPcf3bNt0oL3sFpxPEEFp1mdlDcrLK0On7z8ZYKaaHrHwNcQ/MTUz7/oobZ2OyyA==",
+ "requires": {
+ "bignumber.js": "7.2.1",
+ "readable-stream": "2.3.6",
+ "safe-buffer": "5.1.2",
+ "sqlstring": "2.3.1"
+ }
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "node-fetch": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
+ "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
+ },
+ "normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
+ }
+ },
+ "oauth-sign": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
+ },
+ "object-inspect": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz",
+ "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==",
+ "dev": true
+ },
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true
+ },
+ "object.values": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz",
+ "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.12.0",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3"
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "optionator": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
+ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+ "dev": true,
+ "requires": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.4",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "wordwrap": "~1.0.0"
+ }
+ },
+ "opusscript": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/opusscript/-/opusscript-0.0.7.tgz",
+ "integrity": "sha512-DcBadTdYTUuH9zQtepsLjQn4Ll6rs3dmeFvN+SD0ThPnxRBRm/WC1zXWPg+wgAJimB784gdZvUMA57gDP7FdVg=="
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
+ },
+ "parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "requires": {
+ "callsites": "^3.0.0"
+ }
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.2.0"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "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=",
+ "dev": true
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
+ "dev": true
+ },
+ "path-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "dev": true,
+ "requires": {
+ "pify": "^2.0.0"
+ }
+ },
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "pkg-dir": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
+ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.1.0"
+ }
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "dev": true
+ },
+ "prism-media": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-0.0.3.tgz",
+ "integrity": "sha512-c9KkNifSMU/iXT8FFTaBwBMr+rdVcN+H/uNv1o+CuFeTThNZNTOrQ+RgXA1yL/DeLk098duAeRPP3QNPNbhxYQ=="
+ },
+ "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=="
+ },
+ "progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true
+ },
+ "psl": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz",
+ "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw=="
+ },
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
+ },
+ "qs": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
+ },
+ "read-pkg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^2.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^2.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^2.0.0"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "requires": {
+ "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"
+ }
+ },
+ "regexpp": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
+ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
+ "dev": true
+ },
+ "request": {
+ "version": "2.88.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
+ "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
+ "requires": {
+ "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"
+ }
+ },
+ "resolve": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
+ "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
+ "dev": true,
+ "requires": {
+ "path-parse": "^1.0.6"
+ }
+ },
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
+ "requires": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "run-async": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
+ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
+ "dev": true,
+ "requires": {
+ "is-promise": "^2.1.0"
+ }
+ },
+ "rxjs": {
+ "version": "6.5.3",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
+ "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
+ "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=="
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "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=",
+ "dev": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "dev": true
+ },
+ "slice-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "astral-regex": "^1.0.0",
+ "is-fullwidth-code-point": "^2.0.0"
+ }
+ },
+ "snekfetch": {
+ "version": "3.6.4",
+ "resolved": "https://registry.npmjs.org/snekfetch/-/snekfetch-3.6.4.tgz",
+ "integrity": "sha512-NjxjITIj04Ffqid5lqr7XdgwM7X61c/Dns073Ly170bPQHLm6jkmelye/eglS++1nfTWktpP6Y2bFXjdPlQqdw=="
+ },
+ "spdx-correct": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
+ "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
+ "dev": true,
+ "requires": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-exceptions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
+ "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
+ "dev": true
+ },
+ "spdx-expression-parse": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
+ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+ "dev": true,
+ "requires": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-license-ids": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
+ "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
+ "dev": true
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
+ "sqlstring": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
+ "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A="
+ },
+ "sshpk": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
+ "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
+ "requires": {
+ "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"
+ },
+ "dependencies": {
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
+ }
+ }
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "dependencies": {
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "string.prototype.trimleft": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz",
+ "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "function-bind": "^1.1.1"
+ }
+ },
+ "string.prototype.trimright": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz",
+ "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "function-bind": "^1.1.1"
+ }
+ },
+ "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==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ }
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ },
+ "strip-json-comments": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
+ "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
+ "dev": true
+ },
+ "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,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "table": {
+ "version": "5.4.6",
+ "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
+ "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.10.2",
+ "lodash": "^4.17.14",
+ "slice-ansi": "^2.1.0",
+ "string-width": "^3.0.0"
+ },
+ "dependencies": {
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ }
+ }
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "dev": true
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
+ },
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "~1.0.2"
+ }
+ },
+ "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==",
+ "requires": {
+ "psl": "^1.1.24",
+ "punycode": "^1.4.1"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+ }
+ }
+ },
+ "tslib": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
+ "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
+ "dev": true
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "tweetnacl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.1.tgz",
+ "integrity": "sha512-kcoMoKTPYnoeS50tzoqjPY3Uv9axeuuFAZY9M/9zFnhoVvRfxz9K29IMPD7jGmt2c8SW7i3gT9WqDl2+nV7p4A=="
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2"
+ }
+ },
+ "ulangts": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/ulangts/-/ulangts-1.0.6.tgz",
+ "integrity": "sha512-kgmTHMNHR8fH9GofVN7WAVEYri+ZpOQqv2PSrD8UgpI4ZlDhkgUc8AXdfZb9GBzad+UnzMqY3e0tht1A7SZMfQ=="
+ },
+ "umulavats": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/umulavats/-/umulavats-1.0.8.tgz",
+ "integrity": "sha512-/m0Eq64tboJtwsQWKVL1090IRcf6b9iZz4FAdNUzIP/5REI73rL1C8ZN5P/6UhHRf6aTCtkyLMTwdqR+Zr03BA==",
+ "requires": {
+ "node-fetch": "^2.6.0",
+ "ytdl-core": "^1.0.7"
+ }
+ },
+ "umusicts": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/umusicts/-/umusicts-1.0.5.tgz",
+ "integrity": "sha512-3zPOViQgQBi2VsujuW237Jg9cLzb7LgZi76vDkaSineyWvMBfTMISB2YVgkqIDX8/gzcGuu0sKDAxq19fjVqlA==",
+ "requires": {
+ "ytdl-core": "^1.0.7"
+ },
+ "dependencies": {
+ "m3u8stream": {
+ "version": "0.6.4",
+ "resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.6.4.tgz",
+ "integrity": "sha512-9WLF1VAtbVij03HWJKbVZ8L0orsoZiP53UljR5EwaDrozQFMsTGRDPe3PbzWV73He8a+j5H/hWZNoI2VkUSsiw==",
+ "requires": {
+ "miniget": "^1.6.1",
+ "sax": "^1.2.4"
+ }
+ },
+ "miniget": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/miniget/-/miniget-1.6.1.tgz",
+ "integrity": "sha512-I5oBwZmcaOuJrjQn7lpS29HM+aAZDbzKbX5ouxVyhFYdg6fA6YKOTwOCgzZQwlHuMek3FlCxz6eNrd4pOXbwOA=="
+ },
+ "ytdl-core": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-1.0.7.tgz",
+ "integrity": "sha512-gECPN5g5JnSy8hIq11xHIGe1T/Xzy0mWxQin3zhlJ3nG/YjPcEVEejrdd2XmA4Vv2Zw3+b1ZyDjmt37XfZri6A==",
+ "requires": {
+ "html-entities": "^1.1.3",
+ "m3u8stream": "^0.6.3",
+ "miniget": "^1.6.0",
+ "sax": "^1.1.3"
+ }
+ }
+ }
+ },
+ "umysql": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/umysql/-/umysql-0.1.1.tgz",
+ "integrity": "sha512-tI4IZ12E2DuUguOmxSgG97sKdd4GE++ZEJJp5uEcbUkJuLnsT/Mh2jdLKD+wa9bxrZ2xlfz6NRaDgGHAPp29zA==",
+ "requires": {
+ "mysql": "^2.17.1"
+ }
+ },
+ "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==",
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ },
+ "utimets": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/utimets/-/utimets-1.0.0.tgz",
+ "integrity": "sha512-Gq8V3+lZWCjIozWyfwBsx8BE6PzLVbZjYVJwtMX4lqR6Aqw8w/8pR2nbGTvnfTBzwqeA+hAtPD1oal1UI2JLUQ=="
+ },
+ "uuid": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
+ "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ=="
+ },
+ "uuniquets": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/uuniquets/-/uuniquets-1.0.0.tgz",
+ "integrity": "sha512-Yjf/o21YOYBPEkdNMsqAvRDhvSeGY7RnUq/UHWLHq4RcV/juk9QT2/QZSuAqEuAaeMMieF8QfLwT+kyyMWCIVA=="
+ },
+ "v8-compile-cache": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
+ "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
+ "dev": true
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "dev": true,
+ "requires": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ }
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "dev": true
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "write": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
+ "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+ "dev": true,
+ "requires": {
+ "mkdirp": "^0.5.1"
+ }
+ },
+ "ws": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
+ "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
+ "requires": {
+ "async-limiter": "~1.0.0"
+ }
+ },
+ "ytdl-core": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-1.0.7.tgz",
+ "integrity": "sha512-gECPN5g5JnSy8hIq11xHIGe1T/Xzy0mWxQin3zhlJ3nG/YjPcEVEejrdd2XmA4Vv2Zw3+b1ZyDjmt37XfZri6A==",
+ "requires": {
+ "html-entities": "^1.1.3",
+ "m3u8stream": "^0.6.3",
+ "miniget": "^1.6.0",
+ "sax": "^1.1.3"
+ }
+ },
+ "ytsr": {
+ "version": "0.1.10",
+ "resolved": "https://registry.npmjs.org/ytsr/-/ytsr-0.1.10.tgz",
+ "integrity": "sha512-9wq0TiFejj6T5t9WXx/7Uw7Pix6vtXq3nd7BbPvz3BwUjJ4rdW4maylj1/sW+AUaSNgZgVbVngH/Y1a7V1kzsA==",
+ "requires": {
+ "html-entities": "^1.1.3"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
index b64669e..e90d4b2 100644
--- a/package.json
+++ b/package.json
@@ -1,44 +1,43 @@
{
- "name": "seoa",
- "version": "0.1.0",
- "description": "The Discord bot is name Seoa",
- "main": "seoa.js",
+ "name": "seoabot",
+ "version": "2.0.0",
+ "description": "SeoaBot Remaster",
+ "main": "index.js",
"scripts": {
- "test": "node seoa.js",
- "check": "npx standard",
- "Client": "electron ./Client && node ./seoa"
+ "test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/seoaapp/SeoaBot.git"
},
- "author": "Seoa Bot Develoment Team",
- "license": "GPL-3.0-or-later",
+ "keywords": [
+ "SeoaBot"
+ ],
+ "author": "UnderC",
+ "license": "GPL-3.0",
"bugs": {
- "url": "https://github.com/seoaapp/SeoaBot/issues"
+ "url": "https://github.com/UnderC/SeoaBot/issues"
},
- "homepage": "https://github.com/seoaapp/SeoaBot#readme",
+ "homepage": "https://github.com/UnderC/SeoaBot#readme",
"dependencies": {
"discord.js": "^11.5.1",
"discord.js-lavalink": "^2.2.3",
- "ffmpeg": "^0.0.4",
- "i18n": "^0.8.3",
- "node-fetch": "^2.6.0",
- "node-opus": "^0.3.2",
- "os": "^0.1.1",
- "random-hex-color": "^1.0.1",
- "rethinkdb": "^2.3.3",
+ "opusscript": "0.0.7",
+ "request": "^2.88.0",
+ "ulangts": "^1.0.6",
+ "umulavats": "^1.0.8",
+ "umusicts": "^1.0.5",
"umysql": "^0.1.1",
- "yt-search": "^0.4.1",
- "ytdl-core": "^0.29.5"
+ "utimets": "^1.0.0",
+ "uuniquets": "^1.0.0",
+ "ytsr": "^0.1.10"
},
"devDependencies": {
- "eslint": "^6.1.0",
- "eslint-config-standard": "^13.0.1",
+ "eslint": "^6.3.0",
+ "eslint-config-standard": "^14.1.0",
"eslint-plugin-import": "^2.18.2",
- "eslint-plugin-node": "^9.1.0",
+ "eslint-plugin-node": "^10.0.0",
"eslint-plugin-promise": "^4.2.1",
- "eslint-plugin-standard": "^4.0.0",
- "standard": "^13.1.0"
+ "eslint-plugin-standard": "^4.0.1"
}
}
diff --git a/seoa.js b/seoa.js
index 5f064c9..2cbcbd0 100644
--- a/seoa.js
+++ b/seoa.js
@@ -1,160 +1,63 @@
-/**
- * @name Seoa
- * @description Seoa - Music Player
- * @license GPL-3.0-or-later
- * @author Seoa Bot Develoment Team
- * @version 0.1.0
- */
-
-'use strict' // strict mode
-
-/** Custom Discord.js Module */
-const Seoa = require('./classes/seoa')
-
-/** Database Manager Module */
+const { Client } = require('discord.js')
+const UlangTS = require('ulangts')
+const UmusicTS = require('umusicts')
+const UmulavaTS = require('umulavats')
const Umysql = require('umysql')
-const db = new Umysql('localhost', 'root', 'root', 'seoa')
-
-/** Seoa Settings */
-const config = require('./config')
-
-/** Random Color Picker Module */
-const randomHexColor = require('random-hex-color')
-
-/** Seoa Custom Discord Client */
-const seoa = new Seoa(config, db)
-
-/** Command Load */
-const commands = require(config.commands)
-Object.keys(commands).forEach(k => {
- const command = commands[k]
- console.log(`${config.commands}/${k} loaded`)
- command.callSign.forEach(c => {
- seoa.commands.set(c, command)
- })
-})
-
-/** i18n (locale) */
-const i18n = require('i18n')
-i18n.configure({
- directory: './locales'
-})
-
-seoa.on('ready', () => {
- console.info(seoa.user.username + ' is now Online!\n')
- seoa.user.setActivity(config.activity, { type: 'PLAYING' })
- seoa.guilds.forEach((guild) => {
- db.update('serverdata', { owner: guild.ownerID }, { id: guild.id })
- })
-})
-
-seoa.on('message', async (msg) => {
- if (msg.author.bot) return
- if (!msg.guild) return msg.channel.send(i18n.__({ phrase: 'BotNotDM', locale: 'en' }, seoa.user.username))
-
- let user = await db.select('userdata', { id: msg.author.id })
- user = user[0]
- if (!user) {
- db.insert('userdata', { id: msg.author.id })
- user = { id: msg.author.id, lang: 'en', quizPoint: 0 }
+const path = require('path')
+
+class Seoa extends Client {
+ constructor (config) {
+ super()
+ /** 봇 환경변수 불러오기 및 해석 */
+ this.config = UlangTS.parse(config, config)
+ this.loadKeys = ['classes', 'events', 'commandsOrigin']
+ /** 커맨드 & 클래스 & 이벤트 (리)로드 함수 */
+ this.load()
+
+ /** 언어 해석 모듈 (건들지 마시오) */
+ this.langs = new UlangTS(require(this.config.path.languages))
+ /** 음악 모듈 (건들지 마시오) */
+ this.m = this.config.music.useNative ? new UmusicTS() : new UmulavaTS(this)
+ /** 유튜브 영상 검색 모듈 (건들지 마시오) */
+ this.search = this.classes.Search && this.config.api.youtube.enable
+ ? new this.classes.Search(this.config.api.youtube.clientID).addParam('type', 'video').addParam('order', 'relevance')
+ : false
+ /** 데이터베이스 휘젓는 모듈 (건들지 마시오) */
+ this.db = this.config.mysql.enable
+ ? new Umysql(this.config.mysql.host, this.config.mysql.user, this.config.mysql.pass, this.config.mysql.database, this.config.mysql.port, this.config.mysql.charset)
+ : null
+ /** 사용자 정보 & 길드 정보 & 마이리스트 정보 불러오는 모듈 (입맛대로 고쳐쓰셈)) */
+ this.gi = this.db && this.classes.GetInf ? new this.classes.GetInf(this.db, 'userdata', 'serverdata', 'mylist') : null
+ this.login(this.config.token)
}
- let server = await db.select('serverdata', { id: msg.guild.id })
- server = server[0]
- if (!server) {
- db.insert('serverdata', { id: msg.guild.id, owner: msg.guild.ownerID })
- server = { id: msg.guild.id, lang: 'en', owner: msg.guild.ownerID }
+ is (flag, u, perm) {
+ /** flag (1 === Owner, 2 === Admin) */
+ return flag === 1 ? this.config.owners.includes(u.id) : flag === 2 ? this.is(1, u) || u.hasPermission(perm || 0) : true
}
- if (!msg.content.startsWith(config.prefix)) return // 레벨링 시스템 추가되면 제거될 예정
- console.info(msg.guild.name + '> ' + msg.author.username + '> ' + msg.content)
-
- if (msg.content === config.prefix) {
- // UpTime Caculator Start
- let totalSeconds = (seoa.uptime / 1000)
- const days = Math.floor(totalSeconds / 86400)
- totalSeconds %= 86400
- const hours = Math.floor(totalSeconds / 3600)
- totalSeconds %= 3600
- const minutes = Math.floor(totalSeconds / 60)
- const seconds = Math.floor(totalSeconds % 60)
- // UpTime Caculator End
- const inline = true
- const botInfoEmbed = {
- title: i18n.__({ phrase: 'Info', locale: server.lang }, seoa.user.username),
- description: i18n.__({ phrase: 'From', locale: server.lang }, msg.author.username),
- thumbnail: { url: seoa.user.avatarURL },
- color: parseInt(randomHexColor().substring(1), 16),
- fields: [
- {
- name: '\u200B',
- value: '\u200B',
- inline
- },
- {
- name: i18n.__({ phrase: 'Name&Tag', locale: server.lang }, seoa.user.username),
- value: seoa.user.tag,
- inline
- },
- {
- name: i18n.__({ phrase: 'ID', locale: server.lang }, seoa.user.username),
- value: seoa.user.id,
- inline
- },
- {
- name: i18n.__({ phrase: 'CommandSize', locale: server.lang }, seoa.user.username),
- value: seoa.commands.size,
- inline
- },
- {
- name: i18n.__({ phrase: 'UsersSize', locale: server.lang }, seoa.user.username),
- value: seoa.users.size,
- inline
- },
- {
- name: i18n.__({ phrase: 'ChannelsSize', locale: server.lang }, seoa.user.username),
- value: seoa.channels.size,
- inline
- },
- {
- name: i18n.__({ phrase: 'ServersSize', locale: server.lang }, seoa.user.username),
- value: seoa.guilds.size,
- inline
- },
- {
- name: i18n.__({ phrase: 'BotDay', locale: server.lang }, seoa.user.username),
- value: seoa.user.createdAt,
- inline
- },
- {
- name: i18n.__({ phrase: 'UpdataDay', locale: server.lang }, seoa.user.username),
- value: seoa.readyAt,
- inline
- },
- {
- name: i18n.__({ phrase: 'UpTime', locale: server.lang }, seoa.user.username),
- value: i18n.__({ phrase: 'Time', locale: server.lang }, days, hours, minutes, seconds),
- inline
- },
- {
- name: i18n.__({ phrase: 'APIPING', locale: server.lang }, seoa.user.username),
- value: Math.round(seoa.ping),
- inline
- }
- ]
- }
- msg.channel.send({ embed: botInfoEmbed })
- } else {
- const query = {
- fullText: msg.content,
- message: msg.content.split(config.prefix)[1],
- command: msg.content.split(config.prefix)[1].split(' ')[0],
- args: msg.content.split(config.prefix)[1].split(' ').slice(1)
- }
-
- const runCommand = seoa.commands.get(query.command.toLowerCase())
- if (runCommand) runCommand.run(seoa, msg, query)
+ load (loadKeys) {
+ (loadKeys || this.loadKeys).forEach(lK => {
+ /** 모듈 리로드를 위해 캐시 제거 */
+ delete require.cache[path.resolve(this.config.path[lK], './index.js')]
+ const temp = require(this.config.path[lK])
+ /** 모듈 리로드를 위해 캐시 제거 */
+ Object.keys(temp).forEach(k => { delete require.cache[path.resolve(this.config.path[lK], `./${k}.js`)] })
+ this[lK] = require(this.config.path[lK])
+ })
+
+ /** 커맨드 초기화 */
+ this.commands = new Map()
+ /** 기존에 할당 된 이벤트 초기화 및 새로운 이벤트 할당 */
+ Object.values(this.removeAllListeners().events).forEach(_ => new _(this))
+ /** 커맨드 할당 */
+ Object.values(this.commandsOrigin).forEach(_ => {
+ const command = new _()
+ command.alias.forEach(alia => {
+ this.commands.set(alia, command)
+ })
+ })
}
-})
+}
-/** @copyright (c) 2019. Seoa Development Team. all rights reserved. */
+module.exports = Seoa
diff --git a/seoa.sql b/seoa.sql
index 23f7291..2ddcd1d 100644
--- a/seoa.sql
+++ b/seoa.sql
@@ -25,11 +25,15 @@ DROP TABLE IF EXISTS `serverdata`;
CREATE TABLE `serverdata` (
`id` text NOT NULL,
`lang` varchar(4) NOT NULL DEFAULT 'en',
- `owner` text NOT NULL,
+ `owner` text,
`channelnoticeid` text
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+) ENGINE=InnoDB;
/*!40101 SET character_set_client = @saved_cs_client */;
+--
+-- Table structure for table `userdata`
+--
+
DROP TABLE IF EXISTS `userdata`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
@@ -37,8 +41,25 @@ CREATE TABLE `userdata` (
`id` text NOT NULL,
`quizPoint` int(11) NOT NULL DEFAULT '0',
`lang` varchar(4) NOT NULL DEFAULT 'en'
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+) ENGINE=InnoDB;
/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `mylist`
+--
+
+DROP TABLE IF EXISTS `mylist`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!50503 SET character_set_client = utf8mb4 */;
+CREATE TABLE `mylist` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `name` text NOT NULL,
+ `list` text NOT NULL,
+ `author` text NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
@@ -48,4 +69,4 @@ CREATE TABLE `userdata` (
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2019-08-10 20:17:07
+-- Dump completed on 2019-08-10 20:17:07
\ No newline at end of file
diff --git a/shard.js b/shard.js
deleted file mode 100644
index 0d19133..0000000
--- a/shard.js
+++ /dev/null
@@ -1,8 +0,0 @@
-const { ShardingManager: Shard } = require('discord.js')
-const manager = new Shard('./seoa.js')
-
-manager.spawn(5)
-
-manager.on('launch', (shard) => {
- console.log('Sharded: ' + shard.id)
-})
diff --git a/stream/dummy b/stream/dummy
deleted file mode 100644
index bac6b5d..0000000
--- a/stream/dummy
+++ /dev/null
@@ -1,2 +0,0 @@
-와! 이것을 읽으셨군요!
-더미 파일인데 읽으셨다니!
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
deleted file mode 100644
index 35e2c04..0000000
--- a/yarn.lock
+++ /dev/null
@@ -1,2279 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@babel/code-frame@^7.0.0":
- version "7.5.5"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d"
- integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==
- dependencies:
- "@babel/highlight" "^7.0.0"
-
-"@babel/highlight@^7.0.0":
- version "7.5.0"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540"
- integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==
- dependencies:
- chalk "^2.0.0"
- esutils "^2.0.2"
- js-tokens "^4.0.0"
-
-abbrev@1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
- integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
-
-acorn-jsx@^5.0.0:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e"
- integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==
-
-acorn@^6.0.7:
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.1.tgz#3ed8422d6dec09e6121cc7a843ca86a330a86b51"
- integrity sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q==
-
-ajv@^6.10.0, ajv@^6.10.2:
- version "6.10.2"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52"
- integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==
- dependencies:
- fast-deep-equal "^2.0.1"
- fast-json-stable-stringify "^2.0.0"
- json-schema-traverse "^0.4.1"
- uri-js "^4.2.2"
-
-ambi@^2.2.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/ambi/-/ambi-2.5.0.tgz#7c8e372be48891157e7cea01cb6f9143d1f74220"
- integrity sha1-fI43K+SIkRV+fOoBy2+RQ9H3QiA=
- dependencies:
- editions "^1.1.1"
- typechecker "^4.3.0"
-
-ansi-escapes@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
- integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
-
-ansi-regex@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
- integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
-
-ansi-regex@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
- integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
-
-ansi-regex@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
- integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
-
-ansi-styles@^3.2.0, ansi-styles@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
- integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
- dependencies:
- color-convert "^1.9.0"
-
-argparse@^1.0.7:
- version "1.0.10"
- resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
- integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
- dependencies:
- sprintf-js "~1.0.2"
-
-array-includes@^3.0.3:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d"
- integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=
- dependencies:
- define-properties "^1.1.2"
- es-abstract "^1.7.0"
-
-astral-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
- integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
-
-async-limiter@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
- integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==
-
-async.eachof@0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/async.eachof/-/async.eachof-0.5.2.tgz#637fff6e7030275342257ff5f58b3b84f61ceca6"
- integrity sha1-Y3//bnAwJ1NCJX/19Ys7hPYc7KY=
- dependencies:
- async.util.keyiterator "0.5.2"
- async.util.noop "0.5.2"
- async.util.once "0.5.2"
- async.util.onlyonce "0.5.2"
-
-async.parallel@~0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/async.parallel/-/async.parallel-0.5.2.tgz#c2fd995a47eb891952fa9de0dd0b61da6fadbf11"
- integrity sha1-wv2ZWkfriRlS+p3g3Qth2m+tvxE=
- dependencies:
- async.eachof "0.5.2"
- async.util.parallel "0.5.2"
-
-async.util.isarray@0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/async.util.isarray/-/async.util.isarray-0.5.2.tgz#e62dac8f2636f65875dcf7521c2d24d0dfb2bbdf"
- integrity sha1-5i2sjyY29lh13PdSHC0k0N+yu98=
-
-async.util.isarraylike@0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/async.util.isarraylike/-/async.util.isarraylike-0.5.2.tgz#8e7f87da9141f2f0996e8040477d0d4efe3f50f8"
- integrity sha1-jn+H2pFB8vCZboBAR30NTv4/UPg=
- dependencies:
- async.util.isarray "0.5.2"
-
-async.util.keyiterator@0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/async.util.keyiterator/-/async.util.keyiterator-0.5.2.tgz#339e6ce8f89d000433fb7814e22728f3f175090d"
- integrity sha1-M55s6PidAAQz+3gU4ico8/F1CQ0=
- dependencies:
- async.util.isarraylike "0.5.2"
- async.util.keys "0.5.2"
-
-async.util.keys@0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/async.util.keys/-/async.util.keys-0.5.2.tgz#5c34ddd8a3edb7a7883c9b5fe2126781b2098af6"
- integrity sha1-XDTd2KPtt6eIPJtf4hJngbIJivY=
-
-async.util.noop@0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/async.util.noop/-/async.util.noop-0.5.2.tgz#bdd62b97cb0aa3f60b586ad148468698975e58b9"
- integrity sha1-vdYrl8sKo/YLWGrRSEaGmJdeWLk=
-
-async.util.once@0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/async.util.once/-/async.util.once-0.5.2.tgz#1453cb7404cad0822694fababc47a96e5caa7216"
- integrity sha1-FFPLdATK0IImlPq6vEepblyqchY=
-
-async.util.onlyonce@0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/async.util.onlyonce/-/async.util.onlyonce-0.5.2.tgz#b8e6fc004adc923164d79e32f2813ee465c24ff2"
- integrity sha1-uOb8AErckjFk154y8oE+5GXCT/I=
-
-async.util.parallel@0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/async.util.parallel/-/async.util.parallel-0.5.2.tgz#233524e3d6faffd5e995d75476b8d924f96808cd"
- integrity sha1-IzUk49b6/9XplddUdrjZJPloCM0=
- dependencies:
- async.util.isarraylike "0.5.2"
- async.util.noop "0.5.2"
- async.util.restparam "0.5.2"
-
-async.util.restparam@0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/async.util.restparam/-/async.util.restparam-0.5.2.tgz#03efebf3c0277b97220e525aba750f5e04fc80cd"
- integrity sha1-A+/r88Ane5ciDlJaunUPXgT8gM0=
-
-async@~1.5.2:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
- integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
-
-balanced-match@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
- integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
-
-bignumber.js@7.2.1:
- version "7.2.1"
- resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-7.2.1.tgz#80c048759d826800807c4bfd521e50edbba57a5f"
- integrity sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==
-
-bindings@1:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
- integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==
- dependencies:
- file-uri-to-path "1.0.0"
-
-bindings@~1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11"
- integrity sha1-FK1hE4EtLTfXLme0ystLtyZQXxE=
-
-"bluebird@>= 2.3.2 < 3":
- version "2.11.0"
- resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1"
- integrity sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=
-
-boolbase@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
- integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
-
-brace-expansion@^1.1.7:
- version "1.1.11"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
- integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
- dependencies:
- balanced-match "^1.0.0"
- concat-map "0.0.1"
-
-callsites@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
- integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
-
-chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
- integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
- dependencies:
- ansi-styles "^3.2.1"
- escape-string-regexp "^1.0.5"
- supports-color "^5.3.0"
-
-chardet@^0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
- integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
-
-cheerio@~0.22.0:
- version "0.22.0"
- resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e"
- integrity sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=
- dependencies:
- css-select "~1.2.0"
- dom-serializer "~0.1.0"
- entities "~1.1.1"
- htmlparser2 "^3.9.1"
- lodash.assignin "^4.0.9"
- lodash.bind "^4.1.4"
- lodash.defaults "^4.0.1"
- lodash.filter "^4.4.0"
- lodash.flatten "^4.2.0"
- lodash.foreach "^4.3.0"
- lodash.map "^4.4.0"
- lodash.merge "^4.4.0"
- lodash.pick "^4.2.1"
- lodash.reduce "^4.4.0"
- lodash.reject "^4.4.0"
- lodash.some "^4.4.0"
-
-cli-color@~1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-1.2.0.tgz#3a5ae74fd76b6267af666e69e2afbbd01def34d1"
- integrity sha1-OlrnT9drYmevZm5p4q+70B3vNNE=
- dependencies:
- ansi-regex "^2.1.1"
- d "1"
- es5-ext "^0.10.12"
- es6-iterator "2"
- memoizee "^0.4.3"
- timers-ext "0.1"
-
-cli-cursor@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
- integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=
- dependencies:
- restore-cursor "^2.0.0"
-
-cli-width@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
- integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=
-
-color-convert@^1.9.0:
- version "1.9.3"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
- integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
- dependencies:
- color-name "1.1.3"
-
-color-name@1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
- integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
-
-commander@^2.9.0:
- version "2.20.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
- integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
-
-concat-map@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
- integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
-
-contains-path@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
- integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=
-
-core-util-is@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
- integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
-
-cross-spawn@^6.0.5:
- version "6.0.5"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
- 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"
-
-csextends@^1.0.3:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/csextends/-/csextends-1.2.0.tgz#6374b210984b54d4495f29c99d3dd069b80543e5"
- integrity sha512-S/8k1bDTJIwuGgQYmsRoE+8P+ohV32WhQ0l4zqrc0XDdxOhjQQD7/wTZwCzoZX53jSX3V/qwjT+OkPTxWQcmjg==
-
-css-select@~1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
- integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=
- dependencies:
- boolbase "~1.0.0"
- css-what "2.1"
- domutils "1.5.1"
- nth-check "~1.0.1"
-
-css-what@2.1:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
- integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==
-
-d@1:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
- integrity sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=
- dependencies:
- es5-ext "^0.10.9"
-
-dasu@0.0.23:
- version "0.0.23"
- resolved "https://registry.yarnpkg.com/dasu/-/dasu-0.0.23.tgz#c4a966667ee7a83ca43c5f81ddf8af8ba90a9b2c"
- integrity sha1-xKlmZn7nqDykPF+B3fivi6kKmyw=
-
-debug-log@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f"
- integrity sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=
-
-debug@*, debug@^4.0.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
- integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
- dependencies:
- ms "^2.1.1"
-
-debug@2, debug@^2.6.8, debug@^2.6.9:
- version "2.6.9"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
- integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
- dependencies:
- ms "2.0.0"
-
-deep-is@~0.1.3:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
- integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
-
-define-properties@^1.1.2, define-properties@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
- integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
- dependencies:
- object-keys "^1.0.12"
-
-deglob@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/deglob/-/deglob-3.1.0.tgz#1868193193d3432a5326e8fb2052b439a43a454e"
- integrity sha512-al10l5QAYaM/PeuXkAr1Y9AQz0LCtWsnJG23pIgh44hDxHFOj36l6qvhfjnIWBYwZOqM1fXUFV9tkjL7JPdGvw==
- dependencies:
- find-root "^1.0.0"
- glob "^7.0.5"
- ignore "^5.0.0"
- pkg-config "^1.1.0"
- run-parallel "^1.1.2"
- uniq "^1.0.1"
-
-discord.js-lavalink@^2.2.3:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/discord.js-lavalink/-/discord.js-lavalink-2.2.3.tgz#be52b6b2d503dbc55284ae162d3aae57abcf6c6a"
- integrity sha512-HR7LJ8EhJ3iVeRmfjBOdvBA5/eO25ncbnZOn12x0Sj/JVFd0h5ClGi6w4giWPrnw8fDvCVxKl7+c0Y/6tLgBDQ==
- dependencies:
- ws "^6.1.4"
-
-discord.js@^11.5.1:
- version "11.5.1"
- resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-11.5.1.tgz#910fb9f6410328581093e044cafb661783a4d9e8"
- integrity sha512-tGhV5xaZXE3Z+4uXJb3hYM6gQ1NmnSxp9PClcsSAYFVRzH6AJH74040mO3afPDMWEAlj8XsoPXXTJHTxesqcGw==
- dependencies:
- long "^4.0.0"
- prism-media "^0.0.3"
- snekfetch "^3.6.4"
- tweetnacl "^1.0.0"
- ws "^6.0.0"
-
-doctrine@1.5.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
- integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=
- dependencies:
- esutils "^2.0.2"
- isarray "^1.0.0"
-
-doctrine@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
- integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
- dependencies:
- esutils "^2.0.2"
-
-doctrine@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
- integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
- dependencies:
- esutils "^2.0.2"
-
-dom-serializer@0, dom-serializer@~0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0"
- integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==
- dependencies:
- domelementtype "^1.3.0"
- entities "^1.1.1"
-
-domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
- integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
-
-domhandler@^2.3.0:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
- integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==
- dependencies:
- domelementtype "1"
-
-domutils@1.5.1:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
- integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=
- dependencies:
- dom-serializer "0"
- domelementtype "1"
-
-domutils@^1.5.1:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
- integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
- dependencies:
- dom-serializer "0"
- domelementtype "1"
-
-eachr@^2.0.2:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/eachr/-/eachr-2.0.4.tgz#466f7caa10708f610509e32c807aafe57fc122bf"
- integrity sha1-Rm98qhBwj2EFCeMsgHqv5X/BIr8=
- dependencies:
- typechecker "^2.0.8"
-
-editions@^1.1.1, editions@^1.3.3:
- version "1.3.4"
- resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.4.tgz#3662cb592347c3168eb8e498a0ff73271d67f50b"
- integrity sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==
-
-editions@^2.1.0, editions@^2.1.2:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/editions/-/editions-2.1.3.tgz#727ccf3ec2c7b12dcc652c71000f16c4824d6f7d"
- integrity sha512-xDZyVm0A4nLgMNWVVLJvcwMjI80ShiH/27RyLiCnW1L273TcJIA25C4pwJ33AWV01OX6UriP35Xu+lH4S7HWQw==
- dependencies:
- errlop "^1.1.1"
- semver "^5.6.0"
-
-emoji-regex@^7.0.1:
- version "7.0.3"
- resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
- integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
-
-entities@^1.1.1, entities@~1.1.1:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
- integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
-
-errlop@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/errlop/-/errlop-1.1.1.tgz#d9ae4c76c3e64956c5d79e6e035d6343bfd62250"
- integrity sha512-WX7QjiPHhsny7/PQvrhS5VMizXXKoKCS3udaBp8gjlARdbn+XmK300eKBAAN0hGyRaTCtRpOaxK+xFVPUJ3zkw==
- dependencies:
- editions "^2.1.2"
-
-error-ex@^1.2.0, error-ex@^1.3.1:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
- integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
- dependencies:
- is-arrayish "^0.2.1"
-
-es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.7.0:
- version "1.13.0"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
- integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
- dependencies:
- es-to-primitive "^1.2.0"
- function-bind "^1.1.1"
- has "^1.0.3"
- is-callable "^1.1.4"
- is-regex "^1.0.4"
- object-keys "^1.0.12"
-
-es-to-primitive@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
- integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==
- dependencies:
- is-callable "^1.1.4"
- is-date-object "^1.0.1"
- is-symbol "^1.0.2"
-
-es5-ext@^0.10.12, es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.9, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46:
- version "0.10.50"
- resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.50.tgz#6d0e23a0abdb27018e5ac4fd09b412bc5517a778"
- integrity sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==
- dependencies:
- es6-iterator "~2.0.3"
- es6-symbol "~3.1.1"
- next-tick "^1.0.0"
-
-es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
- integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c=
- dependencies:
- d "1"
- es5-ext "^0.10.35"
- es6-symbol "^3.1.1"
-
-es6-symbol@^3.1.1, es6-symbol@~3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"
- integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=
- dependencies:
- d "1"
- es5-ext "~0.10.14"
-
-es6-weak-map@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f"
- integrity sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=
- dependencies:
- d "1"
- es5-ext "^0.10.14"
- es6-iterator "^2.0.1"
- es6-symbol "^3.1.1"
-
-escape-string-regexp@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
- integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
-
-eslint-config-standard-jsx@7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-7.0.0.tgz#05c737d9eab524860fe6853cfd535045c3e07e5b"
- integrity sha512-OiKOF3MFVmWOCVfsi8GHlVorOEiBsPzAnUhM3c6HML94O2krbdQ/eMABySHgHHOIBYRls9sR9I3lo6O0vXhVEg==
-
-eslint-config-standard@13.0.1, eslint-config-standard@^13.0.1:
- version "13.0.1"
- resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-13.0.1.tgz#c9c6ffe0cfb8a51535bc5c7ec9f70eafb8c6b2c0"
- integrity sha512-zLKp4QOgq6JFgRm1dDCVv1Iu0P5uZ4v5Wa4DTOkg2RFMxdCX/9Qf7lz9ezRj2dBRa955cWQF/O/LWEiYWAHbTw==
-
-eslint-import-resolver-node@^0.3.2:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a"
- integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==
- dependencies:
- debug "^2.6.9"
- resolve "^1.5.0"
-
-eslint-module-utils@^2.4.0:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz#7b4675875bf96b0dbf1b21977456e5bb1f5e018c"
- integrity sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw==
- dependencies:
- debug "^2.6.8"
- pkg-dir "^2.0.0"
-
-eslint-plugin-es@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-1.4.0.tgz#475f65bb20c993fc10e8c8fe77d1d60068072da6"
- integrity sha512-XfFmgFdIUDgvaRAlaXUkxrRg5JSADoRC8IkKLc/cISeR3yHVMefFHQZpcyXXEUUPHfy5DwviBcrfqlyqEwlQVw==
- dependencies:
- eslint-utils "^1.3.0"
- regexpp "^2.0.1"
-
-eslint-plugin-import@^2.18.2, eslint-plugin-import@~2.18.0:
- version "2.18.2"
- resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6"
- integrity sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==
- dependencies:
- array-includes "^3.0.3"
- contains-path "^0.1.0"
- debug "^2.6.9"
- doctrine "1.5.0"
- eslint-import-resolver-node "^0.3.2"
- eslint-module-utils "^2.4.0"
- has "^1.0.3"
- minimatch "^3.0.4"
- object.values "^1.1.0"
- read-pkg-up "^2.0.0"
- resolve "^1.11.0"
-
-eslint-plugin-node@^9.1.0, eslint-plugin-node@~9.1.0:
- version "9.1.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-9.1.0.tgz#f2fd88509a31ec69db6e9606d76dabc5adc1b91a"
- integrity sha512-ZwQYGm6EoV2cfLpE1wxJWsfnKUIXfM/KM09/TlorkukgCAwmkgajEJnPCmyzoFPQQkmvo5DrW/nyKutNIw36Mw==
- dependencies:
- eslint-plugin-es "^1.4.0"
- eslint-utils "^1.3.1"
- ignore "^5.1.1"
- minimatch "^3.0.4"
- resolve "^1.10.1"
- semver "^6.1.0"
-
-eslint-plugin-promise@^4.2.1, eslint-plugin-promise@~4.2.1:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a"
- integrity sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==
-
-eslint-plugin-react@~7.14.2:
- version "7.14.3"
- resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz#911030dd7e98ba49e1b2208599571846a66bdf13"
- integrity sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA==
- dependencies:
- array-includes "^3.0.3"
- doctrine "^2.1.0"
- has "^1.0.3"
- jsx-ast-utils "^2.1.0"
- object.entries "^1.1.0"
- object.fromentries "^2.0.0"
- object.values "^1.1.0"
- prop-types "^15.7.2"
- resolve "^1.10.1"
-
-eslint-plugin-standard@^4.0.0, eslint-plugin-standard@~4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.0.tgz#f845b45109c99cd90e77796940a344546c8f6b5c"
- integrity sha512-OwxJkR6TQiYMmt1EsNRMe5qG3GsbjlcOhbGUBY4LtavF9DsLaTcoR+j2Tdjqi23oUwKNUqX7qcn5fPStafMdlA==
-
-eslint-scope@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9"
- integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==
- dependencies:
- esrecurse "^4.1.0"
- estraverse "^4.1.1"
-
-eslint-utils@^1.3.0, eslint-utils@^1.3.1:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.0.tgz#e2c3c8dba768425f897cf0f9e51fe2e241485d4c"
- integrity sha512-7ehnzPaP5IIEh1r1tkjuIrxqhNkzUJa9z3R92tLJdZIVdWaczEhr3EbhGtsMrVxi1KeR8qA7Off6SWc5WNQqyQ==
- dependencies:
- eslint-visitor-keys "^1.0.0"
-
-eslint-visitor-keys@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"
- integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==
-
-eslint@^6.1.0, eslint@~6.1.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.1.0.tgz#06438a4a278b1d84fb107d24eaaa35471986e646"
- integrity sha512-QhrbdRD7ofuV09IuE2ySWBz0FyXCq0rriLTZXZqaWSI79CVtHVRdkFuFTViiqzZhkCgfOh9USpriuGN2gIpZDQ==
- dependencies:
- "@babel/code-frame" "^7.0.0"
- ajv "^6.10.0"
- chalk "^2.1.0"
- cross-spawn "^6.0.5"
- debug "^4.0.1"
- doctrine "^3.0.0"
- eslint-scope "^5.0.0"
- eslint-utils "^1.3.1"
- eslint-visitor-keys "^1.0.0"
- espree "^6.0.0"
- esquery "^1.0.1"
- esutils "^2.0.2"
- file-entry-cache "^5.0.1"
- functional-red-black-tree "^1.0.1"
- glob-parent "^5.0.0"
- globals "^11.7.0"
- ignore "^4.0.6"
- import-fresh "^3.0.0"
- imurmurhash "^0.1.4"
- inquirer "^6.4.1"
- is-glob "^4.0.0"
- js-yaml "^3.13.1"
- json-stable-stringify-without-jsonify "^1.0.1"
- levn "^0.3.0"
- lodash "^4.17.14"
- minimatch "^3.0.4"
- mkdirp "^0.5.1"
- natural-compare "^1.4.0"
- optionator "^0.8.2"
- progress "^2.0.0"
- regexpp "^2.0.1"
- semver "^6.1.2"
- strip-ansi "^5.2.0"
- strip-json-comments "^3.0.1"
- table "^5.2.3"
- text-table "^0.2.0"
- v8-compile-cache "^2.0.3"
-
-espree@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/espree/-/espree-6.0.0.tgz#716fc1f5a245ef5b9a7fdb1d7b0d3f02322e75f6"
- integrity sha512-lJvCS6YbCn3ImT3yKkPe0+tJ+mH6ljhGNjHQH9mRtiO6gjhVAOhVXW1yjnwqGwTkK3bGbye+hb00nFNmu0l/1Q==
- dependencies:
- acorn "^6.0.7"
- acorn-jsx "^5.0.0"
- eslint-visitor-keys "^1.0.0"
-
-esprima@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
- integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
-
-esquery@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708"
- integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==
- dependencies:
- estraverse "^4.0.0"
-
-esrecurse@^4.1.0:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
- integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==
- dependencies:
- estraverse "^4.1.0"
-
-estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
- integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=
-
-esutils@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
- integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
-
-event-emitter@^0.3.5:
- version "0.3.5"
- resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
- integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=
- dependencies:
- d "1"
- es5-ext "~0.10.14"
-
-extendr@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/extendr/-/extendr-2.1.0.tgz#301aa0bbea565f4d2dc8f570f2a22611a8527b56"
- integrity sha1-MBqgu+pWX00tyPVw8qImEahSe1Y=
- dependencies:
- typechecker "~2.0.1"
-
-external-editor@^3.0.3:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
- integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
- dependencies:
- chardet "^0.7.0"
- iconv-lite "^0.4.24"
- tmp "^0.0.33"
-
-extract-opts@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/extract-opts/-/extract-opts-2.2.0.tgz#1fa28eba7352c6db480f885ceb71a46810be6d7d"
- integrity sha1-H6KOunNSxttID4hc63GkaBC+bX0=
- dependencies:
- typechecker "~2.0.1"
-
-fast-deep-equal@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
- integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
-
-fast-json-stable-stringify@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
- integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
-
-fast-levenshtein@~2.0.4:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
- integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
-
-ffmpeg@^0.0.4:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/ffmpeg/-/ffmpeg-0.0.4.tgz#1c460df8e7da5127f62ceef4bfa06c59c89630cb"
- integrity sha1-HEYN+OfaUSf2LO70v6BsWciWMMs=
- dependencies:
- when ">= 0.0.1"
-
-figures@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
- integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=
- dependencies:
- escape-string-regexp "^1.0.5"
-
-file-entry-cache@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c"
- integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==
- dependencies:
- flat-cache "^2.0.1"
-
-file-uri-to-path@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
- integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
-
-find-root@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4"
- integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==
-
-find-up@^2.0.0, find-up@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
- integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
- dependencies:
- locate-path "^2.0.0"
-
-find-up@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
- integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
- dependencies:
- locate-path "^3.0.0"
-
-flat-cache@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0"
- integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==
- dependencies:
- flatted "^2.0.0"
- rimraf "2.6.3"
- write "1.0.3"
-
-flatted@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08"
- integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==
-
-fs.realpath@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
- integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
-
-function-bind@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
- integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
-
-functional-red-black-tree@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
- integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
-
-get-stdin@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6"
- integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==
-
-glob-parent@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954"
- integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==
- dependencies:
- is-glob "^4.0.1"
-
-glob@^7.0.5, glob@^7.1.3:
- version "7.1.4"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
- integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
- 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"
-
-glob@~6.0.4:
- version "6.0.4"
- resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22"
- integrity sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=
- dependencies:
- inflight "^1.0.4"
- inherits "2"
- minimatch "2 || 3"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
-globals@^11.7.0:
- version "11.12.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
- integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
-
-graceful-fs@*:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.1.tgz#1c1f0c364882c868f5bff6512146328336a11b1d"
- integrity sha512-b9usnbDGnD928gJB3LrCmxoibr3VE4U2SMo5PBuBnokWyDADTqDPXg4YpwKF1trpH+UbGp7QLicO3+aWEy0+mw==
-
-graceful-fs@^4.1.15, graceful-fs@^4.1.2:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b"
- integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==
-
-has-flag@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
- integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
-
-has-symbols@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
- integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=
-
-has@^1.0.1, has@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
- integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
- dependencies:
- function-bind "^1.1.1"
-
-hosted-git-info@^2.1.4:
- version "2.7.1"
- resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"
- integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==
-
-html-entities@^1.1.3:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
- integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=
-
-htmlparser2@^3.9.1:
- version "3.10.1"
- resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
- integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==
- dependencies:
- domelementtype "^1.3.1"
- domhandler "^2.3.0"
- domutils "^1.5.1"
- entities "^1.1.1"
- inherits "^2.0.1"
- readable-stream "^3.1.1"
-
-i18n@^0.8.3:
- version "0.8.3"
- resolved "https://registry.yarnpkg.com/i18n/-/i18n-0.8.3.tgz#2d8cf1c24722602c2041d01ba6ae5eaa51388f0e"
- integrity sha1-LYzxwkciYCwgQdAbpq5eqlE4jw4=
- dependencies:
- debug "*"
- make-plural "^3.0.3"
- math-interval-parser "^1.1.0"
- messageformat "^0.3.1"
- mustache "*"
- sprintf-js ">=1.0.3"
-
-iconv-lite@^0.4.24:
- version "0.4.24"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
- integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
- dependencies:
- safer-buffer ">= 2.1.2 < 3"
-
-ignore@^4.0.6:
- version "4.0.6"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
- integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
-
-ignore@^5.0.0, ignore@^5.1.1:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.2.tgz#e28e584d43ad7e92f96995019cc43b9e1ac49558"
- integrity sha512-vdqWBp7MyzdmHkkRWV5nY+PfGRbYbahfuvsBCh277tq+w9zyNi7h5CYJCK0kmzti9kU+O/cB7sE8HvKv6aXAKQ==
-
-ignorefs@^1.0.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/ignorefs/-/ignorefs-1.2.0.tgz#da59fb858976e4a5e43702ccd1f282fdbc9e5756"
- integrity sha1-2ln7hYl25KXkNwLM0fKC/byeV1Y=
- dependencies:
- editions "^1.3.3"
- ignorepatterns "^1.1.0"
-
-ignorepatterns@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/ignorepatterns/-/ignorepatterns-1.1.0.tgz#ac8f436f2239b5dfb66d5f0d3a904a87ac67cc5e"
- integrity sha1-rI9DbyI5td+2bV8NOpBKh6xnzF4=
-
-import-fresh@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118"
- integrity sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==
- dependencies:
- parent-module "^1.0.0"
- resolve-from "^4.0.0"
-
-imurmurhash@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
- integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
-
-inflight@^1.0.4:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
- integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
- dependencies:
- once "^1.3.0"
- wrappy "1"
-
-inherits@2:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
- integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-
-inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
- integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
-
-inquirer@^6.4.1:
- version "6.5.0"
- resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42"
- integrity sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==
- dependencies:
- ansi-escapes "^3.2.0"
- chalk "^2.4.2"
- cli-cursor "^2.1.0"
- cli-width "^2.0.0"
- external-editor "^3.0.3"
- figures "^2.0.0"
- lodash "^4.17.12"
- mute-stream "0.0.7"
- run-async "^2.2.0"
- rxjs "^6.4.0"
- string-width "^2.1.0"
- strip-ansi "^5.1.0"
- through "^2.3.6"
-
-is-arrayish@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
- integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
-
-is-callable@^1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
- integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
-
-is-date-object@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
- integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=
-
-is-extglob@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
- integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
-
-is-fullwidth-code-point@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
- integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
-
-is-glob@^4.0.0, is-glob@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
- integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
- dependencies:
- is-extglob "^2.1.1"
-
-is-promise@^2.1, is-promise@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
- integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=
-
-is-regex@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
- integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=
- dependencies:
- has "^1.0.1"
-
-is-symbol@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
- integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==
- dependencies:
- has-symbols "^1.0.0"
-
-isarray@^1.0.0, isarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
- integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
-
-isexe@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
- integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
-
-"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
- integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
-
-js-yaml@^3.13.1:
- version "3.13.1"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
- integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
- dependencies:
- argparse "^1.0.7"
- esprima "^4.0.0"
-
-json-parse-better-errors@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
- integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
-
-json-schema-traverse@^0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
- integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
-
-json-stable-stringify-without-jsonify@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
- integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
-
-jsx-ast-utils@^2.1.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz#4d4973ebf8b9d2837ee91a8208cc66f3a2776cfb"
- integrity sha512-v3FxCcAf20DayI+uxnCuw795+oOIkVu6EnJ1+kSzhqqTZHNkTZ7B66ZgLp4oLJ/gbA64cI0B7WRoHZMSRdyVRQ==
- dependencies:
- array-includes "^3.0.3"
- object.assign "^4.1.0"
-
-keypress@~0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/keypress/-/keypress-0.2.1.tgz#1e80454250018dbad4c3fe94497d6e67b6269c77"
- integrity sha1-HoBFQlABjbrUw/6USX1uZ7YmnHc=
-
-levn@^0.3.0, levn@~0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
- integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
- dependencies:
- prelude-ls "~1.1.2"
- type-check "~0.3.2"
-
-load-json-file@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
- integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=
- dependencies:
- graceful-fs "^4.1.2"
- parse-json "^2.2.0"
- pify "^2.0.0"
- strip-bom "^3.0.0"
-
-load-json-file@^5.2.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-5.3.0.tgz#4d3c1e01fa1c03ea78a60ac7af932c9ce53403f3"
- integrity sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==
- dependencies:
- graceful-fs "^4.1.15"
- parse-json "^4.0.0"
- pify "^4.0.1"
- strip-bom "^3.0.0"
- type-fest "^0.3.0"
-
-locate-path@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
- integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
- dependencies:
- p-locate "^2.0.0"
- path-exists "^3.0.0"
-
-locate-path@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
- integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
- dependencies:
- p-locate "^3.0.0"
- path-exists "^3.0.0"
-
-lodash.assignin@^4.0.9:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2"
- integrity sha1-uo31+4QesKPoBEIysOJjqNxqKKI=
-
-lodash.bind@^4.1.4:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35"
- integrity sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=
-
-lodash.defaults@^4.0.1:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
- integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=
-
-lodash.filter@^4.4.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace"
- integrity sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=
-
-lodash.flatten@^4.2.0:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
- integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=
-
-lodash.foreach@^4.3.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53"
- integrity sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=
-
-lodash.map@^4.4.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3"
- integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=
-
-lodash.merge@^4.4.0:
- version "4.6.2"
- resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
- integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
-
-lodash.pick@^4.2.1:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
- integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=
-
-lodash.reduce@^4.4.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b"
- integrity sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=
-
-lodash.reject@^4.4.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415"
- integrity sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=
-
-lodash.some@^4.4.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d"
- integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=
-
-lodash@^4.17.12, lodash@^4.17.14:
- version "4.17.15"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
- integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
-
-long@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
- integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==
-
-loose-envify@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
- integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
- dependencies:
- js-tokens "^3.0.0 || ^4.0.0"
-
-lru-queue@0.1:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3"
- integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=
- dependencies:
- es5-ext "~0.10.2"
-
-m3u8stream@^0.6.2:
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/m3u8stream/-/m3u8stream-0.6.2.tgz#c2c62ddce88156d80378dd59be010c8b8e9d120b"
- integrity sha512-WsuM2bd5pPN80xvfrB+1DZqr4M7+kJl8byi6+ZCy6cmVjEiHhmr/desN53Ngsa6Hs13kYumeVgT4wL0oIJ+v6g==
- dependencies:
- miniget "^1.4.0"
- sax "^1.2.4"
-
-make-plural@^3.0.3, make-plural@~3.0.3:
- version "3.0.6"
- resolved "https://registry.yarnpkg.com/make-plural/-/make-plural-3.0.6.tgz#2033a03bac290b8f3bb91258f65b9df7e8b01ca7"
- integrity sha1-IDOgO6wpC487uRJY9lud9+iwHKc=
- optionalDependencies:
- minimist "^1.2.0"
-
-math-interval-parser@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/math-interval-parser/-/math-interval-parser-1.1.0.tgz#dbeda5b06b3249973c6df6170fde2386f0afd893"
- integrity sha1-2+2lsGsySZc8bfYXD94jhvCv2JM=
- dependencies:
- xregexp "^2.0.0"
-
-memoizee@^0.4.3:
- version "0.4.14"
- resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57"
- integrity sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==
- dependencies:
- d "1"
- es5-ext "^0.10.45"
- es6-weak-map "^2.0.2"
- event-emitter "^0.3.5"
- is-promise "^2.1"
- lru-queue "0.1"
- next-tick "1"
- timers-ext "^0.1.5"
-
-messageformat@^0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/messageformat/-/messageformat-0.3.1.tgz#e58fff8245e9b3971799e5b43db58b3e9417f5a2"
- integrity sha1-5Y//gkXps5cXmeW0PbWLPpQX9aI=
- dependencies:
- async "~1.5.2"
- glob "~6.0.4"
- make-plural "~3.0.3"
- nopt "~3.0.6"
- watchr "~2.4.13"
-
-mimic-fn@^1.0.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
- integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
-
-miniget@^1.4.0:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/miniget/-/miniget-1.5.2.tgz#6e61597b1582fed0ec7368af7f16b14a0a569a1d"
- integrity sha512-1mTy+imFGBfK0vNGNiVqcZu7Qmm+JnJYZ3sTCXGC6yQwYU9ZqCl2ILcr2TrIyNaPs0BwO/BUkWQcHpLiWd8Hew==
-
-miniget@^1.5.3:
- version "1.5.3"
- resolved "https://registry.yarnpkg.com/miniget/-/miniget-1.5.3.tgz#d796c7291970d1dfa28b646d9aba3fa6b377c5e8"
- integrity sha512-6xiJs3ZGBdrNMlPNlEWirHhY53hSW33nG1Ytub9Cg5+jLhFPn9PGe4FmPZK9WlmDE1N7/8DEL7PGr7r9kbxwgw==
-
-"minimatch@2 || 3", minimatch@^3.0.4, minimatch@~3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
- integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
- dependencies:
- brace-expansion "^1.1.7"
-
-minimist@0.0.8:
- version "0.0.8"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
- integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
-
-minimist@^1.1.0, minimist@^1.2.0, minimist@~1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
- integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
-
-mkdirp@^0.5.1:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
- integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
- dependencies:
- minimist "0.0.8"
-
-ms@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
- integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
-
-ms@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
- integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
-
-mustache@*:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/mustache/-/mustache-3.0.1.tgz#873855f23aa8a95b150fb96d9836edbc5a1d248a"
- integrity sha512-jFI/4UVRsRYdUbuDTKT7KzfOp7FiD5WzYmmwNwXyUVypC0xjoTL78Fqc0jHUPIvvGD+6DQSPHIt1NE7D1ArsqA==
-
-mute-stream@0.0.7:
- version "0.0.7"
- resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
- integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
-
-mysql@^2.17.1:
- version "2.17.1"
- resolved "https://registry.yarnpkg.com/mysql/-/mysql-2.17.1.tgz#62bba4a039a9b2f73638cd1652ce50fc6f682899"
- integrity sha512-7vMqHQ673SAk5C8fOzTG2LpPcf3bNt0oL3sFpxPEEFp1mdlDcrLK0On7z8ZYKaaHrHwNcQ/MTUz7/oobZ2OyyA==
- dependencies:
- bignumber.js "7.2.1"
- readable-stream "2.3.6"
- safe-buffer "5.1.2"
- sqlstring "2.3.1"
-
-nan@2, nan@^2.14.0:
- version "2.14.0"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
- integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==
-
-natural-compare@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
- integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
-
-next-tick@1, next-tick@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
- integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
-
-nice-try@^1.0.4:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
- integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
-
-node-fetch@^2.6.0:
- version "2.6.0"
- resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
- integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==
-
-node-fzf@~0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/node-fzf/-/node-fzf-0.1.2.tgz#c8bfb4383e3c9ca480acda5455b08c8fb61e0e01"
- integrity sha512-BGQk7yZypMIXTdIz/+9sYTe41g/j+TygSwSkcXkqennqRDxWdOlmVZ9Nlzz2UBCr2n0Arzn79qOGG0ouRyfzcQ==
- dependencies:
- cli-color "~1.2.0"
- keypress "~0.2.1"
- minimist "~1.2.0"
- redstar "0.0.2"
- string-width "~2.1.1"
- ttys "0.0.3"
-
-node-opus@^0.3.2:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/node-opus/-/node-opus-0.3.2.tgz#5a20084e02f86116eadc2c7fd49b233e2260190d"
- integrity sha512-o7hKgNncfbgF1j25lCK7cPqs9DEMroP3LWW0BMb/Ismc33cXo7LcaLqS0+/VV+NOotIy43fb7juLg6akflzBEw==
- dependencies:
- bindings "~1.2.1"
- commander "^2.9.0"
- nan "^2.14.0"
- optionalDependencies:
- ogg-packet "^1.0.0"
-
-nopt@~3.0.6:
- version "3.0.6"
- resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
- integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k=
- dependencies:
- abbrev "1"
-
-normalize-package-data@^2.3.2:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
- integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
- dependencies:
- hosted-git-info "^2.1.4"
- resolve "^1.10.0"
- semver "2 || 3 || 4 || 5"
- validate-npm-package-license "^3.0.1"
-
-nth-check@~1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
- integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
- dependencies:
- boolbase "~1.0.0"
-
-object-assign@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
- integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
-
-object-keys@^1.0.11, object-keys@^1.0.12:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
- integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
-
-object.assign@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
- 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"
-
-object.entries@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519"
- integrity sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==
- dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.12.0"
- function-bind "^1.1.1"
- has "^1.0.3"
-
-object.fromentries@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab"
- integrity sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==
- dependencies:
- define-properties "^1.1.2"
- es-abstract "^1.11.0"
- function-bind "^1.1.1"
- has "^1.0.1"
-
-object.values@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9"
- integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==
- dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.12.0"
- function-bind "^1.1.1"
- has "^1.0.3"
-
-ogg-packet@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/ogg-packet/-/ogg-packet-1.0.1.tgz#6b7d6c7a743c5f1ae9277c3b1271cac256af4785"
- integrity sha512-dW1ok3BMnMikyXGDIgVEckWnlViW8JLWQV4qj9aN/rNRVqHlDYSlcIEtSIMH7tpuUOiIxAhY3+OxNdIOm6s17A==
- dependencies:
- ref-struct "*"
-
-once@^1.3.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
- integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
- dependencies:
- wrappy "1"
-
-onetime@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
- integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=
- dependencies:
- mimic-fn "^1.0.0"
-
-optionator@^0.8.2:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
- integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=
- dependencies:
- deep-is "~0.1.3"
- fast-levenshtein "~2.0.4"
- levn "~0.3.0"
- prelude-ls "~1.1.2"
- type-check "~0.3.2"
- wordwrap "~1.0.0"
-
-os-tmpdir@~1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
- integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
-
-os@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/os/-/os-0.1.1.tgz#208845e89e193ad4d971474b93947736a56d13f3"
- integrity sha1-IIhF6J4ZOtTZcUdLk5R3NqVtE/M=
-
-p-limit@^1.1.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
- integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
- dependencies:
- p-try "^1.0.0"
-
-p-limit@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2"
- integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==
- dependencies:
- p-try "^2.0.0"
-
-p-locate@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
- integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
- dependencies:
- p-limit "^1.1.0"
-
-p-locate@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
- integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
- dependencies:
- p-limit "^2.0.0"
-
-p-try@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
- integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
-
-p-try@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
- integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
-
-parent-module@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
- integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
- dependencies:
- callsites "^3.0.0"
-
-parse-json@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
- integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
- dependencies:
- error-ex "^1.2.0"
-
-parse-json@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
- integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
- dependencies:
- error-ex "^1.3.1"
- json-parse-better-errors "^1.0.1"
-
-path-exists@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
- integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
-
-path-is-absolute@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
- integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
-
-path-key@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
- integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
-
-path-parse@^1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
- integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
-
-path-type@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
- integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=
- dependencies:
- pify "^2.0.0"
-
-pify@^2.0.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
- integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
-
-pify@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
- integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
-
-pkg-conf@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-3.1.0.tgz#d9f9c75ea1bae0e77938cde045b276dac7cc69ae"
- integrity sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==
- dependencies:
- find-up "^3.0.0"
- load-json-file "^5.2.0"
-
-pkg-config@^1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/pkg-config/-/pkg-config-1.1.1.tgz#557ef22d73da3c8837107766c52eadabde298fe4"
- integrity sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=
- dependencies:
- debug-log "^1.0.0"
- find-root "^1.0.0"
- xtend "^4.0.1"
-
-pkg-dir@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
- integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=
- dependencies:
- find-up "^2.1.0"
-
-prelude-ls@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
- integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
-
-prism-media@^0.0.3:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/prism-media/-/prism-media-0.0.3.tgz#8842d4fae804f099d3b48a9a38e3c2bab6f4855b"
- integrity sha512-c9KkNifSMU/iXT8FFTaBwBMr+rdVcN+H/uNv1o+CuFeTThNZNTOrQ+RgXA1yL/DeLk098duAeRPP3QNPNbhxYQ==
-
-process-nextick-args@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
- integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
-
-progress@^2.0.0:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
- integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
-
-prop-types@^15.7.2:
- version "15.7.2"
- resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
- integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
- dependencies:
- loose-envify "^1.4.0"
- object-assign "^4.1.1"
- react-is "^16.8.1"
-
-punycode@^2.1.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
- integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
-
-random-hex-color@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/random-hex-color/-/random-hex-color-1.0.1.tgz#3518cbccf1ddd43cd6a9c054d6787a3c978b4751"
- integrity sha1-NRjLzPHd1DzWqcBU1nh6PJeLR1E=
-
-react-is@^16.8.1:
- version "16.8.6"
- resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16"
- integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==
-
-read-pkg-up@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
- integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=
- dependencies:
- find-up "^2.0.0"
- read-pkg "^2.0.0"
-
-read-pkg@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
- integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=
- dependencies:
- load-json-file "^2.0.0"
- normalize-package-data "^2.3.2"
- path-type "^2.0.0"
-
-readable-stream@2.3.6:
- version "2.3.6"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
- integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
- 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"
-
-readable-stream@^3.1.1:
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc"
- integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==
- dependencies:
- inherits "^2.0.3"
- string_decoder "^1.1.1"
- util-deprecate "^1.0.1"
-
-redstar@0.0.2:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/redstar/-/redstar-0.0.2.tgz#9d56a6980638c9851a100b0cb3bf7d3eb90205cb"
- integrity sha1-nVammAY4yYUaEAsMs799PrkCBcs=
- dependencies:
- minimatch "~3.0.4"
-
-ref-struct@*:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/ref-struct/-/ref-struct-1.1.0.tgz#5d5ee65ad41cefc3a5c5feb40587261e479edc13"
- integrity sha1-XV7mWtQc78Olxf60BYcmHkee3BM=
- dependencies:
- debug "2"
- ref "1"
-
-ref@1:
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/ref/-/ref-1.3.5.tgz#0e33f080cdb94a3d95312b2b3b1fd0f82044ca0f"
- integrity sha512-2cBCniTtxcGUjDpvFfVpw323a83/0RLSGJJY5l5lcomZWhYpU2cuLdsvYqMixvsdLJ9+sTdzEkju8J8ZHDM2nA==
- dependencies:
- bindings "1"
- debug "2"
- nan "2"
-
-regexpp@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
- integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
-
-resolve-from@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
- integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
-
-resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.5.0:
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e"
- integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==
- dependencies:
- path-parse "^1.0.6"
-
-restore-cursor@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
- integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368=
- dependencies:
- onetime "^2.0.0"
- signal-exit "^3.0.2"
-
-rethinkdb@^2.3.3:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/rethinkdb/-/rethinkdb-2.3.3.tgz#3dc6586e22fa1dabee0d254e64bd0e379fad2f72"
- integrity sha1-PcZYbiL6HavuDSVOZL0ON5+tL3I=
- dependencies:
- bluebird ">= 2.3.2 < 3"
-
-rimraf@2.6.3:
- version "2.6.3"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
- integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
- dependencies:
- glob "^7.1.3"
-
-run-async@^2.2.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
- integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA=
- dependencies:
- is-promise "^2.1.0"
-
-run-parallel@^1.1.2:
- version "1.1.9"
- resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679"
- integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==
-
-rxjs@^6.4.0:
- version "6.5.2"
- resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7"
- integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==
- dependencies:
- tslib "^1.9.0"
-
-safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
- integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-
-safefs@^3.1.2:
- version "3.2.2"
- resolved "https://registry.yarnpkg.com/safefs/-/safefs-3.2.2.tgz#8170c1444d7038e08caea05a374fae2fa349e15c"
- integrity sha1-gXDBRE1wOOCMrqBaN0+uL6NJ4Vw=
- dependencies:
- graceful-fs "*"
-
-"safer-buffer@>= 2.1.2 < 3":
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
- integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
-
-sax@^1.1.3, sax@^1.2.4:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
- integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
-
-scandirectory@^2.5.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/scandirectory/-/scandirectory-2.5.0.tgz#6ce03f54a090b668e3cbedbf20edf9e310593e72"
- integrity sha1-bOA/VKCQtmjjy+2/IO354xBZPnI=
- dependencies:
- ignorefs "^1.0.0"
- safefs "^3.1.2"
- taskgroup "^4.0.5"
-
-"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0:
- version "5.7.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
- integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
-
-semver@^6.1.0, semver@^6.1.2:
- version "6.3.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
- integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
-
-shebang-command@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
- integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
- dependencies:
- shebang-regex "^1.0.0"
-
-shebang-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
- integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
-
-signal-exit@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
- integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
-
-slice-ansi@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636"
- integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==
- dependencies:
- ansi-styles "^3.2.0"
- astral-regex "^1.0.0"
- is-fullwidth-code-point "^2.0.0"
-
-snekfetch@^3.6.4:
- version "3.6.4"
- resolved "https://registry.yarnpkg.com/snekfetch/-/snekfetch-3.6.4.tgz#d13e80a616d892f3d38daae4289f4d258a645120"
- integrity sha512-NjxjITIj04Ffqid5lqr7XdgwM7X61c/Dns073Ly170bPQHLm6jkmelye/eglS++1nfTWktpP6Y2bFXjdPlQqdw==
-
-spdx-correct@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
- integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==
- dependencies:
- spdx-expression-parse "^3.0.0"
- spdx-license-ids "^3.0.0"
-
-spdx-exceptions@^2.1.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977"
- integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==
-
-spdx-expression-parse@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
- integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==
- dependencies:
- spdx-exceptions "^2.1.0"
- spdx-license-ids "^3.0.0"
-
-spdx-license-ids@^3.0.0:
- version "3.0.5"
- resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654"
- integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==
-
-sprintf-js@>=1.0.3:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673"
- integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==
-
-sprintf-js@~1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
- integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
-
-sqlstring@2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.1.tgz#475393ff9e91479aea62dcaf0ca3d14983a7fb40"
- integrity sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=
-
-standard-engine@~11.0.1:
- version "11.0.1"
- resolved "https://registry.yarnpkg.com/standard-engine/-/standard-engine-11.0.1.tgz#943d710be54537dbedaf8a90367d271f4023fe7c"
- integrity sha512-WZQ5PpEDfRzPFk+H9xvKVQPQIxKnAQB2cb2Au4NyTCtdw5R0pyMBUZLbPXyFjnlhe8Ae+zfNrWU4m6H5b7cEAg==
- dependencies:
- deglob "^3.0.0"
- get-stdin "^7.0.0"
- minimist "^1.1.0"
- pkg-conf "^3.1.0"
-
-standard@^13.1.0:
- version "13.1.0"
- resolved "https://registry.yarnpkg.com/standard/-/standard-13.1.0.tgz#3de68ac1248d563a445edc806504987a11ea7496"
- integrity sha512-h3NaMzsa88+/xtjXCMvdn6EWWdlodsI/HvtsQF+EGwrF9kVNwNha9TkFABU6bSBoNfC79YDyIAq9ekxOMBFkuw==
- dependencies:
- eslint "~6.1.0"
- eslint-config-standard "13.0.1"
- eslint-config-standard-jsx "7.0.0"
- eslint-plugin-import "~2.18.0"
- eslint-plugin-node "~9.1.0"
- eslint-plugin-promise "~4.2.1"
- eslint-plugin-react "~7.14.2"
- eslint-plugin-standard "~4.0.0"
- standard-engine "~11.0.1"
-
-string-width@^2.1.0, string-width@~2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
- integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
- dependencies:
- is-fullwidth-code-point "^2.0.0"
- strip-ansi "^4.0.0"
-
-string-width@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
- integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
- dependencies:
- emoji-regex "^7.0.1"
- is-fullwidth-code-point "^2.0.0"
- strip-ansi "^5.1.0"
-
-string_decoder@^1.1.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d"
- integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==
- dependencies:
- safe-buffer "~5.1.0"
-
-string_decoder@~1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
- integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
- dependencies:
- safe-buffer "~5.1.0"
-
-strip-ansi@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
- integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
- dependencies:
- ansi-regex "^3.0.0"
-
-strip-ansi@^5.1.0, strip-ansi@^5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
- integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
- dependencies:
- ansi-regex "^4.1.0"
-
-strip-bom@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
- integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
-
-strip-json-comments@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7"
- integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==
-
-supports-color@^5.3.0:
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
- integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
- dependencies:
- has-flag "^3.0.0"
-
-table@^5.2.3:
- version "5.4.4"
- resolved "https://registry.yarnpkg.com/table/-/table-5.4.4.tgz#6e0f88fdae3692793d1077fd172a4667afe986a6"
- integrity sha512-IIfEAUx5QlODLblLrGTTLJA7Tk0iLSGBvgY8essPRVNGHAzThujww1YqHLs6h3HfTg55h++RzLHH5Xw/rfv+mg==
- dependencies:
- ajv "^6.10.2"
- lodash "^4.17.14"
- slice-ansi "^2.1.0"
- string-width "^3.0.0"
-
-taskgroup@^4.0.5, taskgroup@^4.2.0:
- version "4.3.1"
- resolved "https://registry.yarnpkg.com/taskgroup/-/taskgroup-4.3.1.tgz#7de193febd768273c457730497024d512c27915a"
- integrity sha1-feGT/r12gnPEV3MElwJNUSwnkVo=
- dependencies:
- ambi "^2.2.0"
- csextends "^1.0.3"
-
-text-table@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
- integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
-
-through@^2.3.6:
- version "2.3.8"
- resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
- integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
-
-timers-ext@0.1, timers-ext@^0.1.5:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6"
- integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==
- dependencies:
- es5-ext "~0.10.46"
- next-tick "1"
-
-tmp@^0.0.33:
- version "0.0.33"
- resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
- integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
- dependencies:
- os-tmpdir "~1.0.2"
-
-tslib@^1.9.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
- integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
-
-ttys@0.0.3:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/ttys/-/ttys-0.0.3.tgz#15bacde7831020de5f2f28f01b1732ef03651f4d"
- integrity sha1-FbrN54MQIN5fLyjwGxcy7wNlH00=
-
-tweetnacl@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.1.tgz#2594d42da73cd036bd0d2a54683dd35a6b55ca17"
- integrity sha512-kcoMoKTPYnoeS50tzoqjPY3Uv9axeuuFAZY9M/9zFnhoVvRfxz9K29IMPD7jGmt2c8SW7i3gT9WqDl2+nV7p4A==
-
-type-check@~0.3.2:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
- integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
- dependencies:
- prelude-ls "~1.1.2"
-
-type-fest@^0.3.0:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1"
- integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==
-
-typechecker@^2.0.8:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/typechecker/-/typechecker-2.1.0.tgz#d1c2093a54ff8a19f58cff877eeaa54f2242d383"
- integrity sha1-0cIJOlT/ihn1jP+HfuqlTyJC04M=
-
-typechecker@^4.3.0:
- version "4.7.0"
- resolved "https://registry.yarnpkg.com/typechecker/-/typechecker-4.7.0.tgz#5249f427358f45b7250c4924fd4d01ed9ba435e9"
- integrity sha512-4LHc1KMNJ6NDGO+dSM/yNfZQRtp8NN7psYrPHUblD62Dvkwsp3VShsbM78kOgpcmMkRTgvwdKOTjctS+uMllgQ==
- dependencies:
- editions "^2.1.0"
-
-typechecker@~2.0.1:
- version "2.0.8"
- resolved "https://registry.yarnpkg.com/typechecker/-/typechecker-2.0.8.tgz#e83da84bb64c584ccb345838576c40b0337db82e"
- integrity sha1-6D2oS7ZMWEzLNFg4V2xAsDN9uC4=
-
-umysql@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/umysql/-/umysql-0.1.1.tgz#ef0c5857e43ecf0e8c3319aa8034cecd10299ef4"
- integrity sha512-tI4IZ12E2DuUguOmxSgG97sKdd4GE++ZEJJp5uEcbUkJuLnsT/Mh2jdLKD+wa9bxrZ2xlfz6NRaDgGHAPp29zA==
- dependencies:
- mysql "^2.17.1"
-
-uniq@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
- integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=
-
-uri-js@^4.2.2:
- version "4.2.2"
- resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
- integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
- dependencies:
- punycode "^2.1.0"
-
-util-deprecate@^1.0.1, util-deprecate@~1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
- integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
-
-v8-compile-cache@^2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe"
- integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==
-
-validate-npm-package-license@^3.0.1:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
- integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
- dependencies:
- spdx-correct "^3.0.0"
- spdx-expression-parse "^3.0.0"
-
-watchr@~2.4.13:
- version "2.4.13"
- resolved "https://registry.yarnpkg.com/watchr/-/watchr-2.4.13.tgz#d74847bb4d6f90f61fe2c74f9f68662aa0e07601"
- integrity sha1-10hHu01vkPYf4sdPn2hmKqDgdgE=
- dependencies:
- eachr "^2.0.2"
- extendr "^2.1.0"
- extract-opts "^2.2.0"
- ignorefs "^1.0.0"
- safefs "^3.1.2"
- scandirectory "^2.5.0"
- taskgroup "^4.2.0"
- typechecker "^2.0.8"
-
-"when@>= 0.0.1":
- version "3.7.8"
- resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82"
- integrity sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=
-
-which@^1.2.9:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
- integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
- dependencies:
- isexe "^2.0.0"
-
-wordwrap@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
- integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
-
-wrappy@1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
- integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
-
-write@1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3"
- integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==
- dependencies:
- mkdirp "^0.5.1"
-
-ws@^6.0.0, ws@^6.1.4:
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb"
- integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==
- dependencies:
- async-limiter "~1.0.0"
-
-xregexp@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943"
- integrity sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=
-
-xtend@^4.0.1:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
- integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
-
-yt-search@^0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/yt-search/-/yt-search-0.4.1.tgz#2720d80d64680788c0300a7f7d5a63d830171866"
- integrity sha512-YnmLUl2RlNv083efzaQlFitIAeQd3vHDOfSV3ipQUjBcuVefU/NLeCHo2uX2QDU8ef1LzKL0tiJHQyV4+al2uA==
- dependencies:
- async.parallel "~0.5.2"
- cheerio "~0.22.0"
- dasu "0.0.23"
- minimist "~1.2.0"
- node-fzf "~0.1.2"
-
-ytdl-core@^0.29.5:
- version "0.29.5"
- resolved "https://registry.yarnpkg.com/ytdl-core/-/ytdl-core-0.29.5.tgz#278052a1a5a1a75c5931c229b804c0798f18858c"
- integrity sha512-6WOoLQCeovo/aFYeMKeEXjvS/L+0j/vq85AYF86KSmkSA3lMzUzMdtmlo0GjsrOUN79S03MDkSgXEWOZBWL1Rg==
- dependencies:
- html-entities "^1.1.3"
- m3u8stream "^0.6.2"
- miniget "^1.5.3"
- sax "^1.1.3"