mirror of
https://github.com/checktheroads/hyperglass
synced 2024-05-11 05:55:08 +00:00
docs improvements
This commit is contained in:
@@ -6,8 +6,8 @@ keywords: [configuration, linux, frr, frrouting, bird, agent]
|
||||
description: hyperglass agent configuration
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
import Tabs from "@theme/Tabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
|
||||
:::important In Progress
|
||||
Documentation for [hyperglass-agent](https://github.com/checktheroads/hyperglass-agent) is in progress!
|
||||
@@ -83,8 +83,9 @@ Options:
|
||||
--force Force regeneration of config file
|
||||
-h, --help Show this message and exit.
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
:::important More coming soon
|
||||
Documentation for [hyperglass-agent](https://github.com/checktheroads/hyperglass-agent) is in progress!
|
||||
:::
|
||||
:::
|
||||
|
@@ -58,26 +58,27 @@ FastAPI provides built in support for both [Swagger UI](https://swagger.io/tools
|
||||
|
||||
```yaml
|
||||
docs:
|
||||
base_url: https://lg.example.net
|
||||
description: ""
|
||||
devices:
|
||||
description: List of all devices/locations with associated identifiers, display
|
||||
names, networks, & VRFs.
|
||||
summary: Devices List
|
||||
title: Devices
|
||||
enable: true
|
||||
mode: redoc
|
||||
openapi_uri: /openapi.json
|
||||
queries:
|
||||
description: List of supported query types.
|
||||
summary: Query Types
|
||||
title: Supported Queries
|
||||
query:
|
||||
description: Request a query response per-location.
|
||||
summary: Query the Looking Glass
|
||||
title: Submit Query
|
||||
title: "{site_title} API Documentation"
|
||||
uri: /api/docs
|
||||
base_url: https://lg.example.net
|
||||
description: ""
|
||||
devices:
|
||||
description:
|
||||
List of all devices/locations with associated identifiers, display
|
||||
names, networks, & VRFs.
|
||||
summary: Devices List
|
||||
title: Devices
|
||||
enable: true
|
||||
mode: redoc
|
||||
openapi_uri: /openapi.json
|
||||
queries:
|
||||
description: List of supported query types.
|
||||
summary: Query Types
|
||||
title: Supported Queries
|
||||
query:
|
||||
description: Request a query response per-location.
|
||||
summary: Query the Looking Glass
|
||||
title: Submit Query
|
||||
title: "{site_title} API Documentation"
|
||||
uri: /api/docs
|
||||
```
|
||||
|
||||
:::note From the developer
|
||||
|
@@ -6,8 +6,6 @@ keywords: [configuration, cache, timeout]
|
||||
description: hyperglass caching configuration
|
||||
---
|
||||
|
||||
import Link from "@docusaurus/Link";
|
||||
|
||||
hyperglass uses [Redis](https://redis.io/) for cache storage. Every query is cached and automatically expired from the cache after a configurable timeout period.
|
||||
|
||||
Common Redis parameters are configurable, in case you already have a dedicated Redis server you'd prefer to use, instead of running it on the same server as hyperglass:
|
||||
@@ -28,9 +26,9 @@ hyperglass caches every query response to a Redis database, and always responds
|
||||
|
||||
```yaml
|
||||
cache:
|
||||
database: 0
|
||||
host: localhost
|
||||
port: 6379
|
||||
show_text: true
|
||||
timeout: 120
|
||||
database: 0
|
||||
host: localhost
|
||||
port: 6379
|
||||
show_text: true
|
||||
timeout: 120
|
||||
```
|
||||
|
@@ -3,39 +3,39 @@ id: commands
|
||||
title: Commands
|
||||
sidebar_label: Commands
|
||||
keywords:
|
||||
[
|
||||
hyperglass,
|
||||
commands,
|
||||
customize,
|
||||
cisco,
|
||||
ios,
|
||||
ios-xe,
|
||||
ios-xr,
|
||||
juniper,
|
||||
junos,
|
||||
arista,
|
||||
eos,
|
||||
huawei,
|
||||
vrp,
|
||||
]
|
||||
[
|
||||
hyperglass,
|
||||
commands,
|
||||
customize,
|
||||
cisco,
|
||||
ios,
|
||||
ios-xe,
|
||||
ios-xr,
|
||||
juniper,
|
||||
junos,
|
||||
arista,
|
||||
eos,
|
||||
huawei,
|
||||
vrp,
|
||||
]
|
||||
description: Custom Commands
|
||||
---
|
||||
|
||||
hyperglass comes with built in support for the following platforms:
|
||||
|
||||
- Cisco IOS & IOS-XE
|
||||
- Cisco IOS-XR
|
||||
- Juniper JunOS
|
||||
- Arista EOS
|
||||
- Huawei VRP
|
||||
- Cisco IOS & IOS-XE
|
||||
- Cisco IOS-XR
|
||||
- Juniper JunOS
|
||||
- Arista EOS
|
||||
- Huawei VRP
|
||||
|
||||
Default commands for each of these network operating systems are built into hyperglass. However, you may override any of them or even add commands for another Network Operating System (NOS), as long as it's [supported](platforms.mdx). To define custom commands, add a `commands.yaml` file to your installation directory (`/etc/hyperglass`,
|
||||
`~/hyperglass`). As an example, you could override the default Juniper `bgp_route` command for the default routing table like this:
|
||||
|
||||
```yaml
|
||||
juniper:
|
||||
ipv4_default:
|
||||
bgp_route: "show route protocol bgp {target} terse"
|
||||
ipv4_default:
|
||||
bgp_route: "show route protocol bgp {target} terse"
|
||||
```
|
||||
|
||||
Only the command you specify will be overridden.
|
||||
@@ -87,10 +87,10 @@ You can also define your own arbitrary command groups, and reference them in you
|
||||
# commands.yaml
|
||||
---
|
||||
special_commands:
|
||||
ipv4_default:
|
||||
bgp_route: "show ip route {target}"
|
||||
ipv4_vpn:
|
||||
bgp_route: "show ip route {target} vrf {vrf}"
|
||||
ipv4_default:
|
||||
bgp_route: "show ip route {target}"
|
||||
ipv4_vpn:
|
||||
bgp_route: "show ip route {target} vrf {vrf}"
|
||||
```
|
||||
|
||||
The above example defines the command set.
|
||||
@@ -105,6 +105,6 @@ Then, in the device's definition in `devices.yaml`, reference the command set:
|
||||
# devices.yaml
|
||||
---
|
||||
routers:
|
||||
- name: specialrouter01
|
||||
commands: special_commands
|
||||
- name: specialrouter01
|
||||
commands: special_commands
|
||||
```
|
||||
|
@@ -6,7 +6,6 @@ keywords: [configuration]
|
||||
description: Configuring hyperglass
|
||||
---
|
||||
|
||||
import Link from "@docusaurus/Link";
|
||||
import MiniNote from "../src/components/MiniNote";
|
||||
import PageLink from "../src/components/PageLink";
|
||||
|
||||
@@ -20,22 +19,22 @@ On the back end, hyperglass uses strict configuration schema validation, so it's
|
||||
|
||||
hyperglass configuration consists of three separate [YAML](https://yaml.org/) configuration files:
|
||||
|
||||
- `hyperglass.yaml`
|
||||
- Defines configuration parameters for the application and UI
|
||||
<MiniNote>This file is not required for hyperglass to run</MiniNote>
|
||||
- `devices.yaml`
|
||||
- Defines devices (routers), SSH proxy servers, and credentials
|
||||
<MiniNote>
|
||||
This file <strong>is required</strong> for hyperglass to run
|
||||
</MiniNote>
|
||||
- `commands.yaml`
|
||||
- Defines commands for custom network operating systems, or overrides default hyperglass command sets.
|
||||
<MiniNote>This file is not required for hyperglass to run</MiniNote>
|
||||
- `hyperglass.yaml`
|
||||
- Defines configuration parameters for the application and UI
|
||||
<MiniNote>This file is not required for hyperglass to run</MiniNote>
|
||||
- `devices.yaml`
|
||||
- Defines devices (routers), SSH proxy servers, and credentials
|
||||
<MiniNote>
|
||||
This file <strong>is required</strong> for hyperglass to run
|
||||
</MiniNote>
|
||||
- `commands.yaml`
|
||||
- Defines commands for custom network operating systems, or overrides default hyperglass command sets.
|
||||
<MiniNote>This file is not required for hyperglass to run</MiniNote>
|
||||
|
||||
Configuration files may be located in one of the following directories:
|
||||
|
||||
- `/etc/hyperglass`
|
||||
- `~/hyperglass`
|
||||
- `/etc/hyperglass`
|
||||
- `~/hyperglass`
|
||||
|
||||
## Global Settings
|
||||
|
||||
@@ -95,25 +94,25 @@ To add, as an example, a Cisco router, add the following to your `devices.yaml`,
|
||||
|
||||
```yaml
|
||||
routers:
|
||||
- name: router01.pop01
|
||||
address: 10.0.0.1
|
||||
network: AS65000
|
||||
credential:
|
||||
username: username
|
||||
password: password
|
||||
location: pop01
|
||||
display_name: Phoenix, AZ
|
||||
port: 22
|
||||
nos: cisco_ios
|
||||
vrfs:
|
||||
- name: default
|
||||
ipv4:
|
||||
source_address: 192.0.2.1
|
||||
ipv6:
|
||||
source_address: 2001:db8::1
|
||||
- name: router01.pop01
|
||||
address: 10.0.0.1
|
||||
network: AS65000
|
||||
credential:
|
||||
username: username
|
||||
password: password
|
||||
location: pop01
|
||||
display_name: Phoenix, AZ
|
||||
port: 22
|
||||
nos: cisco_ios
|
||||
vrfs:
|
||||
- name: default
|
||||
ipv4:
|
||||
source_address: 192.0.2.1
|
||||
ipv6:
|
||||
source_address: 2001:db8::1
|
||||
```
|
||||
|
||||
There are a lot more options, but this is enough to get started. For all device configuration options, <Link to="/docs/devices">see here</Link>.
|
||||
There are a lot more options, but this is enough to get started. For all device configuration options, [see here](devices.mdx).
|
||||
|
||||
:::tip YAML
|
||||
If you have a lot of devices with shared configuration parameters, you may want to look into **YAML Anchors and Aliases**. If you've never used them before, they can be pretty weird looking at first read. Atlassian [has a pretty decent guide](https://confluence.atlassian.com/bitbucket/yaml-anchors-960154027.html).
|
||||
|
@@ -2,7 +2,8 @@
|
||||
id: devices
|
||||
title: Devices
|
||||
sidebar_label: Devices
|
||||
keywords: [hyperglass, authentication, ssl, proxy, access list, prefix list, acl, help]
|
||||
keywords:
|
||||
[hyperglass, authentication, ssl, proxy, access list, prefix list, acl, help]
|
||||
description: Adding devices to hyperglass
|
||||
---
|
||||
|
||||
@@ -11,6 +12,8 @@ import R from "../src/components/Required";
|
||||
import MiniNote from "../src/components/MiniNote";
|
||||
import Code from "../src/components/JSXCode";
|
||||
|
||||
<div class="table--full-width" />
|
||||
|
||||
## All Device Parameters
|
||||
|
||||
| Parameter | Type | Description |
|
||||
@@ -49,7 +52,7 @@ While all devices require a credential mapping, the credential values themselves
|
||||
For HTTP devices (i.e. devices using [hyperglass-agent](https://github.com/checktheroads/hyperglass-agent)), the username is ignored and the password is used as a secret for [JSON Web Token](https://tools.ietf.org/html/rfc7519) encoding/decoding.
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------------- | ------ | ------------------------------------------------------------ |
|
||||
| :-------------- | :----- | :----------------------------------------------------------- |
|
||||
| <R/> `username` | String | Username |
|
||||
| <R/> `password` | String | Password <MiniNote>Passwords will never be logged</MiniNote> |
|
||||
|
||||
@@ -59,8 +62,8 @@ HTTP devices may optionally use SSL for the connection between hyperglass and th
|
||||
|
||||
If SSL is enabled, the public key of the device must be provided in the form of an accessible absolute file path. With SSL enabled and a valid certificate specified, every connection to the device will use HTTPS in addition to payload encoding with [JSON Web Tokens](https://tools.ietf.org/html/rfc7519).
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| :---------- | :-----: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Parameter | Type | Description |
|
||||
| :---------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `enable` | Boolean | Enable or disable the use of SSL. <MiniNote>If enabled, a certificate file must be specified (hyperglass does not support connecting to a device over an unverified SSL session).</MiniNote> |
|
||||
| <R/> `cert` | String | Absolute path to agent's public RSA key. |
|
||||
|
||||
@@ -68,8 +71,8 @@ If SSL is enabled, the public key of the device must be provided in the form of
|
||||
|
||||
The VRFs section is a list of available VRFs for a given device. Each VRF may be configured with the following fields:
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| :------------- | :----: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Parameter | Type | Description |
|
||||
| :------------- | :----- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| <R/> `name` | String | The VRF's name, as known **by the device**. <MiniNote>hyperglass sends this field to the device for queries, so it needs to match the device's configuration.</MiniNote> |
|
||||
| `display_name` | String | The VRF's user-facing name. This field's value is visible in the UI. <MiniNote>If this is not specified, hyperglass will try to create a "pretty" display name based on the `name` field.</MiniNote> |
|
||||
| `info` | | <Link to="#info">Per-VRF Contextual Help Configuration</Link> |
|
||||
@@ -80,8 +83,8 @@ The VRFs section is a list of available VRFs for a given device. Each VRF may be
|
||||
|
||||
May be set to `null` to disable IPv4 for this VRF, on the parent device.
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| :-------------------- | :-----: | :-------------------------------------------------------------------- |
|
||||
| Parameter | Type | Description |
|
||||
| :-------------------- | :------ | :-------------------------------------------------------------------- |
|
||||
| <R/> `source_address` | String | Device's source IPv4 address for directed queries (ping, traceroute). |
|
||||
| `force_cidr` | Boolean | `true` | Convert IP host queries to actual advertised containing prefix length |
|
||||
| `access_list` | | <Link to="#access_list">IPv4 Access List Configuration</Link> |
|
||||
@@ -90,8 +93,8 @@ May be set to `null` to disable IPv4 for this VRF, on the parent device.
|
||||
|
||||
May be set to `null` to disable IPv6 for this VRF, on the parent device.
|
||||
|
||||
| Parameter | Type | Default | Description |
|
||||
| :-------------------- | :-----: | :------ | :-------------------------------------------------------------------- |
|
||||
| Parameter | Type | Default | Description |
|
||||
| :-------------------- | :------ | :------ | :-------------------------------------------------------------------- |
|
||||
| <R/> `source_address` | String | | Device's source IPv6 address for directed queries (ping, traceroute). |
|
||||
| `force_cidr` | Boolean | `true` | Convert IP host queries to actual advertised containing prefix length |
|
||||
| `access_list` | | | [IPv6 Access List Configuration](#access_list) |
|
||||
@@ -106,8 +109,8 @@ When `force_cidr`is set to `true`, hyperglass will perform a lookup via the [RIP
|
||||
|
||||
The `access_list` block can be thought of like a prefix-list from Cisco IOS. It is a list of rules, where the first matching rule is the action executed.
|
||||
|
||||
| Parameter | Type | Default | Description |
|
||||
| :------------- | :-----: | :-----------: | :-------------------------------------------------------------------------- |
|
||||
| Parameter | Type | Default | Description |
|
||||
| :------------- | :------ | :-----------: | :-------------------------------------------------------------------------- |
|
||||
| <R/> `network` | String | | This rule's IPv4 or IPv6 base prefix |
|
||||
| `action` | String | `'permit'` | This rule's action. Must be `permit` or `deny` |
|
||||
| `ge` | Integer | `0` | To match this rule, the target prefix must be greater than or equal to `ge` |
|
||||
@@ -117,8 +120,8 @@ The `access_list` block can be thought of like a prefix-list from Cisco IOS. It
|
||||
|
||||
Each VRF may enable, disable, or customize the contextual help menu for each enabled query type. The following parameters may be defined under any query type:
|
||||
|
||||
| Parameter | Type | Default | Description |
|
||||
| :-------- | :-----: | :-----: | :-------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Parameter | Type | Default | Description |
|
||||
| :-------- | :------ | :-----: | :-------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `enable` | Boolean | `true` | Enable or disable the help menu for this command. |
|
||||
| `file` | String | | Path to a plain text or markdown file containing customized help information for this command. |
|
||||
| `params` | Object | | Any arbitrary key/value pairs where the value will replace any occurrences of the key when wrapped in braces (e.g. `{key}`) |
|
||||
@@ -127,19 +130,19 @@ For example:
|
||||
|
||||
```yaml
|
||||
info:
|
||||
bgp_route:
|
||||
enable: true
|
||||
file: /etc/hyperglass/customer_bgp_route.md
|
||||
params:
|
||||
vrf_name: Customer A
|
||||
ping:
|
||||
enable: false
|
||||
bgp_community:
|
||||
enable: true
|
||||
file: /etc/hyperglass/customer_bgp_community.md
|
||||
params:
|
||||
vrf_name: Customer A
|
||||
community: "65000"
|
||||
bgp_route:
|
||||
enable: true
|
||||
file: /etc/hyperglass/customer_bgp_route.md
|
||||
params:
|
||||
vrf_name: Customer A
|
||||
ping:
|
||||
enable: false
|
||||
bgp_community:
|
||||
enable: true
|
||||
file: /etc/hyperglass/customer_bgp_community.md
|
||||
params:
|
||||
vrf_name: Customer A
|
||||
community: "65000"
|
||||
```
|
||||
|
||||
## Telnet
|
||||
@@ -162,88 +165,88 @@ Below is a full example with nearly every available knob turned:
|
||||
|
||||
```yaml
|
||||
routers:
|
||||
# HTTP/hyperglass-agent device
|
||||
- name: router01
|
||||
display_name: HTTP Router
|
||||
address: 192.0.2.1
|
||||
network:
|
||||
- name: primary
|
||||
display_name: AS65000
|
||||
credential:
|
||||
username: madeup
|
||||
password: txeTTIqwhKSJi4V3tefXQASf5AyGZ6cPsycS9nYLpKk
|
||||
ssl:
|
||||
enable: true
|
||||
cert: /etc/hyperglass/certs/router01.pem
|
||||
port: 8080
|
||||
nos: frr
|
||||
vrfs:
|
||||
- name: default
|
||||
ipv4:
|
||||
source_address: 192.0.2.1
|
||||
access_list:
|
||||
- network: 10.0.0.0/8
|
||||
action: deny
|
||||
ge: 8
|
||||
le: 32
|
||||
- network: 0.0.0.0/0
|
||||
action: permit
|
||||
le: 24 # Only allow /24 or smaller prefixes
|
||||
ipv6:
|
||||
source_address: 2001:db8::1
|
||||
access_list:
|
||||
- network: ::/0
|
||||
action: permit
|
||||
proxy: null
|
||||
# HTTP/hyperglass-agent device
|
||||
- name: router01
|
||||
display_name: HTTP Router
|
||||
address: 192.0.2.1
|
||||
network:
|
||||
- name: primary
|
||||
display_name: AS65000
|
||||
credential:
|
||||
username: madeup
|
||||
password: txeTTIqwhKSJi4V3tefXQASf5AyGZ6cPsycS9nYLpKk
|
||||
ssl:
|
||||
enable: true
|
||||
cert: /etc/hyperglass/certs/router01.pem
|
||||
port: 8080
|
||||
nos: frr
|
||||
vrfs:
|
||||
- name: default
|
||||
ipv4:
|
||||
source_address: 192.0.2.1
|
||||
access_list:
|
||||
- network: 10.0.0.0/8
|
||||
action: deny
|
||||
ge: 8
|
||||
le: 32
|
||||
- network: 0.0.0.0/0
|
||||
action: permit
|
||||
le: 24 # Only allow /24 or smaller prefixes
|
||||
ipv6:
|
||||
source_address: 2001:db8::1
|
||||
access_list:
|
||||
- network: ::/0
|
||||
action: permit
|
||||
proxy: null
|
||||
|
||||
# SSH/netmiko device
|
||||
- name: router02
|
||||
address: 10.0.0.1
|
||||
network:
|
||||
name: primary
|
||||
display_name: AS65000
|
||||
credential:
|
||||
username: user
|
||||
password: pass
|
||||
display_name: SSH Router
|
||||
# SSH/netmiko device
|
||||
- name: router02
|
||||
address: 10.0.0.1
|
||||
network:
|
||||
name: primary
|
||||
display_name: AS65000
|
||||
credential:
|
||||
username: user
|
||||
password: pass
|
||||
display_name: SSH Router
|
||||
port: 22
|
||||
nos: cisco_ios
|
||||
vrfs:
|
||||
- name: default
|
||||
ipv4:
|
||||
source_address: 192.0.2.2
|
||||
access_list:
|
||||
- network: 10.0.0.0/8
|
||||
action: deny
|
||||
ge: 8
|
||||
le: 32
|
||||
- network: 0.0.0.0/0
|
||||
action: permit
|
||||
ipv6:
|
||||
source_address: 2001:db8::2
|
||||
access_list:
|
||||
- network: ::/0
|
||||
action: permit
|
||||
le: 64 # Only allow /64 or smaller prefixes
|
||||
- name: special_customer
|
||||
display_name: Customer Name
|
||||
ipv4:
|
||||
source_address: 172.16.0.1
|
||||
access_list:
|
||||
- network: 172.16.0.0/16
|
||||
action: allow
|
||||
ipv6: null # disable IPv6 for this VRF
|
||||
info:
|
||||
bgp_route:
|
||||
file: /etc/hyperglass/help/customer_bgp_route.md
|
||||
params:
|
||||
customer_name: Customer Name
|
||||
proxy:
|
||||
name: jump_server
|
||||
address: 10.0.1.100
|
||||
port: 22
|
||||
nos: cisco_ios
|
||||
vrfs:
|
||||
- name: default
|
||||
ipv4:
|
||||
source_address: 192.0.2.2
|
||||
access_list:
|
||||
- network: 10.0.0.0/8
|
||||
action: deny
|
||||
ge: 8
|
||||
le: 32
|
||||
- network: 0.0.0.0/0
|
||||
action: permit
|
||||
ipv6:
|
||||
source_address: 2001:db8::2
|
||||
access_list:
|
||||
- network: ::/0
|
||||
action: permit
|
||||
le: 64 # Only allow /64 or smaller prefixes
|
||||
- name: special_customer
|
||||
display_name: Customer Name
|
||||
ipv4:
|
||||
source_address: 172.16.0.1
|
||||
access_list:
|
||||
- network: 172.16.0.0/16
|
||||
action: allow
|
||||
ipv6: null # disable IPv6 for this VRF
|
||||
info:
|
||||
bgp_route:
|
||||
file: /etc/hyperglass/help/customer_bgp_route.md
|
||||
params:
|
||||
customer_name: Customer Name
|
||||
proxy:
|
||||
name: jump_server
|
||||
address: 10.0.1.100
|
||||
port: 22
|
||||
credential:
|
||||
username: user
|
||||
password: pass
|
||||
nos: linux_ssh
|
||||
credential:
|
||||
username: user
|
||||
password: pass
|
||||
nos: linux_ssh
|
||||
```
|
||||
|
@@ -13,9 +13,9 @@ import TabItem from "@theme/TabItem";
|
||||
|
||||
If your system runs on:
|
||||
|
||||
- Ubuntu Linux
|
||||
- ~~CentOS/Red Had Linux~~
|
||||
- macOS (requires [homebrew](https://brew.sh))
|
||||
- Ubuntu Linux
|
||||
- ~~CentOS/Red Had Linux~~
|
||||
- macOS (requires [homebrew](https://brew.sh))
|
||||
|
||||
You should be able to proceed with the automatic installation:
|
||||
|
||||
@@ -81,32 +81,26 @@ The hyperglass UI is written in [ReactJS](https://reactjs.org/). As such, some J
|
||||
|
||||
<TabItem value="debian">
|
||||
|
||||
```bash
|
||||
# Add NodeJS Repository
|
||||
curl -sL https://deb.nodesource.com/setup_13.x | sudo -E bash -
|
||||
```shell-session
|
||||
$ curl -sL https://deb.nodesource.com/setup_13.x | sudo -E bash -
|
||||
|
||||
# Add Yarn Package Manager Repository
|
||||
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
|
||||
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
|
||||
$ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
|
||||
$ echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
|
||||
|
||||
# Install
|
||||
sudo apt update
|
||||
sudo apt install -y nodejs yarn redis-server
|
||||
$ sudo apt update
|
||||
$ sudo apt install -y nodejs yarn redis-server
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
|
||||
<TabItem value="rhel">
|
||||
|
||||
```bash
|
||||
# Add NodeJS Repository
|
||||
curl -sL https://rpm.nodesource.com/setup_13.x | sudo bash -
|
||||
```shell-session
|
||||
$ curl -sL https://rpm.nodesource.com/setup_13.x | sudo bash -
|
||||
|
||||
# Add Yarn Package Manager Repository
|
||||
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo -o /etc/yum.repos.d/yarn.repo
|
||||
$ curl -sL https://dl.yarnpkg.com/rpm/yarn.repo -o /etc/yum.repos.d/yarn.repo
|
||||
|
||||
# Install
|
||||
sudo yum -y install gcc-c++ make nodejs yarn redis
|
||||
$ sudo yum -y install gcc-c++ make nodejs yarn redis
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
@@ -119,6 +113,6 @@ I've attempted to abstract away most of the Javascript-related configuration and
|
||||
|
||||
### Application
|
||||
|
||||
```bash
|
||||
pip3 install hyperglass
|
||||
```shell-session
|
||||
$ pip3 install hyperglass
|
||||
```
|
||||
|
@@ -4,6 +4,7 @@ title: Introduction
|
||||
sidebar_label: Introduction
|
||||
description: Welcome to hyperglass
|
||||
---
|
||||
|
||||
import Link from "@docusaurus/Link";
|
||||
import useBaseUrl from "@docusaurus/useBaseUrl";
|
||||
import classnames from "classnames";
|
||||
@@ -21,14 +22,14 @@ hyperglass was created with the lofty goal of benefiting the internet community
|
||||
- Full IPv6 support
|
||||
- Customizable everything: features, theme, UI/API text, error messages, commands
|
||||
- Built in support for:
|
||||
- Cisco IOS/IOS-XE
|
||||
- Cisco IOS-XR
|
||||
- Juniper JunOS
|
||||
- Arista EOS
|
||||
- Huawei
|
||||
- FRRouting
|
||||
- BIRD
|
||||
- Configurable support for any other [supported platform](/docs/platforms)
|
||||
- Cisco IOS/IOS-XE
|
||||
- Cisco IOS-XR
|
||||
- Juniper JunOS
|
||||
- Arista EOS
|
||||
- Huawei
|
||||
- FRRouting
|
||||
- BIRD
|
||||
- Configurable support for any other [supported platform](platforms.mdx)
|
||||
- Optionally access devices via an SSH proxy/jump server
|
||||
- VRF support
|
||||
- Access List/prefix-list style query control to whitelist or blacklist query targets on a per-VRF basis
|
||||
@@ -37,9 +38,12 @@ hyperglass was created with the lofty goal of benefiting the internet community
|
||||
- Query multiple devices simultaneously
|
||||
- Browser-based DNS-over-HTTPS resolution of FQDN queries
|
||||
|
||||
|
||||
<Link
|
||||
className={classnames('button button--outline button--secondary button--lg', styles.getStarted,)}
|
||||
to={useBaseUrl('docs/getting-started')}>
|
||||
Get Started
|
||||
<Link
|
||||
className={classnames(
|
||||
"button button--outline button--secondary button--lg",
|
||||
styles.getStarted
|
||||
)}
|
||||
to={useBaseUrl("docs/getting-started")}
|
||||
>
|
||||
Get Started
|
||||
</Link>
|
||||
|
@@ -8,6 +8,8 @@ description: hyperglass Logging
|
||||
|
||||
hyperglass supports multiple types of logging, for both application troubleshooting and general reporting.
|
||||
|
||||
<div class="table--full-width" />
|
||||
|
||||
## File Logging
|
||||
|
||||
By default, hyperglass writes all log messages to a log file located at `/tmp/hyperglass.log`. This behavior and other file logging parameters may be overridden if needed:
|
||||
@@ -80,24 +82,24 @@ If the `provider` field is set to `'generic'`, the webhook will POST JSON data i
|
||||
|
||||
```json
|
||||
{
|
||||
"query_location": "router01",
|
||||
"query_type": "bgp_route",
|
||||
"query_vrf": "default",
|
||||
"query_target": "1.1.1.0/24",
|
||||
"headers": {
|
||||
"content-length": "103",
|
||||
"accept": "application/json, text/plain, */*",
|
||||
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36",
|
||||
"content-type": "application/json;charset=UTF-8",
|
||||
"referer": "http://lg.example.com/",
|
||||
"accept-encoding": "gzip, deflate, br",
|
||||
"accept-language": "en-US,en;q=0.9,fr;q=0.8,lb;q=0.7,la;q=0.6"
|
||||
},
|
||||
"source": "192.0.2.1",
|
||||
"network": {
|
||||
"prefix": "192.0.2.0/24",
|
||||
"asns": ["64496"]
|
||||
}
|
||||
"query_location": "router01",
|
||||
"query_type": "bgp_route",
|
||||
"query_vrf": "default",
|
||||
"query_target": "1.1.1.0/24",
|
||||
"headers": {
|
||||
"content-length": "103",
|
||||
"accept": "application/json, text/plain, */*",
|
||||
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36",
|
||||
"content-type": "application/json;charset=UTF-8",
|
||||
"referer": "http://lg.example.com/",
|
||||
"accept-encoding": "gzip, deflate, br",
|
||||
"accept-language": "en-US,en;q=0.9,fr;q=0.8,lb;q=0.7,la;q=0.6"
|
||||
},
|
||||
"source": "192.0.2.1",
|
||||
"network": {
|
||||
"prefix": "192.0.2.0/24",
|
||||
"asns": ["64496"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
@@ -105,20 +107,20 @@ If the `provider` field is set to `'generic'`, the webhook will POST JSON data i
|
||||
|
||||
```yaml
|
||||
logging:
|
||||
directory: /var/log
|
||||
format: json
|
||||
max_size: 10 MB
|
||||
syslog:
|
||||
host: syslog.example.com
|
||||
http:
|
||||
host: "https://example.com/logs"
|
||||
authentication:
|
||||
mode: basic
|
||||
username: your username
|
||||
password: your password
|
||||
headers:
|
||||
X-Special-Header: your header value
|
||||
params:
|
||||
app: hyperglass # URL would be https://example.com/logs?app=hyperglass
|
||||
verify_ssl: false
|
||||
directory: /var/log
|
||||
format: json
|
||||
max_size: 10 MB
|
||||
syslog:
|
||||
host: syslog.example.com
|
||||
http:
|
||||
host: "https://example.com/logs"
|
||||
authentication:
|
||||
mode: basic
|
||||
username: your username
|
||||
password: your password
|
||||
headers:
|
||||
X-Special-Header: your header value
|
||||
params:
|
||||
app: hyperglass # URL would be https://example.com/logs?app=hyperglass
|
||||
verify_ssl: false
|
||||
```
|
||||
|
@@ -11,6 +11,8 @@ import Code from "../src/components/JSXCode";
|
||||
|
||||
All user-facing status messages can be customized if needed.
|
||||
|
||||
<div class="table--full-width" />
|
||||
|
||||
| Parameter | Type | Default | Description |
|
||||
| :--------------------- | :----: | :-------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `acl_denied` | String | `'"{target} is a member of {denied_network}, which is not allowed."'` | Displayed when a query target is explicitly denied by a matched VRF's ACL entry. `{target}` and `{denied_network}` will be replaced with the denied query target and the ACL entry that caused it to be denied. |
|
||||
@@ -32,18 +34,18 @@ All user-facing status messages can be customized if needed.
|
||||
|
||||
```yaml
|
||||
messages:
|
||||
acl_denied: "{target} is a member of {denied_network}, which is not allowed."
|
||||
acl_not_allowed: "{target} is not allowed."
|
||||
authentication_error: Authentication error occurred.
|
||||
connection_error: "Error connecting to {device_name}: {error}"
|
||||
feature_not_enabled: "{feature} is not enabled for {device_name}."
|
||||
general: Something went wrong.
|
||||
invalid_field: "{input} is an invalid {field}."
|
||||
invalid_input: "{target} is not a valid {query_type} target."
|
||||
no_input: "{field} must be specified."
|
||||
no_output: No output.
|
||||
no_response: No response.
|
||||
request_timeout: Request timed out.
|
||||
vrf_not_associated: VRF {vrf_name} is not associated with {device_name}.
|
||||
vrf_not_found: VRF {vrf_name} is not defined.
|
||||
acl_denied: "{target} is a member of {denied_network}, which is not allowed."
|
||||
acl_not_allowed: "{target} is not allowed."
|
||||
authentication_error: Authentication error occurred.
|
||||
connection_error: "Error connecting to {device_name}: {error}"
|
||||
feature_not_enabled: "{feature} is not enabled for {device_name}."
|
||||
general: Something went wrong.
|
||||
invalid_field: "{input} is an invalid {field}."
|
||||
invalid_input: "{target} is not a valid {query_type} target."
|
||||
no_input: "{field} must be specified."
|
||||
no_output: No output.
|
||||
no_response: No response.
|
||||
request_timeout: Request timed out.
|
||||
vrf_not_associated: VRF {vrf_name} is not associated with {device_name}.
|
||||
vrf_not_found: VRF {vrf_name} is not defined.
|
||||
```
|
||||
|
@@ -5,11 +5,11 @@ sidebar_label: Supported Platforms
|
||||
description: Platforms supported by hyperglass
|
||||
---
|
||||
|
||||
import Link from "@docusaurus/Link";
|
||||
|
||||
## HTTP
|
||||
|
||||
The following platforms use <Link to="/docs/agent/installation">hyperglass-agent</Link> for connection handling. When configuring the `nos` property of a device, use the value in the **Key** column.
|
||||
<div class="table--full-width" />
|
||||
|
||||
The following platforms use [hyperglass-agent](agent/installation.mdx) for connection handling. When configuring the `nos` property of a device, use the value in the **Key** column.
|
||||
|
||||
| Name | Key |
|
||||
| --------- | ------ |
|
||||
|
@@ -8,7 +8,7 @@ description: hyperglass Setup
|
||||
|
||||
import Link from "@docusaurus/Link";
|
||||
|
||||
After hyperglass is <Link to="/docs/getting-started">installed</Link>, you can run the `hyperglass --help` command to see the available options:
|
||||
After hyperglass is [installed](getting-started.mdx), you can run the `hyperglass --help` command to see the available options:
|
||||
|
||||
```shell-session
|
||||
$ hyperglass --help
|
||||
@@ -63,7 +63,7 @@ $ sudo systemctl enable hyperglass
|
||||
|
||||
## UI Build
|
||||
|
||||
hyperglass is build with [NextJS](https://nextjs.org/), a [React](https://reactjs.org/)-based UI framework that supports server-side rendering and static exporting, which contribute to hyperglass's speed and SEO-friendliness. At startup, hyperglass creates a new "UI build", which is a static export of the site and includes some elements of the <Link to="/docs/configuration">configuration</Link>.
|
||||
hyperglass is build with [NextJS](https://nextjs.org/), a [React](https://reactjs.org/)-based UI framework that supports server-side rendering and static exporting, which contribute to hyperglass's speed and SEO-friendliness. At startup, hyperglass creates a new "UI build", which is a static export of the site and includes some elements of the [configuration](configuration.mdx).
|
||||
|
||||
It is recommended to run an initial UI build after running the setup wizard, so that you can verify that the installation is working prior to diving into configuration.
|
||||
|
||||
|
150
docs/docs/ui.mdx
150
docs/docs/ui.mdx
@@ -14,6 +14,8 @@ import Color from "../src/components/Color";
|
||||
import Font from "../src/components/Font";
|
||||
import PageLink from "../src/components/PageLink";
|
||||
|
||||
<div class="table--full-width" />
|
||||
|
||||
The `web` subsection contains multiple subsections of its own, should you wish to customize various aspects of the UI:
|
||||
|
||||
| Section | Description | All Options |
|
||||
@@ -92,19 +94,19 @@ By default, no Opengraph image is set. If you define one with `image`, hyperglas
|
||||
|
||||
## `text`
|
||||
|
||||
| Parameter | Type | Default | Description |
|
||||
| :--------------- | :----: | :------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `cache_prefix` | String | `'Results cached for '` | Text displayed with the cache timeout countdown. |
|
||||
| `cache_icon` | String | `'Cached Response'` | Text displayed when a user hovers over the lightning bolt icon, which is displayed when a response from the server was a cached response. |
|
||||
| `completed_time` | String | `'Completed in {seconds}'` | Text displayed when a user hovers over the success icon for a query result. `{seconds}` will be replaced with 'n seconds' where n is the time a query took to complete. |
|
||||
| `fqdn_tooltip` | String | `'Use {protocol}'` | Text displayed when a user hovers over the IPv4 or IPv6 button on an FQDN target resolved by DNS. `{protocol}` is replaced with the relevant IP protocol. |
|
||||
| `query_location` | String | `'Location'` | Query Location (router) form label. |
|
||||
| `query_target` | String | `'Target'` | Query Target (IP/hostname/community/AS Path) form label. |
|
||||
| `query_type` | String | `'Query Type'` | Query Type (BGP Route, Ping, Traceroute, etc.) form label. |
|
||||
| `query_vrf` | String | `'Routing Table'` | Query VRF form label. |
|
||||
| `subtitle` | String | `'Network Looking Glass'` | Subtitle text. value. |
|
||||
| `title` | String | `'hyperglass'` | Title text. |
|
||||
| `title_mode` | String | `'text_only'` | Set the title mode. <MiniNote>Must be <Code>text_only</Code>, <Code>logo_only</Code>, <Code>logo_subtitle</Code>, or <Code>all</Code></MiniNote> |
|
||||
| Parameter | Type | Default | Description |
|
||||
| :--------------- | :----: | :------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `cache_prefix` | String | `'Results cached for '` | Text displayed with the cache timeout countdown. |
|
||||
| `cache_icon` | String | `'Cached Response from {time}'` | Text displayed when a user hovers over the lightning bolt icon, which is displayed when a response from the server was a cached response. `{time}` is replaced with the _original_ query's timestamp. |
|
||||
| `completed_time` | String | `'Completed in {seconds}'` | Text displayed when a user hovers over the success icon for a query result. `{seconds}` will be replaced with 'n seconds' where n is the time a query took to complete. |
|
||||
| `fqdn_tooltip` | String | `'Use {protocol}'` | Text displayed when a user hovers over the IPv4 or IPv6 button on an FQDN target resolved by DNS. `{protocol}` is replaced with the relevant IP protocol. |
|
||||
| `query_location` | String | `'Location'` | Query Location (router) form label. |
|
||||
| `query_target` | String | `'Target'` | Query Target (IP/hostname/community/AS Path) form label. |
|
||||
| `query_type` | String | `'Query Type'` | Query Type (BGP Route, Ping, Traceroute, etc.) form label. |
|
||||
| `query_vrf` | String | `'Routing Table'` | Query VRF form label. |
|
||||
| `subtitle` | String | `'Network Looking Glass'` | Subtitle text. value. |
|
||||
| `title` | String | `'hyperglass'` | Title text. |
|
||||
| `title_mode` | String | `'text_only'` | Set the title mode. <MiniNote>Must be <Code>text_only</Code>, <Code>logo_only</Code>, <Code>logo_subtitle</Code>, or <Code>all</Code></MiniNote> |
|
||||
|
||||
:::note Title Mode
|
||||
The `title_mode` parameter behaves in the following manner:
|
||||
@@ -169,65 +171,65 @@ Currently, only [Google Fonts](https://fonts.google.com/) are supported.
|
||||
|
||||
```yaml
|
||||
web:
|
||||
credit:
|
||||
enable: true
|
||||
dns_provider:
|
||||
name: google
|
||||
url: https://dns.google/resolve
|
||||
external_link:
|
||||
enable: true
|
||||
title: PeeringDB
|
||||
url: https://www.peeringdb.com/asn/{primary_asn}
|
||||
help_menu:
|
||||
enable: true
|
||||
file: null
|
||||
title: Help
|
||||
logo:
|
||||
dark: /images/hyperglass-light.png
|
||||
favicons: ui/images/favicons/
|
||||
height: null
|
||||
light: /images/hyperglass-dark.png
|
||||
width: 384
|
||||
opengraph:
|
||||
height: 1132
|
||||
image: /images/hyperglass-opengraph.png
|
||||
width: 7355
|
||||
terms:
|
||||
enable: true
|
||||
file: null
|
||||
title: Terms
|
||||
text:
|
||||
cache: Results will be cached for 2 minutes.
|
||||
fqdn_tooltip: "Use {protocol}"
|
||||
query_location: Location
|
||||
query_target: Target
|
||||
query_type: Query Type
|
||||
query_vrf: Routing Table
|
||||
subtitle: AS65001
|
||||
title: hyperglass
|
||||
title_mode: text_only
|
||||
theme:
|
||||
default_color_mode: light
|
||||
colors:
|
||||
black: "#262626"
|
||||
blue: "#314cb6"
|
||||
cyan: "#118ab2"
|
||||
danger: "#d84b4b"
|
||||
error: "#ff6b35"
|
||||
gray: "#c1c7cc"
|
||||
green: "#35b246"
|
||||
orange: "#ff6b35"
|
||||
pink: "#f2607d"
|
||||
primary: "#118ab2"
|
||||
purple: "#8d30b5"
|
||||
red: "#d84b4b"
|
||||
secondary: "#314cb6"
|
||||
success: "#35b246"
|
||||
teal: "#35b299"
|
||||
warning: "#edae49"
|
||||
white: "#f7f7f7"
|
||||
yellow: "#edae49"
|
||||
fonts:
|
||||
body: Nunito
|
||||
mono: Fira Code
|
||||
credit:
|
||||
enable: true
|
||||
dns_provider:
|
||||
name: google
|
||||
url: https://dns.google/resolve
|
||||
external_link:
|
||||
enable: true
|
||||
title: PeeringDB
|
||||
url: https://www.peeringdb.com/asn/{primary_asn}
|
||||
help_menu:
|
||||
enable: true
|
||||
file: null
|
||||
title: Help
|
||||
logo:
|
||||
dark: /images/hyperglass-light.png
|
||||
favicons: ui/images/favicons/
|
||||
height: null
|
||||
light: /images/hyperglass-dark.png
|
||||
width: 384
|
||||
opengraph:
|
||||
height: 1132
|
||||
image: /images/hyperglass-opengraph.png
|
||||
width: 7355
|
||||
terms:
|
||||
enable: true
|
||||
file: null
|
||||
title: Terms
|
||||
text:
|
||||
cache: Results will be cached for 2 minutes.
|
||||
fqdn_tooltip: "Use {protocol}"
|
||||
query_location: Location
|
||||
query_target: Target
|
||||
query_type: Query Type
|
||||
query_vrf: Routing Table
|
||||
subtitle: AS65001
|
||||
title: hyperglass
|
||||
title_mode: text_only
|
||||
theme:
|
||||
default_color_mode: light
|
||||
colors:
|
||||
black: "#262626"
|
||||
blue: "#314cb6"
|
||||
cyan: "#118ab2"
|
||||
danger: "#d84b4b"
|
||||
error: "#ff6b35"
|
||||
gray: "#c1c7cc"
|
||||
green: "#35b246"
|
||||
orange: "#ff6b35"
|
||||
pink: "#f2607d"
|
||||
primary: "#118ab2"
|
||||
purple: "#8d30b5"
|
||||
red: "#d84b4b"
|
||||
secondary: "#314cb6"
|
||||
success: "#35b246"
|
||||
teal: "#35b299"
|
||||
warning: "#edae49"
|
||||
white: "#f7f7f7"
|
||||
yellow: "#edae49"
|
||||
fonts:
|
||||
body: Nunito
|
||||
mono: Fira Code
|
||||
```
|
||||
|
@@ -10,16 +10,16 @@ description: How to upgrade hyperglass
|
||||
|
||||
To upgrade hyperglass, stop the currently-running service and upgrade via PyPI:
|
||||
|
||||
```bash {2}
|
||||
sudo systemctl stop hyperglass
|
||||
sudo pip3 install -U hyperglass
|
||||
```shell-session
|
||||
$ sudo systemctl stop hyperglass
|
||||
$ sudo pip3 install -U hyperglass
|
||||
```
|
||||
|
||||
## Check Current version
|
||||
|
||||
To check the current version of hyperglass, run the following command:
|
||||
|
||||
```bash {1}
|
||||
sudo hyperglass --version
|
||||
# hyperglass version: 1.0.0-beta.19
|
||||
```shell-session
|
||||
$ sudo hyperglass --version
|
||||
hyperglass version: 1.0.0-beta.19
|
||||
```
|
||||
|
@@ -31,5 +31,13 @@
|
||||
"last 1 firefox version",
|
||||
"last 1 safari version"
|
||||
]
|
||||
},
|
||||
"devDependencies": {
|
||||
"prettier": "^2.0.4"
|
||||
},
|
||||
"prettier": {
|
||||
"[yaml]": {
|
||||
"singleQuote": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -9,110 +9,111 @@
|
||||
@import url("https://fonts.googleapis.com/css?family=Fira+Code&display=swap");
|
||||
|
||||
:root {
|
||||
--ifm-font-size-sm: 12px;
|
||||
/* --ifm-color-secondary: #314cb6;
|
||||
--ifm-font-size-sm: 12px;
|
||||
/* --ifm-color-secondary: #314cb6;
|
||||
--ifm-color-secondary-dark: #2c44a4;
|
||||
--ifm-color-secondary-darker: #2a419b;
|
||||
--ifm-color-secondary-darkest: #22357f;
|
||||
--ifm-color-secondary-light: #3654c8;
|
||||
--ifm-color-secondary-lighter: #3e5bcb;
|
||||
--ifm-color-secondary-lightest: #5a72d3; */
|
||||
--ifm-color-secondary: #69a2b0;
|
||||
--ifm-color-secondary-dark: #5796a6;
|
||||
--ifm-color-secondary-darker: #528e9c;
|
||||
--ifm-color-secondary-darkest: #447581;
|
||||
--ifm-color-secondary-light: #7badba;
|
||||
--ifm-color-secondary-lighter: #85b3bf;
|
||||
--ifm-color-secondary-lightest: #a0c4cd;
|
||||
--ifm-color-primary: #ff5e5b;
|
||||
--ifm-color-primary-dark: #ff3c38;
|
||||
--ifm-color-primary-darker: #ff2b27;
|
||||
--ifm-color-primary-darkest: #f20400;
|
||||
--ifm-color-primary-light: #ff807e;
|
||||
--ifm-color-primary-lighter: #ff918f;
|
||||
--ifm-color-primary-lightest: #ffc4c3;
|
||||
--ifm-code-font-size: 95%;
|
||||
--ifm-font-family-base: "Nunito", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell,
|
||||
Noto Sans, sans-serif, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif,
|
||||
"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
||||
--ifm-font-family-monospace: "Fira Code", SFMono-Regular, Menlo, Monaco, Consolas,
|
||||
"Liberation Mono", "Courier New", monospace;
|
||||
--ifm-color-secondary: #69a2b0;
|
||||
--ifm-color-secondary-dark: #5796a6;
|
||||
--ifm-color-secondary-darker: #528e9c;
|
||||
--ifm-color-secondary-darkest: #447581;
|
||||
--ifm-color-secondary-light: #7badba;
|
||||
--ifm-color-secondary-lighter: #85b3bf;
|
||||
--ifm-color-secondary-lightest: #a0c4cd;
|
||||
--ifm-color-primary: #ff5e5b;
|
||||
--ifm-color-primary-dark: #ff3c38;
|
||||
--ifm-color-primary-darker: #ff2b27;
|
||||
--ifm-color-primary-darkest: #f20400;
|
||||
--ifm-color-primary-light: #ff807e;
|
||||
--ifm-color-primary-lighter: #ff918f;
|
||||
--ifm-color-primary-lightest: #ffc4c3;
|
||||
--ifm-code-font-size: 95%;
|
||||
--ifm-font-family-base: "Nunito", system-ui, -apple-system, Segoe UI, Roboto,
|
||||
Ubuntu, Cantarell, Noto Sans, sans-serif, BlinkMacSystemFont, "Segoe UI",
|
||||
Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
|
||||
"Segoe UI Symbol";
|
||||
--ifm-font-family-monospace: "Fira Code", SFMono-Regular, Menlo, Monaco,
|
||||
Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
}
|
||||
|
||||
:root {
|
||||
--ifm-code-background: rgba(0, 0, 0, 0.04);
|
||||
--ifm-code-color: var(--ifm-color-secondary-darker);
|
||||
--ifm-footer-color: var(--ifm-secondary-lightest);
|
||||
--ifm-footer-link-color: var(--ifm-secondary-lightest);
|
||||
--ifm-footer-title-color: var(--ifm-color-emphasis-800);
|
||||
--ifm-footer-background-color: var(--ifm-color-emphasis-100);
|
||||
--ifm-code-background: rgba(0, 0, 0, 0.04);
|
||||
--ifm-code-color: var(--ifm-color-secondary-darker);
|
||||
--ifm-footer-color: var(--ifm-secondary-lightest);
|
||||
--ifm-footer-link-color: var(--ifm-secondary-lightest);
|
||||
--ifm-footer-title-color: var(--ifm-color-emphasis-800);
|
||||
--ifm-footer-background-color: var(--ifm-color-emphasis-100);
|
||||
}
|
||||
|
||||
:root {
|
||||
--ra-color-caution: var(--ifm-color-warning-lightest);
|
||||
--ra-color-tip: var(--ifm-color-success-lightest);
|
||||
--ra-color-important: var(--ifm-color-info-lightest);
|
||||
--ra-color-note: var(--ifm-color-gray-200);
|
||||
--ra-color-warning: var(--ifm-color-danger-lighter);
|
||||
--ra-admonition-color: var(--ifm-font-base-color);
|
||||
--ra-color-caution: var(--ifm-color-warning-lightest);
|
||||
--ra-color-tip: var(--ifm-color-success-lightest);
|
||||
--ra-color-important: var(--ifm-color-info-lightest);
|
||||
--ra-color-note: var(--ifm-color-gray-200);
|
||||
--ra-color-warning: var(--ifm-color-danger-lighter);
|
||||
--ra-admonition-color: var(--ifm-font-base-color);
|
||||
}
|
||||
|
||||
html[data-theme="dark"]:root {
|
||||
--ra-color-caution: var(--ifm-color-warning-darkest);
|
||||
--ra-color-tip: var(--ifm-color-success-darkest);
|
||||
--ra-color-important: var(--ifm-color-info-darkest);
|
||||
--ra-color-note: var(--ifm-color-gray-600);
|
||||
--ra-color-warning: var(--ifm-color-danger-darker);
|
||||
--ra-color-caution: var(--ifm-color-warning-darkest);
|
||||
--ra-color-tip: var(--ifm-color-success-darkest);
|
||||
--ra-color-important: var(--ifm-color-info-darkest);
|
||||
--ra-color-note: var(--ifm-color-gray-600);
|
||||
--ra-color-warning: var(--ifm-color-danger-darker);
|
||||
}
|
||||
|
||||
html[data-theme="dark"] .footer.footer--dark {
|
||||
--ifm-footer-color: var(--ifm-color-emphasis-300);
|
||||
--ifm-navbar-background-color: var(--ifm-background-color);
|
||||
--ifm-footer-color: var(--ifm-color-emphasis-300);
|
||||
--ifm-navbar-background-color: var(--ifm-background-color);
|
||||
}
|
||||
|
||||
.footer.footer--dark {
|
||||
--ifm-footer-color: var(--ifm-color-emphasis-600);
|
||||
--ifm-footer-link-color: var(--ifm-footer-color);
|
||||
--ifm-footer-title-color: var(--ifm-color-emphasis-800);
|
||||
--ifm-footer-background-color: var(--ifm-color-emphasis-100);
|
||||
--ifm-footer-color: var(--ifm-color-emphasis-600);
|
||||
--ifm-footer-link-color: var(--ifm-footer-color);
|
||||
--ifm-footer-title-color: var(--ifm-color-emphasis-800);
|
||||
--ifm-footer-background-color: var(--ifm-color-emphasis-100);
|
||||
}
|
||||
|
||||
.footer.footer--dark .footer__items {
|
||||
font-size: 0.8rem;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
html[data-theme="dark"] {
|
||||
--ifm-code-background: rgba(255, 255, 255, 0.08);
|
||||
--ifm-code-color: var(--ifm-color-secondary-lightest);
|
||||
/* #ace8cd
|
||||
--ifm-code-background: rgba(255, 255, 255, 0.08);
|
||||
--ifm-code-color: var(--ifm-color-secondary-lightest);
|
||||
/* #ace8cd
|
||||
#b6a7e2
|
||||
#dc7381
|
||||
*/
|
||||
}
|
||||
|
||||
.admonition {
|
||||
--ifm-code-background: rgba(255, 255, 255, 0.5);
|
||||
--ifm-code-color: var(--ifm-color-secondary-darker);
|
||||
--ifm-link-color: rgba(0, 0, 0, 0.5);
|
||||
--ifm-code-background: rgba(255, 255, 255, 0.5);
|
||||
--ifm-code-color: var(--ifm-color-secondary-darker);
|
||||
--ifm-link-color: rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
.admonition a:hover {
|
||||
color: rgba(0, 0, 0, 0.5);
|
||||
color: rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
.docusaurus-highlight-code-line {
|
||||
background-color: rgb(72, 77, 91);
|
||||
display: block;
|
||||
margin: 0 calc(-1 * var(--ifm-pre-padding));
|
||||
padding: 0 var(--ifm-pre-padding);
|
||||
background-color: rgb(72, 77, 91);
|
||||
display: block;
|
||||
margin: 0 calc(-1 * var(--ifm-pre-padding));
|
||||
padding: 0 var(--ifm-pre-padding);
|
||||
}
|
||||
|
||||
table {
|
||||
margin-top: var(--ifm-spacing-vertical);
|
||||
margin-top: var(--ifm-spacing-vertical);
|
||||
}
|
||||
|
||||
table td:nth-child(1) {
|
||||
white-space: nowrap;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
h1 code,
|
||||
@@ -121,29 +122,36 @@ h3 code,
|
||||
h4 code,
|
||||
h5 code,
|
||||
h6 code {
|
||||
color: var(--ifm-color-primary);
|
||||
color: var(--ifm-color-primary);
|
||||
}
|
||||
|
||||
@media screen and (max-width: 997px) {
|
||||
.col.footer__col[class][class] {
|
||||
text-align: left;
|
||||
}
|
||||
.navbar .navbar__search {
|
||||
padding-left: unset;
|
||||
}
|
||||
.navbar .navbar__search .navbar__search-input {
|
||||
width: 100%;
|
||||
display: block;
|
||||
}
|
||||
.col.footer__col[class][class] {
|
||||
text-align: left;
|
||||
}
|
||||
.navbar .navbar__search {
|
||||
padding-left: unset;
|
||||
}
|
||||
.navbar .navbar__search .navbar__search-input {
|
||||
width: 100%;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar .navbar__search .navbar__search-input {
|
||||
border-radius: var(--ifm-button-border-radius);
|
||||
border-width: var(--ifm-button-border-width);
|
||||
border-color: var(--ifm-navbar-search-input-background-color);
|
||||
border-style: solid;
|
||||
border-radius: var(--ifm-button-border-radius);
|
||||
border-width: var(--ifm-button-border-width);
|
||||
border-color: var(--ifm-navbar-search-input-background-color);
|
||||
border-style: solid;
|
||||
}
|
||||
|
||||
.admonition-content table tr:nth-child(2n) {
|
||||
background-color: unset;
|
||||
background-color: unset;
|
||||
}
|
||||
|
||||
div.table--full-width ~ table {
|
||||
display: table;
|
||||
width: 100%;
|
||||
margin-top: 2rem;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
92
docs/src/theme/CodeBlock/dracula.js
Normal file
92
docs/src/theme/CodeBlock/dracula.js
Normal file
@@ -0,0 +1,92 @@
|
||||
// @flow
|
||||
|
||||
export default {
|
||||
plain: {
|
||||
color: "rgb(241, 250, 140)",
|
||||
backgroundColor: "#282A36",
|
||||
},
|
||||
styles: [
|
||||
{
|
||||
types: ["boolean", "number"],
|
||||
style: {
|
||||
color: "rgb(189, 147, 249)",
|
||||
},
|
||||
},
|
||||
{
|
||||
types: [
|
||||
"inserted",
|
||||
"selector",
|
||||
"attr-name",
|
||||
"char",
|
||||
"builtin",
|
||||
"inserted",
|
||||
"function",
|
||||
],
|
||||
style: {
|
||||
color: "rgb(80, 250, 123)",
|
||||
},
|
||||
},
|
||||
{
|
||||
types: ["deleted"],
|
||||
style: {
|
||||
color: "rgb(255, 85, 85)",
|
||||
},
|
||||
},
|
||||
{
|
||||
types: ["regex"],
|
||||
style: {
|
||||
color: "rgb(255, 184, 108)",
|
||||
},
|
||||
},
|
||||
{
|
||||
types: ["operator", "entity", "url", "variable"],
|
||||
style: {
|
||||
color: "rgb(248, 248, 242)",
|
||||
},
|
||||
},
|
||||
{
|
||||
types: [
|
||||
"constant",
|
||||
"tag",
|
||||
"selector",
|
||||
"shell-symbol",
|
||||
"symbol",
|
||||
"deleted",
|
||||
"punctuation",
|
||||
],
|
||||
style: {
|
||||
color: "rgb(255, 121, 198)",
|
||||
},
|
||||
},
|
||||
{
|
||||
types: ["atrule", "property", "language-bash"],
|
||||
style: { color: "rgb(139, 233, 253)" },
|
||||
},
|
||||
{
|
||||
types: ["keyword"],
|
||||
style: {
|
||||
color: "rgb(139, 233, 253)",
|
||||
fontStyle: "italic",
|
||||
},
|
||||
},
|
||||
{ types: ["entity"], style: { cursor: "help" } },
|
||||
{
|
||||
types: ["bold"],
|
||||
style: {
|
||||
fontStyle: "bold",
|
||||
},
|
||||
},
|
||||
{
|
||||
types: ["comment", "output"],
|
||||
style: {
|
||||
color: "rgb(98, 114, 164)",
|
||||
},
|
||||
},
|
||||
{
|
||||
types: ["attr-value", "class-name", "string"],
|
||||
style: {
|
||||
color: "rgb(241, 250, 140)",
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
@@ -9,7 +9,7 @@ import React, { useEffect, useState, useRef } from "react";
|
||||
import classnames from "classnames";
|
||||
import Highlight, { defaultProps } from "prism-react-renderer";
|
||||
import Prism from "prism-react-renderer/prism";
|
||||
import defaultTheme from "prism-react-renderer/themes/dracula";
|
||||
import defaultTheme from "./dracula";
|
||||
import Clipboard from "clipboard";
|
||||
import rangeParser from "parse-numeric-range";
|
||||
import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
|
||||
@@ -18,83 +18,86 @@ import styles from "./styles.module.css";
|
||||
const highlightLinesRangeRegex = /{([\d,-]+)}/;
|
||||
|
||||
export default ({ children, className: languageClassName, metastring }) => {
|
||||
(typeof global !== "undefined" ? global : window).Prism = Prism;
|
||||
require("prismjs/components/prism-shell-session");
|
||||
const {
|
||||
siteConfig: {
|
||||
themeConfig: { prism = {} },
|
||||
},
|
||||
} = useDocusaurusContext();
|
||||
// const [showCopied, setShowCopied] = useState(false);
|
||||
const target = useRef(null);
|
||||
const button = useRef(null);
|
||||
let highlightLines = [];
|
||||
(typeof global !== "undefined" ? global : window).Prism = Prism;
|
||||
require("prismjs/components/prism-shell-session");
|
||||
const {
|
||||
siteConfig: {
|
||||
themeConfig: { prism = {} },
|
||||
},
|
||||
} = useDocusaurusContext();
|
||||
// const [showCopied, setShowCopied] = useState(false);
|
||||
const target = useRef(null);
|
||||
const button = useRef(null);
|
||||
let highlightLines = [];
|
||||
|
||||
if (metastring && highlightLinesRangeRegex.test(metastring)) {
|
||||
const highlightLinesRange = metastring.match(highlightLinesRangeRegex)[1];
|
||||
highlightLines = rangeParser.parse(highlightLinesRange).filter((n) => n > 0);
|
||||
if (metastring && highlightLinesRangeRegex.test(metastring)) {
|
||||
const highlightLinesRange = metastring.match(highlightLinesRangeRegex)[1];
|
||||
highlightLines = rangeParser
|
||||
.parse(highlightLinesRange)
|
||||
.filter((n) => n > 0);
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
let clipboard;
|
||||
|
||||
if (button.current) {
|
||||
clipboard = new Clipboard(button.current, {
|
||||
target: () => target.current,
|
||||
});
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
let clipboard;
|
||||
return () => {
|
||||
if (clipboard) {
|
||||
clipboard.destroy();
|
||||
}
|
||||
};
|
||||
}, [button.current, target.current]);
|
||||
|
||||
if (button.current) {
|
||||
clipboard = new Clipboard(button.current, {
|
||||
target: () => target.current,
|
||||
});
|
||||
}
|
||||
let language =
|
||||
languageClassName && languageClassName.replace(/language-/, "");
|
||||
|
||||
return () => {
|
||||
if (clipboard) {
|
||||
clipboard.destroy();
|
||||
}
|
||||
};
|
||||
}, [button.current, target.current]);
|
||||
if (!language && prism.defaultLanguage) {
|
||||
language = prism.defaultLanguage;
|
||||
}
|
||||
|
||||
let language = languageClassName && languageClassName.replace(/language-/, "");
|
||||
// const handleCopyCode = () => {
|
||||
// window.getSelection().empty();
|
||||
// setShowCopied(true);
|
||||
|
||||
if (!language && prism.defaultLanguage) {
|
||||
language = prism.defaultLanguage;
|
||||
}
|
||||
// setTimeout(() => setShowCopied(false), 2000);
|
||||
// };
|
||||
|
||||
// const handleCopyCode = () => {
|
||||
// window.getSelection().empty();
|
||||
// setShowCopied(true);
|
||||
return (
|
||||
<Highlight
|
||||
{...defaultProps}
|
||||
theme={prism.theme || defaultTheme}
|
||||
code={children.trim()}
|
||||
language={language}
|
||||
>
|
||||
{({ className, style, tokens, getLineProps, getTokenProps }) => (
|
||||
<div className={styles.codeBlockWrapper}>
|
||||
<pre
|
||||
ref={target}
|
||||
className={classnames(className, styles.codeBlock)}
|
||||
style={style}
|
||||
>
|
||||
{tokens.map((line, i) => {
|
||||
const lineProps = getLineProps({ line, key: i });
|
||||
|
||||
// setTimeout(() => setShowCopied(false), 2000);
|
||||
// };
|
||||
if (highlightLines.includes(i + 1)) {
|
||||
lineProps.className = `${lineProps.className} docusaurus-highlight-code-line`;
|
||||
}
|
||||
|
||||
return (
|
||||
<Highlight
|
||||
{...defaultProps}
|
||||
theme={prism.theme || defaultTheme}
|
||||
code={children.trim()}
|
||||
language={language}
|
||||
>
|
||||
{({ className, style, tokens, getLineProps, getTokenProps }) => (
|
||||
<div className={styles.codeBlockWrapper}>
|
||||
<pre
|
||||
ref={target}
|
||||
className={classnames(className, styles.codeBlock)}
|
||||
style={style}
|
||||
>
|
||||
{tokens.map((line, i) => {
|
||||
const lineProps = getLineProps({ line, key: i });
|
||||
|
||||
if (highlightLines.includes(i + 1)) {
|
||||
lineProps.className = `${lineProps.className} docusaurus-highlight-code-line`;
|
||||
}
|
||||
|
||||
return (
|
||||
<div key={i} {...lineProps}>
|
||||
{line.map((token, key) => (
|
||||
<span key={key} {...getTokenProps({ token, key })} />
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
</pre>
|
||||
{/* <button
|
||||
return (
|
||||
<div key={i} {...lineProps}>
|
||||
{line.map((token, key) => (
|
||||
<span key={key} {...getTokenProps({ token, key })} />
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
</pre>
|
||||
{/* <button
|
||||
ref={button}
|
||||
type="button"
|
||||
aria-label="Copy code to clipboard"
|
||||
@@ -103,8 +106,8 @@ export default ({ children, className: languageClassName, metastring }) => {
|
||||
>
|
||||
{showCopied ? "Copied" : "Copy"}
|
||||
</button> */}
|
||||
</div>
|
||||
)}
|
||||
</Highlight>
|
||||
);
|
||||
</div>
|
||||
)}
|
||||
</Highlight>
|
||||
);
|
||||
};
|
||||
|
219
docs/yarn.lock
219
docs/yarn.lock
@@ -1627,19 +1627,11 @@ anymatch@~3.1.1:
|
||||
normalize-path "^3.0.0"
|
||||
picomatch "^2.0.4"
|
||||
|
||||
aproba@^1.0.3, aproba@^1.1.1:
|
||||
aproba@^1.1.1:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
|
||||
integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
|
||||
|
||||
are-we-there-yet@~1.1.2:
|
||||
version "1.1.5"
|
||||
resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
|
||||
integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
|
||||
dependencies:
|
||||
delegates "^1.0.0"
|
||||
readable-stream "^2.0.6"
|
||||
|
||||
argparse@^1.0.7:
|
||||
version "1.0.10"
|
||||
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
|
||||
@@ -2598,11 +2590,6 @@ console-browserify@^1.1.0:
|
||||
resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
|
||||
integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==
|
||||
|
||||
console-control-strings@^1.0.0, console-control-strings@~1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
|
||||
integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
|
||||
|
||||
constants-browserify@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
|
||||
@@ -2991,7 +2978,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9:
|
||||
dependencies:
|
||||
ms "2.0.0"
|
||||
|
||||
debug@^3.0.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6:
|
||||
debug@^3.0.0, debug@^3.1.1, debug@^3.2.5:
|
||||
version "3.2.6"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
|
||||
integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
|
||||
@@ -3027,11 +3014,6 @@ deep-equal@^1.0.1:
|
||||
object-keys "^1.1.1"
|
||||
regexp.prototype.flags "^1.2.0"
|
||||
|
||||
deep-extend@^0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
|
||||
integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
|
||||
|
||||
default-gateway@^4.2.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b"
|
||||
@@ -3106,11 +3088,6 @@ delegate@^3.1.2:
|
||||
resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166"
|
||||
integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==
|
||||
|
||||
delegates@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
|
||||
integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
|
||||
|
||||
depd@~1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
|
||||
@@ -3136,11 +3113,6 @@ detab@2.0.3, detab@^2.0.0:
|
||||
dependencies:
|
||||
repeat-string "^1.5.4"
|
||||
|
||||
detect-libc@^1.0.2:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
|
||||
integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
|
||||
|
||||
detect-node@^2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c"
|
||||
@@ -3933,13 +3905,6 @@ fs-extra@^8.1.0:
|
||||
jsonfile "^4.0.0"
|
||||
universalify "^0.1.0"
|
||||
|
||||
fs-minipass@^1.2.5:
|
||||
version "1.2.7"
|
||||
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
|
||||
integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==
|
||||
dependencies:
|
||||
minipass "^2.6.0"
|
||||
|
||||
fs-minipass@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
|
||||
@@ -3980,20 +3945,6 @@ function-bind@^1.1.1:
|
||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
||||
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
|
||||
|
||||
gauge@~2.7.3:
|
||||
version "2.7.4"
|
||||
resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
|
||||
integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
|
||||
dependencies:
|
||||
aproba "^1.0.3"
|
||||
console-control-strings "^1.0.0"
|
||||
has-unicode "^2.0.0"
|
||||
object-assign "^4.1.0"
|
||||
signal-exit "^3.0.0"
|
||||
string-width "^1.0.1"
|
||||
strip-ansi "^3.0.1"
|
||||
wide-align "^1.1.0"
|
||||
|
||||
gensync@^1.0.0-beta.1:
|
||||
version "1.0.0-beta.1"
|
||||
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269"
|
||||
@@ -4228,11 +4179,6 @@ has-symbols@^1.0.0, has-symbols@^1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
|
||||
integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
|
||||
|
||||
has-unicode@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
|
||||
integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
|
||||
|
||||
has-value@^0.3.1:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
|
||||
@@ -4561,7 +4507,7 @@ human-signals@^1.1.1:
|
||||
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
|
||||
integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
|
||||
|
||||
iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4:
|
||||
iconv-lite@0.4.24, iconv-lite@^0.4.24:
|
||||
version "0.4.24"
|
||||
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
|
||||
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
|
||||
@@ -4585,13 +4531,6 @@ iferr@^0.1.5:
|
||||
resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
|
||||
integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE=
|
||||
|
||||
ignore-walk@^3.0.1:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37"
|
||||
integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==
|
||||
dependencies:
|
||||
minimatch "^3.0.4"
|
||||
|
||||
ignore@^3.3.5:
|
||||
version "3.3.10"
|
||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
|
||||
@@ -4698,7 +4637,7 @@ inherits@2.0.3:
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
||||
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
|
||||
|
||||
ini@^1.3.5, ini@~1.3.0:
|
||||
ini@^1.3.5:
|
||||
version "1.3.5"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
|
||||
integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
|
||||
@@ -5482,7 +5421,7 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3
|
||||
dependencies:
|
||||
js-tokens "^3.0.0 || ^4.0.0"
|
||||
|
||||
"lottie-api@github:bodymovin/lottie-api#master":
|
||||
lottie-api@bodymovin/lottie-api#master:
|
||||
version "1.0.3"
|
||||
resolved "https://codeload.github.com/bodymovin/lottie-api/tar.gz/3878f3acb1466a012553a08b929a12b11937c855"
|
||||
|
||||
@@ -5797,14 +5736,6 @@ minipass-pipeline@^1.2.2:
|
||||
dependencies:
|
||||
minipass "^3.0.0"
|
||||
|
||||
minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0:
|
||||
version "2.9.0"
|
||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6"
|
||||
integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==
|
||||
dependencies:
|
||||
safe-buffer "^5.1.2"
|
||||
yallist "^3.0.0"
|
||||
|
||||
minipass@^3.0.0, minipass@^3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5"
|
||||
@@ -5812,13 +5743,6 @@ minipass@^3.0.0, minipass@^3.1.1:
|
||||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
minizlib@^1.2.1:
|
||||
version "1.3.3"
|
||||
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d"
|
||||
integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==
|
||||
dependencies:
|
||||
minipass "^2.9.0"
|
||||
|
||||
mississippi@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
|
||||
@@ -5848,7 +5772,7 @@ mkdirp@0.3.0:
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e"
|
||||
integrity sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=
|
||||
|
||||
mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1:
|
||||
mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1:
|
||||
version "0.5.5"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
|
||||
integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
|
||||
@@ -5922,15 +5846,6 @@ nanomatch@^1.2.9:
|
||||
snapdragon "^0.8.1"
|
||||
to-regex "^3.0.1"
|
||||
|
||||
needle@^2.2.1:
|
||||
version "2.4.1"
|
||||
resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.1.tgz#14af48732463d7475696f937626b1b993247a56a"
|
||||
integrity sha512-x/gi6ijr4B7fwl6WYL9FwlCvRQKGlUNvnceho8wxkwXqN8jvVmmmATTmZPRRG7b/yC1eode26C2HO9jl78Du9g==
|
||||
dependencies:
|
||||
debug "^3.2.6"
|
||||
iconv-lite "^0.4.4"
|
||||
sax "^1.2.4"
|
||||
|
||||
negotiator@0.6.2:
|
||||
version "0.6.2"
|
||||
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
|
||||
@@ -5995,22 +5910,6 @@ node-libs-browser@^2.2.1:
|
||||
util "^0.11.0"
|
||||
vm-browserify "^1.0.1"
|
||||
|
||||
node-pre-gyp@*:
|
||||
version "0.14.0"
|
||||
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83"
|
||||
integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==
|
||||
dependencies:
|
||||
detect-libc "^1.0.2"
|
||||
mkdirp "^0.5.1"
|
||||
needle "^2.2.1"
|
||||
nopt "^4.0.1"
|
||||
npm-packlist "^1.1.6"
|
||||
npmlog "^4.0.2"
|
||||
rc "^1.2.7"
|
||||
rimraf "^2.6.1"
|
||||
semver "^5.3.0"
|
||||
tar "^4.4.2"
|
||||
|
||||
node-releases@^1.1.52, node-releases@^1.1.53:
|
||||
version "1.1.53"
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4"
|
||||
@@ -6023,14 +5922,6 @@ nopt@1.0.10:
|
||||
dependencies:
|
||||
abbrev "1"
|
||||
|
||||
nopt@^4.0.1:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48"
|
||||
integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==
|
||||
dependencies:
|
||||
abbrev "1"
|
||||
osenv "^0.1.4"
|
||||
|
||||
normalize-path@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
|
||||
@@ -6063,27 +5954,6 @@ normalize-url@^3.0.0:
|
||||
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
|
||||
integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
|
||||
|
||||
npm-bundled@^1.0.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b"
|
||||
integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==
|
||||
dependencies:
|
||||
npm-normalize-package-bin "^1.0.1"
|
||||
|
||||
npm-normalize-package-bin@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2"
|
||||
integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==
|
||||
|
||||
npm-packlist@^1.1.6:
|
||||
version "1.4.8"
|
||||
resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e"
|
||||
integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==
|
||||
dependencies:
|
||||
ignore-walk "^3.0.1"
|
||||
npm-bundled "^1.0.1"
|
||||
npm-normalize-package-bin "^1.0.1"
|
||||
|
||||
npm-run-path@^2.0.0:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
|
||||
@@ -6098,16 +5968,6 @@ npm-run-path@^4.0.0:
|
||||
dependencies:
|
||||
path-key "^3.0.0"
|
||||
|
||||
npmlog@^4.0.2:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
|
||||
integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
|
||||
dependencies:
|
||||
are-we-there-yet "~1.1.2"
|
||||
console-control-strings "~1.1.0"
|
||||
gauge "~2.7.3"
|
||||
set-blocking "~2.0.0"
|
||||
|
||||
nprogress@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1"
|
||||
@@ -6285,11 +6145,6 @@ os-browserify@^0.3.0:
|
||||
resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
|
||||
integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
|
||||
|
||||
os-homedir@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
|
||||
integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
|
||||
|
||||
os-locale@^3.0.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a"
|
||||
@@ -6299,19 +6154,11 @@ os-locale@^3.0.0:
|
||||
lcid "^2.0.0"
|
||||
mem "^4.0.0"
|
||||
|
||||
os-tmpdir@^1.0.0, os-tmpdir@~1.0.2:
|
||||
os-tmpdir@~1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
|
||||
integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
|
||||
|
||||
osenv@^0.1.4:
|
||||
version "0.1.5"
|
||||
resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
|
||||
integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
|
||||
dependencies:
|
||||
os-homedir "^1.0.0"
|
||||
os-tmpdir "^1.0.0"
|
||||
|
||||
p-defer@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
|
||||
@@ -7269,6 +7116,11 @@ prepend-http@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
|
||||
integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
|
||||
|
||||
prettier@^2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.4.tgz#2d1bae173e355996ee355ec9830a7a1ee05457ef"
|
||||
integrity sha512-SVJIQ51spzFDvh4fIbCLvciiDMCrRhlN3mbZvv/+ycjvmF5E73bKdGfU8QDLNmjYJf+lsGnDBC4UUnvTe5OO0w==
|
||||
|
||||
pretty-error@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3"
|
||||
@@ -7468,16 +7320,6 @@ raw-body@2.4.0:
|
||||
iconv-lite "0.4.24"
|
||||
unpipe "1.0.0"
|
||||
|
||||
rc@^1.2.7:
|
||||
version "1.2.8"
|
||||
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
|
||||
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
|
||||
dependencies:
|
||||
deep-extend "^0.6.0"
|
||||
ini "~1.3.0"
|
||||
minimist "^1.2.0"
|
||||
strip-json-comments "~2.0.1"
|
||||
|
||||
react-dark-mode-toggle@^0.0.3:
|
||||
version "0.0.3"
|
||||
resolved "https://registry.yarnpkg.com/react-dark-mode-toggle/-/react-dark-mode-toggle-0.0.3.tgz#9725357c19674fca93a7e00b9126d474b50d8126"
|
||||
@@ -7619,7 +7461,7 @@ react@^16.8.4:
|
||||
object-assign "^4.1.1"
|
||||
prop-types "^15.6.2"
|
||||
|
||||
"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
|
||||
"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
|
||||
version "2.3.7"
|
||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
|
||||
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
|
||||
@@ -7966,7 +7808,7 @@ rgba-regex@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3"
|
||||
integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=
|
||||
|
||||
rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3, rimraf@^2.7.1:
|
||||
rimraf@^2.5.4, rimraf@^2.6.3, rimraf@^2.7.1:
|
||||
version "2.7.1"
|
||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
|
||||
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
|
||||
@@ -8101,7 +7943,7 @@ semver@7.0.0:
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
|
||||
integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
|
||||
|
||||
semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
|
||||
semver@^5.1.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
|
||||
version "5.7.1"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
|
||||
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
|
||||
@@ -8158,7 +8000,7 @@ serve-static@1.14.1:
|
||||
parseurl "~1.3.3"
|
||||
send "0.17.1"
|
||||
|
||||
set-blocking@^2.0.0, set-blocking@~2.0.0:
|
||||
set-blocking@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
|
||||
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
|
||||
@@ -8513,7 +8355,7 @@ string-width@^1.0.1:
|
||||
is-fullwidth-code-point "^1.0.0"
|
||||
strip-ansi "^3.0.0"
|
||||
|
||||
"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1:
|
||||
string-width@^2.0.0, string-width@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
|
||||
integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
|
||||
@@ -8630,11 +8472,6 @@ strip-final-newline@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
|
||||
integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
|
||||
|
||||
strip-json-comments@~2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
|
||||
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
|
||||
|
||||
style-to-object@0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46"
|
||||
@@ -8708,19 +8545,6 @@ tapable@^1.0.0, tapable@^1.1.3:
|
||||
resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
|
||||
integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
|
||||
|
||||
tar@^4.4.2:
|
||||
version "4.4.13"
|
||||
resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525"
|
||||
integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==
|
||||
dependencies:
|
||||
chownr "^1.1.1"
|
||||
fs-minipass "^1.2.5"
|
||||
minipass "^2.8.6"
|
||||
minizlib "^1.2.1"
|
||||
mkdirp "^0.5.0"
|
||||
safe-buffer "^5.1.2"
|
||||
yallist "^3.0.3"
|
||||
|
||||
terser-webpack-plugin@^1.4.3:
|
||||
version "1.4.3"
|
||||
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c"
|
||||
@@ -9485,13 +9309,6 @@ which@^2.0.1:
|
||||
dependencies:
|
||||
isexe "^2.0.0"
|
||||
|
||||
wide-align@^1.1.0:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
|
||||
integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
|
||||
dependencies:
|
||||
string-width "^1.0.2 || 2"
|
||||
|
||||
worker-farm@^1.7.0:
|
||||
version "1.7.0"
|
||||
resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
|
||||
@@ -9557,7 +9374,7 @@ xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1:
|
||||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
|
||||
integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
|
||||
|
||||
yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3:
|
||||
yallist@^3.0.2:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
|
||||
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
|
||||
|
Reference in New Issue
Block a user