Uploaded source
64
.env.defaults
Normal file
|
@ -0,0 +1,64 @@
|
|||
# Copy this file to .env to make modifications
|
||||
|
||||
# Base config
|
||||
MATOMO_URL=https://analytics.lbry.com/
|
||||
MATOMO_ID=4
|
||||
WEBPACK_WEB_PORT=9090
|
||||
WEBPACK_ELECTRON_PORT=9091
|
||||
WEB_SERVER_PORT=1337
|
||||
LBRY_WEB_API=https://api.lbry.tv
|
||||
LBRY_WEB_STREAMING_API=https://cdn.lbryplayer.xyz
|
||||
LBRY_WEB_BUFFER_API=https://collector-service.api.lbry.tv/api/v1/events/video
|
||||
COMMENT_SERVER_API=https://comments.lbry.com/api/v2
|
||||
WELCOME_VERSION=1.0
|
||||
|
||||
# Custom Site info
|
||||
DOMAIN=lbry.tv
|
||||
URL=https://lbry.tv
|
||||
THUMBNAIL_CDN_URL=https://image-optimizer.vanwanet.com/?address=
|
||||
|
||||
# UI
|
||||
SITE_TITLE=lbry.tv
|
||||
SITE_NAME=lbry.tv
|
||||
SITE_DESCRIPTION=Meet LBRY, an open, free, and community-controlled content wonderland.
|
||||
SITE_HELP_EMAIL=help@lbry.com
|
||||
LOGO_TITLE=lbry.tv
|
||||
SIMPLE_SITE=false
|
||||
SHOW_ADS=true
|
||||
YRBL_HAPPY_IMG_URL=https://cdn.lbryplayer.xyz/api/v3/streams/free/yrbl-happy/7aa50a7e5adaf48691935d55e45d697547392929/839d9a
|
||||
YRBL_SAD_IMG_URL=https://cdn.lbryplayer.xyz/api/v3/streams/free/yrbl-sad/c2d9649633d974e5ffb503925e1f17d951f1bd0f/f262dd
|
||||
ENABLE_COMMENT_REACTIONS=true
|
||||
ENABLE_FILE_REACTIONS=false
|
||||
ENABLE_CREATOR_REACTIONS=false
|
||||
ENABLE_NO_SOURCE_CLAIMS=false
|
||||
ENABLE_PREROLL_ADS=false
|
||||
CHANNEL_STAKED_LEVEL_VIDEO_COMMENTS=4
|
||||
CHANNEL_STAKED_LEVEL_LIVESTREAM=5
|
||||
WEB_PUBLISH_SIZE_LIMIT_GB=4
|
||||
|
||||
# OG
|
||||
OG_TITLE_SUFFIX=| lbry.tv
|
||||
OG_HOMEPAGE_TITLE=lbry.tv
|
||||
OG_IMAGE_URL=
|
||||
SITE_CANONICAL_URL=https://lbry.tv
|
||||
|
||||
# LOCALE
|
||||
DEFAULT_LANGUAGE=en
|
||||
|
||||
# Custom Settings
|
||||
# Additional settings for below are found in ui/constants/settings and are for
|
||||
# preventing user settings from applying to custom sites without overwriting them.
|
||||
# UNSYNCED_SETTINGS='theme dark_mode_times automatic_dark_mode_enabled'
|
||||
KNOWN_APP_DOMAINS=lbry.tv,lbry.lat,odysee.com
|
||||
|
||||
# Custom Content
|
||||
# If the following is true, copy custom/homepage.example.js to custom/homepage.js and modify
|
||||
CUSTOM_HOMEPAGE=false
|
||||
# Add channels to auto-follow on first run
|
||||
AUTO_FOLLOW_CHANNELS=lbry://@lbry#3fda836a92faaceedfe398225fb9b2ee2ed1f01a
|
||||
# Add up to 2 sidebar links:
|
||||
# PINNED_URI_1=@Lbrylatam#2/Integracionesporseguridad#4
|
||||
# PINNED_LABEL_1=LBRY LATAM
|
||||
# PINNED_URI_2=$/discover?t=lbrytvpaidbeta&fee_amount=>0&claim_type=stream&channel_ids=5af39f818f668d8c00943c9326c5201c4fe3c423,cda9c4e92f19d6fe0764524a2012056e06ca2055,760da3ba3dd85830a843beaaed543a89b7a367e7,40c36948f0da072dcba3e4833e90f71e16de78be,e8f68563d242f6ac9784dcbc41dd86c28a9391d6,7236fc5d2783ea7314d9076ae6c8a250e3992d1a,cf7792c2a37d0d76aaaff84aff0b99a8c791429d,8316ac90764fedf3147799b7b81a6575a9cc398e,8627af93c1a1219150f06b698f4b33e6ed2f1c1e,8972a1bd06de5186e5e89292b05aac8aaa817791,c5b0b17838df2f6c31162f64d55f60f34ae8bfc6,f576d5dba905fc179de880c3fe3eb3281ea74f59,97dd77c93c9603cbb2583f3589f7f5a6c92baa43,f399d873e0c37cf24de9569b5f22bbb30a5c6709,dba870d0620d41b2b9a152c961e0c06cf875ccfc,ca1fd651c9d14bf2e5088bb2aa0146ee7aeb2ae0,50ad846a4b1543b847bf3fdafb7b45f6b2f5844c,e09ff5abe9fb44dd0dd0576894a6db60a6211603,7b6f7517f6b816827d076fa0eaad550aa315a4e7,2068452c41d8da3bd68961335da0072a99258a1a,5da63df97c8255ae94a88940695b8471657dd5a1,3645cf2f5d0bdac0523f945be1c3ff60758f7845,4da85b12244839d6368b9290f1619ff9514ab2a8,4ad942982e43326c7700b1b6443049b3cfd82161,55304f219244abf82f684f759cc0c7769242f3b4,8f42e5b592bb7f7a03f4a94a86a41b1236bb099f,e2a014d885a48f5be2dc6409610996337312facb,c18996ca488753f714d36d4654715927c1d7f9c2,ebc4214424cfa683a7046e1f794fea1e44788d84,06b6d6d6a893fb589ec2ded948f5122856921ed5,07e4546674268fc0222b2ca22d31d0549dc217ee,060940e41973d4f7f16d72a2733138e931c35f41,f8d6eccd887c9cebd36b1d42aa349279b7f5c3ed,68098b8426f967b8d04cc566348b5c128823219e,2bfe6cdb24a21bdc1b76fb7c416edd50e9e85945,1f9bb08bfa2259629f4aaa9ed40f97e9a41b6fa1,2f20148495612946675fe1c8ea99171e4d950b81,bc6938fa1e09e840056c2e831abf9664f397c472,2a6194792beac5130641e932b5ac6e5a99b5ca4f,185ba2bd547a5e4a77d29fe6c1484f47db5e058f,29cc7f6081268eaa5b3f2946e0cd0b952a94812c,49389450b1241f5d8f4c8c4271a3eb56bba33965,ffdc62ac2f7549398d3aca9d2119e83d80d588d5,d7a4d2808074b0c55d6b239f69d90e7a4930f943,d58aa4a0b2f6c2504c3abce8de3f1afb71800acc,77ae23dc7eb8a75609881d4548a79e4935a89d37,f79bce8a60fbece671f6265adc39f6469f3b9b8c,051995fdf0af634e4911704057a551e9392e62b1
|
||||
# PINNED_LABEL_2=Paid Beta
|
||||
|
4
.eslintignore
Normal file
|
@ -0,0 +1,4 @@
|
|||
node_modules/*
|
||||
./node_modules/**
|
||||
**/node_modules/**
|
||||
web/dist/**
|
62
.eslintrc
Normal file
|
@ -0,0 +1,62 @@
|
|||
{
|
||||
"parser": "babel-eslint",
|
||||
"extends": ["standard", "standard-jsx", "plugin:react/recommended", "plugin:flowtype/recommended"],
|
||||
"plugins": ["flowtype", "import", "react-hooks"],
|
||||
"env": {
|
||||
"browser": true,
|
||||
"node": true
|
||||
},
|
||||
"globals": {
|
||||
"__static": true,
|
||||
"i18n": true,
|
||||
"__": true,
|
||||
"app": true,
|
||||
"IS_WEB": true,
|
||||
"WEBPACK_PORT": true
|
||||
},
|
||||
"settings": {
|
||||
"react": {
|
||||
"version": "detect"
|
||||
}
|
||||
},
|
||||
"rules": {
|
||||
"brace-style": 0,
|
||||
"camelcase": 0,
|
||||
"comma-dangle": ["error", "always-multiline"],
|
||||
"handle-callback-err": 0,
|
||||
"indent": 0,
|
||||
"jsx-quotes": ["error", "prefer-double"],
|
||||
"new-cap": 0,
|
||||
"no-console": 1,
|
||||
"no-control-regex": 0,
|
||||
"no-multi-spaces": 0,
|
||||
"no-redeclare": 0,
|
||||
"no-return-await": 0,
|
||||
"object-curly-spacing": 0,
|
||||
"one-var": 0,
|
||||
"prefer-promise-reject-errors": 0,
|
||||
"react/jsx-indent": 0,
|
||||
"react/jsx-no-comment-textnodes": 0,
|
||||
"react-hooks/exhaustive-deps": "warn",
|
||||
"react-hooks/rules-of-hooks": "error",
|
||||
"react/no-unescaped-entities": 0,
|
||||
"space-before-function-paren": [
|
||||
"error",
|
||||
{
|
||||
"anonymous": "never",
|
||||
"named": "never",
|
||||
"asyncArrow": "always"
|
||||
}
|
||||
],
|
||||
"standard/object-curly-even-spacing": 0,
|
||||
"standard/no-callback-literal": 0,
|
||||
"react/display-name": 0,
|
||||
"semi": [
|
||||
"error",
|
||||
"always",
|
||||
{
|
||||
"omitLastInOneLineBlock": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
43
.flowconfig
Normal file
|
@ -0,0 +1,43 @@
|
|||
[ignore]
|
||||
.*\.typeface\.json
|
||||
.*/node_modules/findup/.*
|
||||
|
||||
|
||||
[include]
|
||||
|
||||
[libs]
|
||||
./flow-typed
|
||||
node_modules/lbry-redux/flow-typed/
|
||||
node_modules/lbryinc/flow-typed/
|
||||
|
||||
[untyped]
|
||||
.*/node_modules/lbry-redux
|
||||
.*/node_modules/lbryinc
|
||||
|
||||
[lints]
|
||||
|
||||
[options]
|
||||
suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe
|
||||
suppress_comment=\\(.\\|\n\\)*\\$FlowIssue
|
||||
module.name_mapper='^constants\(.*\)$' -> '<PROJECT_ROOT>/ui/constants\1'
|
||||
module.name_mapper='^util\(.*\)$' -> '<PROJECT_ROOT>/ui/util\1'
|
||||
module.name_mapper='^redux\(.*\)$' -> '<PROJECT_ROOT>/ui/redux\1'
|
||||
module.name_mapper='^types\(.*\)$' -> '<PROJECT_ROOT>/ui/types\1'
|
||||
module.name_mapper='^component\(.*\)$' -> '<PROJECT_ROOT>/ui/component\1'
|
||||
module.name_mapper='^page\(.*\)$' -> '<PROJECT_ROOT>/ui/page\1'
|
||||
module.name_mapper='^lbry\(.*\)$' -> '<PROJECT_ROOT>/ui/lbry\1'
|
||||
module.name_mapper='^modal\(.*\)$' -> '<PROJECT_ROOT>/ui/modal\1'
|
||||
module.name_mapper='^app\(.*\)$' -> '<PROJECT_ROOT>/ui/app\1'
|
||||
module.name_mapper='^native\(.*\)$' -> '<PROJECT_ROOT>/ui/native\1'
|
||||
module.name_mapper='^analytics\(.*\)$' -> '<PROJECT_ROOT>/ui/analytics\1'
|
||||
module.name_mapper='^rewards\(.*\)$' -> '<PROJECT_ROOT>/ui/rewards\1'
|
||||
module.name_mapper='^i18n\(.*\)$' -> '<PROJECT_ROOT>/ui/i18n\1'
|
||||
module.name_mapper='^effects\(.*\)$' -> '<PROJECT_ROOT>/ui/effects\1'
|
||||
module.name_mapper='^comments\(.*\)$' -> '<PROJECT_ROOT>/ui/comments\1'
|
||||
module.name_mapper='^config\(.*\)$' -> '<PROJECT_ROOT>/config\1'
|
||||
module.name_mapper='^web\/component\(.*\)$' -> '<PROJECT_ROOT>/web/component\1'
|
||||
module.name_mapper='^web\/effects\(.*\)$' -> '<PROJECT_ROOT>/web/effects\1'
|
||||
module.name_mapper='^web\/page\(.*\)$' -> '<PROJECT_ROOT>/web/page\1'
|
||||
module.name_mapper='^homepage\(.*\)$' -> '<PROJECT_ROOT>/ui/util/homepage\1'
|
||||
|
||||
[strict]
|
36
.gitignore
vendored
Normal file
|
@ -0,0 +1,36 @@
|
|||
### macOS ###
|
||||
# General
|
||||
.DS_Store
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
node_modules
|
||||
dist
|
||||
/static/lbrynet*
|
||||
/static/daemon
|
||||
/static/locales
|
||||
yarn-error.log
|
||||
package-lock.json
|
||||
.transifexrc
|
||||
.idea/
|
||||
/build/daemon*
|
||||
/lbrytv/dist/
|
||||
/lbrytv/node_modules
|
||||
/static/lbry-first/
|
||||
/build/lbryFirst*
|
||||
/web/dist/*
|
||||
/web/node_modules/*
|
||||
/web/.env
|
||||
/web/.env.defaults
|
||||
/custom/*
|
||||
/custom/homepages/*
|
||||
/custom/content/*
|
||||
!/custom/content/default.json
|
||||
!/custom/content/test.json
|
||||
!/custom/homepages/.gitkeep
|
||||
!/custom/homepages
|
||||
!/custom/content
|
||||
!/custom/homepage.example.js
|
||||
!/custom/robots.disallowall
|
||||
!/custom/robots.allowall
|
||||
.env
|
||||
diff
|
9
.lintstagedrc.json
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"linters": {
|
||||
"ui/**/*.{js,jsx,scss,json}": ["prettier --write", "git add"],
|
||||
"web/**/*.{js,jsx,scss,json}": ["prettier --write", "git add"],
|
||||
"ui/**/*.{js,jsx}": ["eslint", "flow focus-check --color always", "git add"],
|
||||
"web/**/*.{js,jsx,scss}": ["eslint", "git add"]
|
||||
},
|
||||
"ignore": ["node_modules", "web/dist/**/*", "dist/**/*", "package-lock.json"]
|
||||
}
|
5
.prettierrc.json
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"trailingComma": "es5",
|
||||
"printWidth": 120,
|
||||
"singleQuote": true
|
||||
}
|
4
.sentryclirc
Normal file
|
@ -0,0 +1,4 @@
|
|||
[defaults]
|
||||
url = https://sentry.lbry.tech/
|
||||
org = lbry
|
||||
project = lbry-desktop-web
|
7
.tx/config
Normal file
|
@ -0,0 +1,7 @@
|
|||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[lbry-desktop.app-strings]
|
||||
source_file = static/app-strings.json
|
||||
source_lang = en
|
||||
type = KEYVALUEJSON
|
1873
CHANGELOG.md
Normal file
201
CONTRIBUTING.md
Normal file
|
@ -0,0 +1,201 @@
|
|||
# Contribute to LBRY
|
||||
|
||||
**First:** if you're unsure or afraid of anything, just ask or submit the issue or pull request anyways. You won't be yelled at for giving your best effort. The worst that can happen is that you'll be politely asked to change something. We appreciate any sort of contributions, and don't want a wall of rules to get in the way of that.
|
||||
|
||||
However, for those individuals who want a bit more guidance on the best way to contribute to the project, read on. This document will cover what we're looking for. By addressing all the points we're looking for, it raises the chances we can quickly merge or address your contributions.
|
||||
|
||||
## TL;DR?
|
||||
|
||||
- [Here](https://github.com/lbryio/lbry-desktop/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22+no%3Aassignee)
|
||||
is a list of help wanted issues.
|
||||
- Comment on an issue to let us know if you are going to work on it, don't take an issue that someone reserved less than 3 days ago.
|
||||
- Submit a pull request and get paid in LBC.
|
||||
- Don't hesitate to contact us with any questions or comments.
|
||||
|
||||
## Contents
|
||||
|
||||
- [Choose an Issue](#choose-an-issue)
|
||||
- [Code Overview](#code-overview)
|
||||
- [Libraries](#libraries)
|
||||
- [Flow](#flow)
|
||||
- [Lint](#lint)
|
||||
- [Code Formatting](#code-formatting)
|
||||
- [Debug](#debug)
|
||||
- [Submit a Pull Request](#submit-a-pull-request)
|
||||
- [Tom's "Voice of the User" Wishlist](#toms-voice-of-the-user-wishlist)
|
||||
- [Get in Touch](#get-in-touch)
|
||||
- [More Information](#more-information)
|
||||
|
||||
## Choose an Issue
|
||||
|
||||
LBRY is an open source project and therefore is developed out in the open for everyone to see. What
|
||||
you see here are the latest source code changes and issues.
|
||||
|
||||
Since LBRY is based on a decentralized community, we believe that the app will be stronger if it
|
||||
receives contributions from individuals outside the core team -- such as yourself!
|
||||
|
||||
To make contributing as easy and rewarding as possible, we have instituted the following system:
|
||||
|
||||
- Anyone can view all issues in the system by clicking on the
|
||||
[Issues](https://github.com/lbryio/lbry-desktop/issues) button at the top of the page. Feel free to
|
||||
add an issue if you think we have missed something (and you might earn some LBC in the process
|
||||
because we do tip people for reporting bugs).
|
||||
- Once on the [Issues](https://github.com/lbryio/lbry-desktop/issues) page, a potential contributor can
|
||||
filter issues by the
|
||||
[Help Wanted](https://github.com/lbryio/lbry-desktop/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22+no%3Aassignee)
|
||||
label to see a curated list of suggested issues with which community members can help.
|
||||
- Every
|
||||
[Help Wanted](https://github.com/lbryio/lbry-desktop/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22+no%3Aassignee)
|
||||
issue is ranked on a scale from zero to four.
|
||||
|
||||
| Level | Description |
|
||||
| ---------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
|
||||
| [**level 0**](https://github.com/lbryio/lbry-desktop/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22+label%3A%22level%3A+0%22+no%3Aassignee) | Typos and text edits -- a tech-savvy non-programmer can fix these. |
|
||||
| [**level 1**](https://github.com/lbryio/lbry-desktop/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22+label%3A%22level%3A+1%22+no%3Aassignee) | Programming issues that require little knowledge of how the LBRY app works. |
|
||||
| [**level 2**](https://github.com/lbryio/lbry-desktop/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22+label%3A%22level%3A+2%22+no%3Aassignee) | Issues of average difficulty that require the developer to dig into how the app works a little bit. |
|
||||
| [**level 3**](https://github.com/lbryio/lbry-desktop/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22+label%3A%22level%3A+3%22+no%3Aassignee) | Issues that are likely too tricky to be level 2 or require more thinking outside of the box. |
|
||||
| [**level 4**](https://github.com/lbryio/lbry-desktop/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22+label%3A%22level%3A+4%22+no%3Aassignee) | Big features or really hard issues. |
|
||||
|
||||
The process of ranking issues is highly subjective. The purpose of sorting issues like this is to
|
||||
give contributors a general idea about the type of issues they are looking at. For instance, it could very well be
|
||||
the case that a level 1 issue is more difficult than a level 2 issue. This system is meant
|
||||
to help you find relevant issues, not to prevent you from working on issues that you otherwise
|
||||
would. If these rankings don't work for you, feel free to ignore them.
|
||||
|
||||
Although all contributions should have good UX, the [UX label, when applied in conjunction with Help Wanted](https://github.com/lbryio/lbry-desktop/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22+label%3Aux+no%3Aassignee), indicates that the contributor ought to implement the feature in a creative way that specifically focuses on providing a good user experience. These issues often have no set instruction for how the experience should be and leave it to the contributor to figure out. This may be challenging for people who do not like UX, but also more fun and rewarding for those who do.
|
||||
|
||||
## Code Overview
|
||||
|
||||
The entry point for this application is [`electron/index.js`](https://github.com/lbryio/lbry-desktop/blob/master/electron/index.js).
|
||||
|
||||
This application is primarily written in JavaScript and is built on [Electron](https://electronjs.org)
|
||||
while utilizing [React](https://reactjs.org) and [Redux](https://redux.js.org) for UI and
|
||||
application state.
|
||||
|
||||
The project comes with diverse tools for simplifying the development process and for providing
|
||||
better code quality. It's recommended to make use of them thoroughly during ongoing development. We follow the well-known [Airbnb JavaScript Style Guide](https://airbnb.io/javascript/) for defining
|
||||
our styling rules and code best practices.
|
||||
|
||||
### Libraries
|
||||
|
||||
This project uses [lbry-redux](https://github.com/lbryio/lbry-redux) and [lbryionc](https://github.com/lbryio/lbryinc) to share Redux and LBRY API specific code with other LBRY apps. Over time, more Redux code that is suitable to be shared will be moved into lbry-redux. If modifying Redux code, you may be asked to make some of your changes in lbry-redux rather than lbry-desktop. The steps to work with lbry-redux locally can be found [here](https://github.com/lbryio/lbry-redux#local-development).
|
||||
|
||||
### Flow
|
||||
|
||||
[Flow](https://flow.org/) is a static type checker for JavaScript. Flow checks your code for
|
||||
errors through static type annotations. For using Flow, you need to add the following
|
||||
annotation to the beginning of the file you're editing:
|
||||
|
||||
`// @flow`
|
||||
|
||||
After adding this, you can start adding [type annotations](https://flow.org/en/docs/types/) to
|
||||
the code.
|
||||
|
||||
If you add a project dependency and you want to use it with Flow, you need to import its type
|
||||
definitions in the project by running:
|
||||
|
||||
`$ yarn flow-defs`
|
||||
|
||||
### Lint
|
||||
|
||||
Code linting is ensured by [ESLint](https://eslint.org/) and [Flow CLI](https://flow.org/en/docs/cli/).
|
||||
|
||||
You can lint all the project's sources at any time by running:
|
||||
|
||||
`$ yarn lint`
|
||||
|
||||
If you desire to lint a specific file or directory you can use:
|
||||
|
||||
```
|
||||
$ yarn eslint 'glob/pattern'
|
||||
$ yarn flow focus-check 'glob/pattern'
|
||||
```
|
||||
|
||||
In addition to those commands, staged files are automatically linted before commit. Please take the
|
||||
time to fix all staged files' linting problems before committing or suppress them if necessary.
|
||||
|
||||
If you want the linting problems to show up on your IDE or text editor, check out
|
||||
[ESLint integrations](https://eslint.org/docs/user-guide/integrations).
|
||||
|
||||
### Code Formatting
|
||||
|
||||
Project's sources are formatted using [Prettier](https://prettier.io/).
|
||||
|
||||
Staged files are automatically formatted before commit.
|
||||
|
||||
You can also use the following command:
|
||||
|
||||
`$ yarn format`
|
||||
|
||||
for applying formatting rules to the entire project's code. For formatting a specific file or
|
||||
directory, use:
|
||||
|
||||
`$ yarn prettier 'glob/pattern'`
|
||||
|
||||
Editor integrations are available [here](https://prettier.io/docs/en/editors.html).
|
||||
|
||||
### Debug
|
||||
|
||||
There are a few tools integrated to the project that will ease the process of debugging:
|
||||
|
||||
- [Chrome DevTools](https://developer.chrome.com/devtools)
|
||||
- Also available for the main process as a [remote target](chrome://inspect/#devices).
|
||||
- [Electron Devtron](https://electronjs.org/devtron)
|
||||
- [React DevTools](https://github.com/facebook/react-devtools)
|
||||
- [Redux DevTools](https://github.com/gaearon/redux-devtools)
|
||||
|
||||
## Submit a Pull Request
|
||||
|
||||
- After deciding what to work on, a potential contributor can
|
||||
[fork](https://help.github.com/articles/fork-a-repo/) this repository, make his or her changes,
|
||||
and submit a
|
||||
[pull request](https://help.github.com/articles/creating-a-pull-request-from-a-fork/). A
|
||||
contributor wanting to reserve an issue in advance can leave a comment saying that he or she is
|
||||
working on it. Contributors should respect other people's efforts to complete issues in a timely
|
||||
manner and, therefore, not begin working on anything reserved (or updated) within the last 3 days.
|
||||
If someone has been officially assigned an issue via GitHub's assignment system, it is also not
|
||||
available. Contributors are encouraged to ask if they have any questions about issue availability.
|
||||
- The [changelog](https://github.com/lbryio/lbry-desktop/blob/master/CHANGELOG.md) should be updated to
|
||||
include a reference to the fix/change/addition. See previous entries for format.
|
||||
- Once the pull request is visible in the LBRY repo, a LBRY team member will review it and make sure
|
||||
it is up to our standards. At this point, the contributor may have to change his or her code based
|
||||
on our suggestions and comments.
|
||||
- Then, upon a satisfactory review of the code, we will merge it and send the contributor a tip (in
|
||||
LBC) for the contribution.
|
||||
|
||||
We are dedicated to being fair and friendly in this process. In **general**, level 4 issues will be
|
||||
paid more than level 3 issues which will be paid more than level 2, and so on. However, this is not
|
||||
due to their labeling, but rather how difficult they end up being. Maybe an issue labeled "level 1"
|
||||
turns out to be very difficult. In this case, we would be **more than happy** to tip accordingly. If
|
||||
you do good work, we want you to be rewarded for it.
|
||||
|
||||
Also, we are here to enable you. We want you to succeed, so do not hesitate to ask questions. If you
|
||||
need some information or assistance in completing an issue, please let us know! That is what we are
|
||||
here for-- pushing development forward.
|
||||
|
||||
Lastly, don't feel limited by this list. Should LBRY have built-in Tor support? Add it! It's not in
|
||||
the issue tracker, but maybe it's a good idea. Do you think the search layout is unintuitive? Change
|
||||
it! We welcome all feedback and suggestions. That said, it may be the case that we do not wish to
|
||||
incorporate your change if you don't check with us first (also, please check with us especially if
|
||||
you are planning on adding Tor support :P). If you want to add a feature that is not listed in the
|
||||
issue tracker, go ahead and [create an issue](https://github.com/lbryio/lbry-desktop/issues/new), and
|
||||
say in the description that you would like to try to implement it yourself. This way we can tell you
|
||||
in advance if we will accept your changes and we can point you in the right direction.
|
||||
|
||||
# Tom's "Voice of the User" Wishlist
|
||||
|
||||
[Anything marked with **both** "Help Wanted" and "Tom's 'Voice of the User' Wishlist"](https://github.com/lbryio/lbry-desktop/issues?q=is%3Aopen+is%3Aissue+label%3A%22Tom%27s+%5C%22Voice+of+the+User%5C%22+Wishlist%22+label%3A%22help+wanted%22+no%3Aassignee)
|
||||
will earn you an extra 50 LBC on top of what we would otherwise tip you.
|
||||
|
||||
# Get in Touch
|
||||
|
||||
| Name | Role | Discord | Email |
|
||||
| -------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------------- |
|
||||
| [Tom](https://github.com/tzarebczan) | Community manager. He knows more than anyone about the app and all of its flaws. Reach out to him with any questions about how the app works, if a bug has been reported, or if a feature should be requested. | jiggytom | tom@lbry.com |
|
||||
| [Sean](https://github.com/seanyesmunt) | The primary engineer working on the app. Feel free to ask any questions about the code. | sean | sean@lbry.com |
|
||||
|
||||
Join our Discord [here](https://chat.lbry.com/).
|
||||
|
||||
# More Information
|
||||
|
||||
More information about contributing to LBRY [here](https://lbry.tech/contribute).
|
21
LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2017-2021 LBRY Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
178
README.md
Normal file
|
@ -0,0 +1,178 @@
|
|||
<img width="40%" src="https://miro.medium.com/max/5198/1*bTVuL2THG_0mpwmE-n7Ezg.png" />
|
||||
|
||||
# LBRY App - https://lbry.tv
|
||||
|
||||
This repo contains the UI code that powers the official LBRY desktop app, as well as lbry.tv. The LBRY app is a graphical browser for the decentralized content marketplace provided by the
|
||||
[LBRY](https://lbry.com) protocol. It is essentially the
|
||||
[lbry daemon](https://github.com/lbryio/lbry) bundled with a UI using
|
||||
[Electron](https://electron.atom.io/).
|
||||
|
||||
<a href="https://github.com/lbryio/lbry-desktop/blob/master/LICENSE" title="MIT licensed">
|
||||
<img alt="npm" src="https://img.shields.io/dub/l/vibe-d.svg?style=flat">
|
||||
</a>
|
||||
<a href="https://GitHub.com/lbryio/lbry-desktop/releases/" title="GitHub release">
|
||||
<img src="https://img.shields.io/github/release/lbryio/lbry-desktop.svg"/>
|
||||
</a>
|
||||
<a href="https://travis-ci.org/lbryio/lbry-desktop">
|
||||
<img src="https://travis-ci.org/lbryio/lbry-desktop.svg?branch=master" alt="Build Status" />
|
||||
</a>
|
||||
<a href="https://chat.lbry.com">
|
||||
<img alt="GitHub contributors" src="https://img.shields.io/discord/362322208485277697.svg?logo=discord" alt="chat on Discord">
|
||||
</a>
|
||||
|
||||
<h2>
|
||||
<a href="https://forthebadge.com" title="forthebadge">
|
||||
<img alt="forthebadge" src="https://forthebadge.com/images/badges/60-percent-of-the-time-works-every-time.svg">
|
||||
</a>
|
||||
<a href="https://forthebadge.com" title="forthebadge">
|
||||
<img alt="forthebadge" src="https://forthebadge.com/images/badges/approved-by-veridian-dynamics.svg">
|
||||
</a>
|
||||
</h2>
|
||||
|
||||
![App GIF](https://spee.ch/ba/lbry-joule.gif)
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Install](#install)
|
||||
2. [Usage](#usage)
|
||||
3. [Running from Source](#running-from-source)
|
||||
4. [Contributing](#contributing)
|
||||
5. [License](#license)
|
||||
6. [Security](#security)
|
||||
7. [Contact](#contact)
|
||||
|
||||
## Install
|
||||
|
||||
[![Windows](https://img.shields.io/badge/Windows-Install-blue)](https://lbry.com/get/lbry.exe)
|
||||
[![Linux](https://img.shields.io/badge/Linux-Install-blue)](https://lbry.com/get/lbry.deb)
|
||||
[![MacOS](https://img.shields.io/badge/MacOS-Install-blue)](https://lbry.com/get/lbry.dmg)
|
||||
|
||||
We provide installers for Windows, macOS (v10.12.4, Sierra, or greater), and Debian-based Linux. See community maintained builds section for alternative Linux installations.
|
||||
|
||||
| | Windows | macOS | Linux |
|
||||
| --------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- |
|
||||
| Latest Stable Release | [Download](https://lbry.com/get/lbry.exe) | [Download](https://lbry.com/get/lbry.dmg) | [Download](https://lbry.com/get/lbry.deb) |
|
||||
| Latest Pre-release | [Download](https://lbry.com/get/lbry.pre.exe) | [Download](https://lbry.com/get/lbry.pre.dmg) | [Download](https://lbry.com/get/lbry.pre.deb) |
|
||||
|
||||
Our [releases page](https://github.com/lbryio/lbry-desktop/releases) also contains the latest
|
||||
release, pre-releases, and past builds.
|
||||
_Note: If the deb fails to install using the Ubuntu Software Center, install manually via `sudo dpkg -i <path to deb>`. You'll need to run `sudo apt-get install -f` if this is the first time installing it to install dependencies_
|
||||
|
||||
To install from source or make changes to the application, continue to the next section below.
|
||||
|
||||
**Community maintained** builds for Arch Linux and Flatpak are available, see below. These installs will need to be updated manually as the in-app update process only supports Debian installs at this time.
|
||||
_Note: If coming from a deb install, the directory structure is different and you'll need to [migrate data](https://lbry.com/faq/backup-data)._
|
||||
|
||||
| | Flatpak | Arch | Nixpkgs | ARM/ARM64 |
|
||||
| -------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ------------------------------------------- |
|
||||
| Latest Release | [FlatHub Page](https://flathub.org/apps/details/io.lbry.lbry-app) | [AUR Package](https://aur.archlinux.org/packages/lbry-app-bin/) | [Nixpkgs](https://search.nixos.org/packages?channel=unstable&show=lbry&query=lbry) | [Build Guide](https://lbry.tv/@LBRYarm:5) |
|
||||
| Maintainers | [@kcSeb](https://keybase.io/kcseb) | [@kcSeb](https://keybase.io/kcseb)/[@TimurKiyivinski](https://github.com/TimurKiyivinski) | [@Enderger](https://github.com/enderger) | [@Madiator2011](https://github.com/kodxana) |
|
||||
|
||||
## Usage
|
||||
|
||||
Double click the installed application to interact with the LBRY network.
|
||||
|
||||
## Running from Source
|
||||
|
||||
You can run the web version (lbry.tv), the electron app, or both at the same time.
|
||||
|
||||
#### Prerequisites
|
||||
|
||||
- [Git](https://git-scm.com/downloads)
|
||||
- [Node.js](https://nodejs.org/en/download/) (v10 required)
|
||||
- [Yarn](https://yarnpkg.com/en/docs/install)
|
||||
|
||||
1. Clone (or [fork](https://help.github.com/articles/fork-a-repo/)) this repository: `git clone https://github.com/lbryio/lbry-desktop`
|
||||
2. Change directory into the cloned repository: `cd lbry-desktop`
|
||||
3. Install the dependencies: `yarn`
|
||||
|
||||
#### Run the electron app
|
||||
|
||||
`yarn dev`
|
||||
|
||||
- If you want to build and launch the production app you can run `yarn build`. This will give you an executable inside the `/dist` folder. We use [electron-builder](https://github.com/electron-userland/electron-builder) to create distributable packages.
|
||||
|
||||
#### Run the web app for development
|
||||
|
||||
`yarn dev:web`
|
||||
|
||||
- This uses webpack-dev-server and includes hot-reloading. If you want to debug the [web server we use in production](https://github.com/lbryio/lbry-desktop/blob/master/src/platforms/web/server.js) you can run `yarn dev:web-server`. This starts a server at `localhost:1337` and does not include hot reloading.
|
||||
|
||||
#### Customize the web app
|
||||
|
||||
- In root directory, duplicate the .env.default file and rename it to .env then copy the code below and paste it anywhere in the .env file.
|
||||
|
||||
```
|
||||
cp .env.defaults .env
|
||||
nano .env
|
||||
```
|
||||
|
||||
- To specify your own OG-IMAGE
|
||||
You can either place a png named v2-og.png in the /custom folder or specify the OG_IMAGE_URL in .env
|
||||
|
||||
- To specify your own channels to be followed on first run
|
||||
`AUTO_FOLLOW_URLS=lbry://@chan#123...a lbry://@chan2#456...a`
|
||||
|
||||
- If you want to customize the homepage content
|
||||
|
||||
1. add `CUSTOM_HOMEPAGE=true` to the '.env' file
|
||||
2. copy `/custom/homepage.example.js` to `/custom/homepage.js` and make desired changes to `homepage.js`
|
||||
|
||||
- If you want up to two custom sidebar links
|
||||
|
||||
```
|
||||
PINNED_URI_1=@someurl#2/someclaim#4
|
||||
PINNED_LABEL_1=Linktext
|
||||
|
||||
PINNED_URI_2=$/discover?t=tag&[queryparams]
|
||||
PINNED_LABEL_2=OtherLinkText
|
||||
```
|
||||
|
||||
- Finally `NODE_ENV=production yarn compile:web` to rebuild
|
||||
_Note: You don't need to edit the .env file in the /web folder - that is copied during compile._
|
||||
|
||||
#### Deploy the web app (_experimental_)
|
||||
|
||||
1. Create a server with a domain name and a reverse proxy https to port 1337.
|
||||
2. Install pm2, node v10, yarn
|
||||
3. Clone this repo
|
||||
4. Make any customizations as above
|
||||
5. Run `yarn` to install
|
||||
6. Run `NODE_ENV=production yarn compile:web` to build
|
||||
7. Set up pm2 to start ./web/index.js
|
||||
|
||||
#### Run both at the same time
|
||||
|
||||
Run the two commands above in separate terminal windows
|
||||
|
||||
```
|
||||
yarn dev
|
||||
|
||||
// in another terminal window
|
||||
yarn dev:web
|
||||
```
|
||||
|
||||
#### Resetting your Packages
|
||||
|
||||
If the app isn't building, or `yarn xxx` commands aren't working you may need to just reset your `node_modules`. To do so you can run: `rm -r node_modules && yarn` or `del /s /q node_modules && yarn` on Windows.
|
||||
|
||||
If you _really_ think something might have gone wrong, you can force your repo to clear everything that doesn't match the repo with `git reset --hard HEAD && git clean -fxd && git pull -r`
|
||||
|
||||
## Contributing
|
||||
|
||||
We :heart: contributions from everyone and contributions to this project are encouraged, and compensated. We welcome [bug reports](https://github.com/lbryio/lbry-desktop/issues/), [bug fixes](https://github.com/lbryio/lbry-desktop/pulls) and feedback is always appreciated. For more details, see [CONTRIBUTING.md](CONTRIBUTING.md).
|
||||
|
||||
## [![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/lbryio/lbry-desktop/issues) [![GitHub contributors](https://img.shields.io/github/contributors/lbryio/lbry-desktop.svg)](https://GitHub.com/lbryio/lbry-desktop/graphs/contributors/)
|
||||
|
||||
## License
|
||||
|
||||
This project is MIT licensed. For the full license, see [LICENSE](LICENSE).
|
||||
|
||||
## Security
|
||||
|
||||
We take security seriously. Please contact security@lbry.com regarding any security issues. Our PGP key is [here](https://lbry.com/faq/pgp-key) if you need it. Previous versions up to v0.50.2 were signed by [Sean Yesmunt](https://keybase.io/seanyesmunt/key.asc).
|
||||
New Releases are signed by [Jessop Breth](https://keybase.io/jessopb/key.asc).
|
||||
|
||||
## Contact
|
||||
|
||||
The primary contact for this project is [@jessopb](https://github.com/jessopb).
|
0
add
Normal file
16
babel.config.js
Normal file
|
@ -0,0 +1,16 @@
|
|||
module.exports = api => {
|
||||
api.cache(false);
|
||||
|
||||
return {
|
||||
presets: [['@babel/env', { loose: true, modules: false }], '@babel/react', '@babel/flow'],
|
||||
plugins: [
|
||||
'import-glob',
|
||||
'@babel/plugin-transform-runtime',
|
||||
['@babel/plugin-proposal-decorators', { decoratorsBeforeExport: true }],
|
||||
'@babel/plugin-transform-flow-strip-types',
|
||||
'@babel/plugin-proposal-class-properties',
|
||||
'react-hot-loader/babel',
|
||||
],
|
||||
ignore: [/node_modules/],
|
||||
};
|
||||
};
|
12
build/afterAllArtifactBuild.js
Normal file
|
@ -0,0 +1,12 @@
|
|||
const fs = require('fs');
|
||||
|
||||
module.exports = async function(params) {
|
||||
const { artifactPaths } = params;
|
||||
|
||||
for (var i = 0; i < artifactPaths.length; i++) {
|
||||
const artifactPath = artifactPaths[i];
|
||||
if (artifactPath.includes('.blockmap') || artifactPath.includes('.zip')) {
|
||||
fs.unlinkSync(artifactPath);
|
||||
}
|
||||
}
|
||||
};
|
33
build/afterSignHook.js
Normal file
|
@ -0,0 +1,33 @@
|
|||
// See: https://medium.com/@TwitterArchiveEraser/notarize-electron-apps-7a5f988406db
|
||||
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
var electron_notarize = require('electron-notarize');
|
||||
|
||||
module.exports = async function() {
|
||||
if (process.env.RUNNER_OS !== 'macOS') {
|
||||
return;
|
||||
}
|
||||
|
||||
const appId = 'io.lbry.LBRY';
|
||||
const appPath = path.resolve(__dirname, '../dist/electron/mac/LBRY.app');
|
||||
|
||||
if (!fs.existsSync(appPath)) {
|
||||
throw new Error(`Cannot find application at: ${appPath}`);
|
||||
}
|
||||
|
||||
console.log(`Notarizing ${appId} found at ${appPath}`);
|
||||
|
||||
try {
|
||||
await electron_notarize.notarize({
|
||||
appBundleId: appId,
|
||||
appPath: appPath,
|
||||
appleId: process.env.NOTARIZATION_USERNAME,
|
||||
appleIdPassword: process.env.NOTARIZATION_PASSWORD,
|
||||
});
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
|
||||
console.log(`Done notarizing ${appId}`);
|
||||
};
|
BIN
build/background.png
Normal file
After Width: | Height: | Size: 8.5 KiB |
89
build/downloadDaemon.js
Normal file
|
@ -0,0 +1,89 @@
|
|||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const packageJSON = require('../package.json');
|
||||
const fetch = require('node-fetch');
|
||||
const decompress = require('decompress');
|
||||
const os = require('os');
|
||||
const del = require('del');
|
||||
|
||||
const downloadDaemon = targetPlatform =>
|
||||
new Promise((resolve, reject) => {
|
||||
const daemonURLTemplate = packageJSON.lbrySettings.lbrynetDaemonUrlTemplate;
|
||||
const daemonVersion = packageJSON.lbrySettings.lbrynetDaemonVersion;
|
||||
const daemonDir = path.join(__dirname, '..', packageJSON.lbrySettings.lbrynetDaemonDir);
|
||||
let daemonFileName = packageJSON.lbrySettings.lbrynetDaemonFileName;
|
||||
|
||||
const currentPlatform = os.platform();
|
||||
|
||||
let daemonPlatform = process.env.TARGET || targetPlatform || currentPlatform;
|
||||
if (daemonPlatform === 'mac' || daemonPlatform === 'darwin') daemonPlatform = 'mac';
|
||||
if (daemonPlatform === 'win32' || daemonPlatform === 'windows') {
|
||||
daemonPlatform = 'windows';
|
||||
daemonFileName += '.exe';
|
||||
}
|
||||
const daemonFilePath = path.join(daemonDir, daemonFileName);
|
||||
const daemonVersionPath = path.join(__dirname, 'daemon.ver');
|
||||
const tmpZipPath = path.join(__dirname, '..', 'dist', 'daemon.zip');
|
||||
const daemonURL = daemonURLTemplate.replace(/DAEMONVER/g, daemonVersion).replace(/OSNAME/g, daemonPlatform);
|
||||
|
||||
// If a daemon and daemon.ver exists, check to see if it matches the current daemon version
|
||||
const hasDaemonDownloaded = fs.existsSync(daemonFilePath);
|
||||
const hasDaemonVersion = fs.existsSync(daemonVersionPath);
|
||||
let downloadedDaemonVersion;
|
||||
|
||||
if (hasDaemonVersion) {
|
||||
downloadedDaemonVersion = fs.readFileSync(daemonVersionPath, 'utf8');
|
||||
}
|
||||
|
||||
if (hasDaemonDownloaded && hasDaemonVersion && downloadedDaemonVersion === daemonVersion) {
|
||||
console.log('\x1b[34minfo\x1b[0m Daemon already downloaded');
|
||||
resolve('Done');
|
||||
} else {
|
||||
console.log('\x1b[34minfo\x1b[0m Downloading daemon...');
|
||||
fetch(daemonURL, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Content-Type': 'application/zip',
|
||||
},
|
||||
})
|
||||
.then(response => response.buffer())
|
||||
.then(
|
||||
result =>
|
||||
new Promise((newResolve, newReject) => {
|
||||
const distPath = path.join(__dirname, '..', 'dist');
|
||||
const hasDistFolder = fs.existsSync(distPath);
|
||||
|
||||
if (!hasDistFolder) {
|
||||
fs.mkdirSync(distPath);
|
||||
}
|
||||
|
||||
fs.writeFile(tmpZipPath, result, error => {
|
||||
if (error) return newReject(error);
|
||||
return newResolve();
|
||||
});
|
||||
})
|
||||
)
|
||||
.then(() => del(`${daemonFilePath}*`))
|
||||
.then()
|
||||
.then(() =>
|
||||
decompress(tmpZipPath, daemonDir, {
|
||||
filter: file => path.basename(file.path) === daemonFileName,
|
||||
})
|
||||
)
|
||||
.then(() => {
|
||||
console.log(`\x1b[32msuccess\x1b[0m Daemon downloaded! - v${daemonVersion}`);
|
||||
if (hasDaemonVersion) {
|
||||
del(daemonVersionPath);
|
||||
}
|
||||
|
||||
fs.writeFileSync(daemonVersionPath, daemonVersion, 'utf8');
|
||||
resolve('Done');
|
||||
})
|
||||
.catch(error => {
|
||||
console.error(`\x1b[31merror\x1b[0m Daemon download failed due to: \x1b[35m${error}\x1b[0m`);
|
||||
reject(error);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
downloadDaemon();
|
91
build/downloadLBRYFirst.js
Normal file
|
@ -0,0 +1,91 @@
|
|||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const packageJSON = require('../package.json');
|
||||
const fetch = require('node-fetch');
|
||||
const decompress = require('decompress');
|
||||
const os = require('os');
|
||||
const del = require('del');
|
||||
|
||||
const downloadLBRYFirst = targetPlatform =>
|
||||
new Promise((resolve, reject) => {
|
||||
const lbryFirstURLTemplate = packageJSON.lbrySettings.LBRYFirstUrlTemplate;
|
||||
const lbryFirstVersion = packageJSON.lbrySettings.LBRYFirstVersion;
|
||||
const lbryFirstDir = path.join(__dirname, '..', packageJSON.lbrySettings.LBRYFirstDir);
|
||||
let lbryFirstFileName = packageJSON.lbrySettings.LBRYFirstFileName;
|
||||
|
||||
const currentPlatform = os.platform();
|
||||
|
||||
let lbryFirstPlatform = process.env.TARGET || targetPlatform || currentPlatform;
|
||||
if (lbryFirstPlatform === 'linux') lbryFirstPlatform = 'Linux';
|
||||
if (lbryFirstPlatform === 'mac' || lbryFirstPlatform === 'darwin') lbryFirstPlatform = 'Darwin';
|
||||
if (lbryFirstPlatform === 'win32' || lbryFirstPlatform === 'windows') {
|
||||
lbryFirstPlatform = 'Windows';
|
||||
lbryFirstFileName += '.exe';
|
||||
}
|
||||
const lbryFirstFilePath = path.join(lbryFirstDir, lbryFirstFileName);
|
||||
const lbryFirstVersionPath = path.join(__dirname, 'lbryFirst.ver');
|
||||
const tmpZipPath = path.join(__dirname, '..', 'dist', 'lbryFirst.zip');
|
||||
const lbryFirstURL = lbryFirstURLTemplate.replace(/LBRYFIRSTVER/g, lbryFirstVersion).replace(/OSNAME/g, lbryFirstPlatform);
|
||||
console.log('URL:', lbryFirstURL);
|
||||
|
||||
// If a lbryFirst and lbryFirst.ver exists, check to see if it matches the current lbryFirst version
|
||||
const hasLbryFirstDownloaded = fs.existsSync(lbryFirstFilePath);
|
||||
const hasLbryFirstVersion = fs.existsSync(lbryFirstVersionPath);
|
||||
let downloadedLbryFirstVersion;
|
||||
|
||||
if (hasLbryFirstVersion) {
|
||||
downloadedLbryFirstVersion = fs.readFileSync(lbryFirstVersionPath, 'utf8');
|
||||
}
|
||||
|
||||
if (hasLbryFirstDownloaded && hasLbryFirstVersion && downloadedLbryFirstVersion === lbryFirstVersion) {
|
||||
console.log('\x1b[34minfo\x1b[0m LbryFirst already downloaded');
|
||||
resolve('Done');
|
||||
} else {
|
||||
console.log('\x1b[34minfo\x1b[0m Downloading lbryFirst...');
|
||||
fetch(lbryFirstURL, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Content-Type': 'application/zip',
|
||||
},
|
||||
})
|
||||
.then(response => response.buffer())
|
||||
.then(
|
||||
result =>
|
||||
new Promise((newResolve, newReject) => {
|
||||
const distPath = path.join(__dirname, '..', 'dist');
|
||||
const hasDistFolder = fs.existsSync(distPath);
|
||||
|
||||
if (!hasDistFolder) {
|
||||
fs.mkdirSync(distPath);
|
||||
}
|
||||
|
||||
fs.writeFile(tmpZipPath, result, error => {
|
||||
if (error) return newReject(error);
|
||||
return newResolve();
|
||||
});
|
||||
})
|
||||
)
|
||||
.then(() => del(`${lbryFirstFilePath}*`))
|
||||
.then()
|
||||
.then(() =>
|
||||
decompress(tmpZipPath, lbryFirstDir, {
|
||||
filter: file => path.basename(file.path) === lbryFirstFileName,
|
||||
})
|
||||
)
|
||||
.then(() => {
|
||||
console.log('\x1b[32msuccess\x1b[0m LbryFirst downloaded!');
|
||||
if (hasLbryFirstVersion) {
|
||||
del(lbryFirstVersionPath);
|
||||
}
|
||||
|
||||
fs.writeFileSync(lbryFirstVersionPath, lbryFirstVersion, 'utf8');
|
||||
resolve('Done');
|
||||
})
|
||||
.catch(error => {
|
||||
console.error(`\x1b[31merror\x1b[0m LbryFirst download failed due to: \x1b[35m${error}\x1b[0m`);
|
||||
reject(error);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
downloadLBRYFirst();
|
BIN
build/icon.icns
Normal file
BIN
build/icon.ico
Normal file
After Width: | Height: | Size: 361 KiB |
BIN
build/icons/128x128.png
Normal file
After Width: | Height: | Size: 7.4 KiB |
BIN
build/icons/256x256.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
build/icons/32x32.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
build/icons/48x48.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
build/icons/96x96.png
Normal file
After Width: | Height: | Size: 6.1 KiB |
BIN
build/icons/lbry128.ico
Normal file
After Width: | Height: | Size: 97 KiB |
BIN
build/icons/lbry16.ico
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
build/icons/lbry256.ico
Normal file
After Width: | Height: | Size: 361 KiB |
BIN
build/icons/lbry32.ico
Normal file
After Width: | Height: | Size: 5.3 KiB |
BIN
build/icons/lbry48.ico
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
build/icons/lbry96.ico
Normal file
After Width: | Height: | Size: 31 KiB |
158
build/signBuildFiles.js
Normal file
|
@ -0,0 +1,158 @@
|
|||
const { Octokit } = require('@octokit/rest');
|
||||
const octokit = new Octokit();
|
||||
var wget = require('node-wget');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const { exec } = require('child_process');
|
||||
const readline = require('readline');
|
||||
|
||||
// Global generated from cli prompt
|
||||
let versionToSign;
|
||||
|
||||
// Why can't I do this with 'fs'? :/
|
||||
function deleteFolderRecursive(path) {
|
||||
if (fs.existsSync(path)) {
|
||||
fs.readdirSync(path).forEach(function(file, index) {
|
||||
var curPath = path + '/' + file;
|
||||
if (fs.lstatSync(curPath).isDirectory()) {
|
||||
// recurse
|
||||
deleteFolderRecursive(curPath);
|
||||
} else {
|
||||
// delete file
|
||||
fs.unlinkSync(curPath);
|
||||
}
|
||||
});
|
||||
fs.rmdirSync(path);
|
||||
}
|
||||
}
|
||||
|
||||
// Initial setup
|
||||
// Create a file to store the hashes (creates a new copy if one exists)
|
||||
const downloadPath = path.resolve(__dirname, '../dist/releaseDownloads');
|
||||
const fileToSign = path.resolve(downloadPath, '../hashes.txt');
|
||||
|
||||
fs.openSync(fileToSign, 'w');
|
||||
|
||||
if (!fs.existsSync(downloadPath)) {
|
||||
fs.mkdirSync(downloadPath);
|
||||
} else {
|
||||
deleteFolderRecursive(downloadPath);
|
||||
fs.mkdirSync(downloadPath);
|
||||
}
|
||||
|
||||
//
|
||||
// Below is the actual code that downloads, hashes, and signs the release
|
||||
//
|
||||
function cleanUpAfterSigning() {
|
||||
fs.unlinkSync(fileToSign);
|
||||
deleteFolderRecursive(downloadPath);
|
||||
console.log('Good to go captain');
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
function signFile() {
|
||||
console.log('Logging in file with hashes using keybase...');
|
||||
// All files are hashed and added to hashes.txt
|
||||
// Sign it with keybase
|
||||
const fileName = `LBRY_${versionToSign}_sigs.asc`;
|
||||
|
||||
const pathForSignedFile = path.resolve(__dirname, `../dist/${fileName}`);
|
||||
exec(`keybase pgp sign -i ${fileToSign} -c -o ${pathForSignedFile}`, err => {
|
||||
if (err) {
|
||||
console.log('Error signing file with keybase');
|
||||
}
|
||||
|
||||
cleanUpAfterSigning();
|
||||
});
|
||||
}
|
||||
|
||||
function hashFiles() {
|
||||
console.log('Hashing assets downloaded from github...');
|
||||
|
||||
fs.readdir(downloadPath, function(err, items) {
|
||||
if (err) {
|
||||
console.log('Error signing files in ', downloadPath);
|
||||
}
|
||||
|
||||
let count = 0;
|
||||
for (var i = 0; i < items.length; i++) {
|
||||
const file = items[i];
|
||||
const filePath = path.resolve(__dirname, '../dist/releaseDownloads/', file);
|
||||
exec(`sha256sum ${filePath}`, (err, stdout) => {
|
||||
if (err) {
|
||||
console.log('Error hashing ', filePath);
|
||||
}
|
||||
|
||||
count += 1;
|
||||
const hash = stdout.split(' ')[0];
|
||||
const stringToAppend = `${hash} ${file}\n`;
|
||||
fs.appendFileSync(fileToSign, stringToAppend);
|
||||
|
||||
if (count === items.length - 1) {
|
||||
signFile();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
let downloadCount = 0;
|
||||
let fileCountToDownload;
|
||||
function downloadFile(fileName, url) {
|
||||
wget(
|
||||
{
|
||||
url: url,
|
||||
dest: `${downloadPath}/`,
|
||||
},
|
||||
(error, response, body) => {
|
||||
console.log(`Finished downloading `, fileName);
|
||||
downloadCount += 1;
|
||||
|
||||
if (downloadCount === fileCountToDownload) {
|
||||
hashFiles();
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function downloadAssets() {
|
||||
console.log('Downloading release assets...');
|
||||
octokit.repos
|
||||
.getReleaseByTag({
|
||||
owner: 'lbryio',
|
||||
repo: 'lbry-desktop',
|
||||
tag: versionToSign,
|
||||
})
|
||||
.then(({ data }) => {
|
||||
const release_id = data.id;
|
||||
|
||||
return octokit.repos.listReleases({
|
||||
owner: 'lbryio',
|
||||
repo: 'lbry-desktop',
|
||||
release_id,
|
||||
});
|
||||
})
|
||||
.then(({ data }) => {
|
||||
const releaseToDownload = data.filter(releaseData => releaseData.tag_name === versionToSign)[0];
|
||||
const assets = releaseToDownload.assets;
|
||||
fileCountToDownload = assets.length;
|
||||
assets
|
||||
.map(({ browser_download_url, name }) => ({ download_url: browser_download_url, name }))
|
||||
.forEach(({ name, download_url }) => {
|
||||
const fileName = path.resolve(__dirname, `../dist/releaseDownloads/${name}`);
|
||||
downloadFile(fileName, download_url);
|
||||
});
|
||||
})
|
||||
.catch(error => console.log('Error downloading releases ', error));
|
||||
}
|
||||
|
||||
const rl = readline.createInterface({
|
||||
input: process.stdin,
|
||||
output: process.stdout,
|
||||
});
|
||||
|
||||
rl.question('Version to sign: ', function(version) {
|
||||
const tag = version.startsWith('v') ? version : `v${version}`;
|
||||
versionToSign = tag;
|
||||
downloadAssets();
|
||||
});
|
56
config.js
Normal file
|
@ -0,0 +1,56 @@
|
|||
// On Web, this will find .env.defaults and optional .env in web/
|
||||
// On Desktop App, this will find .env.defaults and optional .env in root dir
|
||||
require('dotenv-defaults').config({ silent: false });
|
||||
|
||||
const config = {
|
||||
MATOMO_URL: process.env.MATOMO_URL,
|
||||
MATOMO_ID: process.env.MATOMO_ID,
|
||||
WEBPACK_WEB_PORT: process.env.WEBPACK_WEB_PORT,
|
||||
WEBPACK_ELECTRON_PORT: process.env.WEBPACK_ELECTRON_PORT,
|
||||
WEB_SERVER_PORT: process.env.WEB_SERVER_PORT,
|
||||
LBRY_WEB_API: process.env.LBRY_WEB_API, //api.lbry.tv',
|
||||
LBRY_API_URL: process.env.LBRY_API_URL, //api.lbry.com',
|
||||
LBRY_WEB_STREAMING_API: process.env.LBRY_WEB_STREAMING_API, //cdn.lbryplayer.xyz',
|
||||
LBRY_WEB_BUFFER_API: process.env.LBRY_WEB_BUFFER_API,
|
||||
COMMENT_SERVER_API: process.env.COMMENT_SERVER_API,
|
||||
WELCOME_VERSION: process.env.WELCOME_VERSION,
|
||||
DOMAIN: process.env.DOMAIN,
|
||||
SHARE_DOMAIN_URL: process.env.SHARE_DOMAIN_URL,
|
||||
URL: process.env.URL,
|
||||
THUMBNAIL_CDN_URL: process.env.THUMBNAIL_CDN_URL,
|
||||
SITE_TITLE: process.env.SITE_TITLE,
|
||||
SITE_NAME: process.env.SITE_NAME,
|
||||
SITE_DESCRIPTION: process.env.SITE_DESCRIPTION,
|
||||
SITE_HELP_EMAIL: process.env.SITE_HELP_EMAIL,
|
||||
LOGO_TITLE: process.env.LOGO_TITLE,
|
||||
OG_TITLE_SUFFIX: process.env.OG_TITLE_SUFFIX,
|
||||
OG_HOMEPAGE_TITLE: process.env.OG_HOMEPAGE_TITLE,
|
||||
OG_IMAGE_URL: process.env.OG_IMAGE_URL,
|
||||
YRBL_HAPPY_IMG_URL: process.env.YRBL_HAPPY_IMG_URL,
|
||||
YRBL_SAD_IMG_URL: process.env.YRBL_SAD_IMG_URL,
|
||||
LOGIN_IMG_URL: process.env.LOGIN_IMG_URL,
|
||||
SITE_CANONICAL_URL: process.env.SITE_CANONICAL_URL,
|
||||
DEFAULT_LANGUAGE: process.env.DEFAULT_LANGUAGE,
|
||||
AUTO_FOLLOW_CHANNELS: process.env.AUTO_FOLLOW_CHANNELS,
|
||||
UNSYNCED_SETTINGS: process.env.UNSYNCED_SETTINGS,
|
||||
ENABLE_COMMENT_REACTIONS: process.env.ENABLE_COMMENT_REACTIONS === 'true',
|
||||
ENABLE_FILE_REACTIONS: process.env.ENABLE_FILE_REACTIONS === 'true',
|
||||
ENABLE_CREATOR_REACTIONS: process.env.ENABLE_CREATOR_REACTIONS === 'true',
|
||||
ENABLE_NO_SOURCE_CLAIMS: process.env.ENABLE_NO_SOURCE_CLAIMS === 'true',
|
||||
ENABLE_PREROLL_ADS: process.env.ENABLE_PREROLL_ADS === 'true',
|
||||
CHANNEL_STAKED_LEVEL_VIDEO_COMMENTS: process.env.CHANNEL_STAKED_LEVEL_VIDEO_COMMENTS,
|
||||
CHANNEL_STAKED_LEVEL_LIVESTREAM: process.env.CHANNEL_STAKED_LEVEL_LIVESTREAM,
|
||||
WEB_PUBLISH_SIZE_LIMIT_GB: process.env.WEB_PUBLISH_SIZE_LIMIT_GB,
|
||||
SIMPLE_SITE: process.env.SIMPLE_SITE === 'true',
|
||||
SHOW_ADS: process.env.SHOW_ADS === 'true',
|
||||
PINNED_URI_1: process.env.PINNED_URI_1,
|
||||
PINNED_LABEL_1: process.env.PINNED_LABEL_1,
|
||||
PINNED_URI_2: process.env.PINNED_URI_2,
|
||||
PINNED_LABEL_2: process.env.PINNED_LABEL_2,
|
||||
KNOWN_APP_DOMAINS: process.env.KNOWN_APP_DOMAINS ? process.env.KNOWN_APP_DOMAINS.split(',') : [],
|
||||
};
|
||||
|
||||
config.URL_LOCAL = `http://localhost:${config.WEB_SERVER_PORT}`;
|
||||
config.URL_DEV = `http://localhost:${config.WEBPACK_WEB_PORT}`;
|
||||
|
||||
module.exports = config;
|
306
custom/homepage.example.js
Normal file
|
@ -0,0 +1,306 @@
|
|||
// @flow
|
||||
|
||||
/*
|
||||
Creating custom homepage items
|
||||
1) in web/ folder, copy `.env.defaults` to `.env` and make CUSTOM_HOMEPAGE=true
|
||||
2) copy this file to homepage.js
|
||||
3) Create item objects
|
||||
{
|
||||
title, // how the title link displays
|
||||
link, // where the title link goes
|
||||
options // what search results populate the homepage item
|
||||
}
|
||||
4) rowData.push(item) for each item in the order you want them
|
||||
|
||||
Item object examples:
|
||||
Specific Channel
|
||||
|
||||
const LATEST_FROM_%CHANNEL% = {
|
||||
title: 'Latest From @%channel%',
|
||||
link: `/@%channelName%:%canonicalId%`,
|
||||
options: {
|
||||
orderBy: ['release_time'],
|
||||
pageSize: 4,
|
||||
channelIds: ['%channelId%'],
|
||||
},
|
||||
};
|
||||
|
||||
More complex List of channels with description icon filtering by fee_amount etc are possible
|
||||
|
||||
SOME_CHANNEL_IDS = ['channelId1', 'channelId2']
|
||||
SOME_TAG = '
|
||||
const SOME_CHANNELS_ITEM = {
|
||||
title: '#aTitle',
|
||||
link: `/$/${PAGES.DISCOVER}?${CS.TAGS_KEY}=aTag&fee_amount=>0&${CS.CLAIM_TYPE}=${CS.CLAIM_STREAM}&${
|
||||
CS.CHANNEL_IDS_KEY
|
||||
}=${SOME_CHANNEL_IDS.join(',')}`,
|
||||
help: (
|
||||
<div className="claim-grid__help">
|
||||
<Icon
|
||||
icon={ICONS.HELP}
|
||||
tooltip
|
||||
customTooltipText={__(
|
||||
'Some tooltip text.'
|
||||
)}
|
||||
/>
|
||||
</div>
|
||||
),
|
||||
options: { // search options
|
||||
feeAmount: '>0',
|
||||
claimType: ['stream'],
|
||||
tags: ['tagOne', 'tagTwo'],
|
||||
pageSize: 8,
|
||||
channelIds: SOME_CHANNEL_IDS,
|
||||
},
|
||||
};
|
||||
*/
|
||||
import * as PAGES from 'constants/pages';
|
||||
import * as CS from 'constants/claim_search';
|
||||
import * as ICONS from 'constants/icons';
|
||||
import { parseURI } from 'lbry-redux';
|
||||
import moment from 'moment';
|
||||
import { toCapitalCase } from 'util/string';
|
||||
import React from 'react';
|
||||
import Icon from 'component/common/icon';
|
||||
|
||||
export type RowDataItem = {
|
||||
title: string,
|
||||
link?: string,
|
||||
help?: any,
|
||||
options?: {},
|
||||
};
|
||||
|
||||
export default function GetHomePageRowData(
|
||||
authenticated: boolean,
|
||||
showPersonalizedChannels: boolean,
|
||||
showPersonalizedTags: boolean,
|
||||
subscribedChannels: Array<Subscription>,
|
||||
followedTags: Array<Tag>,
|
||||
showIndividualTags: boolean
|
||||
) {
|
||||
let rowData: Array<RowDataItem> = [];
|
||||
const individualTagDataItems: Array<RowDataItem> = [];
|
||||
const PAID_BETA_CHANNEL_IDS_KEY = [
|
||||
'4ee7cfaf1fc50a6df858ed0b99c278d633bccca9',
|
||||
'5af39f818f668d8c00943c9326c5201c4fe3c423',
|
||||
'cda9c4e92f19d6fe0764524a2012056e06ca2055',
|
||||
'760da3ba3dd85830a843beaaed543a89b7a367e7',
|
||||
'40c36948f0da072dcba3e4833e90f71e16de78be',
|
||||
'e8f68563d242f6ac9784dcbc41dd86c28a9391d6',
|
||||
'7236fc5d2783ea7314d9076ae6c8a250e3992d1a',
|
||||
'8627af93c1a1219150f06b698f4b33e6ed2f1c1e',
|
||||
'c5b0b17838df2f6c31162f64d55f60f34ae8bfc6',
|
||||
'f576d5dba905fc179de880c3fe3eb3281ea74f59',
|
||||
'97dd77c93c9603cbb2583f3589f7f5a6c92baa43',
|
||||
'f399d873e0c37cf24de9569b5f22bbb30a5c6709',
|
||||
'dba870d0620d41b2b9a152c961e0c06cf875ccfc',
|
||||
'ca1fd651c9d14bf2e5088bb2aa0146ee7aeb2ae0',
|
||||
'50ad846a4b1543b847bf3fdafb7b45f6b2f5844c',
|
||||
'e09ff5abe9fb44dd0dd0576894a6db60a6211603',
|
||||
'7b6f7517f6b816827d076fa0eaad550aa315a4e7',
|
||||
'2068452c41d8da3bd68961335da0072a99258a1a',
|
||||
'3645cf2f5d0bdac0523f945be1c3ff60758f7845',
|
||||
'4da85b12244839d6368b9290f1619ff9514ab2a8',
|
||||
'4ad942982e43326c7700b1b6443049b3cfd82161',
|
||||
'55304f219244abf82f684f759cc0c7769242f3b4',
|
||||
'8f42e5b592bb7f7a03f4a94a86a41b1236bb099f',
|
||||
'e2a014d885a48f5be2dc6409610996337312facb',
|
||||
'c18996ca488753f714d36d4654715927c1d7f9c2',
|
||||
'ebc4214424cfa683a7046e1f794fea1e44788d84',
|
||||
'06b6d6d6a893fb589ec2ded948f5122856921ed5',
|
||||
'07e4546674268fc0222b2ca22d31d0549dc217ee',
|
||||
'060940e41973d4f7f16d72a2733138e931c35f41',
|
||||
'f8d6eccd887c9cebd36b1d42aa349279b7f5c3ed',
|
||||
'68098b8426f967b8d04cc566348b5c128823219e',
|
||||
'2bfe6cdb24a21bdc1b76fb7c416edd50e9e85945',
|
||||
'1f9bb08bfa2259629f4aaa9ed40f97e9a41b6fa1',
|
||||
'2f20148495612946675fe1c8ea99171e4d950b81',
|
||||
'bc6938fa1e09e840056c2e831abf9664f397c472',
|
||||
'2a6194792beac5130641e932b5ac6e5a99b5ca4f',
|
||||
'185ba2bd547a5e4a77d29fe6c1484f47db5e058f',
|
||||
'29cc7f6081268eaa5b3f2946e0cd0b952a94812c',
|
||||
'ffdc62ac2f7549398d3aca9d2119e83d80d588d5',
|
||||
'd7a4d2808074b0c55d6b239f69d90e7a4930f943',
|
||||
'd58aa4a0b2f6c2504c3abce8de3f1afb71800acc',
|
||||
'77ae23dc7eb8a75609881d4548a79e4935a89d37',
|
||||
'f79bce8a60fbece671f6265adc39f6469f3b9b8c',
|
||||
'051995fdf0af634e4911704057a551e9392e62b1',
|
||||
'b0e489f986c345aef23c4a48d91cbcf5a6fdb9ac',
|
||||
'825aa21c8c0bda4ded3e69a69238763c8cfcc13b',
|
||||
'49389450b1241f5d8f4c8c4271a3eb56bba33965',
|
||||
'f3b9973e1725ecb50da3e6fa4d47343c98ef0382',
|
||||
'321b33d22c8e24ef207e3f357a4573f6a56611f3',
|
||||
'20d694ada07e740c6fa43a8c324cb7d6e362b5ee',
|
||||
'cf7792c2a37d0d76aaaff84aff0b99a8c791429d',
|
||||
'8316ac90764fedf3147799b7b81a6575a9cc398e',
|
||||
'8972a1bd06de5186e5e89292b05aac8aaa817791',
|
||||
'5da63df97c8255ae94a88940695b8471657dd5a1',
|
||||
'f3da2196b5151570d980b34d311ee0973225a68e',
|
||||
'7644fdb8342624f6c647c79de25610801573fa68',
|
||||
];
|
||||
|
||||
const TV_PAID_BETA_ROW = {
|
||||
title: '#lbrytvpaidbeta',
|
||||
link: `/$/${PAGES.DISCOVER}?${CS.TAGS_KEY}=lbrytvpaidbeta&fee_amount=>0&${CS.CLAIM_TYPE}=${CS.CLAIM_STREAM}&${
|
||||
CS.CHANNEL_IDS_KEY
|
||||
}=${PAID_BETA_CHANNEL_IDS_KEY.join(',')}`,
|
||||
help: (
|
||||
<div className="claim-grid__help">
|
||||
<Icon
|
||||
icon={ICONS.HELP}
|
||||
tooltip
|
||||
customTooltipText={__(
|
||||
'Check your rewards page to see if you qualify for paid content reimbursement. Only content in this section qualifies.'
|
||||
)}
|
||||
/>
|
||||
</div>
|
||||
),
|
||||
options: {
|
||||
feeAmount: '>0',
|
||||
claimType: ['stream'],
|
||||
tags: ['lbrytvpaidbeta', 'lbry tvpaidbeta'],
|
||||
pageSize: 8,
|
||||
channelIds: PAID_BETA_CHANNEL_IDS_KEY,
|
||||
},
|
||||
};
|
||||
|
||||
if (followedTags.length) {
|
||||
followedTags.forEach((tag: Tag) => {
|
||||
individualTagDataItems.push({
|
||||
title: `Trending for #${toCapitalCase(tag.name)}`,
|
||||
link: `/$/${PAGES.DISCOVER}?t=${tag.name}`,
|
||||
options: {
|
||||
pageSize: 4,
|
||||
tags: [tag.name],
|
||||
claimType: ['stream'],
|
||||
},
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
const RECENT_FROM_FOLLOWING = {
|
||||
title: 'Recent From Following',
|
||||
link: `/$/${PAGES.CHANNELS_FOLLOWING}`,
|
||||
options: {
|
||||
orderBy: ['release_time'],
|
||||
releaseTime:
|
||||
subscribedChannels.length > 20
|
||||
? `>${Math.floor(
|
||||
moment()
|
||||
.subtract(6, 'months')
|
||||
.startOf('week')
|
||||
.unix()
|
||||
)}`
|
||||
: `>${Math.floor(
|
||||
moment()
|
||||
.subtract(1, 'year')
|
||||
.startOf('week')
|
||||
.unix()
|
||||
)}`,
|
||||
pageSize: subscribedChannels.length > 3 ? 8 : 4,
|
||||
channelIds: subscribedChannels.map((subscription: Subscription) => {
|
||||
const { channelClaimId } = parseURI(subscription.uri);
|
||||
return channelClaimId;
|
||||
}),
|
||||
},
|
||||
};
|
||||
|
||||
const TOP_CONTENT_TODAY = {
|
||||
title: 'Top Content from Today',
|
||||
link: `/$/${PAGES.DISCOVER}?${CS.ORDER_BY_KEY}=${CS.ORDER_BY_TOP}&${CS.FRESH_KEY}=${CS.FRESH_DAY}`,
|
||||
options: {
|
||||
pageSize: showPersonalizedChannels || showPersonalizedTags ? 4 : 8,
|
||||
orderBy: ['effective_amount'],
|
||||
claimType: ['stream'],
|
||||
releaseTime: `>${Math.floor(
|
||||
moment()
|
||||
.subtract(1, 'day')
|
||||
.startOf('day')
|
||||
.unix()
|
||||
)}`,
|
||||
},
|
||||
};
|
||||
|
||||
const TOP_CHANNELS = {
|
||||
title: 'Top Channels On LBRY',
|
||||
link: `/$/${PAGES.DISCOVER}?claim_type=channel&${CS.ORDER_BY_KEY}=${CS.ORDER_BY_TOP}&${CS.FRESH_KEY}=${CS.FRESH_ALL}`,
|
||||
options: {
|
||||
orderBy: ['effective_amount'],
|
||||
claimType: ['channel'],
|
||||
},
|
||||
};
|
||||
|
||||
const TRENDING_CLASSICS = {
|
||||
title: 'Trending Classics',
|
||||
link: `/$/${PAGES.DISCOVER}?${CS.ORDER_BY_KEY}=${CS.ORDER_BY_TRENDING}&${CS.FRESH_KEY}=${CS.FRESH_WEEK}`,
|
||||
options: {
|
||||
pageSize: 4,
|
||||
claimType: ['stream'],
|
||||
releaseTime: `<${Math.floor(
|
||||
moment()
|
||||
.subtract(6, 'month')
|
||||
.startOf('day')
|
||||
.unix()
|
||||
)}`,
|
||||
},
|
||||
};
|
||||
|
||||
const TRENDING_ON_LBRY = {
|
||||
title: 'Trending On LBRY',
|
||||
link: `/$/${PAGES.DISCOVER}`,
|
||||
options: {
|
||||
pageSize: showPersonalizedChannels || showPersonalizedTags ? 4 : 8,
|
||||
},
|
||||
};
|
||||
|
||||
const TRENDING_FOR_TAGS = {
|
||||
title: 'Trending For Your Tags',
|
||||
link: `/$/${PAGES.TAGS_FOLLOWING}`,
|
||||
options: {
|
||||
tags: followedTags.map(tag => tag.name),
|
||||
claimType: ['stream'],
|
||||
},
|
||||
};
|
||||
|
||||
const LATEST_FROM_LBRY = {
|
||||
title: 'Latest From @lbry',
|
||||
link: `/@lbry:3f`,
|
||||
options: {
|
||||
orderBy: ['release_time'],
|
||||
pageSize: 4,
|
||||
channelIds: ['3fda836a92faaceedfe398225fb9b2ee2ed1f01a'],
|
||||
},
|
||||
};
|
||||
|
||||
const LATEST_FROM_LBRYCAST = {
|
||||
title: 'Latest From @lbrycast',
|
||||
link: `/@lbrycast:4`,
|
||||
options: {
|
||||
orderBy: ['release_time'],
|
||||
pageSize: 4,
|
||||
channelIds: ['4c29f8b013adea4d5cca1861fb2161d5089613ea'],
|
||||
},
|
||||
};
|
||||
|
||||
if (showPersonalizedChannels) rowData.push(RECENT_FROM_FOLLOWING);
|
||||
if (showPersonalizedTags && !showIndividualTags) rowData.push(TRENDING_FOR_TAGS);
|
||||
if (showPersonalizedTags && showIndividualTags) {
|
||||
individualTagDataItems.forEach((item: RowDataItem) => {
|
||||
rowData.push(item);
|
||||
});
|
||||
}
|
||||
if (authenticated) {
|
||||
rowData.push(TV_PAID_BETA_ROW);
|
||||
}
|
||||
rowData.push(TOP_CONTENT_TODAY);
|
||||
rowData.push(TRENDING_ON_LBRY);
|
||||
if (!showPersonalizedChannels) rowData.push(TOP_CHANNELS);
|
||||
if (!authenticated) {
|
||||
rowData.push(TV_PAID_BETA_ROW);
|
||||
}
|
||||
rowData.push(TRENDING_CLASSICS);
|
||||
rowData.push(LATEST_FROM_LBRYCAST);
|
||||
rowData.push(LATEST_FROM_LBRY);
|
||||
|
||||
return rowData;
|
||||
}
|
0
custom/homepages/.gitkeep
Normal file
2
custom/robots.allowall
Normal file
|
@ -0,0 +1,2 @@
|
|||
User-agent: *
|
||||
Allow: /
|
2
custom/robots.disallowall
Normal file
|
@ -0,0 +1,2 @@
|
|||
User-agent: *
|
||||
Disallow: /
|
102
electron-builder.json
Normal file
|
@ -0,0 +1,102 @@
|
|||
{
|
||||
"appId": "io.lbry.LBRY",
|
||||
"productName": "LBRY",
|
||||
"directories": {
|
||||
"output": "dist/electron"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"from": "dist/electron/webpack",
|
||||
"to": "./"
|
||||
},
|
||||
{
|
||||
"from": "dist/electron/static",
|
||||
"to": "./"
|
||||
}
|
||||
],
|
||||
"extraResources": [
|
||||
{
|
||||
"from": "./static/daemon/",
|
||||
"to": "static/daemon/",
|
||||
"filter": ["**/*"]
|
||||
},
|
||||
{
|
||||
"from": "./static/lbry-first/",
|
||||
"to": "static/lbry-first/",
|
||||
"filter": ["**/*"]
|
||||
},
|
||||
{
|
||||
"from": "./static/img",
|
||||
"to": "static/img",
|
||||
"filter": ["**/*"]
|
||||
},
|
||||
{
|
||||
"from": "./static/font",
|
||||
"to": "static/font",
|
||||
"filter": ["**/*"]
|
||||
}
|
||||
],
|
||||
"publish": [
|
||||
{
|
||||
"provider": "github"
|
||||
}
|
||||
],
|
||||
"mac": {
|
||||
"category": "public.app-category.entertainment"
|
||||
},
|
||||
"dmg": {
|
||||
"iconSize": 128,
|
||||
"contents": [
|
||||
{
|
||||
"x": 115,
|
||||
"y": 164
|
||||
},
|
||||
{
|
||||
"x": 387,
|
||||
"y": 164,
|
||||
"type": "link",
|
||||
"path": "/Applications"
|
||||
}
|
||||
],
|
||||
"window": {
|
||||
"x": 200,
|
||||
"y": 200,
|
||||
"width": 500,
|
||||
"height": 300
|
||||
},
|
||||
"background": "./build/background.png"
|
||||
},
|
||||
"protocols": [
|
||||
{
|
||||
"name": "LBRY URI",
|
||||
"schemes": ["lbry"],
|
||||
"role": "Viewer"
|
||||
}
|
||||
],
|
||||
"linux": {
|
||||
"target": ["AppImage", "deb"],
|
||||
"executableName": "lbry",
|
||||
"category": "AudioVideo;Video",
|
||||
"desktop": {
|
||||
"MimeType": "x-scheme-handler/lbry"
|
||||
}
|
||||
},
|
||||
"deb": {
|
||||
"depends": ["gconf2", "gconf-service", "libnotify4", "libappindicator1", "libxtst6", "libnss3"]
|
||||
},
|
||||
"nsis": {
|
||||
"perMachine": true,
|
||||
"createDesktopShortcut": "always",
|
||||
"differentialPackage": true
|
||||
},
|
||||
"win": {
|
||||
"target": [
|
||||
{
|
||||
"target": "nsis",
|
||||
"arch": ["x64"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"artifactName": "${productName}_${version}.${ext}",
|
||||
"afterSign": "./build/afterSignHook.js"
|
||||
}
|
69
electron/Daemon.js
Normal file
|
@ -0,0 +1,69 @@
|
|||
import path from 'path';
|
||||
import fs from 'fs';
|
||||
import { spawn, execSync } from 'child_process';
|
||||
import { Lbry } from 'lbry-redux';
|
||||
|
||||
export default class Daemon {
|
||||
static lbrynetPath =
|
||||
process.env.LBRY_DAEMON ||
|
||||
(process.env.NODE_ENV === 'production'
|
||||
? path.join(process.resourcesPath, 'static/daemon', 'lbrynet')
|
||||
: path.join(__static, 'daemon/lbrynet'));
|
||||
|
||||
static headersPath =
|
||||
process.env.LBRY_DAEMON ||
|
||||
(process.env.NODE_ENV === 'production'
|
||||
? path.join(process.resourcesPath, 'static/daemon', 'headers')
|
||||
: path.join(__static, 'daemon/headers'));
|
||||
|
||||
subprocess;
|
||||
handlers;
|
||||
|
||||
constructor() {
|
||||
this.handlers = [];
|
||||
}
|
||||
|
||||
launch() {
|
||||
let flags = ['start'];
|
||||
|
||||
if (fs.existsSync(Daemon.headersPath)) {
|
||||
flags.push(`--initial-headers=${Daemon.headersPath}`);
|
||||
}
|
||||
|
||||
this.subprocess = spawn(Daemon.lbrynetPath, flags);
|
||||
this.subprocess.stdout.on('data', data => console.log(`Daemon: ${data}`));
|
||||
this.subprocess.stderr.on('data', data => console.error(`Daemon: ${data}`));
|
||||
this.subprocess.on('exit', () => this.fire('exit'));
|
||||
this.subprocess.on('error', error => console.error(`Daemon error: ${error}`));
|
||||
}
|
||||
|
||||
quit() {
|
||||
Lbry.stop()
|
||||
.then()
|
||||
.catch(() => {
|
||||
if (process.platform === 'win32') {
|
||||
try {
|
||||
execSync(`taskkill /pid ${this.subprocess.pid} /t /f`);
|
||||
} catch (error) {
|
||||
console.error(error.message);
|
||||
}
|
||||
} else {
|
||||
this.subprocess.kill();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Follows the publish/subscribe pattern
|
||||
|
||||
// Subscribe method
|
||||
on(event, handler, context = handler) {
|
||||
this.handlers.push({ event, handler: handler.bind(context) });
|
||||
}
|
||||
|
||||
// Publish method
|
||||
fire(event, args) {
|
||||
this.handlers.forEach(topic => {
|
||||
if (topic.event === event) topic.handler(args);
|
||||
});
|
||||
}
|
||||
}
|
59
electron/LbryFirstInstance.js
Normal file
|
@ -0,0 +1,59 @@
|
|||
import path from 'path';
|
||||
import { spawn, execSync } from 'child_process';
|
||||
|
||||
export default class LbryFirstInstance {
|
||||
static lbryFirstPath =
|
||||
process.env.LBRY_FIRST_DAEMON ||
|
||||
(process.env.NODE_ENV === 'production'
|
||||
? path.join(process.resourcesPath, 'static/lbry-first', 'lbry-first')
|
||||
: path.join(__static, 'lbry-first/lbry-first'));
|
||||
|
||||
static headersPath =
|
||||
process.env.LBRY_FIRST_DAEMON ||
|
||||
(process.env.NODE_ENV === 'production'
|
||||
? path.join(process.resourcesPath, 'static/lbry-first', 'headers')
|
||||
: path.join(__static, 'lbry-first/headers'));
|
||||
|
||||
subprocess;
|
||||
handlers;
|
||||
|
||||
constructor() {
|
||||
this.handlers = [];
|
||||
}
|
||||
|
||||
launch() {
|
||||
let flags = ['serve'];
|
||||
console.log(`LbryFirst: ${LbryFirstInstance.lbryFirstPath}`);
|
||||
this.subprocess = spawn(LbryFirstInstance.lbryFirstPath, flags);
|
||||
this.subprocess.stdout.on('data', data => console.log(`LbryFirst: ${data}`));
|
||||
this.subprocess.stderr.on('data', data => console.error(`LbryFirst: ${data}`));
|
||||
this.subprocess.on('exit', () => this.fire('exit'));
|
||||
this.subprocess.on('error', error => console.error(`LbryFirst error: ${error}`));
|
||||
}
|
||||
|
||||
quit() {
|
||||
if (process.platform === 'win32') {
|
||||
try {
|
||||
execSync(`taskkill /pid ${this.subprocess.pid} /t /f`);
|
||||
} catch (error) {
|
||||
console.error(error.message);
|
||||
}
|
||||
} else {
|
||||
this.subprocess.kill();
|
||||
}
|
||||
}
|
||||
|
||||
// Follows the publish/subscribe pattern
|
||||
|
||||
// Subscribe method
|
||||
on(event, handler, context = handler) {
|
||||
this.handlers.push({ event, handler: handler.bind(context) });
|
||||
}
|
||||
|
||||
// Publish method
|
||||
fire(event, args) {
|
||||
this.handlers.forEach(topic => {
|
||||
if (topic.event === event) topic.handler(args);
|
||||
});
|
||||
}
|
||||
}
|
67
electron/createTray.js
Normal file
|
@ -0,0 +1,67 @@
|
|||
import { app, Menu, Tray } from 'electron';
|
||||
import path from 'path';
|
||||
|
||||
let tray;
|
||||
|
||||
export default window => {
|
||||
let iconPath;
|
||||
|
||||
/*
|
||||
* A maximized window can't be properly
|
||||
* restored when minimized to the taskbar
|
||||
* (it will be restored/showed as unmaximized).
|
||||
*
|
||||
* window.isMaximized() will also return
|
||||
* false when minimizing a maximized window.
|
||||
*
|
||||
* The safest way to keep track of the
|
||||
* maximized state using maximize and
|
||||
* unmaximize events.
|
||||
*/
|
||||
let isWindowMaximized = false;
|
||||
window.on('maximize', () => {
|
||||
isWindowMaximized = true;
|
||||
});
|
||||
window.on('unmaximize', () => {
|
||||
isWindowMaximized = false;
|
||||
});
|
||||
|
||||
switch (process.platform) {
|
||||
case 'darwin': {
|
||||
iconPath = 'static/img/tray/mac/trayTemplate.png';
|
||||
break;
|
||||
}
|
||||
case 'win32': {
|
||||
iconPath = 'static/img/tray/windows/tray.ico';
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
iconPath = 'static/img/tray/default/tray.png';
|
||||
}
|
||||
}
|
||||
|
||||
tray = new Tray(process.env.NODE_ENV === 'development' ? iconPath : path.join(process.resourcesPath, iconPath));
|
||||
|
||||
const restoreFromTray = () => {
|
||||
if (isWindowMaximized) {
|
||||
window.maximize();
|
||||
}
|
||||
window.show();
|
||||
};
|
||||
|
||||
tray.on('double-click', restoreFromTray);
|
||||
|
||||
tray.setToolTip('LBRY App');
|
||||
|
||||
const template = [
|
||||
{
|
||||
label: `Open ${app.name}`,
|
||||
click: restoreFromTray,
|
||||
},
|
||||
{ role: 'quit' },
|
||||
];
|
||||
const contextMenu = Menu.buildFromTemplate(template);
|
||||
tray.setContextMenu(contextMenu);
|
||||
|
||||
return tray;
|
||||
};
|
224
electron/createWindow.js
Normal file
|
@ -0,0 +1,224 @@
|
|||
import { WEBPACK_ELECTRON_PORT } from 'config';
|
||||
import { app, BrowserWindow, dialog, shell, screen, nativeImage } from 'electron';
|
||||
import isDev from 'electron-is-dev';
|
||||
import windowStateKeeper from 'electron-window-state';
|
||||
import SUPPORTED_LANGUAGES from 'constants/supported_languages';
|
||||
import { SUPPORTED_SUB_LANGUAGE_CODES, SUB_LANG_CODE_LEN } from 'constants/supported_sub_languages';
|
||||
import SUPPORTED_BROWSER_LANGUAGES from 'constants/supported_browser_languages';
|
||||
import { TO_TRAY_WHEN_CLOSED } from 'constants/settings';
|
||||
|
||||
import setupBarMenu from './menu/setupBarMenu';
|
||||
import * as PAGES from 'constants/pages';
|
||||
|
||||
function GetAppLangCode() {
|
||||
// https://www.electronjs.org/docs/api/locales
|
||||
// 1. Gets the user locale.
|
||||
// 2. Converts unsupported sub-languages to its primary (e.g. "en-GB" -> "en").
|
||||
// Note that the primary itself may or may not be a supported language
|
||||
// (up to clients to verify against SUPPORTED_LANGUAGES).
|
||||
const langCode = app.getLocale();
|
||||
if (langCode.length === SUB_LANG_CODE_LEN && !SUPPORTED_SUB_LANGUAGE_CODES.includes(langCode)) {
|
||||
return SUPPORTED_BROWSER_LANGUAGES[langCode.slice(0, 2)];
|
||||
}
|
||||
return SUPPORTED_BROWSER_LANGUAGES[langCode];
|
||||
}
|
||||
|
||||
export default appState => {
|
||||
// Get primary display dimensions from Electron.
|
||||
const { width, height } = screen.getPrimaryDisplay().workAreaSize;
|
||||
|
||||
// Load the previous state with fallback to defaults.
|
||||
const windowState = windowStateKeeper({
|
||||
defaultWidth: width,
|
||||
defaultHeight: height,
|
||||
});
|
||||
|
||||
const startMinimized = (process.argv || []).includes('--hidden');
|
||||
|
||||
const windowConfiguration = {
|
||||
backgroundColor: '#270f34', // Located in src/scss/init/_vars.scss `--color-background--splash`
|
||||
minWidth: 950,
|
||||
minHeight: 600,
|
||||
autoHideMenuBar: true,
|
||||
titleBarStyle: 'hiddenInset',
|
||||
show: false,
|
||||
// Create the window using the state information.
|
||||
x: windowState.x,
|
||||
y: windowState.y,
|
||||
// If state is undefined, create window as maximized.
|
||||
width: windowState.width === undefined ? width : windowState.width,
|
||||
height: windowState.height === undefined ? height : windowState.height,
|
||||
icon: nativeImage.createFromPath('static/img/tray/default/tray.png'),
|
||||
webPreferences: {
|
||||
// Disable renderer process's webSecurity on development to enable CORS.
|
||||
webSecurity: !isDev,
|
||||
plugins: true,
|
||||
nodeIntegration: true,
|
||||
},
|
||||
};
|
||||
const lbryProto = 'lbry://';
|
||||
const lbryProtoQ = 'lbry://?';
|
||||
const rendererURL = isDev ? `http://localhost:${WEBPACK_ELECTRON_PORT}` : `file://${__dirname}/index.html`;
|
||||
|
||||
let window = new BrowserWindow(windowConfiguration);
|
||||
|
||||
// Let us register listeners on the window, so we can update the state
|
||||
// automatically (the listeners will be removed when the window is closed)
|
||||
// and restore the maximized or full screen state.
|
||||
windowState.manage(window);
|
||||
|
||||
let deepLinkingURI;
|
||||
|
||||
if ((process.platform === 'win32' || process.platform === 'linux') && String(process.argv[1]).startsWith('lbry')) {
|
||||
[, deepLinkingURI] = process.argv || '';
|
||||
// Keep only command line / deep linked arguments
|
||||
// Windows normalizes URIs when they're passed in from other apps. On Windows, this tries to
|
||||
// restore the original URI that was typed.
|
||||
// - If the URI has no path, Windows adds a trailing slash. LBRY URIs can't have a slash with no
|
||||
// path, so we just strip it off.
|
||||
// - In a URI with a claim ID, like lbry://channel#claimid, Windows interprets the hash mark as
|
||||
// an anchor and converts it to lbry://channel/#claimid. We remove the slash here as well.
|
||||
// - ? also interpreted as an anchor, remove slash also.
|
||||
if (process.platform === 'win32') {
|
||||
deepLinkingURI = deepLinkingURI
|
||||
.replace(/\/$/, '')
|
||||
.replace('/#', '#')
|
||||
.replace('/?', '?');
|
||||
}
|
||||
} else {
|
||||
deepLinkingURI = appState.macDeepLinkingURI || '';
|
||||
}
|
||||
|
||||
// is it a lbry://? pointing to an app page
|
||||
if (deepLinkingURI.includes(lbryProtoQ)) {
|
||||
let path = deepLinkingURI.substr(lbryProtoQ.length);
|
||||
let page = path.indexOf('?') >= 0 ? path.substring(0, path.indexOf('?')) : path;
|
||||
if (Object.values(PAGES).includes(page)) {
|
||||
deepLinkingURI = deepLinkingURI.replace(lbryProtoQ, '#/$/');
|
||||
} else {
|
||||
deepLinkingURI = '';
|
||||
}
|
||||
// else is it a claim
|
||||
} else if (deepLinkingURI.includes(lbryProto)) {
|
||||
deepLinkingURI = deepLinkingURI.replace(lbryProto, '#');
|
||||
} else {
|
||||
deepLinkingURI = '';
|
||||
}
|
||||
|
||||
setupBarMenu();
|
||||
|
||||
window.loadURL(rendererURL + deepLinkingURI);
|
||||
|
||||
window.on('close', event => {
|
||||
if (appState.isQuitting) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!appState.autoUpdateAccepted) {
|
||||
event.preventDefault();
|
||||
if (window.isFullScreen()) {
|
||||
window.once('leave-full-screen', () => {
|
||||
window.hide();
|
||||
});
|
||||
window.setFullScreen(false);
|
||||
} else {
|
||||
window.hide();
|
||||
}
|
||||
}
|
||||
|
||||
const getToTrayWhenClosedSetting = window.webContents.executeJavaScript(`localStorage.getItem('${TO_TRAY_WHEN_CLOSED}')`);
|
||||
|
||||
getToTrayWhenClosedSetting.then(toTrayWhenClosedSetting => {
|
||||
const closeApp = toTrayWhenClosedSetting === 'false';
|
||||
|
||||
if (closeApp) {
|
||||
app.quit();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
window.on('focus', () => {
|
||||
window.webContents.send('window-is-focused', null);
|
||||
});
|
||||
|
||||
window.on('unresponsive', () => {
|
||||
dialog.showMessageBox(
|
||||
window,
|
||||
{
|
||||
type: 'warning',
|
||||
buttons: ['Wait', 'Quit'],
|
||||
title: 'LBRY Unresponsive',
|
||||
defaultId: 1,
|
||||
message: 'LBRY is not responding. Would you like to quit?',
|
||||
cancelId: 0,
|
||||
},
|
||||
buttonIndex => {
|
||||
if (buttonIndex === 1) app.quit();
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
window.once('ready-to-show', () => {
|
||||
startMinimized ? window.hide() : window.show();
|
||||
});
|
||||
|
||||
// A backup incase https://github.com/electron/electron/issues/7779 happens
|
||||
window.webContents.once('dom-ready', () => {
|
||||
startMinimized && window.hide();
|
||||
});
|
||||
|
||||
window.webContents.on('did-finish-load', () => {
|
||||
window.webContents.session.setUserAgent(`LBRY/${app.getVersion()}`);
|
||||
|
||||
// restore the user's previous language - we have to do this from here because only electron process can access app.getLocale()
|
||||
window.webContents.executeJavaScript("localStorage.getItem('language')").then(storedLanguage => {
|
||||
const language =
|
||||
storedLanguage && storedLanguage !== 'undefined' && storedLanguage !== 'null'
|
||||
? storedLanguage
|
||||
: GetAppLangCode();
|
||||
if (language !== 'en' && SUPPORTED_LANGUAGES[language]) {
|
||||
window.webContents.send('language-set', language);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
window.webContents.on('crashed', () => {
|
||||
window = null;
|
||||
});
|
||||
|
||||
window.webContents.on('new-window', (event, url) => {
|
||||
event.preventDefault();
|
||||
shell.openExternal(url);
|
||||
});
|
||||
|
||||
window.webContents.on('update-target-url', (event, url) => {
|
||||
// Change internal links to the lbry protocol. External (https) links should remain unchanged.
|
||||
let hoverUrlBase = `http://localhost:${WEBPACK_ELECTRON_PORT}/`;
|
||||
if (!isDev) {
|
||||
// Return format of 'update-target-url':
|
||||
// Linux: file:///@claim
|
||||
// Windows: file:///C:/@claim
|
||||
// Use '__dirname' in case installation is not in C:
|
||||
const path = require('path');
|
||||
const exeRoot = path.parse(__dirname).root;
|
||||
|
||||
if (process.platform === 'win32') {
|
||||
// Add extra "/" prefix. Convert "C:\" to "C:/"
|
||||
hoverUrlBase = `file:///` + exeRoot.replace(/\\/g, '/');
|
||||
} else {
|
||||
hoverUrlBase = `file://` + exeRoot;
|
||||
}
|
||||
}
|
||||
|
||||
let dispUrl = url.replace(hoverUrlBase, lbryProto);
|
||||
// Non-claims don't need the lbry protocol:
|
||||
if (dispUrl === lbryProto) {
|
||||
dispUrl = 'Home';
|
||||
} else if (dispUrl.startsWith(lbryProto + '$/')) {
|
||||
dispUrl = dispUrl.replace(lbryProto, '/');
|
||||
}
|
||||
window.webContents.send('update-target-url', dispUrl);
|
||||
});
|
||||
|
||||
return window;
|
||||
};
|
70
electron/devServer.js
Normal file
|
@ -0,0 +1,70 @@
|
|||
/* eslint-disable no-console */
|
||||
const { WEBPACK_ELECTRON_PORT } = require('../config');
|
||||
const chalk = require('chalk');
|
||||
const webpack = require('webpack');
|
||||
const merge = require('webpack-merge');
|
||||
const middleware = require('webpack-dev-middleware');
|
||||
const express = require('express');
|
||||
const app = express();
|
||||
|
||||
console.log(
|
||||
chalk.magenta(`Compiling ${chalk.underline('main')} and ${chalk.underline('render')}, this will take a while.`)
|
||||
);
|
||||
|
||||
let [mainConfig, renderConfig] = require('../webpack.electron.config.js');
|
||||
|
||||
renderConfig = merge(renderConfig, {
|
||||
entry: { ui: ['webpack-hot-middleware/client'] },
|
||||
plugins: [new webpack.HotModuleReplacementPlugin()],
|
||||
resolve: {
|
||||
alias: { 'react-dom': '@hot-loader/react-dom' },
|
||||
symlinks: false,
|
||||
},
|
||||
|
||||
});
|
||||
|
||||
const mainCompiler = webpack(mainConfig);
|
||||
const mainInstance = middleware(mainCompiler, {
|
||||
logLevel: 'warn',
|
||||
writeToDisk: filename => {
|
||||
// console.log(`Writing '${filename}'.`);
|
||||
return true;
|
||||
},
|
||||
});
|
||||
|
||||
const renderCompiler = webpack(renderConfig);
|
||||
const renderInstance = middleware(renderCompiler, {
|
||||
logLevel: 'warn',
|
||||
publicPath: '/',
|
||||
});
|
||||
app.use(require('webpack-hot-middleware')(renderCompiler));
|
||||
app.use(renderInstance);
|
||||
app.use(express.static('dist/electron/static'));
|
||||
|
||||
app.listen(WEBPACK_ELECTRON_PORT, () => {
|
||||
console.log(chalk.yellow.bold(`Renderer listening on port ${WEBPACK_ELECTRON_PORT} (still compiling)`));
|
||||
});
|
||||
|
||||
mainInstance.waitUntilValid(() => console.log(chalk.green(`${chalk.underline('main')} compilation complete.`)));
|
||||
renderInstance.waitUntilValid(() => console.log(chalk.green(`${chalk.underline('render')} compilation complete.`)));
|
||||
|
||||
mainInstance.waitUntilValid(() => {
|
||||
console.log(chalk.yellow('Spawning electron...'));
|
||||
|
||||
const electron = require('electron');
|
||||
const proc = require('child_process');
|
||||
|
||||
const child = proc.spawn(electron, ['./dist/electron/webpack/main.js']);
|
||||
|
||||
child.stdout.on('data', data => {
|
||||
console.log(data.toString());
|
||||
});
|
||||
|
||||
process.on('SIGINT', function() {
|
||||
console.log('Killing threads...');
|
||||
|
||||
child.kill('SIGINT');
|
||||
process.exit();
|
||||
});
|
||||
});
|
||||
/* eslint-enable no-console */
|
388
electron/index.js
Normal file
|
@ -0,0 +1,388 @@
|
|||
/* eslint no-console:0 */
|
||||
/* eslint space-before-function-paren:0 */
|
||||
// Module imports
|
||||
import '@babel/polyfill';
|
||||
import SemVer from 'semver';
|
||||
import https from 'https';
|
||||
import { app, dialog, ipcMain, session, shell } from 'electron';
|
||||
import { autoUpdater } from 'electron-updater';
|
||||
import { Lbry } from 'lbry-redux';
|
||||
import LbryFirstInstance from './LbryFirstInstance';
|
||||
import Daemon from './Daemon';
|
||||
import isDev from 'electron-is-dev';
|
||||
import createTray from './createTray';
|
||||
import createWindow from './createWindow';
|
||||
import pjson from '../package.json';
|
||||
import startSandbox from './startSandbox';
|
||||
import installDevtools from './installDevtools';
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
const filePath = path.join(process.resourcesPath, 'static', 'upgradeDisabled');
|
||||
let upgradeDisabled;
|
||||
try {
|
||||
fs.accessSync(filePath, fs.constants.R_OK);
|
||||
upgradeDisabled = true;
|
||||
} catch (err) {
|
||||
upgradeDisabled = false;
|
||||
}
|
||||
autoUpdater.autoDownload = !upgradeDisabled;
|
||||
|
||||
// This is set to true if an auto update has been downloaded through the Electron
|
||||
// auto-update system and is ready to install. If the user declined an update earlier,
|
||||
// it will still install on shutdown.
|
||||
let autoUpdateDownloaded = false;
|
||||
|
||||
// This is used to keep track of whether we are showing the special dialog
|
||||
// that we show on Windows after you decline an upgrade and close the app later.
|
||||
let showingAutoUpdateCloseAlert = false;
|
||||
|
||||
// Keep a global reference, if you don't, they will be closed automatically when the JavaScript
|
||||
// object is garbage collected.
|
||||
let rendererWindow;
|
||||
|
||||
let tray; // eslint-disable-line
|
||||
let daemon;
|
||||
let lbryFirst;
|
||||
|
||||
const appState = {};
|
||||
|
||||
if (process.platform !== 'linux') {
|
||||
app.setAsDefaultProtocolClient('lbry');
|
||||
}
|
||||
|
||||
app.name = 'LBRY';
|
||||
app.setAppUserModelId('io.lbry.LBRY');
|
||||
app.commandLine.appendSwitch('force-color-profile', 'srgb');
|
||||
app.commandLine.appendSwitch('disable-features', 'OutOfBlinkCors');
|
||||
|
||||
if (isDev) {
|
||||
// Disable security warnings in dev mode:
|
||||
// https://github.com/electron/electron/blob/master/docs/tutorial/security.md#electron-security-warnings
|
||||
process.env.ELECTRON_DISABLE_SECURITY_WARNINGS = true;
|
||||
}
|
||||
|
||||
const startDaemon = async () => {
|
||||
let isDaemonRunning = false;
|
||||
|
||||
await Lbry.status()
|
||||
.then(() => {
|
||||
isDaemonRunning = true;
|
||||
console.log('SDK already running');
|
||||
})
|
||||
.catch(() => {
|
||||
console.log('Starting SDK');
|
||||
});
|
||||
|
||||
if (!isDaemonRunning) {
|
||||
daemon = new Daemon();
|
||||
daemon.on('exit', () => {
|
||||
if (!isDev) {
|
||||
daemon = null;
|
||||
if (!appState.isQuitting) {
|
||||
dialog.showErrorBox(
|
||||
'Daemon has Exited',
|
||||
'The daemon may have encountered an unexpected error, or another daemon instance is already running. \n\n' +
|
||||
'For more information please visit: \n' +
|
||||
'https://lbry.com/faq/startup-troubleshooting'
|
||||
);
|
||||
}
|
||||
app.quit();
|
||||
}
|
||||
});
|
||||
await daemon.launch();
|
||||
}
|
||||
};
|
||||
|
||||
let isLbryFirstRunning = false;
|
||||
const startLbryFirst = async () => {
|
||||
if (isLbryFirstRunning) {
|
||||
console.log('LbryFirst already running');
|
||||
handleLbryFirstLaunched();
|
||||
return;
|
||||
}
|
||||
|
||||
console.log('LbryFirst: Starting...');
|
||||
|
||||
try {
|
||||
lbryFirst = new LbryFirstInstance();
|
||||
lbryFirst.on('exit', e => {
|
||||
if (!isDev) {
|
||||
lbryFirst = null;
|
||||
isLbryFirstRunning = false;
|
||||
if (!appState.isQuitting) {
|
||||
dialog.showErrorBox(
|
||||
'LbryFirst has Exited',
|
||||
'The lbryFirst may have encountered an unexpected error, or another lbryFirst instance is already running. \n\n',
|
||||
e
|
||||
);
|
||||
}
|
||||
app.quit();
|
||||
}
|
||||
});
|
||||
} catch (e) {
|
||||
console.log('LbryFirst: Failed to create new instance\n\n', e);
|
||||
}
|
||||
|
||||
console.log('LbryFirst: Running...');
|
||||
|
||||
try {
|
||||
await lbryFirst.launch();
|
||||
handleLbryFirstLaunched();
|
||||
} catch (e) {
|
||||
isLbryFirstRunning = false;
|
||||
console.log('LbryFirst: Failed to start\n', e);
|
||||
}
|
||||
};
|
||||
|
||||
const handleLbryFirstLaunched = () => {
|
||||
isLbryFirstRunning = true;
|
||||
rendererWindow.webContents.send('lbry-first-launched');
|
||||
};
|
||||
|
||||
// When we are starting the app, ensure there are no other apps already running
|
||||
const gotSingleInstanceLock = app.requestSingleInstanceLock();
|
||||
|
||||
if (!gotSingleInstanceLock) {
|
||||
// Another instance already has a lock, abort
|
||||
app.quit();
|
||||
} else {
|
||||
app.on('second-instance', (event, argv) => {
|
||||
// Send the url to the app to navigate first, then focus
|
||||
if (rendererWindow) {
|
||||
if ((process.platform === 'win32' || process.platform === 'linux') && String(argv[1]).startsWith('lbry')) {
|
||||
let URI = argv[1];
|
||||
|
||||
// Keep only command line / deep linked arguments
|
||||
// Windows normalizes URIs when they're passed in from other apps. On Windows, this tries to
|
||||
// restore the original URI that was typed.
|
||||
// - If the URI has no path, Windows adds a trailing slash. LBRY URIs can't have a slash with no
|
||||
// path, so we just strip it off.
|
||||
// - In a URI with a claim ID, like lbry://channel#claimid, Windows interprets the hash mark as
|
||||
// an anchor and converts it to lbry://channel/#claimid. We remove the slash here as well.
|
||||
// - ? also interpreted as an anchor, remove slash also.
|
||||
if (process.platform === 'win32') {
|
||||
URI = URI.replace(/\/$/, '')
|
||||
.replace('/#', '#')
|
||||
.replace('/?', '?');
|
||||
}
|
||||
|
||||
rendererWindow.webContents.send('open-uri-requested', URI);
|
||||
}
|
||||
|
||||
rendererWindow.show();
|
||||
}
|
||||
});
|
||||
|
||||
app.on('ready', async () => {
|
||||
await startDaemon();
|
||||
startSandbox();
|
||||
|
||||
if (isDev) {
|
||||
await installDevtools();
|
||||
}
|
||||
rendererWindow = createWindow(appState);
|
||||
tray = createTray(rendererWindow);
|
||||
|
||||
if (!isDev) {
|
||||
rendererWindow.webContents.on('devtools-opened', () => {
|
||||
// Send a message to the renderer process so we can log a security warning
|
||||
rendererWindow.webContents.send('devtools-is-opened');
|
||||
});
|
||||
}
|
||||
|
||||
// If an "Origin" header is passed, the SDK will check that it is set to allow that origin in the daemon_settings.yml
|
||||
// By default, electron sends http://localhost:{port} as the origin for POST requests
|
||||
// https://github.com/electron/electron/issues/7931#issuecomment-361759277
|
||||
session.defaultSession.webRequest.onBeforeSendHeaders((details, callback) => {
|
||||
if (details.method === 'POST' && details.requestHeaders['Content-Type'] === 'application/json-rpc') {
|
||||
delete details.requestHeaders['Origin'];
|
||||
}
|
||||
callback({ cancel: false, requestHeaders: details.requestHeaders });
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
app.on('activate', () => {
|
||||
if (rendererWindow) {
|
||||
rendererWindow.show();
|
||||
}
|
||||
});
|
||||
|
||||
app.on('will-quit', event => {
|
||||
if (
|
||||
process.platform === 'win32' &&
|
||||
autoUpdateDownloaded &&
|
||||
!appState.autoUpdateAccepted &&
|
||||
!showingAutoUpdateCloseAlert
|
||||
) {
|
||||
// We're on Win and have an update downloaded, but the user declined it (or closed
|
||||
// the app without accepting it). Now the user is closing the app, so the new update
|
||||
// will install. On Mac this is silent, but on Windows they get a confusing permission
|
||||
// escalation dialog, so we show Windows users a warning dialog first.
|
||||
|
||||
showingAutoUpdateCloseAlert = true;
|
||||
dialog.showMessageBox(
|
||||
{
|
||||
type: 'info',
|
||||
title: 'LBRY Will Upgrade',
|
||||
message: 'LBRY has a pending upgrade. Please select "Yes" to install it on the prompt shown after this one.',
|
||||
},
|
||||
() => {
|
||||
app.quit();
|
||||
}
|
||||
);
|
||||
|
||||
event.preventDefault();
|
||||
return;
|
||||
}
|
||||
|
||||
appState.isQuitting = true;
|
||||
|
||||
if (daemon) {
|
||||
daemon.quit();
|
||||
event.preventDefault();
|
||||
}
|
||||
if (lbryFirst) {
|
||||
lbryFirst.quit();
|
||||
event.preventDefault();
|
||||
}
|
||||
|
||||
if (rendererWindow) {
|
||||
tray.destroy();
|
||||
rendererWindow = null;
|
||||
}
|
||||
});
|
||||
|
||||
app.on('will-finish-launching', () => {
|
||||
// Protocol handler for macOS
|
||||
app.on('open-url', (event, URL) => {
|
||||
event.preventDefault();
|
||||
|
||||
if (rendererWindow) {
|
||||
rendererWindow.webContents.send('open-uri-requested', URL);
|
||||
rendererWindow.show();
|
||||
} else {
|
||||
appState.macDeepLinkingURI = URL;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
app.on('before-quit', () => {
|
||||
appState.isQuitting = true;
|
||||
});
|
||||
|
||||
ipcMain.on('upgrade', (event, installerPath) => {
|
||||
app.on('quit', () => {
|
||||
console.log('Launching upgrade installer at', installerPath);
|
||||
// This gets triggered called after *all* other quit-related events, so
|
||||
// we'll only get here if we're fully prepared and quitting for real.
|
||||
shell.openPath(installerPath);
|
||||
});
|
||||
// what to do if no shutdown in a long time?
|
||||
console.log('Update downloaded to', installerPath);
|
||||
console.log('The app will close and you will be prompted to install the latest version of LBRY.');
|
||||
console.log('After the install is complete, please reopen the app.');
|
||||
app.quit();
|
||||
});
|
||||
|
||||
autoUpdater.on('update-downloaded', () => {
|
||||
autoUpdateDownloaded = true;
|
||||
});
|
||||
|
||||
ipcMain.on('autoUpdateAccepted', () => {
|
||||
appState.autoUpdateAccepted = true;
|
||||
autoUpdater.quitAndInstall();
|
||||
});
|
||||
|
||||
ipcMain.on('version-info-requested', () => {
|
||||
function formatRc(ver) {
|
||||
// Adds dash if needed to make RC suffix SemVer friendly
|
||||
return ver.replace(/([^-])rc/, '$1-rc');
|
||||
}
|
||||
|
||||
const localVersion = pjson.version;
|
||||
let result = '';
|
||||
const onSuccess = res => {
|
||||
res.on('data', data => {
|
||||
result += data;
|
||||
});
|
||||
|
||||
res.on('end', () => {
|
||||
let json;
|
||||
try {
|
||||
json = JSON.parse(result);
|
||||
} catch (e) {
|
||||
return;
|
||||
}
|
||||
const tagName = json.tag_name;
|
||||
if (tagName) {
|
||||
const [, remoteVersion] = tagName.match(/^v([\d.]+(?:-?rc\d+)?)$/);
|
||||
if (!remoteVersion) {
|
||||
if (rendererWindow) {
|
||||
rendererWindow.webContents.send('version-info-received', localVersion);
|
||||
}
|
||||
} else {
|
||||
const upgradeAvailable = SemVer.gt(formatRc(remoteVersion), formatRc(localVersion));
|
||||
if (rendererWindow) {
|
||||
rendererWindow.webContents.send('version-info-received', {
|
||||
remoteVersion,
|
||||
localVersion,
|
||||
upgradeAvailable,
|
||||
});
|
||||
}
|
||||
}
|
||||
} else if (rendererWindow) {
|
||||
rendererWindow.webContents.send('version-info-received', { localVersion });
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const requestLatestRelease = (alreadyRedirected = false) => {
|
||||
const req = https.get(
|
||||
{
|
||||
hostname: 'api.github.com',
|
||||
path: '/repos/lbryio/lbry-desktop/releases/latest',
|
||||
headers: { 'user-agent': `LBRY/${localVersion}` },
|
||||
},
|
||||
res => {
|
||||
if (res.statusCode === 301 || res.statusCode === 302) {
|
||||
requestLatestRelease(res.headers.location, true);
|
||||
} else {
|
||||
onSuccess(res);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
if (alreadyRedirected) return;
|
||||
req.on('error', err => {
|
||||
console.log('Failed to get current version from GitHub. Error:', err);
|
||||
if (rendererWindow) {
|
||||
rendererWindow.webContents.send('version-info-received', null);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
if (upgradeDisabled && rendererWindow) {
|
||||
rendererWindow.webContents.send('version-info-received', { localVersion });
|
||||
return;
|
||||
}
|
||||
|
||||
requestLatestRelease();
|
||||
});
|
||||
|
||||
ipcMain.on('launch-lbry-first', async () => {
|
||||
try {
|
||||
await startLbryFirst();
|
||||
} catch (e) {
|
||||
console.log('Failed to start LbryFirst');
|
||||
console.log(e);
|
||||
}
|
||||
});
|
||||
|
||||
process.on('uncaughtException', error => {
|
||||
console.log(error);
|
||||
dialog.showErrorBox('Error Encountered', `Caught error: ${error}`);
|
||||
appState.isQuitting = true;
|
||||
if (daemon) daemon.quit();
|
||||
app.exit(1);
|
||||
});
|
11
electron/installDevtools.js
Normal file
|
@ -0,0 +1,11 @@
|
|||
export default async function installDevtools() {
|
||||
const { default: installExtension, REACT_DEVELOPER_TOOLS, REDUX_DEVTOOLS } = require('electron-devtools-installer');
|
||||
|
||||
await installExtension(REACT_DEVELOPER_TOOLS)
|
||||
.then(name => console.log(`Added Extension: ${name}`))
|
||||
.catch(err => console.log('An error occurred: ', err));
|
||||
|
||||
await installExtension(REDUX_DEVTOOLS)
|
||||
.then(name => console.log(`Added Extension: ${name}`))
|
||||
.catch(err => console.log('An error occurred: ', err));
|
||||
}
|
127
electron/menu/setupBarMenu.js
Normal file
|
@ -0,0 +1,127 @@
|
|||
import { app, Menu, shell } from 'electron';
|
||||
import { ZOOM } from 'util/zoomWindow';
|
||||
|
||||
export default () => {
|
||||
const template = [
|
||||
{
|
||||
label: 'File',
|
||||
submenu: [{ role: 'quit', accelerator: 'CmdOrCtrl+Q' }],
|
||||
},
|
||||
{
|
||||
label: 'Edit',
|
||||
submenu: [
|
||||
{ role: 'undo' },
|
||||
{ role: 'redo' },
|
||||
{ type: 'separator' },
|
||||
{ role: 'cut' },
|
||||
{ role: 'copy' },
|
||||
{ role: 'paste' },
|
||||
{ role: 'selectAll' },
|
||||
],
|
||||
},
|
||||
{
|
||||
label: 'View',
|
||||
submenu: [
|
||||
{ role: 'reload' },
|
||||
{
|
||||
label: 'Zoom',
|
||||
submenu: [
|
||||
{
|
||||
label: 'Zoom In',
|
||||
accelerator: 'CmdOrCtrl+=',
|
||||
click: (menuItem, browserWindow) => {
|
||||
if (browserWindow) {
|
||||
browserWindow.webContents.send('zoom-window', ZOOM.INCREMENT);
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Zoom Out',
|
||||
accelerator: 'CmdOrCtrl+-',
|
||||
click: (menuItem, browserWindow) => {
|
||||
if (browserWindow) {
|
||||
browserWindow.webContents.send('zoom-window', ZOOM.DECREMENT);
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Reset Zoom',
|
||||
accelerator: 'CmdOrCtrl+0',
|
||||
click: (menuItem, browserWindow) => {
|
||||
if (browserWindow) {
|
||||
browserWindow.webContents.send('zoom-window', ZOOM.RESET);
|
||||
}
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
label: 'Developer',
|
||||
submenu: [{ role: 'forcereload' }, { role: 'toggledevtools' }],
|
||||
},
|
||||
{ type: 'separator' },
|
||||
{ role: 'togglefullscreen' },
|
||||
],
|
||||
},
|
||||
{
|
||||
role: 'window',
|
||||
submenu: [{ role: 'minimize' }, { role: 'close' }],
|
||||
},
|
||||
{
|
||||
role: 'help',
|
||||
submenu: [
|
||||
{
|
||||
label: 'Learn More',
|
||||
click: (menuItem, browserWindow) => {
|
||||
if (browserWindow) {
|
||||
browserWindow.webContents.send('open-menu', '/help');
|
||||
} else {
|
||||
shell.openExternal('https://lbry.com/faq');
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Frequently Asked Questions',
|
||||
click: () => {
|
||||
shell.openExternal('https://lbry.com/faq');
|
||||
},
|
||||
},
|
||||
{ type: 'separator' },
|
||||
{
|
||||
label: 'Report Issue',
|
||||
click: () => {
|
||||
shell.openExternal('https://github.com/lbryio/lbry-desktop/issues/new');
|
||||
},
|
||||
},
|
||||
{ type: 'separator' },
|
||||
{
|
||||
label: 'Developer API Guide',
|
||||
click: () => {
|
||||
shell.openExternal('https://lbry.tech/playground');
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
const darwinTemplateAddition = {
|
||||
label: app.name,
|
||||
submenu: [
|
||||
{ role: 'about' },
|
||||
{ type: 'separator' },
|
||||
{ role: 'services', submenu: [] },
|
||||
{ type: 'separator' },
|
||||
{ role: 'hide' },
|
||||
{ role: 'hideothers' },
|
||||
{ type: 'separator' },
|
||||
{ role: 'quit' },
|
||||
],
|
||||
};
|
||||
|
||||
if (process.platform === 'darwin') {
|
||||
template.unshift(darwinTemplateAddition);
|
||||
}
|
||||
|
||||
const menu = Menu.buildFromTemplate(template);
|
||||
Menu.setApplicationMenu(menu);
|
||||
};
|
4
electron/sandboxTest.js
Normal file
|
@ -0,0 +1,4 @@
|
|||
require('@babel/register');
|
||||
require('@babel/polyfill');
|
||||
|
||||
require('./startSandbox.js')();
|
38
electron/startSandbox.js
Normal file
|
@ -0,0 +1,38 @@
|
|||
import express from 'express';
|
||||
import unpackByOutpoint from './unpackByOutpoint';
|
||||
|
||||
// Polyfills and `lbry-redux`
|
||||
global.fetch = require('node-fetch');
|
||||
global.window = global;
|
||||
if (typeof global.fetch === 'object') {
|
||||
global.fetch = global.fetch.default;
|
||||
}
|
||||
|
||||
const { Lbry } = require('lbry-redux');
|
||||
|
||||
delete global.window;
|
||||
|
||||
export default async function startSandbox() {
|
||||
const port = 5278;
|
||||
const sandbox = express();
|
||||
|
||||
sandbox.get('/set/:outpoint', async (req, res) => {
|
||||
const { outpoint } = req.params;
|
||||
|
||||
const resolvedPath = await unpackByOutpoint(Lbry, outpoint);
|
||||
|
||||
sandbox.use(`/sandbox/${outpoint}/`, express.static(resolvedPath));
|
||||
|
||||
res.send(`/sandbox/${outpoint}/`);
|
||||
});
|
||||
|
||||
sandbox
|
||||
.listen(port, 'localhost', () => console.log(`Sandbox listening on port ${port}.`))
|
||||
.on('error', err => {
|
||||
if (err.code === 'EADDRINUSE') {
|
||||
console.log(
|
||||
`Server already listening at localhost:${port}. This is probably another LBRY app running. If not, games in the app will not work.`
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
23
electron/unpackByOutpoint.js
Normal file
|
@ -0,0 +1,23 @@
|
|||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { unpackDirectory } from 'lbry-format';
|
||||
|
||||
async function unpackByOutpoint(lbry, outpoint) {
|
||||
const { items: claimFiles } = await lbry.file_list({ outpoint, full_status: true, page: 1, page_size: 1 });
|
||||
|
||||
if (claimFiles && claimFiles.length) {
|
||||
const claimFileInfo = claimFiles[0];
|
||||
const packFilePath = path.resolve(claimFileInfo.download_path);
|
||||
const unpackPath = path.normalize(path.join(claimFileInfo.download_directory, claimFileInfo.claim_name));
|
||||
|
||||
if (!fs.existsSync(unpackPath)) {
|
||||
await unpackDirectory(unpackPath, {
|
||||
fileName: packFilePath,
|
||||
});
|
||||
}
|
||||
|
||||
return unpackPath;
|
||||
}
|
||||
}
|
||||
|
||||
export default unpackByOutpoint;
|
2
flow-typed/18nj.js
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
// @flow
|
||||
declare function __(a: string, b?: {}): string;
|
114
flow-typed/Comment.js
vendored
Normal file
|
@ -0,0 +1,114 @@
|
|||
declare type Comment = {
|
||||
comment: string, // comment body
|
||||
comment_id: string, // sha256 digest
|
||||
claim_id: string, // id linking to the claim this comment
|
||||
timestamp: number, // integer representing unix-time
|
||||
is_hidden: boolean, // claim owner may enable/disable this
|
||||
channel_id: string, // claimId of channel signing this comment
|
||||
channel_name?: string, // name of channel claim
|
||||
channel_url?: string, // full lbry url to signing channel
|
||||
signature?: string, // signature of comment by originating channel
|
||||
signing_ts?: string, // timestamp used when signing this comment
|
||||
is_channel_signature_valid?: boolean, // whether or not the signature could be validated
|
||||
parent_id?: number, // comment_id of comment this is in reply to
|
||||
is_pinned: boolean,
|
||||
support_amount: number,
|
||||
};
|
||||
|
||||
declare type PerChannelSettings = {
|
||||
words?: Array<string>,
|
||||
comments_enabled?: boolean,
|
||||
min_tip_amount_comment?: number,
|
||||
min_tip_amount_super_chat?: number,
|
||||
slow_mode_min_gap?: number,
|
||||
};
|
||||
|
||||
// todo: relate individual comments to their commentId
|
||||
declare type CommentsState = {
|
||||
commentsByUri: { [string]: string },
|
||||
superChatsByUri: { [string]: { totalAmount: number, comments: Array<Comment> } },
|
||||
byId: { [string]: Array<string> },
|
||||
repliesByParentId: { [string]: Array<string> }, // ParentCommentID -> list of reply comments
|
||||
topLevelCommentsById: { [string]: Array<string> }, // ClaimID -> list of top level comments
|
||||
commentById: { [string]: Comment },
|
||||
isLoading: boolean,
|
||||
myComments: ?Set<string>,
|
||||
isFetchingReacts: boolean,
|
||||
myReactsByCommentId: any,
|
||||
othersReactsByCommentId: any,
|
||||
pendingCommentReactions: Array<string>,
|
||||
moderationBlockList: ?Array<string>,
|
||||
fetchingModerationBlockList: boolean,
|
||||
blockingByUri: {},
|
||||
unBlockingByUri: {},
|
||||
settingsByChannelId: { [string]: PerChannelSettings }, // ChannelID -> settings
|
||||
fetchingSettings: boolean,
|
||||
fetchingBlockedWords: boolean,
|
||||
};
|
||||
|
||||
declare type CommentReactParams = {
|
||||
comment_ids: string,
|
||||
channel_name: string,
|
||||
channel_id: string,
|
||||
react_type: string,
|
||||
clear_types?: string,
|
||||
remove?: boolean,
|
||||
};
|
||||
|
||||
declare type CommentListParams = {
|
||||
page: number,
|
||||
page_size: number,
|
||||
claim_id: string,
|
||||
};
|
||||
|
||||
declare type CommentListResponse = {
|
||||
items: Array<Comment>,
|
||||
total_amount: number,
|
||||
};
|
||||
|
||||
declare type CommentAbandonParams = {
|
||||
comment_id: string,
|
||||
creator_channel_id?: string,
|
||||
creator_channel_name?: string,
|
||||
channel_id?: string,
|
||||
hexdata?: string,
|
||||
};
|
||||
|
||||
declare type CommentCreateParams = {
|
||||
comment: string,
|
||||
claim_id: string,
|
||||
parent_id?: string,
|
||||
signature: string,
|
||||
signing_ts: number,
|
||||
support_tx_id?: string,
|
||||
};
|
||||
|
||||
declare type SuperListParams = {};
|
||||
|
||||
declare type ModerationBlockParams = {};
|
||||
|
||||
declare type SettingsParams = {
|
||||
channel_name: string,
|
||||
channel_id: string,
|
||||
signature: string,
|
||||
signing_ts: string,
|
||||
};
|
||||
|
||||
declare type UpdateSettingsParams = {
|
||||
channel_name: string,
|
||||
channel_id: string,
|
||||
signature: string,
|
||||
signing_ts: string,
|
||||
comments_enabled?: boolean,
|
||||
min_tip_amount_comment?: number,
|
||||
min_tip_amount_super_chat?: number,
|
||||
slow_mode_min_gap?: number,
|
||||
}
|
||||
|
||||
declare type BlockWordParams = {
|
||||
channel_name: string,
|
||||
channel_id: string,
|
||||
signature: string,
|
||||
signing_ts: string,
|
||||
words: string, // CSV list of containing words to block comment on content
|
||||
};
|
3
flow-typed/bluebird.js
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
declare module 'bluebird' {
|
||||
declare module.exports: any;
|
||||
}
|
3
flow-typed/classnames.js
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
declare module 'classnames' {
|
||||
declare module.exports: any;
|
||||
}
|
8
flow-typed/content.js
vendored
Normal file
|
@ -0,0 +1,8 @@
|
|||
// @flow
|
||||
|
||||
declare type PlayingUri = {
|
||||
uri: string,
|
||||
pathname: string,
|
||||
commentId?: string,
|
||||
source?: string,
|
||||
};
|
3
flow-typed/electron.js
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
declare module 'electron' {
|
||||
declare module.exports: any;
|
||||
}
|
3
flow-typed/formik.js
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
declare module 'formik' {
|
||||
declare module.exports: any;
|
||||
}
|
26
flow-typed/homepage.js
vendored
Normal file
|
@ -0,0 +1,26 @@
|
|||
declare type HomepageObject = {
|
||||
icon: string,
|
||||
link: string,
|
||||
options: any,
|
||||
route: string,
|
||||
title: string,
|
||||
}
|
||||
|
||||
declare type HomepageData = {
|
||||
[string]: HomepageObject,
|
||||
default: any => any,
|
||||
}
|
||||
|
||||
declare type RowDataItem = {
|
||||
title: any,
|
||||
link?: string,
|
||||
help?: any,
|
||||
icon?: string,
|
||||
extra?: any,
|
||||
options?: {
|
||||
channelIds?: Array<string>,
|
||||
pageSize: number,
|
||||
},
|
||||
route?: string,
|
||||
hideForUnauth?: boolean,
|
||||
};
|
26
flow-typed/livestream.js
vendored
Normal file
|
@ -0,0 +1,26 @@
|
|||
// @flow
|
||||
|
||||
declare type LivestreamReplayItem = {
|
||||
data: {
|
||||
claimId: string,
|
||||
deleted: boolean,
|
||||
deletedAt: ?string,
|
||||
ffprobe: any,
|
||||
fileDuration: number, // decimal? float? string?
|
||||
fileType: string,
|
||||
fileLocation: string,
|
||||
fileSize: number,
|
||||
key: string,
|
||||
published: boolean,
|
||||
publishedAt: ?string,
|
||||
service: string,
|
||||
thumbnails: Array<string>,
|
||||
uploadedAt: string, // Date?
|
||||
},
|
||||
id: string,
|
||||
}
|
||||
declare type LivestreamReplayData = Array<LivestreamReplayItem>;
|
||||
|
||||
declare type LivestreamState = {
|
||||
fetchingById: {},
|
||||
}
|
18
flow-typed/location.js
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
// @flow
|
||||
|
||||
declare type UrlLocation = {
|
||||
search: string,
|
||||
hash: string,
|
||||
host: string,
|
||||
hostname: string,
|
||||
href: string,
|
||||
key: string,
|
||||
origin: string,
|
||||
pathname: string,
|
||||
port: string,
|
||||
protocol: string,
|
||||
reload: () => void,
|
||||
replace: string => void,
|
||||
search: string,
|
||||
state: {},
|
||||
};
|
43
flow-typed/notification.js
vendored
Normal file
|
@ -0,0 +1,43 @@
|
|||
// @flow
|
||||
declare type WebNotification = {
|
||||
active_at: string,
|
||||
created_at: string,
|
||||
id: number,
|
||||
is_app_readable: boolean,
|
||||
is_device_notified: boolean,
|
||||
is_emailed: boolean,
|
||||
is_read: boolean,
|
||||
is_seen: boolean,
|
||||
notification_parameters: {
|
||||
device: {
|
||||
analytics_label: string,
|
||||
image_url: string,
|
||||
is_data_only: boolean,
|
||||
name: string,
|
||||
placeholders: ?string,
|
||||
target: string,
|
||||
text: string,
|
||||
title: string,
|
||||
type: string,
|
||||
},
|
||||
dynamic: {
|
||||
comment_author: string,
|
||||
reply_author: string,
|
||||
hash: string,
|
||||
claim_title: string,
|
||||
comment?: string,
|
||||
channel_url: string,
|
||||
},
|
||||
email: {},
|
||||
},
|
||||
notification_rule: string,
|
||||
type: string,
|
||||
updated_at: string,
|
||||
user_id: number,
|
||||
group_count?: number,
|
||||
};
|
||||
|
||||
declare type NotificationCategory = {
|
||||
name: string,
|
||||
types: ?Array<string>,
|
||||
};
|
298
flow-typed/npm/@babel/core_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,298 @@
|
|||
// flow-typed signature: cc45dc0508740d7ad110ba88458158ac
|
||||
// flow-typed version: <<STUB>>/@babel/core_v^7.0.0/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* '@babel/core'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module '@babel/core' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
declare module '@babel/core/lib/config/caching' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/config/config-chain' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/config/config-descriptors' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/config/files/configuration' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/config/files/index-browser' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/config/files/index' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/config/files/package' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/config/files/plugins' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/config/files/types' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/config/files/utils' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/config/full' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/config/helpers/config-api' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/config/helpers/environment' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/config/index' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/config/item' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/config/partial' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/config/pattern-to-regex' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/config/plugin' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/config/util' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/config/validation/option-assertions' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/config/validation/options' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/config/validation/plugins' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/config/validation/removed' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/index' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/parse' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/tools/build-external-helpers' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/transform-ast' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/transform-file-browser' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/transform-file' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/transform' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/transformation/block-hoist-plugin' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/transformation/file/file' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/transformation/file/generate' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/transformation/file/merge-map' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/transformation/index' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/transformation/normalize-file' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/transformation/normalize-opts' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/transformation/plugin-pass' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/core/lib/transformation/util/missing-plugin-helper' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
// Filename aliases
|
||||
declare module '@babel/core/lib/config/caching.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/config/caching'>;
|
||||
}
|
||||
declare module '@babel/core/lib/config/config-chain.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/config/config-chain'>;
|
||||
}
|
||||
declare module '@babel/core/lib/config/config-descriptors.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/config/config-descriptors'>;
|
||||
}
|
||||
declare module '@babel/core/lib/config/files/configuration.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/config/files/configuration'>;
|
||||
}
|
||||
declare module '@babel/core/lib/config/files/index-browser.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/config/files/index-browser'>;
|
||||
}
|
||||
declare module '@babel/core/lib/config/files/index.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/config/files/index'>;
|
||||
}
|
||||
declare module '@babel/core/lib/config/files/package.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/config/files/package'>;
|
||||
}
|
||||
declare module '@babel/core/lib/config/files/plugins.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/config/files/plugins'>;
|
||||
}
|
||||
declare module '@babel/core/lib/config/files/types.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/config/files/types'>;
|
||||
}
|
||||
declare module '@babel/core/lib/config/files/utils.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/config/files/utils'>;
|
||||
}
|
||||
declare module '@babel/core/lib/config/full.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/config/full'>;
|
||||
}
|
||||
declare module '@babel/core/lib/config/helpers/config-api.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/config/helpers/config-api'>;
|
||||
}
|
||||
declare module '@babel/core/lib/config/helpers/environment.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/config/helpers/environment'>;
|
||||
}
|
||||
declare module '@babel/core/lib/config/index.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/config/index'>;
|
||||
}
|
||||
declare module '@babel/core/lib/config/item.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/config/item'>;
|
||||
}
|
||||
declare module '@babel/core/lib/config/partial.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/config/partial'>;
|
||||
}
|
||||
declare module '@babel/core/lib/config/pattern-to-regex.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/config/pattern-to-regex'>;
|
||||
}
|
||||
declare module '@babel/core/lib/config/plugin.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/config/plugin'>;
|
||||
}
|
||||
declare module '@babel/core/lib/config/util.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/config/util'>;
|
||||
}
|
||||
declare module '@babel/core/lib/config/validation/option-assertions.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/config/validation/option-assertions'>;
|
||||
}
|
||||
declare module '@babel/core/lib/config/validation/options.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/config/validation/options'>;
|
||||
}
|
||||
declare module '@babel/core/lib/config/validation/plugins.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/config/validation/plugins'>;
|
||||
}
|
||||
declare module '@babel/core/lib/config/validation/removed.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/config/validation/removed'>;
|
||||
}
|
||||
declare module '@babel/core/lib/index.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/index'>;
|
||||
}
|
||||
declare module '@babel/core/lib/parse.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/parse'>;
|
||||
}
|
||||
declare module '@babel/core/lib/tools/build-external-helpers.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/tools/build-external-helpers'>;
|
||||
}
|
||||
declare module '@babel/core/lib/transform-ast.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/transform-ast'>;
|
||||
}
|
||||
declare module '@babel/core/lib/transform-file-browser.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/transform-file-browser'>;
|
||||
}
|
||||
declare module '@babel/core/lib/transform-file.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/transform-file'>;
|
||||
}
|
||||
declare module '@babel/core/lib/transform.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/transform'>;
|
||||
}
|
||||
declare module '@babel/core/lib/transformation/block-hoist-plugin.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/transformation/block-hoist-plugin'>;
|
||||
}
|
||||
declare module '@babel/core/lib/transformation/file/file.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/transformation/file/file'>;
|
||||
}
|
||||
declare module '@babel/core/lib/transformation/file/generate.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/transformation/file/generate'>;
|
||||
}
|
||||
declare module '@babel/core/lib/transformation/file/merge-map.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/transformation/file/merge-map'>;
|
||||
}
|
||||
declare module '@babel/core/lib/transformation/index.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/transformation/index'>;
|
||||
}
|
||||
declare module '@babel/core/lib/transformation/normalize-file.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/transformation/normalize-file'>;
|
||||
}
|
||||
declare module '@babel/core/lib/transformation/normalize-opts.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/transformation/normalize-opts'>;
|
||||
}
|
||||
declare module '@babel/core/lib/transformation/plugin-pass.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/transformation/plugin-pass'>;
|
||||
}
|
||||
declare module '@babel/core/lib/transformation/util/missing-plugin-helper.js' {
|
||||
declare module.exports: $Exports<'@babel/core/lib/transformation/util/missing-plugin-helper'>;
|
||||
}
|
32
flow-typed/npm/@babel/plugin-proposal-class-properties_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,32 @@
|
|||
// flow-typed signature: 3350ac60247e5d21911065431eacf53e
|
||||
// flow-typed version: <<STUB>>/@babel/plugin-proposal-class-properties_v^7.0.0/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* '@babel/plugin-proposal-class-properties'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module '@babel/plugin-proposal-class-properties' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
declare module '@babel/plugin-proposal-class-properties/lib/index' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
// Filename aliases
|
||||
declare module '@babel/plugin-proposal-class-properties/lib/index.js' {
|
||||
declare module.exports: $Exports<'@babel/plugin-proposal-class-properties/lib/index'>;
|
||||
}
|
39
flow-typed/npm/@babel/plugin-proposal-decorators_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,39 @@
|
|||
// flow-typed signature: b3034b120832a9a28300dffb95bf7c9d
|
||||
// flow-typed version: <<STUB>>/@babel/plugin-proposal-decorators_v^7.3.0/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* '@babel/plugin-proposal-decorators'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module '@babel/plugin-proposal-decorators' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
declare module '@babel/plugin-proposal-decorators/lib/index' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@babel/plugin-proposal-decorators/lib/transformer-legacy' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
// Filename aliases
|
||||
declare module '@babel/plugin-proposal-decorators/lib/index.js' {
|
||||
declare module.exports: $Exports<'@babel/plugin-proposal-decorators/lib/index'>;
|
||||
}
|
||||
declare module '@babel/plugin-proposal-decorators/lib/transformer-legacy.js' {
|
||||
declare module.exports: $Exports<'@babel/plugin-proposal-decorators/lib/transformer-legacy'>;
|
||||
}
|
32
flow-typed/npm/@babel/plugin-transform-flow-strip-types_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,32 @@
|
|||
// flow-typed signature: 10e8f21a7c98ee47f62fa7e5a6a5ab71
|
||||
// flow-typed version: <<STUB>>/@babel/plugin-transform-flow-strip-types_v^7.2.3/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* '@babel/plugin-transform-flow-strip-types'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module '@babel/plugin-transform-flow-strip-types' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
declare module '@babel/plugin-transform-flow-strip-types/lib/index' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
// Filename aliases
|
||||
declare module '@babel/plugin-transform-flow-strip-types/lib/index.js' {
|
||||
declare module.exports: $Exports<'@babel/plugin-transform-flow-strip-types/lib/index'>;
|
||||
}
|
4
flow-typed/npm/@babel/polyfill_v7.x.x.js
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
// flow-typed signature: ebc6e7724cd1da0d1a8b10de36bd7a94
|
||||
// flow-typed version: 7b122e75af/@babel/polyfill_v7.x.x/flow_>=v0.30.x
|
||||
|
||||
declare module '@babel/polyfill' {}
|
32
flow-typed/npm/@babel/preset-flow_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,32 @@
|
|||
// flow-typed signature: ad96fb37691315cf15ed6c2a7d890024
|
||||
// flow-typed version: <<STUB>>/@babel/preset-flow_v^7.0.0/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* '@babel/preset-flow'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module '@babel/preset-flow' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
declare module '@babel/preset-flow/lib/index' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
// Filename aliases
|
||||
declare module '@babel/preset-flow/lib/index.js' {
|
||||
declare module.exports: $Exports<'@babel/preset-flow/lib/index'>;
|
||||
}
|
32
flow-typed/npm/@babel/preset-react_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,32 @@
|
|||
// flow-typed signature: e7347ed70897733b4d136cb0cb8ae5c4
|
||||
// flow-typed version: <<STUB>>/@babel/preset-react_v^7.0.0/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* '@babel/preset-react'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module '@babel/preset-react' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
declare module '@babel/preset-react/lib/index' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
// Filename aliases
|
||||
declare module '@babel/preset-react/lib/index.js' {
|
||||
declare module.exports: $Exports<'@babel/preset-react/lib/index'>;
|
||||
}
|
47
flow-typed/npm/@babel/register_v7.x.x.js
vendored
Normal file
|
@ -0,0 +1,47 @@
|
|||
// flow-typed signature: 5934458d8287c23337a0363563a548f9
|
||||
// flow-typed version: b77688cf5d/@babel/register_v7.x.x/flow_>=v0.30.x
|
||||
|
||||
declare module '@babel/register' {
|
||||
declare type Ignore = boolean | string | RegExp | (filename: string) => boolean;
|
||||
declare type Options = {|
|
||||
ast?: boolean,
|
||||
auxiliaryCommentAfter?: ?string,
|
||||
auxiliaryCommentBefore?: ?string,
|
||||
babelrc?: boolean,
|
||||
code?: boolean,
|
||||
comments?: boolean,
|
||||
compact?: 'auto' | boolean,
|
||||
configFile?: string | boolean,
|
||||
env?: Object,
|
||||
extends?: ?string,
|
||||
extensions?: Array<string>,
|
||||
filename?: string,
|
||||
filenameRelative?: string,
|
||||
generatorOpts?: Object,
|
||||
getModuleId?: void | null | (moduleName: string) => string,
|
||||
highlightCode?: boolean,
|
||||
ignore?: Ignore | Array<Ignore>,
|
||||
inputSourceMap?: Object,
|
||||
minified?: boolean,
|
||||
moduleId?: string,
|
||||
moduleIds?: boolean,
|
||||
moduleRoot?: string,
|
||||
only?: RegExp,
|
||||
parserOpts?: Object,
|
||||
plugins?: Array<[string, Object] | string>,
|
||||
presets?: Array<string>,
|
||||
retainLines?: boolean,
|
||||
resolveModuleSource?: null | (source: string, filename: string) => boolean,
|
||||
shouldPrintComment?: null | (commentContents: string) => string,
|
||||
sourceFileName?: string,
|
||||
sourceMaps?: boolean | 'inline' | 'both',
|
||||
sourceMapTarget?: string,
|
||||
sourceRoot?: string,
|
||||
sourceType?: 'script' | 'module',
|
||||
wrapPluginVisitorMethod?: null | (pluginAlias: string, visitorType: string, callback: Function) => boolean,
|
||||
extensions?: Array<string>,
|
||||
cache?: boolean,
|
||||
|};
|
||||
|
||||
declare module.exports: (options?: Options) => void;
|
||||
}
|
318
flow-typed/npm/@hot-loader/react-dom_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,318 @@
|
|||
// flow-typed signature: 7025e1d060874c9ed272b10b43d6cbd4
|
||||
// flow-typed version: <<STUB>>/@hot-loader/react-dom_v16.8/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* '@hot-loader/react-dom'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module '@hot-loader/react-dom' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-server.browser.development' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-server.browser.production.min' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-server.node.development' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-server.node.production.min' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-test-utils.development' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-test-utils.production.min' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-unstable-fire.development' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-unstable-fire.production.min' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-unstable-fire.profiling.min' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-unstable-fizz.browser.development' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-unstable-fizz.browser.production.min' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-unstable-fizz.node.development' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-unstable-fizz.node.production.min' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-unstable-native-dependencies.development' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-unstable-native-dependencies.production.min' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom.development' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom.production.min' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom.profiling.min' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/profiling' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/server.browser' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/server' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/server.node' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/test-utils' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/umd/react-dom-server.browser.development' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/umd/react-dom-server.browser.production.min' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/umd/react-dom-test-utils.development' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/umd/react-dom-test-utils.production.min' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/umd/react-dom-unstable-fire.development' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/umd/react-dom-unstable-fire.production.min' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/umd/react-dom-unstable-fire.profiling.min' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/umd/react-dom-unstable-fizz.browser.development' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/umd/react-dom-unstable-fizz.browser.production.min' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/umd/react-dom-unstable-native-dependencies.development' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/umd/react-dom-unstable-native-dependencies.production.min' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/umd/react-dom.development' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/umd/react-dom.production.min' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/umd/react-dom.profiling.min' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/unstable-fizz.browser' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/unstable-fizz' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/unstable-fizz.node' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module '@hot-loader/react-dom/unstable-native-dependencies' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
// Filename aliases
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-server.browser.development.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/cjs/react-dom-server.browser.development'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-server.browser.production.min.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/cjs/react-dom-server.browser.production.min'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-server.node.development.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/cjs/react-dom-server.node.development'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-server.node.production.min.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/cjs/react-dom-server.node.production.min'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-test-utils.development.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/cjs/react-dom-test-utils.development'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-test-utils.production.min.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/cjs/react-dom-test-utils.production.min'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-unstable-fire.development.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/cjs/react-dom-unstable-fire.development'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-unstable-fire.production.min.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/cjs/react-dom-unstable-fire.production.min'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-unstable-fire.profiling.min.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/cjs/react-dom-unstable-fire.profiling.min'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-unstable-fizz.browser.development.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/cjs/react-dom-unstable-fizz.browser.development'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-unstable-fizz.browser.production.min.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/cjs/react-dom-unstable-fizz.browser.production.min'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-unstable-fizz.node.development.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/cjs/react-dom-unstable-fizz.node.development'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-unstable-fizz.node.production.min.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/cjs/react-dom-unstable-fizz.node.production.min'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-unstable-native-dependencies.development.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/cjs/react-dom-unstable-native-dependencies.development'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom-unstable-native-dependencies.production.min.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/cjs/react-dom-unstable-native-dependencies.production.min'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom.development.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/cjs/react-dom.development'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom.production.min.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/cjs/react-dom.production.min'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/cjs/react-dom.profiling.min.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/cjs/react-dom.profiling.min'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/index' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/index.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/profiling.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/profiling'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/server.browser.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/server.browser'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/server.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/server'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/server.node.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/server.node'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/test-utils.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/test-utils'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/umd/react-dom-server.browser.development.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/umd/react-dom-server.browser.development'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/umd/react-dom-server.browser.production.min.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/umd/react-dom-server.browser.production.min'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/umd/react-dom-test-utils.development.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/umd/react-dom-test-utils.development'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/umd/react-dom-test-utils.production.min.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/umd/react-dom-test-utils.production.min'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/umd/react-dom-unstable-fire.development.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/umd/react-dom-unstable-fire.development'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/umd/react-dom-unstable-fire.production.min.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/umd/react-dom-unstable-fire.production.min'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/umd/react-dom-unstable-fire.profiling.min.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/umd/react-dom-unstable-fire.profiling.min'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/umd/react-dom-unstable-fizz.browser.development.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/umd/react-dom-unstable-fizz.browser.development'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/umd/react-dom-unstable-fizz.browser.production.min.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/umd/react-dom-unstable-fizz.browser.production.min'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/umd/react-dom-unstable-native-dependencies.development.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/umd/react-dom-unstable-native-dependencies.development'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/umd/react-dom-unstable-native-dependencies.production.min.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/umd/react-dom-unstable-native-dependencies.production.min'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/umd/react-dom.development.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/umd/react-dom.development'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/umd/react-dom.production.min.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/umd/react-dom.production.min'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/umd/react-dom.profiling.min.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/umd/react-dom.profiling.min'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/unstable-fizz.browser.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/unstable-fizz.browser'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/unstable-fizz.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/unstable-fizz'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/unstable-fizz.node.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/unstable-fizz.node'>;
|
||||
}
|
||||
declare module '@hot-loader/react-dom/unstable-native-dependencies.js' {
|
||||
declare module.exports: $Exports<'@hot-loader/react-dom/unstable-native-dependencies'>;
|
||||
}
|
18
flow-typed/npm/@lbry/color_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
// flow-typed signature: 3213370d53d43337e039b1f99b90ad98
|
||||
// flow-typed version: <<STUB>>/@lbry/color_v^1.0.2/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* '@lbry/color'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module '@lbry/color' {
|
||||
declare module.exports: any;
|
||||
}
|
18
flow-typed/npm/@lbry/components_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
// flow-typed signature: 8b77537ae4d6c835866e04a70a0ad6f3
|
||||
// flow-typed version: <<STUB>>/@lbry/components_v^2.2.4/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* '@lbry/components'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module '@lbry/components' {
|
||||
declare module.exports: any;
|
||||
}
|
18
flow-typed/npm/@types/three_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
// flow-typed signature: e85a840886c4c445a0e0d1b1c1b20fef
|
||||
// flow-typed version: <<STUB>>/@types/three_v^0.93.1/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* '@types/three'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module '@types/three' {
|
||||
declare module.exports: any;
|
||||
}
|
33
flow-typed/npm/async-exit-hook_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,33 @@
|
|||
// flow-typed signature: 0179aaf62abe5de0fea307e93b07f0fd
|
||||
// flow-typed version: <<STUB>>/async-exit-hook_v^2.0.1/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* 'async-exit-hook'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module 'async-exit-hook' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
|
||||
|
||||
// Filename aliases
|
||||
declare module 'async-exit-hook/index' {
|
||||
declare module.exports: $Exports<'async-exit-hook'>;
|
||||
}
|
||||
declare module 'async-exit-hook/index.js' {
|
||||
declare module.exports: $Exports<'async-exit-hook'>;
|
||||
}
|
109
flow-typed/npm/babel-eslint_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,109 @@
|
|||
// flow-typed signature: 7deec821536f1597fae1f6cd21e9ef81
|
||||
// flow-typed version: <<STUB>>/babel-eslint_v^10.0.1/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* 'babel-eslint'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module 'babel-eslint' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
declare module 'babel-eslint/lib/analyze-scope' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'babel-eslint/lib/babylon-to-espree/attachComments' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'babel-eslint/lib/babylon-to-espree/convertComments' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'babel-eslint/lib/babylon-to-espree/convertTemplateType' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'babel-eslint/lib/babylon-to-espree/index' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'babel-eslint/lib/babylon-to-espree/toAST' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'babel-eslint/lib/babylon-to-espree/toToken' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'babel-eslint/lib/babylon-to-espree/toTokens' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'babel-eslint/lib/index' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'babel-eslint/lib/parse-with-scope' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'babel-eslint/lib/parse' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'babel-eslint/lib/visitor-keys' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
// Filename aliases
|
||||
declare module 'babel-eslint/lib/analyze-scope.js' {
|
||||
declare module.exports: $Exports<'babel-eslint/lib/analyze-scope'>;
|
||||
}
|
||||
declare module 'babel-eslint/lib/babylon-to-espree/attachComments.js' {
|
||||
declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/attachComments'>;
|
||||
}
|
||||
declare module 'babel-eslint/lib/babylon-to-espree/convertComments.js' {
|
||||
declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/convertComments'>;
|
||||
}
|
||||
declare module 'babel-eslint/lib/babylon-to-espree/convertTemplateType.js' {
|
||||
declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/convertTemplateType'>;
|
||||
}
|
||||
declare module 'babel-eslint/lib/babylon-to-espree/index.js' {
|
||||
declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/index'>;
|
||||
}
|
||||
declare module 'babel-eslint/lib/babylon-to-espree/toAST.js' {
|
||||
declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/toAST'>;
|
||||
}
|
||||
declare module 'babel-eslint/lib/babylon-to-espree/toToken.js' {
|
||||
declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/toToken'>;
|
||||
}
|
||||
declare module 'babel-eslint/lib/babylon-to-espree/toTokens.js' {
|
||||
declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/toTokens'>;
|
||||
}
|
||||
declare module 'babel-eslint/lib/index.js' {
|
||||
declare module.exports: $Exports<'babel-eslint/lib/index'>;
|
||||
}
|
||||
declare module 'babel-eslint/lib/parse-with-scope.js' {
|
||||
declare module.exports: $Exports<'babel-eslint/lib/parse-with-scope'>;
|
||||
}
|
||||
declare module 'babel-eslint/lib/parse.js' {
|
||||
declare module.exports: $Exports<'babel-eslint/lib/parse'>;
|
||||
}
|
||||
declare module 'babel-eslint/lib/visitor-keys.js' {
|
||||
declare module.exports: $Exports<'babel-eslint/lib/visitor-keys'>;
|
||||
}
|
60
flow-typed/npm/babel-loader_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,60 @@
|
|||
// flow-typed signature: 67633ab172e0306588506ec8c9dfb0c5
|
||||
// flow-typed version: <<STUB>>/babel-loader_v^8.0.5/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* 'babel-loader'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module 'babel-loader' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
declare module 'babel-loader/lib/cache' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'babel-loader/lib/Error' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'babel-loader/lib/index' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'babel-loader/lib/injectCaller' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'babel-loader/lib/transform' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
// Filename aliases
|
||||
declare module 'babel-loader/lib/cache.js' {
|
||||
declare module.exports: $Exports<'babel-loader/lib/cache'>;
|
||||
}
|
||||
declare module 'babel-loader/lib/Error.js' {
|
||||
declare module.exports: $Exports<'babel-loader/lib/Error'>;
|
||||
}
|
||||
declare module 'babel-loader/lib/index.js' {
|
||||
declare module.exports: $Exports<'babel-loader/lib/index'>;
|
||||
}
|
||||
declare module 'babel-loader/lib/injectCaller.js' {
|
||||
declare module.exports: $Exports<'babel-loader/lib/injectCaller'>;
|
||||
}
|
||||
declare module 'babel-loader/lib/transform.js' {
|
||||
declare module.exports: $Exports<'babel-loader/lib/transform'>;
|
||||
}
|
32
flow-typed/npm/babel-plugin-add-module-exports_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,32 @@
|
|||
// flow-typed signature: a0883da47931ce64ec28c9da060c809c
|
||||
// flow-typed version: <<STUB>>/babel-plugin-add-module-exports_v^1.0.0/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* 'babel-plugin-add-module-exports'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module 'babel-plugin-add-module-exports' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
declare module 'babel-plugin-add-module-exports/lib/index' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
// Filename aliases
|
||||
declare module 'babel-plugin-add-module-exports/lib/index.js' {
|
||||
declare module.exports: $Exports<'babel-plugin-add-module-exports/lib/index'>;
|
||||
}
|
52
flow-typed/npm/babel-plugin-transform-imports_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,52 @@
|
|||
// flow-typed signature: cb570215f71dc62ada0fe7396fcaa472
|
||||
// flow-typed version: <<STUB>>/babel-plugin-transform-imports_v^1.5.1/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* 'babel-plugin-transform-imports'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module 'babel-plugin-transform-imports' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
declare module 'babel-plugin-transform-imports/test/invalidTransform' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'babel-plugin-transform-imports/test/tests' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'babel-plugin-transform-imports/test/transform' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
// Filename aliases
|
||||
declare module 'babel-plugin-transform-imports/index' {
|
||||
declare module.exports: $Exports<'babel-plugin-transform-imports'>;
|
||||
}
|
||||
declare module 'babel-plugin-transform-imports/index.js' {
|
||||
declare module.exports: $Exports<'babel-plugin-transform-imports'>;
|
||||
}
|
||||
declare module 'babel-plugin-transform-imports/test/invalidTransform.js' {
|
||||
declare module.exports: $Exports<'babel-plugin-transform-imports/test/invalidTransform'>;
|
||||
}
|
||||
declare module 'babel-plugin-transform-imports/test/tests.js' {
|
||||
declare module.exports: $Exports<'babel-plugin-transform-imports/test/tests'>;
|
||||
}
|
||||
declare module 'babel-plugin-transform-imports/test/transform.js' {
|
||||
declare module.exports: $Exports<'babel-plugin-transform-imports/test/transform'>;
|
||||
}
|
329
flow-typed/npm/bluebird_v3.x.x.js
vendored
Normal file
|
@ -0,0 +1,329 @@
|
|||
// flow-typed signature: e0974d6c2c04803a78c4faa3e848c72a
|
||||
// flow-typed version: 34fbdaa6f3/bluebird_v3.x.x/flow_>=v0.70.x
|
||||
|
||||
type Bluebird$RangeError = Error;
|
||||
type Bluebird$CancellationErrors = Error;
|
||||
type Bluebird$TimeoutError = Error;
|
||||
type Bluebird$RejectionError = Error;
|
||||
type Bluebird$OperationalError = Error;
|
||||
|
||||
type Bluebird$ConcurrencyOption = {
|
||||
concurrency: number
|
||||
};
|
||||
type Bluebird$SpreadOption = {
|
||||
spread: boolean
|
||||
};
|
||||
type Bluebird$MultiArgsOption = {
|
||||
multiArgs: boolean
|
||||
};
|
||||
type Bluebird$BluebirdConfig = {
|
||||
warnings?: boolean,
|
||||
longStackTraces?: boolean,
|
||||
cancellation?: boolean,
|
||||
monitoring?: boolean
|
||||
};
|
||||
|
||||
declare class Bluebird$PromiseInspection<T> {
|
||||
isCancelled(): boolean;
|
||||
isFulfilled(): boolean;
|
||||
isRejected(): boolean;
|
||||
pending(): boolean;
|
||||
reason(): any;
|
||||
value(): T;
|
||||
}
|
||||
|
||||
type Bluebird$PromisifyOptions = {|
|
||||
multiArgs?: boolean,
|
||||
context: any
|
||||
|};
|
||||
|
||||
declare type Bluebird$PromisifyAllOptions = {
|
||||
suffix?: string,
|
||||
filter?: (
|
||||
name: string,
|
||||
func: Function,
|
||||
target?: any,
|
||||
passesDefaultFilter?: boolean
|
||||
) => boolean,
|
||||
// The promisifier gets a reference to the original method and should return a function which returns a promise
|
||||
promisifier?: (originalMethod: Function) => () => Bluebird$Promise<any>
|
||||
};
|
||||
|
||||
declare type $Promisable<T> = Promise<T> | T;
|
||||
|
||||
declare class Bluebird$Disposable<R> {}
|
||||
|
||||
declare class Bluebird$Promise<+R> extends Promise<R> {
|
||||
static RangeError: Class<Bluebird$RangeError>;
|
||||
static CancellationErrors: Class<Bluebird$CancellationErrors>;
|
||||
static TimeoutError: Class<Bluebird$TimeoutError>;
|
||||
static RejectionError: Class<Bluebird$RejectionError>;
|
||||
static OperationalError: Class<Bluebird$OperationalError>;
|
||||
|
||||
static Defer: Class<Bluebird$Defer>;
|
||||
static PromiseInspection: Class<Bluebird$PromiseInspection<*>>;
|
||||
|
||||
static all<T>(
|
||||
Promises: $Promisable<Iterable<$Promisable<T>>>
|
||||
): Bluebird$Promise<Array<T>>;
|
||||
static props(
|
||||
input: Object | Map<*, *> | $Promisable<Object | Map<*, *>>
|
||||
): Bluebird$Promise<*>;
|
||||
static any<T, Elem: $Promisable<T>>(
|
||||
Promises: Iterable<Elem> | $Promisable<Iterable<Elem>>
|
||||
): Bluebird$Promise<T>;
|
||||
static race<T, Elem: $Promisable<T>>(
|
||||
Promises: Iterable<Elem> | $Promisable<Iterable<Elem>>
|
||||
): Bluebird$Promise<T>;
|
||||
static reject<T>(error?: any): Bluebird$Promise<T>;
|
||||
static resolve<T>(object?: $Promisable<T>): Bluebird$Promise<T>;
|
||||
static some<T, Elem: $Promisable<T>>(
|
||||
Promises: Iterable<Elem> | $Promisable<Iterable<Elem>>,
|
||||
count: number
|
||||
): Bluebird$Promise<Array<T>>;
|
||||
static join<T, A>(
|
||||
value1: $Promisable<A>,
|
||||
handler: (a: A) => $Promisable<T>
|
||||
): Bluebird$Promise<T>;
|
||||
static join<T, A, B>(
|
||||
value1: $Promisable<A>,
|
||||
value2: $Promisable<B>,
|
||||
handler: (a: A, b: B) => $Promisable<T>
|
||||
): Bluebird$Promise<T>;
|
||||
static join<T, A, B, C>(
|
||||
value1: $Promisable<A>,
|
||||
value2: $Promisable<B>,
|
||||
value3: $Promisable<C>,
|
||||
handler: (a: A, b: B, c: C) => $Promisable<T>
|
||||
): Bluebird$Promise<T>;
|
||||
static map<T, U, Elem: $Promisable<T>>(
|
||||
Promises: Iterable<Elem> | $Promisable<Iterable<Elem>>,
|
||||
mapper: (item: T, index: number, arrayLength: number) => $Promisable<U>,
|
||||
options?: Bluebird$ConcurrencyOption
|
||||
): Bluebird$Promise<Array<U>>;
|
||||
static mapSeries<T, U, Elem: $Promisable<T>>(
|
||||
Promises: Iterable<Elem> | $Promisable<Iterable<Elem>>,
|
||||
mapper: (item: T, index: number, arrayLength: number) => $Promisable<U>
|
||||
): Bluebird$Promise<Array<U>>;
|
||||
static reduce<T, U, Elem: $Promisable<T>>(
|
||||
Promises: Iterable<Elem> | $Promisable<Iterable<Elem>>,
|
||||
reducer: (
|
||||
total: U,
|
||||
current: T,
|
||||
index: number,
|
||||
arrayLength: number
|
||||
) => $Promisable<U>,
|
||||
initialValue?: $Promisable<U>
|
||||
): Bluebird$Promise<U>;
|
||||
static filter<T, Elem: $Promisable<T>>(
|
||||
Promises: Iterable<Elem> | $Promisable<Iterable<Elem>>,
|
||||
filterer: (
|
||||
item: T,
|
||||
index: number,
|
||||
arrayLength: number
|
||||
) => $Promisable<boolean>,
|
||||
option?: Bluebird$ConcurrencyOption
|
||||
): Bluebird$Promise<Array<T>>;
|
||||
static each<T, Elem: $Promisable<T>>(
|
||||
Promises: Iterable<Elem> | $Promisable<Iterable<Elem>>,
|
||||
iterator: (
|
||||
item: T,
|
||||
index: number,
|
||||
arrayLength: number
|
||||
) => $Promisable<mixed>
|
||||
): Bluebird$Promise<Array<T>>;
|
||||
static try<T>(
|
||||
fn: () => $Promisable<T>,
|
||||
args: ?Array<any>,
|
||||
ctx: ?any
|
||||
): Bluebird$Promise<T>;
|
||||
static attempt<T>(
|
||||
fn: () => $Promisable<T>,
|
||||
args: ?Array<any>,
|
||||
ctx: ?any
|
||||
): Bluebird$Promise<T>;
|
||||
static delay<T>(ms: number, value: $Promisable<T>): Bluebird$Promise<T>;
|
||||
static delay(ms: number): Bluebird$Promise<void>;
|
||||
static config(config: Bluebird$BluebirdConfig): void;
|
||||
|
||||
static defer(): Bluebird$Defer;
|
||||
static setScheduler(
|
||||
scheduler: (callback: (...args: Array<any>) => void) => void
|
||||
): void;
|
||||
static promisify(
|
||||
nodeFunction: Function,
|
||||
receiver?: Bluebird$PromisifyOptions
|
||||
): Function;
|
||||
static promisifyAll(
|
||||
target: Object | Array<Object>,
|
||||
options?: Bluebird$PromisifyAllOptions
|
||||
): void;
|
||||
|
||||
static coroutine(generatorFunction: Function): Function;
|
||||
static spawn<T>(generatorFunction: Function): Promise<T>;
|
||||
|
||||
// It doesn't seem possible to have type-generics for a variable number of arguments.
|
||||
// Handle up to 3 arguments, then just give up and accept 'any'.
|
||||
static method<T, R: $Promisable<T>>(fn: () => R): () => Bluebird$Promise<T>;
|
||||
static method<T, R: $Promisable<T>, A>(
|
||||
fn: (a: A) => R
|
||||
): (a: A) => Bluebird$Promise<T>;
|
||||
static method<T, R: $Promisable<T>, A, B>(
|
||||
fn: (a: A, b: B) => R
|
||||
): (a: A, b: B) => Bluebird$Promise<T>;
|
||||
static method<T, R: $Promisable<T>, A, B, C>(
|
||||
fn: (a: A, b: B, c: C) => R
|
||||
): (a: A, b: B, c: C) => Bluebird$Promise<T>;
|
||||
static method<T, R: $Promisable<T>>(
|
||||
fn: (...args: any) => R
|
||||
): (...args: any) => Bluebird$Promise<T>;
|
||||
|
||||
static cast<T>(value: $Promisable<T>): Bluebird$Promise<T>;
|
||||
// static bind(ctx: any): Bluebird$Promise<void>;
|
||||
static is(value: any): boolean;
|
||||
static longStackTraces(): void;
|
||||
|
||||
static onPossiblyUnhandledRejection(handler: (reason: any) => any): void;
|
||||
static fromCallback<T>(
|
||||
resolver: (fn: (error: ?Error, value?: T) => any) => any,
|
||||
options?: Bluebird$MultiArgsOption
|
||||
): Bluebird$Promise<T>;
|
||||
|
||||
constructor(
|
||||
callback: (
|
||||
resolve: (result?: $Promisable<R>) => void,
|
||||
reject: (error?: any) => void,
|
||||
onCancel?: (fn?: () => void) => void,
|
||||
) => mixed
|
||||
): void;
|
||||
then(onFulfill: null | void, onReject: null | void): Bluebird$Promise<R>;
|
||||
then<U>(
|
||||
onFulfill: null | void,
|
||||
onReject: (error: any) => Promise<U> | U
|
||||
): Bluebird$Promise<R | U>;
|
||||
then<U>(
|
||||
onFulfill: (value: R) => Promise<U> | U,
|
||||
onReject: null | void | ((error: any) => Promise<U> | U)
|
||||
): Bluebird$Promise<U>;
|
||||
catch(onReject: null | void): Promise<R>;
|
||||
catch<U>(onReject?: (error: any) => $Promisable<U>): Bluebird$Promise<U>;
|
||||
catch<U, ErrorT: Error>(
|
||||
err: Class<ErrorT>,
|
||||
onReject: (error: ErrorT) => $Promisable<U>
|
||||
): Bluebird$Promise<U>;
|
||||
catch<U, ErrorT: Error>(
|
||||
err1: Class<ErrorT>,
|
||||
err2: Class<ErrorT>,
|
||||
onReject: (error: ErrorT) => $Promisable<U>
|
||||
): Bluebird$Promise<U>;
|
||||
catch<U, ErrorT: Error>(
|
||||
err1: Class<ErrorT>,
|
||||
err2: Class<ErrorT>,
|
||||
err3: Class<ErrorT>,
|
||||
onReject: (error: ErrorT) => $Promisable<U>
|
||||
): Bluebird$Promise<U>;
|
||||
caught<U, ErrorT: Error>(
|
||||
err: Class<ErrorT>,
|
||||
onReject: (error: Error) => $Promisable<U>
|
||||
): Bluebird$Promise<U>;
|
||||
caught<U, ErrorT: Error>(
|
||||
err1: Class<ErrorT>,
|
||||
err2: Class<ErrorT>,
|
||||
onReject: (error: ErrorT) => $Promisable<U>
|
||||
): Bluebird$Promise<U>;
|
||||
caught<U, ErrorT: Error>(
|
||||
err1: Class<ErrorT>,
|
||||
err2: Class<ErrorT>,
|
||||
err3: Class<ErrorT>,
|
||||
onReject: (error: ErrorT) => $Promisable<U>
|
||||
): Bluebird$Promise<U>;
|
||||
caught<U>(onReject: (error: any) => $Promisable<U>): Bluebird$Promise<U>;
|
||||
|
||||
error<U>(onReject?: (error: any) => ?$Promisable<U>): Bluebird$Promise<U>;
|
||||
done<U>(
|
||||
onFulfill?: (value: R) => mixed,
|
||||
onReject?: (error: any) => mixed
|
||||
): void;
|
||||
finally<T>(onDone?: (value: R) => mixed): Bluebird$Promise<T>;
|
||||
lastly<T>(onDone?: (value: R) => mixed): Bluebird$Promise<T>;
|
||||
tap<T>(onDone?: (value: R) => mixed): Bluebird$Promise<T>;
|
||||
delay(ms: number): Bluebird$Promise<R>;
|
||||
timeout(ms: number, message?: string): Bluebird$Promise<R>;
|
||||
cancel(): void;
|
||||
|
||||
// bind(ctx: any): Bluebird$Promise<R>;
|
||||
call(propertyName: string, ...args: Array<any>): Bluebird$Promise<any>;
|
||||
throw(reason: Error): Bluebird$Promise<R>;
|
||||
thenThrow(reason: Error): Bluebird$Promise<R>;
|
||||
all<T>(): Bluebird$Promise<Array<T>>;
|
||||
any<T>(): Bluebird$Promise<T>;
|
||||
some<T>(count: number): Bluebird$Promise<Array<T>>;
|
||||
race<T>(): Bluebird$Promise<T>;
|
||||
map<T, U>(
|
||||
mapper: (item: T, index: number, arrayLength: number) => $Promisable<U>,
|
||||
options?: Bluebird$ConcurrencyOption
|
||||
): Bluebird$Promise<Array<U>>;
|
||||
mapSeries<T, U>(
|
||||
mapper: (item: T, index: number, arrayLength: number) => $Promisable<U>
|
||||
): Bluebird$Promise<Array<U>>;
|
||||
reduce<T, U>(
|
||||
reducer: (
|
||||
total: T,
|
||||
item: U,
|
||||
index: number,
|
||||
arrayLength: number
|
||||
) => $Promisable<T>,
|
||||
initialValue?: $Promisable<T>
|
||||
): Bluebird$Promise<T>;
|
||||
filter<T>(
|
||||
filterer: (
|
||||
item: T,
|
||||
index: number,
|
||||
arrayLength: number
|
||||
) => $Promisable<boolean>,
|
||||
options?: Bluebird$ConcurrencyOption
|
||||
): Bluebird$Promise<Array<T>>;
|
||||
each<T, U>(
|
||||
iterator: (item: T, index: number, arrayLength: number) => $Promisable<U>
|
||||
): Bluebird$Promise<Array<T>>;
|
||||
asCallback<T>(
|
||||
callback: (error: ?any, value?: T) => any,
|
||||
options?: Bluebird$SpreadOption
|
||||
): void;
|
||||
return<T>(value: T): Bluebird$Promise<T>;
|
||||
thenReturn<T>(value: T): Bluebird$Promise<T>;
|
||||
spread<T>(...args: Array<T>): Bluebird$Promise<*>;
|
||||
|
||||
reflect(): Bluebird$Promise<Bluebird$PromiseInspection<*>>;
|
||||
|
||||
isFulfilled(): boolean;
|
||||
isRejected(): boolean;
|
||||
isPending(): boolean;
|
||||
isResolved(): boolean;
|
||||
|
||||
value(): R;
|
||||
reason(): any;
|
||||
|
||||
disposer(
|
||||
disposer: (value: R, promise: Promise<*>) => void
|
||||
): Bluebird$Disposable<R>;
|
||||
|
||||
static using<T, A>(
|
||||
disposable: Bluebird$Disposable<T>,
|
||||
handler: (value: T) => $Promisable<A>
|
||||
): Bluebird$Promise<A>;
|
||||
|
||||
suppressUnhandledRejections(): void;
|
||||
}
|
||||
|
||||
declare class Bluebird$Defer {
|
||||
promise: Bluebird$Promise<*>;
|
||||
resolve: (value: any) => any;
|
||||
reject: (value: any) => any;
|
||||
}
|
||||
|
||||
declare module "bluebird" {
|
||||
declare module.exports: typeof Bluebird$Promise;
|
||||
|
||||
declare type Disposable<T> = Bluebird$Disposable<T>;
|
||||
}
|
98
flow-typed/npm/chalk_v2.x.x.js
vendored
Normal file
|
@ -0,0 +1,98 @@
|
|||
// flow-typed signature: db5b2cdde8db39d47e27cc8ab84f89bf
|
||||
// flow-typed version: d662d43161/chalk_v2.x.x/flow_>=v0.25.x
|
||||
|
||||
// From: https://github.com/chalk/chalk/blob/master/index.js.flow
|
||||
|
||||
declare module "chalk" {
|
||||
declare type TemplateStringsArray = $ReadOnlyArray<string>;
|
||||
|
||||
declare type Level = $Values<{
|
||||
None: 0,
|
||||
Basic: 1,
|
||||
Ansi256: 2,
|
||||
TrueColor: 3
|
||||
}>;
|
||||
|
||||
declare type ChalkOptions = {|
|
||||
enabled?: boolean,
|
||||
level?: Level
|
||||
|};
|
||||
|
||||
declare type ColorSupport = {|
|
||||
level: Level,
|
||||
hasBasic: boolean,
|
||||
has256: boolean,
|
||||
has16m: boolean
|
||||
|};
|
||||
|
||||
declare interface Chalk {
|
||||
(...text: string[]): string,
|
||||
(text: TemplateStringsArray, ...placeholders: string[]): string,
|
||||
constructor(options?: ChalkOptions): Chalk,
|
||||
enabled: boolean,
|
||||
level: Level,
|
||||
rgb(r: number, g: number, b: number): Chalk,
|
||||
hsl(h: number, s: number, l: number): Chalk,
|
||||
hsv(h: number, s: number, v: number): Chalk,
|
||||
hwb(h: number, w: number, b: number): Chalk,
|
||||
bgHex(color: string): Chalk,
|
||||
bgKeyword(color: string): Chalk,
|
||||
bgRgb(r: number, g: number, b: number): Chalk,
|
||||
bgHsl(h: number, s: number, l: number): Chalk,
|
||||
bgHsv(h: number, s: number, v: number): Chalk,
|
||||
bgHwb(h: number, w: number, b: number): Chalk,
|
||||
hex(color: string): Chalk,
|
||||
keyword(color: string): Chalk,
|
||||
|
||||
+reset: Chalk,
|
||||
+bold: Chalk,
|
||||
+dim: Chalk,
|
||||
+italic: Chalk,
|
||||
+underline: Chalk,
|
||||
+inverse: Chalk,
|
||||
+hidden: Chalk,
|
||||
+strikethrough: Chalk,
|
||||
|
||||
+visible: Chalk,
|
||||
|
||||
+black: Chalk,
|
||||
+red: Chalk,
|
||||
+green: Chalk,
|
||||
+yellow: Chalk,
|
||||
+blue: Chalk,
|
||||
+magenta: Chalk,
|
||||
+cyan: Chalk,
|
||||
+white: Chalk,
|
||||
+gray: Chalk,
|
||||
+grey: Chalk,
|
||||
+blackBright: Chalk,
|
||||
+redBright: Chalk,
|
||||
+greenBright: Chalk,
|
||||
+yellowBright: Chalk,
|
||||
+blueBright: Chalk,
|
||||
+magentaBright: Chalk,
|
||||
+cyanBright: Chalk,
|
||||
+whiteBright: Chalk,
|
||||
|
||||
+bgBlack: Chalk,
|
||||
+bgRed: Chalk,
|
||||
+bgGreen: Chalk,
|
||||
+bgYellow: Chalk,
|
||||
+bgBlue: Chalk,
|
||||
+bgMagenta: Chalk,
|
||||
+bgCyan: Chalk,
|
||||
+bgWhite: Chalk,
|
||||
+bgBlackBright: Chalk,
|
||||
+bgRedBright: Chalk,
|
||||
+bgGreenBright: Chalk,
|
||||
+bgYellowBright: Chalk,
|
||||
+bgBlueBright: Chalk,
|
||||
+bgMagentaBright: Chalk,
|
||||
+bgCyanBright: Chalk,
|
||||
+bgWhiteBrigh: Chalk,
|
||||
|
||||
supportsColor: ColorSupport
|
||||
}
|
||||
|
||||
declare module.exports: Chalk;
|
||||
}
|
23
flow-typed/npm/classnames_v2.x.x.js
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
// flow-typed signature: cf86673cc32d185bdab1d2ea90578d37
|
||||
// flow-typed version: 614bf49aa8/classnames_v2.x.x/flow_>=v0.25.x
|
||||
|
||||
type $npm$classnames$Classes =
|
||||
| string
|
||||
| { [className: string]: * }
|
||||
| false
|
||||
| void
|
||||
| null;
|
||||
|
||||
declare module "classnames" {
|
||||
declare module.exports: (
|
||||
...classes: Array<$npm$classnames$Classes | $npm$classnames$Classes[]>
|
||||
) => string;
|
||||
}
|
||||
|
||||
declare module "classnames/bind" {
|
||||
declare module.exports: $Exports<"classnames">;
|
||||
}
|
||||
|
||||
declare module "classnames/dedupe" {
|
||||
declare module.exports: $Exports<"classnames">;
|
||||
}
|
1761
flow-typed/npm/codemirror_vx.x.x.js
vendored
Normal file
95
flow-typed/npm/copy-webpack-plugin_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,95 @@
|
|||
// flow-typed signature: 5b28287a475ee10170991509ccc86844
|
||||
// flow-typed version: <<STUB>>/copy-webpack-plugin_v^4.6.0/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* 'copy-webpack-plugin'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module 'copy-webpack-plugin' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
declare module 'copy-webpack-plugin/dist/index' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'copy-webpack-plugin/dist/preProcessPattern' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'copy-webpack-plugin/dist/processPattern' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'copy-webpack-plugin/dist/utils/escape' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'copy-webpack-plugin/dist/utils/isObject' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'copy-webpack-plugin/dist/utils/promisify' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'copy-webpack-plugin/dist/utils/readFilePromise' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'copy-webpack-plugin/dist/utils/readPromise' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'copy-webpack-plugin/dist/utils/statPromise' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'copy-webpack-plugin/dist/writeFile' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
// Filename aliases
|
||||
declare module 'copy-webpack-plugin/dist/index.js' {
|
||||
declare module.exports: $Exports<'copy-webpack-plugin/dist/index'>;
|
||||
}
|
||||
declare module 'copy-webpack-plugin/dist/preProcessPattern.js' {
|
||||
declare module.exports: $Exports<'copy-webpack-plugin/dist/preProcessPattern'>;
|
||||
}
|
||||
declare module 'copy-webpack-plugin/dist/processPattern.js' {
|
||||
declare module.exports: $Exports<'copy-webpack-plugin/dist/processPattern'>;
|
||||
}
|
||||
declare module 'copy-webpack-plugin/dist/utils/escape.js' {
|
||||
declare module.exports: $Exports<'copy-webpack-plugin/dist/utils/escape'>;
|
||||
}
|
||||
declare module 'copy-webpack-plugin/dist/utils/isObject.js' {
|
||||
declare module.exports: $Exports<'copy-webpack-plugin/dist/utils/isObject'>;
|
||||
}
|
||||
declare module 'copy-webpack-plugin/dist/utils/promisify.js' {
|
||||
declare module.exports: $Exports<'copy-webpack-plugin/dist/utils/promisify'>;
|
||||
}
|
||||
declare module 'copy-webpack-plugin/dist/utils/readFilePromise.js' {
|
||||
declare module.exports: $Exports<'copy-webpack-plugin/dist/utils/readFilePromise'>;
|
||||
}
|
||||
declare module 'copy-webpack-plugin/dist/utils/readPromise.js' {
|
||||
declare module.exports: $Exports<'copy-webpack-plugin/dist/utils/readPromise'>;
|
||||
}
|
||||
declare module 'copy-webpack-plugin/dist/utils/statPromise.js' {
|
||||
declare module.exports: $Exports<'copy-webpack-plugin/dist/utils/statPromise'>;
|
||||
}
|
||||
declare module 'copy-webpack-plugin/dist/writeFile.js' {
|
||||
declare module.exports: $Exports<'copy-webpack-plugin/dist/writeFile'>;
|
||||
}
|
129
flow-typed/npm/country-data_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,129 @@
|
|||
// flow-typed signature: 9ac14a1f40af643c7a1cda684c6d14c6
|
||||
// flow-typed version: <<STUB>>/country-data_v^0.0.31/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* 'country-data'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module 'country-data' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
declare module 'country-data/data/continents' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'country-data/data/country_csv_to_json' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'country-data/data/currency_csv_to_json' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'country-data/data/language_csv_to_json' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'country-data/data/normalize_csv' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'country-data/data/regions' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'country-data/lookup' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'country-data/test/calling-codes' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'country-data/test/countries' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'country-data/test/cross-references' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'country-data/test/currencies' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'country-data/test/languages' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'country-data/test/lookup' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'country-data/test/regions' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
// Filename aliases
|
||||
declare module 'country-data/data/continents.js' {
|
||||
declare module.exports: $Exports<'country-data/data/continents'>;
|
||||
}
|
||||
declare module 'country-data/data/country_csv_to_json.js' {
|
||||
declare module.exports: $Exports<'country-data/data/country_csv_to_json'>;
|
||||
}
|
||||
declare module 'country-data/data/currency_csv_to_json.js' {
|
||||
declare module.exports: $Exports<'country-data/data/currency_csv_to_json'>;
|
||||
}
|
||||
declare module 'country-data/data/language_csv_to_json.js' {
|
||||
declare module.exports: $Exports<'country-data/data/language_csv_to_json'>;
|
||||
}
|
||||
declare module 'country-data/data/normalize_csv.js' {
|
||||
declare module.exports: $Exports<'country-data/data/normalize_csv'>;
|
||||
}
|
||||
declare module 'country-data/data/regions.js' {
|
||||
declare module.exports: $Exports<'country-data/data/regions'>;
|
||||
}
|
||||
declare module 'country-data/index' {
|
||||
declare module.exports: $Exports<'country-data'>;
|
||||
}
|
||||
declare module 'country-data/index.js' {
|
||||
declare module.exports: $Exports<'country-data'>;
|
||||
}
|
||||
declare module 'country-data/lookup.js' {
|
||||
declare module.exports: $Exports<'country-data/lookup'>;
|
||||
}
|
||||
declare module 'country-data/test/calling-codes.js' {
|
||||
declare module.exports: $Exports<'country-data/test/calling-codes'>;
|
||||
}
|
||||
declare module 'country-data/test/countries.js' {
|
||||
declare module.exports: $Exports<'country-data/test/countries'>;
|
||||
}
|
||||
declare module 'country-data/test/cross-references.js' {
|
||||
declare module.exports: $Exports<'country-data/test/cross-references'>;
|
||||
}
|
||||
declare module 'country-data/test/currencies.js' {
|
||||
declare module.exports: $Exports<'country-data/test/currencies'>;
|
||||
}
|
||||
declare module 'country-data/test/languages.js' {
|
||||
declare module.exports: $Exports<'country-data/test/languages'>;
|
||||
}
|
||||
declare module 'country-data/test/lookup.js' {
|
||||
declare module.exports: $Exports<'country-data/test/lookup'>;
|
||||
}
|
||||
declare module 'country-data/test/regions.js' {
|
||||
declare module.exports: $Exports<'country-data/test/regions'>;
|
||||
}
|
60
flow-typed/npm/cross-env_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,60 @@
|
|||
// flow-typed signature: 4b0f550a8e6f64b3a26538a2e3435a5a
|
||||
// flow-typed version: <<STUB>>/cross-env_v^5.2.0/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* 'cross-env'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module 'cross-env' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
declare module 'cross-env/dist/bin/cross-env-shell' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'cross-env/dist/bin/cross-env' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'cross-env/dist/command' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'cross-env/dist/index' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'cross-env/dist/variable' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
// Filename aliases
|
||||
declare module 'cross-env/dist/bin/cross-env-shell.js' {
|
||||
declare module.exports: $Exports<'cross-env/dist/bin/cross-env-shell'>;
|
||||
}
|
||||
declare module 'cross-env/dist/bin/cross-env.js' {
|
||||
declare module.exports: $Exports<'cross-env/dist/bin/cross-env'>;
|
||||
}
|
||||
declare module 'cross-env/dist/command.js' {
|
||||
declare module.exports: $Exports<'cross-env/dist/command'>;
|
||||
}
|
||||
declare module 'cross-env/dist/index.js' {
|
||||
declare module.exports: $Exports<'cross-env/dist/index'>;
|
||||
}
|
||||
declare module 'cross-env/dist/variable.js' {
|
||||
declare module.exports: $Exports<'cross-env/dist/variable'>;
|
||||
}
|
102
flow-typed/npm/css-loader_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,102 @@
|
|||
// flow-typed signature: 4c1b3e9c5881b71f8fa1de27757c7fab
|
||||
// flow-typed version: <<STUB>>/css-loader_v^2.1.0/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* 'css-loader'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module 'css-loader' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
declare module 'css-loader/dist/cjs' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'css-loader/dist/CssSyntaxError' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'css-loader/dist/index' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'css-loader/dist/plugins/index' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'css-loader/dist/plugins/postcss-icss-parser' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'css-loader/dist/plugins/postcss-import-parser' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'css-loader/dist/plugins/postcss-url-parser' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'css-loader/dist/runtime/api' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'css-loader/dist/runtime/url-escape' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'css-loader/dist/utils' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'css-loader/dist/Warning' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
// Filename aliases
|
||||
declare module 'css-loader/dist/cjs.js' {
|
||||
declare module.exports: $Exports<'css-loader/dist/cjs'>;
|
||||
}
|
||||
declare module 'css-loader/dist/CssSyntaxError.js' {
|
||||
declare module.exports: $Exports<'css-loader/dist/CssSyntaxError'>;
|
||||
}
|
||||
declare module 'css-loader/dist/index.js' {
|
||||
declare module.exports: $Exports<'css-loader/dist/index'>;
|
||||
}
|
||||
declare module 'css-loader/dist/plugins/index.js' {
|
||||
declare module.exports: $Exports<'css-loader/dist/plugins/index'>;
|
||||
}
|
||||
declare module 'css-loader/dist/plugins/postcss-icss-parser.js' {
|
||||
declare module.exports: $Exports<'css-loader/dist/plugins/postcss-icss-parser'>;
|
||||
}
|
||||
declare module 'css-loader/dist/plugins/postcss-import-parser.js' {
|
||||
declare module.exports: $Exports<'css-loader/dist/plugins/postcss-import-parser'>;
|
||||
}
|
||||
declare module 'css-loader/dist/plugins/postcss-url-parser.js' {
|
||||
declare module.exports: $Exports<'css-loader/dist/plugins/postcss-url-parser'>;
|
||||
}
|
||||
declare module 'css-loader/dist/runtime/api.js' {
|
||||
declare module.exports: $Exports<'css-loader/dist/runtime/api'>;
|
||||
}
|
||||
declare module 'css-loader/dist/runtime/url-escape.js' {
|
||||
declare module.exports: $Exports<'css-loader/dist/runtime/url-escape'>;
|
||||
}
|
||||
declare module 'css-loader/dist/utils.js' {
|
||||
declare module.exports: $Exports<'css-loader/dist/utils'>;
|
||||
}
|
||||
declare module 'css-loader/dist/Warning.js' {
|
||||
declare module.exports: $Exports<'css-loader/dist/Warning'>;
|
||||
}
|
228
flow-typed/npm/dat.gui_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,228 @@
|
|||
// flow-typed signature: de6eecdb020f5cf0c91faf3cf35d53bf
|
||||
// flow-typed version: <<STUB>>/dat.gui_v^0.7.2/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* 'dat.gui'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module 'dat.gui' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
declare module 'dat.gui/build/dat.gui' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/build/dat.gui.min' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/build/dat.gui.module' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/rollup.config' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/rollup.config.min' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/src/dat/color/Color' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/src/dat/color/interpret' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/src/dat/color/math' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/src/dat/color/toString' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/src/dat/controllers/BooleanController' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/src/dat/controllers/ColorController' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/src/dat/controllers/Controller' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/src/dat/controllers/ControllerFactory' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/src/dat/controllers/FunctionController' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/src/dat/controllers/NumberController' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/src/dat/controllers/NumberControllerBox' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/src/dat/controllers/NumberControllerSlider' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/src/dat/controllers/OptionController' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/src/dat/controllers/StringController' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/src/dat/dom/CenteredDiv' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/src/dat/dom/dom' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/src/dat/gui/GUI' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/src/dat/gui/saveDialogue.html' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/src/dat/index' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/src/dat/utils/common' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/src/dat/utils/css' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/src/dat/utils/requestAnimationFrame' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/tests/jquery' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dat.gui/tests/qunit' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
// Filename aliases
|
||||
declare module 'dat.gui/build/dat.gui.js' {
|
||||
declare module.exports: $Exports<'dat.gui/build/dat.gui'>;
|
||||
}
|
||||
declare module 'dat.gui/build/dat.gui.min.js' {
|
||||
declare module.exports: $Exports<'dat.gui/build/dat.gui.min'>;
|
||||
}
|
||||
declare module 'dat.gui/build/dat.gui.module.js' {
|
||||
declare module.exports: $Exports<'dat.gui/build/dat.gui.module'>;
|
||||
}
|
||||
declare module 'dat.gui/rollup.config.js' {
|
||||
declare module.exports: $Exports<'dat.gui/rollup.config'>;
|
||||
}
|
||||
declare module 'dat.gui/rollup.config.min.js' {
|
||||
declare module.exports: $Exports<'dat.gui/rollup.config.min'>;
|
||||
}
|
||||
declare module 'dat.gui/src/dat/color/Color.js' {
|
||||
declare module.exports: $Exports<'dat.gui/src/dat/color/Color'>;
|
||||
}
|
||||
declare module 'dat.gui/src/dat/color/interpret.js' {
|
||||
declare module.exports: $Exports<'dat.gui/src/dat/color/interpret'>;
|
||||
}
|
||||
declare module 'dat.gui/src/dat/color/math.js' {
|
||||
declare module.exports: $Exports<'dat.gui/src/dat/color/math'>;
|
||||
}
|
||||
declare module 'dat.gui/src/dat/color/toString.js' {
|
||||
declare module.exports: $Exports<'dat.gui/src/dat/color/toString'>;
|
||||
}
|
||||
declare module 'dat.gui/src/dat/controllers/BooleanController.js' {
|
||||
declare module.exports: $Exports<'dat.gui/src/dat/controllers/BooleanController'>;
|
||||
}
|
||||
declare module 'dat.gui/src/dat/controllers/ColorController.js' {
|
||||
declare module.exports: $Exports<'dat.gui/src/dat/controllers/ColorController'>;
|
||||
}
|
||||
declare module 'dat.gui/src/dat/controllers/Controller.js' {
|
||||
declare module.exports: $Exports<'dat.gui/src/dat/controllers/Controller'>;
|
||||
}
|
||||
declare module 'dat.gui/src/dat/controllers/ControllerFactory.js' {
|
||||
declare module.exports: $Exports<'dat.gui/src/dat/controllers/ControllerFactory'>;
|
||||
}
|
||||
declare module 'dat.gui/src/dat/controllers/FunctionController.js' {
|
||||
declare module.exports: $Exports<'dat.gui/src/dat/controllers/FunctionController'>;
|
||||
}
|
||||
declare module 'dat.gui/src/dat/controllers/NumberController.js' {
|
||||
declare module.exports: $Exports<'dat.gui/src/dat/controllers/NumberController'>;
|
||||
}
|
||||
declare module 'dat.gui/src/dat/controllers/NumberControllerBox.js' {
|
||||
declare module.exports: $Exports<'dat.gui/src/dat/controllers/NumberControllerBox'>;
|
||||
}
|
||||
declare module 'dat.gui/src/dat/controllers/NumberControllerSlider.js' {
|
||||
declare module.exports: $Exports<'dat.gui/src/dat/controllers/NumberControllerSlider'>;
|
||||
}
|
||||
declare module 'dat.gui/src/dat/controllers/OptionController.js' {
|
||||
declare module.exports: $Exports<'dat.gui/src/dat/controllers/OptionController'>;
|
||||
}
|
||||
declare module 'dat.gui/src/dat/controllers/StringController.js' {
|
||||
declare module.exports: $Exports<'dat.gui/src/dat/controllers/StringController'>;
|
||||
}
|
||||
declare module 'dat.gui/src/dat/dom/CenteredDiv.js' {
|
||||
declare module.exports: $Exports<'dat.gui/src/dat/dom/CenteredDiv'>;
|
||||
}
|
||||
declare module 'dat.gui/src/dat/dom/dom.js' {
|
||||
declare module.exports: $Exports<'dat.gui/src/dat/dom/dom'>;
|
||||
}
|
||||
declare module 'dat.gui/src/dat/gui/GUI.js' {
|
||||
declare module.exports: $Exports<'dat.gui/src/dat/gui/GUI'>;
|
||||
}
|
||||
declare module 'dat.gui/src/dat/gui/saveDialogue.html.js' {
|
||||
declare module.exports: $Exports<'dat.gui/src/dat/gui/saveDialogue.html'>;
|
||||
}
|
||||
declare module 'dat.gui/src/dat/index.js' {
|
||||
declare module.exports: $Exports<'dat.gui/src/dat/index'>;
|
||||
}
|
||||
declare module 'dat.gui/src/dat/utils/common.js' {
|
||||
declare module.exports: $Exports<'dat.gui/src/dat/utils/common'>;
|
||||
}
|
||||
declare module 'dat.gui/src/dat/utils/css.js' {
|
||||
declare module.exports: $Exports<'dat.gui/src/dat/utils/css'>;
|
||||
}
|
||||
declare module 'dat.gui/src/dat/utils/requestAnimationFrame.js' {
|
||||
declare module.exports: $Exports<'dat.gui/src/dat/utils/requestAnimationFrame'>;
|
||||
}
|
||||
declare module 'dat.gui/tests/jquery.js' {
|
||||
declare module.exports: $Exports<'dat.gui/tests/jquery'>;
|
||||
}
|
||||
declare module 'dat.gui/tests/qunit.js' {
|
||||
declare module.exports: $Exports<'dat.gui/tests/qunit'>;
|
||||
}
|
33
flow-typed/npm/decompress_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,33 @@
|
|||
// flow-typed signature: 8af82484309a657c7a61b42663f509c3
|
||||
// flow-typed version: <<STUB>>/decompress_v^4.2.0/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* 'decompress'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module 'decompress' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
|
||||
|
||||
// Filename aliases
|
||||
declare module 'decompress/index' {
|
||||
declare module.exports: $Exports<'decompress'>;
|
||||
}
|
||||
declare module 'decompress/index.js' {
|
||||
declare module.exports: $Exports<'decompress'>;
|
||||
}
|
50
flow-typed/npm/del_v3.x.x.js
vendored
Normal file
|
@ -0,0 +1,50 @@
|
|||
// flow-typed signature: 4d9e8253b9b9c1a25b55cc2d1f40b40e
|
||||
// flow-typed version: 77852b4474/del_v3.x.x/flow_>=v0.25.x
|
||||
|
||||
type $npm$del$Patterns = string[] | string;
|
||||
|
||||
type $npm$del$Options = {
|
||||
force?: boolean,
|
||||
dryRun?: boolean,
|
||||
concurrency?: number,
|
||||
|
||||
// remaining options are passed through to node-glob:
|
||||
cwd?: string,
|
||||
root?: string,
|
||||
dot?: boolean,
|
||||
nomount?: boolean,
|
||||
mark?: boolean,
|
||||
nosort?: boolean,
|
||||
stat?: boolean,
|
||||
silent?: boolean,
|
||||
strict?: boolean,
|
||||
cache?: Object,
|
||||
statCache?: Object,
|
||||
symlinks?: Object,
|
||||
realpathCache?: Object,
|
||||
nounique?: boolean,
|
||||
nonull?: boolean,
|
||||
debug?: boolean,
|
||||
nobrace?: boolean,
|
||||
noglobstar?: boolean,
|
||||
noext?: boolean,
|
||||
nocase?: boolean,
|
||||
matchBase?: boolean,
|
||||
nodir?: boolean,
|
||||
ignore?: string | string[],
|
||||
follow?: boolean,
|
||||
realpath?: boolean,
|
||||
absolute?: boolean
|
||||
};
|
||||
|
||||
declare module "del" {
|
||||
declare class Del {
|
||||
(
|
||||
patterns: $npm$del$Patterns,
|
||||
options?: $npm$del$Options
|
||||
): Promise<string[]>,
|
||||
sync(patterns: $npm$del$Patterns, options?: $npm$del$Options): string[]
|
||||
}
|
||||
|
||||
declare module.exports: Del;
|
||||
}
|
46
flow-typed/npm/devtron_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,46 @@
|
|||
// flow-typed signature: 5de60706042bc30bc14137b58c6ed418
|
||||
// flow-typed version: <<STUB>>/devtron_v^1.4.0/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* 'devtron'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module 'devtron' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
declare module 'devtron/api' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'devtron/out/browser-globals' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'devtron/out/index' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
// Filename aliases
|
||||
declare module 'devtron/api.js' {
|
||||
declare module.exports: $Exports<'devtron/api'>;
|
||||
}
|
||||
declare module 'devtron/out/browser-globals.js' {
|
||||
declare module.exports: $Exports<'devtron/out/browser-globals'>;
|
||||
}
|
||||
declare module 'devtron/out/index.js' {
|
||||
declare module.exports: $Exports<'devtron/out/index'>;
|
||||
}
|
46
flow-typed/npm/dom-scroll-into-view_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,46 @@
|
|||
// flow-typed signature: 3c0ff501d98f81d7c038268edb616ce8
|
||||
// flow-typed version: <<STUB>>/dom-scroll-into-view_v^1.2.1/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* 'dom-scroll-into-view'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module 'dom-scroll-into-view' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
declare module 'dom-scroll-into-view/lib/dom-scroll-into-view' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dom-scroll-into-view/lib/index' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'dom-scroll-into-view/lib/util' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
// Filename aliases
|
||||
declare module 'dom-scroll-into-view/lib/dom-scroll-into-view.js' {
|
||||
declare module.exports: $Exports<'dom-scroll-into-view/lib/dom-scroll-into-view'>;
|
||||
}
|
||||
declare module 'dom-scroll-into-view/lib/index.js' {
|
||||
declare module.exports: $Exports<'dom-scroll-into-view/lib/index'>;
|
||||
}
|
||||
declare module 'dom-scroll-into-view/lib/util.js' {
|
||||
declare module.exports: $Exports<'dom-scroll-into-view/lib/util'>;
|
||||
}
|
67
flow-typed/npm/electron-builder_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,67 @@
|
|||
// flow-typed signature: fb956bb4623bc969695376edde76eb27
|
||||
// flow-typed version: <<STUB>>/electron-builder_v^20.38.4/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* 'electron-builder'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module 'electron-builder' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
declare module 'electron-builder/out/builder' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-builder/out/cli/cli' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-builder/out/cli/create-self-signed-cert' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-builder/out/cli/install-app-deps' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-builder/out/cli/start' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-builder/out/index' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
// Filename aliases
|
||||
declare module 'electron-builder/out/builder.js' {
|
||||
declare module.exports: $Exports<'electron-builder/out/builder'>;
|
||||
}
|
||||
declare module 'electron-builder/out/cli/cli.js' {
|
||||
declare module.exports: $Exports<'electron-builder/out/cli/cli'>;
|
||||
}
|
||||
declare module 'electron-builder/out/cli/create-self-signed-cert.js' {
|
||||
declare module.exports: $Exports<'electron-builder/out/cli/create-self-signed-cert'>;
|
||||
}
|
||||
declare module 'electron-builder/out/cli/install-app-deps.js' {
|
||||
declare module.exports: $Exports<'electron-builder/out/cli/install-app-deps'>;
|
||||
}
|
||||
declare module 'electron-builder/out/cli/start.js' {
|
||||
declare module.exports: $Exports<'electron-builder/out/cli/start'>;
|
||||
}
|
||||
declare module 'electron-builder/out/index.js' {
|
||||
declare module.exports: $Exports<'electron-builder/out/index'>;
|
||||
}
|
67
flow-typed/npm/electron-devtools-installer_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,67 @@
|
|||
// flow-typed signature: 6e6d65e1d72b5d8beb9c80e7effc7f0a
|
||||
// flow-typed version: <<STUB>>/electron-devtools-installer_v^2.2.3/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* 'electron-devtools-installer'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module 'electron-devtools-installer' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
declare module 'electron-devtools-installer/dist/downloadChromeExtension' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-devtools-installer/dist/index' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-devtools-installer/dist/utils' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-devtools-installer/src/downloadChromeExtension' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-devtools-installer/src/index' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-devtools-installer/src/utils' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
// Filename aliases
|
||||
declare module 'electron-devtools-installer/dist/downloadChromeExtension.js' {
|
||||
declare module.exports: $Exports<'electron-devtools-installer/dist/downloadChromeExtension'>;
|
||||
}
|
||||
declare module 'electron-devtools-installer/dist/index.js' {
|
||||
declare module.exports: $Exports<'electron-devtools-installer/dist/index'>;
|
||||
}
|
||||
declare module 'electron-devtools-installer/dist/utils.js' {
|
||||
declare module.exports: $Exports<'electron-devtools-installer/dist/utils'>;
|
||||
}
|
||||
declare module 'electron-devtools-installer/src/downloadChromeExtension.js' {
|
||||
declare module.exports: $Exports<'electron-devtools-installer/src/downloadChromeExtension'>;
|
||||
}
|
||||
declare module 'electron-devtools-installer/src/index.js' {
|
||||
declare module.exports: $Exports<'electron-devtools-installer/src/index'>;
|
||||
}
|
||||
declare module 'electron-devtools-installer/src/utils.js' {
|
||||
declare module.exports: $Exports<'electron-devtools-installer/src/utils'>;
|
||||
}
|
33
flow-typed/npm/electron-dl_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,33 @@
|
|||
// flow-typed signature: 0ef4d53fd7331462be80654f50b1984f
|
||||
// flow-typed version: <<STUB>>/electron-dl_v^1.11.0/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* 'electron-dl'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module 'electron-dl' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
|
||||
|
||||
// Filename aliases
|
||||
declare module 'electron-dl/index' {
|
||||
declare module.exports: $Exports<'electron-dl'>;
|
||||
}
|
||||
declare module 'electron-dl/index.js' {
|
||||
declare module.exports: $Exports<'electron-dl'>;
|
||||
}
|
33
flow-typed/npm/electron-is-dev_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,33 @@
|
|||
// flow-typed signature: 3c84c73400ce0360b931c44d6018aaf1
|
||||
// flow-typed version: <<STUB>>/electron-is-dev_v^0.3.0/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* 'electron-is-dev'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module 'electron-is-dev' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
|
||||
|
||||
// Filename aliases
|
||||
declare module 'electron-is-dev/index' {
|
||||
declare module.exports: $Exports<'electron-is-dev'>;
|
||||
}
|
||||
declare module 'electron-is-dev/index.js' {
|
||||
declare module.exports: $Exports<'electron-is-dev'>;
|
||||
}
|
108
flow-typed/npm/electron-log_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,108 @@
|
|||
// flow-typed signature: 139eafe063e827f93b06a1ee48b58eea
|
||||
// flow-typed version: <<STUB>>/electron-log_v^2.2.12/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* 'electron-log'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module 'electron-log' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
declare module 'electron-log/lib/format' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-log/lib/log' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-log/lib/original-console' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-log/lib/transports/console' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-log/lib/transports/file/find-log-path' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-log/lib/transports/file/get-app-name' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-log/lib/transports/file/index' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-log/lib/transports/log-s' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-log/lib/transports/renderer-console' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-log/main' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-log/renderer' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
// Filename aliases
|
||||
declare module 'electron-log/index' {
|
||||
declare module.exports: $Exports<'electron-log'>;
|
||||
}
|
||||
declare module 'electron-log/index.js' {
|
||||
declare module.exports: $Exports<'electron-log'>;
|
||||
}
|
||||
declare module 'electron-log/lib/format.js' {
|
||||
declare module.exports: $Exports<'electron-log/lib/format'>;
|
||||
}
|
||||
declare module 'electron-log/lib/log.js' {
|
||||
declare module.exports: $Exports<'electron-log/lib/log'>;
|
||||
}
|
||||
declare module 'electron-log/lib/original-console.js' {
|
||||
declare module.exports: $Exports<'electron-log/lib/original-console'>;
|
||||
}
|
||||
declare module 'electron-log/lib/transports/console.js' {
|
||||
declare module.exports: $Exports<'electron-log/lib/transports/console'>;
|
||||
}
|
||||
declare module 'electron-log/lib/transports/file/find-log-path.js' {
|
||||
declare module.exports: $Exports<'electron-log/lib/transports/file/find-log-path'>;
|
||||
}
|
||||
declare module 'electron-log/lib/transports/file/get-app-name.js' {
|
||||
declare module.exports: $Exports<'electron-log/lib/transports/file/get-app-name'>;
|
||||
}
|
||||
declare module 'electron-log/lib/transports/file/index.js' {
|
||||
declare module.exports: $Exports<'electron-log/lib/transports/file/index'>;
|
||||
}
|
||||
declare module 'electron-log/lib/transports/log-s.js' {
|
||||
declare module.exports: $Exports<'electron-log/lib/transports/log-s'>;
|
||||
}
|
||||
declare module 'electron-log/lib/transports/renderer-console.js' {
|
||||
declare module.exports: $Exports<'electron-log/lib/transports/renderer-console'>;
|
||||
}
|
||||
declare module 'electron-log/main.js' {
|
||||
declare module.exports: $Exports<'electron-log/main'>;
|
||||
}
|
||||
declare module 'electron-log/renderer.js' {
|
||||
declare module.exports: $Exports<'electron-log/renderer'>;
|
||||
}
|
53
flow-typed/npm/electron-publisher-s3_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,53 @@
|
|||
// flow-typed signature: bc2488f144e2cdd85f8de1a45a3dbaf2
|
||||
// flow-typed version: <<STUB>>/electron-publisher-s3_v^20.8.1/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* 'electron-publisher-s3'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module 'electron-publisher-s3' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
declare module 'electron-publisher-s3/out/BaseS3Publisher' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-publisher-s3/out/s3Publisher' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-publisher-s3/out/spacesPublisher' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-publisher-s3/out/uploader' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
// Filename aliases
|
||||
declare module 'electron-publisher-s3/out/BaseS3Publisher.js' {
|
||||
declare module.exports: $Exports<'electron-publisher-s3/out/BaseS3Publisher'>;
|
||||
}
|
||||
declare module 'electron-publisher-s3/out/s3Publisher.js' {
|
||||
declare module.exports: $Exports<'electron-publisher-s3/out/s3Publisher'>;
|
||||
}
|
||||
declare module 'electron-publisher-s3/out/spacesPublisher.js' {
|
||||
declare module.exports: $Exports<'electron-publisher-s3/out/spacesPublisher'>;
|
||||
}
|
||||
declare module 'electron-publisher-s3/out/uploader.js' {
|
||||
declare module.exports: $Exports<'electron-publisher-s3/out/uploader'>;
|
||||
}
|
186
flow-typed/npm/electron-updater_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,186 @@
|
|||
// flow-typed signature: 693c56939bca45d8334f4ef5520295b1
|
||||
// flow-typed version: <<STUB>>/electron-updater_v^4.0.0/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* 'electron-updater'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module 'electron-updater' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
declare module 'electron-updater/out/AppAdapter' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-updater/out/AppImageUpdater' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-updater/out/AppUpdater' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-updater/out/BaseUpdater' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-updater/out/differentialDownloader/DataSplitter' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-updater/out/differentialDownloader/DifferentialDownloader' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-updater/out/differentialDownloader/downloadPlanBuilder' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-updater/out/differentialDownloader/FileWithEmbeddedBlockMapDifferentialDownloader' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-updater/out/differentialDownloader/GenericDifferentialDownloader' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-updater/out/differentialDownloader/multipleRangeDownloader' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-updater/out/DownloadedUpdateHelper' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-updater/out/ElectronAppAdapter' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-updater/out/electronHttpExecutor' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-updater/out/MacUpdater' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-updater/out/main' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-updater/out/NsisUpdater' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-updater/out/providerFactory' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-updater/out/providers/BintrayProvider' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-updater/out/providers/GenericProvider' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-updater/out/providers/GitHubProvider' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-updater/out/providers/PrivateGitHubProvider' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-updater/out/providers/Provider' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-updater/out/windowsExecutableCodeSignatureVerifier' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
// Filename aliases
|
||||
declare module 'electron-updater/out/AppAdapter.js' {
|
||||
declare module.exports: $Exports<'electron-updater/out/AppAdapter'>;
|
||||
}
|
||||
declare module 'electron-updater/out/AppImageUpdater.js' {
|
||||
declare module.exports: $Exports<'electron-updater/out/AppImageUpdater'>;
|
||||
}
|
||||
declare module 'electron-updater/out/AppUpdater.js' {
|
||||
declare module.exports: $Exports<'electron-updater/out/AppUpdater'>;
|
||||
}
|
||||
declare module 'electron-updater/out/BaseUpdater.js' {
|
||||
declare module.exports: $Exports<'electron-updater/out/BaseUpdater'>;
|
||||
}
|
||||
declare module 'electron-updater/out/differentialDownloader/DataSplitter.js' {
|
||||
declare module.exports: $Exports<'electron-updater/out/differentialDownloader/DataSplitter'>;
|
||||
}
|
||||
declare module 'electron-updater/out/differentialDownloader/DifferentialDownloader.js' {
|
||||
declare module.exports: $Exports<'electron-updater/out/differentialDownloader/DifferentialDownloader'>;
|
||||
}
|
||||
declare module 'electron-updater/out/differentialDownloader/downloadPlanBuilder.js' {
|
||||
declare module.exports: $Exports<'electron-updater/out/differentialDownloader/downloadPlanBuilder'>;
|
||||
}
|
||||
declare module 'electron-updater/out/differentialDownloader/FileWithEmbeddedBlockMapDifferentialDownloader.js' {
|
||||
declare module.exports: $Exports<'electron-updater/out/differentialDownloader/FileWithEmbeddedBlockMapDifferentialDownloader'>;
|
||||
}
|
||||
declare module 'electron-updater/out/differentialDownloader/GenericDifferentialDownloader.js' {
|
||||
declare module.exports: $Exports<'electron-updater/out/differentialDownloader/GenericDifferentialDownloader'>;
|
||||
}
|
||||
declare module 'electron-updater/out/differentialDownloader/multipleRangeDownloader.js' {
|
||||
declare module.exports: $Exports<'electron-updater/out/differentialDownloader/multipleRangeDownloader'>;
|
||||
}
|
||||
declare module 'electron-updater/out/DownloadedUpdateHelper.js' {
|
||||
declare module.exports: $Exports<'electron-updater/out/DownloadedUpdateHelper'>;
|
||||
}
|
||||
declare module 'electron-updater/out/ElectronAppAdapter.js' {
|
||||
declare module.exports: $Exports<'electron-updater/out/ElectronAppAdapter'>;
|
||||
}
|
||||
declare module 'electron-updater/out/electronHttpExecutor.js' {
|
||||
declare module.exports: $Exports<'electron-updater/out/electronHttpExecutor'>;
|
||||
}
|
||||
declare module 'electron-updater/out/MacUpdater.js' {
|
||||
declare module.exports: $Exports<'electron-updater/out/MacUpdater'>;
|
||||
}
|
||||
declare module 'electron-updater/out/main.js' {
|
||||
declare module.exports: $Exports<'electron-updater/out/main'>;
|
||||
}
|
||||
declare module 'electron-updater/out/NsisUpdater.js' {
|
||||
declare module.exports: $Exports<'electron-updater/out/NsisUpdater'>;
|
||||
}
|
||||
declare module 'electron-updater/out/providerFactory.js' {
|
||||
declare module.exports: $Exports<'electron-updater/out/providerFactory'>;
|
||||
}
|
||||
declare module 'electron-updater/out/providers/BintrayProvider.js' {
|
||||
declare module.exports: $Exports<'electron-updater/out/providers/BintrayProvider'>;
|
||||
}
|
||||
declare module 'electron-updater/out/providers/GenericProvider.js' {
|
||||
declare module.exports: $Exports<'electron-updater/out/providers/GenericProvider'>;
|
||||
}
|
||||
declare module 'electron-updater/out/providers/GitHubProvider.js' {
|
||||
declare module.exports: $Exports<'electron-updater/out/providers/GitHubProvider'>;
|
||||
}
|
||||
declare module 'electron-updater/out/providers/PrivateGitHubProvider.js' {
|
||||
declare module.exports: $Exports<'electron-updater/out/providers/PrivateGitHubProvider'>;
|
||||
}
|
||||
declare module 'electron-updater/out/providers/Provider.js' {
|
||||
declare module.exports: $Exports<'electron-updater/out/providers/Provider'>;
|
||||
}
|
||||
declare module 'electron-updater/out/windowsExecutableCodeSignatureVerifier.js' {
|
||||
declare module.exports: $Exports<'electron-updater/out/windowsExecutableCodeSignatureVerifier'>;
|
||||
}
|
235
flow-typed/npm/electron-webpack_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,235 @@
|
|||
// flow-typed signature: b2525aab5150a9b02d85d0d46aa3572c
|
||||
// flow-typed version: <<STUB>>/electron-webpack_v^2.6.2/flow_v0.94.0
|
||||
|
||||
/**
|
||||
* This is an autogenerated libdef stub for:
|
||||
*
|
||||
* 'electron-webpack'
|
||||
*
|
||||
* Fill this stub out by replacing all the `any` types.
|
||||
*
|
||||
* Once filled out, we encourage you to share your work with the
|
||||
* community by sending a pull request to:
|
||||
* https://github.com/flowtype/flow-typed
|
||||
*/
|
||||
|
||||
declare module 'electron-webpack' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* We include stubs for each file inside this npm package in case you need to
|
||||
* require those files directly. Feel free to delete any files that aren't
|
||||
* needed.
|
||||
*/
|
||||
declare module 'electron-webpack/out/cli' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/out/config' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/out/configurators/dll' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/out/configurators/eslint' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/out/configurators/js' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/out/configurators/ts' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/out/configurators/vue/vue-main-dev-entry' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/out/configurators/vue/vue' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/out/core' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/out/dev/ChildProcessManager' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/out/dev/dev-runner' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/out/dev/devUtil' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/out/dev/WebpackDevServerManager' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/out/electron-builder' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/out/electron-main-hmr/HmrClient' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/out/electron-main-hmr/HmrServer' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/out/electron-main-hmr/main-hmr' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/out/main' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/out/plugins/WatchMatchPlugin' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/out/plugins/WebpackRemoveOldAssetsPlugin' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/out/targets/BaseTarget' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/out/targets/MainTarget' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/out/targets/RendererTarget' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/out/util' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/vue-renderer-entry' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/webpack.app.config' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/webpack.main.config' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/webpack.renderer.config' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/webpack.renderer.dll.config' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
declare module 'electron-webpack/webpack.test.config' {
|
||||
declare module.exports: any;
|
||||
}
|
||||
|
||||
// Filename aliases
|
||||
declare module 'electron-webpack/out/cli.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/out/cli'>;
|
||||
}
|
||||
declare module 'electron-webpack/out/config.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/out/config'>;
|
||||
}
|
||||
declare module 'electron-webpack/out/configurators/dll.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/out/configurators/dll'>;
|
||||
}
|
||||
declare module 'electron-webpack/out/configurators/eslint.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/out/configurators/eslint'>;
|
||||
}
|
||||
declare module 'electron-webpack/out/configurators/js.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/out/configurators/js'>;
|
||||
}
|
||||
declare module 'electron-webpack/out/configurators/ts.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/out/configurators/ts'>;
|
||||
}
|
||||
declare module 'electron-webpack/out/configurators/vue/vue-main-dev-entry.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/out/configurators/vue/vue-main-dev-entry'>;
|
||||
}
|
||||
declare module 'electron-webpack/out/configurators/vue/vue.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/out/configurators/vue/vue'>;
|
||||
}
|
||||
declare module 'electron-webpack/out/core.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/out/core'>;
|
||||
}
|
||||
declare module 'electron-webpack/out/dev/ChildProcessManager.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/out/dev/ChildProcessManager'>;
|
||||
}
|
||||
declare module 'electron-webpack/out/dev/dev-runner.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/out/dev/dev-runner'>;
|
||||
}
|
||||
declare module 'electron-webpack/out/dev/devUtil.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/out/dev/devUtil'>;
|
||||
}
|
||||
declare module 'electron-webpack/out/dev/WebpackDevServerManager.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/out/dev/WebpackDevServerManager'>;
|
||||
}
|
||||
declare module 'electron-webpack/out/electron-builder.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/out/electron-builder'>;
|
||||
}
|
||||
declare module 'electron-webpack/out/electron-main-hmr/HmrClient.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/out/electron-main-hmr/HmrClient'>;
|
||||
}
|
||||
declare module 'electron-webpack/out/electron-main-hmr/HmrServer.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/out/electron-main-hmr/HmrServer'>;
|
||||
}
|
||||
declare module 'electron-webpack/out/electron-main-hmr/main-hmr.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/out/electron-main-hmr/main-hmr'>;
|
||||
}
|
||||
declare module 'electron-webpack/out/main.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/out/main'>;
|
||||
}
|
||||
declare module 'electron-webpack/out/plugins/WatchMatchPlugin.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/out/plugins/WatchMatchPlugin'>;
|
||||
}
|
||||
declare module 'electron-webpack/out/plugins/WebpackRemoveOldAssetsPlugin.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/out/plugins/WebpackRemoveOldAssetsPlugin'>;
|
||||
}
|
||||
declare module 'electron-webpack/out/targets/BaseTarget.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/out/targets/BaseTarget'>;
|
||||
}
|
||||
declare module 'electron-webpack/out/targets/MainTarget.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/out/targets/MainTarget'>;
|
||||
}
|
||||
declare module 'electron-webpack/out/targets/RendererTarget.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/out/targets/RendererTarget'>;
|
||||
}
|
||||
declare module 'electron-webpack/out/util.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/out/util'>;
|
||||
}
|
||||
declare module 'electron-webpack/vue-renderer-entry.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/vue-renderer-entry'>;
|
||||
}
|
||||
declare module 'electron-webpack/webpack.app.config.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/webpack.app.config'>;
|
||||
}
|
||||
declare module 'electron-webpack/webpack.main.config.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/webpack.main.config'>;
|
||||
}
|
||||
declare module 'electron-webpack/webpack.renderer.config.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/webpack.renderer.config'>;
|
||||
}
|
||||
declare module 'electron-webpack/webpack.renderer.dll.config.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/webpack.renderer.dll.config'>;
|
||||
}
|
||||
declare module 'electron-webpack/webpack.test.config.js' {
|
||||
declare module.exports: $Exports<'electron-webpack/webpack.test.config'>;
|
||||
}
|